基于DSP+FPGA技术的视频图像采集系统的设计

  • 七月 24th, 2008

Image processing technology has been widely applied to various fields. More demand for the application has a huge market space, also on the image processing system to the real-time nature and accuracy of more demanding. Traditional digital image processing system used to more generic increase computer software, MCU or DSP, and other dedicated individuals. These slower processing speed is not able to meet modern image processing system real-time requirements. therefore, it is an urgent affair to search an appropriate processor in the collection and processing system.
The Digital Signal Processor (DSP) specially designed for high-speed digital signal processing is playing an important role in the digital field, and DSP with high processing speed and excellent operation performance is particularly adapted to image processing.Owing to the advantages of itself, FPGA technology is more and more important in the modern electronic system designs .Making use of these two technologies, the DSP technology and FPGA technology, this thesis researches into an image collection and processing system. This paper details the design and realization of one real-time DSP platform, which is based on FPGA chip.Compared to the current same-type system, this system simpler in structure and cheaper in cost. Profitted from the poweful processing ability of TMS320DM642 DSP, through developing CCS software, this system can be applied to all kinds of embedded image processing systems. So is more practical and advanced.

KEY WORDS: real-time,DSP,FPGA,image collection,image processing

目 录

摘 要 III
ABSTRACT IV
第一章 绪 论 1
1. 1课题国内外发展状况 1
1.2本课题研究的意义和内容 2
1.2.1课题的理论意义 2
1.2.2课题的研究价值 3
1.2.3本论文的研究内容 3
第二章 总体设计方案 5
2.1 FPGA芯片的介绍和选型 5
2.1.1 FPGA芯片的介绍 5
2.1.2 本方案中FPGA的选型 6
2.2 DSP芯片的介绍和选型 7
2.2.1 DSP芯片的介绍 7
2.2.2 本方案中DSP的选型 9
2.3 总体设计 10
2.4 算法及实现 11
2.4.1 H.263编码和解码 11
2.4.2 YCbCr彩色系统像素表示成RGB彩色系统像素算法 14
第三章 硬件设计的实现 16
3.1 实时图像处理系统硬件总体设计电路 16
3.2 功能模块设计 17
3.2.1 采集模块 17
3.2.2 处理模块 19
3.2.3 系统控制模块 30
3.2.4 视频输出模块电路设计 31
第四章 软件设计的实现 33
4.1 软件设计环境 33
4.1.1 集成开发环境(Code Composer Studio) 33
4.1.2 开发过程 34
4.2 软件总体设计 35
4.2.1 软件各模块的实现 35
4.2.2运行步骤 44
第五章 总 结 47
致 谢 49
参考文献 50
附 录 51

摘 要
图像处理技术目前已经广泛的应用于各个等领域。多领域的应用需求产生了巨大的市场空间,同时也对图像处理系统的实时性和准确性提出更高的要求。传统的数字图像处理系统多采用通用计算机加软件、单片机或专用DSP 等来实现。这些方法处理速度较慢,无法满足现代图像处理系统的实时性要求。因此,寻求合适的处理器己成为目前采集处理系统的当务之急。
专门为高速数字信息处理而设计的数字信号处理器(DSP)已成为数字化领域的重要角色,DSP的高速度和良好的运算性能特别适合于图像处理。同时,FPGA技术以其自身的优点在现代电子系统设计中占有的地位越来越重要。本文结合DSP和FPGA这两种技术,对图像采集处理系统进行了研究,论述了用FPGA搭建一实时视频DSP平台的设计与实现。与目前的同类系统相比,在性能相当的情况下,本系统结构更加简单,成本更低。利用TM320DM642 DSP强大的处理能力,并通过软件环境CCS来开发。本系统可以应用于各种嵌入式图像处理系统中,具有很强的实用性和先进性。

关键词:实时, DSP, FPGA, 图像采集, 图像处理

