基于VXI总线的四通道智能化任意波发生器的研制
(3)用作自定义波形发生器,第一级DAC和第二级DAC的设置为(2)所述,不同的是波形存储器的内容。零槽控制器按一定的规约向双口RAM(IDT709289L)的前15页写入自定义的波形数据,DSP亦按一定的规约取出数据并送往指定通道的IDT7025S,IDT7025S的A和B两页进行交替切换,从而连接输出自定义波形。
(4)外加载波进行调制,第一级DAC参考电压源接外部载波,第二级DAC参考电压源接第一级DAC电压输出。外加载波为正弦信号Vsin(αx+θ) ,其中,V为载波最大电压值,α为自变量x的系数,θ为初始相位。第一级DAC电压输出为:Vlout=Vsin(αx+θ) ×Dinl/2 12,这样即实现了载波的幅度调制。第二级DAC用来控制整个幅度,其输出电压V2out=Vsin(αx+θ) ×Din1/2 12×(Din2-2048)/ 2 12,Din2为第二级DAC的输入数据。
(5)载波直接输出,只需第二级DAC的参考电压源接外部载波,第二级DAC电压输出为:V2out=Vsin(αx+θ) ×(Din2-2048)/2 12。
由于隔离放大器有一定的输出噪声,所以把信号放大器放在隔离放大器之前,低通滤波器放在隔离放大器之后,这样,既避免把隔离入大器的噪声放大,又有效地进行了平滑滤波。
电压输出采用功率运放OPA445进行放大,实现±12V输出。而电流输出则采用电压/电流转换器AD694实现,电流输出量程为0~20mA或4~20mA。
2.2 软件部分
软件主要包括两部分:DSP程序和VXI系统主机底层驱动函数及测试程序。
DSP程序采用C语言和汇编语言混合编程。控制部分的程序采用了汇编语言,提高了程序的效率。而数据的产生部分采用了实现起来比较简单的C语言,避免了采用汇编处理数据的复杂编程。
上位机测试程序采用NI公司的LabWindows/CVI编制。LabWindows/CVI基于C语言的编程环境,具有丰富的用户界面控件和VXI总线系统函数,使编程简捷方便。面向本模块的操作函数打包生成.dll文件即可供系统调用。
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 实现结果及分析
图5所示为输出频率为10kHz的方波、锯齿波、正弦波和三角波的输出波形,其峰-峰值均为24V。图6所示为调制波输出波形,10kHz外部正弦波作为载波信号,1kHz正弦波信号作为调制信号,峰-峰值为24V。图5和图6均由Tektronix公司的TDS210型示波器采样所得。
经实验所得的波形输出的频率分辨率为0.1%左右,显然大于理论的频率分辨率fmin=10 6/2 33=0.0001164Hz。经分析,系统误差包括:(1)相位截尾误差;(2)电路板布局布线因素带来的干扰而导致的误差;(3)标准参考频率源稳定性的影响带来的误差;(4)D/A转换器引入的误差;(5)波形幅值存储数据有限字长引入的量化误差。
本模块中实现的DDS相对于传统方法具有种种优点。由于DSP强大的数据处理能力和灵活的控制功能,再加上FGPA具有的高性能、高集成度等特点,使模块具有优良的性能。另外,DDS的这种实现方法有很大的灵活性,可以进行复杂的滤形调制。
由于DDS数字化实现过程的固有特点,如累加器相位截断、波形幅度量化和数/模转换器的非线性等特性,使得输出信号频谱的杂散性较大,这一点当输出频率较高时尤为突出。因此,在设计的过程中要采取一定的改进措施。如对DDS的结构加以改进、优化波形存储器的结构、选择合适的数/模转换器件、使用抖动注入技术等,尽量减少其杂散性,从而使DDS系统具有更优良的性能。