摘要:简要叙述了常用的信号处理系统的类型与处理机结构,介绍了正逐步得到广泛应用的DSP+FPGA处理机结构,在此基础上提出了一种实时信号处理的线性流水阵列,并举例说明了该结构的具体实现,最后分析说明了此结构的优越性。
实时信号处理系统要求必须具有处理大数据量的能力,以保证系统的实时性;其次对系统的体积、功耗、稳定性等也有较严格的要求。实时信号处理算法中经常用到对图象的求和、求差运算,二维梯度运算,图象分割及区域特征提取等不同层次、不同种类的处理。其中有的运算本身结构比较简单,但是数据量大,计算速度要求高;有些处理对速度并没有特殊的要求,但计算方式和控制结构比较复杂,难以用纯硬件实现。因此,实时信号处理系统是对运算速度要求高、运算种类多的综合性信息处理系统。
根据信号处理系统在构成、处理能力以及计算问题到硬件结构映射方法的不同,将现代信号处理系统分为三大类:
从系统信号处理系统的构成方式来看,常用的处理机结构有下面几种:单指令流单数据流(SISD)、单指令流多数据流(SIMD)、多指令流多数据流(MIMD)。
随着大规模可编程器件的发展,采用DSP+ASIC结构的信号处理系统显示出了其优越性,正逐步得到重视。与通用集成电路相比,ASIC芯片具有体积小、重量轻、功耗低、可靠性高等几个方面的优势,而且在大批量应用时,可降低成本。
现场可编程门阵列(FPGA)是在专用ASIC的基础上发展出来的,它克服了专用ASIC不够灵活的缺点。与其他中小规模集成电路相比,其优点主要在于它有很强的灵活性,即其内部的具体逻辑功能可以根据需要配置,对电路的修改和维护很方便。目前,FPGA的容量已经跨过了百万门级,使得FPGA成为解决系统级设计的重要选择方案之一。
DSP+FPGA结构最大的特点是结构灵活,有较强的通用性,适于模块化设计,从而能够提高算法效率;同时其开发周期较短,系统易于维护和扩展,适合于实时信号处理。
实时信号处理系统中,低层的信号预处理算法处理的数据量大,对处理速度的要求高,但运算结构相对比较简单,适于用FPGA进行硬件实现,这样能同时兼顾速度及灵活性。高层处理算法的特点是所处理的数据量较低层算法少,但算法的控制结构复杂,适于用运算速度高、寻址方式灵活、通信机制强大的DSP芯片来实现。
在我们的工作中,设计并实现了一种实时信号处理结构。它采用模块化设计和线性流水阵列结构(图1)。
这种线性流水阵列结构具有如下特点:
每个PU的核心由DSP芯片和可重构器件FPGA组成,另外还包括一些外围的辅助电路,如存储器、先进先出(FIFO)器件及FLASHROM等(图2)。可重构器件电路与DSP处理器相连,利用DSP处理器强大的I/O功能实现单元电路内部和各个单元之间的通信。从DSP的角度来看,可重构器件FPGA相当于它的宏功能协处理器(Co-processor)。
PU中的其他电路辅助核心电路进行工作。DSP和FPGA各自带有RAM,用于存放处理过程所需要的数据及中间结果。FLASHROM中存储了DSP的执行程序和FPGA的配置数据。先进先出(FIFO)器件则用于实现信号处理中常用到的一些操作,如延时线、顺序存储等。每个PU单独做成一块PCB,各级PU之间通过插座与底板相连。底板的结构很简单,主要由几个串连的插座构成,其作用是向各个PU提供通信通道和电源供应。可以根据需要安排底板上插座的个数,组成多级线性阵列结构。这种模块化设计的突出优点在于,它使得对系统的功能扩充和维护变得非常简单。需要时,只要插上或更换PU电路板,就可以实现系统的扩展和故障的排除。每一级PU中的DSP都有通信端口与前级和后级PU电路板相连,可以很方便地控制和协调它们之间的工作。
我们应用上述线性流水阵列结构实现了一个实时目标检测系统,该系统的任务主要是接收摄像头输出的灰度图象,经预处理、编码、直线拟合和目标识别后,输出结果到PC机显示。在这个任务中,预处理模块包括抽样、卷积和编码等步骤,属于低层的处理,其运算数据量大,但运算结构较规则,适于用FPGA进行纯硬件实现;而直线拟合及目标识别等高层图象处理算法,所处理的数据量相对较少,但要用到多种数据结构,其控制也复杂得多,我们用DSP编程来实现。
重构处理模块采用的是Xilinx公司的XC5200系列FPGA芯片。这是一种基于SRAM的现场可编程门阵列。表1给出了XC5200 系列FPGA的一些参数。
器件 |
XC5204 |
XC5206 |
XC5210 |
XC5215 |
逻辑单元 |
480 |
784 |
1296 |
1936 |
最大逻辑门 |
6000 |
10000 |
16000 |
23000 |
多功能块 |
10×12 |
14×14 |
18×18 |
22×22 |
CLB |
120 |
196 |
324 |
484 |
触发器 |
480 |
784 |
1296 |
1936 |
I/O |
124 |
148 |
196 |
244 |
XC5200系列FPGA逻辑功能的实现由内部规则排列的逻辑单元阵列(LCA)来完成,它是FPGA的主要部分。LCA的核心是可重构逻辑块(CLB),四周是一些输入/输出块(IOB)。CLB和IOB之间通过片内的布线资源相连接。LCA由配置代码驱动,CLB和IOB的具体逻辑功能及它们的互联关系由配置数据决定。整个FPGA模块的设计实现在Xilinx公司的Foundation 2.1i开发平台上完成。该系统支持设计输入、逻辑仿真、设计实现(设计综合)和时序仿真等系统开发全过程。
在选用DSP芯片时,主要应考虑性能能否满足快速判读算法的要求,具体说就是要求选择那些指令周期短、数据吞吐率高、通信能力强、指令集功能完备的处理器,同时也要兼顾功耗和开发支持环境等因素。表2列出了一些常用微处理器的性能参数。
我们选择的是应用广泛、性价比较高的TMS320C40芯片。它是美国TI公司推出的为满足并行处理需求的32位浮点DSP。主要特性如下:
处理器类型 |
DSP(Motorola) |
ADSP |
TMS320 |
||||
96002 |
56156 |
21020 |
2101 |
C30 |
C40 |
C50 |
|
字长/bit |
32 |
16 |
32 |
16 |
32 |
32 |
16 |
指令周期/ns |
50 |
50 |
50 |
60 |
33 |
25 |
50 |
1024浮点FFT时间/ms |
1.04 |
2.33 |
0.96 |
2.07 |
2.36 |
1.93 |
3.42 |
从结构和功能上看,C40很适合与可重构器件互相配合起来构成高速、高精度的实时信息处理系统,并完全可以胜任图像信息的实时处理任务;此外,C40的开发系统也比较完备,支持C语言和汇编语言编程,能够方便地进行算法移植和软/硬件的协同设计。
衡量系统的整体性能不仅要看所使用的器件和所能完成的功能,还要看器件之间采用怎样的互连结构。XC5200可以完成模块级的任务,起到DSP的协处理器的作用。它的可编程性使它既具有专用集成电路的速度,又具有很高的灵活性。C40内部结构的主要优势是:所有指令的执行时间都是单周期,指令采用流水线,内部的数据、地址、指令及DMA总线分开,有较多的寄存器。这些特征使它有较高的处理速度。FPGA具有硬件的高速性,而C40具有软件的灵活性,从器件上考察,能够满足处理复杂算法的要求。同时,C40的6个通信口和6个DMA通道使其能够在不被中断的情况下比较从容地应付与外界大量的数据交换。
从PU内部互连来看,C40使用了专用的通信口完成与FPGA的互连,能够保证在任何情况下FPGA与C40的数据通道的畅通。另外,FPGA和C40各自都有输入端口,使得系统的处理结构多样化。比如,FPGA可以作为处理流程中的一个模块,独立完成某项功能,也可以作为C40的协处理器,通过C40的调用来完成特定的子函数。底板将互连性延伸到PU之间,使得多个电路板能够组成多处理机系统。前级的C40既可以与下一级的C40通信,也可以将数据发送到下一级的FPGA。
综上所述,本文提出的基于DSP+FPGA的线性流水阵列结构,为设计中如何处理软硬件的关系提供了一个较好的解决方案。同时,该系统具有灵活的处理结构,对不同结构的算法都有较强的适应能力,尤其适合实时信号处理任务。