最近为了在FPGA上实现载波同步学习了DDS,尽管最终由于误差太大的原因没有用上,但是为了不忘记如何配置DDS IP核。还是写了这篇文章。 其中为了调用IP核参考了这篇大佬的文章(写的非常好) https://www.hackster.io/whitney-knitter/xilinx-dds-compiler-ip-tutorial-on-the-ultra96-f820dbwww.hackster.io/whitn...
上述设置生成的IP端口如下,输入端口为时钟复位信号,输出sin cos和phase值。 登录后复制dds_compiler_0 your_instance_name ( .aclk(aclk), // input wire aclk .aresetn(aresetn), // input wire aresetn .m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid .m_axis_...
config_tdata(s_axis_config_tdata) ); dds_compiler_0 UDDS ( .aclk(aclk), // input wire aclk .s_axis_phase_tvalid(s_axis_phase_tvalid), // input wire s_axis_phase_tvalid .s_axis_phase_tdata(s_axis_phase_tdata), // input wire [31 : 0] s_axis_phase_tdata .s_axis_...
1.2、DDS-IP 核配置 step1:在Ip-catalog中搜索dds,找到 DDS Compiler。 step2:设置PINC/POFF的数据形式,Fixed-Programmable-Streaming。 三种模式的区别如下: Fixed是固定相位增量,IP核运行过程中不可更改,即输出的信号频率固定不变; Programmable可编程,可在DDS运行过程中随时写入频率控制字改变输出波形的频率,用于偶...
dds_compiler_0 UDDS ( .aclk(aclk), // input wire aclk .s_axis_phase_tvalid(s_axis_phase_tvalid), // input wire s_axis_phase_tvalid .s_axis_phase_tdata(s_axis_phase_tdata), // input wire [31 : 0] s_axis_phase_tdata ...
1、首先创建一个工程文件,然后点击IP Catalog,直接在搜索框中搜索DDS,创建DDS IP核。 2、 然后双击DDS Compiler,进行DDS IP核的配置界面。 DDS IP核可以配置成三种模式,分别是相位累加器和SIN/COSLUT模式、仅相位产生器模式、仅SIN/COSLUT模式;这里我们选择第一种相位累加器和SIN/COSLUT模式。
(s_axis_config_tdata) ); dds_compiler_0 UDDS ( .aclk(aclk), // input wire aclk .s_axis_phase_tvalid(s_axis_phase_tvalid), // input wire s_axis_phase_tvalid .s_axis_phase_tdata(s_axis_phase_tdata), // input wire [31 : 0] s_axis_phase_tdata .s_axis_config_tvalid(s...
如果操作模式选择标准模式,如下IP 核定制页面: 频率分辨率可以这样计算: 我们先给定需求的相位宽度,又已知系统频率值,根据公式就可以算出频率分辨率;将频率分辨率代入IP核定制页面,即可自动得到相位宽度。 其实从上式也可以直接推出相位宽度: 本例我们的系统频率为100MHz,如果想要相位宽度为16位,则频率 分辨率为: ...
我们先给定需求的相位宽度,又已知系统频率值,根据公式就可以算出频率分辨率;将频率分辨率代入IP核定制页面,即可自动得到相位宽度。 其实从上式也可以直接推出相位宽度: 本例我们的系统频率为100MHz,如果想要相位宽度为16位,则频率 分辨率为: 在IP核定制页面,如下图,我们输入频率分辨率的值: 查看相位宽度为16位...
always #1 aclk = ~aclk; initial begin #100; aresetn = 1'b1; end dds_compiler_0 dds_compiler_0 ( .aclk (aclk ),// input wire aclk .aresetn (aresetn ),// input wire aresetn .m_axis_data_tvalid (m_axis_data_tvalid ),// output wire m_axis_data_tvalid ...