第一章 绪 论
数字图像处理技术的飞速发展使得所有图像处理的问题都可以用数字信号处理的形式来解决,这为实时图像处理的应用提供了广阔的空间。首先,数字信号处理中存在大量成熟的快速算法,这些算法已经大量的应用于图像处理中。其次,几个技术发展趋势进一步促使此领域的发展,随着超大规模集成电路的高速发展,包括低价位DSP(Digital Signal Processor)数字信号处理器,微处理器支持的并行处理技术,用于图像数字化的低成本的电荷耦合器件,低成本存储阵列的新存储技术,以及低成本、高分辨的彩色显示系统的发展为高速的实现信号处理、为达到系统的实时性提供了可能。这些发展都使得图像处理技术广泛的运用于科学研究、工农业生产、资源的遥感探测、医疗卫生、空间探索等各个领域 ,如今随着信息高速公路的建设,各种网络的发展非常迅速。因而,图像的传输也得到了极大的关注。另一方面,图像传输可使不同的系统共享图像数据资源,也极大地推动了图像在各个领域的广泛应用。
1. 1课题国内外发展状况
随着计算机技术的发展,特别是高速数字信号处理器(DSP)的应用,极大地推动了图像处理技术的发展。
图像处理系统分为通用图像处理系统和专用图像处理系统,其发展过程大致可分为三个阶段[1]。
第一阶段大体上是20世纪60年代末到80年代中期,当时的代表英国JOYCELOEBL公司推出的MAGISCAN图像分析系统以及美国VICOM公司推出VICOM-VEM图像处理工作站、VICOM-VEM机器视觉计算机。MAGISCAN用于医学图像处理和金相分析, VICOM-VEM系统主要用于工业控制。由于这些系统采用机箱式结构,所以系统的体积比较大,虽然功能较强,但价格昂贵。我国图像处理系统的研制起步较晚,主要有清华大学的TS79小型通用图像处理系统、TJ82图像计算机和TS84多功能微机图像处理系统。同样是采用机箱式结构,主流计算机采用小型机。
第二阶段是从80年代中期到90年代初期,该阶段的特点是小型化,外部结构不再是机箱式而是插卡式。通过把图像卡插到计算机内,即可和计算机构成图像处理系统。典型产品有:美国Image Technology公司的PCVISION系列图像卡,美国DT公司推出的DT2851图像卡、DT2858图像卡和DT871真彩图像卡。加拿大MATRON公司也推出一系列图像卡。在国内,80年代末到90年代初,中科院自动化研究所成功研制CA系列图像卡,清华大学成功研制TH系列图像卡。由于图像卡体积小、价格低、使用方便,所以很受用户欢迎。这阶段的图像卡大都开始采用大规模集成电路甚或是专用集成电路。这阶段特点是:主流机采用PC,计算机总线采用ISA总线。
第三阶段是从90年代初开始,这阶段的产品出现两大分支,一种仍是采用插卡式,随着PCI总线技术的成熟,使得采用PCI总线的图像卡逐步取代采用ISA总线接口的图像卡。在国内,北京中自技术集团、微视公司等都推出系列PCI图像卡产品。该类产品的特点是:采用PCI总线,在Windows平台上编制图像处理软件。另一种图像卡是采用大规模集成电路或专用芯片取代计算机的脱机图像处理系统。随着DSP芯片集成度、运算速度的大幅度提高,价格大幅度降低,DSP芯片成为脱机图像系统的主流处理器。由于美国TI公司在DSP市场上的主导地位,使得TI公司的图像处理平台在世界上处于领先地位。国内的DSP技术起步较晚,但发展很快。90年代末就有比较成熟的产品出现。典型产品有闻亭公司的WT6201P/PA, WT6701P/PA图像处理系统和WT32EA通用图像处理系统。
目前,由于PCI总线的诸多优点,在没有特殊限制的场合,采用计算机+PCI接口图像采集卡仍将是图像处理系统的主流配置。但随着半导体技术的飞速发展,基于DSP和大规模集成电路的脱机图像处理系统的开发与应用将达到更高的水平。
几年来,瞬态物理国家重点实验室在研制电视导引头的过程中使用了多种图像采集处理系统,例如:PC机+OK卡、TMS320C6711、TMS320C6416和TMS320DM642等。综合考虑各款国内外的图像处理平台的处理速度、图像接口、性价比等因素, TMS320DM642显示出优势。这款TI公司的DSP芯片具有内核速度快(600MHz)、有独立的视频端口、强大的存储器扩展能力、不断下降的价格等特点。
纵观当今国内外图像卡产品的现状,图像采集系统趋于实时性,而且功能实现越来越复杂,FPGA(Field Programmable Gate Array)以其自身优势引起图像处理系统制造商的关注,但一般为国外产品,而且价格相对昂贵。
1.2本课题研究的意义和内容
1.2.1课题的理论意义
本论文论述了一种实时视频DSP+FPGA系统的软硬件实现,用FPGA如何实现视频流的实时处理与传输,并介绍了该DSP平台如何与计算机进行通信。现在对图像实时性需求的场合越来越多,实时视频处理对DSP系统性能提出了极高的要求。现有的DSP实现有很多种,比如用软件编程实现,用DSP专有芯片,用硬件实现。软件实现的灵活性好,但局限性大、速度低,用DSP专有芯片,即可编程数字信号处理(pDSP),其本质上是一个面向数字信号处理的微处理器。由于设计时可用高级语言(比如C语言)对它重复编程,pDSP有很高的灵活性。典型的一个pDSP包含多个函数单元,该器件的速度和乘法器/累加器的数量决定了它理论上的最大的数据率。需要多个并行计算的时候,必须分次实现,从而降低处理速度。一种克服方法是采用多个pDSP,另一种是采用ASIC(专用集成电路)技术,用硬件实现。ASIC技术具有并行处理的能力,一个ASIC是一个定制芯片,允许建构成专门的数字实现电路。设计时采用电路原理图或硬件描述语言输入。ASIC提供高度的并行性,多种执行单元可同时进行。ASIC的缺点在于它的定制性,一旦设计完成,修改起来代价太大。现场可编程门阵列((FPGA)技术综合了ASIC设计和pDSP的优点,既有ASIC并行处理的能力,又具有pDSP可重复编程的灵活性,因而被广泛采用。
另外,某些采用特殊工艺的FPGA具有可加密特性,通过对系统进行加密实现对知识产权的保护,维护设计者的合法权益,又不影响设计者对系统进行更改或升级。
鉴于上述DSP系统的实现方式和FPGA的优点,本系统采用FPGA来完成视频信号的采集及预处理,并且与USB兼容,从而可以与计算机通信。
该视频DSP平台的应用相当广泛,可以用来:
1.将摄像头拍到的图像送至计算机,完成图像传送。
2.由摄像头拍到的图像进行相应的数字图像处理操作。
3.可以充当媒介,使PC机与外端设备互相通信。
1.2.2课题的研究价值
本课题的研究成果不仅可直接用于电视,而且将为红外成像制导、激光雷达制导等武器的研制提供可用技术;推动常规武器向智能化方向发展。
图像处理是电视的关键部件,基于TMS320DM642芯片研制体积小、高性能专用视频采集系统将为电视的研制提供关键技术支撑。相关技术成果在民用领域也有非常大的应用空间,例如视频监控、医疗设备和仪器、视频通信、家用电器等。
1.2.3本论文的研究内容
本论文介绍基于DSP+FPGA的实时图像采集系统的软硬件的设计实现,对TI公司推出的TMS320DM642 DSP芯片及Xilinx公司推出的XC2S300E-6PQ208C FPGA型号芯片的应用和掌握,对基于TMS320DM642和FPGA的通用实时图像处理系统的各个模块进行研究与实现。
该系统在实际的研制过程中我的工作主要包括如下内容:
1.学习了DSP, FPGA, SAA7115解码器等芯片的结构、C语言开发。
2.熟悉了DSP的开发流程,相关开发工具的使用。
3.熟悉了图像编码原理,解决了视频采集的同步、 RGB到YCbCr
的转换等问题。
4.完成了系统框架、硬件器件的确定。
5.结合采集芯片SAA7115解码器的时序和控制要求,用C语言编写其控制程序并对FPGA的实现进行时序仿真。
6.PC与ICETEK-DM642-PCI板的图像传输和储存。
7.系统的运行及实际调试。

第二章 总体设计方案
2.1 FPGA芯片的介绍和选型
2.1.1 FPGA芯片的介绍
FPGA的电路结构是由若干独立的可编程逻辑块组成,用户可以通过编程将这些模块连接成所需设计的数字系统。FPGA也属于高密度PLD。
FPGA[2]一般是由3个可编程逻辑模块阵列:可配置逻辑模 (CLB-Configurable Logic Blocks )、输入/输出模块(IOB-Input/output Blocks)和互连资源(ICR-Interconnect Capital Resource)和一个用于存放编程数据的静态存储器( SRAM)组成。CLB是FPGA最重要的组成部分,多个CLB以二维阵列的形式分布在器件的中部,实现设计者所需的逻辑功能。IOB分布在器件的四周,它提供了器件外部引出端和内部逻辑之间的连接。通过遍布器件内的可编程互连资源ICR,可将器件内部任意两点连接起来,能将FPGA中数目很大的CLB,和IOB连接成各种复杂的系统。ICR主要由纵横分布在CLB阵列之间的金属线网络和位于纵横线交叉点上的可编程开关矩阵组成。
综上所述,FPGA器件在性能上主要有以下特点:
1. FPGA器件采用SRAM编程技术,从而构成高密度、高速度、高可靠性和低功耗的逻辑可编程器件。
2. FPGA器件提供丰富的I/O端数和触发器,其集成度远远高于PAL和 GAL器件。
3. FPGA器件结构最为灵活,其内部的CLB, IOB和ICR均可编程,提供了强有力的组合逻辑函数发生器,可以实现多个变量的任意逻辑。因此可满足各种各样数字电路系统设计的要求。
4. 某些FPGA器件还提供了片内高速RAM,可用于FIFO等的设计。
5. 在使用FPGA器件时,需对其进行数据配置。配置完成后,FPGA器件才可完成设计要求的逻辑功能。当断电时,FPGA器件中的配叠数据自动丢失。
6. 内部时间延迟与器件结构和逻辑连接等有关,因此传输时延不可预侧。
现场可编程门阵列(FPGA, Field Programmable Gate Array)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果。FPGA器件集成度高、体积小,具有通过用户编程实现专门应用的功能。它允许电路设计者利用基于计算机的开发平台,经过设计输入、仿真、测试和校验,直到达到预期的效果。
FPGA设计与AS1C设计的输入相同,比如电路图或高级设计描述语言,然后通过自动综合、规划、路由功能,使设计者的原始电路图变成FPGA专有的结构。
FPGA与ASIC最大的不同在于FPGA设计中没有用户专门的定制生产过程,而是通过以二进制比特流形式下载用户定义的结构来实现定制,因而灵活性大,设计的任何阶段修改电路都比较容易。
FPGA用于DSP的主要优点:
1. 设计周期短,可并行运算,快速,高效。
2. 可重新编程,如果要升级系统,不需要替换FPGA,只需对它重新编程。
3. ASIC要求昂贵的NRE(不可返回工程费),而FPGA不需要。
鉴于FPGA上述的优点,应用于DSP系统中,乘法、加法、累加、比较等函数利用硬件并行性大大提高了DSP系统的处理能力,FPGA的灵活性很好的满足了实时视频、图像处理、无线系统和高性能数字音频的特定要求。
2.1.2 本方案中FPGA的选型
由于图像处理算法涉及的运算量比较大,对系统的快速处理能力和大数据量的吞吐能力有严格的要求,因此系统中的核心器件FPGA的选择必须遵循的原则:
1. 调试使用方便。
2. 适当的响应速度。
3. 适当够用的逻辑资源。
4. 足够的输入输出(I/O)。
本实验中用ICETEK-DM642-PCI评估板[3]的OSD FPGA功能模块为型号Xilinx XC2S300E-6PQ208C的芯片。
1. OSD FPGA有如下特点:
1). 通过寄存器使用DM642外部存储器接口(EMIF)控制8个LEDS。
2). 通过可编译寄存器使用DM642的EMIF接口控制8路GPIO。
3). 产生EMIF缓冲控制信号(DIR和OEz)。
4). 提供对于PLL1708的连续控制接口。
5). 为FLASH产生3页bits空间。
6). 执行中断逻辑控制,用来监控从双UART和视频编码器产生的中断信号。为DM642产生一个尖端触发中断。
7). 为DM642视频通道和SAA7105视频解码器之间提供一个接口,这个接口首先从DM642视频通道输出的8bit视频输出直接连接到SA7105视频编码器。执行2:1多元操作,以支持SVGA和HD。DM642视频通道在OSD FPGA的时钟上升沿输出16bit的视频数据,OSD FPGA将这些数据转化为双时钟边沿的8bit视频数据。高8bit在时钟上升沿,低8bit在时钟下降沿。第一位数据混合着7位CLUT组成的由DM642输出的视频数据,第一位数据混合的视频数据传输给SAA7105视频解码器。第一位数据混合7位CLUT组成的16bit视频输出,从DM642上输出以支持HD模式操作。混合的数据被转换成双时钟沿8bit数据,传输给SAA7105视频解码器。
2.2 DSP芯片的介绍和选型
2.2.1 DSP芯片的介绍
数字信号处理任务通常需要完成大量的实时计算,如在DSP中常用的FIR滤波和FFT算法。数字信号处理中的数据操作具有高度重复的特点。DSP在很大程度上针对这些运算特点而设计。与通用微处理器相比,DSP在寻址和计算能力等方面作了扩充和增强。在相同的时钟频率和芯片集成度下,DSP完成的FFT算法的速度比通用微处理器要快2~3个数量级。
1. DSP微处理器相对于通用微处理器的区别是DSP有以下主要特点[4]:
1). 总线结构
通用微处理器内部大多采用冯•诺依曼结构,其片内程序空间和数据空间合在一起,取指令和取操作数通过一条总线分时进行。由于对数据和程序进行分时读写,执行速度慢,数据吞吐量低。当高速运算时不但不能同时取指令和操作数,还会造成传输通道上的瓶颈现像。DSP内部采用程序空间和数据空间分开的哈佛结构,允许同时取指令和取操作数。而且很多DSP甚至有两套或者两套以上内部数据总线,这种总线结构成为修正的哈佛结构。对于乘法或加法等运算,一条指令从存储器中取两个操作数,多套数据总线就使得两个操作数可以同时取得,提高了程序效率。
2). 算术单元
硬件乘法器
由于DSP的功能特点,乘法操作是DSP的一个主要任务。在通用微处理器内通过微程序实现的乘法操作往往需要100多个时钟周期,非常费时。因此,在DSP内部都设有硬件乘法器来完成乘法操作,以提高乘法速度。硬件乘法器是DSP区别于通用微处理器的一个重要标志。
多功能单元
为进一步提高速度,可以在CPU内设置多个并行操作的功能单元(ALU、乘法器、地址产生器等)。如TI公司的TMS320C6000系列[5]CPU内部有8个功能单元,即两个乘法器和六个ALU, 8个功能单元最多可以在一个周期内同时执行八条32位指令。由于多功能单元的并行操作,使DSP在相同时间内能够完成更多的操作,提高程序的执行速度。
3). 流水线结构
DSP的流水线结构是提高程序执行效率的一个重要手段。采用流水线结构,使得两个或者更多不同的操作可以重叠执行。在处理器内,每条指令的执行分为取指令、译码、取操作和执行等几个阶段,每个阶段成为一级流水。流水处理使得若干条指令的不同阶段并行执行,因而能够提高程序执行速度。
在理想情况下,一条k段流水能在k+(n-1)个周期内处理n条指令。其中,前k个周期用于完成第一条指令的执行,其余n-1条指令的执行需要n-1个周期指令。然而,非流水处理器上执行n条指令却需要nK个周期。
利用这种流水线结构,加上执行重复操作,就能保证数字信号处理中用的最多的乘法累加运算可以在单个指令周期内完成。
4). 指令周期短
早期DSP的指令周期约400ms,运算速度为5MIPS(百万条指令/秒)。随着集成电路工艺的发展,DSP广泛采用亚微米CMOS制造工艺,运行速度越来越快。例如TI公司推出的TMS320C6205芯片,时钟为200MHz,运算速度达到1600MIPS。
5). 片内存储器
由于DSP面向的是数据密集型的应用,因此存储器访问速度对处理器的性能影响很大。DSP算法的特点是需要大量的简单计算,相应的其程序比较短小,存放在DSP片内可以减少指令的传输时间,并有效缓解芯片外部总线接口的压力。除了片内程序存储器外,DSP内一般还集成有数片RAM,用于存放参数和数据。片内数据存储器不存在外部存储器的总线竞争问题和访问速度不匹配问题,因此访问速度快,可以缓解DSP的数据瓶颈,充分利用DSP强大的处理能。
2. 衡量DSP处理性能的一些常用指标。
1). MFLOPS(百万次浮点操作/秒)其中浮点操作包括浮点乘法、加法、减法和存储等操作。MFLOPS是表征浮点DSP芯片处理性能的重要指标。用户选用DSP芯片时要注意厂家提供的通常是峰值指标,因此系统设计时要留一定余量。TMS320系列可以达到1000MFLOPS的峰值性能。
2). MOPS(百万次操作/秒)这里的操作,除了包括CPU的操作外,还包括地址计算,DMA访问,数据传输和I/0操作等。MOPS可以对DSP的综合性能进行描述。200MHZ时钟的TM320峰值可以达到2400MOPS。
3). MIPS(百万条指令/秒)300MHz时钟的C6203峰值性能可以达到2400MIPS。
4). MBPS(百万位/秒)MBPS用于衡量DSP的数据传输能力,通常指某个总线I/0口的带宽,使对总线或I/0口数据吞吐率的量度,对于TM320C6XXX系列外部总线接口,如果总线时钟选择200MHz,则总线数据吞吐率为800MB/S (32位数据总线),即6400MBPS。
因为上述这些指标不可能完全由表征处理器完成特定算法的处理能力,所以只是作为系统设计时的参考。特别是随着DSP结构的多样化和复杂化,这些指标越来越不能反映DSP的综合性能,不同厂商的指标甚至不具可比性。
2.2.2 本方案中DSP的选型
由于图像算法中有乘法和除法运算,而在FPGA内实现乘法和除法运算占用的资源较多、实时性不强,因此我们选用DSP芯片完成乘除运算。为了提高精度,本文选用了TI公司的TMS320DM642系列[6]的浮点芯片。本文中DSP的作用主要用于多媒体处理领域的应用,在C64x的基础上,增加了很多外围设备和接口。
首先来了解一下TMS320DM642的特性。TMS320DM642是TI公司新推出的一款针对多媒体处理领域应用高度集成化的DSP。DM642是一个强大的多媒体处理器,DSP计算能力为每秒4.8亿条指令,内部工作时钟为600MHz(1.67ns)外部总线时钟为100MHz。针对视/音频的网络应用,DM642在C64x的基础上增强了外围设备和接口,主要包括:可配置的,可和视频输入/出无缝连接的视频接口。遵循IEEE802.3协议,具有媒体独立接(a-MII(Mediaindependentinterface),独立的发送和接收通道的10/100MB/S以太网控制器(EMAC),多通道音频串行端口,两个多通道有缓存的串口(McBSPs),用户可配置16b或32b的主端口接口(HPI16/HPI32)64b的外部存储单元接口。
DM642是一款专门面向多媒体应用的专用DSP,具有8个并行运算单元,片内RAM采用二级高速缓存结构,程序和数据拥有各自独立的高速缓存。片内的第一级程序cache称为LIP,第一级数据cache称为LID,数据和程序共享的第二级存储器称为L2:兼容IEEE-1149.1(JTAG)边界扫描;其64位EMIFA(InternalMemoryInterface)异口可实现与异步SRAM,EPROM和同步SDRAM,SBSRAM,ZBTSRAM以及FIFO的无缝接口。外部寻址空间可以达到1024MB,此外,它还集成了3个可配置的视频端口,32位/66MHZ,3.3-VPIC主/从接口(符合PIC2.2协议规范)和HIP,McASP,12C,MCBSP,GPI/O等。面向音频应用的McASP(MultiChannelAudioSerialPort),10/100Mb的以太网MAC等外设。
支持多种分辨率和标准,如CCIR601,ITU-BT656,BTI120等,每个端口为20bit位宽,可以被灵活的配置为一个20/16或两个10/8bit通道。而且DM642片内集成了一个主/从模式的PCI接口,通过PCI总线能够实现与DSP与PCI总线的互连。PCI总线由EDMA内部的地址产生硬件来实现。通过DM642的PCI接口,主机可以访问整个DSP片内的RAM,集成外设以及片外存储器。主模式访问下,突发长度最大为64KB,从模式下可无限长。PCI接口包括3类寄存器:PCI配置寄存器,PC中I/0寄存器和映射在DSP存储空间,作为外设的PCI寄存器。PCI接口为PCI主机访问DSP的存储空间提供了两种方式:可以预取访问,对应一个4MB的BASEQ空间,不可预取的数据访问,对应为一个8MB的BASEI空间。
综合以上所述,我们可以得出DM642的结构特征如下:
1. 600MHz/4800MIPS的工作频率。
2. 两级缓存结构。
3. 64bitEMIF。
4. 64个EDMA通道。
5. 3个可配置的视频接口,可以和视频输入、输出或传输流输入无缝连接。
6. VCXO内插控制端口(VIC)。
7. 通道音频串行端口(McASP)。
8. 两个多通道有缓存的串口(McBSP)。
9. 3个326it通用定时器。
10. 用户可配置的166it或32bit的主端口接口(HPT16/HPT32)。
11. 66MHz32bitPCI接口。
12. 10/100Mbps以太网(EMAC)。
13. MDIO模块。
C6000系列DSP在体系结构上采用了VeLociTI甚长指令字结构,采用T类RISC指令集,使用大统一的寄存器堆,结构规整,具有潜在的易编程性和良好的编译性能。另外,TMS320DM642采用程序总线和数据总线分离的修正哈佛结构,多数指令拥有相同流水级数,便于程序进行流水的优化。 图像采集系统上使用的TMS320DM642为548脚BGA封装。
DM642的处理能力达到4800MIPS,它的最大特点是芯片内部集成了三个可配置的视频端口,这些视频端口提供了与通用视频编解码芯片的无缝接口。本设计用的就是这些接口进行软硬件连接。
2.3 总体设计
该图像处理系统是基于DSP+FPGA 结构来设计的。FPGA是整个系统的时序控制中心和数据交换桥梁,而且能够实现对图像数据的快速底层处理。DSP是整个系统实时处理高级算法的核心器件。前端传来的模拟视频信号经视频解码器解码后转换成数字图像信号。数字图像数据在FPGA的控制下有两种流向:一路是原始图像数据经过FPGA 的转接后存储到SRAM 中暂存;另一路原始图像数据经FPGA总体转接后传送给DSP,DSP对图像数据进行高级算法处理,将结果与SRAM 中的数据再次经过FPGA 处理后,输出给视频编码器编码后发送到监视器显示。USB控制器在系统中有两种工作模式:
一种是在系统调试过程中
1. 它作为系统的主控CPU,负责系统与计算机的通信,主要包括将数字图像数据传送到计算机中保存和处理。
2. 作为PC 机下载D S P 的程序到程序存储器并在线更改参数以及PC主机动态监视系统参数。同时USB 控制器还负责视频编解码器件的初始化配置和控制DSP的程序加载。
另一种模式是在系统脱机后,主要负责对视频编解码器件的配置和控制DSP程序加载等任务。
2.4 算法及实现
2.4.1 H.263编码和解码
实验程序在ICETEK-DM642-PCI板上实现D1格式的H.263编码和解码[7]。程序将摄入的视频图像首先进行编码,产生H.263码流,再由解码程序处理此码流,生成目标视频送显示设备显示。
1. 数据流处理(如图2.1)
图2.1数据流图
数据流程:
1). 输入设备提供的一帧图像被采集到输入缓存。
2). 获得的数据由YUV 4:2:2格式进行重抽样变为YUV 4:2:0格式。
3). 提供图像数据给H.263编码库程序。
4). H.263编码程序完成对输入帧的编码。
5). H.263编码程序输出编码码流。
6). 产生的编码码流被传输到H.263解码模块。
7). H.263解码模块解码传入的码流,输出解码的一帧图像。
8). 解码模块解码产生的图像经过重新抽样由YUV4:2:0变为YUV 4:2:2格式。
9). 显示设备显示输出的图像。
2.程序流程
1). 实验程序采用RF-5结构(参考图2.2)来整合H.263的编码、解码库。程序使用了三个任务模块。在进入DSP/BIOS的调度程序之前,程序初始化了多个要使用的模块。
图2.2 RF-5结构
程序初始化的模块包括:
(1). 处理器和系统板的初始化:
初始化BIOS环境和CSL。
设置使用64K的二级高速缓存。
设置二级高速缓存可映射到EMIF的CE0和CE1空间。
设置DMA优先级序列长度取最大值。
设置二级高速缓存的请求优先级最高。
(2). RF-5模块的初始化:
系统初始化RF-5的通道模块。
系统初始化RF-5框架中用于内部单元通讯和传递消息的ICC和SCOM模块。
各通道在内部的、扩展的和临时的堆上完成建立。
(3). 建立摄入和显示通道
建立和启动一个摄入通道的实例。
建立和启动一个显示通道的实例。
(4). 建立编码解码运算实例
在通道中建立和注册H.263编码单元。
在通道中建立和注册H.263解码单元。
打开通道,建立编码和解码单元实例。
2). 在完成初始化工作之后,系统进入DSP/BIOS调度程序管理下的三个任务系统(图2.3)。三个任务通过RF-5的SCOM模块互相发送消息。
图2.3 DSP/BIOS调度程序管理下的三个任务系统
以下是这三个任务:
(1). 输入任务
输入任务从输入设备驱动程序获得视频图像。它使用驱动程序提供的FVID_exchange调用从输入设备获得一帧最新视频图像。获得的图像是YUV 4:2:2格式的,它被重采样成YUV 4:2:0。输入任务接着发送消息到处理任务,消息中包含图像数据指针。接着等待输出任务发送来的消息以继续处理。
(2). 处理任务
处理任务对图像数据进行编码,传送编码码流到解码模块,解码图像后传输到输出模块。处理任务通过RF-5通道实现视频的编码解码和显示。编码解码单元均注册于RF-5通道中。ICC模块管理编码模块产生的码流传送到解码单元这一过程。
处理任务一直等到接收到输入任务发送来的,包含输入图像的消息,才开始激活运行。
RF-5通道首先运行编码单元产生编码码流。
产生的编码码流被传输到解码单元,解码单元运行并生成图像。
处理任务接着发送消息到输出任务,消息中包含解码后生成的图像的指针。
处理任务接下来等待输入任务发来的新消息才能继续运行。
(3). 输出任务
输出任务将图像显示在显示设备上。它使用输出驱动程序提供的FVID_exchange调用实现图像的显示。它得到的图像的格式是YUV 4:2:0的,需要重新采样成YUV 4:2:2格式。接着发送消息到输入任务。然后任务等待处理任务发来的消息以继续运行。
2.4.2 YCbCr彩色系统像素表示成RGB彩色系统像素算法
RGB色彩系统[8]:俄国科学家罗蒙洛索夫于1756年首先提出三基色(RGB)的假设,奠定了认识色觉的基础。罗蒙洛索夫认为,肉眼的锥状细胞是由红、绿、蓝三种感光细胞组成的。锥状细胞将光信号转化为神经脉冲的感光化学特性可区分为三种形式,即锥状细胞将电磁光谱的可见部分分为三个波段:红、绿和蓝。这三种颜色被称为人类视觉的三基色。当一束光射入肉眼时,三种锥状细胞就产生不同反应。不同颜色的光对三种细胞的刺激量是不同的,这就产生了不同的颜色。肉眼感觉到的各种颜色就是不同波长的光刺激三基色细胞的结果。彩色合成:在彩色显示中我们采用彩色合成技术,利用彩色的三基色原理完成彩色的再现。比如在彩色显示器上显示彩色图像时,首先将彩色分成不同亮度的三基色分量,进行数字化用亮度值(通常取值0–255)表示,然后使用这三个亮度值去点亮临近的三个荧光点,这三个荧光点分别可以发出红、绿、蓝光,由于荧光点靠得足够近,它们发出的光合成和再现了原始彩色光。
YCbCr色彩系统:用RGB三基色来表示彩色的确很直观,但是如果把这种方法用作图像传输则绝不是一个好的方法。第一个缺点是与黑白图像不兼容,把RGB三基色转换为灰度的方法是:灰度=R*0.3+G*0.59+B*0.11,这个转换过程显然是比较复杂的。对于电视机而言,就味着必须解码出RGB信号才有可能得到黑白图像,而黑白电视机没有解码功能,所以不能实现兼容。第二个缺点是占用太多带宽,用RGB三基色表示图像,每个分量的带宽是均等的,都约等于亮度信号的带宽,所以对于每个分量,都要用较大的带宽来描述。第三个缺点是抗干扰能力差。由于G分量占有亮度值59%所以当G受到干扰的时候,像素的亮度值会受到很大的影响,而人眼对亮度值的变化是十分敏感的,所以图像主观质量会明显下降。基于这些原因,在视频信号传输中采用的是YUV合成的方法。Y代表亮度信息,U代表蓝色色差(就是蓝色信号与亮度信号之问的差值,Cb)}, V代表红色色差(Cr)。我们来看看使用这种表示方法的优点。第一个优点是与黑白图像兼容。假定一个像素是用YUV表示的,我们只要忽略UV分量,取出Y分量,就可以得到像素的亮度值,从而把彩色图像转换为黑白图像。这样很容易实现彩色电视信号与黑白电视信号的兼容。第二个优点是节省带宽。说这个问题的时候要先说说大面积着色原理。实验发现,人眼对亮度信息是敏感的,主要通过亮度差别来分辨物体形状的细节,而对彩色信息是不敏感的,人眼区分不出物体颜色上的细小的变化,或者说人眼不容易觉察出来图像的色彩的细节部分的变化。因此,可以对亮度信号用较高的采样频率采样,而对色度信号用较低的采样频率采样(或者用较低的量化深度),比如几个相邻的像素的亮度值不同,但是却可以使用一个相同的色度值。这就是大面积着色原理。基于这个原理,在电视信号传输中,U或V信号的带宽远小于V信号的带宽,这样就节约了带宽。换个方式来说,比如在计算机中,用RGB方式描述一个像素需要R, G, B共3个字节。而用YUV方式描述,则对于每2个像素,Y用2个字节,U取相同的值,用一个字节,V取相同的值,用一个字节,平均每个像素2个字节。或者每个像素Y用一个字节,U用半个字节,V用半个字节,共2个字节。第三个优点是抗干扰能力强。由于亮度信号是单独表示的,所以如果色差信号受到干扰,不会影响到亮度,主观感觉噪声不会明显增加。
电视信号正是采用了YCbCr彩色系统进行传输,由于Y占用的带宽与Cb和Cr加起来所占用的相同,所以在表示图像时,对于各像素的亮度信息是最丰富的,而对于彩色信息则降低分辨率表示。我国采用的PAL制电视信号也是使用YCbCr彩色系统。ICETEK-IDK-M所支持的输入设备也是输出标准PAL制式信号的摄像头。彩色系统的转换:用YCbCr彩色系统描述的颜色可以通过变换转成RGB系统中的三基色分量,其对应方式如下:
R 1 1.402 0 Y
G = 1 -0.34414 -0.71414 Cb-128
B 1 0 1.772 Cr-128

