JPH07200539A - 二次元dct演算装置 - Google Patents

二次元dct演算装置

Info

Publication number
JPH07200539A
JPH07200539A JP35255893A JP35255893A JPH07200539A JP H07200539 A JPH07200539 A JP H07200539A JP 35255893 A JP35255893 A JP 35255893A JP 35255893 A JP35255893 A JP 35255893A JP H07200539 A JPH07200539 A JP H07200539A
Authority
JP
Japan
Prior art keywords
column
output
components
component
stage
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.)
Pending
Application number
JP35255893A
Other languages
English (en)
Inventor
Hideyo Tsuruta
英世 鶴田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP35255893A priority Critical patent/JPH07200539A/ja
Publication of JPH07200539A publication Critical patent/JPH07200539A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 従来より規模の小さい回路構成で二次元DCT/
IDCTを計算する。 【構成】 一段目の一次元DCT器と中間バッファと二段
目の一次元DCT器により構成され、この三つの部分がパ
イプライン動作する。8×8画素ブロック行列を第0,7,1,
6,2,5,3,4行及び第0,7,1,6,2,5,3,4列の順に外部から読
み込む。DCT係数を書き込む際にも簡単なアドレス変換
により順番を入れ替える。また従来分布アリスメティッ
ク法によっていた一次元DCTをROMを利用した定数乗算器
と累算器により構成する。これにより中間バッファが四
分の一に削減され、演算器の構成が簡単になる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、信号処理装置において
二次元離散余弦変換(DCT(Discrete CosineTransform)
と略す)と離散余弦逆変換(IDCT(Inverse Discrete Co
sine Transform)と略す)との何れかを演算する演算装
置に関する。
【0002】
【従来の技術】画像や音声の圧縮/伸長など多くの信号
処理分野において高速なDCT演算が求められている。DCT
は処理演算量が膨大であるため、これを実時間で処理す
るために大きな回路規模が必要である。従来の二次元DC
T演算装置は、例えば公告特許平5-26229号公報、米国特
許第 4791598号(1988年12月13日)及びM.T.Sun,L.Wu,a
nd M.L. Liou,"A Concurrent Architecture for VLSI I
mplementation of Discrete Cosine Transform," IEEET
rans. on Circuits and Systems,Vol. CAS-34,No.8,pp.
992-994,Aug. 1987、及びM.T. Sun,T.C. Chen,A. Gottl
ieb,L. Wu,and M.L. Liou,"A 16x16 Discrete Cosine T
ransform Chip," Visual Commun. and Image Process.
II,SPIE,Vol. 845,pp. 13-18,Oct. 1987、及びM.T. Su
n,T.C. Chen,and A. M. Gottlieb,"VLSI Implementatio
n of a 16×16 Discrete Cosine Transform," IEEE Tra
ns. Circuits and Systems,Vol. CAS-36,pp. 610-617,A
pr. 1989、及びT.C. Chen,M.T. Sun,and A. M. Gottlie
b,"VLSI Implementation of a 16x16 DCT," ICASSP 88,
Intl. Conf. Acoust.,Speech, and Signal Process.,p
p. 1973-1976,Apr. 1988に示されている。
【0003】(図10),(図11),(図12)は従
来例の構成図を示す。従来例はN×Nの二次元DCTについ
て述べているが、ここでは簡単のために8×8の場合に限
定する。また画素データ,内部数値表現及びDCT係数は1
6ビットから8ビット程度の固定小数点数であるとする。
(図10)において、203は第一の列N×1 DCTプロセ
サである。205はN×N変換メモリである。207は第
二の行N×1 DCTプロセサである。209はタイミング及
び制御信号発生器である。211,212はタイミング
及び制御信号である。216は読み取り/書き込みアド
レス及び制御回路である。214は読み取り/書き込み
アドレス及び制御信号である。(図11)において、3
13は入力レジスタである。315はホールディングレ
ジスタである。381と383はそれぞれN/2個の直列
加算器と直列減算器である。317はRAC(ROM and accu
mulator)である。319は出力レジスタである。38
5,387はN/2ビットバスである。445,447は1
6ワードROMである。449は加算器である。451は加
算/減算器である。453はシフトレジスタである。
【0004】従来例では、8×8のDCTに対して4ビットの
RACを用いるとしているが、16ビット画素データを処理
するためには直列加算器381,直列減算器383,RA
C317などがシフトレジスタなど他の部分の倍の周波
数で動作せねばならない(詳細については上記論文に記
載されている。)。全体に同一の周波数が供給される場
合、(図12)に示す8ビットのRACが必要である。
【0005】
【発明が解決しようとする課題】しかしながら上記従来
技術の二次元DCT演算装置は、二つの一次元DCT演算装置
とN×N語の行-列転置用の変換メモリを必要とするた
め、これらハードウェアが費やす素子数,回路面積,消
費電力は大きいという問題点があった。また上記従来技
術の二次元DCT演算装置は、分布アリスメティック(dist
ributed arithmetic)法を用いてビット直列にDCT演算を
行うため、多数の内部バッファとシフトレジスタが必要
であるという問題点があった。
【0006】本発明は、上記問題点に鑑み、従来の二次
元DCT演算装置と同等の性能を保ちながらより少ないハ
ードウェアで構成される新規の二次元DCT演算装置を提
供することを目的とする。
【0007】
【課題を解決するための手段】上記課題を解決するため
に本発明の二次元DCT演算装置は、二段の一次元DCT演算
手段を備え、N×N個の成分を有するデータ行列に対して
二次元離散余弦変換を演算し、変換結果の行列の各成分
を外部メモリに書き込む二次元DCT演算装置であって、
二次元DCTの対象となるデータ行列を、(数1)に示す
読み出し番号順に対応する成分を一成分ずつ読み出す読
み出し手段と、前記読み出し手段によって読み出された
二成分ずつに対して第一段目の一次元DCTを行い、変換
結果を一列分ずつ生成する第一の一次元DCT演算手段
と、前記第一の一次元DCT演算手段が生成した二列分の
それぞれの成分を、行順に二成分ずつ読み出してゆく第
二の読み出し手段と、前記第二の読み出し手段によって
読み出された二成分に第二段目の一次元DCTを行い、変
換結果の行列を生成する第二の一次元DCT演算手段と、
前記第二の一次元DCT演算手段が生成した変換結果の行
列を一成分ずつ外部メモリに書き込む書き込み手段とを
備えている。
【0008】また、前記第一の一次元DCT手段は、第一
の加減算手段と、第一の定数乗算手段と、第一の累算手
段とを有し、第一の加減算手段は、読み出し手段によっ
て読み出された二成分同士の加算及び減算を行い、第一
の定数乗算手段は、第一段目の一次元DCTにおける一行
×一列の積和計算において、第一の加減算手段による加
算結果及び減算結果を乗数とする部分積を全て求め、第
一の累算手段は、加減算結果一列分の第一の定数乗算手
段の部分積の累算値を求めて、求めた累算値を第二の読
み出し手段に出力し、前記第二の一次元DCT手段は、第
二の加減算手段と、第二の定数乗算手段と、第二の累算
手段とを有し、第二の加減算手段は、第二の読み出し手
段によって読み出された二成分同士の加算及び減算を行
い、第二の定数乗算手段は、第二段目の一次元DCTにお
ける一行×一列の積和計算において、第二の加減算手段
による加算結果及び減算結果を乗数とする部分積を全て
求めて、第二の累算手段は、加減算結果一行分の第一の
定数乗算手段の部分積の累算値を求めて、求めた累算値
を書き込み手段に出力してもよい。
【0009】また、前記第一の加減算手段は、二段のシ
フトレジスタと、第一の入力バッファと、第二の入力バ
ッファと、第一の加減算器とを有し、二段のシフトレジ
スタは、一成分ずつシフトして、読み出し手段によって
読み出された入力信号系列の二成分を保持し、第一の入
力バッファは、二段のシフトレジスタが二回シフトする
度に前段の保持する一成分を受け取り、第二の入力バッ
ファは、二段のシフトレジスタが二回シフトする度に後
段の保持する一成分を受け取り、第一の加減算器は、第
一の入力バッファ及び第二の入力バッファ内の二成分同
士の加算及び減算を交互に行い、第一の定数乗算手段
は、前記第一の加減算器に接続されるN/2個の第一の定
数乗算器を有し、各々の第一の定数乗算器は、第一段目
の一次元DCTにおける一行×一列の積和計算において、
第一の加減算器による加算結果及び減算結果を乗数と
し、所定の行列の一成分を被乗数とする部分積を求め
て、前記第一の累算手段は、前記N/2個の定数乗算器の
それぞれに対応して接続されるN/2個の第一の加算器
と、当該N/2個の第一の加算器のそれぞれに対応して接
続されるN/2個の二段のシフトレジスタとを有し、各々
の第一の加算器は、第一の定数乗算器が出力した積と、
二段のシフトレジスタの後段から出力される成分とを加
算し、各々の二段のシフトレジスタは、第一の加算器が
出力した成分をシフトしながら二成分保持し、保持した
二成分を一成分ずつシフトすることで後段の出力を第一
の加算器にフィードバックして、N×2回シフトした後
に、当該一列中の二成分を一度に第二の読み出し手段に
出力してもよい。
【0010】また、前記第二の読み出し手段は、一列バ
ッファと、第一のN段の並列/直列変換用のシフトレジ
スタと、第二のN段の並列/直列変換用のシフトレジス
タとを有し、一列バッファは、第一の一次元DCT演算手
段によって順次生成される一列分の成分を、一列おきに
受け取って保持し、保持している成分の次の列の成分が
第一の一次元DCT演算手段から出力されると、それまで
保持していた一列分の成分を第一のN段の並列/直列変
換用のシフトレジスタに一度に出力し、第一のN段の並
列/直列変換用のシフトレジスタは、前記一列バッファ
が出力した一列分の成分を保持し、保持した一列分の成
分のシフトを一成分ずつ行い、当該一列分の成分を一成
分ずつ第二の一次元DCT演算手段に出力してゆき、第二
のN段の並列/直列変換用のシフトレジスタは、第一の
一次元DCT演算手段が出力した一列分の成分で、一列バ
ッファが受け取らなかったものを保持し、保持した一列
分の成分のシフトを一成分ずつ行い、当該一列分の成分
を一成分ずつ第二の一次元DCT演算手段に出力してもよ
い。
【0011】また、前記第二の加減算手段は、第二の読
み出し手段が出力した二成分同士の加算及び減算を交互
に行い、前記第二の定数乗算手段は、前記第二の加減算
手段と接続されるN/2個の第二の定数乗算器を有し、各
々の第二の定数乗算器は、第二段目の一次元DCTにおけ
る一行×一列の積和計算において、第二の加減算手段に
よる加算結果及び減算結果を乗数とし、所定の行列の一
行中の一成分を被乗数とする部分積を求めて、前記第二
の累算手段は、前記N/2個の第二の定数乗算器のそれぞ
れに対応して接続されるN/2個の第二の加算器と、当該N
/2個の第二の加算器に対応して接続されるN/2個のN×2
段のシフトレジスタとを有し、各々の第二の加算器は、
第二の定数乗算器が出力した積と、N×2段のシフトレジ
スタの最終段から出力される成分とを加算し、各々のN
×2段のシフトレジスタは、第二の加算器が出力した成
分をシフトしながら二列分保持し、保持した成分を一成
分ずつシフトすることで最終段の出力を第二の加算器に
フィードバックして、N×N回シフトした後に、当該二列
分の成分を一成分ずつ書き込み手段に出力してもよい。
【0012】また、前記累算手段は、更にN/2個のN×2
段のシフトレジスタのうち、所定の一個を除くN/2-1個
の最終段に接続されるN/2-1個の出力バッファと、出力
選択器とを有し、N/2-1個の出力バッファは、N×2段の
シフトレジスタからなり、接続されるシフトレジスタか
ら一成分ずつ出力される二列分の成分をシフトを行いな
がら保持し、保持している成分を一成分ずつ順次出力選
択器に出力してゆき、出力選択器は、それぞれのN×2段
のシフトレジスタ及びN/2-1個の出力バッファの出力を
選択して出力してもよい。
【0013】また、前記定数乗算器は、所定の行列の成
分の倍数を予め格納しているROMを有していてもよい。
また、前記定数乗算器は、所定の行列として第一段目及
び第二段目の一次元DCTに用いられる定数行列の成分及
び/又は第一段目及び第二段目の離散余弦逆変換に用い
られる定数行列の成分を予め格納していることを特徴と
してもよい。
【0014】前記読み出し手段は、読み出し列生成手段
と、読み出し行生成手段と、読み出しアドレス生成手段
とを備え、読み出し列生成手段は、読み出すべき成分
の、N×Nの成分を持つデータ行列における列番号を指定
し、読み出し行生成手段は、読み出し列生成手段が指定
した列における読み出しを行う成分の行番号を指定し、
読み出しアドレス生成手段は、読み出し列生成手段が生
成した列番号と、読み出し行生成手段が生成した行番号
とから、読み出すべき成分の外部メモリ中のアドレスを
生成してもよい。
【0015】前記書き込み手段は、書き込み列生成手段
と、書き込み行生手段と、書き込みアドレス生成手段と
を有し、書き込み列生成手段は、演算結果の行列の成分
のうち、書き込みを行うものの列番号を生成し、書き込
み行生成手段は、書き込み列生成手段が生成した列番号
の列における、書き込みを行う成分の行番号を生成し、
書き込みアドレス生成手段は、書き込み行生成手段が生
成した行番号と、書き込み列生成手段が生成した列番号
とから、演算行列の各成分を書き込むための外部メモリ
中のアドレスを生成してもよい。
【0016】
【作用】上記の手段により本発明の二次元DCT演算装置
において、読み出し手段によって二次元DCTの対象とな
るデータ行列が(数1)に示す読み出し番号順に一成分
ずつ読み出される。読み出し手段によって読み出された
二成分ずつに対して第一の一次元DCT演算手段が作動
し、第一段目の一次元DCTが行われ、変換結果が一列分
ずつ生成される。前記第一の一次元DCT演算手段が生成
した二列分のそれぞれの成分が第二の読み出し手段によ
って行順に二成分ずつ読み出されてゆく。前記第二の読
み出し手段によって読み出された二成分に、第二の一次
元DCT演算手段によって第二段目の一次元DCTが行われ、
変換結果の行列が生成される。前記第二の一次元DCT演
算手段が生成した変換結果の行列が、書き込み手段によ
って一成分ずつ外部メモリに書き込まれる。
【0017】また、上記手段により本発明の第一の一次
元DCT手段は、第一の加減算手段と、第一の定数乗算手
段と、第一の累算手段とを有し、読み出し手段によって
読み出された二成分同士の加算及び減算が、第一の加減
算手段によって行われ、第一段目の一次元DCTにおける
一行×一列の積和計算における第一の加減算手段による
加算結果及び減算結果を乗数とする部分積が第一の定数
乗算手段によって全て求められる。加減算結果一列分の
第一の定数乗算手段の部分積の累算値が第一の累算手段
によって求められ、求められた累算値が第二の読み出し
手段に出力される。
【0018】また、上記手段により本発明の第二の一次
元DCT手段は、第二の加減算手段と、第二の定数乗算手
段と、第二の累算手段とを有し、第二の読み出し手段に
よって読み出された二成分同士の加算及び減算が、第二
の加減算手段によって行われ、第二段目の一次元DCTに
おける一行×一列の積和計算における第二の加減算手段
による加算結果及び減算結果を乗数とする部分積が第二
の定数乗算手段によって全て求められ、加減算結果一行
分の第一の定数乗算手段の部分積の累算値が第二の累算
手段によって求められ、求められた累算値が書き込み手
段に出力される。
【0019】また、前記第一の加減算手段は、二段のシ
フトレジスタと、第一の入力バッファと、第二の入力バ
ッファと、第一の加減算器とを有し、二段のシフトレジ
スタが一成分ずつシフトすることにより、読み出し手段
によって読み出された入力信号系列の二成分が保持され
る。二段のシフトレジスタが二回シフトする度に前段の
保持する一成分が、第一の入力バッファによって受け取
られる。二段のシフトレジスタが二回シフトする度に後
段の保持する一成分が、第二の入力バッファによって受
け取られ、第一の入力バッファ及び第二の入力バッファ
内の二成分同士の加算及び減算が、第一の加減算器によ
って交互に行われる。
【0020】また、上記手段により本発明の第一の定数
乗算手段は、前記第一の加減算器に接続されるN/2個の
第一の定数乗算器を有し、第一の加減算器による加算結
果及び減算結果を乗数とし、所定の行列の一成分を被乗
数とする第一段目の一次元DCTにおける一行×一列の積
和計算における部分積が各々の第一の定数乗算器によっ
て求められる。
【0021】また、上記手段により本発明の第一の累算
手段は、前記N/2個の定数乗算器のそれぞれに対応して
接続されるN/2個の第一の加算器と、当該N/2個の第一の
加算器のそれぞれに対応して接続されるN/2個の二段の
シフトレジスタとを有し、第一の定数乗算器が出力した
積と、二段のシフトレジスタの後段から出力される成分
との加算が、各々の第一の加算器によって行われる。第
一の加算器が出力した成分が各々の二段のシフトレジス
タによってシフトしながら二成分保持され、保持された
二成分が一成分ずつシフトされることで後段の出力が第
一の加算器にフィードバックされ、N×2回シフトした後
に、当該一列中の二成分が一度に第二の読み出し手段に
出力される。
【0022】また、上記手段により本発明の第二の読み
出し手段は、一列バッファと、第一のN段の並列/直列
変換用のシフトレジスタと、第二のN段の並列/直列変
換用のシフトレジスタとを有し、一列バッファは、第一
の一次元DCT演算手段によって順次生成される一列分の
成分を、一列おきに受け取って保持し、保持している成
分の次の列の成分が第一の一次元DCT演算手段から出力
されると、それまで保持していた一列分の成分が第一の
N段の並列/直列変換用のシフトレジスタに一度に出力
され、第一のN段の並列/直列変換用のシフトレジスタ
は、前記一列バッファが出力した一列分の成分を保持
し、保持した一列分の成分のシフトを一成分ずつ行い、
当該一列分の成分が一成分ずつ第二の一次元DCT演算手
段に出力してゆき、第二のN段の並列/直列変換用のシ
フトレジスタは、第一の一次元DCT演算手段が出力した
一列分の成分で、一列バッファが受け取らなかったもの
を保持し、保持した一列分の成分のシフトを一成分ずつ
行い、当該一列分の成分が一成分ずつ第二の一次元DCT
演算手段に出力され、前記第二の加減算手段によって、
第二の読み出し手段が出力した二成分同士の加算及び減
算が交互に行われる。
【0023】また、上記手段により本発明の第二の定数
乗算手段は、前記第二の加減算手段と接続されるN/2個
の第二の定数乗算器を有し、各々の第二の定数乗算器に
よって第二の加減算手段による加算結果及び減算結果を
乗数とし、所定の行列の一行中の一成分を被乗数とする
第二段目の一次元DCTにおける一行×一列の積和計算に
おける部分積が求められる。
【0024】また、上記手段により本発明の第二の累算
手段は、前記N/2個の第二の定数乗算器のそれぞれに対
応して接続されるN/2個の第二の加算器と、当該N/2個の
第二の加算器に対応して接続されるN/2個のN×2段のシ
フトレジスタとを有し、第二の定数乗算器が出力した積
と、N×2段のシフトレジスタの最終段から出力される成
分とが各々の第二の加算器によって加算され、第二の加
算器が出力した成分が各々のN×2段のシフトレジスタに
よって二列分保持され、保持された成分は、一成分ずつ
シフトすることで最終段の出力を第二の加算器にフィー
ドバックされる。N×N回シフトした後に、当該二列分の
成分が一成分ずつ書き込み手段に出力される。
【0025】また、上記手段により本発明の累算手段
は、更にN/2個のN×2段のシフトレジスタのうち、所定
の一個を除くN/2-1個の最終段に接続されるN/2-1個の出
力バッファと、出力選択器とを有し、接続されるシフト
レジスタから一成分ずつ出力される二列分の成分が、N/
2-1個の出力バッファによってシフトを行いながら保持
され、保持される成分が一成分ずつ順次出力選択器に出
力される。
【0026】
【実施例】以下にDCTについての詳細な説明を行う。IDC
Tに対しては、同様に処理が可能であり、同等の演算装
置により計算できるので、IDCTの記述を省略する。以下
の説明中で、入力される信号系列をfijまたはf(i,j)
で、fijの一次元DCTをhmnまたはh(m,n)で、fijの二次元
DCTをguvまたはg(u,v)で表す。本発明はN×Nの二次元DC
Tに関するが、8×8の場合について以下に説明を行う。
また画素データ,内部数値表現及びDCT係数は16ビット
以下の固定小数点数であるとする。
【0027】DCTに対して幾つかの定義式が与えられる
が、ここでは典型的にMPEGやJPEGなどの画像符号化国際
標準で規定された定義式を参照する。即ち、8×8の二次
元DCTは次式で定義される。
【0028】
【数2】
【0029】
【数3】
【0030】
【数4】
【0031】
【数5】
【0032】
【数6】
【0033】
【数7】
【0034】
【数8】
【0035】
【数9】
【0036】
【数10】
【0037】
【数11】
【0038】
【数12】
【0039】
【数13】 (図1)は、上記の演算を行えるように構成された本発
明の実施例における二次元DCT演算装置の構成を示す図
である。二次元DCT演算装置は、第一のDCT演算部100
と、中間バッファ110と、第二のDCT演算部120
と、アドレス生成部130とで構成される。
【0040】アドレス生成部130は、線形読み出しア
ドレス生成部131と、線形書き込みアドレス生成部1
35とで構成される。線形読み出しアドレス生成部13
1は、列読み出しアドレスと行読み出しアドレスに基づ
き、外部線形メモリ中のN×Nの行列成分データ(本実施
例ではN=8)の線形アドレスを計算して、計算した線形
アドレスの成分を一成分ずつ第一のDCT演算部100に
読み出す。
【0041】(図2)は、線形読み出しアドレス生成部
131の構成を示す図である。線形読み出しアドレス生
成部131は、log2N×2ビットカウンタ132と、行読
み出しアドレス生成部133と、列読み出しアドレス生
成部134とで構成される。log2N×2ビットカウンタ1
32は、クロックパルスを入力する入力端子と、log2N
×2個の出力端子とが備えられ、クロックパルスが入力
される度にN×N回カウントを行う。本実施例においてN=
8であるから、log2N×2ビットカウンタ132は、r0〜r
5の出力端子を備えており、0〜63の数値をr0〜r5の出力
端子に発生する。
【0042】行読み出しアドレス生成部133は、log2
N×2ビットカウンタ132が発生した数値の下位3ビッ
トを入力し、log2N×2ビットカウンタ132にクロック
パルスが入力される度に行読み出しアドレスを発生す
る。log2N×2ビットカウンタ132が発生した数値の下
位3ビットが0,1,2,3,4,5,6,7の順に増加すれば、行読
み出しアドレス生成部133は、一つの列の第0,7,1,6,
2,5,3,4行を読み出すための読み出しアドレスを発生さ
せる。
【0043】列読み出しアドレス生成部134は、log2
N×2ビットカウンタ132が発生した数値の上位3ビッ
トを入力し、この上位3ビットがカウントアップする度
に列読み出しアドレスを発生する。log2N×2ビットカウ
ンタ132の出力端子の上位3ビットが0,1,2,3,4,5,6,7
をカウントすれば、列読み出しアドレス生成部134
は、第0,7,1,6,2,5,3,4列を読み出すための読み出しア
ドレスを発生させる。
【0044】行読み出しアドレス生成部133,列読み
出しアドレス生成部134がこのようにして読み出しア
ドレスを発生させると、読む順序は列単位に、第0,7,1,
6,2,5,3,4列の順に、列の中では第0,7,1,6,2,5,3,4行の
順となる即ち、下の表に示す通りとなる。 1 17 33 49 57 41 25 9 3 19 35 51 59 43 27 11 5 21 37 53 61 45 29 13 7 23 39 55 63 47 31 15 8 24 40 56 64 48 32 16 6 22 38 54 62 46 30 14 4 20 36 52 60 44 28 12 2 18 34 50 58 42 26 10 第一のDCT演算部100は、(数12)に示す第一段目
の一次元DCT演算を64サイクルで行う。第一のDCT演算部
100が行列Hの各成分の計算を行う順序を(図3)に
示す。図中のh00の下に記されている"1+3+5+7"とは、h
00は、1サイクル目に乗算を行い、3,5,7サイクル目に乗
算及び累算を行うことで計算されることを意味する。h
67の下に記されている"57+59+61+63"とは、h67は、57サ
イクル目に乗算を行い、59,61,63サイクル目に乗算及び
累算を行うことで計算されることを意味する。このよう
な順序で計算が行えるように第一のDCT演算部100は
構成される。
【0045】第一のDCT演算部100は、入力シフトレ
ジスタ101,入力バッファ102,第一の加減算器1
03,第一の定数乗算器104,第一の累算器105,
及び累算シフトレジスタ106で構成される。入力シフ
トレジスタ101は二成分のデータをシフトしながら格
納する二段のシフトレジスタで構成される。具体的に
は、入力シフトレジスタ101は、線形読み出しアドレ
ス生成部131によって外部線形メモリから読み出され
た一成分のデータを第一段目のレジスタに保持させる。
線形読み出しアドレス生成部131によって次の成分が
読み出されると、それまで保持していた内容を次段のレ
ジスタにシフトする。その結果、入力シフトレジスタ1
01には、2サイクルで二成分が充填される。充填され
ると同時に入力シフトレジスタ101は、それまで保持
していた二成分分のデータを一度に入力バッファ102
に転送する。
【0046】入力バッファ102は、入力シフトレジス
タ101が転送した二成分分のデータを、入力シフトレ
ジスタ101に次の二成分のデータが読み出されるまで
保持する(この保持は2サイクルの間行われる。)。次
の二成分分のデータが入力シフトレジスタ101に読み
出されると、入力バッファ102は、それまで保持して
いた二成分分のデータを第一の加減算器103に転送す
る。
【0047】第一の加減算器103は、(数12)の右
辺第一項の行列の各成分(f0j+f7 j,f0j−f7j,f1j+f
6j,f1j−f6j,f2j+f5j,f2j−f5j,f3j+f4j,f3j−f
4jj=0,・・・・・,7)の計算を行う。具体的には、第一の加
減算器103は入力バッファ102が転送した二成分分
のデータを受け取り、受け取った時点でこれらの二成分
のデータの加算を1サイクルで行い、加算結果を第一の
定数乗算器104のそれぞれの段の定数乗算器に出力す
る。出力後、第一の加減算器103は、二成分分のデー
タの減算を1サイクルで行い、減算結果を第一の定数乗
算器104のそれぞれの定数乗算器に出力する。このよ
うに第一の加減算器103は、それぞれの二成分分のデ
ータに対して加算と減算を交互に繰り返す。j列データ
に対する演算はサイクル順にf0j+f7j,f0j−f7j,f1j
+f6j,f1j−f6j,f2j+f5j,f2j−f5j,f3j+f4j,f3j
−f4jであり、これを順に第0,7,1,6,2,5,3,4列について
繰り返す。
【0048】第一の定数乗算器104は、N/2個(四
つ)のROMより構成される。これらのROMには、(数1
2)の右辺第二項の行列成分と、(数12)の右辺第一
項の行列成分との乗算値が予め格納されている。定数乗
算器104を構成するN/2個のROMは、第一の加減算器1
03から出力される加算,減算結果を受け取り、格納し
ている乗算値のうち、第一の加減算器103から出力さ
れる(数12)の右辺第二項の行列成分を被乗数とする
ものを取り出して、第一の累算器105のN/2個のそれ
ぞれの加算器に出力する。
【0049】第一の累算器105は、N/2個の加算器か
ら構成される。第一の累算器105は、第一の定数乗算
器104が出力したN/2の積と、累算シフトレジスタ1
06を経てフィードバックされるN/2の累算中の中間値
とを加算する。累算シフトレジスタ106は、N/2個の
二段のシフトレジスタから構成される。
【0050】累算シフトレジスタ106は、行列Hの成
分の中間値を保持し、一列中の奇数,偶数行に対応する
N/2個の累算が一サイクル毎に交互に行われるようにシ
フト動作を行い、累算途中の中間値を第一の累算器10
5へフィードバックする。このシフト動作をNサイクル
繰り返すことにより、累算シフトレジスタ106に行列
Hの一列分の成分が充填され、充填された時点で累算シ
フトレジスタ106は、一列分の全ての成分を中間バッ
ファ110に順次転送する。尚、図中のセルに書かれて
いる数字は、それぞれのレジスタに充填されている成分
が、一列中のどの行の成分であるかを示す。
【0051】中間バッファ110は、一列バッファ11
1と、二列シフトレジスタ112とで構成される。一列
バッファ111は、累算シフトレジスタ106が順次転
送する一列分のN個の成分を、一列おきに受け取り、行
列Hの次の一列分の成分が累算シフトレジスタ106に
計算されるまで、一列バッファ111は受け取った一列
分の成分を保持する。保持している一列分の次の一列分
の成分が累算シフトレジスタ106に計算されると、一
列バッファ111は、保持している一列分の成分を二列
シフトレジスタ112に一度に転送する。
【0052】二列シフトレジスタ112は、N段の並列
/直列変換用のシフトレジスタが二列分並べられて構成
される。二列シフトレジスタ112を構成する二列分の
シフトレジスタは、累算シフトレジスタ106及び一列
バッファ111から転送される二列分の値を受け取る。
次に上記の二列分のシフトレジスタは、1サイクル毎に
シフトを行い、これらの成分を二成分ずつ第二のDCT演
算部120に転送してゆく。8サイクルで二列分の全て
の成分を第二のDCT演算部120に転送し終えると、二
列シフトレジスタ112は、次の二列分の成分を累算シ
フトレジスタ106,一列バッファ111から受け取
る。
【0053】第二のDCT演算部120は、(数13)に
示す第二段目の一次元DCT演算を64サイクルで行う。第
二のDCT演算部100が行列Gの各成分の計算を行う順
序を(図4)に示す。図中のg00の下に記されている"1+
17+33+49"とは、g00は、1サイクル目に乗算を行い、17,
33,49サイクル目に乗算及び累算を行うことで計算され
ることを意味する。g67の下に記されている"14+30+46+6
2"とは、g67は、14サイクル目に乗算を行い、30,46,62
サイクル目に乗算及び累算を行うことで計算されること
を意味する。このような順序で計算が行えるように第二
のDCT演算部120は構成される。
【0054】第二のDCT演算部120は、第二の加減算
器121,第二の定数乗算器122,第二の累算器12
3,二列シフトレジスタ124a,124b,124
c,124d,二列出力バッファ125b,125c,
125dで構成される。第二の加減算器121は、(数
13)の右辺第一項の行列の各成分hm,0+hm,7,hm,0
hm,7,hm,1+hm,6,hm,1−hm,6,hm,2+hm,5,hm,2−h
m,5,hm,3+hm,4,hm,3−hm,4(m=0,・・・・,7)の計算を行
う。具体的には、第二の加減算器121は二列シフトレ
ジスタ112が転送した二成分を受け取り、受け取った
時点でこれらの二成分の加算を1サイクルで行い、加算
結果を第一の第二の定数乗算器122に出力する。出力
後、第二の加減算器121は、二成分の減算を1サイク
ルで行い、減算結果を第二の定数乗算器122のそれぞ
れの定数乗算器に出力する。
【0055】第二の定数乗算器122は、N/2個(四
つ)のROMより構成される。これらのROMは、(数13)
の右辺第二項の行列成分と、(数13)の右辺第一項の
行列成分との乗算値を予め格納している。第二の定数乗
算器122を構成するN/2個のROMは第二の加減算器12
1から出力される加算,減算結果を受け取り、格納して
いる乗算値のうち、第二の加減算器121から出力され
る(数13)の右辺第二項の行列成分を被乗数とするも
のを全て取り出して、第二の累算器123のN/2個のそ
れぞれの加算器に出力する。
【0056】第二の累算器123は、N/2個の加算器か
ら構成される。第二の累算器123は、第二の定数乗算
器122が出力したN/2の積と、二列シフトレジスタ1
24a,124b,124c,124dを経てフィード
バックされるN/2の累算中の中間値とを加算する。二列
シフトレジスタ124aは、N×2段のシフトレジスタで
構成される。二列シフトレジスタ124aは、行列Gの
成分の中間値を保持し、二列分の成分を求めるための累
算が、g0v,g0,v+1,g1v,g1,v+1,g2v,g2,v+1,g3v
g3,v+1,g4v,g4,v+1,g5v,g5,v+1,g6v,g6,v+1
g7v,g7,v+1 (v=0,2,4,6)の順に交互に行われるように
シフト動作を行い、累算途中の中間値を第二の累算器1
23へフィードバックする。このシフト動作を64サイク
ル繰り返すことにより、二列シフトレジスタ124aに
行列Gの二列分の成分が充填される。充填された時点で
二列シフトレジスタ124aはシフト動作を行い、二列
分の成分を、1サイクル毎に1つずつ出力選択器126
に出力してゆき、N×2サイクルで、二列分の成分を全て
出力選択器126に出力する。尚、図中のセルに書かれ
ている数字は、それぞれのレジスタに充填されている成
分が、一列中のどの成分であるかを示す。二列シフトレ
ジスタ124b,124c,124dは、二列シフトレ
ジスタ124aと同様の動作を行う。異なるのは、二列
シフトレジスタ124b,124c,124dは、出力
を二列出力バッファ125b,125c,125dに対
して行う点である。尚、図中のセルに書かれている数字
は、それぞれのレジスタに充填されている成分が、一列
中のどの成分であるかを示す。
【0057】二列出力バッファ125b,125c,1
25dは、二列シフトレジスタ124b,124c,1
24dから出力される二列分の成分を一成分ずつ受け取
り、シフトを行いながら、N×2サイクルでこれらの成分
を全て格納する。二列シフトレジスタ124aがN×2サ
イクルをかけて二列分の成分を全て出力選択器126に
出力した後に、二列出力バッファ125b,125c,
125dは、N×2サイクルをかけて、二列分の成分を出
力選択器126に順序出力してゆく。尚、図中のセルに
書かれている数字は、それぞれのレジスタに充填されて
いる成分が、一列中のどの成分であるかを示す。
【0058】出力選択器126は、二列シフトレジスタ
124a,二列出力バッファ125b,125c,12
5dから出力される行列Gの各成分を、外部線形メモリ
に選択出力する。線形書き込みアドレス生成部135
は、出力選択器126から出力される行列Gの各成分を
外部線形メモリに書き込むための、行書き込みアドレス
及び列書き込みアドレスを生成する。(図5)に、線形
書き込みアドレス生成部135の構成を示す。線形書き
込みアドレス生成部135には、log2N×2ビットカウン
タ136が含まれており、log2N×2ビットカウンタ13
6の出力端子の順序が入れ替えられて外部に出力されて
いる。
【0059】log2N×2ビットカウンタ136は、log2N
×2個の出力端子が備えられ、出力選択器126から行
列Gの各成分を受け取る毎にN×N回カウントを行う。本
実施例においてN=8であるから、log2N×2ビットカウン
タ136は、0〜63の数値を出力端子u0〜u5に発生す
る。log2N×2ビットカウンタ136が偶数値をカウント
する度に、行書き込みアドレスがインクリメントし、lo
g2N×2ビットカウンタ136が奇数値をカウントする度
に列書き込みアドレスがインクリメントする。アドレス
を行書き込みアドレス,列書き込みアドレスを生成する
ことにより、行列Gの成分が以下に示す順序で外部線形
メモリに書き込まれる。 1 2 17 18 33 34 49 50 3 4 19 20 35 36 51 52 5 6 21 22 37 38 53 54 7 8 23 24 39 40 55 56 9 10 25 26 41 42 57 58 11 12 27 28 43 44 59 60 13 14 29 30 45 46 61 62 15 16 31 32 47 48 63 64 (図6)は、(図1)の第一の定数乗算器104,第二
の定数乗算器122と第一の累算器105,第二の累算
器123とを構成する各定数乗算器、加算器の詳細図で
ある。以下に定数乗算器104及び第一の定数累算器1
05の構成の詳細について説明する。
【0060】同図において、ROM501は四つの8×16語
の定数ROMからなり、(図1)の定数乗算器104,1
22に相当する。ROM501に被乗数biと定数との積の
値はあらかじめ計算されて格納されている。更に詳しく
は、16ビット長の被乗数は4ビット毎に四つに区切ら
れ、この4ビット分と定数との積、つまり、定数の0〜15
の倍数が上記の定数ROMに格納されている(このように
格納することでROM501の容量は小さくなる。)。ま
た、(数12)よりわかるように定数行列の半分の成分
は0(ゼロ)であり、一回の乗算で、被乗数biには四つ
の定数が乗ぜられるので、これらの四つの定数は共通の
アドレスに格納され、被乗数biが入力されると、これら
の四つの定数が取り出される。上記の一区切りの4ビッ
トと定数16ビットとの積は20ビット長であり、上記の四
つの定数が同一のアドレスに格納されるので、20×4=8
0ビット長が一語のビット長となる。更にROMに格納され
る定数行列の成分の半分は0であるので、ROM501に
は、8×24=128語が格納される。第一の加減算器103
から出力される(数12)の右辺第一項の行列の各成分
を上記のアドレス指定に用いることで、ROM501から1
6個の20ビット長の部分積が同時に取り出される。
【0061】第一の累算器105は、5入力を二つの部
分和に桁上げ伝播なしに足し合わせるN/2個の桁上げ保
存加算器(以下CSA(carry save adder)と略す)及びN/2
個の桁上げ伝播加算器(以下CPA(carry propagate adde
r)と略す)で構成される。図中のCSA502は、5入力を
二つの部分和に桁上げ伝播なしに足し合わせる桁上げ保
存加算器である。(図7)に示すように、CSA502は
三段のCSAで構成される。ROM501から出力される20×
4ビットの積のそれぞれ20ビットを、下位のものから順
にm0,m1,m2,m3とすると、第一段目のCSAは、m0と累算値
とを加算する。第二段目のCSAは、第一段目のCSAの加算
結果と、m1を4ビット上位にずらしたものとを加算す
る。第三、四段目のCSAは、第二、三段目のCSAの加算結
果と、m2,m3を8ビット、12ビット上位にずらしたものを
加算する。尚、CSA502が行う以上の加算は、桁上げ
を保存したまま行われる。
【0062】図中のCPA503は、CSA502から出力さ
れる加算出力(S)と桁上げ出力(C)とを加算する。
加算結果は、適当なビット幅に丸められ、累算シフトレ
ジスタ106に出力される。(図8)は、(図1)の二
列シフトレジスタ124a及び二列出力バッファ125
b,125c,125dのシフト制御信号のタイミング
を表わす図である。同図において、右方向に実行サイク
ル数、即ち時間を表わす。縦軸に0または1のシフト制
御信号の論理値を表わす。シフト制御信号が0の間二列
出力バッファ125b,125c,125dは成分を保
持し、シフト制御信号が1の間、二列シフトレジスタ1
24a及び二列出力バッファ125b,125c,12
5dはシフト動作を行い、二成分ずつ出力選択器126
に出力してゆく。
【0063】以上のように構成された本実施例の二次元
DCT演算装置の動作を以下に説明する。本実施例の二次
元DCT演算装置は、外部線形メモリに対して読み出しを
行い、読み出しによって生成する8×8の行列ブロックか
らなる入力信号系列fijを受け取り、受け取った入力信
号系列に対してDCT演算を多段のパイプライン処理を施
し、結果のDCT係数系列を外部線形メモリに出力する。 (1) 行読み出しアドレス生成部133が行読み出しアド
レスを発生させる。列読み出しアドレス生成部133に
よる読み出し列の指定は一データを読み込む度に第0,7,
1,6,2,5,3,4行の順に変わり、これを繰り返す。 (2) 列読み出しアドレス生成部133が一列中の行番号
を全て発生すれば、列読み出しアドレス生成部134が
列読み出しアドレスを発生させる。列読み出しアドレス
による読み出し列の指定は、一データを一列分読み込む
度に第0,7,1,6,2,5,3,4列の順に変わり、これを繰り返
す。 (3) 列読み出しアドレスと行読み出しアドレスに基づ
き、外部線形メモリ中の行列成分データの線形アドレス
が計算される。 (4) 線形読み出しアドレス生成部131によって一サイ
クル毎に8×8行列が、一成分ずつ読み出され、入力信号
系列が一成分ずつ生成する。この入力信号系列を入力シ
フトレジスタ101はシフトしながら読み込む。読む順
序は列単位に、第0,7,1,6,2,5,3,4列の順に、列の中で
は第0,7,1,6,2,5,3,4行の順である。 1 17 33 49 57 41 25 9 3 19 35 51 59 43 27 11 5 21 37 53 61 45 29 13 7 23 39 55 63 47 31 15 8 24 40 56 64 48 32 16 6 22 38 54 62 46 30 14 4 20 36 52 60 44 28 12 2 18 34 50 58 42 26 10 (5) 入力シフトレジスタ101は、読み込んだ二成分分
のデータを入力バッファ102に一度に転送する。入力
バッファ102は2サイクルの間このデータを保持す
る。 (6) 第一の加減算器103は最初に加算を行い、次に減
算を行う。以降加算と減算を交互に繰り返す。j列デー
タに対する演算はサイクル順にf0j+f7j,f0j−f7j,f1j
+f6j,f1j−f6j,f2j+f5j,f2j−f5j,f3j+f4j,f3j−f4j
であり、これを順に第0,7,1,6,2,5,3,4列について繰り
返す。 (7) 第一の定数乗算器104は、(数12)に基づいて
行列各成分の積を出力する。出力された積は、第一の累
算器105によって順次累積加算される。累算中の中間
値は、累算シフトレジスタ106に保持される。 (8) 累算シフトレジスタ106はシフトを行い、保持し
ている中間値を第一の累算器105にフィードバックす
る。上記積および累算のステップを4回繰り返せば一列
分の中間値が求められる。この中間値とは一次元DCT係
数である。一つの列中で第0,2,4,6行,第1,3,5,7行に関
する累算が交互に繰り返される。このようなシフトを64
サイクル繰り返せば、8×8行列の積が計算される。 (9) 累算シフトレジスタ106に二成分分の中間値が格
納されれば、これらを一列分の中間値として一列バッフ
ァ111に転送する。 (10) 累算シフトレジスタ106と一列バッファ111
とに二列分の中間値が格納されれば、二列シフトレジス
タ112に二列分の内容を一度に転送する。 (11) 二列シフトレジスタ112は、行番号0〜7の順に
シフトしながら、二成分のデータを第二の加減算器12
1に出力する。第二の加減算器121は、それらの和ま
たは差を計算する。第二の加減算器121は最初に加算
を行い、次に減算を行う。以降加算と減算を交互に繰り
返す。m行データに対する演算は、サイクル毎に順にh
m,0+hm,7,hm,0−hm,7,hm,1+hm,6,hm,1−hm,6,h
m,2+hm,5,hm,2−hm,5,hm,3+hm,4,hm,3−hm,4(m=0,
・・・・,7)の計算を行う。 (12) 第二の定数乗算器122は、(数13)に基づき
行列各成分の積を求め、求めた値を累算中の中間和に順
次累積加算する。 (13) 第二の累算器123で加算した結果を二列シフト
レジスタ124に出力する。二列シフトレジスタ124
は、加算結果を順次シフトしながら保持する。最初のサ
イクルで四つの二列シフトレジスタ124a,124
b,124c,124dそれぞれに第0,2,4,6列の第0行
の中間値が、次のサイクルで第1,3,5,7列の第0行の中間
値が保持され、以下これが交互に繰り返され行番号がイ
ンクリメントしてゆく。最初の16サイクルで行列の各成
分と計算される順番との関係を下の表に示す。同じ番号
の成分は同時に計算される。 1 2 1 2 1 2 1 2 3 4 3 4 3 4 3 4 5 6 5 6 5 6 5 6 7 8 7 8 7 8 7 8 9 10 9 10 9 10 9 10 11 12 11 12 11 12 11 12 13 14 13 14 13 14 13 14 15 16 15 16 15 16 15 16 上記16サイクルが四回繰り返されれば二次元DCTの演算
が完了する。各成分の位置に対し四回累算が行われる。 (14) 三つの二列出力バッファ125b,125c,1
25dへそれぞれ三つの二列シフトレジスタ124b,
124c,124dは、保持している成分をシフトしな
がら出力する。二列シフトレジスタ124aは上記の出
力バッファを介さずに出力選択器126に二成分を出力
してゆく。 (15) 線形書き込みアドレス生成部136で行書き込み
アドレス及び列書き込みアドレスを発生させる。行書き
込みアドレスは、二データを書き込む度に第0,0,1,1,2,
2,3,3,4,4,5,5,6,6,7,7行の順に変わり、この二列分の
指定を4回繰り返す。列書き込みアドレスは二データを
書き込む度に第0,1列の順に増加する。次の二列で第2,3
列を繰り返し、以後二列毎に第4,5列,第6,7列を指定す
る。 (16) 列書き込みアドレスと行書き込みアドレスに基づ
き、線形書き込みアドレス生成部136で外部線形メモ
リ中の行列成分データの線形アドレスを計算する。 (17)(図8)に示すように、出力選択器126は最初の
16サイクルで二列シフトレジスタ124a中に計算され
た二次元DCT係数を選択出力し、この間に三つの二列シ
フトレジスタ124b,124c,124dの内容は三
つの二列出力バッファ125b,125c,125dへ
シフトしながら転送される。以後三つの二列出力バッフ
ァ125b,125c,125dの内容が順次出力選択
器126で選択出力される。上記書き込みアドレスで制
御されるように、二次元DCT係数行列の中で書き込む順
序は下の表に示す通り。 1 2 17 18 33 34 49 50 3 4 19 20 35 36 51 52 5 6 21 22 37 38 53 54 7 8 23 24 39 40 55 56 9 10 25 26 41 42 57 58 11 12 27 28 43 44 59 60 13 14 29 30 45 46 61 62 15 16 31 32 47 48 63 64 以上のパイプライン処理のタイミングチャートを(図
9)に示す。尚、図中の1stDCTとは一段目の一次元DCT
を意味し、2nd DCT とは二段目の一次元DCT を意味す
る。上の多段のパイプライン処理は大きく次の三つの処
理部に分かれると見なせる。 第一段‥‥第一段目の一次元DCT演算部‥‥上の説明中
(1)〜(8)に相当 第二段‥‥中間バッファ‥‥上の説明中(9)〜(10)に相
当 第三段‥‥第二段目の一次元DCT演算部‥‥上の説明中
(11)〜(18)に相当 なお本実施例では8×8のDCTに関し記述したが、同じ算
法を用いて16×16などへ容易に拡張できる。またビット
幅や数表現も16ビット,固定小数点数だけでなく、32ビ
ット浮動小数点数などへ応用できる。また本実施例で
は、説明の便宜上列方向に読み出しを行うように述べた
が、定数行列Cを転置することにより上記の行と列に関
する記載を入れ替えた構成も実現できることはいうまで
もない。
【0064】
【発明の効果】以上のように本発明の二次元DCT演算装
置によれば、N×N画素ブロックの中でデータの入出力順
序を最適に入れ替えることにより、より少ない回路規模
で同等の性能を発揮できる。画素ブロック単位で成分デ
ータの入出力順を入れ替えることはシステム構成上容易
に実現できる。また内部のシフトレジスタや中間バッフ
ァが削減されるため、DCT演算の潜伏時間(latency)が小
さくなる。更に従来の二次元DCT演算装置をより少ない
コストで実現し、且つデータを入力してから演算結果を
得るまでの潜伏時間を短縮するのでその実用的効果は大
きい。
【図面の簡単な説明】
【図1】本発明の二次元DCT演算装置の構成図である。
【図2】線形書き込みアドレス生成部131の構成図で
ある。
【図3】第一のDCT演算部100が行う累算及び乗算の
順序を示す図である。
【図4】第二のDCT演算部120が行う累算及び乗算の
順序を示す図である。
【図5】線形書き込みアドレス生成部134の構成を示
す図である。
【図6】(図1)の定数乗算器104,122と累算器
105,123の詳細図である。
【図7】(図6)のCSA502の構成を示す図である。
【図8】(図1)の二列出力バッファ125b,125
c,125dのシフト制御信号のタイミングを示す図で
ある。
【図9】パイプライン処理のタイミングチャートであ
る。
【図10】従来の二次元DCT演算装置のブロック図であ
る。
【図11】(図10)のN×1(特に8×1の場合)DCTプ
ロセッサ203,207の回路図である。
【図12】(図11)のRAC317のブロック図であ
る。
【符号の説明】
101 入力シフトレジスタ 102 入力バッファ 103,121 加減算器 104,122 定数乗算器 105,123 累算器 106 累積シフトレジスタ 111 一列バッファ 112 二列シフトレジスタ 124 二列シフトレジスタ 125 二列出力バッファ 126 出力選択器 131 線形読み出しアドレス生成部 132,136 log2N×2ビットカウンタ 133 行読み出しアドレス生成部 134 列書き込みアドレス生成部 135 線形書き込みアドレス生成部

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 二段の一次元DCT演算手段を備え、N×N
    個の成分を有するデータ行列に対して二次元離散余弦変
    換(DCT(Discrete Cosine Transform)と略す)を演算
    し、変換結果の行列の各成分を外部メモリに書き込む二
    次元DCT演算装置であって、 二次元DCTの対象となるデータ行列を、(数1)に示す
    読み出し番号順に対応する成分を一成分ずつ読み出す読
    み出し手段と、 【数1】 前記読み出し手段によって読み出された二成分ずつに対
    して第一段目の一次元DCTを行い、変換結果を一列分ず
    つ生成する第一の一次元DCT演算手段と、 前記第一の一次元DCT演算手段が生成した二列分のそれ
    ぞれの成分を、行順に二成分ずつ読み出してゆく第二の
    読み出し手段と、 前記第二の読み出し手段によって読み出された二成分に
    第二段目の一次元DCTを行い、変換結果の行列を生成す
    る第二の一次元DCT演算手段と、 前記第二の一次元DCT演算手段が生成した変換結果の行
    列を一成分ずつ外部メモリに書き込む書き込み手段と、 を備えることを特徴とする二次元DCT演算装置。
  2. 【請求項2】 前記第一の一次元DCT手段は、第一の加
    減算手段と、第一の定数乗算手段と、第一の累算手段と
    を有し、 第一の加減算手段は、読み出し手段によって読み出され
    た二成分同士の加算及び減算を行い、 第一の定数乗算手段は、第一段目の一次元DCTにおける
    一行×一列の積和計算において、第一の加減算手段によ
    る加算結果及び減算結果を乗数とする部分積を全て求
    め、 第一の累算手段は、加減算結果一列分の第一の定数乗算
    手段の部分積の累算値を求めて、求めた累算値を第二の
    読み出し手段に出力し、 前記第二の一次元DCT手段は、第二の加減算手段と、第
    二の定数乗算手段と、第二の累算手段とを有し、 第二の加減算手段は、第二の読み出し手段によって読み
    出された二成分同士の加算及び減算を行い、 第二の定数乗算手段は、第二段目の一次元DCTにおける
    一行×一列の積和計算において、第二の加減算手段によ
    る加算結果及び減算結果を乗数とする部分積を全て求め
    て、 第二の累算手段は、加減算結果一行分の第一の定数乗算
    手段の部分積の累算値を求めて、求めた累算値を書き込
    み手段に出力することを特徴とする請求項1記載の二次
    元DCT演算装置。
  3. 【請求項3】 前記第一の加減算手段は、二段のシフト
    レジスタと、第一の入力バッファと、第二の入力バッフ
    ァと、第一の加減算器とを有し、 二段のシフトレジスタは、 一成分ずつシフトして、読み出し手段によって読み出さ
    れた入力信号系列の二成分を保持し、 第一の入力バッファは、 二段のシフトレジスタが二回シフトする度に前段の保持
    する一成分を受け取り、 第二の入力バッファは、 二段のシフトレジスタが二回シフトする度に後段の保持
    する一成分を受け取り、第一の加減算器は、 第一の入力バッファ及び第二の入力バッファ内の二成分
    同士の加算及び減算を交互に行い、 第一の定数乗算手段は、前記第一の加減算器に接続され
    るN/2個の第一の定数乗算器を有し、 各々の第一の定数乗算器は、第一段目の一次元DCTにお
    ける一行×一列の積和計算において、第一の加減算器に
    よる加算結果及び減算結果を乗数とし、所定の行列の一
    成分を被乗数とする部分積を求めて、 前記第一の累算手段は、前記N/2個の定数乗算器のそれ
    ぞれに対応して接続されるN/2個の第一の加算器と、当
    該N/2個の第一の加算器のそれぞれに対応して接続され
    るN/2個の二段のシフトレジスタとを有し、 各々の第一の加算器は、第一の定数乗算器が出力した積
    と、二段のシフトレジスタの後段から出力される成分と
    を加算し、 各々の二段のシフトレジスタは、第一の加算器が出力し
    た成分をシフトしながら二成分保持し、保持した二成分
    を一成分ずつシフトすることで後段の出力を第一の加算
    器にフィードバックして、N×2回シフトした後に、当該
    一列中の二成分を一度に第二の読み出し手段に出力する
    ことを特徴とする請求項2記載の二次元DCT演算装置。
  4. 【請求項4】 前記第二の読み出し手段は、一列バッフ
    ァと、第一のN段の並列/直列変換用のシフトレジスタ
    と、第二のN段の並列/直列変換用のシフトレジスタと
    を有し、 一列バッファは、第一の一次元DCT演算手段によって順
    次生成される一列分の成分を、一列おきに受け取って保
    持し、保持している成分の次の列の成分が第一の一次元
    DCT演算手段から出力されると、それまで保持していた
    一列分の成分を第一のN段の並列/直列変換用のシフト
    レジスタに一度に出力し、 第一のN段の並列/直列変換用のシフトレジスタは、前
    記一列バッファが出力した一列分の成分を保持し、保持
    した一列分の成分のシフトを一成分ずつ行い、当該一列
    分の成分を一成分ずつ第二の一次元DCT演算手段に出力
    してゆき、 第二のN段の並列/直列変換用のシフトレジスタは、第
    一の一次元DCT演算手段が出力した一列分の成分で、一
    列バッファが受け取らなかったものを保持し、保持した
    一列分の成分のシフトを一成分ずつ行い、当該一列分の
    成分を一成分ずつ第二の一次元DCT演算手段に出力して
    ゆくことを特徴とする請求項3記載の二次元DCT演算装
    置。
  5. 【請求項5】 前記第二の加減算手段は、 第二の読み出し手段が出力した二成分同士の加算及び減
    算を交互に行い、 前記第二の定数乗算手段は、前記第二の加減算手段と接
    続されるN/2個の第二の定数乗算器を有し、 各々の第二の定数乗算器は、 第二段目の一次元DCTにおける一行×一列の積和計算に
    おいて、第二の加減算手段による加算結果及び減算結果
    を乗数とし、所定の行列の一行中の一成分を被乗数とす
    る部分積を求めて、 前記第二の累算手段は、 前記N/2個の第二の定数乗算器のそれぞれに対応して接
    続されるN/2個の第二の加算器と、当該N/2個の第二の加
    算器に対応して接続されるN/2個のN×2段のシフトレジ
    スタとを有し、 各々の第二の加算器は、第二の定数乗算器が出力した積
    と、N×2段のシフトレジスタの最終段から出力される成
    分とを加算し、 各々のN×2段のシフトレジスタは、第二の加算器が出力
    した成分をシフトしながら二列分保持し、保持した成分
    を一成分ずつシフトすることで最終段の出力を第二の加
    算器にフィードバックして、N×N回シフトした後に、当
    該二列分の成分を一成分ずつ書き込み手段に出力するこ
    とを特徴とする請求項4記載の二次元DCT演算装置。
  6. 【請求項6】 前記累算手段は、更にN/2個のN×2段の
    シフトレジスタのうち、所定の一個を除くN/2-1個の最
    終段に接続されるN/2-1個の出力バッファと、出力選択
    器とを有し、 N/2-1個の出力バッファは、N×2段のシフトレジスタか
    らなり、接続されるシフトレジスタから一成分ずつ出力
    される二列分の成分をシフトを行いながら保持し、保持
    している成分を一成分ずつ順次出力選択器に出力してゆ
    き、 出力選択器は、それぞれのN×2段のシフトレジスタ及び
    N/2-1個の出力バッファの出力を選択して出力すること
    を特徴とする請求項5記載の二次元DCT演算装置。
  7. 【請求項7】 前記定数乗算器は、 所定の行列の成分の倍数を予め格納しているROMを有し
    ていることを特徴とする請求項3から6記載の何れかの
    二次元DCT演算装置。
  8. 【請求項8】 前記定数乗算器は、 所定の行列として第一段目及び第二段目の一次元DCTに
    用いられる定数行列の成分及び/又は第一段目及び第二
    段目の離散余弦逆変換(IDCT(Inverse Discrete Cosine
    Transform)と略す)に用いられる定数行列の成分を予
    め格納していることを特徴とする請求項7記載の二次元
    DCT演算装置。
  9. 【請求項9】 前記読み出し手段は、読み出し列生成手
    段と、読み出し行生成手段と、読み出しアドレス生成手
    段とを備え、 読み出し列生成手段は、読み出すべき成分の、N×Nの成
    分を持つデータ行列における列番号を指定し、 読み出し行生成手段は、読み出し列生成手段が指定した
    列における読み出しを行う成分の行番号を指定する読み
    出しアドレス生成手段は、読み出し列生成手段が生成し
    た列番号と、読み出し行生成手段が生成した行番号とか
    ら、読み出すべき成分の外部メモリ中のアドレスを生成
    することを特徴とする二次元DCT演算装置。
  10. 【請求項10】 前記書き込み手段は、書き込み列生成
    手段と、書き込み行生手段と、書き込みアドレス生成手
    段とを有し、 書き込み列生成手段は、演算結果の行列の成分のうち、
    書き込みを行うものの列番号を生成し、 書き込み行生成手段は、書き込み列生成手段が生成した
    列番号の列における、書き込みを行う成分の行番号を生
    成し、 書き込みアドレス生成手段は、書き込み行生成手段が生
    成した行番号と、書き込み列生成手段が生成した列番号
    とから、演算行列の各成分を書き込むための外部メモリ
    中のアドレスを生成することを特徴とする請求項1から
    9記載の何れかの二次元DCT演算装置。
