国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于FPGA的FIR濾波器IP仿真實例

發布時間:2019-7-16 17:33    發布者:rousong1989
基于FPGAFIR濾波器IP仿真實例
AT7_Xilinx開發板(USB3.0+LVDS)資料共享
       騰訊鏈接:https://share.weiyun.com/5GQyKKc
       百度網盤鏈接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw
       提取碼:qr0t
1 FIR濾波器簡介
FIRFinite Impulse Response)濾波器,即有限脈沖響應濾波器,又稱為非遞歸型濾波器,是數字信號處理系統中最基本的元件,它可以在保證任意幅頻特性的同時具有嚴格的線性相頻特性,同時其單位抽樣響應是有限長的,因而濾波器是穩定的系統。因此,FIR濾波器在通信、圖像處理、模式識別等領域都有著廣泛的應用。
         Vivado集成的FIR IP核可以實現如下公式所示的N級卷積運算。
         FIR IP核可以根據配置實現復用的乘累加單元,以實現面積最優化的設計;當然了,在速度性能要求極高的應用中,也可以配置并行的乘累加單元,以達到最大的FIR數據吞吐量。
2 FIR IP核配置
         FIRIP配置主頁面如圖所示。此頁面可以配置基本的濾波參數。
         通道配置頁面如下。
         輸入輸出的數據位寬可在Implementation頁面配置。
         實現的資源利用情況,如優化選項、存儲器選項和DSP Slice選項等,可以在Detailed Implementation頁面配置。
         額外的控制接口,可以在Interface頁面配置。
         左側的Freq.Response頁面可以參考所使用的FIR濾波參數最終實現的濾波特性(低通、高通、低阻、高阻或帶通、帶阻等),這里我們使用的是一組IP默認的參數,低通濾波器
         而左側的Implementation Details頁面,則可以自由利用以及接口等信息。如圖所示的ufix16_0表示輸入數據為16位的無符號整數,而fix25_0則表示輸出結果是25位的有符號整數。
         詳細配置可參看pg149-fir-compiler.pdfat7_img_ex07/matlab文件夾下)。
3 FIR IP核接口時序
         我們例化的FIR IP核,有如下的接口,其功能和端口方向定義如下。
inputaclk;         //時鐘信號
input [15 : 0] s_axis_data_tdata;  //unsigned(16.0),輸入數據
inputs_axis_data_tvalid;                 //輸入數據有效信號,高電平有效
outputs_axis_data_tready;            //準備好接收輸入數據,高電平有效
output [24 : 0] m_axis_data_tdata;      //signed(25.0)FIR濾波結果輸出
outputm_axis_data_tvalid;                     //FIR濾波結果輸出有效,高電平有效
         接口時序控制如圖所示。圖中很多信號本實例不涉及,可以忽略。s_axis_data_tvalids_axis_data_tready信號同時拉高時,s_axis_data_tdataFIR IP核接收,進行處理。當m_axis_data_tvalid拉高時,表示輸出FIR濾波結果m_axis_data_tdata有效。
4 FIR IP仿真
         使用at7_img_ex07/matlab文件夾下的test_data_generate_for_fir.m腳本,可以產生一組1000個點的余弦數據,存放在time_domain_cos.txt文件中,這組數據將作為FPGA的仿真輸入激勵,經過FIR濾波器進行濾波處理。
clc;clear `all;close all;
format long g
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sampling period
L = 1000;                     % Length of signal
t = (0-1)*T;                % Time vector
x1 = cos(2*pi*50*t)*(2^13);          % First row wave
%output time domain data
x1_fix = round(x1,0);    %convert to fixed signed(3.13)
x1_fix(find(x1_fix<0)) = x1_fix(find(x1_fix<0))+(2^16);
fid0 = fopen('time_domain_cos.txt', 'wt');
fprintf(fid0, '%16x\n', x1_fix);
fid0 = fclose(fid0);
         FPGA工程at7_img_ex07的頂層是一個測試腳本,at7_fir_sim.v文件。該測試腳本將time_domain_cos.txt文件的1000個數據讀入,然后依次送入FIR濾波器IP核進行處理,輸出結果寫入fir_result.txt文本中。
`timescale 1ns/1ps
module zstar_fir_sim(
    );
         
reg clk;   
reg [15 : 0] s_axis_data_tdata;      //unsigned(16.0)
reg s_axis_data_tvalid;
wire s_axis_data_tready;
wire [31 : 25] null;
wire [24 : 0] m_axis_data_tdata;  //signed(25.0)
wire m_axis_data_tvalid;
parameter DATA_NUM = 1000;
         
