まずはDFT_IPのコアモジュールの部分をVivadoでIP化することにした。

このIPは2chを同時にDFT演算を行う。入力は16bit整数、出力は32bit浮動小数の複素数である。
フーリエ変換器なので複素数の乗算を行う箇所がある。

以前このIPを作った時はSpartan6用で作成したので、この部分の演算器はXilinxのcoregenでSpartan6用に生成した演算器を使用したが、今回はZynqに実装するのでZynq用に生成し直した。 これらの演算器は自作版も持っていたが、合成後の回路規模がcoregenで生成したものに劣った。 Zynqではどうなるかを見てみた。
coregenで生成した演算器を使った場合の回路規模は以下のような結果になった。

演算器はDSP(ハードマクロの演算器)を使わない設定で生成している。DSPを使う設定で生成すれば回路規模はもっと小さくなると思う。
自作演算器にした場合の結果

こちらもDSPを使用しない条件で合成させた。
やはり、coregenの演算器を使った場合に比べて大きい。
coregenの演算器の方が優っているので、今回も演算器はこれを使うことにしてVivadoでIP化を行った。

この状態で合成できるかやってみた。

合成できた。問題なさそうだ。
今度は、入出力モジュールを作成する必要がある。
以前このIPを作成した時は、AC97コーデックに出力するデータを入力として使用した。
ZyboはAudioコーデックLSIを実装しているがI/FはI2SとI2Cなので、このAC97用IPは使えない。
zybo_base_systemにDigilent製のIPがあるので、これを使うか自分で新しく作るかしなければならない。もしくは、Zynqは12bitのADコンバータ(XADC)も内蔵しているので、それを使うか。。。
まずは、前回と同じことが出来るかを確認したいので前者の方法を検討しようと思う。
0 件のコメント:
コメントを投稿