基于FPGA的任意波形发生器设计与实现 下载本文

30

基于FPGA的任意波形发生器的设计与实现

外调制采集模块USB2.0总线接口电路DDS部分控制部分上位机FPGA时钟部分调制部分高速DAC低通滤波器一低通滤波器二放大衰减电路偏置电路外部晶振电源图3.1 任意波形发生器总体框图

任意波形发生器模块硬件电路由下面个五部分组成: (1)USB接口电路 (3)控制部分 (4)模拟输出通道 (5)外调制输入通道

完成与PC机之间的通信 波形合成,产生各种初始波形 控制各个部分有序工作

波形处理,将DDS产生的初始波形转换成用户需要的模拟波形

实现外部信号调制功能

其中数字波形合成部分是整个电路的核心部分,所有波形的生成都与它有关;控制部分完成输出波形的频率、相位及调制方式的控制,并控制模拟输出通道和外调制输入通道中的相关器件工作方式。这两个部分都是通过FPGA内部逻辑编程来实现的。模拟输出通道是设计中的难点,它位于波形发生的末端,包括D/A转换、低通滤波、幅度控制、电平调节、输出驱动,它的设计直接影响输出信号的质量。

从任意波形发生器的结构框图看出,波形发生器工作时,根据软件界面参数设置,先在计算机中生成波形数据,然后通过USB总线将数据写入波形发生器的波形存储器中,再将相应的频率值、相移值写入FPGA的控制器中,并将调制方式、低通滤波器、放大衰减、电平调节命令也写到FPGA中,然后由FPGA中的DDS部分来合成信号。

(2)数字波形合成部分

3.3 功能模块设计

3.3.1 FPGA电路

本设计选用的FPGA是Altera公司Cyclone II系列FPGA芯片EP2C5Q208C8。Cyclone II 系列器件[12]延续了第一代Cyclone系列器件的成功,提供针对低成本

第三章 任意波形发生器的硬件电路设计

31

应用的用户定制FPGA特性,支持常见的各种外部存储器接口和I/O协议,并且含有丰富的存储器和嵌入式乘法器,这些内嵌的存储器使我们在设计硬件电路时省去了外部存储器,节省了资源,而其硬件乘法器资源则非常适合用来实现高速DDS调制器。另外,Cyclone II 系列器件使用极低的1.2V内核电压,大大降低了芯片的功耗。在本文的设计中,FPGA对内主要实现DDS的功能,对外主要为ADC和DAC提供时钟,以及对外围器件提供控制信号和数据总线接口。 (1)时钟电路

由于ADC和DAC的工作时钟都是由FPGA来供给,而ADC和DAC的时钟频率是不一样的,因此应该先由外部晶振给FPGA提供一个时钟信号,由FPGA分频或者倍频再向外部提供工作时钟。具体电路如图3.2所示。

图3.2 FPGA时钟电路

EP2C5内部共有2个锁相环(PLL),作为锁相环的输入引脚共有8个,分别是CLK0~CLK7,其中CLK0~CLK3共享PLL1,CLK4~CLK7共享PLL2,这些引脚既可以作为单端输入,也可以作为差分输入。本设计采用的是单端时钟输入,不用的时钟引脚全部接地以减少干扰。另外DDS合成信号的质量跟时钟的质量有关,因此使用了75MHz高稳定度的有源晶振来为FPGA提供初始时钟,图3.2中电阻R201起串联阻抗匹配的作用,以减少时钟的反射干扰。 (2)下载配置电路

Cyclone II器件使用SRAM单元来存储配置信息,而SRAM作为易失性存储器,每次掉电其内部信息就会丢失,因此,Cyclone II器件每次上电都必须下载配置数据。Cyclone II器件支持多种配置方式,包括主动配置(AS)、被动配置(PS)和JTAG配置。考虑到JTAG配置每次都必须连接到计算机,通过计算机来下载配置信息,因此设计了两种配置电路:JTAG配置和AS配置。JTAG配置口在调试的时候使用,在调试完成后,可以将配置文件写入AS配置芯片,由AS方式来配置FPGA,这样就不用在每次使用任意波形发生器的时候都通过人手来下载配置信息。

本设计所使用的配置芯片是EPCS1,这是Altera公司推出的为其FPGA配套

32

基于FPGA的任意波形发生器的设计与实现

