内容摘要:探讨了高速数据采集系统中高速采样缓存的重要性和实现途径,阐述了基于ADSP-21065L的并行多通道数据采集板上高速采样缓存的设计与电路结构,给出了采用FPGA实现通道复用和采样数据预处理,从而构造16MB的SDRAM海量缓存以将高速缓存中的多批次采样数据经AD-21065L倒入SDRAM存储的实现方法。
1 引言
对高速多通道采样数据存储的性能要求:一是高速性,现在高速数据采集中所用的ADC已达到几十甚至几百MSPS的水平,这就要求采样数据存储器的速度也要与之匹配,也就是采用高速缓存;二是大容量,其原因是多通道高速数据采集会产生巨大的数据流.一个4通道40MHz采样率16位精度数据采集板并行采样0.1s将产生32MB的数据量,所以,通常需要海量缓存来存储采样数据.
2 高速缓存的实现
通常构成高速缓存的方案有三种:
第一种是FIFO(先进先出)方式.FIFO存储器就象数据管道一样,数据从管道的一头流入、从另一头流出,先进入的数据先流出.FIFO具有两套数据线而无地址线,可在其一端写操作而在另一端读操作,数据在其中顺序移动,因而能够达到很高的传输速度和效率,且由于省去了地址线而有利于PCB板布线.缺点是只能顺序读写数据,因而显得比较呆板,而且大容量的高速FIFO非常昂贵;
第三种是高速SRAM切换方式.高速SRAM只有一套数据、地址和控制总线,可通过三态缓冲门分别接到A/D转换器和DSP上.当A/D采样时,SRAM由三态门切换到A/D转换器一侧,以使采样数据写入其中.当A/D采样结束后,SRAM再由三态门切换到DSP一侧以便DSP进行读写.这种方式的优点是SRAM可随机存取,同时较大容量的高速SRAM容易得到且价格适中,缺点是切换控制电路比较复杂,且只能由A/D转换器和DSP分时读写.
图1中,SRAM选用IS61LV25616-10T,容量为256k×16bit,访问速度为10ns,使用两片即可构成256k×32bit的高速缓存.当一轮采样开始时,DSP发出触发信号给CPLD,后者对50MHz晶振时钟二分频后得到25MHz采样时钟提供给4路A/D转换器AD9225,同时对4路超声信号进行25MHz、12bit的A/D转换.转换结果分成两个完全一样的数据通道进行处理,每个数据通道处理两路A/D转换结果,每个数据通道包含一片FPGA(现场可编程门阵列)、一片SRAM及其后的数据三态门等电路.FPGA可接收两路A/D转换结果并在其内部进行复用,以将其变成一路50MHz、12bit的数据流送入IS61LV25616缓存.FPGA完成数据通道复用的原理如图2所示.
除了FPGA外,系统还采用了一片CPLD(复杂可编程逻辑器件)来控制采样.前者主要用于数据通道对A/D采样结果进行缓冲复用以及预处理,后者则负责产生A/D采样时钟以及作为地址计数器产生地址并提供给两片IS61LV25616以便存入A/D采样结果等.CPLD不象FPGA那样能完成较复杂的逻辑功能和信号处理算法,但是它具有更高的速度,且管脚到管脚具有固定一致的时延,因而在设计调试时容易获得简单可靠的定时关系,适于实现高速计数器、触发器、译码器等定时要求比较严格的场合.本系统使用MAX7128AE来控制采样,其可实现的功能如图3所示.
MAX7128AE可用于实现两个18位地址计数器,它具有地址总线开关切换功能,在A/D采样期间能以25 MHz的频率进行地址计数以作为高速缓存的地址线.当一轮A/D采样结束后,系统可将高速缓存的地址总线切换到DSP的地址总线,然后由DSP读取高速缓存中的A/D转换结果并进行处理.高速缓存IS61LV25616的数据总线一方面连到FPGA以便在采样期间接受复用的A/D转换结果;一方面则通过三态门连到DSP的数据总线以便在采样结束后由DSP读取采样数据.
系统中的DSP为Analog Devices公司的ADSP-21065L,这是一款性价比很高的32位浮点DSP.其峰值浮点运算速度为180M FLOPS,片内带有68kB的RAM,可用于程序或数据内存,片外数据总线为32位,片外地址总线为24位,具有4个片选信号输出,每个片选信号的寻址空间可达64MB,另外,它还具有多个高速同步串口以及强大的DMA功能.而最有特色的一点是其内部集成了一个SDRAM控制器,因此能够直接驱动外部SDRAM.通常SDRAM的控制是比较复杂的,需要按时序规定驱动它的行、列选通线并分时提供行、列地址,另外还要定时刷新.一般是由专门的SDRAM控制器对其操作,或采用FP-GA设计SDRAM控制器,但这都会增大系统的复杂度.而ADSP-21065L能直接驱动和控制片外SDRAM,使用时只要在程序中设置好相关的寄存器,然后用一条指令启动SDRAM的上电时序即可.此后程序对SDRAM的访问操作都是透明的,可象访问普通片外SRAM一样访问它,因此非常方便,故可使用大容量(可达64MB)高速廉价的SDRAM芯片作为ADSP-21065L的海量片外存储器.本系统使用两片4M×16bit的SDRAM芯片HY57V641620来构成16MB的海量缓存(参见图1).这样,16MB的存储容量如果都用来转存采样数据的话,可以存储4个通道同时采集的2M点数据,在25MHz的采样率下可达到0.08s的总记录时间,这对于本系统而言已经足够了.而且通过选用更大容量的SDRAM芯片还可方便地将海量缓存的容量扩充到32MB、64MB.
为了将多次A/D采样数据从高速缓存转送到海量缓存,如果让ADSP-21065L用指令的方式从片外高速缓存中读取采样数据,然后写入片外海量缓存,将会大量占用ADSP的运行时间,而且传输速度也较慢.为此,笔者采用ADSP的DMA功能进行传送.ADSP-21065L具有多个DMA通道(其中包括两个外部口DMA通道),因而可进行高速数据传输.它的外部口DMA通道本来就可以完成外存与外设之间的DMA传输,但是若二者之一是SDRAM则不行.所以,实际使用时一般通过ADSP-21065L的片内RAM来中转,然后再完成高速缓存到海量缓存的数据传输,具体做法如图4所示.
ADSP内部开设有1k×32bit的RAM块构成中转区,可利用外部口DMA通道0进行A/D高速缓存到片内RAM的DMA传输,同时利用外部口DMA通道1来进行片内RAM区到海量缓存SDRAM的DMA传输.在60MHz的ADSP主频下,前者的DMA传输速度可达120MB/s,后者的DMA传输速度可达240MB/s.当外部口DMA通道0完成一次传输后,系统将启动外部口DMA通道1的DMA传输;而当后者的DMA传输完成后系统将再次启动前者的DMA传输.如此循环下去,直至A/D高速缓存中的1MB采样数据都倒入SDRAM海量缓存为止,该过程大约需要13.1ms.
4 结论与改进