JPH1166045A - 乗算器 - Google Patents

乗算器

Info

Publication number
JPH1166045A
JPH1166045A JP9242037A JP24203797A JPH1166045A JP H1166045 A JPH1166045 A JP H1166045A JP 9242037 A JP9242037 A JP 9242037A JP 24203797 A JP24203797 A JP 24203797A JP H1166045 A JPH1166045 A JP H1166045A
Authority
JP
Japan
Prior art keywords
output
bits
bit
xmultia
outputs
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
JP9242037A
Other languages
English (en)
Inventor
Kentaro Yamaguchi
賢太郎 山口
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP9242037A priority Critical patent/JPH1166045A/ja
Publication of JPH1166045A publication Critical patent/JPH1166045A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【解決手段】 入力データを所定ビットずつシフトする
シフタ群1から12と、これらのシフタ群の出力を乗算
係数で指定された組み合わせで加算する加算器群31か
ら35を備える。実在する全ての乗算係数を使用して乗
算を行った場合に、所定の乗算係数を使用すると最大数
のシフタの出力を加算処理するとき、その加算処理に必
要な数の加算器を配置する。 【効果】 従来の16bit×8bit乗算器と同数の加算器と
加算段数で、入力される16bitのデータに対し、DCT/IDC
T用の12bit係数や、あるいは、任意の8bitで表される係
数を併用して誤差無く乗算できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、乗算係数の数や種
類が限定されているようなディジタル信号の乗算処理
を、少量のハードウェアを用いて高速に効率よく演算処
理する乗算器に関する。
【0002】
【従来の技術】ディジタル信号を乗算処理する従来の乗
算器は、多数のシフタと加算器とを組み合わせて構成さ
れる。具体的な演算処理内容は後で詳細に紹介するが、
入力ディジタル信号に所定の係数を乗算する場合には、
入力ディジタル信号の各ビットを所定ビットずつシフト
して、乗算係数の内容に応じた加算処理を実行する。従
って、例えば16ビットのデータに8ビットの係数を乗
算する場合には、7回の加算のために7個の加算器が必
要になる。また、例えば16ビットのデータに12ビッ
トの係数を乗算する場合には、11回の加算のために1
1個の加算器が必要になる。
【0003】
【発明が解決しようとする課題】ところで、上記のよう
な従来の乗算器には、次のような解決すべき課題があっ
た。例えば画像データの圧縮伸長処理の際に行われるDC
T(離散コサイン変換)やIDCT(逆離散コサイン変換)
演算処理では、高精度な乗算係数が必要になり、多数の
加算器が要求される。従って、ハードウェアが複雑化
し、実行速度が遅くなり、大きな消費電力を必要とする
という問題があった。しかしながら、DCTとIDCTの乗算
係数は、ビット数は12ビットでも、その種類は7種類
しか存在しない。にもかかわらず従来の乗算器は、全て
の12bit乗算係数に対応しているため、冗長であり、ハ
ードウェア資源と実行速度、消費電力の点から無駄が多
いと考えられる。即ち、乗算係数の数や種類が限定され
ているような乗算処理の場合に、より効率よく演算を実
行する乗算器の開発が望まれていた。
【0004】
【課題を解決するための手段】本発明は以上の点を解決
するため次の構成を採用する。 〈構成1〉入力データを所定ビットずつシフトするシフ
タ群と、これらのシフタ群の出力を乗算係数で指定され
た組み合わせで加算する加算器群とを備え、実在する全
ての乗算係数を使用して乗算を行った場合に、所定の乗
算係数を使用すると最大数のシフタの出力を加算処理す
るとき、その加算処理に必要な数の加算器を各シフタの
出力側に配置し、実在する全ての乗算係数を使用して乗
算を行った場合に、同時にその出力を使用しないシフタ
の組み合わせを選択して、これらのシフタの出力を論理
和ゲートを介していずれかの加算器に入力することを特
徴とする乗算器。
【0005】〈構成2〉構成1に記載の乗算器におい
て、同一のシフト数を持つシフタを2個以上組み合わせ
て加算器群を構成したことを特徴とする乗算器。
【0006】〈構成3〉構成1に記載の乗算器におい
て、シフタ群の出力を一括して許容精度の範囲でシフト
させたことを特徴とする乗算器。
【0007】〈構成4〉構成1に記載の乗算器におい
て、入力データが2の補数で表記されたものである場合
に、加算器の入力の一方が負で、もう一方が0のとき、
符号を強制的に負にする符号補正回路を付加したことを
特徴とする乗算器。
【0008】〈構成5〉構成1に記載の乗算器におい
て、入力データのビット数と同じビット数を出力する四
捨五入回路を設けたことを特徴とする乗算器。
【0009】〈構成6〉構成1から5に記載の乗算器に
おいて、同一構成の回路で、それぞれ異なるビット数の
乗算係数を併用して、DCTとIDCT演算処理を実行するこ
とを特徴とする画像信号処理用の乗算器。
【0010】
【発明の実施の形態】以下、本発明の実施の形態を具体
例を用いて説明する。 〈具体例1〉図1は、具体例1の16bit×12bit乗算器の
結線図を示す。この説明に入る前に、基本的な乗算器の
構成や動作について説明する。図2に、比較例として、
従来の16bit×8bit乗算器の結線図を示す。201から207
は、シフタである。209から218は、バススイッチであ
る。217から222は加算器である。224は四捨五入回路で
ある。入力される16bitのデータをX、8bitの乗数をY、Y
の各bitを上位からy7、y6、y5、y4、y3、y2、y1、y0と
すると、16bit×8bit乗算は下式で表せる。 (X<<7)×y7+(X<<6)×y6+(X<<5)×y5+(X<<4)×y4+(X
<<3)×y3+(X<<2)×y2+(X<<1)×y1+X×y0
【0011】なお、(X<<7)は、Xを7ビット上位側へシ
フトすることを示す。これは即ち、Xを0〜7bitシフトさ
せたものをYの該当bitでON/OFFし、それぞれを加算した
ものである。この式で明らかなように、この演算を行う
には7回の加算が必要で、全加算を同時に実行する場
合、図のように7つの加算器を3段に分けて実行する。
図3にはこの乗算器の具体的な演算処理内容の説明図を
示す。この図に示すように、入力データはそれぞれ1ビ
ットから7ビットまでシフトされて、乗算係数の対応す
るビットと乗算される。各ビットは1または0だから、
シフトしたデータを有効にするか無効にするかの選択の
みとなる。その結果を全て加算すれば、求める乗算結果
が得られる。
【0012】図4に、比較例として、従来の16bit×12b
it乗算器の結線図を示す。入力される16bitのデータを
X、12bitの乗数をY、Yの各bitを上位からy11、y10、y
9、y8、y7、y6、y5、y4、y3、y2、y1、y0とすると、16b
it×12bitの乗算は下式で表せる。 (X<<11)×y11+(X<<10)×y10+(X<<9)×y9+(X<<8)×y8
+(X<<7)×y7+(X<<6)×y6+(X<<5)×y5+(X<<4)×y4+
(X<<3)×y3+(X<<2)×y2+(X<<1)×y1+X×y0 これは即ち、Xを0〜11bitシフトさせたものをYの該当bi
tでON/OFFし、それぞれを加算したものである。この式
で明らかなようにこの演算を行うには11回の加算が必要
で、全加算を同時に実行する場合、図のように11個の加
算器を4段に分けて実行する。このように乗算係数のビ
ット数が増えれば加算器の数がそれに伴って増加する。
この発明は、DCT(離散コサイン変換)、IDCT(逆離散コサ
イン変換)の計算のように、乗算係数の種類が限定され
ているような場合に、この乗算器の数を減少させる。例
えば、16bit×8bitと同じ加算器数、加算段数の乗算器
で、16bit×12bit相当の演算が行えるようにした。
【0013】〈具体例1の構成〉再び図1に戻って、こ
の乗算器は、IN[15:0]の入力データにXMULTIA[12:0]で
指定される乗算係数を乗算し、結果の上位16bitを四捨
五入したものを出力する装置である。シフタ1は11bit左
シフタである。n bitのシフタとは、入力された16bitデ
ータの下位bitにn bitの0を付加し、16+n bitのデータ
として出力するものである。即ち、入力されたデータX
に対し、X<<nを出力する。
【0014】図5には、11bitシフタの構造を示す。こ
の出力は全部で27bitで、図1に示した出力側のバスス
イッチ13に向けて出力される。
【0015】図1に示したシフタ2〜12もシフタ1と同
様の左シフタである。シフタ2は2bit、シフタ3は10bi
t、シフタ4は9bit、シフタ5は8bit、シフタ6は7bit、シ
フタ7は1bit、シフタ8は6bit、シフタ9は5bit、シフタ1
0は3bit、シフタ11は4bit、シフタ12は2bitの左シフタ
で、それぞれ18、26、25、24、23、17、22、21、19、2
0、18bitを出力する。各出力はそれぞれバススイッチ1
4、15、16、17、18、19、20、22、23、24、25に接続さ
れる。
【0016】図1に示した13〜25はバススイッチであ
る。動作としては入力A、出力Q、スイッチ信号Sに対
し、S = 1の時、QはAをそのまま出力し、S = 0の時、Q
の全てのbitを0として出力する。これは例えばアンド
ゲートから構成される。13は、XMULTIA[0]が1の時1の
出力をそのまま出力し、0の時は0を出力する。14は、X
MULTIA[1]が1の時2の出力をそのまま出力し、0の時は
0を出力する。15は、XMULTIA[2]が1の時3の出力をそ
のまま出力し、0の時は0を出力する。16は、XMULTIA
[3]が1の時4の出力をそのまま出力し、0の時は0を出
力する。17は、XMULTIA[4]が1の時5の出力をそのまま
出力し、0の時は0を出力する。18は、XMULTIA[5]が1
の時6の出力をそのまま出力し、0の時は0を出力する。
19は、XMULTIA[6]が1の時7の出力をそのまま出力し、0
の時は0を出力する。20は、XMULTIA[7]が1の時8の出
力をそのまま出力し、0の時は0を出力する。21は、XMU
LTIA[8]が1の時IN[15:0]をそのまま出力し、0の時は0
を出力する。22は、XMULTIA[9]が1の時9の出力をその
まま出力し、0の時は0を出力する。23は、XMULTIA[10]
が1の時10の出力をそのまま出力し、0の時は0を出力
する。24は、XMULTIA[11]が1の時11の出力をそのまま
出力し、0の時は0を出力する。25は、XMULTIA[12]が1
の時12の出力をそのまま出力し、0の時は0を出力す
る。
【0017】ゲート26〜30は、入力される2つのデータ
を処理し、各bit毎に論理和を取り出力する回路であ
る。2つの入力データのうち、bit数の少ない方は対応
する桁を位置合わせして符号拡張によって多い方のbit
数に揃える。ゲート26は、27bitのバススイッチ13の出
力と18bitのバススイッチ14の出力を、下位詰めで桁を
揃えて、互いの同じbit位置にあるデータ同士の論理和
を出力する。バススイッチ14の出力がバススイッチ13の
出力より9bit少ないので、バススイッチ14の出力の最上
位bitを分配して足りないbitを補完し(符号拡張)、バス
スイッチ13の出力bit数である27bitに揃える。ゲート27
〜30についても同様である。
【0018】ゲート27は、バススイッチ18の出力23bit
と、バススイッチ19の出力17bitを符号拡張し23bitにし
たものを同位のbit同士論理和して出力する。ゲート28
は、バススイッチ20の出力22bitと、INより入力される1
6bitを符号拡張し22bitにしたものを同位のbit同士論理
和して出力する。ゲート29は、バススイッチ22の出力21
bitと、バススイッチ23の出力19bitを符号拡張し21bit
にしたものを同位のbit同士論理和して出力する。ゲー
ト30は、バススイッチ24の出力20bitと、バススイッチ2
5の出力18bitを符号拡張し20bitにしたものを同位のbit
同士論理和して出力する。
【0019】31〜37は加算器である。2つの入力データ
同士を加算して出力する。2つの入力データのうち、bi
t数の少ない方は多い方のbit数に揃えるため符号拡張を
行う。加算器31はゲート26の出力27bitと、シフタ3の出
力26bitを加算する。この時、バススイッチ15の出力は
バススイッチ16の出力より1bit少ないので、バススイッ
チ15の出力の最上位bitを2分配し、分けたうちの1本
を足りないbitに割り当てる。そして27bit同士を加算
し、加算結果28bitを出力する。加算器32〜37も同様で
ある。加算器32は、加算器31の出力28bitと加算器33の
出力26bitを加算する。加算器33の出力を28bitに符号拡
張し、28bit同士を加算する。出力は29bitになるが最上
位の1bitは捨てて下位の28bitのみを出力する。これ
は、本演算器が16bit×12bitの演算器であり、最終的な
計算結果が必ず28bit以内となるので、途中の計算結果
も必ず28bit以内であるためである。
【0020】加算器33は、バススイッチ16の出力25bit
とバススイッチ17の出力24bitを加算する。バススイッ
チ17の出力を25bitに符号拡張し、25bit同士を加算す
る。そして加算結果26bitを出力する。加算器34は、加
算器27の出力23bitと加算器28の出力22bitを加算する。
加算器28の出力を23bitに符号拡張し、23bit同士を加算
する。そして加算結果24bitを出力する。加算器35は、
加算器34の出力24bitと加算器36の出力22bitを加算す
る。加算器36の出力を24bitに符号拡張し、24bit同士を
加算する。そして加算結果24bitを出力する。
【0021】これは、7bit左シフト〜0bitシフトまでを
順に足した、X<<7+ X<<6+ X<<5+ X<<4+ X<<3+ X<<2+ X<
<1+ X は、Xが最大の16bit数1111111111111111の場合
も111111101111111100000001となって24bitに納まるた
めである。加算器36は、加算器29の出力21bitと加算器3
0の出力20bitを加算する。加算器30の出力を21bitに符
号拡張し、21bit同士を加算する。そして加算結果22bit
を出力する。加算器37は、加算器32の出力28bitと加算
器35の出力24bitを加算する。加算器35の出力を28bitに
符号拡張し、28bit同士を加算する。出力は29bitになる
が最上位の1bitは捨てて下位の28bitのみを出力する。
これは、本演算器が16bit×12bitの演算器であり、計算
結果の出力が必ず28bit以内となるので、途中の計算結
果も必ず28bit以内に納まるためである。
【0022】加算器38は四捨五入回路である。図6に四
捨五入回路の構造を示す。101は、RINから入る28bitの
上位17bitに100から出力された1又は0を加算し、18bit
を出力する加算器である。100は、RIN[27]が1でかつRI
N[11:0]が100000000000であるときのみ0をその他の場合
1を出力するNAND回路である。これにより、28bitのデー
タの上位16bitが四捨五入されたデータとして出力され
る。
【0023】〈具体例1の動作〉次に、以上の乗算器の
動作について説明する。図7に、DCT/IDCT 演
算の係数内容説明図を示す。(a)には、8×1の入力行
列に対し、DCT演算を行う例を示す。8×8の入力行列に
対しDCT演算を行うには、この演算を8回繰り返せばよ
い。また、(b)には、8×1の入力行列に対し、IDCT演
算を行う例を以下に示す。8×8の入力行列に対しIDCTを
行うには、この演算を8回繰り返せばよい。ここで、A
〜Hは入力された8個のデータ、 x0〜 x7はDCT/IDCTの
演算結果である。即ち、DCT/IDCTでは、 C0〜C7の7種
類の係数を乗数とする乗算ができれば良い。C0〜C7は演
算の定数である。その内容を図7(c)に示す。C0〜C7
はこのままでは小数点を含む値になる。そこで、C0〜C7
を4096倍し、12bitの2進数で記述すると図7(d)のよ
うになる。
【0024】本発明の乗算器は、正整数の任意の16bi
t入力データに、DCT/IDCTで用いる7種の12bit係数ある
いは任意の8bit係数を掛け合わせることができる。図8
には、16bitの入力データX、に対し、C0を乗する場合の
計算例説明図を示す。今、図1の回路において、XMULTI
A[12:0] = 0100010011001、即ちXMULTIA[0]、XMULTIA
[3]、XMULTIA[4]、XMULTIA[7]、XMULTIA[11]が1、残り
が0の時、13、16、17、20、24のバススイッチの制御信
号が1となる。したがって各バススイッチ13、16、17、2
0、24から、11bit左シフタ出力、9bit左シフタ出力、8b
it左シフタ出力、6bit左シフタ出力、4bit左シフタ出力
のデータがそれぞれ出力される。これはX<<11+ X<<9+ X
<<8+ X<<6+ X<<4を計算すること、即ちX×C0を計算する
ことと等価である。
【0025】XMULTIA[12:0] = 0101100111101、即ちXMU
LTIA[0] 、XMULTIA[2] 、XMULTIA[3]、XMULTIA[4]、 XM
ULTIA[5]、XMULTIA[8]、XMULTIA[9]、XMULTIA[11]が
1、残りが0の時、13、15、16、17、18、21、22のバス
スイッチの制御信号が1となる。従って、各バススイッ
チ13、15、16、17、18、21、22から、11bit左シフタ出
力、10bit左シフタ出力、9bit左シフタ出力、8bit左シ
フタ出力、7bit左シフタ出力、5bit左シフタ出力、4bit
左シフタ出力、入力データそのまま、のデータがそれぞ
れ出力される。これはX<<11+ X<<10+ X<<9+ X<<8+ X<<7
+ X<<5+ X<<4+ Xを計算すること、即ちX×C1を計算する
ことと等価である。
【0026】XMULTIA[12:0] = 0010010101101、即ちXMU
LTIA[0] 、XMULTIA[2] 、XMULTIA[3]、XMULTIA[5]、 XM
ULTIA[7]、XMULTIA[10]が1、残りが0の時、13、15、1
6、18、20、23のバススイッチの制御信号が1となる。従
って各バススイッチ13、15、16、18、20、23から、11bi
t左シフタ出力、10bit左シフタ出力、9bit左シフタ出
力、7bit左シフタ出力、6bit左シフタ出力、3bit左シフ
タ出力、のデータがそれぞれ出力される。これはX<<11+
X<<10+ X<<9+ X<<7+ X<<6+ X<<3を計算すること、即ち
X×C2を計算することと等価である。
【0027】XMULTIA[12:0] = 1010011010101、即ちXMU
LTIA[0] 、XMULTIA[2] 、XMULTIA[4]、XMULTIA[6]、 XM
ULTIA[7] 、XMULTIA[11]、XMULTIA[12]が1、残りが0
の時、13、15、17、19、20、23、25のバススイッチの制
御信号が1となる。各バススイッチ13、15、17、19、2
0、23、25から、11bit左シフタ出力、10bit左シフタ出
力、8bit左シフタ出力、6bit左シフタ出力、3bit左シフ
タ出力、2bit左シフタ出力、1bit左シフタ出力、のデー
タがそれぞれ出力される。これはX<<11+ X<<10+X<<8+ X
<<6+ X<<3+ X<<2+ X<<1を計算すること、即ちX×C3を計
算することと等価である。
【0028】XMULTIA[12:0] = 1001010100001、即ちXMU
LTIA[0]、XMULTIA[5]、XMULTIA[7]、XMULTIA[9]、 XMUL
TIA[12]が1、残りが0の時、13、18、20、22、25のバ
ススイッチの制御信号が1となる。各バススイッチ13、1
8、20、22、25から、11bit左シフタ出力、7bit左シフタ
出力、6bit左シフタ出力、5bit左シフタ出力、2bit左シ
フタ出力、のデータがそれぞれ出力される。これはX<<1
1+ X<<7+ X<<6+ X<<5+X<<2を計算すること、即ちX×C5
を計算することと等価である。
【0029】XMULTIA[12:0] = 0100101001110、即ちXMU
LTIA[1]、XMULTIA[2]、XMULTIA[3]、XMULTIA[6]、 XMUL
TIA[8]、 XMULTIA[10]、 XMULTIA[11]が1、残りが0の
時、14、15、16、19、21、23、24のバススイッチの制御
信号が1となる。各バススイッチ14、15、16、19、21、2
3、24から、10bit左シフタ出力、9bit左シフタ出力、4b
it左シフタ出力、3bit左シフタ出力、2bit左シフタ出
力、1bit左シフタ出力、入力データそのままのデータが
それぞれ出力される。これはX<<10+ X<<9+ X<<4+ X<<3+
X<<2+ X<<1+ Xを計算すること、即ちX×C6を計算する
ことと等価である。
【0030】XMULTIA[12:0] = 0100101011010、即ちXMU
LTIA[1]、XMULTIA[3]、XMULTIA[4]、XMULTIA[6]、 XMUL
TIA[8]、 XMULTIA[10]、 XMULTIA[11]が1、残りが0の
時、14、16、17、19、21、23、24のバススイッチの制御
信号が1となる。各バススイッチ14、16、17、19、21、2
3、24から、9bit左シフタ出力、8bit左シフタ出力、4bi
t左シフタ出力、3bit左シフタ出力、2bit左シフタ出
力、1bit左シフタ出力、入力データそのままのデータが
それぞれ出力される。これはX<<9+ X<<8+ X<<4+ X<<3+
X<<2+ X<<1+ Xを計算すること、即ちX×C7を計算するこ
とと等価である。
【0031】以上により、 XMULTIA[12:0]が0100010011
001、0101100111101、0010010101101、1010011010101、
1001010100001、0100101011010、0100101011010の時、
入力データに対しC0(=C4)、C1、C2、C3、C4、C5、C6、C
7の4096倍を掛けたに等しいデータが加算器37より出力
される。この結果はOUT2[27:0]に出力される。加算器37
の出力28bitは、四捨五入回路38に入力し、四捨五入し
た結果の上位16bitが出力される。これは12bit分右にシ
フトされたことになるので4096で除算されたことにな
り、四捨五入回路38の出力は入力にC0(=C4)、C1、C2、C
3、C4、C5、C6、C7を掛けた結果がになる。
【0032】次にXMULTIA[12:0]が0101010111101、 即
ちXMULTIA[0]、XMULTIA[2]、XMULTIA[3]、XMULTIA[4]、
XMULTIA[5]、 XMULTIA[7]、 XMULTIA[9]、 XMULTIA[1
1]が1、残りが0の時、13、15、16、17、18、20、22、
24のバススイッチの制御信号が1となる。各バススイッ
チ13、15、16、17、18、20、22、24から11bit左シフタ
出力、10bit左シフタ出力、9bit左シフタ出力、8bit左
シフタ出力、7bit左シフタ出力、6bit左シフタ出力、5b
it左シフタ出力、4bit左シフタ出力、のデータがそれぞ
れ出力される。これはX<<11 + X<<10 + X<<9 + X<<8 +
X<<7 + X<<6 + X<<5 + X<<4 = (X<<7 + X<<6 + X<<5 +
X<<4 + X<<3 + X<<2 + X<<1 + X)×16を計算するこ
と、即ちX×'11111111'(2進数)×16を計算することと等
価である。
【0033】乗数'11111111'の各bitは、上位よりXMULT
IA[0]、XMULTIA[2]、XMULTIA[3]、XMULTIA[4]、 XMULTI
A[5]、 XMULTIA[7]、 XMULTIA[9]、 XMULTIA[11]で自由
な組み合わせでON/OFFできるため、乗数は'00000000'
〜'11111111'までの任意の値を設定することができる。
この結果はOUT2[27:0]から取り出せる。乗算結果は16倍
されているので、OUT2[27:4]の24bitを抽出すればX×
(任意の8bit正整数)の結果が取り出せる。また、四捨五
入回路38は加算器37出力の上位16bitを四捨五入して出
力するため、乗数の数値としては、[0〜255の任意の整
数]×16/4096 = [0〜255の任意の整数]/256 となる。こ
の結果であるOUT[15:0]は、8bitで表される任意の小数
[0〜255の任意の整数]/256を乗算したことになる。
【0034】上記のように、この乗算器は、入力データ
を所定ビットずつシフトするシフタ群と、これらのシフ
タ群の出力を乗算係数で指定された組み合わせで加算す
る加算器群とを備える。そして、実在する全ての乗算係
数を使用して乗算を行った場合に、所定の乗算係数を使
用すると最大数のシフタの出力を加算処理するとき、そ
の加算処理に必要な数の加算器を各シフタの出力側に配
置する。上記の例では、乗算係数のうちの“1”の数
が、加算対象となるシフタの最大数で、8個である。加
算器の数は、加算回数に相当するから8から1を差し引
いた7となる。
【0035】さらに、実在する全ての乗算係数を使用し
て乗算を行った場合に、同時にその出力を使用しないシ
フタの組み合わせを選択して、これらのシフタの出力を
論理和ゲートを介していずれかの加算器に入力する。こ
の組み合わせ選択の際には、上記の例のように、同一の
シフト数を持つシフタを2個以上使用してもよい。こう
することにより、組み合わせの自由度が高まり、様々な
乗算係数を使用した場合に、加算器を最小限にすること
が可能になる。これにより、乗算係数のビット数よりも
十分少ない数の加算器を使用した乗算器が実現する。
【0036】〈具体例1の効果〉以上により本発明は、
従来の16bit×8bit乗算器と同数の加算器と加算段数
で、入力される16bitのデータに対し、DCT/IDCT用の12b
it係数や、あるいは、任意の8bitで表される係数を併用
して誤差無く乗算できる。これにより、回路規模を小さ
く、速度を速く、消費電力も小さくできる。
【0037】〈具体例2〉図9は、具体例2の乗算器を
示すブロック図である。この回路は、IN[15:0]の入力を
XMULTIA[12:0]の組み合わせで指定される乗算係数で乗
算し、上位16bitを四捨五入して出力する。ただし、一
般にDCT/IDCTで許される誤差を考慮し、加算器のbit等
を減らし、回路規模及び消費電力を更に節約する。
【0038】〈具体例2の構成〉図9において、シフタ
51は4bit左シフタである。出力は20bitで、バススイッ
チ64に接続される。53〜56もシフタ51と同様の左シフタ
である。 53は3bit、54は2bit、55は1bit、56は3bitの
左シフタで、それぞれ19bit、18bit、17bit、19bitを出
力する。それぞれバススイッチ66、67、68、69に接続さ
れる。
【0039】シフタ52は5bit右シフタである。図10
に、5bit右シフタの内部構造を示す。右シフタは、シフ
トアウトした下位のbitは捨てる。出力は11bitで、バス
スイッチ64に接続される。シフタ57〜63もシフタ52同様
の右シフタで、シフタ57は6bit、シフタ58は1bit、シフ
タ59は7bit、60は2bit、61は4bit、62は3bit、63は5bit
の右シフタで、57は10bit、58は15bit、59は9bit、60は
14bit、61は12bit、62は13bit、63は11bitを出力する。
それぞれバススイッチ71〜77に接続される。
【0040】64〜77はバススイッチである。動作は具体
例1のバススイッチと同様である。バススイッチ64は、
XMULTIA[0]が1の時シフタ51の出力をそのまま出力し、
0の時は0を出力する。バススイッチ65は、XMULTIA[1]
が1の時シフタ52の出力をそのまま出力し、0の時は0
を出力する。バススイッチ66は、XMULTIA[2]が1の時シ
フタ53の出力をそのまま出力し、0の時は0を出力す
る。バススイッチ67は、XMULTIA[3]が1の時シフタ54の
出力をそのまま出力し、0の時は0を出力する。バスス
イッチ68は、XMULTIA[4]が1の時シフタ55の出力をその
まま出力し、0の時は0を出力する。バススイッチ69
は、XMULTIA[5]が1の時シフタ56の出力をそのまま出力
し、0の時は0を出力する。
【0041】バススイッチ70は、XMULTIA[5]が1の時IN
[15:0]をそのまま出力し、0の時は0を出力する。バス
スイッチ71は、XMULTIA[6]が1の時シフタ57の出力をそ
のまま出力し、0の時は0を出力する。バススイッチ72
は、XMULTIA[7]が1の時シフタ58の出力をそのまま出力
し、0の時は0を出力する。バススイッチ73は、XMULTIA
[8]が1の時シフタ59の出力をそのまま出力し、0の時は
0を出力する。バススイッチ74は、XMULTIA[9]が1の時
シフタ60の出力をそのまま出力し、0の時は0を出力す
る。バススイッチ75は、XMULTIA[10]が1の時シフタ61
の出力をそのまま出力し、0の時は0を出力する。バス
スイッチ76は、XMULTIA[11]が1の時シフタ62の出力を
そのまま出力し、0の時は0を出力する。バススイッチ7
7は、XMULTIA[12]が1の時シフタ63の出力をそのまま出
力し、0の時は0を出力する。
【0042】78〜83は、入力される2つのデータを、各
bit毎に論理和を取り出力する回路である。2つの入力
データは、既に同じbit数に揃えられている。78は20bi
t、79は16bit、80は15bit、81は14bit、82は13bit、83
は13bitのORゲートである。84〜90は加算器である。2
つの入力データ同士を加算して出力する。2つの入力デ
ータは、既に同じbit数に揃えられている。加算器84は2
0bit同士を加算し、21bitを出力する。加算器85は21bit
同士を加算し、22bitを出力する。加算器86は17bit同士
を加算し、18bitを出力する。加算器87は16bit同士を加
算し、17bitを出力する。加算器88は17bit同士を加算
し、18bitを出力する。加算器89は14bit同士を加算し、
15bitを出力する。加算器90は22bit同士を加算し、上位
1bitを捨てて22bitを出力する。91は四捨五入回路であ
る。加算器90の出力の下位6bitに0を付加し28bitとした
時、具体例1で用いた回路と同様である。 22bitのデー
タの上位16bitが四捨五入されたデータとして出力され
る。
【0043】〈具体例2の動作〉具体例2の動作につい
て以下に説明する。具体例1と同様に、C0〜C7の4096倍
の12bit係数を乗することを考える。本発明の乗算器
は、正整数の任意の16bit入力データに、誤差の少な
いDCT/IDCTで用いる7種の12bit係数による乗算と、任
意の8bit係数との乗算を行うことができる。図9の回路
は、具体例1の回路よりシフタの出力を全て7bitだけ右
にシフトしてある。つまり、図1のシフタ1の11bit左シ
フトは、図9ではシフタ51の4bit左シフトになってい
る。
【0044】今、図9の回路において、XMULTIA[12:0]
= 0100010011001、即ちXMULTIA[0]、XMULTIA[3]、XMULT
IA[4]、XMULTIA[7]、XMULTIA[11]が1、残りが0の時、
64、67、68、72、76のバススイッチの制御信号が1とな
る。各バススイッチ64、67、68、72、76から、4bit左シ
フタ出力、2bit左シフタ出力、1bit左シフタ出力、1bit
右シフタ出力、3bit右シフタ出力のデータがそれぞれが
出力される。これはX<<4+ X<<2+ X<<1+ X>>1+ X>>3を計
算することである。これは、(X<<11+ X<<9+X<<8+ X<<6+
X<<4)>>7にほぼ等しい。即ちX×C0を計算することと殆
ど等価である。ここでの誤差の最大は、入力値Xの全bit
が全て1の時の((X<<4+ X<<2+ X<<1+X>>1+ X>>3)×128 -
(X<<11+ X<<9+ X<<8+ X<<6+ X<<4)>>7) = -176の8bit
値なので、精度は28bit中20bitである。
【0045】XMULTIA[12:0] = 0101100111101、即ちXMU
LTIA[0] 、XMULTIA[2] 、XMULTIA[3]、XMULTIA[4]、 XM
ULTIA[5]、XMULTIA[8]、XMULTIA[9]、XMULTIA[11]が
1、残りが0の時、64、66、67、68、70、73、74のバス
スイッチの制御信号が1となる。各バススイッチ64、6
6、67、68、70、73、74から、4bit左シフタ出力、3bit
左シフタ出力、2bit左シフタ出力、1bit左シフタ出力、
入力データそのまま、2bit右シフタ出力、3bit右シフタ
出力のデータがそれぞれが出力される。これはX<<4+ X<
<3+ X<<2+ X<<1+ X+ X>>2+ X>>3を計算することであ
る。これは、(X<<11+ X<<10+ X<<9+ X<<8+ X<<7+ X<<5+
X<<4+ X)>>7にほぼ等しい。即ちX×C1を計算すること
と殆ど等価である。ここでの誤差の最大は、入力値Xの
全bitが全て1の時の((X<<4+ X<<3+ X<<2+ X<<1+ X+ X>>
2+ X>>3)×128 - (X<<11+ X<<10+ X<<9+ X<<8+ X<<7+ X
<<5+ X<<4)= -208の8bit値なので、精度は28bit中20bit
である。
【0046】XMULTIA[12:0] = 0010010101101、即ちXMU
LTIA[0] 、XMULTIA[2] 、XMULTIA[3]、XMULTIA[5]、 XM
ULTIA[7]、XMULTIA[10]が1、残りが0の時、64、66、6
7、70、72、75のバススイッチの制御信号が1となる。各
バススイッチ64、66、67、70、72、75から、4bit左シフ
タ出力、3bit左シフタ出力、2bit左シフタ出力、入力デ
ータそのまま、1bit右シフタ出力、4bit右シフタ出力、
のデータがそれぞれが出力される。これはX<<4 + X<<3
+ X<<2 + X + X>>1 + X>> 4を計算することである。こ
れは(X<<11+ X<<10+ X<<9+ X<<7+ X<<6+ X<<3)>>7にほ
ぼ等しい。即ちX×C2を計算することと殆ど等価であ
る。ここでの誤差の最大は、入力値Xの全bitが全て1の
時の((X<<4 + X<<3 + X<<2 + X + X>>1 + X >> 4)×128
- (X<<11+ X<<10+ X<<9+ X<<7+ X<<6+ X<<3) = -184の
8bit値なので、精度は28bit中20bitである。
【0047】XMULTIA[12:0] = 1010011010101、即ちXMU
LTIA[0]、XMULTIA[2]、XMULTIA[4]、XMULTIA[6]、 XMUL
TIA[7] 、XMULTIA[11]、XMULTIA[12]が1、残りが0の
時、64、66、68、72、71、75、77、のバススイッチの制
御信号が1となる。各バススイッチから、4bit左シフタ
出力、3bit左シフタ出力、1bit左シフタ出力、1bit右シ
フタ出力、4bit右シフタ出力、5bit右シフタ出力、6bit
右シフタ出力、のデータがそれぞれが出力される。これ
はX<<4+ X<<3+ X<<1+ X>>1+ X>>4+ X>>5+ X>>6を計算す
ることである。これは(X<<11+ X<<10+ X<<8+ X<<6+ X<<
3+ X<<2+ X<<1)にほぼ等しい。即ちX×C3を計算するこ
とと殆ど等価である。ここでの誤差の最大は、入力値X
の全bitが全て1の時の((X<<4+ X<<3+ X<<1+ X>>1+ X>>4
+ X>>5+ X>>6)×128 - (X<<11+ X<<10+ X<<8+ X<<6+ X<
<3+ X<<2+ X<<1) = -434の9bit値なので、精度は28bit
中19bitである。
【0048】XMULTIA[12:0] = 1001010100001、即ちXMU
LTIA[0]、XMULTIA[5]、XMULTIA[7]、XMULTIA[9]、 XMUL
TIA[12]が1、残りが0の時、64、70、72、74、77のバ
ススイッチの制御信号が1となる。各バススイッチ64、7
0、72、74、77から、4bit左シフタ出力、入力データを
そのまま出力、1bit右シフタ出力、2bit右シフタ出力、
5bit右シフタ出力、のデータがそれぞれが出力される。
これはX<<4+ X+ X>>1+X>>2+ X>>5を計算することであ
る。これは、(X<<11+ X<<7+ X<<6+ X<<5+ X<<2)>>7にほ
ぼ等しい。即ちX×C5を計算することと殆ど等価であ
る。ここでの誤差の最大は、入力値Xの全bitが全て1の
時の((X<<4+ X+ X>>1+ X>>2+ X>>5)×128 - (X<<11+ X<
<7+ X<<6+ X<<5+ X<<2) = -284の9bit値なので、精度は
28bit中19bitである。
【0049】XMULTIA[12:0] = 0100101001110、即ちXMU
LTIA[1]、XMULTIA[2]、XMULTIA[3]、XMULTIA[6]、 XMUL
TIA[8]、 XMULTIA[10]、 XMULTIA[11]が1、残りが0の
時、66、67、76、75、77、71、73のバススイッチの制御
信号が1となる。各バススイッチ66、67、76、75、77、7
1、73から、3bit左シフタ出力、2bit左シフタ出力、3bi
t右シフタ出力、4bit右シフタ出力、5bit右シフタ出
力、6bit右シフタ出力、7bit右シフタ出力、のデータが
それぞれが出力される。これはX<<3+ X<<2+ X>>3+ X>>4
+ X>>5+ X>>6+ X>>7を計算することである。これは(X<<
10+ X<<9+ X<<4+ X<<3+ X<<2+ X<<1+ X)>>7にほぼ等し
い。即ちX×C6を計算することと殆ど等価である。ここ
での誤差の最大は、入力値Xの全bitが全て1の時の((X<<
3+ X<<2+ X>>3+ X>>4+ X>>5+ X>>6+ X>>7)×128-(X<<10
+ X<<9+ X<<4+ X<<3+ X<<2+ X<<1+X)>>7) = -609の10bi
t値なので、精度は28bit中18bitである。
【0050】XMULTIA[12:0] = 0100101011010、即ちXMU
LTIA[1]、XMULTIA[3]、XMULTIA[4]、XMULTIA[6]、 XMUL
TIA[8]、 XMULTIA[10]、 XMULTIA[11]が1、残りが0の
時、67、68、76、75、77、71、73のバススイッチのSが1
となる。各バススイッチから、2bit左シフタ出力、1bit
左シフタ出力、3bit右シフタ出力、4bit右シフタ出力、
5bit右シフタ出力、6bit右シフタ出力、7bit右シフタ出
力、のデータがそれぞれが出力される。これはX<<2+ X<
<1+ X>>3+ X>>4+ X>>5+ X>>6+ X>>7を計算することであ
る。これは(X<<9+ X<<8+ X<<4+ X<<3+ X<<2+ X<<1+ X)
にほぼ等しい。即ちX×C7を計算することと殆ど等価で
ある。ここでの誤差の最大は、入力値Xの全bitが全て1
の時の((X<<2+ X<<1+ X>>3+ X>>4+ X>>5+ X>>6+ X>>7)
×128-(X<<9+ X<<8+ X<<4+ X<<3+ X<<2+ X<<1+ X)>>7)
= -609の10bit値なので、精度は28bit中18bitである。
【0051】以上により、 XMULTIA[12:0]が0100010011
001、0101100111101、0010010101101、1010011010101、
1001010100001、0100101011010、0100101011010の時、
入力データに対しC0(=C4)、C1、C2、C3、C4、C5、C6、C
7の4096倍を掛けた値の上位より最低18bit精度のデータ
22bitが37より出力される。この結果はOUT2[21:0]に出
力される。加算器90は18bit精度の出力22bitを得る。四
捨五入回路91は、四捨五入した結果の上位16bitを出力
する。これにより12bit分右にシフトされたことになる
ので4096で除算されたことになり、9四捨五入回路1の出
力は入力にC0(=C4)、C1、C2、C3、C4、C5、C6、C7を掛
けた結果になる。
【0052】次にXMULTIA[12:0]が0101010111101、 即
ちXMULTIA[0]、XMULTIA[2]、XMULTIA[3]、XMULTIA[4]、
XMULTIA[5]、 XMULTIA[7]、 XMULTIA[9]、 XMULTIA[1
1]が1、残りが0の時、64、66、67、68、70、72、74、
76のバススイッチの制御信号が1となる。各バススイッ
チ64、66、67、68、70、72、74、76から4bit左シフタ出
力、3bit左シフタ出力、2bit左シフタ出力、1bit左シフ
タ出力、入力そのまま出力、1bit右シフタ出力、2bit右
シフタ出力、3bit右シフタ出力、のデータがそれぞれ出
力される。これはX<<4 + X<<3 + X<<2 + X<<1 + X + X>
>1 + X>>2 + X>>3を計算することである。これは、(X<<
11 + X<<10 + X<<9 + X<<8 + X<<7 + X<<6+ X<<5 + X<<
4)>>7にほぼ等しい。即ちX×'11111111'(2進数)×16を
計算することと殆ど等価である。
【0053】乗数'11111111'の各bitは、上位よりXMULT
IA[0]、XMULTIA[2]、XMULTIA[3]、XMULTIA[4]、 XMULTI
A[5]、 XMULTIA[7]、 XMULTIA[9]、 XMULTIA[11]で自由
な組み合わせでON/OFFできるため、乗数は'00000000'
〜'11111111'までの任意の値を設定することができる。
この結果はOUT[27:0]から取り出せる。乗算結果は16倍
されているので、OUT[27:4]の24bitを抽出すればX×(任
意の8bit正整数)の結果が取り出せる。この時の最大誤
差は、入力値Xの全bitが全て1の時の((X<<4 + X<<3 + X
<<2 + X<<1 + X + X>>1 + X>>2 + X>>3)×128-( X<<11
+ X<<10 + X<<9 +X<<8 + X<<7 + X<<6 + X<<5 + X<<4)
= -272の9bit値なので、精度は28bit中上位より19bitで
ある。
【0054】また四捨五入回路91は、19bit精度の加算
器37出力22bitの、上位16bitを四捨五入して出力するた
め、乗数の数値としては、[0〜255の任意の整数]×16/4
096= [0〜255の任意の整数]/256 となる。この結果であ
るOUT[15:0]は、8bitで表される任意の小数[0〜255の任
意の整数]/256を乗算したことになる。以上のように、
この具体例では、シフタ群の出力を許容精度の範囲でシ
フトさせることにより、加算器90の出力ビット数を具体
例1の28bitから22bitに減少させ、回路規模の縮小を図
った。
【0055】〈具体例2の効果〉以上により本発明は、
従来の16bit×8bit乗算器と同数の加算器と加算段数
で、入力される16bitのデータに対し、DCT/IDCT用の12b
it係数と任意の8bitで表される係数を実用上十分な精度
で乗算できる。しかも、これにより、回路規模を具体例
1より更に小さく、速度を更に速く、消費電力も更に小
さくできる。
【0056】〈具体例3〉図11と図12に、具体例3
の乗算器の主要部結線図を示す。図11は図1の回路の
加算器部分の結線を分岐して変更したものである。図1
2は、その加算器の分岐を取り入れて処理する符号補正
回路である。加算器の前段部分は具体例1と同一のた
め、図示を省略する。この回路は、入力データを正整数
でなく2の補数で表記された16bit整数に対応させるも
のである。
【0057】〈具体例3の構成〉以下、図11と図12
とを同時に参照しながら説明をする。加算器31の出力の
最上位bitは、271で265の出力とORされて加算器32に入
る。加算器33の出力の最上位bitは、272で266の出力とO
Rされて加算器32に入る。加算器34の出力の最上位bit
は、273で267の出力とORされて加算器35に入る。加算器
36の出力の最上位bitは、274で268の出力とORされて加
算器35に入る。加算器32の出力の上位2bitは、3入力OR
の275で269の出力とORされて加算器37に入る。加算器35
の出力の上位2bitは、3入力ORの276で270の出力とORさ
れて加算器37に入る。
【0058】図12において、250〜254、256は、2入
力のNORである。250は、XMULTIA[0]とXMULTIA[1]のNOR
をとり259に出力する。251は、XMULTIA[5]とXMULTIA[6]
のNORをとり261に出力する。252は、XMULTIA[7]とXMULT
IA[8]のNORをとり261に出力する。253は、XMULTIA[9]と
XMULTIA[10]のNORをとり262に出力する。254は、XMULTI
A[11]とXMULTIA[12]のNORをとり262に出力する。256
は、XMULTIA[3]とXMULTIA[4]のNORをとり263に出力す
る。255は3入力NORである。255は、XMULTIA[0]とXMULT
IA[1]とXMULTIA[2]のNORをとり263に出力する。
【0059】257、258は4入力NORである。257は、XMULT
IA[5]とXMULTIA[6]とXMULTIA[7]とXMULTIA[8]のNORをと
り264に出力する。258は、XMULTIA[9]とXMULTIA[10]とX
MULTIA[11]とXMULTIA[12]のNORをとり264に出力する。2
59〜264は2入力XORである。259は250の出力とXMULTIA
[2]の反転のXORをとり、265に出力する。260はXMULTIA
[3]の反転とXMULTIA[4]の反転のXORをとり、266に出力
する。261は251の出力と252の出力のXORをとり、267に
出力する。262は253の出力と254の出力のXORをとり、26
8に出力する。263は255の出力と256の出力のXORをと
り、269に出力する。264は257の出力と258の出力のXOR
をとり、270に出力する。
【0060】265〜270は2入力のANDである。265は259
の出力とIN[15](入力データの最上位bit、即ち入力デー
タの符号bit)のANDをとり271に出力する。266は260の出
力とIN[15]のANDをとり272に出力する。267は261の出力
とIN[15]のANDをとり273に出力する。268は262の出力と
IN[15]のANDをとり274に出力する。269は263の出力とIN
[15]のANDをとり275に出力する。270は264の出力とIN[1
5]のANDをとり276に出力する。271〜274は2入力OR、27
5、276は3入力ORである。
【0061】〈具体例3の動作〉基本的な動作は具体例
1と同様であるので、追加した図11の符号補正回路に
ついてのみ説明する。図13に、2入力加算器の加算結
果説明図を示す。2入力加算器への入力と出力の組み合
わせは図の通りである。符号の反映結果に不都合が生じ
るのは、加算器の入力の一方が負で、もう一方が0の場
合である。従って、この条件となった時のみ符号を強制
的に負にすればよい。
【0062】図12のゲート250、259、265、271は、加
算器31の出力の符号を調整する。250の出力は、XMULTIA
[0]とXMULTIA[1]が共に0の時のみ1になる。 XMULTIA[0]
とXMULTIA[1]が共に0の時、13、14のバススイッチが共
に0なので、ゲート26の出力も0、即ち加算器31の片方
の入力は0である。259はXORであるので、この出力が1
となるためには250出力が1の時XMULTIA[2]が1でなけれ
ばならない。これは即ちバススイッチ15がONになってい
る場合で、加算器31のもう片側の入力が0でない時であ
る。加算器31の符号bitは、271で265の出力が1の時ORさ
れて強制的に1(負)になるが、265出力が1となるには25
9の出力が1でかつIN[15]が1のときである。
【0063】また、XMULTIA[0]とXMULTIA[1]のどちらか
が1で250出力が0の時は、XMULTIA[0]かXMULTIA[1]のど
ちらかが1で、13か14のバススイッチがONなので、ゲー
ト26の出力は0でない。つまり加算器31の片側の入力は
0でない。259はXORであるので、この出力が1となるた
めには250出力が0の時、即ちXMULTIA[2]が0でなければ
ならない。これは即ちバススイッチ15がOFFになってい
る場合でである。つまり、加算器31のもう片側の入力は
0である。更に31の符号bitが強制的に1(負)になるの
は、前述した場合と同様259の出力が1でかつIN[15]が1
のときである。
【0064】以上より、この回路で加算器31の出力を強
制的に負にする条件は、加算器31の片側の入力が0でな
く、もう片側の入力が0で、かつ入力データが負の時と
なり、最初に述べた条件に合致する。
【0065】260、266、272は、加算器33の出力の符号
を調整する。260はXMULTIA[3]が0でXMULTIA[4]が1、又
はXMULTIA[3]が1でXMULTIA[4]が0の時のみ1になる。XMU
LTIA[3]と0、XMULTIA[4]が1の時、16のバススイッチが
OFF、17のバススイッチがONなので、加算器33の片方の
入力が0でもう片方は0でない。 XMULTIA[3]と1、XMUL
TIA[4]が0の時、16のバススイッチがON、17のバススイ
ッチがOFFなので、加算器33の片方の入力が0でもう片方
は0でない。加算器33の符号bitは、272で266の出力が1
の時ORされて強制的に1(負)になるが、266出力が1とな
るには260の出力が1でかつIN[15]が1のときである。
【0066】以上により、この回路で加算器33の出力を
強制的に負にする条件は、加算器33の片側の入力が0で
なく、もう片側の入力が0で、かつ入力データが負の時
となり、最初に述べた条件に合致する。
【0067】以下、他の回路についても同様である。25
1、252、261、267、273は、34出力の符号を調整する。2
53、254、262、268、274は、加算器36出力の符号を調整
する。255、256、263、369、275は、加算器32出力の符
号を調整する。257、258、264、270、276は、加算器35
出力の符号を調整する。加算器32の出力は、28bit同士
の加算のため結果は29bitとなるが、1〜5の左シフタ出
力を全て足しても28bitを越えないため、出力29bit中の
上位の2bitを符号ビットとしてORしてまとめ、28bit出
力として加算器37に入力している。このOR演算は、275
にて行っている。同様に加算器35の出力も、24bit同士
の加算のため結果は25bitとなるが、6〜12の左シフタ出
力とゲート21の出力を全て足しても24bitを越えないた
め、出力25bit中上位2bitをORしてまとめ、24bit出力と
して加算器37に入力している。このOR演算は、276にて
行っている。これらのために275、276は、271〜274より
1入力多い3入力ORとなっている。
【0068】以上の符号調整により、各加算器の符号bi
tは、図12で説明したような補正後のデータを出力で
き、2の補数入力に適応した演算を行うことができる。
なお、具体例2に具体例3の符号補正回路を用いること
で、同様にして入力データを2の補数形式に対応させる
ことが可能である。
【0069】〈具体例3の効果〉以上により本発明は、
従来の16bit×8bit乗算器と同数の加算器と加算段数
で、入力される16bitの2の補数形式で表されたデータ
に対し、DCT/IDCT用の12bit係数と任意の8bitで表され
る係数を誤差無く乗算できる。これにより、回路規模を
小さく、速度を早く、消費電力も小さくできる。なお、
これまで説明した各具体例において、さらに乗算係数を
増やすこともできる。例えば、入力データに12bit係数
のπ/4を乗算する場合は、XMALTIA[0]、XMALTIA[2]、XM
ALTIA[5]、XMALTIA[8]、XMALTIA[11]をそれぞれ1にする
ことで実現できる。また、乗算器の後ろに累加算器を設
け、乗算した結果を次々に加算していくことで、DCT/ID
CTの行列演算器が実現する。
【図面の簡単な説明】
【図1】具体例1の16bit×12bit乗算器の結線図であ
る。
【図2】比較例の16bit×8bit乗算器の結線図である。
【図3】乗算器の具体的な演算処理内容の説明図であ
る。
【図4】比較例の16bit×12bit乗算器の結線図をであ
る。
【図5】11bitシフタの構造を示す説明図である。
【図6】四捨五入回路の構造を示す説明図である。
【図7】DCT/IDCT 演算の係数内容説明図であ
る。
【図8】16bitの入力データX、に対し、C0を乗する場合
の計算例説明図である。
【図9】具体例2の乗算器を示すブロック図である。
【図10】5bit右シフタの内部構造を示す説明図であ
る。
【図11】具体例3の乗算器の主要部結線図である。
【図12】符号補正回路の結線図である。
【図13】2入力加算器の加算結果説明図である。
【符号の説明】
1〜12 シフタ 13〜25 バススイッチ 14〜30 ゲート 31〜35 加算器 38 四捨五入回路

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 入力データを所定ビットずつシフトする
    シフタ群と、 これらのシフタ群の出力を乗算係数で指定された組み合
    わせで加算する加算器群とを備え、 実在する全ての乗算係数を使用して乗算を行った場合
    に、所定の乗算係数を使用すると最大数のシフタの出力
    を加算処理するとき、その加算処理に必要な数の加算器
    を各シフタの出力側に配置し、 実在する全ての乗算係数を使用して乗算を行った場合
    に、同時にその出力を使用しないシフタの組み合わせを
    選択して、これらのシフタの出力を論理和ゲートを介し
    ていずれかの加算器に入力することを特徴とする乗算
    器。
  2. 【請求項2】 請求項1に記載の乗算器において、 同一のシフト数を持つシフタを2個以上組み合わせて加
    算器群を構成したことを特徴とする乗算器。
  3. 【請求項3】 請求項1に記載の乗算器において、 シフタ群の出力を一括して許容精度の範囲でシフトさせ
    たことを特徴とする乗算器。
  4. 【請求項4】 請求項1に記載の乗算器において、 入力データが2の補数で表記されたものである場合に、
    加算器の入力の一方が負で、もう一方が0のとき、符号
    を強制的に負にする符号補正回路を付加したことを特徴
    とする乗算器。
  5. 【請求項5】 請求項1に記載の乗算器において、 入力データのビット数と同じビット数を出力する四捨五
    入回路を設けたことを特徴とする乗算器。
  6. 【請求項6】 請求項1から5に記載の乗算器におい
    て、 同一構成の回路で、それぞれ異なるビット数の乗算係数
    を併用して、DCTとIDCT演算処理を実行することを特徴
    とする画像信号処理用の乗算器。
JP9242037A 1997-08-22 1997-08-22 乗算器 Pending JPH1166045A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9242037A JPH1166045A (ja) 1997-08-22 1997-08-22 乗算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9242037A JPH1166045A (ja) 1997-08-22 1997-08-22 乗算器

Publications (1)

Publication Number Publication Date
JPH1166045A true JPH1166045A (ja) 1999-03-09

Family

ID=17083343

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9242037A Pending JPH1166045A (ja) 1997-08-22 1997-08-22 乗算器

Country Status (1)

Country Link
JP (1) JPH1166045A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1220087A1 (de) * 2000-12-28 2002-07-03 Siemens Aktiengesellschaft Schaltungsanordnung zum Ausführen einer Multiplikation und/oder einer Filteroperation, mit konstanten ganzzahligen Werten
WO2003096180A3 (en) * 2002-05-08 2004-05-06 Intel Corp Fast multiplication circuits
US7167885B2 (en) 2002-03-22 2007-01-23 Intel Corporation Emod a fast modulus calculation for computer systems

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1220087A1 (de) * 2000-12-28 2002-07-03 Siemens Aktiengesellschaft Schaltungsanordnung zum Ausführen einer Multiplikation und/oder einer Filteroperation, mit konstanten ganzzahligen Werten
US7167885B2 (en) 2002-03-22 2007-01-23 Intel Corporation Emod a fast modulus calculation for computer systems
US7296049B2 (en) 2002-03-22 2007-11-13 Intel Corporation Fast multiplication circuits
WO2003096180A3 (en) * 2002-05-08 2004-05-06 Intel Corp Fast multiplication circuits

Similar Documents

Publication Publication Date Title
US6314442B1 (en) Floating-point arithmetic unit which specifies a least significant bit to be incremented
KR19980702882A (ko) 시프트 수단을 이용한 지수 회로 및 사용 방법
CN111008003A (zh) 数据处理器、方法、芯片及电子设备
US4528641A (en) Variable radix processor
JPH05134851A (ja) 乗算回路出力方式
WO2022170811A1 (zh) 一种适用于混合精度神经网络的定点乘加运算单元及方法
JPH09325955A (ja) 二乗和の平方根演算回路
JPH1166045A (ja) 乗算器
US6269385B1 (en) Apparatus and method for performing rounding and addition in parallel in floating point multiplier
US20080071852A1 (en) Method to perform a subtraction of two operands in a binary arithmetic unit plus arithmetic unit to perform such a method
JP4243277B2 (ja) データ処理装置
JP2645422B2 (ja) 浮動小数点演算処理装置
CN111142840A (zh) 基于fpga的数据计算方法和装置
KR20070018981A (ko) 복소수 로그 alu
KR100264957B1 (ko) 하나의 명령주기내에서 0으로부터 반올림된 두정수의 평균을 계산하는 방법 및 장치
CN110647307A (zh) 数据处理器、方法、芯片及电子设备
EP0353041A2 (en) Signal processing apparatus and method using modified signed digit arithmetic
JP3610564B2 (ja) 情報処理装置
JP2000003267A (ja) 演算処理装置およびその方法
KR100241073B1 (ko) 단일명령사이클에서 2A+sin(A)의 계산
JP3077880B2 (ja) スティッキービット検出回路
JPH07200259A (ja) 演算処理方法および演算処理装置
JPH1185471A (ja) 演算方法および演算装置
CN116974509A (zh) 数据类型转换方法、处理器、电子设备及存储介质
JPH04263317A (ja) 演算装置