微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > FPGA与DSP协同处理系统设计之:典型实例-整数DCT变换的设计与实现

FPGA与DSP协同处理系统设计之:典型实例-整数DCT变换的设计与实现

时间:06-05 来源:互联网 点击:

11.6典型实例21:整数DCT变换的设计与实现

11.6.1实例的内容及目标

1.实例的主要内容

本节旨在设计实现了视频压缩标准H.264算法中的整数DCT变换部分,帮助读者了解并行流水设计技巧在算法优化中的作用。

2.实例目标

通过本实例,读者应达到以下目标。

·了解数字域变换的基本原理和用处。

·掌握DCT和整数DCT变换的变换方法。

·学习硬件结构设计方法。

·学习流水线设计方法。

·编程实现DCT变换。

11.6.2整数DCT变换的原理

1.DCT简介

H.264是一种图像压缩编码方法,它的变换编码和以前各种标准中的DCT有所不同。以前标准中直接采用DCT的定义进行变换,会带来两个问题。第一,需要进行浮点数操作,从而造成系统设计及运算上的复杂性;第二,由于变换核都是无理数,而有限精度的浮点数不可能精确地表示无理数,再加上浮点数的运算可能会引入舍入误差,这就使得在具体实现时会导致编解码的不匹配(mismatch),即反变换的输出结果和正变换的输入不一致。

为了解决这些问题,H.264采用基于4×4块的整数操作而不是实数运算,使得变换操作仅用整数加减和移位操作就可以完成。这样既降低了设计复杂度,又避免了编解码误匹配,能够得到与4×4DCT变化类似的编码效果,而由此带来的编码性能的减少微乎其微。

由于变换中无乘法,采用基于提升结构的无乘法二进制DCT(BinDCT),只包括加法和16位算术移位,这样大大减小了运算复杂度。尤其是对低端处理,减少了乘法运算且保持了整数变换的优点,精确的整数排除了编码器和解码器之间反变换的误匹配,保证了变换的效果。

2.DCT设计原理

我们可以通过各种公式推导出整数DCT正变换的公式。

(11.1)

公式(11.1)中,虽然乘以1/2的操作可以用右移来实现,但这样会产生截断误差,因此,我们将1/2提到矩阵外面,并与右边的点乘合并,得到公式(11.2)。

(11.2)

这就是H.264中所用到的整数变换公式,其变换核仅用加减法(和左移)即可以实现,而后面的点乘操作可以合并到随后的量化过程中去。

H.264中所用到的反DCT变换公式如下:

(11.3)

其中与Y点乘的操作与反量化合并,乘以系数1/2的操作由右移来实现,由于反量化后的结果足够地大,所以这里不会出现截断误差的问题。以上各式中,

H.264的整数DCT变换可以分做两步完成:先对需要做变换的矩阵的每一列做一维变换,再对其结果的每一行做一维变换,这个次序也可以反过来,先行后列。这样二维变换就可以用一维变换来实现。在具体实现过程中,为了减少运算量,每一步可以采用蝶型算法,以公式(11.2)的第一步对X的第一列进行一维变换为例,其运算过程如下式所示。

(11.4)

其中第一列的元素,为滤波结果。由公式(11.4)可见计算有很多重复,如就同时被计算的公式所使用,所以可以将其暂时保存起来以避免重复计算,对应的蝶型算法如图11.21所示。

从图中可以看见,若按公式(11.4)计算需要进行12次加法、4次乘法。而按图11.19中的蝶型算法仅需8次加法、2次乘法,它利用了运算中的冗余,大大降低了运算量。

11.6.3实例步骤

1.创建新工程并添加源文件

如图11.22所示,首先创建一个新工程并为工程添加源文件。

2.添加测试文件,并添加激励

如图11.23所示,为工程添加测试文件。

图11.22创建新工程并添加设计文件 图11.23添加测试文件

在测试文件中为测试添加激励,如图11.24所示。

图11.24添加激励

3.使用ModelSim进行仿真

要使用ModelSim对工程进行仿真首先要在计算机上面安装ModelSim软件。安装好以后在ISE7.1i的菜单里面选择Edit→Preferences,如图11.25所示。

在上面的对话框里面,“IntegratedTools”复选页里面的ModelTechSimulator里面选择modelsim.exe的路径,单击“OK”按钮。

图11.25设置仿真工具参数

然后再选择菜单里面的View→Refresh,刷新刚才更改的设置,如图11.26所示。

图11.26刷新设置

刷新后就会看见ProcessView里面的图标变成ModelsimSimulator的一些功能,如图11.27所示。

图11.27ModelSim仿真选项

此时双击“SimulateBehavioralModel”就可以对工程进行行为仿真了,如图11.28所示。

图11.28打开ModelSim进行行为仿真

在ModelSim的波形窗口中观察到的行为仿真结果如图11.29所示。

图11.29行为仿真结果

11.6.4小结

本节介绍视频压缩标准H.264算法中的整数DCT变换模块的设计与实现方法,并通过ModelSim软件仿真验证的设计结果。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top