simulink代做基于matlab的DCT变换Word文档下载推荐.docx
《simulink代做基于matlab的DCT变换Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《simulink代做基于matlab的DCT变换Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
尽管数字图像存在很多优点,但有一潜在的问题,就是要表示它们则需要大量比特数。
根据计算,在不进行编码压缩处理的情况下,一张600M的光盘仅能存放20s左右的640×
480像素的图像信息,这就使得在对图像的存储和处理中所遇到的困难和所需成本是非常高的。
幸而,在数字图像的标准表示中,通常含有大量冗余度。
图像压缩是图像数据有效编码的技术和科学,其目的在于获得这种冗余优点,从而减少表示图像所需的比特数。
这样就使存贮图像所需的存贮器,或者传输图像所需的通道容量大大节省。
自从离散余弦变换(DCT)被提出以来,由于它能有效的消除图像的空域冗余,因而已被广泛应用在数字信号处理中,特别是语音及图像数据压缩、自适应滤波以及通信系统等领域,至今已被JPEG、MPEG1、MPEG2、MPEG4和H26x等国际标准所采用。
在选取均方差准则下,Karhunen-Loeve变换(KLT)是信号处理中的最佳变换,但是KLT没有快速算法,且计算十分困难,所以不具有实用价值,但是可以用它来做为衡量其他变换的标准。
在有快速算法的次最佳变换中,DCT基向量最接近KLT,因而发展很快。
但由于其运算量较大,为了满足实时要求,常常采用硬件来实现其功能。
而DCT所具有的快速算法也为DCT的硬件实现提供了便利。
尽管DCT快速算法很早就被提出,并已被研究和应用了几十年,但二维8×
8DCT快速算法,仍然还未十分成熟,现在的算法所要求的乘法次数还远高于理论值。
目前,还在不断的有新的快速算法被提出和应用,对DCT算法的研究仍然是当今图像压缩编码研究的重点之一。
在考虑DCT的VLSI实现时,根据不同的应用目的,结合不同的算法,有不同的实现方式。
1.2国内外研究现状
离散余弦变换是由离散傅立叶变换(DFT)发展过来的,由于离散傅立叶变换在数字信号处理频谱分析等领域中已成为有力的数学工具,但其缺点是复数域运算,运算量太大以至难以实时处理,为克服这些缺点,1974年,Ahmed等人构造了一种实数域变换——DCT。
由于该变换性能很适用于人类语言及图象信号的特点,从这个意义上,DCT常常被认为是接近K-L变换性能的准最佳变换。
DCT有一个重要性质,就是它的变换矩阵的基向量很近似于Toeplitz矩阵(即沿对角线方向的元素都相同)的特征向量。
这就是说,对Toeplitz矩阵DCT将非常接近K-L变换。
统计表明,人类的语言、图象等信号的自相关矩阵常常表现出具有Toeplitz矩阵
的特点。
从这个意义上来说,DCT是比较适合对语言、图象等信号作变换处理的一种变换,它的性能接近于K-L变换。
DCT还具有以下性质:
1)对于具有高相关性的数据(信号),DCT具有非常好的能量聚焦性,经过变换,信号能量的绝大部分被集中到变换域的少数系数上;
2)DCT具有可实现的快速算法;
因此DCT算法在图像压缩、水印技术、扩频通信抗干扰、人脸识别、自适应滤波等数字信号处理领域得到了广泛的应用。
实际的应用促进着快速算法的发展,在这之后,针对各个应用领域,不同形式的DCT算法也应运而生。
至今,DCT算法在数字信号处理中仍然具有重要的意义并且不断在发展。
从1948年提出电视信号可以数字化以来,图像压缩编码技术已有50多年历史,不仅在理论研究上取得了重大的进步,而且在实际应用中也获得了很大成果。
近10年来,图像编码技术得到了迅速发展和广泛应用,并且日臻成熟,其标志是多个关于图像编码的国际标准的制定。
随着市场对图像传输需求的增加,如何适应不同信道传输特性的问题也日益显现出来。
近年来,我国在视频压缩标准的制定上也迈出了坚实的步伐,开发出了具有自主知识产权的AVS视频压缩标准。
AVS标准是《信息技术先进音视频编码》系列标准的简称,AVS标准包括系统、视频、音频、数字版权管理等四个主要技术标准和一致性测试等支撑标准。
在2003年12月18-19日举行第7次会议上,工作组完成了AVS标准的第一部分(系统)和第二部分(视频)的草案最终稿(FCD),和草案报批稿对应的验证软件也已完成。
2004年12月29日,全国信息技术标准化技术委员会组织评审并通过了AVS标准视频草案。
2004年度第一季度(第8次全体会议)正式开始“数字版权管理与保护”标准的制定,目前已近尾声。
2005年初(第12次全体会议)完成了第三部分(音频)草案。
2005年4月30日,AVS标准视频部分通过公示,在标准道路上迈出决定性一步。
2006年2月22日,国家标准化管理委员会颁布通知:
《信息技术先进音视频编码》第二部分视频于2006年3月1日起开始实施。
接下来,标准其他部分将继续开展工作,陆续进入标准报批和审核程序。
据预测,数字音视频产业将在2008年超过通信产业,在2010年成为国民经济第一大产业。
AVS作为数字音视频产业“牵一发动全身”的基础性标准,为我国构建“技术→专利→标准→芯片与软件→整机与系统制造→数字媒体运营与文化产业”的产业链条提供了难得机遇。
目前,基于整数DCT变换的H.264和AVS芯片成为研究热点,已有多家芯片厂商设计了应用于高清晰度电视应用的H.264或AVS编解码器芯片如SandVideo宣布制造了第
一个支持H.264视频压缩的解码器芯片。
基于整数DCT变换的压缩方法越来越多的被应用在硬件实现图像压缩中。
针对AVS之类的具有自主知识产权的标准,开发出能够完成功能的,功耗低,体积小,高速和高实时性的音视频处理系统芯片和IP核,为后续的开发和应用打下坚实的基础。
离散余弦变换是目前应用最广泛的图像、视频压缩算法。
通过离散余弦变换可以获得很高的数据压缩比,它可以将大量的信息浓缩到少数的变换系数中。
对于自然图像,离散余弦变换的压缩性能接近最佳K-L变换。
并且,离散余弦变换是不依赖于数据的,它的变换矩阵拥有很好的对称性,便于通过软、硬件高效的实现。
离散余弦变换广泛应用于图像压缩、数据压缩、滤波等领域。
尤其在图像压缩领域,基于离散余弦变换(DCT)的编码方法是JPEG算法的核心内容;
MPEG-x、H.26x等标准均采用离散余弦变换作为图像数据空间域压缩的重要手段之一。
离散余弦变换(DCT/IDCT)以及运动向量估计(ME)、运动向量补偿(MC)作为MPEG-x以及H.26x系列标准的核心部分,消耗着大量的计算时间。
Mitsuo等人的文章指出,在MPEG-2编码过程中,以上4部分占据了88%以上的计算量;
而离散余弦变换(DCT/IDCT)占据了大约全部计算量的22%;
这意味着对于MPEG-2SP@ML的视频流编码过程,编码器的运算能力必须超过3.7GOPS/秒。
促使人们对离散余弦变换及其FPGA设计感兴趣的是以下四个基本原因:
1.许多图像、视频压缩标准都采用DCT变换作为消除图像数据空间冗余的重要手段,这些标准包括JPEG、H.26x、MPEG-x等。
DCT需要的计算量很大,在以上各个标准的编、解码过程,DCT计算占据了大量的时间,因此,研究DCT可以更好的实现现有标准;
2.用硬件(FPGA、VLSI)实现DCT时,面积、速度、精度三个参数相互制约,如果能找到一个算法结构,在满足应用要求的大前提下,尽量减少所需的芯片面积,提高速度和精度。
将极大的降低硬件实现的成本,提高图像的质量,促进数字视频的发展;
3.研究DCT的FPGA设计,结构和规则可以作为离散正弦变换(DST)、离散小波变换(DWT)、离散傅立叶变换(DFT)等FPGA设计的参考。
4.现有的图像压缩方法,数据压缩比以及图像压缩质量仍然不能很好的统一,可以研究DCT和其他方法相结合,如和基于小波的方法或者基于内容的压缩方法相结合,提高现有图像的压缩比。
1.3本文主要研究内容
为了能够实现高保真,高压缩比的图像压缩,首先必须研究出适合硬件实现的算法。
图像压缩是图像处理的经典内容,有很多种算法。
这些算法各有各的特点,其恢复图像质量和算法复杂度各不相同。
用于视频压缩的这种算法本身不能够过于复杂,不能有过多的逻辑判断或者递归,其算法流程应该尽量与输入的数据内容无关,以便于在硬件中实现。
但由于DCT的变换矩阵是用浮点数表示,浮点运算量较大,占用较多系统资源。
为了提高变换效率,DCT又发展出用定点计算或者较大的整型变换逼近浮点运算,由于存在精度误差,即使没有经过量化,反变换后也不能完全恢复图像数据,也就是编码的可逆性不强。
整数变换的产生,同时解决了计算精度误差大和编码效率低的问题,其特点是用整数变换矩阵代替DCT的浮点数变换矩阵,这样变换过程完全是整数运算,不存在精度误差,保证了编码的可逆性;
同时整数乘法可用加减法和位移代替,因此变换过程可以完全通过加减法和位移实现,运算量大幅度减少。
采用ASIC或者FPGA实现整数DCT变换成为一种可能。
以FPGA为核心的硬件处理平台具有并行度高、处理速度高、功耗低的优点,广泛的应用于各种领域中,本文就是基于FPGA平台验证的整数DCT变换结构,使之能够对视频数据进行高保真压缩。
本文内容安排如下:
第一章为绪论。
主要介绍背景和现状,以及本文研究的主要内容。
第二章为FPGA技术的介绍,主要介绍了FPGA的发展和VERILOG语言
第三章对DCT的算法进行了简单介绍,在此基础上对应用于图像压缩的整数DCT算法进行了详细介绍。
第四章是IP核设计介绍。
讲述了IP核的概念,IP核的基本特征以及软核的设计流程。
第五章是FPGA验证的介绍。
通过系统仿真来验证设计的正确性。
第六章对本文进行了总结,同时也指出了需要进一步完成的工作。
第二章FPGA技术简介
FPGA是近几年出现的新型可编程逻辑器件,它不仅具有很高的速度和可靠性,而且具有用户重复定义的逻辑功能,即具有可编程的特点。
它的出现不仅使数字电路系统的设计非常灵活,而且大大缩短了系统研制周期,缩小了数字电路系统的体积和所用芯片的种类。
DCT算法的实现有多种方法,软件实现或利用大规模可编程技术进行IP核实现。
软件实现速度较慢,利用可编程器件实现则具有处理速度快及可重复利用的特点,而且当今IP核大为流行,更是利于集成。
但是目前大部分DCT的IP核都是针对信号输入长度为2的幂的情况,对于任意输入长度的IP核还很少,因此,本文在改进素长度DCT的基础上进行IP核设计。
本章简单介绍了大规模可编程器件的结构和特点,以及IP核的设计方法和工具。
2.1FPGA的发展
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL(ProgrammableLogicaArray,可编程逻辑阵列)、GAL(GenericArrayLogic,通用阵列逻辑)、EPLD(ErasableProgrammableDevice,可编程逻辑器件)等可编程器件的基础上进一步发展的产物。
FPGA一般用于逻辑仿真。
电路设计工程师设计一个电路首先要确定线路,然后进行软件模拟及优化,以确认所设计电路的功能及性能。
然而随着电路规模的不断增大,工作频率的不断提高,将会给电路引入许多分布参数的影响,而这些影响用软件模拟的方法较难反映出来,所以有必要做硬件仿真。
FPGA就可以实现硬件仿真以做成模型机。
将软件模拟后的线路经一定处理后下载到FPGA,就可容易地得到一个模型机,从该模型机,设计者就很直观地测试其逻辑功能及性能指标。
它由许多独立的可编程逻辑模块组成,用户可以通过编程将这些模块连接起来实现不同的设计。
FPGA兼容了EPGA(掩膜可编程阵列)和阵列型PLD两者的优点,因而具有更高的集成度,更强的逻辑实现能力和更好的设计灵活性。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
FPGA有多种配置模式:
并行主模式为一片FPGA加一片EPROM的方式;
主从模式可以支持一片PROM编程多片FPGA;
串行模式可以采用串行PROM编程FPGA;
外设模式可以将FPGA作为微处理器的外设,由微处理器对其编
程。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断地进行更新换代。
它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。
但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可删除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。
由于结构的限制,它们只能完成简单的数字逻辑功能。
其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。
典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与-或”表达式来描述,所以,PLD能以乘积、和的形式完成大量的组合逻辑功能。
这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。
PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。
PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。
还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。
PLA器件既有现场可编程的,也有掩膜可编程的。
20世纪80年代中期。
Altera和Xilinx分别推出了类似于PAL结构的扩展型CPLD(ComplexProgrammab1eLogicDvice)和与标准门阵列类似的FPGA,它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。
这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。
与门阵列等其它ASIC(ApplicationSpecificIC)相比,它们又具有设计开发周期短、设计制造成本低、
开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。
几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。
2.2FPGA产品类型
FPGA与CPLD都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础之上发展起来的。
同以往的PAL、GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。
表2-1:
各大FPGA产品
排名
公司
销售额(亿美金)
市场占有率
1
Altera
5.96
30.1
2
Xilinx
5.74
29.0
3
Vantis
2.20
11.1
4
Lattice
2.18
11.0
5
Actel
1.39
7.0
6
Luccent
0.85
4.3
7
Cypress
0.44
2.2
8
Atmel
0.42
2.1
9
Philips
0.28
1.4
10
Quicklogic
0.24
1.2
经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。
比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占用了较大的PLD市场。
通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。
全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。
可以讲Altera和Xilinx共同决定了PLD技术的发展方向。
当然还有许多其它类型器件,如:
Lattice,Vantis,Actel,Quicklogic,Lucent等。
2.3ISE介绍
硬件设计工具。
相对容易使用的、首屈一指的PLD设计环境!
ISE将先进的技术与灵活性、易使用性的图形界面结合在一起,不管您的经验如何,都让您在最短的时间,以最少的努力,达到最佳的硬件设计。
2.4ISE和MODELSIM的联合使用
ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
主要特点:
•RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;
•单内核VHDL和Verilog混合仿真;
•源代码模版和助手,项目管理;
•集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;
•C和Tcl/Tk接口,C调试;
•对SystemC的直接支持,和HDL任意混合
•支持SystemVerilog的设计功能;
•对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;
•ASICSignoff。
ModelSim分几种不同的版本:
SE、PE、LE和OEM,其中SE是最高级的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。
SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSimXE为例,对于代码少于40000行的设计,ModelSimSE比ModelSimXE要快10倍;
对于代码超过40000行的设计,ModelSimSE要比ModelSimXE快近40倍。
ModelSimSE支持PC、UNIX和LINUX混合平台;
提供全面完善以及高性能的验证功能;
全面支持业界广泛的标准;
MentorGraphics公司提供业界最好的技术支持与服务。
2.5硬件描述语言——VerilogHDL
所谓硬件描述语言,就是可以描述硬件电路的功能,信号连接关系及定时关系的语言。
其中VerilogHDL是一种应用广泛的硬件描述语言,可用于算法级、门级到开关级的多种抽象层次的数字系统设计。
从语法结构来讲,VerilogHDL和C语言有许多相似之处,它能够形式化地表示电路的结构和行为,可以借用高级语言的结构和语句,能够在多个层次上对所设计的系统加以描述。
VerilogHDL最大的特点就是易学易用,由于VerilogHDL的各种优越性,使它广泛流行,尤其在ASIC领域,更是处于主流地位。
在美国、日本等国家,VerilogHDL语言一直是使用最为广泛的硬件描述语言。
那么为什么要使用VerilogHDL呢?
首先,考虑到VerilogHDL与C语言有着密切的联系,而C语言很灵活,查错功能强,可以通过PLI(编程语言接口)编写自己的系统任务直接与硬件仿真器(如Verilog-XL)结合使用。
C语言是目前世界上应用最为广泛的一种编程语言,因而C程序的设计环境比VerilogHDL的完整。
此外,C语言可应用于许多领域,有可靠的编译环境,语法完备,缺陷较少。
比较起来,Verilog语言只是针对硬件描述的,在别处使用(如用于算法表达等)并不方便。
而且Verilog的仿真、综合、查错工具等大部分软件都是商业软件,与C语言相比缺乏长期大量的使用,可靠性较差,亦有很多缺陷。
所以,只有在C语言的配合使用下,Verilog才能更好地发挥作用。
C语言与Verilog语言相辅相成,互相配合使用。
这就是既要利用C语言的完整性,又要结合Verilog对硬件描述的精确性,来更快更好地设计出符合性能要求的硬件电路系统。
利用C语言完善的查错和编译环境,设计者可以先设计出一个功能正确的设计单元,以此作为设计比较的标准。
然后,把C程序一段一段地改写成用并型结构(类似于Verilog)描述的C程序,此时还是在C的环境里,使用的依然是C语言。
将测试输入同时加到C与Verilog两个单元,将其输出做比较。
这样很容易发现问题的所在,然后更正,再做测试,直至正确无误。
剩下的工作就交给后面的设计工程师继续