CN101989253A - 离散余弦转换电路及使用其的影像处理装置 - Google Patents

离散余弦转换电路及使用其的影像处理装置 Download PDF

Info

Publication number
CN101989253A
CN101989253A CN2009103050961A CN200910305096A CN101989253A CN 101989253 A CN101989253 A CN 101989253A CN 2009103050961 A CN2009103050961 A CN 2009103050961A CN 200910305096 A CN200910305096 A CN 200910305096A CN 101989253 A CN101989253 A CN 101989253A
Authority
CN
China
Prior art keywords
arithmetic
logical unit
discrete cosine
level
calculation
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.)
Granted
Application number
CN2009103050961A
Other languages
English (en)
Other versions
CN101989253B (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.)
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
Original Assignee
Hongfujin Precision Industry Shenzhen Co Ltd
Hon Hai Precision Industry Co Ltd
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 Hongfujin Precision Industry Shenzhen Co Ltd, Hon Hai Precision Industry Co Ltd filed Critical Hongfujin Precision Industry Shenzhen Co Ltd
Priority to CN200910305096A priority Critical patent/CN101989253B/zh
Priority to US12/551,668 priority patent/US8270743B2/en
Publication of CN101989253A publication Critical patent/CN101989253A/zh
Application granted granted Critical
Publication of CN101989253B publication Critical patent/CN101989253B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Discrete Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Abstract

一种离散余弦转换电路,包括具有记忆级及运算级的管线(pipeline)。所述运算级包括第一运算逻辑单元(Arithmetic Logic Unit,简称ALU)及第二运算逻辑单元。所述运算逻辑单元分别从记忆级读取影像数据,在第一频率周期对所述影像数据执行第一计算式并输出计算结果。在所述电路中的线路将所述计算结果传送至所述记忆级,使至少一个运算逻辑单元可以在所述第一频率周期的下一个频率周期中接收所述计算结果并对所述计算结果执行另一个运算。本发明的离散余弦转换电路及使用其的影像处理装置可以配备具有较少资料输出端口的内存。

Description

