基于FPGA的DMA技术实现多路并行数字信号的高速同步采集

描述

本系统采用基于FPGA的DMA技术高速缓存多路并行数据,通过数据重组将数据有序发送给处理系统,用于数据的显示与分析。系统采用了嵌入式技术,达到了便携效果,从而更好地适应设备的工作环境。并行数字信号采集实验结果表明,系统能以5 MHz、2.5 MHz、500 kHz、50 Hz 4档采样频率进行62路并行数字信号采集,各路采集结果正确,并保存了各路之间的同步信息。

随着数字电子技术的发展,大型电子设备中数字电路的比例越来越大。为便于故障诊断,一些电子设备(如雷达系统)预留了大量的数字信号检测口。采用示波器采集此类测试接口的信号时,由于示波器采集通道数的限制,无法保留同步信息;采用逻辑分析仪或ATE设备不但价格昂贵,而且不便于携带,不适宜广泛使用。因此,设计一款便携式并行数字信号高速同步采集系统,为大型电子设备的维护提供支持是十分必要的。

此类检测口信号采集中多通路、高采样率的特性要求瞬时大量数据的高速缓存实现方法。文献以硬盘为存储介质,采用DMA技术实现了接近6 MB/s的存储速率。文献,文献,基于SoPC技术采用SDRAM作为存储介质,相对硬盘存储速度有了很大的提高。但是当通道数超过SDRAM数据位数时,SoPC的处理速度就会影响数据的存储速度,适用于多通路同步采集。本文采用读写速度最高的SRAM作为存储介质,并利用虚拟多个DMA通道的技术极大地提高了数据存储速度,实现多路并行数字信号的高速同步采集。

1 系统整体设计

采集系统采用了嵌入式技术达到便携性的目的,由FPGA子系统和ARM子系统两部分组成,如图1所示。

嵌入式

FPGA子系统接收ARM子系统的指令,完成数据的采集、缓存和发送功能。数字信号缓冲电路用于数字信号的电平转换和驱动。输入数字信号可能是TTL或CMOS电平,采用缓冲电路一方面减小对原电路的影响,另一方面将电平转换为FPGA输入所需的CMOS电平。FPGA子系统以Altera公司的EP1C12Q240C6芯片为核心,EP1C12Q240C6拥有12 060个逻辑单元以及173个用户可使用IO,能充分满足开发及调试中的要求。FPGA搭配SRAM采用DMA的方式实现数据的高速缓存,选用SRAM容量为1 MB,访问时间为10 ns,利用SRAM访问速度快的特点,可达到200 MB/s的数据访问速率。同时,FPGA还实现了与ARM的通信接口,完成缓存数据的打包发送功能。

ARM子系统实现数据的存储和人机交互界面。采集到的数据可以通过ARM子系统以类似于逻辑分析仪的方式图形化地呈现给用户,方便用户管理数据采集过程。

2 DMA高速数据缓存

由于ARM系统通信速度的限制,要想避免数据的溢出,采集的数据需要先缓存到FPGA子系统的SRAM中。对于62路并行数据信号进行同步采集,采集频率为5 MHz时,数据量达310 Mb/s,因而选用了DMA的方式来高速地缓存采集数据。基于FPGA系统,数字信号首先在采样时刻被存放到FPGA的寄存器中,并在2个连续采样时刻之间的采样间隔内将FPGA寄存器中的数据通过多个虚拟的DMA通道存储到SRAM中。DMA高速数据缓存结构如图2所示。

嵌入式

采集系统选用了1片16 bit的SRAM,62路数字信号需要分为4组缓存入SRAM中,因而构建了4个DMA通道分时与SRAM连接。由于SRAM的访问时钟是FPGA系统中的最高时钟,所以SRAM的访问时钟选用了系统时钟。SRAM的访问时间为10 ns,系统时钟必须低于100 MHz,才能保证每次能将数据完整正确地写入SRAM中。本FPGA系统选用了50 MHz的系统时钟,这样采样时钟频率最高为5 MHz,一个采样周期内的数据有10个系统时钟周期的时间来处理。在FPGA系统的控制下,一个采样周期内的10个系统时钟有1个用于等待数据写入FPGA寄存器,4个用于向SRAM写入数据。数字信号并行采集的数据缓存时序如图3所示。

嵌入式

