一种可配置的多尺寸DCT变换硬件复用架构转让专利

申请号 : CN201810039762.0

文献号 : CN108184127B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈志峰郑静宜杨秀芝吴林煌施隆照郑明魁陈建

申请人 : 福州大学

摘要 :

本发明涉及一种可配置的多尺寸DCT变换硬件复用架构。包括:判决与数据重排模块,根据DCT变换的尺寸对输入复用架构的数据是否需要重新排列进行判决;K层蝶形数据处理模块,对经过判决与数据重排模块处理后的数据进行K层蝶形数据处理;末级向量内积模块,将最后一层蝶形数据处理模块输出的偶数位置数据向量与对应的核心矩阵系数进行相乘,相乘后的结果进行相加,然后输出。本发明用基于FPGA的数字逻辑硬件电路和基于ASIC的数字逻辑硬件电路分别实现,简单、有效、可重配置,可广泛应用于各种视频压缩编码标准中的多尺寸DCT变换。

权利要求 :

1.一种可配置的多尺寸DCT变换硬件复用架构,其特征在于,包括:

判决与数据重排模块,根据DCT变换的尺寸对输入复用架构的数据是否需要重新排列进行判决;对于最大尺寸的DCT变换,输入该模块的数据不需要进行重新排列,直接输出;对于小于最大尺寸的DCT变换,则对输入该模块的数据进行重新排列,使得排列后的数据满足后续蝶形运算的规律,为实现多行输入数据的并行处理提供保障,从而充分利用复用架构的接口资源;

K层蝶形数据处理模块,对经过判决与数据重排模块处理后的数据进行K层蝶形数据处理;每一层蝶形数据处理模块先对输入该层蝶形单元的数据进行蝶形运算,蝶形单元计算后输出的偶数位置数据作为下一层蝶形数据处理模块的输入,蝶形单元计算后输出的奇数位置数据作为当前层乘法单元的输入,并与对应的核心矩阵系数进行相乘,相乘后的结果通过当前层加法单元进行相加,然后输出;

末级向量内积模块,将最后一层蝶形数据处理模块输出的偶数位置数据向量与对应的核心矩阵系数进行相乘,相乘后的结果进行相加,然后输出;

K层蝶形数据处理模块包含K个层次的蝶形数据处理模块,每一个层次的蝶形数据处理模块所具有的规律是前一层蝶形数据处理模块中的蝶形单元运算后输出的偶数位置数据,作为当前层蝶形数据处理模块中蝶形单元的输入;K层蝶形数据处理模块中的每一层蝶形数据处理模块包括:第k层蝶形单元,用于对前一层蝶形数据处理模块中蝶形处理单元输出的偶数位置数据进行蝶形运算,若k=1,则是对判决与数据重排模块输出的数据进行蝶形运算;运算后输出的偶数位置数据作为下一层蝶形数据处理模块的输入,运算后输出的奇数位置数据则作为当前层乘法单元的输入;

第k层乘法单元,将第k层蝶形单元输出的奇数位置数据与对应的核心矩阵系数进行相乘,该乘法单元所包含的乘法器个数可配置,以实现不同的数据吞吐量;

第k层加法单元,将第k层乘法单元输出的数据进行逐级两两相加,结果作为复用架构的输出;

其中,1<=k<=K;

所述末级向量内积模块用于完成向量内积运算,包括:

末级乘法单元,用于将第K层蝶形单元输出的偶数位置数据与对应的核心矩阵系数进行相乘;

末级加法单元,用于将末级乘法单元输出的数据进行逐级两两相加,并作为复用架构的输出。

2.根据权利要求1所述的一种可配置的多尺寸DCT变换硬件复用架构,其特征在于,该可配置的多尺寸DCT变换硬件复用架构采用基于FPGA的数字逻辑硬件电路和基于ASIC的数字逻辑硬件电路两种方式实现。

说明书 :

一种可配置的多尺寸DCT变换硬件复用架构

技术领域

[0001] 本发明涉及视频压缩编码的DCT变换技术领域,特别是一种可配置的多尺寸DCT变换硬件复用架构。

背景技术

