2009年6月20日土曜日

FMトランスミッタ用 入力ローパスフィルタ(5)

6.VerilogモジュールでFIR Compilerを使う
 次は、作成したデジタルフィルタをVerilogモジュールから使ってみます。このコンポーネントをインスタンス化するためのHDLテンプレートは、ISEのSources for ペインで作成したデジタルフィルタを選び、Processペインで View HDL Instantiation Templateをクリックすると表示させることができます。このテンプレートをVerilogモジュールにコピペすることでデジタルフィルタを使うことができます。




インスタンシエーション テンプレートの表示














デジタルフィルタの入出力タイミング
今回は2チャンネル分として設定








デジタルフィルタへの入力
 フィルタコアが新たなデータを受け入れ可能な状態になった場合に、RFD (Ready For Data) がHとして出力されます。そのとき ND (New Data) 入力にHをセットすると、システムクロックの立ち上がりエッジでCHAN_IN (Input Channel Select) の状態に従ったチャンネルに音声データが取り込まれます。CHAN_INはデジタルフィルタの出力端子ですが、初期値はCoreGenの設定で指定できます。


デジタルフィルタからの出力
 出力が確定した段階で、RDY (Ready) がHとして出力されます。そのときの出力チャンネルはCHAN_OUT (Output Channel Select) で知ることができます。


 さて、Verilogモジュールからの使用例ですが、Verilogの教科書を片手に書いたもので、お見せできるレベルではないですが私の作成例を示します。

 詳細は説明しませんが、最低限入出力関係について・・・
  • DIN1, DIN2: オーディオ入力、152ksps、24ビット 、2の補数形式
  • DOUT1, DOUT2: オーディオ出力、152ksps、24ビット 、2の補数形式
  • EN: サンプルタイミングパルス入力、152kHz、パルス幅はシステムクロックの1クロック
  • CLK: システムクロック入力、38.912MHz
  • RSTn: リセット入力、負論理



モジュールのポート宣言部分と
音声入力バッファ



















FIRフィルタへの音声入力




















FIRフィルタの音声出力
















ブログに貼り付けるとタブやスペースが消えてしまうのであえて画像としました。
あと、シミュレーション波形です。タイミング関係がわかりやすいと思います。




Verilogモジュールのシミュレーション波形










2009.7.13追記
ここで紹介したVerilogコードには、クロックのダブルエッジを使うなど正しくない記述が含まれています。おいおい直していきますが、ご覧になるときには鵜呑みにせぬようご注意ください。

0 件のコメント:

コメントを投稿