离散余弦转换电路及使用其的影像处理装置
技术领域
本发明涉及一种离散余弦转换(Diserete Cosine Transformation,简称DCT)技术,尤其涉及一种用来执行二维离散余弦转换的离散余弦转换电路。
背景技术
离散余弦转换经常用于对影像进行数据压缩。正向离散余弦转换是利用离散余弦函数将影像数据正向转换为频率域数据,逆向离散余弦转换则是利用离散余弦函数将频域数据逆向转换为原本的影像数据。离散余弦转换一词可用来表示正向离散余弦转换或逆向离散余弦转换。
离散余弦转换装置通常于一个宏区块上执行完整的二维转换,例如,先对8x8像素区块的每一列进行一维离散余弦转换,再对8x8像素区块的每一行进行另一维离散余弦转换。视频编码标准如H.264、VC-1及MPEG2都使用区块式转换,其差别仅在于区块大小及系数。不同的视频编码方法通常设计有专属的离散余弦转换电路。若要将这些专属电路整合在一个装置中以支持不同的视频编码方法,可能使得电路设计复杂并且在电路微型化上增加困难度,当装置欲支持新的视频编码方法时,电路设计势必需再更改。若使用通用处理器来执行不同的视频编码方法是较有弹性的,但相对而言较缺乏效率。
发明内容
有鉴于此,需提供一种离散余弦转换电路及使用所述离散余弦转换电路的影像处理装置。
本发明实施方式中的离散余弦转换电路包括具有提取级、记忆级以及运算级的管线之蝶形演算电路。所述提取级接收并译码蝶形演算指令集。所述记忆级包括记忆储存库,用来储存影像数据系数以及所述运算级所输出的中间计算数据,并根据至少一已译码蝶形演算指令,在第一频率周期输出储存在所述记忆级的第一组数据。所述运算级包括多个缓存器、第一运算逻辑单元以及第二运算逻辑单元,所述多个缓存器从所述记忆储存库接收所述第一组数据作为所述运算级的输入数据,所述第一运算逻辑单元与所述第二运算逻辑单元从所述多个缓存器接收一组输入数据并对所述组输入数据执行第一计算式,根据至少一条已译码蝶形演算指令在所述第一频率周期后的第二频率周期输出所述第一计算式的计算结果。所述蝶形演算电路包括一线路在所述第一计算式运算完成的同一频率周期中将所述计算结果从所述运算级导至所述记忆级,使至少一个缓存器在所述第二频率周期后的第三频率周期中可选择从所述线路接收所述计算结果或从所述记忆储存库接收下一组数据。
本发明实施方式中的影像处理装置包括具有提取级、记忆级以及运算级的管线之离散余弦转换电路。所述提取级接收并译码蝶形演算指令集。所述记忆级包括记忆储存库用来储存影像数据系数以及所述运算级所输出的中间计算数据,并根据至少一条已译码蝶形演算指令,在第一频率周期输出第一组数据储存在所述记忆级。所述运算级包括多个缓存器、第一运算逻辑单元以及第二运算逻辑单元,所述多个缓存器从所述记忆储存库接收所述第一组数据作为所述运算级的输入数据,所述第一运算逻辑单元与所述第二运算逻辑单元从所述多个缓存器接收一组输入数据并对所述组输入数据执行第一计算式,根据至少一个已译码蝶形演算指令在所述第一频率周期后的第二频率周期输出所述第一计算式的计算结果。所述蝶形演算电路包括在所述第一计算式运算完成的同一频率周期中将所述计算结果从所述运算级导至所述记忆级的线路,使至少一缓存器在所述第二频率周期后的第三频率周期中可选择从所述线路接收所述计算结果或从所述记忆储存库接收下一组数据。
利用本发明的离散余弦转换电路及使用其的影像处理装置,不需要将支持不同的视频编码方法的专属电路整合在一个装置中,因此不会增加电路设计复杂度及电路微型化上的困难度。当装置欲支持新的视频编码方法时,仅需更新或增加蝶形演算指令,而不需更改电路设计。另外,同时使用多个运算逻辑单元以增加堤行效率。利用从所述运算级导至所述记忆级的线路,记忆级中的内存并不需要为了同时传递8个数值给4个运算逻辑单元而拥有4资料输出端口。换言之,本发明的离散余弦转换电路及使用其的影像处理装置可以配备具有较少资料输出端口的内存。
附图说明
图1A为包括离散余弦转换电路165的影像处理装置100之一种实施方式结构方块图。
图1B为影像处理装置之第二种实施方式的结构方块图,示意如何从网络接收数字内容。
图2为离散余弦转换电路之一种实施方式的结构方块图。
图3为蝶形算法的示意图。
图4为蝶形算法其中一个单元的示意图。
图5为离散余弦转换电路于第(j+1)个频率周期运作的示意图。
图6为离散余弦转换电路于第(j+2)个频率周期运作的示意图。
图7为离散余弦转换电路于第(j+3)个频率周期运作的示意图。
图8为离散余弦转换电路于第(j+4)个频率周期运作的示意图。
图9A~9E为蝶形演算单元之实施例的示意图。
图10~12为离散余弦转换电路中,蝶形演算单元于三个连续的频率周期中对矩阵运作的示意图。
具体实施方式
离散余弦转换电路及其装置的实施例说明如下:
1.系统概述
本发明所揭示的离散余弦转换电路可以实施在各种不同的影像处理装置,诸如光盘播放机、数字摄影机、机顶盒或是任何具有影像处理能力的装置,例如电视、行动电话或视频会议装置等。图1A为包括离散转换电路165之影像处理装置100的结构方块图。
1.1影像处理装置之实施例
离散余弦转换电路165整合于影像处理装置100的中央处理单元,即处理器151中。所述处理器151可由单芯片或多芯片构装而成。电源供应器158供给电力予影像处理装置100中的各组件。石英振荡器159提供频率信号给处理器151与影像处理装置100中的其它组件。图1A显示影像处理装置100中各组件的连结关系,其连结可通过串行总线或并行总线。输入输出装置包括控制按钮、七段显示以及和远程控制器通信的红外线接受器或收发器。端口164之其一与外部计算机相连结,可用来对影像处理装置100除错。端口164可以是符合美国电子工业协会(Electronic Industries Association,简称EIA)所制定的第232号推荐标准(Recommended Standard-232,简称RS-232)及/或第11号推荐标准(Recommended Standard-11,简称RS-11)的实体连接端口、串行ATA(Serial ATA,简称SATA)及/或高清多媒体接口(High Definition Multimedia Interface,简称HDMI)。非挥发性内存153储存处理器151所执行的操作系统及应用程序。处理器151加载运行程序与数据数据到主存储器152并将数字内容储存于大量储存装置154中。所述主存储器152可以是动态随机存取内存(Random Access Memory,简称RAM),例如静态随机存取内存(Static RAM,简称SRAM)或是动态随机存取内存(Dynamic RAM,简称DRAM)。所述非挥发性内存153可以是电子可擦除只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),例如或非(NOR)闪存或是与非(NAND)闪存。内容保护单元155针对影像处理装置100所产生的数字内容提供存取控制。所述内容保护单元155包括实现数字视频广播之通用接口(DVB-CI)及/或条件式存取(DVB-CA)所需的内存与必要装置。影像处理装置100可从天线165、调谐器157以及解调器156传递的数字信号取得数字内容。图1B显示另一个实施例,影像处理装置101通过网络存取接口从因特网等网络中取得数字内容。视频输出单元162包括滤波器和放大器用来将处理器151所输出的视频信号加以过滤及放大。音频输出单元161包括数字模拟转换器,用来将处理器151所输出的音频信号从模拟格式转换为数字格式。
1.2离散余弦转换电路之实施例
图2显示离散余弦转换电路200一实施方式的结构方块图。离散余弦转换电路200是图1A与/或1B中离散余弦转换电路165的一实施例。离散余弦转换电路200包括蝶形演算电路用以执行蝶形算法,其详细之说明如下。蝶形演算电路设计为管线架构,包括三级:提取级301、记忆级302与运算级303。如图2所示,离散余弦转换电路200中各组件通过总线相连结。指令内存253储存执行离散余弦转换的指令。缓存器Reg1用来储存从指令内存253读取的指令。提取级301在一个频率周期(或称第一频率周期)接收与译码从缓存器Reg1所取得的蝶形演算指令,并在之后的频率周期中控制记忆级302与运算级303。从提取级301至记忆级302与运算级303中各相关单元的控制线并未显示在图中。
记忆级302包括数据存储器252作为记忆储存库用来储存影像数据系数,内存251用来储存运算级303所输出的中间计算结果。根据已译码的指令,在另一频率周期(或称第二频率周期)从数据存储器252与内存251读取数据组并经由多工器241,242与231-234指引到多工器231~234的输出。总线连结记忆级302中多工器231~234的输出至运算级303中的相对应缓存器Reg2~Reg5。
在本例中,运算级303包括四个缓存器Reg2~Reg5与四个运算逻辑单元ALU1~ALU4。缓存器Reg2~Reg5中的每一个缓存器接收由相应的多工器231~234而来的一组数据,并输出至相应的运算逻辑单元作为其输入数据。相应的多工器、运算逻辑单元或任何其它缓存器的实体为多工器、运算逻辑单元或连结到缓存器的多工器实体。运算逻辑单元ALU1~ALU4根据接收到的输入数据分别执行相同或不同的计算式,并根据至少一条已译码的指令将计算结果在一频率周期(或称第三频率周期)中输出。每一个运算逻辑单元(如ALU1)包括一个移位器(如移位器201)用来执行运算移位操作以及一个加法器/减法器(如加法器/减法器221)用来执行加法及减法运算。
内存251与252可由一个或多个的内存区块或芯片组成。缓存器Reg1~Reg5包括边缘触发正反器,如D型正反器。
离散余弦转换电路200包括线路270与271,用来在前述计算式完成的同一频率周期中将计算结果从运算级303传送至记忆级302。所述计算结果提供给多工器231~234作为任选输入。根据已译码的指令,缓存器Reg2~Reg5可选择在第三频率周期的下一个频率周期中经由多工器231-234从线路270与271中接收所述计算结果。举例来说,多工器233包括一个任选输入31连结到线路270,任选输入32与33分别经由多工器241与242连结到内存251与252与任选输入34用来接收二进制数0,例如根据总线频宽与ALU设计所形成之52位长的二进制数0。根据已译码的指令,多工器233可经由选择输入31将计算结果输出至缓存器Reg4,选择输入32或33从内存251或252读取下一组数据,选择输入34接收52位长的二进制数0。如图2所示,多工器234的输入44亦可接收52位长的二进制数0。
2.蝶形演算架构实施例
2.1蝶形算法实施例
影像处理装置200译码并显示数字化静态影像或视频短片。数字化影像通常以影像元素(或称为像素)的矩阵表示。每一个像素可以用三个主要元素的数值表示。例如,在YCbCr色彩系统中,所述三个主要元素包括一个亮度元素Y和两个色度元素Cb与Cr。所述亮度元素与色度元素之数值用来描述像素的亮度与色度。影像处理装置200也能在其它色彩系统中处理影像,像是三原色(RGB)色彩系统。每一个数字化影像可表示成三个矩形数组,每一个矩形数组则分别包括影像之三元素之数值。
一个影像的空间采样格所形成的宏区块可为4像素乘4像素区块、4像素乘8像素区块、8像素乘8像素区块、16像素乘16像素区块或是其它任何尺寸及形式的区块。影像中的宏区块中每一个像素的色彩信息(例如在YCbCr色彩系统中的一个主要元素)皆形成一个影像数据系数矩阵。假设离散余弦转换根据线性转换函数X=Hx将长度N的向量x转换为一个新的向量系数X,其中H为矩阵,x可为影像数据系数矩阵的行或列。离散余弦转换将影像数据系数从空间域转换到频率域。本文后段,影像数据系数矩阵皆以二维索引的数组表示。矩阵中的元素皆可表示成F[i][j],其中[i]、[j]为索引,i、j为整数变数,第一个(最左边)的索引[i]为垂直方向的索引,而第二个(最右边)的索引[j]为水平方向的索引。例如,F[3][5]表示位于矩阵F中垂直位置3与水平位置5的矩阵元素。
影像处理中离散余弦转换包括将影像数据系数矩阵作一维(1D)的行转换与列转换。1D的行转换与列转换皆为一连串多个矩阵的乘积运算,使得电路设计的复杂度增加。在数学上等同于矩阵相乘积的蝶形算法(如后所称之蝶形运算)则非常适合实现不具矩阵乘法电路的离散余弦转换电路。不同的影像或视频压缩规范其蝶形运算亦不同。举例而言,国际电信联盟(International Telecommunications Union,简称为ITU)所制定的H.264标准,亦为MPEG-4第10部分,或称为MPEG-4进阶视频编码(Advanced Video Coding,简称为AVC),使用离散余弦转换式X=H x,其中:
H = 1 1 1 1 2 1 - 1 - 2 1 - 1 - 1 1 1 - 2 2 - 1 - - - ( 1 )
图3显示对应离散余弦转换算式(0)的蝶形算法。图3包括以x[0]、x[1]、x[2]与x[3]表示的四个输入节点,以X[0]、X[1]、X[2]、X[3]表示的四个输出节点,与八个加号符号“+”的运算节点121-128。节点中的加号符号“+”表示所述节点执行加法运算。图3中的节点以具方向性的转移线相连结以表示其运算流程。所述算法将每个节点的输出值经由转移线从所述节点传送至转移线所连结的下一个节点。转移线旁所标示的-1、2或-2等常数表示在转移过程中相乘的乘数。输入值x[0]、x[1]、x[2]与x[3]可代入影像数据系数矩阵中列向量或行向量中的矩阵元素。
蝶形算法中的基本单元在本实施方式中以蝶形演算单元表示,如蝶形演算单元111。一个蝶形演算单元包括两个输入节点与两个输出节点。如蝶形单元111即包括x[1]与x[2]两个输出节点和作为输出节点的122与123两个运算节点。节点122与123分别表示具有两个输入值的加法运算。节点122以输入值x[1]与x[2]值执行加法运算并产生输出值x[1]+x[2]。节点123以输入值x[1]与(-1×x[2])执行加法运算并产生输出值x[1]+(-1×x[2]),其中蝶形演算单元111显示被乘数x[2]与常数乘数-1相乘之后为节点123的输入值。所述乘数在图3中以转移线旁所标示之数字表示。节点x[0]、x[3]、122与124形成另一个蝶形演算单元。节点121、122、125与126形成另一个蝶形单元。节点122与123的输出值经由转移线传送至节点125-128。当图3所有的蝶形演算单元皆执行完前述的运算之后,图3所示的算法才算执行完成。同理,图3的其它部分也可以循此方式解读。
图2所示的离散余弦转换电路200被设计用来实现各种不同的蝶形算法。离散余弦转换电路所实现之相应的蝶形演算单元如下所示。
2.2蝶形演算单元实施例
控制单元261接收并译码从指令内存253取得的蝶形演算指令,根据已译码的蝶形运算指令控制离散余弦电路200,以实现蝶形算法中的蝶形演算单元。离散余弦转换电路200之一运算例如下所示。
请参考图4,其中蝶形演算单元112表示为:
D[0]’=D[0]×9+D[1]×5    (1)
D[1]’=D[0]×5-D[1]×9    (2)
所述离散余弦转换电路包括执行运算位移位的筒移位器。在本实施方式中,以实数变量x以及正整数变量y所标示的x((y表示x为二的补码并向右位移y位。向右位移后填入最高有效位(Most Significant Bit,简称MSB)的数值应与x位移前最高有效位的数值相同。相同地,x((y表示x为二的补码并向左位移y位。向左位移后填入最低有效位的数值应为0。以位移运算实现乘法,算式(1)和(2)可推导为:
D[0]’=D[0]×9+D[1]×5
=D[0]×(8+1)+D[1]×(4+1)
=(D[0]×8+D[0]×1)+(D[1]×4+D[1]×1)
=(D[0]×23+D[0])+(D[1]×22+D[1])
=(D[0]<<3+D[0])+(D[1]<<2+D[1])    (3)
D[1]’=D[0]×5-D[1]×9
=D[0]×(4+1)-D[1]×(8+1)
=(D[0]×4+D[0]×1)-(D[1]×8+D[1]×1)
=(D[0]×22+D[0])-(D[1]×23+D[1])
=(D[0]<<2+D[0])-(D[1]<<3+D[1])    (4)
假设作为1D列转换的影像数据系数为2×2的矩阵C,
C = a c b d
其中a,b,c与d为实数。
蝶形演算单元112以2×2矩阵C执行1D列转换时,矩阵C中列向量的每个矩阵元素将分别代入蝶形演算单元112中的D[0]与D[1]。C矩阵中第一个列向量的矩阵元素C[0][0]与C[0][1]将分别代入算式(1)与(2)中的D[0]与D[1],之后C矩阵中第二个列向量的矩阵元素C[1][0]与C[1][1]将分别代入算式(1)与(2)中的D[0]与D[1]。2×2矩阵C’为2×2矩阵C经由蝶形演算单元112作1D列转换的输出例,其中:
C ′ = a ′ c ′ b ′ d ′ , 以及
C’[0][0]=a’=C[0][0]×9+C[0][1]×5,    (5)
C’[0][1]=c’=C[1][0]×9+C[1][1]×5,    (6)
C’[1][0]=b’=C[0][0]×5-C[0][1]×9,    (7)
C’[1][1]=d’=C[1][0]×5-C[1][1]×9.    (8)
另一个影像数据系数2×2矩阵Y为1D行转换的实施例:
Y = e g f h
其中,e,f,g与h为实数。
蝶形演算单元112执行2×2矩阵Y的1D行转换时,矩阵Y的每一个行向量中的矩阵元素皆分别代入蝶形演算单元中的D[0]与D[1]。也就是第一个行向量中的矩阵元素Y[0][0]与Y[1][0]分别代入算式(1)与(2)中的D[0]与D[1],Y[0][1]与Y[1][1]分别代入算式(1)与(2)中的D[0]与D[1]。2×2矩阵Y’为2×2矩阵Y经由蝶形演算单元112作1D行转换的输出例,其中:
Y ′ = e ′ g ′ f ′ h ′ , 以及
Y’[0][0]=e’=Y[0][0]×9+Y[1][0]×5,    (5a)
Y’[0][1]=g’=Y[0][0]×5-Y[1][0]×9,    (6a)
Y’[1][0]=f’=Y[0][1]×9+Y[1][1]×5,    (7a)
Y’[1][1]=h’=Y[0][1]×5-Y[1][1]×9.    (8a)
矩阵Y的2D离散余弦转换可经由蝶形演算单元112以矩阵Y’代入算式5a、6a、7a与8a中的矩阵Y完成。
3.离散余弦转换电路运作实施例
如前所述,蝶形演算单元112可用算式(3)与(4)表示。离散余弦转换电路可经由执行算式(3)与(4)实现蝶形演算单元112。也就是说,影像处理装置100至少包括三道指令用来实现蝶形演算单元112。第一蝶形演算指令控制离散余弦转换电路200执行算式(3)的(D[1]<<2+D[1])与算式(4)的(D[0]<<2+D[0])。亦即第一蝶形演算指令是用来实现:
t1=(D[1]<<2+D[1]);以及    (9)
t2=(D[0]<<2+D[0])。    (10)
假设t1与t2为变量,可经由缓存器实施,但不限定于此。算式(9)相当于蝶形演算单元112中从D[1]到节点1121的转移线。算式(10)相当于蝶形演算单元112中从D[0]到节点1122的转移线。
第二蝶形演算指令控制离散余弦转换电路200执行算式(3)的(D[0]<<3+D[0])与算式(4)的(D[1]<<3+D[1])。亦即第二蝶形演算指令是用来实现:
t3=(D[0]<<3+D[0]);以及    (11)
t4=(D[1]<<3+D[1])    (12)
算式(11)相当于蝶形演算单元112中从D[0]到节点1121的转移线。算式(12)相当于蝶形演算单元112中从D[1]到节点1122的转移线。
第三蝶形演算指令控制离散余弦转换电路200完成算式(3)与(4)的运算。亦即第三蝶形演算指令是用来实现:
D[0]’=t3+t1;以及    (13)
D[1]’=t2-t4.    (14)
算式(13)相当于蝶形演算单元112中的节点1121。算式(14)相当于蝶形演算单元112中的节点1122。
操作数(operand)取得的控制信息亦包括于蝶形演算指令中。请参考图5至图8中所描述离散余弦转换电路200的运作。离散余弦转换电路200中各组件的连结可通过总线,其装载的数据显示在总线旁。离散余弦转换电路中的总线拥有足够的频宽可以在一个频率周期中传送这些数据。图5至图8并未显示控制信号的连结。记忆级302的每一个多工器根据已译码的指令从任选输入中选择其一并输出。
3.1第j个频率周期
3.1.1提取级
在第j个频率周期中,其中j为整数,当离散余弦电路200以矩阵C执行蝶形演算单元112,提取级301的控制单元261在第j个频率周期中接收并译码第一蝶形演算指令以便在后续的频率周期中控制记忆级302与运算级303。
3.2第(j+1)个频率周期
3.1.1记忆级
请参考图5,在第(j+1)个频率周期中,记忆级302根据第一蝶形演算指令中的两个计算式准备数据数据给运算级303中的缓存器Reg2~Reg5,其中第一蝶形演算指令中的两个计算式分别为矩阵C第一列与第二列的操作数。如图5所示,从数据存储器252读取影像数据系数C[0][0]与C[1][0]并传送给多工器231的任选输入12与多工器233的任选输入33,从数据存储器252读取数据影像系数C[0][1]与C[1][1]并传送给多工器232的任选输入22与多工器234的任选输入43。
3.2.2提取级
提取级301中的控制单元261在同一频率周期中接收并译码第二蝶形演算指令。
3.3第(j+2)个频率周期
请参考图6,详细说明第(j+2)个频率周期中三个级的运作。
3.3.1运算级
运算级303中的每一个缓存器在前一个级中从相对应的多工器接收相对应的数据数据并经由连结提供给运算逻辑单元ALU1~ALU4。每一个运算逻辑单元从缓存器所提供的数据数据中取得两个输入数值。如图6所示,输入给每一个运算逻辑单元的数值显示在相对应的运算逻辑单元旁。连结筒移位器或加法器/减法器旁所标示的数值为经由连结传送到所述筒移位器或加法器/减法器的输入值。例如,移位器201与加法器/减法器221分别接收C[0][0]作为输入操作数。
根据第一蝶形演算指令于矩阵C第一列的运算,运算逻辑单元ALU1以输入值C[0][0]代入D[0]完成算式(10)的运算并输出5C[0][0],运算逻辑单元ALU3以输入值C[0][1]代入D[1]完成算式(9)的运算并输出5C[0][1]。运算逻辑单元ALU1于频率周期中完成蝶形演算单元112中从D[0]连结到节点1122的运算。明确来说,每一个运算逻辑单元中的移位器与加法器/减法器分别完成相对应算式中的移位运算与加法/减法运算。举例来说,当运算逻辑单元ALU1以C[0][0]代入D[0]进行算式(10)的计算时,运算逻辑单元中的移位器201藉由将C[0][0]左移2位得到4×C[0][0]并将运算结果4×C[0][0]输出到加法器/减法器221。加法器/减法器221接收并相加两输入值,4×C[0][0]与C[0][0],然后输出5×C[0][0]。其它运算逻辑单元的内部运算方式亦相似。
根据第一蝶形演算指令于矩阵C第二列的运算,运算逻辑单元ALU2以输入值C[1][0]代入D[0]完成算式(10)的运算并输出5C[1][0],运算逻辑单元ALU4以输入值C[1][1]代入D[1]完成算式(9)的运算并输出5C[1][1]。输出值5C[0][0]、5C[1][0]、5C[0][1]与5C[1][1]储存在内存251作为中间计算结果。
运算逻辑单元ALU1~ALU4以影像数据系数中的不同数据数据平行执行相同的计算用来实现单一指令多重数据(Single instruction stream and multiple data streams,简称SIMD)架构。需注意的是,离散余弦转换电路并不限于SIMD。运算逻辑单元ALU1~ALU4的其中两个可以执行同一计算以实现一个SIMD架构,另两个运算逻辑单元可以执行另一计算以实现另一个SIMD架构,如此一来即实现多重指令多重数据流(Multiple instruction streams and multiple data streams,简称为MIMD)架构。
3.3.2记忆级
请参考图6,在第(j+2)个频率周期中,记忆级根据第二蝶形演算指令用于矩阵C第一列与第二列的操作数提供其它数据数据给运算级中的缓存器。如图6所示,从内存252读取影像数据系数C[0][0]与C[1][0]并传送给多工器231的任选输入12与多工器233的任选输入33,从内存252读取影像数据系数C[0][1]与C[1][1]并传送给多工器232的任选输入22与多工器234的任选输入43。
3.3.3提取级
提取级301中的控制单元261在同一个频率周期中接收并译码第三蝶形演算指令。
3.4第(j+3)个频率周期
请参考图7,详细说明第(j+3)个频率周期中三个级的运作。
3.4.1运算级
根据第二蝶形演算指令于矩阵C第一列的运算,运算逻辑单元ALU1以C[0][0]代入D[0]完成算式(11)的运算并输出9C[0][0],运算逻辑单元ALU3以C[0][1]代入D[1]完成算式(12)的运算并输出9C[0][1]。根据第二蝶形演算指令于矩阵C第二列的运算,运算逻辑单元ALU2以C[1][0]代入D[0]完成算式(11)的运算并输出9C[1][0],运算逻辑单元ALU4以C[1][1]代入D[1]完成算式(12)的运算并输出9C[1][1]。离散余弦转换电路200包括连结线路270与271用于将输出值9C[0][0]、9C[1][0]、9C[0][1]与9C[1][1]于第(j+3)频率周期导至前一个记忆级。输出值9C[0][0]、9C[1][0]、9C[0][1]、9C[1][1]、5C[0][0]、5C[1][0]、5C[0][1]与5C[1][1]皆为中间计算结果。
3.4.2记忆级
在第(j+3)个频率周期中,记忆级302根据第三蝶形演算指令用于中间数据的两个计算式提供其它数据数据给运算级303中的缓存器。中间数据包括运算逻辑单元对应于第一蝶形演算指令的两个计算式之输出以及运算逻辑单元对应于第二蝶形演算指令的两个计算式之输出。需注意的是,运算逻辑单元ALU1与运算逻辑单元ALU2的输出,如9C[0][0]与9C[1][0],经由数据传输线路270导至多工器233的任选输入31而不储存9C[0][0]与9C[1][0]在内存。运算逻辑单元ALU3与运算逻辑单元ALU4的输出,如9C[0][1]与9C[1][1],导至多工器234的任选输入41而不储存9C[0][1]与9C[1][1]在内存。因此,运算级330在下一个频率周期中可以选择性接收9C[0][0]、9C[1][0]、9C[0][1]与9C[1][1]。已储存的5C[0][0]与5C[1][0]从内存251读取后输出到多工器232,5C[0][1]与5C[1][1]从内存251读取后输出到多工器231。
3.4.3提取级
提取级301中的控制单元261可在第(j+3)个频率周期中接收与译码其它蝶形运算指令。
3.5第(j+4)个频率周期
请参考图8,详细说明第(j+4)个频率周期中运算级的运作。
3.5.1运算级
根据第三蝶形演算指令用于相对于矩阵C第一列的中间计算数据的计算式,运算逻辑单元ALU1以5C[0][1]代入t3、9C[0][0]代入t1以完成算式(13)的运算,并输出5C[0][1]+9C[0][0],相当于算式(5)。运算逻辑单元ALU3以5C[0][0]代入t2、9C[0][1]代入t4以完成算式(14)的运算,并输出5C[0][0]-9C[0][1],相当于算式(7)。
根据第三蝶形演算指令用于相对于矩阵C第二列的中间计算数据的计算式,运算逻辑单元ALU2以5C[1][1]代入t3、9C[1][0]代入t1以完成算式(13)的运算,并输出5C[1][1]+9C[1][0],相当于算式(6)。运算逻辑单元ALU4以5C[1][0]代入t2、9C[1][1]代入t4以完成算式(14)的运算,并输出5C[1][0]-9C[1][1],相当于算式(8)。据此,离散余弦转换电路可以执行此三道蝶形演算指令以应用蝶形单元112于矩阵C。
需注意的是,5C[0][0]、5C[0][1]、5C[1][0]、5C[1][1]、9C[0][0]、9C[0][1]、9C[1][0]与9C[1][1]为在第(j+4)个频率周期中,8个输入到运算逻辑单元ALU1~ALU4的不同数值。此8个数值中,有4个是从内存251读取,其余数值则由运算逻辑单元ALU1~ALU4经由线路270与271转送。内存251与252可分别拥有2埠,此2埠的频宽足够传递8个数值的其中之一。因此,记忆级中的内存并不需要为了同时传递8个数值给4个运算逻辑单元而拥有4端口。
4.变化例
图9A~9E显示蝶形演算单元的不同实施例。请参考图9A,因蝶形演算单元113中没有常数乘数,节点1131或1132的运作可以在一个频率周期中藉由运算逻辑单元ALU1~ALU4的其中之一实现与完成。
请参考图9B,从节点D[0]到节点1141的水平转移线以及从节点D[1]到节点1142的水平转移线旁的分别有一常数n,若n的数值为整数2或分数1/2的k次方(也就是n=2k或n=(1/2)k),其中k为一整数,则从节点D[0]到节点1141之转移线所表示的运算以及从节点D[1]到节点1142之转移线所表示的运算可经由移位器中的位移位运算完成。节点1141与节点1142其中之一可表示为加法器所完成的加法。因此,节点1141与节点1142及相关节点中的转移线所表示的运算可经由运算逻辑单元ALU1~ALU4其中之一在一个频率周期中完成。
同样地,在图9C中,如果m的数值是整数2或分数1/2的f次方(也就是m=2f或m=(1/2)f),其中f为一整数,则从节点D[0]到节点1152之转移线所表示的运算以及从节点D[1]到节点1151之转移线所表示的运算可经由移位器中的位移位运算完成。在第一个例子中,n或m并不是整数2或分数1/2的整数次方,则每一个转移线所表示的表达式也许需要离散余弦转换电路200中更多的运算逻辑单元经由更多的频率周期完成。在第一例中,指令内存253中的蝶形演算指令可控制离散余弦转换电路200优先执行转移线旁有常数乘数n或m的运算再执行转移线旁没有常数乘数的运算。
请参考图9D,如果n和m分别为整数2或分数1/2的整数次方,到节点1161的任何转移线所表示的运算可经由筒移位器的位移位运算完成。到节点1161的其它转移线所表示的运算可藉由运算逻辑单元ALU1~ALU4其中之一在一个频率周期中完成。因此,节点1161所表示的运算以及连结到节点1161之转移线所表示的运算可藉由运算逻辑单元ALU1~ALU4其中之一在两个频率周期中完成。节点1162所对应到的运算可做相同理解。
另外,在第二例中n为整数2或分数1/2的整数次方,m则与整数2或分数1/2的整数次方相差1(也就是m=2f±1或m=(1/2)f±1),节点1161所表示的运算以及连结到节点1161之转移线所表示的运算仍可藉由运算逻辑单元ALU1~ALU4其中之一在两个频率周期中完成,在此情况下,运算逻辑单元会优先执行关联m的转移线之运算再执行关联n的转移线之运算。在第二个例子中,指令内存253中的蝶形演算指令可以控制离散余弦转换电路200先执行与m有关的运算再执行与n有关的运算。
同样地,在第三个例子中,m为整数2或分数1/2的整数次方,n则与整数2或分数1/2的整数次方相差1(也就是n=2k±1或n=(1/2)k±1),节点1161所表示的运算以及连结到节点1161之转移线所表示的运算仍可藉由运算逻辑单元ALU1~ALU4其中之一在两个频率周期中完成,在此情况下,运算逻辑单元会优先执行关联n的转移线之运算再执行关联m的转移线之运算。在第三个例子中,指令内存253中的蝶形演算指令可以控制离散余弦转换电路200先执行与n有关的运算再执行与m有关的运算。第二个例子与第三个例子中的情况同样适用于节点1162以及连结到节点1162的转移线。图9E为蝶形演算单元117相关的运算例。图10~12显示离散余弦转换电路200中蝶形演算单元117对矩阵C在连续的三个频率周期的运作。
请参考图9E,连结到节点1171的转移线1173与1174分别关联到常数乘数9与8,其中9=23+1且8=23。如图10~12所示,当离散余弦转换电路200使用蝶形演算单元117对矩阵C进行列转换,运算逻辑单元ALU1~ALU4会先执行关联到乘数9之转移线1173所对应的运算再执行关联到乘数8之转移线1174所对应的运算。同样地,蝶形演算单元117中连结到节点1172的转移线1175与1176分别关联到常数乘数8与9,其中8=23而9=23+1。如图10~12所示,运算逻辑单元ALU1~ALU4,运算逻辑单元ALU1~ALU4会先执行关联到乘数9之转移线1176所对应的运算再执行关联到乘数8之转移线1175所对应的运算。运算逻辑单元于矩阵C的运算于蝶形演算单元117中只要两个频率周期即可完成。
5.结论
如前所述,影像处理装置可储存不同的蝶形演算指令以完成不同的蝶形算法来实现不同影像与视频压缩标准的离散余弦转换电路,如适用于MPEG2与H.264的离散余弦转换电路。当越来越多的压缩标准所适用的指令被整合进指令内存,影像处理装置100的弹性与标准兼容性也会提升。四个运算逻辑单元同时根据不同的影像数据系数进行不同的运算以实现MIMD并增进离散余弦转换电路的整体效率。此外,藉由数据传递路线,离散余弦转换电路内存的使用并不需要四埠。总结来说,本发明所提出的离散余弦转换电路适用于各式影像处理装置,包括但不限于机顶盒、媒体播放机、电视与视频会议装置。

Claims (10)

1.一种离散余弦转换电路,包括具有提取级、记忆级以及运算级的蝶形演算电路,其特征在于:
所述提取级接收并译码蝶形演算指令集;
所述记忆级包括记忆储存库,用来储存影像数据系数以及所述运算级所输出的中间计算数据,并根据至少一已译码蝶形演算指令,在蝶形演算电路的第一频率周期输出储存在所述记忆级的一第一组数据;以及
所述运算级包括多个缓存器、第一运算逻辑单元以及第二运算逻辑单元,所述多个缓存器从所述记忆储存库接收所述第一组数据作为所述运算级的输入数据,所述第一运算逻辑单元与所述第二运算逻辑单元分别从所述多个缓存器接收一组输入数据并对所述组输入数据执行第一计算式,根据至少一已译码蝶形演算指令在所述第一频率周期后的第二频率周期输出所述第一计算式的计算结果;
其中,所述蝶形演算电路包括一线路,在所述第一计算式运算完成的同一频率周期中将所述计算结果从所述运算级导至所述记忆级,使至少一缓存器在所述第二频率周期后的第三频率周期中可选择从所述线路接收所述计算结果或从所述记忆储存库接收下一组数据。
2.如权利要求1所述之离散余弦转换电路,其特征在于:所述运算级在所述第三频率周期中以所述计算结果及从所述记忆储存库取得的第二组数据执行第二计算式。
3.如权利要求1所述之离散余弦转换电路,其特征在于:所述记忆级包括至少一多工器,使至少一缓存器根据至少一已译码蝶形演算指令可选择从所述线路接收所述计算结果或从所述记忆储存库取得下一组数据。
4.如权利要求1所述之离散余弦转换电路,其特征在于:所述第一运算逻辑单元与所述第二运算逻辑单元分别以不同数据执行实质相等于乘法的计算,所述数据中包括至少一组影像数据系数或所述计算结果。
5.如权利要求4所述之离散余弦转换电路,其特征在于:所述第一运算逻辑单元与所述第二运算逻辑单元分别包括筒移位器与加法器用以实现所述实质相等于乘法的计算。
6.如权利要求4所述之离散余弦转换电路,其特征在于:所述运算级包括第三运算逻辑单元与第四运算逻辑单元,在所述第一计算式执行同时,根据不同数据分别执行另一个第二计算式,所述第三运算逻辑单元与所述第四运算逻辑单元分别根据至少一组影像数据系数或所述计算结果执行第三计算式。
7.如权利要求1所述之离散余弦转换电路,其特征在于:所述运算级包括第三运算逻辑单元与第四运算逻辑单元,在所述第一计算式执行同时,分别根据不同数据执行第三计算式,所述第三运算逻辑单元与所述第四运算逻辑单元分别根据至少一组影像数据系数或所述计算结果执行第三计算式。
8.如权利要求1所述之离散余弦转换电路,其特征在于:所述运算级所执行的蝶形演算单元运算包括将第一影像数据系数与第一常数相乘,第二影像数据系数与第二常数相乘,再加总上述两相乘结果,若所述第一常数与2或1/2的整数次方相差1且第二常数为2或1/2的整数次方,则所述第一影像数据系数的乘法运算会优先于所述第二影像数据系数的乘法运算执行。
9.一种影像处理装置,其特征在于包括如权利要求1至8任一项所述的离散余弦转换电路。
10.如权利要求9所述之影像处理装置,其特征在于:所述影像处理装置包括机顶盒。
CN200910305096A 2009-07-31 2009-07-31 离散余弦转换电路及使用其的影像处理装置 Expired - Fee Related CN101989253B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200910305096A CN101989253B (zh) 2009-07-31 2009-07-31 离散余弦转换电路及使用其的影像处理装置
US12/551,668 US8270743B2 (en) 2009-07-31 2009-09-01 Discrete cosine processing circuit and image processing device utilizing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910305096A CN101989253B (zh) 2009-07-31 2009-07-31 离散余弦转换电路及使用其的影像处理装置

Publications (2)

Publication Number Publication Date
CN101989253A true CN101989253A (zh) 2011-03-23
CN101989253B CN101989253B (zh) 2012-08-29

Family

ID=43527087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910305096A Expired - Fee Related CN101989253B (zh) 2009-07-31 2009-07-31 离散余弦转换电路及使用其的影像处理装置

Country Status (2)

Country Link
US (1) US8270743B2 (zh)
CN (1) CN101989253B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110849B2 (en) 2009-04-15 2015-08-18 Qualcomm Incorporated Computing even-sized discrete cosine transforms
US9069713B2 (en) * 2009-06-05 2015-06-30 Qualcomm Incorporated 4X4 transform for media coding
US9081733B2 (en) 2009-06-24 2015-07-14 Qualcomm Incorporated 16-point transform for media data coding
US9075757B2 (en) * 2009-06-24 2015-07-07 Qualcomm Incorporated 16-point transform for media data coding
US9118898B2 (en) 2009-06-24 2015-08-25 Qualcomm Incorporated 8-point transform for media data coding
US9824066B2 (en) * 2011-01-10 2017-11-21 Qualcomm Incorporated 32-point transform for media data coding
KR102356708B1 (ko) 2017-09-28 2022-01-27 삼성전자주식회사 컨볼루션 연산을 수행하는 연산 장치 및 연산 방법
US10460416B1 (en) * 2017-10-17 2019-10-29 Xilinx, Inc. Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit
FR3083350B1 (fr) * 2018-06-29 2021-01-01 Vsora Acces memoire de processeurs
US11792005B2 (en) * 2022-03-21 2023-10-17 Intel Corporation Processor hardware and instructions for lattice based cryptography

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8601183A (nl) * 1986-05-12 1987-12-01 Philips Nv Discrete cosinus transformatie-inrichting.
US5764553A (en) * 1996-02-28 1998-06-09 Lsi Logic Corporation Generalized data processing path for performing transformation and quantization functions for video encoder systems
US6584156B1 (en) * 1998-07-17 2003-06-24 Stream Machine Company LSI Architecture and implementation of MPEG video codec
US6445829B1 (en) * 1998-09-15 2002-09-03 Winbond Electronics Corp. Joint cosine transforming and quantizing device and joint inverse quantizing and inverse cosine transforming device
US7096245B2 (en) 2002-04-01 2006-08-22 Broadcom Corporation Inverse discrete cosine transform supporting multiple decoding processes
CN1929024A (zh) * 2005-09-09 2007-03-14 上海采微电子科技有限公司 用于离散余弦变换的转置存储器电路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800387A (zh) * 2021-03-30 2021-05-14 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN101989253B (zh) 2012-08-29
US20110026846A1 (en) 2011-02-03
US8270743B2 (en) 2012-09-18

Similar Documents

Publication Publication Date Title
CN101989253B (zh) 离散余弦转换电路及使用其的影像处理装置
US9613669B2 (en) Matrix transposing circuit
CN102007489B (zh) 逆向离散余弦变换的计算期间的误差减少
CN1534458B (zh) 对分组数据进行操作的方法和装置
CN101087421B (zh) 减少位深的量子化方法
CN101330616B (zh) 视频解码过程中反离散余弦变换的硬件实现装置及方法
CN100588251C (zh) 视频数据过滤方法、装置和系统
US5636152A (en) Two-dimensional inverse discrete cosine transform processor
CN104144346B (zh) 用于执行空域和频域之间的变换的数据处理装置和方法
EP2119245B1 (en) Programmable pattern-based unpacking and packing of data channel information
Bisong et al. NumPy
CN1142683C (zh) 无转置行列分离二维离散余弦正反变换电路及其方法
CN104320668B (zh) Hevc/h.265的dct变换和反变换的simd优化方法
CN101640795B (zh) 一种视频解码优化方法及装置
US5748514A (en) Forward and inverse discrete cosine transform circuits
WO2020060832A1 (en) Fast implementation of odd one dimensional transforms
Bensaali et al. Accelerating colour space conversion on reconfigurable hardware
CN103092559A (zh) 用于hevc标准下dct/idct电路的乘法器结构
US7663631B1 (en) Pixel engine architecture
TWI398781B (zh) 離散餘弦轉換電路及裝置
Takahama et al. Improvement on colorization accuracy by partitioning algorithm in cielab color space
CN101500168B (zh) 一种图像亮度1/3插值装置
CN104811738B (zh) 基于资源共享的低开销多标准8×8一维离散余弦变换电路
CN101562744B (zh) 二维反变换装置
CN109255770B (zh) 一种图像变换域降采样方法

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120829

Termination date: 20140731

EXPY Termination of patent right or utility model