高速大容量数据采集板卡的SDRAM控制器设计

时间:2007-04-29
摘 要:本文对高速、高大容量数据采集板卡所采用的SDRAM控制器技术进行了讨论,详细介绍了基于FPGA的SDRAM控制器的设计、命令组合以及设计仿真时序,并将该技术应用于基于PCI总线的100MHz单通道 AD9432高速大容量数据采集板卡,给出了板卡测试结果。
关键词:SDRAM;FPGA;AD9432

引言
高速数据采集具有系统数据吞吐率高的特点,要求系统在短时间内能够传输并存储采集结果。因此,采集数据的快速存储能力和容量是制约加快系统速度和容许采集时间的主要因素之一。通常用于数据采集系统的存储器有先进先出存储器(FIFO)、双端口RAM以及静态RAM等,但是容量小,已经不能满足高速数据采集系统的需求。目前市场上的SDRAM和DDR SDRAM具有工作频率高、容量大、功耗低的特点,数据线位宽可以达到64bit,完全适用于高速数据采集系统。但是SDRAM控制相对复杂,而且需要定时刷新,是系统设计的一个技术难点。
本文设计的100MHz单通道AD9432高速大容量数据采集板卡,选择大容量SDRAM作为采集数据存储器。其中,自行设计的SDRAM控制器,采用了猝发读写操作模式,充分发挥猝发读写的高速高效率特性,实现对采集数据的高速存储。

SDRAM控制器设计与仿真
SDRAM控制器的设计
SDRAM控制器的设计有多种方案,一种是采用市场上的专用SDRAM接口芯片,这种控制器接口固定,访问容量有限,与A/D采样电路连接时,需要设计一个接口转换电路,满足专用芯片的接口时序;另一种是采用带有SDRAM接口的DSP,例如TMS320C6000系列,但是容量有限,不易扩展,而且这种方式通常要求对采集数据进行预处理;还有一种是基于FPGA的SDRAM控制器,目前FPGA的技术比较成熟,编程方便,设计灵活,便于构造大容量的SDRAM存储器,但是控制器需要根据系统技术要求进行设计。在本文的高速数据采集卡设计中,采用大容量FPGA设计SDRAM控制器。
基于FPGA的SDRAM控制器工作原理
SDRAM控制器是高速数据采集卡存储单元的,控制板卡数据流。工作原理参见图1。采集数据先送入A/D数据缓存器,由SDRAM控制器读出并写入大容量SDRAM存储器。当A/D转换结束后,板卡修改状态标志或者发出中断请求,主机发出读取命令,SDRAM控制器切换工作状态,把数据从SDRAM中取出,写入输出缓存器,由主机通过总线接口将结果读到系统中。其中,SDRAM控制器负责对SDRAM的定时刷新。SDRAM控制器根据设计,可以对SDRAM执行猝发读写、刷新等12种命令,完成对数据的访问。
SDRAM的控制命令组合
SDRAM的控制是根据时钟上升沿时刻控制信号的不同组合实现的。控制SDRAM的基本操作包括:初始化、刷新、块激活、读写访问、预充电等。
基于FPGA的SDRAM控制器设计
整个SDRAM电路包括一片FPGA和多片SDRAM。FPGA内部集成了SDRAM控制器、ADC接口、总线控制接口和3个FIFO。其中,2个FIFO组成乒乓A/D数据缓存器,另一个FIFO作为输出缓存器,FIFO的深度和SDRAM页长度一致。在板卡设计中,根据需求对SDRAM控制操作进行了简化,设计了初始化、自动刷新、块激活、猝发读写、预充电等六种操作,具体状态机设计如图2所示。系统上电初始化并发出复位信号,SDRAM控制器进入初始化状态,对SDRAM进行刷新和模式设置,其中猝发长度设为“full page”,然后进入空闲状态,等待命令。当主机启动A/D转换,ADC接口将采集数据依次写入A/D数据缓存器,当其中一个FIFO满,SDRAM控制器进入猝发写状态,发出块激活和猝发写命令,将A/D数据缓存器中的数据读出并写入SDRAM当前页,一页数据写操作后,发出块预充电命令,关闭所有数据块,退出猝发写状态。当SDRAM控制器接到主机的读数命令时,转入猝发读状态,先后发出块激活和猝发读命令,把SDRAM一页的数据读出并写入输出缓存器,并用满信号作为中断信号向PCI总线发出申请,通知主机读取数据。每当刷新计时器计数满,状态机转到刷新状态,完成对SDRAM的刷新。
在编程实现SDRAM控制器中,应该根据设计需求,选择合适的控制命令组合,保证工程实现方案简单、可靠,并方便调试。在设计中应该注意:
1. 每启动SDRAM的读/写操作,都需要经过激活一个块(锁行地址)、锁列地址(读写命令)等几个过程,所以从发出地址到真正访问一个地址空间需要4~6个时钟周期。因此,SDRAM在非猝发模式时访问效率非常低,不适合高速电路应用。在本电路设计中,SDRAM的设置工作模式为猝发访问,充分发挥了SDRAM高速高效特点。
2. 复位之后,SDRAM控制器自动进入初始化状态。根据SDRAM初始化的要求,设置一个计数器,首先等待至少200ms,不做任何操作,然后产生一个Precharge All Banks命令,接着是两个刷新命令,设置工作模式寄存器。完成这些初始化操作之后,SDRAM控制器进入空闲状态,这时才可以对SDRAM进行正常的操作。否则,SDRAM将处于一种不确定状态,无法保证操作的正确性。
3. SDRAM有多种刷新模式,Self Refresh通常工作于所有数据块处于空闲的状态,功耗低,但是会使内部时钟和所有输入缓冲无效,且控制复杂。Auto Refresh由定时器产生,易于控制。因此一般选择Auto Refresh模式。通常设计一个计数器以计算时间间隔,达到刷新周期时,产生刷新信号,实现刷新时序。SDRAM要求在刷新之前所有的块都处于空闲状态,但实际应用中,有可能从任意一个状态进入刷新状态,因此不能保证所有的块都处于空闲状态,因此,在刷新之前,首先对所有的块预充电,然后刷新。
4. 对SDRAM进行读写访问操作时,必须顺序完成锁行地址、锁列地址、读/写命令和Precharge All Banks命令。使用Precharge All Banks命令是由于SDRAM不允许对同一个块中的两个页进行操作,为了防止误操作,每完成操作都要关闭所有的块,也可以在访问之前先执行该命令。
采用FPGA设计SDRAM控制器的优势在于设计实现的灵活性和高集成性,设计者可以根据需要选择合适的控制命令组合,完成简单、可靠的控制。此外,目前市场上的SDRAM容量从几十MB到数百MB,器件类型从SDRAM到速度更高、容量更大的DDR SDRAM,在硬件修改不多的情况下,使用FPGA控制更灵活,更适合未来系统扩展的需要。
SDRAM控制器的仿真
在设计中,本文选择了Altera公司的ACEX1K100实现SDRAM控制器。图3显示了SDRAM控制器典型的猝发写控制时序,控制器依次锁行地址、锁列地址、写操作,是预充电命令,关闭所有页,退出操作。猝发读控制时序与之类似。

