作者:桂。

时间:2018-02-05 20:50:54

链接:http://www.cnblogs.com/xingshansi/p/8419452.html


一、仿真思路

  设计低通滤波器(5阶,6个系数),滤波器特性:

借助低通滤波器对信号进行滤波:

二、VIVADO仿真

  首先利用MATLAB生成定点补码:

%=============设置系统参数==============%
f1=500;        %设置波形频率
f2=3600;
Fs=8000;        %设置采样频率
L=1024;         %数据长度
N=16;           %数据位宽
%=============产生输入信号==============%
t=0:1/Fs:(1/Fs)*(L-1);
y=sin(2*pi*f1*t)+sin(2*pi*t*f2);
y_n=round(y*(2^(N-3)-1));      %N比特量化;如果有n个信号相加,则设置(N-n)
%=================画图==================%
a=10;           %改变系数可以调整显示周期
stem(t,y_n);
axis([0 L/Fs/a -2^N 2^N]);      %显示
%=============写入外部文件==============%
fid=fopen('sin_data.txt','w');    %把数据写入sin_data.txt文件中,如果没有就创建该文件
for k=1:length(y_n)B_s=dec2bin(y_n(k)+((y_n(k))<0)*2^N,N);for j=1:Nif B_s(j)=='1'tb=1;elsetb=0;endfprintf(fid,'%d',tb);endfprintf(fid,'\r\n');
endfprintf(fid,';');
fclose(fid);

  vivado的testbench:

`timescale 1ns / 1ps
module tb;// Inputslogic Clk;logic rst;// Outputslogic signed [23:0] Yout;//Generate a clock with 10 ns clock period.
initial  Clk <= 0;always #5 Clk = ~Clk;//Initialize and apply the inputs.
//-------------------------------------//
parameter data_num = 32'd1024;
integer   i = 0;
reg [15:0]  Xin[1:data_num];
reg  [15:0]  data_out;initial beginrst = 1;
#20rst = 0;
#40$readmemb("D:/PRJ/vivado/simulation_ding/009_lpf6tap/matlab/sin_data.txt",Xin);
endalways @(posedge Clk) beginif(rst)begindata_out <= 0;endelse   begindata_out <= Xin[i];i <= i + 8'd1;end
end   fir_6tap uut (
.Clk(Clk),
.Xin(data_out),
.Yout(Yout)
);
endmodule

  子模块 fir_6tap:

`timescale 1ns / 1ps
module fir_6tap(input Clk,input signed [15:0] Xin,output reg signed [23:0] Yout);//Internal variables.wire signed   [7:0] H0,H1,H2,H3,H4,H5;wire signed   [23:0] MCM0,MCM1,MCM2,MCM3,MCM4,MCM5,add_out1,add_out2,add_out3,add_out4,add_out5;wire signed     [23:0] Q1,Q2,Q3,Q4,Q5;//filter coefficient initializations.
//H = [-2 -1 3 4].assign H0 = -15;assign H1 = 19 ;assign H2 = 123;assign H3 = 123;assign H4 = 19;assign H5 = -15;//Multiple constant multiplications.assign MCM5 = H5*Xin;assign MCM4 = H4*Xin;assign MCM3 = H3*Xin;assign MCM2 = H2*Xin;assign MCM1 = H1*Xin;assign MCM0 = H0*Xin;//addersassign add_out1 = Q1 + MCM4;assign add_out2 = Q2 + MCM3;assign add_out3 = Q3 + MCM2;    assign add_out4 = Q4 + MCM1;   assign add_out5 = Q5 + MCM0;
//flipflop instantiations (for introducing a delay).DFF dff1 (.Clk(Clk),.D(MCM5),.Q(Q1));DFF dff2 (.Clk(Clk),.D(add_out1),.Q(Q2));DFF dff3 (.Clk(Clk),.D(add_out2),.Q(Q3));DFF dff4 (.Clk(Clk),.D(add_out3),.Q(Q4));DFF dff5 (.Clk(Clk),.D(add_out4),.Q(Q5));
//Assign the last adder output to final output.always@ (posedge Clk)Yout <= add_out5;endmodule

  DFF:

`timescale 1ns / 1ps
module DFF(input Clk,input [23:0] D,output reg [23:0]   Q);always@ (posedge Clk)Q = D;endmodule

  主要电路图(4阶为例):

  仿真结果,与MATLAB测试一致:

FIR基本型仿真_03相关推荐

  1. 基于Quartues ii和Modelsim的FIR滤波器仿真

    基于Quartues ii和Modelsim的FIR滤波器仿真 基于Quartues ii和Modelsim的FIR滤波器仿真 设计需求 设计思路 设计过程 MATLAB生成测试数据 利用filter ...

  2. FIR特性及仿真实现_01

    作者:桂. 时间:2018-02-05  19:01:21 链接:http://www.cnblogs.com/xingshansi/p/8419007.html 前言 本文主要记录FIR(finit ...

  3. 基于MATLAB GUI的数字滤波仿真平台设计

    基于MATLAB GUI的数字滤波仿真平台设计 一.平台介绍 二.设计原理 1. 登陆系统设计原理 2. IIR数字滤波器设计 3. FIR数字滤波器设计 三.程序实现 1. 用户登陆系统程序 2. ...

  4. m基于FPGA的多级抽取滤波器组verilog设计,包括CIC滤波,HB半带滤波以及DA分布式FIR滤波

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 数字下变频中的低通滤波器是由多级抽取滤波器组实现的.信号的同相分量和正交分量再分别经由积分梳状滤波器( ...

  5. 2020年TI杯大学生电子设计大赛 无线运动传感器节点 备赛、参赛实录(历时一个月)

    转载请标明转载自:https://blog.csdn.net/weixin_44578655/article/details/109020022 9.5 清单已经出了一段时间了.买的少部分元器件也到了 ...

  6. FPGA Implementation of White Gaussian Noise

    FPGA Implementation of White Gaussian Noise 前言 本设计使用开发工具为Quartus prime 18.1和Matlab 2018B 工程连接: 一.方案设 ...

  7. 阿里云资深技术专家易立:我对云原生软件架构的观察与思考

    来源 | 阿里巴巴中间件 作者 | 易立,阿里云资深技术专家,容器技术负责人 头图 | CSDN付费下载于视觉中国 前言 云原生计算包含三个维度的内容,云原生基础设施,软件架构和交付与运维体系,本文将 ...

  8. FIR仿真module_04

    作者:桂. 时间:2018-02-06  12:10:14 链接:http://www.cnblogs.com/xingshansi/p/8421001.html 前言 本文主要记录基本的FIR实现, ...

  9. (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真

    引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...

最新文章

  1. 介绍Shell脚本的参数解析工具
  2. Python之异常处理-Exception
  3. com.android.phone已停止运行怎么解决方法,com.android.phone已停止运行怎么解决
  4. linux patch
  5. mysql 事务 不同库_MYSQL数据库重点:事务与锁机制
  6. PHP正则匹配6到16位字符组合(且只能为数字、字母、下划线)
  7. Mac Xdebug安装时遇到了Zend Engine API 不一致的问题
  8. R 语言详细安装教程(保姆级)及 RStudio简易安装教程
  9. Python爬取淘宝商品附加cookie修改
  10. 月入1W+的自媒体达人都会用到的运营工具
  11. can例程 ecu_ECU程序及CAN总线实现
  12. 信息系统项目管理师必背核心考点(四十五)招标投标法
  13. BiliBili下载.flv视频文件重命名
  14. Spring configuration check
  15. 二、三级等保建议安全设备及其主要依据(毫无保留版)
  16. linux设备驱动归纳总结(八):1.总线、设备和驱动
  17. 2018/10/3 蜜网的配置
  18. PDManer安装教程
  19. sqlmap之sql注入原理利用
  20. 医院信息系统基本功能规范(4)

热门文章

  1. [AlwaysOn Availability Groups]CLUSTER.LOG(AG)
  2. Linux shell 脚本中”21″的含义解释
  3. is not in the sudoers file 解决(转)
  4. 如果编程语言是女人(译)
  5. php多文件压缩的功能函数
  6. 2020年第十八届西电程序设计竞赛网络预选赛之Problem A 失败的在线考试
  7. unity3d 自动变化大小_一种可扩展的Unity3d资源检查方式
  8. mysql online ddl和pt_MySQL变更之:Online DDL 和 PT-OSC 该选谁?
  9. 他不怕被拒绝_不怕被拒绝,这几大星座男追人时最有耐心
  10. matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错