前言:
DDS:直接数字频率合成,正弦波0-2pi周期内,相位到幅度是一一对应的(这里我们使用放大后的整数幅度)。
主要思路:
个人理解,FPGA不擅长直接做数字信号计算,那样太占用片上逻辑资源,所以需要事先建立 正弦波相位-幅度 表,然后在时钟下,通过相位累加并用相位作为地址索引来查询正弦波信号表。
正弦波相位-幅度 表:
存储的是量化的正弦波在一个周期的幅度信息(幅度的地址即相位)。
幅度的地址数目决定了相位量化的误差。
而存储每一个幅度的比特数决定了幅度的量化误差。
可以通过matlab以及Xilinx的IP核向导创建。
Verilog编写的DDS模块主要由三部分组成,
- 相位累加器,用于决定输出信号频率的范围和精度;
- 正弦函数模块,用于存储经量化和离散后的正弦函数的幅值;
- 查表模块,对相位累加器的输出地址查表。
两种方法可以改变输出信号的频率:
- 改变查表寻址的时钟频率,从而改变输出波形的频率。
- 改变寻址的步长来改变输出信号的频率。
步长即为相位增量。