<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產(chǎn)品分類

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

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

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

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

      什么是成型濾波

      成型濾波就是通過(guò)對(duì)數(shù)字基帶信號(hào)的處理把信號(hào)的頻譜壓縮在一定的帶寬內(nèi)。先看一張圖,就是矩形脈沖信號(hào)的頻譜,這張圖是用別人的代碼畫出來(lái)的,比我的代碼畫的好,畢竟人家是專業(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),我畫了一種最簡(jiǎn)單的形式,如下圖。讀者可能會(huì)覺(jué)得手動(dòng)畫圖多此一舉,其實(shí)我畫圖是為了加深理解,我還自己手動(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é)果,可見,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)》寫得很好,感興趣的讀者可以看看。

      成型濾波器在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) 編寫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ì)比

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

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

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

      推薦產(chǎn)品

      更多
      主站蜘蛛池模板: 亚洲综合久久一本伊伊区| 色狠狠成人综合色| 一本久到久久亚洲综合| 色婷婷久久综合中文久久蜜桃| 亚洲AV日韩综合一区| 伊人色综合久久天天网| 色欲色香天天天综合网站免费| 成人综合久久精品色婷婷| 久久综合伊人77777| 亚洲精品第一国产综合野| 六月婷婷激情综合| 天天综合网色中文字幕| 综合久久久久久中文字幕亚洲国产国产综合一区首| 国产成人亚洲综合无码精品| 婷婷六月久久综合丁香可观看| 久久一日本道色综合久久| 色噜噜狠狠狠狠色综合久| 久久99精品久久久久久综合| 一本久道久久综合| 国产香蕉尹人综合在线观看| 亚洲伊人tv综合网色| 久久久久国产综合AV天堂| 狠狠色狠狠色综合久久| 亚洲国产精品综合久久网络| 国产精品综合一区二区三区| 韩国亚洲伊人久久综合影院| 婷婷综合久久狠狠色99H| 色综合天天做天天爱| 色欲天天婬色婬香视频综合网| 亚洲AV综合色区无码二区爱AV| 久久久久久久综合色一本| 亚洲综合一区二区精品导航| 亚洲综合精品香蕉久久网| 久久综合丁香激情久久| 亚洲综合一区二区国产精品| 精品亚洲综合在线第一区 | 亚洲丁香婷婷综合久久| 国产成人精品综合网站| 色婷婷久久综合中文网站| 国产天天综合永久精品日| 国产色综合天天综合网|