Featured Post

北岛

Read More

八十年代中期,北岛、顾城、舒婷,创造并统治了朦胧诗,影响了整整一代人。

扩频接收机匹配滤波器的设计及FPGA实现

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 19-09-2009

标签:, , , ,

0

目 录
摘 要 III
ABSTRACT IV
第一章 绪论 1
1.1 课题应用背景和意义 1
1.1.1 扩频通信的发展和应用 1
1.1.2 本课题研究目的和意义 2
1.2 扩频接收机匹配滤波器的研究现状 3
1.3 研究思路 5
1.4 论文主要内容 5
第二章 扩频通信系统 6
2.1 扩频通信技术 6
2.1.1 扩频通信定义和理论基础 6
2.1.2 扩频通信特点和工作方式 6
2.2 扩频接收机原理 7
2.3 伪码捕获 9
2.3.1 PN码的捕获方法 10
2.3.2 匹配滤波器原理 11
2.3.3 匹配滤波器性能 13
第三章 数字匹配滤波器 17
3.1 FIR数字滤波器基础 17
3.1.1 FIR数字滤波器原理 17
3.1.2 FIR数字滤波器基本结构 18
3.1.3 FIR数字滤波器设计原则 20
3.2数字匹配滤波器常用设计方案优缺点比较说明 22
第四章 匹配滤波器的FPGA详细设计方案 24
4.1 方案采用说明 24
4.2 匹配滤波器模块划分 24
4.2.2 方案整体叙述 24
4.2.3 方案细节确定 25
4.2.4 匹配滤波器的模块划分 30
4.3 匹配滤波器各个模块的实现 30
4.3.1 累加模块 30
4.3.2 折叠滤波模块 33
4.3.3 时钟模块 37
4.3.4 平方相加模块 38
4.3.5 总调用模块 40
第五章 匹配滤波器的电路综合与仿真结果分析 42
5.1 仿真综述 42
5.2 MODELSIM仿真操作流程 42
5.3 匹配滤波器各个模块的仿真数据分析 45
5.3.1 累加模块的仿真数据分析 45
5.3.2 折叠滤波模块的仿真数据分析 47
5.3.3时钟模块的仿真数据分析 47
5.3.4 平方相加模块仿真数据分析 48
5.3.5总调用模块仿真数据分析 49
5.4 匹配滤波器整体系统性能 51
第六章 结论 52
结束语 54
参考文献 55
附录一 57
附录二 60
附录三 61

摘 要

扩频通信系统与常规的通信系统相比,具有很强的抗人为干扰、抗窄带干扰、抗多径干扰的能力,并具有信息隐蔽、多址、保密通信等特点。目前己从军事领域向民用领域发展。对扩频接收机的研究更成为了扩频通信系统里面的重要课题。
有限冲激响应滤波器(FIR滤波器)是数字信号处理中常用部件,它的最大优点在于:设计任何幅频特性时,可以具有严格的线性相位,这一点对数字信号的实时处理非常关键。现在,大规模可编程逻辑器件为数字信号处理提供了一种新的实现方案。FPGA是常用的可编程器件,它非常适用于实现实时快速可靠的FIR扩频接收机匹配滤波器,在加上VHDL语言灵活的描述方法以及与硬件无关的特点,使得使用VHDL语言基于FPGA芯片实现FIR扩频接收机滤波器成为研究的方向。
基于以上背景,本文针对扩频接收机中伪码捕获部分为研究重点,分析了几种基于FPGA的常用匹配滤波器实现方案,其中包括:直接形式的匹配滤波器、转置结构的匹配滤波器、采用分布式算法的匹配滤波器和折叠式匹配滤波器。通过比较这些方案的优缺点,最终选定了以折叠式匹配滤波器为最优方案来进行设计。折叠式匹配滤波器实际上就是以静止的本地扩频码作为累加器的系数,匹配滤波器相关过程就相当于接收信号滑过本地序列,当滑动到两个序列相位对齐时,就必有一个相关峰值输出。该匹配滤波器采用VHDL语言,通过模块划分来进行设计,整个过程都在Xilinx公司开发的ISE集成软件系统中完成,最后在Modelsim仿真软件上进行了各个模块的仿真。本论文所设计的折叠式匹配滤波器,能够根据实际需要来设置不同的扩频码长度,很好的完成伪码的相关捕获效果。该折叠式匹配滤波器结构能够大大节省FPGA资源的开销,提高伪码捕获时间,提高捕获效率,更重要的是在实际生产中,有很好的实际效果。

关键字:匹配滤波器 ,M序列,伪码捕获,折叠式FIR结构,FPGA

ABSTRACT

The spread spectrum communication system has stronger ability of resisting jamming,narrow band,multipath interference than that of the conservation communication systems.And it also has the characteristics of low probability of intercept and multiple access secure communication.Nowadays,the spread spectrum communication technology has expanded form the military field to the commercial field.Doing research on the spread spectrum receiver is also the most important part of the spread spectrum communication system.
The Finite impulse response filter ( FIR filter) is used for many digital signal processing . Its biggest advantage is that : it has good linear phase character for designing any amplitude frequency characteristic , which is very critical to real time digital signal processing . Right now , the large-scale programmable logic device give a new ways to implement the digital signal processing quickly , and reliably . The field programmable gate array (FPGA) technology is used widely , and it implement the real-time , high-speed and reliable FIR spread spectrum receiver Mached Filter easily . In addition , VHDL can be quickly learned and mastered , and it has nothing to do with hardware , which make it to be a point of research in the FIR of the spread spectrum receiver of the Matched Filter .
Based on this background , making the PN code capture part as a point of the spread spectrum receiver , this paper analyse several common used Matched Filter programs on FPGA , including : the direct form of matched filter , the transposed structure of matched filter , the distributed arithmetic structure of matched filter , and folded structure of matched filter . Compared with the advantages and the disadvantages of these programs , finally we choose the folded structure of matched filter as the best one to complete this design . The folded filter is actually using the PN code as the accumulator coefficients , and then , matched filter correlation process is equivalent to the receiving signal spreading the PN code . When the sliding of two phase sequence is the same , this implies that making a result of correlation . The designs of the matched filter using VHDL and modules . The whole process completed in the development of the company Xilinx ISE Integrated Software System . Finally , every modules simulated in the Modelsim simulation software . The design on this paper , according to the actual need , can set up a defferent PN code length , and make a good effect on the PN code capture of the spread spectrum receiver . The folded matched filter can reduce the cost on FPGA resources or the PN code capture time , and improve the efficiency of the capture process , it also can make a very good practical effects on the production in our lives .

Key words: Matched filter 、 M series 、Acquisition of Pseudo-code 、Folded FIR structure 、Transposed FIR structure 、FPGA

第一章 绪论
1.1 课题应用背景和意义
1.1.1 扩频通信的发展和应用
扩展频谱通信 (简称扩频通信)是应用频谱展宽技术,实现加密、选址通信的一门新学科。由于扩频通信具有很多优点,如抗干扰能力强,隐蔽性好,多址能力强,误码率低,易于实现保密通信以及可以随机接入、任意选址等,使得扩频通信技术越来越受到人们的重视,获得了广泛的应用[1]。
扩频系统主要有直接序列扩频系统和跳频通信系统两种,前者使用伪随机码来扩展频谱,后者载波频率受已知模式的伪随机码控制,快速跳变。此外还有采用多种扩频方式的混和扩频通信系统。
扩频通信系统具备3个主要特征:① 载波是一种不可预测的,或称之为伪随机的宽带信号;② 载波的带宽比调制数据的带宽要宽得多;③ 接收过程是通过将本地产生的宽带载波信号的复制信号与接收到的宽带信号相关来实现的。
频谱扩展的方式主要有以下几种:直序扩频(DSSS)使用高速伪随机码对要传输的低速数据进行扩频调制;跳频系统则利用伪随机码控制载波频率在一个更宽的频带内变化;跳时则是数据的传输时隙是伪随机的;线性调频系统中的频率扩展则是一个线性变化的过程。几种方式组合的混合系统也经常得到应用。
扩频技术未来的发展趋势将会集中在以下几个方面[2]:
(1) 第三代和第四代移动通信
目前第三代移动通信(3G)正在广泛地普及中。3G设计的目标主要是支持多媒体业务的高速数据传输,因此其研究主要集中在新标准和新硬件的开发。而对于3G以后的发展,不同的研究者有不同的观点。对4G的认识不同,采取的技术解决手段也各不一样。目前实现4G观点主要有2种:一种是开发新的无线接口和技术;另一种则是集成现有的及未来的无线系统。展望未来,第四代移动通信系统(4G)的驱动无疑会使扩频技术传输高速数据的能力得到更大的拓展。在4G网络的实现中,有的技术本身就是扩频技术的延伸,有的则能够很好得与扩频技术结合,还有的则能用于扩频系统的实现,因此这些新技术的发展体现着扩频技术的发展趋势。
(2) 超宽带技术
超宽带(UWB)技术可以看作是一种将传输带宽极大扩展以获得高数据传输速率的扩频技术。UWB作为一种短距离通信技术在未来无线通信系统的实现中扮演着重要的角色。UWB技术通过共享频谱,而不是寻找目前存在但实用性不高的频谱来实现短距离高速数据传输,它有效地解决了频谱分配问题,因此自从FCC在2002年2月14日颁布了将UWB技术用于商用的法规以后,UWB技术的研究热潮始终高涨。
(3) 多载波调制技术
多载波调制技术,即正交频分多址(OFDM),是一种有效的传输高速数据的方法,它已经成为一系列重要的高速数据传输应用的标准。OFDM和CDMA的结合也为解决未来无线通信系统的难题提供了技术选择。
组合CDMA和OFDM的多载波CDMA方案主要可分为两大类:一种是频域扩展系统,即MC-CDMA(Multicarrier CDMA),也称为OFDM-CDMA;另一种则是时域扩展系统,包括MC-DS-CDMA以及MT-CDMA(Multitone CDMA)。MC-CDMA的发射机在频域使用一定的扩频码将原始数据扩展到不同的子载波进行传输。时域扩展的多载波调制方案又可分为两类。MC-DS-CDMA的发射机先将原始数据流进行串并变换,然后在时域上使用一定的扩频码对变换后的数据流扩频,再分别调制到不同的子载波上进行传输。MT-CDMA的发射机结构与MC-DS-CDMA相似,不过它采用的扩频码周期更长。对这些多载波调制方案的系统实现、检测算法以及误码性能都有较详细的研究比较。此外,在更通用的MC-DS-CDMA方案则同时在频域和时域对信号进行扩展,并被证明这种调制方案能够适应包括室内、乡村、郊区以及城市在内的各种传播环境,从而适应未来无线通信系统的要求。
(4) 软件无线电
未来的通信系统要求为用户提供通用的平台,以满足用户在任何时间、任何地点通过任何设备接入网络的要求。采用软件无线电的概念,即通过软件加载在一个通用的硬件平台上实现多种功能,为未来通信网络的实现提供了可能的解决方案。
软件无线电就是将模块化、标准化的硬件单元通过标准接口构成基本平台,并借助软件加载实现各种无线通信功能的一种开放式体系结构。软件无线电通过使用自适应的软件和灵活的硬件平台,能够解决无线产业不断演变和技术革新带来的很多问题。它在基站和移动终端的软件下载能力,对于运营商和制造商弥补软件缺陷以及实现新功能和业务非常重要。此外使用软件下载重新配置移动终端是实现多模式终端操作的有效方法,这也为用户通过一个移动终端接入多个通信系统的问题提供解决手段。

1.1.2 本课题研究目的和意义
直接扩频在扩频通信中获得了广泛的应用。捕获电路是整个扩频接收机最重要的环节之一,它主要是用本地的伪码序列和接收的信号进行相关运算,计算信号的相关能量,然后通过与门限的比较进行信号捕获的判决。匹配滤波器是实现本地伪码和采集信号相关运算的重要部件,它完成了信号的并行处理,捕获速度快(小于一个伪码周期),因此被广泛应用于扩频接受机之中。
由于扩频系统复杂,采用分立器件将存在体积大、功耗高的问题,在实际设计中也难以实现;而现有的专用集成电路在扩频增益、数据传输率等方面难以达到要求,并且存在成本高、采购困难等弊端,同时模拟器件受环境影响的因素比较大。现在,大规模可编程逻辑器件为数字信号处理提供了一种新的实现方案。很多数字信号处理可以很好地在FPGA(Field Programmable Gate Array)中实现,然而却不能有效的在DSP处理器中实现,所以采用FPGA 来实现FIR数字滤波器有着很好的发展前景。
采用现场可编程门阵列FPGA来实现FIR数字滤波器,既兼顾ASIC器件(固定功能DSP专用芯片)的实时性,又具有DSP处理器的灵活性。FPGA和DSP技术的结合能够更进一步提高集成度、加快速度和扩展系统功能。用FPGA设计的产品还具有体积小、速度快、重量轻、功耗低、可靠性高、仿制困难、上批量成本低等优点[3]。
本课题主要是围绕扩频接收机匹配滤波器的实现提出一个先进的方案,该方案能够减少FPGA资源的使用,大大提高运行效率,有利于实际应用。
1.2 扩频接收机匹配滤波器的研究现状
匹配滤波器概念的提出已有半个世纪,70年代到80年代,声表面波延迟线和大规模集成电路工艺的发展才使其走向应用。但当时是以声表面波器件为主,数字匹配滤波器仍然代价昂贵,只针对于抗干扰等某些特殊用途。从90年代初开始,美、日等国的多家公司先后开始研制DS宽带扩频芯片,例如美国的Stanford telecom, Zilog和Harris日本的Rohm等,且大多采用直扩方式(如STEL-2000A, STEL-3310,HSP3824等)。这些芯片的共同特点都是:经高速A/D变换后,用数字匹配滤波器完成解扩功能。下表(1.1) 中列出了典型的Stanford公司Stel-3310芯片的主要性能指标[4]。
表1.1 STEL-3310的性能指标
Stanford Telecom公司STEL-3310的性能指标
扩频方式 直扩
伪码长度 1—64位可编程,最长级连4片至256位
伪码速率 最高11Mc/s
信息速率 最高2.048Mb/s
调制方式 BPSK/QPSK
伪码同步捕获时间 1个伪码周期

美国专做软件无线电产品的Sigtek公司,新推出了其扩频匹配滤波器通用板ST-108,其主要性能指标如下表(1.2)所示:
表1.2 ST-108主要性能指标
ST—108主要性能指标
伪码长度 最长1024位
滤波器大小 1024×1bit,512×2bit,256×4bit
伪码速率 2~33MHz
信息速率 64K~2.048Mbytes/sec
中频频率 70或140MHz
操作界面 Windows

随着CDMA移动通信技术的不断发展,匹配滤波码捕获技术作为同步信道的一项关键技术已广泛地被国外各大公司所研究和采用,例如:移动通信中,正向信道在移动台由于某种原因失去连接以及在反向信道中都需要用匹配滤波器来做快速码捕获。在第三代移动通信宽带CDMA技术当中,数字匹配滤波器仍然是其中的一项关键技术。近些年,美日等一些大公司开始研制并推出CDMA无线多媒体通信芯片,如:MSM3300,在扩频通信领域又迈出了一大步。但由于禁运、停产等原因,我们能拿到的ASIC专用芯片只能是民用的早期产品,而且价格昂贵。
随着FPGA芯片的广泛应用,高性能高密度的FPGA在生产工艺、器件的编程和测试技术等方面都有了飞速发展。由于FPGA在性能、成本、灵活性和功耗等方面的优势,基于FPGA的信号处理器已广泛应用于各种信号处理领域,如手机基站、卫星通信系统、交换机、路由器、调制解调器等。 FPGA尤其适合于乘法和累加等复杂的DSP任务。因此在复数乘法、数字滤波器设计和FFT等数字信号处理领域表现出较大的优越性,因此在高速数字信号处理系统中得到了较多的应用。FPGA提供了极强的灵活性,使开发者能够开发出满足多种标准的产品。例如,万能移动电话能够自动识别GSM, CDMA, TDMA等不同的信号标准,并可以自动重配置以适应所识别的协议。FPGA固有的灵活性和性能也使设计者能够紧跟新标准的变化,提供相应可行的方法。开发者使用FPGA技术,结合相应的EDA设计工具,可以很方便的对产品进行改善或升级。由于FPGA内部资源丰富及功能强大,以及相应的EDA软件功能完善和强大,仿真能力便捷实时,并且硬件因素涉及甚少,使得基于EDA的FPGA开发技术将很快成为复杂数字系统设计的主流。

1.3 研究思路
(1)本设计主要是基于Xilinx公司开发的一系列芯片上进行的,这些芯片使用频率高,是目前大规模数字逻辑设计的应用趋势。首先要对该公司的硬件和配套的软件进行熟悉,能够熟练掌握基本的数字逻辑电路设计流程。
(2)在数字信号处理中,能够对FIR数字滤波器的结构和各种实现方法有一定的了解,懂得使用MATLAB软件设计各种参数的FIR滤波器。
(3)本设计主要是用硬件描述语言VHDL来实现整个设计的。所以要学会整个自顶向下的系统设计方法、VHDL编程、ISE编程工具、Modelsim仿真工具等。
(4)本课题中扩频接收机匹配滤波器的设计主要是采用折叠式来实现该数字匹配滤波器,所以要对整个折叠算法有一个清除的认识。最后能够通过仿真得出该滤波器的可实现性。

1.4 论文主要内容
本文主要对扩频接收机中匹配滤波器的实现进行了研究,并提出了一种可行且高效的基于FPGA实现的折叠式匹配滤波器方案。
第一章绪论部分,主要介绍了本课题的背景,指出了目前扩频通信的发展和应用,分析了当前数字匹配滤波器的发展状况。
第二章大略介绍了扩频通信技术的基本原理和扩频接收机的基本组成,重点介绍伪码捕获的原理和各种性能参数描述。
第三章介绍数字滤波器基础,分节介绍数字滤波器的原理、基本结构和设计原则,最后还介绍了常用的数字滤波器设计方案,并比较说明了各种方案的优缺点,最后通过比较得出,选用折叠式匹配滤波器可以很好的达到设计要求,减少FPGA资源的开销,优化系统,提高整体速度。
第四章详细介绍扩频接收机匹配滤波器的FPGA设计方案,其中包括匹配滤波器中的各个模块的设计原理、外部接口图、内部逻辑电路图和程序设计流程图。
第五章对本文设计的扩频接收机匹配滤波器的各个模块进行仿真的数据分析,用手工运算和软件仿真结果进行对比,得出其可行性。
第六章是结论部分,对本设计中的总结。

第二章 扩频通信系统
2.1 扩频通信技术
2.1.1 扩频通信定义和理论基础
(1)定义:扩频是通过注入一个更高频率的信号将基带信号扩展到一个更宽的频带内的射频通信系统,即发射信号的能量被扩展到一个更宽的频带内使其看起来如同噪声一样。扩展带宽与初始信号之比称为处理增益(dB ),典型的扩频处理增益可以从20dB到60dB。
(2)理论基础:扩频系统的基本原理源于信息论和抗干扰理论。信息论中关于信道容量、带宽和噪声之间关系的香农定理指出:在高斯白噪声干扰条件下,通信系统的极限传输速率 (或称信道容量)为:
bit/s
从香农公式可知,在一定的信道容量条件下,可通过增加信号带宽来减小发送信号功率,也可通过增加发送信号功率来减小信号带宽。也就是说,在信道容量不变的条件下,信号功率和信号带宽可以互换。

2.1.2 扩频通信特点和工作方式
(1)特点:
扩频通信具有很多优点,如抗干扰能力强,隐蔽性好,多址能力强,误码率低,易于实现保密通信以及可以随机接入.任意选址等,使得扩频通信技术越来越受到人们的重视,获得了广泛的应用。
扩频通信系统具备3个主要特征:① 载波是一种不可预测的,或称之为伪随机的宽带信号;② 载波的带宽比调制数据的带宽要宽得多;③ 接收过程是通过将本地产生的宽带载波信号的复制信号与接收到的宽带信号相关来实现的。

(2)工作方式:
扩频系统包括以下儿种扩频方式:
1.直接序列扩频,记为DS (Direct Sequence);,直序扩频(DSSS)使用高速伪随机码对要传输的低速数据进行扩频调制。
2.跳频扩频,记为FH (Frequency Hopping),跳频系统则利用伪随机码控制载波频率在一个更宽的频带内变化。
3.跳时扩频,记为TH (Time Hopping),跳时则是数据的传输时隙是伪随机的。
4.线性跳频,记为 (Chirp),线性调频系统中的频率扩展则是一个线性变化的过程。
除了上面四种基本方式,还有这些扩频方式的组合方式,如TH/DS, TH/DS,
FH/TH。

2.2 扩频接收机原理
扩频接收机的原理框图(图2.1)如下:
接收信号为射频信号,首先经由模拟下变频变换为中频信号。中频信号经A/D变换后成为数字信号,再经数字下变频、低通滤波后得到扩频基带信号。本地载波的时钟产生部分还根据载波跟踪环进行调整,补偿收发两地的时钟漂移。扩频基带信号进入匹配滤波器,与本地PN码进行相关运算,得到I、Q两路基带数据信号。PN码发生器的码时钟受码跟踪环的控制,不断进行调整,以消除收发两地时钟漂移对相关峰的影响[5]。
整个接收部分包括解跳频部分、数字下变频、匹配滤波器及微处理控制器等部
分。

图2.1 扩频接收机的原理框图
(1) 数字下变频部分
从A/D转换进来的信号经过增益控制电路后,与本地载波NCO产生的正弦,余弦信号混频,得到扩频基带信号。本地载波的时钟产生部分还根据载波跟踪环进行调整,补偿收发两地的时钟漂移。
数字下变频的组成与模拟下变频类似,包括数字混频器、数控振荡器(Numericaly Controlled Oscillator-NCO)和低通滤波器(LPF)三部分组成,如图(2.2)所示。
图2.2 数字下变频结构
NCO产生的本振信号输入到数字混频器与输入的信号进行混频。数字混频器就是一个乘法器。信号经混频后,输出到低通滤波器以滤除倍频分量和带外信号,然后进行抽取处理。数字下变频数据流速率始终是输入信号的采样速率。由于下变频器工作过程比较简单,可以很方便地利用FPGA或ASIC技术来设计实现,此时虽然用硬件,但FPGA或ASIC设计和修改非常灵活,灵活性和方便性与软件实现相差无几。
从工作原理讲,数字下变频与模拟下变频是一样的,就是输入信号与一个本地振荡信号的乘法运算。数字下变频的运算速度决定了其输入信号数据流可达到的最高速率,相应地也限定了ADC的最高采样速率;另外,数字下变频的数据精度和运算精度也影响着接收机的性能。
在模拟下变频器中,混频器的非线性和模拟本地振荡器的频率稳定度、边带、相位噪声、温度漂移、转换速率等都是人们最关心和难以彻底解决的问题。这些问题在数字下变频中是不存在的,频率步进、频率间隔等也具有理想的性能,另外,数字下变频器的控制和修改较容易等特点也是模拟下变频器所无法比拟的。影响数字下变频性能的主要因素有两个:一是表示数字本振、输入信号以及混频乘法运算的样本数值的有限字长所引起的误差;二是表示数字本振相位的分辨率不够而引起数字本振样本数值的近似取值。 也就是说如果数字混频器和数字本振的数据位数不够宽,就存在着尾数截断的情况:数字本振相位的样本值存在近似的情况,根据截断和近似的程度,会或多或少地影响DDC的性能。

(2) 匹配滤波器
本文中的设计主要是这一部分来进行的。基带扩频信号经低通滤波后,输入匹配滤波器。该信号与本地产生的PN码进行相关运算,得到I、Q两路基带数据信号,并存储在累加存储器中。详细的设计参见第四章。

(3)微处理控制器
完成系统的控制,跳频跟踪环算法,载波跟踪环算法,码跟踪环算法和数据的旋转解调。微处理控制器的结构包括:锁相环、载波跟踪、伪码跟踪、解调数据等。
假若信号被捕获,初始搜索过程即停止,而开始精细的同步与跟踪。接收机中噪声的影响,信道传输时延的变化,扩频序列时钟频率的漂移等会使接收序列相位出现波动甚至很大的改变,结果使本来已经对齐的序列相位又重新出现偏差。为了使扩频通信系统准确可靠地工作,高精度、稳定的扩频序列同步是必需的,这就需跟踪电路来实现。跟踪电路用来维持接收机中PN码发生器与接收信号的同步,包括精细的码片同步和载波的同步。载波的同步与伪随机码的同步一样也包括捕获和跟踪两个过程。载波捕获即多普勒频移的粗略估计通常包含在伪码同步过程中,而精确的载波相位及多普勒频移变化跟踪则通过载波参数估计器或反馈跟踪控制环实现。
锁相环的基本结构图如下(图2.3):
图2.3 锁相环基本结构
锁相环路之所以能够跟踪相位,实现输出与输入信号的同步,是因为它是一个相位的负反馈控制系统。这个负反馈控制系统是由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCQ)三个基本部件组成的[6][7]。

2.3 伪码捕获
扩频系统除了有一般数字通信系统的载波同步、位同步、帧同步外,还有它特有的码序列同步。即要求收发双方不仅时钟频率要对准,而且要求码序列起点要对齐。因此,同步系统在扩频通信中是很重要的、不可缺少的一部分。
首先分析同步不确定性的来源,然后才能有的放矢的消除不同步因素,达到系统同步的目的。在扩展频谱通信系统中,接收端一般有两类不确定因素,即伪码延时(伪码相位)和载波频率。扩频接收机要能够正常工作,这两个因素的不确定性就必须得到克服。码相位的分辨率必须小于1个码元宽度(又称为一个码片chip);载波中心频率的分辨率(即稳定度与准确度)必须使得解扩后的信号落在相关滤波器带宽之内,以便解调器能正常工作。即同步不确定性表现为时间不定区和频率不定区。
同步过程一般来说包含两个阶段:捕获阶段和跟踪阶段[8][9]。
(1)接收机在一开始并不知道对方是否发送了信号,因此,需要有一个搜捕过程,即在一定的频率和时间范围内搜索和捕获有用信号。这一阶段也称为起始同步或粗同步。
(2)一旦完成捕获后,则进入跟踪过程,即继续保持同步,不因外界影响而失去同步。也就是说,无论由于何种因素两端的频率和相位发生偏移,同步系统能加以调整,使收发信号仍然保持同步。

2.3.1 PN码的捕获方法
同步的起始阶段要在频率和时间(相位)不确定的范围内捕获有用的PN码信号使本地PN码信号与其同步。由于解扩过程通常都在载波同步之前进行,载波相位在这时是未知的。大多数捕获方法都利用非相干检测。所有的捕获方法的共同特点是用本地信号与收到的信号相乘(即:相关运算),获得二者相似性的量度,并与一个门限相比较,以判断其是否捕获到有用信号。如果认为捕获到有用信号,则开始跟踪过程,使系统保持同步。否则,又开始继续搜捕。
PN码捕获方法可分为有源相关和无源相关两种。有源相关时采用了在不同的搜索区间 ,用不同相位的本地码与输入码相关的方法。如果检测不到相关峰,则时钟脉冲驱动本地码移向下一个搜索区间并重复上述的相关过程,一直到检测到正确的相关峰为止。而无源相关是采用一种与已知的扩频码相匹配的无源滤波器,只有当输入码与接收机的匹配滤波器的脉冲响应相匹配时,才可得到最大的相关输出,否则就没有相关输出。有源相关法包括滑动相关法、序贯检测、序列估计法等。无源相关法多使用声表面波器件(SAW)或数字匹配滤波器[10]。
(1)滑动相关:滑动相关法是一种最简单也是最基本的搜索法。本地码发生器同发射产生器的时钟速率有一定的差率,从而使两个码序列从相位上看起来好像在相对滑动。这种滑动过程就是两个码序列逐位进行相关检测的过程。接收信号及噪声与本地的参考伪码相乘,然后通过积分器,把积分器的结果送入门限检测器进行判决,小于门限则按顺序改变参考伪码的相位并消除积分,继续判决。当两个序列的相位一致时,滑动停止。
(2)序贯检测法:设想多驻留的极限情况,取积分时间为连续的,用一个门限的连续判决来代替多驻留的多门限判决。这种可变驻留时间的方法称为序贯检测。可变积分时间系统能够用较短的时间放弃大量的错误相位,而允许在正确的相位处停留较长的时间以获得可靠的判断,从而兼顾了捕获速度和可靠性。
(3)序列估计法:该方法是利用对PN码发生器中的n个可预置移位寄存器进行置位来实现PN码的同步。即用收到的PN码去给本地PN码发生器的移位寄存器置数,使得本地PN码发生器从这一状态产生PN码。设在一个PN码码片长度内信息码不改变符号,则只需要n个PN码元宽度的时间就能使两PN码同步。但此法对噪声和干扰很脆弱,考虑到存在噪声,其捕获速度并不比单步进快。
(4)匹配滤波器:当输入是直接序列扩频信号时,设计一个匹配滤波器,使其单位脉冲响应为PN码的时间反转,当扩频信号输入到达一个PN码周期时,有一个最大相关输出,令该输出对本地PN码发生器置位,使两PN码达到粗同。在理想情况下,DMF捕获系统最多只需要一个扩频序列周期的时间,就可检测出同步相位,实现扩频序列的捕获。但匹配滤波器受器件速度限制,多用于短码捕获,目前超过64码片长度的产品还很少见。
匹配滤波器可以在中频进行,也可以在基带进行。中频多采用模拟器件声表面波(SAW)匹配滤波器来完成,基带多采用数字集成电路来完成。SAW匹配滤波器捕获法采用声表面波器件,该器件在通信领域应用广泛,可以大大减少捕获时间,另外它是无源器件 ,结构简单,稳定性能好。但SAW器件插损大,而且滤波器长度也受限于国内工艺水平,只能对长码的一小段进行匹配,在低信噪比下不可靠。对SAW延迟器件来说,伪码序列是预先确定的,器件制造好了以后伪随机序列就不能改变了。随着大规模数字器件如系列化CPLD(Complex Programmable Logic Device)。FPGA(Field Programmable Gate Array)的不断出现以及全数字化扩频接收机概念的提出,数字化基带匹配滤波器的研究越来越受到人们的重视。在本文主要设计了一种基于FPGA的折叠式数字匹配滤波器。

2.3.2 匹配滤波器原理
所有PN码捕获方法都是基于PN码的自相关特性,自相关函数 在码相差 大于一个码片时接近零,在 小于一个码片宽度时其值与 的大小成反比[11]。为讨论方便,我们假设PN码为m序列,图(2.4)表示了m序列的自相关函数。

图2.4 m序列自相关函数曲线
设用于扩频的扩频码 长度为N, 。 为门函数, 为切谱码片宽度,发送符号信息序列为{ },经过扩频后,发送的信号为 式中, 也为门函数,持续时间 ,若数字匹配滤波器对c(t)相关(正相关或负相关,取决于传送信息 ),则滤波器的冲击响应应为: ,由此可得到匹配滤波器的输出为:

由此可以知道, 是一个相关函数,严格地讲, 是 码的两个部分相关的加权和。加权值为传递的信息 。当 时,数字相关器与接收信号不相关, 的值较小,当 时, 取得最大值有:

表示匹配滤波器与输入信号相关(匹配),由此可通过 的值来判断匹配滤波器是否匹配,从而检测一个码字或信息。
匹配滤波器的基本结构如图(2.5):
图2.5 DMF基本结构
图中延迟抽头数为N,N是DMF进行相关运算的长度,乘法器系数取士1。
在本论文设计中乘法器的系数由本地PN码确定,当本地PN码为“0”时,累加器采用加法运算;当本地PN码为“1”时,累加器采用减法运算。输入信号码流在PN码时钟的作用下向右移位,每向前移动一位,移位寄存器中的N位码元与对应系数相乘,并行送入累加器,即有相关值输出。一旦进入DMF的信号与之相匹配,将会有最大的相关峰输出,其极性由数字符号的极性确定(通常一个数据符号对应一个PN码周期),此时表明收发双方的伪随机码同步,也表明接收到了相应的传输信号。

2.3.3 匹配滤波器性能
接收信号经下变频后分为正交、同相两路信号,则DMF的正交、同相输入为[12]:

其中,A为载波幅度的有效值,d(i)为数据,PN(i)为发射端的伪码, 为载波的相位。它们与本地伪码进行相关累加(积分)后得到的相关值IOTS和QOTS平方相加后得到的值OT作为捕获算法的输入。

当接收伪码与本地伪码完全对齐时,有 = , ,此时OT为:

当多普勒频率相对载波较低时,有 ,即: 。于是有:

当接收伪码与本地码错开一个码片以上时,OT为:
利用式 的特性,重新写上式如下:
可见,获得OT的过程是一个平方率包络检波过程,利用 与 的差异可以检验本地伪码与接收伪码是否对齐。

1.多普勒频移对匹配滤波器的影响
由于接收端时钟源的频率漂移,特别是当收发两端存在相互移动时,会出现多普勒频移。多普勒频移的存在会产生以下问题:
1)多径分量造成接收机信号的多普勒扩散,增加了信号带宽,在接收机带通滤波器带宽一定的情况下,使得有用信号的功率相对减少,干扰信号的功率相对增加。
2)多普勒频率的存在会使下变频后的信号不在基带附近,从而使接收机的相关器的相关峰减小,甚至无法检测到相关峰。
在高动态环境下,由于扩频信号的动态性,多普勒频移较大且不确定,因而扩频伪码相位的初始捕获较难[13]。
下面简要讨论一下多普勒频移对DMF输出的影响。
在没有时间误差的情况下,即 ,此时:

其中 是单位码片信号的平均功率, 为多普勒频移, 为误差相位,N是匹配滤波器的长度。

由于N>>1和 ,所以 , (带宽有限)
下图(2.6)中给出了多普勒频移对DMF相关峰输出的关系图:

图2.6 多普勒频移与DMF输出的关系
从图2.3中可以看出,当多普勒频移增加时,DMF输出相关峰的主峰逐渐减小。在 时,相关峰输出下降了3dB,也就是说,当多普勒频移达到 时,此时的相关峰值输出仅为没有多普勒频移时的一半,此时匹配滤波器已没有多大意义。此外,考虑伪码序列的自相关特性。当码相位相差1/2个码片时,相关值降低到峰值的一半[14]。
因此,在设计中搜索过程采用频率和码相位二维搜索,频移搜索步进量为3KHz,进一步考虑虚警和漏警概率的存在,实际设计中多普勒频移搜索步进量为2KHz,相位搜索量为1/2码片。

2.扩频序列捕获的自适应门限
相关峰的检测是通过对接收码流的匹配滤波、模值运算、门限判决完成的。在无噪声和干扰的条件下,在一个伪码周期内出现一次相关峰值。在有噪声和干扰的条件下,在恢复成数据流的过程中将引入PN码元的误Chip,这必然会使相关峰降低,若相关峰低于门限值,就会产生漏警;如果将门限值降低,又会引起虚警。由于相关峰除了作为同步指示外,还作为解调器的位定时时刻,相关峰的漏警和虚警必然导致误码的产生。
无论那种捕获形式,相关检测器的检测性能是一个基本参数。检测性能主要是两个概率:检测概率和虚警概率。从直观上看,提高检测概率,降低虚警概率,就能减小平均捕获时间。检测器性能与信噪比,检测器形式及检测门限有关。在其它参数都一定的情况下(主要是信噪比),选择一个最佳门限,平均捕获时间最小。如果门限选择不当,可能会大大增加捕获时间。
在实际扩频系统中,系统的参数不可能保持不变。扩频通信系统多址干扰将随着同时工作的用户数而变化。高动态信道的衰减和衰落也使得接收信号的功率发生变化。另外,系统中的其它干扰大小也可能会变化。因此,接收信号的信噪比将在一定范围内变化。这时,捕获系统不同的信噪比应有不同的门限。如果采用一个固定的门限,捕获系统性能会恶化[15]。
匹配滤波器自适应门限捕获系统由图(2.7)所示。

图2.7 匹配滤波器自适应门限捕获电路
捕获过程分为搜索、检测两个阶段。开始搜索时,初始门限 取一个较小的值。匹配滤波器的相关输出信号经包络检波后以 间隔进行抽样。抽样结果与门限 进行比较,一旦门限被超过,该抽样值作为新的门限 ,此相位状态也被存储起来。另外,计时器开始工作,抽样和比较继续进行。如果门限 被超过,则又产生新的门限和存储新的相位状态。当计时器计数满 (L为扩频序列长),最新的同步相位被认为是真的同步相位。
这种自适应门限捕获电路很简单,且能实现快速捕获,在一个扩频序列周期内就能捕获到同步相位。实际上,这是检测 时间内最大的相关峰值,并把对应的相位作为同步相位。

第三章 数字匹配滤波器
3.1 FIR数字滤波器基础
数字滤波器是完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。数字滤波器具有稳定性高、精度高、灵活性大等突出优点。随着数字技术的发展,用数字技术设计滤波器的功能越来越受到人们的注意和广泛的应用[16]。
数字滤波器如果以单位抽样响应h(n)的长度来进行分类可分为两种:一种是无限冲激响应滤波器(IIR滤波器),它的h(n)是无限时宽的, ,体现在差分方程或转移函数中是 。另一种是有限冲激响应滤波器(FIR滤波器),它的h(n)是有限时宽的, ,体现在差分方程或转移函数中是 。
滤波器结构实现的一个原则是应用尽量少的延时单元(存储器)和乘法器,以提高系统的运算速度:另一原则是减小有限字长的影响,即减小量化效应。

3.1.1 FIR数字滤波器原理
一个数字滤波器的系统函数可以表示为:

直接由H(Z)得出表示输入输出关系的常系数线性差分方程为:

可以看出,数字滤波器是把输入序列经过一定的运算变换成输出序列。大多数普通的数字滤波器是线性非时变的(linear time-invariant, LTI)滤波器。对因果的FIR系统,其系统函数仅有零点(除z=0的极点外),并且因为系数 全为零,所以上面的差分方程就简化为:

上式可以认为是x(n)与单位脉冲响应h(n)的直接卷积。
数字滤波器的根据单位脉冲响应h(n)的时间特性可分为无限长单位脉冲响应(IIR, infinite impulse response)数字滤波器和有限长单位脉冲响应(FIR, finite impulse response)滤波器两种。从离散时间域来看,若系统的单位取样响应延伸到无穷之长,称之为IIR系,若系统的单位取样响应是一个有限长序列,则称之为FIR系统。
FIR滤波器相对于IIR滤波器有许多独特的优越性,在保证满足滤波器幅频响应要求的同时还可获得严格的线性相位特性,从而保持稳定。对非线性相位的FIR滤波器一般可以用IIR滤波器来代替。由于在数据通信、语音信号处理、图像处理以及自适应处理等领域往往要求信号在传输过程中不可能有明显的相位失真,而IIR存在频率色散的问题,所以FIR滤波器获得了更广泛的应用。

3.1.2 FIR数字滤波器基本结构
FIR滤波器输入,输出响应函数如下[17]:
k=0,1,2,……,N-1
其中N为滤波器阶数,h(n-k)为FIR数字滤波器的系数。
(1)直接型FIR数字滤波器结构:
下图(3.1)给出了N阶LTI型FIR滤波器的图解。可以看出FIR滤波器是有一个“抽头延迟线”加法器和乘法器的集合构成的。传给每个乘法器的操作数就是一个FIR系数,显然也可以称作“抽头权重”。因此该结构也称为“横向滤波器”。

图3.1 直接型FIR数字滤波器结构
直接FIR模型的一个变种称为转置式FIR滤波器,它是根据转置定理定义如果将网络中所有支路的方向倒转,并将输入x(n)和输出y(n)互换,则其系统传递函数H(n)不变。其转置结构见下图(3.2)。转置式滤波器通常是指FIR滤波器的实现。该滤波器的优点在于我们不再需要给x(n)提供额外的移位寄存器,而且也不必要为达到高吞吐量给乘积的加法器(树)添加额外的流水线级。

图3.2 转置式FIR滤波器结构

(2)级联型
如下二阶实系数因子形式:

便可得二阶级联结构。这种结构每一节控制一对一零点,因而在需要控制传输零点时可以采用。但相应的滤波系数增加,乘法运算次数增加,因此需要较多的存储器,运算H寸间也比直接型增加。

(3)线性相位FIR系统的结构
在许多应用领域,例如通信和图像处理中,在一定频率范围内维持相位的完整性是一个期望的系统属性。因此,设计能够建立线性相位—频率功能的滤波器是必须遵循的规范。系统相位线性度的标准尺度就是“组延迟”,其定义为:

完全理想的线性相位滤波器对于一定频率范围的组延迟是一个常数。可以看到如果滤波器是对称或者反对称的,就可以实现线性相位。
线性相位(相移)表示一个系统的相频特性与频率成正比, 由于不同频率传输速度都一样,所以信号通过它产生的时间延迟等于常数k所以不出现相位失真,对一个数字系统来说,即:
可以证明,线性相位条件为:

即如果单位脉冲响应h(n)为实数,且具有偶对称或奇对称性,则FIR数字滤波器具有严格的线性相位特性。其对称中心在 处。当N分别为奇数和偶数时,其网络结构可以分别用图3.3 (a), (b)的信号流图来实现。由该信号流图可以看出,线性相位结构比直接实现形式少用 个乘法器。

图3.3 线性相位FIR滤波器结构
(a)N=7,(b)=6
3.1.3 FIR数字滤波器设计原则
FIR滤波器设计方法以直接逼近所需离散时间系统的频率响应为基础。设计方法包括窗函数法和最优化方法(等同波纹法)。其中窗函数方法是设计FIR数字滤波器最简单的方法,也是最常用的方法之一[18]。
1. 采用窗函数方法设计线性相位FIR滤波器的方法
任何数字滤波器的频率响应 都是w的周期函数,它的傅立叶级数展开式为:
(3-1)
其中,
傅立叶系数h(n)实际上就是数字滤波器的冲激响应。获得有限冲击相应数字滤波器的一种可能方法就是把(3-1)式的无穷级数截取为有限项级数来近似,而吉布斯现象使得直接截取法不甚令人满意。
窗函数法用被称为窗函数的有限加权系列{w(n)}来修正式(3-1)的傅立叶级数,以求得要求的有限冲激响应序列 ,即有:

是有限长序列,当n>N-1及n<0时,w(n)=0。这里我们仅以冲激响应对称,即 时低通滤波器为例进行说明。低通滤波器的频率响
应函数 如下式所示。

在 时为0,其中 为对抽样频率归一化的角频率, 为归一化截止角频率。
利用反傅立叶变换公式求出对应的冲激响应 为:

2. 几种窗函数及窗函数选择原则
设计FIR滤波器常用的窗函数有:矩形窗函数、三角(Bartlett)窗函数、汉宁(Hanning)窗函数、海明(Hamming)窗函数、布拉克曼(Blackman)窗函数和凯塞(Kaiser)窗函数。具体指标参见下表(3.1):
表3.1 窗函数指标
窗的类型 最大旁瓣幅度
(相对值) 过度带宽度 最大逼近误差

等效Kaiser窗

矩形 -13
-21 0
Bartlrtt -25
-25 1.33
Hanning -31
-44 3.86
Hamming -41
-53 4.86
Blackman -57
-74 7.04

窗函数的选择原则是:
(1) 具有较低的旁瓣幅度,尤其是第一旁瓣幅度。
(2) 旁瓣幅度下降速度要快,以利增加阻带衰减。
(3) 主瓣的宽度要窄,以获得较陡的过渡带。
通常上述几点很难同时满足。当选用主瓣宽度较窄时,虽然得到较陡的过渡带,但通带和阻带的波动明显增加:当选用最小的旁瓣幅度时,虽然能得到匀滑的幅度响应和较小的阻带波动,但是过渡带加宽。因此,实际选用的窗函数往往是它们的折中。在保证主瓣宽度达到一定要求的条件下,适当牺牲主瓣宽度来换取旁瓣波动的减少。

3.2数字匹配滤波器常用设计方案优缺点比较说明
下面将会对几种常用的数字匹配滤波器设计方案的优缺点进行比较说明如下[19]:
(1) 直接形式的滤波器实现
如图(3.4)所示,这种结构主要由移位寄存器、加法器、乘法器组成。这种结构在实际使用的时候可以按照流水线的设计思想,使得加法器分级运算,可以提高处理速度。不过这种结构由于大量的加法器和乘法器,消耗了大量的LC(logic element)资源。

(2) 转置结构的FIR滤波器
如图(3.5)所示,这种结构的好处是不用输入信号X[n]提供额外的移位寄存器,而且没有必要为达到高吞吐量而为乘法器添加额外的流水线级。

(3) 采用分布式算法的FIR滤波器
分布式算法是一项重要的FPGA技术,广泛用于乘积和之中,首先分析一下该算法的数学依据:

式中:c(n)为常量,x (n)是变量。

式中: 表示x[n]的第b位,而x[n]也就是x的第n次采样值,因此

变换求和的顺序,就得到了如下简洁形式:

具体的实现方法是通过一个LUT(查找表)来完成的。每次接收N位输入的向量 ,在N次查询与累加运算之后就可以完成对y的计算。分布式算法的好处是对于阶数不高的滤波器占用资源少。缺点是随着级数的增加,LUT会变得很庞大,甚至不可实现。另外,由于每进入一位数据要进行N次查询和累加运算才能得到最后的结果,所以对时钟速度要求很高。

(4)折叠式滤波器设计
如(3.6)所示,折叠式FIR滤波器是在转置结构滤波器的基础上发展起来的,与转置结构滤波器不同的地方在于:FIR滤波器是依靠提高系统工作时钟来完成乘法器和加法器的复用,相对其他结构最合适实现匹配滤波器。其资源消耗主要和下面因素有关:伪码长度、过采样率、信号量化的位宽、折叠的次数。下面以码长127,四倍伪码采样率,8位量化,四次折叠为例来说明一下这种滤波器的实现方法: 本地伪码存储在FIR滤波器当中,每四个时钟周期采集一次数据,每个时钟周期更换一组码。由于本地伪码只有“0”和“1”,因此可以使用带符号的加法器,根据“0”和“1”的情况改变输入信号的符号,放弃使用乘法器,可以大大节省硬件资源。
整个系统的工作速度主要取决于加法器和移位寄存器的工作速度。对于码长很大的序列,可以适当增加折叠次数,以提高系统的工作时钟来减少资源消耗。

从以上方案中可以得出,在这些传统的匹配滤波方案中,采用折叠滤波方法可以大大节省FPGA 资源,提高系统整体运算速度,有利于现实中的实际生产。所以,本论文采用折叠式匹配滤波器来实现。接下来将会详细讨论本人所采用的折叠式滤波器详细方案。

第四章 匹配滤波器的FPGA详细设计方案
4.1 方案采用说明
第三章(3.2)小节比较了常用的数字滤波器方案的优缺点。从中可以看出:
传统FIR结构的匹配滤波器,其设计过程较为复杂,特别是当级数很高时,它的加法结构很难实现,资源耗费非常大,所以一般不采用。
倒置FIR滤波器结构实现容易,在实际捕获匹配滤波器设计中用得较多, 但耗费资源也非常大。若以一个作4倍过采样、伪码长度为256、采样值用8-bit表示的输入数据流为例子来说明,用倒置FIR 滤波器结构设计捕获的匹配滤波器将耗费大约4096 个Slices(Xilinx Virtex II);
同时采用并行匹配滤波器的效果跟倒置FIR滤波器实现的效果基本一致。
如果选用“折叠式”FIR结构的折叠式匹配滤波器,其消耗的资源仅为倒置FIR滤波器结构的1/4,节省了3/4的FPGA资源,并且可以缩短捕获时间,有利于在实践生产中的应用。
所以在本论文设计过程中,采用折叠式匹配滤波器,下面将会详细介绍该匹配滤波器的设计方案。

4.2 匹配滤波器模块划分
4.2.2 方案整体叙述

具体的折叠式匹配滤波器结构图如图(4.1)所示,在该结构图中核心部分是整个折叠滤波结构和累加器部分。扩频码存储在FPGA的RAM区,上图中的扩频码是以128位的M序列,同理,扩频码序列的长度可以根据需要设置,例如可以设置为:16、32、64、128、256、512、1024……都可以。下面就以扩频码长度为128来进行说明。
为了得到四分之一的码片捕获精度,可以采用四倍采样,该折叠式匹配滤波器由32个抽头和32个RAM存储区组成,本地扩频码的每一个码元就可以存储在该RAM区,每一个RAM区的深度为4。
采用该折叠式匹配滤波方法,每4个时钟周期对应采样一个数据。在第一个时钟周期,即第一个上升沿到来时,扩频码Code0、Code1、Code2……Code31同时被加载到滤波器抽头上,同时在Code0的累加器中注入一个0,当各级抽头系数为0时,相应累加器的结果为前级累加值加上信号值,当各级抽头系数为1时,相应的累加器的结果为前级累加值减去接收信号值,在本周起结束后加法器结果送入移位寄存器和保持寄存器中。在第二个时钟周期(即第二个上升沿)到来时,扩频码Code32、Code33、Code34……Code63被加载到相应的滤波器抽头上,此时Code32的累加器的输入来自保持寄存器送来的结果,同理在本时钟累加结束后,累加器的结果也会被送到移位寄存器和保持寄存器。随后的周期运算过程都是如此。知道第4个周期结束后,折叠式匹配滤波器得到一个完全相关的结果并送到输出。

4.2.3 方案细节确定
为了在本论文中,能够方便显示结果的正确性,采用了16位码长的M序列,这样的话,扩频码序列较短,方便用计算机出来的仿真结果与手工计算的结果进行对比,方便演示本设计的正确与否。即在本设计中,折叠式匹配滤波器的结构框图(4.2)可以描述如下:

1.软件平台选择
本设计的软件平台通过Xilinx公司开发的配套软件ISE进行,采用应用广泛的VHDL硬件描述语言来进行设计。
VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多硬件特征的语句外,VHDL的风格和语法十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项设计实体分成外部和内部,外部是可视的,是端口,内部是不可视的,是内部功能和算法的完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成之后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

2.扩频码选择
扩频系统中,不仅要求伪随机序列的随机性好,周期长,不易被外界检测等特性,而且要求可用的伪随机码数要多,因为扩频通信本身具有码分多址的特点。可用的伪码数越多,组网的能力就越强,抗干扰,抗窃听的能力也就越强。m序列具有很好的为随机性,和相关性,但m序列的条数相对较少。而采用M序列不仅比m序列在相同级数移位寄存器的长度多一位,而且产生的序列数远远超过了m序列。故M序列很适合用在扩频接收机中。
本方案采用M序列,M序列是在m序列的基础上构造而成的。为了在本论文中能够较容易地说明本论文设计的折叠式匹配滤波器出来结果的正确性,在本论文中采用了n=4的M序列,这样码个数较少,方便手工运算和计算机仿真出来的结果相比较。
选定一个 的本原多项式,则可以得到 个m序列,然后可以在100……0状态后插入0状态,就可以构成M序列,该M序列的个数为: 个。
本设计中采用的M序列构造说明:
取 的m序列的本原多项式为: ,或者
可以表示成: 。则构成的M序列俄反馈逻辑函数为:

M序列发生器电路图如图(4.3)所示:

图4.3 四级M序列发生器
设初始状态为1111,则其状态过程如下表(4.1)所示。由此可见,全“0”检测电路的作用只是在两个状态有效:一是在(1000)时,检测出 x1=x2=x3=0,则输出一个“1”,与第4为 x4=1进行模2加后得到下一状态,即变为全“0”状态,二是在全“0”状态,使下一个状态的 x1=1。而对于其他状态,由于m序列只是一个n-1长的“0”游程,全“0”检测电路不起作用。最后产生的M序列为:1111000010011010 。

表4.1 四级M序列状态转移表
时 序 X1 X2 X3 X4 时 序 X1 X2 X3 X4
0 1 1 1 1 8 1 0 0 1
1 0 1 1 1 9 1 1 0 0
2 0 0 1 1 10 0 1 1 0
3 0 0 0 1 11 1 0 1 1
4 0 0 0 0 12 0 1 0 1
5 1 0 0 0 13 1 0 1 0
6 0 1 0 0 14 1 1 0 1
7 0 0 1 0 15 1 1 1 0

3.前端输入数据处理
在低信噪比的情况下,送入匹配滤波器的数字信号有3 bit就足够了。因此,可以将来自数字下变频器的8 bit二进制补码信号截断为3 bit,这样,就可以在保证性能的同时,硬件规模大大减少。因此,在本设计中,数据输入的宽度可以设置为3(即为:IndataWidth:=3)。

4。运算数据表示方式选择
在该折叠式匹配滤波器的运算过程中都采用有符号数来进行,在硬件描述语言VHDL中可以表示为:Signed(datawidth),这些数据在运算的时候均采用补码形式来进行的。
下面讨论将输入的数据采用二进制补码方式运算会不会给系统带来偏差。

表4.2 二进制补码的偏移运算
数据 二进制补码偏移值
011 3
010 2
001 1
000 0
111 -1
110 -2
101 -3
100 -4

如上表(4.2)所示,若在匹配滤波器的入口处,将多bit二进制补码信号截断为3 bit。而由于n bit二进制补码表示数的范围是: ~ ,当把关于y轴正负对称的信号量化为二进制补码的时候,会出现负数绝对值变大的情况,这种相对偏差在二进制数位较短的时候表现更为明显。如:3 bit量化,最大正数为:+3,最大负数为:-4,其相对偏差远比8 bit量化时+127和-128之间的相对偏差大的多。在进行某些运算时(如:减法运算),偏差将会相互抵消,不产生影响;但进行另外一种运算时(如:相加运算),将会使得偏差增大。不过,对于数字下变频器进来的3 bit二进制补码基带信号,要在前端处理单元变换成二进制补码,输出的3 bit二进制补码,取值有效范围在: 。这样在后续相加处理的时候,偏差可以忽略,不会给系统带来太大影响。

5.累加器的数据宽度
数字滤波器的移位寄存器每一级抽头进行1次乘法运算,结果输出到累加器进行累加,当运算到最后一级时,输出累加结果,送入门限判决器进行判决。
当2个二进制补码相加时,若2个加数都为B bit,考虑到数据可能溢出,则加法器的输出只需要(B+1)bit;当3个bit二进制补码相加时,输出则需要(B+2)bit。通过观察可以发现一个规律: 个B bit二进制补码的值可以用(B+N)bit二进制来表示。
所以在本设计中,每得到一个输出结果均是有16( )个输入的3 bit采样数据通过累加器运算得到,所以累加模块输出结果的数据长度为:4+3=7 位。

6.折叠滤波器阵列
匹配滤波阵列及累加器单元是整个匹配滤波器的核心,也是占用资源最多的部分。匹配滤波器阵列完成输入扩频信号与本地伪码的匹配。对于QPSK调制,信号通道中包含I、Q两路信号,在发送端,分别对两路信号进行扩频处理,在接收端,也要分别对两路信号进行相应的解扩处理。因此,匹配滤波器中必须包含I、Q两路独立的子匹配滤波器通道。Q路的匹配滤波器阵列与I路的匹配滤波器阵列完全相同,下面以其中的一路为例来进行讨论。
由于此处采用的是0、1的二进制系统,所以将逻辑0映射为实际电平+1V,将逻辑1映射为实际电平-1V。因为本地PN码的电平只有+1和-1,所以通过这种映射,可以简化运算。

图4.4 匹配滤波器阵列结构
如上图(4.4)所示,现将匹配滤波器阵列和累加器,分为两种情况进行分析:
(1)如果匹配滤波器仅仅用于扩频信号的快速捕获,即在同步阶段不需要调剂任何信息的话,则对于任意一段长度的数据段均为相同的伪码序列,只是初始相位不同而已。此时,可以采用“动静互换”的方法,将输入数据存入FPGA内固有的RAM区,而以本地的PN码循环移位与输入的数据逐位相乘,即滑动本地序列来搜索同步相位(匹配相关)。
(2)但如果输入匹配滤波器的扩频信号是经过调制的有数据信息的序列,即每一个扩频码序列“填入”一个信息码元当中,这样由于调制信息的影响,只有在一个信息码元之内,扩频信号的伪码才是完整的、才是和本地伪码匹配的,如果采用“动静互换”的方法,存入RAM区的数据有可能不是一个完整的扩频序列,无法完成匹配解扩的功能。此时,匹配滤波器在电路中要求对扩频信号进行解扩,完成扩频信号的快速捕获,则必须采用固定PN码(本地伪码)用输入的3 bit数据滑过PN码,既可以完成相关捕获功能。
本设计中同样采用第二种方法,即通过在FPGA的RAM区内固定本地扩频伪码序列(PN码),用输入的3 bit信息数据滑过PN码,才能实现相关解扩的功能。

4.2.4 匹配滤波器的模块划分
本设计采用有符号数的二进制补码形式来运算,输入数据为3 bit的采样数据,采用折叠滤波方法来设计。整个匹配滤波器系统可以划分为五个模块:累加器模块、折叠滤波模块、时钟模块、平方相加模块、总调用模块。
各个模块的功能说明如下:
(1) 累加器模块
累加器模块主要是用来实现输入数据和中间结果的累加运算,当加载到抽头的本地扩频码为“0”时,累加器实现输入数据和中间结果相加运算,当加载到抽头的本地扩频码为“1”时,累加器实现输入数据和中间结果的减法运算。

(2) 折叠滤波模块
折叠滤波模块主要是用来把本地扩频码存储在FPGA的存储区,然后在适当的时钟周期加载到相应的抽头上,然后调用累加器模块实现运算,中间不断复用累加器输出的中间结果作为下一个累加器的输入。该模块总体来说,主要是实现了累加模块的复用。

(3) 时钟模块
时钟模块主要是用来计算时钟,每当四个上升沿到来时,相应地输出一个上升沿,该模块主要是与后面的平方相加模块相结合使用。因为本设计的折叠滤波器是每四个时钟周期采样一个数据输入,相应的输出也即为每四个时钟周期得到一个输出。
(4) 平方相加模块
实现的作用类似于平方率包括检波,主要的功能是实现两路信号的平方相加运算。因为本设计的前端输入数字是来自数字下变处理出来的基带信号,包括两路:同相信号和正交信号。因此,需要调用本模块来实现两路信号的平方相加运算。

(5) 总调用模块
总调用模块的作用主要是对前面的各个模块进行总体调用。
下面将会对各个模块进行详细的设计说明。

4.3 匹配滤波器各个模块的实现
4.3.1 累加模块
该模块的作用是用来进行中间结果和输入采样数的有符号数的运算并且实现延时寄存器功能。其核心包括两个部分,一是:有符号数的累加部分;另外一个是延时单元部分。输入数据为3 bit的采样输入数据,输出为:7位的数据。
在Xilinx公司开发的ISE软件里面,使用ISE自带的XST工具综合,当程序编译正确后就可以看到XST工具的检查语法项和逻辑表达项都打上了勾,表示语法编译通过。然后双击“View RTL Schematic”按钮(如图下圆圈部分)就可以看到所编译模块的外部接口表示和内部逻辑结构[20]。

下面是该累加模块的外部接口表示图(4.5)和内部逻辑功能图(4.6):

图4.5 累加器外部引脚图

图4.6 累加器内部逻辑结构图
该累加器中定义了两个进程,一个是用来计算有符号数的累加部分,另外一个是用来实现输出结果的延时部分。下面对这两个部分进行说明。在有符号数的累加部分中, 需要在ieee库中调用一个名为std_logic_arith的包集,在这个包集中就包括了有符号数(signed)和无符号数(unsigned)两种数据类型。无符号数只能表示大于零的数。例如,“0101”表示十进制5,“1101”表示十进制数13。而无符号数则可以表示正数和负数。例如:“0101”表示十进制数5,而“1101”表示十进制 -3 。只有在代码的开头部分声明ieee库中的包集std_logic_arith,才能使用这些数据类型[21]。在累加器中,当进入抽头的本地扩频码为“0”时,程序实现有符号数加法运算,当进入抽头的本地扩频码为“1”时,实现有符号数的减法运算,这样的话就可以把0、1表示的扩频码,映射成相加或者相减运算。下面给出了有符号数累加运算的主要代码:
……………
if(clk’event and clk=’1′) then
if (incode= ‘0′) then
midreg< = signed(midresult) + signed(indata); --抽头系数为“0”时,实现有符号数相加运算;
else
midreg<= signed(midresult) - signed(indata);
end if;
end if;

另外一部分是延时单元,该延时单元的作用类似于D触发器的作用,先定义了一个存储单元,然后把输出结果存放到该存储单元中,并且不断输出该存储单元的第一个数据。核心代码如下:
……………
if(clk'event and clk='1') then
cunchu<=cunchu(1 downto 0)&midreg; --把中间结果存储在存储区域的尾部;
end if;
end process;
Addout<=std_logic_vector(cunchu(2)); --输出存储区域的第一个数据。
下面将给出该累加器的流程图(图 4.7):

图4.7 累加模块的程序流程图

4.3.2 折叠滤波模块
折叠滤波的主要作用是对累加器进行复用。折叠滤波模块主要包括了两个部分。
第一个部分是:把本地扩频码存储在FPGA的存储区,编码控制其输出,由于四倍采样的缘故,每四个上升沿进来系统一个采样数据,因此,可以把本地扩频码分成四组,每到一个上升沿就可以输入一组本地扩频码到滤波器的抽头,也就是说,在下一个采样数据到来之前,前一个数据就可以同存储在FPGA 中的所有本地扩频码进行相关运算,就可以产生一个最大的峰值输出。
在该模块的程序中,(1)numofchips为每一组扩频码的个数,若采用128位的本地扩频码的话,numofchips取值为128/4=32,在本沦为中,扩频码的个数取值为16,相应的numofchips取值为16/4=4;(2)本地扩频码是以常数形式存储在FPGA 的存储区域,常数的定义和设置是为了程序更容易阅读和修改,举个例子来说明,如果将逻辑位的宽度定义为常数的话,只要修改这个常量值就很容易地在程序中改变相应的宽度,从而改变硬件结构。同理,在该模块的设计过程中 ,把本地扩频码定义为常量的话,就可以很方便的随时对扩频码进行修改,方便扩大或者缩小系统容量;(3)控制扩频码的输出采用了“case……when”语句[22],定义了一个临时信号“control”,每到来一个上升沿,control就自动加1,然后就可以运用“case……when”语句控制control在哪个值的时候,输出哪一组本地扩频码。下面给出了这一部分的核心程序如下:
……………
constant rom0: std_logic_vector(0 to numofchips-1):="1111"; --把本地扩频码定义为常量;
constant rom1: std_logic_vector(0 to numofchips-1):="0000";
constant rom2: std_logic_vector(0 to numofchips-1):="1001";
constant rom3: std_logic_vector(0 to numofchips-1):="1010";
……………
case control is
when "00"=>code< =rom0;
when "01"=>code< =rom1;
when "10"=>code< =rom2;
when others=>code< =rom3;
end case;

第二个部分是:对累加器的复用部分。该部分主要使用了VHDL硬件描述语言中的生成语句“for……generate”和元件例化语句。(1)元件例化语句由两部分组成,前一部分是对一个已经设计好的实体定义为一个元件,第二个部分是在当前结构中对此元件进行端口映射。他们的语句表达如下:“Component 元件名……end Component,元件名 port map”语句中“port map”的意思是端口映射的意思,也就是说将例化的元件端口映射成当前设计模块的各个端口[23]。(2)生成语句的作用很大,它有一种复制的作用,在设计的过程中,只要根据某些条件,设定好某一元件或者设计单位,就可以利用生成语句来复制一组或者多组完全相同的元件或者设计好的电路结构。在语法上可以描述成“if……generate,end generate”。该部分在折叠滤波模块的核心语句如下:
……………
component Adder --Adder为累加模块的名称,对它进行元件例化声明;
generic(IndataWidth: integer:=3;
OutdataWidth: integer:=7);
port(clk,clr: in std_logic;
incode: in std_logic;
indata: in std_logic_vector(IndataWidth-1 downto 0);
midresult: in std_logic_vector(OutdataWidth-1 downto 0);
Addout: out std_logic_vector(OutdataWidth-1 downto 0));
end component;
……………
first:Adder port map(clk,clr,code(0),indata,jicun,middle(0));
q:for i in 1 to numofchips-1 generate --采用了生成语句,将例化的累加器模块当成元件使用,复用例化模块;
a:Adder port map(clk,clr,code(i),indata,middle(i-1),middle(i));
end generate;

下面给出了折叠滤波模块的外部引脚图(4.8)如下,输入为3bit的采样数据,输出为7位数据。

图4.8 折叠滤波模块的外部引脚图
该模块的内部逻辑结构图(4.9)如下:

图4.9 折叠滤波模块的内部逻辑结构图

该折叠滤波模块的程序流程图(4.10)如下:

图4.10 折叠滤波模块的程序流程图
4.3.3 时钟模块
时钟模块实现起来不难,它的主要主要作用类似于四分之一的分频器。每四个时钟到来,再输出一个时钟信号,该模块主要是配合后面的平方相加模块使用的。其核心语句说明如下:
……………
if(clr='1') then
count<="00";
elsif(clk'event and clk='1') then
if(count="11") then -- count用作计数;
clk4out<='1';
else
clk4out<='0';
end if;
count<=count+1;
end if;
其外部引脚图(4.11)如下:输入为时钟信号clk,输出为分频后的时钟信号clk4out:

图4.11 时钟模块的外部引脚图

其内部逻辑结构图(4.12)如下:

图4.12 时钟模块的内部逻辑结构图

下面给出时钟模块的流程图(4.13):

图4.13 时钟模块的程序流程图
4.3.4 平方相加模块
由于前端输入数据为经过采样处理的基带信号,基带信号有两路I(t)和Q(t),一路是同相信号,另外一路是正交信号,用数学公式[24]表示如下:

平方相加模块主要是对这两路信号进行平方相加,得到: 。其作用也就是实现平方率包络检波的过程 。
在编程的过程中,主要调用了ieee库中的乘法函数模块和加法函数模块,比较容易实现。不过要注意一点的是,在该模块的运算的过程中,数据都是以有符号数来表示的,实现起来也就是以补码形式来进行运算。所以进来的数据都要进行有符号数的转换,用到Signed()函数。其核心程序描述如下:
……………
if(clr='1') then
y:=(others=>‘0′);
elsif(clk’event and clk=’1′) then
y:=signed(idatain)*signed(idatain)+signed(qdatain)*signed(qdatain)+zero;–有符号数的平方再相加运算;
end if;

还有编程过程中要注意的一点是:在进程process()语句的敏感量表中要添加两个输入信号,即可以描述成:process(clk,clr,idatain,qdatain),否则当输入信号改变时,输出的结果无法立即进行相应的变动。这个细节在编程过程中是要注意的。

该模块的外部引脚图(4.14)如下,进来的是两路信号,然后得出结果进行输出。

图4.14 平方相加模块的外部引脚图

其内部的逻辑结构图(4.15)如下所示:

图4.15 平方相加模块的内部逻辑结构图
平方相加模块的流程图(4.16)如下:

图4.16 平方相加模块的程序流程图
4.3.5 总调用模块
总调用模块主要是对前面各个模块的调用实现,该模块主要使用了元件例化语句。由于四倍采样的 缘故,故输入信号每四个时钟变一次,因此得到的输出结果也会每四个时钟输出一个,也就是说,要对平方相加模块的时钟进行调整,它的时钟信号为系统时钟信号的四分之一,这也就是需要调用时钟模块的原因。
该模块的核心程序描述如下:
……………
begin
t: Timer port map(clk,clr,clk4);
i: Matched_Filter port map(clk,clr,idata,iout);
q: Matched_Filter port map(clk,clr,qdata,qout);
s: Square port map(clk4,clr,iout,qout,dataout);

所以系统的整体外部引脚图(4.17)如下,输入数据为两路的基带信号。

图4.17 总调用模块的外部引脚图

系统的内部路基结构图(4.18)如下,其中包括了复用两个折叠滤波模块、一个时钟模块和一个平方相加模块。

图4.18 总调用模块的内部逻辑结构图

第五章 匹配滤波器的电路综合与仿真结果分析
5.1 仿真综述
数字电路设计中一般流程包括代码输入、综合、实现等3个比较大的阶段。用硬件描述语言VHDL编写程序完成之后,为了验证所编译的程序是否正确、是否符合编程要求,需要将这些编写好的程序在硬件描述语言的模拟器上进行仿真,这些模拟器就叫做仿真工具。本论文设计的过程中,用到的仿真工具是modelsim仿真工具。Modelsim仿真个器在FPGA/CPLD设计中使用得比较广泛。根据设计阶段的不同,仿真可以分为RTL行为级仿真、综合后门级功能仿真和时序仿真等3大类型。
Modelsim是一个独立的仿真工具,它在工作的时候并不需要其他软件的帮助,在Xilinx公司的ISE集成开发环境中给Modelsim仿真软件预留了接口,通过这个接口可以从ISE集成环境中直接启动Modelsim仿真软件工具进行仿真。其实ISE并没有集成Modelsim,只是给Modelsim预留了接口,方便调用其运行。
使用Modelsim工具进行仿真必须具备三个条件:第一,启动ISE集成开发环境并且建立了一个FPGA项目;第二,添加设计源代码并且编译通过;第三,使用ISE的“Test Bench Waveform”工具为当前设计提供一个测试模板(Testbench)。
下面将会详细介绍仿真的具体过程。

5.2 Modelsim仿真操作流程
(1)在ISE集成环境中,新建立工程项目,添加设计程序源代码,并且要编译通过。举个例子,此时要对本设计中的累加器进行仿真,累加器模块(Adder)编译好之后,在ISE中的综合工具XST会打上勾,表示语法编译和逻辑编译通过,如下图(5.1)所示:

图5.1 Modelsim仿真操作流程(一)

(2)使用ISE的测试激励生成器(HDL Bencher)编写测试激励文件。测试激励文件的作用就好比一个激励源,对所编译的模块提供激励源,以供其仿真所用。选择所要仿真的模块,如现以累加模块为例,在工程项目上点击右键,选择“New Source”以后,在左边的选择框里面选择“Test Bench Waveform”,然后填入测试激励文件的名称,点击“下一步”即可。如下图(5.2)所示:

图5.2 Modelsim仿真操作流程(二)

(3)然后对所要测试文件做一些参数调整,如下图(5.3)所示,即可以进行仿真。

图5.3 Modelsim仿真操作流程(三)

(4)接下来,在ISE中,对所要仿真的模块输入一些数据后,在左下方的“Modelsim Simulator”一栏中选择“Simulate Behavioral Model”就可以调用Modelsim进行行为仿真。如下图(5.4)所示:

图5.4 Modelsim仿真操作流程(四)
(5)下面是累加模块的Modelsim行为仿真图(图 5.5),接下来就可以分析程序的正确性。

图5.5 Modelsim仿真操作流程(五)
5.3 匹配滤波器各个模块的仿真数据分析
5.3.1 累加模块的仿真数据分析
累加器中进行的是有符号数的累加运算,运算过程中的所有数据均为有符号数。下面的行为仿真结果图中的数据均是以十进制来显示的。这样方便直观,容易计算。该累加模块的原理是这样的,置位信号“clr”为0的时候赋予中间结果一个0值,为“1”的时候,模块开始工作,由于模块包含了一个“延时单元”所以看到仿真图的前两个时钟,是没有输出结果的,第一个结果为“clr”信号为0时,赋予输出的0值,第一个0值以后的结果均为累加模块的正常工作输出结果。
累加模块正常工作时,若本地存储的扩频码(incode)为“0”值,模块实现“midresule”和输入采样数据“indata”相加运算;当indode为1值时,模块实现“midresule”和输入采样数据“indata”相减运算。
累加模块除了核心的累加运算部分外,还包括一个延时部分,从下面的仿真图可以看出最终从“Addout”引脚出来的结果前面一部分由于延时的作用,正常运算的结果要推迟三个时钟(即上升沿的时间)才能从“Addout”引脚送出来。实现延时功能的部分在该模块的设计中,采用了能存储三个数据的数组来实现,数据采用先进先出的形式传送。具体实现效果如下图(5.6)所示:

图5.6 累加模块的仿真图
接下来对输入的结果进行手工运算,然后就可以对比仿真输出结果(结果均化为十进制表示),以验证其正确与否。见下表(5.1)所示:
表5.2 累加模块的仿真结果与手工运算结果对比验证
Clr置位信号 时钟 Incode(本地扩频码值) Midresult(中间输入值) Incode(采样输入值) 手工运算值 仿真结果
0 1 0 -1 0 -1 + 0 = -1 -1
0 2 1 43 1 43–1 = 42 42
0 3 0 60 2 60+2=62 62
0 4 1 20 -1 20-(-1)=21 21
0 5 1 43 -3 43-(-3)=46 46
0 6 0 43 -3 43+(-3)=40 40
0 7 0 5 -2 5+(-2)=3 3
0 8 1 5 -2 5-(-2)=7 7
0 9 1 5 -4 5-(-4)=9 9
0 10 1 19 0 19-0=19 19
0 11 0 54 3 54+3=57 57
0 12 0 54 -2 54+(-2)=52 52

从结果可以对比到,手工运算结果和仿真结果是完全吻合的。证明该累加模块的累加功能是正确的 。
5.3.2 折叠滤波模块的仿真数据分析
从波形的仿真图可以看出,由于存储在存储区域的扩频码是16位码长的,采样信号进来后,通过modelsim仿真软件的仿真,可以看出,得出的数据中输出相关峰值为16,可以看出,接收信号的相位与本地扩频码的相位完全一致,模块得到的与理论相符。

图5.7 折叠滤波模块的仿真图
5.3.3时钟模块的仿真数据分析
时钟模块的编程原理主要是四分之一分频,每四个时钟输出一个信号。该模块主要是配合后面的平方相加模块来进行数据输入输出的控制的。该模块的Modelsim仿真图如(图5.8)下所示:

图5.8 时钟模块的仿真图
从上面的仿真图可以看出这个模块的正确性。

5.3.4 平方相加模块仿真数据分析
平方相加模块主要是对输入的两个数进行平方相加,其运算的过程也是一个有符号数的运算过程,运算的时候用补码表示。下面是该模块的仿真图(图5.9),数据均用十进制来显示,方便对比。输入数据宽度为7位,输出数据宽度为14位。

图5.9 平方相加模块的仿真图

下面将对这些数据进行分析,见下表(5.2):
表5.2 平方相加模块的仿真结果与手工运算结果对比验证
时钟 Idatain(输入) Qdatain(输入) 手工运算结果 Result(仿真输出结果)
1 -3 19 (-3)×(-3)+19×19=370 370
2 5 27 5×5+27×27=754 754
3 -5 -17 (-5)×(-5)+(-17)×(-17)=314 314
4 -37 -46 (-37)×(-37)+(-46)×(-46)=3485 3485
5 -57 -52 (-57)×(-57)+(-52)×(-52)=5953 5953
6 46 55 46×46+55×55=5141 5141
7 1 -1 1×1+(-1)×(-1)=2 2
8 0 -58 (-58)×(-58)=3364 3364
9 59 -58 59×59+(-58)×(-58)=6845 6845
10 59 19 59×59+19×19=3842 3842
11 33 19 33×33+19×19=1450 1450
12 33 21 33×33+21×21=1530 1530
13 9 -7 9×9+(-7)×(-7)=130 130

从上述表格中可以看出,手工运算的结果跟仿真出来的数据是完全一致的。由此可以看出,该模块的基本功能是符合设计要求的。
5.3.5总调用模块仿真数据分析
总调用模块是对前面各个模块的总体调用。前端进来的数据是四倍速率采样的,也就是说每四个上升沿进来一个3bit的数据,这些数据经过折叠滤波模块得到一个7bit的滤波值,7bit的滤波值再经过平方相加模块,得到平方率包络检波的效果,最后得到的是14位的数据。
为了验证整体模块的行为仿真正确性,下面将会详细说明。
首先从引脚“idata”进来的数据为别为:111、110、010、000、110、010、101;化成有符号数的十进制表示为:-1、-2、2、0、-2、2、-3;从引脚“qdata”进来的数据分别为:101、001、100、101、001、010、111;化成有符号数的十进制表示为:-3、1、-4、-3、1、2、-1;输入的数据如下面的仿真图(图 5.10)所示,其中“dataout”出来的数据,是前面的数据经过折叠滤波模块和平方相加模块最后得到的值。接下来会把看不到的中间结果进行手工运算然后再对比仿真数据。

图5.10 总调用模块的仿真图
引脚“idata”的信号“-1、-2、2、0、-2、2”经过折叠滤波模块分别输出为:1、1、-5、1、5、-9;引脚“qdata”的信号“-3、1、-4、-3、1、2”经过折叠滤波模块分别输出为:3、-4、2、3、-12、-2;这些中间结果是看不到的。见下表(5.3)所示:
表5.3 总调用模块的仿真数据验证
Idata引脚的滤波值 Qdata引脚的滤波值 经过平方相加模块的手工运算值 仿真数据
1 3 1×1+(-3)×(-3)=10 10
1 -4 1×1+(-4)×(-4)=17 17
-5 2 (-5)×(-5)+2×2=29 29
1 3 1×1+3×3=10 10
5 12 5×5+12×12=169 169
-9 -2 (-9)×(-9)+(-2)×(-2)=85 85

由此可以对比得到手工运算的值和仿真数据值是完全一致的,可以判断得出整体模块的行为功能是符合要求的。
仿真出来的相关峰值能量,它是I、Q两路信号的平方和。但在实际中,由于前端信号可能存在噪声,再加上前端的信号都是四倍速率采样的,实际的峰值可能会下降一些。
5.4 匹配滤波器整体系统性能
当存储在FPGA内的扩频码为16位的时候,在ISE集成软件中,可以看出该匹配滤波器的整体性能。该工程项目所用的器件如下图(5.11)所示,器件名称为:VirtexE xcv600e;速度级别为:-6;

图5.11 匹配滤波器的参数设置图

当前占用的FPGA资源如下图(5.12)所示:

图5.12 匹配滤波器的资源占用

从上图可以看出,折叠式匹配滤波器占用FPGA资源较少,当存储在FPGA的rom中的扩频码长度为16是,能够大大地减少FPGA资源的开销,但是随着本地扩频码长度的增长,匹配滤波器占用FPGA资源也会随着增大,相对与其他直接实现的匹配滤波器、转置形式的匹配滤波器和基于分布算法的匹配滤波器来说,采用折叠式都要节约FPGA资源并且可以提高系统整体的速度。

第六章 结论
扩展频谱通信系统由于具有抗干扰、低截获率、可实现码分多址和抗多径效应等特点,在民用、商用和军事领域已经得到广泛应用。扩频系统的解扩是数据解调的前提,要实现解扩就必须是接收机的本地扩频码序列与接收到的扩频码序列相位一致,这就是伪码同步,同步包括:捕获和跟踪。目前对伪码初捕获的常用方法有两种:滑动相关法和匹配滤波法。匹配滤波法的显著优点是:速度快、捕获时间短、容易实现快速捕获;缺点是:当伪码较长时,设计所耗费的FPGA资源较大。
本文主要针对匹配滤波器选用了折叠式匹配滤波法来实现,现在对工作总结如下:
(1)采用VHDL硬件描述语言完成了折叠式匹配滤波器的设计,该匹配滤波器可以根据需要选用不同的扩频码,码长在FPGA资源足够的情况下,可以任意选取。当然越长的扩频码,所消耗的FPGA资源也就越大。在本设计中,选用了四倍采样速录,这样的话,前端输入的数据长度可以设定为3bit;把扩频码分为四组,每到一个上升沿,把其中一组的扩频码输入到抽头系数中。扩频码中的“0”和“1”在程序设计的过程中,可以相应映射为:加法和减法运算。最后得到的相关值经过平方相加模块实现平方率包络检波后输出。所设计的折叠式匹配滤波器可以很好的实现伪码捕获并且所用的FPGA资源在众多方案中是较少的,运算速度也是比较快的。
(2)在设计的过程中,巩固了对硬件描述语言VHDL的掌握程度。更深程度的了解了VHDL的各种语法描述,语句使用方法。VHDL是一门广泛使用的硬件描述语言,究其原因在于它是一种标准语言,是与工具和工艺无关的,从而可以方便地进行移植和重用。VHDL语言的两个最直接的应用领域是可编程逻辑器件和专用集成电路,其中可编程逻辑器件包括复杂可编程逻辑器件(CPLD)和现场可编程门阵列(FPGA)。所以,对VHDL语言的熟练掌握对于今后的开发工作是有很大帮助的。
(3)在设计的过程中,熟练了对各种软件的使用,特别是Xilinx公司开发的配套软件ISE集成开发系统有着广泛的使用,该配套软件功能强大,能够大部分的满足对现场可编程门阵列(FPGA)的开发编程工作。Modelsim的配合使用能够很好为设计提供了强而有力的仿真运算,降低了开发的难度,提高了准确性,使得开发由实体硬件转移到了计算机,扩大了应用范围。
(4)在完成该设计的过程中,更深的理解了各种滤波器的设计开发,对他们的内部结构,更为了解。对于常用的设计方案都有了一个很好的掌握。知道滤波器之间的各种设计参数,选择原则。
(5)在设计中采用了层次化、模块化的设计思想,将整个滤波器划分为多个功能模块,利用VHDL语言和原理图输入两种设计技术进行了各个功能模块的设计,最终完成了折叠式匹配滤波器的系统设计。
(6)折叠式匹配滤波器相对于常规的匹配滤波器设计方案来说要大大的节省资源,提高运算速度,但是,随着本地扩频码长度的增长,FPGA的资源开销也会随着增大,所以在实际应用中要根据实际的需要设置不同的本地扩频码长,选择不同的FPGA芯片。
折叠式匹配滤波器能够很好的满足扩接收机里面的伪码捕获要求,它具有速度快,捕获时间短,提高整体系统速度,满足快速捕获的要求,相对于传统的数字匹配滤波器来说,大大减少了FPGA的资源开销,节约资源;但是,具备这些优点的同时,随着本地扩频码长度的增加,系统资源开销也会随着增大,在实际应用中要根据实际需要选用不同的FPGA芯片来实现不同扩频码长的相关捕获。

参考文献
[1] 曾兴雯,刘乃安,孙献璞. 扩展频谱通信及其多址技术[M]. 西安:西安电子科技大学出版社,2005.32~210.
[2] 丁溯泉, 杨知行, 潘长勇, 郭兴波. 扩频技术:历史、现状及发展[N]. 电讯技术,2005,03,16(2).
[3] 任艳颖,王彬. IC设计基础[M]. 西安:西安电子科技大学出版社, 2003.15~160.
[4] 刘凌,胡永生. 数字信号处理的FPGA实现[M]. 北京:清华大学出版社,2003.21~220.
[5] 王文潇. 扩频通信接收机关键技术的FPGA实现[J].无线电工程,2005,35(6):9~11.
[6] 徐峰,李曙坚. FPGA在基带信号处理中的应用[J]. 电子测量技术, 2006,29(3):80~81.
[7] 王光,田斌,吴勉. 数字匹配滤波器的优化设计与FPGA实现[J]. 国外电子元器件,2006,25(5):70~73.
[8] 王爱华,安建平,黄其华. 高动态条件下PN码扩谱接收机的频率跟踪策略[J]. 电子与信息学报,2004,26(4):586~592.
[9] 陈鹤,邵定蓉. 高动态扩频接收机中数字匹配滤波器的FPGA设计[J]. 通信与计算机,2003,24(3):85~87.
[10] 郭经红,尤肖虎,程时昕. WCDMA系统中匹配滤波器的FPGA实现[J]. 通信学报,2001,22(1):52~57.
[11] 步衍冰,曾兴雯,梁敏超. 基于FPGA的快速匹配滤波器[J]. 无线电工程,2003,33(6):31~33.
[12] 郭晓宇,潘登,杨同中. 基于FPGA实现FIR滤波器的研究[J]. 电子技术应用,2004,24(4):61~63.
[13] 周奕. 匹配滤波器的FPGA实现[J]. 移动通信,2003,25(2):172~176.
[14] 杨奎武,魏博. 扩频通信中匹配滤波器的FPGA设计[J]. 电子设计,2005,21(3):117~119.
[15] 沈业兵,安建平,王爱华. 数字匹配滤波器的递归折叠实现[J]. 北京理工大学学报,2006,26(8):733~736.
[16] W.-C.Lin,K.-C.Liu and C.-K Wang, Differential Matched Filter Architecture for Spread Spectrum Communication Systems[J]. ELECTRONICS LETTERS, 1996,1.32,15th.
[17] 叶淦华. FPGA嵌入式应用系统开发典型实例[M]. 北京:中国电力出版社,2005.80~312.
[18] VladanM.Jovanovic,Member,IEEE,and Elvino S.Sousa,Member,IEEE, Analysis of Non-Coherent correlation in DS/BPSK Spread Spectrum Acquisition[J], IEEE TRANSACTIONS ON COMMUNICATIONS , VOL.43.NO2~4.
[19] 李健, 常青,毕存磊,金科. 扩频接收机匹配滤波器的设计及其FPGA实现[A].全国第三届DSP应用技术和第九届信号与信息处理联合学术会议论文集[C]. 北京:北京航空航天大学出版社,2005.328~330.
[20] 王诚,薛小刚,钟信潮. FPGA/CPLD设计工具——Xilinx ISE使用详解[M]. 北京:人民邮电出版社,2005.260~290.
[21] 乔庐峰,王志功. VHDL数字电路设计教程[M]. 北京:电子工业出版社,2005.71~85.
[22] 潘松,黄继业. EDA技术实用教程[M]. 北京:科学出版社, 2002.60~93.
[23] 徐志军,徐光辉. CPLD/FPGA的开发与应用[M]. 北京:电子工业出版社,2002.128~138.
[24] RUPERT B. The DSP bottleneck[J]. IEEE Comm, 1995,33(5):39~45.

附录一

折叠式匹配滤波器部分程序

附录二

折叠式匹配滤波器RTL视图:

附录三

折叠式匹配滤波器FPGA设计内部逻辑结构图:

基于SOPC的无线监控系统的研究与设计

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 18-09-2009

标签:, , , ,

0

目 录

摘 要 III
ABSTRACT IV
第一章 绪论 1
1.1 研究背景及意义 1
1.2 无线远程监控系统的现状及发展方向 2
1.2.1 基于公众移动通信网络的无线监控系统 2
1.2.2 基于无线局域网的无线监控系统 3
1.2.3 无线远程监控系统的发展方向 3
1.3 SOPC技术及其发展 3
1.3.1 SOPC技术 3
1.3.2 SOPC 国内外发展现状 5
1.4 论文内容及安排 7
第二章 系统关键技术原理介绍 8
2.1 FPGA中IP核的开发 8
2.1.1 IP核的开发与复用 8
2.1.2 XILINX CORE GENERATOR 9
2.2 JPEG静态图像压缩编码原理 9
2.2.1彩色空间转换 10
2.2.2 JPEG基本系统的编码过程 11
2.3 GPRS无线传输技术 14
2.3.1 GPRS综述 14
2.3.2 GPRS无线传输原理 15
第三章 总体设计 18
3.1 设计思想 18
3.1.1 设计任务 18
3.1.2 设计方案选取及论证 18
3.2 系统设计 20
3.2.1 系统框图 20
3.2.2 硬件平台 20
3.2.3 软件环境 21
第四章 模块设计 22
4.1 JPEG图像压缩编码的设计与实现 22
4.1.1 总体设计方案 22
4.1.2 存储器模块设计 23
4.1.3 二维FDCT模块设计 24
4.1.4 RGB2YCrCb模块设计 25
4.1.5 JPEG编码模块设计 27
4.1.6 JPEG编码模块仿真结果及分析 33
4.2 GPRS传输静态图像系统的设计与实现 34
4.2.1 图像传输系统 34
4.2.2 硬件设计 34
4.2.3 软件设计 35
4.2.4 设计结果及分析 38
4.3 小结 38
第五章 结论与展望 40
5.1 总结 40
5.2 前景展望 41
致 谢 42
参考文献 43
附录1 Z字形扫描与地址关系 44
附录2 HUFFMAN编码表 45
附录3 JPEG图像压缩部分代码 46
附录4 GPRS图像传输部分代码 50

摘 要

本文首先分析了课题的研究背景和意义,以及所涉及到的技术领域及其发展现状;其次对本设计中所用到的关键技术的原理方法做了研究,其中包括IP核的复用技术、JPEG的编码原理和步骤以及GPRS无线传输技术。
在此基础上,本文提出了自己的总体设计方案并对所选方案进行了比较论证,本设计是实现一个基于SOPC的无线远程监控系统。监控终端将现场采集来的图像数据经过压缩后由无线模块传输到监控中心,实现远程监控。设计在Create-SOPC1000X平台的FPGA中硬件实现图像压缩,利用XILINX开发工具ISE提供的现有IP核完成JPEG图像压缩编码,并通过GPRS模块进行无线传输。
本文重点讲述了设计流程,分为两大块:图像压缩和图像传输,其中分模块详细说明了图像压缩的各个设计步骤,并对设计结果做了仿真及分析。基本实现了图像监控的实时性和准确性。
本设计摒弃了传统的图像压缩技术,利用FPGA实现图像的JPEG编码,比软件和DSP速度更快,基于IP核复用技术设计的JPEG图像压缩编码,保证了其性能较优。但由于算法复杂,占用空间大,从而在编码速率上有所降低。

关键字: SOPC,FPGA,JPEG压缩编码,GPRS,无线监控

ABSTRACT

This paper firstly analyzes the research background and the significance about the topic, as well as the fields of the technology what are involved and their development status. Secondly, it introduces the principles and methods about the key technology using in this design which includes the IP core multiplexing, the principles and steps of the JPEG coding and the technology of the wireless transmission of GPRS.
According to what is said upon, a overall design program is coming out which is a Wireless Remote Monitoring System based on SOPC under comparison and demonstration. The monitor terminal of the system collects the image data on-the-scene, which should be sent to the monitor center after being compressed through wireless module. It is designed to realize the image compression through the hardware of the FPGA in the Create-SOPC1000X platform. And it completes the IP core for JPEG coding of the image compression based on the existing IP core through the XILINX’s ISE. And at last the data is sent by the GPRS module.
Then the paper chiefly discusses the designing flow which is divided into two blocks: image compression and image transmission. In the block of image compression, in order to make a detailed description of the designing steps of the image compression, the design is divided into several modules. And also the simulation and the analysis for the result of the design are made. So it is known that this design basically realizes the real-time image monitor accurately.
Instead of the traditional technology for image compression, this design uses the FPGA to realize the JPEG coding of the image which has a higher speed than the software and DSP. And it makes sure the superior performance through the design of using the technology of the IP core multiplexing. However the algorithm is complex and taking large space, so it has to change time with the space, in this case the coding speed is turned town.

KEY WORDS: SOPC, FPGA, JPEG coding, GPRS, wireless monitoring

第一章 绪论
1.1 研究背景及意义
随着我国社会经济的发展,近代监控技术具有向自动化、智能化、网络化、低功耗、小型化方向发展的趋势,采用自动化监控可以节约大量的人力资源,克服人力测量的效能低和精度不足等缺点。目前用于监控系统的通信方式也是多种多样。主要有有线通信方式和无线通信方式,对于地理位置分散的地方,采用有线或人工方式进行监控将花费大量的人力、物力,因此,无线通信技术越来越受到人们的关注。
无线监控系统的一般程序是:在一些重要的场所安放一个或若干个摄像机拍摄监控现场,然后将图像数据通过一定的传输网络(线缆、无线、光纤或以太网)传到指定的监控中心,再通过存储设备将媒体存储到存储介质上同时还可以根据不同需要和途径在现场安装其他的探测装置作为监控系统的辅助设备。
无线监控系统是安全防范系统的组成部分,因其直观、方便、信息内容详实而被广泛应用,在银行、金融、水利、航运、零售、制造业、大型企业、治安、消防、小区安保等领域都具有举足轻重的地位。
在嵌入式系统发展朝着小体积、低功耗、高性能的趋势发展的今天。MCU、DSP和FPGA三种处理器在现代嵌入式系统中扮演的角色呈现三分天下的局面,它们各自具有独特的优势而在某方面又略显不足。以51系列单片机和 ARM 微处理器为代表的 MCU家族因其丰富的软件系统支持在控制和处理人机接口领域占据绝对的领先地位;然而在海量数据处理方面却被DSP占尽了风头;FPGA在高速复杂逻辑处理方面独占风骚,并且最近异军突起,凭借其超大规模的单芯片容量和硬件电路的高速并行运算能力,在信号处理方面也显示出突出的优势。 因而,MCU、DSP、FPGA 的结合将是未来嵌入式系统发展的趋势。SOPC=MCU+DSP+FPGA,它将 FPGA、MCU及DSP等功能集于一身,将其可编程特性与IP核相结合,可以快速、低廉地开发出不同的协处理器,从而真正实现硬件编程、升级和重构[1]。
(1) SOPC⊇ MCU:目前,在大容量FPGA中可以嵌入16位或32位以上的MCU。如Altera公司的FPGA可嵌入一个或多个软核CPU(Nios或 NiosII),或预嵌入ARM等微处理器;
(2) SOPC⊇ DSP:DSP对海量数据快速处理的优异性能主要在于它的流水线计算技术,只有规律的加减乘除等运算才容易实现流水线的计算方式。然而,这种运算方式也较容易用FPGA的硬件门电路来实现。目前,实现各种DSP算法的IP 核已经相当丰富和成熟,例如,FFT、IIR、FIR、Codec等等。有实践证明,用FPGA实现的JPEG压缩/解压速度比通用DSP实现快10倍以上。利用相关工具(例如DSP Builder)可以很方便地把现有的数字信号处理IP添加到工程中去。
(3) SOPC⊇ FPGA:SOPC一般采用大容量FPGA作为载体,除了在一片FPGA中定制MCU处理器和DSP功能模块外,还可以设计其它逻辑功能模块,实现MCU+DSP+FPGA在一片芯片上集成。如可采用ALTERA公司的Cyclone、Stratix、StratixII 等大容量FPGA实现片上系统。
在这种背景下,本文设计了一个基于SOPC的无线远程监控系统。本设计目的是希望利用SOPC技术构造一个监控系统,可以对安全要求较高的某些房间、场所、设备、仪器进行监控。监控系统的通信方式选用了GPRS无线通信的方式,因为它不需要另外铺设通信电缆,安装可以更隐蔽,通信数据保密性较好。硬件语言采用VHDL语言。整个系统分为两部分:监控现场和监控中心。现场设备将采集来的图像数据在SOPC实验箱上通过FPGA实现JPEG压缩编码IP,经由GPRS无线通信模块传输信息到监控中心 ,实现无线远程监控。
1.2 无线远程监控系统的现状及发展方向
无线监控系统是计算机、无线网络和图像编码技术及图像传送器的结合。依据所使用网络体制的不同,可以将无线监控系统分为基于公众移动通信网络和基于无线局域网两种类别。
1.2.1 基于公众移动通信网络的无线监控系统
我国移动通信领域的两大运营商中国移动和中国联通,各自都拥有遍布全国的2.5G移动通信网络。中国联通采用CDMA2000 1X制式。这是基于码分多址的移动通信技术,相比传统的频分多址与时分多址技术,具有很多的优越性。首先,它的容量接近于以前CDMA 1X系统容量的两倍(比TDMA和GSM更好)。从而能够适应不断成长的语音服务和无线互联网新型服务的需要。其次,它的最高下载速度可达到153kbit/s。现网实测可以达到100kbit/s左右。中国移动采用GPRS技术。这是基于GSM网络发展而来的新型分组交换数据应用业务。与传统的GSM电路拨号交换相比,GPRS在资源利用效率、交换容量和性能上都有一个质的飞跃。GPRS 抛弃了传统的独占电路交换模式,采用分组交换技术,每个用户可同时占用多个无线信道,同一无线信道又可以由多个用户共享。有效地利用了信道资源,带宽理论最高可达171.2kbit/s。中国移动现网测试也可达到35kbit/s左右。
1.2.2 基于无线局域网的无线监控系统
无线局域网络(WLAN)是利用射频或是红外线的技术,以无线的方式连接两部或多部需要交换资料的计算机设备。相较于以有线方式所构成的区域网络,无线区域网络能利用简单的存取架构让使用者透过它。利用无线的高移动性来应用于各个需要的应用领域之中当前,数据传输速率已达l1Mbit/s(802.11b)。最高速率可达54Mbit/s(802.1l a/g)。可以很好地满足实时视频传输的需求,传输距离也可远至50km,WLAN的通讯距离不再是问题。
1.2.3 无线远程监控系统的发展方向
为了保证视频文件的传输就必须有足够的网络带宽,不同的流媒体文件对网络带宽的要求各不相同,为了达到更好的视频质量,网络带宽就更为重要。当前市场上常见的利用公众移动通信网络进行监控传输的产品基本上只能传输窄带视频。随着3G移动通信系统走向实用,高至2MHz的带宽将为无线视频监控提供更加强有力的支持,此时视频的质量将会有极大的改善。显示屏CPU内存、电池和解码软件等关键技术领域的发展也使得移动终端的功能日益增强,更多适合移动视频业务的终端不断涌现。此外,未来的3G系统也将考虑公众移动通信网络与WLAN系统的融合,用户将有可能真正实现“任何时间、任何地点、任何终端”的无缝式无线视频监控。
1.3 SOPC技术及其发展
1.3.1 SOPC技术
SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC技术的目标就是试图将尽可能大而完整的电子系,包括嵌入式处理器系统、接口系统、硬件协处理器或加速系统、DSP系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA中实现,使得所设计的电路系统在其规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。SOPC技术是一门全新的综合性电子设计技术,涉及面广。与现有的诸多电子系统设计理念和解决方案相比,SOPC技术更具代表性、主流性、规范性与普遍性。
SOPC从设计层次上讲,分硬件设计和软件设计;从设计流程上讲,是典型的自顶向下的流程;从设计手段上讲,相比于传统技术,更广和更深入地利用了计算机,而计算机技术无疑是当今的主流技术。在这一平台上,学科知识的融合,设计手段的融合,测试技术的融合,是SOPC设计者最大限度地在优化系统的性能上得以发挥自己的聪明才智,不再如传统技术中那样,把大量的时间花费在无谓的软硬件构建细节上。
SOPC技术所用硬件描述语言为VHDL语言和Verilog HDL语言。本设计中选择的硬件描述语言是VHDL,因为VHDL语法相对Verilog语言更为严谨,VHDL在逻辑综合方面更为出色。
VHDL的全称为VHSIC(Very High speed Integrated Circuit)Hardware Description Language。故VHDL中文译为甚高速集成电路的硬件标准语言。概括地说,VHDL具有以下主要优点[2]:
(1)具有强大的功能,覆盖面广,描述能力强,可用于从门级、电路级直至系统级的描述、仿真和综合。
(2)有良好的可读性,它可以被计算机接受,也容易被读者理解。用VHDL书写的源文件,既是程序又是文档。
(3)有良好的可移植性,作为一种已被IEEE承认的工业标准VHDL事实上已成为通用的硬件描述语言,可以在不同的设计环境和系统平台中使用。
(4)使用VHDL可以延长设计的生命周期。这主要是由VHDL的硬件描述与工艺技术无关的特点决定的,与工艺技术有关的参数可通过VHDL提供的属性加以描述,工艺技术改变时,只需修改相应程序中的属性参数即可。
(5)VHDL支持对大规模设计的分解和已有设计的再利用。

图1.1 VHDL设计流程示意图
SOPC与EDA 技术一样,不能简单归属于哪一个学科分支。广义地讲,它是一种理念、一种思想方法、一种境界、一种趋势[3]。
1.3.2 SOPC 国内外发展现状
目前SOPC的芯片设计主要集中在国外,其中以全球最大的两家FPGA生产厂家发展最为迅速,推动了SOPC的发展。当然还有Actel,lattice等FPGA公司。“片上可编程系统”(SOPC)得到迅速发展,主要有以下几个原因:
(1) 密度在1000万门以上的现场可编程逻辑芯片已经面市;
(2) 第4代现场可编程逻辑器件的开发工具已经成形,可对数量更多的门电路进行更快速的分析和编译,并可使多名设计人员以项目组的方式同步工作;
(3) 知识产权(IP)得到重视,越来越多的设计人员以“设计重用”的方式对现有软件代码加以充分利用,从而提高他们的设计效率并缩短上市时间;
(4) 由于连接延迟时间的缩短,片上可编程系统(SOPC)能够提供增强的性能,而且由于封装体积的减小,产品尺寸也减少了。
Xilinx公司在Virtex-Ⅱ Pro和即将推出的Virtex-Ⅳ FX系列FPGA中,集成了PowerPC,并且开发了最现代的SOPC平台开发工具,包括EDK,Chipscope,System Generator。同时还有第三方合作伙伴的支持,包括Mentor公司的Modelsim仿真软件,还有嵌入式系统开发厂商的支持,包括WindRiver和MontaVista等公司。
1. Xilinx公司的SOPC平台
Xilinx公司作为FPGA的发明厂家、全球最大的FPGA供应商,从Virtex2pro芯片系列开始,Xilinx公司开始在FPGA芯片中嵌入高性能的PowerPC硬核,该硬核是IBM 公司的PPC405,该硬核可以通过IBM的Core Connect总线将Xilinx公司以及其第三方合作伙伴提供的IP互联到一起,组成一个硬件可配置的系统。Core connect总线包括三条总线:OCM(片上内存),PLB(本地处理器总线),OPB(片上外设总线)。客户可以根据自己的需求,使用Xilinx公司提供的嵌入式开发工具EDK 来选择自己需要的总线、IP来组成自己的SOPC系统。后来Xilinx又推出了自己的90nm工艺平台的Virtex4 FPGA平台,该平台分为LX,SX,FX三个系列,其中FX系列为该系列的中最高性能的一个,FX系列FPGA中包括1个到4个增强型的ppc405处理器,2到4个硬核10/100/1000M三模式以太网接口,0到24个多千兆位收发接口。目前Xilinx公司的65nm工艺Virtex5系列FPGA开始陆续上市了,高端的FXT系列要到明年5月份才能上市。
Xilinx公司还推出了两款处理器软核以推动低成本SOPC系统的开发,Picoblaze是一款8位的微处理器软核,Micro blaze是一款32 位的软处理器核,现在Xilinx公司主推的是Microblaze现在的版本是4.0,现在,MicroBlaze软处理器在Virtex-4 FPGA中的工作频率可达到200 MHz,核心性能比前一版本提高多达25%。此外,新的浮点单元(FPU)选项使嵌入式开发人员可将系统性能提升至比软件仿真快120倍。
Xilinx公司的SOPC平台的开发工具包括ISE、EDK、Chipscope,System、Generator,PlanAhead等工具。
本设计就采用Xilinx公司的Virtex-Ⅱ系列,复用其开发工具ISE自带的IP核。
2. Altera公司的SOPC平台
SOPC技术最早是由美国Altera公司于2000年提出的,同Xilinx公司一样,Altera公司在SOPC平台中,提供软核和硬核两种处理器核,Altera公司使用的硬核是在嵌入式领域占有率最高的ARM处理器,型号是32位的ARM922T,工作频率可以达到200MHz,具有8K的数据缓存和8K的指令缓存。通过板上的JTAG接口,可以实现断点调试功能。它通过AHB总线和ARM处理器相互连接。为了更加灵活的使用,FPGA用户自定义逻辑可以定义为主模块(master),在总线通信时处于发起端;或是定义为从模块(slave),在总线通信时处于接收端。FPGA器件内部有3M大小的存储器,同时集成了SDRAM控制器。在FPGA开发板上可以外接128M的SDRAM,为了便于内部FPGA和外部SDRAM大数据量的交换,用户还可以定义自己的DMA模块,用于访问外部SDRAM。通过UART、网卡接口、JTAG 接口,FPGA可以很方便地同外部计算机通信、下载程序,及调试程序等。但是该系列芯片的没有得到市场广泛的认可,目前,Altera公司重要推广的是其32位的NIOSⅡ软核,最新的版本是6.0。Nios II嵌入式设计套件(EDS)提供32位、单精度、IEEE 754兼容浮点支持,含有最近发布的Nios II C语言至硬件加速(C2H)编译器。此外,Altera更新了Nios II嵌入式处理器,提高了设计人员构建多处理器系统的效率。Nios II EDS为设计人员在Altera FPGA中开发完整的Nios II嵌入式系统提供所需的软件工具、应用程序、库和驱动。
3. 其他FPGA厂商的SOPC平台
Actel公司与ARM公司于2005年10月24日共同宣布:两家公司已经开始向Actel的FPGA用户提供32位ARM7 Thumb系列微处理器。这是ARM处理器第一次作为“软”IP内核授权给可编程逻辑器件供应商。通过这一合作伙伴关系的建立,Actel将能够向开发者提供用于Actel FPGA系列的软ARM7 IP核。该软ARM7核命名为:CoreMP7,代码完全加密,但可以免费从网站下载并编程进Actel 的M7 ProASIC3系列FPGA器件中。目前CoreMP7的运行速度大约为25MHz。 M7 ProASIC3 FPGA器件是Actel公司为CoreMP7软CPU核专门提供的FPGA器件,目前CoreMP7只能编程到M7 ProASIC3 FPGA器件中。最小规模的M7A3P250器件在25万片时的采购价格是2.75美元。
Actel已试销其三款带CoreMP7的产品——M7A3P250、M7A3PE600和M7A3P100。CoreMP7是一个专用于ProASIC3家族FPGA的软ARM7微处理器。用户采用具有ARM功能的ProASIC3器件时,毋须额外付费即可使用CoreMP7,因而有助于降低入门成本并扩大使用ARM7家族进行SOC开发的设计人员范围。CoreMP7工作频率高达25MHz,适用于消费电子、工业、汽车及高可靠性应用。Lattice半导体公司推出LatticeMico8,一个8位”软”微控制器核,适用于现场可编程门阵列(FPGA)的LatticeECP,LatticeEC 和LatticeXP系列以及最近发布的MachXO系列。为了鼓励用户进行实验开发,Lattice正在提供一个新的开放的知识产权(IP)核的许可证,这是首个由FPGA供应商提供的许可证。该许可证涉及成功开放针对可编程逻辑应用的IP核源代码行动的许多概念。与通常从FPGA厂商处获得的免费的IP核(也称为参考设计)不同,LatticeMico8通过一个新的、创新的Lattice开放的IP核许可协议来获得许可,这可以从Lattice的网站上下载。该许可协议致力于与面向可编程逻辑的设计有关的特殊问题。允许用户更改此核并且分享他们的改动,开放的IP核许可证将鼓励用户开发和实验。
1.4 论文内容及安排
本文设计了一个基于SOPC的无线远程监控系统。设计目的是希望利用SOPC技术构造一个监控系统,可以对安全要求较高的某些房间、场所、设备、仪器进行监控。监控系统的通信方式选用了GPRS无线通信的方式,因为它不需要另外铺设通信电缆,安装可以更隐蔽,通信数据保密性较好。硬件语言采用VHDL语言。整个系统分为两部分:监控现场和监控中心。现场设备将采集来的图像数据进行压缩,经由GPRS无线通信模块传输信息到监控中心 ,实现无线远程监控。设计任务为图像采集、压缩存储、图像传输。
本课题采用了基于Xilinx FPGA的SOPC平台,利用XILINX CORE GENERATOR开发IP核,设计JPEG编码芯片,移植到SOPC实验箱的FPGA模块上,实行图像压缩,然后控制GPRS无线模块进行图像传输。GPRS模块采用西门子公司的MC35。
内容安排:
第一章主要介绍了课题的研究背景及意义,相关研究领域的研究现状及发展,课题的目标和内容安排;
第二章主要介绍系统设计中用到的关键技术及原理,其中包括IP核的开发、静态图像压缩标准JPEG的编码原理和GPRS无线传输技术;
第三章提出了课题的总体设计方案,内容包括设计思想、设计方案的选取和论证,系统框图及软硬件平台;
第五章具体实现系统的设计,其中分模块讲述了图像压缩编码芯片的设计和GPRS图像传输的实现,以及调试结果及结果分析;
第六章为总结部分,探讨了设计的优缺点,并对前景做了一定程度的展望。

第二章 系统关键技术原理介绍
2.1 FPGA中IP核的开发
2.1.1 IP核的开发与复用
传统的IC设计方法己无法适应新的SOC设计要求,需要根本的变革,即从以功能设计为基础的传统IC设计流程转变到以功能整合为基础的SOC设计全新流程。SOC设计以IP的设计、复用、组装和整合来完成。多家IC提供商己经在可编程SOC的实现方面提供了丰富的器件支持。这些新的器件所提供的系统功能包括处理器、存储器和可编程逻辑,这些器件提供了ASIC的高集成度(低功率、小尺寸、低成本)及FPGA的低风险、灵活性和上市快的特性。用户可以灵活、快速整合出面向具体应用的SOC产品。目前,已有几家IC提供商提供这种类型的可编程SOC。比较著名的三个公司是:Atmel、Xilinx和Altera。
数字系统一般由多个功能模块构成,其中很多模块是通用的,FPGA和EDA厂商预先设计调试好这些通用单元,构成具有自主知识产权的功能模块,称之为IP核。IP核的开发和复用技术是FPGA高级应用的技术基础和强有力的支持。
IP核有“ 软核”、“固核”和“硬核”之分叫,软核指经过验证的、可综合的、实现后电路结构总门数在5000以上的HDL模型,软核构成的器件称为虚拟器件。电路研制人员可以通过EDA综合工具,很容易把软核和虚拟器件与其它外部逻辑结合为一体。软核和虚拟器件的这种复用特性缩短了设计周期,加快了复杂电路的设计。固核是指在某一种FPGA器件上实现的、验证正确的且总门数在5000门以上的电路机构编码文件。硬核是指在某一种专用集成电路工艺(ASIC)器件上实现的、经验证正确的且总门数在5000门以上的电路结构版图掩膜。软核的灵活性最大,可以根据实现的手段和工艺作一些改动。固件和硬件与其它外部逻辑结合为一体的灵活性差。因此软核的设计和重用技术是新一代数字逻辑电路设计师的必然选择。
IP复用技术是指在设计过程中,通过继承、共享或购买所需的IP核,然后再利用EDA工具进行设计、综合和验证,从而加速系统的设计过程,降低开发风险。由于系统设计复杂性的提高以及上市时间方面的压力,设计者不断寻求有效的设计方法,以缩短设计周期,提高设计效率。使用大容量FPGA进行复杂数字系统设计时,采用IP核复用技术是十分必要的,并且正在逐渐成为系统设计的重要手段,从而缩短设计周期和上市时间,降低风险,减小投入,提高系统的性能和可靠性Xilinx为用户提供了完善的EDA工具ISE[4]系列,其中内置了一个Core Generator工具,内建了一些标准的、常用的IP,这些IP针对XILINX的FPGA芯片在速度和逻辑单元占用数理方面作了优化,用户可以借助Core Generator,开发出基于标准IP的新的性能较优的IP。开发过程中需要注意的是被复用的核对FPGA的支持,以及作的许可问题,论文中被复用的IP属于免费IP,不存在许可问题,且支持Xilinx大部分FPGA芯片。
2.1.2 XILINX CORE GENERATOR
XILINX CORE GENERATOR是Xilinx公司随其EDA开发工具ISE提供的一款IP开发工具,其中内建了许多针对Xilinx FPGA芯片作了优化的IP核,以供用户开发时复用,这些核包括FIF0s、Memories、Reed—Soloman编码解码、FIR fiters、FFTS、标准的总线接口如PCI、PCI-X、以太网接口、SPI接口等。这些IP由Xilinx和其合作伙伴开发,通过了严格测试。用户可以在这些核的基础上,开发自己的IP核。因为 Xilinx最了解自己生产的FPAG的内部架构,知道如何充分利用这些架构的优势,Xilinx的smart-IP技术,就是为了最大化这些架构优势而遵循的IP设计技术,这种技术能优化物理布线、通过紧缩设计和最小化的互连以减少芯片功耗、性能不依赖于目标设备、在性能无损的情况下相同设备上能够使用多个核的实例、减少编译时间、做到性能和面积的折中、设计灵活。Core Generator内建的IP都是采用了Smart-IP技术开发的,所以这些IP核具有性能高,占用逻辑单元少的特点。复用这些IP核,可以在短时间内开发出性能、占用逻辑单元少的新IP。
2.2 JPEG静态图像压缩编码原理
JPEG( Joint Photographic Experts Group)是联合图像专家小组的英文缩写。其中“联合”是指国际电报电话咨询委员会(CCITI)和国际标准化协会(ISO)联合组成的一个图像专家小组。他们开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法。这个压缩编码方法称为JPEG算法。JPEG算法被确定为JPEG国际标准,它是国际上彩色、灰度静止图像的第一个国际标准。JPEG标准是一个适用范围广泛的通用标准。它不仅适用于静止图像的压缩,电视图像序列的帧内图像的压缩编码也常用JPEG标准[5]。
JPEG的目的是为了给出一个适用于连续色调图像的压缩方法,使之满足以下要求:
(1) 达到或接近当时压缩比与图像保真度的技术水平,能覆盖一个较宽的图像质量等级范围,能达到“很好”到“极好”的评估,与原始图像相比,人的视觉难以区分。
(2) 能适用于任何种类的连续色调的图像,且长宽比都不受限制,同时也不受限于景物内容、图像的复杂程度和统计特性等。
(3) 计算的复杂性是可控制的,其软件可以在各种CPU上完成,算法也可以用硬件实现。
(4) JPEG算法,具有以下四种操作模式:
 基于DCT的顺序型操作模式;
 基于DCT的渐进型操作模式;
 基于DPCM的无损编码(ON序型)操作模式;
 基于多分辨率编码的(渐进型)操作模式;
核心则是基于DCT的顺序操作模式,由该模式加上霍夫曼编码构成了JPEG的基本系统,所有JPEG标准设备都必须包含基本系统,其他操作模式或者增强选项则归入JPEG的扩充系统。通常说的JPEG标准,一般指它的基本系统。
2.2.1彩色空间转换
JPEG基本系统的原图像以帧为单位,每帧最多可以包含4个分量图像Ci(i =1,2, 3, 4) 。把每个分量图像VIN序分割称一个个8×8样值的相邻象素块(Block),块内的64个数据组成一个数据单元(DU)。如果各个分量图像是分次扫描逐一得到的,则图像DU是非交织的,否则若一次扫描完成,则i个分量图像的DU只能交织存放。另外,由于各分量图像取样率可能不同,因而其数据单元对应的帧上象素块的面积也有差异,把分辨率最低的分量图像一个数据单元所对应的帧上的象素块所对应的全部DU(不超过10个),编组为一个最小编码单元(MCU)。在计算机视频技术中,用的最多的是RGB彩色空间表示,在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD摄像机,它把摄得的彩色图像信号,经过分色棱镜分成R’G’B’三个分量的信号,分别放大和校正后得到RGB信号,在经过矩阵变换电路得到亮度信号Y,色差信号R-Y和B-Y,最后发送端将Y、R-Y和B-Y三个信号进行编码,再用同一信道发送出去。这就是我们常用的YUV彩色空间。由于人眼对亮度信号的变换最敏感,对色差信号变化敏感度就次之,这样可以用较宽的信道来传送亮度信号以保证图像细节,用较窄的信道来传送色差信号来实现彩色显示。所以计算机视频中采用YUV空间,数字化后通常为:Y:U:V=4:2:2或者是Y:U:V=4:1:1。
YCbCr彩色空间到RGB彩色空间的转换关系如下式[6]:

公式(2.1)

YCbCr到RGB的变换如下:

公式(2.2)
2.2.2 JPEG基本系统的编码过程
基于JPEG的编码方法为顺序编码[7]。大致分成三个步骤:
1、使用正向离散余弦变换(Forward Discrete Cosine Transform,FDCT)把空间域表示的图变换成频率域表示的图。
2、使用加权函数对DCT系数进行量化,这个加权函数对人的视觉系统是最佳的。
3、使用霍夫曼可变字长编码器对量化系数进行编码。算法框图如下:

图2.1 JPEG压缩基本步骤

JPEG压缩编码算法的主要计算步骤如下:
(1)正向离散余弦变换(FDCT)。
(2)量化(Quantization)。
(3)Z字形编码(Zigzag Scan)。
(4)使用差分脉冲编码调制(Differential Pulse Code Modulation,DPCM)对直流系数(DC)进行编码。
(5)使用行程长度编码(Run-Length Encoding,RLE)对交流系数(AC)进行编码。
(6)熵编码(Entropy Encoding)。
1、正向离散余弦变换(FDCT)
(1)对每个单独的彩色图像分量,把整个分量图像分成若干个8×8的图像块,如图所示,并作为两维离散余弦变换DCT的输入。通过DCT变换,把能量集中在少数几个系数上。

图2.2 二维FDCT变换

(2)DCT变换使用下式计算:

公式(2.3)

上式中,
C(u),C(v) = (2)-1/2,当u, v = 0;
C(u),C(v) = 1,其他。
f(i, j)经DCT变换之后,F(0,0)是直流系数,其他为交流系数。
(3)在计算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成一维的DCT变换:

公式(2.4)

图2.3 两步实现二维FDCT变换

2、量化
量化是对DCT系数进行压缩的关键一步,方法是通过降低DCT系数精度的方法,去除掉图像中相对不重要的表示图像细节的AC系数,从而减少图像数据量,达到压缩目的,所以说量化是图像质量下降的最主要原因。
量化是通过量化表对FDCT变换后的频率系数进行量化的。也就是对DCT系数8×8的块依次以8×8的量化表为模板进行模板运算,结果是量化后的系数。
将DCT系数按比例缩小,取其最接近的整数值,量化过程就是每个DCT系数除以各自的量化步距并按四舍五入取整得到量化系数。量化公式如下:

公式(2.5)

公式中S(u, v)是量化步距。
因为人眼对亮度信号比对色差信号更敏感,因此对亮度信号可以选用步距比较小的表,对色差信号选用步距比较大的量化表。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此图中的左上角的量化步距要比右下角的量化步距小。量化表一般选用JPEG推荐的亮度和色度量化表。量化表的确定是在图像品质和压缩比之间的折中选择。量化表造成DCT编码信息的损失,而且这种是不可逆的损失,所以量化是有损JPEG压缩的关键。
3、Z字形编排
量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,如下图所示。这样就把一个8×8的矩阵变成一个1×64的矢量,频率较低的系数放在矢量的顶部。
图2.4 Z字形编排量化后的DCT系数
4、直流系数的编码
  8×8图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8×8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码。
Delta=DC(0,0)k-DC(0,0)k-1
把Delta转换成中间符号VLC(SSSS)和VLI(VVVV),VVVV是二进制Delta值,SSSS是二进制表示VVVV所需的位数。
5、交流系数的编码
  量化AC系数的特点是1×64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。
JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。
6、熵编码
使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数作进一步的压缩。
在JPEG有损压缩算法中,使用霍夫曼编码器来减少熵。使用霍夫曼编码器的理由是可以使用很简单的查表(Lookup Table)方法进行编码。压缩数据符号时,霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的霍夫曼码表可以事先进行定义。
2.3 GPRS无线传输技术
2.3.1 GPRS综述
随着无线数据通信的应用越来越广泛,促使无线传输需求的骤增,中国移动提供的GPRS (General Packet Radio Service)业务,在一定程度上满足了用户无线接入互联网的需求。GPRS网不但具有覆盖范围广、数据传输速度快、通信质量高、永远在线和按流量计费等优点,而且其本身就是一个分组型数据网,支持TCP/IP协议,无需经过PSTN等网络的转接,可直接与Internet网互通。
GPRS作为2.5G的无线数据通信技术,是在下述的背景条件下产生的[8]。
(1)无线资源的有限性。从某种意义上讲,无线资源比有线资源更紧缺,因而更有理由要求无线资源实现多用户共享。而目前的移动通信系统除支持话音通信外,尽管也能传送数据,但只能采用电路交换方式,在整个通信过程中,不管有无数据传送,电路一直被占用,利用率极低,这种情况对于本身就紧缺的无线资源更不能容忍。而GPRS采用分组通信技术,将分组交换引入无线网络,实现多用户资源共享,从而缓解无线资源紧缺的矛盾。
(2)数据通信的高速性要求。由于电路交换方式传送数据每个用户一次只能占用一个信道,数据速率极低 (最大为9.6kbit/s ),而GPRS一次最多可使用8个信道,并通过压缩编码算法把每个信道速率提高到最大为21.4kbit/s (CS-4编码方式),因此最大可达8*21.4=171.2kbit/s;并且还可在通信过程中根据对带宽的实际要求进行动态调整。
(3)合理计费的需要。在2G移动通信系统中对移动用户是以每次呼叫的时间长度为收费依据的,用户费用太高而且很不合理 (没有数据传送也要收费);而对数据传送按流量计费则更合理,但只要采用电路交换方式就不可能按流量收费。
(4)2G到3G的过渡。针对GSM (全球移动通信系统)网中存在的不足,ITU(国际电信联盟)提出发展第三代 (3G)移动通信系统IMT-2000,实现宽带数据业务以达到全球无缝覆盖,从根本上解决GSM在数据应用领域中存在的问题。
2.3.2 GPRS无线传输原理
GPRS模块上电后移动通信系统分配给它一个动态IP地址,它主动向服务器发出连接申请,服务器为其建立一条Socket连接。在理想状态下,该连接始终存在。GPRS模块具有通道检测功能,若通信不可靠或失败,则自动断开当前连接,复位后重新申请连接,保证通信的可靠性和实时性。监控中心通过ADSL或ISDN登录Internet,向服务器申请连接,服务器同样为客户端建立Socket连接。通过与服务器的Socket连接,客户端与终端设备进行实时通信,读取GPRS终端设备采集的信息或向其下发指令。值得注意的是,由于GPRS模块的IP是不确定的,整个链路建立过程必须由GPRS模块发起。也就是说,只有GPRS发送端获得了系统分配的动态IP并告知网络代理服务器以后,网络代理服务器才可以建立通信链路[9]。
1. GPRS无线通信结构

图2.5 GPRS无线通信系统结构图

GPRS无线通信系统结构图如图2.5所示。该系统主要由三大部分组成:移动台(MS)(控制机+GPRS开发板)、GPRS通信网(包括基站控制器BSC、服务支持节点、骨干网以及业务支持节点等)和监控中心部分。
移动台通过GPRS模块连接到改造后的GSM基站(包括BSC、BTS和PCU),然后连接到GPRS服务支持节点SGSN,通过SGSN与GPRS网关支持节点GGSN通信,GGSN对分组数据进行相应处理,发送到Internet上,实现移动台与监控中心的通信。
监控中心主要由网络服务器及显示器组成。移动台的数据信息通过GPRS网传至GPRS网关。网关通过Internet以IP协议将这些信息发至监控中心的网络服务器。监控中心的控制信息亦通过此通信链路下达移动台:来自Internet标识有移动台地址的TP包,由GGSN接收,再转发SGSN,继而传送到移动台。
系统的发送端硬件部分主要是移动台MS部分,包括移动终端(MT)和终端设备(TE)。TE即控制机,设计采用PC机对MT实行通信控制。MT主要基于GPRS/GSM模块,需连接外围电路构成完整的移动终端。移动终端通过接收控制机发送的AT指令实现各种无线通信功能。
2. GPRS通信的AT指令
AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。
MC35模块上的AT命令集接口符合GSM07.05和GSM07.07规范。GSM07.07中定义的AT Command接口,提供了一种移动平台与数据终端设备之间的通用接口;GSM07.05对短消息做了详细的规定。在短消息模块收到网络发来的短消息时,能够通过串口发送指示消息,数据终端可以向无线模块发送各种命令。
用于GPRS的常用的AT指令[10]如表2.1所示。

表2.1 GPRS常用AT指令
序号 功能 AT指令
1 定义PDP上下文 AT+CGDCONT
2 服务应用质量(请求的) AT+CGQREQ
3 服务应用质量(可接受的最小值) AT+CGQMIN
4 关联或分离GPRS AT+CGATT
5 激活或失效PDP AT+CGACT
6 进入数据状态 AT+CGDATA
7 GPRS移动电台类别 AT+ CGCLASS
8 为MO SMS消息选择服务 AT+ CGSMS
9 GPRS事件报告 AT+CGEREP
10 GPRS网络注册状态 AT+CGREG
11 请求GPRS IP服务 ATD
12 网络请求的PDP上下文激活的自动响应 AT+CGAUTO
13 网络请求的PDP上下文激活的人工响应 AT+CGANS
14 显示PDP地址 AT+CGPADDR
15 蜂窝显示代码 AT+CRC
16 服务报告代码 AT+CR
17 扩充的错误报告 AT+CEER
18 PDP计数器信息 AT+CGCOUNTERS
19 GPRS相关的错误 AT+CME ERROR

第三章 总体设计
3.1 设计思想
3.1.1 设计任务
本课题要完成一个远程无线监控系统的设计,系统分为两部分:监控终端和监控中心。监控终端对现场进行监控并将所拍照片进行图像压缩,以适应无线信道的传输,压缩后的数据经由无线模块传输到监控中心。所以主要任务为图像压缩和图像传输。
3.1.2 设计方案选取及论证
在监控系统中,图像处理是必不可少的一部分。随着多媒体应用已经普及到千家万户,相应的数字图像处理技术逐渐成熟且在图像通信等领域得到日益广泛的应用。实现图像编解码的IC芯片作为多媒体应用的核心技术之一,成为研究热点。用户不断要求新产品具有更大的图像容量、更高的图像质量和更快的图像处理速度,这为图像的存储和处理提出了更高的要求。在数字图像处理可视电话通信、数字电视等应用中,遇到的首要难题就是数据量过大,导致图像传输和存储成问题,解决办法就是对图像进行压缩编码。目前常用的监控系统是基于DSP+GSM的,而FPGA+GPRS则是新兴的图像监控技术。下面就这两种方案进行比较。
(1)近十年来,数字图像和数字视频的压缩技术取得了突破性进展,但是,大多数的图像压缩还是在通用PC或DSP芯片上利用软件实现,而软件的串行性有时不能满足对图像处理速度要求较高的场合,图像压缩成了实时处理系统提高运行速度的瓶颈。于是,用于图像处理的IP核的研究成为近几年多媒体处理技术的核心。这种基于FPGA或ASIC芯片实现的硬件图像处理技术,在合理利用硬件资源基础上,充分挖掘图像处理算法中的并行性,在较低主频下能获得可观的执行速度,这是芯片中多个处理单元并行处理的结果。从FPGA与DSP在高速数字信号处理中的应用比较来看,前者的执行速度远远高于后者。
(2)尽管目前对3G移动通信系统的研究有了很大进展,但最终目标的实现不可能一蹴而就,原来2G的通信设备也不可能一下子全部报废,只能采用逐步过渡的办法,而GPRS则是实现这种过渡的最佳方案之一。
GPRS是通用分组无线业务的简称,能提供比现有9.6Kbit/S更高的数据率。同时GPRS有许多GSM系统所不具备的优点:
 资源利用率高且费用降低:GPRS引人了分组交换传输模式,只要建立GPRS链接,用户将始终在线,每次发送数据之前无需重新建立无线链路,但是用户只有在发送或接收数据期间才完全占用信道,这意味着多个用户可高效率地共享同一无线信道,从而提高了资源的利用率。另外,GPRS业务按流量计费,即使在线,只要不发生数据交换,就不会产生费用。
 传输速率高:GPRS可提供高达115Kbit/S的传输速率,(最高值为171.2Kbit/S,不包括FEC)定义了CS1,CS2,CS3,CS4四种编码方案。这使得通过GPRS方式发送视频监视信息成为现实。
 支持IP协议和X.25协议:GPRS支持Internet上应用最广泛的IP协议和X.25协议,而且由于GPRS网络覆盖面广,使得GPRS能提供internet和其它分组网络的全球性无线接人。这点克服了传统无线监控系统无法突破地理覆盖区域狭小的限制,数据通过移动内网传至几十公里外的内网节点,或经由因特网转发给任何一台主机。同时,监控点部署灵活机动,甚至可处于运动状态,譬如:银行运钞车、救护车等。但现有的GPRS产品一般只作为数据收发平台,不能很好地与各种现场仪表及监控装置结合。我们在实践的基础上,把GPRS模块和单片机整合到一起。这样,终端就可以直接连接任何现场仪表或串行数据线缆,按照预定义的工作模式,发送监控数据。
所以GPRS 业务在无线上网、环境监测、交通监控、移动办公等行业中具有无可比拟的性价比优势。基于GPRS的无线监控系统[11]是目前最先进最稳定的无线监控管理系统。
因此本方案选取基于FPGA的硬件图像处理技术,采用GPRS模块实现无线传输,编码标准为JPEG。
JPEG标准作为图像压缩编码的一项重要技术,不仅适用于静止图像编码,还适用于运动图像编码。它的发展对图像压缩技术的发展有重要意义。关于JPEG图像芯片完整结构的论述并不多,商用的JPEG图像编码芯片具有较强通用性,速度和面积达到了较优配置,但由于功能过于全面,在某些特定领域,通用芯片的很多功能得不到充分利用,许多功能被闲置,造成资源浪费、成本和功耗增加。因此,利用现有的高密度FPGA器件和EDA工具,结合FPGA厂家提供的现成的IP核,在较短时间内开发出高质量的面向具体应用的IP核,灵活适应市场要求,是有一定实际意义的。
3.2 系统设计
3.2.1 系统框图
基于上述优点,本设计在FPGA中实现图像的JPEG压缩,GPRS无线模块完成图像传输。总体框图如图3.1所示:

图3.1 系统框图

图像的采集压缩存储都在FPGA中实现,压缩后的数据通过串口连接到GPRS数据终端上,然后将数据打成IP包,再通过GPRS空中接口接入到GPRS网络,最终通过各种网关和路由到达监控中心。监控中心将接受到的数据解压并显示出来。
网络代理服务器负责存储并转发双方的数据,在双方通信时为其建立可靠的连接;采用透明通道,不解释规约报文,保证通信中心最大可靠性和免维护性;具有通道检测功能,通信失败时断开当前连接,等待GPRS 终端和客户端前置机重新申请连接。
监控终端主要完成以下功能:
 图像采集
FPGA中实现传感器图像采集,分辨率为352*288,24bit真彩。
 图像压缩
通过JPEG编码芯片实现图像压缩,压缩后的图像为原图像的1/20左右,以适合GPRS低速网络传输。
 向服务器发送
可以根据软件中指定的互联网域名或IP地址,把图像数据发送到该服务器。
3.2.2 硬件平台
1. Create-SOPC 1000X嵌入式开发平台,它的核心是Xilinx公司的Virtex-II系列100万门FPGA,FG456管脚封装;
2. Create-SOPCJTAG仿真与下载器;
3. RS232串口数据线;
4. PC主机;
5. Siemens的MC35模块;
6. SIM卡;
7. CMOS传感器;
8. MAX32电平转换芯片;
硬件框图如图3.2所示:

图3.2 系统硬件框图
3.2.3 软件环境
1. Xilinx集成开发环境ISE7.1,语言为VHDL;
2. Modelsim XE III 6.0a 仿真软件;
3. Microsoft Visual C++ 6.0。
软件系统主要由以下两部分组成:
 图像的压缩存储:
这部分功能在FPGA中作为一个独立的单元实现,采集来的数据保存在Buffer_Sensor缓存中并对它进行运算,得到每个像素点的RGB值,也就是位图数据,分别保存到Buffer_R、Buffer_G、Buffer_B中;最后,JPEG编码芯片从这三个缓存中读取每个像素点的数据进行压缩,压缩完成后的图像数据存储在Buffer_img中。
 图像的传输
图像传输是建立在TCP/IP协议基础上,通过AT指令使GPRS模块进入数据传输状态,建立SOCKET进行数据传输。

第四章 模块设计
4.1 JPEG图像压缩编码的设计与实现
4.1.1 总体设计方案
因为JPEG编码算法比较复杂,因此JPEG编码IP核采用了自顶向下的设计方法,首先把JPEG编码HDL模块分成几个HDL子模块,每个子模块分别复用不同的IP模块,完成特定任务。这些子模块互联起来,共同完成JPEG编码任务。
本设计中JPEG编码IP分成四大模块来实现:颜色空间转换模块、二维FDCT模块、存储器模块和JPEG编码模块。其中二维FDCT和存储器模块复用了Xilinx提供的IP核,JPEG编码模块是在前两大模块基础上,根据JPEG编码原理和实现步骤,具体完成输入图像数据的JPEG编码功能。存储器模块根据JPEG编码需要设计了满足特定需要的存储器,各模块关系如图所示,图中路径表示数据流向。

图4.1 JPEG编码IP结构图

4.1.2 存储器模块设计
缓存用于存储压缩过程中产生的中间数据、压缩后的图像数据和压缩所需的常量数据,本设计中复用了XILINX提供的Single Port Block Memory核[12],设计数据存储器,设置界面如图4.2所示。对该IP核存储器的所有操作设定为时钟CLK上升沿。存储器的初始内容,可以在配置过程中指定。

图4.2 Single Port Block Memory核配置界面

在WE引脚有效时,DIN端口上的数据就写入到ADDR端口指定的地址单元。WE失效时,读操作发生,ADDR端口指定的地址单元的内容发送到DOUT端口总线上。
本设计中图像采样比例为4:2:0,所以最小处理单元(Minimum Compress Unit)MCU=16×16,也就是说,在16×16个像素组成的图像块中,有4个8×8的亮度块、1个8×8的Cb块、1个8×8的Cr块。
各IP核设计参数如下:
Buffer_Y.vhd:Read/Write,Width×Depth=12bits×256,其中256=16行×16列,该缓存先存储8bits亮度值Y值,DCT变换后在相同地址存储12bits的DCT变换结果,原来的8bits亮度值被覆盖。
Buffer_C.vhd:Read/Write,Width×Depth=12bits×64,其中64=8行×8列,该组件被实例化为两个,一个存放Cb色差值,一个存放Cr色差值,该缓存中先存储8bits的色差值,DCT变换后在相同地址存储12bits的DCT变换系数,原来的8bits亮度值被覆盖。
Buffer_img.vhd:Read/Write,Width×Depth=8bits×51200,用于存储压缩后的图像数据,该缓存大小的设置与压缩后的图像数据量直接相关,同样分辨率的图像,如果要求压缩后质量更高,则该缓存还需增大,该缓存需要外接MCU时,应根据MCU读写时序要求,修改相应的引脚功能。
只读存储器用于存储JPEG压缩过程中所需的常量值。只读存储器也是复用了XILINX提供的Single Port Block Memory核,其设计参数如下:
Huff_ROM.vhd:Width×Depth=20bits×352,用于存储Huffman编码表。
Q_ROM.vhd:Width×Depth=13bits×384,存储三个量化级别(高、中、低)所需的量化参数的分子值,用于和亮度(色差)值相乘,然后除以16384,得到量化结果。
Q_Table.vhd:Width×Depth=8bits×384,存储量化表,以更新最终JPEG文件的头部。三个压缩级别,每个级别有AC和DC两个表,每个表有64个元素,所以占空间:3×2×64=384。
Buffer_img.vhd、Huff_ROM.vhd、Q_ROM.vhd、Q_Table.vhd需要指定初始内容。
在配置过程中,通过一个COE文本文件,指定该IP核的初始内容,在COE文件中使用两个关键字来确定初始化内容:MEMORY_INITIALIZATION_RADIX和MEMORY_INITIALIZATION_VECTOR,后者是一个一维向量列表,由一系列逗号分隔的元素组成,关键字之间以分号分割。COE文件中,为了提高可读性,可以加空行和空格。向量中元素的进制取决于MEMORY_INITIALIZATION_RADIX,可选的值为2,10和16.向量取值范围必须是2 -1,且不能为负数。
4.1.3 二维FDCT模块设计
Xilinx提供的FDCT核[13]在实现二维FDCT变换时,采用两个步骤来实现:第一步对行进行一维FDCT变换,第二步对行变换结果按列进行FDCT变换。因此,核的重点是实现一维FDCT变换。一维FDCT由一组FIR滤波器组成,每个滤波器接收相同的数据,产生各自的DCT系数作为输出。对8点DCT而言,有8个采样值同时送入8个滤波器,这8个滤波器能够并行工作,写入最后一个采样值时,8个滤波器分别产生一个DCT系数。
二维FDCT由两个一维FDCT模块和2*8*8的ping-pong Memory组成,前一个1D FDCT输出到一个8*8Memory中,经过转置后存放到第二个8*8Memory中,其作为第二个1D FDCT的输入,其结果按列优先顺序,依次从out端口输出。
本设计在考虑精度和FPGA逻辑单元占用数量的基础上,确定各参数如图4.3所示:

图4.3 二维FDCT IP核定制界面

按照如上配置,可在当前工程目录下生成一个2D-FDCT核的硬件描述语言文件,后面用VHDL编写JPEG压缩代码时,需要把该文件拷贝到相应目录下,并在代码中,直接把FDCT当作一个组件使用。
4.1.4 RGB2YCrCb模块设计
从外部获取图像数据后,第一步是进行颜色空间的转换,本设计中,颜色空间的转换[14]和压缩过程并发执行,以提高运行速度。RGB2YCrCb模块接口设计如图4.4所示,模块的输出直接送入亮度和色差缓存,亮度值送入地址范围为[12:0]的缓存,色差值送入地址范围为[10:0]的缓存。RGB2YCrCb的输出是8bits,因为缓存数据为12bits,所以在最高4bits补零构成12bits合法数据送入缓存。

图4.4 RGB2YCrCb模块与缓存的交互图

RGB2YCrCb算法如下:

公式(4.1)

本设计中,为了避免浮点数运算占用大量的时间和FPGA逻辑单元,对该算法公式改为:

公式(4.2)

这样,计算就改为整数乘法和整数除法,因为这里的除数都是2的整数次方,可以通过向右移位的方式,或者是直接取高bits即可。
计算过程主要分三步骤:
1. 初始化变量;
2. 计算各乘积项的值;
3. 计算各乘积项的和,存入数据缓存。
RGB2YCrCb中通过状态机变量Step控制转换过程,状态机如图4.5所示,通过状态机变量的控制,每4个时钟周期完成一个像素点的色彩值的转换。

图4.5 RGB2YCrCb模块状态转换图

4.1.5 JPEG编码模块设计
JPEG编码IP核的功能是根据核提供的控制信号,从核的输入端口依次获取图像每个像素的RGB分量,然后进行JPEG压缩,结果通过IP核引脚的数据端口输出。
1. 模块接口设计
本设计中,被压缩图像的分辨率为352*288,根据JPEG规范[15],提供了三种压缩质量控制,分别对应不同的量化表。图4.6标明了JPEG编码模块外部引脚,表4.1说明各外部引脚功能及取值。

图4.6 JPEG编码模块外部引脚

表4.1 JPEG编码模块外部引脚功能图
引脚 方向 描述 取值
Red[7:0] 输入 像素点的red分量 0—255
Green[7:0] 输入 像素点的Green分量 0—255
Blue[7:0] 输入 像素点的Blue分量 0—255
ImgLines[8:0] 输入 被压缩图像的行数 16—255
ImgColumns[9:0] 输入 被压缩图像的列数 16—1024
Compression[1:0] 输入 压缩质量控制 0:低;1:中;2:高
Mono 输入 输入位图数据 0/1
ProcessRGB 输入 开始RGB到Ycrcb转换 0/1
Compressimg 输入 开始压缩图像 0/1
Reset 输入 模块复位 0/1
Clock 输入 工作时钟 0/1
Addr[15:0] 输出 图像缓存地址 0—51200
Din[7:0] 输出 压缩后的图像数据 0—255
Compressing 输出 正在压缩图像 0/1
ProcessingRGB 输出 正在进行RGB到Ycrcb转换 0/1
we 输出 正在写缓存 0/1
2. 图像子采样设计
本设计中采用的子采样格式为4:2:0,是指在水平和垂直方向上每2个连续的采样点上取2个亮度Y样本、1个红色差Cr样本和1个蓝色差Cb样本,平均每个像素用1.5个样本表示。
RGB2YCrCb模块输出的亮度信号,依次存放在大小为16行×16列的缓存buffer_Y中。RGB2YCrCb模块输出的色差信号依次存放在大小为8行×8列的缓存buffer_C中,写入色差信号时,缓存地址对图像行计数器和列计数器的最低位不敏感,所以相邻的4个色差信号会写到同一个缓存地址。计算平均值时,先判断行计数器和列计数器的最低位,值为00则直接写入缓存,01、10时当前色差值与前面写入该地址的色差值累加,11时先累加当前色差值,然后除以4,得到4个像素点的平均色差,再存入该地址,覆盖原来的色差值。
3. FDCT变换及量化设计
存储在亮度缓存中的值被逐个送入2D-FDCT模块实现二维FDCT变换[16],变换后的结果与存储在Q_ROM中的量化表数据进行量化计算,计算结果存回到亮度缓存相同地址,覆盖原来的亮度值。
FDCT变换时,从亮度缓存中,地址按行优先顺序,依次读取64个亮度值,输入到2D-FDCT模块中,一定延时后,FCDT变换结束,FDCT模块的RDY信号有效,这时,可依次从该模块的数据输出端口读取到变换后的系数,读出的系数按列优先顺序输出,这时应该从量化表缓存中读取相同列和行的量化参数,与之进行除运算,以产生量化系数。
本设计中量化涉及整数的除运算,为了减少运算复杂度,同样对除法操作进行了改进,选取了一个公共分母作为除数,这个分母是2的整数次幂16384=2 ,可以通过移位简单实现除法操作,同时对分子放大,根据量化表的值C,放大16384/C的整数倍。如亮度值为100,量化参数是120,则量化的算法就为:100*136/16384=0.83007,而100/120=0.833333,这里136预先计算好,存储在量化表缓存Q_ROM中,16384是常数,这样通过整数乘法和移位实现的除法代替了复杂的整数除法运算,在该算法中,有效解决了除法的问题。因为采用了这种除法运算方式,存储在量化表缓存中的数据都是标准量化表数值与16384相除的整数值,这些数据在初始化ROM核时就已经保存在其中了,而不是原始的量化表数据。
4. Zigzag扫描和Huffman编码设计
完整FDCT并量化完一个MCU的数据块后,就可以开始对这个数据块进行Zigzag扫描,把量化系数重新排列,以加强对AC系数进行ZRL编码的效果。本设计中通过系数在阵列中的序号与存储器地址之间的散列关系,实现直接按Z字形访问存储器中的量化系数,并按序读出,以达到Z字形排序目的。8*8的block中,每个小方格中存储一个像素点的Y(Cr或Cb)值。Zigzag扫描与地址关系表见附录1。
利用该表中的关系,修改访问地址,达到按Z字形访问缓存的目的,从而实现8*8块的Z字形编排。
Z字形编排后,下一步就是对DC系数进行差分编码和huffman编码。
编码模块设计:
直流系数编码的结果是(SSSS,VVVV),这部分主要对SSSS,也就是VVVV二进制表示的位数进行huffman编码,SSSS的取值范围是0至11,所以亮度和色差的DC差分系数的huffman直接在硬件代码中实现,没有用到ROM。直流系数编码结果暂存在寄存器中,当存储的数据高于8bits时,就输出一个字节。直流系数huffman编码过程如图4.7,编码结果存储在寄存器中。

图4.7 直流系数Huffman编码

交流系数编码部分,要对4bits游程长度和4bits的二进制位数构成的8bits数据进行huffman编码,用到的huffman编码表较长,所以本设计中用Huffman_ROM只读存储器专门存储这两个huffman编码表,并把被编码数据、码表地址和码表内容三者之间建立固定关系,实现快速编码,亮度和色差系数huffman编码表基地址映射关系如表4.2所示。

表4.2 亮度和色差系数与Huffman编码基地址的关系
BaseHuff 用途
0 Huffman亮度编码表
176 Huffman色差编码表

4bits游程长度的取值范围是0至15,4bits交流系数的位数取值范围是1至11,这样交流系数huffman编码ROM的访问地址公式如下:
AddrHuff = BaseHuff + AddrZRL + AddrBits
AddrHuff:编码绝对地址;
BaseHuff:编码基址,对应AC系数的亮度和色差huffman编码表;
AddrZRL:游程长度相关地址;
AddrBits:非零值AC系数的二进制位数确定的地址。
这里关键是确定游程长度相关地址,本设计中游程长度编码与其Huffman_ROM地址关系见附录2。
这样编址的优点是节省地址空间,同时Huffman编码在ROM中也是连续存储。Huffman编码长度设定为20bits,左边最高4bits表示其余16bits中最高有效Huffman编码所在的地方。每次从ROM中获得Huffman编码后,直接根据最高4bits表示的大小,从其余16bits中从右至左,取相应想、大小位数的二进制码即可。交流系数的Huffman编码过程如图4.8所示,编码结果暂存在存储器中。

图4.8 交流系数Huffman编码

5. 组成位数据流
  JPEG编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码,这样的组织的数据通常称为JPEG位数据流(JPEG bitstream)。本设计中,抽样过程中得到4个Y块对应1个Cb块一个Cr块再依次存储,即4个Y块的码串后面紧跟着存放与其对应的一个Cb块的码串和一个Cr块的码串,循环往复,存完所以串。这样的4个Y8*8块和1个Cb块,1个Cr块简称为MCU,是JPEG格式的最小处理和存储单元。
6. Huffman编码状态图

图4.9 Huffman编码状态图

4.1.6 JPEG编码模块仿真结果及分析
本设计在对整个JPEG编码模块进行行为仿真时,直接从存储在硬盘上的一个bitmap文件中获取图像数据,通过仿真文件读取其中每个像素的RGB分量,通过JPEG编码模块引脚输入到模块中,中间还需要根据模块的输出信号,判断当前的压缩状态,结合相关状态信号向模块不断输入像素数据。同时从模块的输出端口获取JPEG编码后的结果,并把结果保存到硬盘上,最终生成一个JPEG图像文件。

图4.10 JPEG编码模块仿真结果图

图4.11 原图像 图4.12 压缩后的图像

本设计中默认被编码的图像为352*288像素,在VirtexII XC2V1000-4@40MHz FPGA上可实现24帧/秒的压缩速率。结果表明,该IP核消耗了较少的FPGA硬件资源,达到了较高的工作频率,在速度和资源利用率方面达到了较优状态,可满足实时JPEG图像编码。一幅分辨率为352×288的图像仿真时间大概为40ms,大小为300kb,仿真结束后会在原图像文件夹中产生一幅JPEG的图像,压缩至15到20K字节,大概为原图像的1/20。
将压缩后的图像与原图像进行比较,会发现倒置过来了,这是因为存储时,原图像是自下而上,而JPEG图像是从上往下。压缩后的图片除了光线较之原图像有些弱之外,肉眼几乎看不出什么差别。
美中不足的是由于采样的限制,原图像的高度和宽度必须为16的倍数。
4.2 GPRS传输静态图像系统的设计与实现
4.2.1 图像传输系统
图像传输子系统把采集压缩子系统输出的JPEG图像数据通过PPP(Point to Point Protocol,点对点)协议和TCP/IP协议发送到指定域名或IP地址的服务器[17]。
中国移动在GPRS网络与Internet网络之间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。图像采集终端拨“*99***1#”登录到GGSN上,获取一个动态分配的IP地址。器件通信协议要符合点对点协议,其中身份验证时用户名、密码都为空。使用PPP协议登录上之后,就可以通过GGSN接上Internet,与Internet上另外一台服务器之间的通信借助TCP/IP协议实现。
这部分设计需要实现如下功能:
1、定义应用层图像数据包格式,因为传送的JPEG图像有标准的文件开始标记(FF D8)和结束标记(FF D9),所以图像数据文件无需定义额外的标记。
2、通过TCP/IP传输数据,在NUT/OS提供的网络协议的基础上,针对TCP SOCKET编程实现数据发送。
3、动态修改配置信息,需要定义不同配置信息标记。
4.2.2 硬件设计
如图4.13所示,GPRS模块经过MAX232电平转换芯片通过RS232串口与SOPC相连。本设计用到的信号有串口发送(TX)、串口接收(RX),硬件握手信号RTS、CTS、DTR。模块与SOPC间的通信协议是AT命令集。

图4.13 GPRS模块硬件连接图

1.供电:外部供电要稳定,若小于3.3v,则GPRS模块无法登陆网络;若大于4.8v,则可能烧坏模块。
2.串口:移动终端通过UART与控制机串口通信,接收AT指令和传输数据。MC35模块[18]是TTL器件,串口不能直接与SOPC相连,采用MAX232驱动串口。GPRS模块与SOPC间是通过串行口进行通信的。除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时不要使用全部的硬件握手信号,而只使用数据载波检测(Data Carrier Detect, DCD)和终端准备(Data Terminal Ready, DTR)信号。DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态。DTR信号用来通知GPRS模块传送工作已经结束。
3.SIM卡接口:在SIM卡座插上注过册的SIM卡。
4.GPRS状态:GPRS 数据传输是MC35 模块的核心功能, 其控制主要包含建立数据帐户(data account)、激活PDP (Packet Data Protocol, 分组数据协议) 环境、TCP 或UDP 连接3个步骤。
4.2.3 软件设计
1. 设计目的
软件设计目的:通过向GPRS模块发送AT指令,控制移动终端的通信过程,使移动台能借助GPRS提供的网关和路由接入Internet,并通过TCP/IP网络协议完成与Internet上监控中心传输图像数据的任务[19]。
基于以上要求,设计了通信软件,即GPRS客户端软件和服务器端软件。
2. GPRS客户端软件
运行于控制机上的客户端软件具有以下功能:
(1) 串口通信,包括AT指令通信和数据文件通信。
(2) 显示传输过程计时,用于测试系统的传输速率。
(3) 中止GPRS模块TCP协议栈通信。系统传输出错时中止协议栈工作。
MC35模块的软件部分对外提供了控制系统操作的AT指令集,通过接收来自UART的AT指令,解释并执行相应操作,实现无线Modem相应功能。
由于编写的程序过长,只列出进行TCP传输用到的主要AT指令:
AT+CGREG=1;//设置GPRS注册状态
AT+CGATT=l;//GPRS网络附着
AT#APNSERV=“CMNET”;//设置GPRS接入点
AT#APNUN=″″;//身份验证用户名设为空
AT#APNPW=″″;//身份验证密码设为空
AT# ConnectionStart;//连接CPRS网登录Internet,返回动态分配的IP地址
AT#TCPSERV=″192.168.0.28″;//设置服务器IP地址,即监控中心的IP地址
AT#TCPPORT=″9600″;//设置服务器与客户端通信的Socket端口
AT#otcp;//打开与远程服务器的TCP连接
TCP连接成功后,GPRS模块进入数据传送状态,这时就可通过串口向GPRS模块发送图像数据,模块通过Socket发送到监控中心,监控中心也能向模块发送回应数据。数据传完后控制机向GPRS模块发送终止字符,移动终端又回到AT指令接收状态。
运行于控制机上的客户端软件由四个线程组成:
(1)主线程main():负责系统初始化,创建其它三个线程,然后进入一个无限循环,在循环中,主要处理TCP/IP连接的建立和关闭。
(2)往服务器发送用户数据线程GprsTransfer():把压缩后的图像数据,组成应用层定义的数据报格式,发送到远程服务器。
(3)服务器数据接收处理线程GprsReceiver():接收服务器的数据,主要是配置命令。
(4)应用层数据报头部定义:为了发送图像数据到服务器,需要对数据报进行分析、解包等。
本系统对于数据在网络上传输,添加一个头结构,如下所示:
Typedef struct {
BYTE dcl{3};//标识
BYTE type; //数据类型,如图像数据、配置数据等
BYTE UserID[12];//终端编号
WORD seq;//数据包序列号
WORD len;//后面的数据长度
}GPRS_TX_DATA_HEAD
GPRS_DCB结构
发送和接收的头结构是一模一样的,定义了两个结构体,组装后的数据报如下表所示:

表4.3 应用层数据报格式
DCL 类型 用户ID 序列号 数据长度 用户数据

3. GPRS服务端软件
服务器从指定端口的TCP SOCKET接收图像数据,按照客户端确定的应用层数据格式从各数据报中提取图像数据,JPEG图像以OxFFD8,OxFFD9结束,根据该特点判断一幅完整图像是否接收完毕。

图4.14 接收保存图像流程图

4.2.4 设计结果及分析

图4.15 服务端界面

图4.16 客户端界面图

本设计实现了客户端把JPEG图片发送到指定的IP服务器。服务器首先启动端口监听,客户端建立TCP连接,将压缩后的JPEG图片发送到指定服务器,服务器可将接收到的图片存入本地磁盘,同时服务器也可以向客户端传输数据。客户端与服务器可随时停止传输和断开连接。并且本设计可显示进度条和文件长度,基本实现了设计目的。
4.3 小结
本章设计了一个基于SOPC和GPRS的无线远程监控系统。重点是设计实现了一个图像压缩和传输终端,图像的压缩在FPGA中通过JPEG编码芯片硬件实现,本章设计的编码芯片分辨率为352×288,仿真耗时约为40毫秒,所以终端能够保证现场图像压缩的实时性。选用中等编码质量,压缩后的图像大概为15KB左右,目前实际应用中的GPRS传输速率平均为35kbps,所以一幅压缩后的图片传输耗时最大不超过5秒。
这种基于GPRS无线公用网络的图像监控,使用和安装方便、成本低、监控不受距离、地域、时间的限制,尤其在3G普及后,无线网络传输速率成倍增长,借助无线公网实现的图像监控系统将有很大的应用前景。本设计的图像传输部分能容易升级到3G,进而实现基于3G无线传输技术的图像监控。
第五章 结论与展望
5.1 总结
本课题研究设计了一种基于IP复用技术的JPEG编码芯片的IP核,通过了行为仿真。基于IP复用的IP核设计技术是当前IP设计的一种重要方式,本设计中是复用了XILINX公司提供的免费二维FDCT和单端口存储器IP核,它们都经过专业的测试,采用了XILINX独有的设计技术,复用这些核能达到速度和逻辑单元占用数量设计较优。JPEG编码芯片设计过程中,二维FDCT部分直接采用实例化的IP核,图像编码过程中的中间数据存储在实例化后的存储器RAM中,部分数据如量化表、Huffman编码表保存在实例化后的只读存储器ROM中。JPEG编码芯片设计的重点是彩色空间的转换、复用上述IP核技术上实现FDCT、量化、zigzag扫描和Huffman编码设计。
在FPGA中实现JPEG图像编码的基础上,本文实现了一个基于GPRS的远程图像监控系统方案。方案的重点是实现了一个图像压缩和传输终端,每个像素点的RGB分量后分别送入与三个颜色分量对应的大小为16×16的缓存中,JPEG编码部分从这三个缓存中读取图像数据以实现压缩。压缩后的图像保存在FPGA中实现的RAM中,传输部分通过GPRS无线网络把图像传输到Internet上的一台服务器,服务器上通过TCP端口接收图像数据,从而实现了一个完整的图像监控系统。
本课题研究设计JPEG编码芯片时采用了目前广为流行的IP核复用设计技术,节约设计成本,加快了IP的开发速度。在设计JPEG编码芯片过程中以16×16的MCU为一个压缩单元,逐步实现整幅图像的编码,这样做使得被压缩图像的大小与占用FPGA中RAM的大小无关。实现的远程图像监控系统方案中,利用成熟的GPRS技术,实现无线环境下的远程图像数据传输,该方案可以很方便的过渡到3G网络下的无线传输。
设计采用的新方法:
 基于IP核复用技术的IP设计技术,增加了新产品的可靠性,加快了新IP开发的 速度,减少了开发成本;
 JPEG编码芯片设计中采用了并发技术,设计了两个独立的过程,并发实现像素点颜色空间的转换和JEPG编码,加快整体编码速度;
 Huffman编码部分采用ROM地址和内容映射技术,实现Huffman编码表的快速查找;
另外,本课题研究设计的基于SOPC的无线远程监控系统基本上完成了阶段性设计目标,由于时间上的原因,本课题还有很多需要完善的工作:
 增加JPEG压缩编码并行性
本设计中只把图像数据的颜色空间转换和JPEG编码作为两个独立的过程并行执行,事实上还可以把JPEG编码部分再分成几个并行过程,以提高编码速度;
 图像终端中数据的存储
压缩后的图像数据只存储在RAM中,一方面受RAM空间限制,另一方面不够保险,如断电后这些数据会丢失,可以在图像终端部分增加非易失性存储设备,实现大量图像数据的长久保存。
5.2 前景展望
利用FPGA实现图像的JPEG编码,比软件和DSP速度更快,独立的JPEG编码IP核,可以单独使用,也可以整合到其它静态或动态图像数据压缩芯片中。基于IP复用技术设计的JPEG编码芯片,保证了性能较优,图像监控系统是基于GPRS无线网络传输图像数据,不受时间地点限制,在3G普及无线传输带宽增加后,该方案有广泛的应用前景。另外本课题研究设计的JPEG编码芯片所复用的IP核完全免费,同时,由于利用廉价的GPRS网络资源传递信息,大大降低了通信费用。因此,在成本上有很大的优势。
基于SOPC技术的无线远程监控系统因为其性能稳定可靠、安装方便、灵活性强、性价比高等特性,适合于家庭室内、企业重点房间、自动生产线、无人值守的供电供水供暖站、水利水文监测站等多种场合的监控。随着无线网络的发展、嵌入式技术的进步,基于SOPC技术的远程无线监控系统将会被更多的用户所了解,一定会有更加广泛的应用。

参考文献

[1] 梁迎春, 曹祥建, 吴海涛.基于FPGA 的可编程片上系统SOPC[J] .肇庆学院学报,2006,27(5):18~22.
[2] 求是科技.VHDL应用开发技术与工程实践[M].北京:人民邮电出版社,2005.7~13.
[3] 潘松,黄继业,曾毓.SOPC技术使用教程[M].北京:清华大学出版社,2005.1~7.
[4] 王诚,薛小刚,钟信潮.FPGA/CPLD设计工具Xilinx ISE使用详解[M] .北京:人民邮电出版社,2005.74~83.
[5] JPEG(ITU-T81 standard) http://www.w3.org/Graphics/JPEG/itu-t81.pdf
[6] 林福宗.多媒体技术基础[M].北京:清华大学出版社,2001.63~81.
[7] G . K . Wallace . The JPEG Still Picture Compression Standard[J] . Commun . ACM ,1991 Vol.34:30~44.
[8] 杨国民.通用无线分组业务(GPRS)综述[J].声学与电子工程,2002.2:17~21.
[9] 季瑞松.基于GPRS无线图像监控系统的研究和应用[D]:[硕士学位论文].杭州:浙江大学,2004.
[10] Siemens Mobile. GPRS Startup User Guide[Z]. http:// www.conigma.com/ gsmmc35.htm,2001
[11] 王祖林,汪文婷. GPRS传输静态图像系统的设计与实现[J]. 电子技术应用,2006,4:37~40.
[12] XILINX. sp_block_mem.pdf[Z]. http://www.xilinx.com/ipcenter.
[13] XILINX. da_2d_fdct.pdf[Z]. http://www.xilinx.com/ipcenter.
[14] 求是科技.CPLD/FPGA应用开发技术与工程实践[M].北京:人民邮电出版社.2005.338~357.
[15] 叶轻舟,林挺钊.基于FPGA的JPEG静态图像压缩实现[J] .福建工程学院学报,2005,3(3):216~220.
[16] Chris Dick Xilinx公司.FPGA在高速数字信号处理系统中的应用[Z].http://www.eetchina.com/ART 8800081904 621496 46c5dc83 no.htm 2001-4.
[17] 曾耸彬. 基于实时操作系统的GPRS无线数据终端设计与实现,2005.
[18] Siemens mobile. WM MC35-Terminal-Datasheet[Z]. http: //www. conigma. com/ gsmmc35. htm,2005.
[19] 傅振,颜文俊. 基于GPRS的嵌入式远程视频监控系统软件设计[J].机电工程,2006,23(11):56~58.

附录1 Z字形扫描与地址关系

表1 Z字形扫描与地址关系

0
1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 45 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63

表2 缓存地址与Z字形扫描位置之间的关系

行位置编号 行地址[2:0] 列位置编号 列地址[1:0]
0,1,5,6,14,15,27,28 000 0,2,3,9,10,20,21,35 000
2,4,7,13,16,26,29,42 001 1,4,8,11,19,22,34,36 001
3,8,12,17,25,30,41,43 010 5,7,12,18,23,33,37,48 010
9,11,18,24,31,40,44,53 011 6,13,17,24,32,38,47,49 011
10,19,23,32,39,45,52,54 100 14,16,25,31,39,46,50,57 100
20,22,33,38,46,51,55,60 101 15,26,30,40,45,51,56,58 101
21,34,37,47,50,56,59,61 110 27,29,41,44,52,55,59,62 110
35,36,48,49,57,58,62,63 111 28,42,43,53,54,60,61,63 111

附录2 Huffman编码表

表1 量化系数分组表
位长(SSSS) DC参数 AC参数 实际保存值(VVVV)
0 0
1 -1,1 -1,1 0,1
2 -3,-2,2,3 -3,-2,2,3 00,01,10,11
3 -7 … -4,4 … 7 -7 … -4,4 … 7 000…011,100…111
4 -15 … -8,8 … 15 -15 … -8,8 … 15 0000…0111,1000…1111
5 -31 … -16,16 … 31 -31 … -16,16 … 31 00000…01100,10000…11111
6 -63 … -32,32 … 63 -63 … -32,32 … 63 000000…111111
7 -127 … -64,64 … 127 -127 … -64,64 … 127 0000000…1111111
8 -255 … -128,128 … 255 -255…-128,128… 255 00000000…11111111
9 -511 … -256,256 … 511 -511…-256,256… 511 000000000…111111111
10 -1023 … -512,512 … 1023 -1023…-512,512… 1023 0000000000…1111111111
11 -2047…-1024,1024…2047 00000000000…11111111111

表2 游程长度与其Huffman编码存储地址的关系

ZRL值 AddrZRL ZRL值 AddrZRL
0 0 8 88
1 11 9 99
2 22 10 110
3 33 11 121
4 44 12 132
5 55 13 143
6 66 14 154
7 77 15 165

附录3 JPEG图像压缩部分代码

附录4 GPRS图像传输部分代码

基于SOPC的MPEG4内核设计

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 18-09-2009

标签:, , , ,

0

目 录
摘 要 iii
ABSTRACT iv
第一章 绪论 1
1.1研究背景 1
1.2 国内外发展状况 2
1.2.1 MPEG-4的发展 2
1.2.2 SOPC的出现及发展 3
1.2.3 IP核的重要性及其发展 5
1.3 研究工具及语言 5
1.4 本文组织结构 7
第二章 MPEG-4核心技术研究 8
2.1 MPEG-4核心 8
2.2 视频对象提取技术 9
2.3 小波变换在图像分割中的应用 10
2.4 VOP主要编码技术 11
2.5 DCT编码技术 13
第三章 系统整体设计 14
3.1 设计方案比较 14
3.2 主要模块设计 15
3.2.1 视频采集模块 15
3.2.2 预处理模块 16
3.2.3 中间处理模块 16
3.2.4 后处理与视频输出模块 20
3.3 设计实现流程 20
3.4 小结 21
第四章 IP核设计及模块实现 23
4.1 IP核及主函数设计 23
4.1.1 IP核整体设计 23
4.1.2 主要IP核设计 24
4.1.3 主函数设计 28
4.2 IP核及系统的综合仿真 29
4.3 硬件协同设计—IP核的实现 35
第五章 总结及展望 40
5.1本文工作总结 40
5.2 问题讨论 40
5.3 改进方案 41
5.4展望 44
致 谢 45
参考文献 46
附录1 量化值表 48
附录2 DC系数编码表 49
附录3 部分源程序 50
附录4 全文图索引 62
附录5 EDK系统模块结构图 63

摘 要

基于MPEG-4标准的视频图像压缩有着极为重要的意义,它是目前国内外研究的热点。本文主要探讨了一种基于SOPC的IP核的设计,用IP核来实现MPEG-4视频的压缩。
MPEG-4的核心是将视频内容分割为若干视频对象VO单元,再对VO进行编码,因此本文首先研究了图像分割技术以及VO平面的形状编码、纹理编码以及运动补偿编码等关键技术,并探讨了主要算法的实现。在此基础上本文提出了整体设计方案,并进行了主要模块的设计:视频采集模块、预处理模块和处理器模块。这些模块的详细设计主要是用IP核来实现的。所采用的工具是Xilinx公司的ISE以及第三方仿真工具ModelSim,编程语言是VHDL硬件描述语言,均比较适合IP核的软硬件协同设计。
本文中,IP核的设计主要包括IP核的逻辑设计、综合仿真以及在硬件SOPC平台上的实现。其中,IP核的逻辑设计采用自上而下的方法完成了IP核模块的整体划分,然后又结合自下而上的方法完成了不同底层IP核模块间的相互衔接,并最终实现了顶层主函数的调用。在IP核的综合仿真中,得出了IP核的仿真波形及压缩处理结果,并进行了分析。最后通过对硬件SOPC平台上的FPGA芯片的配置,完成了IP核的下载,使IP核的设计得以实现。

关键词:MPEG-4,片上可编程系统芯片,内核,FPGA,视频压缩

ABSTRACT

The video compression of MPEG-4 is now the research hot spot both at home and abroad, so it has the extremely vital significance. This paper mainly discusses a method to implement video compression of MPEG-4 based on SOPC by using the IP cores.
The main thought of MPEG-4 is that video content is divided into a series of video object units and video coding is mainly based on these small video object units. So this paper first makes a research about the main technologies and their algorithm of MPEG-4 including image segmentation, shape coding technology, texture coding technology and motion compensation technology of video object plane. This paper also makes an overall design about the MPEG-4 video compression. There are several main modules in this design. They are video gathering module, pretreatment module and processor module. The design for these modules is mainly implemented by using the IP cores. The design and simulation tools in this paper mainly are ISE of Xilinx Company and ModelSim of Model Technology Company which plays the three partners of Xilinx Company tools. And VHDL which is also suitable for software and hardware coordination design is used as the main programming language.
In this paper, the design of IP cores mainly contains three parts. They are IP cores’ logic design, IP cores’ synthesis and simulation and IP cores’ implement on SOPC which is the Hardware platform. The logic design of IP cores uses the top-bottom method to divide the system into different IP core modules so that we can separately carry on the design of them. And then the bottom-top method is used to unit the different modules into a whole. In this part, the main function is also made. In the IP cores’ simulation and implement part, there comes the simulation profile and the process result. Finally, after the disposition for FPGA on the SOPC hardware platform, IP cores are downloading into the FPGA successfully and the implement of the IP cores’ design is completed.

KEY WORDS MPEG-4, System on Programmable Chip, Intellectual Property core, FPGA, video compression

第一章 绪论

本章紧扣设计题目要求,介绍了题目中涉及到的主要内容:首先介绍了视频技术的发展状况,以及其编解码技术和标准的更新进步。在此背景下,介绍了MPEG4标准及其发展状况,为下章研究MPEG4主要算法打下了基础。之后介绍了目前国内外SOPC(片上可编程系统芯片,System on Programmable Chip)和IP(Intellectual Property,知识产权)核的发展状况以及方案设计所用到的工具和语言。最后是本文的组织结构。

1.1研究背景

21世纪是信息技术飞速发展的时代,半导体技术、计算机技术、现代信号处理技术以及通信技术的飞速发展与广泛应用形成了和计算机互联网、广播电视和通信三大领域的相互渗透和融合,由此在多媒体信息方面产生了一系列的新兴技术:多媒体技术、专用集成电路技术和数字视频技术。多媒体信息已成为人类获取信息最主要的载体,其中视频流的应用越来越广泛。
在多媒体应用中,数字视频技术是多媒体应用的核心技术,这是因为视频数据冗余度最多,经压缩处理后的视频质量高低是决定多媒体服务质量的关键因素。目前对视频编码技术的研究已成为信息技术领域的热门话题,也成为全球技术开发和研究的热点,其发展和应用前景也是非常广阔的。
人类获取的信息中70%来自于视觉,因此视频信息在多媒体信息中占有重要地位。视频信息即运动的图像信息,它由一系列连续画面组成,具有准确、直观、具体、生动、高效、应用广泛及信息容量大等优点。视频信息中的每幅画面称为一帧,帧是构成视频信息的最基本单元。
视频编码的根本原因就是模拟信号数字化后信息量剧增,对存储与传输极为不利,因此视频编码压缩是必要的。以压缩/解压后数据与压缩前原始数据是否完全一致作为衡量标准,可将数据压缩划分为无失真压缩(即可逆压缩)和有失真压缩(即不可逆压缩)两类。
信息论中学到的香农理论[1]是以经典集合论为基础,考虑图像信源的统计特性,用概率统计模型来描述信源,采用预测编码、变换编码、矢量量化编码、子带一小波编码、神经网络编码等,其压缩思想是基于数据统计,而未考虑人眼视觉特性对编码图像的影响。由于未考虑信息接受者的主观特性和事件本身的具体含义、重要程度及引起后果,只能去除数据冗余,因而属于低层压缩编码。
20世纪80年代后期,新一代数据压缩技术随之诞生并且不断成熟,其编码思想由基于像素和基于像素块转变为基于内容(content-based)。它突破了香农信息论框架的束缚,充分考虑了人眼视觉特性及信源特性,考虑了信息接受者的主观特性和主观意义,采用基于方向滤波的图像编码法、基于图像轮廓的纹理编码法,通过去除内容冗余来实现数据压缩,可分为基于对象(object-based)和基于语义(semantics-based)[2]两种,属于中层压缩编码。
还有一类高层压缩编码考虑图像传递的景物特征,采用分形编码、基于模型的编码方法。这种方法代表着新一代的视频编码方向,是目前最为活跃的研究领域,也是MPEG4主要的研究方向。

1.2 国内外发展状况

1.2.1 MPEG-4的发展

MPEG(Moving Picture Expert Group,运动图像专家组)是专门从事多媒体视音频压缩标准制定的国际组织。MPEG系列标准已成为国际上影响最大的多媒体技术标准,对数字电视、视听消费电子、多媒体通信等信息产业的发展产生了巨大而深远的影响。
其中MPEG-1和MPEG-2是采用预测编码、变换编码、熵编码及运动补偿等第一代编码技术制定的国际标准。MPEG-4标准,即ISO/IEC 14496,全名是音视频对象的编码(Coding of audio visual Objects),是基于内容的第二代压缩编码国际标准,它蕴涵着视频编码的新一代技术,是目前最为活跃的研究领域。
MPEG-4与MPEG-1及MPEG-2的不同之处在于:MPEG-1, MPEG-2基于帧,不能支持表征图像内容的数据结构,且当码率很低时,会产生严重的方块效应及动作失真;而MPEG-4基于媒体对象,是面向视频对象(VO,Video Object)的压缩编码技术。在编码前首先对视频序列进行分析,从原始图像中分割出各个视频对象,然后再分别对每个视频对象的形状信息、运动信息、纹理信息单独编码,并通过比MPEG2更优的运动预测和运动补偿来去除连续帧之间的时间冗余。下表1.1为MPEG-4标准与MPEG-1、MPEG-2的比较。
MPEG-4的制定初衷是针对视频会议、可视电话等超低比特率编码,但最后制订的MPEG-4则将目标确定为支持多种多媒体应用,它主要侧重于对多媒体信息内容的访问,并可根据不同应用要求现场配置解码器。这意味着需要将基于内容的检索与编码结合起来考虑,在压缩数据中应有描述视频内容的信息,从而使对多媒体信息内容的访问可直接针对压缩数据进行,这就是基于内容的压缩。
MPEG-4充分利用了人眼的视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体视频信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。同时,MPEG-4还充分考虑了现实世界的复杂性和多样性,它具备处理各种音视频对象的能力,此外还针对异构网络的差异而支持对多媒体信息的通用存取。同时MPEG-4也是第一个使用户可在接收端交互操作及访问画面的视频编码标准。

表1.1 MPEG-4标准与MPEG-1、MPEG-2比较
MPEG-1 MPEG-2 MPEG-4
标准确定 1992 1995 1999
最大图像输出 352*288 1920*1152 720*576
默认图像输出 352*288 720*576 720*576
最大音频取样 48KHz 96KHz 96KHz
最大音频声道 2 8 8
最大数据率 3Mbit/s 80 M bit/s 5 to 10 M bit/s
常用数据率 1.38Mbit/s 6.5 M bit/s 0.88 M bit/s
图像质量满意度 一般 非常好 好
编码硬件要求 Low High Very High
解码硬件要求 Very Low Medium High

MPEG-4具有很多优点:它的压缩率可以超过100倍,而仍保有极佳的音质和画质;它可利用最少的数据,获取最佳的图像质量,满足低码率应用的需求;它更适合于交互式AV服务及远程监控。为了满足各种应用的需求,MPEG-4标准的使用范围相当庞大,具有广泛的适应性和可扩展性。
MPEG-4目前已应用于Internet,并开始支持目前标准尚未全面支持的那些应用,例如移动通信和个人通信中的声像业务,以及各种基于无线网络环境的手持式电子产品。今后MPEG-4可能应用于多媒体电脑、掌上电脑、网络电视、远程视频监控、视频会议和可视电话等。
MPEG-4标准实质上是一个广泛适用的多媒体数据压缩编解码框架,它实现了从矩形帧到VOP的转变以及基于像素的传统编码向基于对象和内容的现代编码的转变,它要求对自然或合成图像及视频作更多分析甚至是理解,这正顺应了现代图像压缩编码的发展潮流,从而具有广阔的发展前景。

1.2.2 SOPC的出现及发展

SOPC是System on Programmable Chip的简称,即片上可编程系统芯片,它是SOC(System on Chip,片上系统)和PLD (Programmable Logic Device,可编程逻辑器件)、FPGA(Field Programmable Gate Array,现场可编程门阵列)的结合。
(1) PLD的发展。PLD是随着大规模集成电路技术、深亚微米[3]与超深亚微米工艺技术及计算机技术的日益成熟而出现的生命力强、应用广泛、发展迅猛的新型数字集成电路,它可由用户根据自己要求来构造逻辑功能,器件制造厂家按照一定规格以通用器件大量生产,用户按通用器件从市场上选购,然后通过编程实现专用集成电路的功能。
(2) FPGA芯片是PLD的一种。它是由用户编程来实现所需逻辑功能的数字集成电路,不仅设计灵活,性能、速度具有优势,而且上市周期短、成本低廉。在半导体领域中其应用日益普及,己成为集成电路中最具活力和前途的产业,同时随着设计技术和制造工艺的完善,器件性能、集成度、工作频率等指标不断提升,FPGA己越来越多地成为系统级芯片设计的首选。
(3) SOC的出现。由于半导体工艺技术的发展,IC设计者能够将愈来愈复杂的功能集成到单硅片上。数据表明,0.18微米的半导体技术将使得在一块芯片上布置一亿个晶体管成为可能,因此,一个系统中的微处理器、存储器、输入输出单元甚至模/数变换单元都可以集成在一个芯片之上。SOC正是在集成电路(IC)向集成系统(IS)转变的大方向下产生的。微电子领域的革命中,片上系统是当前发展的重点。
采用这种SOC方法的优点主要在于:消除了芯片之间的信号传输时延,避免了电路板上信号的相互串扰,从而可以大幅度提高整个系统的主频;减小整个电路系统的功耗; 对于较大批量的产品需求,SOC具有更低的成本;采用己有的嵌入“核”设计,具有很好的可重用性,整个设计周期短;具有较强的保密性能,避免了传统硬件的知识产权之争。
(4) SOPC的产生。SOC设计准入的最大门槛是专门技术、IP库和SOC总线架构支持,需要广泛的多功能IP和将客户逻辑与之集成在一起的设计艺术,以满足客户产品开发的需求。由于技术的进一步发展,SOC设计面临着一些诸如如何进行软硬件协同设计、如何缩短电子产片开发周期的难题。因此就产生了SOC与PLD的结合——SOPC片上可编程系统芯片。
SOPC一般具备以下基本特征:至少包含一个嵌入式处理器内核;具有小容量片内高速RAM资源;丰富的IP Core资源可供选择;足够的片上可编程逻辑资源;处理器调试接口和FPGA编程接口;可包含部分可编程模拟电路;单芯片、低功耗、微封装。
因此,SOPC结合了SOC和PLD、FPGA各自的优点:既可以作为SOC量产前的验证原型,又可以作为小批量生产的SOC实现方案。同时,SOPC是一种特殊的嵌入式系统,一方面他是片上系统(SOC),即由单个芯片完成整个系统得主要逻辑功能;另一方面,它是可编程系统,具有灵活的设计方式,可裁减、扩充、升级,并具备软硬件在系统可编程的功能。
SOPC极大地提高了电子系统设计工程师的设计效率,加快了电子系统得开发速度,节约了设计成本,缩短了设计周期,最终将加速新产品的上市和推广速度。因此,SOPC是目前集成设计、嵌入式发展的热点。

1.2.3 IP核的重要性及其发展

IP即知识产权的意思,IP核就是知识产权核或者内核,主要是指芯片上各种各样的微处理器“核”(Core)[4][5][6],是SOPC最重要的组成部件。这种真正意义上的嵌入式“核”能够完成一般微处理器的基本控制与计算功能,在进行系统设计时,只需要将该核嵌入到具体的芯片电路中进行应用。
嵌入式微处理器核根据实现的层次不同可以分为“硬核”(Hard core)、“软核”(Soft core)和“固核”(Firm core)三类。硬核经过了完整逻辑设计和性能优化,并且使用特定的工艺库生成相应的网表和版图,可作为一个“黑匣子”直接嵌入到用户设计的系统芯片之中;软核则是用高层次的硬件描述语言综合而成的原型,可以用网表或寄存器传输级语言(RTL)来描述,但是软核不涉及任何具体的工艺要求。固核设计则根据一般的工艺要求通过预布局(Floor plan)方法进行了结构上的优化。
硬核和软核有各自的适用范围:一般来说,硬核的使用方便快速,专用性强;而软核则比较灵活,适合于现场修改。固核的使用则介于这两者之间。不同层次的微处理器核的设计流程。结合ISE(Integrated Software Environment,集成软件环境)的设计流程,将软核、固核和硬核的产生阶段表示为第三章图3.4(ISE设计框图)。
微处理器“核”的出现,带来了可重用技术的革命,从而大大缩短了产品的设计周期。有鉴于此1996年在美国加州成立了虚拟插座接口联盟(VSIA: Virtual Sockets Interface Alliance)组织[7],目标是通过开发开放式技术标准,使得各类可重用IP模块的混合和匹配成为可能,从而加速系统芯片市场的发展[8]。它将为系统芯片建立一套类似于系统板生产的通用标准。这意味着未来系统芯片集成技术的核心将是基于这些新标准、工具和服务的可重用IP模块的设计。
日前,已有许多科研机构和技术公司设计了适合于不同应用场合的芯片“核”,并将其作为IP出售。但我国基于FPGA器件的IP模块还基本上处于空白,国外的SOPC技术也才刚刚起步,商业化的IP模块种类有限,远远不能满足实际需要,其市场前景非常广阔。

1.3 研究工具及语言

1.3.1 ISE和ModelSim工具
本设计主要采用Xilinx公司的ISE7.1i版进行编程设计,并结合第三方综合仿真工具ModelSim进行仿真。
ISE是Integrated Software Environment的简称,结合了Xilinx领先的硬件和软件设计工具、无与伦比的合作伙伴工具集成、以及丰富的IP资源和先进的FPGA构造,是业界功能最强大的可编程系统和逻辑设计解决方案。ISE支持的可编程逻辑器件,范围从小规模、中等规模到大规模和超大规模,可以用来实现系统级芯片SOC片上系统的设计。另外它还可以和第三方工具进行无缝连接,可以直接调用ModelSim进行仿真,为操作提供了十分方便的环境。
ModelSim是Model Technology公司(Mentor Graphics的子公司)的产品。具有以下优点,非常适合进行FPGA设计仿真:1.仿真功能强大、图像化界面友好、具备即插即用功能;2.完全支持VHDL、Verilog及混合设计仿真能与C语言协同仿真HDL设计;3.采用直接编译技术、支持单步断点设置,能大大提高HDL编译及仿真速度;4.支持RTL(寄存器传输级,Register Transfer Level)功能验证、门级验证及布局布线后功能和时序验证;5.可编写HDL激励文件或执行组模式进行仿真;6.具备性能分析与代码覆盖分析功能,利于发现设计瓶颈及方便调试。
但要注意的是在使用ModelSim之前,必须有许可证(License)。这是一项非常重要的步骤,没有License就不可能打开ModelSim。在安装完ModelSim软件之后,系统会提示你安装License,若是已有License文件,则不用再上网找。否则要上这Xilinx公司网站上一步步申请。本设计中使用的许可证文件是License.dat,是从网上申请的。之后还要在“我的电脑”属性中设置环境变量,变量名称为LM_LICENSE_FILE,并设置存放的路径。这样再双击ModelSim图标就可以正常启动了。

1.3.2 VHDL语言

VHDL(Very High-Speed Integrated Circuit Hardware Description Language)即超高速集成电路(VHSIC)硬件描述语言[9],它作为IEEE标准,已得到众多EDA(Electronic Design Automation,电子设计自动化)公司支持。它的主要优点是:描述能力强,支持系统行为级、寄存器传输级和门级三个层次设计;可读性好、移植性强,其源文件既是程序又是文档,便于复用和交流;支持自顶向下(Top-down)设计和基于库(Library-based)的设计;支持同步、异步及随机电路的设计;与工艺无关,生命周期长。
用VHDL进行的设计可以是描述电路具体组成的结构描述,也可以是描述电路功能的行为描述。它还支持系统级、算法级、寄存器传输级(RTL)、逻辑级、开关级等各个层次的设计描述,并且可以在任何层次上混合使用结构描述和行为描述。但实际应用中,VHDL语言主要应用在行为层和寄存器传输层,这两层可充分发挥出VHDL面向高层的优势。利用VHDL实现数字电路的实质是利用综合工具将高层次描述转化为低层次门级描述,易于软硬件结合。
VHDL主要的概念有包集(Package)、元件(Component)和库。任何一个完整程序都离不开库的引用。VHDL有自带的库集如:ieee库,用户也可以定义自己的库,要使用之前先要进行库声明。元件是一个很形象的词,它将一段程序包括端口、端口模式及数据类型定义到一起,作为一个整体,在利用时可直接用例化语句调用,使用方便。包集、元件和库都是为了实现常用代码共享、代码分割和代码重用,特别是在复杂的设计中,可以使程序具有更清晰的结构。

1.4 本文组织结构

本论文要求实现基于SOPC的MPEG-4内核设计,在结构上,本文主要分为两部分:第一部分主要介绍了本课题的研究背景、SOPC及IP核的发展状况MPEG-4视频编码标准的发展及其关键技术以及本课题所使用的设计工具和编程语言;第二部分主要是方案的整体设计和详细设计,并进行了调试和分析,得出设计方案结果。最后总结了感想及收获。按照组织结构划分,本文由以下章节组成:
第一章是绪论,通过对数字视频及编码技术的研究背景和发展趋势作简要介绍,进而提出本文的研究方向,同时介绍了MPEG-4标准以及SOPC和IP核的基本概念,为后面部分的深入探讨做了准备。最后叙述了本文的组织结构。
第二章主要研究了MPEG-4的核心思想以及它的主要技术。MPEG-4标准内容丰富,其核心是基于视频对象的编码,将基于内容的交互性作为重店。其主要技术有运动编码、形状编码以及纹理编码等,另外还有DCT(Discrete Cosine Transform,离散余弦变换)编码,这些技术也是目前各方面研究的热点。
第三章主要是整体方案的设计。首先通过本设计方案和另外两个方案进行比较,得出本方案的主要设计特点。之后对设计方案进行了整体模块的划分,并进行了设计,然后设定了设计的实现步骤以及流程图。
第四章是方案的详细设计,也是IP核的设计。设计方案的各个模块是用IP核设计实现的,正符合题目的要求。IP核的设计主要是在ISE环境下进行逻辑设计,之后在结合ModelSim进行综合和仿真,得出仿真波形和压缩结果,并进行了对比分析。之后结合本设计的硬件平台——SOPC实验箱,进行了IP核的软件硬件协同设计。另外这部分还提出了设计过程中。
第五章是总结及展望,总结了自己所做的工作及心得,解决了设计过程中出现的问题,并提出了设计的另一种改进方案。最后进行了展望。

第二章 MPEG-4核心技术研究

2.1 MPEG-4核心

MPEG-4是基于内容的编码,这是与第一代视频编码技术的最重要的区别。为支持基于内容的编码,MPEG-4将基于内容的交互性作为其核心思想,通过引入AV对象(即Audio/Visual Objects视听对象)来实现更多交互。因此,为了支持基于内容的编码和交互性特征,MPEG-4提出了AV对象(AVO, Audio Video Object)这个重要概念。
对象是指在一个场景中能够访问和操纵的实体,对象的划分可以根据其独特的纹理、运动、形状、模型和高层语义为依据。AV对象就是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像。原始AV对象具有高效编码、高效存储与传输以及可交互操作的特性,它又可进一步组成复合AV对象。
MPEG-4标准的基本内容就是对AV对象进行高效的组织、存储与传输。AV对象的提出使多媒体通信具有高度的交互性及高效编码的能力,因此AV对象编码就是MPEG4的核心编码技术。由此,总结提出MPEG-4的视频标码的简化原理图如图2.1所示。

视频 MPEG-4
输入 码流输出

图2.1 MPEG-4视频编码简化原理图
由原理图我们可以看到,MPEG-4首先要进行VO分割,之后形成的码流再经过各种编码,有如下两种情况:对于一般的任意形状视频对象,MPEG-4编码后的码流结构如下图2.2所示。对于实时的极低比特率应用,如可视电话、会议电视,MPEG-4则采用VLBV(Very Low Bit-rate Video,极低比特率视频)核进行编码,这类似于H.263
及MPEG-1中直接对矩形框进行的视频编码,而不采用形状编码,其编码后的码流结构如图2.3所示。

视频对象面 MPEG-4比特流

图2.2 MPEG-4通用编码器

视频对象面 MPEG-4比特流

图2.3 MPEG-4基本编码器
下面主要介绍MPEG-4的主要编码技术。

2.2 视频对象提取技术

要实现MPEG-4基于内容的编码,必须对图像进行预处理,其最大难点在于图像分割(Image Segmentation)技术。视频对象分割实质属于图像分割的一种特定情况,图像分割是一种重要的图像分析技术。在对图像研究及应用过程中,人们往往只对图像中的某些部分感兴趣,这些部分称为目标或前景,其它部分称为背景。目标或前景一般对应图像中特定的、具有独特性质的区域,为了辨识和分析图像中的目标,需要将它们从图像中分离提取出来,在此基础上才可能对目标作进一步处理和利用。图像分割是把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。视频对象分割较一般的图像分割相对容易,是在图像分割的基础上发展而来的。
因此MPEG-4标准实现基于内容交互功能的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应的编码方法,以实现高效压缩。在视频编码把图像及视频分割成不同的视频对象VO之后,编码应针对不同VO采用不同的编码策略。即对前景视频对象VO的压缩编码尽可能地保留细节和平滑;对人们不太关心的背景视频对象VO,则采用高压缩率的编码策略,甚至不予传输,而是在解码端用其他背景拼接而成。这种基于对象的视频编码不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间。因此视频对象提取即视频对象分割,是MPEG-4标准的关键技术,是新一代编码技术中的研究热点和难点。
视频对象分割涉及到对视频内容的分析和理解,因此与人工智能、图像理解、
模式识别和神经网络等学科有密切联系。因此,尽管MPEG-4框架己经制定,但至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题,基于语义的视频对象分割则更加困难。
下图2.4是一种典型的视频运动对象分割系统框架。

视频

编码

图2.4 典型的视频运动对象分割系统框架
由图可以看到,视频对象分割的一般步骤是:先对原始的视频/图像数据进行简化以利于分割,这可通过低通滤波、中值滤波、形态滤波来完成。然后对视频/图像数据进行特征提取,可以是颜色、纹理、运动、帧差、位移帧差乃至语义等特征。最后是确定分割决策,根据所提取特征将视频数据归类,分割后应进行相关后处理,以实现滤除噪声及准确提取边界。

2.3 小波变换在图像分割中的应用

基于小波的编码对传输和解码错误更具有鲁棒性[10],有利图像的逐步传输,适合重视可伸缩性和可容忍降级的应用。小波变换DWT(Discrete Wavelet Transform)的基本思想是把任一个函数表示成一组这些小波或基函数的叠加。这些基函数或子小波可由一个原型小波,叫母小波,通过扩大缩小(scaling) 和平移(shifts)得到。小波变换是时间与频率的局域变换,能有效提取信号及进行局部信号分析,它非常适用于图像分割领域,这是因为:(1)小波分解可覆盖整个频域;(2)基于WT的VOP分割因包含VOP形状信息,故无需进行形状判别与编码,从而消除了基于矩形的VOP分割所带来的方块效应及飞蚊噪声;(3)通过选取合适的WT滤波器,可极大地去除提取特征之间的相关性;(4) WT具有变焦(Zooming)特性,在低频段可用高频率分辨率和低时间分辨率(宽分析窗口),在高频段可用低频率分辨率和高时间分辨率(窄分析窗口);(5) 小波变换有快速实现算法(Mallat小波分解算法)。
基于WT的VOP分割方法是目前非常活跃的视频编码研究课题,主要可分为:
(1)利用图像灰度特征进行分割:不同图像具有不同的灰度分布,利用小波变换,将图像变换到小波域,产生各层、各子带图像;
(2)利用图像纹理特征进行分割:纹理是一种局部特征反复出现的结果,体现图像的局域信息。对于一幅数字图像,可进行多方向小波变换而得到多方向子带图像,它们各自蕴涵着不同纹理的局部频谱信息及纹理走向信息。对具有相同频谱特征的图像局部进行聚类分析,并根据纹理频谱及纹理走向确定其纹理缘。

2.4 VOP主要编码技术

MPEG-4视频编码流视频场景分层中,由上到下的层面依次是:视频对象序列(VS, Visual Object Sequence)、视频对象(VO, Visual Object)、视频对象层(VOL, Visual Object Layer)、视频对象平面组(GOV, Group Of Video Object Planes)、视频对象平面(VOP, Visual Object Plane)。其中,VOP处在最低层。
VOP的提出使MPEG-4能够实现基于内容的编码。在某一时刻,VO以VOP的形式出现。MPEG-4视频编码就是针对任意形状VOP的形状、运动、纹理三类信息进行编码,但是编码机制都是基于16*16的像素宏块(Macro block)。这既与现有标准兼容,又便于对编码器进行更好的扩展。VOP被限定在一个矩形窗口内,称之为VOP窗口。窗口的长、宽均为16的整数倍,同时保证VOP窗口中非VOP的宏块数目最少。标准的矩形帧被认为是VOP的特例,在编码过程中其形状编码模块可以被屏蔽。
VOP视频编码系统依据不同的应用场合,对各种形状的VOP输入序列采用固定或可变帧频,其编码算法仍采用基于8*8像素块(Block)的预测变换混合编码。对VOP的编码采用帧内编码与帧间预测编码相结合的方法。帧内编码对DCT变换的直流、交流(DC、AC)系数进行有效预测,帧间预测编码则分为前向预测编码和双向预测编码。对于甚低码率的应用,由于VOP窗口方块效应较明显,因此还需使用去方块滤波器进行相应处理。MPEG-4视频编码建立在基于块的混合编码概念之上,同时引入形状编码模式以支持任意形状的视频对象。
VOP视频编码主要包括形状编码、运动信息编码和纹理编码。其中运动信息编码中的运动估计和运动补偿部分MPEG-2一致,形状编码则是第一次将其纳入完整的视频编码方案中。在MPEG-4视频编码中,对特殊的VO,例如静止纹理(Still Texture)、网格(Mesh)、人脸(Face)以及Sprite对象等采用不同的编码算法,而且还支持可分级编码。VOP编码被誉为视频信号处理技术从数字化进入智能化的初步探索。
VOP编码的详细过程原理图如图2.5 VOP编码原理图所示。

+
VOP
输入

图2.5 VOP编码原理图
下面就结合原理图,介绍VOP视频编码中常用到的形状、运动、纹理三类信息的编码,这也是MPEG-4中比较复杂和抽象的部分。
1.运动信息编码
MPEG-4中采用VOP运动预测和运动补偿技术去除图像信息时间冗余度,基本算法与MPEG-1和H.263相同,但支持任意形状的VOP。VOP编码有三种模式:即帧内编码模式(I-VOP)、帧间预测编码模式(P-VOP)和帧间双向预测编码模式(B-VOP)。这些预测编码模式在MPEG-1中也有提到。
为适应任意形状VOP,MPEG-4引入图像填充(Image Padding)技术和多边形匹配(Polygon Matching)技术。图像填充技术利用VOP内部的像素值来外推VOP外部的像素值,以此获得运动预测的参考值;多边形匹配技术则将VOP的轮廓宏块的活跃部分包含在多边形之内,以此来增加运动估值的有效性。
2.形状编码
在现今的形状编码技巧中,主要可以分成两大类,其一为以位图为基础的形状编码,另一则为以轮廓为基础的形状编码。以轮廓为基础得到的形状编码,图形的可塑性较高,多应用在计算机图形学上,但这类方法终究是记录其轮廓信息,无法建立原始的二进制alpha平面(Binary Alpha Plane,BAP[11])。而以位图为基础的编码方法,主要是针对整个对象的内容去作编码,所以在还原视频目标时能够完全还原其输入的BAP。所以目前MPEG-4标准中采用矩阵形式来表示二值或灰度形状信息,称为位图(Bitmap)。
位图表示法具有较高的编码效率及较低的运算复杂度,但位图法不是VOP形状编码的唯一方法,也可采用梯度图表示。为支持基于对象编码,MPEG-4还采用形状自适应DCT(SA-DCT, Shape-Adaptive Discrete Cosine Transform)技术[12]以支持对任意形状视频对象编码。
3.纹理编码
纹理特性是图像在局部区域内呈现出不规则性、在整体上呈现出规律性的特征,可进一步由粗糙性、方向性及对比度来表示。
纹理信息有两种:一种是内部编码的I-VOP的像素值,另一种是帧间编码的P-VOP和B-VOP的运动估计残差值。

2.5 DCT编码技术

DCT是Discrete Cosine Transform的缩写,即离散余弦变换,这种算法利用余弦函数把图像由像素域转换到频率域后,在变换过程中保持原始信号熵和能量不变,而使DCT域系数相关性减弱,图像的大部分能量集中到直流分量及低频交流系数分量上,之后再对DCT域系数进行量化和编码,从而更有利于去除空间冗余信息。DCT性能最接近K-L变换(Karhunen-Loeve Transform,也称为特征向量变换或霍特林Hotelling变换[13]),且具有良好的去相关性及能量压缩特性,同时具有快速实现算法,因而在图像压缩领域广为使用。二维DCT变换正变换公式(2.1)和逆变换公式(2.2)分别表示如下:
(2.1)

(2.2)
其中:当u,v=0时, ;否则, 。

实际上,MPEG-4标准采用开放、灵活、可扩展的结构形式,它对具体算法不作规定。MPEG-4编码系统是开放的,可随时加入新的编码算法模块,同时可根据不同应用需求现场配置解码器,以支持多种多媒体应用。

第三章 系统整体设计

3.1 设计方案比较

这里列出了常用的三种设计方案,通过分别对比三种方案采用的工具、编程语言以及与硬件的结合情况,显现出本设计方案的特点及优势。
方案1:采用Visual C++工具环境,编程语言:VC++,与硬件结合:无;
其主要的优势在于:采用VC++编程环境属于高端编程环境,编程语言是高级语言VC++,易于实现比较复杂运算,且可以参考的资料和程序比较多,便于学习和掌握。缺点就是不能和硬件相结合,不易看到动态的实时视频压缩效果。
方案2:采用CCS(Code Composer Studio)开发工具,编程语言:汇编、C语言,与硬件结合:DSP+FPGA;
方案2的优点在于使用了高级语言C语言,对于较复杂的运算也容易实现,由于以前有学过C语言,因此上手会比较快;CCS的开发环境也比较容易掌握,由于结合了汇编语言,也便于和硬件结合,采用数字信号处理芯片DSP也比较适合于进行数字处理;另外采用FPGA芯片也大大提高了系统的设计性能。其缺点在于CCS环境下的头文件众多,稍有不慎,容易造成编程错误;另外没有相应的仿真工具,仿真实现起来不够方便。
方案3:采用ISE编程环境,编程语言:VHDL语言,与硬件结合:SOPC;
其主要优势在于:
(1)利用SOPC和IP的优势是可以利用最少的元器件,创建一个易配置、易扩展、易修改并且易于继承使用的集成系统。IP核具有很强的重构性,而且本次开发的IP核,还可以在其它方面加以利用,为以后的开发设计也提供了方便;
(2)本设计方案里提供了硬件平台—SOPC1000X开发平台,内含FPGA芯片及MicroBlaze微处理器等,便于设计的进行;
(3)编程语言主要采用的是VHDL语言,这种语言有着明显的优点【14】【15】:抽象能力强,描述能力强,可用于非常复杂的设计;语言可读性好,方便修改;移植性强,可用于不同的EDA工具;易于管理,显著缩短设计周期。
(4)采用的工具无论是ISE设计工具还是ModelSim仿真工具,均比较适合与软硬件协同设计,可以说是嵌入式设计的最常用的设计方法。在利用ISE进行HDL逻辑设计后,可以方便地进行仿真、综合、布线和实现。
综合以上,从可重用性、组织构成和软硬件协调性方面看,方案3都存在着优势,因此,本设计采用了方案3。只是由于VHDL语言之前没有接触过,本次设计要从头学起,而VHDL不是高级语言,在编程实现较复杂的算法时会比较麻烦,从而也可能会造成处理速度的不够理想。

3.2 主要模块设计

在ISE软件集成环境下,主要是用VHDL语言实现MPEG-4编解码器的功能,完成对外部图像的压缩。本方案的主要模块的设计包括:数据采集模块、数据预处理模块、处理器模块。下图3.1是本设计的主要模块的连接图。结合此模块连接图,本章分别对各模块作了整体设计。

外界视 视频
频输入 输出

图3.1 主要模块连接设计

3.2.1 视频采集模块

视频采集模块主要是完成外部视频图像的采集,并将之形成一系列的数据比特流,可以矩阵的形式存入设定好的缓存中。具体采集过程是:摄像头在驱动程序驱动下对外部实时信号进行采集(这其中涉及到传感器的一些功能)。这样采集的信号不是数字信号,还需要处理经过数据的采样、去噪以及量化转变为数字信号。除了摄像头驱动程序和传感器的作用外,在视频采集这一模块中主要完成的算法就是数据的采样、去噪和量化。
这里的采样是完成模拟信号转变为数字信号的第一步。根据数字信号处理的知识,采样主要是用给定的脉冲信号按一定频率取样。而去噪主要是利用低通率波的原理,将高频噪声信号去掉。量化要设定一个量化幅度值,成为量化阶距,采用除法和四舍五入取整的方法。
视频采集模块所采用的算法主要是基于信号处理的一般知识,运算和实现也比较简单。另外本设计由于硬件条件限制,实验箱上没有摄像头接口,因此在进行编程时,没有将主要精力放在这方面,进行下步编程时可假定一个矩阵进行。
3.2.2 预处理模块

预处理模块主要是进行数字信号的彩色空间转换。我们所见到的世界的色彩是由RGB(Red,Green,Blue,红绿蓝)三原色组成的。由上一模块输入的数字信号也假定为是以RGB矩阵形式存储的,为了便于下面的算法的实现以及数据处理的方便,一般都采用YCrCb(分别代表亮度、红色差和蓝色差)的数据格式,因此预处理模块需要进行彩色空间转换。
如下公式(3.1)和公式(3.2)是RGB和YCrCb空间转化的公式。要注意的是亮度信号要限制在 -128到127 的范围内才有效。

(3.1)

(3.2)

RGB和YCrCb空间转换主要用到矩阵的乘法、除法和加减法,而且还涉及到浮点数的运算,在VHDL编程上对算法的要求较高。用VHDL语言实现先要将浮点数转化为两个二进制的整型数相除,一般来说,RGB和YCrCb要用8位二进制数表示,在VHDL实现单纯的4位的除法就比较难的情况下,计算一组RGB相当于计算3次两个8位二进制数的除法运算,因此更增加了难度。而一个小的最基本的MCU单元包含8*8共64个像素点,即包含64组RGB值,这样处理一个MCU(最小编码单元,也称为宏块)的运算量就已经相当大了。所以进行计算时,最好进行优化算法,这也是本设计有待改进之处。
之后,为了进行下一步处理,预处理模块将对图像进行子采样。按照4:1:1的采样格式,每4个模块采4个亮度信号、1个红色差信号和1个蓝色差信号。采样后的信号存储为8*8的最小编码单元MCU的形式,以便于数据运算。在运算的时候采用数组的形式进行。

3.2.3 中间处理模块

中间处理模块是本设计最主要的部分,是主要算法的集中,如下图3.2所示。中间处理模块主要包括DCT变换、量化、Z字形扫描、变长编码、霍夫曼编码以及逆量化和IDCT变换,另外还有比较抽象的运动预测编码、形状编码、纹理编码等。
由图3.2可以看出,MPEG-4编码实际上已经包含了解码部分(逆量化、IDCT部分),等于是引入了反馈,这样做的目的也是为了使系统稳定。另外,MPEG4中视频对象被分割为若干VOP平面,在一个VOP平面内,图像形状任意,则某一图像可能都在VOP平面内,也可能只有部分在VOP内,而另一部分不在。所以要实现任意形状视频的编码,就需要进行形状编码和纹理编码,通过这两种编码对图像的形状和纹理特点进行整体把握,再利用图像填充技术对图像进行处理。

任意形状视频 视频流

图3.2 MPEG-4视频编码方框图
运动编码的设计:
运动信息编码包括运动估计和运动补偿两个部分。运动估计就是在参考帧的基础上为当前编码帧建立一个模型。参考帧可能是过去的帧(在时间上早于当前帧),也可能是将来的帧(在时间上迟于当前帧)。运动估计算法设计的目的是在保持可接受的运算复杂度的条件下,运动估计模型完成的匹配尽可能准确。在运动估计过程中,运动估计器在一个或多个参考帧中,建立一个和当前帧最优匹配(以匹配标准为准)的模型。
这里采用的运动估计算法是一种非常直观的运动估值算法——块匹配算法BMA(Block Matching Algorithm)。BMA主要是基于当前帧中大小一定的块,在当前帧的前后帧的一定区域内搜索该像素的最佳匹配块,作为它的预测块。一旦找到,便将最佳匹配块与当前块的相对位移(dx,dy),也即通常所说的运动矢量(Motion Vector)送出,并传输到接受端。
运动补偿从当前帧中减去在运动估计中建立的模型,之后就产生了一个残差帧,残差帧经过编码,和其他一些解码所需的信息一起传送到解码器。下图3.3是运动估计编码的详细过程。

建立模型

图3.3 运动估计编码过程
针对运动估计编码过程,对运动估计和运动补偿部分作了如下设计:函数部分均设定4个估计运动向量,分别都包含着一个MCU单元的横纵坐标,另外对函数的运算以及结果输出都要分配一定的存储空间。运动预测和运动补偿函数之间主要通过做减法,然后对差值进行编码和存储,作为下一组的运动补偿值。
因为VOP编码有三种模式:帧内编码模式(I-VOP)、帧间预测编码模式(P-VOP)和帧间双向预测编码模式(B-VOP),所以还要设定一个变量来进行模式的变换。对于帧内编码模式,运动向量为零向量,而帧间预测编码模式和帧间双向预测编码模式则要根据具体情况来定。
另一方面,在预测和补偿方面还存在着误差控制的问题。这种控制主要通过设定一个最大误差容忍值来实现。为适应任意形状VOP,MPEG-4引入图像填充技术和多边形匹配技术,但是这两种技术过于复杂,本设计暂不做。
形状信息编码的设计:
VO的形状信息有二值形状信息和灰度形状信息。二值形状信息用0、1来表VOP的形状,其中0表示非VOP区域,1表示VOP区域,其编码技术采用运动补偿,可以是无损或有损编码;灰度形状信息的VOP透明度用0-255之间的数值来表示,其中0表示完全透明,255表示完全不透明,其编码技术采用基于块的DCT运动补偿方法,属于有损编码。
本设计主要采用第二种模式,可以看出主要也用到运动补偿的方法。因此,这里也要设定一个变量用以实现帧内、帧间和帧间双向模式的控制,同时还要设定运动向量的搜索范围。本设计中搜索范围锁定在8*8的宏块内,采用的搜索方法是对偶搜索法(Conjugate Search)。该法使用MAD(Mean Absolute Difference,平均绝对误差)作为匹配判据。在第一次搜索时,通过计算点(i-1,j)、(i,j)和(i+1,j)处的MAD值来决定i方向上的最小失真值。如果计算结果表明点(i+1,j)处的MAD为最小,就计算点(i+2,j)处的MAD,并从(i,j),(i+1,j)和(i+2,j)的MAD值中找出最小值。按这种方法一直进行下去,直到在i方向上找到最小MAD值及其对应的点。

i-2 i-1 i i+1 i+2 i+3 i+4

j-6
j-5
j-4
j-3
j-2
j-1
j
j+1

图3.4 对数搜索法
如图3.4中,假定在i方向上找到的点为(i+2,j),在i方向上找到最小MAD值和对应的点之后,就沿j方向去找最小MAD值对应的点,方法与i方向的搜索方法相同。最后得到的移动矢量为d(i+2,j-6)。
纹理编码的设计:
VOP的纹理编码基本上也是采用基于8*8像素块的DCT方法,也有3种模式:I-VOP,P-VOP和B-VOP。在I-VOP中,对于完全位于VOP内的像素块,则采用经典的DCT方法,见下图3.5所示。对于完全位于VOP之外的像素块则不进行编码;对于部分在VOP内、部分在VOP外的像素块则首先采用图像填充技术来获取VOP之外的像素值,之后再进行DCT编码。这和形状编码的方式是很相似的。只不过两者编码的对象不同,这在第二章中已经介绍。

VOP 输出
纹理 码流

图3.5 VOP纹理编码过程
综合以上三方面,以及图3.2的原理框图中都说明DCT编码的重要性,它也是所有编码的基础,因此本设计中主要用的是离散余弦变换DCT算法,而不是小波变换DWT。另外,由于基于DCT的压缩方法有简单快速、计算量小并且有专用的硬件来实现,所以DCT的编码已经应用很成熟广泛。再次,因为DCT算法具有对称性,所以也为实现其逆变换IDCT提供了方便。至于DWT小波变换,是在DCT基础上进行的改进,在MPEG-4技术应用中还不够成熟,而所以本课题设计也主要采用基于DCT的编码,如果有可能之后再做进行进一步的改进。DCT编码的详细设计安排在下章进行。

3.2.4 后处理与视频输出模块

和预处理模块相对应,后处理模块也需要进行空间变换,即再从YCrCb空间转换到RGB空间,这样才能使视频输出还原为RGB三原色显示模式。算法的实现和预处理模块中的空间转换是一样的道理,只是公式不同。这样,程序的运算量和处理时间也都相应地增加了。另外由于提供的实验箱没有显示屏输出,所以只能做一个算法,无法演示设计的实时效果。这部分就不多加说明了。

3.3 设计实现流程

软核

硬核 固核

图3.6 ISE设计框图
本设计主要用IP核设计的方法来实现以上各个主要模块,其中IP核的设计主要是用Xilinx公司的集成软件ISE来进行。在ISE中IP核(软核、固核和硬核)的设计流程表示如图3.6所示。
ISE中项目导航器(Project Navigator)是项目管理工具的主体,可以从ISE的项目导航器中新建工程,再在新工程上用New Source命令,选择IP的图标,就可以利用其向导Wizard进行IP核的编程和设置了。在Core Generator环境界面下设计好IP核后点击生成按钮,即可生成IP核,这是设计开始的输入部分。实际上,完整的设计过程分为下列五步:设计输入、设计综合、设计约束、设计实现、设计仿真和器件编程。
设计输入:如上面讲到的主要采用硬件描述语言(HDL)逻辑编程的方式进行。原理图编辑器(ECS, Engineering Schematic Capture)和有限状态机(FSM, Finite State Machine)的方法本设计实现中暂不涉及。
设计综合是将HDL文件转变为硬件电路实现方案,也是本文详细研究的部分,将在下章给出。设计仿真分为功能仿真和时序时延仿真,前者在设计输入之后综合之前进行,只进行功能验证;后者在综合和布局布线之后进行,能够得到目标器件的详细时序时延信息。ISE支持两种仿真工具:HDL Bencher和ModelSim Simulator。本设计重要是利用后者进行IP核的仿真。
设计实现主要是对于FPGA分为编译规划、布局布线(PAR, Place And Route)、程序比特流文件产生。此部分最重要的是进行管脚约束文件UCF的编程,要将内部信号和外部管脚联系起来。
器件编程,即是设计步骤中的iMPACT(the intelligent Multi-Purpose Programming
And Configuration Tool)部分,指在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,又称为芯片配置。Xilinx公司的FPGA的下载可以使用JTAG编程器、PROM文件格式器和硬件调试器三种方式,其中第一种JTAG编程器方式是最经常使用的[16]。ISE强大的iMPACT配置工具,允许用户下载BIT和PROM文件到Xilinx器件中,一并涵盖了JTAG Programmer, Hardware Debugger和XPLA Programmer GUI等多种工具的功能。

3.4 小结

本章主要是对MPEG4的方案作了整体设计。首先是将设计方案和另外两种设计方案作了对比,突出了本方案的主要优势和特点,并对本方案的主要模块设计进行了研究。本设计模块主要由采集模块、预处理模块以及处理器模块构成。采集模块将数据从模拟信号转换成数字信号,并进行初步的量化、去噪和滤波;预处理模块主要完成彩色空间的转换,它的运算量比较大。处理器模块是核心编码模块,主要包括运动预测、形状、纹理编码以及DCT变换、量化、霍夫曼编码以及逆量化和IDCT变换等。之后本章转入利用IP核来实现模块的思路,研究了怎样用ISE设计IP核的方式来实现本方案,完成了整体流程设计。

第四章 IP核设计及模块实现

前面已提到,IP核就是知识产权核或者内核,主要是指芯片上各种各样的微处理器核,是SOPC最重要的组成部件。IP核具有很强的重构性,并且能够完成一般微处理器的基本控制与计算功能。因此使用IP核进行设计可以用最少的元器件,创建一个易配置、易扩展、易修改并且易于继承使用的集成系统,这是IP核的重要优势。IP核的出现,带来了可重用技术的革命,从而大大缩短了产品的设计周期。

4.1 IP核及主函数设计

4.1.1 IP核整体设计

基于IP核的种种优势,本设计主要是采用各种IP内核的设计来完成各个功能模块的。IP内核设计是SOPC设计中非常重要的内容。IP技术包含两个方面的内容:IP核的生成和IP核的重用。IP核的资源复用是指在集成电路设计过程中,通过继承、共享或购买所需的部分或全部知识产权内核进行设计、综合和验证,从而加速芯片设计过程的设计方法,体现了IP核的重构性特征。

Xilinx FPGA芯片

外部
图像

图4.1 本设计在MPEG4整体结构中的位置
上图是完整的MPEG4视频图像解压缩框图。本设计要完成的部分如上图4.1虚线框中所示,可以看到IP核的对本设计实现的重要性。由于采用了IP核来实现设计方案,本设计程序也具有良好的重构性和可移植性,为资源最大程度的合理利用提供了条件。本设计中主要的IP内核模块的整体设计框图如下图4.2。

图4.2 IP核模块整体设计
本设计首先采用了“自顶向下”的设计方法,对系统进行层次化功能划分,如图4.2中所示,系统IP核模块按照箭头方向划分为三个层次;另外,结合“自底向上”的设计方法分别对模块进行了设计,这样也便于重复利用IP核时进行调用。由于形状、纹理和运动补偿编码部分比较复杂,所以又将它们专门用图4.3画出。根据系统的整体设计框图,本设计还对DCT-2D、量化、哈夫曼编码、形状编码、纹理编码以及运动信息编码等主要模块作了衔接和协调,并最终通过综合仿真,验证了IP核的设计效果。

4.1.2 主要IP核设计

下面是本方案几个主要的IP核的详细设计过程,主要有DCT-2D及其逆变换IDCT、量化以及哈夫曼编码。数字图像处理中进行的各种变换一般是采用8*8或16*16的存储格式,在本设计中采用的是8*8的最小编码单元MCU,即处理数据均以8行8列的形式存储为最基本的单元。这样的好处是避免了在15或20像素之后,像素间相关性的下降,从而得到更好的处理效果。同时计算和存储也更为方便。这样的一个8*8的MCU主要采用数组的形式表示。
DCT-2D即二元离散余弦变换,也叫做FDCT-2D,DCT及其逆变换IDCT的算法主要是对公式(2.1)、公式(2.2)的各种运算进行编程。DCT进行的是正交变换,将数字信号的空间表达式转换为频率域,其中主要包括直流系数DC和低频交流系数AC的存储和变换。

图4.3 形状、纹理和运动补偿编码器核结构图
二维DCT的IP核的设计主要有以下定义和算法的实现:首先定义了一个数组来存储64个像素的值。其次,公式(2.1)中的“分式”使用了一个除法器来实现,并单独做成一个函数,以便两个分式都可以调用。第三方面是余弦公式的实现,由于要多次用到,也适合做成一个单元。再有就是累加器以及最复杂的乘法器的实现。前面已经讲过,一个像素的DCT变换需要进行三次DCT运算,一个DCT运算至少需要7次乘法,这样,一个单元至少需要64*3*7即1344次乘法运算。而乘法又涉及到浮点数的运算,每一个数用两个8位二进制整数的相除表示,一个像素点计算完之后还要进行累加直至第64个点的运算结束,所以运算量和存储空间都需要很大。因此还需要一个大量的缓存区来保存这些数据,这样就有了上图中DCT-2D核模块以及IDCT-2D核模块之后的缓存RAM区,这些缓存区是相当重要的。
本IP核模块以及本模块与上下级模块间的调用关系框图如图4.4所示,从这里可以看到本IP核模块设计的主要端口,以及与其它相关模块的关系。IP核的重构性在这里表现为可以作为一个“元件”来调用。

rst rst
clk rdy clk rdy
oe opt in oe
d(7:0) q1(18:0) d(18:0) q1(7:0)
clk rdy clk rdy
oe opt in oe
d(7:0) q1(18:0) d(18:0) q1(7:0)

图4.4 模块调用关系图
要注意的是,IP核定义的端口要和其他模块的端口相互协调,图4.4中的wrapped模块就起到了这个作用,它又相当于是DCT模块IP核之外的一层封装外壳。下面看下具体的端口设计:在DCT-2D模块中,d为8行8列的DCT系数,经串并转换器转换为并行数据输出去q1(18:0),而IDCT中则正好相反,将d(18:0)经并串转换器转换为串行数据输出q1(7:0) 。当8*8的数据块运算结束时,RDY输出高电平有效,表明Q1上有数据。OE则是上升沿触发脉冲。
量化模块是对经过上一模块FDCT变换后的频率系数进行量化,量化的目的是减少非“0”系数的幅度以及增加“0”值系数的数目[17]。本设计中量化主要是根据两个量化表进行量化——色度量化值表和亮度量化值表(见附录1),它们是标准的CCIR 601电视图像量化表。在实际中也可以根据具体情况用自己的量化表来进行量化。之所以要分为两个量化值表,主要是人眼对亮度信号比对色差信号更敏感,并且低频分量的图像比对高频分量的图像更敏感。
根据量化表左上角的量化步距要比右下角的量化步距小的特点,量化后的值采用差分方法,就减少了数据量。设计中的直流系数(DC)编码就主要采用DPCM的方法,对相邻两个DC系数的差值进行编码。
哈夫曼编码核主要实现的是哈夫曼编码算法,哈夫曼算法主要是对DC或AC系数进行编码压缩,从而减少数据量。其中DC系数的编码比较简单,一个MCU中一般只有一个DC系数,而AC系数则相对较多,相应的编码也多一些,但两种系数的哈夫曼编码的原理是类似的。哈夫曼编码的实现如图4.5所示。
首先对一幅图像信号统计,得到n个不同概率的信息符号。然后把信源符号按概率递减顺序排列;把两个最小概率相加作为新符号的概率,之后再进行由大到小的概率重排,重复如此,直到最后总概率为1,即使概率最小的两个节点相加直至形成最后一个节点。
码字 符号 概率 0
00 s1 1/3 0
01 s2 1/4 1 7/12
0 1 树根
11 s3 1/5 1 5/12
100 s4 1/65 0
1 13/60
101 s5 1/20

图4.5 哈夫曼编码过程
这样形成的一棵“树”状结构图,然后由根节点从上到下标“0”(上枝)或“1”(下枝),顺着树枝到每个叶子,就可以形成每个符号的代码,子节点编码为“0”或“1”并不重要,重要的是每个节点的码字长度,一般为2到9个码字。

图4.6 DC系数的亮度编码
在设计中为了节省时间,不是根据一幅图像的实际统计特征进行编码的,而是根据大多数图像的统计特征构建了一个通用的哈夫曼表,这种表和所处理图像的实际统计效果相差不大,因此可以采用。本设计所用的通用哈夫曼表主要有四个分别对应亮度DC、AC系数和色度DC、AC系数。
在附录2中列出了DC亮度系数表,图4.6即是结合DC系数表进行的DC系数编码流程图。图中Cat和LumaBlock以及result都是定义的变量,其中,LumaBlock为向量,作为判断DC系数的亮度和色度编码的变量,若LumaBlock为“1”,则进行DC系数的亮度编码,否则进行DC的色度编码,编码过程类似;Cat为整型变量,用来控制哈夫曼编码码字长度的尺寸分类,从0到11总共有12种情况,用VHDL语言的case-when 语句实现;result也是向量,用来表示量化返回的结果,并存储到缓存区中。

4.1.3 主函数设计

主函数compress.vhd在各IP核模块实现的基础上,对各模块进行调用从而得以实现,同时也将各个模块衔接起来。它的主要设计方法就是先将RGB转化为YCbCr空间格式后的图像信号传给MPEG处理模块,在此模块经过压缩处理后的图像数据信号又被传给设定好的图像缓冲区buffer_img。另外。在编写设计上,主函数的设计是用VHDL语言完成的,各IP核以元件的形式在主函数中被调用。
元件是一种进行代码分割、代码共享和代码重用的方法,可将常用的算法放到一个LIBRARY(库)中,供所有设计者方便地进行调用,从而使代码有了层次化的结构[18],。下面是程序中的一段例子:
component dct2d port (
RST: IN std_logic;
OE: IN std_logic;
RDY: OUT std_logic;
OPT: OUT std_logic;
CLK: IN std_logic;
D: IN std_logic_VECTOR(7 downto 0);
Q1: OUT std_logic_VECTOR(18 downto 0));
end component;
这是一段COMPONENT元件声明,在主函数中调用IP核时,就首先需要对IP核进行声明。元件声明的格式和VHDL语言中ENTITY结构体的声明格式一样,须指出端口名称以及端口的模式:IN,OUT,BUFFE或INOUT,以及端口的数据类型(STD_LOGIC_VECTOR,INTEGER和BOOLEAN等)。由这段程序还可以看出,前面图4.3中所用的端口在此都做了声明。调用元件时,除了在程序中进行声明之外,还要进行元件的例化才能运行。下面是该元件的例化语句。
for all :
dct2d use entity XilinxCoreLib.C_DA_2D_DCT_V2_0(behavioral)
generic map(
c_clks_per_sample => 9,
c_result_width => 19,
c_data_type => 0,
c_data_width => 8,
c_operation => 0,
c_enable_rlocs => 0,
c_has_reset => 0,
… … );
end for;
例化程序分析:设计中将DCT算法IP核从结构上作为一个元件放入库XilinxCoreLib中使用,从而可以直接通过程序中的FOR ALL和GENERAC语句调用。XilinxCoreLib是用户自定义的库,一般地,要在程序开头进行库文件声明,例如语句:
library XilinxCoreLib;
在MAP之后括号里面的语句是元件具体“安装”的语句,它将元件说明中的端口信号(形势信号)与电路中的实际信号关联对应起来。符号=>的意思是“对应于”,=>左边为元件端口信号,=>右边为电路中的实际信号。

4.2 IP核及系统的综合仿真

在IP核主要的逻辑设计完成之后就可以进行保存,并利用CORE GENERATOR生成IP核。当然这是建立在主函数及各个IP核模块设计正确的基础上的。生成IP核之后就可以进行IP核的综合和仿真测试了。
综合:其主要功能是将HDL语言翻译成最基本的与、或、非门,RAM,触发器等基本逻辑单元的连接关系。一般有两种基础类型的综合策略,自顶向下和自底向上。但这都是需要设计者在设计过程的早期就制定好约束条件[19]。在本设计中,因为采用了先进的设计工具ISE,所以综合就变得容易多了。
ISE本身自带了内嵌的综合仿真工具XST(Xilinx Synthesis Technology),一般来说ISE在进行综合时,IP核被认为是黑盒子(Black Box),综合并未对黑盒子做任何编译[20]。所以对IP核的综合有以下步骤:在Project Navigator界面下的Sources in Project窗口中点中要进行综合的IP核,再双击相应的Coregen目录下的Generate Core选项,ISE即可自动进行IP核的检验。若经检验无误,则可以看到Processes for Source框中同一目录下的View HDL Functional Model选项前面会有一个绿色的对勾,如下图4.7显示的是DCT-2D核的综合结果,双击这个文件会出现它相应的代码。

图4.7 IP核的综合
在IP核进行了上步的综合之后,还要进行整个系统的综合,这里主要是将各个IP核和主函数组成的系统进行综合,此步综合的界面如图4.8所示。双击Check Syntax标签,ISE可以自动检验程序的语法错误,正确的话则会在前面打上一个“!”号标志,否则就是个叉号。

图4.8 系统的综合
双击上图4.8中的Synthesize-XST标签,ISE则会自动进行系统的综合,由于本设计IP核模块较多,存储器消耗较大,所以综合时间会比较长。如果可以通过算法的优化来缩短运行时间就更好了,这也是本设计有待改进的地方。

图4.9 器件使用情况报告
图4.9是综合完成后形成的View Synthesis Report的部分内容,说明了综合后所用器件的情况。图中的Selected Device项表明所选用的器件为Virtex-II 200万门,封装为fg957、速度等级为4的FPGA芯片。Number of Slices表明 IP核微处理器消耗的资源比较多,大约消耗了74%的资源,并使用了FPGA自带的一个18位的硬件乘法器MULT18*18。RA块的资源消耗占了23%,IOB代表输入输出功能块,其资源消耗量仅占了12%,说明这两方面所用的资源还比较少。
仿真测试:ISE的仿真主要是结合第三方专业工具ModelSim进行的,这样的仿真会比较系统和全面。ModelSim仿真包括行为级仿真、综合后仿真和以及布线后仿真。不过这些仿真在ISE界面下都有直接的目录,根据界面上的标签按步骤点击,ISE就会自动进行相应的仿真,由此看来ModelSim并不是太复杂。拿行为级仿真举例说明。行为级仿真有时候也叫做功能仿真或前仿真。它的主要目的是验证设计的逻辑功能是否正确。
在进行行为级仿真之前先要别写测试激励文件,测试激励文件的作用是作为设计的激励源。可以利用模版书写,也可以使用HDL Bencher生成,操作步骤都比较容易掌握。如图4.10所示,鼠标点中的阴影部分文件就是测试激励文件(.vhd文件)。点击ISE的Project Navigator界面下的Sources in Project窗口中的测试文件,则在Processes for Source窗口中同可以看到ModelSim Simulator目录。

图4.10 测试文件仿真界面
因为ISE本身自带ModelSim仿真工具的接口,双击ModelSim Simulator目录下面的Simulator Behavioral Model标签,则可以打开ModelSim仿真工具进行仿真。如果程序运行无误,则可以出现正常的仿真波形,否则,就打不开波形文件,ModelSim也会报错。
设计中分别对各IP核模块编写相应的测试文件,并进行综合仿真,就可以得到各模块的仿真测试波形。下图4.11是预处理模块中的RGB彩色空间变换部分的仿真波形时序图。

图4.11 RGB彩色空间变换时序图
其中信号和变化解释如下:
clk:系统时钟信号,本设计中采用的系统时钟频率为40MHz。
reset信号:从图中可以看到,在复位脉冲信号为1时,所有信号处于0状态,如图中粉红色纵线所标示的,当reset信号显示1时,processingrgb和we信号都显示为0。
processingrgb信号:表示经处理的图像的RGB彩色空间变换情况。当reset信号有1变为0之后,processingrgb信号按照一定的周期随着时钟信号clk的上升沿进行触发。图中processingrgb信号波形周期性的变化,说明程序仿真处于正常状态。而且processingrgb信号高电平持续的周期大致为3个时钟脉冲周期,正好符合rgb三种颜色的空间转换周期。
addr信号:说明程序存储的地址是从二进制的00000000位置开始的。之后addr的循环周期和一个时钟脉冲的周期相等,也说明存储器随时钟脉冲不断存入数据。
we信号:表明在输出线上信号有效(高电平有效)。和图4.4中的RDY信号有相同的标示作用。从图上还可以看出,we信号比processingrgb信号在时间上有一定的延迟,说明rgb图像信号经处理后需要一定的时间才传输到输出线上。
同样,在各IP核和主函数成功实现的基础上,为系统主函数编写一个系统的测试文件compressor_tb.vhd,然后ISE自动就会调用ModelSim进行仿真。在测试文件编写正确的基础上,经调试后本设计的仿真波形界面如图4.12所示,其波形及信号分析如下:
clk:系统时钟信号,时钟周期为25ns。
reset信号:当reset信号为高电平时,各信号复位,当它由1变为0时,触发各信号,信号显示为有效的高电平。如图中黄色标线所标示的,当reset信号为0时,red信号、green信号和blue信号分别都为8个“1”,表示这三个信号此时都是有效的。

图4.12 仿真波形界面
compressingimage:表示在压缩过程的完成,所以在一次图像压缩过程中只显示一个高电平信号。
R、G、B信号的波形分别如图中red、green和blue标示的,分别用8位二进制数表示,从高位7到低位0,均在reset为零、clk为上升沿时触发。三种信号的周期均为5个时钟脉冲,在处理进行时信号还会出现两个连着的处理周期,这是跟处理的图形以及处理器的情况相关的,可能因为表明在处理一组数据的某一阶段,相应信号的数据量比较大,也可能是某一阶段处理器处理速度较快,带有些偶然因素。
imagelines信号:代表程序所处理图像的行,图中显示的数是8个1,验证了最小编码单元MCU是以8行8列为单位的,同时,8个“1”也表明图像数据中的8行都已处理完毕。
imagecolumns信号:代表处理图像的每一行中的各列,同样它最后显示的也是8个 “1”,表明图像的8列数据已经处理完毕。
mono信号:当有灰度图象输入时,呈现高电平有效状态,因为本设计中采用的图片时彩色图片,所以可以从图中看到,mono信号一直处于低电平。
compression信号:表示量化的等级,在量化时,量化步距(阶距)的大小决定着量化水平的高低,同时也影响了量化后图片压缩的倍数、图像压缩的失真度大小以及图像压缩的最后效果。本设计中,为了得到清晰的图像效果,采用高质量的量化,图中“10”代表高质量量化(同理,00代表低质量量化,01代表中等质量量化)。同时因为取小的量化阶距,舍弃的象素点少,数据量大,所以最后的压缩倍数也变小了,这在下面压缩图像结构中也有显现。
din信号也是输出信号,由8位二进制数表示。图像数据经压缩处理后,就传输到存储器(缓存器)中进行保存,这样在压缩模块和缓存之间就有一个接口信号,din信号代表的就是这一系列的接口。
addr信号是说明存储的地址是从16位二进制数表示的零位置开始的。之后addr的循环周期和一个时钟脉冲的周期相等,说明存储器随时钟脉冲不断存入数据,存储器的地址也以增加1的速度不断增加,为输出信号。
compressing信号:输出信号,表示图像接受压缩处理的情况,从图中也可以看出,compressing信号在reset信号由1变为0触发之后,一直保持着高电平有效状态。
为了显示的数据图像压缩的效果,本设计用了一幅静止图片的压缩进行验证,如图4.13所示。
图中,4.13 a是原始图片,192K的bmp格式图片,图4.13 b是经ISE调用ModelSim进行仿真压缩处理后的图片,为jpg格式,只有16KB,但在分辨率和显示清晰度上两者却差不多。这充分说明了压缩的效果还是很好的,没有出现方块效应和模糊,这是因为在图片进行量化时,采用了高质量的量化方法(上面波形分析中compression信号为“10” ),失真度变小了,但这也是以图像的压缩率的一定量的降低为代价的。

a 原始图片 b 压缩图片
图4.13 压缩图片示例
之所以出来的图片是反向的,是因为采用了先进先出的原则以节省存储器的存储空间,且仿真图片的扫描和存储则是由上到下的,而原始的bmp图片在量化后进行的Z字形扫描以及存储是由下向上对DCT系数进行扫描的。如表4.1所示:对8行8列的最小编码单元MCU,从右下角00开始扫描,沿序号00-01-02……直到第63个点。
表4.1 Z形扫描
0 1 2 3 4 5 6 7
0 63 62 58 57 49 48 36 35
1 61 59 56 50 47 37 34 21
2 60 55 51 46 38 33 22 20
3 54 52 45 39 32 23 19 10
4 53 44 40 31 24 18 11 09
5 43 41 30 25 17 12 08 03
6 42 29 26 16 13 07 04 02
7 28 27 15 14 06 05 01 00

4.3 硬件协同设计—IP核的实现

本设计的硬件设计平台是SOPC1000X片上系统开发实验箱,其结构布局图如下图4.14所示。
正如我们所知道的,SOPC首先是基于FPGA的。从上面设计箱布局图中也可以看到,本设计所采用的SOPC设计箱,其主要部件芯片也就是FPGA芯片。FPGA通常包含三类可编程资源:可编程逻辑功能块、可编程I/O块和可编程互联。

图4.14 SOPC1000X片上系统开发实验箱布局图
FPGA设计一般采用自顶向下、由粗到细、逐步求精的方法。设计最顶层是指系统的整体要求,最下层是指具体的逻辑电路实现。自顶向下是将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大则进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子模块关系合理,便于设计实现为止。
本设计中在进行了上一节所说的综合仿真之后,还要进行管脚约束——即编写UCF文件。它将软件程序端口和实验箱上的具体管脚联系起来,同时还可以在综合时优化所生成的门级逻辑连接,因此UCF文件是很重要的。
UCF文件的语法一般为:
{NET | INST | PIN} “full_name” constraint;
其中NET是保留字,例如:
NET sys_clk_pin LOC=P76;
这里,sys_clk_pin是内部信号,P76时外部管脚,它们通过NET和LOC语句连接起来了。本设计中由于SOPC设计箱本身带有设计指导书,上面列出了芯片的管脚名称及型号,这也为设计提供了方便(可参见SOPC1000X片上系统开发平台设计指导书中第18-42页),下图4.15就是进行管脚约束的界面图。

图4.15 管脚约束布局的界面

图4.16 实现(Implement)的操作步骤

设计的实现是将逻辑设计的网表信息翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。图4.16是实现(Implement)的操作步骤图。
由于Xilinx公司的ISE软件的高效性,在编写了上步的管脚约束文件UCF文件的基础上,双击上图中的Implement Design图标,即可自动完成运行程序的翻译(Translate)、映射(Map)和布局布线(Place & Route)。如下图4.17是进行了实现步骤之后的报告:

图4.17 实现步骤的完成
图4.17显示了CPU(Central Processing Unit,中央处理器)完成实现步骤的布局布线所用的时间为3分53秒,实时所用的总时间为4分39秒,最高运行时刻所用的内存为245MB。该图也显示了布局布线过程顺利完成,没有错误。最后布局布线的结果存储在NCD文件中。
之后要在FPGA上实现程序,就还需要对FPGA进行配置。设计中配置是用iMPACT进行的,如下图4.18所示:

图4.18 FPGA的配置
点击Generate Programming File下的Configure Device (iMPACT)标签,则ISE会自动出现用iMPACT进行FPGA配置的界面如下图4.19所示。图中左边的芯片显示的是ISE自动加载的芯片,右边则是本设计的主函数以及IP核下载到的芯片,从图4.19种可以看到,在完成了布局布线步骤之后,系统生成了位文件compressor.bit,通过iMPACT对FPGA芯片的配置,此位文件成功下载到了芯片上,所选用的器件xc2V2000已成功加载,文件在FPGA芯片上的编写成功生成。

图4.19 下载成功界面
至此本设计已成功完成了IP核的逻辑设计,IP核的综合仿真以及IP核的实现和配置下载。
IP核的逻辑设计主要有DCT核、量化以及huffman核的设计,同时进行了主函数的设计并将各个IP核进行了衔接形成一个系统。
IP核的综合仿真是结合ISE的第三方专业仿真软件ModelSim进行的,首先编写了测试文件,利用它作为测试激励源从而调用ModelSim仿真得到了仿真波形和压缩处理结果并对其进行了分析。
结合SOPC-1000X系统开发平台,IP核的实现和配置下载是首先完成了IP核的实现步骤,然后通过对FPGA芯片的配置实现了位文件在芯片上的成功下载,从而使IP核的设计得到验证。但是由于开发平台自身的资源限制,本设计的结果还不够直观。如果开发平台可以配置上VGA显示屏,相信会有更好更直观的结果显示,这在第五章中也有所讨论,也是本设计有待优化的地方。

第五章 总结及展望

5.1本文工作总结

本文主要介绍了基于MPEG4标准的视频图像的实现方法,其中主要是利用现在流行的片上可编程系统芯片SOPC平台来实现的。由于本文要求使用IP核的方法来实现,所以本文主要围绕三个方面来讲述:(1)MPEG4 标准、MPEG4 的编解码原理、MPEG4的核心思想以及主要技术;(2)IP核的设计和应用;(3)SOPC设计平台。
随着视频压缩技术的发展以及人们需求的提高,新一代数据压缩技术不断成熟。其编码思想由基于像素和基于像素块转变为基于内容。MPEG4正是现在流行的基于内容的国际标准,因此对MPEG4的研究具有重要意义。
MPEG4提出了AV对象的重要概念,对象是指在一个场景中能够访问和操纵的实体,对象的划分可以根据其独特的纹理、运动、形状、模型和高层语义为依据,AV对象就是听觉、视觉、或者视听内容的表示单。在视频编码方面,视频对象VO也就是MPEG4编码的核心概念。MPEG4正是将视频内容分隔为一个个VO单元,在此基础上进行编码。这种根据视觉敏感性分割图像以及将场景中物体与背景分割出来进行分层描述的图像分隔技术,也正是实现编码的难点。小波变换在图像分隔中有着重要应用,可以用来捕捉图像的纹理。视频对象提取技术、VOP编码是视频编码的主要技术。
IP核的设计是本设计研究的重点。本文对IP核的生成、综合、仿真测试以及调用进行了重点研究。在本设计中,主要采用的是塞灵思公司的集成软件ISE来进行IP核的设计的,并结合第三方仿真工具ModelSim进行仿真测试。IP核可以利用ISE中自带的IP核,也可以利用Core Generator生成用户自定义的IP核。本文中主要进行了三个IP核的设计:DCT-2D、量化以及哈夫曼编码核,并设计了主函数来完成各IP核的衔接,最终完成了主函数及各IP核的功能。对生成的IP核还进行了综合和仿真测试,并得出综合仿真波形且进行了分析,另外本设计还得出了图像处理的结果并进行了对比分析。
SOPC方面首先SOPC了解了可编程逻辑器件和SOPC概念、SOPC的特点和优势,然后主要研究了以及SOPC的设计方法。这里也突出了IP核在SOPC设计中的重要性。接着结合本设计主要的设计平台SOPC-1000X系统开发实验箱,进行了IP核的下载验证和实现。

5.2 问题讨论

本课题设计过程中主要遇到了以下问题。
1. 由于以前没有接触过VHDL语言以及ISE环境,所以需要一切从头学起。VHDL语言是硬件描述语言,语法上并不复杂,但是另一方面在进行运算时,就不如高级语言像C语言那样可以方便地进行复杂的矩阵乘除运算。在经过多方面参考和学习之后,终于找到了解决方法。通过这样的实践,解决实际中遇到的问题,是我也认识到:要学会一门语言,光看书是不行的,还要多动手,多进行编程设计和调试,才能增强实际操作能力增加经验。
2. ISE自带了调用第三方仿真工具ModelSim的接口,但是这并不意味着在编好了测试文件之后就可以进行波形的仿真。若测试文件不对,在双击进行行为及仿真图标时,就不可能打开ModelSim显示波形。还好ModelSim有报错提示,这样经过上网查资料和向老师同学请教,经过多次修改调试,终于解决了不出波形的问题。
3. IP核应用问题。在生成IP核之后进行调用时,需要将IP核加入到工程中。在工程中新建Coregen IP类型资源,在新建资源文件窗口选中Add To Project选项,直接将资源加入到工程中去。这种方法在使用ISE设计流程时非常方便。但是在实际使用时,还是需要重新生成IP核即Regenerate Core。因为IP核设计时存放文件的原始路径,可能和现在使用时文件的路径不吻合。本设计开始没有注意到这个问题,所以应用IP核时总是综合不成功。最后双击已生成的IP核,修改了相应的路径参数后,终于调用成功了。看来做什么事情都要细心,一点小细节有时候可能就是影响问题的关键。
4. 由于本设计硬件条件的限制,没有摄像头和显示屏,所以无法在设计箱上进行演示达到直观的效果,这也是本设计的遗憾。
5. 本设计主要的研究对象是IP核。在设计过程中我也发现一些问题。IP核属于智能产品,很多IP核产品现在都具有专用性,即有产权保护等问题,虽说这样可以保护个人产权,可以在一定程度上维持经济效益,但是另一方面IP核是为了更便于开发设计,其主要的优势就像我们前面提到的,增强可重用性,从而加快产品开发。从这个角度出发,过度的IP核知识产权保护就会导致IP核的可选择性和可重复利用性减少,降低通用性。因此我们应该提倡IP核的专用性和通用性的相互协调,正确使用IP核,从而使IP核发挥出它最大的优势。

5.3 改进方案

MPEG4是目前正在发展中的标准,也是各方面研究的重点。可以说MPEG4基于内容的编码方式,使非常适合于交互性应用的,在视频存储、点播、网络传输、视频会议以及其他方面,都有着广阔的前景。同样,利用百万门级的FPGA芯片、功能复杂的IP核进行SOPC设计的开发,也是现在正在发展中的热点。因此本设计研究在具有很大实用意义的同时,也有着很大的压力。研究MPEG4的IP核并不是一个简单的问题,同时由于时间仓促和本人水平不够,本设计难免做得不尽完善,还需要在各个方面进行改进。下面将工作过程中发现的可以改进的地方进行下说明。
由于刚接触嵌入式方面软硬件结合的设计,VHDL从头开始学,总是在算法上不够熟练,因此在进行一些运算时,容易存在处理速度慢的问题。在进行ISE测试文件的仿真时,速度明显就比较慢。今后如果可以,应该进行算法方面的优化。从深入学习VHDL语言,研究算法计算法优化着手,不断进行改进,从而提高处理速度。
利用百万门级的FPGA芯片、功能复杂的IP核和可重构的嵌入式处理器软核是进行SOPC设计的几种可行的、重要的方法,并可将EDA、计算机设计、嵌入式系统、工业自动控制系统、DSP及数字通信系统等技术融为一体。本设计主要采用的工具是ISE和ModelSim,在SOPC平台上采用设计IP核的方法实现MPEG4的压缩编码。实际上,采用可重构的嵌入式处理器软核的方法也是一种重要的应用很广的方法。本设计过程中也进行了这方面的学习和尝试。
实际上经过一段时间的学习和实践我认为这也是一种很好的设计方式,但是由于时间有限,而这方面的学习有比较繁多,所以这方面的设计学习制进行了一部分。如果可能的话,我想今后结合这方面的知识,将课题作下改进。因此下面的方案是采用可重构的嵌入式处理器软核的设计方法。
改进方案:
对于嵌入式微处理器软核的设计来说,该系统的创建是基于Xilinx公司提供的嵌入式开发工具包EDK (Embedded Development Kit)来实现的[21]。EDK主要的处理器有两种:MicroBlaze软核微处理器和PowerPC硬核微处理器,均是EDK本身自带的。 在此方案中,主要进行的是MicroBlaze微处理器软核的设计。
在进行设计时,首先要新建工程。ISE的主要运行环境是Project Navigator,而EDK的主要运行环境就是XPS(Xilinx Platform Studio),另外还有SDK和Xilinx Cygwin Shell。打开EDK自带的XPS运行环境,可以使用BSB创建新工程的向导(Create New Project Using Base System Builder Wizard)对话框,选择文件存放目录,选择目标板:Xilinx Spartan-3 Starter Board Rev E,器件类型及包集为spartan3,XC3S200FT256-4。然后定时钟频率为50MHz,串口设为RS232,则软件设置按照默认即可,暂不添加其他外设。这一系列设置完成之后,就可以进入XPS的运行环境。其界面如下图5.1所示。
在这之后,可以进行的步骤有:利用Project→Add/Edit Cores选项添加和编辑外设;通过GPIO接口访问外围IP的应用程序,比如访问SOPC设计箱上的七段数码管,就可以通过Tools→Create/Import Peripheral向导来增加一个定制IP,当然这个定制的IP还是需要用户自己用VHDL语言来设计的,这也是XPS灵活的地方。另外EDK还可以和ISE相结合,利用ISE来进行硬件设计,可以用Tools→Export to ProjNav命令将程序导入ISE中,在ISE中进行综合仿真之后,还可以用Tools→Import from ProjNav选项将生成的文件重新导入XPS环境中。然后就可以生成网表、库和位文件。最后的步骤就是将生成的为文件用Tools→Download命令下载到设计箱上去。如果运行正确则不会报错,否则,还要进行修改。

图5.1 XPS运行界面
XPS中比较重要的文件类型有:.MHS和.MSS文件。MHS是Microprocessor Hardware Specification的缩写,MHS文件定义了嵌入式处理器系统的硬件配置信息,如总线结构、外围设备、处理器、连接方式和地址空间等。它实际上就是对嵌入式系统的各种连接和模块以文本的方式进行描述。可以根据个人喜好在“System Assembly View”中对模块参数进行设置。MSS是Microprocessor software Specification的缩写,MSS文件定义了嵌入式处理器系统得软件配置信息,标准输入输出设备、操作系统类型以及各模块的驱动等,通常情况下,MSS文件有EDK工具在加入IP核时自动修改就可以了,不需要特殊处理。另外还有PBD文件,它是硬件系统的图像化模块显示,附录5中列出了进行设计时生成的系统模块的结构图。
使用EDK和微处理器核的方法进行设计的好处在于:EDK自带了MicroBlaze软核和PowerPC硬核微处理器及大量免费IP,有利于构建简易系统。针对MicroBlaze及PowerPC提供的C语言编译器,可使系统的功能实现更加简易。对基于MicroBlaze的系统,MicroBlaze通过OPB总线与外设IP及外部存储器控制接口相连接,通过LMB(Local Memory Bus)总线与FPGA片上块存储器BRAM(Block RAM)相连接,还可以通过EMC(External Memory control)等存储器控制IP扩展片外RAM或ROM。
使用EDK的微处理器核进行设计的方法由于比较复杂,因此在这段时间内我还没有能够掌握的熟练,所以在进行设计以及调试时,难免出现错误。因此在最后进行Download时,没能成功下载。时间急促,经过多次上网查资料和请教学长之后,问题仍未得到解决。所以我又尝试的新方案就此搁浅,而将多余的时间和精力放诸本文主要描述的用ISE进行的设计方案。
尽管如此,如果时间和条件允许,我仍想能够用这种方案继续实践一下。
总的来说,无论用哪种方案,可以预见的是,学习一种语言,掌握一种工具都不是一朝一夕能够完成的,它需要持久不懈地努力。

5.4展望

MPEG-4是基于内容的编码,它在实现高压缩比同时仍能保证高质量的图像画面,因此最适于交互视频的存储、点播及网络传输。而在现有的视频业务应用方面,主要以政府部门会议为主,在远程教育、远程医疗以及商用方面的应用很少,而国外90%的企业都在使用视讯业务,已是“信息高速公路”的主体通信业务,因此市场潜力巨大。在视讯业务中使用的视频压缩技术,其发展和应用前景也是非常广阔的。
同时,基于SOPC的视频解码技术有着无与伦比的优势:消除了芯片之间的信号传输时延,避免了电路板上信号的相互串扰,从而可以大幅度提高整个系统的主频;减小整个电路系统的功耗; 对于较大批量的产品需求,SOPC具有更低的成本; 采用己有的嵌入“核”设计,具有很好的可重用性,整个设计周期短;具有较强的保密性能,避免了传统硬件的知识产权之争。IP技术是实现SOPC的基础,IP技术是一项高新技术,是FPGA设计发展的方向,IP核的出现大大加快了SOPC的开发进程。在我国IP核设计刚刚起步的背景下,研究IP技术对我们来说既是挑战也是机遇。
总之,展望视频编码技术的未来,随着人们对视觉媒体的要求越来越高,对MPEG4的研究将会越来越深入,技术将越来越成熟,而建立在IP核设计应用基础上的SOPC开发将具有越来越广阔的前景!

参考文献
[1] 周荫清.信息理论基础[M].北京:北京航空航天大学出版社,2001.97.
[2] 戴善荣.数据压缩[M].西安:西安电子可惜大学出版社,2005.214.
[3] 唐杉等.数字IC设计—方法、技巧与实践[M].北京:机械工业出版社,2006.5-6.
[4] B.Tuck, Core-based Methodology Maturing in Time forMainstream[J].
Computer Design, Mar. 1997: 47-52.
[5] J.Turley, CPU and DSP Cores vie for ASIC Designers’ Attention [J]. Computer Design, Jan. 1997:75-86.
[6] M. Hunt and J. A. Rawson, Blocking in a System on a Chip [J].IEEE Spectrum, Nov. 1996: 35-41.
[7] 中国电子技术标准化研究所王宝友.VISA及其IP核标准介绍[EB/OL].

http://bbs.eccn.com/pdf/20067684125.doc.2006-07-06/2007-05-24.

[9] 陈明义等.数字电子技术基础[M]. 长沙:中南大学出版社,2004.287.
[8] B.Tuck,Integrating IP Blocks to Create a System-on-a-chip[J].
Computer Design, Nov. 1997:49-61.
[10] 中国科普博览. 鲁棒性—健康的系统[EB/OL].

http://www.kepu.com.cn/gb/technology/cybernetics/abc/abc111.htm.

2002-1-10/2007-5-24.
[11] 刘凌志.MPEG-4形状编码的系统设计及实现[R].上海:上海交通大学现代通信研究所,2004.
[12] 陈传波.数字图像处理[M].北京:机械工业出版社,2004.139-143.
[13] 木子小屋.K-L变换[EB/OL].

http://bingjiling.bokee.com/5155687.html.2006-06-02/2007-05-24.

[14] 白跃彬.硬件描述语言VHDL.微机发展[J].1996,第六期:6-7.
[15] 周采宝.VHDL语言及其应用.计算机工程[J],1998,第六期:51-510.
[16] 刘达.MPEG-4视频编码关键技术及FPGA实现的研究[D]:[硕士学位论文]. 南京:南京邮电学院,2000.
[17] 林福宗.多媒体技术基础[M].北京:清华大学出版社,2001.46-47 78-79.
[18] Volnei A.Pedroni,VHDL数字电路设计教程[M].北京:电子工业出版社,2005.195-196.
[19] Michael Keating.片上系统—可重用设计方法学(第三版)[M].北京:电子工业出版社,2004.111-112.
[20] EDA先锋工作室王诚.FPGA/CPLD设计工具—Xininx使用详解[M].北京:人民邮电出版社,2005.82.
[21] 厦门电脑维修维护网.LCD的通用驱动电路IP核设计[EB/OL].

http://www.qy188.com/html/dncs/2007/3/56935317.htm.

2007-03-30/2007-05-25.

附录1 量化值表

附录2 DC系数编码表

附录3 部分源程序

附录4 全文图索引

图2.1 MPEG-4视频编码简化原理图 8
图2.2 MPEG-4通用编码器 9
图2.3 MPEG-4基本编码器 9
图2.4 典型的视频运动对象分割系统框架 10
图2.5 VOP编码原理图 12
图3.1 主要模块连接设计 15
图3.2 MPEG-4视频编码方框图 17
图3.3 运动估计编码过程 18
图3.4 对数搜索法 19
图3.5 VOP纹理编码过程 19
图3.6 ISE设计框图 20
图4.1 本设计在MPEG4整体结构中的位置 23
图4.2 IP核模块整体设计 24
图4.3 形状、纹理和运动补偿编码器核结构图 25
图4.4 模块调用关系图 26
图4.5 哈夫曼编码过程 27
图4.6 DC系数的亮度编码 27
图4.7 IP核的综合 30
图4.8 系统的综合 30
图4.9 器件使用情况报告 30
图4.10 测试文件仿真界面 31
图4.11 RGB彩色空间变换时序图 32
图4.12 仿真波形界面 33
图4.13 压缩图片示例 35
图4.14 SOPC1000X片上系统开发实验箱布局图 36
图4.15 管脚约束布局的界面 37
图4.16 实现(Implement)的操作步骤 37
图4.17 实现步骤的完成 38
图4.18 FPGA的配置 38
图4.19 下载成功界面 39
图5.1 XPS运行界面 43

附录5 EDK系统模块结构图

基于FPGA的谐波分析仪的设计

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 18-09-2009

标签:, , ,

0

摘 要 III
ABSTRACT IV
第一章 绪 论 1
1.1 电力谐波的产生及研究现状 1
1.2 电力谐波的危害及研究的重要性 2
1.3 谐波检测中的常用方法 3
1.3.1 采用模拟滤波器原理的谐波检测方法 3
1.3.2 基于小波分析的谐波检测方法 3
1.3.3 基于神经网络的谐波测量 4
1.3.4 基于瞬时无功功率理论的谐波检测方法 4
1.3.5 基于傅立叶变换的谐波检测方法 4
第二章 相关技术研究 5
2.1 硬件环境 5
2.1.1可编程逻辑器件 5
2.1.2 SOPC技术 7
2.2 软件环境 8
2.2.1 硬件描述语言VHDL 8
2.2.2 软件平台ISE 10
第三章 谐波分析仪系统分析与设计 12
3.1 基于快速傅里叶变换的算法分析 12
3.1.1 傅立叶算法简介 12
3.1.2 FFT算法 14
3.2 系统性能指标分析 15
3.3 系统总体结构设计 17
3.3.1 系统总体结构 17
3.3.2 系统模块结构 18
3.4 系统的设计方法 19
第四章 模块设计与仿真 23
4.1 A/D采样模块 23
4.2 FFT处理模块 24
4.2.1 采样数据存储 25
4.2.2 FIFO存储器 27
4.2.3 FFT运算部分 29
4.2.4 控制器的设计 31
4.3 NIOS控制器 35
4.4 显示单元 36
4.5 FFT运算单元工作流程 36
第五章 结 论 38
致谢 40
参考文献 41
附 录 一 42
附 录 二 43

摘 要

随着技术的飞速发展,电力电子装置如变频设备、变流设备等容量日益扩大,数量日益增多,使得电网中的谐波污染日益严重,给电力系统和各类用电设备带来危害,轻则增加能耗,缩短设备使用寿命,重则造成用电事故,影响安全生产。电力系统中的谐波问题早在20世纪20年代就引起了人们的注意。近年来,产生谐波的设备类型及数量均已剧增,并将继续增长,谐波造成的危害也日趋严重。因此,谐波分析与测量在我们生活中显得日益重要。
本论文主要了解了可编程元器件的发展过程、主要工艺发展及目前的应用情况,掌握了一种主流硬件描述语言VHDL的语法及其编程,熟悉了VHDL编程的一种常用环境ISE及仿真环境Modelsim,分析比较了传统测量谐波装置和基于FPGA的新型谐波测量仪器的特性。研究了基于FFT的谐波测量方法,分析了使用FPGA实现FFT算法及其主要硬件实现架构的优缺点,提出了一种基于浮点数FFT算法的FPGA系统方案。该设计架构运行稳定,计算速度快捷,并通过实际的仿真验证了该设计的正确性和优越性,最终通过以上工作设计了一种新型的基于FPGA的谐波分析的方法,该设计的采样单元通过实际型式的试验检验,符合设计要求;FPGA单元通过系统仿真,符合设计要求。

关键词:FPGA,VHDL,谐波,FFT

ABSTRACT

Along with the rapid development of the technical, the capacity of electric power and electronic installation such as frequency conversion and variable current equipment expands, and the quantity increases day by day, which causes the overtone pollution in the electrical network to be more serious. It brings the harm for the electrical power system and each kind of current collector, which increases the energy consumption or reduces the useful life of equipment lightly, creates accident in using electricity affects the safety inproduction in the heavy piece. The overtone question in the electrical power system has already brought to people’s attention in 1920’s. In recent years, equipments which had the overtone had already increased in the, quantity and will continue to growing. That creates the the overtone harm more and more serious day by day. Therefore, analysis and survey of overtone play an more important part in our daily life.
The paper mainly reseaches the programmable primary device developing process, the main craft development and the present application situation. And then be familiar with a mainstream hardware description language VHDL and also a kind of commonly used environment ISE and simulation environment Modelsim. The analysis compares the characteristic traditional overtone metering installment and new overtone metering equipment based on the FPGA. And also has studies the overtone measuring technique based on the FFT. It analyze realizing the FFT algorithm used FPGA and the good and bad points of this hardware realization. This design overhead construction move stablely, operation quickly. It is confirmed to be accuracy and the superiority through the actual simulation, and finally it proposed a FPGA system plan based the algorithm on FFT. This design sampling unit through the actual pattern experimental examination, conformed to the design requirement; The FPGA unit has been proved right through the system simulation.

KEYWORDS FPGA,VHDL,Power Harmonic,FFT

第一章 绪 论

电力电子技术的发展使得大量的整流负载等包含非线性元件和时变元件的装置进入电力系统,引起了电流电压的波形畸变,这就是通常讲的电力谐波。在公用电网中,谐波使供电和用电设备过热、电能损耗增加,影响它们的正常运行。轻则降低了设备的使用寿命和系统的功率因数,重则会导致短路和对谐波敏感的继电保护等设备误动作,甚至烧毁元器件、电机或变压器。因此,对于电力谐波的检测成为日趋重要的问题。由于大量非线性负载的加入电网,使得电力系统的谐波成为影响电能质量的重要因素之一,越来越受到人们的关注。电力谐波中的实际测量结果是谐波问题研究的主要依据,也是研究分析谐波问题的出发点。本章扼要介绍了电力谐波的产生及目前谐波问题的研究现状,阐述了电力谐波的危害以及谐波的测量与分析在电力系统中的重要性,以及目前谐波检测中一些常用方法。最后,介绍了本课题研究的目的及意义。
1.1 电力谐波的产生及研究现状
电力系统运行时,理想情况下它应以额定频率和额定电压向用户供电。但在实际运行中,由于负荷的不断变化.电力系统的频率和电压是不可能维持恒定不变的。尤其是近些年来,随着电力电子技术和计算机技术的飞速发展,电气设备越来越多地采用了高效节能的新技术,如变频设备、不间断电源、直流电源、电弧设备等,这些负荷对电网造成了很大的干扰,使供电网中的波形发生了畸变,不再是单一的50Hz的正弦波分量,这些分量称为谐波。谐波的大量产生,成为当前电力系统中影响电能质量的重要因素之一。
电力系统的谐波问题早在20世纪20年代和30年代就引起了人们的注意。当时在德国,由于使用静止汞弧变流器而造成了电压、电流波形的畸变。1945年J.C.既ad 发表的有关变流器的论文是早期有关谐波研究的经典论文。到了50年代和60年代,由于高压直流输电技术的发展,发表了有关变流器引起谐波问题的大量论文。在其70年代以来,由于电子技术的飞速发展.各种电力电子装置在电力系统、交通及家庭中的应用日益广泛,谐波所造成的危害也日趋严重。世界各国都对谐波问题予以充分的关注。国际上召开了多次有关谐波问题的学术会议,不少国家和国际学术组织都制定了限制电力系统谐波和用电设备谐波的标准和规定。我国对谐波问题的研究起步较晚,吴竞昌等人1988年出版的《电力系统谐波》一书是国内最早的一部较有影响的著作,极大地推动了国内这一领域的研究工作。王兆安等人1999年出版的《谐波抑制和无功功率补偿》,近几年在国内也有较大的影响,该著作对研究谐波问题的治理具有重要的指导意义。
世界上许多国家及一些著名的国际组织,都先后制订了包括配电系统、电力设备和用电设备以及家用电器在内的各类谐波标准。例如:国际电工委员会(IEC)陆续发布了IEC61000系列电磁兼容(EMC)标准;欧共体(EA)拟定的(IEC)555中明确规定了谐波测试程序,在欧共体市场上销售的所有电子设备都必须通过这些测试才能销售,日本和美国也有类似的标准。而我国在这方面则相对较慢,直到1993年才由当时的能源部组织制定并经国家技术监督局批准发布了国家标准GB/T 14549-93《电能质量公用电网谐波》,并于1994年3月正式实施,使我国谐波管理工作逐渐科学化、规范化和法制化[1]。
1.2 电力谐波的危害及研究的重要性
谐波对电力系统电磁环境的污染将危害系统本身及广大电力用户,危害面十分广泛。张直平等人合著的《城市电网谐波手册》一书中对谐波的危害作了详细的研究。归纳起来其主要危害有:
1.产生附加损耗,增加设备温升。与基波电流相比,尽管谐波电流的比例不大。但设备的有效电阻会因集肤效应而增大。在有铁芯的电气设备中,铁芯的磁滞损耗和涡流损耗也将增大。这些附加损耗除增加了电力系统的损耗外,还使设备温升增加,尤其局部发热点的温升可能增加更多,使设备绝缘老化加速。
2.恶化绝缘条件,缩短设备寿命。除附加发热影响绝缘寿命外,还因为在较高频率的电场作用下,绝缘的局部放电加剧,介质损耗显著增加,致使其温升提高。当电压畸变波形出现尖顶波时,还增大了局部放电强度,从而降低绝缘寿命。
3.可能引起电机的机械振动。由谐波电流相电机旋转磁场相互作用产生的脉动转矩可能使电机发生振动。当电机的机械系统的自然频率在受到上述转矩的激发而可能引起共振时,则会损坏电机设备,危及人身安全。
4.无功补偿电容器组可能引起谐波电流的放大,甚至造成谐振。无功补偿电容与电力系统中的电感构成了局部电感、电容回路,它们的一些组合有时会对某次谐波电流起到放大作用,加剧了谐波危害。当它们构成的局部谐振回路的频率与系统中存在的某次谐波频率相近时.就会造成危险的过电流或过电压。
5.对继电保护、自动控制装置和计算机产生干扰和造成误动作。这些保护和控制设备通常都是按照工作于所加电压或电流为工业频率和正弦波形而设计的,谐波的存在使它们的正常工作条件受到干扰,严重时将造成误动作。
6.影响测量仪表的精度,造成电能计量的误差。
7.干扰相邻通信线路和铁道信号线路的正常工作。
因此,不论从保证电力系统的安全经济运行,还是从保证电气设备和人身安全的角度,还是从治理环境污染、维护绿色环境的角度,在电网中对谐波进行实时检测,当谐波超过标准时,及时采取相关的技术措施来抑制谐波,是具有重大社会和经济效益的。所以研究一种新型的,实用的,比较大众化的谐波分析仪成为了一种社会需求。本论文就是研究这样一种谐波分析仪的[2]。
1.3 谐波检测中的常用方法
谐波检测是谐波问题的基础。电力系统的谐波由于受随机性、分布性、非平稳性等诸多因素的影响,对其进行准确的检测并非易事,多年来,人们都在不断地探索更为有效的谐波检测方法及其实现技术。选择一个合适的谐波检测方法对本系统的精度高低也是影响重大。目前比较常用的谐波检测方法主要有[3]:
1.3.1 采用模拟滤波器原理的谐波检测方法
早期的谐波检测方法都是采用模拟滤波的方法。该谐波检测方法的原理是采用带阻滤波器将基波分量滤除,得到谐波分量;或采用带通滤波器得出基波分量,再与被检测量相减得到谐波分量。该方法的优点是实现电路简单、造价低、输出阻抗低、品质因素易于控制,但也有许多不足,如实现电路的滤波中心频率对元件参数十分敏感,受外界环境影响较大;电网频率波动不仅影响检测精度,而且检测出的谐波中含有较多的基波分量:当需要检测多次谐波分量时,实现电路变得复杂,其电路参数设计难度随之增加:运行损耗大等等。随着电力系统谐波检测要求的提高及新的谐波检测方法的日益成熟,该方法己不再优先选用。
1.3.2 基于小波分析的谐波检测方法
小波分析作为调和分析的重大进展,克服了傅立叶变换在频域完全局部化而在时域完全无局部性的缺点,即它在频域和时域同时具有局部性。小波分析采用不同尺度的分析方法,能在信号的不同部位得到最佳的时域分辨率和频域分辨率,为非稳态信号的分析提供了一条新的途径。小波分析对波动谐波、快速变化谐波的检测有很大的优越性,但是小波变化在稳态谐波检测方面相比博立叶变换并不具备理论优势;而且在谐波检测方面尚处于初始阶段,目前也没有实际产品投放市场。
1.3.3 基于神经网络的谐波测量
在理论上,神经网络在提高计算能力、对任意连续函数的逼近能力、学理论及动态网络的稳定性分析等方面都取得了丰硕成果,已应用于许多重要领域,如模式识别与图象处理、控制与优化、预测与管理、通信等。神经网络应用于电力系统谐波测量尚属起步阶段。它主要有3方面的应用:①谐波源辨识;②电力系统谐波预测;③谐波测量。将神经网络应用于谐波测量,主要涉及网络构建、样本的确定和算法的选择,目前已有一些研究成果。
1.3.4 基于瞬时无功功率理论的谐波检测方法
瞬时无功功率理论是总谐波实时检测的主要方法。基于瞬时无功功率理论有3种谐波检测方法:p-q法、中Ip-iq法和d-q法。这3种方法都能准确、实时测量三相三线制对称电路的总谐波分量。Ip-iq法和d-q法适用范围更广,不仅在电网电压畸变时适用,在电网电压不对称时也同样有效,使用p-q法测量电网电压畸变时的谐波会存在较大误差。瞬时无功功率理论方法的优点是当电网电压对称且无畸变时检测基波正序无功分量、不对称分量及高次谐波分量的实现电路比较简单,并且延时小,具有很好的实时性,但是此理论是基于三相三线制电路提出的,对于单相电路,必须首先将三相电路分解,然后再构造基于瞬时无功功率理论的单相电路的谐波检测电路。该方法用于无功补偿等谐波抑制领域不失为一种好方法,但是由于它只能检测出总谐波值,因此不适宜在本系统中采用。
1.3.5 基于傅立叶变换的谐波检测方法
该方法的核心理论建立在傅立叶分析的基础之上,其实质就是将模拟信号经过采样变换成离散的数字序列后,输入相应的处理芯片进行傅立叶变换,计算得出基波以及频率为基波频率整数倍的各次谐波的幅值和相位。使用傅立叶变换的方法进行谐波检测,精度较高,功能较多,使用方便,是当今谐波检测中应用最广泛的一种谐波检测方法。其缺点是需要一定时间的电流值,而且需要进行两次变换,实时性不是很好。在采样过程中,当信号频率和采样频率不一致时,会产生频谱混叠效应、泄露效应和栅栏效应,使计算出的信号参数不准确,因此必须对算法进行改进。己有的方法主要有利用加窗插值算法对快速傅立叶算法进行修下、修正采样点法及利用数字式锁相器(DPLL) 使信号频率和采徉频率保持同步,其中加窗插值算法已发展出矩形窗、海宁窗、布莱克曼窗、布莱克曼窗一哈里斯窗等数十种窗函数供不同场合选择使用。

第二章 相关技术研究
2.1 硬件环境
2.1.1可编程逻辑器件
可编程器件有着悠久的使用历史,从早期的PROM,EPROM和EEPROM,发展到后来小规模门电路芯片的PAL(Programmable Array logic ),AGAL(Application Gate Array Logic)和GAL(Generic Array Logic),直至目前广泛使用的大规模逻辑组合芯片CPLD(Complex Programmable Logic Device)和FPGA(Field Programmable Gate Array)等,它们在实际中的应用越来越广。VHDL语言是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。该数字系统能够按层次被描述,并可在相同描述中显式地进行时序建模。
可编程逻辑器件从1970年代开始经历了大约三代的发展历史,早期的PROM, EPROM和EEPROM为第一代可编程器件,可以通过查表方式实现简单的逻辑功能,例如实现3-8译码功能,首先将8个8位二进制数按照3-8译码真值表顺序写入ROM中,然后将3位输入数作为ROM地址输入,在ROM的输出端即可输出对应地址单元内的8位二进制数。由于结构的限制,它们只能完成简单的数字逻辑功能。
其后,第二代结构上稍复杂的可编程芯片出现在市场上,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与-或-非”表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输入输出可以通过触发器有选择地被置为寄存状态,结构如图2.1所示。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM 技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上,又发展了一种通用阵列逻辑GAL(Generic Array Logic),如GAL16V8,GAL22V 10等。它采用了EEPROM 工艺,实现了电可擦除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构使它们只能实现规模较小的电路p8-201针对前代可编程器件结构简单,规模小的缺点。
随着电子技术的飞速发展,1980年代第三代可编程器件CPLD和FPGA出现在市场上。CPLD是由Altera公司发明的,第一代产品称为传统EPLD(Erasable Program- mable Logic Device),然后发展成为三个系列的CPLD:MAXS000, MAX7000, MAX9000,其逻辑单元容量和芯片IO引脚资源更加丰富,能够满足更复杂的设计需求,受到开发者的热烈欢迎。由于市场对该类产品强烈需求,推动了更多厂商加入了CPLD的制造行列,使得目前开发者有广泛的选择余地。由于CPLD自身结构的特点决定不可能扩展更大的集成度,市场对更大逻辑单元集成容量的可编程芯片的需求突出催发了另一种可现场编程芯片FPGA的出现。FPGA芯片由逻辑单元和连线资源构成,逻辑单元间的连线由设计者编程联接。
当代可编程器件的原理主要有乘积项阵列和查找表两种,CPLD主要使用乘积
项阵列结构,而FPGA主要使用查找表结构。
目前可编程器件正越来越广泛应用于现代数字电路设计中,可以实现从普通数字逻辑电路到SOC(System On Chip)的设计。由于超大规模集成电路工艺的飞速发展为开发者提供了容量更大,速度更快的芯片;厂商提供了更先进完善的开发调试软件,使开发者可以使用传统原理图方式或硬件描述语言(HDL)灵活地设计系统,并可以利用模拟仿真检验设计结果;可编程器件的灵活性、高运算速度与高可靠性,使得其应用范围更为广阔。目前可编程器件主要应用领域有:
1.数字信号处理
可编程器件在数字信号处理领域中被广泛用于设计开发各种FIR,I IR数字滤波器、FFT变换器等数字信号处理单元,由于可编程器件设计的灵活性以及强大的并行运算处理能力和高速的信号处理能力,使得其被广泛应用于数字信号处理中。而且可编程器件厂商所提供的开发软件均可与数字信号处理仿真软件如MATLAB等实现无缝接合,开发人员可以直接将在MATLAB中所设计的结果输入可编程器件开发软件中实现其设计,从而有效减少开发时间和难度。
2.数字图象处理
当今数字图象处理技术飞速发展,各种先进的处理算法层出不穷,而可编程器件是数字图象处理ASIC最好的替代品。可编程器件的处理能力与ASIC比较接近,而其内部逻辑结构可以灵活变换,当改变处理算法时只需改写芯片内容即可,ASIC则必须更换整个芯片。与专用DSP芯片比较可编程器件价格低廉,可根据实际要求选择合适规模芯片。同样MATLAB中设计开发的数字图象处理算法可以直接输入可编程器件开发软件中实现其设计。
3.数字通信
在数字通信领域中,可编程器件得到广泛的应用。特别在高端领域如GBit交换机、GBit光纤传输网络、ATM交换机、XSDL调制解调器、第三代移动网络等领域中应用广阔。由于高端数字通信产品对处理单元运算能力的苛刻要求,通常只有ASIC和可编程器件能达到其性能要求,而由于高端产品的前期产量不大,因此生产初期使用可编程器件可以有效减少ASIC高昂的定制修改费用。
4.国防领域
国防领域中可编程器件的应用极为广泛,例如当前最先进的相控阵雷达,其控制核心广泛使用可编程器件。相控阵雷达核心主要由一个电磁束控制矩阵构成,该矩阵由若干个电磁束发射接收单元组成,每个单元可独立发射一束电磁波并接收所反射的电磁波。由于各个单元的相互独立性使得相控阵雷达抗干扰性好、探测能力强且无需转动雷达面。由于其核心的矩阵结构,使得可编程器件最适合对其进行控制,包括波束控制,信号接收控制等等。可编程芯片硬件级的数字信号处理能力可以对接收的结果进行快速分析,从而提高相控阵雷达的处理性能。
5.加密解密
加密解密是目前国防、金融等领域的重要研究内容,通常加密解密算法的安全性与算法的复杂性成正比。随着加密解密算法研究不断推进,其复杂度也与日俱增,运算量大为增加。加之加密解密算法变化快速,对硬件的要求也日益增加。可编程器件强大的运算能力和灵活的在线编程能力是实现加密解密算法的最佳条件。通过使用可编程器件来实现加密解密算法,可以获得高速的运算能力,同时在不更换硬件的前提下可以灵活变换加密解密算法。
6.电路设计仿真
目前ASIC的设计广泛采用可编程器件来实现设计仿真。前期的软件仿真通常无法真实体现实际电路的运行状况,如等流片制版后对所制造的ASIC样片再检测性能,则改动设计的费用昂贵,通常ASIC的流片制版费用高达2,3万美元,如果需改动设计,则需全部重来。为了节省开发费用,缩短开发时间,ASIC设计开发人员通常首先在可编程器件上实现其设计,然后通过对可编程器件的测试来修改其设计直至最终设计确定。由于可编程器件的电路特性与ASIC接近,因此通过在可编程器件上的仿真测试可以获得比软件仿真更加真实可靠的试验结果。
可以预见在不远将来,可编程器件的应用必将更广泛。
2.1.2 SOPC技术
SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC的设计技术是现代计算机辅助设计技术、EDA技术和大规模集成电路技术高度发展的产物。SOPC技术是将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、硬件协处理器或加速系统、DSP系统、数字通信系统、存储电路以及普通数字系统等,在单一FPGA中嵌入实现。大量采用IP复用、软硬件协同设计、自顶向下和自底向上混合设计的方法,边设计、边调试、边验证……原本需要写上几千行的VHDL代码的功能模块,通过嵌入IP核后,只需几十行C代码即可实现。因此,可以使得整个设计在规模、可靠性、体积、功耗、功能、性能指标、上市周期、开发成本、产品维护及其硬件升级等多方面实现最优化。
传统的设计技术已经很难满足系统化、网络化、高速度、低功耗、多媒体等实际需求,SOPC(片上可编程系统)可将处理器、存储器、外设接口和多层次用户电路等系统设计需要的功能模块集成到一块芯片上,因其灵活、高效、设计可重用特性,已经成为集成电路未来的发展方向,广泛应用到汽车、军事、航空航天、广播、测试和测量、消费类电子、无线通信、医疗、有线通信等领域。
SOPC技术是一门全新的综合性电子设计技术,涉及面广。因此在知识构成上对于新时代嵌入式创新人才有更高的要求,除了必须了解基本的EDA软件、硬件描述语言和FPGA器件相关知识外,还必须熟悉计算机组成与接口、汇编语言或C语言、DSP算法、数字通信、嵌入式系统开发、片上系统构建与测试等知识。显然,知识面的拓宽必然推动电子信息及工程类各学科分支与相应的课程类别间的融合,而这种融合必将有助于设计者的设计理念的培养和创新思维的升华[6]。
SOPC极大地提高了电子系统设计工程师的设计效率,加快了电子系统得开发速度,节约了设计成本,缩短了设计周期,最终将加速新产品的上市和推广速度。因此,SOPC是目前集成设计、嵌入式发展的热点。由于技术的进一步发展,SOPC设计面临着一些诸如如何进行软硬件协同设计、如何缩短电子产片开发周期的难题。

2.2 软件环境
2.2.1 硬件描述语言VHDL
硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言,它描述电子系统的逻辑功能、电路结构和连接方式.利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构.
硬件描述语言具有以下几个优点:
1)设计技术齐全,方法灵活;
2)加快了硬件电路的设计周期,降低了硬件电路的设计难度;
3)采用系统早期仿真,在系统设计早期就可发现并排除存在的问题;
4)语言设计可与工艺技术无关;
5)语言标准、规范,易共享和复用。.
目前,采用硬件描述语言进行数字系统的设计己被广泛采用。据统计,目前在美国硅谷约有90%以上的FPGA采用硬件描述语言进行设计。
硬件描述语言HDL的发展至今己有20多年的历史,并成功地应用于设计的各个阶段;建模、仿真、验证和综合等。到20世纪80年代,己出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为WEE标准.就FPGA/CPLD开发而言,VHDL语言是最常用和流行的硬件描述语言之一,在数字信号处理的FPGA设计中得到了广泛的使用。
VHDL的英文全称Very-high-Speed Integrated Circuit Hard Language,诞生于1982年。1987年底,VHDL被IEEE(The institute of Electrical and Electronics)和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本(IEEE-1076)后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具和VHDL接口,此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力扩展VHDL语言的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本[8]。
VHDL语言在硬件设计领域的作用将与C和C++在软件设计领域的作用一样,在大规模数字系统的设计中,它将逐步取代如逻辑状态表和逻辑电路图等级别较低的繁琐的硬件描述方法,而成为主要的硬件描述工具,它将成为数字系统设计领域中所有技术人员必须掌握的一种语言.VHDL和可编程逻辑器件的结合成为一种强有力的设计方式,将为设计者的产品上市带来创记录的速度。
一个VHDL程序通常包含实体(Entity),结构体(Architecture),配置(Configuration),包集合(Package),库(library) 5个部分。其中实体是一个VHDL程序的基本单元,由实体说明和结构体两部分组成。实体说明用于描述设计系统的外部接口信号:结构体用于描述系统的行为,系统数据的流程和组织结构形式。配置用于从库中选取所需单元来描述层与层之间的连接关系。包集合存放各设计模块能共享的数据类型,常数,子程序等。
库用于存放已编译的实体,构造体,包集合,配置。库分为两种,一种是芯片制造商提供的库:另一种是用户自行生成的work库,包括用户设计的模块,可以重复使用。
2.2.2 软件平台ISE
ISE系列软件是Xilinx公司推出的集成EDA开发工具,它支持Xilinx公司的所有CPLD/FPGA产品。目前,ISE系列软件的最高版本是7.1,包括ISE Foundation、ISE Alliance、ISE WebPACK和ISE BaseX四种类型。不同版本类型的ISE软件在性能上略有区别。
ISE是一个集成环境,可以完成整个FPGA/CPLD的设计过程。ISE集成了许多著名的FPGA/CPLD设计工具,根据设计流程合理利用这些工具,会使设计工作更加简单;其界面风格简洁流畅,易学易用;有丰富的在线帮助信息,结合Xilinx的技术支持网站,一般设计中的问题都能得以解决;还有强大的辅助设计功能,在编写代码时可以用编写向导生成文件头和模块框架,也可使用语言模版编写代码,图形输入时可以使用ECS的辅助项帮助设计原理图,ISE的Core Generator和LogBLOX工具可以方便的生成IP Core与高效模块为用户所用。
ISE的设计流程主要包括设计输入、功能仿真、综合、实行、时序仿真和下载配置等几个步骤。其中,设计输入采用基于工程的分层次管理,支持硬件描述语言、原理图和状态图的混合设计输入方式。硬件描述语言设计、原理图设计和状态图设计具有不同的特点,适用于不同的场合。综合可以李永Xilinx公司推出的自己的综合工具XST,并支持第三方综合工具,如Synplify、FPGA Epress等。在FPGA设计过程中,设计的综合效果主要取决于设计者的设计风格和综合工具的方针能力。功能仿真是赘基本的仿真验证,它主要针对实行前的设计文件。功能仿真的主要目的是验证设计文件的逻辑功能是否正确,是否满足设计要求。在功能仿真过程种,ISE系列软件支持波形仿真激励和硬件描述语言的仿真激励。
在ISE环境的FPGA设计的实行过程主要包括转换、映射、布局布线和时间参数提取等几个方面。在转换的过程中,多个设计文件和约束文件将被合并为一个NGD文件,同时输出BLD文件。其中,NGD文件包含当前设计的全部逻辑描述,BLD文件试转换的运行报告。转换可接受的设计文件包括EDN、EDF、EDIF和SEDIF文件。在映射过程中,当前设计的NGD文件将被映射为目标器件的特定物理单元,并保存在NCD文件中。映射的输入文件包括NGD、PCF、NGM和MRP文件。布局布线将映射产生的物理单元在目标器件上放置和连接,并提取相应的时间参数。布局布线输入文件包括NCDJCF和NCD模版文件,输出文件包括NCD、PCF、NGM和PAR文件。时间参数提取试将生成当前设计的含有时间参数的返标网表,改返标网表将用于时序仿真。时间参数提取的输入文件包括NCD和PCF文件。时间参数提取出的时序报告,可以反映设计是否满足约束要求。
在高速的FPGA设计过程中,时序仿真试必不可少的仿真验证形式。通过计算各信号之间的时间延迟,时序仿真可以有效的分析设计中可能存在的竞争和冒险,从而确定设计的实际工作性能。多数情况下,时序仿真的结果基本上于实际工作电路的实际工作结果一致。
下载配置试将实现后的设计文件转换为在FPGA中实际使用的数据文件,并进行硬件配置的过程。

第三章 谐波分析仪系统分析与设计
目前市场主流的谐波测量仪器均基于快速傅立叶变换理论基础。将输入的模拟量电流电压通过AD采样环节变换成离散的数字量,然后进行快速傅立叶变换,计算获得基波和各次谐波的复数值,然后根据国家标准计算相应的谐波指标并显示最终结果。
本章首先说明了快速傅立叶变换的算法和其优越性,然后对我国国家标准对谐波测量仪器的规定做了研究:然后说明整个谐波分析系统的总体设计方案。
3.1 基于快速傅里叶变换的算法分析
3.1.1 傅立叶算法简介
任何一个非正弦的时间周期波可以用时间t的周期函数表示为
(3.1)
式中T表示该函数的周期。
该周期函数的变化频率为 ,角频率为 。如果将时间轴变换为角度来表示,式(4.1)可表示为
(3.2)
根据傅立叶级数理论,使用傅立叶级数可以将任何一个满足狄力赫莱条件的
周期函数分解成为一个由基波和无数高次谐波之和的无穷三角级数之和,其一般
表达式为
(3.3)
式中 为直流分量, , 分别为k次谐波的幅值和初相角
(3.4)
利用三角函数的正交性可得出, , 的计算公式为
(3.5)
为了便于分析,引入复指数因子 ,并且将k扩充到 ,式(4.3)化为
(3.6)
其中
(3.7)
(3.8)
(4.7),(4.8) 两式按瞬时值相加得
(3.9)
从式(4.9)便可得第k次谐波,其幅值为 ,初相位为 。
利用傅立叶积分变换可得
(3.10)
由于在实际中无法进行连续傅立叶变换,因此将式(4.10)离散化得
(3.11)
式中 为 的离散序列, 为旋转因子.可以得出式(4.11)为 离散化后的DFT分解,因此可以得出 的第k次谐波的幅值为2 ,相位为 相位角 加90度[8-9]。另根据香农采样定律,一个周期信号的采样点数为N,仅能得到0~(N-1)次的频谱,而谐波只能得到0~(N/2-1)次。例如对周期信号的采样点数为N=128次,则可只得到该波形的0~63次谐波成分。
3.1.2 FFT算法
从式(4.9)可见,DFT的计算量极为庞大,所以一直没有得到真正的运用。直到1965年库利(J.W.Cooley)和图基(J.W.Tukey)在《计算数学》(Mathematics of Computation)杂志上发表了著名的“机器计算傅立叶级数的一种算法”的文章,提出了DFT的一种快速算法,后来又有桑德(G.Sande)和图基的快速算法相继出现,经过不断的改进,使DFT的计算大大简化,计算时间一般可以缩短一、二个数量级,形成了比较成熟的快速傅立叶变换FFT[10]。
以时域抽取(Decimation-in-Time)FFT算法为例,考虑长度为2的整数幂的离散序列x[n],将其分解为奇次和偶次序列并使用z变换形式X[z]表示:
(3.12)
(3.13)
(3.14)
为 的偶次序列而 为 的奇次序列,注意到在式(3.12)中使用 代入等式右边便获得 的DFT计算式。即
(3.15)
(3.16)
(3.17)
从而将N点的DFT运算变成两个N/2点的DFT运算。如果N/2仍然为2的幂,则可继续分解成为四个N/4点的DFT运算,以此类推,如果N=8,则可分解为三级,第一级为2点的DFT运算,第二级为4点的DFT运算,第三级为8点的DFT,运算的拓扑图如图4.1所示,图4.1中的运算节点为图4.2所示。
通过快速傅立叶变换算法可知,复数乘法运算大量减少,由DFT的N2次减少为FFT的 次,例如N=128,DFT运算需要1282=16384次,而FFT仅需要运算 次,从而使谢波分析速度大大提高。直接计算DFT与FFT算法的计算量之比为
(3.18)
在谐波分析中,通过使用FFT算法,可以有效的节约系统资源,显著缩短运算时间。
3.2 系统性能指标分析
我国国家标准GB/T14549–93对谐波测量仪器做出以下规定[12][13]:
1.测量的谐波次数一般为第2到第19次,根据谐波源的特点或测试分析结果,可以适当变动谐波次数测量的范围。
2.为了区别暂态现象和谐波,对负荷变化快的谐波,每次测量结果可为3s内所测值的平均值。推荐采用下式计算:
(3.19)
式中,为3s内第k次测得的n次谐波的方均根值:m为3s内取均匀间隔的测量次数,m≥6。
3.仪器准确度
谐波测量仪的允许误差见表3-1。
4.仪器有一定的抗电磁骚扰能力,便于现场使用。仪器应保证其电源在标称电压±15%,频率在49~51Hz范围内,电压总谐波畸变率不超过8%条件下能正常工作。

表3.1 谐波测量仪器的允许误差
等级 被测量 条件 允许误差

A

电压

电流

B
电压

电流

注: 为标称电压; 为谐波电压; 为额定电流: 式为谐波电流。
5.在测量的频率范围内,仪用互感器、电容式分压器等谐波传感器设备应有良好的频率特性,其引入的幅值误差不应大于5%,相角误差不大于5度。
本系统为16通道A级精度谐波分析仪,输入为8路电压,8路电流,输入电压范围150V-390VAC,输入电流范围0-15AAC;谐波分析范围为2-50次谐波,包括似稳谐波、波动谐波和快速谐波,不包括中间谐波或其他杂散分量;分析结果包括基波和各次谐波的有效值和相位,有效值精度要求都满足上述国家标准。
图3.1是本分析仪的信号处理框图,它分成模拟、模数转换和数字等三个环节。
模 拟 环 节 数 字 环 节
AC
380V AC 5Vpp
or 15A 5Vpp +2.5VDC 14bit

图3.1 谐波分析仪信号处理框图
3.3 系统总体结构设计
3.3.1 系统总体结构
目前市场主流的谐波测量仪器均基于快速傅立叶变换的了理论基础。将输入的模拟量电流通过A/D采样环节变换成离散的数字量,然后,进行快速傅立叶变换。根据实验室以往的研究成果以及对系统功能要求的分析,在研究了各方案的优缺点等内容后,确定了系统的总体外围电路硬件结构,这个设计比较简单,所用方法也比较成熟,在现实生活中有广泛的用途。系统总的结构框图如图3.2所示。

A/D采样单元 FPGA

模拟量信号 基波频率

采样频率
输入信号

变换后模拟量信号 模拟量信号 采样数据 采样数据

图3.2 系统总体设计框图

本系统从结构上分为AD采样单元、FFT运算处理单元、NIOS控制单元、LCD显示单元等。
AD采样单元将模拟信号经采样变换成14位的数字量;FFT运算处理单元负责处理AD采样单元输出的数字量,进行FFT变换运算;LCD显示单元负责显示系统的全部显示信息;NIOS控制单元负责系统各个单元的控制,如控制AD采样单元的采样频率和采样的启动及停止、PLL电路的输出频率计算、键盘输入的响应、网络通讯的软件实现、FFT运算处理单元的控制和数据传输等。
3.3.2 系统模块结构
信号调理部分负责对采集后的信号进行适当的调理和变换,一来使信号处在A/D芯片输入引脚允许的电压范围之内,二来为谐波检测与分析部分提供更加可靠有效的信号。谐波检测与分析部分负责通过A/D对输入的模拟信号每一周期采样一定的点数,精确变换成量,在进行FFT变换和有关数学运算后得到用户所需要的谐波含量及电网运行参数等数据。
采样单元基本原理图如图3.3所示:

模拟信号量
采样频率

模拟信号输入 模拟信号量
图3.3 采样单元原理图
FFT处理单元结构图如图3.4所示:

读写信号 中断申请

32

32
FFT处理单元

MAX125中断信号 14

14
图3.4 FFT处理单元结构图
3.4 系统的设计方法
系统软件的设计在Xinlinx软件提供的ISE集成的开发环境下采用自顶向下的方法进行。自顶向下的设计(Top-Down)是先对设计进行功能描述,然后逐步分块细化,直至结构化的最低层。采用结构化单元和有少数行为级模块构成的层次式模型,进行层次式设计。
数字集成系统的高层次设计是采用“自顶向下”的设计方法,高层次设计是一种“概念式”设计[16],设计人员无需通过门级原理图描述电路,而是针对设计目标进行功能描述,由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的概念构思与方案上,一旦这些概念构思以高层次描述的形式输入计算机后,EDA工具就能以规则驱动的方式自动完成整个设计。这样,新的概念得以有效地变为生产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,而不涉及实现工艺,在厂家综合库的支持下,利用综合优化工具可以将高层次描述转换成针对某种工艺优化的网表,工艺转化变得轻松容易。
在采用传统的电原理输入方法时,FPGA/CPLD器件的采用受到器件库的制约。由于不同厂商FPGA/CPLD的结构完全不同,甚至同一厂商不同系列的产品也存在结构上的差别,因此,在设计一开始,工程师的设计思路就受到最终所采用器件的约束,大大限制了设计师的思路和器件选择的灵活性。而采用Top-Down设计方法,功能输入采用国际标准的HDL输入方法,HDL可不含有任何器件的物理信息,因此工程师可以有更多的空间去集中精力进行功能描述,设计师可以在“高层次”对电路进行设计,其步骤如下:
1)按照 “自顶向下”的设计方法进行系统规划。
2)输入HDL代码。
这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图、状态图等)。这种输入方式具有直观、容易理解的特点。
3)将以上的设计输入编译成标准的VHDL文件。
对于大型设计,还要进行代码级的功能仿真,主要是检验系统功能设计的正确性。因为对于大型设计,综合、适配要花费数小时,就可以大大减少设计重复的次数和时间。
4)转化成网表文件
利用综合器对VHDL源代码进行综合优化处理,这是将高层次描述转化成硬件电路的关键步骤。
5)逻辑映射
在综合前对源代码仿真,生成门级描述的网表文件,利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操包括底层器件配置、逻辑分割、逻辑优化和布局布线。适配完成后,产生多项设计结果:
(1)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等。
(2)适配后的仿真模型。
(3)器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真,因为己经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预测未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同速度品质的器件,直至满足设计要求。
6)下载要目标芯片
将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片中。
设计流程如图下所示:

图3.5 设计流程

对于FFT 处理器的设计,按照自顶向下的设计思路把整个系统按其在系统中的作用分成相关的几个模块,首先分别对各个模块进行设计。而不必考虑每个模块的具体电路和实现的电路工艺,直接根据所需的功能,即输出需要得到什么样的逻辑,进行行为级的描述,通过仿真验证每个模块的输出逻辑是否满足我们的设计要求。
根据实现FFT算法所需要的硬件结构,可以将系统分为数据存取单元,计算单元,以及时序控制单元,如图3-2所示。其中数据存取单元包括了原始数据的存储与读写、中间结果的存储与读写,以及旋转因子的读取:蝶形运算主要用到乘法器与加法器;时序控制用状态机实现。
完成每个子模块的设计与仿真之后,保存在用户自己的work库中,它们就可以作为一个独立的宏单元供我们在更大、更复杂的设计中调用。在最终的FFT设计中,调用之前已经设计好的子模块,组成一个新的project文件。再对该设计进行功能仿真和时序仿真,最终达到设计的要求。
下图所示为设计流程中的界面框图:

图3.6 设计过程中编译完成后界面
整个系统的具体工作流程为:
上电自检:系统上电后首先进行系统自检,检测AD采样单元是否正常,FFT运算处理单元的Config过程是否有异常情况,网络接口是否工作正常。如有任何异常情况,系统将会通过LCD显示屏和网络接口报警,并停止下一步的工作。
系统初始化:如自检正常,首先设置AD采样芯片的工作参数为初始默认参数;
清空FIFO保证不存在任何可能的错误数据;清空FFT运算单元的RAM;进行网络接口初始化,运行TCP/IP协议的RARP协议获得自身的IP地址,运行IEC4000-5-103规约的寻址过程获得上层地址;初始化LCD显示屏显示操作界面。然后系统等待进一步的运行命令。
采样分析:如果系统接到从网络接口或键盘发出的开始分析命令,系统立即开始进行连续采样,将AD芯片采样的结果存放于FIFO中,当对16个通道均采完一个周波后,FIFO中恰好存放了8K的采样数据,FIFO发送一个HalfFu11信号给FFT运算单元。FFT运算单元接收到该信号后将16路采样结果读入FPGA内的RAM中,进行FFT运算。FFT运算单元完成16路信号的FFT运算后发送中断信号通知处理器。处理器在接收到FFT变换结束的中断信号后将16路信号的第1-50次FFT运算结果取走,然后使用网络接口将结果传送到上层系统中,运行简单统计运算并每秒钟刷新一次LCD显示数据。处理器通过连接在定时器的PLL确定当前信号的频率,并变更AD芯片的采样速率为当前信号频率以达到同步采样。
停止运行:当系统接收到从网络接口或键盘发出的停止分析命令时,系统首先停止AD采样芯片的采样工作,恢复为初始化参数,然后清空FIFO中所有数据。等FFT运算单元结束当前的FFT运算后读走数据并清空FPGA的RAM。最后系统初始化LCD显示屏显示操作界面等待下一个运行命令。

第四章 模块设计与仿真
本设计中确定的方案中系统分为A/D采样单元、FFT运算处理单元、控制单元、显示单元。之前已经介绍过各单元的作用和功能,这里介绍各单元的具体设计方法。其中主要模块为FFT运算单元,这部分用VHDL硬件描述语言在ISE环境中设计,并在计算机中仿真通过。本设计符合设计要求。
4.1 A/D采样模块
AD采样单元为本系统的一个关键环节,其核心为两块MAXIM公司的MAX125高速14位同步AD采样芯片,该芯片具有8个采样通道,可以同时对4个通道进行扫描采样,每个采样周期只需对该芯片进行两次读操作便能完成8个通道的采样。AD转换使用逐次逼近法,采样总速率为250KHz, 4通道同步扫描采样时单个通道的采样速率大于30KHz,本系统对单个通道的采样速率要求为12.8KHz,所以该芯片能较好满足本系统的采样速率要求。该芯片通过内部集成的多路开关来实现4通道同步扫描采样,芯片内部有一个4×16bit的RAM用于存放每次扫描采样的4通道数据。该芯片提供了14位的数据线,可以在一次扫描采样结束后在4个时钟周期内将4个采样结果全部输出[15]。
从系统的精度要求可分析得知,当采样位数14位,其LSB代表 、( 为电压输入峰峰值)即 而该芯片的采样误差仅为2个LSB,即 ,约为0.0122% ,所以该采样芯片能较好满足本系统的精度要求。
为减少信号的频谱泄漏,本系统的AD采样单元通过使用高精度的PLL实现严格的同步采样,以保证采样频率与被测信号频率之间的误差达到误差分析的要求。
该单元使用一块IDT公司的IDT72V845芯片来保存采样数据,片内提供了两个独立的双端口FIFO (First In First Out) 4096×186itRAM,该芯片的写入数据线和读出数据线各自独立,即可以同时对该芯片进行数据的读写且相互间不会互相影响,当一个队列写满后即该队列存放了16路信号一个周期全部的4096个采样数据,该芯片发Half Full信号通知FFT运算单元读取该队列中数据,同时将新输入的采样数据写入另一个RAM队列中。通过该方式FFT运算单元只需一次便可读取16路信号一个周期的完整采样数据[14];AD采样单元所有芯片间的读写控制是通过FFT单元的FPGA芯片实现的,因为读写控制逻辑较简单且需重复运行,因此使用FPGA来实现其时序逻辑控制可以有效减轻处理器的工作负担,并能很好地实现读写时序的同步要求。
输入的模拟信号经信号调理电路后输入MAX125的模拟量输入引脚进行采样,同时取某一路电压模拟量信号输入PLL电路。MAX125采样获得的数据通过数据线输入IDT72V845进行缓存。PLL电路输出的频率信号进入NIOS的计数器输入引脚用于计算当前信号的频率,NIOS使用该频率来控制MAX125的采样频率,使采样频率和实际信号频率严格同步。
4.2 FFT处理模块
FFT运算处理单元:FFT运算处理单元基于一块altera公司的EPlC20FPGA芯片,该芯片带有294912bitRAM,具有20060个LE,最大IO引脚数为301。FFT运算处理单元采用先进的多层并行流水线技术,工作在30MHz的频率下,可以在10ms内完成16路工频输入信号的256点FFT运算处理。该处理单元的原理图如图3.4所示。该单元实际包含两大部分,即采样控制逻辑部分和FFT运算部分。采样逻辑部分负责MAX125的读逻辑控制和IDT72V845的读写逻辑控制。FFT运算部分包括FFT控制逻辑、采样数据缓存、FFT处理核与结果存储FIFO。从IDT72V845输出的14位采样数据首先暂存于采样数据缓存中:然后FFT处理核从该缓存中读取数据进行处理;处理完毕的数据存放于结果FIFO中,FFT控制逻辑单元向NIOS妊理器申请中断,处理器响应该中断向FFT控制逻辑单元发送读信号;最后处理器从结果FIFO读取分析结果。
FFT运算其误差主要来自频谱混叠和频谱泄漏。对周期为的T连续信号作间隔N点采样时,采样周期为T/N,对应的采样频率fs=N/T=Nf为周期信号频率的N倍。设原信号的最高谐波频率为fc,则采样频率必须满足fs ≥2fc才能得到各次谐波对应的全部频谱。当fs<2fc时,谐波频率最高仅能得到fs /2(奈奎斯特频率)。由于频谱的周期性,其它各周期中原有的频率高于fs/2的谐波频谱都将混叠到该周期频率低于fs/2 的谐波频谱中去,造成频谱混叠而产生误差。fs越低,则产生的频谱混叠误差越大。为了减少频谱混叠所产生误差,通常采取提高采样频率的办法。在本系统中采样频率儿为12.8K Hz,奈奎斯特频率为6.4 KHz,远远超过所需最高谐波频率2.5KHz。频谱泄漏主要产生原因在于采样窗口不恰当,即窗宽T与信号周期T不严格匹配时,其频谱除主要为原信号频率的分量外,还要“泄漏”到其它频率上去,产生与原信号频率不一致的成分,这种误差就是频谱泄漏误差。为了减少频谱泄漏,通常采用严格同步矩形采样窗或加其他窗的方法。在本系统中,采样部分采用矩形采样窗,为了减少频谱泄漏,必须使矩形采样窗与信号周期严格同步。
顺序处理只用一个运算单元,输入量、中间盘、输出量均使用同一储存器;顺序执行(N/2)logN次蝶形结运算等特点就特别适合FFT的单片系统设计(System-On-Chip Design)实现。缺点也很明显,由于所有蝶形结运算都在同一运算单元上迭代计算,所以运算速度最慢,数据容量也最小,因此顺序FFT处理器适合应用于变换数据点数短,速度要求不高的场合。由于每个碟形运算的输入、输出数据均要经过存,储器的读写操作,因此,存储器的频萦读写操作速度对FFT的处理速度影响较大。
本文的FFT硬件设计方案是在顺序处理的基础上,对具体实现方式进行了研究与设计,对FFT处理过程中数据的传输提出了新的实现方法,使得这种硬件结构既具有顺序处理的优点,即电路简单,资源占有少;又具吸取了级联处理方式的优点,即速度较快的特点。本章详细介绍了FFT处理单元的组成和各部分的详细设计。
本设计的FFT处理单元由采样数据缓存、运算IP核、结果FIFO缓存、FFT控制逻辑这几个部分组成。
4.2.1 采样数据存储
存储器是FFT硬件实现中必不可少的单元,每个碟形运算的输入,输出数据都要经过存储器。
采样数据存储:其功能是在系统主时钟的控制下,通过内部计数器,存入外部输入的采样数据的实部和虚部到相应的地址,对输入数据起缓冲作用;以及在计算时钟的控制下,等待读取信号将内部相应地址的数据输出到计算模块,作为计算模块的输入数据。这是一个顺序输入的存储器。
采样数据存储模块示意图如图所示:

clk

图4-1 采样数据存储器

1) x_1为输入数据,在时钟和写信号的控制下,通过内部计数器顺序地写入存储器。
2) en,oe为写使能和读使能信号,正常工作时en为高电平,输入数据按时钟节拍写入存储器,oe的电平由控制器控制。
3) y_l是基2蝶形运算的输入数据,在oe使能的情况下,通过内部地址产生器将相应地址的数据输出。
4) ready信号开始为低电平,当一组N点输入数据全部写入存储器后,置为高电平,并将此信号发送到控制器,控制器收到此信号后,将存取器1的读信号使能。
程序设计过程用了ISE的辅助设计,其部分关键代码如下:
architecture Behavioral of RAM is
type ram is array(0 to 15) of std_logic_vector(7 downto 0);
signal ram1 : ram;
begin
process(clk) –带时钟进程
variable index:integer range 0 to 15;
begin
if(clk’event and clk = ‘1′) then –等待时钟高电平到来
if(en = ‘1′) then –写使能状态为1时
index := 0; –赋值
For i IN 0 to 3 LOOP
IF addr(i) = ‘1′ THEN –判断地址位置
index := index + 2**i;
end if;
end loop;
if(oe = ‘0′) then –若读使能无效
y_1 <= ram1(index);
elsif(oe = ‘1′) then –如果读使能有效时
ram1(index) <= x_1;
end if;
end if;
end if;
end process;
end Behavioral;
仿真结果如图所示:

图4.2 采样数据存储器仿真结果
4.2.2 FIFO存储器
该存储单元是存储中间运算结果的单元,除了第一级蝶形运算,每个碟形运算的输入、输出数据均要经过此存储器的读写操作,因此,该存储器频繁读写操作速度对FFT的处理速度影响较大。
FIFO存储器的特点是读写操作同时进行,之前我们已经分析过,在该存储器的输出端口与运算单元的输入端口之间加上了三态门,这样在写入上一组中间结果的同时,可以读出下一组蝶形运算的输入数据,因为写入与读取的地址是不相同的,这样就提高了存储器的读写速度,从而改善了FFT处理速度。
1)写操作
存储器在写信号的控制下,通过内部地址产生单元,每一级运算的中间结果写入到相应的地址内.每一级写入的地址是不相同的。对于16点FFT,当进行第一级蝶形运算时,把这8组共16个数据按地址的高低(从低到高)顺序地写入,总共进行8次写操作。
当进行第二级到第四级蝶形运算时,按照基于时间抽取的16点FFT算法,通过相应的地址产生单元,写入相应的地址内,实现算法的同址运算。
比如在进行第二级运算的时候,第一组中间结果写入reg(0),reg(1),reg(4),reg(5);第一组中间结果写入reg(2),reg(3),reg(6),reg为第三组中间结果写入reg(8),reg(9), reg(12),reg(1 3):第四组中间结果写入reg(10),reg (11),reg(14),reg (15);……。总共进行24次写操作。
2) 读操作
读操作与写操作的情况类似,不同的是在一组16点FFT运算中,读操作使能要比写操作使能慢7个时钟周期,这是因为要等第一级蝶形运算结果写入存储器之后,才能从存储器中读取中间结果作为下一组蝶形运算的输入数据。

data0 data_0
data1 data_1
data2 data_2
data3 data_3
oe2
we2
i
ok

图4.3 FIFO存储器

1.data0,datal,data2,data3为上一次蝶形运算中间结果,在读使能信号下写入存储器。编程过程中分别用WR_EN,WR_ACK,WR_ERR,WR_COUNT代替,明了。
2.data_0,data_l,data_2,data_3是进行下一次蝶形运算的输入数据,通过三态缓冲器与蝶形运算单元的输入端口相连。
3.oe2,we2为读写使能信号,高电平有效。
4.ok为高电平时,输出16点FFT运算结果。
5.y0_r,y0_im,yl_r ,yl_im为FFT输出。
FIFO存储器仿真结果如图4.4所示:
图4.4 FIFO存储器仿真结果

4.2.3 FFT运算部分
IP核具有如下特点:具有可配置性,以满足不同设计的需要;标准接口;遵守设计规则,可确保IP核时序收敛,功能正确;交付的数据、资料完整方便芯片的集成过程。IP核设计的过程应该如下:1.核设计过程的第一步四定义核关键特征。这些关键特征包括核基本功能和可配置参数等信息,以便将来可被用于不同的应用系统中。定义核关键特征需要对核的应用模型有全面的了解。2.规定核制定设计规范是核设计过程的第二步,主要开发出详细的设计功能规范、IP验证规范和项目中其他部分设计计划。3.IIP和VIP设计验证:定义规范和设计规划后,设计团队就可以开始进行核的详细设计和验证了。4.生产,设计完成后,对它进行测试知道最终交付。5.Alpha测试产品发布,经过测试后的版本,最终形成可用版本。此设计流程可用图4.5表示:

图4.5 IP核设计流程

本论文FFT运算部分采用Xilinx公司所设计的IP核,用Core Genarater生成所需要的基二浮点运算的IP核。其中的设置过程这里不再赘述,图4.6给出了IP核生成过程的一个步骤:

图4.6 IP核生成过程中设置参数图

IP核设置完成后,通过仿真验证其正确性,其过程如图4.7所示:

图4.7 FFT运算单元仿真波形

所有的模块都编写好后,先生成一个Project,然后调用写好的各个模块组成一个完整的FFT运算单元。

4.2.4 控制器的设计
有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点,状态机的工作方式是根据控制信号按照预先设定的状态进行顺序运行的,状态机是纯硬件数字系统中的顺序控制电路,在运行方式上类似于控制灵活和方便的CPU,而在运行速度和工作可靠性方面都优于CPU.状态机结构模式相对简单,设计方案相对固定,容易构成性能良好的同步时序逻辑模块,这对于对付大规模逻辑电路设计中令人深感棘手的竞争冒险现象无疑是一个上佳的选择。
一般的状态机包含说明部分、主控时序进程、主控组合进程和辅助进程几个部分。
说明部分使用TYPE语句定义新的数据类型,此数据类型为枚举型,其元素通常都用状态机的状态名定义。状态变量应定义为信号,便于信息传递,并将状态变里的数据类型定义为含有既定状态元素的新定义的数据类型。
主控时序进程负责状态机运转和在时钟驱动下负责状态转换。状态机是随外部时钟信号以同步时序方式工作的。因此状态机中必须包含一个对工作时钟信号敏感的进程作为状态机的“驱动泵”,时钟clk相当于这个“驱动泵”中电机的驱动功率电源。
有限状态机分为Mealy型和Moore型两种,两种类型都由一个时钟来触发,输入和当前状态的某种组合决定了次态。
两种模型的区别在于:在Mooer机中,输出仅是当前状态的函数,这类状态机在输入发生变化后还必须等待时钟的到来,时钟使状态发生变化时才导致输出变化;而在Mealy机中输出是当前状态和输入的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。
本设计中的FFT控制器的输出是由现态决定的,属于Moore型状态机。
控制器在时钟信号的作用按状态的先后顺序翻转,实现对读取、计算、存储等操作的。控制器通过一个有限状态机(FSM)来实现。通过有限状态机状态的输出分别控制各部分的工作。控制器启动信号到来之后,控制器开始工作,实现对存储器单元、蝶形运算单元、ROM因子表以及三态门的控制,使蝶形运算、读取数据、存储数据等操作有序地、协调地工作,从而实现FFT运算的正确输出。
完成一个蝶形运算,首先从存储器中读取数据,然后蝶形单元进行计算,最后将结果存入存储器中,即每个完整的蝶形运算包含3个状态。对于16点FFT,一共包含4级,每一级有8个蝶形运算,完成一组16点FFT需要进行读取数据32次,写入数据32次,进行蝶形运算32次,加上一个FFT输出标志状态(完成状态),那么一共需要32×3+1=97个计算时钟周期。
但是仔细分析后发现,当进行第一级的蝶形运算的时候,在向存储器2中存入运算结果的同时,可以从采样存储器中读取数据,因为它们是互不影响的;第二级和第三级蝶形运算的输入数据和输出数据虽然都是在存储器2中读取和存储,但是由于读取和存储数据的地址是不相同的,这样读取和存储可以同时进行,它们也是互不影响的,把这类同时读写的状态定义为:存储(读取)。这样前三级每一级就可以节约8个时钟周期的时间,最后一级即第四级节约7个时钟周期,所以完成一组16点FFT,运算,实际上只需要97-3×8-7=66个状态时间,所以此FFT控制器提高了FFT运算的速度。控制器的状态转移图如图4.8所示:
下面介绍控制器中状态的循环控制。
x,y为内部计数器,对控制器状态的翻转起着决定作用,具有相当重要的地位。x=8为第一级蝶形运算结束标志信号.y=24为最后一级蝶形运算结束标志。控制器在每次进入calculatel状态后判断计数器x的数值,以决定下一状态。当计数器x的值介于0到7之间时,控制器状态在calculatel与readl_write两个状态之间循环,循环的次数与FFT点数有关,以16点FFT为例,第一级共有8组运算,控制器状态在calculatel与readl_write之间循环7次之后,跳出此循环,控制器进入read2_write状态。

图4.8 控制部分状态转移图

类似地,控制器在每次进入。calculate2状态后判断计数器y的数值,以决定下一状态。
当计数器y介于0到17之间时,此时系统刚刚完成最后一级的第一组蝶形运算,控制器状态在calculate2与read2_write两个状态之间循环,一共循环17次。当y=18时,跳出此循环,控制器进入read2_write_export状态。
计数器Y于18到23时,控制器状态在。calculate2与read2_wirte_export两个状态之间循环。上面已经介绍过,此状态三个操作同时进行,当Y=24时,跳出此状态,控制器进入write32 export状态。
对于x,如果次态为calculatel,则x自动加1;如果次态为idle,则x被复位0,其他状态x值保持不变;
对于Y,如果次态为alculate2,则Y自动加1,其他情况与x类似。
控制器实现框图如图所示:

oe1
rst en
we2
oe2
ready oe3
en1
en2
ok
Clk

图4.9 控制器

1.rst为复位控制信号,当rst= ‘1’ 时,把控制器复位为空闲状态。
2. ready为启动信号,与存储器1相连。
3.clk为时钟,控制器在每个时钟的上升沿从次态转变为现态。
4.oel信号,高电平有效,控制存储器1读取数据使能。
5.en信号,高电平有效,控制蝶形运算单元使能。
6.we2, oe2,信号,高电平有效,控制存储器2读写使能。
7.enl,en2为两组三态门控制信号,高电平三态门导通,低电平高阻状态。
8.ok信号,高电平有效,输出FFT运算结果。
根据FFT状态机转移图,列出控制模块在各个状态下输出信号的真值表,如表
4.1所示:

表4.1 控制器真值表
状态 oel en we2 oe2 oe3 enl en2 ok
Idle
read1
calculate1
calculate2
read1_write
read1_write_export
write_32_export
before_finish
finish 0 0
1 0
0 1
0 1
1 0
0 0
0 0
0 0
0 0 0 0
0 0
0 0
0 0
1 0
1 1
1 1
0 0
0 0 0 0
1 1
0 1
0 0
1 1
1 0
1 0
0 0
0 0 0 0
0 0
0 0
1 0
0 0
1 0
1 1
0 1
1 0

4.3 NIOS控制器
Nios控制单元核心为使用FPGA实现的处理器Nios。Nios是Altera公司提供的基于Harvard结构的RISC通用处理器IP Core,目前最新版本为3.0,有16位和32位两个版本,两个版本均使用16位的RISC指令集,差别主要在于系统总线带宽。在系统开发中使用Nios,可以根据需要自行配置处理器的硬件模块,Nios可设置片内通用寄存器数目多达512个,开发者可在FPGA容量允许范围内自由配置处理器的CACHE大小、指令集ROM大小、片内RAM和ROM大小、10引脚数目和类型、中断引脚数目、定时器数目、通用串口数目、扩展地址和数据引脚等处理器的性能指标,而且可以在处理器ALU中直接加入自行定义的数字逻辑并添加自行定义的处理器指令,可见使用Nios具有极大的灵活性和很高的处理效率。使用Altera公司提供的SOPC Builder开发工具,开发者可以快速开发出满足设计需要的处理器。该开发工具支持C, C++语言并提供了常用的功能类库,开发者可以直接使用C, C++语言进行系统软件开发,然后在线调试自行设计的Nios处理器和软件,当软件达到设计要求时可通过该工具将执行代码转换成FLASH文件格式或HEX文件下载到启动FLASH或FPGA器件中,使所设计的系统可以独立运行[13]。本系统使用的Nios为32位版本,约使用了2093个逻辑单元,具有16KROM和4KRAM,设计带有3个中断引脚、1个通用定时计数器和1个通用串n,与FFT运算单元整合在同一FPGA芯片中。该处理器的主要工作为控制AD采样芯片、控制LCD显示、响应键盘输入、控制网络通讯接口和控制FFT运算。系统的主要控制功能均由该处理器实现,由于繁重的FFT运算工作由FFT运算处理单元承担,所以该处理器无需具备硬件浮点单元,也无需具有强大的运算处理能力。
4.4 显示单元
显示单元:显示单元为一块普通点阵LCD显示屏,可以显示各种谐波分析的数据和简单波形。该LCD显示屏由处理器直接控制。本设计所用的是SOPC单元实验箱的整个NIOS模块,此模块包括一个液晶显示单元,可以作为本设计的显示单元使用,或者直接在PC机上利用显示器显示。
4.5 FFT运算单元工作流程
从AD采样单元传送的数据按照线路分块连续存放在采样数据RAM中,即从地址0F00H到00FFH按顺序存放线路1的256个整数采样数据,从地址0100H到01FFH按顺序存放线路2的256个整数采样数据,以此类推,从0F00H到0FFFH存放线路16的256个整数采样数据。采样数据RAM的内存单元位宽为16位。
开始进行FFT运算时,按照线路号顺序进行,即首先进行线路1数据的运算,然后是线路2,直到线路16。首先将被分析线路数据送至整数浮点数变换单元变换成为标准单精度浮点数,然后进行加窗处理,按照FFT变换的地址规律将加窗处理后的数据输入相应的运算数据DRAM地址中。根据FFT的地址规律,最终结果的序号和对应的输入数据的序号恰好为其二进制数从左到右取反置,例如最终结果X[1]对应的输入数据序号为00000001B从左到右取反置,为1000000013即X[128],该地址由地址产生器负责生成。
在将全部256个数据传送进入运算数据DRAM后,系统开始蝶型迭代运算,每个时钟周期地址产生器生成一个蝶型运算对应数据地址,然后将对应地址存放的数据分实部虚部数据同步输入蝶型运算单元,同时蝶型运算的结果可在同一时钟周期内分实部虚部数据同步回写入运算数据DRAM,在同一时钟周期内回写的结果并非当前输入数据的运算结果,而是前若干周期输入的数据运算结果。
蝶型运算单元具有多个硬件浮点数加法器和硬件浮点数乘法器,可以并发进行浮点数的运算。运算需要的旋转因子由旋转因子ROM取得,因为三角函数值的运算极为消耗系统资源,三角函数值数量较少且需重复使用,因此预先计算所需的三角函数值并存入ROM中供运算时使用,可以显著减少系统运算时间,并有效节省系统资源。运算时需要的对应旋转因子存放地址由地址产生器计算产生。
FFT运算结束后,将变换结果前50个数据的实部和虚部浮点数结果按顺序存入结果FIFO中。当全部16路数据分析结束后,控制单元告知该周期的FFT运算结束,从结果FIFO取走分析结果。然后控制单元开始等下一运算周期数据输入。
FIFO存储器的测试测试波形如图4.11所示:

图4.11 FIFO存储器测试波形

第五章 结 论

本论文首先阐述了电网谐波的产生主要原因,谐波的危害性以及谐波测量在电力系统中的重要性;分析了当前谐波测量的主要方法,叙述了各种主要方法的优缺点;探讨了在谐波测量中使用FPGA现场可编程器件的优缺点。本论文主要研究了在谐波测量仪器中运算单元FFT(快速傅立叶变换)各部分模块的软件设计和谢波分析系统的总体硬件设计。主要工作有:
1.分析比较了传统测量谐波装置和基于FPGA的新型谐波测量仪器的特性目前谐波测量的主要方式有:a.采用模拟滤波器测量谐波:该检测方法的优点是电路结构简单,造价低,输出阻抗低,品质因素易于控制。但也有很多缺点,如滤波器的中心频率对元件参数十分敏感,模拟元器件的特性会随温度等外界环境因素变化而变化,性能受外界影响较大。b.基于傅立叶变换的谐波测量:根据傅立叶变换理论,将模拟信号经采样变成离散化数字序列信号后,输入微型计算机进行DFT变换,计算得到基波和频率为基波频率整数倍的各次谐波的幅值和相位,然后将计算获得的数据显示在屏幕上或存放在磁盘中供将来统计使用。
2.研究了使用FPGA实现FFT算法的优缺点。结合FPGA硬件特点进行FFT运算主要的优点有:a.运算速度快。使用FPGA进行FFT运算的速度远大于通用CPU和DSP芯片。b.地址倒序运算方便。使用FPGA实现地址的倒序非常简单,只需指定两个寄存器倒序相连即可。c.系统总线资源占用少。使用FPGA进行FFT运算时由于其RAM嵌入在FPGA中,使用内部总线而无需读写外部RAM,从而不占用系统宝贵的总线资源.d.运算精度高。在FPGA中使用浮点数时系统精度高,且FPGA具有丰富的连线资源,方便FFT处理单元内部模块间和其他单元间的连线。e.运算效率高。使用FPGA设计FFT运算时,只需简单使用计数器结合状态机,通过简单地址映射方式实现内存地址操作,运算效率大为提高;对比分析了主要硬件实现架构的性能和优缺点,提出了一种基于浮点数的FFT算法FPGA实现架构。通常采用的硬件架构可分为串行架构、并行架构和混合架构。上述架构的区别主要在于运算速度和所需门电路数量的侧重点不同。串行架构主要侧重于门电路数量的节省,并行架构主要侧重于运算速度,而混合架构则在两者之间进行平。
试验结果表明该设计比常规FFT运算更加快速可靠。
3.最终通过以上工作设计实现了一种新型的基于FPGA的谐波测量仪,该仪器的采样单元通过实际形式试验检验,符合设计要求。该仪器的FPGA单元通过系统仿真,符合设计要求。
本论文提出了基于FPGA的新型谐波测量仪的设计方法,并对FFT设计部分进行了计算机仿真,实验结果表明了基于FPGA的FFT算法的有效性。这些工作取得了一定的成果,但由于刚刚起步,仍然存在许多问题有待于改进,主要有以下几点:
1.对FFT的几种硬件实现方式的研究还有待深入,如果把本文对FFT处理器结构上的改进与级联处理机以或并行处理机结合,处理器的速度还会得到较大的提高,因为级联处理和并行处理的蝶形运算单元较多,可以同时处理更大容量的数据,而顺序处理机只需一个蝶形运算单元。
2.进一步提高FFT算法的运算能力,在保证运算的准确度和门电路数目不大幅度增加的前提下,提高系统的运算能力,可在相同时间内进行更多点数的FFT运算或更多线路数据的处理。
3.仿真结果表明设计的正确性,但是这是在一定的误差范围内的。如何提高数据的精度也是以后研究的一个重点,比如采用浮点数来进行研究与设计。仅进行仿真分析也是不够的,在进行实验室模拟试验会更准确,更能反映器件的性能与时延。
4.将本文设计的新型谐波测量仪用于实践,并在实际应用中不断改进与完善本仪器。

参考文献

[1] 王兆安. 谐波抑制和无功补偿[M]. 北京: 机械工业出版社,2002
[2] 吕润如. 电力系统高次谐波[M]. 北京: 中国电力出版社,2004
[3] 电力系统的谐波及治理[EB/OL]勤镐工控(2005/06/27)
[4] Tanenbaum Andrew S. Woodhull Albert S. Operating System Design and Imple-mentation [M]. Prentice Hall
[5] Lenorer. Mullin and Sharoncc Small. FFT Easy Ways to a Faster FFT. Journal of Mathematical Modelling and Algorithm sl.2002:193-214
[6] James R .Armstrong,FGail Gray,李宗伯,王蓉晖等译.VHDL设计表示与综合. 北京:机械工业出版社,2002
[7] 黄智伟等.FPGA系统设计与实践,[M]北京:电子工业出版社,2005.1~397
[8] Nios3.0 CPU Data sheet al.USA:A ltera Corporation, 2003,2-5
[9] 刘国栋,陈伯孝,陈多芳.FFT处理器的FPGA设计.航空计算技术,2004 43(3) : 101-104.
[10] MAX125 Data sheet al USA: MAXIM ,Inc,1998,2-7
[11] 刘隽等.谐波分析仪的设计,[J]单片机与嵌入式系统应用 2004.3:60-64
[12] 祁舒喆.基于FPGA的谐波分析仪的研究与设计[EB/OL].
http: //202.197.69.3:8088/cddbn/cddbn.Articles/Y924005/PDF/index.Htm,2006-06-06/2007-05-29
[13] 高瞻.FFT处理器设计及其应用研究[D]:[硕士学位论文].成都:西南交通大学,2006.
[14] 胡德俊.FFT处理器的设计与实现[D]:[硕士学位论文].合肥:合肥工业大学,2006.
[15] 乔卢峰等. VHDL数字电路设计教程,[M]北京:电子工业出版社,2005.1~265
[16] 曾繁太,陈美金等.VHDL程序设计,[M]北京:清华大学出版社,2000.1~395

附 录 一
图表索引:
表3.1 谐波测量仪器的允许误差 16
图3.1 谐波分析仪信号处理框图 16
图3.2 系统总体设计框图 17
图3.3 采样单元原理图 18
图3.4 FFT处理单元结构图 18
图3.5 设计流程 20
图3.6 设计过程中编译完成后界面 21
图4.1 采样数据存储器 25
图4.2 采样数据存储器仿真结果 27
图4.3 FIFO存储器 28
图4.4 FIFO存储器仿真结果 28
图4.5 IP核设计流程 29
图4.6 IP核生成过程中设置参数图 30
图4.7 FFT运算单元仿真波形 31
图4.8 控制部分状态转移图 33
图4.9 控制器 34
表4.1 控制器真值表 35
图4.10 控制器仿真波形 35
图4.11 FIFO存储器测试波形 37

附 录 二
部分程序源码:

基于FPGA+DSP的MPEG-4视频编解码的研究与设计

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 18-09-2009

标签:, , ,

0

摘 要 III
ABSTRACT IV
第一章 绪 论 1
1.1 研究背景 1
1.2 视频压缩研究 1
1.2.1 视频压缩的必要性和可行性 2
1.2.2 视频压缩的基本思想 2
1.2.3 离散小波变换 2
1.3 多媒体视频压缩的标准 3
1.3.1 H.261与H.263标准 3
1.3.2 JPEG标准 3
1.3.3 MPEG系列标准 3
1.3.4 H264/AVC 4
第二章 MPEG-4编码与硬件技术研究 5
2.1 MPEG-4编码研究 5
2.1.1 AV对象 5
2.1.2 物体分割 6
2.1.3 视频编码 8
2.1.4 场景描述 11
2.2 DSP技术研究 11
2.2.1 可编程DSP芯片研究 12
2.2.2 TMSC320C6000 芯片研究 12
2.3 FPGA 技术研究 14
2.3.1 FPGA芯片研究 14
2.3.2 Spartan-II系列FPGA研究 14
第三章 整体设计 16
3.1 CCS和评估板应用 16
3.1.1 熟悉和应用CCS 16
3.1.2 ICETEK-DM642-PCI评估板应用 17
3.2 任务分析 18
3.2.1 方案比较 18
3.2.2 系统设计框图 19
3.3 任务调度 20
3.4 整体设计 22
3.4.1 整体设计流程图 22
3.4.2 整体数据流程 23
第四章 模块设计 24
4.1 输入模块 24
4.1.1 模块功能 24
4.1.2 编程思路及流程图 24
4.1.3 模块仿真 25
4.2 输出模块 25
4.2.1 模块功能 25
4.2.2 编程思路及流程图 27
4.2.3 模块仿真 27
4.3 YUV422转换为YUV420模块 27
4.3.1 模块主程序 28
4.3.2 模块流程图 29
4.4 A/D、D/A转换 29
4.5 VOP编码模块 30
4.5.1 编程思路 30
4.5.2 编程流程图 31
4.5.3 运动信息编码模块 32
4.5.4 纹理编码 34
4.6 解码设计 38
第五章 总结与展望 39
5.1 系统设计改进之处 39
5.2 收获和心得 39
5.3 工作展望 40
致 谢 41
参考文献 42
附 录 43
附录一 全文图索引 43
附录二 VOP平面编码程序 44
附录三 运动估计与补偿程序 47
附录四 纹理编码程序 47

摘 要
作为新一代的编码标准,MPEG-4同以前标准的最显著的特点在于它是采用基于对象的编码理念。其基于对象的数据压缩、灵活的码流伸缩性以及可交互性的优点使其可以适应多媒体数据压缩技术的发展趋势。在解决MPEG-4标准的方案中,更多的人趋向于采用DSP芯片来实现。DSP芯片是一种特别适合于进行数字信号处理运算的微处理器。同时,基于高性能、灵活性、低开发成本的FPGA也特别适合许多视频和图像处理设备使用。
本文在研究MPEG-4编解码算法基础上,分析基于DSP+FPGA的MPEG-4视频压缩算法的可行性和优越性。并着重研究MPEG-4编码原理中视频对象分割技术、VOP平面编码算法等,并在模块的设计中实现了VOP平面的编码,实现了运动信息编码和纹理编码。
在熟悉和掌握DSP芯片运行环境CCS以及FPGA技术的基础上,采用DSP芯片作为核心处理器、FPGA芯片作为视频数据采集和预处理的工具、SDRAM作为视频数据处理存储器,来设计MPEG-4视频压缩系统。此系统完成了视频数据输入、A/D和D/A转换、视频部分编码、数据输出功能。
关键字:MPEG-4,DSP, FPGA,视频编码

ABSTRACT
As the new generation of coding standard, the most remarkable character of MPEG-4 lays in the object-based coding idea. Its merits are object-based compression, the nimble symbol stream elasticity as well as the interaction. These advantages enable it to adapt the tendency of the multimedia data compression technology development. In solving the MPEG-4 standard plans, more people tend to use the DSP chip to realize. The DSP chip is one kind of the microprocessor which specially suits to carry the digital signal processing operation. At the same time, flexible, low development cost FPGA based on the high performance, also specially suits many video frequencies and the picture handing equipments.
Based on studying the decoding algorithm foundation of MPEG-4,this article analyzes the feasibility and the superiority of MPEG-4video compression algorithm which based on the DSP +FPGA. And emphatically studies the video frequency object division technology in the MPEG-4 coding principle, the VOP plane code algorithm and so on, and has realized the VOP plane coding in the module design, the movement information coding and the texture coding.
After be familiar with and grasping CCS which is the DSP chip movement environment as well as the FPGA technology foundation, I design the MPEG-4video frequency compression system. The system includes the DSP chip as the core processor, the FPGA chip as the video frequency data acquisition and the pretreatment tool, SDRAM as the video frequency data processing memory. And this system has completed the input of the video data, A/D and D/A transforms, the coding of the video partial, output function of the data.
KEY WORDS MPEG-4, DSP, FPGA,Video coding

第一章 绪 论
21世纪的人类社会是信息化社会,数字化后的信息,尤其是数字化后的视频和音频信息具有数据海量性,它给信息的存储和传输造成较大的困难,成为阻碍人类有效地获取和使用信息的瓶颈问题之一[1]。因此,研究和开发新型有效的视频数据压缩编码方法成为必要。
1.1研究背景
传统的压缩编码是建立在仙侬(Shannon)信息论的基础上,它以经典的集合论为基础,用统计概率模型来描述信源。但是,它未考虑信息接受者的主观特性以及事件本身的具体含义、重要程度和引起的后果。之后,压缩编码的发展以仙侬信息论为出发点,不断完善。
国际标准化组织于1986年成立了运动图像压缩编码组织MPEG(Moving Picture Expert Group ),主要致力于制定运动图像的压缩编码标准。1993年8月正式编辑出版了MPEG-1 ISO/IEC 11172,1994年又编辑出版了MPEG-2 ISO/IEC 13818。实际上,这两个标准的压缩率在存储媒体上已经是足够了,并且MPEG-2标准除了作为DVD的指定标准外,还广泛用于广播、有线电视网、电缆网络以及卫星直播(direct broadcast satellite)提供广播级的数字视频。
但是,随着互联网的飞速发展,消费类电子、电视电影广播、计算机技术日益紧密地结合起来。与此同时,人们也不再满足于只用简单的文字、声音进行交流,逐渐趋向于用图、文、声、动画、视频等多种媒体进行综合交流。而MPEG-2提供的压缩比就不能够满足多媒体信息日益发展的需求。于是在这种情况下,MPEG组织开始致力于MPEG-4标准的制定。MPEG-4与MPEG-1和MPEG-2有很大的不同,它为多媒体数据压缩编码提供了更为广阔的平台,它定义的是一种格式、一种框架,而不是具体算法,它希望建立一种更为自由的通信与开发环境。
调查显示:在过去几年中,DSP产品性能提高的一个突出表现是计算和控制能力有了大幅度提高,使其可以完成更多、更复杂的信号处理和控制功能。在性能提高的同时,DSP芯片的价格却不断下降,从而使从电动牙刷到复杂的工业控制等范围更广的电子产品可以采用DSP芯片。这样也使得用芯片来实现MPEG-4算法成为现实。
1.2视频压缩研究
1.2.1 视频压缩的必要性和可行性
多媒体中的一幅640×480的256色彩图像所占的数据量为300kB;动态视频要求每秒播放25~30帧图像,因而以640×480的窗口播放256色彩色视频图像、具CD音质的立体声,就要求每秒处理9MB的数据,即使采用一片容量为650MB的CD-ROM盘也仅能存储约75.6秒的动态视频。同时,普通PC机ISA总线的数据传输率最大只能达到5MB/秒,由此可见,大数据量的视频数据给存储器的存储容量、通信干线信道的带宽以及计算机的处理速度带来极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是跟不上需求的,因此就需要对视频数据进行压缩来降低数据量。
视频数据压缩的可能性是:一、视频信号在相邻像素间、相邻行间、相邻帧间存在强相关性,表现为空间冗余和时间冗余,并且这种冗余度在编解码后可以无失真地恢复;二、可以利用人的视觉特性,在图像变化不被觉察的条件下减少量化信号的灰度级之类,以一定的客观失真换取数据压缩。人眼对图像的细节分辨率、运动分辨率和对比度分辨率的感觉都一定的界限。只是对图像处理时引入的失真不易察觉,仍会认为图像是完好的或足够好的。因此可以在满足对图像质量一定的要求的前提下,减少表示信号的精度,实现数据压缩。

1.2.2 视频压缩的基本思想
任何压缩机制的根本思想都是除去数据中存在的相关性。所谓相关性,就是能够根据给出的一部分数据来判断出其相邻的数据。压缩机制通常可以分为两种——有损压缩和无损压缩。在无损压缩中,我们关心的是精确重建没有丢失的数据,无损压缩通常被用于文本文件的压缩中。对于有损压缩,我们允许压缩后产生质量上的误差。有损压缩机制的优点是可以得到比无损压缩高得多的压缩比,但是它只能用于可以用近似的数据代替原始数据,而这种相近数据又是容易被压缩的情况。举例来说,一副和原图像在视觉上没有区别的图像可以看作是原图像的近似。以下我们着重介绍下近年来兴起的小波变换。

1.2.3 离散小波变换
近几年,人们开始着眼于利用小波变换进行变换编码。图像压缩中使用的离散正交小波一般是由滤波函数构造的,其基本思想是利用“劈方法”将给定的数字信号矩阵分解为一个高通和一个低通的子信号,且二者是正交的。在必要时可以递归地对每一个子信号劈下去,一直到需要的信号带宽为止,然后再进行分析和运算。而DCT变换实际上较适用于信号带宽窄的图像,这类图像经变换后其系数矩阵中的非0值将分布在的限有局部区域内,因而可以取得比较好的压缩效果。而当信号带宽宽时,其图像矩阵经DCT变换得到的系数矩阵中,非0值将分布在相当大的区域内,因而较难取得好的压缩效果。
小波变换是一种在频率上伸缩自由的变换,当信号带宽较窄时,它可以通过缩小的方法使窄带信号的刻划较为精细;当信号带宽较宽时,它强以通过放大的方式使描述能够满足精度的要求。与Fourier分析和Gabor变换相比,小波变换是时间(空间)频率的局部化分析,它通过伸缩平移运算对信号逐步进行多尺度细化,最终达到高频处时间细分和低频处频率细分,能自动适应时频信号分析的要求,从而聚焦到信号的任意细节。解决了Fourier分析不能解决的许多问题。目前许多小波算法的软件实现已经很成熟了,但是很难达到实时性的效果。而在硬件方面,随着数字信号处理器(DSP)和现场可编程门阵列器件(FPGA)的发展,采用DSP+FPGA的数字硬件系统显示其优越性,可以把二者的优点结合在一起,兼顾速度和灵活性,因此DSP+FPGA结构正愈来愈得到人们的重视,应用的领域也越来越广泛。基于DSP+FPGA系统最大的优点是结构灵活,有较强的通用性,适合于模块化设计,从而能够提高算法效率;同时其开发周期较短,系统容易维护和扩展,适合实时信号处理。
1.3多媒体视频压缩的标准
编码方法的同时,压缩标准也经历了很大的发展。大致如下:
1.3.1 H.261与H.263标准
H.261标准是为ISDN设计,主要针对实时编码和解码设计,主要采用运动补偿的帧间预测、DCT变换、自适应量化、熵编码等压缩技术。 只有I帧和P帧,没有B帧。H.263标准是甚低码率的图像编码国际标准一方面以H.261为基础,以混合编码为核心,另一方面,H.263也吸收了MPEG等其它一些国际标准中有效、合理的部分,如:半像素精度的运动估计、PB帧预测等。
1.3.2 JPEG标准
JPEG标准的名称为“连续色调静态图像的数字压缩和编码”,既适用于灰度图像,又适用于彩色图像。为适应各种应用的不同要求,JPEG开发了两种基本的压缩方法,即基于DCT的有损压缩方法和基于预测方法的无损压缩方法。
1.3.3 MPEG系列标准
1. MPEG-1
为了提高压缩比,帧内/帧间图像数据压缩技术必须同时使用。帧内压缩算法与JPEG压缩算法大致相同,采用基于DCT的变换编码技术。帧间压缩算法,采用预测法和插补法。
2. MPEG-2
MPEG-2标准是针对标准数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定。MPEG-2不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善。MPEG-2特别适用于广播级的数字电视的编码和传送,被认定为SDTV和HDTV的编码标准。MPEG-2图像压缩的原理是利用了图像中的两种特性:空间相关性和时间相关性。
3. MPEG-4
MPEG-4与MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具体压缩算法。MPEG-4的编码理念是:MPEG-4标准同以前标准的最显著的差别在于它是采用基于对象的编码理念。MPEG-4视频标准提供在多媒体环境下视频数据的有效存储、传输和操作等方面的功能[2]。
1.3.4 H264/AVC
H.264集中了以往标准的优点,并吸收了以往标准制定中积累的经验,采用简洁设计,使它比MPEG-4更容易推广。H.264创造性了多参考帧、多块类型、整数变换、帧内预测等新的压缩技术,使用了更精细的分象素运动矢量(1/4、1/8)和新一代的环路滤波器,使得压缩性能大大提高,系统更加完善。

第二章 MPEG-4编码与硬件技术研究
2.1MPEG-4编码研究
为了支持对动态视频内容的访问,MPEG-4中引入了对象的概念,即在编码时将一幅景物分成若干在时间和空间上相互联系的视频音频对象,分别编码后,再经过复用传输到接收端,然后再对不同的对象分别解码,从而组合成所需要的视频和音频。MPEG-4标准将众多的多媒体应用集成于一个完整的框架内,旨在为多媒体通信及应用环境提供标准的算法及工具,从而建立起一种能被多媒体传输、存储、检索等应用领域普遍采用的统一数据格式。
2.1.1 AV对象
MPEG-4最显著的差别在于它是采用基于对象的编码理念[3]。它引入视频对象,使得更多的交互操作成为可能。视频对象的基本单位是原始视频对象,它们可能是一个没有背景的说话的人,也可能是这个人的语音或一段背景音乐等。一个MPEG-4视频场景包含有一个或者多个视频对象。每一个视频对象都用时域和空域信息来表明特征,使用者可自由存取操作这些视频对象,而组成自己想要的画面,如图2.1所示。

图2.1 不同对象组成的场景
每个对象之间的关联,可以建立出树状的结构图,如图2.2所示

图2.2 树状结构
2.1.2 物体分割
在压缩之前,需要先将影片中各个主要物件区分开来,由此设计到视频对象分割技术。在MPEG-4标准出现后的初期,由于视频对象分割技术的不成熟和算法的复杂度,使得MPEG-4标准很难推广。于是,许多技术人员都在极力找出一种最可行,效果最好的视频对象分割算法,其中大致分为自动和半自动的算法。结合空间和时间上的信息所提出的方法也不少,此类方法从时间上求得 change detection mask,在空间上则依据对象的边缘和特征将视讯影像分割出有意义的区块[4]。将方法内容整理如下:
1. 时间领域上的分割
此方面采用统计的方式分析加上change detection 运算,前置处理中包括了运动估计和运动补偿,所求得的MAD(mean absolute difference)可用来判断场景是否改变,如果场景有改变则不做时间上的分割,而运动补偿则由一组参数来判断是否大于所设定的threshold,大于即判断出镜头有移动而需采用运动补偿。接着求得两张连续影像的差异影像,利用一个大小为N×N的window 一一观察每个区块pixel 强度与平均值的差异,同样的也求得原始影像中相同区块大小的差异值,利用此两个数值的比值来判断是否大于所设定的threshold,如果大于则可判断为有移动的前景,另外则可判断为静态的背景。最后可得到如下的change detection mask。如图2.3所示

图2.3 时间域的物体分割
2. 空间领域的分割
此方面分为如下的四个处理过程:
(1) Image Simplification
此过程利用Morphological opening 和closing 运算的组合重建一个保留边缘且细部质感模糊的影像,做为下个步骤的输入影像,如图2.4所示。
(2) Gradient Approximation
将上个步骤的影像再利用Morphological gradient operator 运算,便可做为下个步骤分水岭算法将相同类区块分割的判断依据。为了避免一些过小的gradient 造成over segmentation 的问题,最后在将小于10 的gradient value设为0,以得到较好的分割结果。

图2.4 左图为原始影像,右图为Simplify 后的影像
(3)Watershed Detection
利用上个步骤所得的影像,找到各个local minima 做为区域分割的起点,当所储存的水要满溢到另外的储水池时则建出一道水门,等到所有储水池的水都达到相同高度即可得到整个影像的区块分割结果。如图2.5所示。

图 2.5 分水岭算法产生的效果
(4)Region Merging
经过分水岭算法后的影像已将原始影像做区块的划分,我们可以发现其中仍有许多小区块或是无意义的区块。接着在此步骤中将藉由区块间相似度的评估条件来合理合并小于某大小threshold 的区块。此评量标准包括动作移动向量的相似度和区域色彩的平均值相似度。
3. 结合时间和空间分割的结果
经过空间上和时间上的分割过程后,将各自得到的结果最后在整合即可得到视频对象分割的效果。如图2.6所示。
2.1.3 视频编码
MPEG-4也支持对自然和合成的视觉对象的编码。合成的视觉对象包括2D、3D动画和人面部表情动画等。在基于对象的视频编码中,编码的基本单元是视频对象。为了实现基于对象的表示,MPEG-4定义了视频对象(VO, Video Object)、视频目标分辨层(VOL, Video Object Layer)和视觉对象平面(VOP, Video Object Plane)等。概念。VO 是场景中的特定目标, 它包括: 视频数据、静态纹理数据、2D网格数据、人脸活动参数数据等。VOL是VO 的时间或空间的伸屈性描述,VO 的描述可以在不同时间分辨率和空间分辨率上进行。VOP 是VO 在某个时间的存在,是VO 在不同VOL 层的时间序列。某一帧中的VO就是VOP,即VO 是以VOP 的形式出现的。因此,MPEG- 4 的视频编码也就是针对该时刻VO 的形状、运动和纹理这三类信息进行的。图2.7为MPEG-4编码框图[5]。

图2.6 结合时间和空间分割的效果

图2.7 MPEG- 4编码框图
以下研究分析在MPEG-4标准中涉及到的运动信息编码、纹理编码、形状编码。
1. 运动信息编码
类似于现有的视频编码标准,MPEG-4采用运动预测和运动补偿技术来去除图像信息中的时间冗余成分,而这些运动信息的编码技术可视为现有标准由任意形状的VOP的延伸。VOP的编码有3种模式,即帧内编码模式、帧间预测编码模式、帧间双向预测编码模式。
在MPEG-4中运动预测和运动补偿可以是基于16×16像素块的,也可以是基于8×8像素块的。为了能适应任意形状的VOP,MPEG-4引入了图像填充技术和多边形匹配技术。对标准宏块的运动估计和补偿,可以采用传统的基于块的运动估计和补偿技术。而对位于VOP边界的轮廓宏块,则要采用图像填充技术,即用一定的灰度值填充轮廓宏块中位于边界以外的像素。后用“多边形”匹配技术进行运动估计和补偿。
图像填充技术利用了VOP内部的像素值来外推VOP外的像素值,以此获得运动预测的参考值。“多边形”定义了轮廓宏块中位于VOP以内的部分,而把位于VOP以外的像素排除在外。运动估计只对多边形定义的属于VOP活动区域的像素进行。对于各个帧的VOP预测仍然可以采用MPEG或H.261/3定义的前向预测或双向预测,内插技术也可以应用于VOP序列。“多边形”匹配技术则将VOP的轮廓宏块的活跃部分包含在多边形之内,以此来增加运动估计的有效性。
2. 纹理编码
一个视频平面的纹理信息可以表示为亮度Y和两个色度成分Cr、Cb。在帧内情况下,纹理信息直接包含有亮度和色度成分。在运动补偿的情况下,纹理信息表示经过运动补偿后的残差。下图说明了MPEG-4纹理编码的原理。
纹理编码的对象可以是帧内编码模式的I-VOP,也可以是帧间编码模式B-VOP或P-VOP运动补偿后的预测误差。 编码方法基本上仍采用基于8×8像素块的DCT方法。在帧内编码模式下,对于完全位于VOP内的像素块,则采用经典的DCT方法;对于完全位于VOP之外的像素块则不进行编码;对于部分在VOP内,部分在VOP外的像素块则首先采用图像填充技术来获取VOP之外的像素值,之后再进行DCT编码。帧内编码模式中还将对DCT变换的DC及AC因子进行有效的预测。在帧间编码模式下,为了对B-VOP和P-VOP运动补偿后的预测误差进行编码,可将那些位于VOP活跃区域之外的像素值设为128。此外,还可以采用SADCT方法对VOP内的像素进行编码,该方法可在相同码率下获得较高的编码质量,但运算的复杂程度稍高。变换之后的DCT因子还需经过量化、扫描及变长编码。
3. 形状编码
在MPEG-4标准中,有两类形状信息被看作是一个视频对象的继承特性。它们是二进制信息和灰度形状信息。
二进制形状信息最常用的表示是与一个视频对象平面边界大小一致的矩阵。矩形元素的取值为0或1,取值的选定依赖于像素是否在该视频对象内。二值形状信息的编码采用基于运动补偿块的技术,可以是无损或有损编码。灰度形状信息用0~255之间的数值来表示VOP的透视程度,其中0表示完全透视(相当于二值形状信息中的0),255表示完全不透视(相当于二值形状信息中的1)。
灰度形状信息是二进制形状信息的扩展,它可以用来表示透视的物体,并降低混迭的现象。灰度形状信息的编码采用基于块的运动补偿DCT方法(与纹理编码相似),属于有损编码。目前的标准中采用矩阵的形式来表示二值或灰度形状信息,称之为位图。实验表明,位图表示法具有较高的编码效率和较低的运算复杂度。但为了能够进行更有效的操作和压缩,在最终的标准中可能出现另一种表示方法,即借用高层语义的描述,以轮廓的几何参数进行表征。
MPEG-4中采用位图法来表示这两类形状信息。VOP被一个“边框”框住,同时保证边框最小。这样位图表示法实际就是一个边框矩阵,取值为0~255(或0、1),编码变为这个矩阵的编码。矩阵被分成16×16的“形状块(shape block),允许进行有损编码,这要通过对边界信息进行子采样实现,同时允许使用宏块的运动向量”来作形状块的运动补偿。
2.1.4 场景描述
MPEG- 4 的最大特点是基于对象,即将不同的视音频(AV)对象分割开来进行单独的编码。而场景描述就是用来说明如何有效地根据AV 对象的时间和空间属性将它们组织起来。场景描述规定了场景中的AV 对象的组织方式,即通过空间和时间位置的方式来实现。在编码端,将场景描述的信息进行编码,再在解码端将场景描述信息恢复,实现各个AV 对象的重构。MPEG- 4 开发了一种自己的二进制语言用来进行场景描述,这就是BIFS (Binary Format for Scene description, 二进制场景格式)。BIFS 目的就是携带场景描述信息,它实际上是一个协议:首先它规定了如何重现MPEG- 4 对象的场景图,实现对象的动画和可交互行为,以及对这些元素的发送加以时序化和同步化;其次,它还是一种有效的对数据进行重现和发送的压缩工具;另外, 它还定义了事件处理、对象组合的节点和运行规则。
2.2 DSP技术研究
随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛的应用。而DSP可编程芯片的出现极大的推动了数字信号处理的应用[7] 。
2.2.1 可编程DSP芯片研究
DSP(Digital Signal Process)芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP除了具备普通微处理器所强调的高速运算和控制功能外,针对实时数字信号处理,在处理器结构、指令系统、指令流程上具有许多新的特征,其特点如下:
(1) 在一个指令周期内可完成一次乘法和一次加法;
(2) 程序和数据空间分开,可以同时访问指令和数据;
(3) 片内具有快速 RAM,通常可通过独立的数据总线在两块中同时访问;
(4) 具有低开销或无开销循环及跳转的硬件支持;
(5) 快速的中断处理和硬件I/O支持;
(6) 具有在单周期内操作的多个硬件地址产生器;
(7) 可以并行执行多个操作;
(8) 支持流水线操作,使取指、译码和执行等操作可以重叠执行。
2.2.2 TMSC320C6000 芯片研究
1. TMS320C6000系列硬件结构
C6000系列CPU采用哈佛结构,其程序总线与数据总线分开,程序存储器与数据存储器分开,但片外的存储器及总线都不分,二者是统一的。全部存储空间(包括程序存储器和数据存储器,片内和片外)以字节为单位统一编址。无论是从片外读取指令或与片外交换数据,都要通过DMA与EMIF。在片内,程序总线仅在取指令时用到。C6000文献常把在指令执行过程中使用的物理资源统称为数据通道,其中包括执行指令的8个功能单元、通用寄存器组以及CPU 与片内数据存储器交换信息所使用的数据总线等。每组数据通路有读入及存储(写出)数据总线与片内数据存储器相连。
C6000系列CPU有2个类似的可进行数据处理的数据通路A和B,每个通路有4个功能单元(.L、.S、.M和.D)和1组包括16个(C64则有32个)32位寄存器的通用寄存器组。功能单元执行指令指定的操作。除读取(Load)和存储(Store)类指令以及程序转移类指令外,其他所有算术逻辑运算指令均以通用寄存器为源操作数和目的操作数,使程序能够高速运行。Load和Store类指令用于在通用寄存器组与片内数据存储器之间交换数据,此时2个数据寻址单元(.Dl和.D2)负责产生数据存储器地址。每个数据通路的4个功能单元有单一的数据总线连接到CPU另一侧的寄存器上(见图4-3),使得两侧的寄存器组可以交换数据。
C6000系列DSP芯片内除CPU(中央处理器)外,还包含有存储器和外设设备。它包括:
 程序读入及指令译码、分配机构:包括程序取指单元、指令分配单元和指令译码单元。程序取指单元由程序总线与片内程序存储器相连。
 程序执行机构:包括2个对称数据通路(A和B)、2个对称的通用寄存器组、2组对称的功能单元(每组4个)、控制寄存器组组和控制逻辑以及中断逻辑等。
2. TMSC320C6000系列DSP的特点
TMSC320C6000系列DSP最主要的特点是在体系结构上采用了甚长指令字(VLIW,Very Long Instruction Word)结构。是由一个超长的机器指令字来驱动内部的多个功能单元的(这也是VLIW名字的由来)。每个指令字包含多个字段(指令),字段之间相互独立,各自控制一个功能单元,因此可以单周期发射多条指令,实现很高的指令级并行效率。
编译器在对汇编程序进行编译的过程中,决定代码中哪些指令合成一个甚长机器指令,在一个周期中并行执行。这种指令上的并行安排是静态的,一旦决定,无论DSP任何时候运行,它都保持不变。VILW体系结构也可以看做是一种依赖于编译器的超标量实现方案,而且比一般的超标量结构更易于实现。C6000的VLIW采用了类RISC指令集,使用大的统一的寄存器堆.结构规整,具有潜往的易编程性和良好的编译件能,在科学应用领域可以发挥良好的作用。Tl公司配合C6000推出了世界上第一个效率可达70%~80%的汇编语言级C编译器,它产生的代码的平均效率是以往DSP编译器的3倍。C6000内部结构的主要特点包括:
(1)片内提供多种集成外设(不同芯片的资源不同)
1) 多通道DMA/EDMA控制器
2) 多通道缓冲串口(McBSP)
3) 多通道音频串口(McASP)
4) 可以访问DSP的整个存储空间的主机口(HPI)
5) 32 bit扩展总线(xBUS)
6) 32 bit/33MHz PCI主/从模式接口
7) 32 bit通用计数器(Timer) 8) UTOPIA接口
9) 通用输入,输出(GPIO)
10) I2C总线主/从模式接口支持多种复位加载模式(Boot),提供3种节电模
式控制(PowerDown)
(2)具有先进VLIW结构内核
1) 8个独立的功能单元 6个ALU(32/40 bit),2个乘法器(16*16),浮点
系列支持IEEE标准单精度和双精度浮点运算
2) 可以每周期执行8条32 bit指令,最大峰值速度4800MIPS
3) 专用存取结构,32/64个32 bit通用寄存器
4) 指令打包技术,减小代码容量
(3)具有类似RISC的指令集
1) 32 bit寻址范围,支持Byte寻址
2) 支持40bit ALU运算
3) 支持位操作
4) 100%条件指令
(4)内置高效率协处理器(C64x)
1) Viterbi编解码协处理器(VCP),支持500路7.95 kb/s AMR
2) Turbo码编解码协处理器(TCP),支持6路2 Mb/s 3GPP
2.3 FPGA 技术研究
2.3.1 FPGA芯片研究
FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,综是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物[8]。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部部分。FPGA 的基本特点主要有:
1. FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2. 可做其它全定制或半定制ASIC电路的中试样片。
3. 内部有丰富的触发器和I/O引脚。
4. 是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5. 采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
2.3.2 Spartan-II系列FPGA研究
Spartan-II系列具有丰富的I/O口资源,I/O口输出缓冲器呆以接收高达24mA的拉电流和48mA的灌电流。缺省时,I/O输出口的驱动能力的12mA,也可以设置成2、4、6、8、16或24mA。FPGA内部资源划分为四大部分[10],以下作以简要介绍。
1. FPGA逻辑运算中心
用来接收其它各部分的数据,并按照程序中设定的方案对所收到的数据进行相应的分析和处理。包括:对从MCU接收来的数据指令进行分析,并按其指令要求进行相应操作;接收A/D采样来的数据,对数据进行各种处理,如求其有效值,进行FFT分析等;接收来自数字量的各种信息数据,按设定的模式对其进行判断处理,并负责按接收的CPU指令输出相应的数字量。
2. 控制单元
主要负责控制外部A/D芯片和多路开关的选通时序,以及实现对A/D采要过程的合理控制。因为,在FPGA芯片内部,不像在MCU内部那样有丰富的外设控制资源供用户使用,要用FPGA来控制A/D采样过程的动作,必须用软件来模拟实现各种A/D控制资源。利用这些自设定的A/D控制管理资源,配以合理的软件控制时序,才能保证采样过程的顺利进行。
3. 数字量监测控制单元
负责所有要监视和控制的数字量的状态数据的采集和控制命令的输出。这一部分同样也需要用软件来模拟实现各种对数字量的管理控制,只有配备较完备的外设控制管理单元,整个数字量的管理控制才能正确合理地进行。
4. FPGA接口逻辑控制单元。
在FPGA内部设计了FPGA模块与外界MCU的接口单元,这虽然占去了一定的内部资源,但是考虑到在一般的工程系统中不仅仅包括对各种信息的采集控制,还往往包括通信、显示以及进行一些复杂算术运行等等。FPGA虽然有其显著的长处,但是在这些方面实现起来就往往不如普通MCU来得容易,因此考虑到本系统的通用性,在设计上增加了FPGA模块与外界MCU的接口单元。

第三章 整体设计
3.1 CCS和评估板应用
CCS(Code Composer Studio)提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。而ICETEK-DM642-PCI评估板用于后期工作中下载和演示程序。所以,为了更好的完成设计,先来熟悉和掌握DSP的运行环境CCS,以便编写实现MPEG-4编码程序。同时也熟悉和应用ICETEK-DM642-PCI评估板,以便后期工作的进行。
3.1.1 熟悉和应用CCS
在最初设计程序时,我只需要保证程序编译成功,实现前期算法。CCS软件仿真器的工作模式主要用于前期算法实现和调试。所以,在前期的工作中,我只采用了软件仿真器。我首先需要掌握DSP的运行环境CCS[11] 。
CCS安装CCS之后,打开“CCS setup”配置程序用来定义DSP芯片,针对不同的芯片,我都认真的看了它的功能。之后就可以运行CCS了。在这个环境中开发应用程序,我通过以下几步来完成:
1. 创建一个工程文件。你可以选择此工程文件在电脑中的保存位置。最初,并
部了解这样一个工程项目有什么文件组成,实际上,它包括来了成功运行这个工程所需要的各种文件,比如:源程序、目标文件,还有CMD文件和库文件等;
2. 编辑各类文件。在CCS运行环境中的主菜单“File”选项中,选择“source
file”打开编辑窗口,在此窗口里添加程序代码,然后保存此代码为头文件、C文件、CMD文件或者ASM文件;
3. 添加文件到工程项目;
4. 对工程进行编译。若编译成功会产生 *.out文件,若不成功,会在建构(Build)窗口列出程序出错的地方和原因,我可以依照这些提示完成程序编译。
此后,我通过一些小小的程序来查看环境中各个主菜单的功能。例如设置断点运行程序并分析、调用图形显示窗口查看生成的图形[13]。在此就不一一列述。在编译程序的过程中,我遇到了许多问题:
1. 源程序加入到工程后,出现找不到 *.lib文件,后查阅资料才知道库文件是
运行程序时必须的,并且不同的DSP芯片需要不同的库文件来支持,这也暗示了编程时需要对相应的DSP芯片进行了解。
2. 运行已添加源程序的工程时,编译成功,但链接出错。才发现自己没有编
写CMD文件,这种文件是CCS编译环境区别于软件编程的特点之一。它用来设置程序空间和数据空间,并定义编译后各程序段在程序或数据空间的具体位置。它一般包括MEMORY和SECTIONS这两个函数,其中MEMORY分为程序空间IPRAM和数据空间IDRAM,并分别给出了起始地址origin和长度len,SECTIONS则为变量指定存储空间。
3.程序的优化。在CCS运行环境中,ASM程序的执行速度比C语言程序的执行速度快,所以在程序的编码过程中,尽量去进行ASM程序的编码。
4.在用图形显示功能时,不能显示图形。发现在运行图形界面时会出来一个小
的窗口,必须点击窗口中的运行按钮,才能显示图形,因为这有一个数据缓冲的过程。
5.编译中,会设计到Build options选项,选择正确的选项才能保证编译的正确。
6.程序编译时,还会出现“out of memory”,发现没有设置存储器,结果在调
入程序运行时出现了存储无效的错误。
3.1.2 ICETEK-DM642-PCI评估板应用
ICETEK-DM642-PCI评估板是一个低功耗独立的开发平台,包括完备的板上设备,适合各种应用环境。它包括了很多设备:ICETEK-5100USBV2.0 仿真器1 个、标准PAL 制电视摄像头1 个、ICETEK-DM642-PCI 系统板1 块、标准PAL/NTSC 制TV 显示器1 个,还有许多实验连线。
各个设备的连线特别巧妙、布局也很得体。DSP芯片通过64bit的EMIF接口或8/16 bit的3路视频接口连线板上外围设备,SDRAM、Flash、FPGA和UART每一个设备占用其中的一个接口。EMIF接口也连接扩展背板接口,扩展背板接口用来连接背板。评估板上的视频解码器和编码器连接到视频端口和扩展连接器上。
工作时,IC总线用来控制编解码器端口,McASP被用来控制数据。模拟信号通过3个3.5mm的音频插座进行输入输出,其相应的分别是麦克风输入(microphone input)、直接输入和直接输出。编解码器可以选择麦克风输入或直接输入作为主动输入,模拟输出被指定为直接输出接口。McASP可以通过软件重新设定成为一个扩展接口。可编程逻辑门阵列FPGA,用来执行评估板上组合在一起的逻辑程序。FPGA有基于软件用户端口的寄存器,用户可以通过读写这个寄存器来配置板卡。板上设计有+5V电源作为独立的器件为板卡供电。板上的配电系统为DSP提供1.4V的电压,为I/O提供3.3V的电压。在板卡电源供给正常之前,板卡保持复位状态。板卡上还设计有电源芯片,用来为FPGA内核提供1.8V电压,为编码器和解码器提供3.3V电压。
在应用评估板的过程中,出现了一些问题:
1.配置完CCS,运行时提示“Can’t Initialize Target DSP”,经检发现是仿真器没有连接好,还有就是DSP芯片的选择不匹配评估板,此外还有评估板电源工作不正常。
2.仿真器不能正常工作。打开“仿真器初始化”这个文件,弹出的界面如图3.1所示,这说明仿真器没正常工作。并且在打开的CCS运行环境中,出现了“Can’t Initialize Target CPU”,这时发现没连接好USB接口,并且没有正确的选择DSP芯片类型,此时的DSP芯片应该具有仿真器的功能。

图3.1 初始化仿真器
3. 在CCS 下,OUT 文件加载时提示“Data verification failed…” 经查阅发现 Link 的CMD 文件分配的地址同GEL 或设置的有效地址空间不符。中断向量定位处或其它代码、数据段定位处,没有RAM,无法加载OUT 文件。
3.2 任务分析
3.2.1 方案比较
MPEG-4作为新一代多媒体标准提供了一整套能同时满足制作者、服务商和终端用户的编解码技术。它为数字化的多媒体数据的通信、访问和操作提供了新的方法,并且提供了一个灵活的框架和一套开发工具来支持新的和传统的性能。其基于对象的数据压缩、灵活的码流伸缩性以及可交互性的优点使其可以适应多媒体数据压缩技术的发展趋势。
基于MPEG-4标准的解决方案纷纷推出,有的为硬件方案,有的为软件方案。前者设计一个MPEG-4专用编解码芯片,后者方式是基于通用视频DSP芯片的软件实现。采用专用芯片的优点是系统实时性好,压缩率高,且图像质量也好。缺点是一旦编解码方案固定,就较难对其进行升级与更新,且此种系统成本造价高,不易在市场上推广[14]。
后一种方式利用DSP的高速信号处理功能,使用软件实现的算法在其上运行时可以大大缩短执行时间,获得较高的压缩率,同时该方案易升级,算法易更新。近几年随着通用DSP芯片的价格下降,使得以DSP芯片为核心加上适当的外围部件形成的MPEG-4视频编解码系统将成为主流。
3.2.2 系统设计框图
任务书要求:设计一种基于FPGA+DSP的MPEG-4数字视频压缩系统[15],系统中以DSP为核心处理器,FPGA则对视频信号进行数据采集及数据预处理。接到这个题目后,我查阅了一些资料,根据视频处理的一般流程,画出了设计框图。如图3.2所示

图3.2 系统设计总体方案
各模块的功能简述如下:
1. 信号预处理单元
信号预处理单元接收CCD 摄像机输出的全视频信号,并对视频信号首先经过预处理,同步分离,程控放大,保证视频信号有合适的幅度后进入A/ D 变换单元,确保A/ D 能满量程工作。
2. A/ D 变换单元
高速A/D变换单元对视频信号数字化,将模拟图像信号转换为数字图像信号,存入图像存储器中。A/D变换器采用AD9200芯片,A/D最高采样频率可达40MHz,精度为10bit,输入信号范围为0~2V。
3. FPGA 数字处理单元
FPGA数字处理单元完成数字滤波功能,属于低层的处理,其运算数据量大,但运算结果较规则,适于用FPGA进行纯硬件实现数字处理单元。数字滤波器有助于抑制信号中的干扰,提高目标探测能力[16]。
4. 数据分析处理单元
由高速数字信号处理器TM320C6203B和数字图像存储器组成图像数据分析处理单元。该单元根据程序存储器中的MPEG-4算法程序对目标信号做各种图像数据分析处理,接收中心控制器通过串口发送指控命令,实时完成图像压缩。由DSP控制A/D启动,控制A/D采样频率,启动A/D,A/D采样结果进行锁存。每采样一个点,即存入双口RAM中。将双口RAM的存储空间分成两个数据块,每采完个512个数据即产生一个EXT-INT 7中断,请求DSP将第一个数据块的数据取走。DSP取数时不影响A/D采样,A/D采样的下512个数据写入下一个数据块,两个数据块轮流工作。
5. 通讯接口单元
通讯接口单元由一个RS422串口和一个RS232串口组成。中心控制器通过串口发送指控命令,视频图像处理系统并对目标处理数据进行修正和规范化处理,送出符合规定格式的图像处理数据。
6. 显示与驱动单元
显示与驱动单元为实时图像处理系统各个处理单元送出所需要的同步信号,使它们能同步协调地工作。参考信号包括电视处理视场、十字丝、处理窗口、目标信号提取指示等。
在ICETEK-DM642-PCI评估板上,DSP芯片通过64bit的EMIF接口或8/16bit的3路视频接口连接板上外围设备。SDRAM、Flash、FPGA和 UART 每一个设备占用其中的一个接口。评估板上的视频解码器和编码器连接到视频端口和扩展连接器上。这个系统的工作过程就为:摄像头采集实时视频图像,此时的视频信号为标准PAL/NTSC制电视模拟信号。摄像头把RGB三基色转换成YUV的形式,由于MPEG-4只支持4:2:0的YUV格式,所以对YUV进行重取样为4:2:0形式。然后通过A/D模块量化采样转换为数字视频流。此视频流进入MPEG-4编码模块进行编码,之后又进入解码模块解码,此时的YUV格式再通过重取样转换成4:2:2形式,再调用OSD功能在TV显示器上显示出视频。
3.3 任务调度

图3.3 总体任务运作框图
系统框图出来后,我发现在这个设计中,设计到了很多芯片:DSP芯片、FPGA片、A/D转换器、D/A转换器,还有外存储器SDRAM、TV显示器、摄像头;还涉及到了很多接口。它们之间的协调运作是整个系统设计的关键。把它们分类到各个任务模块中设计会省掉许多调试的麻烦,也便于设计和实现。
于是,我设计利用评估板上的摄像头采集实时视频、之后通过DSP芯片进行压缩,然后解压传输到TV显示器上显示。这样的话,就把整个系统的设计分为三个任务:采集、压缩和显示视频。把这三个任务分别定义为:输入任务、任务处理、输出任务三个部分。于是我选用了DSP芯片的DSP/BIOS的调度任务功能。然后通过RF-5的SCOM模块互相发送消息进行任务的调度和控制。总体的任务运作框图如3.5所示[17]。
3.4 整体设计
3.4.1 整体设计流程图
整体设计流程图如图3.4 所示

图 3.4 整体设计流程图

3.4.2 整体数据流程
根据任务调度和总体的系统设计方案,我得到这样一个数据流程图,如下图所示。数据流程为:
(1) 输入设备提供的一帧图像被采集到输入缓存
(2) 获得的数据由YUV4∶2∶2格式进行抽样变为YUV4∶2∶0格式
(3) 提供图像数据给MPEG-4编码库程序
(4) MPEG-4编码器完成对输入帧的编码
(5) MPEG-4编码器输出编码码流
(6) 产生的编码码流被传输到MPEG-4解码模块
(7) MPEG-4解码模块解码传入的码流,输出解码的一帧图像
(8) 解码模块解码产生的图像经过重新抽样由YUV4∶2∶2格式变为YUV4∶2∶0格式
(9) 显示设备显示输出的图像

第四章 模块设计
4.1 输入模块
4.1.1 模块功能
输入任务模块的功能是:从输入设备获得视频图像,具体到ICETEK-DM642-PCI评估板上就是驱动视频采集程序,由摄像头获得实时视频图像,这就需要用到驱动程序所提供的FIVD_exchange调用从输入设备获得一帧最新视频图像。获得的图像的格式是YUV4∶2∶2,它被重新采样成YUV4∶2∶0格式的。接着,输入任务模块发送消息到处理任务模块,然后,等待从输出任务模块发送来消息以继续处理。
4.1.2 编程思路及流程图
编程思路为:由于此模块的设计涉及到输入设备驱动、存储器的大小、一帧图像的大小、数据排列的模式和YUV4∶2∶2格式到YUV4∶2∶0格式的转变。

N

图4.1 输入模块流程图
所以我们要设定一些变量以支持程序运行,并设定存储器的大小以便继续采集图像,而所有的有关硬件的编程设计都要涉及到有关硬件设备的初始化,所以,在程序的开始,我们先建立采集通道,并对之进行初始化的操作,之后,便开始采集工作并进行格式转换工作。流程图如图4.1所示
4.1.3 模块仿真
从摄像头上截取一个图片,再调用CCS的辅助获得图片功能,把摄像头采集的一个实时图片保存下来。如果能显示一个图片,说明此模块能够完成数据的输入,若不能,就需要对这个模块再进行完善。当输入模块输入图片的速度为1秒钟24张图片以上时,我们看到的视频就是连续的了。当我把程序下到评估板上运行时,即能得到这个实时图片。如图4.2所示

图4.2 输入模块仿真图片
4.2 输出模块
4.2.1 模块功能
输出模块的功能是:将经过编码和解码的图像显示在TV显示器上,当处理的速度为一秒钟24帧图像以上时,看到的图像就是连续的活动的图像。它使用输出驱动程序提供的FVID_exchange调用实现图像的显示。得到的图像格式重新采样成YUV4∶2∶2格式,并用FPGA实现OSD功能,使得图像完美显示在TV显示器上。

N

Y N

图4.3 输出模块流程图

接着发送消息到输入任务模块,然后等待处理任务来的消息以便继续进行。
4.2.2 编程思路及流程图
输出模块的编程思路是:此模块的编程涉及到图像的大小、存储器的大小、输出设备驱动和YUV4∶2∶2格式到YUV4∶2∶0格式的转变。流程图如图4.3所示。
4.2.3 模块仿真
摄像头摄入实时视频,在TV显示器上显示。如能显示,说明输出模块能正常工作,若不能,则反之。试验证明:此模块能正常工作。现调用CCS的辅助获得图片功能,将TV显示器上的实时视频截取一张静态图片显示如下。为了有所比较,截取显示图片和输入图片一样。如图4.4所示

图4.4 输出模块仿真图片

4.3 YUV422转换为YUV420模块
在MPEG-4标准的应用中,采用YUV4∶2∶0格式的彩色空间。色差成分在水平和垂直方向取样,如图4.5所示

Scan
Line 1

2

3

4

表示 Y sample

表示 Calculated U,V samples
图4.5 YUV分量示意图
4.3.1 模块主程序
进行转换时,调用函数EDMA_MK_CNT(),EDMA_MK_IDX()和EDMA_MK_LOPT()对Y分量进行转换;之后依次为UV;之后对一帧图像循环采样,这样就完成了YUV4∶2∶2对YUV4∶2∶0的转换。主要程序如下:
for( rowindex = 0; rowindex < ch_height;rowindex++)
{ QDMA_START(qdma_optY, pSrcY,
qdma_countY, pDestY, qdma_idxY);
pSrcY += width;
pDestY += width;
QDMA_START(qdma_optY, pSrcY,÷
qdma_countY, pDestY, qdma_idxY);
pSrcY += width;
pDestY += width;
QDMA_START(qdma_optU, pSrcU,
qdma_countU, pDestU, qdma_idxU);
QDMA_START(qdma_optV, pSrcV,
qdma_countV, pDestV, qdma_idxV);
pDestU += ch_width;
pDestV += ch_width;
pSrcU += 2*ch_width;
pSrcV += 2*ch_width;
QDMA_WAIT_HIGH(CHANNEL13);
QDMA_WAIT_HIGH(CHANNEL14);
}

4.3.2 模块流程图
程序的流程如图4.6所示。

N

图 4.6 YUV422转换为YUV420流程图

4.4 A/D、D/A转换
构造函数MPEG-4DEC_cellExecute()来完成A/D转换的功能。此模块中,我们设定寄存器的大小,定义数组完成输入模拟数据转换成数字数据的过程。而D/A的转换则通过构造函MPEG-4ENC_cellExecute()和MPEG-4ENC_cellControl()来完成。此功能模块在在ICETEK-DM642-PCI评估板上仿真成功。以下为演示过程:我们先打开DSP的运行环境CCS,然后建立工程,编译、连接、下载程序并运行。接着打开辅助GEL文件,用鼠标右键单击工程管理窗口中“GEL files”项并选择“Load GEL…” ,选择工程中的RGB.gel。选择菜单“GEL”-> “YCbCr-RGB:色彩空间变换控制”-> “StartConvert”,在弹出的窗口中输入“1”就可以在电脑上保存经过A/D和D/A转换的图像。如图4.7所示。

图 4.7 A/D转换模块仿真图片
4.5 VOP编码模块
4.5.1 编程思路
在MPEG-4标准中,最突出的特点是:基于视频对象的编码形式,实际上,视频对象是以视频对象平面的形式出现,所以对视频对象的编码就是对视频对象平面的编码。编码主要是针对某一个时刻该视频对象的形状、运动、纹理这3类信息来进行的。编码器也由两个主要部分组成:形状编码和传统的运动与纹理编码。并且这些编码工具能扩展到任意形状的对象。但目前由于条件的限制,所有工具都是基于宏块进行的。从编码工具中产生的多路比特流转换成分离或者联合的运动形状纹理模式。在联合的运动形状纹理模式下,具有这些特点的数据流在宏块基础上进行联合,并将每个视频对象平面的最终数据流按逐个宏块形式输出到比特流中;在分离的运动形状纹理模式下,整个视频对象平面的运动、形状和纹理编码数据流在最终的比特流中进行多路复合。定义函数输入为:
VOP *curr 指向当前待编码的视频对象平面的指针
Vop *prev 指向本视频对象平面之前最后出现的视频
对象平面的指针
Vop *rec_prev 指向本视频对象平面之前最后已出现并编
码的视频对象平面的指针
Int enable_8×8_mv 8×8运动向量的标志
Int intra_dcpred_disable 不允许内部DC频段预测的控制变量
Float time 当前编码时间
VolConfig *vol_config 视频对象层的设置信息
4.5.2 编程流程图
程序流程图如图4.8所示。

N
Y

Y

N

图 4.8 VOP编码模块流程图
4.5.3 运动信息编码模块
MPEG-4采用I-VOP、P-VOP、B-VOP三种帧格式来表征不同的运动补偿类型。同样,运动估计和补偿也采取基于块的方法,它采用了H.263中的半像素搜索(half pixel searching)技术和重叠运动补偿(overlapped motion compensation)技术,同时又引入重复填充(repetitive padding)技术和修改的块(多边形)匹配(modified block (polygon)matching)技术以支持任意形状的VOP区域。
1. 运动估计和补偿函数
函数功能是完成估计运动向量并进行运动补偿运算。为了完成运动估计和补偿函数的编程,先定义了一些变量,如下所示:
Vop *curr_vop 当前视频对象平面(亮度信息)
Vop *prev_rec_vop 重建的参考视频对象平面
Int enable_8×8_mv 8×8运动矢量(=1)或者16×16运动矢量(=0)
In edge 如果限制(=0),不限制为边界
Int f_code 运动向量搜索范围
Vop *curr_comp_vop 进行运动补偿的当前视频对象平面
Float *mad ME/MC结果的容忍值
Image **mot_x 运动向量水平坐标
Image **mot_y 运动向量竖直坐标
Image **mode 每一个宏块的模式
之后通过定义整形变量br_x,br_y,br_height,br_width,mv_h,mv_w来获得当前视频对象平面的数据,采用内插法得到重建的参考视频对象平面。通过调用函数AllocImage()来预测运动向量,调用SetConstantImage()来给运动向量分配存储空间。程序流程图如图4.9所示。
2.运动向量和预测误差计算
函数功能是:计算运动向量和预测器的误差,并完成运动补偿计算。设计函数时要用到整像素和半像素搜索技术来实现多边形匹配。这个函数模块和上个函数模块以及重复填充模块共同完成运动估计与补偿功能。定义的主要函数参数如下:
Int edge :围绕参考视频对象平面的边界
Int f_code :运动向量的搜索范围
Float *mv16_w :16×16运动向量的水平预测
Float *mv16_h :16×16运算向量的竖直预测
SInt *model16 : 预测运动向量的模式
SInt *prev :用边界填充的原始Y向量
SInt *prev_u :用边界填充的原始U分量
SInt *prev_v :用边界填充的原始V分量
SInt *curr_comp_y :运动补偿的当前Y值
SInt *curr_comp_u :运动补偿的当前U值
SInt *curr_comp_v :运动补偿的当前V值
流程图如图4.10所示
3. 重复填充编码
由于VOP有任意形状,在形状编码中已用矩形框将其套住,为了以后的运动估计,要先对VOP外、矩形框内的点进行填充,然后再对矩形框外的运动矢量搜索范围之内的点进行重复填充。所以,编程思想是:对于第一步填充,首先进行水平填充,如果左边和右边都有合适的点则取这两点的平均,否则如果右边有合适的点则取右边点,如果左边有合适的点则取左边点;对于第二步重复填充,就取最近邻点的值,流程图如图4.11所示

图4.9 运动估计与补偿模块流程图

图4.10 运动向量和预测误差计算流程图
4.5.4 纹理编码
为了达到简单、高性能、容错性号的目的,MPEG-4仍采用基于分块的纹理编码。VOP边框仍被分成16×16的宏块。
1. 块预测分析
此模块的功能是:对一个帧内的宏块进行预测,并得到它的预测结果,我们先定义如下函数输入/输出参数:
nt x_pos 宏块的X方向的空间位置
nt y_pos 宏块的Y方向的空间位置
Int width 宏块所在视频对象平面的边界框的宽度
Int fblock[8] 将要进行编码的预测宏块,输出到数据流中
SInt *curr 当前未编码的视频对象平面数据
SInt *rec_curr 重建视频对象平面数据的区域
在程序的实现上,我们通过构造函数fblock[i][j]来实现。这是一个简单的程序,在此就不列出。
2. 宏块重建函数分析
这个模块用来完成在视频对象平面数据区域中重建一个宏块,我们定义函数参数如下:
nt x_pos 宏块的X方向的空间位置
nt y_pos 宏块的Y方向的空间位置
UInt width 宏块所在视频对象平面的边界框的宽度
SInt *rec_curr 当前将要重建的视频对象平面数据区域
通过循环调用函数来生成重建的视频对象平面。其流程图如图4.12所示。

N
Y

N
Y

图4.11 重复填充编码流程图

N
Y
N

N Y
Y N

Y
N

Y

N

图 4.12 宏块重建流程图

N

Y

N

Y Y

N

Y

图 4.13 帧内纹理编码流程图
3. 视频对象平面的帧内纹理编码
此模块的功能是完成一个视频对象平面的帧内纹理编码,它包括组合形状编码模式和纹理编码模式。在程序的开始,我们先定义以下参数来完成函数输入和输出。
Vop curr 当前将要进行编码的视频对象平面
Int intra_dclpred_disable 是否不允许帧内DC频段预测控制
Image *AB_SizeConversionDecisions 视频对象平面转换为视频宏块过程中的块大小
Image *AB_first_MMR_values 最大宏块阀值
VolConfig *vol_config 设置信息
Int rc_type 比特率控制类型。
Vop *rec_curr 当前重建的视频对象平面
Image *texture_bitstream 输出比特流
Bits *bits 数据统计信息
程序流程如图4.13所示。
4.6 解码设计
有了编码部分,解码的设计就没那么复杂了。解码部分只是MPEG-4编码的逆过程。解码主要有三部分组成:形状解码、运动解码和纹理解码。重建的视频对象平面通过合并解码的形状、运动和纹理信息而得到。流程图如图4.14所示

图4.14 解码流程图

第五章 总结与展望
经过一个学期的毕业设计,对实时视频压缩系统有了更深的了解,对MPEG-4标准,尤其是其中涉及的视频对象分割技术、视频对象平面VOP编码中的运动估计和补偿、形状编码、纹理编码有了更深入的研究。在熟悉和掌握DSP芯片运行环境和FPGA技术的基础上,设计了基于DSP+FPGA的MPEG-4视频压缩系统,完成了视频数据输入、VOP编码、纹理编码模块以及数据输出功能。
5.1 系统设计改进之处
在查阅资料的基础上,取得了阶段性的成功,实现了一些模块的编程。由于设备和时间问题,加上本人水平有限,整个系统实现还存在了一些有待完善的地方,主要表现在以下几个方面:
1. TMS320DM642是性价比很高的一款DSP芯片,不仅能满足静止图像处理或对实时性要求不高的视频图像处理需要,而且也能满足实时运动图像压缩编码的要求.其结构比较复杂,一时不能掌握全部技术。
2. ICETEK-DM642-PC评估板综合了DSP、FPGA、、Vedio encoder、Video decoder 、TV显示、摄像头等诸多设备,它们在工作中占取的存储器的位置都有待我进一步的学习和理解
3. 在CCS运行环境中,ASM程序比C语言程序具有更高的运算效率,其驱动硬件的能力也更强,更易实现实时性的要求。部分模块是用C语言实现的,编码还需实现优化
4. MPEG-4最典型的是它采用了基于物体的编码、实现内容的交互。那首要任务是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩。由于MPEG-4标准中涉及到的视频对象分割算法难度很大,一时不能解决,在设计过程中,只完成了部分模块的程序。希望在以后有时间能解决。
5.2 收获和心得
回顾一个学期的毕业设计,自我感觉在逻辑思维、动手能力方面有了很大的提高,分析问题、解决问题以及系统设计的能力也有了质的进步。
1. 在理论学习中,我积极的去图书馆查阅资料,密切联系以前所学过的知识。结合多媒体知识,理解了实时视频在压缩处理过程中的状态。基于DSP芯片和FPGA芯片进行系统设计,让我在系统实现过程对这些芯片的工作原理、典型电路以及性能指标有了更深入的理解和掌握。
2. 系统设计的过程,让我学会了分析任务所需要的模块,通过传递函数来协调它们之间的工作。在整体的设计中,我根据输入输出的关系理清各模块之间的连接,也使得系统的各部分独立,便于调试和分析。在每一部分的设计中,我都先进行实现功能及要求分析,画出简要的流程图,然后进行详细的编程。
5.3 工作展望
随着互联网的发展,人们对实时视频的需求越来越大,基于低码速率的、压缩比高的视频处理标准也应运而生。MPEG-4标准刚好满足了这一需求。MPEG-4提供了更高的压缩比,并且保证了高质量的画面,使得占取的存储空间更小,传输起来更为流畅。但是高的压缩比必定要付出代价:解决MPEG-4编解码算法更为复杂,要实现它的关键技术也更具有挑战性。
所以,下步工作的研究方向主要是以下两方面:
1. 背景重建技术
MPEG-4最典型的是它采用了基于物体的编码、实现内容的交互。它在进行压缩前,把一个视频场景分割成各个视频对象,然后对各个视频对象分别编码传输,在解码器端把各个视频对象编码码流根据各自的时空信息进行组合。在监控系统中,显示背景才能达到更好的效果。
2. 视频对象分割技术
视频对象分割涉及对视频内容的分析和理解,这与人工智能、图像理解、模式识别和神经网络等学科有密切联系。目前人工智能的发展还不够完善,计算机还不具有观察、识别、理解图像的能力;同时关于计算机视觉的研究也表明要实现正确的图像分割需要在更高层次上对视频内容进行理解。因此至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题。
本文中研究的是基于时间和空间的视频对象分割技术,另有一种基于纹理和运动的分割技术,可以实现低层的细分和高层的粗分。可以研究它的优越性以便有所改进。
致 谢
时间匆匆而过,经过一个学期的学习和研究,终于完成了此篇论文。除了轻松之外,心里对大学充满了难以言说的感情
大学四年,我遇到了很多人,也经历了很多事。在不知不觉中,成熟了很多。我感谢同我朝夕相处的室友,是她们让学会了与朋友相处。也感谢在大学遇到的所有老师,是他们不知不觉间灌输给我的思维,才使我不断丰富自己。
在毕业设计过程中,我深深体会到了理论联系实际的重要性,也体会到硬件编程设计的难度。在毕设即将结束的时候,在此我特别感谢毕业设计过程中给予我指导和帮助的老师、同学。感谢宋老师在平日里对我的督促和指导、也感谢张老师给我们提供的好的实验环境,使得我们更能集中精神做好毕业设计。还要感谢在这么多天朝夕相处的同学们给予我的建议和关心。更要感谢父母以及亲人一直以来对我的信任和抚育,才让我在大学的天地里健康成长。

参考文献
[1] 钟玉琢,王琪. 运动图像压缩编码国际标准及MPEG的新发展[M].北京:清华大学出版社,2002年3月283~294.
[2] 段颖昕. MPEG- 4 标准概述[J]. 电脑知识与技术.
[3] T.Ebrahimi. MPEG-4 video verification model:a video encoding/decoding algorithm based on content represtation[J]. Signal Processing:Image Commun,Sep 1997,Page(s):367~384
[4] D.Wang. Unsupervised video segmentation based on watersheds and temporal tracking[J]. Cricuit Systems for Video Techology,Sep 1998,Page(s):539~546
[5] 张益贞,刘滔. Visual C++实现MPEG/JPEG编解码技术[M]. 北京:人民邮电出版社,2002年11月.
[6] 郭栋,王志良,李正熙,张永忠. 基于DSP 的实时图像处理系统[J] . 微计算,2005 (21) :3.
[7] 李芳慧等. TMS320C6000系列DSPs原理与应用(第2版[M]. 北京:电子工业
出版社,2003.56~85.
[8] 褚振勇,翁木云. FPGA 设计及应用[M] . 西安:西安电子科技大学社,2002.
[9] Deng K, Wilson J N. An approximation – based video tracking system [J].
SPIE image Algebra and Morphological Image Processing, 1991,11.
Page(s):304 ~312.
[10] 杨明林, 张晓飞. FPGA 控制实现图像系统的视频图像采集[J] . 计算机测量与控制, 2003 , 11 (6) :451~454.
[11] 申敏. DSP原理及其在移动通信中的应用[M].人民邮电出版社,2001年9月.183~210
[12] [日]小野定康等. JPEG/MPEG技术[M]. 北京:科学出版社.2004
[13] 江安民等. DSP应用开发实用子程序. 北京:人民邮电出版社. 2005
[14] [14] 戴逸民. 基于DSP的现代电子系统设计[M]. 北京: 电子工业出版社.2002
[15] 刘志国 景新幸等. 基于多DSP的MPEG-4系统的设计[z].2005.
[16] Ackenhusen J G. 实时信号处理: 信号处理系统的设计与实现[M] . 北京: 电子工业出版社, 2002.
[17] 李朝晖. TMS320C6201DMA在视频图像编码中的应用.华北航天工业学院学报.2003; 13( 9) : 12—15

附 录
附录一 全文图索引
图2.1 不同对象组成的场景 5
图2.2 树状结构 6
图 2.3 时间域的物体分割 7
图2.4 左图为原始影像,右图为Simplify 后的影像 8
图 2.5 分水岭算法产生的效果 8
图2.6 结合时间和空间分割的效果 9
图2.7 MPEG- 4编码框图 9
图3.1 初始化仿真器 18
图3.2 系统设计总体方案 19
图3.3 总体任务运作框图 21
图 3.4 整体设计流程图 22
图4.1 输入模块流程图 24
图4.2 输入模块仿真图片 25
图4.3 输出模块流程图 26
图4.4 输出模块仿真图片 27
图4.5 YUV分量示意图 28
图 4.6 YUV422转换为YUV420流程图 29
图 4.7 A/D转换模块仿真图片 30
图 4.8 VOP编码模块流程图 31
图4.9 运动估计与补偿模块流程图 33
图4.10运动向量和预测误差计算流程图 34
图4.11 重复填充编码流程图 35
图 4.12 宏块重建流程图 36
图 4.13 帧内纹理编码流程图 37
图4.14 解码流程图 38

附录二 VOP平面编码程序
/*This file contains some functions to do coding of one VOP*/
#include “vop_code.h”
#include “mot_est_comp.h”
//#include “rc_q2.h”
#include “bitstream.h”
#include “rate_ctl.h”
#define SCENE_CHANGE_THREADHOLD 50
#define MB_RATIO_THREADHOLD 0.40

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

Posted by 天际的荒草 | Posted in Docs | 文档 | Posted on 18-09-2009

标签:, , , ,

0

目 录

摘 要 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, 图像采集, 图像处理

ABSTRACT
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

第一章 绪 论
数字图像处理技术的飞速发展使得所有图像处理的问题都可以用数字信号处理的形式来解决,这为实时图像处理的应用提供了广阔的空间。首先,数字信号处理中存在大量成熟的快速算法,这些算法已经大量的应用于图像处理中。其次,几个技术发展趋势进一步促使此领域的发展,随着超大规模集成电路的高速发展,包括低价位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-EDULab\Lab525-VideoRGB
3.浏览工程中源程序并理解含义。
4.编译、连接、下载程序并运行。
5.打开辅助GEL文件,进行图像变换
用鼠标右键单击工程管理窗口中“GEL files”项并选择“Load GEL…”,选择C:\ICETEK-DM642\Video目录中的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-DM642\Video目录下可以找到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 视频图像采集,显示子程序

/* VCParamForPAL.c视频图像采集子程序*/

#include
#include