基于FPGA的1GHz数据采集卡研制 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
摘要
目前高速数据采集在电子产业中的应用越来越广泛,尤其是在软件无线电和遥感,数字示波器、孔径雷达等需要解决大带宽信号的采集和处理的方面。
高速数据采集系统的要求包括具有高的数据采样速率和分辨率,大的模拟输入带宽和大容量存储设备等。
本文结合“瞬态高速运动目标测试雷达系统"对数据采集的要求,设计了采样速率为1Gsps的采集卡。
为了达到系统要求的采样速率,设计采用E2V公司的高速模数转换芯片AT84AD001,并通过三线串行接口设置使其工作在并行交错采样模式下。
使用大规模可编程逻辑器件(FPGA)作为系统时序和逻辑的核心,实现对高速数据的接收以及后续存储电路和USB2.0接口电路的控制。
存储电路部分选用4片镁光公司的大容量SDRAM实现对数据的缓存,并通过USB2.0接口芯片CY7C68013实现与上位机之间的数据交互。
另外,高速电路板的设计过程不同于普通的电路,设计时必须要对电源完整性和信号完整性进行全方位考虑,论文对电路板设计要注意的事项进行了讨论。
论文给出了数据采集卡调试验证的过程,并对其中存在的一些问题进行了分析和修正。
关键词:高速A/D采样;并行交替模数转换;异步FIFO;SDRAM;USB2.0
2高速数据采集卡及工作原理
行多通道采样技术,即并行时间交替(Time.interleaved)技术。
并行时间交替采样是对同一模拟信号直接输入到n片A/D(或者一个芯片的11个通道),A/D按照各自的采样时钟工作,n片A/D的采样时钟的相位差为360/n度,系统的采样率为n片(或n个通道)AJD的总和【10l。
下面结合本系统所采用的ADC芯片AT94AD001B详细阐述其工作过程:系统所用的AT84AD001B中含有两个独立的ADC转换器,时钟CLKO和CLKl的频率相同,相位差为360/2,即相差180度。
其中一路在CLKO的上升沿取样,采样点为奇数点;另一路在CLKI的上升沿取样,采样点为偶数点。
这样的采样速率与单路ADC相比就提高了一倍,但成本却相应的降低了。
C
c11f]f]f]f]f一
图2.2时间交替采样示意图示
并行时间交替采样技术虽然在理论上可以提高系统的采样速率,但是高速时钟的相位匹配,ADC通道之间的不一致等也会造成误差,它主要包括以下三种…】:
1)时间误差:是由非均匀采样引起的,原因是数据信号线不等长和时钟延迟导致了各个ADC通道的时刻不完全一致。
2)增益误差:由于各个ADC或一片ADC各个通道之间增益不一致而带来的误差。
3)偏置误差:这是由各个ADC或一片ADC各个通道基准电平不绝对一致引起的误差。
上述三种误差会严重影响ADC的性能,需要通过一定的后续数字处理方法进行校正才能获得最佳性能。
所以系统设计要注意的问题一是保证电路能产生
3高速数据采集卡总体设计
3高速数据采集卡总体设计
本设计结合“瞬态高速运动目标测试雷达系统"对数据采集的需求,提出了1Gsps数据采集卡的设计方案,硬件原理框图如图3.1所示:
计算机
图3.1系统整体架构
它主要包括电源管理模块,ADC采样模块,FPGA主控电路模块,SDRAM存储电路模块,USB接口电路模块。
电源管理模块负责给各个模块的电源供应;ADC采样模块包括模拟调理电路,采样时钟电路和AD变换电路,信号首先进入模拟信号调理电路,转化为ADC芯片能够采集到的信号形式;之后AD芯片在高速时钟电路产生的500MHz时钟的作用下,对外部模拟信号进行实时采样,由于方案选用的AD芯片内部有I和Q两个独立的通道,自带l:2的数据多路分离器和LVDS缓冲器,所以AD输出为4路8位的250MHzLVDS格式的数据流。
FPGA作为主控制芯片,利用串行收发器(SERDES)接收LVDS格式、250MHz速率的差分数据流,并且利用降速分流(DMIⅨ)模块,对数据流进行l:2的降速分流,变为8路125MHz的数据流。
由于缓存涉及跨时钟域的数据传输,125Mbps的数据流送入工作频率100MHz的SDRAM存储器之前需要用双端口异步FIFO进行速率匹配。
同样SDRAM送出数据至USB接口也需要由双端口FIFO进行速率匹配,另外,FPGA还完成USB传输接口的控制,通过上位机传输模块将接收的数据在电脑上存储或者显示。
系统信号流向如图3.2所示:
3高速数据采集卡总体设计
时钟电路和AD变换电路:
3.1.1模拟调理电路
模拟调理电路的作用一是对输入的传输线进行阻抗匹配,使AD的幅度满足要求,二是将单端输入转化为差分形式,提高其抗干扰能力。
本设计使用MACOM公司的射频变压器TP-101完成这项功能。
它是不平衡一平衡耦合变压器,输入输出阻抗都是50欧姆,ldB带宽的输入频率范围为500KHz-1.5GHz,引入的上升时间为0.18ns,典型插入损耗值为0.4dB,完全符合系统需求n引。
AT84AD001B的每个模拟输入端都有两个管脚,中间的管脚作为模拟差分信号的输入,而另一个管脚通过50欧的电阻接地来实现阻抗匹配。
原理框图如下:
图3.3模拟调理电路框图
3.1.2采样时钟电路设计
高频时钟的质量是影响AD变换性能的重要因素,高频时钟一般是无法用晶振直接产生的,需要用晶振及锁相环倍频电路来生成。
偏差(skew)和抖动(jitter)是衡量时钟性能的主要指标n引:偏差又称传输延时之差,指时钟信号理想变沿与实际变沿之差,它由时钟信号分布到系统各处的时延不一致造成的。
抖动是指时钟受到外部噪声或者串扰的影响而导致理想时钟边沿与实际时钟边沿的偏离的现象,这种变化是随机的。
设计选用了专门的锁相环芯片SY89421V来完成这项功能。
SY89421V是一种基于差分PLL技术的数字锁相环芯片n钉。
它的工作参考输入时钟频率是从30MHz到560MHz,频率输出范围20 ̄l120MHz,格式是LⅥ,ECL形式。
在SY8942lV的引脚当中,对N和对N ̄是参考时钟输入,可以接收单端或者差分信号,系统将其外接一个50M的有源晶振,作为产生时钟的
3高速数据采集卡总体设计
辑器件,集成度高,规模大,适合高速、高密度的数字逻辑电路设计应用场合。
本设计FPGA负责系统全部逻辑控制,它的任务包括:
(1):接收ADC芯片输出的高速数据流,并且完成三线串口的配置。
(2):SDRAM控制器的时序控制,完成数据的缓存。
(3):USB控制芯片CY7C68013的时序控制,完成数据到上位机的传输。
Altera公司的CycloneII,Stratix系列都可以实现上述功能,虽然Stratix系列拥有更高的性能,但是其价格确实昂贵,本设计在综合考虑成本的基础上选择了CycloneII系列的EP2C35F672C6,它不仅沿袭了Cyclone系列的低成本的产品定位,而且通过缩小硅片的面积,相较于ASIC低得多的成本在单片上实现复杂的数字系统,CycloneII比同类的其他FPGA提高了60%的性能,却降低了一半的成本1博J。
EP2C35的主要资源如下表:
表3.2:EP2C35F672c6逻辑资源概述
资源名称数目
LE33216个
M4K存储器块105个
总存储器空间483840bits
18×18乘法器35个
模拟锁相环4个
全局时钟网络16个
EP2C35F672C6的速度级别是同系列芯片最快的6,它采用FBGA(fme.1ineballgridarray,细排球栅阵列)封装,共有8个I/0Bank,475个可用I/0管脚,完全支持LVDS收发、USB总线接口和SDRAM存储器接口,满足数据采集卡的功能对接口类型的需要。
3.2.2I/0引脚的分配
EP2C35F672C6共有8个I/OBank,分别分布在芯片的四周,I/O内核采用1.2V供电,I/oBank可以根据不同的需要配置成3.3V或者2.5V供电。
本系统根据功能需求分块如下:Bankl和Bank2用3.3V供电,Bankl负责CY7C68013的控制接口,Bank2负责ADC的三线串口配置电路的接口。
Bank3和Bank4用2.5V供电,用于接收来自ADC的I通道和Q通道的LVDS数据。
Bank5,6,7,8用3.3V供电,用途是SDRAM存储器的控制。
如下图所示:
3高速数据采集卡总体设计
图3.9FPGA的AS和JTAG混合配置电路
3.2.4FPGA与ADC接口设计
本设计使用的模数转换芯片AT84AD001B的数字输出接口形式是LVDs(Low-VoltageDifferentialSignaling,低压差分信号)格式,这是一种低压摆的差分信号传输技术,它使得信号(峰峰值350mY)能在差分PCB线对或平衡电缆上以几百Mbps的速率传输,具有速度快,功耗低,抗干扰强的特点,因而得到了广泛的应用【19J。
CycloneII器件的所有BANK都支持LVDS,并且满足标准ANSI/TIA,EIA-644,利用双倍数据接EI(DDIO)寄存器时,LVDS接收器(receiver)支持的最大传输速率为805Mbps,LVDS发送器(transmitter)支持的最大传输速率为640Mbps。
LVDS标准不需要输入参考电平,但在输入差分信号中间要进行100Q的阻抗匹配,并且尽量靠近FPGA的LVDS输入端【20】。
典型的LVDS点对点应用如下图:
3高速数据采集’g-总体设计
箩”一蛳§e#№一孑
罗R钟·啪Dm搿蜀0嗍。
目渤口卜!趣孙聃—r—撂r;啦—函——吨卜。
阴伏l:2舶0Q。
拿,阳a毒,∞oj≯、
杪!
凿沿o..—西一一一酞。
^;。
#。
,∽兹
i敏醯。
端数&&《蠢螽l…#,.,,。
“。
,,.。
,;:燃≮事,i,磊荡a咖时基瓣
图3.10LVDS点对点应用
设计选取的FPGA芯片EP2C35F672C6有专门的通道收发LVDS逻辑兼容的信号。
每一个差分对都用p代表正信号,n代表负信号,在管脚分配和连接时要注意正负极性不要接反。
3.3SDRAM存储电路模块
3.3.1存储器选型
数字逻辑设计中常用的存储器类型包括I乙蝴,ROM,SRAM,FIFO,SDRAM等,这些存储器各有各的应用场合,各种数字存储器的性能特点f211见表:
表3.3:各种存储器特点比较
存储器类型特点
RAM,SRAM随机存储,速度快,但存储容量小,掉电后数据即丢失。
按照地址线
不同访问各单元数据。
RoM,EEPROM存储容量小,读取数据一般为12C总线形式,常用于专用芯片的固化和
上电寄存器的配置。
FIFO先进先出堆栈存储,无地址线,只有数据线。
有半满、满、半空、空
等标志信号,操作简单,但是容量很小。
异步FIFO常用做跨时钟域数
据缓冲。
SDRAI、僵,DDR大容量的动态随机存储器,读写速度高,支持突发式读写,但是控制DRAM复杂,需要定时刷新以保存数据。
本设计存储器的作用是完成高速大容量数据流的缓冲,所以要选择大容量的SDRAM存储器。
下面章节将介绍此种存储器。
3.3.2SDRAM介绍
3高速数据采集忙总体设计
表3.4:MT48LC32M16引脚概述
引脚IO方向功能概述
CLK输入时钟
CKE输入时钟使能,CKE为高,CLK
有效,否则无效
CS输入片选信号,低电平有效
RAs,CAS,WE输入命令输入,三个信号组合成
命令输入
DQML,DQMH输入输入输出使能信号
BAO。
BAl输入决定BANK的片选
AO—A12输入ACTIVE命令到来时:
A0-A12为ROW地址:
READ/WRIT命令到来时,
Ao^A9为COLI肿IN地址;
LOADMODEl汪GISTER命
令到来时,为命令字输入。
DQONDQl5双向管脚数据输入输出管脚
NC悬空
VDDQ,VDD输入3.3V电源输入
VSSQ,VSS输入地
其主要特性如下:
(1)PCI00及PCI33兼容。
(2)全同步,在系统时钟的上升沿触发。
(3)内部管道式操作,列地址在每个时钟周期变化。
(4)可编程的突发长度:l,2,4,8或者全页模式。
(5)自动预充电,自动刷新模式。
(6)64ms,8192刷新周期。
(7)LVTTL兼容的输入输出。
(8)3.3V电压供电。
3.3.3SDRAM与FPGA接口电路
通过上节对MT48LC4M3282的介绍,我们知道此款SDRAM是3.3V供电,LVTTL数据格式,是FPGA可兼容的信号形式,只要提供对应的FPGA块供电电压为3.3V
PLL锁相环电路倍频产生,其它信号都连接至FPGA的IO引脚即可。
3高速数据采集卡总体设计
考虑到FPGA有限的IO引脚和逻辑资源,设计每两片SDRAM复用一组倍频时钟,地址和控制线复用,而数据线分开。
这样四片SDRAM就被分成了两组,一组由FPGA的BANK5,6控制。
另一组由BANK7,8控制。
这种设计不仅使SDRAM的数据总线可以扩展为32位,而且大大节约了系统资源。
3.4USB接口电路模块
3.4.1USB总线及其接口芯片概述
USB(UniversalSerialBus,通用串行总线)以其即插即用和热插拔特性以及较高的传输速率,在推出之后得到了迅速发展,它的出现大大简化了计算机外围设备的连接。
目前USB2.0协议提出的总线速率高达480Mbit/s,可以满足大多数实际应用的需要。
USB插口的接线很简单,只有四根线组成,D+,D-是双向差分数据线,还有电源线和地线,当系统功耗低的时候,可以用USB电源线供电,由于本系统功耗较大,所以不能用USB电源供电。
USB技术的广泛应用也促进了USB接口芯片的发展,近年来一些公司纷纷推出了符合USB2.0规范的接口芯片,Cypress公司的EZ—USBFX2系列接口芯片CY7C68013A是一种通用的串行总线控制器,它完全符合USB2.0版本规范的要求,可获得高达480Mbit/s的USB2.0峰值速率。
同时其内置增强型8051微控制器和USB传输引擎,简化了USB的控制传输操作。
CY7C68013A芯片功能框图如下所示【卅:
图3.12CY7C68013内部结构框图
CY7C65013的引脚(56管脚的)主要可以分为几类:电源引脚(包括数字和模拟电源地);系统引脚,如系统时钟,USB挂起外部唤醒,系统复位;12C
5程序设计
始。
(3):写过程的启动是在sclk的上升沿第一次采样到sldn为高的时刻,整个写过程中sldn一直为低电平。
(4):写过程开始后,前3个时钟周期写入地址,高有效位(a[2])在前,低有效位(a[0])在后。
(5):接下来的16个sclk周期,按照与写地址同样的方式写入数据,高位在前,低位在后(dE15]一d[O])。
(6):最后sldn有效时要额外的1个时钟周期将前面的数据按对应地址从缓冲寄存器并行打入内部实际寄存器。
本设计在FPGA内部通过VerilogHDL编写了一个模块,时序仿真图如所示,其中clkin是系统时钟50M,rst为低电平有效的异步复位信号,sclk为系统时钟信号的二分频25MHz,向地址为0的寄存器中写入配置的数据,maincnt是一个计数器,每计数到19时,完成~个寄存器的配置过程。
在QuartusII中
图5.2三线串口设置时序仿真图
5.2采样数据接收与分流的实现
数据分流器(DMUX)的应用是高速数据采集系统中必不可少的环节之一,数据分流是指通过串并变换方法,将一路高速数据流分为几路并行的相对低速的数据流,整个系统的数据吞吐率保持不变。
这种方法是FPGA一种典型的以芯片面积换取速度的设计方法p51。
Pdtcra公司提供了专门用于收发LVDS信号的IP核模块ALTLVDS强函数,ALTLVDSRX和ALTLVDSTX分别实现LVDS信号的接收和发送功能。
本设计使用的是实现LVDS信号接收功能的模块ALTLVDSRX。
如图所示。
在Stratix等高端系列FPGA器件中,ALTLVDS使用专门的SERDES电路实现高速差分
5程序设计
信号的收发,但是在本设计使用的Cycloneii器件中没有专门的SERDES电路,需用LE和PLL来实现这项功能。
在接收器接收数据的同时,伴随着PLL产生的时钟将数据送入移位寄存器,之后再用较低速的时钟信号将数据并行的送出,从而实现数据串并转换的过程【361。
Cycloneii使用DDIO(双倍数据接口)来实现SERDES接口,这样在时钟信号的上升沿和下降沿都要进行数据锁存,所以输出的随路时钟信号设置为数据率的一半即可实现不重不漏接收,方案中AT84AD001B的随路时钟(CLKOI)设定为fs/4。
ALTLVDS核结构框图如下所示:
lIvd¥
;ir堵tlCyclone目i
图5.3LVDS差分信号接收模块DEMUX
受限于器件的管脚数目以及内部逻辑资源,本设计选用的EP2C35F672C6内部的ALTLVDSRX模块接收的最大的通道数为18,最大的分频数为10。
而我们设计的超高速ADC四路全部工作时数据接收需要的LVDS通道数目为32,传输速率为250Mbps,需要的分频数为2,通道数目超出了一个ALTLVDSRX所支持的范围。
因此在I,Q路分别使用一个ALTLVDSRX模块,每个模块处理16个通道,分频数为2,共用一个外置的PLL。
为了便于观察数据的规律,我们假设输入数据是8位依次递增的数据,给出在DMUX为l:4时的时序仿真图如下所示:
5程序设计
5.4SDRAM存储器的时序控制
相比较于其它类型存储器,SDRAM的控制时序较为复杂,它的接口要完成以下功能:
(1):芯片初始化和加载模式寄存器。
SDRAM芯片要在初始化后才能进入正常的工作模式,首先电源模块供电之后要留有200us的稳定期,再对所有的子BANK进行预充电,执行8个刷新周期,最后通过模式设置寄存器(MR,ModeRegister)设置SDRAM的工作模式,之后才能对芯片进行正常的读写操作。
模式寄存器的操作包括设置读和写的操作模式(突发读,突发写或者单一写),CAS潜伏期设置(2或3个时钟周期),突发传输方式设置(顺序或者交错传输),突发长度设置(1,2,4,8或者全页)。
正常工作
咀缸
图5.9SDRAM初始化阶段操作顺序
(2):初始化完成之后,要对其中某一BANK进行寻址,首先要激活行(row)。
行地址确定之后,下面就是要确定列地址,地址线仍然采用行地址用的A0.All。
具体是行地址还是列地址操作由WE#信号控制。
SDRAM的基本操作命令如图所示:H代表高电平,L代表低电平,X代表高或低电平都可以。
表5.3SDP,3¥1操作命令
操作命令CS撑RAS撑CAS撑WE撑DQM地址线DQs命令禁止(NOP)HXXXXXX
无操作(NOP)LHHHXXX
有效/活动(使指定的LLHHXBANKX
L广BANK中的指定行有效)行
5程序设计
中一行操作完成之后,若对另一行的数据进行操作,则要将原来的工作行关闭,重新发送要操作的行(列)地址,这个过程就是预充电的过程。
(7)数据掩码操作是在数据输出时屏蔽掉不需要的数据。
一般设置DQMH和DQML有效来使能这项操作。
通过前面对SDRAM时序设计的介绍和说明,结合系统的需要,设计SDRAM存储器的控制结构框图如所示SDRAM控制器主要分为三个部分SdramCtrlVl00模块主要是完成SDRAM的初始化,SdramDataWrVl00完成SDRAM数据的双向传输,SdramCmdVl00是SDRAM的控制命令,程序的结构图如下所示:
图5.10:SDR/蛐!时序控制模块结构
考虑到SDRAM程序比较复杂,我们在仿真时使用业界最优秀的HDL语言仿真工具Modelsim6.2,它采用直接优化的编译和Tcl/Tk技术,有仿真速度快,个性化的仿真窗口和图形界面,纠错方便的特点1391。
仿真过程如下:(1):SDRAM首先要有200us的输入稳定期,接下来进入模式寄存器的设置。
根据功能需要本程序设计CL=4,BL=8,顺序传输模式。
(2):FPGA产生依次递增的数据送入异步FIFO,在进行完速率匹配后,由SDRAM存储器读取。