💡 学部の卒業研究で彼女が FPGA を使うため、この文章を書いて HDL コーダーの使い方を素早く習得できるようにし、初期の学習の難易度を下げるためです。
HDL コード生成をサポートする Simulink ライブラリ#

名前に HDL が含まれるライブラリのモジュールは一般的に HDL コードを生成するために使用できます。モジュール名を直接検索します。例えば、fir を検索すると、

隣にどのライブラリにあるかが表示されます。モジュールは複数のライブラリに存在する可能性がありますが、HDL という名前が含まれているライブラリが 1 つでもあれば、そのモジュールは HDL コードを生成するために使用できます。
一部の一般的な操作#
サブシステムの作成#
ライブラリからモジュールをメインインターフェースにドラッグして組み合わせると、大きなスペースを占めることがあります。プロジェクトが大きく、モジュールがどんどん増えると特に煩雑になります。そのため、特定の機能を完了した後は、その部分のモジュールをすべて選択できます。この時、右下に 3 つの点が表示され、マウスを上に移動すると展開され、さまざまな機能が表示されます。下の図は AM 変調のプロセスで、すべての関連モジュールを選択した後、サブシステムを作成をクリックすると、右の図のサブシステムが得られます。生成されたサブシステムの名前は subsystem ですが、より明確で理解しやすい名前に変更できます。


ノードの信号波形の観察#
特定の接続線を選択すると、同様に 3 つの点が表示され、マウスを上に移動すると展開され、WiFi 形状のオプションを選択すると、その接続線上の信号を記録できます。シミュレーションを実行した後、再度 WiFi アイコンをクリックすると、ロジックアナライザが開き、その接続線上の信号を確認できます。


ロジックアナライザ内で特定の信号を選択すると、波形の数制、高さなどの設定を調整できます。
スコープテンプレートを使用してノード信号を見ることもできます。
スペクトル分析#
Spectrum Analyzer モジュールを使用してスペクトル分析を行います。

サンプル点が少ない場合は、推定方法を welch に変更できます。
信号データ形式の表示#

モジュールの入力出力信号のデータ型と小数位数を表示できます。
サンプリング時間の欄の時間の凡例を選択すると、異なるサンプリングレートのモジュールが異なる色で表示され、多速率システム設計に非常に役立ちます。
HDL コードの生成#
前準備#
診断タイプの設定#

モデル設定で診断 / サンプリング時間を選択します。

単一タスクとマルチタスクのデータ転送はエラーに設定する必要があります。
互換性チェック#

コード生成のターゲットフォルダを選択し、互換性チェッカーを実行します。プロジェクトに問題がなければ、以下の画面が表示されます。

ターゲットプラットフォームの選択#

使用する FPGA に基づいて合成ツールと FPGA のシリーズを選択します。
モジュール設定#
コードを生成するサブシステムを右クリックし、HDL モジュールプロパティを選択します。

パイプライン、乗算器などのパラメータを設定できます。

生成されたコードが EDA ツールでコンパイルされた後にタイミング制約を満たさない場合は、入力と出力のパイプラインを追加できます。
💡 モジュールの出力が前のモジュールにフィードバック信号を持っている場合は、パイプラインを追加できません。詳細は
bookmark
[bookmark](https://blog.sawenmoerjie.top/article/ec96aebc-b5a5-4059-bbef-02f0003e7a45)
コード生成#

サブシステムの HDL コードを生成するをクリックすると、自動的に 1 回のコンパイルが行われ、コマンドラインウィンドウに以下の情報が表示されます。

同時にレポートが生成されます。

エラーがなければ、上記で選択したフォルダ内に生成された Verilog コードファイルが表示されます。

これらのファイルを EDA ツールにインポートすれば、直接インスタンス化して使用できます。
💡 すべてのファイルをインポートする必要があり、特定の名前のモジュールだけをインポートすることはできません!
💡 EDA ソフトウェアのコンパイル後のレポートを必ず確認してください。特に大規模設計では、タイミング要件を満たさないことが非常に多く、その場合は Simulink に戻って設計を最適化する必要があります。タイミングレポートに A モジュールの特定の場所のタイミングが満たされていない場合は、Simulink 内の A モジュールにパイプラインを追加する必要があります。(注:Quartus ではタイミングエラーに遭遇したことはありませんが、大規模プロジェクトを Quartus で開発していない可能性があります。)