JP35255893A 1993-12-28 1993-12-28 二次元dct演算装置 Pending JPH07200539A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP35255893A JPH07200539A (ja) 1993-12-28 1993-12-28 二次元dct演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP35255893A JPH07200539A (ja) 1993-12-28 1993-12-28 二次元dct演算装置

Publications (1)

Publication Number Publication Date
JPH07200539A true JPH07200539A (ja) 1995-08-04

Family

ID=18424886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35255893A Pending JPH07200539A (ja) 1993-12-28 1993-12-28 二次元dct演算装置

Country Status (1)

Country Link
JP (1) JPH07200539A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525773B1 (en) 1997-06-09 2003-02-25 Sharp Kabushiki Kaisha Image processing device and method with data block flow control
KR100451147B1 (ko) * 1997-02-25 2004-11-26 엘지전자 주식회사 고속곱셈기
CN1305313C (zh) * 2003-12-03 2007-03-14 威盛电子股份有限公司 以管线架构应用于离散余弦变换与反离散余弦变换的系统
JP2011509538A (ja) * 2007-09-26 2011-03-24 クゥアルコム・インコーポレイテッド ビデオコーディングのための効率的な変換技術
KR101226075B1 (ko) * 2011-02-01 2013-01-24 에스케이하이닉스 주식회사 이미지 처리 장치 및 방법
JP2017537491A (ja) * 2014-10-01 2017-12-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 改善された転置バッファを有するスケーラブルな変換ハードウェアアーキテクチャ
JP2018078572A (ja) * 2013-07-12 2018-05-17 クゥアルコム・インコーポレイテッドQualcomm Incorporated 水平および垂直変換の並行処理
CN115587621A (zh) * 2022-09-26 2023-01-10 南京大学 一种实现快速二维dct变换的装置及其方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100451147B1 (ko) * 1997-02-25 2004-11-26 엘지전자 주식회사 고속곱셈기
US6525773B1 (en) 1997-06-09 2003-02-25 Sharp Kabushiki Kaisha Image processing device and method with data block flow control
CN1305313C (zh) * 2003-12-03 2007-03-14 威盛电子股份有限公司 以管线架构应用于离散余弦变换与反离散余弦变换的系统
JP2011509538A (ja) * 2007-09-26 2011-03-24 クゥアルコム・インコーポレイテッド ビデオコーディングのための効率的な変換技術
US8654833B2 (en) 2007-09-26 2014-02-18 Qualcomm Incorporated Efficient transformation techniques for video coding
KR101226075B1 (ko) * 2011-02-01 2013-01-24 에스케이하이닉스 주식회사 이미지 처리 장치 및 방법
US8693796B2 (en) 2011-02-01 2014-04-08 SK Hynix Inc. Image processing apparatus and method for performing a discrete cosine transform
JP2018078572A (ja) * 2013-07-12 2018-05-17 クゥアルコム・インコーポレイテッドQualcomm Incorporated 水平および垂直変換の並行処理
JP2017537491A (ja) * 2014-10-01 2017-12-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 改善された転置バッファを有するスケーラブルな変換ハードウェアアーキテクチャ
CN115587621A (zh) * 2022-09-26 2023-01-10 南京大学 一种实现快速二维dct变换的装置及其方法

