O 引 言
随着科学技术的发展,数据采集技术进入到越来越多的领域。目前,已广泛应用于通信,图像处理,军事应用,消费电子,智能控制等方面。传统的数据采集系统一般都是采用单片机作为处理器,控制A/D转换器,存储器及其他外围电路的工作。传统的单片机由于时钟频率较低,外设速度慢等缺点已经大大的限制了数据采集的速度和性能。而FPGA与单片机相比,有着频率高,内部延时小,内部存储容量大等优点,比单片机更适应与高速数据采集的场合。FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。因此,本文介绍了一种基于FPGA来实现高速数据采集的方法,A/D转换器使用AD公司的AD9481,FPGA使用ALTERA公司的EP2C5Q208,存储器使用HYNIX公司的HY57V641620。系统框图如图1所示。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及个模块之间或模块与I/O间的连接方式,并终决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并终决定了FPGA所能实现的功能, FPGA允许无限次的编程。
l 高速A/D与FPGA接口的实现
本文采用的AD转换器是ADI公司的AD9481,AD9481是一款典型的高速AD转换器,其高达250MSPS的采样率,适用于高速数据采集的场合。因为AD9481需要250M的基于PECL标准的差分时钟才能工作在250MSPS,因此本设计采用摩托罗拉公司的MCl00LVEL16这一时钟芯片来提供250M的差分时钟,它只需要输入单端CMOS电平的250M时钟便可以输出符合AD9481要求的250M差分时钟。但是这么高的时钟在线路板中是一个潜在的威胁,它既容易干扰其他器件,又容易被其他器件干扰。AD9481的数字输出属于并行接口,2个250MSPS,8位数据输出组合形成125MSPS,16位的数据流,如此高速的数据传输与存储容易使数字系统中出现竞争冒险和亚稳态,因此首先在AD的数据输出引脚和FPGA的输入引脚之间串联100欧姆的电阻,用来削弱高速数据线在O,1之间变换产生的毛刺和数据线之间的干扰。其次,在FPGA内部对AD的数据线和锁存时钟的使用应严格按照器件手册上的建立时间和保持时间来设计,否则容易产生亚稳态。
该设计选用的FPGA是EP2C5Q208,它是ALTERA公司的CYCLONE2系列的一款低成本FPGA,适用于中小型设计。拥有多达4608的逻辑单元,119808 bit的内部RAM,支持ALTERA公司的SOPC,NIOSII,本设计通过EP2C5Q208的内部RAM来做AD高速数据传输的缓冲,AD过来的高速数据通过锁存时钟完成对FIF0的写操作。如图2所示,AD_DB[15O]是AD的数据线,ADB_DCOB是AD的锁存时钟。
2 高速大容量存储的实现
2.1 FPGA与高速存储器接口的实现
高速数据采集一般都需要大容量的存储,从而更能完整的记录所需要的数据,捕捉突发信号的能力也更强。传统的数据采集由于速度低,容量小,一般都采用SRAM,SRAM的特点是控制相对简单。SDRAM是同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。由于具有速度高,存储容量大,价格便宜等优点,越来越多的被应用于高速数据采集的场合。由此可见SDRAM的速度能达到很高,但SDRAM的缺点是控制起来相对麻烦,由于本身设计上的一些特点,它需要不断刷新,预充电等操作,因此让使用者感到非常麻烦。
本设计介绍了一种基于ALTERA公司的SOPC系统来实现SDRAM存储的方法,SOPC的全名是即片上可编程系统,或者说是基于大规模的FPGA的单片系统。简单来讲,在一片FPGA上,只要资源足够,用户可以根据自己的需要构建自己的CPU或者外设。这些外设都是ALTERA公司自己用硬件描述语言实现的IP核,性能好,通用性高,用户只需要打开SOPC这个选项,然后在里边挑选自己需要的外设就可以。因此,本设计利用SOPC建立一个SDRAM控制器,本设计用的SDRAM是HYNIX公司的HY57V641620,这是一款具有64MBIT容量16位宽的SDRAM,工作时钟可达200M。因为每个厂家的不同型号的SDRAM在参数上会有相应的差异,因此ALTERA的公司的SDRAM控制器给用户提供了简单易行的使用方法,用户在创建的时候只需要在相应参数的位置按照自己使用的SDRAM的具体参数修改即可。
为了让SDRAM控制器以及其他外设的IP核在使用起来更加方便,ALTERA公司又推出了AVALON总线,这种总线是一种协议较为简单的片内总线,Nios通过Avalon总线与外界进行数据交换。主要用于连接外设与处理器,与外设一起组成一个控制器,方便外部处理器的使用,协议简单,占用逻辑单元少,同步操作,集成度更高,避免了复杂的时序分析问题,它的主要特点有:
1 所有外设的接口与Avalon总线时钟同步,不需要复杂的握手/应答机制。这样就简化了Avalon总 线的时序行为,而且便于集成高速外设。Avalon总线以及整个系统的性能可以采用标准的同步时序分析技术来评估。
2 所有的信号都是高电平或低电平有效,便于信号在总线中高速传输。在Avalon总线中,由数据选择器(而不是三态缓冲器)决定哪个信号驱动哪个外设。因此外设即使在未被选中时也不需要将输出置为高阻态。
3 为了方便外设的设计,地址、数据和控制信号使用分离的、专用的端口。外设不需要识别地址总线周期和数据总线周期,也不需要在未被选中时使输出无效。分离的地址、数据和控制通道还简化了与片上用户自定义逻辑的连接 。
本设计建立了一个SDRAM与AVALON总线的结合体,如图3所示。右下端是SDRAM的控制引脚,用户只需要把这些引脚与使用的sDRAM的相应引脚逐个相连即可,中间的部分就是AVALON总线的输出输入端,用户只需要对AVALON端的地址,数据线上操作,AVALON总线便会完成对SDRAM的操作,可见使用起来比较方便。上边的CLK信号是这个SDRAM控制器的同步时钟,这个时钟需要与SDRAM的输入时钟一样大,而且SDRAM的控制时钟与这个时钟用FPGA内部锁相环的2个输出来控制,本设计用的EP2C5Q208的同一个锁相环有C0、Cl、C2三个输出,C2用于外部管教输出,本设计把C2连到SDRAM的时钟输入端,CO在FPGA内部连到此SDRAM控制器的CLK端,因为存储器想工作的可靠,数据准确就需要满足存储器的建立时间和保持时间,而无论是FPGA内部还是线路板都会对SDRAM的普通引脚和时钟脚之间的相位产生影响,本设计中C2一C0=60°。
2.2 高速存储与读取在FPGA里的逻辑实现
在节中我们已说到A/D转换器的数据率是125M,16BIT,而本设计中用的HY57V641620的时钟可达200M,因此完全可以满足A/D转换器的速率要求。A/D转换器的数字输出已经被我们直接存储到了FPGA的内部FIFO当中,FIFO是一种先进先出的存储器,被读出的数据就不会在FIFO中存在了。因此,这个FIFO在使用的时候,A/D转换器的数据一边以125M的速度往FIFO写数据,一边用一个速度更高的时钟,150M的速度往外读数据,这样读的速度大于写,因为FIFO有满和空的标志,因此我们用空的标志来控制读FIFO的操作,即空的时候就不读,这样,在FIFO端,我们可以保证A/D采集的数据无丢失的以150M的速度被读出。我们用这个150M的时钟来驱动一个地址计数器,如图4所示。
SYS_CLK就是那个150M的时钟,地址计数器的位数就决定了本次存储的深度,我们把这个地址计数器的输出SD_ADA[221]直接接到SDRAM控制器的AVALON的地址端,把FIFO读出的数据直接接到AVALON的数据端,把WAIT线接到地址计数器的使能端来控制,忙的时候就不让地址计数器计数,当地址计数器从0计到SDRAM的地址的时候,我们就实现了FIF0的数据到SDRAM的传输,从而终实现了A/D转换器的结果到SDRAM的存储。A/D转换器是指一个将模拟信号转变为数字信号的电子元件。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。至此,我们已完成了高速数据到SDRAM的存储。读取相对与存储的过程操作比较简单,用户想要调用SDRAM里的数据,只需要把自己的处理器的总线接到FPGA的引脚上,在内部挂载到SDRAM控制器的AVALON读取端,图3中的中间部分,按照总线的操作方式即可读取相应地址里的数据。
3 结束语
本文介绍了一种基于高速A/D转换器,FPGA,SDRAM来实现的控制高速数据采集的数字系统,详细的介绍了各部分的实现方法。该系统具有速度高,存储容量大等优点,能够适应高速数据采集的诸多场合。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。