LED点滅モデルのH​DLコード化及びFP​GA書き込みに関して

ご覧頂きましてありがとうございます。
早速ですが、現在simulinkで作成したモデルをHDL Coderで書き出し最終的にFPGAへ書き込みたいと思っています。以前まで作成していたモデルのHDLコード化及びFPGAへの書き込みはできたのですが、出力をボードのLEDピンへ変更しても点灯はするものの出力に合わせ点滅はしません。
その原因として、書き出したHDLにLEDの制御コードが含まれていないためだと考えているのですが、この対策として2つのことを検討しています。
1つ目は、SimulinkにてLEDブロックを配置しHDLコード書き出しと共に制御コードを生成する方法
2つ目は、HDLを自ら書く方法
この1つ目の方法が可能であれば、検証などの時間を大幅に削減できると思っています。
なので、もし1つ目の方法が可能でありましたらその方法を具体的にお教えいただきたいと思います。
宜しくお願い申し上げます。

7 Comments

Atsushi Matsumoto
Atsushi Matsumoto on 6 Dec 2019
> 書き出したHDLにLEDの制御コードが含まれていないため
というのがわからないのですが。一般的に、HDLコードにはピンアサイン情報は含まれていないので、別のファイルでLEDピン番号を指定します。
ピンアサインは正しく行われていますか?
HDLワークフローアドバイザーで行われているのだと思いますが、ボードの設定やそこでのLEDピン番号の設定は正しいでしょうか?
Tomoya Wakasa
Tomoya Wakasa on 6 Dec 2019
コメント頂きまして誠にありがとうございます。
仰る通り、HDLワークフローアドバイザーにてHDLへの書き出しを行っているのですが、LEDピン番号の設定とはどの部分で行うのですか?
コンフィギュレーションパラメータ等を拝見しても見当たらないのですが。。
Shoumei
Shoumei on 6 Dec 2019
ワークフローに「IPコア生成」を選択した後、「ターゲットインターフェースを設定」のタスクにあります。
どのボードに実装しようとしていますか?
LED Blinkingのデモを実装して動作させるには、Embedded CoderでCPU側の実装をしないとLEDの点滅速度を制御できません。CPU側もきちんと実装されていますか?
Tomoya Wakasa
Tomoya Wakasa on 6 Dec 2019
コメント頂きましてありがとうございます。
Xilinx社のFPGAボードへの書き込みを検討しているのですが、Embedded Coderの存在について存じ上げませんでした。
HDL Coderで生成されるHDLコードとは別にEmbedded Coderにて別のコード生成の必要があるということでよろしいでしょうか?
Shoumei
Shoumei on 6 Dec 2019
HDL Coderのドキュメントの例に入っているLED BlinkingのサンプルはEmbedded Coderが必要だったと思います。LEDの点滅速度をCPUからデータ入力するようになっていました。
けど、点滅スピードの入力をCPUから入力しないようカスタマイズすればEmbedded Coderは必要ありませんので、カスタマイズして使えば良いのでは?DIP SWで点滅速度を変更するようにすればCPUは不要になると思います。
  • ピンアサインはできましたか?
  • ワークフローアドバイザでFPGAプログラムのダウンロードまでできましたか?
Tomoya Wakasa
Tomoya Wakasa on 6 Dec 2019
ご返信頂きましてありがとうございます。
ご丁寧にわかりやすい説明をありがとうございます。
アドバイスを頂きましたお陰でHDLコードと及びテストベンチ、IPの生成は完了しました。
ここで加えて質問なのですが、点滅スピードを出力の1/0に合わせて出力させる場合でもEmbedded CoderまたはDIP SWでの制御は必要なのでしょうか?
Shoumei
Shoumei on 9 Dec 2019
> 点滅スピードを出力の1/0に合わせて出力させる場合でもEmbedded CoderまたはDIP SWでの制御は必要なのでしょうか?
すいませんが、ご質問の意図をいまいち理解できておりません。もう少し説明を加えて頂けませんか?

Sign in to comment.

 Accepted Answer

Tomoya Wakasa
Tomoya Wakasa on 9 Dec 2019

