《武汉工程大学学报》 2011年01期
79-83
出版日期:2011-01-30
ISSN:1674-2869
CN:42-1779/TQ
基于DSP和FIFO信号采集系统硬件设计及实现
0引言随着数字化生活的高速发展,高速数据信号采集系统在日常生活中的应用越来越显著.由于系统需要的采样速度非常高,使得对高速采集系统的性能要求极为显著.这也导致了目前市场上高性能的高速数据采集卡一般来说相当昂贵,原因主要是高速电子器件成本、制作工艺和高密集的技术含量所造成[1].本文主要介绍一种采用FIFO高速缓冲、USB2.0接口和高性能DSP构成的高速数据信号采集系统,主要为数字电视机顶盒的语音信号所设计,同时也可以应用于图像处理、雷达信号处理等相关领域.1系统方案设计及器件特性AD模数转换芯片采集信号,将其储存在高速缓冲FIFO中,DSP通过扩展总线读取FIFO中的数据,同时提供精确稳定的时钟给AD,控制AD的采样频率.信号处理的算法编成程序保存在外部Flash上,供DSP上电读程序到其内部RAM单元,高速运行程序.DSP通过USB片内FIFO与USB进行高速数据传输,并通过USB将数据传输到PC机.系统的原理框图如图1所示.图1系统结构框图
Fig.1Structure diagram of system系统所用器件特性如下.a. DSP采用美国TI公司高性能数字信号处理器TMS320C6203B.采用增强的哈佛总线结构,有8个独立功能单元可以并行操作,工作时钟频率可以达到300MHz,最大处理能力为2400MIPS;内部具有4Mbit的数据空间和3Mbit的程序空间、3个多通道缓冲串口(可以做通用I/O口使用)、4个DMA通道、32bit的扩展总线、两个定时器、双电源供电(I/O口为3.3 V,核电压为1.5 V);外围设备接口丰富,有外部存储器接口(EMIF)、外部扩展总线(XB)、多通道缓冲串口(McBSPs)、主机接口(HPI),与外部存储器、协处理器、主机的连接非常方便[2].b. AD选择TI的ADS5422,分辨频为14bit,最高采样频率可达62 Msps,采用单一5 V电源供电.当采样频率为10 M时其最大动态范围为82 dB,最高信噪比达到72 dB.模拟信号输入可以采用单端输入或者差分输入,最高输入信号的峰峰值为4 V,数字量输出可以直接和5 V或者3.3 V的CMOS芯片连接.c. 高速缓存FIFO(先进先出)选用美国IDT公司的IDT72V2113,具有512k×9bit的数据空间,通过引脚设置成256k×18bit、133MHz的操作时钟、最快7.5 ns的读写周期、单一3.3 V电源供电;可通过字长扩展和深度扩展两种方式进行容量扩展,使得多片IDT72V2113形成更大容量的缓冲[3].d. Flash采用美国SST公司的SST29LE010,容量为128K×8bit.高可靠性、快速写操作、低功耗、兼容性好、单一3.3 V电压供电,可以直接和DSP连接.e. USB选用Cypress公司的CY7C68013,主要包括1个8051处理器、1个智能串行接口引擎(SIE)、1个USB收发器、16KB片上RAM(包括4KB FIFO)存储器以及1个通用可编程接口(GPIF)[4].2硬件电路设计2.1IDT72V2113的内部电路IDT72V2113的内部结构如图2所示,主要由一个内部RAM阵列以及读写控制单元、读写指针单元、输入输出寄存器、标志信号以及复位单元组成.其内部RAM阵列采用先进先出设计技术,外部数据首先存到输入数据寄存器,再传送到RAM阵列,依次保存,数据的先后顺序通过修改写指针确认.RAM阵列始终检测输出数据寄存器的状态,一旦为空,RAM阵列的数据送到输出数据寄存器,外部设备可以直接从输出数据寄存器读出数据,数据的读顺序通过读指针来控制.通过设置输出使能OE引脚为高状态来禁止数据的输出,以减低芯片的功耗[4].为了方便数据的读写,IDT72V2113还增加了一些对数据读写的控制信号,包括读写使能、读写时钟以及字宽控制等.第1期贺玺,等:基于DSP和FIFO信号采集系统硬件设计及实现
武汉工程大学学报第33卷
图2IDT72V2113内部结构框图
Fig.2Internal structure diagram of IDT72V21132.2电源和复位电路设计在TI公司的DSP系列中,TMS320C6000系列的DSP一般都采用3.3 V和1.5 V电压供电,其中I/O采用3.3 V电压,芯片内核采用1.5 V电压.实际常用的只有5V电压,所以必须采用电压转换芯片,将5 V电压转换成3.3 V和1.5 V,供DSP使用.本系统选择TI公司的TPS70348系列单电源芯片,该芯片可以同时输出3.3 V和1.5 V两种电压,供DSP使用.TPS70348的硬件电路如图3所示,TPS70348除了提供电源外,还提供上电复位和手动复位信号到DSP[2].图3TPS70348内部电路
Fig.3Internal circuit of TPS703482.3ADS5422与TMS320C6203B的连接ADS5422和一般的AD转换器不同,在于外部时钟信号必须经过内部时钟电路提供给内部各个逻辑单元,由于ADS5422的内置时钟电路,使得ADS5422对各种时钟都兼容,包括正弦波或者方波、TTL电平或者CMOS电平、单端时钟信号或者差分时钟信号.此外,ADS5422提供外部数据输出电压驱动VDRV引脚,一般接5V电压,但如果将引脚连接到3.3 V电压,数据输出将可以直接接到3.3 V的外部器件上.由于单端输入方式连接简单,但抗噪性能差,所以我们一般采取差分输入方式.这样,可以尽量减少信号噪声以及电磁的干扰,尤其是采用差分输入方式可以将所有的偶次谐波通过正反两个输入信号基本上互相抵消.ADS5422和TMS320C6203B的硬件连接如图4所示.使用TMS320C6203B的32 bit外部扩展总线接口(XBUS)连接ADS5422,实现XBUS从ADS5422读取数据并存储在TMS320C6203B的内部RAM中(由于ADS5422只有14bit数据,实际上只需要使用XBUS的低14bit);使用TMS320C6203B的定时器输出信号TOUT0提供精确稳定的时钟给ADS5422,控制AD的采样频率,并且该时钟可根据定时器参数有软件设置,增加AD采样频率的灵活性.在DSP内部寄存器中,将多通道缓冲串口(MBSP)的引脚设置成通用的I/O引脚,使用DR0、DR1以及DX0引脚读入或者写入ADS5422的控制信号OVR、DV.图4ADS5422和TMS320C6203B的连接
Fig.4ADS5422 connect with TMS320C6203B2.4ADS5422与IDT72V2113的连接虽然ADS5422的供电电压为5 V,但其输出的数字信号电平兼容3.3 V电平,因此不需要电平转换芯片,只要将ADS5422的数据线与IDT72V2113的数据线相连即可.但是,ADS5422采样和存储采样数据到IDT72V3113中,这两个操作对时序配合要求非常严格,如果两者时序关系配合得不是很好,就会发生数据存储出错或者掉数.如何简单、可靠地实现采样和存储是设计这部分电路的难点.一般的方法是,通过可编程逻辑器件(CPLD或FPGA)来实现ADC与FIFO存储器之间的时序,即由CPLD或FPGA来控制ADC采样和FIFO存储器的写操作.但是,通过仔细查看ADS5422和IDT72V2113的工作时序图,找到了一种简单可靠的实现方法,此方法不需要CPLD或FPGA就可以实现两者的时序配合.首先分析ADS5422的工作时序图,如图5所示,其中t1为采样时钟上跳沿到输出数据无效之间的时间间隔,即数据保持时间,其大小为3 ns.查看IDT72V2113的相关文档可知,对其进行写操作时,数据线的保持时间大于1 ns即可满足要求.因此,ADS5422与IDT72V2113之间的时序配合可以采用以下简单的实现方法:ADS5422的采样时钟和IDT72V2113的写时钟采用同一个时钟源,这样,每一个时钟的上跳沿,ADS5422进行模数转换,同时将上个时钟周期内输出的采样数据存储到IDT72V2113内部.图5ADS5422的采样时序
Fig.5Sampling time sequence of ADS54222.5IDT72V2113与TMS320C6203B的连接由于单片IDT72V2113的容量为512k×9bit,对于本文设计的高速语音采集系统而言,其容量显得过小了,所以要对其进行字长扩展和深度扩展.C6203B的外部扩展总线(XBUS)宽度为32位,可以实现与同步FIFO无缝连接,可以同时无缝实现四个FIFO写接口或者实现3个FIFO写接口及1个FIFO读接口.通过无缝连接实现FIFO读接口,FIFO必须连接到 上,数据通过DMA方式从IDT72V2113传送到C6203B的片内RAM中,具体连接如图6所示.图6中,4片IDT72V2113经过字长和字深扩展形成2MB的数据输入缓冲,输入数据总线(D0~D15)、输出数据总线(Q0~Q15)、读使能(REN)、读时钟(RCLK)、写使能(WEN)、写时钟(WCLK)和将空标志信号(PAE)是由4片IDT72V2113的相应信号组合形成的; 为外部扩展总线(XBUS)的空间选择信号,XFCLK为外部扩展总线(XBUS)的输出时钟,EXT_INT4是C6203B的外部中断信号4,DX0用作通用输出口,控制IDT72V2113的写使能信号.图6TMS320C6203B与IDT72V2113的连接
Fig.6TMS320C6203B connect with IDT72V21132.6TMS320C6203B与CY7C68013的连接CY7C68013是一个非常方便的USB2.0实现方案,它提供与DSP或者MCU连接的接口,连接方法有两种:Slave FIFOs和Master可编程接口GPIF.在本方案中,选用了Slave FIFOs方式,异步读写.Slave FIFOs方式是从机方式,DSP可以像读写普通FIFO一样对CY7C68013内部的多层缓冲FIFO进行读写.具体的电路连接如图7所示.FLAGA、FLAGB和FLAGC是CY7C68013内部FIFO的状态标志,C6203B通过通用I/O口来获得FIFO的空、半满(由用户设定半满的阈值)和满等状态信息.C6203B对CY7C68013内部FIFO的选择,以及数据包的提交也是通过通用I/O口来实现.C6203B通过EMIF接口的CE2空间对CY7C68013进行读写操作.工作过程为:DSP通过USB向PC发送数据时,首先查看空、半满和满这三个状态信号,然后向USB写入适当大小的数据,以保证数据不会溢出;PC机通过USB向DSP发送命令字时,USB通过中断方式通知DSP读取命令字.图7TMS320C6203B与CY7C68013的连接
Fig.7TMS320C6203B connect with CY7C680133系统软件设计该系统以C6203 DSP为核心处理器,实现高数数据信号的采集与频谱分析,将频谱结果实时传输到PC机.由于DSP的选型,故软件开发平台是针对TMS320系列DSP的集成开发环境CCS(Code ComposerStudio).本文设计的系统上电后,AD开始采样,同时DSP初始化、设置DMA通道、初始化定时器0且定时间隔22ms.当外部同步信号到来时,启动定时器0,手动启动DMA通道0,AD采样产生的数据开始写入FIFO,当定时器0中断到来时,关闭FIFO的写使能,采样数据不再存储到FIFO内.随着数据不断写入FIFO,使得DSP的外部中断信号有效,从而触发DMA传输,将数据存储DSP内部RAM中,传输结束后发送中断,通知DSP处理数据.DSP处理完数据后,通过USB接口发送处理结果,然后重启DMA通道0,进行下一次DMA传输.系统程序流程图如图8所示.图8系统程序流程图
Fig.8Program diagram of system4测试结果分析经验证,以TMS320C6203B和IDT72V2113为核心的数据采集系统,采集频率为30 MHz的高速信号,系统以60 MHz的采样速率稳定工作,并实时传输数据.由于采用FIFO存储数据,可方便存储大量数据.特别的是,由于TMS320C6203B和IDT72V2113的封装较小、引脚密,且系统工作频率高,故在PCB布线布局和系统调试中,必须注意电磁兼容(EMC)问题,否则系统难以稳定工作.5结语以上给出了一种基于DSP和FIFO的高速数据采集系统的设计方案,较详细地介绍了硬件部分设计,电路简单,结构清晰.实验表明:该系统是正确可行的.此外,该系统为对其它领域的高速信号采集系统的设计与实现[56]提供了一种借鉴方法.