////////////////////////////////////////////////////
//FIR IP Core   
fir_compiler_0  uut_fir_compiler_0 (
.aclk(clk),                              // input wire aclk
.s_axis_data_tvalid(s_axis_data_tvalid),  // input wire s_axis_data_tvalid
.s_axis_data_tready(s_axis_data_tready),  // output wire s_axis_data_tready
.s_axis_data_tdata(s_axis_data_tdata),    // input wire [15 : 0] s_axis_data_tdata
  .m_axis_data_tvalid(m_axis_data_tvalid),  // output wire m_axis_data_tvalid
  .m_axis_data_tdata({null,m_axis_data_tdata})    // output wire [31 : 0] m_axis_data_tdata
);
         
////////////////////////////////////////////////////     
integer i;
reg[15:0] data_mem [DATA_NUM-1:0];
initial #500 $readmemh("../../time_domain_cos.txt",  data_mem);                 
initial begin
         clk = 0;
         
         s_axis_data_tdata<= 16'd0;
         s_axis_data_tvalid<= 1'b0;
         
         
         #1000;
         @(posedgeclk);
         i<= 1;
         #10000;
         @(posedgeclk);               
         
         #100_000;
         
         $fclose(w1_file);
         #1000;
         $stop;
end  
always @(*) begin
         if((i>0) && (i
         else s_axis_data_tdata<= 16'd0;
end  
always @(posedgeclk) begin
         if(i == 0) i<= 0;
         else if(i<= DATA_NUM) begin         
                  if(s_axis_data_tready&&s_axis_data_tvalid) i<= i+1;
                  else ;
         end
         else if(i< DATA_NUM+26) i<= i+1;
         else ;
end
always @(posedgeclk) begin
         if((i>=1) && (i<=DATA_NUM-1)) s_axis_data_tvalid<= 1'b1;        
         else s_axis_data_tvalid<= 1'b0;
end
always #10 clk = ~clk;              
integer w1_file;
initial w1_file = $fopen("./fir_result.txt","w");     
                  
always @(posedgeclk) begin
         if(m_axis_data_tvalid) begin
                  $fwrite(w1_file, "%x\n", m_axis_data_tdata);     
         end  
end  
         
endmodule
         如圖所示,Vivado中打開at7_img_ex07工程,在Project Manager à Simulation Sources à sim_1下,看到top module為高亮的at7_fir_sim.v模塊,點擊Flow Navigator à Simulation à Run Simulation可以啟動仿真。
         運行仿真如圖。
仿真的結果將寫入生成的fir_result.txt文本(位于at7_img_ex07\at7.sim文件夾的子文件夾中),將該文本放置到matlab文件夾中,運行matlab腳本draw_wave_from_txt.m,可以查看正弦數據FIR濾波前后的波形比對。在時域看來,峰或谷的位置是高頻,因此都被FIR濾波處理了。
AT7_Xilinx開發板(USB3.0+LVDS)資料共享
       騰訊鏈接:https://share.weiyun.com/5GQyKKc
       百度網盤鏈接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw
       提取碼:qr0t
本文地址:http://www.qingdxww.cn/thread-565970-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 為何選擇集成電平轉換?
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区在线观看视频 | 欧美在线二区 | 国产aⅴ2021 国产a v高清一区二区三区 | 欧美成在线观看 | 国产日韩视频在线观看 | 91精品国产高清在线入口 | 亚洲成人aa| 久久久久久久久66精品片 | 狠狠操导航| 亚洲网视频 | 欧美三级视频网站 | 在线观看 日韩 | 天堂在线观看 | 88aa四虎影成人精品 | 日韩视频精品在线 | 几把好大 | 国产啪视频免费视频观看视频 | 免费观看色视频 | 午夜精品在线免费观看 | 啦啦啦视频在线观看影院 | 好看的亚洲视频 | 青青草免费看 | 久久综合香蕉久久久久久久 | 欧美片网站免费 | 欧美女人性视频 | 婷婷伊人久久 | www.av在线视频 | 日韩大片免费在线观看 | 99re在线这里只有精品 | 两个人的高清在线观看 | 四虎国产| 精品卡1卡2卡三卡免费视频 | 操操操操操 | 天堂色区 | 中文字幕手机在线播放 | 伊人青青久 | 免费韩国美女爽快一级毛片 | 2023av视频| 日本a在线免费观看 | 国产精品臀控福利在线观看 | 欧美日韩一级片在线观看 |