DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2225|回复: 1
打印 上一主题 下一主题

[待整理] 基于VXI总线的四通道智能化任意波发生器的研制

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 10:04:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于VXI总线的四通道智能化任意波发生器的研制

摘要:介绍了一种基于VXI总线的四通道智能化任意波发生器及波形调制模块。本模块采用DSP+FPGA实现智能控制,应用先进的DDS(直接数字频率合成器)技术产生任意波,输出波形可加载波进行调制;本模块具有四个独立的通道,相互之间进行电气隔离,可输出幅度连续可调的电压和电流信号。
VXI总线是VMEbus extensions for Instrumentation的缩写。VXI主机箱有13个插槽,其中,零槽控制器为系统的管理者。VXI模块根据其本身的性质、特点和所支持的通信规程可以分为寄存器基、消息基、存储器和扩展模块四种类型。每个模块的地址空间有A16、A16/A24和A16/A32三种类型。
本文介绍利用DDS(直接数字频率合成器)技术实现具有任意波发生以及调幅功能的模块。与传统的频率合成技术相比,DDS技术具有很多优点:频率切换时间短、工作频率范围宽、频率分辨率高、相位变化连续和容易对输出信号实现调制等。一些公司先后推出了各种各样的DDS专用芯片,这些DDS专用芯片为电路设计提供了很大方便,但是并不能满足所有要求。例如,在实现调频及调幅等复杂功能时,利用现有的DDS专用芯片就会很不方便。利用可编程逻辑器件(CPLD)或现场可编程门阵列(FPGA)实现DDS具有很大的灵活性,能够很好地满足电路设计要求。
1 DDS基本原理

DDS在基本原理框图如图1所示。它主要由标准参考频率源、相位累加器、波形存储器、数/模转换器、低通平滑滤波器等构成。其中,参考频率源一般是一个高稳定度的晶体振荡器,其输出信号用于DDS中各部件同步工作。DDS的实质是对相位进行可控等间隔的采样。
相位累加器的结构如图2所示。它是实现DDS的核心,由一个N位字长的加法器和一个由固定时钟脉冲取样的N位相位寄存器组成。将相位寄存器的输出和外部输入的频率控制字K作为加法器的输入,在时钟脉冲到达时,相位寄存器对上一个时钟周期内相位加法器的值与频率控制字K之和进行采样,作为相位累加器在此刻时钟的输出。相位累加器输出的高M位作为波形存储器查询表的地址,从波形存储器中读出相应的幅度值送到数/模转换器。
当DDS正常工作时,在标准参考频率源的控制下,相位累加器不断进行相位线性累加(每次累加值为频率控制字K),当相位累加器积满时就会产生一次溢出,从而完成一个周期性的动作,这个周期就是DDS合成信号的频率周期。输出信号波形的频率为:

