使用ISE DDS IP核产生正弦信号
使用ISE DDS IP核产生正弦信号
任务要求为 输入时钟频率为100MHz,产生1MHz的正弦波。设置输出为14位,反码格式输出
配置DDS IP核
新建工程 在工程下添加DDS IP 核,可以直接搜索,随便选择一个DDS即可
设置相位宽度为16位,这个根据要求自行设置,宽度越高正弦波的信号就越平缓
step1:
step2
step3
step4 这里需要计算相位的精度,根据数据手册的公式,计算相位增量的大小,结果换算成二进制,填入通道1中,这一步设置完成之后,点击NEXT,直至完成。
生成verilog代码
module DDS_Test(dclk,sindata,dds_clk);
input dclk;
output dds_clk;
output [13:0] sindata;
wire [13:0] sindata_reg;
assign dds_clk = dclk;
assign sindata={~sindata_reg[13],sindata_reg[12:0]};
u1 iptest( //u1为设置的IP核的名字
.clk(dclk),
.rdy(),
.cosine(sindata_reg),
.sine()
);
endmodule
生成代码之后,进行综合
添加测试文件
module DDS_Test_th;
// Inputs
reg dclk;
// Outputs
wire [13:0] sindata;
wire dds_clk;
// Instantiate the Unit Under Test (UUT)
DDS_Test uut (
.dclk(dclk),
.sindata(sindata),
.dds_clk(dds_clk)
);
initial begin
// Initialize Inputs
dclk = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
end
always #5 dclk <= ~dclk;
endmodule
endmodule