DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 106|回复: 0
打印 上一主题 下一主题

基于DMA的并行数字信号高速采集系统

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-21 23:49:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随着数字电子技术的发展,大型电子设备中数字电路的比例越来越大[1]。为便于故障诊断,一些电子设备(如雷达系统)预留了大量的数字信号检测口[2]。采用示波器采集此类测试接口的信号时,由于示波器采集通道数的限制,无法保留同步信息;采用逻辑分析仪或ATE设备不但价格昂贵,而且不便于携带,不适宜广泛使用。因此,设计一款便携式并行数字信号高速同步采集系统,为大型电子设备的维护提供支持是十分必要的。    此类检测口信号采集中多通路、高采样率的特性要求瞬时大量数据的高速缓存实现方法。文献[3]以硬盘为存储介质,采用DMA技术实现了接近6 Mb/s的存储速率。文献[4],文献[5],基于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的写入速度已成为主要的限制。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2026-1-26 04:55 , 耗时 0.098616 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表