用FIFO设计A/D与DSP之间的接口
1 前言 在使用CCD对非透明薄板厚度的测量系统设计中,笔者采用高速A/D和DSP等器件设计信号采集和处理电路来确定CCD的像点位置。该信号采集和处理电路由CCD驱动电路、加法电路、滤波放大等信号预处理电路、A/D转换电路、FIFO、DSP电路、时序与逻辑控制产生电路、USB总线接口电路等组成。其中DSP芯片选用TI公司生产的TMS320C6211高速数字信号处理芯片?它主要用于对A/D转换后的数据进行插值和重心算法处理,从而确定CCD上像元的位置,然后把处理后的数据通过USB总线传输到PC机进行厚度计算、结果显示、存储等后续处理。该电路所需的时钟信号和采样逻辑控制时序由一片FPGA芯片产生。 当模拟信号由ADC转换成数字信号后,往往都需要输入DSPs的CPU作进一步处理。但A/D转换后数据输出与DSP的读外部数据的时钟很难精确地配合。即使DSP能读取到外部总线上的数据,由于A/D速率是4MHz,DSP外部存储器时钟为90MHz,为了读到总线上的数据,DSP外部存储器读写时钟也必须控制在4MHz,这样就大大降低了DSP的使用效率,同时再加上DSP处理数据也需要一定的时间,而不能一味地读取外部数据。所以,为了控制方便,避免数据丢失,设计时应采用小容量的FIFO作为两者之间的接口。本设计选用的FIFO芯片是Cypress公司的CY7C425-25ns。该芯片容量为1k&TImes;9bit,存取时间最大为25ns,读写周期最小为35ns。该器件具有半满(HF)、全满(FF)和空(EF)三个标志位输出,可以同时满足深度和宽度级联的需要。
2 DSP与FIFO芯片的工作原理 2.1 FIFO读写过程 FIFO的一次读写过程如图2所示,由于FIFO是顺序读取数据,因此?只需提供读写和其它控制信号线,而不需要一般RAM所需的地址线。若将两路A/D输出的数据存入FIFO中,每片FIFO用8bit?两片FIFO即可级联构成16bit的数据宽度。由于FIFO采用的是5V供电,所以经电压转换器件74LVTH244可将5V数据信号电平转换成3.3V,然后与DSP的16Bit外部数据总线相连。再由FIFO的半满信号HF作为外部中断信号,当FIFO存储器半满时,便可由HF经逻辑处理后向DSP发出中断申请INT4。由于外部FIFO占用着DSP的CE0空间,所以读信号的逻辑关系为:R=CE0+ARE,启动DSP 的EDMA(Enhanced Direct Memory Access)通道传输,可将FIFO中的数据读入内部RAM中,这样,在FIFO输出数据的同时,也将A/D转换的数据写入了FIFO中,从而达到了同时读写的目的。使用EDMA方式传输数据的好处在于:EDMA控制器可以独立于CPU工作,从而可方便地实现片内存储器、片内外设以及外部存储空间之间的数据转移。由外部中断INT4启动EDMA传输,可以大大提高传输速率和CPU的工作效率。DSP读完2048个数据后即开始处理,处理完后便可以在一次扫描结束与下一次扫描尚未开始的时间内将16Bit计算结果数据输出,总的处理时间为一个帧周期。FIFO的写信号可由FPGA产生,并可在A/D转换结束后向FIFO写数据。另外,在每一帧处理之后,还应由FPGA输出控制信号以对FIFO进行初始化,然后重新输入下一帧数据。 2.2 DSP的读时序设计 DSP可以通过硬件的ARDY信号和软件设置来达到与异步外设之间进行通讯的目的。DSP工作时,硬件ARDY信号应始终有效。而如果采用软件设置方法,则设计时需要考虑以下几点: (1)SETUP≥1; (2)STROBE≥?tacc+tsu)ECLK; (3)STOBE≥trp ECLK; (4)SETUP+STROBE+HOLD≥trc ECLK; 其中,SETUP、STROBE和HOLD是需要在EMIF CE0空间控制寄存器中配置的读信号的三个状态信号;tacc是FIFO的存取时间(≤25ns),tsu是数据建立时间(≥15ns),trp是读脉冲宽度(≥25ns),trc是FIFO的读周期(≥35ns)。由于本设计中DSP的内部时钟为150MHz,外设时钟ECLK为90MHz,所以,最后设定SETUP=1、STROBE=2、HOLD=2来满足DSP与异步FIFO接口的要求。 2.3 软件设计 图3所示是该系统中DSP的软件流程图。
由于TMS320C6211采用ROM加载的芯片自举模式,因此,在芯片复位过程中,EDMA将从位于外部CE1空间的EEPROM中拷贝1kB数据到地址0处,并在传输结束后,使CPU退出复位状态,同时从地址0处开始执行指令。由于主程序大小要大于1kB,所以需要编写BOOT LOAD(大小小于1kB)程序,以使其在复位后将程序从外部EEPROM拷贝到内部程序RAM中运行。在图3所示的主程序流程图中,当系统上电复位后,首先应进行DSP的初始化,接着进行EDMA的中断使能和初始化,然后由FIFO的半满信号启动EDMA传输和由其触发中断程序。当传输完一组2048个数据后,再根据重心算法求出CCD像点的位置,之后便可开始下一次循环。
3 结束语 在高速数据采集电路中,使用FIFO设计DSP芯片和A/D转换器的接口电路具有设计简单、控制方便等优点,可大大提高DSP的使用效率。
|