MATLAB Answers

0

simulink HDLcoder INport, Outportをpa​rameter宣言で​定義する方法

Asked by Yasuo Otomo on 13 Feb 2018
Latest activity Answered by Yasuo Otomo on 15 Feb 2018
下記hdl(verilog)のような入力、出力のビット幅をparameter宣言で定義できる、simulinkモデルの定義方法を教えてください。
--- 例 ---
module trial ( in_a, in_b, out_c, out_d ); parameter I_DATA_WIDTH = 16; parameter O_DATA_WIDTH = 32;
input [I_DATA_WIDTH-1:0] in_a, in_b;
output [O_DATA_WIDTH-1:0] out_c, out_d;
----

  0 Comments

Sign in to comment.

5 Answers

Answer by Kei Otsuka
on 14 Feb 2018
Edited by Kei Otsuka
on 15 Feb 2018

パラメータの定数宣言(Verilogのparameter宣言、VHDLのgeneric宣言)ですが、R2016bから使えるようになっています。 パラメータを指定する方法は3つありまして、
#1, モデル参照時にモデル変数として指定
#2, マスクパラメータとして指定
#3, BlackBox利用時にGenericListとして指定
などの方法があります。 #1, モデル変数を利用した場合について、サンプルモデルを添付しましたので参考にして頂ければと思います。
参照されるモデルではGainブロックとConstantブロックが使われていまして、ゲイン及び定数値がモデル変数で与えられている例になります。
   
コード生成を行うとモデル変数に該当する部分はparameter宣言を使って生成されます。
// <S2>/Model
myDUT_myDUT #(.cParam(100),
.gParam(3)
)
u_Model (.clk(clk),
.reset(reset),
.enb(clk_enable),
.In1(In1), // sfix16_En15
.Out1(Model_out1) // sfix33_En16
);
assign Out1 = Model_out1;

  0 Comments

Sign in to comment.


Answer by Yasuo Otomo on 14 Feb 2018

ご回答ありがとうございます。 提供いただいたmyDUT.mdl,
初歩的な質問ですみません。 添付のmyGenericDef.mdl, myDUT.mdlですが、『新しいバージョンで作成』とのエラーで開けません。 当方は、R2017aを利用しており、お手数おかけしてすみませんが、R2017aでのバージョン版にて、再提供をお願いします。

  1 Comment

17a用にエクスポートしたモデルを添付しました。
次回以降質問をされる際には、お使いのツールのバージョンなどの情報を予め記載して頂くと良いと思います。MATLAB Answersで早く的確な回答を得るためのポイントが こちら に記載されておりますので、是非一度ご一読ください。

Sign in to comment.


Answer by Yasuo Otomo on 14 Feb 2018

再提供いただいたファイルでもErrorとなり、simulink起動ができません。 エラーメッセージの画面キャプチャを添付いたします。ご確認お願いします。
ツールバージョン:2017a 64bit 実行環境:Windows 8.1 Pro

  1 Comment

失礼しました、添付のファイルでいかがでしょうか。

Sign in to comment.


Answer by Yasuo Otomo on 15 Feb 2018

お手数おかけしてすみませんでした。
こちらの環境にてサンプルモデルを開けて、HDL生成して内部処理に参照される定数としてparameter宣言が利用されることを確認できました。
ただ、当方が期待しているのは、入出力信号のビット幅に対して生成HDLにparameter宣言が使われて、それ以降、その信号に関係するHDL記述に対してもparameter宣言が引き継がれて、HDL生成されるかという点です。
生成HDL(myDUT_17a_myDUT_17a.v)に、当方が期待する記述の例(途中までの更新)を追記しましたので、添付ファイルをご確認いただき、HDL Coderの機能として、同等のHDLが生成可能か、ご回答をお願いいたします。 また、生成可能ということでしたら、同等のサンプルモデルの提供をお願いいたします。
お忙しいところすみませんが、可能でしたら、今日中にご回答いただけると助かります。
添付ファイル:myDUT_17a_myDUT_17a.v.txt
ツールバージョン:2017a 64bit
実行環境:Windows 8.1 Pro

  1 Comment

"入出力信号のビット幅に対して生成HDLにparameter宣言が使われて、それ以降、その信号に関係するHDL記述に対してもparameter宣言が引き継がれて、HDL生成されるか”
についてソリューションがあるか考えてみましたが、Simulinkはブロック毎にデータ型継承のルールを指定可能なため、parameter宣言で型を引き継いでいくのは難しそうです。
Simulinkモデルをマスタとして扱い、データ型に大きな変更が生じた場合は都度コード生成することで対応するというのは難しいでしょうか? (Simulink + HDL Coderの利点でもあります)

Sign in to comment.


Answer by Yasuo Otomo on 15 Feb 2018

ご連絡ありがとうございます。
こちらが例示したようなHDL生成は、現状では不可ということで了解いたしました。本件は、Closeとしてかまいません。
なお、『Simulinkモデルをマスタとして変更の場合は都度コード生成することで対応する』という件について、Simulinkモデルと生成HDLが手元にある場合には、おっしゃる通りと思いましたが、生成HDLのみを顧客へ納品するといった場合には、不向きかと思いました。

  0 Comments

Sign in to comment.