附 录

FIR_filter_tb.v

// --------------------------------------------------------------------

// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<

// --------------------------------------------------------------------

// Module: FIR_filter_tb

//

// Author: Step

//

// Description: FIR_filter_tb

//

// --------------------------------------------------------------------

// Code Revision History :

// --------------------------------------------------------------------

`timescale 1ps/1ps

module FIR_filter_tb;

parameter PERIOD = 20;

reg clk, rst_n;

wire signed [26:0] data_out;

initial begin

clk = 0;

rst_n = 0;

#100;

rst_n = 1;

#6000;

$stop;

end

always #10 clk = ~clk;

wire signed[9:0] data1;

DDS dds_24k

(

.clk_in(clk), //clock in

.rst_n_in(rst_n), //reset, active low

.dds_en_in(1), //dds work enable

.f_increment(24'h60000), //frequency increment

.p_increment(0), //phase increment

.dac_data_out(data1) //data out

);

wire signed[9:0] data2;

DDS dds_240k

(

.clk_in(clk), //clock in

.rst_n_in(rst_n), //reset, active low

.dds_en_in(1), //dds work enable

.f_increment(24'h3c0000), //frequency increment

.p_increment(0), //phase increment

.dac_data_out(data2) //data out

);

wire signed[10:0] data_in = data1 + data2;

FIR_Filter u0 (

.ast_sink_data (data_in), // avalon_streaming_sink.data

.ast_sink_valid (1), // .valid

.ast_sink_error (0), // .error

.ast_source_data (data_out), // avalon_streaming_source.data

.ast_source_valid (), // .valid

.ast_source_error (), // .error

.clk (clk), // clk.clk

.reset_n (rst_n) // rst.reset_n

);

endmodule

DDS.v

// --------------------------------------------------------------------

// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<

// --------------------------------------------------------------------

// Module: DDS

//

// Author: Step

//

// Description: DDS

//

// --------------------------------------------------------------------

// Code Revision History :

// --------------------------------------------------------------------

module DDS

(

input clk_in, //clock in

input rst_n_in, //reset, active low

input dds_en_in, //dds work enable

input [23:0] f_increment, //frequency increment

input [23:0] p_increment, //phase increment

output dac_clk_out, //clock out

output [9:0] dac_data_out //data out

);

reg [23:0] phase_accumulator;

wire [23:0] phase;

//wire [9:0] dac_data_out;

assign dac_clk_out = clk_in;

//next_phase = phase_accumulator + f_increment;

always @(posedge clk_in or negedge rst_n_in)

begin

if(!rst_n_in) phase_accumulator <= 23'b0;

else if(dds_en_in) phase_accumulator <= phase_accumulator + f_increment;

end

assign phase = phase_accumulator + p_increment; // phase is the high 8 bits

lookup_table lookup_table_uut

(

.phase(phase[23:16]),

.dac_data_out(dac_data_out)

);

endmodule

/**************************************************

module: lookup_table

**************************************************/

module lookup_table

(

input [7:0] phase,

output reg [9:0] dac_data_out

);

wire [5:0] address = phase[5:0];

wire [1:0] sel = phase[7:6];

wire [9:0] sine;

always@(sel or sine)

case (sel)

2'b00 : dac_data_out = {1'b0, sine[9:1]};

2'b01 : dac_data_out = {1'b0, sine[9:1]};

2'b10 : dac_data_out = {1'b1, 9'h1ff-sine[9:1]};

2'b11 : dac_data_out = {1'b1, 9'h1ff-sine[9:1]};

endcase

sine_table sine_table_uut

(

.sel(sel),

.address(address),

.sine(sine)

);

endmodule

/**************************************************

module: sine_table

**************************************************/

module sine_table

(

input [1:0] sel,

input [5:0] address,

output reg [9:0] sine

);

reg [5:0] table_addr;

always @(sel or address)

case (sel)

2'b00: table_addr = address;

2'b01: table_addr = 6'h3f - address;

2'b10: table_addr = address;

2'b11: table_addr = 6'h3f - address;

endcase

always @(table_addr)

case(table_addr)

6'h0: sine=10'h000;

6'h1: sine=10'h019;

6'h2: sine=10'h032;

6'h3: sine=10'h04B;

6'h4: sine=10'h064;

6'h5: sine=10'h07D;

6'h6: sine=10'h096;

6'h7: sine=10'h0AF;

6'h8: sine=10'h0C4;

6'h9: sine=10'h0E0;

6'ha: sine=10'h0F9;

6'hb: sine=10'h111;

6'hc: sine=10'h128;

6'hd: sine=10'h141;

6'he: sine=10'h159;

6'hf: sine=10'h170;

6'h10: sine=10'h187;

6'h11: sine=10'h19F;

6'h12: sine=10'h1B5;

6'h13: sine=10'h1CC;

6'h14: sine=10'h1E2;

6'h15: sine=10'h1F8;

6'h16: sine=10'h20E;

6'h17: sine=10'h223;

6'h18: sine=10'h238;

6'h19: sine=10'h24D;

6'h1a: sine=10'h261;

6'h1b: sine=10'h275;

6'h1c: sine=10'h289;

6'h1d: sine=10'h29C;

6'h1e: sine=10'h2AF;

6'h1f: sine=10'h2C1;

6'h20: sine=10'h2D3;

6'h21: sine=10'h2E5;

6'h22: sine=10'h2F6;

6'h23: sine=10'h307;

6'h24: sine=10'h317;

6'h25: sine=10'h326;

6'h26: sine=10'h336;

6'h27: sine=10'h344;

6'h28: sine=10'h353;

6'h29: sine=10'h360;

6'h2a: sine=10'h36D;

6'h2b: sine=10'h37A;

6'h2c: sine=10'h386;

6'h2d: sine=10'h392;

6'h2e: sine=10'h39C;

6'h2f: sine=10'h3A7;

6'h30: sine=10'h3B1;

6'h31: sine=10'h3BA;

6'h32: sine=10'h3C3;

6'h33: sine=10'h3CB;

6'h34: sine=10'h3D3;

6'h35: sine=10'h3DA;

6'h36: sine=10'h3E0;

6'h37: sine=10'h3E6;

6'h38: sine=10'h3EB;

6'h39: sine=10'h3F0;

6'h3a: sine=10'h3F3;

6'h3b: sine=10'h3F7;

6'h3c: sine=10'h3FA;

6'h3d: sine=10'h3FC;

6'h3e: sine=10'h3FE;

6'h3f: sine=10'h3FF;

endcase

endmodule

成型滤波器设计matlab,MATLAB+VHDL脉冲成型滤波器的设计 附代码相关推荐

  1. matlab校内赛传染病预测趋势以及控制 附代码

    自新冠疫情发展以来感染人数呈爆发式增长,已严重威胁人类生命健康.我们采用疫情数据来源于"中华人民共和国国家卫生健康委员会"和四川省的疫情防控系统,建立COVID-19的时空分布图, ...

  2. Matlab中爱心的四种画法(附代码)

    什么Σ(っ°Д°;)っ?居然可以用matlab画出漂亮的爱心图案? 方法一~ % Method 1x = -1:1/400:1; % 给定一个x的范围,指定步长为1/400y1 = 0.6 * abs ...

  3. 用matlab画散点图并用光滑曲线连接/效率曲线/附代码

    用matlab画散点图并用光滑曲线连接/效率曲线 Excel内容: 代码: %%清屏 clear ; close all; clc; % param1:Excel文件名,无需扩展名 % param2: ...

  4. MATLAB图像处理——图像中余弦噪声去除(附代码)

    图像中规则余弦噪声去除 问题描述 傅里叶变化 带阻滤波器 滤波 结果 改进 代码 问题描述 有以下增加噪声后的图像: 从图上可以明显看出在x方向上叠加了一正弦规律变化的噪声,要对其进行去噪处理,比较简 ...

  5. 软件设计原则SOLID+组合聚合+迪米特原则(附代码讲解)

    SOLID是五大设计原则的首字母简写,最早出现于出自Robert Martin(罗伯特. 马丁)的<架构整洁之道>第三章设计原则.他们分别是 single Responsibility P ...

  6. 【Matlab 控制】仿真多智体一致性分析,附代码

    Matlab 仿真多智体一致性分析,附代码 本例程所有参数及状态均采用最简单的形式,使更容易理解一致性的收敛过程. 所使用拉普拉斯矩阵图为如下所示的无向图(undirected graph) 输入: ...

  7. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

    用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...

  8. 【CIC滤波器】基于MATLAB/FPGA的数字CIC滤波器的设计

    FPGA代码: module down(i_clk,//输入时钟i_rst,//输入复位信号i_M, //抽取值i_data,//输入信号o_data,//输出信号r_clk);input i_clk ...

  9. matlab 滤波器设计 coe_一种半带滤波器的低功耗实现方法

    在如今数字技术中,半带滤波器因其通带阻带对称,系数具有偶对称性且滤波器阶数为奇数,有效系数少等特点广泛应用于通信.视频处理.语音识别等数字信号处理应用中,尤其常用于实现信号的2倍抽取.对于一个阶数为N ...

最新文章

  1. 10 行 Python 代码写的模糊查询
  2. 「Android」 详细全面的基于vue2.0Weex接入过程(Android视角)
  3. oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接
  4. vue 秒转换为时分秒_Vue源码全面解析二十九 parse函数(转换html模板为AST语法结构)...
  5. php mysql修改表单数据_表单修改数据
  6. JAVA 实现《2048游戏》游戏
  7. Drools7 Hello Wrold 入门详细步骤--系列01课
  8. Linux 内核 颜色,Linux操作系统内核版的表示方法是( )
  9. Java程序实现繁体字转换简体字
  10. css3 3d 过 锯齿,css3 3d旋转 出现锯齿_html/css_WEB-ITnose
  11. 正则表达式必看书籍推荐
  12. 保研/面试复习-数据结构与算法-万字总结(近三万字)
  13. GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
  14. 县域远程医疗解决方案
  15. SQL SERVER 索引优化——移除键查找(书签查找)或RID查找
  16. jenkins+gitee 实现自动化部署项目到centos上
  17. 情人节程序员用HTML网页表白【飘动的心-3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  18. 520表白html,html5 canvas全屏的520爱心表白网页代码
  19. python之九九乘法表打印功能深入讲解
  20. SmartSQL - 最方便、快捷的数据库文档查询生成工具(推荐)

热门文章

  1. Flask 扫盲系列-在线股票走势图
  2. ISO9001认证多少钱?
  3. Linux系统下adb驱动安装步骤 及 问题总结
  4. 使用DoraOS瘦客户机系统,改造华为版的升腾C92,打造超值的瘦客户机系统
  5. 《第一行代码》12.2学习中遇到的一些问题and心得
  6. ArcMap加载天地图底图及出现空白问题解决方法
  7. MaxWell抓取数据
  8. 蓄冷罐布水器仿真matlab,用于蓄冷罐的布水器的制作方法
  9. Mysql数据库定时任务自动备份
  10. 【数理统计】学习笔记05:区间估计