CN1326397C - 一种dct快速变换结构 - Google Patents

一种dct快速变换结构 Download PDF

Info

Publication number
CN1326397C
CN1326397C CNB031372457A CN03137245A CN1326397C CN 1326397 C CN1326397 C CN 1326397C CN B031372457 A CNB031372457 A CN B031372457A CN 03137245 A CN03137245 A CN 03137245A CN 1326397 C CN1326397 C CN 1326397C
Authority
CN
China
Prior art keywords
dct
output
circuit
parallel
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB031372457A
Other languages
English (en)
Other versions
CN1553707A (zh
Inventor
陈剑军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GAOTE INFORMATION TECHNOLOGY Co Ltd HANGZHOU CITY
Original Assignee
GAOTE INFORMATION TECHNOLOGY Co Ltd HANGZHOU CITY
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GAOTE INFORMATION TECHNOLOGY Co Ltd HANGZHOU CITY filed Critical GAOTE INFORMATION TECHNOLOGY Co Ltd HANGZHOU CITY
Priority to CNB031372457A priority Critical patent/CN1326397C/zh
Publication of CN1553707A publication Critical patent/CN1553707A/zh
Application granted granted Critical
Publication of CN1326397C publication Critical patent/CN1326397C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明是对由8×8子块组成的图像数据进行二维DCT或是二维IDCT的一种快速变换装置。以8×8子块的一维DCT为例,变换装置包括控制电路1、输人寄存电路2、蝶形运算电路3、并串变换电路4、查表运算电路5和输出寄存电路6。本发明采用查找表替代乘法运算的设计思想,完成一次DCT只需要一次蝶形运算,24个加法器,0个乘法器,同时利用流水线设计思想大大提高了运算速度,数据可以连续输入,同时在每个时钟周期都能得到一个运算结果。本发明结构规整,非常适合用FPGA来实现,所需资源比现有的实现结构节省30%以上。本发明可以应用于各种图像数据压缩技术中,尤其是在对压缩的速度和质量要求较高的MPEG、H.26X中能发挥重要的作用。

Description

一种DCT快速变换结构
技术领域
本发明涉及在图像信号处理等的信息压缩技术中使用的离散余弦变换(以下简称“DCT”)和离散余弦反变换(以下简称“IDCT”)的基于FPGA的DCT/IDCT变换结构,尤其涉及对由多个8×8子块组成的图像数据进行二维DCT运算或者是二维IDCT变换的结构。
背景技术
随着微电子技术的发展,电子信息类产品的开发出现了两个明显的特点:一是产品的复杂程度加深,二是产品的上市时限紧迫。针对这种情况,出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
同样的,用于图像信号处理的各类大规模电路的设计也不再时兴采用全定制电路设计方法或者是半定制电路设计方法,而采用现场可编程逻辑器件的系统级设计方法已成为视频技术发展的一种新趋势。DCT/IDCT,尤其是二维的DCT/IDCT是信息压缩中的核心技术,因此寻找一种适合于用FPGA来实现的快速DCT/IDCT变换是非常有必要的。
DCT是常用的图像变换域编码方法,它采用非均量量化的方法来降低图像中的高频分量,除去观察者察觉不到的冗余信息,同时把图像数据转换成可归一、量化和可变长度编码的频域系数。图像信息经过DCT变换后绝大部分的能量集中在直流分量和少数低频分量上,减少了空间冗余,因此被广泛地用于JPEG编码方案、MPEG-1编码方案和MPEG-2编码方案中。另外,为了解压缩数据,还需要反离散余弦(IDCT)运算。许多专用MPEG解码器在这些部分(如运动估计模块)使用了FPGA。因为FPGA可重新配置,因此器件能方便地进行刷新,并在整个开发阶段(包括配置之后)集成新算法。至今为止,很多快速的DCT-IDCT运算方法已经发表:比方说Chen,Feigh,Lee,Arai,Ligtenberg以及其它很多。某些在专门订做的ASIC上执行得比较好,有些则适用于处理器,但是适合于用FPGA实现的快速DCT/IDCT变换还很少。
二维DCT的定义如下:
X ( k , j ) = 2 MN C ( k ) C ( j ) x ( n , m ) cos ( 2 n + 1 ) kπ 2 N cos ( 2 m + 1 ) jπ 2 M - - - ( 1 )
其中,K=0,1,…,N-1;J=0,1,…,M-1;
式中x(n,m)代表待变换矩阵中第n行、第m列的元素,X(K,J)代表变换后的矩阵中第K行、第J列的元素。
二维IDCT的定义如下:
x ( n , m ) = 2 MN [ Σ n = 0 N - 1 Σ m = 0 M - 1 C ( k ) C ( j ) X ( k , j ) cos ( 2 n + 1 ) kπ 2 N cos ( 2 m + 1 ) jπ 2 M ] - - - ( 2 )
其中,K=0,1,…,N-1;J=0,1,…,M-1;
Figure C0313724500053
二维DCT最简单明了的实现方法是采用行列分离法,即首先对矩阵的每一行进行DCT,然后再对每一列进行DCT,其原理简述如下,将式(1)改写为:
X ( k , j ) = 2 N Σ n = 0 N - 1 [ 2 M Σ m = 0 M - 1 x ( n , m ) cos ( 2 m + 1 ) jπ 2 M ] cos ( 2 n + 1 ) kπ 2 N - - - ( 3 )
式中间方括号中的部分即是一维DCT的公式,其运算的结果再进行一遍DCT即可得到二维DCT的结果。
一维DCT快速变换的研究已经取得了很大的进展,二维DCT快速变换的研究成果并不显著,虽然有人研究出比行列分离法所需乘法器更少的方法,但多数此类方法均需要进行复杂的前期或后期的转换,而且乘法器的减少也并不显著,由此带来的资源上的节省并不显著,并且它的实现结构比较复杂,并不适合在FPGA中实现。同时利用两个一维变换来实现的结构规整,比较适合用FPGA实现。
实现一维DCT的快速变换方法有很多种,例如直接按照定义式来实现的基于快速傅里叶变换的方法,基于PT(Polynomial Transform)的方法,还有采用systolic算法和FG(flow-graphic)算法实现的变换。这些方法能够有效的减少二维DCT所需的乘法器,比如基于PT的方法只需8个一维DCT所需的乘法器,但是法存在一个很大的缺点,那就是结构很不规则,不适合于在布线资源紧缺的FPGA中实现。采用Systolic算法实现的DCT变换的主要特点是利用每个乘法中的共同项来减少乘法所需的开销,但是这种设计方法的设计复杂度较高。而采用FG算法的DCT变换利用了一维DCT中的对称性,采用了类似于FFT的蝶形结构。这种方法的一个缺点是蝶形运算是一个很耗费布线资源的结构,而且存在多级加法,需要的加法器也会很多,如果在每级加法都存在舍入误差,那么在输出端的误差将累积到无法容忍的程度,因此不适合于用FPGA来实现。
图6是用于说明利用奇偶对称性来减少运算量实现DCT变换的数据流程图,它的一维DCT运算的设计原理如下:
设x(n)为待变换序列,C(K)为目标序列,则有
C ( k ) = 2 N X ( k ) ( k = 0,1 , Λ , N - 1 )
X ( k ) = Σ n = 0 N - 1 x ( n ) cos k ( 2 n + 1 ) π 2 N - - - ( 4 )
其中先考虑X(K)的偶数项:
X ( 2 k ) = Σ n = 0 N - 1 x ( n ) cos k ( 2 n + 1 ) π N
= Σ n = 0 N / 2 - 1 x ( n ) cos k ( 2 n + 1 ) π N + Σ n - N / 2 N - 1 cos k ( 2 n + 1 ) π N - - - ( 5 )
= Σ n = 0 N / 2 - 1 [ x ( n ) + x ( N - n - 1 ) ] cos k ( 2 n + 1 ) π N ( k = 0,1 , Λ N 2 - 1 )
再考虑X(K)的奇数项:
X ( 2 k + 1 ) = Σ n = 0 N - 1 x ( n ) cos ( 2 k + 1 ) ( 2 n + 1 ) π 2 N ( k = 0,1 , Λ , N 2 - 1 ) - - - ( 6 )
考察相邻的两个奇数项,得到:
X ( 2 k + 1 ) + X ( 2 k - 1 ) = Σ n = 0 N - 1 x ( n ) [ cos ( 2 k + 1 ) ( 2 n + 1 ) π 2 N + cos ( 2 k - 1 ) ( 2 n + 1 ) π 2 N ]
= Σ n = 0 N - 1 2 x ( n ) cos k ( 2 n + 1 ) N cos ( 2 n + 1 ) π 2 N - - - ( 7 )
= Σ n = 0 N / 2 - 1 2 [ x ( n ) - x ( N - n - 1 ) ] cos ( 2 n + 1 ) π 2 N cos k ( 2 n + 1 ) π N
( k = 0,1 , Λ , N 2 - 1 )
其中X(1)可由下式计算:
X ( 1 ) = Σ n = 0 N - 1 x ( n ) cos ( 2 n + 1 ) π 2 N = Σ n = 0 N / 2 - 1 [ x ( n ) - x ( N - n - 1 ) ] × cos ( 2 n + 1 ) π 2 N
由式(4)、(6)得到如下的递推公式:
步骤1计算序列g(n)和h(n)。
g(n)=x(n)+x(N-n-1)
h ( n ) 2 cos ( 2 n + 1 ) π 2 N × [ x ( n ) - x ( N - n - 1 ) ] ( n + 0,1 , Λ , N / 2 - 1 ) - - - ( 8 )
步骤2计算g(n)和h(n)的N/2点的DCT:
g ( k ) = Σ n = 0 N / 2 - 1 g ( n ) cos k ( 2 n + 1 ) π N
h ( k ) = Σ n = 0 N / 2 - 1 h ( n ) cos k ( 2 n + 1 ) π N ( n = 0,1 , Λ , N / 2 - 1 ) - - - ( 8 )
步骤3用g(k)和h(k)来计算X(k):
X(2k)=g(k)(K=0,1,…,N/2-1)
X(2k+1)=h(k)-X(2k-1)(k=0,1,…,N/2-1)
X ( 1 ) = 1 2 h ( 0 ) - - - ( 9 )
这样就把一个N点的DCT分解为两个N/2的DCT以及N/2个实乘和3N/2-1个实加来计算,于是乘法运算的次数和加法运算的次数的计算公式如下:
m ( n ) = 2 m ( N 2 ) + N 2 ;
a ( n ) = 2 a ( N 2 ) = 3 2 N - 1
反复利用这个过程直到两点变换为止,m(2)=1,a(2)=2,就得到
m ( n ) = 1 2 Nlo g 2 N ;
a ( n ) = 3 2 Nlo g 2 N - N + 1
从上述的整个运算流程,我们可以发现虽然利用奇偶对称性减少了运算量,但因为用了多个布线不规则的蝶形运算结构,不但整个电路的面积很大,非常耗费布线资源,而且因为含有多次的乘法和加减法运算,所以运算量还是偏大。以N=8为例,m(8)=12,a(8)=29,以行列分离法来计算二维DCT的话,还需要加倍,m(8)=24,a(8)=56。
发明内容
为了解决上述问题,本发明的目的是提供一种电路面积小的、快速的二维DCT或二维IDCT变换结构,它可以对由多个8×8子块组成的图像数据进行DCT或者是IDCT运算。以完成8×8子块的一次DCT运算为例,它的运算结构包括:控制单元,它输出控制各个运算单元的控制信号;输入寄存单元,它一个时钟接收一个图像数据,8个时钟后把串行输入的一行或者是一列图像数据并行输出;一次蝶形运算单元,它把寄存器的并行输出数据做一次蝶形运算,输出其运算结果;并串转换单元,它以蝶形运算的结果为并行输入,以每个时钟限制n位输出的方式生成表的寻址地址;查表运算单元,它以并串转换单元的输出结果为地址进行查表,同时对查表的内容进行累加运算,累加的结果就是和输入的图像数据对应的一维DCT变换结果;输出寄存单元,它把并行输入的查表运算单元的运算结果转化成串行输出,经过转置后作为后续的第二维DCT运算的输入数据;要实现 y ( n ) = Σ k = 1 K A k x k ( n ) , 在代入 x k = - x k , 0 + Σ b = 1 B - 1 x kb 2 - b 后,得到
y=-[x10·A1+x20·A2+x30·A3+ΛΛ+xk0·Ak]
   +[x11·A1+x21·A2+x31·A3+ΛΛ+xk1·Ak]2-1
   +[x12·A1+x22·A2+x32·A3+ΛΛ+xk2·Ak]2-2
                           M
                           M
   +[x1(B-2)·A1+x2(B-2)·A2+x3(B-2)·A3+ΛΛ+xk(B-2)·Ak]2-(B-2)
   +[x1(B-1)·A1+x2(B-1)·A2+x3(B-1)·A3+ΛΛ+xk(B-1)·Ak]2-(B-1)
查找表由K个输入数据xk的第b位xkb组成的向量[x1b,x2b,x3b......,xKb]作为地址,查找表的内容就是相应的乘积和。
本发明的DCT快速运算方法及其结构采用查找表替代乘法运算的设计思想,完成一次DCT只需要一次蝶形运算,24个加法器,0个乘法器,大大提高运算速度的同时,也节约了布线资源,缩小整个电路的面积,非常适合用FPGA来实现。
附图说明
图1是本发明的实施例的二维DCT的第一次一维DCT运算结构的系统电路图。
图2是本发明的实施例的二维DCT的第一次一维DCT的蝶形运算电路和并串转换单元的结构图。
图3是本发明的实施例的二维DCT的第一次一维DCT的查表运算单元的MAC1电路结构图。
图4是本发明的实施例的二维DCT的第二次一维DCT的查表运算单元的MAC1电路结构图。
图5是本发明的实施例的二维DCT的实现框图。
图6是现有的利用奇偶对称性实现DCT变换的系统电路图。
图7是本发明的实施例的二维IDCT的第一次一维IDCT运算结构的系统电路图。
具体实施方式
本实施例的DCT装置,以8×8为单位像块,每次输入一行或者是一列的图像数据,利用查表运算替代乘法运算,完成快速DCT变换。
假设我们要实现以下的式子:
y ( n ) Σ k = 1 K A k x k ( n ) - - - ( 10 )
其中Ak是常量,而xk是用补码表示的变量。为了推导方便,将xk限制在±1的范围内(实际情况并不一定满足这个条件,但是通过乘上一个固定的常数就可将系数变换到这个限制范围内)。由此xk可以表示为:
x k = - x k , 0 + Σ b = 1 B - 1 x kb 2 - b - - - ( 11 )
其中xkh是xk的第b比特,而xk0表示数的正负,如果它为1表明这个数是负数。将(11)代入(10)可得
y = Σ k = 1 K A K [ - x K 0 + Σ b = 1 B - 1 x Kb 2 - b ] = Σ k = 1 K x K 0 · A k + Σ k = 1 K Σ b = 1 b - 1 x kb · A k 2 - b - - - ( 12 )
进一步将所有的乘积项表示出来可以得到:
y=-[x10·A1+x20·A2+x30·A3+ΛΛ+xk0·Ak]
   +[x11·A1+x21·A2+x31·A3+ΛΛ+xk1·Ak]2-1
   +[x12·A1+x22·A2+x32·A3+ΛΛ+xk2·Ak]2-2
                           M                                         (13)
                           M
   +[x1(B-2)·A1+x2(B-2)·A2+x3(B-2)·A3+ΛΛ+xk(B-2)·Ak]2-(B-2)
   +[x1(B-1)·A1+x2(B-1)·A2+x3(B-1)·A3+ΛΛ+xk(B-1)·Ak]2-(B-1)
这个式子关键是两部分,第一部分是方括号里面的乘积和,另外一部分就是权重因子。由于xkb不是0就是1,并且Ak是常数,因此我们可以用查找表来实现。查找表由K个输入数据xk的第b位xkb组成的向量[x1b,x2b,x3b......,xKb]作为地址,查找表的内容就是相应的乘积和。这个表称为DALUT(Distribute Arithmetic Look Up Table),这种算法称为DA算法。
从(13)式可以看出权重因子是2的幂,因此用移位寄存器实现起来很方便,只需将计算结果向最低位做相应的移位即可,同时在高位补上符号位(这是不考虑精度的做法,如果要用到四舍五入,则要将最低位的值加到前面去)。
一维DCT存在某些对称性,可以利用这些对称性来减少DCT的计算量。经过一次化简的一维DCT运算用矩阵形式表示如下:
x ( 0 ) x ( 2 ) x ( 4 ) x ( 6 ) = 1 2 A A A A A C - C - B A - A - A A C - B B - C x ( 0 ) + x ( 7 ) x ( 1 ) + x ( 6 ) x ( 2 ) + x ( 5 ) x ( 3 ) + x ( 4 )
x ( 1 ) x ( 3 ) x ( 5 ) x ( 7 ) = 1 2 D E F G E - G - D - F F - D G E G - F E - D x ( 0 ) - x ( 7 ) x ( 1 ) - x ( 6 ) x ( 2 ) - x ( 5 ) x ( 3 ) - x ( 4 ) - - - ( 14 )
一维IDCT运算矩阵形式表示如下:
x ( 0 ) x ( 1 ) x ( 2 ) x ( 3 ) = 1 2 A B A C A C - A - B A - C - A B A - B A - C x ( 0 ) x ( 2 ) x ( 4 ) x ( 6 ) + 1 2 D E F G E - G - D - F F - D G E G - F E - D x ( 1 ) x ( 3 ) x ( 5 ) x ( 7 )
x ( 7 ) x ( 6 ) x ( 5 ) x ( 4 ) = 1 2 A B A C A C - A - B A - C - A B A - B A - C x ( 0 ) x ( 2 ) x ( 4 ) x ( 6 ) - 1 2 D E F G E - G - D - F F - D G E G - F E - D x ( 1 ) x ( 3 ) x ( 5 ) x ( 6 ) - - - ( 15 )
其中:
A = cos π 4 , B = cos π 8 , C = sin π 8 , D = cos π 16 , E = cos 3 π 16 , F = sin 3 π 16 , G = sin π 16
可以看到每个DCT变换的结果都是一个常数向量和一个变向量的点乘的结果。并且经过对输入数据的蝶形运算,将变向量中的变量的个数K从8变到4。根据上面的计算可知如果K=8,如果用DA算法来实现的话,DALUT中表项会达到28=256项,而如果K=4,则DALUT中的表项为24=16项,大大的减少了查找表中的表项的数目。虽然前面的蝶形运算是不规则运算,会浪费整个系统的布线资源,但是从查找表中节省下来的资源大大超过了这边所需的资源。实际上(14)式中还存在对称性,还可以进一步简化。假如我们将K从4变到2,得到的好处是表项从16项减少到4项。但是由此带来的代价是一次蝶形运算,已经得不偿失了。还有一点很重要的是Virtex系列的FPGA中逻辑的实现的基础就是4输入的LUT,刚好可以将放入一个查找表。由此分析可知,用DA算法加上化简式(14)来用Virtex系列的FPGA实现一维DCT是最合适的。
下面说明本发明的运算结构的构成。
图1是用来说明本实施例的一维DCT运算的系统框图。在图中,整个系统框图由以下几部分构成:控制电路1,它输出单元控制信号;输人寄存电路2,它1个时钟接收一个9位的图像数据x(n),8个时钟后把接收到的一行或者是一列图像数据并行输出;蝶形运算电路3,它对输入寄存电路2输出的8个数据x(n)做一次蝶形运算,同时数据位数扩展为10位,将结果输出给并串转换电路;并串变换单元4,它对并行输入的8个10位的蝶形运算电路的输出结果遵循8个时钟处理完所有数据的原则限制每个时钟串行输出2位;查表运算单元5,它根据并串变换单元4的输出组合成寻址地址进行查表,并对查表的内容进行累加,获得的结果就是原始输入的图像数据x(n)对应的DCT变换结果;输出寄存电路6,它把查表运算单元5中并行输出的变换结果转化为串行输出,最终得到的X(n)就是与输入的x(n)一一对应的DCT结果。
另外,上述并串变换单元4由8个P2S电路组成,它将蝶形运算电路并行输出的8个数据转化为串行输出,同时每个时钟输出的位数由数据的位数来决定。第一次一维DCT变换每个时钟输出2位,用xnL,xnM来表示P2S中输出的低位数据和高位数据,第二次一维DCT变换每个时钟输出3位,用xnL,xnMd,xnM来表示。
另外,上述查表运算单元5由8个MAC0、MAC1、MAC2、MAC3、MAC4、MAC5、MAC6、MAC7组成,其中每个MACn由一个DA和一个累加电路构成。DA是FPGA器件内部对应的表,用于DCT/IDCT运算;8个累加电路,用来累加查找表的内容。
图2是上述蝶形运算电路和并串转换电路的内部构成图。原始图像数据x(n)输入到蝶形运算电路后,经过蝶形运算,送入并串转换电路。并串转换电路根据每个时钟需要操作的数来决定每个时钟需要输出2位数,依次输出每个数的第0位和第5位,第1位和第6位,第2位和第7位,第3位和第8位,第4位和第9位。再将8个数的高位和低位分别组合成x0M,x2M,x4M,x6M,x0L,x2L,x4L,x6L,x1M,x3M,x5M,x7M,x1L,x3L,x5L,x7L四种组合送给上述的查表运算单元,其中0、2、4、6的组合地址同时送入DA0、DA2、DA4、DA6,1、3、5、7的组合地址同时送入DA1、DA3、DA5、DA7中。
图3是MAC1的电路结构。实际上所有的MACn结构都相同,只不过不同的MACn中的查找表的内容不同。以MAC1为例来说明MACn的电路结构组成。图3(a)表示DA1的寻址,并串变换单元的每一位输出都对应表中的一个数值,输出的就是相应的乘积和,图3(b)表示DA1表里的内容,就是相应的乘积和,需要注意的是图3(b)中DA1里的内容,是在xk限制在±1的范围内的假设情况下的示意图,在实际情况下,要把表中的值都乘上xk的最高比特所代表的值。
图3(c)表示MAC1的电路结构。每个时钟从并串变换单元中接收到的由低位和高位数据组成的地址分别送入DALUT,两个DALUT是相同的。将低位的查找结果除以32后,和高位的查找结果相加。如果高位刚好是符号位,那么就用低位的结果减去高位的结果,加减控制由load信号经过计数以后来控制。查找表的计算结果与寄存器除2的结果相加再送回寄存器中。Load信号表明新的计算开始,将寄存器清零。同时load信号来5个周期后,寄存器中就是最终的计算结果。运算中涉及到除以32和除以2,这在硬件电路中就采用移位寄存器来实现,只需去掉低5位。8个MACn的计算结果在load信号的控制下送到输出寄存器中,然后串行的一个个输出。这样把两次一维DCT联合起来,就完成了二维DCT。
图4是第二次DCT时MAC1的电路结构图,这里P2S每次输出3位。
图5是二维DCT的实现框图。先进行一次一维DCT,然后对变换的结果进行转置,再进行下一次一维的DCT。
图6是利用奇偶对称性减少运算量来实现DCT变换的数据流程图。如图所示,利用该DCT运算结构完成一次DCT变换需要7次蝶形运算,12个乘法器,29个加法器,可见不但布线很不规则,占用大面积的电路,而且运算量也大,影响运算速度。
图7是二维IDCT的一次IDCT变换结构的系统电路图。与二维DCT变换结构的系统电路图相比,二者电路图的框架设计是完全相同的,不同的是IDCT中,蝶形运算电路在查表运算单元之后,而且二者查表运算单元里的表的内容因为系数不一样,所以也是不一样的,需要重新设计;另外,并串转换电路每个时钟输出的位数也要根据原始数据的位数重新考虑,保证在8个时钟内处理完所有数据,实现流水线操作。
综上所述,本发明的DCT快速运算方法及其结构采用查找表替代乘法运算的设计思想,完成一次DCT只需要一次蝶形运算,24个加法器,0个乘法器,同时利用流水线设计思想大大提高了运算速度,数据可以连续输入,同时在每个时钟周期都能得到一个运算结果。本发明结构规整,非常适合用FPGA来实现,所需资源比现有的实现结构节省30%以上。本发明可以应用于各种图像数据压缩技术中,尤其是在对压缩的速度和质量要求较高的MPEG、H.26X中能发挥重要的作用。

Claims (4)

1、一种快速DCT变换结构,其特征在于包括:
控制单元(1),它输出控制各个运算单元的控制信号;
----输入寄存单元(2),它一个时钟接收一个图像数据,8个时钟后把串行输入的一行或者是一列图像数据并行输出;
----一次蝶形运算单元(3),它把寄存器的并行输出数据做一次蝶形运算,输出其运算结果;
----并串转换单元(4),它以蝶形运算的结果为并行输入,以每个时钟限制n位输出的方式生成表的寻址地址;
----查表运算单元(5),它以并串转换单元的输出结果为地址进行查表,同时对查表的内容进行累加运算,累加的结果就是和输入的图像数据对应的一维DCT变换结果;
----输出寄存单元(6),它把并行输入的查表运算单元的运算结果转化成串行输出,经过转置后作为后续的第二维DCT运算的输入数据;
要实现 y ( n ) = Σ k = 1 K A k x k ( n ) ,在代入 x k = - x k , 0 + Σ b = 1 B - 1 x kb 2 - b 后,得到
y=-x10·A1+x20·A2+x30·A3+ΛΛ+xk0·Ak
   +[x11·A1+x21·A2+x31·A3+ΛΛ+xk1·Ak]2-1
   +[x12·A1+x22·A2+x32·A3+ΛΛ+xk2·Ak]2-2
                           M
                           M
   +[x1(B-2)·A1+x2(B-2)·A2+x3(B-2)·A3+ΛΛ+xk(B-2)·Ak]2-(B-2)
   +[x1(B-1)·A1+x2(B-1)·A2+x3(B-1)·A3+ΛΛ+xk(B-1)·Ak]2-(B-1)
查找表由K个输入数据xk的第b位xkb组成的向量[x1b,x2b,x3b……,xKb]作为地址,查找表的内容就是相应的乘积和。
2、如权利要求1所述的快速DCT变换结构,其特征在于所述的并串变换单元(4)由8个P2S电路组成,它将蝶形运算电路并行输出的8个数据转化为串行输出。
3、如权利要求2所述的快速DCT变换结构,其特征在于所述的并串转换单元(4)每个时钟输出的位数应保证在8个时钟内处理完所有数据。
4、如权利要求1所述的快速DCT变换结构,其特征在于所述的查表运算单元(5)由8个MAC电路(MAC0、MAC1、MAC2、MAC3、MAC4、MAC5、MAC6、MAC7)组成,其中每个MAC电路(MAC0、MAC1、MAC2、MAC3、MAC4、MAC5、MAC6、MAC7)由一个DA和一个累加电路构成。
CNB031372457A 2003-06-02 2003-06-02 一种dct快速变换结构 Expired - Fee Related CN1326397C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB031372457A CN1326397C (zh) 2003-06-02 2003-06-02 一种dct快速变换结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB031372457A CN1326397C (zh) 2003-06-02 2003-06-02 一种dct快速变换结构

Publications (2)

Publication Number Publication Date
CN1553707A CN1553707A (zh) 2004-12-08
CN1326397C true CN1326397C (zh) 2007-07-11

Family

ID=34323542

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031372457A Expired - Fee Related CN1326397C (zh) 2003-06-02 2003-06-02 一种dct快速变换结构

Country Status (1)

Country Link
CN (1) CN1326397C (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100448293C (zh) * 2005-02-03 2008-12-31 联想(北京)有限公司 一种二维离散余弦变换装置及方法
US8606023B2 (en) * 2006-06-26 2013-12-10 Qualcomm Incorporated Reduction of errors during computation of inverse discrete cosine transform
CN101866330A (zh) * 2009-04-20 2010-10-20 天津天极视讯科技发展有限公司 实现二维变换处理的系统、方法和装置
CN101646080B (zh) * 2009-06-18 2013-09-25 杭州高特信息技术有限公司 基于avs并行流水idct快速变换的方法和装置
CN102129661B (zh) * 2010-01-19 2013-04-03 中国科学院光电技术研究所 相关运算装置和互相关函数运算脉动流水线装置
CN101977318B (zh) * 2010-10-29 2012-02-08 西安电子科技大学 Dct量化的并行装置及其方法
CN102065309B (zh) * 2010-12-07 2012-12-05 青岛海信信芯科技有限公司 一种dct实现方法及dct实现电路
CN102710906B (zh) * 2012-04-16 2014-07-16 天津大学 实现二维离散余弦变换的cmos图像传感器
CN103067718B (zh) * 2013-01-30 2015-10-14 上海交通大学 适用于数字视频编解码的一维离散余弦逆变换模块电路
CN103945226B (zh) * 2014-03-06 2017-08-25 京东方科技集团股份有限公司 一种视频解码的方法及其装置
CN105100811B (zh) * 2014-05-14 2018-04-03 北京君正集成电路股份有限公司 一种视频变换的实现方法及装置
CN104093032A (zh) * 2014-07-16 2014-10-08 苏州博联科技有限公司 一种低功耗二维fdct变换方法
CN106210745A (zh) * 2016-08-31 2016-12-07 成都市和平科技有限责任公司 一种智能化jpeg图像编解码系统及方法
CN107105245B (zh) * 2017-05-26 2019-08-06 西安电子科技大学 基于tms320c6678芯片的高速jpeg图像压缩方法
WO2020228763A1 (en) * 2019-05-14 2020-11-19 Beijing Bytedance Network Technology Co., Ltd. Methods on scaling in video coding
CN112422979B (zh) * 2019-08-23 2022-12-13 瑞昱半导体股份有限公司 应用于离散及逆离散正弦余弦变换的运算电路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1111428A (zh) * 1994-05-05 1995-11-08 华邦电子股份有限公司 可巡回执行的离散余弦转换及其逆转换集成电路处理器
CN1258169A (zh) * 1998-12-23 2000-06-28 Lg情报通信株式会社 流水线离散余弦变换设备
CN1289213A (zh) * 2000-10-13 2001-03-28 清华大学 无转置部件行列分离二维离散余弦变换/反变换vlsi结构及其方法
CN1290455A (zh) * 1998-12-14 2001-04-04 松下电器产业株式会社 Dct运算装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1111428A (zh) * 1994-05-05 1995-11-08 华邦电子股份有限公司 可巡回执行的离散余弦转换及其逆转换集成电路处理器
CN1290455A (zh) * 1998-12-14 2001-04-04 松下电器产业株式会社 Dct运算装置
CN1258169A (zh) * 1998-12-23 2000-06-28 Lg情报通信株式会社 流水线离散余弦变换设备
CN1289213A (zh) * 2000-10-13 2001-03-28 清华大学 无转置部件行列分离二维离散余弦变换/反变换vlsi结构及其方法

Also Published As

Publication number Publication date
CN1553707A (zh) 2004-12-08

Similar Documents

Publication Publication Date Title
CN1326397C (zh) 一种dct快速变换结构
CN102257473A (zh) 高基数字乘法器
JPH02501601A (ja) 2次元離散余弦変換プロセッサ
WO1995033241A1 (fr) Processeur arithmetique a haute vitesse pour transformee en cosinus discrete et operations associees
Alam et al. Efficient distributed arithmetic based DWT architecture for multimedia applications
CN101847137B (zh) 一种实现基2fft计算的fft处理器
CN103369326A (zh) 适于高性能视频编码标准hevc的变换编码器
Zhang et al. An efficient design of residue to binary converter for four moduli set (2n-1, 2n+ 1, 22n-2, 22n+ 1-3) based on new CRT II
Kumar et al. Area and frequency optimized 1024 point Radix-2 FFT processor on FPGA
Meher et al. New systolic algorithm and array architecture for prime-length discrete sine transform
Kala et al. High throughput, low latency, memory optimized 64K point FFT architecture using novel radix-4 butterfly unit
CN100517382C (zh) 一种并行提升9/7小波基的vlsi结构
CN102004720B (zh) 可变长快速傅立叶变换电路及实现方法
CN102789446A (zh) 基于cordic算法的dds信号杂散抑制方法及系统
Smith et al. Techniques to increase the computational throughput of bit-serial architectures
Agostini et al. A FPGA based design of a multiplierless and fully pipelined JPEG compressor
Shashikala et al. Efficient Implementation of Radix-2 FFT Architecture using CORDIC for Signal Processing Applications
CN100388316C (zh) 高精度的无乘法器的数字余弦变换电路及其变换方法
Basiri et al. Memory based multiplier design in custom and FPGA implementation
Jothimani et al. VLSI Design of Majority Logic based Wallace Tree Multiplier
CN201886472U (zh) 可变长快速傅立叶变换电路
JP3652717B2 (ja) 離散コサイン高速演算器
Lyakhov Area-Efficient digital filtering based on truncated multiply-accumulate units in residue number system 2n-1, 2n, 2n+ 1
Lin et al. A CORDIC algorithm with fast rotation prediction and small iteration number
Varma et al. Design a low-latency novel fpga based signed multiplier for communication applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070711