lcytms
发表于 2016-11-21 18:28:34
同时修改dds模块。
在dds模块里面再修改频率控制字fword参数的调用。
修改dds模块代码如下。
module dds (clk, rst_n, num);
input clk, rst_n;
output num;
wire addr;
control #(.pword(64), .fword(1_000_000))
control_inst (
.clk(clk),
.rst_n(rst_n),
.addr(addr)
);
rom rom_inst (
.address ( addr ),
.clock ( clk ),
.q ( num )
);
endmodule
lcytms
发表于 2016-11-21 18:29:40
本帖最后由 lcytms 于 2016-11-21 18:31 编辑
修改仿真模块Testbench。
修改dds_tb.v模块中的stop时间设置,修改代码如下。
`timescale 1ns/1ps
module dds_tb;
reg clk, rst_n;
wire num;
dds dut (.clk(clk), .rst_n(rst_n), .num(num));
initial
begin
clk = 1;
rst_n = 0;
#200.1
rst_n = 1;
#200_000 $stop;
end
always #10 clk = ~clk;
endmodule
lcytms
发表于 2016-11-21 18:31:01
本帖最后由 lcytms 于 2016-11-21 18:32 编辑
仿真运行结果
设置好仿真之后,可以看到仿真结果。
将输出的数据格式(radix一项)设置成模拟的数据。
可以看到复位完成后,输出相位为90°的正弦波,周期为11.62 kHz,依次循环。
可见设置fword=1_000_000时,相当于基本频率(0.0116Hz)*1_000_000。
至此,DDS逻辑实现了完整的相位可调、频率可调。
仿真运行结果与设计要求一致。
lcytms
发表于 2016-11-21 18:33:11
通过今天的课程,我们学习了任意波形发生器DDS的基本概念,然后结合第十六讲 ROM 实际演示了一下任意波形发生器DDS逻辑电路的建模与仿真,并通过仿真查看效果。
希望大家掌握任意波形发生器DDS以及调相、调频的基本概念,并熟练运用Verilog语言编写相关逻辑。
更复杂的知识和技巧我们将逐步通过后面的课程展现给大家。
课程到此结束,谢谢大家的关注!
Esmiamor
发表于 2016-12-27 17:40:25
感谢分享。
fpga_wuhan
发表于 2017-1-4 14:12:36
FPGA初级课程第十七讲 任意波形发生器DDS
我是一只小小鸟
发表于 2017-2-11 09:20:41
:(:(:(:(:(:(:(
大鹏
发表于 2017-2-25 16:16:26
谢谢李老师分享,以后还会来学习的!
4798345
发表于 2017-3-29 13:26:10
谢谢李老师分享,以后还会来学习的!
小舍YZ
发表于 2017-3-29 14:02:02
赞,,,,,,,,谢谢分享。。。。。。。:lol:lol:lol