Visitor No. 1346
MATLABのモデルからHDLを生成する手順のメモです。詳しくは、MATLABのヘルプセンターを読みましょう。
Filter DesignerによるHDL生成 †
Half-Band Filterの例 †
- MATLABのアプリメニューから、信号処理と通信 - フィルタデザイナーを選択
- または、コマンドプロンプトから、filterDesignerと入力
- フィルタデザイナフォームに下記のように設定(入力サンプリング周波数192kHz、通過帯域44kHz、34次のLPFの例)
- (注)ハーフバンドフィルタは、出力のサンプリングレートが入力のサンプリングレートの1/2となるため fpass < fs/4 とする
- フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
- 浮動小数点を使ってもHDLを生成できるが、論理合成の際に浮動小数点演算器が必要になるので、回路を小さくしたい場合は固定小数点を選ぶ。ただし、演算誤差が増加する。
- フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック
- フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択
- HDL生成フォームで下記のように設定
- ここでは、言語としてVerilogHDLを使用
- 名前には、設計を行うトップ階層モジュールの名前を設定
- 必要ならテストベンチのタブで、テストベンチ(シミュレーション用のHDLコード)も設定する
- クロック入力(clk)、リセット入力(reset)は、自動的に作成される。名称を変更する場合は、フィルタデザイナーのグローバル設定で信号名を指定する。
- 生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される
逆SinCフィルタの例 †
- フィルタデザイナフォームに下記のように設定(入力サンプリング周波数96kHz、遮断周波数22kHz、186次のLPFの例)
- (注)逆SinCフィルタは、fc < fs/2 とする
- フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
- フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック
- フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択
- HDL生成フォームで下記のように設定
- 生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される
SimlinkkによるHDL生成 †
- MATLABのホームニューで、Simulinkアイコンをクリック
- または、MATLABのプロンプトから、simulinkと入力
- Simulinkのシミュレーションメニューで、保存 - 名前を付けて保存...によりSimulinkプロジェクトを保存(ここではexampleとした)
- 緑色のブロックが、これから設計を行うトップモジュールとなる
- 緑色のブロックをダブルクリックして、ブロック内部を下記のように書き直す
- 部品の呼び出しは、Simulinkのシミュレーションメニューから、ライブラリーブラウザーのアイコンをクリック
- FFT: DSP HDL Toolbox - Transform, 入出力ポート: HDL Coder - Commonly Used Blocks
- トップ階層に戻って、下記のように修正する
- 階層は、図面上部のタブまたは矢印ボタンで移動する
- 部品の呼び出しは、Simulinkのシミュレーションメニューから、ライブラリーブラウザーのアイコンをクリック、下記部品の設定は、部品アイコンをクリックして行う
- Sine Wave: Simulink - Source(振幅32767, 周波数1Hz), int16: Simulink - Signal Attributes(出力データ型 int16), Constant: Simulink - Source(信号属性 - 出力データ型 boolian)
- 浮動小数点演算を使用しない場合は、入出力信号を整数かBoolianにしておく
- Simulinkのシミュレーションメニューで、終了時間を256に設定し、実行ボタンをクリックして、シミュレーションを実行
- シミュレーションが成功したら、図面中のScope(右端の部品)をダブルクリックすて波形を確認
- Scopeウインドウのツールボックスで、X軸Y軸のスケールのボタン(右から3つめ)をクリックして全体表示
- 時間とともに位相(実部と虚部の比)が変わっていくのが観測できる
- SimulinkのHDLコードメニューで、設定アイコンをクリック
- コンフィギュレーションパラメータのフォームで下記のように設定(必要に応じて他の項目も設定)して、適用ボタンをクリック
- HDL成績可チェックボタンをクリックして、エラーまたは警告が無いことを確認
- 生成ボタンをクリックしてHDLを生成
- HDLの生成に成功すると、SimulinkウインドウにHDLコードが表示され、指定したフィルだの配下にHDLファイルが作成される
Qualtusによる論理合成例 †
MATLABで出力したHDLコードは、論理合成か可能なRTL記述になっているので、FPGAやASICに実装可能です。ここでは、intelのFPGA開発環境である、Quartus Primeを使用して論理合成できるか試してみます。Quartus Primeには、Pro, Standard, Liteのエディションがあり、Lite版が無料になっています。
- Quartus Prime Liteを起動
- New Project Wizardをクリック
- 作業ディレクトリ、プロジェクト名を指定、Project TypeはEmpty Projectとする
- Add Filesフォームで、作成しておいたHDLファイルを指定(ここでは、HFB.v を使用)
- Family, Devices & Board Settingsでは、適当にdeviceを選ぶ(使用を想定するFPGAがある場合はそれを指定)
- メニューより、Processing - Start Compilation を選択
- メニューの Tools - Netlist Viewers より RTL Viewer を選択して回路を確認
- メニューの Tools - Netlist Viewers より Technology Map Viewer を選択して合成結果を確認
- Technology Map Viewer には、Post Mapping(論理合成後の最適化結果) と Post- Fitting(配置配線後の最適化結果)がある
HDLシミュレーションについて †
Quartus本体には、論理シミュレータが含まれていない。2021にModelSim? Intel FPGA Editionから、Questa Intel FPGA Edition にリプレイスされた。ライセンスは無料だが、ModelSim?のときと同様、Intelのサイトででライセンスの取得が必要。
- Intelのサイトに登録したユーザアカウントでログインし、FPGAセルフサービスライセンスセンターに入る
- メニューから、コンピュータとライセンスファイル - 全てのコンピュータを選択
- 新規ボタンで、ライセンスをインストールするコンピュータを登録
- ライセンスファイルがメールで送られてくるので、コンピュータにコピーして(場所は任意)、環境変数LM_LICENSE_FILEにパスを設定
- Windows11の環境変数は、設定 - システム - バージョン情報 - システムの小差設定で設定できる