序文
実用的なアプリケーションシナリオプロジェクトでは、州が最も多くのリソースを必要としています。DSPリソースとFPGA BRAM貴重な資源です。
実数信号に対してFFTを実行する必要が同時に複数のチャネルがあり、それはFFT IP各チャネルのために一般的である、FFT IPは、入力されたRE + 0 * jのです。FFT IP直接ゼロに設定された入力の、すなわち虚数部。
それは無駄なリソースのこの虚部を使い切っている可能性があり、答えはイエスです。
参考資料
http://www.doc88.com/p-0394736871727.html
https://wenku.baidu.com/view/e89895af9ec3d5bbfc0a7403.html
基本
複素共役権利とは何ですか?
+ b *表Jの複雑な場合は、その複合体は、AB * jのです。どちらも、複素共役のペアと呼ばれます。
FFTのルールは何ですか?
以下に示すように、NポイントFFTの出力、最初のポイントは、約2N / 2この時点で共役対称である第二の点から出発して、DC成分です。第2のそのような点は、N番目の共役対称を有する点です。
アルゴリズムのプロセス
2つの同時実信号を計算する必要があり、NポイントFFT 1が達成平行Nポイント双方向実信号で計算することができる使用することができます。
(1)しようX1(N)とx2(n)は2つのN点の実数のシーケンスです。
(2)新しい配列を構築:X(N)(N)+×2(N)* J×1 =。
(3)FFT演算X(n)はX(K)= RE(K)+ IM(K)* Jを得ました。
対称性の(4)の使用がある:FFT(X1(N))= [X-(K)+ X- *(NKの)] / 2
FFT(X2(N))= -j * [X(K) - X *(NK)/ 2
これにより、FFTのX1(N)、X2(n)を達成します。
注意:X- *(NKの)X(NK)コンジュゲートへ。上記第四の点は、DC信号を考慮されていないで、直接工学用途無意味、DC信号点を0に設定することができます。
Maltabアルゴリズム検証
Fsを= 6M、X1信号600K、X2信号1200K、FFTポイントが8192になるように。
次のようにMATLABコードであってもよいです。
%% kingstackerによって供給 %% CLC。 %をクリア すべてクリア。 すべて閉じます。 FS = 6E6; L = 8192 ; N = 0:L- 1 。 X1 =負荷(' 600k_signal_8192.txt ' ); X2 =負荷(' 1200k_signal_8192.txt ' ); %% 构造信号FFT Y = X1 + X2 *のJ; Y = FFT(Y、8192 )。 %% X1(1)= 0;%まずDC設定点0まで X2(1 =)0 ; のための I = 2:8192%上の第二の点から X1(I) = 1 / 2 *(Y(I)+ CONJ(Y(8194 - I))); X2(I) = - 1 / 2 * J *(Y(I)-conj(Y(8194 - I))); エンド X = N * Fsの/(L * 1E3)の-Fs /(2 * 1E3);%X軸の プロット(X場合、fftshift(DB(ABS(X1)))); ON HOLD; プロット(X場合、fftshift(DB(ABS(X2)))); タイトル(' と同じFFTアルゴリズムの結果"); 図; プロット(X場合、fftshift(DB(ABS(FFT(X1)))))。 つかまっている; プロット(X場合、fftshift(DB(ABS(FFT(X2)))))。 タイトル(' X1、X2分别FFT计算结果' ); 図; X1_reshape =変形(X1、[ 8192、1 ])。 X2_reshape =変形(X2、[ 8192、1 ])。 erro1 = ABS(X1_reshape - FFT(X1))。 erro2 = ABS(X2_reshape - FFT(X2))。 プロット(erro1(2:8192 ))。 つかまっている; プロット(erro2(2:8192 ))。 タイトル(「異なる相対誤差演算結果」)。
以下に示すような結果:
あなたは小さなエラー、一貫性のある結果を有するそれぞれのFFTアルゴリズムのFFTを用いて計算した結果により算出された出力結果を見ることができます。
次のステップは、FPGAの友人の具体的な実現です。
上記。