SDRAM控制器在高速数据采集卡中的实现
100MHz AD9432高速数据采集卡的系统结构框图如图4所示。在数据采集卡设计中,SDRAM控制器是数据流控制,负责数据的高速猝发读/写和定时刷新。当主机启动A/D转换后,SDRAM控制器将采集结果存储到SDRAM存储器中,当采集结束后,主机通过PCI接口采用DMA传输方式将采集数据读到主机系统中。SDRAM控制器的时钟为60MHz,数据线32bit。设计的SDRAM存储器为32MB,由两片Samsung的256MB SDRAM构成,对于100MHz采样率,可以存储330ms的数据,解决了高速数据采集卡的海量数据存储的技术瓶颈。同时,利用FPGA的编程灵活性,保留了继续扩展SDRAM的能力,以满足更大容量的需求。

结语
板卡设计完成后,对主要性能指标进行了测试,主要包括ADC的动态性能指标及DMA数据传输速率。测试中设定系统采样率为100MSPS,输入信号为12.5MHz正弦信号。测试频谱图见图5。可以计算出系统实际信噪比约为61.94dB;ADC对10MHz的正弦信号采样的有效位数为9.99bit;谐波失真(THD)=-39.22dB, 无杂散动态范围(SFDR)=40.71dB,指标满足设计要求。■

参考文献
1 沈兰荪.高速数据采集系统原理及应用[M].人民邮电出版社,1995
2 杨坤德,赵亚梅,马远良.高速大容量多通道数据采集系统设计,数据采集与处理J第17卷第4期2002,17(2):455
3 ACEX1K Programmable Logic Device Family Data Sheet.Altera,2001
4 K4S561632B CMOS SDRAM Data Sheet.Samsung,2000
5  PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.
6 AD9432 datasheet https://www.dzsc.com/datasheet/AD9432_251538.html.
7 TMS320C6000 datasheet https://www.dzsc.com/datasheet/TMS320C6000_891022.html.
8 Data Sheet datasheet https://www.dzsc.com/datasheet/Data+Sheet_2028512.html.


上一篇:解读DOCSIS 2.0技术
下一篇:SAF-TE技术在磁盘阵列背板中的实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料