| 多路高速信号并行采样及实时存储解决方案 |
| |
| 作者:郑俭锋 来源:本站原创 点击数:395 更新时间:2008-4-2 |
|
您可以添加到网摘 让更多人关注此文章:
前言
在高端测量系统当中,通常需要同时采集许多路模拟信号,且这些信号的带宽、采样精度、有效时间等都各不相同。此时,如果采用基于MCU的方案,则由于必须同时面对多个不同的ADC而耗费掉MCU的大量资源。再者,当存在高速信号时,数据量将急剧增大,几乎无法实现。
高端测量系统的主要难题是,繁多的控制对象和庞大的数据量,究其根本就是实时性问题。解决这个问题的方法通常是选用高性能的MCU甚至DSP,或采用DMA技术。如基于混合信号MCU的DTC(Direct Transfer Control)解决方案。本文改变了基于MCU的分时控制和延时存储这一思路。提出一种采用FPGA的解决方案,通过FPGA+ADC实现多路并行采样,通过FPGA+SRAM实现高速实时存储,从而在根本上解决了上述问题,同时衍生出便于调整、易于扩展的优点。
总体方案
本方案的总体设计思路是:尽可能地减少MCU的负担,让采样和存储全部自主完成。为行文方便,我们称这个基于FPGA的采样和存储模块为信号采集控制器(Signal Collecting Controller),缩写为SCC,把信号采样和存储合称为信号采集。下文将以一个实际例子说明SCC的设计方案。该例子的原型应用于粒子测量系统中,共有5个信号通道,其中3个通道的采样率为1MSPS,数据宽度为12位;一个通道为10MSPS,数据宽度为12位;一个通道采样率为20MSPS,数据宽度为10位。总体方案如图1所示。需要说明的是,本文旨在阐述一种思路和方案,并非提供可照搬的详细设计。故对原型进行了抽象和删改,也未给出器件的具体型号。
图1中虚线框内是FPGA实现部分,即SCC,虚线框外是与SCC连接的片外元器件。ADC0~4为5个ADC,分别对应5个信号通道,下文简写为ADCx;ZBT-SRAM为零总线延时SRAM。AD_CTRL0~4分别为5个ADC的控制器,简写为AD_CTRLx;SRAM_CTRL为ZBT-SRAM的控制器;MCU_IF为SRAM与MCU接口的转换器。clk、dq为控制ADC的接口,dq是转换数据,可以是串行的,也可以是并行的,根据实际的ADC型号而定;mclk、w/r、addr、dio是SCC与ZBT-SRAM的接口;bus是SCC与MCU连接的控制、地址和数据总线。wr0~4分别为AD_CTRL0~4输出的数据有效信号,简写为wrx;d0~4为AD_CTRL0~4输出的并行数据,简写为dx;set、index、din、dout用以完成MCU对SRAM_CTRL模块的参数设置和查询,称为控制口;irq、den、data用以读取SRAM中的数据,称为数据口。
下面简略地描述一下SCC的工作过程,更具体的内容在SRAM_CTRL模块中介绍。AD_CTRLx从ADCx中获得数据,锁存在dx上,同时输出wrx信号。SRAM_CTRL扫描AD_CTRLx,当发现wrx有效时,读入数据dx。各路dx在SRAM_CTRL内部被按照ZBT-SRAM的数据宽度进行调整,SRAM_CTRL根据各路数据的地址空间分配产生寻址信号addr,同时输出控制信号w_r,输出相应数据dio,在mclk的驱动下,数据被写到SRAM中。MCU可从MCU_IF读取SRAM中的数据,首先通过控制口设置欲读取的数据通道号,然后发送开始读命令(注:需事先制定控制协议),SRAM_CTRL即把对应通道的数据陆续送到数据口,并输出数据有效信号den,MCU_IF根据den把data存进FIFO中。其中irq为中断申请信号,用以通知MCU存储器空或满,可根据实际情况选用,本例未使用。
如此,整个信号采集的过程已经彻底脱离了MCU的控制,可以完全自主地进行,即MCU对于信号采集是不可见的。反过来,还要求信号采集对MCU读数据不产生任何干预,让MCU就像读取一块独占的存储器一样,即信号采集对于MCU是透明的。这些都需通过SRAM控制器来实现。
[1] [2] 下一页
|
没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。 更多评论
|
|
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。 |
|
|
|