第三章 硬件设计的实现
本章详细介绍本图像处理系统的硬件部分各个模块的设计与实现,包括图像采集模块和图像处理模块和图像输出模块等。
3.1 实时图像处理系统硬件总体设计电路
硬件部分各个模块的设计与实现(如图3.1)

图3.1 处理系统结构的总体框架
该系统包括五个子系统,一部分是图像采集部分,完成图像的触发,采集功能。第二部分是DSP+FPGA图像处理系统。第三部分是实现系统控制功能。第四部分是图像的显示部分。第五部分是完成图像存储处理以及和PC机的接口等功能。
具体过程是由CCD(Charge Coupled Device) 摄像机[9]采集的模拟视频信号经A/ D(Analog/ Digital) 转换后,输入到处理模块中进行图像处理。处理结果经D/ A (Digital / Analog) 转换后,显示在终端监视设备上。最后通过PC机与仿真器上的USB接口与ICETEK-DM642-PCI评估板连接并进行图像存储和传输。 整个过程(包括采集模块、处理模块、显示模块) 都在系统控制模块协调下进行。
3.2 功能模块设计
该系统由采集、处理、显示和系统控制四个模块组成。
3.2.1 采集模块
系统采用的视频解码芯片是Philips公司的SAA7115, SAA7115是一个高集成的单片图像采集处理器,支持6路CVBS(符合模拟视频输出)或3路SVIDEO (S端子信号)输入,支持多种格式的数字RGB和YUV视频信号输出,支持可编程的视频窗口水平,垂直方向的缩放和裁减功能;支持视频场,帧的时间抽取。DM642通过I2C总线控制SAA7115的内部寄存器。
DM642具有三个视频端口,支持多种分辨率和标准,如CCIR601、ITU-BT. 656.B7.1120等,每个端口为20bit位宽,可以被灵活的配置为一个20/16bit或两个20/8bit通道。同时,每个端口都可配置为视频输入或视频输出。系统中采用VP0与SAA7115相连进行视频输入采集。SAA7115为92bit视频解码器,其内部有由视频源选择、反混叠滤波器和ADC组成的两通道模拟预处理电路、增益控制、时钟发生电路(CCC}、多标准数字解码器、亮度饱和度控制电路等组成。它支持PAL, NATSC等多种视频输入格式,输出支持标准的ITU.656YUV 4:2:2 8bit格式,通过I2C总线进行控制,只需一个24. 576MHz外部晶振,采用3.3V电源、具有小于0.5W的功耗。
来自摄像头的视频信号通过SAA7115进行数字化处理,输出的数字视频信号经过视频端口的内部FIFO缓冲后,由DMS642通过EDMS将数据传送到SDRAM中,以供视频应用程序使用。DM642中的3个视频接口与视频编解码芯片相接。本系统设计中,设计成只有一路视频输入,故VP1, VP2端口未用,采用的VP0通道配置为8位BT. 656视频输入口。该通道与SAA7115接口处有一个大小为2560字节的内部FIFO,其中1280字节存放亮度数据,剩下的1280字节则用于存放色度数据。依据视频端口的内部逻辑SAA7115输出的亮度与色度数据分别存储到相应的FIFO中。在视频采集过程中,根据视频端口内部FIFO的状态使用EDMA完成视频数据的读取,传入内部的SRAM或外部的SDRAM。视频数据的行/场同步信号包含在BT. 656数字视频数据流的EAV(End of active video)和SAV ( Start of active vide)的时基信号中,视频口只需视频采样时钟和采样使能信号即可。SAA7115内部寄存器参数的配置和状态的读出通过I2C总线进行。
视频采集框图如下图所示。
图3.2 视频采集框图
上图是视频采集的框图,下图为SAA7115与DM642的视频采集电路图(图3.3)。

