Namuru-NanoのbasebandのHDLをVivadoで合成してみると、当然、
AlteraのIPであるlpm_counterとlpm_shiftregが未定義とエラーが出ます。
![](https://blogimg.goo.ne.jp/user_image/51/a8/f2a21e995ac6dd6d7ec2c69b5888ca4a.png)
lpm_counterは、Xilinx LogiCORE IPのbinary counterに置き換えられそうでしたので、
VivadoのIPカタログからbinary counterを開き、各種パラメータを設定します。
VivadoでのIPコアの使いかたは、こちらを参考にしました。
ACRi:FPGA をもっと活用するために IP コアを使ってみよう (2)
Binary CounterのComponent Nameは、Altera IPと同じlpm_counterにします。
Output Widthは24ビット、Loadableを有効にし、Count ModeはDOWNです。
Synchronous Clearも有効にします。
![](https://blogimg.goo.ne.jp/user_image/61/6f/2b9bd59e8d19bd26a53e50a59dd04fa5.png)
![](https://blogimg.goo.ne.jp/user_image/5a/0f/cb42de256c7442c8a8c87359e80deceb.png)
設定ダイアログのOKをクリックして閉じると、Generate Output Productsの
ダイアログが開きます。GenerateをクリックしてIPコアを合成します。
![](https://blogimg.goo.ne.jp/user_image/2e/b7/9875d73e0a3e7e1d02193f3903506ef9.png)
IPコアのモジュールが準備できたら、SourcesペインのIP Sourcesタブから、
テンプレートファイル(.veo)を開きます。
![](https://blogimg.goo.ne.jp/user_image/19/9f/6c2c9d10e8d898f6bab1cfaad79726ec.png)
このインスタンス生成のテンプレートを、もとのソースコードにコピーして、
入出力ポートの信号を接続します。
![](https://blogimg.goo.ne.jp/user_image/40/de/416abe11a953016a403178651ffb281f.png)
一方、lpm_shiftregは、ちょうど置き換えれるようなIPが見当たりません。
そのため、こちらはモジュールのHDLコードを追加します。
![](https://blogimg.goo.ne.jp/user_image/4b/dc/742fc154d3f34a9f39149478db42c59c.png)
これで、Run Synthesisを実行すると、errorもwarningもなしで、合成が完了します。
![](https://blogimg.goo.ne.jp/user_image/50/ab/18c72f891b0bf379bb861339b28002cf.png)
P.S. Binary Counterの設定画面を見ると、Final Count Valueが1からFFFFFEまでしか選べません。
0までカウントダウンしてくれないのでしょうか?それとも、Restrict Countを有効にしなければ、
0またはFFFFFFがFinal Count Valueになるのでしょうか?別途、テストベンチを組んで確かめよう。
P.P.S. 8ビットのBinary Counterを作成して、テストベンチで動作を確認してみました。
lpm_counterと同様に、loadされた値から0までカウントダウンしてくれるようです。
![](https://blogimg.goo.ne.jp/user_image/3f/72/299d1d9b6becab3bd04b9992f1249be2.png)
![](https://blogimg.goo.ne.jp/user_image/58/c8/1602967aa5590674cf10b4e8e46fa6c9.png)
AlteraのIPであるlpm_counterとlpm_shiftregが未定義とエラーが出ます。
![](https://blogimg.goo.ne.jp/user_image/51/a8/f2a21e995ac6dd6d7ec2c69b5888ca4a.png)
lpm_counterは、Xilinx LogiCORE IPのbinary counterに置き換えられそうでしたので、
VivadoのIPカタログからbinary counterを開き、各種パラメータを設定します。
VivadoでのIPコアの使いかたは、こちらを参考にしました。
ACRi:FPGA をもっと活用するために IP コアを使ってみよう (2)
Binary CounterのComponent Nameは、Altera IPと同じlpm_counterにします。
Output Widthは24ビット、Loadableを有効にし、Count ModeはDOWNです。
Synchronous Clearも有効にします。
![](https://blogimg.goo.ne.jp/user_image/61/6f/2b9bd59e8d19bd26a53e50a59dd04fa5.png)
![](https://blogimg.goo.ne.jp/user_image/5a/0f/cb42de256c7442c8a8c87359e80deceb.png)
設定ダイアログのOKをクリックして閉じると、Generate Output Productsの
ダイアログが開きます。GenerateをクリックしてIPコアを合成します。
![](https://blogimg.goo.ne.jp/user_image/2e/b7/9875d73e0a3e7e1d02193f3903506ef9.png)
IPコアのモジュールが準備できたら、SourcesペインのIP Sourcesタブから、
テンプレートファイル(.veo)を開きます。
![](https://blogimg.goo.ne.jp/user_image/19/9f/6c2c9d10e8d898f6bab1cfaad79726ec.png)
このインスタンス生成のテンプレートを、もとのソースコードにコピーして、
入出力ポートの信号を接続します。
![](https://blogimg.goo.ne.jp/user_image/40/de/416abe11a953016a403178651ffb281f.png)
一方、lpm_shiftregは、ちょうど置き換えれるようなIPが見当たりません。
そのため、こちらはモジュールのHDLコードを追加します。
![](https://blogimg.goo.ne.jp/user_image/4b/dc/742fc154d3f34a9f39149478db42c59c.png)
これで、Run Synthesisを実行すると、errorもwarningもなしで、合成が完了します。
![](https://blogimg.goo.ne.jp/user_image/50/ab/18c72f891b0bf379bb861339b28002cf.png)
P.S. Binary Counterの設定画面を見ると、Final Count Valueが1からFFFFFEまでしか選べません。
0までカウントダウンしてくれないのでしょうか?それとも、Restrict Countを有効にしなければ、
0またはFFFFFFがFinal Count Valueになるのでしょうか?別途、テストベンチを組んで確かめよう。
P.P.S. 8ビットのBinary Counterを作成して、テストベンチで動作を確認してみました。
lpm_counterと同様に、loadされた値から0までカウントダウンしてくれるようです。
![](https://blogimg.goo.ne.jp/user_image/3f/72/299d1d9b6becab3bd04b9992f1249be2.png)
![](https://blogimg.goo.ne.jp/user_image/58/c8/1602967aa5590674cf10b4e8e46fa6c9.png)
![](https://blogimg.goo.ne.jp/user_image/62/51/553b4afdd78fc6cb0632185cb9378c5a.png)
※コメント投稿者のブログIDはブログ作成者のみに通知されます