图3中‘0’时刻为采样时钟上升沿,此时刻FPGA系统将并行的62路数字信号缓存入62 bit寄存器中。由于传输延时时间受系统布线和FPGA内部布局的影响,系统时钟和采样时钟上升沿不一定是同步的,图中‘0’时刻到‘2’时刻之间可能有1~2个系统时钟周期,这段时间内,系统不动作等待采集信号可靠地写入寄存器,这样可以避免‘0’和‘1’时间间隔过小,采集的数据未完全写入寄存器的情况。在之后的‘2’时刻至下一周期‘0’时刻,系统完成写入SRAM的工作。其中‘2’时刻至‘3’时刻为第一写入周期,系统将寄存器中的0 bit~15 bit写入SRAM中;‘3’时刻至‘4’时刻为第二写入周期,系统将寄存器中的16 bit~31 bit写入SRAM中;‘4’时刻至‘5’时刻为第三写入周期,系统将寄存器中的32 bit~47 bit写入SRAM中;‘5’时刻至下一周期‘0’时刻为第四写入周期,系统将寄存器中的48 bit~61 bit写入SRAM中。这样,同一采样时刻的62通路的数字信号被分时地写入SRAM中,信号保持真实的同步信息。此时,系统的数据缓存速率达310 Mb/s。

上述方法中,‘5’时刻至下一周期‘0’时刻只进行了一次写入,实际上这段时间可以容纳6个写入周期,时间并没有被充分地利用。对其进一步扩展,将系统时钟周期充分地利用,可以同时采集更多通路的信号,将第六到第十个系统时钟周期也用于信号缓存,则可以同时缓存16×9=144路数字信号。这种情况下,系统的数据缓存速率可达720 Mb/s。

考虑采用SRAM的极限访问速率的情况,可以选用100 MHz的系统时钟,这时系统的数据缓存速率可达1 520 Mb/s。

选用的SRAM的数据写入极限速率为1 600 Mb/s,此种方法的数据缓存速率达SRAM数据缓存极限的95%,实现了高速的数据缓存。

3 缓存数据重组织

按照上述数据缓存的方法,同一通道的数据不是连续地存储在SRAM中。SRAM中的数据存储顺序如图4所示。图中第一列表示SRAM地址,offset为数据存储的初始地址偏移;第一行表示数据位,选用的SRAM中一个地址对应2字节数据,有16个数据位;剩余每个方格表示一个数据存储单元,方格里的数字表示该单元用于存储第几通道的数据。

嵌入式

定位一个通道的一位数据需要知道其对应的SRAM地址和位号。假设通道m的第i位数据由[addr(m,i),bit(m,i)]定位。分析SRAM中的数据存储顺序可知:

addr(m,i)=offset+1+[(m-1)/16]+(i-1)×4;

bit(m,i)=(m-1)%16。

其中m=1,2,3,…,64;i=1,2,3,4,…。

FPGA系统向ARM系统发送数据时,将同一通路的数据抽取出来,以一个字节为单位连续发送,所以需要对存储的数据进行重组织。在FPGA系统中,使用6 bit变量dch[5:0]表示通道号,其中000000(b)表示通道1(m=1),000001(b)表示通道2(m=2),依此类推。数据位计数i使用N位变量bitcnt[N-1:0]来表示,其中N由存储的总数据量决定,与通道号类似,全零表示i=1情况,1(b)表示i=2情况,依此类推。因而有:

[(m-1)/16]=dch[5:4];

(i-1)×4={bitcnt[N-1:0],00(b)};

(m-1)%16=dch[3:0]。

数据由FPGA中的变量定位表示为:

addr=offset+1+{bitcnt[N-1:0],dch[5:4]};

bit=dch[3:0]。

FPGA系统根据以上公式将各个通道数据逐位地从SRAM中读出,并移入移位寄存器中,从而把同一通路的数据以字节为单位连续地组织起来。

4 采集实验结果

为了进行测试,基于FPGA设计了专用信号发生器,产生62路数字信号用于测试。62路数字信号中包括4.07 kHz~520.8 kHz(50 MHz的96分频)的TTL信号及恒高、恒低电平信号。

由于数字信号通道数较多,这里以其中不包含恒高和恒低的9~12通道来说明采集精度,采集结果如表1。

嵌入式

依此可知,各通道采集结果与输入信号对应,说明个通道采集结果正确,本采集系统可靠。

以某型雷达做为被测对象,系统进行了实际工作测试。采集性能如表2所示。

嵌入式

本文介绍基于嵌入式技术的并行数字信号采集系统的设计,系统采用DMA技术实现了62路数字信号同步采集,用于某型雷达预留测试接口信号的采集,整体采集速率达310 Ms/s。利用本设计中提出的DMA方法,系统可以进一步扩展,从而实现128路数字信号同步采集,并使整体采集速率达1 520 Ms/s,此时SRAM的写入速度已成为主要的限制。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分