下面是小编帮大家整理的换体DMA高速数据采集电路的CPLD实现,本文共5篇,希望对大家有所帮助。

篇1:换体DMA高速数据采集电路的CPLD实现
摘要:介绍了块体DMA高速数据采集电路原理及其CPLD实现。用CPLD设计双端口RAM缓存、控制译码、时序逻辑电路,很好地解决了电路元件所占体积大、电路复杂、不能实现在线升级等问题,大大提高了系统的整体性能。
关键词:换体DMA CPLD 双端口RAM 在线升级
在许多仪器和控制系统中,高速数据采集电路是必不可少的,也是经常需要解决的问题。数据采集电路设计方法很多,但往往离不开A/D转换电路、数据缓存电路、控制逻辑电路、地址发生器、址译码电路等。而数据缓存、控制逻辑、地址译码等电路通常是由RAM芯片、与非门、触发器、缓冲/驱动器等构成,导致数据采集电路复杂、芯片繁多,特别是硬件的固定使得采集系统在线升级几乎不可能。很多情况下只有重新设计电路和印刷板,重新焊接和调试,造成开发周期长、成本大大增高。复杂可编程逻辑器件CPLD的应用,为这些问题的解决提供了一种好的办法。利用CPLD芯片本身集成的上万个逻辑门和EAB,把数据采集电路中的数据缓存、地址发生器、控制译码等电路全部集成进一片CPLD芯片中,大大减小了系统的体积,降低了成本,提高了可靠性。同时,CPLD可由软件实现逻辑重构,而且可实现在系统中编程(ISP)以及有众多功能强大的EDA软件的支持,使得系统具有升级容易、开发周期短等优点。在数据采集有电路中,采用换体DMA技术不但大大地提高了数据采集的速度,而且弥补了数据采集中可能丢失数据的缺陷。
篇2:换体DMA高速数据采集电路的CPLD实现
系统原理框图如图1所示。在时序电路的控制下,模拟输入开关将多达16路(单端输入)或8路(差分输入)的模拟输入信号经多路开关送至放大器的输入端,放大后由内含采样/保持电路的模数转换器AD774B转换成数字量,转换完的数字量经时序电路的控制写入两个存储体的一个(例如存储体0)中。每个存储体有4KB的容量,但实际使用中存储容量可设定为小于4KB。当计数到设定的存储空量后,控制电路产生换体信号,后续的A/D转换数据自动地存入另一个存储体(存储体1)。同时控制电路向主机发出DMA请求信号,主机响应请求后在时序电路配合下,从已存储规定数据的存储体(存储体0)中读入所存的数据。这样存储体0和存储体1交替存取,直到规定的换体次数计完为止。
(本网网收集整理)
数据采集电路中,时序控制电路、地址发生器、多路控制驱动器等芯片众多,占用了大部分体积,逻辑时序复杂。用CPLD实现这些电路则显得简单明了,如图2所示。图2中地址发生器、双端口RAM、时序控制等电路都可以用HDL语言或原理图,或是两者结合来实现,使电路开发简单、灵活、方便。
2 采用CPLD实现换体DMA
CPLD的开发必须经过前期的逻辑设计、前仿真、后仿真、目标代码下载及在调试等过程,该设计过程是借助ALTERA公司的EDA软件MAXPLUS II 10.1来实现的。MAXPLUS II支持原理图输入、HDL语言输入、设计波形输入等。本设计则是将原理图和HDL语言输入相结合,这样既可以加快开发速度,又不失灵活性。本电路设计所用的CPLD芯片一FLEX10K30E。它是ALTERA公司1995年把EAB与逻辑阵列块相结合的产品,增加了许多FLEX10KA、B系列没有的新特点;FLEX10K30E内有30000个逻辑门,247576个RAM位,支持3.3V、5V多种电源,速度等级高。
2.1 数据缓存――双端口RAM
双端口RAM的.核心是存储器阵列,它的读与写相互独立,有各自的时钟线、地址总线、数据总线和使能端。在数据采集时,数据进入存储器进行缓存,同时CPU可以从缓存中取出数据读进计算机内存。在传统的双RAM换体方案中要实现换体,存储器芯片必须使用偶数片来交互存储;当A/D数据位数超过8位时,需要另加芯片来存储高于8位的数据。在CPLD中设计双端口RAM模块不但实现了双RAM换体功能,而且使缓存RAM的数据位数、存储量大小可以根据需要任意配置。
如上所述,在CPLD中设计双端口RAM,可以有两种方式:原理图输入和HDL语言输入。本设计采用的是MAXPLUS II库中的LPM_RAM_DP宏,原理图如图3所示。
在LPM_RAM_DP宏中总共有10个可配置参数。通常情况下,只配置LPM_WIDTH(数据宽度)、LPM_WIDTHAD(地址总线宽度)、USE_EAB(是否使用嵌入式阵列块EAB)三个参数。在本设计中,AD774B的数据宽度是12位,转换速度为8微秒,所以配置了LPM_WIDTH=12,LPM_WIDTHAD=10(缓存容量为1K),USE_EAB=ON。对于缓存的大小,可以在调试过程中根据具体采集速度和缓存要求进行在线调整,而不影响其他逻辑电路。
图3LPM_RAM_DP模块中rdaddress、rden、rdclock、rdclken、q分别为读端的地址线、使能端、时钟线、时钟使能和数据线;data、wraddress为写端的数据总线和地址总线。图3的双端口RAM模块并没有BUSY端,当写地址和读地址相同时,数据位冲突,读写不能正常工作。在实际工作中,这种问题是不应该出现的。结合本系统的具体需要,在此引入了存储器分而概念,即把1k字节的双端RAM分为2页,每页512字节,分别为读缓存页和写缓存页,两者相互交换。当采集数据量达到512字节时,系统马上申请DMA传送,把刚转换完
的第一页中的512字节数据送给计算机,传送结束后等待下一次DMA申请;与此同时,A/D继续工作,转换的数据放在第2页0~511地址中。任何时候读写都分别在不同的页工作,从而有效地避免了数据冲突,但又不影响数据传输速度。具体的分页控制主要由地址发生器设计确定。
2.2 分页地址发生器
分页地址发生器不但要产生双端口RAM的读写地址,而且还要为缓存器分页;页写满时,还要提供DMA传输申请信号。为了增强灵活性,读写地址发生器由VHDL语言编程集中在一个模块实现,部分程序如下:
signal wtmp:integer range 0 to 1023;
signal rtmp:integer range 0 to 1023;
signal page:intefer range 0 to 1;
if(wclk'event and wclk='1')then
if(wtmp>1023)then wtmp<=0;
else wtmp<=wtmp+1; --wtpm为写地址值
end if;
if(0= else page<=1; --“0”代表第0页 end if; --“1”代表第一页 if(twmp=512 and wtmp=1023)then page_full<='1'; else page_full<='0'; --page-full为页写满标志,同时为DMA传送申请信号 end if; end if; if(page=0)then rtmp<=0; --不同的页置不同的数据读地址初始值 else if(page=1)then rtmp<=512; end if; if(rclk'event and rclk='1')then if(en='1' and rtmp<1024)then rtmp<=rtmp+1; end if; --rtmp为读地址值 end if; 代码经过编译生成的原理框图如图3的ADD_CRE-ATE模块。在图形输入编辑环境下,可以把它作为一个标准的原理图与其他模块连接;写地址时钟WCK由AD774B的STS端产生,每一组数据转换结束后,地址发生器加1,读地址时钟RCK由DMA应答信号DACK提供;PAGE_FULL在0页或1页满时变为高电平,经D触发器申请DMA传输,把刚满页的数据送给计算机内存。 2.3 时序逻辑电路的设计 在数据采集电路中,时序逻辑电路主要解决地址译码、时序逻辑控制、数据锁存等功能。用普通的中小规模集成电路实现,电路组成庞大;而用VHDL语言实现则简单灵活、易于更新升级。图3中的微机译码电路、数据缓冲器、D触发器等都可以在MAXPLUS II的图形编辑环境下,从库中直接调出。计算机在每次DMA传送中都向外设输出一个应答信号DACK和读允许信号IOR,利用这个特点,正好把它们作为读缓存的地址时钟,即每DMA传送一次,读地址为1;AD774B每转换完一组数据,在STS端输出由低电平转换为高电平,刚好给写缓存提供写地址时钟,同时经过适当延时,STS又可以送到R/C端作为A/D下一次转换的启动信号。 3 DMA的应用 数据传送的查询方式和中断方式都是在CPU的控制下进行的,因而传输速度受CPU指令运行速度的限制。直接存储器存取方式,即DMA方式。存储器与外设在DMA控制器控制下,直接传送数据而不通过CPU,传输速率主要取决于存储存取速度。所以在DMA过程中,数据传输完全由DMA控制器8237A控制,不占用CPU时间。 在本换体DMA高速数据采集电路中,用复杂可编程逻辑器件CPLD来实现数据缓存、带分页功能的地址发生器以以复杂的逻辑和时序电路等,使得电路大大简化;同时硬件电路软件化,具有可在线更新、升级容易、保密性强等特点。本换体DMA高速数据采集电路已成功地应用在生物医 学仪器、核谱获取电路中。 CPLD在多路高速同步数据采集系统中的应用 关键词:VHDL CPLD 高速同步数/模转换 容错和自检 并行接口 移植性 引言 CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)是在传统的PAL、GAL基础上发展而来的,具有多种工作方式和高集成、高速、高可靠性等明显的特点,在超高速领域和实时测控方面有非常广泛的应用。与FPGA相比,CPLD比较适合计算机总线控制、地址译码、复杂状态机、定时/计数器、存储控制器等I/O密集型应用,且无须外部配置ROM、时延可预测等。目前的CPLD普遍基于E2PROM和Flash电可擦技术,可实现100次以上擦写循环。部分CPLD支持ISP编程或者配置有JTAG口,对于批量小、品种多的模板开发极为有利。而用VHDL设计的程序,借助EDA工具可以行为仿真、功能仿真和时序仿真,最后通过综合工具产生网表,下载到目标器件,从而生成硬件电路。 (本网网收集整理) 1 系统设计原理及框图 以Altera公司7000S系列CPLD产品之一EPM7128S-10为控制核心,控制模/数转换电路,最多可完成32路模拟数据的16位高速同步A/D转换。 图1为与A/D转换电路相关的系统外围电路框图。外部32路模拟输入通过调理电路后,CPLD控制多路切换器选通某一路信号送入A/D转换器(AD676)进行A/D转换,转换结果经过数据缓冲在合适的时候通过总线被读入处理器。一般的设计思路如下:①主处理器直接控制A/D转换电路,完成模拟输入信号的采集保持、A/D转换器的控制、通道的切换、数据的读取以及控制注入信号完成模拟通道的自检等。这种解决方案占用主处理器大量的I/O资源和处理时间,在高速采集与大计算量的时实系统中是不可取的:一方面因为处理器的I/O资源极其有限,同时又要求大量的汇编软件配合,不利于设计的移植;另一方面由于频繁地执行I/O操作完成相对定时关系,来实现高速数据采集,不利于系统调度软件的设计的其它软件模块的时实执行,由于此段I/O操作类似于原子操作,很难解决其它模块响应时间可能较长的矛盾。②采用其它廉价的从处理器,如MCS-51单片机来控制上述过程,使之与主处理器并行化。但此时从处理器与主处理器之间的高速数据实时交换就成为瓶颈,而且由于MCS-51单片机亦为软件化流程控制,存在跑飞的可能,两处理器的同步又成为新的问题。应用CPLD器件就可以很好地解决上述矛盾,实现配置随意可改写和高速硬件流控制等。随着ISP器件的发展,CPLD已经日益广泛地应用到高速数据采集系统中,但都是很考虑设计本身的容错、自检能力和使用的灵活性,不利于故障的定位和嵌入式应用的移植。本设计中采用CPLD作为A/D转换电路的控制器,和主处理器并行交互数据,很好地解决了上述矛盾。 为突出重点,EPM7128S、AD676、LF398等器件的简介此处不作介绍,仅列出AD676的控制时序,如图2所示。 图2 多路模拟信号的同步采样一般有两种实现方法:一种为多个A/D转换器同时进行转换;另一种为仅有一个A/D转换器,各通道同时采样,然后分时转换。考虑到16位高速A/D转换器AD676的价格因素,采用后一种方案。AD676有三个控制信号:SAMPLE、AD-CLK、CAL。它们需要一定的时序配合才能正常工作,如图2所示。由于AD676的转换结果不具备三态输出功能,所以需增加74F574和总线进行隔离,为此配置控制信号WRAD、RDAD;同时要考虑到32路模拟信号的采样保持控制S/H、多路切换器的控制信号M1A4~M1A0,以及输入模拟信号选择M0A1~M1A0、数据准备好信号INT1等共14个。CPLD和处理器采用并行接口,因此其输入信号有:系统复位信号RST、处理器的读/写信号RD/WR、片选信号IOSTROBE、外部时钟输入CLK、辅助地址信号A20~A17和A5~A0、AD676的反馈输入BUSY,共22个输入。外加双向数据总线D07~D00。设计中没有将总线隔离器74F574集成到CPLD中,主要考虑到保留适当的I/O等资源用于系统的地址译码和其它辅助功能。地址译码等辅助模块比较简单且与特定的处理器相关,故此处不作介绍。 虽然有复位默认值,但CPLD为灵活控制多路模拟量的同步A/D转换,要求处理器正确设置两个控制参数,即进行数/模转换的模拟量通道的总个数SUM和数/模转换的'初始通道号chan;然后再对CPLD写入启动A/D转换命令,这样CPLD即可脱离处理器,控制A/D转换电路。CPLD首先按照LF398的时序要求产生其所需的采样保持信号S/H完成32路模拟量的同步采样,然后按照图2所示的通常转换时序控制AD676去完成一次转换。一旦该次转换完成,使能WRAD信号,锁存转换结果到74F574,并发出数据准备好信号INT1,同时标识内部状态信号,作为中断请求通知处理器,或者供处理器查询状态。CPLD将一直等待处理器将该次转换结果取走才取消此标示信号。在CPLD等待的过程中,处理器亦可命令CPLD提前结束转换,以适应不同的应用要求。转换结果取走后,CPLD清除内部的标识信号和数据准备好信号,SUM的映像减1,若不为0,chan的映像加1,输出到M1A[4..0]去切换至下一通道,继续按照图2所示的通常转换时序工作;若为0,则该次采样转换完成,等待处理器的下一次启动信号。这样,只占用了处理器的一个中断请求资源和少数外部空间,就实现了最多至32路模拟信号的同步高速数模转换。为使设计具有一定的容错功能,在A/D转换器空闲时,处理器才可以启动A/D自校准测试,但此时CPLD应该防止处理器误启动A/D转换。当A/D转换器空闲或者A/D自校准已经结束时,处理器才可以进行A/D转换工作。同样,此时CPLD应该防止处理器误启动A/D自校准。为使CPLD能支持处理器的检错功能3,应该使CPLD以及A/D转换器的状态信息可以被处理器随时读取,以便在系统级上定位故障。同时,CPLD可以选择调理电路的模拟输入信号源,便于处理器检测调理电路。 图3 为达到以上的功能,在设计中主要设置了四大功能模块,分别为时钟分频模块、控制译码模块、总线接口模块、状态机模块,设计原理如衅3所示。时钟分频模块用于产生AD767的转换时钟。为简化设计,达到高速和简化的目的,此模块的分频系数由设计固化。控制信号译码模块用于完成处理器对CPLD片内模块的寻址和译码,为一简单译码逻辑和触发电路。总线接口模块用于完成处理器和A/D转换控制器的数据交换;同时完成AD767的自校准信号CAL的控制,如图2所示的自校准时序。需要注意一点的是,在自校准的过程中,SAMPLE信号必须保持低电平,否则出错。状态机模块用于产生A/D转换的时序,如图2所示的通常转换时序。在转换的过程中,CAL信号必须保持低电平,否则出错;状态机模块同时完成对多路切换器的控制。图2所示的各信号的相对定时关系此处不作说明,请查阅AD676的数据手册。 为达到图2所示SAMPLE、CAL时序的相互闭锁关系,从状态机模块引出其内部状态信号到总线接口模块,一方面,状态机的状态可以随时被处理器感知;另一方面用于闭锁CAL信号,即闭锁自校准。详细地说,就是在A/D转换期间,在图2所示的通常转换时序中,从SAMPLE变高到BUSY信号再次变低以前,即使处理器再次写入了启动自校准命令,CPLD亦闭锁CAL信号的产生。为便于安全启动CAL信号,在本次转换完成或全部转换完成时,满足一定的相对时序即可启动。同理,将总线接口模块内控制CAL信号的状态机的状态引入状态机模块,用于在自校准期间,闭锁SAMPLE信号的产生,即闭锁处理器启动A/D转换的命令。这样,A/D转换控制器就具有很好的容错能力。无论何时,处理器都可以通过读取SAMPLE、CAL、BUSY、中断请求、状态机的状态,来监测CPLD、AD676等的工作和判断损坏与否。通过处理器的配合就使CPLD支持系统的在线自检,解决了以往类似设计中存在错误而处理器又无法进行故障定位的问题。 图4 2 系统仿真和验证 以上设计用VHDL语言描述完成后,首先在ACTIVE-HDL5.1环境下进行编译、综合、适配后再时序仿真;但这只是纯逻辑验证,此时时序仿真图中没有包含任何硬件延迟信息。结果正确后,在MAX+PLUSII 10.0环境下进行编译、综合、适配后,再进行时序仿真验证。由于考虑了硬件因素,选择MAX7000S系列的EPM7128STC100-10器件后,该器件的摆率位Turbo bit必须选中,否则在高速时钟输入时,MAXPLUS的仿真结果不正确。图4即为在MAXPLUS下的时序仿真结果,模拟40 MHz的CPLD时钟输入和主处理器50ns的外部存储器访问周期,可以达到AD676的最快转换速度。实际电路也验证了这一点。 考虑到CPLD也完成系统的一部分译码功能,此时,MAXPLUS所产生的报告文件表明资源利用情况,如表1所列。在文章的最后详细给出了状态机模块的时序电路的VHDL设计程序。 表1 最后,通过EPM7128STC100-10(40MHz)的JTAG口,在MAX+PLUSII 10.0环境下,下载到器件中,在TMS320C32(40MHz)和MC68332(16.78MHz)两种CPU构成的数据采集系统中得到了验证。由于A/D转换控制器与处理器采用并行接口,极大地减轻了CPU的负荷,解决了CPU的I/O资源严重不足的矛盾,提高了硬件电路的集成性、可靠性及保密性,可以很方便地移植到多种处理器,具有一定的实用性。 状态机模块的时序电路VHDL设计程序见网站(收集整理)。 1 引言 高速数据采集系统目前已在雷达、声纳、软件无线电、瞬态信号测试等领域得到广泛应用。它的关键技术是高速ADC技术、数据存储与传输技术和抗干扰技术。本文在分析了高速多通道数据采集系统中存储子系统的性能要求和设计方案的基础上,提出了高速缓存和海量缓存方案,并将该方案成功地应用于DSP多通道超声信号采集与处理系统中。 对高速多通道采样数据存储的性能要求:一是高速性,现在高速数据采集中所用的ADC已达到几十甚至几百MSPS的水平,这就要求采样数据存储器的速度也要与之匹配,也就是采用高速缓存;二是大容量,其原因是多通道高速数据采集会产生巨大的数据流。一个4通道40MHz采样率16位精度数据采集板并行采样0.1s将产生32MB的数据量,所以,通常需要海量缓存来存储采样数据。 (本网网收集整理) 2 高速缓存的实现 通常构成高速缓存的方案有三种: 第一种是FIFO(先进先出)方式。FIFO存储器就象数据管道一样,数据从管道的一头流入、从另一头流出,先进入的数据先流出。FIFO具有两套数据线而无地址线,可在其一端写操作而在另一端读操作,数据在其中顺序移动,因而能够达到很高的传输速度和效率,且由于省去了地址线而有利于PCB板布线。缺点是只能顺序读写数据,因而显得比较呆板,而且大容量的高速FIFO非常昂贵; 第二种是双口RAM方式。双口RAM具有两套独立的数据、地址和控制总线,因而可从两个端口同时读写而互不干扰,并可将采样数据从一个端口写入而由DSP从另一个端口读出。双口RAM也能达到很高的传输速度,并且具有随机存取的优点,缺点是大容量的高速双口RAM很难得且价格昂贵; 第三种是高速SRAM切换方式。高速SRAM只有一套数据、地址和控制总线,可通过三态缓冲门分别接到A/D转换器和DSP上。当A/D采样时,SRAM由三态门切换到A/D转换器一侧,以使采样数据写入其中。当A/D采样结束后,SRAM再由三态门切换到DSP一侧以便DSP进行读写。这种方式的优点是SRAM可随机存取,同时较大容量的高速SRAM容易得到且价格适中,缺点是切换控制电路比较复杂,且只能由A/D转换器和DSP分时读写。 综合考虑以上三种高速缓存方案的性能、价格和实现方便性后,笔者选用第三种方案(即高速SRAM切换方式)来构成A/D采样高速缓存。系统的采样与存储部分的原理框图如图1所示。 图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选用EP1K50,它的逻辑门数为5万门,内含10个EAB(嵌入阵列块)。每个EAB实际上是4kbit的RAM,可以用来构造FIFO、双口RAM等。本系统应用两块EAB构成了两个256×16bit的FIFO,因而可将两路A/D转换结果分别送入两个FIFO,然后在FPGA的输出端将两个FIFO中的数据交替地读出写入IS61LV25616,每个FIFO每次读出128个采样数据。A/D转换器的输出为12位数据,而FPGA的片内FIFO和片外IS61LV25616的数据字宽都为16位。在存储、传送时,将高4位补0即可。两路A/D采样速度都为25MHz,复用后输出的速率为50MHz,这个速度对于IS61LV25616和EP1K50都是完全可以达到的。FPGA的作用除了构造FIFO以实现数据通道复用外,还可以作为协处理器由板上DSP控制来进行一些简单高效的数据预处理(如插值、取平均、FIR滤波等)。同时可使用EDA工具MAX+PLUSⅡ10.0来对EP1K50的逻辑算法进行设计、编译并仿真,然后下载到EP1K50中实现预定功能。 除了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读取采样数据。 3 海量缓存的设计实现 本系统使用了两片256k×16bit容量的SRAM作为高速缓存,系统中的4个通道可同时存储每通道128k点采样数据。在25MHz的采样频率下,一次可采集存储5ms多的波形数据。对于超声信号的单次发射/接收来说,这种采样时间长度已经足够了,但是对于多批次采样数据的存储就比较困难了。若要通过PCI总线、USB接口等快速通讯方式将采样数据传到主机进行处理或存入硬盘,则应满足实时传输采样数据所需要的巨大总线带宽。以25MHz、12bit采样精度为例,4个通道同时采样将产生150MB/s的数据流,这对于任何总线来说都难以做到。解决的办法是在数据采集板上采用DSP对采集的数据进行预处理,以使处理后的数据量大大减少,然后再上传给主机以减轻总线传输压力和主机处理负担,从而避免数据通讯瓶颈。这种由板上DSP执行计算密集型任务并由上位主机进行调度管理的分布式处理机制可广泛用于许多高速数据采集与处理系统中。而为板上DSP配备大容量内存来作为它的程序和数据存储器是十分必要的。考虑到本系统所用DSP的结构特点和大容量采样数据的存储需要,笔者选用SDRAM作为板上海量内存。 系统中的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 结论与改进 通过对高速数据采集系统中几种A/D采样高速缓存的实现方案进行对比分析,结合本系统的结构特点和性能要求,采用SRAM作为A/D高速缓存所构成的采集系统具有速度高、容量大、控制方便、价格适中等优点。选用高速、大容量、低价格的SDRAM作为海量缓存则可通过其外部口DMA通道将高速缓存中的采样数据倒入海量缓存。这种设计使系统的A/D采样 存储兼具高速和海量的优点,同时具有很高的性能价格比。而其尚存的不足之处是:ADSP和A/D转换器通过切换总线方式分时访问高速缓存在一定程度上影响了系统的实时性。作为改进措施可以引入双体存储交替访问的方案,即再增加两片IS61LV25616做成一组高速缓存以和已有的两片IS61LV25616构成双体存储区。由于该方式中的ADSP和A/D转换器以乒乓方式交替访问这两组缓存,因此,ADSP和A/D转换器能并行工作而无需互相等待,从而提高系统的实时性。 高速数据采集系统中高速缓存与海量缓存的实现 关键词:高速数据采集;高速缓存;海量缓存;DSP;FPGA 1 引言 高速数据采集系统目前已在雷达、声纳、软件无线电、瞬态信号测试等领域得到广泛应用。它的关键技术是高速ADC技术、数据存储与传输技术和抗干扰技术。本文在分析了高速多通道数据采集系统中存储子系统的性能要求和设计方案的基础上,提出了高速缓存和海量缓存方案,并将该方案成功地应用于DSP多通道超声信号采集与处理系统中。 对高速多通道采样数据存储的性能要求:一是高速性,现在高速数据采集中所用的ADC已达到几十甚至几百MSPS的水平,这就要求采样数据存储器的'速度也要与之匹配,也就是采用高速缓存;二是大容量,其原因是多通道高速数据采集会产生巨大的数据流。一个4通道40MHz采样率16位精度数据采集板并行采样0.1s将产生32MB的数据量,所以,通常需要海量缓存来存储采样数据。 2 高速缓存的实现 通常构成高速缓存的方案有三种: 第一种是FIFO(先进先出)方式。FIFO存储器就象数据管道一样,数据从管道的一头流入、从另一头流出,先进入的数据先流出。FIFO具有两套数据线而无地址线,可在其一端写操作而在另一端读操作,数据在其中顺序移动,因而能够达到很高的传输速度和效率,且由于省去了地址线而有利于PCB板布线。缺点是只能顺序读写数据,因而显得比较呆板,而且大容量的高速FIFO非常昂贵; 第二种是双口RAM方式。双口RAM具有两套独立的数据、地址和控制总线,因而可从两个端口同时读写而互不干扰,并可将采样数据从一个端口写入而由DSP从另一个端口读出。双口RAM也能达到很高的传输速度,并且具有随机存取的优点,缺点是大容量的高速双口RAM很难得且价格昂贵; 第三种是高速SRAM切换方式。高速SRAM只有一套数据、地址和控制总线,可通过三态缓冲门分别接到A/D转换器和DSP上。当A/D采样时,SRAM由三态门切换到A/D转换器一侧,以使采样数据写入其中。当A/D采样结束后,SRAM再由三态门切换到DSP一侧以便DSP进行读写。这种方式的优点是SRAM可随机存取,同时较大容量的高速SRAM容易得到且价格适中,缺点是切换控制电路比较复杂,且只能由A/D转换器和DSP分时读写。 综合考虑以上三种高速缓存方案的性能、价格和实现方便性后,笔者选用第三种方案(即高速SRAM切换方式)来构成A/D采样高速缓存。系统的采样与存储部分的原理框图如图1所示。 [1] [2] [3] [4] ★linux tar实现分卷压缩与还原数据方法 linux操作系统 文档为doc格式篇3:CPLD在多路高速同步数据采集系统中的应用
篇4:高速数据采集系统中高速缓存与海量缓存的实现
篇5:高速数据采集系统中高速缓存与海量缓存的实现