Similar Documents

Publication Publication Date Title
Sun et al. VLSI implementation of a 16* 16 discrete cosine transform
US4791598A (en) Two-dimensional discrete cosine transform processor
US5331585A (en) Orthogonal transformation processor for compressing information
JPH03180965A (ja) 単一のマルチプライヤ/アキュムレータと単一のランダムアクセスメモリを用いてdct/idct演算を繰り返す集積回路装置
US4853887A (en) Binary adder having a fixed operand and parallel-serial binary multiplier incorporating such an adder
JPH07200539A (ja) 二次元dct演算装置
JP2725544B2 (ja) Dct及び逆dct演算装置並びにその演算方法
CN112639836A (zh) 数据处理装置、电子设备和数据处理方法
EP0655694B1 (en) Discrete cosine transform processor
JPH09259115A (ja) ビット−シリアルマトリックス転置のための超大規模集積回路
CN115033843A (zh) 基于三角脉动阵列的协方差矩阵计算的电路实现方法
JP2822684B2 (ja) 離散コサイン変換装置および逆離散コサイン変換装置
JP2901896B2 (ja) 直交変換プロセッサ
JPH05174046A (ja) 演算回路
KR100202567B1 (ko) 고속 역이산 코사인변환 연산장치
JP2864597B2 (ja) ディジタル演算回路
JPH05153402A (ja) 離散コサイン変換器
JP3396818B2 (ja) Dct演算回路及びidct演算回路
EP0321584A1 (en) System for calculating sum of products
JP3575991B2 (ja) 直交変換回路
JP2000137703A (ja) 離散コサイン変換装置及び逆離散コサイン変換装置
Mohanty et al. Bit-serial systolic architecture for 2-D non-separable discrete wavelet transform
JP2001067338A (ja) 高速たたみ込み演算方式とその演算器および高速補間方式と高速補間器
KR940007569B1 (ko) 행렬 곱셈 회로
JPH0773161A (ja) 演算装置