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
页: 1 2 3 4 [5] 6
查看完整版本: FPGA初级课程第十七讲 任意波形发生器DDS