DDS正弦波发生器通过模数转换芯片DAC121输出verilog代码
名称:DDS正弦波发生器通过模数转换芯片DAC121输出verilog代码(代码在文末下载)
软件:VIVADO
语言:Verilog
代码功能:
DDS正弦波发生器设计
1、使用DDS方法设计正弦波发生器
2、可以通过按键调整频率和幅值
3、波形通过数模转换芯片DAC121输出
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys3开发板验证,开发板如下,其他开发板可以修改管脚适配:

演示视频:
模数转换芯片DAC121资料:
设计文档:
1. 工程文件

2. 程序文件

3. 管脚分配

4. Testbench

5. 仿真图




部分代码展示:
module DDS_sin(
input clk,//100M
input [4:0] FM_swtich,//调频按键
input [2:0] AM_switch,//调幅按键
output DA_SCLK,//10M
output DA_SYNC_n,
output DA_DIN
);
reg [7:0] frequency_ctrl=8'd0;
reg [2:0] range_ctrl=8'd0;
always@(posedge clk)
begin
frequency_ctrl<={3'd0,FM_swtich};//频率控制字
range_ctrl<=AM_switch;//幅度控制
end
wire m_axis_data_tvalid;
wire [15:0] m_axis_data_tdata;
wire [9:0] sin_wave;
assign sin_wave=m_axis_data_tdata[9:0] + 10'd512;//DDS输出正弦波
//分频到1MHz
reg [15:0] div_cnt=16'd0;
reg clk_1MHz=0;
always@(posedge clk)
if(div_cnt>=16'd100)begin
div_cnt<=16'd0;
clk_1MHz<=~clk_1MHz;
end
else begin
div_cnt<=div_cnt+16'd1;
clk_1MHz<=clk_1MHz;
end
//调用DDS IP核
dds_10bit i_dds_10bit (
.aclk(clk_1MHz), // input wire aclk
.s_axis_phase_tvalid(1'b1), // input wire s_axis_phase_tvalid
.s_axis_phase_tdata(frequency_ctrl), // input wire [7 : 0] s_axis_phase_tdata
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata(m_axis_data_tdata) // output wire [15 : 0] m_axis_data_tdata
);
wire [11:0] wave_DA;
assign wave_DA=sin_wave[9:1] * range_ctrl;//调幅
//调用DA控制模块
dac121 i_dac121(
. i_C100MHz(clk),
. i_Reset(1'b0),
. data_in(wave_DA),
. DA_SCLK(DA_SCLK),//10M
. DA_SYNC_n(DA_SYNC_n),
. DA_DIN(DA_DIN)
);
endmodule代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DDS正弦波发生器通过模数转换芯片DAC121输出verilog代码
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DDS正弦波发生器通过模数转换芯片DAC121输出verilog代码
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm