随着科学技术的发展,数据采集技术进入到越来越多的领域。目前,已广泛应用于通信,图像处理,军事应用,消费电子,智能控制等方面。传统的数据采集系统一般都是采用单片机作为处理器,控制A/D转换器,存储器及其他外围电路的工作。这种方式的优点是系统的工作基本都是用单片机来完成,实现起来较为方便,只需对处理器进行编程即可。但随着数据采集进入的领域越来越复杂,对数据采集的速度和深度都有了更高的要求。传统的单片机由于时钟频率较低,外设速度慢等缺点已经大大的限制了数据采集的速度和性能。而FPGA与单片机相比,有着频率高,内部延时小,内部存储容量大等优点,比单片机更适应与高速数据采集的场合。因此,本文介绍了一种基于FPGA来实现高速数据采集的方法,A/D转换器使用AD公司的AD9481,FPGA使用ALTERA公司的EP2C5Q208,存储器使用HYNIX公司的HY57V641620。系统框图如图1所示。
l 高速A/D与FPGA接口的实现
本文采用的AD转换器是ADI公司的AD9481,AD9481是一款典型的高速AD转换器,其高达250MSPS的采样率,适用于高速数据采集的场合。因为AD9481需要250M的基于PECL标准的差分时钟才能工作在250MSPS,因此本设计采用摩托罗拉公司的MCl00LVEL16这一时钟芯片来提供250M的差分时钟,它只需要输入单端CMOS电平的250M时钟便可以输出符合AD9481要求的250M差分时钟。单端时钟由FPGA的锁相环对有源晶振输入的时钟进行倍频输出。但是这么高的时钟在线路板中是一个潜在的威胁,它既容易干扰其他器件,又容易被其他器件干扰。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[15..O]是AD的数据线,ADB_DCOB是AD的锁存时钟。
2 高速大容量存储的实现
2.1 FPGA与高速存储器接口的实现
高速数据采集一般都需要大容量的存储,从而更能完整的记录所需要的数据,捕捉突发信号的能力也更强。传统的数据采集由于速度低,容量小,一般都采用SRAM,SRAM的特点是控制相对简单。但随着高速数据采集的发展,SRAM无论在速度上还是容量上都越来越无法满足人们的需要。SDRAM由于具有速度高,存储容量大,价格便宜等优点,越来越多的被应用于高速数据采集的场合。SDRAM即同步动态随机存储器。同步指的是时钟频率与系统时钟频率相同并且内部的命令的发送与传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据的不丢失;随机是指数据不是线性依次的存储,而是指定地址进行数据的读写。由此可见SDRAM的速度能达到很高,但SDRAM的缺点是控制起来相对麻烦,由于本身设计上的一些特点,它需要不断刷新,预充电等操作,因此让使用者感到非常麻烦。
本设计介绍了一种基于ALTERA公司的SOPC系统来实现SDRAM存储的方法,SOPC的全名是即片上可编程系统,或者说是基于大规模的FPGA的单片系统。简单来讲,在一片FPGA上,只要资源足够,用户可以根据自己的需要构建自己的CPU或者外设,ALTERA公司给用户提供了丰富的外设,包括串口,PIO,定时器,FLASH控制器,SDRAM控制器,网络接口等。这些外设都是ALTERA公司自己用硬件描述语言实现的IP核,性能好,通用性高,用户只需要打开SOPC这个选项,然后在里边挑选自己需要的外设就可以。因此,本设计利用SOPC建立一个SDRAM控制器,本设计用的SDRAM是HYNIX公司的HY57V641620,这是一款具有64MBIT容量16位宽的SDRAM,最高工作时钟可达200M。因为每个厂家的不同型号的SDRAM在参数上会有相应的差异,因此ALTERA的公司的SDRAM控制器给用户提供了简单易行的使用方法,用户在创建的时候只需要在相应参数的位置按照自己使用的SDRAM的具体参数修改即可。比如预充电,刷新周期,潜伏期这些参数要按照使用的型号进行修改,否则可能会造成数据的传输错误或其他的问题。
为了让SDRAM控制器以及其他外设的IP核在使用起来更加方便,ALTERA公司又推出了AVALON总线,这种总线是一种相对简单的总线结构,主要用于连接外设与处理器,与外设一起组成一个控制器,方便外部处理器的使用,协议简单,占用逻辑单元少,同步操作,集成度更高,避免了复杂的时序分析问题。
本设计建立了一个SDRAM与AVALON总线的结合体,如图3所示。右下端是SDRAM的控制引脚,用户只需要把这些引脚与使用的sDRAM的相应引脚逐个相连即可,中间的部分就是AVALON总线的输出输入端,用户只需要对AVALON端的地址,数据线上操作,AVALON总线便会完成对SDRAM的操作,可见使用起来比较方便。WAIT端的信号会告知用户SDRAM在忙还是空闲状态,当WAIT为高的时候,用户不能对AVA—LON操作,否则操作也是无效,当WAIT为低,用户才可以。最上边的CLK信号是这个SDRAM控制器的同步时钟,这个时钟需要与SDRAM的输入时钟一样大,而且SDRAM的控制时钟与这个时钟最好用FPGA内部锁相环的2个输出来控制,本设计用的EP2C5Q208的同一个锁相环有C0、Cl、C2三个输出,C2用于外部管教输出,本设计把C2连到SDRAM的时钟输入端,CO在FPGA内部连到此SDRAM控制器的CLK端,因为存储器想工作的可靠,数据准确就需要满足存储器的建立时间和保持时间,而无论是FPGA内部还是线路板都会对SDRAM的普通引脚和时钟脚之间的相位产生影响,因此需要对FPGA内部进行仿真,线路板仿真,得出他们之间的相差,然后调节CO与C2之间在锁相环里的相差,从而进行补偿,本设计中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[22..1]直接接到SDRAM控制器的AVALON的地址端,把FIFO读出的数据直接接到AVALON的数据端,把WAIT线接到地址计数器的使能端来控制,忙的时候就不让地址计数器计数,当地址计数器从0计到SDRAM的最高地址的时候,我们就实现了FIF0的数据到SDRAM的传输,从而最终实现了A/D转换器的结果到SDRAM的存储。至此,我们已完成了高速数据到SDRAM的存储。读取相对与存储的过程操作比较简单,用户想要调用SDRAM里的数据,只需要把自己的处理器的总线接到FPGA的引脚上,在内部挂载到SDRAM控制器的AVALON读取端,图3中的中间部分,按照总线的操作方式即可读取相应地址里的数据。
3 结束语
本文介绍了一种基于高速A/D转换器,FPGA,SDRAM来实现的控制高速数据采集的数字系统,详细的介绍了各部分的实现方法。该系统具有速度高,存储容量大等优点,能够适应高速数据采集的诸多场合。
上一篇:FPGA设计频率的计算方法
下一篇:FPGA软件无线电
推荐阅读最新更新时间:2024-05-02 21:19