跳转到内容

数字电路/DDS

来自维基教科书,开放的书本,开放的世界

一个直接数字合成器 (DDS) 允许创建频率由数字控制的周期性波形。

DDS 输出的频率与电路使用的石英的稳定性相同。频率步长可以非常小,频率值范围可达时钟频率的一半。

DDS 可用于实现函数发生器或振荡器,并将其用于更复杂的电路中,例如混频器、调制器和锁相环。

DDS 是一个自由运行的计数器。当计数器达到最大值时,它会折叠回零。

DDS
DDS

电路输出可以是三重的

  • 计数器输出提供可编程频率的锯齿波信号
  • 计数器 MSB 提供具有相同频率的二进制信号
  • 将锯齿波输出视为相位信号,可以计算三角函数并提供正弦或甚至正交正弦和余弦输出

正弦和余弦值传统上是通过 ROM 或查找表 (LUT) 获得的。但是,CORDIC 运算符计算这些函数的精度相同,同时硬件成本大大降低。

工作原理

[编辑 | 编辑源代码]

如果计数器在每个上升沿递增 1,则其形状将是一个周期为

的锯齿波,其频率为

如果计数器在每个上升沿递增,它将计数 倍快,其频率为


输出信号

[编辑 | 编辑源代码]

计数器本身提供锯齿波信号。计数器 MSB 提供方波信号。将锯齿波视为相位信号可以产生正弦波输出。正弦函数可以通过 CORDIC 运算符进行计算。

下图显示了 DDS 的时间信号。

方波和正弦波的傅里叶变换在下图中给出。

正弦波给出两个蓝色的峰值,正如预期的那样。方波是周期性信号,只有奇次谐波。

奇数步长

[编辑 | 编辑源代码]

前面的图像是使用一个很好的步长值:16 制作的。当步长值不能完全整除计数器范围时,锯齿波的齿会更加参差不齐,方波输出会显示一种抖动:其平均频率是所需的频率,但信号边沿会移到最接近的活动时钟边沿。

下图显示了具有奇数步长的 DDS 的时间信号。

方波和正弦波的傅里叶变换在下图中给出。

正弦波仍然是一个纯音。方波显示出更多的频率成分。

DDS 电路可以在 FPGA 等可编程电路中非常有效地实现。它由一个计数器组成,后面跟着一个从计数器输出计算正弦的模块,该输出被视为相位。正弦的计算最好使用 CORDIC 算法进行。

DDS 的 VHDL 源代码 可以在 opencores 上找到。这种实现更喜欢使用查找表而不是 CORDIC 来计算正弦函数。

华夏公益教科书