この手順では、RTL デザインを System Generator にブラック ボックスとしてインポートします。
ブラック ボックスを使用すると、記述がハードウェア記述言語 (HDL) フォーマットであっても、デザインを System Generator にインポートできます。
目標
この手順を終了すると、次のことができるようになります。
- RTL HDL 記述を System Generator for DPS にインポート。
- デザインを正しくシミュレーションできるようにブラック ボックスを設定。
-
System Generator を起動し、MATLAB コンソールでディレクトリを C:\SysGen_Tutorial\Lab2\HDL に変更します。
このディレクトリには、次のファイルが含まれています。
- Lab2_2.slx: ブラック ボックス例を含む Simulink モデル。
- transpose_fir.vhd: 転置型 FIR フィルターの最上位 VHDL。このファイルは、ブラック ボックスに関連付けられている VHDL です。
- mac.vhd: 転置型 FIR フィルターの作成に使用される乗加算コンポーネント。
- 「
open Lab2_2.slx
」と入力します。 - Down Converter というサブシステムを開きます。
- Transpose FIR Filter Black Box というサブシステムを開きます。
このサブシステムには、2 つの入力ポートと 1 つの出力ポートがあります。このサブシステムにブラック ボックスを追加します。
- デザイン キャンバスを右クリックして Xilinx
BlockAdd をクリックし、このサブシステムに Black Box ブロックを追加します。
ブラウザー ウィンドウが開き、ブラック ボックスに関連付けることが可能な VHDL ファイルがリストされます。
- ブラウザー ウィンドウで最上位 VHDL ファイル transpose_fir.vhd を選択します。これを次の図に示します。
関連のコンフィギュレーション M コード transpose_fir_config.m がエディターに開きます。
- エディターを閉じます。
- ブラック ボックスのポートを対応するサブシステム ポートに接続し、デザインを保存します。
- Black Box ブロックをダブルクリックし、次のダイアログ ボックスを開きます。
このダイアログ ボックスには、次のオプションがあります。- Block configuration m-function
- ブラック ボックスのコンフィギュレーション M 関数の名前を指定します。この例では、Configuration Wizard で生成された関数の名前が含まれています。デフォルトでは、ブラック ボックスにはウィザードで生成された関数の名前が使用されます。これは自分で作成したものに変更できます。
- Simulation mode
- 次の 3 つのシミュレーション モードがあります。
- Inactive
- シミュレーションでブラック ボックスへの入力は無視され、0 が生成されます。この設定は、ブラック ボックスに個別のシミュレーション モデルが存在している場合によく使用され、その場合シミュレーション モデルはシミュレーション マルチプレクサーを使用してブラック ボックスと並列に接続されます。
- Vivado Simulator
- ブラック ボックスのシミュレーション結果は、ブラック ボックスに関連付けられている HDL の協調シミュレーションを使用して生成されます。
- External co-simulator
- ModelSim HDL 協調シミュレーション ブロックデザインに追加し、[HDL co-simulator to use] フィールドに ModelSim ブロックの名前を指定する必要があります。このモードでは、ブラック ボックスは HDL 協調シミュレーションを使用してシミュレーションされます。
- [Simulation mode] で [Inactive] をオンにし、OK をクリックします。
- デザインの最上位に移動し、[Run simulation] ボタン をクリックしてシミュレーションを実行します。その後、Scope ブロックをダブルクリックします。
- [Output Signal] スコープに表示されているブラック ボックス出力は 0 です。これは、ブラック ボックスを非アクティブに設定したからです。
- Simulink エディター メニューから をクリックし、ブラック ボックスのポートのデータ型を表示します。
- モデルをコンパイルし (Ctrl + D キーを押す)、ポートのデータ型がアップデートされることを確認します。
ブラック ボックスのポート出力のデータ型は
UFix_26_0
です。このデータ型は、符号なし、26 ビット幅、2 進数小数点 0 位置は最下位ビットの左側です。 - コンフィギュレーション M 関数 transpose_fir_config.m を開き、出力のデータ型を
UFix_26_0
からFix_26_12
に変更します。変更後の行 (26 行目) は次のようになります。dout_port.setType('Fix_26_12');
次の手順を使用して、コンフィギュレーション M 関数を編集し、追加の HDL ファイルをブラック ボックスに関連付けます。
- 次に示す 65 行目に移動します。
this_block.addFile('transpose_fir.vhd');
- この行の上に、次の行を追加します。
this_block.addFile('mac.vhd');
- 変更をコンフィギュレーション M 関数に保存し、ファイルを閉じます。
- デザイン キャンバスをクリックし、Ctrl + D キーを押してモデルをコンパイルし直します。
Transpose FIR Filter Black Box サブシステムは次の図のようになります。
- Black Box ブロックのパラメーター ダイアログ ボックスで、[Simulation mode] の設定を Inactive から Vivado Simulator に変更し、OK をクリックします。
- デザインの最上位に移動し、シミュレーションを実行します。
- シミュレーションが終了したら、[Scope] ウィンドウの出力を確認します。
波形は 0 ではありません。シミュレーション モードが [Inactive] に設定されていた時は、[Output Signal] スコープの出力は 0 でした。今回は、[Output Signal] に Vivado シミュレーションからの結果がサイン波で示されています。
- [Output Signal] 表示を右クリックし、Configuration Properties をクリックします。[Main] タブで Axis Scaling を Auto に設定します。
次のような出力が表示されます。