随着雷达、通信和图像处理中数字处理技术的飞速发展,现代化生产和科学研究对数据采集系统的要求更加严格。在嵌入式条件下,要求数据获取的速度越来越快,精度越来越高,以致数据量及处理速度要求大增,高速ADC的出现和DSP性能的不断提高也对系统将来的升级提出了更高要求,特别在一些特殊领域,如航空、航天等,其嵌入式系统体积小、功能强、实时性高,为了避免数据处理不及时,发生数据丢失,破坏系统可靠性,更要进一步提高系统实时性,必须研究开发高速嵌入式数据采集系统。
针对具体的任务要求,文中提出了一种通过FPGA实现转换接口的高速数据采集系统的系统结构,即高速A/ D+大容量附+高速DSP的嵌入式高速数据采集系统。模数转换器A/D进行高速数据采集,胁实现对高速A/D采集数据的存储和控制调度,DSP通过查询方式访问前端采集通道,对采集的数据进行高速处理,这种方法大大提高了DSP可以访问的外设数目,提高了DSP的处理能力,同时由于DSP不直接与模数转换芯片接口,所以ADC芯片的升级或者替代都不会影响原来的数据采集,而且采用了时分复用方式读取转换完成的数据,因此这个系统数据采集速率可以达到所采用的√虹)C芯片输出的最高速率,能充分发挥ELqP算法处理功能强大、速度快的优势,而FPGA狐设计灵活、通用性强等特点,使得整个系统具有实时性高、体积小、开发周期短、易于维护和扩展、适合于实时信号处理等多个优点。文中结合成功开发的高速采集系统结构,提出一种基于FPGA实现的最优FIFO结构来实现高速缓存,它可以成倍提高数据流通速率,增加嵌入式系统的实时性。
1 高速数据采集系统结构
实时信号处理系统中,高层处理算法的特点是所处理的数据量较低层算法少,但算法的控制结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP芯片来实现。特别是TI公司的C6000系列DSP,其峰值处理速度已达每秒数十亿条指令,是当今最先进的DSP之一,非常适合于嵌入式实时系统应用。低层的信号预处理算法处理的数据量大、计算量大、对处理速度的要求高,但运算结构相对比较简单,适于用黜来进行硬件实现,这样能同时兼顾速度及灵活性。目前FPGA的容量已经跨过了百万门级,使得FPGA成为解决系统级设计的重要选择方案之一。它主要应用于协处理器,辅助DSP芯片完成一些计算密集型的算法。
在笔者设计的高速信息处理计算机中,高速ADC模块、FPGA模块以及DSP模块构成了高速数据采集系统,系统结构如图1所示。从此结构中可以看到,DSP可以在未知ADC控制方式的情况下,定时地访问外设来获得模数转换后的数据,而大容量的FPGA协助DSP完成数据的预处理,并可以保证采集数据不丢失。
其中ADC是一个12位精度、65M№采样速率的高速模数转换器,可进行高速采样,处理器选用TI公司的TMS320C6701。DSP内部最高时钟频率可以达到167MHz,DSP读取外部SDRAM的最高时钟频率是1/2 xCPU,而读取外部异步存储器的时钟频率可以通过CE空间控制寄存器来编程控制,其参数需要满足一定要求,即CLK>(Setup+Strobe+Hold)>2个时钟周期,时钟频率最高可达80MHz。如果DSP不通过缓存直接与A/D相连,在采样过程中,若A/D连续采样数据,DSP一直处于连续的间隔取数的状态,这将占用DSP大部分处理时间,导致DSP不能从事其他工作。也有可能出现上一次的数据还没有被计算机处理完,下一次采集过程就开始的情况。如果选取更高速的A/D,更会发生数据丢失,破坏系统的可靠性。因此最好的做法是采用高速缓存来存储采样到的数据,再集中传输一批数据,保证IXSP有充足的时间去处理、计算。
系统中采用容量比较大的FPGA,利用自主设计的IP核,主要协助主处理器实现数据的预处理(如FFT)功能。为了保证设计的硬件系统体积尽可能小,因此在不增加系统的硬件负担的前提条件下,利用系统中现有的FPGA,设计了基于FPGA实现的异步FIFO存储器作为高速缓存器,它满足前后读写时钟频率不同的硬件环境,可使采集系统设计灵活、简单、方便,具有很强的可扩展性。FIFO存储器具有两个特点:数据进出有序;输出输入口独立。灵活使用FIFO,可根据需要设计为不同速率、不同容量的数字系统,接口电路简洁且不占用系统地址资源,系统移植或升级换代方便,而且控制简单。
2 基于FPGA实现的异步FIFO的设计
2.1 FIFO结构设计
设计一个异步FIFO,读写使能由不同的时钟激励来控制输入数据和输出数据,空倩标志来防止数据的上溢和下溢,以及“半满”状态标志,在字宽和容量深度两方面都可以扩展。读写操作自动访问存储空间连续的存储单元,读出的数据和写入的数据顺序相同,不需要额外的地址信息。首先,由复位信号清空存储器数据;然后,在写使能和写时钟控制下向存储器中写数据,当FIFO写半满,half—full将有效(同步予写时钟),触发C6701中断,C6701中断服务程序通过DMA将FIFO中的数据取走并写入C6701片内数据存储器或SDMA中去,FIFO中的数据空间存满后,full信号有效,外部设备就不再向FIFO中写数据了;同理,在读时钟和读使能控制下从存储器中读数据时,若FIFO中的数据被外部设备取空了,则empty信号有效,外部设备停止对FIFO的读取。FIFO的外部接口见图2。 |