碎碎念
动动手指,关注公 众号并加星标哦
(1)
在杨博课程的第四讲中,基于DDS中的部分理论,产生一个4.08MHz,占空比不是50%的脉冲。
之所以说是部分,因为从程序来看,主要是基于相位累加器的溢出得到的脉冲,暂时没有用到DDS中的波形数据表和D/A转换器。
(2)
DDS的理论,也不只是用在FPGA中,比如ADI的网站上,就有很多DDS系列的产品[1]。
在文献[1]中,给出了一个类似上图的DDS的架构,相对来说,稍稍笼统一点点。
从上面DDS主要由3部分组成,分别是相位累加器,相位幅度转换和DAC。
正弦波,在一个周期里面,虽然幅度的变化不是线性的,但是相位是从0~360度线性增加的[1]。
假设相位累加器的位数为N,也就是说,相位累加器可以存储2^N个数,那么,360°的相位,可以被分成2^N份,每一份之间的间隔为360度/(2^N)。
再假设频率控制字为M,也就是说,也就是说,相位累加器的值,是以M为步进变化的。
而变化的时候,都是以REF CLOCK来驱动的,也就是说,每隔1/fc的间隔,相位就变化M*360度/(2^N)。
由于dθ/dt=2*π*fout,所以:
把两边的2π约掉,就可以得到DDS中的频率计算公式:
(3)
DDS工作在数字域,在更新完频率控制字后,输出的频率就相应改变,而不像锁相环那样,需要环路稳定,因此跳频速率高[1]。在文献[1]中,有提到,ADI的DDS跳频速度主要取决于控制寄存器的数值改变所需要的时间。
同时,如果N很高的话,DDS的频率分辨率会很高[1]。以下段落来自于文献[2]。
(4)
最后,要把数字变成模拟输出的话,需要用到DAC。
所以,DDS的输出幅度会随频率的增加而减小[1]。
参考文献:
[1] ADI-DDS常见问题解答,可扫下载。
[2] https://ez.analog.com/cn/other/f/forum/55969/adi-dds-pll