1

Xilinx Virtex 7 で Dirac Delta を使用して 16 ビットの入力データ ストリームを畳み込もうとしています。

より具体的には、時間領域で入力ストリームに余弦を掛ける代わりに、周波数領域で次の式で畳み込みたいと思います: F(f) = 0.5 * (delta(f - f0) + delta(f) + f0))

誰もそれを実装する方法について何か考えがありますか? 実際、私の問題で興味深いザイリンクス IP コアは FIR コンパイラだけですが、関数 F(f) をこの IP コアの「係数」入力として表現する方法がわかりません。

EDIT:数学的には、ターゲット畳み込みにはディラックデルタのみが含まれるため、ポイントf0で入力関数を評価するだけで畳み込みを回避するより短い方法が存在する可能性があります。しかし、それを実装する方法もわかりません..

前もって感謝します

4

1 に答える 1

1

ザイリンクスには、FPGA で高速フーリエ変換を実行する IP があります。周波数領域に入ると、自分で操作を実行する必要があります。FIR ip コアを使用することもできますが、関数が非常に単純であるため、カスタム実装に比べて多くのリソースが浪費されます。最後に、ザイリンクスのコアは逆 FFT を実行してタイム ドメインに戻ることができます。

私の知る限り、周波数領域で畳み込みを実行するのに役立つコアはありません。したがって、適切な計算を行うために、変換をオーバーラップ加算することを忘れないでください。Matlab はそこであなたの友達になります!

最後に、 Number Theoretic Transform (NTT)に興味があるかもしれません。このアルゴリズムは、FPGA の FFT よりも効率的であり、畳み込みの実行に使用できます。欠点は、使用できる変換の長さに制限があることと、「周波数領域係数」が周波数とはまったく無関係であることです (多少ランダムです)。高速畳み込みが必要な場合は、NTT が最適です。これらのフーリエ係数の他の用途を探している場合は、そうではありません。しかし、コサインの NTT 式はもっと複雑で、あなたの研究の目的を台無しにしてしまいますが、学術的な観点から興味があるかもしれないと思いました。コメントで述べたように、コサインで乗算する方が時間領域で簡単です。

于 2015-05-25T17:13:43.410 に答える