图3.3 图像处理系统硬件框图
ICETEK-V220型CCD的彩色摄像机具有采集范围广、速度快、分辨率高的特点,可满足系统对图像进行实时采集的要求.
Philips 公司的视频A/ D 芯片SAA71115 的奇偶场信号RTS0 、场同步信号VREF、行同步信号HREF 等都由管脚直接引出,省去了以往的时钟同步电路的设计,可靠性也有所提高。因此,本文基于ICETEK-V220型CCD的彩色摄像机和SAA7115芯片进行了硬件设计,构成了如上图中所示的采集模块.
3.2.2 处理模块
1. 视频处理电路
TMS320DM642的特有的结构特点给设计带来了很大的自由空间。在图像处理模块中,可以扩展数据存储器和程序存储器。本系统中SDRAM用来存放系统运行时的代码以及临时图像数据,ELASH用来保存系统自启动代码以及系统程序代码。(如图3.4)TMS320DM642的EMIF(外部寄存器端口)有4个独立的可设定地址的区域。称为芯片使能空间(CE0-CE3)。每当Flash和FPGA映射到CE1时,SDRAM占据(CE0-CE3)的一部分被配置给OSD功能的同步操作和扩展的FPGA中的其他同步寄存器操作。本系统合并形成一个64bit长的外部存器端口,将地址空间分割成了4个芯片使能区,允许对地址空间进行8bit, 16bzt, 32bit和64bit的同步或不同步的存取,并且使用了芯片使能区CE0,CE1和CE3 。CE0被发送给64bit的SDRAM总线,CE1被8bit的FLash和FPGA功能使用,CE3被设置成同步功能。
图3.4 多媒体处理模块框图
1). SDRAM寄存器端口
在CE0空间连接了64bit的SDRAM总线。扩展两片32MB的SDRAM,可以使用MT48LC4M32B2,这32M的SDRAM空间可以用来存储程序、数据和图像处理中间结果等信息。总线由外部PLL驱动设备控制,在133M的最佳运行状态下运行。SDRAM的刷新由TMS320DM642自动控制。
2). Flash寄存器接口
系统扩展4M的Flash,映射在CE1空间的低位。Flash寄存器主要用来导入装载和存储FPGA的配置信息。CE1空间被配置成8bit, Flash寄存器也是8bit由于CE1的可利用地址空间小于Flash的空间,所以利用FPGA可产生3个扩展页。这些扩展的线形地址通过FPGA的Flash基础寄存器进行定义,复位后的默认值是000。
3). FPGA异步寄存器端口
本系统采用Xilinx XC2S300E系列FPGA来实现视频增强和其他的一些连带功能。在默认模式下,FPGA通过TMS320DM642的视频端b输出视频到SAA7115。视频编码器PPEA有10个定位在CE1空间高位的异步存储寄存器。这些寄存器可实现OSD控制寄存器、DMA Threshold LSB寄存器、DMA。Threshold MSB寄存器、中断状态寄存器、中断使能寄存器、GPI0方位寄存器、GPI0状态寄存器、LED寄存器和Flash Page寄存器。
4). FPGA同步寄存器端口
FPGA在CE3地址空间开设同步寄存器。这些寄存器主要实现DDS功能和一些连接。FPDA实现的功能主要包括有以下四点:
(1). 它完成了系统中视频采集和输出部分的同步信号和消隐信号的控制,其中主要包括SAA7115和SAA7l05的行同步信号,场同步信号,消隐信号。
(2). 将部分逻辑单元设计为FIFD作数据缓存,完成外接FIFO的同步读写控制,承担SAA7115与DSP的数据传送工作。
(3). 作总线控制器,完成TMS320DM642与计算机的数据通信工作以及从计算机加载各种图像处理算法。
(4). 对SAA7115输出的数字图像进行预处理,其中主要包括图像数据的色度空间转换如YUV到RGB的转换,数据格式转换如将4:2:2转换为4:2:0。
(5). 作数据总线接口,实现数据的驱动传输等功能。
通过上面的描述我们可以知道FPGA的特点有如下几点:
1). 通过寄存器使用DM642外部存储器接口(EMIF)。
2). 通过可编译寄存器使用DM642的EMIF接口控制GPI0
3). 产生EMIF缓冲控制信号(DIR和OEZ)。
4). 提供对于PLL1708的连续控制接口。
5). 为FLAH产生3页bits空间。
6). 执行中断逻辑控制,用来监控从双UART和视频编码器产生的中断信号为DM642产生一个尖端触发中断。
7). 为DM642视频通道和SAA7105视频编码器之间提供一个接口,这个接口可以在以下的方式下操作:
(1). DM642视频通道输出的8bit视频输出直接连接到SAA7105视频编码器。
(2). 行2: 1多元操作,以支持SVGA和HD。DM642视频通道在OSD FPGA的时钟上升沿输出16bit的视频数据,OSD FPGA将这些数据转化为双时钟边沿的8bit视频数据。高8bit在时钟上升沿,低8bit在时钟下降沿。
(3). 位数据混合着7位CLUT组成的由DM642输出的视频数据,第一位数据混合的视频数据传输给SAA7105视频编码器。
(4). 一位数据混合7位GLUT组成的16bit视频输出,从DM642上输出以支持HD模式操作。混合的数据被转换成双时钟沿8bit数据,传输给SAA7105视频编码码器。
2. FPGA 图像预处理子块
在图像处理中,底层信号预处理算法要处理的数据量很大,速度要求高,但算法(包括图像增锐、灰度归一化和消噪滤波等) 结构相对比较简单,为兼顾灵活性及处理速度,采用FPGA 实现是一种有效的方法。
该部分的硬件实现用的是Xilinx公司的ICETEK-DM FPGA芯片型号[10]为XC2S300E-6PQ2。
1). OSD FPGA系统结构原理图(如图3.5)

图3.5 OSD PFGA系统结构图
2). OSD FPGA信号
图3.6显示了所有进出OSD FPGA的信号,表3.1则详细描述了这些信号。

图3.6 OSD FPGA信号
表3.1 信号定义

