成型滤波器设计matlab,MATLAB+VHDL脉冲成型滤波器的设计 附代码
附 录
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脉冲成型滤波器的设计 附代码相关推荐
- matlab校内赛传染病预测趋势以及控制 附代码
自新冠疫情发展以来感染人数呈爆发式增长,已严重威胁人类生命健康.我们采用疫情数据来源于"中华人民共和国国家卫生健康委员会"和四川省的疫情防控系统,建立COVID-19的时空分布图, ...
- Matlab中爱心的四种画法(附代码)
什么Σ(っ°Д°;)っ?居然可以用matlab画出漂亮的爱心图案? 方法一~ % Method 1x = -1:1/400:1; % 给定一个x的范围,指定步长为1/400y1 = 0.6 * abs ...
- 用matlab画散点图并用光滑曲线连接/效率曲线/附代码
用matlab画散点图并用光滑曲线连接/效率曲线 Excel内容: 代码: %%清屏 clear ; close all; clc; % param1:Excel文件名,无需扩展名 % param2: ...
- MATLAB图像处理——图像中余弦噪声去除(附代码)
图像中规则余弦噪声去除 问题描述 傅里叶变化 带阻滤波器 滤波 结果 改进 代码 问题描述 有以下增加噪声后的图像: 从图上可以明显看出在x方向上叠加了一正弦规律变化的噪声,要对其进行去噪处理,比较简 ...
- 软件设计原则SOLID+组合聚合+迪米特原则(附代码讲解)
SOLID是五大设计原则的首字母简写,最早出现于出自Robert Martin(罗伯特. 马丁)的<架构整洁之道>第三章设计原则.他们分别是 single Responsibility P ...
- 【Matlab 控制】仿真多智体一致性分析,附代码
Matlab 仿真多智体一致性分析,附代码 本例程所有参数及状态均采用最简单的形式,使更容易理解一致性的收敛过程. 所使用拉普拉斯矩阵图为如下所示的无向图(undirected graph) 输入: ...
- matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...
用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...
- 【CIC滤波器】基于MATLAB/FPGA的数字CIC滤波器的设计
FPGA代码: module down(i_clk,//输入时钟i_rst,//输入复位信号i_M, //抽取值i_data,//输入信号o_data,//输出信号r_clk);input i_clk ...
- matlab 滤波器设计 coe_一种半带滤波器的低功耗实现方法
在如今数字技术中,半带滤波器因其通带阻带对称,系数具有偶对称性且滤波器阶数为奇数,有效系数少等特点广泛应用于通信.视频处理.语音识别等数字信号处理应用中,尤其常用于实现信号的2倍抽取.对于一个阶数为N ...
最新文章
- 10 行 Python 代码写的模糊查询
- 「Android」 详细全面的基于vue2.0Weex接入过程(Android视角)
- oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接
- vue 秒转换为时分秒_Vue源码全面解析二十九 parse函数(转换html模板为AST语法结构)...
- php mysql修改表单数据_表单修改数据
- JAVA 实现《2048游戏》游戏
- Drools7 Hello Wrold 入门详细步骤--系列01课
- Linux 内核 颜色,Linux操作系统内核版的表示方法是( )
- Java程序实现繁体字转换简体字
- css3 3d 过 锯齿,css3 3d旋转 出现锯齿_html/css_WEB-ITnose
- 正则表达式必看书籍推荐
- 保研/面试复习-数据结构与算法-万字总结(近三万字)
- GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
- 县域远程医疗解决方案
- SQL SERVER 索引优化——移除键查找(书签查找)或RID查找
- jenkins+gitee 实现自动化部署项目到centos上
- 情人节程序员用HTML网页表白【飘动的心-3D相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 520表白html,html5 canvas全屏的520爱心表白网页代码
- python之九九乘法表打印功能深入讲解
- SmartSQL - 最方便、快捷的数据库文档查询生成工具(推荐)