HDLコード生成時のエラーに関しまして
15 ビュー (過去 30 日間)
古いコメントを表示
いつもお世話になっております。
早速ですが、現在研究にてFPGA実装するためにSimulink及びHDL Coderを利用して作成したモデルの書き換えを行っております。
作成したデルタシグマ変調器のHDLコード化を試みているのですが、「Quantizerブロック」及び「Discrete Transfer Fcnブロック」それぞれにて以下の様なエラーが発生しまいます。考え得る様々な事を試してみたのですが、対処法が未だに不明なのでご回答を頂けると幸いです。
【Quantizer】
・ブロックはHDLコード生成でサポートされていません。
【Discrete Transfer Fcn】
・HDLコード生成では、複素数データ型をブロックの1つ以上の出力でサポートしていません。
・HDLコード生成では、ブロックの1つ以上の入力での複素数データ型をサポートしていません。
現状、QuantizerブロックはData Type Conversionブロックにて挟んでいます。
また、本件関するスクリーンショットを添付しておりますが、変調器後半部でQuantizerブロックとSignumブロックを配置・接続しなければ正しい変調結果は得られません。
ご回答、宜しくお願い申し上げます。
<添付画像>
Modulator1.png…変調器全体像
Modulator1_Ex…変調器後半部拡大
採用された回答
Shoumei
2019 年 11 月 15 日
QuantizerブロックはHDL生成できません。代わりにData Type Conversionブロックを使って固定小数点化すると良いと思います。Fixed-Point Designerのドキュメントに詳細は書いてあると思います。
HDL Coderのドキュメントにもコード生成に対応しているブロックと制約事項が書いてあるので、それを確認してからモデルを作ったほうが良いと思います。
2 件のコメント
Shoumei
2019 年 11 月 17 日
ルックアップテーブルオプティマイザーでは、Math Operations意外にも任意の演算をルックアップテーブル(LUT)に置換できます。
ただ、QuantizerブロックはそもそもLUTに置き換えるようなものではありません。そこがピンと来ないようでしたら、Simulinkにおける固定小数点演算のやり方をFixed-Point Designerのドキュメントをご覧になって理解された方が良いように思います。
また、モデルを拝見したところ、doubleデータ型のままのようですので、データ型を固定小数点化する必要があります。HDL CoderのドキュメントのExampleページに、様々な例があるので、まずはそれらを参考にしてモデルを組み立てて行った方が、エラーで右往左往するより近道だと思います。
初心者にはこの資料も役立つと思います。
HDL Coderの使い方資料
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!