Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
DCT演算装置及びIDCT演算装置 - 日本電信電話株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 日本電信電話株式会社

発明の名称 DCT演算装置及びIDCT演算装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2001−5800(P2001−5800A)
公開日 平成13年1月12日(2001.1.12)
出願番号 特願平11−171322
出願日 平成11年6月17日(1999.6.17)
代理人 【識別番号】100083552
【弁理士】
【氏名又は名称】秋田 収喜
【テーマコード(参考)】
5B056
5J064
【Fターム(参考)】
5B056 AA01 BB17 FF01 FF02 FF03 FF05 FF10 FF16 HH03 
5J064 AA00 BA16 BC04 BC08 BC09 BC25 BD01
発明者 南 俊宏 / 新田 高庸
要約 目的


構成
特許請求の範囲
【請求項1】 水平方向および垂直方向にk点DCT演算を行う1次元DCT演算装置であって、入力される原信号に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)f(k3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力する加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算し、それぞれDCT係数F(0)とF(1),F(2)とF(3),F(4)とF(5)・・・・・・,F(k-2)とF(k-1)を出力するk/2個の累算器と、前記k/2個の累算器から出力されるk個のDCT係数の値を保持し、該k個から成るDCT係数をF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で出力する記憶回路と、を備えることを特徴とする1次元DCT演算装置。
【請求項2】 水平方向および垂直方向にk点IDCT演算を行う1次元IDCT演算装置であって、DCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されたDCT係数と乗算するk/2(kは2のべき乗)個の半固定乗算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求める加減算器と、を備えることを特徴とする1次元IDCT演算装置。
【請求項3】 水平方向および垂直方向にk点DCT演算またはk点IDCT演算を行う1次元DCT/IDCT演算装置であって、原信号およびDCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されるDCT係数を前記k/2個の半固定乗算器に入力するかを選択可能な加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番でDCT係数を出力するか、若しくは前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器と、を備えることを特徴とする1次元DCT/IDCT演算装置。
【請求項4】 m点×n点(mとnは2のべき乗)の2次元DCT演算を実行する装置において、水平方向にk点DCT演算を行うための第1の1次元DCT演算回路と垂直方向にk点DCT演算を行うための第2の1次元DCT演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元DCT演算回路は、入力される原信号に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)f(k3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力する加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算し、それぞれDCT係数F(0)とF(1),F(2)とF(3),F(4)とF(5)・・・・・・,F(k-2)とF(k-1)を出力するk/2個の累算器と、前記k/2個の累算器から出力されるk個のDCT係数の値を保持し、該k個から成るDCT係数をF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で出力する記憶回路と、を備えることを特徴とする2次元DCT演算装置。
【請求項5】 m点×n点(mとnは2のべき乗)の2次元IDCT演算を実行する装置において、水平方向にk点IDCT演算を行うための第1の1次元IDCT演算回路と垂直方向にk点IDCT演算を行うための第2の1次元IDCT演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元IDCT演算回路は、DCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されたDCT係数と乗算するk/2(kは2のべき乗)個の半固定乗算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求める加減算器と、を備えることを特徴とする2次元IDCT演算装置。
【請求項6】 m点×n点(mとnは2のべき乗)の2次元DCT演算または2次元IDCT演算を実行する装置において、水平方向にk点DCT演算またはk点IDCT演算を行うための第1の1次元DCT/IDCT演算共用回路と垂直方向にk点DCT演算またはIDCT演算を行うための第2の1次元DCT/IDCT演算共用回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元DCT/IDCT演算共用回路は、原信号およびDCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されるDCT係数を前記k/2個の半固定乗算器に入力するかを選択可能な加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番でDCT係数を出力するか、若しくは前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器と、を備えることを特徴とする2次元DCT/IDCT演算共用装置。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、画像符号化で用いられる1次元または2次元DCT(Discrete Cosine Transform)とその逆変換である1次元または2次元IDCT(Inverse Discrete Cosine Transform)を実行するための演算装置に関するものである。
【0002】
【従来の技術】(1)DCT演算とIDCT演算f(i)(i=0,1,2,3,4,5,6,7)を原信号とし、F(j)(j=0,1,2,3,4,5,6,7)をDCT変換係数とすると、8点1次元DCT演算は次の式「数1」と「数2」で表わされる。
【0003】
【数1】

【0004】
【数2】

【0005】ここで、A=2/2、B=cos(π/8)/2、C=cos(3π/8)/2、D=cos(π/16)/2、E=cos(3π/16)/2、F=cos(5π/16)/2、G=cos(7π/16)/2である。
【0006】また、8点1次元IDCT演算は次の式「数3」と「数4」で表わせる。
【0007】
【数3】

【0008】
【数4】

【0009】ここで、上記式「数3」と「数4」の右辺第1項は同一であり、また、上記式「数3」と「数4」の右辺第2項も同一である。
【0010】上記のように、8点1次元DCT演算と8点1次元IDCT演算は、たかだか7種類の係数とデータの乗累算で実現される。このため、DCT演算とIDCT演算においては汎用乗算器を用いる必要はなく、上記A〜Gの係数に対応する7種類の固定係数乗算器を用いることによってそれらの演算回路を構成することができる。
【0011】従来技術の第1の例従来技術の第1の例である8点1次元DCT演算装置を図5に示す。このDCT演算装置は、クロックCK(以下、単にCKと言う)に同期して動作し、1CK当たり2個の原信号を入力し、また、2個のDCT係数を出力する。上記式「数1」は図5の左側の3個の固定係数乗算器3〜5と4個の累算器17〜20で計算され、上記式「数2」は図5の右側の4個の固定係数乗算器6〜9と4個の累算器21〜24で計算される。以下、具体的な動作を説明する。
【0012】最初に、累算器17〜24の中のレジスタ41〜48はリセットされ、それらの値が「0」にされる。この後、1CK当たり2個の原信号がIN0にf(0),f(1),f(2),f(3)、IN1にf(7),f(6),f(5),f(4)の順番で入力され、加算器1と減算器2に入力される。固定係数乗算器3〜5(MPYA,MPYB,MPYC)は被乗数がそれぞれ上記A,B,Cに固定された乗算器であり、累算器17,18,19,20ではそれぞれF(0),F(2),F(4),F(6)が計算される。
【0013】また、累算器18〜20の中の加減算器34,35,36は入力aとbより「a+b」または「−a+b」を計算することができる。加算器1ではf(0)+f(7),f(1)+f(6),f(2)+f(5),f(3)+f(4)が計算され、固定係数乗算器3〜5に入力される。
【0014】最初に、f(0)+f(7)が入力されると、乗算器3,4,5ではそれぞれA×{f(0)+f(7)},B×{f(0)+f(7)},C×{f(0)+f(7)}が並列に計算され、バス10,11,12に出力される。累算器17では、セレクタ25でバス10を選択することにより、A×{f(0)+f(7)}がレジスタ41(REG00)にセットされる。このとき、レジスタ41(REG00)は最初に「0」にリセットされているため、加算器33はスルーとなる。同様にして、累算器18,19,20では、セレクタ26,27,28でそれぞれバス11,10,12を選択することにより、B×{f(0)+f(7)},A×{f(0)+f(7)},C×{f(0)+f(7)}がレジスタ42(REG10),レジスタ43(REG20),レジスタ44(REG30)にセットされる。
【0015】次に、加算器1ではf(1)+f(6)が計算され、固定係数乗算器3〜5に入力される。乗算器3,4,5ではそれぞれA×{f(1)+f(6)},B×{f(1)+f(6)},C×{f(1)+f(6)}が並列に計算され、バス10,11,12に出力される。累算器17では、セレクタ25でバス10が選択される。このとき、レジスタ41(REG00)にはA×{f(0)+f(7)}がセットされているため、加算器33ではA×{f(0)+f(7)}+A×{f(1)+f(6)}が計算され、その値がレジスタ41(REG00)にセットされる。
【0016】同様にして、累算器18では、セレクタ26でバス12が選択され、レジスタ42(REG10)にB×{f(0)+f(7)}+C×{f(1)+f(6)}がセットされる。また、累算器19では、セレクタ27でバス10が選択される。このとき、加算器35ではA×{f(0)+f(7)}-A×{f(0)+f(7)}が計算され、レジスタ43(REG20)にセットされる。同様にして、レジスタ44(REG30)にはC×{f(0)+f(7)}-B×{f(0)+f(7)}がセットされる。以下、同様の計算が行われ、4CK目にF0,F2,F4,F6が求まる。ただし、このとき、これらはレジスタ41〜44(REG00〜REG30)ではなく、レジスタ49〜52(REG01〜REG31)にセットされる。このセット動作と同時に、レジスタ41〜44(REG00〜REG30)はリセットされ、次のCKより新しい8点1次元DCT演算が開始される。
【0017】一方、固定係数乗算器6〜9(MPYD,MPYD,MPYF,MPYG)は被乗数がそれぞれ上記D,E,F,Gに固定された乗算器であり、累算器21,22,23,24ではそれぞれF(1),F(3),F(5),F(7)が計算される。また、累算器22〜24の中の加減算器38,39,40は入力aとbより「a+b」または「−a+b」を計算することができる。入力IN0,IN1に接続された減算器2では、f(0)-f(7),f(1)-f(6),f(2)-f(5),f(3)-f(4)が計算され、上記F(0),F(2),F(4),F(6)の計算と同様にしてF(1),F(3),F(5),F(7)が計算され、累算器21〜24の中のレジスタ53〜56(REG41〜REG71)にセットされる。なお、累算器21〜24において、29〜32はセレクタ、37は加算器、38〜40は加減算器、45〜48はレジスタ(REG40〜70)である。
【0018】累算器17〜24のレジスタ49〜56にセットされたDCT係数F(0)〜F(7)は、バス57を通じて1CKごとにOUT0からF(0),F(2),F(4),F(6)、バス58を通じてOUT1からF(1),F(3),F(5),F(7)の順番で出力される。
【0019】このようなDCT演算装置に関する技術については、例えば、A.Madisetti and A.N.Willson,“A 100MHz 2-D8×8DCT/IDCT Processor for HDTV Applications”,IEEE Trans.Circuits Syst.Video Technol.,vol.5,No.2,pp.158-164,April 1995.に記載されている。尚、この文献には、以下に示す従来技術の第2、3、4の例に示す技術についても記載されている。
【0020】従来技術の第2の例従来技術の第2の例である8点1次元IDCT演算装置を図6に示す。このIDCT演算装置の構成は、前記従来技術の第1の例の8点1次元DCT演算装置から加算器1と減算器2を削除し、出力部に加算器59、減算器60を付加した構造である。
【0021】入力IN0にはCKごとにDCT係数F(0),F(2),F(4),F(6)が入力される。これらは、固定係数乗算器3〜5(MPYA,MPYB,MPYC)に入力され、上記式「数3」と「数4」の右辺第1項の行列の乗算が図6の左側の3個の固定係数乗算器3〜5と4個の累算器17〜20で計算される。この場合、累算器17〜20の構成は図5と同様の構成であり、同一符号で示している。
【0022】一方、入力IN1にはF(1),F(3),F(5),F(7)が入力される。これらは固定係数乗算器6〜9(MPYD,MPYE,MPYF,MPYG)に入力され、上記式「数3」と「数4」の右辺第2項の行列の乗算が図6の右側の4個の固定係数乗算器6〜9と4個の累算器21〜24で計算される。累算器21〜24の構成は図5と同様の構成であり、同一符号で示している。
【0023】そして、式「数3」の右辺第1項の行列の乗算結果と右辺第2項の行列の乗算結果の加算は加算器59で計算され、これと並列して、式「数4」の右辺第1項の行列の乗算結果と右辺第2項の行列の乗算結果の減算が減算器60で計算される。この結果、CKごとに加算器59の出力としてf(0),f(1),f(2),f(3)、減算器60の出力としてf(7),f(6),f(5),f(4)が得られ、OUT0とOUT1から出力される。
【0024】従来技術の第3の例従来技術の第3の例である8点1次元DCT/IDCT演算共用装置を図7に示す。この従来例は、上記従来技術の第1の例のDCT演算装置と従来技術の第2の例のIDCT演算装置を組み合わせた回路構成である。
【0025】セレクタ61,62,63,64の入力をすべてa側とすることによりDCT演算を実行でき、セレクタ61,62,63,64の入力をすべてb側とすることによりIDCT演算を実行できる。なお、図5および図6と同一部分は同一符号で示している。
【0026】従来技術の第4の例従来技術の第4の例である8点×8点2次元DCT/IDCT演算共用装置を図8に示す。上記従来技術の第3の例である8点1次元DCT/IDCT演算共用装置67と8×8W(ワード)の2次元転置メモリ68で構成される。8×8Wの2次元転置メモリ68は、同時に2画素書き込み又は読み出しができ、水平方向に書き込んだデータを垂直方向に読み出せるメモリである。ただし、2次元転置メモリ68は、実際には64Wの連続したアドレス(i=0〜63)をもつメモリであり、x=0〜7(i/8、iを8で割った余り)とy=0〜7(y=i/8、iを8で割って切り捨て)という2次元の仮想的なアドレスにより水平方向または垂直方向にアクセスされる。
【0027】具体的な動作としては、8×8個の2次元の信号に対して最初に水平方向に8点1次元DCT(または8点1次元IDCT)を8回実行し、その結果を8×8Wの2次元転置メモリ68に水平方向に書き込んで記憶する。次に、2次元転置メモリ68から垂直方向に読み出して8点1次元DCT(または8点1次元IDCT)を8回実行する。尚、最初に垂直方向に1次元DCT(または1次元IDCT)を行い、2回目に水平方向に8点1次元DCT(または8点1次元IDCT)を行っても良い。
【0028】
【発明が解決しようとする課題】しかしながら、従来技術の第4の例である8点×8点2次元DCT/IDCT演算共用装置では、水平方向のDCTまたはIDCTと垂直方向のDCTまたはIDCTを交互に繰り返す。2次元DCT/IDCT演算共用装置の外部からの入力は水平方向のDCTまたはIDCTを実行しているときのみ必要であるため、1CK当たり2データを32CKの間に集中して入力し、32CKの間入力無しとしなければならない。また、外部への出力は垂直方向のDCTまたはIDCTのとき生じるため、1CK当たり2データが32CKの間に集中して出力され、32CKの間出力無しとなる。
【0029】このように入力と出力がバースト的に発生すると、2次元DCT/IDCT演算共用装置と前段または後段の装置とのインタフェースの回路が複雑になる。
【0030】これを緩和するため、2次元DCT/IDCT演算共用装置の前段に1データ書き込みと2データ読み出しが同時にできる3ポートの64Wメモリ、後段に2データ書き込みと1データ読み出しが同時にできる3ポートの64Wメモリを設け、それらのメモリでバッファリングして入力と出力を1CK当たり1データに変換することも考えられるが、ハード規模が増加する。
【0031】また、8点1次元DCT/IDCT演算共用装置67は高速動作のためにパイプライン化される場合が多いが、これにより、データの入力が始まってから最初のデータが出力されるまでに遅れ、すなわちパイプラインレイテンシが発生する。従来技術の第4の例に示した構成では、2次元転置メモリ68への書き込みが終了しなければ、読み出しを開始できないため、後半の1次元DCTまたはIDCTを開始するとき、必ずレイテンシ分の無効サイクルが生じることとなる。この無効サイクルを少しでも少なくするために、2次元転置メモリ68を4ポート化し、2データ書き込みと2データ読み出しが同時にできるようにすることも考えられるが、2次元転置メモリ68が大規模化する。さらに、4ポート化したとしても単一の1次元DCT/IDCT演算共用装置を用いている限り、レイテンシ削減効果には限界がある。
【0032】図9と図10にIDCTの場合を示す。図9は2次元転置メモリ68に8行目の水平方向のIDCT演算結果を書き込み、同時に垂直方向のIDCT演算のために、1列目の信号を読み出す場合を示す。8行目の書込みは、{f(0),f(7)}{f(1),f(6)}{f(2),f(5)}{f(3),f(4)}の順番で行い、1列目の読み出しは{F(0),F(1)}{F(2),F(3)}{F(4),F(5)}{F(6),F(7)}の順番で行うことになる。
【0033】ところが、図9に示すように、F(7)=f(0)であり、f(0)が2次元転置メモリ68に書き込まれなければ、F(7)として読み出すことができない。
【0034】図10は、8点1次元DCT/IDCT演算共用装置67を5段のパイプラインで構成した場合を示す。尚、単純化のためにパイプラインレジスタ69〜74のみ示してある。図9に示したように後半の1次元DCTのために読み出されるF7は、前半の1次元DCT演算の結果であるf0と同一である。従って、f0の書き込みが終わらなければ、F7を読み出すことはできない。このため、図10から分かるように、パイプライン段数が5段よりも大きくなると、f0を転置メモリ68に書き込むサイクルとF7を転置メモリ68から読み出すサイクルとの間に空き、言い換えるとパイプラインに空きが生じ、無効サイクルが発生することとなる。
【0035】本発明は、1CK当たり1個の入力と出力という条件の下で、パイプライン段数にかかわらず無効サイクルが生じないようにすることができる1次元または2次元DCT演算装置および1次元または2次元IDCT演算装置を提供することを目的とする。
【0036】
【課題を解決するための手段】本発明は、1次元k点DCT演算回路または1次元k点IDCT演算回路を構成するとき、従来は1個の値のみを被乗数として取り得る固定係数乗算器をk個(kは2のべき乗)用いていたのに対し、1個または2個の値を被乗数として取り得る半固定乗算器をk/2個用いて、ハード量を削減し、この1次元k点DCT演算回路または1次元k点IDCT演算回路を水平方向用と垂直方向用に別個に設けることにより、ハード量の増加を引き起こすことなく、上記問題点を解決するようにしたものである。
【0037】即ち、本願第1の発明である水平方向および垂直方向にk点DCT演算を行う1次元DCT演算装置は、入力される原信号に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)f(k3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力する加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算し、それぞれDCT係数F(0)とF(1),F(2)とF(3),F(4)とF(5)・・・・・・,F(k-2)とF(k-1)を出力するk/2個の累算器と、前記k/2個の累算器から出力されるk個のDCT係数の値を保持し、該k個から成るDCT係数をF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で出力する記憶回路と、を備えることを特徴とする。
【0038】また、第2の発明の1次元IDCT演算装置は、DCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されたDCT係数と乗算するk/2(kは2のべき乗)個の半固定乗算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求める加減算器と、を備えることを特徴とする。
【0039】また、第3の発明の1次元DCT/IDCT演算装置は、原信号およびDCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されるDCT係数を前記k/2個の半固定乗算器に入力するかを選択可能な加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番でDCT係数を出力するか、若しくは前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器と、を備えることを特徴とする。
【0040】さらに、第4の発明のm点×n点(mとnは2のべき乗)の2次元DCT演算を実行する2次元DCT演算装置は、水平方向にk点DCT演算を行うための第1の1次元DCT演算回路と垂直方向にk点DCT演算を行うための第2の1次元DCT演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元DCT演算回路は、入力される原信号に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)f(k3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力する加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算し、それぞれDCT係数F(0)とF(1),F(2)とF(3),F(4)とF(5)・・・・・・,F(k-2)とF(k-1)を出力するk/2個の累算器と、前記k/2個の累算器から出力されるk個のDCT係数の値を保持し、該k個から成るDCT係数をF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で出力する記憶回路と、を備えることを特徴とする。
【0041】また、第5の発明のm点×n点(mとnは2のべき乗)の2次元IDCT演算を実行する装置は、水平方向にk点IDCT演算を行うための第1の1次元IDCT演算回路と垂直方向にk点IDCT演算を行うための第2の1次元IDCT演算回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元IDCT演算回路は、DCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とし、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されたDCT係数と乗算するk/2(kは2のべき乗)個の半固定乗算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求める加減算器と、を備えることを特徴とする。
【0042】また、第6の発明のm点×n点(mとnは2のべき乗)の2次元DCT演算または2次元IDCT演算を実行する装置は、水平方向にk点DCT演算またはk点IDCT演算を行うための第1の1次元DCT/IDCT演算共用回路と垂直方向にk点DCT演算またはIDCT演算を行うための第2の1次元DCT/IDCT演算共用回路と、水平方向に書き込まれたデータを垂直方向に読み出すか、若しくは垂直方向に書き込まれたデータを水平方向に読み出せるm×nワードの2ポートメモリとを有し、前記第1および第2の1次元DCT/IDCT演算共用回路は、原信号およびDCT係数に掛けられる係数の中から選択した1個または2個の値のみを被乗数とするk/2(kは2のべき乗)個の半固定乗算器と、f(0),f(k-1),f(1),f(k-2),f(2),f(k-3),・・・・・・,f(k/2-1),f(k/2)の順番で1個づつ入力される原信号からf(0)+f(k-1),f(0)-f(k-1),f(1)+f(k-2),f(1)-f(k-2),f(2)+f(k-3),f(2)-f(k-3),・・・・・・,f(k/2-1)+f(k/2),f(k/2-1)-f(k/2)を順番に計算し、その出力を前記k/2個の半固定乗算器に入力するか、若しくはF(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番で1個づつ入力されるDCT係数を前記k/2個の半固定乗算器に入力するかを選択可能な加減算器と、2個の累算値を保持する記憶手段を有し、前記k/2個の半固定乗算器の出力から1つを選択し、そのまま加算するか正負を反転して加算するかを選択して前記2個の累算値に交互に加算するk/2個の累算器と、前記k/2個の累算器から出力されるk個の値を保持する記憶手段を有し、F(0),F(1),F(2),F(3),F(4),・・・・・・,F(k-2),F(k-1)の順番でDCT係数を出力するか、若しくは前記累算器から出力された前記k個の値に対し、k/2回の加算とk/2回の減算を行ってf(0),f(1),f(2),f(3),f(4),・・・・・・,f(k-2),f(k-1)の順番で原信号を求めて出力するかを選択可能な加減算器と、を備えることを特徴とする。
【0043】
【発明の実施の形態】以下、本発明の実施形態を図面を参照しつつ説明する。
【0044】第1の実施形態本発明の第1の実施形態である8点1次元DCT演算装置を図1に示す。このDCT演算装置は、CKに同期して動作し、1CK当たり1個の原信号を入力し、また、1個のDCT係数を出力する。奇数番目CKと偶数番目CKで上述した式「数1」と「数2」を交互に計算する。回路構成としては、レジスタ75〜77、加減算器78、半固定乗算器79〜82(MPYA/D〜MPYG)、累算器87〜90、レジスタ49〜52(REG01〜31)、レジスタ53〜56(REG41〜71)、セレクタ103を備えている。また、累算器87は、セレクタ91、加算器95、レジスタ(REG00)41および45(REG40)、セレクタ99で構成されている。また、累算器88〜90は、セレクタ92〜94、加減算器96〜98、レジスタ(REG10)42〜44(REG30)および46(REG50)〜48(REG70)、セレクタ100〜102で構成されている。
【0045】以下、具体的な動作を説明する。最初に、各累算器87〜90内のレジスタ41〜48はリセットされ、それらの値が「0」にされる。この後、1CK当たり1個の原信号がINよりCKごとにf(0),f(7),f(1),f(6),f(2),f(5),f(3),f(4)の順番で入力される。これらのうち、f(0),f(1),f(2),f(3)はレジスタ75(REG0)にセットされ、1CK後にレジスタ76(REG1)にシフトされ、それぞれ2CKの間保持される。また、f(7),f(6),f(5),f(4)はレジスタ77(REG2)にセットされ、同じく2CKの間保持される。これにより、加減算器78では、CKごとにf(0)+f(7),f(0)-f(7),f(1)+f(6),f(1)-f(6),f(2)+f(5),f(2)-f(5),f(3)+f(4),f(3)-(4)が計算され、その計算結果が半固定乗算器79〜82(MPYA/D,MPYB/E,MPYC/F,MPYG)に入力される。
【0046】半固定乗算器79〜81(MPYA/D,MPYB/E,MPYC/F)は被乗数がそれぞれAとD,BとE,CとFの2種類に固定された乗算器であり、前述した式「数1」を計算するときは、A,B,C、「数2」式を計算するときはD,E,Fが選択される。また、半固定乗算器82(MPYG)は被乗数がGに固定されており、前述の式「数2」の計算にのみ使用される。累算器87,88,89,90ではそれぞれF(0)とF(1),F(2)とF(3),F(4)とF(5),F(6)とF(7)がCKごとに交互に計算される。
【0047】最初にf(0)+f(7)が入力されると、半固定乗算器79,80,81ではそれぞれA×{f(0)+f(7)},B×{f(0)+f(7)},C×{f(0)+f(7)}が並列に計算され、バス83,84,85に出力される。累算器87では、セレクタ91でバス83を選択することにより、A×{f(0)+f(7)}がレジスタ41(REG00)にセットされる。このとき、セレクタ99ではレジスタ41(REG00)の出力が選択されている。レジスタ41(REG00)は最初に「0」にリセットされているため、加算器95はスルーとなる。同様にして、累算器88,89,90では、セレクタ92,93,94でそれぞれバス84,83,85を選択することにより、B×{f(0)+f(7)},A×{f(0)+f(7)},C×{f(0)+f(7)}がレジスタ42(REG10),レジスタ43(REG20),レジスタ44(REG30)にセットされる。
【0048】次に、f(0)-f(7)が入力されると,半固定乗算器79,80,81,82ではそれぞれD×{f(0)-f(7)},E×{f(0)-f(7)I},F×{f(0)-f(7)},G×{f(0)-f(7)}が並列に計算され、バス83,84,85,86に出力される。
【0049】累算器87では、セレクタ91でバス83を選択することにより、D×{f(0)-f(7)}がレジスタ45(REG40)にセットされる。このとき、セレクタ99はレジスタ45(REG40)の出力を選択している。レジスタ45(REG40)は最初に「0」にリセットされているため、加算器95はスルーとなる。同様にして、累算器88,89,90では、セレクタ92,93,94でそれぞれバス84,85,86を選択することにより、E×{f(0)-f(7)},F×{f(0)-f(7)},G×{f(0)-f(7)}がレジスタ46(REG50),レジスタ47(REG60),レジスタ48(REG70)にセットされる。以下、CKごとに前述の式「数1」と「数2」が交互に計算され、7CK目にF(0),F(2),F(4),F(6)が求まり、レジスタ49〜52(REG01〜REG31)にセットされる。また、8CK目にF(1),F(3),F(5),F(7)が求まり、レジスタ53〜56(REG41〜REG71)にセットされる。レジスタ41〜44(REG00〜REG30)は7CK目に、レジスタ45〜48(REG40〜REG70)は8CK目にリセットされ、それぞれ8CK目、9CK目より新しい8点1次元DCT演算が開始される。
【0050】レジスタ49〜56にセットされたDCT係数F(0)〜F(7)は、セレクタ57,58,103で選択されて、OUTから1CKごとにF(0),F(1),F(2),F(3),F(4),F(5),F(6),F(7)の順番で出力される。
【0051】第2の実施形態本発明の第2の実施形態である8点1次元IDCT演算装置を図2に示す。このIDCT演算装置の構成は、前記第1の実施形態の8点1次元DCT演算装置から入力部のレジスタ75,76,77(REG0,REG1,REG2)と加減算器78、及び出力部のセレクタ103を削除し、出力部にレジスタ104と加減算器105を付加した構造であり、図1の第1の実施形態と同一部分は同一符号で示している。この実施形態では、奇数番目CKと偶数番目CKで前述の式「数3」と「数4」の右辺第1項の行列の乗算と右辺第2項の行列の乗算が交互に実行される。
【0052】入力INには、CKごとにDCT係数F(0),F(1),F(2),F(3),F(4),F(5),F(6),F(7)が順番に入力されて半固定乗算器79〜82(MPYA/D,MPYB/E,MPYC/F,MPYG)に入力される。そして、7CK目に前述の式「数3」と「数4」の右辺第1項の行列の乗算結果がレジスタ49〜52(REG01,REG11,REG21,REG31)にセットされ、8CK目に右辺第2項の行列の乗算結果がレジスタ53〜56(REG41,REG51,REG61,REG71)にセットされる。そして、「数3」と「数4」における右辺第1項の行列の乗算結果と右辺第2項の行列の乗算結果の加算と減算は加減算器105で計算される。その際、セレクタ57と58はOUTからCKごとにf(0),f(1),f(2),f(3),f(4),f(5),f(6),f(7)の順番に出力されるように制御される。尚、レジスタ49〜52(REG01,REG11,REG21,REG31)に右辺第1項の行列の乗算結果が得られるタイミングとレジスタ53〜56(REG41,REG51,REG61,REG71)に右辺第2項の行列の乗算結果が得られるタイミングに1CKの差があり、そのままでは計8回の加算と減算を行えない。このため、レジスタ104(REG3)でレジスタ49〜52(REG01,REG11,REG21,REG31)の出力を1CK遅延させることにより、レジスタ53〜56(REG41,REG51,REG61,REG71)の出力とタイミングを一致させるようにしている。
【0053】第3の実施形態本発明の第3の実施形態である8点1次元DCT/IDCT演算共用装置を図3に示す。この実施形態は、前記第1の実施形態のDCT演算装置と第2の実施形態のIDCT演算装置を組み合わせた回路構成であり、同一部分は同一符号で示している。この実施形態の8点1次元DCT/IDCT演算共用装置においては、乗算器79〜82の入力側のセレクタ106と加減算器105の出力側のセレクタ107の入力をa側とすることによりDCT演算を実行でき、セレクタ106と107の入力をb側とすることによりIDCT演算を実行できる。
【0054】第4の実施形態本発明の第4の実施形態である8点×8点2次元DCT/IDCT演算共用装置を図4に示す。
【0055】この実施形態の8点×8点2次元DCT/IDCT演算共用装置は、上記第3の実施形態で示した8点1次元DCT/IDCT演算共用装置108と110、及び8×8Wの2次元転置メモリ109で構成される。8×8Wの2次元転置メモリ109は、同時に書き込みと読み出しができ、水平方向に書き込んだデータを垂直方向に読み出せるメモリである。8×8個の2次元の信号に対して8点1次元DCT/IDCT演算共用装置108により水平方向に8点1次元DCT(または8点1次元IDCT)を8回実行し、その結果を8×8Wの2次元転置メモリ109に水平方向に書き込んで記憶する。次に、2次元転置メモリ110から垂直方向に読み出して8点1次元DCT/IDCT演算共用装置110により8点1次元DCT(または8点1次元IDCT)を8回実行する。尚、8点1次元DCT/IDCT演算共用装置108により垂直方向に1次元DCT(または1次元IDCT)を行い、8点1次元DCT/IDCT演算共用装置110により水平方向に8点1次元DCT(または8点1次元IDCT)を行っても良い。
【0056】尚、本実施形態では、8点×8点2次元DCT/IDCT演算装置の場合のみ示したが、8点×8点2次元DCT演算装置と8点×8点2次元IDCT演算装置も同様にして構成できる。
【0057】以上の説明から分かるように、本発明によれば、通常の画像符号化装置において適正な入出力レートである1CK当たり1個の入力と出力という条件のとき、従来技術と同程度のハード規模であって、パイプライン段数を深くしても無効サイクルが発生しない2次元DCT/IDCT演算共用装置を実現することができる。
【0058】すなわち、従来技術の第1〜第3の例に示した8点1次元DCT/IDCT演算共用装置は1CK当たり2個の結果を出力するのに対し、本発明の第1〜第3の実施形態は1CK当たり1個の結果を出力する。
【0059】両者の代表として、従来技術の第3の例と本発明の第3の実施形態のハード量を比較すると、固定または半固定係数乗算器の規模は両者とも同一であるが、加算器と加減算器の総数は従来技術の第3の例が12個、本発明の第3の実施形態が6個である。本発明の第3の実施形態のハード量は、従来技術の第3の例の2/3程度であるが、スループットは半分になる。
【0060】ただし、本発明の利用分野である画像符号化では、従来技術の第4の例と本発明の第4の実施形態に示した8点×8点2次元DCT/IDCT演算共用装置が用いられる。これらは、両方とも64CK当たり64個の結果を出力し、スループットは等しい。
【0061】一方、従来技術の第4の例では8点1次元DCT/IDCT演算共用装置を1個用いるのに対し、本発明の第4の実施形態では水平方向用と垂直方向用に2個の8点1次元DCT/IDCT演算共用装置を用いる。これらだけを比較すると、本発明の第4の実施形態のハード量は従来技術の第3の例の1.5倍程度になる。しかし、「発明が解決しようとする課題」において示したように、従来技術の第4の例には前段または後段の装置とのインタフェース回路が複雑になるという欠点がある。この問題を解決するために2次元DCT/IDCT演算共用装置の前段に1データ書き込みと2データ読み出しが同時にできる3ポートの64Wメモリ、後段に2データ書き込みと1データ読み出しが同時にできる3ポートの64Wメモリを設け、それらのメモリでバッファリングして入力と出力を1CK当たり1データに変換する構成を採用した場合には、本発明の第4の実施形態と従来技術の第4の例のハード量は同程度となる。
【0062】さらに、図4に示したように本発明の第4の実施形態は、入力INから出力OUTまでパイプライン化されているため、8点1次元DCT/IDCT演算共用装置108と110のパイプライン段数が深くても無効サイクルを生じない。もちろん、従来技術の第3の例である8点1次元DCT/IDCT演算共用装置を水平方向用と垂直方向用に2個と4ポートメモリを用いて、入力から出力までパイプライン化することも可能ではあるが、この構成では1CK当たり2個の入力と出力となる。これは、ハード量が2倍になるにもかかわらず、通常の画像符号化装置ではオーバスペックであり、その性能を生かせない。
【0063】尚、上記実施形態においては、信号数が8点×8点の場合のみ説明したが、本発明は任意の信号数の1次元または2次元DCT演算装置、1次元または2次元IDCT演算装置、及び1次元または2次元DCT/IDCT演算共用装置に対して同様に適用できる。
【0064】
【発明の効果】以上の説明から明らかなように、本発明によれば、通常の画像符号化装置において適正な入出力レートである1CK当たり1個の入力と出力という条件のとき、従来技術と同程度のハード規模であって、パイプライン段数を深くしても無効サイクルが発生しないようにすることができるDCT/IDCT演算装置を実現できるという効果がある。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013