基于 AD9851 的信号发生器
最近几年的电子设计大赛,差不多每年都考了 DDS 的设计。本人曾经也调试过
DDS,但走了一些弯路,在这里写下一些心得,希望能对初调者有点帮助。下
面将有电路图,以及详细的代码。
学过 FPGA 的同仁们,应该对 DDS 的原理就会有很好的理解了。用 FPGA 是
很容易把一个简单型的 ad8952 烧出来的!其实原理相当的简单,无非就是由
相位累加器,相位调制器,正弦查找 ROM,DAC 构成。通过改变相位累加的
增量就很容易的改变的输出的频率了。
如果相位累加器(频率控制子)的位宽为 N 位(ad9851 的 N=32 位)这就
意味着把一个周期的正弦波形离散成了 2 的 N 次方个点,把这些点的幅值存在
一个 ROM 中就构成了正弦查找 ROM。如果系统时钟为 Fclk,即把 Fclk 分成
了 2 的 N 次方份。如果此时的相位累加增量为(频率控制字)为 B,那么此时
的输出频率应为 Fout=(B*Fclk)/ N。显然 B=1 时其最小值为 Fclk/ N。B 的
值也不能太大,否则会输出失真波形。Fout 的最大值理论上应该至少小于
Fclk/4。所以要想提高输出频率的最大值,就得靠提高系统的外部时钟 Fclk。
下面结合本人的代码来具体讲讲 AD9851 的应用。
AD9851 的一些具体介绍这里就不说了。其 DATASHEET 上都说的很清
楚。若看不懂 E 文,可以发 E_M 给我,我有中文资料。AD9851 要写 40 位的
控制子。其中前面 32 位就是频率控制子了。后面是有 1 个 6 倍频使能位,1 个
logic0 位,1 个 POWER_DOWN 位,还有 5 位相位模式字。这里我们只解决
频率控制问题。也就是说在代码中本人只写了,32 位的频率控制子,还有一个
6 倍频使能。其余的剩下几位由于没用到也就默认写为 0 了。AD9851 可以用
并和串俩中方式写入控制子。
其串行发送方式的控制子表如下:
本人主要将用串写控制子的时序与代码。其并的方式的代码也会给出。硬
件电路图网上有很多资源,自己去找找!
主要看看代码吧:
/*************************************************************
ad9851 串口驱动程序
2007-8-28-------------water
评论1
最新资源