超碰激情 I 成人福利网站 I 淫国产 I 曰批视频免费30分钟成人 I 刘亦菲裸体视频一区二区三区 I 午夜久 I 尤物综合 I 亚洲一区av在线观看 I 欧美亚洲国产精品久久高清 I 欧美老熟妇乱子伦视频 I 无码中出人妻中文字幕av I 久久美女福利视频 I 精品无人区乱码1区2区3区在线 I 性饥渴的农村熟妇 I 色综合综合色 I 少妇人妻88久久中文字幕 I 久久夜色精品国产噜噜av I 老熟妇仑乱视频一区二区 I 男女做爰猛烈叫床视频动态图 I 日本大片一区二区 I 人成午夜免费视频在线观看 I 激情婷婷av I 男女下面一进一出免费视频网站 I 久久影视一区 I 午夜污网站 I 先锋人妻无码av电影 I 久久久久久久岛国免费网站 I 又粗又大又黄又硬又爽免费看 I 人妻无码免费一区二区三区 I www.色成人100 I 欧美高清网站 I 精品国产第一页 I 国产suv一区二区三区88区 I 橹图极品美女无圣光 I 午夜宅男欧美

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 工業(yè)電子產(chǎn)品 > 其他電子產(chǎn)品 > 開(kāi)發(fā)板,套件,編程器 > 開(kāi)發(fā)板

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
開(kāi)發(fā)板

AD9361軟件無(wú)線電實(shí)驗(yàn)(2)成型濾波

發(fā)布日期:2022-10-14 點(diǎn)擊率:80

什么是成型濾波

成型濾波就是通過(guò)對(duì)數(shù)字基帶信號(hào)的處理把信號(hào)的頻譜壓縮在一定的帶寬內(nèi)。先看一張圖,就是矩形脈沖信號(hào)的頻譜,這張圖是用別人的代碼畫(huà)出來(lái)的,比我的代碼畫(huà)的好,畢竟人家是專業(yè)的。

矩形脈沖信號(hào)的頻譜

很明顯,如果不對(duì)這個(gè)頻譜做限制,那么它將會(huì)占用特別大的帶寬,在實(shí)際的無(wú)線通信產(chǎn)品中,根本沒(méi)有這種頻譜的產(chǎn)品。用比較專業(yè)的一點(diǎn)的方式描述,成型濾波有兩個(gè)作用:

(1)頻譜壓縮,限制信號(hào)帶寬。在數(shù)字通信中基帶信號(hào)是矩形脈沖,突變的上升沿和下降沿包含高頻分量豐富,其頻譜范圍普遍比較寬(頻譜是一個(gè)Sa函數(shù))。為了有效利用信道,在信號(hào)傳輸之前,需要對(duì)信號(hào)進(jìn)行頻譜壓縮。使其在消除碼間串?dāng)_和達(dá)到最佳檢測(cè)的前提下,大大提高頻帶利用率。信號(hào)帶寬匹配信道帶寬。

(2)改變傳輸信號(hào)的成形波形,可以減小抽樣定時(shí)脈沖誤差所帶來(lái)的影響,即降低了碼間干擾(ISI)。信號(hào)帶限就會(huì)引入碼間串?dāng)_(時(shí)域的離散化對(duì)應(yīng)頻域的周期化),會(huì)導(dǎo)致接收信號(hào)波形失真。但一般情況下,只需要在特定時(shí)刻的信號(hào)抽樣值無(wú)失真,并不需要整個(gè)信號(hào)波形都無(wú)失真,而升余弦濾波器剛好就能對(duì)基帶信號(hào)頻譜進(jìn)行帶限,并且不影響信號(hào)在特定時(shí)刻的抽值

原文鏈接:https://blog.csdn.net/weixin_46136963/article/details/107981923

成型濾波器的原理

我在研究成型濾波這部分知識(shí)的時(shí)候花了大量時(shí)間,我無(wú)法給出教材上那么詳細(xì)的資料,只能是按照我的個(gè)人理解和學(xué)習(xí)過(guò)程做簡(jiǎn)單總結(jié),想要進(jìn)一步學(xué)習(xí)的話,就得學(xué)習(xí)信號(hào)與系統(tǒng)與數(shù)字信號(hào)處理了。數(shù)字濾波器分為FIR(有限沖擊響應(yīng))和IIR(無(wú)限沖擊響應(yīng)),其中FIR無(wú)反饋模塊,IIR有反饋模塊,可想而知,F(xiàn)IR的輸出與之前的輸出無(wú)關(guān),IIR的輸出與之前的輸出是有關(guān)系的,還需要記住另一個(gè)結(jié)論,F(xiàn)IR具有線性相位。FIR濾波器具有很多結(jié)構(gòu),我畫(huà)了一種最簡(jiǎn)單的形式,如下圖。讀者可能會(huì)覺(jué)得手動(dòng)畫(huà)圖多此一舉,其實(shí)我畫(huà)圖是為了加深理解,我還自己手動(dòng)計(jì)算過(guò)濾波器的輸出^_^。

一種FIR濾波器的結(jié)構(gòu)

可以看出,這是一種延遲,相乘再相加的結(jié)構(gòu),實(shí)際上就是卷積和,其中x(n)是輸入的數(shù)字序列,y(n)是輸出的數(shù)字序列,a0-a10稱為濾波器的系數(shù),卷積的計(jì)算過(guò)程就是:換元、翻轉(zhuǎn)、移位、相乘求和,一邊卷動(dòng),一邊求和,很形象。為了驗(yàn)證這個(gè)想法,我們用Matlab設(shè)計(jì)一個(gè)升余弦濾波器,如下圖。

使用Matlab設(shè)計(jì)升余弦濾波器

量化成16位

對(duì)濾波器系數(shù)進(jìn)行量化

并保存量化后的系數(shù)-2529,0,4654,10179,14661,16384,14661,10179, 4654,0,-2529

假定輸入序列x(n)是[1,-1,-1,-1,-1,-1,-1,-1,1],可以算出濾波器的輸出

y(0)=a0*x(0) =-2529

y(1)=a0*x(1)+a1*x(0)=2529

y(2)=a0*x(2)+a1*x(1)+a2*x(0)=7183

y(3)=a0*x(3)+a1*x(2)+a2*x(1)+a3*x(0)=8054

y(4)=……=2357

y(5)=……=-10581

好,這是手動(dòng)計(jì)算的結(jié)果,我們?cè)賮?lái)看看Matlab函數(shù)的輸出結(jié)果,如下圖。

Matlab卷積與filter函數(shù)輸出對(duì)比

其中y1是卷積運(yùn)算的結(jié)果,y2是使用Matlab的filter函數(shù)濾波后的結(jié)果,可見(jiàn),y2與y1的前幾個(gè)輸出值是完全匹配的。以上過(guò)程說(shuō)明數(shù)字濾波器的輸出的確就是輸入序列與濾波器系數(shù)卷積的結(jié)果。還有一個(gè)問(wèn)題,為什么把原始數(shù)字序列與濾波器系數(shù)卷積后,頻譜特性就改變了呢?我自己的理解是,當(dāng)前的輸出是之前的多個(gè)輸入值乘系數(shù)相加后的結(jié)果,可以起到對(duì)輸入信號(hào)進(jìn)行平滑處理,既然信號(hào)變得平滑了,信號(hào)突變也就沒(méi)那么厲害了,信號(hào)的頻率成分必定減少,頻譜自然被壓縮。從數(shù)學(xué)上看,數(shù)字濾波器的輸入與輸出可以表達(dá)為差分方程,這個(gè)差分方程的頻率響應(yīng)呈現(xiàn)出低通、高通、帶通等形式,奧本海姆的《信號(hào)與系統(tǒng)》寫(xiě)得很好,感興趣的讀者可以看看。

成型濾波器在FPGA上的實(shí)現(xiàn)

(1) 首先生成20000個(gè)1 -1的隨機(jī)序列,并保存在rand_data.txt文件中,Matlab代碼如下:

clear;clc;
N=20000;
s=randi([0 1],N,1);
s1=2*s-1;
fid=fopen('D:Tempmatlab and_data.txt','w');
fprintf(fid,'%d ',s1);fclose(fid);

(2) 生成一個(gè)128階,滾降系數(shù)是0.25的,歸一化截止頻率0.25的平方根升余弦滾降濾波器,并量化為16位整數(shù),保存為coe格式,供Vivado使用。Matlab代碼如下:

clear;clc;
span=32; %符號(hào)跨度
sps=4; %每個(gè)符號(hào)的點(diǎn)采樣數(shù)
%使用rcosdesign得到濾波器系數(shù)
h=rcosdesign(0.25, span, sps, 'sqrt');
%得到的系數(shù)通帶增益為6dB,暫不清楚原因,除2后正常
h2=h/2;
figure (1);
freqz(h2,1,1024);
%將系數(shù)放大并取整
coe_int=round((h/max(abs(h)))*(2^15-1));
freqz(coe_int,1,1024);
format long;
%將系數(shù)量化為15位小數(shù)
coe_frac=coe_int/2^15;
figure (2);
freqz(coe_frac,1,1024);
fid=fopen('D:Tempmatlabcoe_frac.coe','w');
fprintf(fid,'Radix = 10; ');
fprintf(fid,'CoefData = ');
fprintf(fid,'%16.15f, ',coe_frac);fprintf(fid,';');fclose(fid);
fid=fopen('D:Tempmatlabcoe_int.coe','w');
fprintf(fid,'Radix = 10; ');
fprintf(fid,'CoefData = ');
fprintf(fid,'%d, ',coe_int);fprintf(fid,';');fclose(fid);
fid=fopen('D:Tempmatlabcoe_int.txt','w');
fprintf(fid,'%d ',coe_int);fclose(fid);

頻率響應(yīng)如下圖

升余弦濾波的頻率響應(yīng)

(3) 在Vivado中使用FIR IP核,加載coe_int.coe文件,并作如下配置

(4) 編寫(xiě)testbench,讀入第(1)步生成的rand_data.txt,并將FIR濾波后的結(jié)果保存在filt_data.txt中,部分代碼如下

integer fid_in;
initial
begin
fid_in = $fopen("D:/Temp/matlab/rand_data.txt","r");
end

always@(posedge clk_1m)
begin
if(!rst)
begin
din <= 8'd0;
s_data_tvalid <= 1'b0;
end
else if(s_data_tready)
begin
$fscanf(fid_in,"%d",din);
s_data_tvalid <= 1'b1;
end
end

integer fid_out;
initial
begin
fid_out = $fopen("D:/Temp/matlab/filt_data.txt","w");
end
always@(posedge clk_4m)
begin
if(m_data_tvalid)
begin
$fwrite(fid_out,"%d ",dout);
end
end

(5) 配置Vivado使用Modelsim仿真并運(yùn)行,得到filt_data.txt。

(6) 使用對(duì)比f(wàn)ilt_data.txt與Matlab使用filter函數(shù)得到的結(jié)果是否一致,代碼如下

clear;clc;
ps=1*10^6; %碼速率為1MHz
Fs=4*10^6; %采樣速率為8MHz
N=2000; %仿真數(shù)據(jù)的長(zhǎng)度

coe_int=importdata('D:Tempmatlabcoe_int.txt');

s=importdata('D:Tempmatlab and_data.txt');

fir_out=importdata('D:Tempmatlabfilt_data.txt');

t=0:1/Fs:(N*Fs/ps-1)/Fs; %產(chǎn)生長(zhǎng)度為N,頻率為fs的時(shí)間序列

%截?cái)郌IR輸出的前8K數(shù)據(jù)
fir_out_8k_temp=fir_out(2:N*(Fs/ps)+1,1);
fir_out_8k=fir_out_8k_temp';

%以Fs頻率采樣
ups=upsample(s',Fs/ps);
%濾波
filt_mat=filter(coe_int,1,ups);
filt_mat_8k=filt_mat(1:8000);
%對(duì)比數(shù)據(jù)
isequal(fir_out_8k,filt_mat_8k)

對(duì)比結(jié)果如下

FIR輸出與Matlab filter函數(shù)對(duì)比

可見(jiàn),F(xiàn)IR濾波器與Matlab filter函數(shù)的輸出結(jié)果完全一致。

下一篇: PLC、DCS、FCS三大控

上一篇: AD9361軟件無(wú)線電實(shí)驗(yàn)

推薦產(chǎn)品

更多