信号 类型 描述
混合信号
RESET I 异步系统复位
FLASH_PAGE[2:0] O 评估板对FLASH的Page bits
LED[7:0] O 评估板驱动LEDS的LED输出
GPIO[7:0] I/O 评估板上连接背板的8路GPIO[7:0]
DC_EMIF_OE O EMIF数据总线传送输出使能
DC_EMIF_DIR O EMIF数据总线传送方向控制
DM642中断
EXTINT6 O 输入DM642的边缘外部中断
EXTINT7 O 输入DM642的边缘外部中断
DM642 EMIF信号
CE1 I EMIF存储空间1使能位。这个存储空间被用在评估板上的所有异步接口。包括FLASH,双UART和OSD FPGA寄存器。这一位也被来产生 DC_EMIF_OE信号。
CE2 I EMIF存储空间2使能位。这一位也被用来产生 DC_EMIF_OE信号。CE2存储空间被保留给背板接口,它可以根据背板需要进行配置。
CE3 I EMIF存储空间3使能位。这一存储空间被用在同步的OSD FPGA和背板接口上。这一位也被用来产生DC_EMIF_OE信号。CE3存储空间被配置成32bit宽同步存储器接口
ECLKOUT2 I EMIF输出时钟2,用于CE3的同步接口
ARE I EMIF异步存储器读使能位/程序同步接口地址开关或读使能
DM642 EMIF信号
AWE I EMIF异步存储器写使能位/程序同步接口写使能
AOE I EMIF异步存储器输出使能/程序同步接口输出使能
SOE3 I 对于CE3存储空间的EMIF同步存储器输出使能
EA[22,7:3] I EMIF地址总线
ED[31:0] I/O EMIF数据总线
DM642视频通道2信号
VP2CLK0 O 视频通道2时钟0,DM642输入视频通道
VP2CLK1 I 视频通道2时钟1,DM642输出视频通道
VP2CTL0 I 视频通道2控制0,用来提供HSYNC给OSD FPGA
VP2CTL1 I 视频通道2控制1,用来提供VSYNC给OSD FPGA
VP2CTL2 I 视频通道2控制2,用来提供FIELD给OSD FPGA
VP2D[19:0] I 视频通道2数据总线,DM642输出视频通道
视频编码器信号
TVDETECT I 如果TV在DAC的SAA7105输出被检测到,产生中断
PIXCLK1 O 从OSD FPGA到SAA7105的Pixel输出时钟
PIXCLK0 I 从SAA7105到OSD FPGA的Pixel输入时钟
DENCDATA[11:0] O 视频数据
视频解码器信号
RTS0_A I 实时状态或来自SAA7105的同步信息
RTS0_B I 实时状态或来自SAA7105的同步信息
PLL1708连续接口
PLL_MS O 连续控制片选
PLL_MD O 联系控制数据
PLL_MC O 连续控制位时钟
双UART接口
UART_INTB,
UART_INTA I 来自双UART的片内中断
UART_RXRDYB,
UART_RXRDYA I 来自双UART的接受信号
UART_TXRDYB,
UART_TXRDYA I 来自双UART的传输信号
FPGA配置信号
FPGA_INIT O 延时配置,指示配置清除或错误
FPGA_PROG I 对于配置逻辑的异步复位
FPGA_DIN I 连续配置数据输入
FPGA_CCLK I 配置时钟
FPGA_DONE O 配置状态和启动控制
3). OSD FPGA信号体系结构(如图3.7)

图3.7 OSD FPGA信号体系结构
OSD FPGA连接DM642的EMIF和视频通道2。FPGA还连接到视频解码器、PLL锁存器、双UART、GPIOs和LEDs。OSD FPGA的不同模块和不同功能。
视频接口(IF)
视频IF连接到DM642的视频通道2,产生视频同步。视频通道可以配置成8位或16位的显示接口。视频IF模块记录下所有从视频通道收到的数据和控制信号。视频IF模块为OSD MUX模块提供数据,也为OSD控制逻辑模块和FPGA外部的SAA7105解码器提供控制信号。在FPGA设计时,在视频数据前加入了一个10个时钟周期的延时,控制信号也延时10个时钟周期以匹配数据的延时。
地址编码器
地址编码器连接到DM642的EMIF接口。地址编码器模块记录下所有引入的数据和地址信号,并作第一级的地址编码。它将CE1地址空间分割成对FLASH空间、对两个UART空间和对OSD FPGA内部异步寄存器的空间。他还将CE3地址空间分割成外部同步逻辑器空间、对FPGA内部的FIFOs空间和对OSD FPGA内部的同步寄存器空间。
寄存器
寄存器部分实际上包括两个寄存器模块,一个是同步寄存器模块,另外一个是异步寄存器模块。同步寄存器字长为32bit。虽然同步寄存器模块有自己的读写寄存器的逻辑功能,但在回读寄存器的时候仍仅依靠ECLKOUT2时钟频率70MHz。同步寄存器包括一个检测寄存器和时钟PLL数据寄存器。所有异步寄存器的字长为8bits。异步寄存器模块也包括中断控制逻辑模块和控制LEDs和GPIOs的逻辑模块。
OSD数据FIFO[11]
OSD数据FIFO为256深,32bits宽的存储器。地址编码器控制写使能,对OSD数据FIFO写入数据。读取模块控制读使能,读取FIFO的数据输出。可以通过往CE3地址空间的0xB0000040地址进行写操作,实现对OSD数据FIFO的写操作。
DMA事件发生器
DMA事件发生器模块监控OSD数据FIFO的使用和每一块区域的事件发生数量。只要FIFO对于DMA分配的空间等于DMA的极限尺寸,事件发生器模块将产生一个DMA事件,并且当前区域产生的事件的数量不会超过特殊事件寄存器里产生的事件数量。产生的事件将被OSD逻辑控制使能。一旦DMA事件产生,DMA事件发生器将停止产生事件直到DMA被完全响应。DMA事件发生器为对OSD数据FIFO的写计数,当计数达到DMA的极限尺寸时,产生的事件将被再使能。
视频解码器端口
在ICETEK-DM642-PCI评估板中,可再分的视频端口0和视频端口1被用作捕获输入端口,命名为捕获端口1和捕获端口2。这些端口连接到SAA7115解码器。视频端口贯穿CBT开关,所以他们为了背板的使用可以被选择性的禁止。另一个的端口被连接到板上的McASP端口。捕获端口1通过一个RCA类型的视频插座J15和一个4针的低噪声S-Video接口J16,连接到视频源。输入的必须是合成的视频源,例如DVD Player或视频相机。SAA7115HL是可通过DM642的I2C总线进行编程的,并且可以连接所有的主要合成视频标准,例如NTSC,PAL和SECAM,这些都可以通过解码器的内部寄存器进行适当的编程。
视频编码器端口
ICETEK-DM642-PCI评估板的视频端口2被用来驱动视频编码器。它通过FPGA U8发送,以实现高级功能,例如OSD。但它在默认方式下是直接通过视频,连接到SAA7105视频编码器。这个编码器可以进行RGB、HD合成视频,NTSC/PAL复合视频的编码,也可对依靠SAA7105内部寄存器进行编程的S-Video进行编码。SAA7105的内部编程寄存器通过DM642的I2C总线进行配置。编码器连接到合成的或RGB显示单元。通过标准的RCA插座J2、J3和J4提供RGB图像。J4的兰色输出也可以被用于接口到合成显示单元。4针的低噪声S-VideoJ1也可用。15针的高密度DB接口(J5)允许评估板驱动VGA种类的监视器。ICETEK-DM642-PCI评估板提供高清晰TV输出,但要求更换一些支持HDTV的特殊器件。
FPGA视频功能
ICETEK-DM642-PCI评估板通过使用Xilinx XC2S300E系列FPGA来实现增强视频功能和其他的一些连带功能。默认模式下,FPGA通过DM642的视频端口2输出视频到Phillips SAA7105视频编码器。对于HDTV,FPGA提供增强的时钟;对于OSD功能,FPGA提供了FIFOs,将视频端口2的数据与FIFOs端口的数据进行混合。FPGA的FIFOs在通过CE3空间的同步模式下,通过DM642的EMIF进行存取
4). FPGA 图像预处理子块逻辑电路
本系统图像预处理子块的FPGA 采用Xilinx 公司的XC2S300E-6PQ2型号芯片。
FPGA 图像预处理子块逻辑框图如图3.8 所示.

图3.8 FPGA 图像预处理子块逻辑框图
SAA7115 输出的是隔行视频信号,一帧图像需要传送两次,分别记为奇数场和偶数场。 因此,一帧图像(连续的奇、偶两场信号) 经采集、合成,并由FPGA预处理后DSP才能进行后续处理。为了向DSP 提供连续的图像信号,采用两个图像帧存储器A和B,利用SAA7115的同步信号作为乒乓开关的控制信号。A 和B 在乒乓开关的控制下,进行交替存储,将图像数据写入帧存储器,以解决图像帧合成问题在FPGA预处理子块和DSP处理子块间用FIFO作为两模块间接口,实现数据位数的转换。SAA7115 对CCD 摄像机输入的标准PAL 格式的模拟图像进行A/ D 转换,然后输出符合CCIR 格式的4 ∶2 ∶2 的16 位YUV 数据。 本系统采集的图像分辨率为512 ×512 像素,一帧图像的大小为512 ×512×16 bit。每一帧存由一片IDT公司的IDT71V424 SRAM 构成,单片容量为512 K×8 bit ,恰好可以存放一帧的图像数据。在一帧图像数据的存储过程中, 最重要的就是对一帧图像数据开始和结束时刻的判断。利用SAA7115提供的同步信号(RTS0 、VREF、HREF) ,可实现对采集过程起止点的精确控制。RTS0 信号的上升沿标识一帧图像的起点,VREF 信号为高电平对应图像场正程扫描时的有效像素行时间。在有效像素行期间,HREF 信号为高电平对应像素有效采样时间。在有效采样时间内,VREF 信号第一次出现低电平,表明奇场图像采集过程结束,第二次出现低电平,表明偶场图像采集过程结束,此时也表明一帧图像采集结束。 SAA7115输出的数据经FPGA预处理后写入帧存储器中。 当一帧图像存入帧存储器后,由系统控制模块发出信号,将一帧图像逐行写入FIFO 中。当一行数据写入完毕后,发出READY 信号,通知DSP取走FIFO中数据。 注意到TMS320DM642 DSP 的外部数据总线带宽为32 bit ,故YUV 数据写入FIFO 时需要在FIFO 中实现数据位数转换。 FIFO 采用TI 公司的SN74ACT7804 芯片,单片FIFO 的深度为512 ×16 bit 。当图像数据逐行写入FIFO 时,一行512 ×16 bit 的数据在FIFO 中存储变为256 ×32 bit ,两片FIFO 可以满足上述要求。
3.DSP 图像处理子块
1). 系统总体设计电路图
图像分割、匹配等高层图像处理算法的特点是所处理的数据量较底层算法少,但算法的控制结构复杂,适于用运算速度快、寻址方式灵活、通信机制强大的DSP 芯片来实现。本模块以TI公司的TMS320DM642 DSP 芯片为核心设计DSP 图像处理子块. 其逻辑框图如图3.9所示.