0 votes

お世話になっております
現在,最終的に0/1で出力を行うモデルを簡易的に作成しているのですがこのときの点滅スピードは内部情報(テストベンチ等)によるのか,それともEmbedded CoderまたはDIP SWによる制御が必要なのでしょうか?
という意味でご質問させていただきました。宜しくお願い致します。

2 Comments

Shoumei
Shoumei on 9 Dec 2019
う~ん・・・話が噛み合っていないようです。何をやりたいのかよくわかりません。
Tomoyaさんが行われていることや認識の確認です。間違いあればご指摘ください。
  • FPGAでLEDを点滅させるSimulinkモデルを作成している。
  • 元モデルはHDL CoderのExampleのLED Blinkingだが、これはEmbedded Coderが必要なので、作り変えてEmbedded Coderからの入力が必要無いようにしている。
  • IPコア生成はできて、実機にダウンロードできたが、意図した通りに動作していない。
  • 一般的にテストベンチはシミュレーションの際に使用する入力信号と出力の期待値のセットなので、FPGA実機の点滅スピードには何ら影響を与えない。
  • LEDの点滅にEmbedded Coderが必要か、DIP SWが必要かは、Tomoyaさんが作成しているモデル次第。
作成されたモデルを添付してもらって、どこをどうしたいのか説明してもらったほうが手っ取り早いかもしれませんね。
Tomoya Wakasa
Tomoya Wakasa on 9 Dec 2019
すみません,Shoumeiさんの認識で大方合っております。
以下にモデルの画像を添付致しました。
流れとしては
[ビット生成]→[変調]→[搬送波乗算]→[0/1ビット変換]→出力
となっております。
ここで,最終的に出力される0/1の1ビット情報をLEDのON/OFF情報に対応させ,LEDを点滅させたいと考えております。
宜しくお願い致します。
MODEL.PNG

Sign in to comment.

More Answers (1)

Shoumei
Shoumei on 9 Dec 2019

0 votes

Bernoulliで行っている乱数生成部分をコード生成対象に含める必要があります。このブロックはHDLコード生成に対応していないので、PN Sequence Generatorブロックなどで代替できませんか?
またはFPGA内部にある程度のデータ長のROMデータとして入れてしまって良いですか?

6 Comments

Tomoya Wakasa
Tomoya Wakasa on 9 Dec 2019
お世話になっております。 現在HDLコード化時にはビット生成ブロックは含めていないのですが、PN Sequence Generatorブロックに変更しHDL(IP)生成を行い、fpga書き込みツール内でピンアサインを適切に行えば出来ますでしょうか?
検討してみたいと思います
Shoumei
Shoumei on 9 Dec 2019
はい。現在はビット列を生成する部分がFPGAに入っていないので、出力ピンからは何も出て来ません。
PN Sequence Generatorブロックに置き換えて、HDL生成したら、HDLコードのシミュレーションを念のため確認の意味で行ったほうが良いです。
それで問題なければHDLワークフローアドバイザで実装すれば動作すると思います。
ドキュメントに一連の操作についても書いてあったと思いますので、よく読んで見て下さい。
Tomoya Wakasa
Tomoya Wakasa on 10 Dec 2019
ご丁寧にご説明頂きまして本当にありがとうございます。
最後にご質問させていただきたいのですが,
>HDLコードのシミュレーション
とは,Vivado上でのシミュレーションかSmulink上でのHDLシミュレーションどちらを挿しておりますでしょうか?
Shoumei
Shoumei on 10 Dec 2019
Simulink上でHDLのシミュレーションを行うにはHDL VerifierとModelSim/Questaが必要なので、お持ちであればこちらがお勧めです。
お持ちでなければVivadoのHDLシミュレーションで良いと思います。
ツールは違いますが、どちらもやっていることは同じです。
Tomoya Wakasa
Tomoya Wakasa on 10 Dec 2019
ご丁寧にご説明頂きまして本当にありがとうございます。
試行錯誤したいと思います。
Shoumei
Shoumei on 10 Dec 2019
頑張ってください!! 成功をお祈りしています。

Sign in to comment.

Products

Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!