基于TMS320C6713和FPGA的高速实时采集系统的设计与实现
2008-03-27
作者:林 林, 侯春萍, 闫 浩, 柳
摘 要:介绍了基于TMS320C6713和Altera EP2C20F256的高速实时数据采集" title="实时数据采集">实时数据采集处理系统的软硬件设计方案。该方案以TMS320C6713为核心处理器,用EP2C20F256实现输入输出FIFO。实验结果表明,在一定的算法复杂度的情况下,对信号的采样频率可达到6MHz,该方案完全可以满足大多数场合对数据采集及处理的精确度和实时性" title="实时性">实时性的要求。
关键词:TMS320C6713 EP2C20F256 高速实时采集
高速实时采集处理系统是现代以微处理器为核心的各种控制、实时监控、实时信号处理系统的核心组成部分。由于在控制、实时监控等领域对所监控信号精确度的要求越来越高,所以这种系统必须可以提供高速的采样速率" title="采样速率">采样速率,以满足在一定的时间内可以采集更多个采样点的要求,使采样系统更加精确。同时,又由于一些应用对于实时性的要求,系统必须在满足高速采样的条件下,还可以对信号进行快速、实时地处理。针对以上问题本文提出了一种既能满足高速采样要求,又能提供实时处理能力的数据采集处理系统的设计方案。
该方案根据实际要求,采用了美国德州仪器公司推出的TMS320C6713作为核心处理器。TMS320C6713是德州仪器公司推出的一款浮点型高性能DSP,主频为167MHz,处理能力达到1200MFOLPS。其主要特点如下[1]:
(1)采用了超长指令字(VLIW)体系结构,有8个独立功能单元,32个32bit通用寄存器,一个时钟周期同时执行8条32bit指令,且所有指令都是条件指令。
(2)硬件支持IEEE的单精度和双精度指令,字节寻址(8、16、32bit 数据)。
(3)L1/L2存储器结构,4KB一级程序缓存,4KB一级数据缓存,64KB二级缓存。
(4)16个独立通道的EDMA,每个通道对应一个专用同步触发事件,使得EDMA可以被外设中断、EDMA传输完成等事件触发。
(5)32bit外部存储器接口(EMIF),与异步器件(SRAM、EPROM)和同步器件(SDRAM、SBSRAM)无缝连接,一共有256M可寻址范围。
Altera公司的EP2C20F256是低功耗Cyclone II FPGA家族成员之一[2],具有18K个逻辑单元,240KB的嵌入式RAM,26个18×18的嵌入式乘法器,4个系统时钟管理锁相环,最大可达315个I/O口。本系统用此款FPGA设计了复杂的逻辑,充分利用了FPGA的优势,使尽可能多的工作软件化,这样无论调试还是修改都极为方便。利用EP2C20F256在本系统中设计两个软FIFO作为DSP接收数据的缓存,这样可以减少外部对DSP的中断次数,提高DSP处理的效率。此外,还有与DSP接口的外围电路,实现与DSP的无缝连接。
1 高速实时数据采集系统的硬件设计
系统由两组A/D、D/A" title="D/A">D/A组成,一组为12bit,可配置:另一组是双路10bit,可以通过软件设置选择哪一路A/D、D/A来工作。为了保证系统的高速实时性,用EP2C20F256(FPGA)设计了两个软FIFO,以减少对DSP的中断次数。虽然总体会有延时,但避免了DSP中断带来的开销。时钟的同步设计对于系统的正常工作起到了至关重要的作用。DSP挂载了用两片4M×16bit的SDRAM组成一个4M×32bit的SDRAM,以便与TMS320C6713的32位数据总线相匹配,充分利用6000系列DSP的性能优势。DSP还挂载了一个128KB的ROM,用于固化程序。因为DSP的EMIF接口外接了多个存储器(利用FPGA设计的FIFO及控制线),所以必须设计总线隔离使各个存储器工作都与其他存储器互不影响。此外,系统外围包含了电源模块、下载接口、时钟同步与系统复位电路。系统的硬件示意图如图1所示。
1.1 基于 FPGA的两个4M、12bit FIFO的设计
FIFO在整个系统中被用作输入数据和输出数据的缓存,最主要的目的就是减少A/D对DSP的中断次数,将一个数据中断一次变为2 048个数据中断一次,这样减少了中断的断点保护、现场保护等额外开销,给处理数据争取了尽可能大的时间,但是整体的时延将会增大,不过所引起的时延是在设计指标限定内。采用quartus II设计的FIFO结构图如图2[2]所示,属于异步FIFO,故与DSP的异步读写相匹配。
图中,AOE、CE_wr_en_n、fifo1_rd_clk_ARE、fifo2_wr_clk_AWE、dspdata[11..0] 是与DSP的EMIF相接的信号,wruseword[11..0]再做些逻辑作为中断信号给到DSP的INT4引脚,所有这些都按照标准异步时序[1~2]来完成与DSP的通信, Fifo1_wr_en、fifo1_wr_clk、AD2FPGA_data[11..0]用来与A/D完成数据的读入。fifi2_read_clk、FPGA2DA_data[11..0]用来与D/A完成数据的写出。
1.2 硬件系统中时钟的提供与各设备间的同步
硬件系统中A/D、D/A、FIFO等设备的时钟由DSP控制FPGA来产生,DSP通过EMIF接口把采样速率通知FPGA,FPGA则根据这个信息用锁相环将晶振的时钟进行分频,然后提供给A/D、D/A、FIFO。
本系统将A/D、D/A、FIFO由同一时钟控制,这种同步关系保证了通信的稳定性。由于入FIFO与出FIFO是同一时钟,在入FIFO收到一个数的同时,出FIFO也输出了一个数据,从而避免了FIFO的上下溢出。
1.3 EMIF接口[3]、总线隔离与地址空间的分配
EMIF接口是6000系列DSP以并行总线方式访问外部设备的唯一途径,它支持的同步器件包括SBSRAM、SDRAM,异步器件包括SRAM、ROM以及FIFO等,本系统中SDRAM、Flash ROM、FIFO都是通过EMIF与DSP进行通信的。
因为这些器件都是通过同一数据总线和地址总线进行数据通信,所以需要进行总线隔离,本系统在每个器件前都加了三态门,通过EMIF的控制总线,如ARE、AWE、AOE、CE和地址总线进行控制,以使DSP在访问一个器件时其他器件都为高阻状态。
C6713的地址空间被分为四个部分:CE0、CE1、CE2、CE3。本系统将CE0作为SDRAM的寻址空间,CE1作为Flash ROM的寻址空间,CE2作为FIFO与DSP之间数据信息的寻址空间,CE3作为FIFO与DSP间控制信息的寻址空间。
1.4电源管理、JTAG接口和FPGA配置芯片[4]
本系统需要外部直接提供一个5V的电源,电源的输出电流不能小于3A,这个数据是根据所有器件的功耗算得的。系统中需要的其他电压,如3.3V、2.5V、1.8V、1.2V等由若干电源芯片如MAX660、MAX603、MAX604从5V变压得到。
本系统对DSP和FPGA都提供了程序下载口,TMS320C6713(DSP)的七个JTAG仿真脚/TRST、TMS、TDI、TDO、TCK、EMU1和EMU0连接到一个14脚双排插头上,可与XDS510仿真器相连,系统调试时可通过PC机下载程序进行调试。EP2C20F256(FPGA)的TMS、TDI、TDO、TCK接到一个10脚双排插头上,作为JTAG模式的下载口。
此外,FPGA还需要加上一个配置芯片EPCS4SI8,作用类似于DSP的Flash ROM,把程序固化在里面,在每次上电时配置芯片的程序会加载到FPGA中。
2 高速实时数据采集系统的软件设计
整个系统的工作流程如图3所示,分为初始化DSP、初始化FPGA、等待中断、中断处理几个过程。DSP程序由DSP BIOS和CSL相结合完成。
2.1 初始化DSP、FPGA
初始化DSP主要完成对DSP寄存器的初始化设置,根据选择来决定是通过EDMA搬移数据还是由C程序编写搬移数据来初始化不同的寄存器。如果选择EDMA搬移数据,那么需要初始化的内容包括:使能全局中断、使能EDMA完成中断、对读通道事件寄存器清0、对读写通道的CIPR清0、使能读写通道的通道中断使能寄存器。如果选择由C程序编写搬移数据,那么需要使能EINT4中断[5]。
初始化FPGA是DSP通过EMIF告诉FPGA选择哪路A/D、D/A,软FIFO存满多少给出中断,以及FPGA产生多大的时钟给A/D、D/A和软FIFO。
2.2 数据的搬移与处理
数据搬移方式有两种:EDMA搬移方式及通过C语言来实现数据搬移,本系统可以工作在两种方式下,由软件来决定。EDMA工作方式不需要由CPU参与,所以减轻了CPU的工作压力,使其可以做其他的工作,同时EDMA方式可以用更少的机器周期来实现读、写操作。
当选择EDMA方式时,EINT4的到来触发一个EDMA事件,此事件根据BIOS中设置的源地址、目的地址、传输计数等来完成采样数据从FIFO读入到DSP的外部SDRAM中,传输完成后触发EDMA控制器的中断,进入中断函数" title="中断函数">中断函数。因为DSP 6000系列为所有的EDMA通道只提供了一个EDMA中断事件,所以进入中断函数后由程序判断此次中断是由搬入EDMA引起的还是由搬出EDMA引起的,如果是搬入EDMA引起,则DSP首先需要对数据进行处理,然后对CIPR相应位清0(为使下次搬入EDMA可以进入中断函数)。触发搬出的EDMA事件,它同样根据BIOS的设置将处理后的数据从DSP外部SDRAM搬到输出FIFO中,如果事件是由搬出EDMA引起的,则使能EDMA的事件使能寄存器(是对下一次搬入EDMA进行的使能)进入等待状态。需要注意的是,下一次FIFO中断信号的到来必须在此次过程进入等待状态之后,这样才能不丢失数据。所以要对DSP处理时间进行优化控制,使其不能溢出。
当选择通过C语言来实现数据搬移时,EINT4的到来触发HWI_INT4的中断函数,在中断函数中,通过C语言把数据从FIFO搬到DSP外部的SDRAM,DSP再对其处理,然后再搬出去,再次使能EINT4,进入等待状态。这个过程也需要注意整个时间不能大于两次中断的间隔。
2.3 处理时间T与采样速率Fs的数学关系
假定搬入时间为Tin,搬出时间为Tout, FIFO读进m个数据产生中断。则有:
m/Fs>=Tin+T+Tout
在硬件设计中,设定EMIF的读、写的Setup、Strobe、Hold分别为3、6、2,那么:
T<=m/Fs-2×(2+6+3)×m
在CCS如果测得处理时间T小于m/Fs-2×(2+6+3)×m,就能保证系统的实时性。此外,如果T一定, Fs一定有一个上界。
基于TMS320C6713和EP2C20F256设计的高速实时数据采集系统经实验证明,在保证一定复杂度的实时处理的前提下,采样速率可以达到6MHz,这足以满足大多数场合对数据采集处理的精确度以及实时性的需要。该方案具有硬件结构简单、成本低的优点。同时由于该系统具有DSP微处理器特性和FPGA的逻辑可编程特性相结合的特点,使该方案又具有设计、修改灵活的优点。
参考文献
1 TMS320C6713 data sheet. Texas Instrument, 2005:1~18
2 Cyclone II device handbook. Altera. 2005:17~19
3 TMS320C6000 EMIF overview of support. Texas Instrument,2005:12~15
4 Ludvig, J, McCarthy J, Neuendorffer S et al.Reprogrammable platforms for high-speed data acquisition, Design Automation for Embedded System, 2002:1~24
5 TMS320C6000 chip support library API reference guide.Texas Instrument, 2005:133~147
6 李方慧,王 飞,何佩琨. TMS320C6000系列DSPs原理与应用(第二版). 北京:电子工业出版社,2003:390~408