DSP

DSP芯片在实时图像处理系统中的应用

2019-07-13 20:17发布

  1 引 言 随着计算机及通信技术的发展,图像和视频的应用愈加广泛。大部分图像数据在实际应用前皆需进行有针对性的处理,如根据图像数据特点和应用领域对图像进行增强、除噪、锐化和识别等。此 外,为了有效实时地传输信息,还必须对图像进行压缩。图像处理技术尤其是实时处理,现已成为一热门的研究课题。  实现图像处理的主要方式有: (1)在通用计算机上用软件实现图像处理; (2)在通用计算机系统中加入专用的加速处理模块; (3)利用通用单片机; (4)利用专用DSP芯片; (5)利用通用可编程DSP芯片。 在众多图像处理方式中,最常用的是第1种,但此种方式要占用CPU几乎全部的处理能力,速度相对较慢,不适于实时处理,需要对其加以改进;而其他几种方式各有不足,如第2种方式不适于嵌入式应用,专业性较强,应用受到限制;第3种方式适于数字控制等不太复杂的数字信号处理,不适合计算较大的图像数据处理;第4种方式因为采用的是专用DSP芯片,故其应用范围受限,系统不够灵活,无法进行算法的升级与更新;第5种方式必须要用能充分考虑DSP内部并行性的汇编语言进行编制DSP程序,具有一定困难。但是,TI公司为了解决这个问题,推出了一个开放、具有强大集成能力的开发环境(CCS)[2]。它采用了由先进的开发工具组成的直观系统,使用CCS提供的工具,开发者可以非常方便地对DSP软件进行设计、编码、编译、调试、跟踪和实时性分析,可有效减少DSP编程时间。 综上所述,利用通用可编程DSP芯片[1-2]实现图像处理较之其他方式具有一定的优越性,而且DSP芯片的可编程性和强大的处理能力,使其可用于快速地实现各种数字信号处理算法,成为目前图像处理系统的最佳选择。 2 DSP芯片 数字信号处理器(DSP)[1-2]是一类具有专门为数字信号处理任务而优化设计的体系结构和指令系统的通用处理器件,具有处理速度快和有复合功能的单周期指令等特点,在高速图像处理中得到了越来越多的应用。 DSP芯片内部采用程序和数据分开存储和传输的哈佛结构,具有专门硬件乘法器,广泛采用流水线操作,提供特殊的DSP 指令,可用来快速地实现各种数字信号处理算法,加之集成电路的优化设计,使其处理速度比最快的CPU还快10~50倍。DSP芯片采用不同于普通单片机的体系结构,具有一些显著特点。 2.1 哈佛结构[1] 传统计算机采用传统的冯·诺伊曼(Von Neumann)结构,其程序和数据共用一个存储空间和单一的地址及数据总线,处理器要执行任何指令时,都要先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费几个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。 所有的DSP芯片均采用哈佛(Harvard)结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统中的4套总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。又由于程序和数据存储器在两个分开的空间中,因此取指和执行能完全重叠。图1给出了冯·诺伊曼结构和哈佛结构的比较。 2.2 流水线技术[1] 与哈佛结构相似,DSP芯片广泛采用流水线以减少指令执行时间,从而增强了处理器的处理能力。 流水线处理器是由一系列处理电路组成,这些处理电路称为片断或部分。操作数流经每个片断,即每个片断对操作数进行部分处理,操作数经过所有片断后才能得到最后结果。流水线操作即把一条指令分成一系列步骤来完成,不同步骤完成不同的任务,一条指令只有经过所有步骤才能得到结果。这些步骤可以独立进行,这样就可以实现多条指令在不同步骤上的重复运行,从而加快运行速度。 流水线分为指令流水线和算术流水线。指令流水线是指取指令和执行指令的不同阶段在流水线上进行;算术流水线是指算术操作的不同阶段在流水线上进行。DSP芯片一般采用指令流水线方法。 由于采用了流水线技术,DSP芯片可以单周期完成乘法累加运算,大幅提高了运算速度,减少了指令执行的时间,从而增强了处理器的处理能力。处理器可以并行处理2~4条指令,每条指令处于流水线的不同阶段。 2.3 特殊的硬件结构[1-2] 数字信号处理中最重要的基本运算是乘法和累加运算,它们占用了大量运算时间,是最主要和最耗时的运算。DSP中设置了硬件乘法器和乘法并累加(MAC),这些操作往往可以在单周期内完成,大幅提高了DSP作乘法和累加的速度。因此,单周期的硬件乘法器和MAC是DSP芯片实现快速运算的保证。现代高性能的DSP芯片甚至具有两个以上的硬件乘法器以提高运算速度。数据宽度也从16位增加到32位。 数学运算消耗的时间往往少于存储器的操作。DSP芯片在片内集成了大容量的ROM和RAM来分别存放程序和数据,程序在片内执行的效率远远高于相同规格的通用微处理器,这样既降低了产品的体积和成本,又加快了处理速度。 2.4 特殊的寻址方式[1] 在数字信号处理中要遇到大量的地址运算,在某些情况下,地址运算量甚至超过了数据的运算量。DSP中设计有一个特殊的硬件算术单元——地址产生器。地址计算由这个专门的硬件来负责,不需要耗费额外的时间。现在的某些微处理器中也有独立的地址产生单元,对于一些特殊的地址运算不需要耗费额外的CPU时间,但是DSP的地址运算单元更强大,支持如比特翻转寻址和循环寻址,可极大加快运算速度,而对于非哈佛结构的处理器可能需要更多的处理周期。 2.5 并行处理结构[2] 图像处理中的运算量巨大,单个处理器无法满足实时处理的需求,需要多处理器并行处理。 DSP内部一般都集成多个处理单元,如硬件乘法器(MUL)、累加器(ACC)、算术逻辑单元(ALU)、辅助算术单元(ARAU)以及DMA控制器等。它们都可以并行地在同一个周期内执行不同的任务,例如辅助算术单元能为下一次的运算做好准备,适于完成连续的乘加运算。芯片内部还包括其他总线,如DMA总线等,可实现数据的后台传输而几乎不影响主CPU的性能。 为了提高并行处理能力,现代DSP芯片通常采用单指令多数据流结构(SIMD)、超长指令字结构(VLIW)、超标星体系结构、多DSP核体系结构和DSP/MCU混合结构,这些并行处理机制显著提高了DSP芯片的性能。 3 DSP的发展历程和方向 3.1 DSP发展历程 DSP发展历程[1]大致分3个阶段:20世纪70年代理论先行,20世纪80年代产品普及,20世纪90年代突飞猛进。 在DSP出现之前,数字信号处理只能依靠微处理器(MPU)来完成,但MPU的低处理速度无法满足高速实时的要求,因此直到20世纪70年代,才有人提出了DSP的理论和算法基础。那时的DSP仅停留在教科书上,即便是研制出来的DSP系统也是由分立元件组成的,其应用领域仅局限于军事、航空航天部门。 随着大规模集成电路技术的发展,1982年,世界上诞生了首枚DSP芯片。这种DSP器件采用微米工艺NMOS技术制作,虽功耗和尺寸稍大,但运算速度却比MPU快了几十倍,尤其在语音合成和编码解码器中得到了广泛应用。DSP芯片的问世是个里程碑,它标志着DSP应用系统由大型系统向小型化迈进了一大步。到20世纪80年代中期,随着CMOS技术的进步与发展,第2代基于CMOS工艺的DSP芯片应运而生,其存储容量和运算速度都得到成倍提高,成为语音处理和图像硬件处理技术的基础。 20世纪80年代后期,第3代DSP芯片问世,运算速度进一步提高,其应用范围逐步扩大到通信和计算机领域。 20世纪90年代,DSP发展最快,相继出现了第4代和第5代DSP器件。现在的DSP属于第5代产品,与第4代相比,其系统集成度更高,并将DSP芯核及外围元件综合集成在单一芯片上。这种集成度极高的DSP芯片不仅在通信和计算机领域发挥重要作用,而且逐渐渗透到人们日常的消费领域。 3.2 DSP发展方向[1] 现在DSP产品的应用已扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素;而半导体技术和超大规模集成电路的发展为DSP的推陈出新提供了物理基础,用户的需求又为DSP的发展指出了方向。总体而言,DSP技术将向以下几个方面发展: (1)系统级集成。缩小DSP芯片尺寸始终是DSP的技术发展方向。当前的DSP多数基于精简指令集计算(RISC)结构,这种结构的优点是尺寸小、功耗低和性能高。各DSP厂商纷纷采用新工艺,改进DSP芯核,并将几个DSP芯核、MPU芯核、专用处理单元、外围电路单元和存储单元集成在一个芯片上,成为DSP系统级集成电路。 (2)更高的运算速度。目前一般的DSP运算速度为100MIPS,即每秒钟可运算1亿条指令,但由于电子设备的个人化和客户化趋势,DSP必须追求更高更快的运算速度,才能跟上电子设备的更新步伐。DSP运算速度的提高主要依靠新工艺改进芯片结构。目前,TI的TM320C6X芯片由于采用超长指令字(VLIW)结构设计,其处理速度已高达2000MIPS。当前的DSP器件大都采用0.5~0.35μmCMOS工艺,按照CMOS的发展趋势,DSP的运算速度完全可能再提高100倍(达到1600GIPS)。 (3)可编程性。可编程DSP给生产厂商提供了很大的灵活性。生产厂商可在同一个DSP平台上开发出各种不同型号的系列产品,以满足不同用户的需求。同时,可编程DSP也为广大用户提供了易于升级的良好途径。人们已经发现,许多微控制器能做的事情,使用可编程DSP能做得更好更便宜,例如冰箱、洗衣机这些原来装有微控制器的家电如今皆已换成可编程DSP来进行大功率电机控制。 (4)支持高级编程语言的DSP开发软件。使用高级语言进行DSP软件开发可缩短软件开发的周期,加快DSP产业的发展。 (5)并行处理结构。并行结构所带来的好处是显而易见的,各DSP厂家纷纷在器件中引入并行机制,主要分为片内并行和片间并行。 (6)功耗低。 4 图像处理系统中DSP芯片的选择 对图像处理技术而言,由于要处理的数据量大,计算复杂,计算中间结果精度要求高,因此需要选择合适的DSP芯片。DSP芯片的选择应根据实际的应用系统需要而确定。一般来说,选择DSP芯片时应考虑如下诸多因素: (1)确定选择定点或浮点DSP[1]。数字信号处理算法的数据格式有定点和浮点之分,而数字信号处理系统采用的数据格式决定了它所处理信号的处理精度、动态范围和信噪比,且不同数据格式的易用性和开发难度也不一样。选择定点或浮点DSP,首先要看模数转换时需要的比特数,如果图像的每个像素小于16bit,则用16bit定点DSP即可;如果大于16bit,则需要用浮点DSP来捕捉更大的动态范围。其次考虑算法的复杂度和经济问题。一般说来,浮点DSP芯片的运算精度高,动态范围大,寻址空间大,指令运算能力较强,但功耗大、成本高、体积较大。定点DSP芯片的运算精度与浮点DSP芯片相同(数据位数和浮点芯片相同的情况下),而功耗、成本、体积与浮点DSP芯片相比较小,且易于实现,稳定性好。 (2)根据DSP芯片运算速度选择具体芯片[2]。运算速度是DSP芯片的一个最重要的性能指标,也是选择DSP芯片时所需考虑的一个主要因素。DSP芯片的运算速度一般采用DSP的指令周期、单周期的乘加次数或采用数字信号处理中的基准程序,如用FFT和数字滤波等的执行时间来测评DSP芯片的速度性能。 (3)其他考虑因素[2]。在硬件方面还应考虑芯片的外部总线结构、片上存储器结构、DMA功能、串行通信口和芯片间通信能力等因素,在软件方面主要是开发软件的功能性和时间要求等因素。 目前,应用最为广泛的是TI(Texas Instruments)公司TMS320C6000[1-3]系列的数字信号处理器。美国德州TI公司自1982年推出第1代数字信号处理器以来,现已相继推出了多代数字信号处理器,成为世界上最大的DSP芯片供应商。TMS320C6000系列是TI公司于1997年推出的高端系列的DSP。该系列的DSP在芯片设计上,最初主要是针对多通道无线通信和有线通信的应用领域,但由于其优异的高速处理性能和出 {MOD}的对外接口能力,使它也很适用于图像处理领域。 TMS320C6000是基于超长指令字(VLIW)结构的通用DSP系列,具有超长指令字处理能力。其内部有8个并行处理单元,8条指令组成一个指令包,一个指令包的总字长为256位。它可在一个时钟周期内并行执行8条指令。这种高速高性能数字信号处理器的工作频率可达200MHz,每秒可完成1.6G次操作。该结构包括定点的C62x、浮点的C67x和新的C64x。C64x和C62x代码兼容,但结构有显著的加强,其初期的工作频率可达750MHz。C67x在C62x 8个功能块中的6个上增加了浮点功能,因此其指令集是不同的。 将TMS320C6000系列的数字信号处理器用于图像处理系统开发中,势必使技术水平得到进一步的提高。 5 基于DSP的图像处理软件开发 TI公司针对TMS320C6000系列芯片推出了一种CCS集成开发软件。CCS(Code Composer Studio)[1]是一个开放、具有强大集成能力的开发环境,它采用了由先进的开发工具组成的直观系统,可大幅减小DSP编程时间,并能在极短的时间内消除实时工作中的间歇。CCS包括TMS320C6200代码生成工具、集成开发环境IDE、DSP/BIOS插件和应用程序接口实时数据交换(API、RTDS)插件和主机接口等部分。使用CCS提供的工具,开发者可以非常方便地对DSP软件进行设计、编码、编译、调试、跟踪和实时性分析。DSP软件开发[1]流程图如图2所示。 DSP软件开发包括3个阶段: (1)第1阶段是指图2中“C代码优化”之前的部分。在第1阶段主要是在CCS环境下用C6000的代码产生工具,编译产生在C6000内运行的代码,证明其功能正确,然后再用CCS调试工具,分析确定代码中可能存在的影响性能的低效率段,进入第2阶段。 (2)图2中从“C代码优化”开始至“线性汇编”之前为第2阶段。这一阶段主要是利用优化方法改进C语言代码,主要使用内联函数、数据打包处理、软件流水线技术以及展开循环结构代码等优化手段,然后反复检查C代码性能,优化C代码,如果仍不能达到所期望的效率,进入第3阶段。 (3)其余部分为第3阶段。在这一阶段从C语言程序中抽出对性能影响很大的程序段,使用线性汇编语言重新编写,并使用汇编优化器优化该段代码。 最后可用EVM板或其他开发硬件,根据实时性的要求反复优化C程序和线性汇编程序,直到系统符合实时性和代码长度的要求。在这种CCS集成开发软件的环境下,C编译器的效率可达80,若将新的线性汇编语言和C6000汇编优化器配合使用,可使代码效率高达95以上。 6 基于DSP的图像处理系统 基于DSP的图像处理系统[2-5]的主要思想是利用C6000这样具有强大运算能力的DSP来满足图像处理技术中运算速度和处理的实时性要求。以DSP为核心部件的图像处理系统具有以下特点:(1)接口方便。DSP系统与其他以现代数字技术为基础的系统或设备均相互兼容,同这样的系统接口来实现某种功能要比模拟系统与这样的系统接口要容易的多;(2)编程方便。DSP系统中的可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级;(3)稳定性好。DSP系统以数字处理为基础,受环境温度及噪声的影响较小,可靠性高;(4)精度高。16位数字系统的精度可达10-5;(5)可重复性好。模拟系统的性能受元器件参数性能变化的影响较大,而数字系统基本上不受影响,因此数字系统便于测试、调试和大规模生产;(6)集成方便。DSP系统中的数字部件有高度的规范性,便于大规模集成。 图像处理系统一般由图像采集模块、图像处理模块和数据通讯模块三部分组成(如图3所示)。 图3中的图像处理模块接收来自采集模块的数字图像数据,对其进行相应处理,是系统的主体部分,其核心是用来实现处理算法的DSP芯片,如TI公司TMS320C6000系列芯片。 图像处理计算量大且实时性要求高,虽然DSP芯片对提高处理速度有一定的优越性,但对如遥感图像等大型且重要的图像数据却常常不能达到实时处理,因此需要采用多个DSP并行处理方式[4-6],进一步提高算法的运行速度,达到真正的实时处理。 目前比较常用的是双DSP结构[6]。两片DSP芯片交替进行采集和处理工作,可以实现数据采集和图像压缩的并行操作,降低处理时间;而在一片DSP内,也可将数据缓冲区分为两部分,同时进行数据读取和编码,实现片内并行操作,进一步节省时间。 7 结 论 在当今数字化时代的背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件。DSP将是未来集成电路中发展最快的电子产品,并将成为电子产品更新换代的决定因素。将DSP芯片用于图像处理系统可大幅提高图像的处理速度,满足实时性需求,而且DSP系统具有接口方便、易于编程、稳定性好、精度高、可重复性好和集成方便等特点,因此可以说基于DSP的图像处理系统是图像处理领域的发展方向。