图3.9 DSP 处理子块逻辑框图
DSP读出FIFO中的行数据并存入外部的SDRAM 中。 一帧图像有512 行,在最后一行时会收到系统的帧中断。 收到帧中断后,DSP 对一帧图像进行处理,并将处理后的一帧图像数据逐行送入输出帧存储器IDT71V424中。在系统控制下,输出帧存储器中的数据由32 bit 转换为16 bit ,然后逐行输出到FIFO 缓存中.片外存储器是DSP 图像处理子块的设计重点。 虽然TMS320C6201 片内带有可供DSP进行无等待访问的1Mb 高速内存,但这远不能满足实时图像处理过程中大数据量缓存的要求。因此,在系统设计时。为DSP 配置了高性能的SDRAM ,以弥补片内数据存储器容量有限的不足。本系统采用Winbond 公司的两片128 Mbit 的W981216BH SDRAM 芯片,用以存储运行过程中的临时数据。此外,为DSP还配置有FLASH存储器,用作存放开机自举的程序机器码以及有关数据参数。FLASH 存储器选用AMD 公司生产的8 Mbit的AM29LV800B。DSP上电后,系统通过专门的自举过程完成DSP对FLASH中初始化管理程序和图像处理主程序的加载,实现系统”脱机”工作。
一般由于各个DSP厂商的DSP结构差别很大,而且数据传输能力也相差很大,因此DSP的性能不像PC机那样可以用CPU的时钟频率和型号来表征,而是必须采用可比的性能指标来衡量。
DSP的综合性能指标除了与芯片的处理能力直接相关,还与DSP的片内,片外数据传输能力有关。DSP的数据处理能力通常用DSP的处理速度来衡量数据传输能力用内部总线和外部总线的配置,以及总线或I/0口的数据吞吐率来衡量。
下面介绍的是DM642片内集成的外围设备,从下述我们介绍这里它支持的多种接口协议:
(1). 片内存储器
TMS320DM642片内集成了大容量存储器,主要分为程序区和数据区两个独立的部分,其中程序区间可以作为普通SRAM映射到存储空间,作为高速缓存使用。
(2). 外部存储器
DSP访问片外存储器时必须通过外部存储器接口(ExternalMemory interface,EMIF)。DM642的EMIF具有很强的接口能力,不仅经具有很高的数据吞吐率(最高达1200MB/S),而其可以与几乎所有类型的存储器直接接口。
(3)直接存储器访问
直接存储器访问(Direct Memory Access,DMA)是一种式,在没有CPU参与的情况下,由DMA控制器完成DSP搬移。数据搬移的源/目的是片内存储器。
(4). 扩展的直接存储器访问
EDMA控制器负责片内存储器与其它外设时间的数据传输。
4. SAA7115图像编码子块[12]
SAA7115是PHI LIPS公司生产的一款功能较强的视频A/D芯片。它的功能是将输入的一路复合视频信号采样作A/D变换,通过8位数据总线输出变换结果,同时输出相应的各种同步信号。应用如下图3.10所示。

图3.10 SAA7115应用图
SAA7115通过TMS320DM642的I2C总线进行编程,并且可以连接所有的主要合成视频标准,例如NTSC, PAL和SECAM,这些都可以通过解码器的内部寄存器进行适当的编程。SAA7115的输入晶振频率为24. 576MHZ,实际工作频率为13.5MHZ。在PAL制式下,一行采集720点(不包括行消隐信号),一帧采集625行(包括场消隐信号)。SAA7115有多种功能供用户选择,功能的选定也可以通过对寄存器的设置来完成。
3.2.3 系统控制模块
基于大规模可编程器件的时序与逻辑控制设计是视频板设计中采用的重要手段,在实现复杂系统功能的同时,又便于板级调试与功能升级。故本系统的系统控制部分采用FPGA 芯片实现。此部分与图像预处理子块可用同一片FPGA芯片实现。本系用FPGA 来实现A/ D 转换器的采样时钟控制、系统时序控制、同步电路、地址发生器和数据/ 地址输出电路等,来对整个系统进行控制。系统控制逻辑框图如图3.11所示。

图3.11 系统控制逻辑框图
图中①作为系统核心控制逻辑的主控模块,用来调用②~ ⑦各子功能模块;②是整个控制逻辑执行的起点,它根据I2C 协议来配置视频解码芯片,并且只有I2C 配置过程结束后,才能启动其它子功能模块的运行;③用于完成DSP子块的图像处理; ④~⑥用于完成图像采集、预处理、存储控制等功能;⑦用于完成图像处理结果显示。
3.2.4 视频输出模块电路设计
视频输出采用的是SAA7105,SAA7105支持PAL与NTSC格式的视频编码,支持VCA等多种视频输出格式。TMS320DM642的视频端2用来驱动视频编码器。它通过FPGA发送实现高级功能。该端口直接通过视频连接到SAA7105视频编码器。这个编码器可以进行RGB,HD合成视频及NTSC,PAL复合视频的编码,也可对依靠SAA7105内部寄存器进行编程的S-Video进行编码。SAA7105的内部编程寄存器通过DM642的I2C总线进行配置。视频输出模块框图如图3.12所示。

图3.12视频输出框图
HDTV,FPGA提供增强的时钟, FPGA的FIFOs在通过CE3空间的同步模式下,通过TMS320DM642的EMIF进行存取。
通过对上述视频采集电路的设计,我们可以知道整个视频信号的流程:如图3.13
1. 视频输入:视频信号为标准PAL/NTSC制电视模拟信号,同时输入两路复合视频信号。第一路信号经过视频解码芯片(AD转换芯片)SAA7115解码成数字并行信号BT. 656码流送DM642的视频接口,第二路信号经过视频解码芯片(AD转换芯片)SAA7115(U27)解码成数字并行信号BT. 656码流送DM642的视频接口。
2. 视频存储:DM642的视频接口解码DT. 656码流,得到图像,自动通过EDMA传输到SDPAM中存储。
3. 图像处理:DM642的CPU通过访问SDRAM中的图像,进行处理后送输出缓冲区(SDRAM中)。
4. 视频输出:DM642的视频接口(输出)自动通过EDMA从SDRAM中的输出缓冲
区取得数据后形成BT. 656码流送出。
图3.13 视频信号的流程
5. OSD与视频叠加:输出的视频BT656码流经过OSDFPGA(U39)与OSD(On Screen Display)数据叠加后产生新的视频BT656码流送编码芯片形成输出。
6. TV输出:视频编码芯片(DA转换芯片)SAA7105接收输出BT656码流,转换成标准电视信号输出到输出插座J4,编码芯片也可以产生高清晰度电视信号或VGA信号输出到相应插座。

第四章 软件设计的实现
4.1 软件设计环境
TI公司推出的TMS320SDM642其独特的VL工W结构决定了芯片功能是否能充分发挥,很大的程度上取决于代码的效率,取决于代码产生工具的好坏。为此,TI公司推出了世界上第一个效率可70%-80%的汇编语言级C编译器,它产生的代码的平均效率是其他DSP编译器的3倍。另外它独有的汇编优化器可以使开发者采用线性汇编语言(串行汇编语言)得到近似标准汇编的性能,因此降低了开发难度。
下面我们主要以CCS(Code Composer Studio)[13]为核心介绍了软件开发环境,包括集成开发环境CCS,实时操作系统DSP/BIOS.
4.1.1 集成开发环境(Code Composer Studio)
现今DSP的发展趋势是处理器更复杂,更新速度更快,DSP的应用也向多处理、多通道的方向发展,变得越来越复杂。与此同时,市场对基于DSP的产品需求越来越大,竞争也越来越激烈,因此对开发效率的要求越来越高。对于开发者,要想在有限的开发周期内充分利用DSP器件的每个MIPS,有效的开发工具至关重要。
CCS是TI公司推出的一个集成性DSP软件开发工具,在CCS推出之前,软件的开发是分立的。开发者首先使用代码生成工具(Code Generation Tools),也就是所谓的C编译器,C优化器,汇编器和连接器等工具以命令行方式编译用户的程序代码,在DOS窗口观察编译器的错误信息,然后再某个文本编辑器中修改源代码,重新编译,直到程序编译正确。此生成可执行文件后,开发者要使用Simulator(软件仿真)或者Emulator(硬件仿真)调试自己的程序,程序出现任何问题还要修改错误并重新编译重复上述步骤。Simulator和Emulator只提供了简单的调试手段,只能通过设置断点等简单操作调试。
为了产生可执行文件,开发者要按照以下步骤进行。C编译器编译.C程序生成.asm汇编源文件,再由汇编器编译生成.obj目标文件,最后由连接器生成.out可执行文件。在CCS出现之后,上述所有的一切操作都可以隐藏在CCS集成环境之下,由CCS根据源程序的类型自动调用适当的代码工具。开发者的一切开发过程都是在CCS这个集成环境下进行的,包括项目的建立,原程序的编辑以及程序的编译和调试。除此之外,CCS还提供了更加丰富和强有力的调试手段来提高程序调试的效率和精度。CCS在一个开放式的插件(plug-in)结构下,CCS内部集成了以下软件工具:
1. 代码产生工具(包括C的编译器,汇编优化器,汇编和连接器)。
2. 软件模拟其(Simulator )。
3. 实时基础软件DSP/BIOS。
4. 主机与目标机之间的实时数据交换软件RTDX。
5. 实时分析(reartimeanalysis)和数据可视化(capabilities)软件。
在CCS下,开发者可以对软件进行编辑,编译,调试,代码性能测试(profile)和项目管理等所有的工作。除此之外,它还提供了实时分析和数据可视化功能,大大降低了DSP系统的开发难度,使开发者可以将精力集中在应用开发上。
4.1.2 开发过程
DSP/BIOS支持交互的程序开发模式,可以先为应用程序生成一个框架,在使用实际算法之前给程序加上一个仿真的运算负荷来测试程序。在DSD/BIOS环境[14]下可以方便地修改线程的优先级和类型。本设计中DSP/BIOS工程结构如图4.1。

图4.1 DSP/BIOS工程结构

4.2 软件总体设计
系统的软件设计主要包括有前端A/D芯片初始化程序,基于TMS320DM642芯片的视音频驱动程序,编码算法、PCI驱动及CPU控制管理程序的编写。其中采集,编码,显示,存储算法的编写是整个软件的核心技术,它直接影响到系统的功能特性及性能好坏。而在操作系统方面,采用基于DSP/BIOS的TI参考架构5(RF5)基于RF5操作系统的应用程序模块主要包括:视频采集模块,图像处理中的压缩编码模块,显示模块和图像存储传输模块,系统软件模块框图如图4.2所示。

图4.2 系统软件模块框图
4.2.1 软件各模块的实现
现在介绍DSP端的软件结构,我使用的是基于DSP/BIOS的TT参考架构5(RF5),基于RF5操作系统的应用程序模块主要包括:视频采集模块,压缩编码模块UART控制模块和网络传输模块。根据本系统的要求,整个软件系统分为四个任务模块,每个模块完成各自的功能。这四个任务模块分别为输入任务,处理任务,输出任务,存储任务。下面将详细的介绍各个流程。
输入任务包含了3个功能:初始化,采集图像帧和色度空间转换。也就是将VP口采集到的数字图像存入动态分配的内存空间中,图像格式YUV4:4:2(可根据需要进行设置),然后对该图像色度进行4: 2: 0重采样,这样做的目的是为了调用H.263算法库。完成以上两步后,输入任务模块发出一消息给处理任务模块,告知图像在内存空间中的位置让处理任务模块去做进一步的处理。接着,输入任务模块等待处理任务模块回复,收到回复消息后,继续采下一帧图像。
1.初始化和驱动程序的设计
1). SAA7115的初始化
(1). 本系统中的SAA7115的初始化[15]将模拟视频输入设置为PAL输出格式并为YUV4: 2: 2 8bit的数据,允许自动增益控制。
(2). 视频端口数据采集通道的设置通过视频端口的寄存器组对数据采集通道进行设置,具体要注意以下几点:
第一点:由于SAA7115输出的同步信号为高电平的脉冲,需将视频端口的控制信号线VCTI、设置为高电平有效。
第二点:设置输入的数字视频格式为8位BT.656格式,并且为丢弃场消隐期的数据,需设置第一场与第二场图像采集的起始和结束位置。
第三点:设置3个EDMA通道,分别负责将亮度FIF0,与两个色度FIF0内的数据传入外部存储SDRAM的相应区域。并设置每当FIFO采集到一行图像数据时,触发一次EDMA传输。
初始化如图4.3:

图4.3 芯片的初始化
C64x系列的DSP系统给出了类/微驱动模型的驱动程序结构,采用该模型进行驱动程序设计,应用程序复用绝大部分相似设备的驱动程序。
类/微驱动模型结构如图4.4所示,该模型在功能上将驱动程序分为依赖硬件层 (微驱动)和不依赖硬件层(类驱动)两层,并在两层之间给出通用接口。上层的应用程序不直接控制微驱动,而是通过类驱动对其进行控制。每一个类驱动在应用程序代码中表现为一个API函数,并通过标准微驱动的接口IOM与微驱动进行通信。

图4.4 类/微驱动模型结构
在类/微驱动模型中,类驱动通常用于完成多线程I/O请求的序列化功能和同步功能,同时对设备实例进行管理。类驱动通过每个外部设备独有的微驱动对设备进行操作。微驱动采用芯片支持库控制外设的寄存器、内存和中断资源。微驱动程序将特定的外部设备有效地表示给类驱动。
类驱动使用DSP/BIOS中的API函数实现诸如同步等的系统服务,DSP/BIOS定义三种类驱动模块:管道管理模块(PIP)、流输入输出管理模块(SIO)和通用输入输出模块(GI0)。在PIP和SIO类驱动中,调用的API函数已经存在于DSP/BIOS的PIP和SIO模块中了,这些API函数需将参数传给相应的适配模块,才能与微驱动交换数据。而在GIO类驱动中,调用的API函数则直接与微驱动通信。
2). 基于TMS320DM642的视频采集驱动
基于TMS320DM642的视频采集驱动程序图像采集系统的核心是图像的数字化处理模块。基于PC机的数字视频处理,给出了算法研究的途径,而基于高速DSP的应用模块才提供了实时嵌入式视频处理的可能。然而,基于DSP的海量视频数据的实时处理的关键则是实时、合理的视频数据采集。下面针对基于TMS320DM642的图像采集,使其在C64x系列DSP的实时操作系统DSP/BIOS的环境下运行,实现基于类/微(Class driver/mini-driver)驱动模型的视频采集驱动程序,并进一步描述采用EDMA(增强的直接存储器存取控制器)的数字视频图像信号的实时传输。
图像采集系统的视频采集模块主要由DSP芯片DM642、视频解码芯片SAA7115和同步动态存储器芯片SDRAM等组成。来自摄像头的视频信号通过SAA7115进行数字化处理,输出的数字视频信号经过视频端口的内部FIFO缓冲后,由DM642通过EDMA将数据传送到片外SDRAM中,以便供视频应用程序使用。
TMS320DM642的最大特点是芯片内部集成了三个可配置的视频端口,这里我为视频端口提供了与通用视频A/D转换芯片的无缝接口,同时外加FPGA和FIFO就可以满足系统设计的要求。用SAA7115来支持六路CVBS(复合可编程逻辑器件)和FIFO就可以满足系统设计的要求。SA7115支持六路CVBS(复合模拟视频输入)或三路S-VIDEO (S端子信号)输入,支持多种格式的数字RGB和YUV视频信号输出。DM642通过I2C总线控制SAA7115的内部寄存器。
采用类/微驱动模型编写DM642芯片视频端口的视频采集驱动程序,驱动必须满足如下几个基本功能:
(1). 硬件中断。
(2). 可同时处理DM642的三个视频端口。
(3). 支持应用程序配置视频采集的参数,支持获取图像数据。
(4). 支持场图像采集,支持对CVBS和S-VIDEO两种模拟信号的采集。
在视频采集过程中,是对视频数据进行实时控制和有效的传输,同时使用硬件中断,并在中断服务程序中,根据视频端口内部FIFO的状态通过EDMA完成视频数据的读入。
(1). 视频采集驱动程序的框架构建
视频采集驱动程序包括类驱动和微驱动两个模块,视频采集驱动程序的结构框架如图所示。
类驱动使用GIO模块[16],GIO模块的传输是基于流输入输出模块的同步I/0模式的,适合文件系统I/0,如视频采集的应用。该模块的主要API函数的描述如表4.1所示。
表4.5 GIO模块的主要API函数

函数 函数描述
GIO_control 设备控制操作
GIO_create 创建GIO通道
GIO_delete 取消GIO通道,释放资源
GIO_submit 向微驱动发送数据
在表4.2中,应用程序使用GIO_create函数创建GIO通道,并通过调用GIO_submit函数直接与微驱动的IOM交换数据,完成视频数据的采集。
应用程序通过GIO类驱动调用微驱动的标准API函数,这些标准API函数的描述如表4.2所示。这些规定的函数将放入微驱动的函数接口表(IOMFxns)中,以供应用程序通过GIO类驱动调用。
表4. 2微驱动的API函数

函数 函数说明
MbBidDec 绑定通道
mdCreateChan/mdDeleteChan 创建/删除通道
mdSubmitChan I/O请求发送
ISRs 中断服务
mdControlChan 硬件设备控制
在表4.2中,应用程序使用GIO create函数创建GIO通道,并通过调用JIO submit函数直接与微驱动的IOM交换数据,完成视频数据的采集。
(2). 基于双EDMA通道的视频数据传输如图4.5
图4.5视频采集驱动程序的结构框架
利用EDMA将FIFO中的数据传输到SDRAM中,使用两个EDMA通道进行数据传输。由于DM642视频端口的内部FIFO提供”满”、”半满”、”空”三种状态,以亮度信号的传输为例,当用于存储亮度分量的内部FIFO半满(640字节)时,触发DM642的硬件中断,在中断服务程序中启用一个EDMA通道将数据从FIFO中读出,存放到缓冲区BUF中。传输完毕后,启动另一个EDMA通道将数据从BUF中传输到SDRAM中。这样,两个EDMA通道分别进行读取FIFO和写入SDRAM的操作。
2. 视频采集程序的设计
DSP/BIOS应用程序通过GIO类驱动调用微驱动之前,需使用DSP/BIOS配置工具注册微驱动,将其命名为VPOCAPTURE,并启动GIO模块。
视频图像采集
视频图像采集这个模块的应用我从主程序video.c和分程序VCParamForPAL.c中进行设计见(附录1)。其设计思想见图4.6。

NO

YES
NO

YES
图4.6 系统启动和图像采集图
(1). 系统上电复位。程序从FLASH 自举, 完成图像处理程序的导入以及一些初始化工作, 然后等待信号触发。
(2). 触发信号产生DM642 中断, DSP 利用I2C 总线通过MCBSP 对SAA7115 采集芯片的寄存器写入相关参数, 促使其进行图像采集。
(3). FPGA 完成采集芯片SAA 7115 的时序逻辑控制, 同时产生对图像处理模块的接口FIFO 进行必要控制的信号。
(4). 图像经过FIFO 通过DM642的DMA 通道, 一方面存入SDRAM , 以便DM642 进行图像处理, 另一方面通过DMA 由PCI总线经过图像解码芯片SAA7105 解码后传入PC 机显示。
(5). FLASH 存入图像处理算法, 包括图像分割、滤波、小波变换、Hough 变换等, 通过DM642 的EMIF导入DM642 进行图像处理。
(6). 图像处理结果(极少量的数据) 通过USB传入PC 机以便后期系统管理, 也可根据系统需要进行数据库管理。
(7). 在以SAA7115 为核心的一幅图像采集过程中,DSP同时进行前一幅图像的处理运算, 这样的并行处理模式提高了系统的实时性。
3.处理任务
该任务主要完成H.263压缩。首先获得一个从输入任务模块发出的消息,并且从中得到图像数据。接着进行H.263压缩,如前所述,压缩调用了H.263算法库,其压缩的速度和性能比较好。在模块完成图像压缩后,发出三个消息:
第一个发给输入任务模块,使其继续采集下一帧图像。
第二个发给网络任务模块,把H.263图像在内存中的位置以及字节数告诉网络任务模块供其处理,同时,处理任务模块将等待网络任务模块回复消息。
最后一个消息发给输出任务模块,告知原始图像在内存中的位置,让输出任务模块把它输出到LCD进行显示。同样,它也将等待输出任务模块回复消息。
1). 图像编解码模块
首先需要解决的问题应该是把视频信息数字化后送到计算机中。视频信号源从是摄像机采集而来,而它的输入是标准的彩色全电视信号。
PAL制式的信号处理(如彩色空间,相位处理等):首先将彩色全信号经过采集设备分解成,模拟的RGB信号或YUV信号,然后进行各个分量的A/D变换,解码,将模拟的RGB或YUV信号转换成数字的RGB和YUV信号,存入帧存储器,主机可以通过总线对帧存储器中的图像进行处理,帧存储器中的数字RGB信号和YUV信号通过D/A转换成模拟的RGB和YUV信号,再经过编码输出到显示器上。解码程序的设计cellh263dec.c与编码程序的设计流程框图是一样的。
H.263编码见(附录2)软件程序cellh263enc.c的流程如图4.7

NO

YES
图4.7 H.263编码软件流程图
2). 视频数据交换
基于EDMA的FIFO与SDRAM之间的数据交换是基于3EEDAM通道实现的。视频数据到来之前,设置各个EDMA通道相应的传输参数RAM FIFO采集到一行图像数据,触发EDAM开始进行数据的交换,当采集完一帧图像数据时产生EDMA传输结束中。在中断服务程序里根据实际设定情况完成视频处理。
通过EDMA链表可实现自动场合成,这样不需占用额外的CPU时间。在使用EDMA通道传输奇数场与偶数场时,分别使用不同的EDMA参数RAM,两组参数RAM的目的地址分别指向存储图像的第一行与第二行像素的首地址,并且两组参数RAM通过连接地址循环相连。在EDMA通道的传输中,奇数场传输的结束会自动地根据当前参数RAM的连接地址装载传输偶数场的参数RRM奇数场与偶数场分别经RDMR通道传输至SDRAM后被隔行存储。
4. 输出视频图像
该任务完成将采集到的原始图像输出到CCD显示器,进行显示。由于采集到的是YUV图像,而本系统的CCD使用RGB信号作为输入,这需要经过数字图像格式转换,该转换交由FPGA完成。此由程序中函数void ICETEKDM642PCIYUVRGB()来完成此功能。
处理后输出显示的结果如图4.8所示

图4.8处理后的图像显示
5. 发送并存储获取的图像数据
头文件ICETEK-DM642-PCI.h中的函数void ICETEKDM642PCIBoardInit()中包含了视频采集的初始化参数,如图像大小、同步方式等;bufp用于指出采集图像的存储地址。
使用类/微驱动模型开发的程序,有效地解决了图像采集和图像实时处理之间的关系,在几乎不需要CPU的干涉下,利用EDMA完成了数字视频图像数据的高速传输,视频应用程序的开发速度获得了极大的提高。我在这里设计的图像传输和存储程序(附录3)是void SaveToBMP(),其设计结构思想如图4.9:

图4.9 储存图像设计思想图
从ICETEK-DM642-PCI缓存中传输图像数据到PC机的进度如图4.10所示

图4.10 从ICETEK-DM642-PCI缓存中传输图像数据到PC机
在PC机上打开采集的图像如图4.11所示

