FIR基本型仿真_03
作者:桂。
时间: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相关推荐
- 基于Quartues ii和Modelsim的FIR滤波器仿真
基于Quartues ii和Modelsim的FIR滤波器仿真 基于Quartues ii和Modelsim的FIR滤波器仿真 设计需求 设计思路 设计过程 MATLAB生成测试数据 利用filter ...
- FIR特性及仿真实现_01
作者:桂. 时间:2018-02-05 19:01:21 链接:http://www.cnblogs.com/xingshansi/p/8419007.html 前言 本文主要记录FIR(finit ...
- 基于MATLAB GUI的数字滤波仿真平台设计
基于MATLAB GUI的数字滤波仿真平台设计 一.平台介绍 二.设计原理 1. 登陆系统设计原理 2. IIR数字滤波器设计 3. FIR数字滤波器设计 三.程序实现 1. 用户登陆系统程序 2. ...
- m基于FPGA的多级抽取滤波器组verilog设计,包括CIC滤波,HB半带滤波以及DA分布式FIR滤波
目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 数字下变频中的低通滤波器是由多级抽取滤波器组实现的.信号的同相分量和正交分量再分别经由积分梳状滤波器( ...
- 2020年TI杯大学生电子设计大赛 无线运动传感器节点 备赛、参赛实录(历时一个月)
转载请标明转载自:https://blog.csdn.net/weixin_44578655/article/details/109020022 9.5 清单已经出了一段时间了.买的少部分元器件也到了 ...
- FPGA Implementation of White Gaussian Noise
FPGA Implementation of White Gaussian Noise 前言 本设计使用开发工具为Quartus prime 18.1和Matlab 2018B 工程连接: 一.方案设 ...
- 阿里云资深技术专家易立:我对云原生软件架构的观察与思考
来源 | 阿里巴巴中间件 作者 | 易立,阿里云资深技术专家,容器技术负责人 头图 | CSDN付费下载于视觉中国 前言 云原生计算包含三个维度的内容,云原生基础设施,软件架构和交付与运维体系,本文将 ...
- FIR仿真module_04
作者:桂. 时间:2018-02-06 12:10:14 链接:http://www.cnblogs.com/xingshansi/p/8421001.html 前言 本文主要记录基本的FIR实现, ...
- (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真
引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...
最新文章
- 介绍Shell脚本的参数解析工具
- Python之异常处理-Exception
- com.android.phone已停止运行怎么解决方法,com.android.phone已停止运行怎么解决
- linux patch
- mysql 事务 不同库_MYSQL数据库重点:事务与锁机制
- PHP正则匹配6到16位字符组合(且只能为数字、字母、下划线)
- Mac Xdebug安装时遇到了Zend Engine API 不一致的问题
- R 语言详细安装教程(保姆级)及 RStudio简易安装教程
- Python爬取淘宝商品附加cookie修改
- 月入1W+的自媒体达人都会用到的运营工具
- can例程 ecu_ECU程序及CAN总线实现
- 信息系统项目管理师必背核心考点(四十五)招标投标法
- BiliBili下载.flv视频文件重命名
- Spring configuration check
- 二、三级等保建议安全设备及其主要依据(毫无保留版)
- linux设备驱动归纳总结(八):1.总线、设备和驱动
- 2018/10/3 蜜网的配置
- PDManer安装教程
- sqlmap之sql注入原理利用
- 医院信息系统基本功能规范(4)
热门文章
- [AlwaysOn Availability Groups]CLUSTER.LOG(AG)
- Linux shell 脚本中”21″的含义解释
- is not in the sudoers file 解决(转)
- 如果编程语言是女人(译)
- php多文件压缩的功能函数
- 2020年第十八届西电程序设计竞赛网络预选赛之Problem A 失败的在线考试
- unity3d 自动变化大小_一种可扩展的Unity3d资源检查方式
- mysql online ddl和pt_MySQL变更之:Online DDL 和 PT-OSC 该选谁?
- 他不怕被拒绝_不怕被拒绝,这几大星座男追人时最有耐心
- matlab armax 无法识别,求教:Java调用系统辨识工具箱内的armax函数出错