创建工程,DDS_test。在IP Catalog中搜索DDS,选择其中一个DDS Compiler,双击打开。
开发板系统频率为100MHz, 根据输出频率的计算公式,相位步进间隔= (fout / fdds_in) * 2^N (N 为前面相位的位宽),所以如果用系统的频率作为DDS的输入频率,相位步进间隔= (1k / 100M)* 2^16 = 0.65536,显然这在verilog 中无法实现,所以我们要设法使DDS IP 核的输入频率较小。这里我们通过对系统频率进行分频,获得 100KHz,作为DDS的输入频率,此时相位步进间隔为 655。
创建顶层.V文件。
module dds_top(
input rst_n,
input clk_100M,
output data_tvalid,
output [7:0] data_tdata
);
reg [9:0]cnt;
reg clk_100K;
always @(posedge clk_100M or negedge rst_n)begin
if(!rst_n)begin
cnt<=10'd0;
clk_100K<=0;
end
else if(cnt==10'd499)begin
cnt&l