• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2022-06-12T07:33:54+00:00","kitagawa","kitagawa")
#freeze
#author("2022-06-14T00:31:41+00:00","kitagawa","kitagawa")
[[&ref(home.gif);:http://jaco.ec.t.kanazawa-u.ac.jp/kitagawa/]]
~
Visitor No. &counter(total);

MATLABのモデルからHDLを生成する手順のメモです。詳しくは、[[MATLABのヘルプセンター:https://jp.mathworks.com/help/hdlcoder/getting-started-with-hdl-coder.html?s_tid=CRUX_lftnav]]を読みましょう。
MATLABのモデルからHDLを生成する手順のメモです。詳しくは、[[MATLABのヘルプセンター:https://jp.mathworks.com/help/hdlcoder/getting-started-with-hdl-coder.html?s_tid=CRUX_lftnav]]を読んでください。
~
----
*Filter DesignerによるHDL生成 [#p7201cc2]

***Half-Band Filterの例 [#rcbbe5f0]
-MATLABのアプリメニューから、信号処理と通信 - フィルタデザイナーを選択
-MATLABのアプリメニューから、信号処理と通信 - フィルターデザイナーを選択
--または、コマンドプロンプトから、filterDesignerと入力
-フィルタデザイナフォームに下記のように設定(入力サンプリング周波数192kHz、通過帯域44kHz、34次のLPFの例)
--(注)ハーフバンドフィルタは、出力のサンプリングレートが入力のサンプリングレートの1/2となるため fpass < fs/4 とする
-フィルターデザイナフォームに下記のように設定(入力サンプリング周波数192kHz、通過帯域44kHz、34次のLPFの例)
--(注)ハーフバンドフィルターは、出力のサンプリングレートが入力のサンプリングレートの1/2となるため fpass < fs/4 とする

#ref(HBF.png,,50%)
-フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
--浮動小数点を使ってもHDLを生成できるが、論理合成の際に浮動小数点演算器が必要になるので、回路を小さくしたい場合は固定小数点を選ぶ。ただし、演算誤差が増加する。
-フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック
-フィルターデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
--浮動小数点(実数、複素数)を使ったHDLも生成できるが、論理合成の際に浮動小数点ライブラリが必要になるので、回路を小さくしたい場合は固定小数点を選ぶ。ただし、演算誤差が増加する。
-フィルターデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルター設計画面に戻り、フィルター設計ボタン(画面下部)をクリック

-フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択
-フィルターデザイナーのメニューから、ターゲット - HDLを生成... を選択
-HDL生成フォームで下記のように設定
--ここでは、言語としてVerilogHDLを使用
--名前には、設計を行うトップ階層モジュールの名前を設定
--必要ならテストベンチのタブで、テストベンチ(シミュレーション用のHDLコード)も設定する
--クロック入力(clk)、リセット入力(reset)は、自動的に作成される。名称を変更する場合は、フィルタデザイナーのグローバル設定で信号名を指定する。
--クロック入力(clk)、リセット入力(reset)は、自動的に作成される。名称を変更する場合は、フィルターデザイナーのグローバル設定で信号名を指定する。

#ref(HBF-HDL.png,,50%)
-生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される


***逆SinCフィルタの例 [#o54fe5cc]
-フィルタデザイナフォームに下記のように設定(入力サンプリング周波数96kHz、遮断周波数22kHz、186次のLPFの例)
--(注)逆SinCフィルタは、fc < fs/2 とする
-フィルターデザイナフォームに下記のように設定(入力サンプリング周波数96kHz、遮断周波数22kHz、186次のLPFの例)
--(注)逆SinCフィルターは、fc < fs/2 とする

#ref(SINCI.png,,50%)
-フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
-フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック
-フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択
-フィルターデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定
-フィルターデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルター設計画面に戻り、フィルター設計ボタン(画面下部)をクリック
-フィルターデザイナーのメニューから、ターゲット - HDLを生成... を選択
-HDL生成フォームで下記のように設定
--名前には、設計を行うトップ階層モジュールの名前を設定
--必要ならテストベンチのタブで、テストベンチ(シミュレーション用のHDLコード)も設定する
--クロック入力(clk)、リセット入力(reset)は、自動的に作成される。名称を変更する場合は、フィルターデザイナーのグローバル設定で信号名を指定する。

#ref(SINCI-HDL.png,,50%)
-生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される


*SimlinkkによるHDL生成 [#sc089000]
*SimulinkによるHDL生成 [#sc089000]
***高速フーリエ変換の例 [#led7ed7f]
-MATLABのホームニューで、Simulinkアイコンをクリック
--または、MATLABのプロンプトから、simulinkと入力
-Simulinkスタートページが表示されるので、テンプレートのリストから、HDL Coderの項目を開き、「空のDUT」をクリック
-Simulinkのシミュレーションメニューで、保存 - 名前を付けて保存...によりSimulinkプロジェクトを保存(ここではexampleとした)
--緑色のブロックが、これから設計を行うトップモジュールとなる

#ref(empty.png,,50%)
-緑色のブロックをダブルクリックして、ブロック内部を下記のように書き直す
--部品の呼び出しは、Simulinkのシミュレーションメニューから、ライブラリーブラウザーのアイコンをクリック
---FFT: DSP HDL Toolbox - Transform, 入出力ポート: HDL Coder - Commonly Used Blocks

#ref(FFT.png,,50%)
-トップ階層に戻って、下記のように修正する
--階層は、図面上部のタブまたは矢印ボタンで移動する
--部品の呼び出しは、Simulinkのシミュレーションメニューから、ライブラリーブラウザーのアイコンをクリック、下記部品の設定は、部品アイコンをクリックして行う
---Sine Wave: Simulink - Source(振幅32767, 周波数1Hz), int16: Simulink - Signal Attributes(出力データ型 int16), Constant: Simulink - Source(信号属性 - 出力データ型 boolian)
--部品の呼び出しは、Simulinkのシミュレーションメニューから、ライブラリーブラウザーのアイコンをクリック、下記部品の設定は、部品アイコンをダブルクリックして行う
---Sine Wave: Simulink - Source(Amplitude 32767, Frequency 1Hz, Sample Time 1/2024), int16: Simulink - Signal Attributes(出力データ型 int16), Constant: Simulink - Source(信号属性 - 出力データ型 boolian)
---浮動小数点演算を使用しない場合は、入出力信号を整数かBoolianにしておく

#ref(TOP.png,,50%)
-Simulinkのシミュレーションメニューで、終了時間を256に設定し、実行ボタンをクリックして、シミュレーションを実行
-シミュレーションが成功したら、図面中のScope(右端の部品)をダブルクリックすて波形を確認
-シミュレーションが成功したら、図面中のScope(右端の部品)をダブルクリックして波形を確認
--Scopeウインドウのツールボックスで、X軸Y軸のスケールのボタン(右から3つめ)をクリックして全体表示
---時間とともに位相(実部と虚部の比)が変わっていくのが観測できる
---虚数(SINE成分)が出ているのが観測できる

#ref(simulation.png,,50%)
-SimulinkのHDLコードメニューで、設定アイコンをクリック
-コンフィギュレーションパラメータのフォームで下記のように設定(必要に応じて他の項目も設定)して、適用ボタンをクリック
-コンフィギュレーションパラメータのフォームで下記のように設定し(必要に応じて他の項目も設定)、適用ボタンをクリック
--clk, resetは自動的に追加される、詳しい設定を行う場合は、左欄のリストからグローバル設定を選んで設定を行う

#ref(config.png,,50%)
-HDL成績可チェックボタンをクリックして、エラーまたは警告が無いことを確認
-HDL生成可チェックボタンをクリックして、エラーまたは警告が無いことを確認
-生成ボタンをクリックしてHDLを生成
-HDLの生成に成功すると、SimulinkウインドウにHDLコードが表示され、指定したフィルだの配下にHDLファイルが作成される
-HDLの生成に成功すると、SimulinkウインドウにHDLコードが表示され、指定したフォルダの配下にHDLファイルが作成される

#ref(code-gen.png,,50%)

*Qualtusによる論理合成例 [#e31a47a5]
MATLABで出力したHDLコードは、論理合成か可能なRTL記述になっているので、FPGAやASICに実装可能です。ここでは、intelのFPGA開発環境である、Quartus Primeを使用して論理合成できるか試してみます。Quartus Primeには、Pro, Standard, Liteのエディションがあり、Lite版が無料になっています。
MATLABで出力したHDLコードは、論理合成可能なRTL記述になっているので、FPGAやASICに実装可能。ここでは、IntelのFPGA開発環境Quartus Primeを使用して論理合成できるか試してみる。Quartus Primeには、Pro, Standard, Liteの3エディションがあり、Lite版は無料。

-Quartus Prime Liteを起動
-New Project Wizardをクリック
--作業ディレクトリ、プロジェクト名を指定、Project TypeはEmpty Projectとする
--Add Filesフォームで、作成しておいたHDLファイルを指定(ここでは、HFB.v, HFB_tb.vを使用)
--Add Filesフォームで、作成しておいたHDLファイルを指定(ここでは、HBF.v を使用)
--Family, Devices & Board Settingsでは、適当にdeviceを選ぶ(使用を想定するFPGAがある場合はそれを指定)
--EDA Tool Settings で、Simulation に Questa Intel FPGA を指定

#ref(Quartus_New.png,,50%)
#ref(Quartus_Main.png,,50%)
-メニューより、Processing - Start Compilation を選択
--または、ツールバーの青三角をクリック
-メニューの Tools - Netlist Viewers より RTL Viewer を選択して回路構成を確認
-メニューの Tools - Netlist Viewers より Technology Map Viewer を選択して合成結果を確認
-- Technology Map Viewer には、Post Mapping(論理合成後の最適化結果) と Post- Fitting(配置配線後の最適化結果)がある

#ref(Quartus_Viewer.png,,50%)

*HDLシミュレーションについて [#p88fc4fd]
Quartus本体には、論理シミュレータが含まれていない。論理シミュレータとして、Questa Intel FPGA Edition が配布されている。Intelのサイトでライセンスの取得が必要(無料)。
-Intelのサイトに登録したユーザアカウントでログインし、FPGAセルフサービスライセンスセンターに入る
-メニューから、コンピュータとライセンスファイル - 全てのコンピュータを選択
-新規ボタンで、ライセンスをインストールするコンピュータを登録
-ライセンスファイルがメールで送られてくるので、登録したコンピュータにコピーして(場所は任意)、環境変数LM_LICENSE_FILEにパスを設定
--Windows11の環境変数は、設定 - システム - バージョン情報 - システムの詳細設定で追加できる

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS