环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 > 工業電子產品 > 其他電子產品 > 開發板,套件,編程器 > 開發板

類型分類:
科普知識
數據分類:
開發板

AD9361軟件無線電實驗(2)成型濾波

發布日期:2022-10-14 點擊率:42

什么是成型濾波

成型濾波就是通過對數字基帶信號的處理把信號的頻譜壓縮在一定的帶寬內。先看一張圖,就是矩形脈沖信號的頻譜,這張圖是用別人的代碼畫出來的,比我的代碼畫的好,畢竟人家是專業的。

矩形脈沖信號的頻譜

很明顯,如果不對這個頻譜做限制,那么它將會占用特別大的帶寬,在實際的無線通信產品中,根本沒有這種頻譜的產品。用比較專業的一點的方式描述,成型濾波有兩個作用:

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

(2)改變傳輸信號的成形波形,可以減小抽樣定時脈沖誤差所帶來的影響,即降低了碼間干擾(ISI)。信號帶限就會引入碼間串擾(時域的離散化對應頻域的周期化),會導致接收信號波形失真。但一般情況下,只需要在特定時刻的信號抽樣值無失真,并不需要整個信號波形都無失真,而升余弦濾波器剛好就能對基帶信號頻譜進行帶限,并且不影響信號在特定時刻的抽值

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

成型濾波器的原理

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

一種FIR濾波器的結構

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

使用Matlab設計升余弦濾波器

量化成16位

對濾波器系數進行量化

并保存量化后的系數-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

好,這是手動計算的結果,我們再來看看Matlab函數的輸出結果,如下圖。

Matlab卷積與filter函數輸出對比

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

成型濾波器在FPGA上的實現

(1) 首先生成20000個1 -1的隨機序列,并保存在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) 生成一個128階,滾降系數是0.25的,歸一化截止頻率0.25的平方根升余弦滾降濾波器,并量化為16位整數,保存為coe格式,供Vivado使用。Matlab代碼如下:

clear;clc;
span=32; %符號跨度
sps=4; %每個符號的點采樣數
%使用rcosdesign得到濾波器系數
h=rcosdesign(0.25, span, sps, 'sqrt');
%得到的系數通帶增益為6dB,暫不清楚原因,除2后正常
h2=h/2;
figure (1);
freqz(h2,1,1024);
%將系數放大并取整
coe_int=round((h/max(abs(h)))*(2^15-1));
freqz(coe_int,1,1024);
format long;
%將系數量化為15位小數
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);

頻率響應如下圖

升余弦濾波的頻率響應

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

(4) 編寫testbench,讀入第(1)步生成的rand_data.txt,并將FIR濾波后的結果保存在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仿真并運行,得到filt_data.txt。

(6) 使用對比filt_data.txt與Matlab使用filter函數得到的結果是否一致,代碼如下

clear;clc;
ps=1*10^6; %碼速率為1MHz
Fs=4*10^6; %采樣速率為8MHz
N=2000; %仿真數據的長度

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; %產生長度為N,頻率為fs的時間序列

%截斷FIR輸出的前8K數據
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);
%對比數據
isequal(fir_out_8k,filt_mat_8k)

對比結果如下

FIR輸出與Matlab filter函數對比

可見,FIR濾波器與Matlab filter函數的輸出結果完全一致。

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

上一篇: AD9361軟件無線電實驗

推薦產品

更多
主站蜘蛛池模板: 无压烧结银_有压烧结银_导电银胶_导电油墨_导电胶-善仁(浙江)新材料 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 常州减速机_减速机厂家_常州市减速机厂有限公司 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 百度关键词优化_网站优化_SEO价格 - 云无限好排名 | 礼至家居-全屋定制家具_一站式全屋整装_免费量房设计报价 | 回收二手冲床_金丰旧冲床回收_协易冲床回收 - 大鑫机械设备 | 蓝牙音频分析仪-多功能-四通道-八通道音频分析仪-东莞市奥普新音频技术有限公司 | 电动葫芦-河北悍象起重机械有限公司 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 成都LED显示屏丨室内户外全彩led屏厂家方案报价_四川诺显科技 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 洗地机-全自动/手推式洗地机-扫地车厂家_扬子清洁设备 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 技德应用| 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 楼承板-开闭口楼承板-无锡海逵楼承板 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 安徽免检低氮锅炉_合肥燃油锅炉_安徽蒸汽发生器_合肥燃气锅炉-合肥扬诺锅炉有限公司 |