使用的一款串行配置芯片。由于采用了非易失的闪存(flash memory)结构,因此掉电之后数据得以保存。EPCS1具有1M bits数据容量,支持压缩存储,而EP2C5的配置文件最大约1.2Mbits,压缩之后完全可以存入EPCS1,因此选用EPCS1完全能满足要求。EP2C5的下载配置电路

[12]

如图3.3所示。

EP2C5EPCS1JTAG下载口AS下载口图3.3 EP2C5下载配置电路

图3.3中,有两个地方需要注意,第一:nSTATUS、CONF_DONE、nCONFIG三个引脚必须用10KΩ电阻上拉到VCC(本设计中VCC取3.3V),否则将出现无法对FPGA进行配置的情况。第二:MSEL0和MSEL1是配置方式选择引脚,其选择方式如表3.1所示。MSEL0和MSEL1即使不用也不能悬空。由于EPCS1只支持低速AS配置,所以设计中将MSEL0和MSEL1接地。另外,JTAG配置具有最高优先权,在使用JTAG方式进行配置的时候,其他方式都将被屏蔽。

表3.1 Cyclone II配置方式选择

MSEL1 0 0 1 - MSEL0 0 1 0 - 配置方式 低速 AS (20MHz) PS 高速 AS (40MHz) JTAG

第三章 任意波形发生器的硬件电路设计

33

3.3.2 D/A转换电路

在第二章的分析中曾经提到在高频电路中,D/A转换的瞬间毛刺、非线性和数字噪声已经成了影响DDS性能的主要因素。因此在选择D/A转换芯片时除了字长和转换速度外,还应该将D/A的非线性和噪声特性也纳入我们的考虑范围之内。在综合各方面因素之后我们选择了AD公司的AD9740,它是AD公司TxDAC系列的第三代高性能产品,其基本特性[13]如下: (1)10位精度;

(2)支持单端CMOS时钟输入,最高转换速率高达210MSPS;

(3)采用了段电流源结构和特有的开关技术,具有优异的积分非线性、差分非线性性能和无杂散动态范围;

(4)数据输入支持二进制补码和直接二进制码;

(5)采用差分输出方式,有效抑制各种共模成分,如噪声、失真等,输出满量程电流在2mA到20mA可调;

(6)内部集成了带有温度补偿的1.2V带隙参考电压;

(7)低功耗:3.3V供电时消耗功率仅135mW,进入掉电模式后功耗进一步降低到15mW;

(8)有多种封装可供选择。 其内部功能框图如图3.4所示:

图3.4 AD9740内部功能框图

AD9740内部集成了输入数据锁存器,在时钟的上升沿,数据会被打入锁存器,相应的模拟信号就会更新。管脚FS ADJ外接的电阻RSET是差分输出电流满量程调节电阻,其跟输出电流之间存在如下关系:

IOUTA?(DAC_CODE/1023)?IOUTFS 式(3-1)

IOUTB??(1023?DAC_CODE)/1023??IOUTFS 式(3-2)

34

基于FPGA的任意波形发生器的设计与实现

其中DAC_CODE是十进制表示的输入数据,IOUTFS为满量程输出电流,其值为

IOUTFS?32?(VREFIO/RSET)。在两个输出端都接有负载电阻RL的情况下,有:

VOUTA?IOUTA?RL 式(3-3) VOUTB?IOUTB?RL 式(3-4)

那么两个输出端的差分电压为:

VDIFF?VOUTA?VOUTB

?(IOUTA?IOUTB)?RL

?R2?DAC_CODE?1023?32L?VREFIO 式(3-5)

1023RSETAD9740的电路图如图3.5所示:

图3.5 AD9740电路连接图

AD9740采用了模拟、数字、时钟部分单独供电的方式,以减小各部分的干扰。DB0~DB9为数据输入端,其中DB9为最高位,DB0为最低位,他们通过串联一个22Ω电阻连接到FPGA;REFIO为参考电压输入端,由于设计使用内部参考源,因此外接一个0.1uF的电容到地减少电源噪声;FS ADJ为满刻度输出电流调节引脚,R81取2KΩ, 那么根据IOUTFS?32?(VREFIO/RSET),满刻度输出电流约19.2mA;CLOCK+和CLOCK-为时钟输入引脚,它们既可以作为差分时钟输入引脚,也可以作为单端时钟输入引脚,当作为单端时钟输入引脚时,CLOCK+接输入时钟,CLOCK-接地;CMODE为时钟工作模式选择引脚,当CMODE接高电