#author("2022-06-12T04:51:19+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]]を読みましょう。 ~ ---- *Filter DesignerによるHDL生成 [#p7201cc2] ***Half-Band Filterの例 [#rcbbe5f0] -MATLABのアプリメニューから、信号処理と通信 - フィルタデザイナーを選択 --または、コマンドプロンプトから、filterDesignerと入力 -フィルタデザイナフォームに下記のように設定(入力サンプリング周波数192kHz、通過帯域44kHz、34次のLPFの例) --(注)ハーフバンドフィルタは、出力のサンプリングレートが入力のサンプリングレートの1/2となるため fpass < fs/4 とする #ref(HBF.png,,50%) -フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定 --浮動小数点を使ってもHDLを生成できるが、論理合成の際に浮動小数点演算器が必要になるので、回路を小さくしたい場合は固定小数点を選ぶ。ただし、演算誤差が増加する。 -フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック -フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択 -HDL生成フォームで下記のように設定 --ここでは、言語としてVerilogHDLを使用 --名前には、設計を行うトップ階層モジュールの名前を設定 --必要ならテストベンチのタブで、テストベンチ(シミュレーション用のHDLコード)も設定する --クロック入力(clk)、リセット入力(reset)は、自動的に作成される。名称を変更する場合は、フィルタデザイナーのグローバル設定で信号名を指定する。 #ref(HBF-HDL.png,,50%) -生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される ***逆SinCフィルタの例 [#o54fe5cc] -フィルタデザイナフォームに下記のように設定(入力サンプリング周波数96kHz、遮断周波数22kHz、186次のLPFの例) --(注)逆SinCフィルタは、fc < fs/2 とする #ref(SINCI.png,,50%) -フィルタデザイナーの左下アイコンから。量子化パラメータの設定(上から3番目のアイコン)を選択し、フィルター演算を固定小数点に設定 -フィルタデザイナーの左下アイコンから、フィルター設計(一番下のアイコン)を選択して、フィルタ設計画面に戻り、フィルター設計ボタン(画面下部)をクリック -フィルタデザイナーのメニューから、ターゲット - HDLを生成... を選択 -HDL生成フォームで下記のように設定 #ref(SINCI-HDL.png,,50%) -生成ボタン(フォーム右下)をクリックすると、指定したフォルダにHDLコードが出力される *SimlinkkによるHDL生成 [#sc089000] *Qualtusによる論理合成例 [#e31a47a5]