许多设备需要使用能产生高性能、高分辩率信号的低频信号发生器。本实例提供一种能产生0~1mhz频率的电路。你利用这种电路就可产生正弦波、三角波和方波,并能达到优于0.1hz的频率分辨率和优于0.1○ 的相位分辨率,从而就可以给精确的相干频率编程。这一特点对于数字调制设备和频率调谐设备来说都是很有用的。该电路使用adμc381和ad9834来产生所需的频率(图1)。利用pc或基于unix的工作站来给微控制器adμc381编程,然后再通过微控制器,利用一个三线串行接口来对ad9834编程。接口的字长为16位。
图1 dds芯片和微控制器共同构成一个多波形信号发生器对ad9834编程,为的是利用这种dds(直接数字合成)体系结构来提供正弦波、三角波和方波三种输出信号。ad9834芯片利用片上28位相位累加器、正弦系数rom和一个10位d/a转换器,可起到nco(数控振荡器)的作用。通常考虑的振幅形式为a(t)=sin(ωt)的正弦波。这种正弦波的振幅是非线性的,因此难以产生。另一方面,正弦波角信息则完全是线性的,也就是说,相位角在每个单位时间内转过的角度是固定不变的。已知正弦波的相位是线性的,又已知基准间隔(时钟周期),就可以确定时钟周期内的相位旋转量:δ相位=ωdt;ω=δ相位/dt=2πf,f=(δ相位×fmclk)/(2π),式中,dt=1/fmclk,fmclk为主时钟频率。
你只要知道相位和主时钟频率,就能利用上述这一公式产生各种输出频率。相位累加器提供28位线性相位。输出正弦波的振幅系数存储在正弦系数rom中。dac将正弦波变换成模拟域。如果对rom旁路,则ad9834就可输出三角波形,而不是输出正弦波形。ad9834也可输出方波波形。图2示出了该电路输出的各种波形。如图1所示,iout引脚(即引脚19)可输出正弦/三角波形,sign_bit_out引脚(即引脚16)可输出方波。你只要给频率寄存器写入信息,就可对dds编程,于是ad9834的模拟输出为:fout=fmclk/288×(频率寄存器字)。
图2 正弦波(a)、三角形(b)和方波(c)三种波形均可从图1所示的电路中获得。这三种500khz波形全都使用50mhz采样频率。dds的输出信号具有28位分辨率,所以可达到0.1hz的有效频率步长,最大可能达到大约1mhz。图2示出了三种典型波形输出。要用2个相位寄存器才能达到12位相位分辨率。这两个相位寄存器可使信号发生如下相移:相移=2π/4096×(相位寄存器字)。
50mhz晶体振荡器为dds提供基准时钟信号。dds的输出级是一个以外部电阻为负载的电流输出dac。一个200ω的电阻可产生所需的峰-峰电压范围。dds的输出端是通过电容器c1实现交流耦合的。这种micro converter内含两个片上12位dac。dac1通过r5改变电流,从而可通过fsadjust引脚调整dds的满刻度电流。控制dds dac满刻度电流的公式是:iout(满刻度)=18×i×r5。dac、micro converter的内部基准和运放2用来对dds的输出电压进行失调控制。你可对达到±10v的这一直流失调电压进行编程,分辨率为10位。当r1=r2,运放2的增益为8时,运放2的输出为:vout=[dac输出 - (vref/2)]×8,从而可获得±10v的失调范围。
图3 该频谱图示出了3.57mhz信号的基波、二次谐波和三次谐波电阻器r6 ~ r9用来控制运放3的增益。运放3的增益视上述电阻的接入与断开情况而定,而上述电阻的接入与断开则是利用micro converter上的rdrive引脚来实现的。这一操作可使可编程有效输出振幅达到±10vp-p。因此,该电路可输出编程的正弦波和三角波,其中包含直流失调电压,并能设定大约±10v的峰-峰振幅。sign-bit-out引脚上的方波输出信号具有0~5v的振幅。低频工作时,低通滤波器通常用来滤除基准时钟频率、寄生信号和其他镜像信号。
对于输出信号需要放大的应用来说,你应在增益级之前使用窄带滤波器滤除不希望有的噪声。一个三阶滤波器足以滤除大多数这种无用噪声。图3示出了输出信号的典型频谱图。该电路应用范围很广,从信号波形产生到数字调制,不一而足。你可将该电路用于扫描设备以及将频率作为激励信号来确定电路谐振的谐振设备。另一种应用是用作dll系统的基准振荡器