直接数字合成
编程
在编程这一阶段里,电子控制器把数据载入至存储器中。数据的每一个单元是一个用来表示当前时刻信号幅度的二进制数。存储器中这些数据的排列(数组)构成一张振幅表,表示每一时刻当前波形的振幅。举个例子,在一张振幅表中,前一半的数全为0,后一半全为波形振幅的最大值(100%),这些数据就表示“方波”了。任何波形都可以通过简单地改变这些数据来产生。
运行
在运行这一阶段中,计数器(又称之为相位累加器)受频率参考源的指示,在每一个频率的上升沿或下降沿自增。相位累加器的输出(相位)通常就是数组中依次输出的各个数据。最后会被DAC依次转换成模拟波形。
为了产生周期波形,电路被设计成每一个参考频率周期的时间片读取振幅表中的一个数据。举个例子,如果参考频率是1MHz,而且振幅表中包含1000个数据,以自增1的方式读完整个振幅表需要1000 / 1 MHz = 1 ms,所以最后输出波形的频率为1/(1 ms) = 1 kHz。
要想使系统产生更高的输出频率,可以简单地增加相位自增速度,从而使计数器能更快地读完一遍振幅表。在上面的那个例子中,相位自增的幅度是1,所以如果自增的幅度设为2,则输出波形的频率将提高一倍。为了能较好地控制频率,可将标准的相位自增幅度设为10。这样微调输出频率。举个例子,如果将相位自增幅度提至11则会增加10%的输出频率。当将相位自增幅度减至9时,输出频率会相应地减小。为了获得更加精确的输出频率,需用计数器和DAC拥有较多的位数。
执行细节
实际执行中通常在32位的相位累加器和相位自增中设置查找表在大小为2的n次方。通常计数器的高位8或10比特用作查找表的索引(查找表的大小通常为256或1024)。剩余的低位比特可被作为参数或索引,用来窜改查找表中邻近的数据。经常用线性插值法来实现。频率源通常由一个1MHz至100MHz的晶振产生。 最高频率产生的方式取决于查找表的大小和(频率源的)频率。为了能产生清晰的波形,(查找表中)必须拥有最少的采样点。如果相位自增幅度太大,计数器阅遍查找表太快从而导致输出信号的失真。 DDS的实现有软件与硬件两种。由于DDS的实时性,软件的实现通常只用于声音频率的产生。
参考
论文
- Tierney, J., Rader, C.M., and Gold, B. "A Digital Frequency Synthesizer," IEEE Transactions on Audio and Electroacoustics AU-19:1, March 1971, 48-56
图书
- Goldberg, Bar-Giora, Digital Techniques in Frequency Synthesis, New York: McGraw-Hill, 1996. ISBN 0-07-024166-X
外部链接
- Direct and Indirect Frequency Synthesis in the 0.5–20GHz Frequency Range (页面存档备份,存于) (Slides from a talk)
- Direct Digital Synthesis Primer (Viewgraphs) (页面存档备份,存于)
- Tutorial on Digital Signal Synthesis (Essay) (页面存档备份,存于)
- Ph.D. Thesis: "High-Speed Digital and Mixed-Signal Components for X- and Ku-Band Direct Digital Synthesizers in Indium Phosphide DHBT Technology"
- Another thesis on high speed DDS (French) (页面存档备份,存于)