MATLAB Answers

HDLコード生成時のエラーに関しまして

1 view (last 30 days)
Tomoya Wakasa
Tomoya Wakasa on 15 Nov 2019
Commented: Shoumei on 17 Nov 2019
いつもお世話になっております。
早速ですが、現在研究にて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…変調器後半部拡大

  1 Comment

Tomoya Wakasa
Tomoya Wakasa on 15 Nov 2019
作成したデルタシグマ変調器については、サブシステム化を行っております。

Sign in to comment.

Accepted Answer

Shoumei
Shoumei on 15 Nov 2019
QuantizerブロックはHDL生成できません。代わりにData Type Conversionブロックを使って固定小数点化すると良いと思います。Fixed-Point Designerのドキュメントに詳細は書いてあると思います。
HDL Coderのドキュメントにもコード生成に対応しているブロックと制約事項が書いてあるので、それを確認してからモデルを作ったほうが良いと思います。

  2 Comments

Tomoya Wakasa
Tomoya Wakasa on 17 Nov 2019
ご回答ありがとうございます。
QuantizerブロックがHDL Coderに対応していないことはMathworks社のHPより存じていたのですが、ルックアップテーブルオプティマイザーで該当ブロック及びData Type Conversionブロックを1つのブロックへ変換できるのはMath Operationsブロック群だけなのでしょうか?
Shoumei
Shoumei on 17 Nov 2019
ルックアップテーブルオプティマイザーでは、Math Operations意外にも任意の演算をルックアップテーブル(LUT)に置換できます。
ただ、QuantizerブロックはそもそもLUTに置き換えるようなものではありません。そこがピンと来ないようでしたら、Simulinkにおける固定小数点演算のやり方をFixed-Point Designerのドキュメントをご覧になって理解された方が良いように思います。
また、モデルを拝見したところ、doubleデータ型のままのようですので、データ型を固定小数点化する必要があります。HDL CoderのドキュメントのExampleページに、様々な例があるので、まずはそれらを参考にしてモデルを組み立てて行った方が、エラーで右往左往するより近道だと思います。
初心者にはこの資料も役立つと思います。
HDL Coderの使い方資料

Sign in to comment.

More Answers (0)

Sign in to answer this question.