2017年6月30日金曜日

Quartusでデジタルフィルタ係数ROMの作成

Spartan3Eで作っていたFMトランスミッタのVerilogコードをDE0-nano(アルテラ)に移植しています。そこでIPコアのライセンスについて調べてみたら、Quartusライトエディションでは基本的な演算やハードIPは無償ですが、FIRフィルタやNCOを含むIP Base Suiteが有償オプションということになっています。これらのIPは、ライトエディションで使用できても、評価版という位置づけのようです。


係数ROMの作成

まずはデジタルフィルタのコードを移植です。係数ROMはハードIPなので、アルテラのハードIP "ROM: 1-PORT" をインスタンシエートします。基本的な機能は、ザイリンクスと同じなので同じ機能になるよう設定を進めます。ザイリンクスではフィルタの係数をCOEファイルで指定していましたが、アルテラでは、MIF(Memory Initialization File)かインテルHEXフォーマットを使います。このファイルは、QuartusでFile ⇒ New ⇒ Memory Initialization Fileとすると手入力できます。


とはいえ、係数は256行もあるのでエクセルで所定フォーマットに変換後、QuartusのMIFファイルにコピペ。Quartusのエディタを使うと係数データが2進数なのに、DATA_RADIX=UNS(Unsigned decimal)とされてエラーになるので"BIN"に修正しました。

MIFファイルのイメージ

WIDTH=18;
DEPTH=256;
ADDRESS_RADIX=UNS;
DATA_RADIX=BIN;
CONTENT BEGIN
0    :   000000000000000001;
1    :   000000000000000001;
2    :   000000000000000000;
3    :   111111111111111111;

0 件のコメント:

コメントを投稿