バス配列を使用するサブシステムの HDL コードの生成
バス配列とは、要素がバスである配列のことです。バス配列内の各要素は、非バーチャルであることが必要であり、さらに同じデータ型でなければなりません。
バス配列は、構造化されたデータをコンパクトに表現します。バス配列により次が実現されます。
モデルの複雑度を軽減
ベクトル化されたアルゴリズムの Simulink® モデルでの信号の編成およびルーティングによりメンテナンスを軽減
詳細については、非バーチャル バスのバス配列へのグループ化を参照してください。
Simulink がバス配列を使用してサポートするバーチャル ブロックと非バーチャル ブロックの HDL コードを生成できます。詳細については、バス対応ブロックを参照してください。
HDL Coder でのバス配列用コードの生成方法
HDL Coder™ は Simulink モデルのバス配列を、生成されたコード内の対応するスカラー信号に拡張します。
この Simulink モデルでは、DUT インターフェイスにバス配列の信号があります。

バス配列には 2 つの非バーチャル バス要素が組み合わされており、要素にはそれぞれ uint16 型と int32 型のスカラー a および b があります。

結果の HDL コードはバス配列をスカラーに拡張し、4 つのスカラー入力端子と出力端子を含みます。

生成されたコードでは、バス配列の拡張により、入力端子と出力端子に 4 つのスカラー信号が生成されます。最初のバス オブジェクトで、入力端子は In_1_a および In_1_b になります。2 番目のバス オブジェクトでは、In_2_a および In_2_b になります。出力の最初のバス オブジェクトでは、Out_1_a および Out_1_b になります。2 番目のバス オブジェクトでは、Out_2_a および Out_2_b になります。
ENTITY DUT IS
PORT( In1_1_a : IN std_logic_vector(15 DOWNTO 0); -- uint16
In1_1_b : IN std_logic_vector(31 DOWNTO 0); -- int32
In1_2_a : IN std_logic_vector(15 DOWNTO 0); -- uint16
In1_2_b : IN std_logic_vector(31 DOWNTO 0); -- int32
Out1_1_a : OUT std_logic_vector(15 DOWNTO 0); -- uint16
Out1_1_b : OUT std_logic_vector(31 DOWNTO 0); -- int32
Out1_2_a : OUT std_logic_vector(15 DOWNTO 0); -- uint16
Out1_2_b : OUT std_logic_vector(31 DOWNTO 0) -- int32
);
END DUT;HDL Coder では、Simulink モデルでバス要素と配列要素を指定した順序に従ってコードが生成されます。配列を使用するバス オブジェクトを含む Simulink モデルに対して VHDL® ターゲット言語を指定すると、HDL Coder では生成されたコードで配列が保持され、スカラーに拡張されません。
バス配列の制限
他のデータ型内でバス配列を使用しない。バス配列を含むバス信号は使用できません。
System objects を含む MATLAB System ブロックと MATLAB Function ブロックはバス配列でサポートされない。