刚上手DDS
dds原理:
仿真结果
使用四个DDS产生了四路信号,其中一个是每隔1000clk就增加一个二分之派的相位(红色圈),其他三路是相位依次增加了二分之派(粉色圈),并且每个一段时间就切换了频率,算是把频率和相位都尝试了
IP核设置
第一路信号使用的IP核:
1. Configuration Options
没研究,保持默认
2. 系统时钟
输入的100MHz的时钟
3. 通道数量
一个DDS产生的一个信号
4. 操作模式
没研究,默认
5. 参数选择:Hardware Parameters、System Parameters
选择Hardware Parameter时,可以在IP核中或者程序中输入频率控制字PINC来确定,我使用的是Hardware Parameter的格式,后边会说到如何设置
选择System Parameters时,输出频率可以在IP核中直接输入。(这个模式还没用过)
6. Noise Shaping
默认
7.Hardware Parameters
默认,后续会用到Phase Width这个参数
选择Hardware Parameters后出现的选项,后边会用到Phase Width计算
1. Phase Increment Programmability
这是关键的参数,涉及到输出信号的频率的计算,输出频率是通过这个值得到的,如下计算公式:
f_out是输出频率,f_clk是时钟频率,△θ就是Phase Increment ,这是频率控制字PINC,B_θ(n)是Phase Width,在上一页显示是16位,比如:
设置PINC为66,f_clk是100M,Phase Width为16,那f_out则为0.1M
这里的设置方式有三种,Fixed是固定的(没试过),Programmable是可以在程序中输入或者IP里写死,这个写死的数据也是默认的数据,即使valid没有拉高跑出来的就是这个数的波形;最后一个是Streaming,这个和Programmable的区别是输入数据的通路不一样,使用Programmable是config通道,Streaming是phase通道,这个我也没搞清楚是啥意思?????听大哥说,Programmable比Streaming采样慢(我看一下IP核的手册再来补充!!!!!)
2. Phase Offset Programmability
相位偏移值,这个和信号的相位有关,相位的计算公式如下:
POFF:相位,单位就是角度,范围是0-360
phase:相位控制字的值,和PINC相同,programmable格式下可设置默认的数值
phase_modulus:相位系数,
3. 输出的数据
我这里是选择的sin和cos都输出,输出的位长是32位,低16位是cos,高16位是sin
4. Polarity
默认值
5. Implementation Options
默认值
1-4. AXI Channel Options
还没用到这些,保持默认值
5. Latency Configuration
保持默认
6. Control Signals
选中了 ARESETn,因为使用了 4个DDS,使用同一个复位信号,可以使四路信号同步
其他三个IP核设置都一样的
工程代码
【免费】使用四个DDS生成四路信号,每个信号相位增加二分之派,其中一路信号每个1000clk频率会发生改变资源-CSDN文库