显而易见,当K=1时输出最小频率,即频率分辨率为fmin=fc/2N。式中,fout为输出信号频率;K为频率控制字;N为相位累加器字长;fc为标准参考频率源工作频率。
2 波形发生器模块的实现
2.1 硬件部分
波形发生器模块结构框图如图3所示。
硬件主要可分为总线接口、DSP及逻辑控制电路、四通道DDS波形发生及调制电路、信号调理和输出接口等几部分。其中,零槽控制器与DSP之间用双口RAM作为通讯中介,双口RAM采用IDT709289L,其容量为64K×16Bit。
根据零槽控制器和模块交换信息的特点,本模块采用寄存器基的A16/A24的操作模式,数据为16Bit。在A16的寻址方式下,每个模块都具有一组配置寄存器,系统可以通过访问这些寄存器来获得器件的种类、型号、生产厂家、地址空间及存储器需求等。在A24模式下,零槽控制器可为一个模块配置的存储空间,最大为256n×2 23-m,其中,n在A32模式下为1,在A24模式下为0,m为器件型号寄存器高四位所定义的数值。在本模块中,m取值为6,存储器地址空间为128Kbyte。总线接口采用ALTERA公司的EPM3256A实现。板内接口逻辑和所有控制逻辑均采用Verilog硬件描述语言完成。
接口电路中的双口RAM用作命令、参数和数据传输,分为命令参数区和数据区。双口RAM被均分为16页,每页为4K×16Bit,前15页作为自定义的波形传输区,第16页为命令参数区。双口RAM的采用使模块的设计相对于VXI系统而言具有很大的独立性,从而使波形发生电路能够方便地移植到其它总线上。
板内主控CPU芯片选用了TI公司的TMS320F206。它主要起智能控制作用,接收通过VXI总线发来的各种命令,然后分析命令,执行命令,协调模块各部分的工作。与非智能模块相比,本模块具有明显的优越性。除了自定义波形以外,零槽控制器只需向模块发简单的命令和参数,DSP就能完成所有的功能。这样就大大减少了上位机和控制器的时间开销,使它们有更多的时间处理其它事件,有利于保证整个VXI系统可靠、协调地工作。
DSP外扩数据存储器包括一片IDT709289L和四片IDT7025S,IDT9289L的每一页映射到DSP数据区0x7000~0x7FFF,用于接口电路,页面的切换用DSP的I/O译码控制。4个IDT7025S均映射到DSP数据区0x8000~0x9FFF,分别用作四路DDS的波形存储器,4个IDT7025S的片选由DSP进行控制。DSP相关的译码及控制电路用一片EP1K10来实现。


图3


    单个通道DDS波形发生及输出部分功能框图如图4所示。
每通道的累加器及逻辑控制电路均采用一片EP1K30,用于实现累加器和步长控制字寄存器并完成板上地址译码、两级DAC控制、波形抖动补偿以及本通道的继电器控制等功能。累加器字长32位,时钟基准源频率为DSP输出频率的两倍频。第一级DAC用于波形的产生,第二级DAC用于控制输出幅度和波形正反相,并对第二级DAC输出进行了平滑滤波和放大处理。
根据系统的性能要求,输出端采用了电压隔离放大器,与总线隔离,并且四个通道各自独立。本模块总共有一个数字地和四个模拟输出地。这样,既可以保证VXI系统和其它通道的安全,又减少了模块负载和VXI系统的相互干扰。
波形数据存储器IDT7025S被等分为A、B两页,可以实现不同波形之间的无抖动切换,每页为4k×16bit。当DDS开始工作时,DSP先锋主A页写入波形数据,并在DSP的控制下产生波形;当要切换到另一种波形时,只需往B页写入另一种波形的数据,将32位累加器所产生的地址(累加器高12位)切换到B页即可。这样,可实现幅值和相位均连续的波形无抖动切换。
每个通道采用两级12Bit DAC,它们均设置为双极性电压输出。第一级DAC的参考电压源可以接内部基准或外部载波,第二级DAC的参考电压源可以接内部基准、外部载波或第一级DAC电压输出。通过对两级DAC所接参考电压源的不能设置(通过继电器进行切换),可以分别实现如下功能:
(1)用作直接输出,第二级DAC的参考电压源接内部基站。第二级DAC电压输出为:V2out=(Din2-2048)/2 12,可通过输入不同的Din2控制直流输出幅值和正负极性。

    (2)用作函数发生器,第一级DAC参考电压源接内部基,第二级DAC参考电压源接第一级DAC电压输出,波形存储器存放不同函数波形数据可输出不同的函数波形。此时,第一级DAC输出电压为:V1out=Vref×(Din1-2048)/2 12,其中,Vlout为第一级DAC双向输出电压,Vref为DAC参考电压源,Dinl为第一级DAC输入数据。在这里Vref为常值2V,式中只有Dinl为变量,Din1对应波形存储器中4096个波形幅值数据(一个周期)。当波形数据以500kHz的速率依次装载到DAC时,由公式(1)得DAC输出波形的频率为:fout=K×(10 6/2 33)。第二级DAC输出电压为:V2out=Vlout×(Din2-2048)/2 12,其中,V2out为第二级DAC输出电压,Din2为第二级DAC输入数据。
(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文件即可供系统调用。

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系统具有更优良的性能。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-27 15:04 , 耗时 0.093980 秒, 20 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表