DDS LFM Generator
- 此项目实现了一个基于DDS的LFM信号发生器。使用vivado版本为2018.3.模块提供频率起始配置端口freq_conf_h / freq_conf_l (24bits) 对应频率29.8 Hz — 500 Mhz,频率分辨率为。
原理图
Components
- 模块包括一个24bit的计数器(pinc_conter) 用于提供相位tdata实现频率控制。计数器连接到IP核生成的DDS模块,提供IQ两路信号输出。
- 操作时序
- 仿真
部分代码
module top(
input clk,
input[23:0] freq_conf_l,freq_conf_h,offset_conf,
input mode,en,config_valid,dds_rst_n,cnt_rst_n,conf,
output[15:0] I_out,Q_out
);
reg[23:0] config_data_pinc;
wire data_tvalid,phase_tvalid;
wire[23:0] phase_tdata;
wire[23:0] cout;
dds_001 dds0 (
.aclk(clk), // input wire aclk
.aresetn(dds_rst_n), // input wire aresetn
.s_axis_phase_tvalid(config_valid), // input wire s_axis_phase_tvalid
.s_axis_phase_tdata(config_data_pinc), // input wire [23 : 0] s_axis_phase_tdata
.s_axis_config_tvalid(config_valid), // input wire s_axis_config_tvalid
.s_axis_config_tdata(offset_conf), // input wire [23 : 0] s_axis_config_tdata
.m_axis_data_tvalid(data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata({I_out,Q_out}), // output wire [31 : 0] m_axis_data_tdata
.m_axis_phase_tvalid(phase_tvalid), // output wire m_axis_phase_tvalid
.m_axis_phase_tdata(phase_tdata) // output wire [23 : 0] m_axis_phase_tdata
);
pinc_counter cnt0(
.clk(clk),
.rst_n(cnt_rst_n),
.conf_start(freq_conf_l),
.conf_end(freq_conf_h),
.c_out(cout),
.conf(conf),
.en(en),
.mode(mode)
);
always @(cout) begin
config_data_pinc <= cout; // 将 cout的值赋给 tb_config_data_pinc
end
always @(posedge config_valid) begin
config_data_pinc <= 24'd1000;
end
endmodule
完整的工程文件:
https://download.csdn.net/download/m0_55845774/90023444
标签:wire,DDS,tdata,tvalid,LFM,Verilog,conf,phase,axis From: https://blog.csdn.net/m0_55845774/article/details/143964229