兩通道實訊號使用乙個FFT同時計算演算法

2022-06-22 20:09:13 字數 2398 閱讀 1032

前言

在工程的實際應用場景中,往往是需要最省資源量。而dsp資源和bram資源對fpga來說彌足珍貴。

對於同時存在多個通道的實訊號需要做fft而言,常規做法是每個通道用乙個fft ip,fft ip的輸入為re+0*j。即輸入fft ip的虛部直接置0。

那有沒有可能把這個虛部浪費掉的資源用起來呢,答案是肯定的。

參考文件

基礎知識

什麼叫複數共軛對?

如果乙個複數為a+b*j,那麼它的共軛就是a-b*j。兩者稱為複數共軛對。

fft的輸出規律是啥?

如下圖所示,對於n點fft的輸出,第1個點為直流分量,從第2個點開始是關於2n/2這個點共軛對稱的。比如第2個點跟第n個點是共軛對稱的。

演算法流程

有兩路同時的實訊號需要進行計算,則可以使用1個n點的fft就可以實現n點雙路實訊號的平行計算。

(1)   設x1(n)和x2(n)為兩個n點的實序列。

(2)   構造新序列:x(n) = x1(n) + x2(n)*j。

(3)   計算x(n)的fft,得到x(k) = re(k) + im(k)*j。

(4)   利用對稱性,就有:  fft(x1(n)) = [x(k) + x*(n-k)]/2

fft(x2(n)) = -j*[x(k) - x*(n-k)]/2

從而實現了x1(n),x2(n)的fft。

注意:x*(n-k)為x(n-k)的共軛。上述中的第4點直流訊號是不予考慮的,對工程應用無意義,直流訊號點直接置0即可。

maltab演算法驗證

令fs=6m,x1訊號為600k,x2訊號為1200k,fft點數為8192。

matlab**可如下所示:

%%powered by kingstacker

%%clc; %clear

clear all;

close all;

fs =6e6;

l = 8192

;n = 0:l-1

;x1 = load('

600k_signal_8192.txt');

x2 = load('

1200k_signal_8192.txt');

%%構造訊號fft

y = x1 + x2*j;

y = fft(y,8192

);%%x1(

1) = 0; %第乙個點直流置0即可

x2(1) = 0

;for i = 2:8192 %從第二個點開始

x1(i) = 1/2*(y(i)+conj(y(8194-i)));

x2(i) = -1/2*j*(y(i)-conj(y(8194-i)));

endx = n*fs/(l*1e3)-fs/(2*1e3); %x axis

plot(x,fftshift(db(abs(x1))));

hold on ;

plot(x,fftshift(db(abs(x2))));

title(

'同乙個fft演算法結果');

figure ;

plot(x,fftshift(db(abs(fft(x1)))));

hold on;

plot(x,fftshift(db(abs(fft(x2)))));

title(

'x1,x2分別fft計算結果');

figure;

x1_reshape = reshape(x1,[8192,1

]);x2_reshape = reshape(x2,[8192,1

]);erro1 = abs(x1_reshape -fft(x1));

erro2 = abs(x2_reshape -fft(x2));

plot(erro1(

2:8192

));hold on;

plot(erro2(

2:8192

));title(

'不同計算結果的相對誤差

');

計算結果如下圖所示:

可以看到由同乙個fft的計算演算法結果跟分別fft計算的輸出結果誤差很小,結果一致。

下一步就是fpga中的具體實現啦。

以上。

兩個網域名稱同時訪問乙個tomcat下的兩個專案

兩個網域名稱,分別對映乙個tomcat底下,兩個應用。分三個步驟完成。1 網域名稱與ip的解析,此步驟在萬網等機構完成。2 apache的httpd.conf的配置 serveradmin deqiang guo yeah.net servername www.yichaoart.com error...

兩個網域名稱同時訪問乙個tomcat下的兩個專案

兩個網域名稱,分別對映乙個tomcat底下,兩個應用。分三個步驟完成。1 網域名稱與ip的解析,此步驟在萬網等機構完成。2 apache的httpd.conf的配置 serveradmin deqiang guo yeah.net servername www.yichaoart.com error...

Git 在乙個電腦上同時使用兩個Git的賬號

又需要登入公司的賬號,又想在電腦上使用自己的賬號。首先是git config方面的設定,要取消掉原本對於git賬號的全域性設定。git config global unset user.name 取消全域性設定 git config global unset user.email 取消全域性設定 g...