图4.11 PC机中打开的图像文件
4.2.2运行步骤
1.实验准备
1). 连接设备
(1). 关闭计算机和硬件实验箱电源。
(2). 连接ICETEK-5100USBV2.0仿真器[17]一端的黑色插头到ICETEK-DM642-PCI板上J7插座(JTAG),电缆上红色线要靠近”J7″丝印。
(3). 连接+5V电源线到ICETEK-DM642-PCI板上J10插座。
(4).硬件实验箱中视频转接线的输入端连接到选配的摄像头上,将转接线的输出端(两个接头)分别连接到ICETEK-DM642-PCI板上J15和J16插座。
(5). 连接显示器接头到专用电视转接线的相应插头,连接转接线的黄色莲花插头到ICETEK-DM642-PCI板上J4插座。
(6). 用实验箱所配的电源转接线(两端均为带孔的插头)连接实验箱底板上+12V电源输出插座到选配的摄像头上电源插座。
(7). 将电视转接线上电源插头(带孔的黑色插头)插入板的底板上+12V电源输出插座。
2). 开启设备
(1). 打开计算机电源。
(2). 打开硬件实验平台电源开关,注意ICETEK-DM642-PCI板上指示灯DS10亮,表示OSD FPGA配置完成,与此同时,DS1~DS8全亮。
(3). 附带的USB电缆连接计算机(最好使用PC机机箱后部的USB插座)和仿真器相应接口,注意仿真器上两个指示灯均亮。
(4). 打开电视显示器开关,可以看到彩条显示。
(5). 双击运行桌面上”初始化ICETEK-5100USB仿真器”,在弹出的DOS窗口中观察初始化操作结果。
如果窗口中最后一行显示”This utility has successfully reset the controller.”,并提示”按任意键继续…”,表示成功地初始化仿真器,可按键盘上空格键继续下步操作。如果窗口中没有出现”按任意键继续…”,请关闭窗口,关闭实验箱电源,再将USB电缆从仿真器上拔出,返回第②步重试。
如果窗口中出现”The adapter returned an error.”,并提示”按任意键继续…”,表示初始化失败,请关闭窗口重试两三次,如果仍然不能初始化则关闭实验箱电源,再将USB电缆从仿真器上拔出,返回第(2)步重试。
3). 设置Code Composer Studio为Emulator方式
4). 启动Code Composer Studio
双击桌面上”CCS 2(‘C6000)”图标,启动Code Composer Studio。成功后可看到CCS环境界面。
2.打开工程:工程目录C:ICETEK-DM642-EDULabLab525-VideoRGB
3.浏览工程中源程序并理解含义。
4.编译、连接、下载程序并运行。
5.打开辅助GEL文件,进行图像变换
用鼠标右键单击工程管理窗口中”GEL files”项并选择”Load GEL…”,选择C:ICETEK-DM642Video目录中的RGB.gel,选择菜单”GEL”->”YCbCr-RGB:色彩空间变换控制”->”StartConvert”在”Function:StartConvert”窗口中的”Start Convert(1-Yes 0-No):”项中输入1,然后单击 “Execute”按钮,视频图像将停止,程序开始将当前静止图像进行变换。在”Function:StartConvert”窗口中的”Start Convert(1-Yes 0-No):”项中输入0,然后单击 “Execute”按钮,图像将重新变成当前活动视频。
6.等待”stdout”窗口中显示”Finished.”表示存盘完毕。
7.结束运行,退出工程。
8.在C:ICETEK-DM642Video目录下可以找到Video.bmp图像文件如上图4.11。

第五章 总 结
DSP技术是一个越来越受到人们重视的应用领域。随着数字化信息时代的发展,人们对小型化、实时性系统的应用提出更高的要求。本设计在分析当前通信系统的背景下,指出图像的采集与处理在通信系统中的应用。通过分析当前图像采集与处理系统设计的现状,确定了本次系统设计功能模块:本系统搭建一视频DSP平台,在该平台上可以完成视频流的实时传输与处理,并通过DSP板上仿真器的USB接口与计算机相互通信,通过计算机对系统的初始化和工作方式进行配置,在这基础之上该DSP平台被进一步开发,完成更进一步的图像处理功能,这些由于选定的FPGA来完成。
本章对此做一下简要总结,指出了今后系统的改进方向。
本文设计的系统采用以DSP(数字信号处理器)和FPGA为核心的硬件结构的图像采集处理技术。完成从输入的模拟信号转换为数字信息,并对其进行快速处理,显示等功能。本文通过实际的硬件实现和实验尝试,验证了系统的可行性,现对本文的主要工作总结如下:
1. 在阅读了大量文献的基础上,根据系统小型化、集成化的要求,以功耗低、成本低、体积小为目标,对采集处理系统的理论及其软硬件关键技术进行概括和论述,并提出了解决方案。对系统进行了结构和功能分析,论述了系统的总体实现方案,在此基础上完成了器件选型及硬件电路的搭建。
2. 系统设计中用FPGA进行缓存,控制图像采集,DSP进行图像处理,解决了图像采集的同步问题,并充分利用了DSP强大而高速的数据处理能力,简化了硬件构架,增强了系统的灵活性。
3. 本方案根据系统的特点,采用Flash在线编程的方法,操作灵活,执行代码可以在线更新。PC并通过仿真器的USB接口与ICETEK-DM642-PCI板相连来进行图形的存储和传输。
需进一步解决的问题
由于初次进行基于TMS320DM642和FPGA技术的系统设计,缺少实际经验以及个人水平和时间的问题,要使系统实用化、完善化还需要进一步的探索和试验。针对具体的图像数据,需要编写更好的优化处理算法,才能在实验系统上取得较好的效果,使系统具有更高的性能。
本采集系统还存在很多地方进行研究,具体来说有以下四点:
(1) 图像处理操作过程如果具备图像增强、去噪、锐化等基本的数字图像处理功能,将使本系统输出的图像质量得到很大的提高。
(2) 由于视频解码芯片输出为YUV4:2:2格式,液晶显示模块部分为RGB格式,此色度空间的转换在FPGA中通过简单的逻辑功能来实现有一定的难度。难度主要在于时序的控制。尝试采用查找表或采用Nios解决,由于时间仓促还有待改进。可以在FPGA中采用状态机来实现此复杂的时序,也可以采用先将数据存储在SRAM中,然后通过DSP访问SRAM,再在DSP中实现色度空间的转换。
(3)如何利用FPGA内部丰富的资源,还有待进一步探索。
(4)从摄像头过来的两路视频信号的同步问题,对视频流数据进行数据压缩处理等。
这些问题有待进一步的研究。

参考文献
[1]王念旭等编著.DSP基础与应用系统设计[M].北京:北京航空航天大学出版社,2001.
[2]褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科技大学出版社,2003.
[3]聂秋玉,蒋建国,齐美彬.基于TMS320DM642的网络摄像机设计[J].电子设计应用,2005,7:15~19.
[4]彭宗启.DSP技术原理及应用[M].北京:电子工业出版社,1998.
[5]任丽香.TMS320C6000系列DSP的原理与应用[M].北京:电子工业出版社,2000.87~134.
[6]聂秋玉,蒋建国.齐美彬.基于TMS320DM642的网络摄像机设计[J].电子设计应用,2005.7.23~29.
[7]李大为.窄带通信视频压缩编码标准-H. 263[M]. 北京:电子工业出版社,1998.
[8]关新平,赵立兴.图像去噪混合滤波方法[N].中国图像图形学报,2005.(3):331-345.
[9] 马锐,魏学业.一种CCD图像相关处理系统的FPGA+DSP实现[N].北方交通大学学报,2004.28 (3):88-91.
[10]郭书军,王玉花.流水线技术在FPGA设计中的应用[N].北方工业大学学报,2004.(3):62-69.
[11]李启炎,翁良科.基于CPLD和和FIFO的多通道高速数据采集系统的研究[J],电子工程师,2003. (2) :44-47.
[12]计文平,郭宝龙.数字视频压缩编码的国际标准[J].计算机应用研究,2003. 20(4): 1~5.
[13]彭启琼,管庆.DSP集成开发环境CCS及DSP/BIOS的原理与应用[M]. 北京:电子工业出版社,2004.7.
[14]潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003.112~150.
[15]柯丽,黄廉卿.DSP芯片在实时图像处理系统中的应用[J].光机电信息,2005 (1):17-23.
[16]Texas Instrument Corporation. TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor[J], SPRS200J,JULY .2002.
[17]黄正谨,徐坚,章小丽,熊明珍.CPLD系统设计技术入门与应用[M].北京:电子工业出版社, 2002.3

附 录
附录1 视频图像采集,显示子程序
附录2 视频图像编码,解码子程序
附录3 视频存储子程序

相关日志

16 Responses to “基于DSP+FPGA技术的视频图像采集系统的设计”

  1. jile Says:

    能不能把你的这篇论文《基于DSP+FPGA技术的视频图像采集系统的设计》给我发一份啊?我的邮箱是jileaa123@163.com。谢谢

  2. 清静 Says:

    能不能把你的这篇论文《汽车牌照定位与分割研究》给我发一份啊?我的邮箱是kanyhui@sina.com。谢谢

  3. lijie Says:

    我正的搞DSP+FPGA,请发一份给我做个参考吗?
    lijiehunan@126.com

    谢谢啦!

  4. cold Says:

    您好。可以把您的这篇论文DSP+FPGA视频图像采集的论文发到我的邮箱里么?谢谢了先。我的邮箱coldblood7999@163.com

  5. 若谷 Says:

  6. 若谷 Says:

    没问题

  7. 若谷 Says:

    好的

  8. george Says:

    你好!论文能发我份吗,我的邮箱george.1983@163.com。
    关于ICETEK-V220型摄像机,想请教你下:
    里面的自动聚焦功能除了改变焦距,还有什么吗?比如视场角会变吗?
    谢谢!

  9. MucTech Says:

    你好,这篇 基于DSP+FPGA技术的视频图像采集系统的设计 的论文很有意思。请问能给我发一份完整版的到邮箱里面吗?谢谢。
    muctech@live.de

  10. george Says:

    你好!能否把《基于DSP+FPGA技术的视频图像采集系统的设计》论文发我看下呢?谢谢

  11. 小伟 Says:

    您好 这篇基于DSP+FPGA技术的视频图像采集系统的设计 的论文正是我想要的,可以给我发一份吗?太感谢您了!谢谢!xiaowei5418@163.com

  12. nelson Says:

    你好,你的这篇文章对我非常非常有启发,我正在做DSP+FPGA,但是我是很新很新的新手,能不能把你的文章给我参考一下呢?真是太感谢你了,我找了好长时间才找到。我的邮箱是:nelsonadonis@gmail.com劳驾了。再次感谢你。

  13. weijihuan Says:

    你好!看完你着篇文章后我觉得非常好!我正在做DSP+FPGA这方面的毕业设计.想借鉴一下你的文章!能不能给我发一下啊!谢谢拉!我的邮箱是:weijihuanhe@163.com

  14. weijihuan Says:

    你好!太好了!我也在做DSP+FPGA这方面的毕业设计!看了你的文章后觉得真是太好了!我真想借鉴一下你的文章1能不能也给我发一份呀!谢谢先!我的邮箱是weijihuanhe@163.com

  15. 陈晨 Says:

    我也在做DSP+FPGA这方面的毕业设计!可不可以给我发一个完整版的呢 谢谢你了 麻烦你了 我的邮箱是chensongyi1109@163.com

  16. zhulong Says:

    我也在做DSP+FPGA这方面的毕业设计!可不可以给我发一个完整版的呢 谢谢你了 麻烦你了 我的邮箱是187100248@163.com

Leave a Reply