simulink HDLcoder INport, Outportをparameter宣言で定義する方法
Show older comments
下記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;
・
・
・
----
Answers (5)
Kei Otsuka
on 14 Feb 2018
Edited: 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;
Yasuo Otomo
on 14 Feb 2018
0 votes
1 Comment
Kei Otsuka
on 14 Feb 2018
17a用にエクスポートしたモデルを添付しました。
次回以降質問をされる際には、お使いのツールのバージョンなどの情報を予め記載して頂くと良いと思います。MATLAB Answersで早く的確な回答を得るためのポイントが こちら に記載されておりますので、是非一度ご一読ください。
Yasuo Otomo
on 15 Feb 2018
0 votes
1 Comment
Kei Otsuka
on 15 Feb 2018
"入出力信号のビット幅に対して生成HDLにparameter宣言が使われて、それ以降、その信号に関係するHDL記述に対してもparameter宣言が引き継がれて、HDL生成されるか”
についてソリューションがあるか考えてみましたが、Simulinkはブロック毎にデータ型継承のルールを指定可能なため、parameter宣言で型を引き継いでいくのは難しそうです。
Simulinkモデルをマスタとして扱い、データ型に大きな変更が生じた場合は都度コード生成することで対応するというのは難しいでしょうか? (Simulink + HDL Coderの利点でもあります)
Yasuo Otomo
on 15 Feb 2018
0 votes
Categories
Find more on 階層設計と同期ハードウェアの動作 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!