[0002] 离散余弦变换(Discrete Cosine Transform,DCT)是视频编码器中的重要模块,在目前主流的视频压缩编码标准中,DCT变换通常需要支持多种不同的变换尺寸,比如HEVC的DCT变换有4*4、8*8、16*16与32*32四种尺寸。并且随着视频分辨率朝4K/8K发展,未来视频压缩编码标准中的DCT变换所支持的最大变换尺寸也将不断增大。
[0003] 视频压缩编码标准中的二维DCT变换(2D-DCT)可写成矩阵相乘形式Z=CXCT,其中,X是预测编码模块生成的残差矩阵,C是标准规定的整数系数矩阵,Z是变换后的数据。通常将2D-DCT分步实现,先将输入的残差矩阵逐行进行1D-DCT,即Y=XCT,之后将中间结果Y逐列进行1D-DCT,即Z=CY,所以实现2D-DCT只需要进行两次1D-DCT。对于单一尺寸的DCT变换,现有的DCT/IDCT硬件设计通常采用基于移位和加法代替乘法的方式实现常数乘法来优化资源。然而,随着变换尺寸不断增大,由移位操作消耗的寄存器面积及功耗将会越来越大;同时基于移位和加法的方法只能实现常数乘法,对视频压缩编码标准中不同尺寸的DCT变换进行复用时不够灵活。部分研究者提出一些适用于4、8、16、32点DCT变换的复用架构,但这些架构存在部分模块利用率不高、硬件实现复用架构的复杂度和消耗的资源数量过高,或者吞吐量无法灵活配置等问题。

发明内容

[0004] 本发明的目的在于提供一种可配置的多尺寸DCT变换硬件复用架构,该复用架构能够实现多尺寸的1D-DCT变换,复用架构的资源利用率高,能灵活调用不同尺寸的核心矩阵系数进行相乘以实现不同尺寸的DCT变换,在不同的配置参数情况下,能实现不同的吞吐量。
[0005] 为实现上述目的,本发明的技术方案是:一种可配置的多尺寸DCT变换硬件复用架构,包括:
[0006] 判决与数据重排模块,根据DCT变换的尺寸对输入复用架构的数据是否需要重新排列进行判决;对于最大尺寸的DCT变换,输入该模块的数据不需要进行重新排列,直接输出;对于小于最大尺寸的DCT变换,则对输入该模块的数据进行重新排列,使得排列后的数据满足后续蝶形运算的规律,为实现多行输入数据的并行处理提供保障,从而充分利用复用架构的接口资源;
[0007] K层蝶形数据处理模块,对经过判决与数据重排模块处理后的数据进行K层蝶形数据处理;每一层蝶形数据处理模块先对输入该层蝶形单元的数据进行蝶形运算,蝶形单元计算后输出的偶数位置数据作为下一层蝶形数据处理模块的输入,蝶形单元计算后输出的奇数位置数据作为当前层乘法单元的输入,并与对应的核心矩阵系数进行相乘,相乘后的结果通过当前层加法单元进行相加,然后输出;
[0008] 末级向量内积模块,将最后一层蝶形数据处理模块输出的偶数位置数据向量与对应的核心矩阵系数进行相乘,相乘后的结果进行相加,然后输出。
[0009] 在本发明一实施例中,K层蝶形数据处理模块包含K个层次的蝶形数据处理模块,每一个层次的蝶形数据处理模块所具有的规律是前一层蝶形数据处理模块中的蝶形单元运算后输出的偶数位置数据,作为当前层蝶形数据处理模块中蝶形单元的输入;K层蝶形数据处理模块中的每一层蝶形数据处理模块包括:
[0010] 第k层蝶形单元,用于对前一层蝶形数据处理模块中蝶形处理单元输出的偶数位置数据进行蝶形运算,若k=1,则是对判决与数据重排模块输出的数据进行蝶形运算;运算后输出的偶数位置数据作为下一层蝶形数据处理模块的输入,运算后输出的奇数位置数据则作为当前层乘法单元的输入;
[0011] 第k层乘法单元,将第k层蝶形单元输出的奇数位置数据与对应的核心矩阵系数进行相乘,该乘法单元所包含的乘法器个数可配置,以实现不同的数据吞吐量;
[0012] 第k层加法单元,将第k层乘法单元输出的数据进行逐级两两相加,结果作为复用框架的输出;
[0013] 其中,1<=k<=K。
[0014] 在本发明一实施例中,所述末级向量内积模块用于完成向量内积运算,包括:
[0015] 末级乘法单元,用于将第K层蝶形单元输出的偶数位置数据与对应的核心矩阵系数进行相乘;
[0016] 末级加法单元,用于将末级乘法单元输出的数据进行逐级两两相加,并作为复用架构的输出。
[0017] 在本发明一实施例中,该可配置的多尺寸DCT变换硬件复用架构采用基于FPGA的数字逻辑硬件电路和基于ASIC的数字逻辑硬件电路两种方式分别实现。
[0018] 相较于现有技术,本发明具有以下有益效果:本发明提供的可配置的多尺寸DCT变换硬件复用架构,改进了传统DCT变换的实现架构,可以有效提高整个复用架构内部模块的资源利用率,兼容多种不同尺寸的DCT变换,并且可灵活配置DCT变换硬件复用架构的吞吐量;此外,该可配置的DCT变换硬件复用架构采用基于FPGA的数字逻辑硬件电路和基于ASIC的数字逻辑硬件电路分别实现,简单、有效、可重配置,可广泛应用于各种视频压缩编码标准中的多尺寸DCT变换。

