实现函数信号发生器有两种方法。
1:采用外部DDS时钟+sdram+da的方法,需要PC将波形点下载到FPGA,然后控制DDS生成所需的时钟。其优点是实现简单,缺点是不能快速产生波形。同时,在低频情况下,性噪比不是特别好。
2:采用FPGA+DA的方法。这种做法要复杂得多,其中安捷伦的信号源就是这样,这里重点是这种实现方法。
1):正弦波可以通过FPGA内部的DDS或Cordic算法来实现,这取决于FPGA资源的需求。
2):方法是实现第二个困难的部分。由于DDS误差的积累,简单等于或不等于的方法会产生很大的相位抖动,即累加到倍数或小数部分,所以这部分需要算法处理,最简单的算法是差值处理。
3):三角波/斜波采用方波算法后,找出两条折线即可实现。
4):脉冲产生,这部分是最困难的部分,必须根据方波拟合公式来满足,比例、上升边缘、下降边缘、脉宽等参数。
5):pn码,这个比较容易实现,m序列可以很好的产生。
6):高斯带限噪声可以先生成白噪声+滤波器的方法。滤波器系数由matlab产生,带宽可以通过降低clk来降低。
7):任何波发生器都可以通过PC下载到FPGA内部的存储器,插值算法可以率。