附图说明

[0019] 图1为本发明实施例的结构框图
[0020] 图2为本发明实施例中S(S小于Smax)点1D-DCT变换时,输入Smax个数据的松树形排序图。
[0021] 图3为本发明实施例中(log2Smax-1)级加法的内部结构图。

具体实施方式

[0022] 下面结合附图,对本发明的技术方案进行具体说明。
[0023] 本发明的一种可配置的多尺寸DCT变换硬件复用架构,包括判决与数据重排模块、K层蝶形数据处理模块和末级向量内积模块。所述判决与数据重排模块根据DCT变换的尺寸对输入复用架构的数据是否需要重新排列进行判决,对于最大尺寸的DCT变换,输入该模块的数据不需要进行重新排列,直接输出;对于小于最大尺寸的DCT变换,对输入该模块的数据进行重新排列,使得排列后的数据满足后续蝶形运算的规律,为实现多行输入数据的并行处理提供保障,从而充分利用复用架构的接口资源;所述K层蝶形数据处理模块对经过判决与数据重排模块处理后的数据进行K层蝶形数据处理,每一层蝶形数据处理模块先对输入该层蝶形单元的数据进行蝶形运算,蝶形单元计算后输出的偶数位置数据作为下一层蝶形数据处理模块的输入,蝶形单元计算后的奇数位置数据作为当前层乘法单元的输入,并与对应的核心矩阵系数进行相乘,相乘后的结果通过加法单元进行相加,然后输出;所述末级向量内积模块将最后一层蝶形数据处理模块中蝶形单元输出的偶数位置数据向量与对应的核心矩阵系数进行相乘,相乘后的结果通过加法单元进行逐级两两相加,然后输出。
[0024] 图1是本发明实施例的结构框图。在本实施例中,复用架构支持的多尺寸DCT变换的最大尺寸设为Smax,最小尺寸设为Smin。在实现S(S小于等于Smax)点DCT变换时,每次从S*S大小的图像块中取出r(S)行(或列)数据 并按顺序构成一行Nin(Nin=Smax)个数据,再输入复用架构,每个数据的位宽为win比特。复用架构包含K层蝶形数据处理模块,K的取值为K=min(log2Smin,log2Smax)=log2Smin。整个复用框架在FPGA和ASIC硬件上实现,包括判决与数据重排模块11、K层蝶形数据处理模块12和末级向量内积模块13。
[0025] 判决与数据重排模块11根据DCT变换的尺寸对输入复用架构的数据是否需要重新排列进行判决,对于最大尺寸的DCT变换,输入该模块的数据不需要进行重新排列,直接输出;对于小于最大尺寸的DCT变换,对输入该模块的数据进行重新排列,使得排列后的数据满足后续蝶形运算的规律,其重排时遵循的规律如图2所示。图2中箭头所示的顺序即为重排后的数据向量 的顺序。正方形阵列指未重排前输入的r(S)行长度为S的向量x=[x0,x1,...,xS-1]所组成的输入矩阵X′(r×S),其中,矩阵X′(r×S)的组成元素为x′a,b,与 一一对应。为了使所有K层蝶形运算均能支持r(S)行向量x并行处理,将 分成2K个部分, 属于第 部分,是该部分的第 个元素。每部分内部按光
栅顺序遍历所有行,同时为了保证首尾对称,相邻两部分的扫描顺序相反,即c为偶数时,而c为奇数时,
[0026] K层蝶形数据处理模块12用于对重排后的数据进行K个层次的蝶形数据处理,前一层蝶形数据处理模块中蝶形处理单元输出的偶数位置数据作为下一层蝶形数据处理模块的输入,图1中的横向省略号表示中间层次的蝶形数据处理模块。通过配置K层蝶形数据处理模块中的乘法单元所含有的乘法器个数,可以在Smin·r(S)≤T(S)≤S·r(S)=Smax范围内灵活设置复用架构的吞吐量T(S)。每一个层次的蝶形数据处理模块包含3个子模块。以第一层、第二层、第K-1层和第K层蝶形数据处理模块为例。
[0027] 第一层蝶形数据处理模块包含的3个子模块分别为:
[0028] (1)第一层蝶形单元1201:该模块对重排后的数据进行蝶形运算,输出为偶数位置和奇数位置的两部分数据,蝶形单元输出的两部分数据的个数均比蝶形单元的输入数据个数减少一半,但每个数据的位宽增加1比特。
[0029] (2)第一层乘法单元1202:该模块将第一层蝶形单元1201输出的奇数位置数据与对应的核心矩阵系数进行相乘。
[0030] (3)第一层加法单元1203:该模块对第一层乘法单元1202输出的向量数据进行逐级两两相加,其总共有(log2Smax-1)级加法,如图3所示。对于Smax点变换,则在该加法单元的最后一级加法器输出一个数据;对于 点变换,则在该加法单元的倒数第二级加法器输出两个数据;对于更小点数的变换,可以依次类推。类似的,对于第k(1<=k<=K)层加法单元,其共有(log2Smax-k)级加法。
[0031] 第二层蝶形数据处理模块包含的3个子模块分别为:
[0032] (1)第二层蝶形单元1204:该模块对第一层蝶形单元1201输出的偶数位置数据进行蝶形运算,输出为偶数位置和奇数位置的两部分数据。
[0033] (2)第二层乘法单元1205:该模块将第二层蝶形单元1204输出的奇数位置数据与对应的核心矩阵系数进行相乘。
[0034] (3)第二层加法单元1206:该模块对第二层乘法单元1205输出的向量数据进行逐级两两相加,其总共有(log2Smax-2)级加法。
[0035] 第K-1层蝶形数据处理模块包含的3个子模块分别为:
[0036] (1)第K-1层蝶形单元1207:该模块对第K-2层蝶形单元输出的偶数位置数据进行蝶形运算,输出为偶数位置和奇数位置的两部分数据。
[0037] (2)第K-1层乘法单元1208:该模块将第K-1层蝶形单元1207输出的奇数位置数据与对应的核心矩阵系数进行相乘。
[0038] (3)第K-1层加法单元1209:该模块对第K-1层乘法单元1208输出的向量数据进行逐级两两相加,其总共有(log2Smax-K-1)级加法。
[0039] 第K层蝶形数据处理模块包含的3个子模块分别为:
[0040] (1)第K层蝶形单元1210:该模块对第K-1层蝶形单元1207输出的偶数位置数据进行蝶形运算,输出为偶数位置和奇数位置的两部分数据。
[0041] (2)第K层乘法单元1211:该模块将第K层蝶形单元1210输出的奇数位置数据与对应的核心矩阵系数进行相乘。
[0042] (3)第K层加法单元1212:该模块对第K层乘法单元1211输出的向量数据进行逐级两两相加,其总共有(log2Smax-K)级加法。
[0043] 末级向量内积模块13用于将最后一层(即第K层)蝶形数据处理模块输出的数据向量与对应的核心矩阵系数进行相乘,相乘后的结果通过加法单元进行相加,然后输出。该模块包含2个子模块,各子模块分别为:
[0044] (1)末级乘法单元131:该模块将第K层蝶形单元1210输出的偶数位置数据与对应的核心矩阵系数进行相乘。
[0045] (2)末级加法单元132:该模块对末级乘法单元131输出的向量数据进行逐级两两相加,其总共有(log2Smax-K)级加法。
[0046] 以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。