JP2010039516A - 演算装置、画像表示装置、および演算方法 - Google Patents

演算装置、画像表示装置、および演算方法 Download PDF

Info

Publication number
JP2010039516A
JP2010039516A JP2008198153A JP2008198153A JP2010039516A JP 2010039516 A JP2010039516 A JP 2010039516A JP 2008198153 A JP2008198153 A JP 2008198153A JP 2008198153 A JP2008198153 A JP 2008198153A JP 2010039516 A JP2010039516 A JP 2010039516A
Authority
JP
Japan
Prior art keywords
multiplicand
addition
calculation
multiplier
subtraction
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
JP2008198153A
Other languages
English (en)
Other versions
JP5313586B2 (ja
Inventor
Yoshinao Kobayashi
芳直 小林
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.)
Kyocera Corp
Original Assignee
Kyocera Corp
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 Kyocera Corp filed Critical Kyocera Corp
Priority to JP2008198153A priority Critical patent/JP5313586B2/ja
Publication of JP2010039516A publication Critical patent/JP2010039516A/ja
Application granted granted Critical
Publication of JP5313586B2 publication Critical patent/JP5313586B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】乗算における加算および減算の最大回数を低減することで、演算装置の小型化および演算速度の向上を図ることができる技術を提供する。
【解決手段】二進法に係る被乗数と乗数との乗算を行う演算装置において、乗数におけるビットの数値の下桁側からの配列に応じて、加算基調の演算を行った後に、該加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行うことを決定する。ここで、加算基調の演算では、乗数におけるビットの数値が下桁側から順に1、0となる場合に被乗数に係る加算を行い、下桁側から順に1、1となる場合に減算基調の演算に移行しつつ被乗数に係る減算を行う。また、減算基調の演算では、符号拡張乗数におけるビットの数値が下桁側から順に0、1となる場合に被乗数に係る減算を行い、下桁側から順に0、0となる場合に加算基調の演算に移行しつつ被乗数に係る加算を行う。
【選択図】図10

Description

本発明は、被乗数と乗数との乗算を行う演算装置、および演算方法、ならびにその演算装置を利用した画像表示装置に関する。
マトリックス状にドットを表示する画像表示装置としては、例えば、有機ELディスプレイや液晶ディスプレイなどがある。このようなディスプレイにおいて、NTSC(National Television Standards Committee)の規格に基づく画像信号を可視的に出力する場合には、まず、ITU−R(国際電気通信連合無線通信部門)の勧告BT601で推奨されている符号化パラメータなどを用いた上で、YC分離(輝度信号と色差信号とを高精度に分離する技術)が行われてY,Cr,Cbの値が抽出される。そして、所定のアルゴリズムに従って、Y,Cr,Cbの値が適宜被乗数とされて所定の定数(すなわち乗数)が乗じられることで加算値および減算値が算出され、R,G,Bの値が導出される(例えば、特許文献1など)。
例えば、Y,Cr,Cbの値から下式(1)〜(3)で示す所定の変換式によって、R,G,Bの値が算出される。
R=Y×(定数1)+Cr×(定数2)+(定数3) ・・・(1)
G=Y×(定数1)+Cb×(定数4)+Cr×(定数5)+(定数6) ・・・(2)
B=Y×(定数1)+Cb×(定数7)+(定数8) ・・・(3)。
そして、一般的な演算装置では二進法が用いられ、更に、定数には負の値が存在するため、Cr,Cbの値は負の数となることもある。このような二進法で表現される負の値を含む数値であるY,Cr,Cbの値と乗数との積を求めるアルゴリズムとしては、ブースの乗算アルゴリズムや、定数加算法による乗算アルゴリズムなどがある(例えば、特許文献2など)。
例えば、ブースの乗算アルゴリズムは、乗数の下の桁から順に1の次に0となる場合は被乗数の加算を行い、乗数の下の桁から順に0の次に1となる場合は被乗数の減算を行うことで、乗算を実現するものである。ここで、ブースの乗算アルゴリズムについて簡単に説明する。
図26は、ブースの乗算アルゴリズムの演算処理フローを示すフローチャートである。まず、乗数の最下位に0が付加され(ステップSS1)、カウント値nが初期値である1に設定され(ステップSS2)、乗数の下位からn+1番目とn番目のビットのパターンが"01"であるか否か判定される(ステップSS3)。ここで、ビットのパターンが"01"であれば、被乗数が符号拡張された上で加算されて(ステップSS4)、ステップSS7に進み、ビットのパターンが"01"でなければ、乗数の下位からn+1番目とn番目のビットのパターンが"10"であるか否か判定される(ステップSS5)。ここで、ビットのパターンが"10"であれば、被乗数が符号拡張された上で減算されて(ステップSS6)、ステップSS7に進み、ビットのパターンが"01"でなければ、ステップSS7に進む。そして、ステップSS7では、乗数の最上位までビットのパターンの判定が終了したか否か判定される。ここで、ビットのパターンの判定が終了していなければ、被乗数が左(すなわち上位側)に1ビット分シフトされつつ、カウント値nが1加算されて、ステップSS3に進む。一方、ビットのパターンの判定が終了していれば、本動作フローが終了される。
図27は、十進法で表された数値に対応する二進法の4ビットの整数表記を示す図である。具体的には、図27では、十進法で表された数値(−8,・・・,+7)に対して、二進法の4ビット整数表記(1000,・・・,0111)がそれぞれ対応付けられている。
図28は、十進法で5×(−6)と表される計算をブースの乗算アルゴリズムによって演算する例を説明するための図である。十進法の5は二進法では"0101"と示され、十進法の(−6)は二進法では"1010"と示される。ここでは、まず、乗数"1010"の最下位に0が付加されて"10100"とされ、下から2桁ずつビットのパターンが判定されると、まず、ビットのパターンが"00"であるために加減算が行われず、次に2の位に移って、ビットのパターンが"10"であるために被乗数が符号拡張されて減算される。つまり、被乗数を2倍した"01010"が符号拡張されて"00001010"となり、その2の補数"11110110"が加算される。次に4の位に移って、ビットのパターンが"01"であるために被乗数が符号拡張されて加算される。つまり、被乗数を4倍した"010100"が符号拡張されて"00010100"とされて加算される。更に8の位に移って、ビットのパターンが"10"であるために被乗数が符号拡張されて減算される。つまり、被乗数を8倍した"0101000"が符号拡張されて"00101000"となり、その2の補数"11011000"が加算される。そして、演算結果は"11100010"となる。換言すれば十進法の(−30)=(−27+26+25+21)が求まる。
また、定数加算法による乗数アルゴリズムは、乗数に含まれる1の値の数だけ被乗数の加算を行うものである。ここで、定数加算法による乗数アルゴリズムについて簡単に説明する。
図29および図30は、定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。まず、カウント値nが初期値である1に設定され(ステップSP1)、乗数の下位からn番目のビットが符号ビット、すなわち最上位ビット(MSB:Most Significant Bit)であるか否か判定される(ステップSP2)。ここで、乗数の下位からn番目のビットが符号ビットであれば、ステップSP6に進み、符号ビットでなければステップSP3に進む。ステップSP3では、乗数の下位からn番目のビットが"1"であるか否か判定される。ここでは、乗数の下位からn番目のビットが"1"であれば、被乗数の加算(ここでは、符号ビットは負論理、それ以外のビットは正論理の加算)が行われて(ステップSP4)、ステップSP5に進み、乗数の下位からn番目のビットが"1"でなければステップSP5に進む。また、ステップSP5では、被乗数が左(すなわち上位側)に1ビット分シフトされつつ、カウント値nが1加算されて、ステップSP2に進む。
また、ステップSP6では、乗数の下位からn番目のビットが"1"であるか否か判定される。ここでは、ビットが"1"であれば、被乗数の減算(但し、符号ビットは正論理、それ以外のビットは負論理の加算)が行われて(ステップSP7)、ステップSP8に進み、乗数の下位からn番目のビットが"1"でなければステップSP8に進む。ステップSP8では、図30で示す処理が行われることで、定数が算出されて、ステップSP1〜SP7の処理によって導出された値にステップSP8で算出された定数が加算されて(ステップSP9)、本動作フローが終了される。なお、図30では、ステップSP1〜SP7における加減算時に負論理であった項に1を代入するとともに、正論理であった項に0を代入して、加算を行い(ステップSP81)、その加算結果の2の補数を算出することで(ステップSP82)、定数が算出される。
図31は、十進法で5×(−6)と表される計算を定数加算法の乗算アルゴリズムによって演算する例を説明するための図である。まず、上記ステップSP1〜SP7において、図31(a)で示すような加算が行われて、加算結果"0101010"が得られる。また、上記ステップSP81において、図31(b)で示すように、加減算時に負論理であった項に1が代入されるとともに、正論理であった項に0が代入されて、加算が行われ、加算結果"1001000"が得られる。そして、上記ステップSP82において、上記ステップSP81で得られた加算結果"1001000"の2の補数が導出されて、図31(c)の2行目に記述される定数"10111000"が得られる。そして、図31(c)で示すように、上記ステップSP9において、上記ステップSP1〜SP7で得られた加算結果0101010に、ステップSP8で得られた定数"10111000"が加算される。そして、この演算結果は"11100010"となる。つまり、十進法の(−30)=(−27+26+25+21)が求まる。
なお、定数加算法による乗数アルゴリズムには、バリエーションとして、2の補数の定数加算法による乗数アルゴリズムがある。この乗数アルゴリズムについても簡単に説明する。
図32および図33は、2の補数の定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。まず、乗数の2の補数を算出して仮の乗数(仮乗数)とする(ステップST1)。そして、カウント値nが初期値である1に設定され(ステップST2)、仮乗数の下位からn番目のビットが符号ビットであるか否か判定される(ステップST3)。ここで、仮乗数の下位からn番目のビットが符号ビットであれば、ステップST7に進み、符号ビットでなければステップST4に進む。ステップST4では、仮乗数の下位からn番目のビットが"1"であるか否か判定される。ここでは、ビットが"1"であれば、被乗数の減算(ここでは、符号ビットは正論理、それ以外のビットは負論理の加算)が行われて(ステップST5)、ステップST6に進み、仮乗数の下位からn番目のビットが"1"でなければステップST6に進む。また、ステップST6では、被乗数が左(すなわち上位側)に1ビット分シフトされつつ、カウント値nが1加算されて、ステップST3に進む。
また、ステップST7では、仮乗数の下位からn番目のビットが"1"であるか否か判定される。ここでは、仮乗数の下位からn番目のビットが"1"であれば、被乗数の加算(ここでは、符号ビットは負論理、それ以外のビットは正論理の加算)が行われて(ステップST8)、ステップST9に進み、仮乗数の下位からn番目のビットが"1"でなければステップST9に進む。ステップST9では、図33で示す処理が行われることで、定数が算出されて、ステップST1〜ST8の処理によって導出された値にステップST9で算出される定数が加算されて(ステップST10)、本動作フローが終了される。なお、図33では、ステップST1〜ST8における加減算時に負論理であった項に1を代入するとともに、正論理であった項に0を代入して、加算を行い(ステップST91)、その加算結果の2の補数を算出することで(ステップST92)、定数が算出される。
図34は、十進法で5×(−6)と表される計算を2の補数の定数加算法の乗算アルゴリズムによって演算する例を説明するための図である。まず、上記ステップST1において、図34(a)で2行目に示す乗数"1010"の2の補数"0110"が仮乗数として求められる。次に、上記ステップST2〜ST8において、図34(a)で示すような加算が行われて、加算結果"001100"が得られる。また、上記ステップST91において、図34(b)で示すように、加減算時に負論理であった項に1を代入するとともに、正論理であった項に0を代入して、加算が行われ、加算結果"101010"が得られる。そして、上記ステップST92において、上記ステップST91で得られた加算結果"101010"の2の補数が導出されて、図34(c)の2行目に記述される定数"11010110"が得られる。そして、図34(c)で示すように、上記ステップST10において、上記ステップST2〜ST8で得られた加算結果"001100"に、ステップST9で得られた定数"11010110"が加算される。そして、この演算結果は"11100010"となる。つまり、十進法の(−30)=(−27+26+25+21)が求まる。
特開2007−60437号公報 特開2002−229773号公報
しかしながら、ブースの乗算アルゴリズムでは、乗数に"0101"が繰り返して出現する場合には、加減算の演算回数が多くなり、定数加算法による乗算アルゴリズムでは、乗数に"1"が数多く出現する場合には、加算の演算回数が多くなる。また、2の補数の定数加算法による乗算アルゴリズムでも、乗数の2の補数に"1"が数多く出現する場合には、加減算の演算回数が多くなる。そして、演算装置においては、加算および減算の最大回数に合わせて性能およびサイズが決定される。このため、より演算回数が少ない乗算アルゴリズムが求められる。
本発明は、上記課題に鑑みてなされたものであり、乗算における加算および減算の最大回数を低減することで、演算装置の小型化および演算速度の向上を図ることができる技術を提供することを目的とする。
上記の課題を解決するために、請求項1の発明は、二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、前記乗数を記憶する乗数記憶部と、前記乗数におけるビットの数値の下桁側からの配列に応じて、加算基調の演算を行った後に、該加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行うことを決定する決定部と、備え、前記加算基調の演算が、前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、前記減算基調の演算が、前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする。
また、請求項2の発明は、請求項1に記載の演算装置であって、前記被乗数を記憶する被乗数記憶部と、前記決定部による決定結果に応じた演算を行う演算部と、を更に備えることを特徴とする。
また、請求項3の発明は、二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、前記被乗数を記憶する被乗数記憶部と、前記乗数におけるビットの数値の下桁側からの配列に応じて、加算基調の演算を行った後に、該加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行う演算部と、を備え、前記加算基調の演算が、前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、前記減算基調の演算が、前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする。
また、請求項4の発明は、請求項2または請求項3に記載の演算装置であって、前記演算部が、前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、前記所定の定数が、前記被乗数に0を代入して、前記配列に応じて、前記加算基調の演算を行った後に、該加算基調の演算および前記減算基調の演算のうちの少なくとも一方の演算を行うことで得られる演算結果の2の補数であることを特徴とする。
また、請求項5の発明は、請求項2または請求項3に記載の演算装置であって、前記演算部が、前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、前記所定の定数が、前記演算部によって前記加算および減算を行う際に負論理で扱われたビットに係る項に1を代入し、正論理で扱われたビットに係る項に0を代入した上で加算した結果の2の補数であることを特徴とする。
また、請求項6の発明は、二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、前記乗数を記憶する乗数記憶部と、前記乗数におけるビットの数値の下桁側からの配列を認識して、前記配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行うことを決定する決定部と、を備えることを特徴とする。
また、請求項7の発明は、請求項6に記載の演算装置であって、前記被乗数を記憶する被乗数記憶部と、前記決定部による決定結果に応じた演算を行う演算部と、を更に備えることを特徴とする。
また、請求項8の発明は、二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、前記被乗数を記憶する被乗数記憶部と、前記乗数におけるビットの数値の配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行う演算部と、を備えることを特徴とする。
また、請求項9の発明は、請求項7または請求項8に記載の演算装置であって、前記演算部が、前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、前記所定の定数が、前記演算部によって前記加算および減算を行う際に負論理で扱われたビットに係る項に1を代入し、正論理で扱われたビットに係る項に0を代入した上で加算した結果の2の補数であることを特徴とする。
また、請求項10の発明は、請求項2、請求項3、請求項7、及び請求項8の何れかに記載の演算装置であって、前記演算部が、前記被乗数の符号拡張を行いつつ前記被乗数に係る加算および減算を行うことで、前記被乗数と前記乗数との乗算結果を導出することを特徴とする。
また、請求項11の発明は、請求項1から請求項10の何れかに記載の演算装置を用いて入力画像信号を表示用画像信号に変換する変換部と、前記表示用画像信号に基づいて画像を表示する表示部と、を備えることを特徴とする。
また、請求項12の発明は、請求項11に記載の画像表示装置であって、前記変換部が、明度および色差を示す信号を所定のルールに従って各色の階調を示す信号に変換するための乗算に、請求項1から請求項10の何れかに記載の演算装置を用いることを特徴とする。
また、請求項13の発明は、演算装置において二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算方法であって、(a)加算基調の演算を行うステップと、(b)前記(a)ステップの後に、前記乗数におけるビットの数値の下桁側からの配列に応じて、前記加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行うステップと、を備え、前記加算基調の演算が、前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、前記減算基調の演算が、前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする。
また、請求項14の発明は、演算装置において二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算方法であって、(a)前記乗数におけるビットの数値の配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行うステップと、(b)前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行うステップと、(c)前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行うステップと、(d)前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行うステップと、を備えることを特徴とする。
請求項1から請求項14の何れに記載の発明によっても、乗算における加算および減算の最大回数が低減されるため、演算装置の小型化および演算速度の向上を図ることができる。
請求項4、請求項5、および請求項9の何れに記載の発明によっても、被乗数の符号拡張を行うことなく、乗算を行うことができるため、演算部の構成の簡略化を図ることができる。
請求項10に記載の発明によれば、演算の簡略化を図ることができる。
請求項11および請求項12の何れに記載の発明によっても、入力画像信号から表示用信号に変換するための構成の簡略化と演算速度の高速化とが容易に図られるため、画像表示装置の小型化および製造コストの低減を図ることができる。
以下、本発明の実施形態を図面に基づいて説明する。
<演算装置の構成>
図1は、本発明の実施形態に係る演算装置1の機能的な構成を示す機能ブロック図である。演算装置1は、二進法でそれぞれ表現される変数(具体的には、被乗数と乗数)の乗算を行うものであり、シフトレジスタ2、符号拡張・シフトレジスタ3、制御回路部4、および演算回路部5を備える。
シフトレジスタ2は、本発明の被乗数記憶部に相当するものであり、二進法で表現された被乗数のデータの入力に応じて、該被乗数のデータ、すなわちビット列を記憶する。このシフトレジスタ2は、制御回路部4からのシフト制御信号に応答して、記憶している被乗数のデータの桁をシフトする。
符号拡張・シフトレジスタ3は、本発明の乗数記憶部に相当するものであり、二進法で表現された乗数のデータの入力に応じて、該乗数を符号拡張した乗数(以下「符号拡張乗数」とも称する)を生成し、該符号拡張乗数を記憶する。なお、ここで言う「符号拡張」とは、符号付きのデータをビット長の大きいデータに変換する際に、値を変えないようにビットを補ってデータを拡張することである。また、この符号拡張・シフトレジスタ3は、制御回路部4からのシフト制御信号に応答して、記憶している被乗数のデータの桁をシフトする。
なお、当該実施形態においては、乗数を符号拡張した「符号拡張乗数」を用いているが、符合拡張を行っていない乗数を用い、当該乗数を乗数記憶部に記憶させる構造に応用することもできる。
制御回路部4は、例えば、論理回路などによって構成され、符号拡張乗数のビットのパターンの認識に応じて、シフトレジスタ2および符号拡張・シフトレジスタ3へのシフト制御信号の出力を制御するとともに、演算回路部5における演算を制御する。具体的には、この制御回路部4は、符号拡張・シフトレジスタ3に記憶される符号拡張乗数におけるビットのパターンを認識し、その認識結果に応じて、被乗数に係る加算を指示する信号(以下「加算信号」とも称する)または被乗数に係る減算を指示する信号(以下「減算信号」とも称する)を演算回路部5に対して出力する。より詳細には、制御回路部4は、符号拡張乗数におけるビットの数値の下桁側からの配列を認識し、その配列の認識結果に応じた演算を順次に行うことを決定して、その決定に応じた加算信号および減算信号のうちの少なくとも一方の信号を順次に出力する。なお、ここで決定される演算には、加算基調の演算と減算基調の演算とがあり、まず、加算基調の演算が行われた後に、加算基調の演算および減算基調の演算のうちの少なくとも一方の演算が順次に行われることが決定される。「加算基調の演算」および「減算基調の演算」の演算内容については後述する。
演算回路部5は、例えば、論理回路などによって構成され、制御回路部4による決定結果に応じて、加算基調の演算および減算基調の演算を行う。具体的には、制御回路部4から演算回路部5に入力される加算信号に応答して、シフトレジスタ2から被乗数のデータを読み出して該被乗数のデータに係る加算を行い、制御回路部4から演算回路部5に入力される減算信号に応答して、シフトレジスタ2から被乗数のデータを読み出して該被乗数のデータに係る減算を行う。そして、演算回路部5において、被乗数の桁を順次に上位側にシフトさせつつ、順次に被乗数の加減算を行うことにより、被乗数と乗数との乗算の演算結果を示すデータ(以下「演算結果データ」とも称する)が導出され、該演算結果データが演算回路部5から出力される。
なお、当該実施形態においては、被乗数をシフトレジスタ2で左にシフトすることによって倍数を作り、演算回路部5で加減算する構造となっているが、当該構造に限定されない。例えば、被乗数のデータを記憶するレジスタを、被乗数のビット列をシフトしないレジスタとして、演算回路部に設けられたシフトレジスタにおいて加減算の結果のビット列を右にシフトさせることで、被乗数のデータを相対的に左にシフトしても良い。この変形例に係る演算装置1aの機能的な構成を示す機能ブロック図を図2に例示する。図2では、図1で示した演算装置1と同様な構成については同じ符号が付されている。演算装置1aでは、演算装置1と比較して、シフトレジスタ2がビット列のシフトを行わないレジスタ2aに変更され、制御回路部4がシフト制御信号の出力先が演算回路部5aとされた制御回路部4aに変更され、演算回路部5がシフトレジスタを含む演算回路部5aに変更されている。そして、演算回路部5aが、制御回路部4aからのシフト制御信号に応じて加減算の結果を示すビット列をシフトしつつ、レジスタ2aから被乗数のデータを読み込んで、加算信号および減算信号に応じて被乗数の加減算を行う。当該構成においては、演算に必要なビットの記憶場所が固定されるので、回路サイズの縮小および動作速度の向上を図ることができる。
<演算装置における演算処理フロー>
図3から図5は、演算装置1における演算処理フローを示すフローチャートである。本演算処理フローは、演算装置1への被乗数および乗数のデータの入力に応答して開始される。
ステップS1では、符号拡張・シフトレジスタ3により、乗数について1ビット分の符号拡張が行われ、乗数のデータが1ビット増加される。このとき、符号拡張された乗数(符号拡張乗数)のデータが符号拡張・シフトレジスタ3に記憶される。
ステップS2では、制御回路部4により、符号拡張乗数の数値の認識対象となるビットの桁を特定するためのカウント値nが1に設定される。
ステップS3では、制御回路部4により、符号拡張乗数の全ビットに係る数値が認識されたか否か判定される。ここでは、全ビットに係る数値が認識されていなければ、ステップS4に進み、全ビットに係る数値が認識されていれば、図5のステップS31に進む。
ステップS4では、制御回路部4により、符号拡張乗数の最も下位の桁(最下桁)からn番目およびn+1番目のビットの数値が認識される。
ステップS5では、制御回路部4により、符号拡張乗数の最下桁からn番目のビットの数値が1であるか否か判定される。ここでは、符号拡張乗数の最下桁からn番目のビットの数値が1であれば、ステップS6に進み、符号拡張乗数の最下桁からn番目のビットの数値が1でなければ、ステップS7に進む。
ステップS6では、制御回路部4により、符号拡張乗数の最下桁からn+1番目のビットの数値が1であるか否か判定される。ここでは、n+1番目のビットの数値が1であれば、ステップS8に進み、n+1番目のビットの数値が1でなければ、ステップS10に進む。
ステップS7では、制御回路部4により、カウント値nが1増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが1ビット分左にシフトされる。つまり、被乗数のデータが1桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが1ビット分右にシフトされる。つまり、符号拡張乗数のデータが1桁下位側にシフトされる。そして、ステップS7の処理が終了すると、ステップS3に進む。
ステップS8では、制御回路部4から減算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る減算が行われる。具体的には、被乗数の符号ビットの数値は正論理、その他のビットの数値は負論理で加算される。つまり、被乗数の符号ビットの数値はそのまま加算され、被乗数のその他のビットの数値は反転された上で加算される。
ステップS9では、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが2ビット分右にシフトされる。つまり、符号拡張乗数のデータが2桁下位側にシフトされる。そして、ステップS9の処理が終了すると、図4のステップS21に進む。
ステップS10では、制御回路部4から加算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る加算が行われる。具体的には、被乗数の符号ビットの数値は負論理、その他のビットの数値は正論理で加算される。つまり、被乗数の符号ビットの数値は反転されて加算され、被乗数のその他のビットの数値はそのまま加算される。
ステップS11では、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが2ビット分右にシフトされる。つまり、符号拡張乗数のデータが2桁下位側にシフトされる。そして、ステップS11の処理が終了すると、ステップS3に進む。
図4のステップS21では、図3のステップS3と同様に、制御回路部4により、符号拡張乗数の全ビットに係る数値が認識されたか否か判定される。ここでは、全ビットに係る数値が認識されていなければ、ステップS22に進み、全ビットに係る数値が認識されていれば、図5のステップS31に進む。
ステップS22では、制御回路部4により、符号拡張乗数の最下桁からn番目およびn+1番目のビットの数値が認識される。
ステップS23では、制御回路部4により、符号拡張乗数の最下桁からn番目のビットの数値が0であるか否か判定される。ここでは、符号拡張乗数の最下桁からn番目のビットの数値が0であれば、ステップS24に進み、符号拡張乗数の最下桁からn番目のビットの数値が0でなければ、ステップS25に進む。
ステップS24では、制御回路部4により、符号拡張乗数の最下桁からn+1番目のビットの数値が0であるか否か判定される。ここでは、符号拡張乗数の最下桁からn+1番目のビットの数値が0であれば、ステップS26に進み、符号拡張乗数の最下桁からn+1番目のビットの数値が0でなければ、ステップS28に進む。
ステップS25では、図3のステップS7と同様に、制御回路部4により、カウント値nが1増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが1ビット分左にシフトされる。つまり、被乗数のデータが1桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが1ビット分右にシフトされる。つまり、符号拡張乗数のデータが1桁下位側にシフトされる。そして、ステップS25の処理が終了すると、ステップS21に進む。
ステップS26では、図3のステップS10と同様に、制御回路部4から加算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る加算が行われる。具体的には、被乗数の符号ビットの数値は負論理、その他のビットの数値は正論理で加算される。つまり、被乗数の符号ビットの数値は反転されて加算され、被乗数のその他のビットの数値はそのまま加算される。
ステップS27では、図3のステップS11と同様に、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが2ビット分右にシフトされる。つまり、符号拡張乗数のデータが2桁下位側にシフトされる。そして、ステップS27の処理が終了すると、図3のステップS3に進む。
ステップS28では、図3のステップS8と同様に、制御回路部4から減算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る減算が行われる。具体的には、被乗数の符号ビットの数値は正論理、その他のビットの数値は負論理で加算される。つまり、被乗数の符号ビットの数値はそのまま加算され、被乗数のその他のビットの数値は反転された上で加算される。
ステップS29では、図3のステップS9と同様に、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張乗数のデータが2ビット分右にシフトされる。つまり、符号拡張乗数のデータが2桁下位側にシフトされる。そして、ステップS29の処理が終了すると、ステップS21に進む。
図5のステップS31では、制御回路部4および演算回路部5により、図3のステップS8,S10、および図4のステップS26,S28で加減算された際に負論理で扱われたビットの項に1が代入され、正論理で扱われたビットの項に0が代入された上で加算されることで、オフセット値が算出される。なお、被乗数に0を代入して、ステップS1〜S29の処理を行うことでオフセット値を算出しても良い。このオフセット値は、被乗数が0になった場合には、被乗数と乗数との乗算結果が0となるべきところ、演算の誤差によって生じる0からの値のズレ(ズレ値)を示す。
ステップS32では、制御回路部4および演算回路部5により、ステップS31で算出されたオフセット値の2の補数が所定の定数として算出される。
ステップS33では、図3および図4のステップS1〜S29における順次の加減算によって得られた値に、ステップS32で算出された所定の定数が加算されることで、被乗数と乗数との乗算結果が求められて、本演算処理フローが終了される。ステップS33では、被乗数に0を代入して被乗数と乗数との乗算結果が0からずれる値(ズレ値)を相殺することを目的として、所定の定数が加算される。
図3から図5で示す演算処理フローでは、主に、加算基調の演算、減算基調の演算、および所定の定数の加算が行われる。図3のステップS3〜S11の演算処理が加算基調の演算に相当し、図4のステップS21〜S29で示される演算処理が減算基調の演算に相当し、図5のステップS31〜S33の演算処理が所定の定数の加算に相当する。そして、図3で示すように、演算装置1における被乗数と乗数との乗算では、まず、加算基調の演算から開始される。
具体的には、加算基調の演算は、符号拡張乗数におけるビットの数値の下桁側からの配列において「0」が連続して出現する間に「1」が単独で出現すると、被乗数の加算が行われる加算を基調とする演算である。より詳細には、加算基調の演算では、符号拡張乗数におけるビットの数値の下桁側からの配列において、「0」が連続している場合には被乗数の加算も減算も行われず、下桁側から順に見て、ビットの数値に「1」が出現し且つ下桁側からのビットの数値の配列が「1、0」である場合には被乗数の加算が行われ、ビットの数値に「1」が出現し且つ下桁側からのビットの数値の配列が「1、1」である場合には減算基調の演算に移行されつつ被乗数の減算が行われる。つまり、「1」が連続するパターンが出現するまで、「1」が単独して出現すれば、被乗数の加算が行われ、「1」が連続するパターンが出現すれば、減算基調の演算への移行が行われる。
また、減算基調の演算は、符号拡張乗数におけるビットの数値の下桁側からの配列において、「1」が連続して出現する間に「0」が単独で出現すると、被乗数の減算が行われる減算を基調とする演算である。より詳細には、減算基調の演算では、符号拡張乗数におけるビットの数値の下桁側からの配列において、「1」が連続している場合には被乗数の加算も減算も行われず、下桁側から順に見て、ビットの数値に「0」が出現し且つ下桁側からのビットの数値の配列が「0、1」である場合には被乗数の減算が行われ、ビットの数値に「0」が出現し且つ下桁側からのビットの数値の配列が「0、0」である場合には加算基調の演算に移行されつつ被乗数の加算が行われる。つまり、「0」が連続するパターンが出現するまで、「0」が単独して出現すれば、被乗数の減算が行われ、「0」が連続するパターンが出現すれば、加算基調の演算への移行が行われる。
換言すれば、制御回路部4は、符号拡張乗数におけるビットの数値の下桁側からの配列を認識して、該配列が下桁側から順に0が連続した後に1、0となる場合に被乗数に係る加算を行い、該配列が下桁側から順に0が連続した後に1、1となる場合に被乗数に係る減算を行うことを決定する。また、制御回路部4は、該配列が下桁側から順に1が連続した後に0、1となる場合に被乗数に係る減算を行い、該配列が下桁側から順に1が連続した後に0、0となる場合に被乗数に係る加算を行うことを決定する。
<演算装置における演算例>
図6は、演算装置1における演算例を示す図である。図6では、十進法で表現された「5×(−6)」の乗算を行う例が示されている。図6(a)で示すように、被乗数に相当する十進法の「5」は、二進法の4ビット整数表記では「0101」であり、乗数に相当する十進法の「−6」は、二進法の4ビット整数表記では「1010」である。そして、図6(a)で示すように、図3および図4のステップS1〜S29における加減算によって、二進法の7ビット整数表記の「0101010」が得られる。また、図6(b)で示すように、図5のステップS31における演算により、二進法の7ビット整数表記のオフセット値「1001000」が算出される。そして、図6(c)で示すように、図3および図4のステップS1〜S29における加減算によって得られた二進法の7ビット整数表記の「0101010」に、オフセット値の2の補数「10111000」が加算されることで、被乗数と乗数との乗算結果「11100010」が得られる。この二進法の8ビット整数表記の「11100010」は、十進法では「−30(=−27+26+25+21)」であり、十進法で表現された「5×(−6)」の乗算が正しく行われていることが分かる。
<加減算の決定方法のバリエーション>
上記実施形態に係る演算装置1では、乗数をそのまま符号拡張して被乗数に係る加減算の決定に利用したが、これに限られない。例えば、乗数の2の補数を算出し、この値を仮の乗数として被乗数に係る加減算の決定に利用するようにしても良い。以下では、上記実施形態のようにそのまま符号拡張した乗数を用いて被乗数に係る加減算を決定する乗算アルゴリズムを「WS法の乗算アルゴリズム」と称し、乗数の2の補数を符号拡張した値を用いて被乗数に係る加減算を決定する乗算アルゴリズムを「2の補数のWS法の乗算アルゴリズム」と称する。なお、WS法の乗算アルゴリズムと、2の補数のWS法の乗算アルゴリズムとは、加減算の決定方法が異なるが、結果的に被乗数に係る加減算の内容は同一となる。ここで、2の補数のWS法の乗算アルゴリズムについて説明する。
図7から図9は、演算装置1において、2の補数のWS法の乗算アルゴリズムを採用した場合の演算処理フローを示すフローチャートである。本演算処理フローは、演算装置1への被乗数および乗数のデータの入力に応答して開始される。
ステップS101では、図示を省略する演算回路により、乗数の2の補数が算出され、この算出された値を仮の乗数(仮乗数)として、該仮乗数が符号拡張・シフトレジスタ3に入力される。
ステップS102では、符号拡張・シフトレジスタ3により、仮乗数について1ビット分の符号拡張が行われ、仮乗数のデータが1ビット増加される。このとき、符号拡張された仮乗数(符号拡張仮乗数)のデータが符号拡張・シフトレジスタ3に記憶される。
ステップS103では、制御回路部4により、符号拡張乗数の数値の認識対象となるビットの桁を特定するためのカウント値nが1に設定される。
ステップS104では、制御回路部4により、符号拡張仮乗数の全ビットに係る数値が認識されたか否か判定される。ここでは、全ビットに係る数値が認識されていなければ、ステップS105に進み、全ビットに係る数値が認識されていれば、図9のステップS131に進む。
ステップS105では、制御回路部4により、符号拡張仮乗数の最下桁からn番目およびn+1番目のビットの数値が認識される。
ステップS106では、制御回路部4により、符号拡張仮乗数の最下桁からn番目のビットの数値が1であるか否か判定される。ここでは、符号拡張仮乗数の最下桁からn番目のビットの数値が1であれば、ステップS107に進み、符号拡張仮乗数の最下桁からn番目のビットの数値が1でなければ、ステップS108に進む。
ステップS107では、制御回路部4により、符号拡張仮乗数の最下桁からn+1番目のビットの数値が1であるか否か判定される。ここでは、符号拡張仮乗数の最下桁からn+1番目のビットの数値が1であれば、ステップS109に進み、符号拡張仮乗数の最下桁からn+1番目のビットの数値が1でなければ、ステップS111に進む。
ステップS108では、制御回路部4により、カウント値nが1つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが1ビット分左にシフトされる。つまり、被乗数のデータが1桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが1ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが1桁下位側にシフトされる。そして、ステップS108の処理が終了されると、ステップS104に進む。
ステップS109では、制御回路部4から加算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る加算が行われる。具体的には、被乗数の符号ビットの数値は負論理、その他のビットの数値は正論理で加算される。つまり、被乗数の符号ビットの数値は反転されて加算され、被乗数のその他のビットの数値はそのまま加算される。
ステップS110では、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが2ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが2桁下位側にシフトされる。そして、ステップS110の処理が終了すると、図8のステップS121に進む。
ステップS111では、制御回路部4から減算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る減算が行われる。具体的には、被乗数の符号ビットの数値は正論理、その他のビットの数値は負論理で加算される。つまり、被乗数の符号ビットの数値はそのまま加算され、被乗数のその他のビットの数値は反転された上で加算される。
ステップS112では、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが2ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが2桁下位側にシフトされる。そして、ステップS112の処理が終了すると、ステップS104に進む。
図8のステップS121では、図7のステップS104と同様に、制御回路部4により、符号拡張仮乗数の全ビットに係る数値が認識されたか否か判定される。ここでは、全ビットに係る数値が認識されていなければ、ステップS122に進み、全ビットに係る数値が認識されていれば、図9のステップS131に進む。
ステップS122では、制御回路部4により、符号拡張仮乗数の最下桁からn番目およびn+1番目のビットの数値が認識される。
ステップS123では、制御回路部4により、符号拡張仮乗数の最下桁からn番目のビットの数値が0であるか否か判定される。ここでは、符号拡張仮乗数の最下桁からn番目のビットの数値が0であれば、ステップS124に進み、符号拡張仮乗数の最下桁からn番目のビットの数値が0でなければ、ステップS125に進む。
ステップS124では、制御回路部4により、符号拡張仮乗数の最下桁からn+1番目のビットの数値が0であるか否か判定される。ここでは、符号拡張仮乗数の最下桁からn+1番目のビットの数値が0であれば、ステップS126に進み、符号拡張仮乗数の最下桁からn+1番目のビットの数値が0でなければ、ステップS128に進む。
ステップS125では、図7のステップS108と同様に、制御回路部4により、カウント値nが1つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが1ビット分左にシフトされる。つまり、被乗数のデータが1桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが1ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが1桁下位側にシフトされる。
ステップS126では、図7のステップS111と同様に、制御回路部4から減算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る減算が行われる。具体的には、被乗数の符号ビットの数値は正論理、その他のビットの数値は負論理で加算される。つまり、被乗数の符号ビットの数値はそのまま加算され、被乗数のその他のビットの数値は反転された上で加算される。
ステップS127では、図7のステップS112と同様に、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが2ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが2桁下位側にシフトされる。そして、ステップS127の処理が終了すると、図7のステップS104に進む。
ステップS128では、図7のステップS109と同様に、制御回路部4から加算信号が演算回路部5に出力され、演算回路部5により、シフトレジスタ2に記憶される被乗数のデータに係る加算が行われる。具体的には、被乗数の符号ビットの数値は負論理、その他のビットの数値は正論理で加算される。つまり、被乗数の符号ビットの数値は反転されて加算され、被乗数のその他のビットの数値はそのまま加算される。
ステップS129では、図7のステップS110と同様に、制御回路部4により、カウント値nが2つ増加されるとともに、制御回路部4からシフト制御信号が出力されて、シフトレジスタ2に記憶される被乗数のデータが2ビット分左にシフトされる。つまり、被乗数のデータが2桁上位側にシフトされる。また、このとき、符号拡張・シフトレジスタ3に記憶される符号拡張仮乗数のデータが2ビット分右にシフトされる。つまり、符号拡張仮乗数のデータが2桁下位側にシフトされる。そして、ステップS129の処理が終了すると、ステップS121に進む。
図9のステップS131では、図5のステップS31と同様に、制御回路部4および演算回路部5により、図7のステップS109,S111、および図8のステップS126,S128で加減算された際に負論理で扱われたビットの項に1が代入され、正論理で扱われたビットの項に0が代入された上で加算されることで、オフセット値が算出される。
ステップS132では、制御回路部4および演算回路部5により、ステップS131で算出されたオフセット値の2の補数が所定の定数として算出される。
ステップS133では、図7および図8のステップS101〜S129における順次の加減算によって得られた値に、ステップS132で算出された所定の定数が加算されることで、被乗数と乗数との乗算結果が求められて、本演算処理フローが終了される。
<従来技術との比較>
図10は、演算装置1における被乗数に係る加減算の回数と、従来技術における被乗数に係る加減算の回数とを比較するための図である。図10では、二進法で表現された乗数が26ビットの「01011010100000100111100110」である場合に、被乗数と乗数との乗算を行う際に、被乗数の加減算が行われる桁、つまり被乗数の加減算の回数が示されている。具体的には、図10(a)がブースの乗算アルゴリズムを用いた場合に被乗数の加減算が行われる桁を示し、図10(b)が定数加算法の乗算アルゴリズムを用いた場合に被乗数の加減算が行われる桁を示し、図10(c)が2の補数の定数加算法の乗算アルゴリズムを用いた場合に被乗数の加減算が行われる桁を示し、図10(d)がWS法の乗算アルゴリズムを用いた場合に被乗数の加減算が行われる桁を示し、図10(e)が2の補数のWS法の乗算アルゴリズムを用いた場合に被乗数の加減算が行われる桁を示している。なお、図10では、被乗数に係る加算が行われる桁の数値が太線Addで囲まれ、被乗数に係る減算が行われる桁の数値が細線Subで囲まれている。
図10(a)で示すように、ブースの乗算アルゴリズムを用いた場合には、合計14回の被乗数に係る加減算(7回の被乗数に係る加算、および7回の被乗数に係る減算)が行われる。また、図10(b)で示すように、定数加算法の乗算アルゴリズムを用いた場合には、12回の被乗数に係る加算が行われる。また、図10(c)で示すように、2の補数の定数加算法の乗算アルゴリズムを用いた場合には、合計14回の被乗数に係る加減算(1回の被乗数に係る加算、および13回の被乗数に係る減算)が行われる。これに対して、図10(d),(e)で示すように、WS法の乗算アルゴリズムおよび2の補数のWS法の乗算アルゴリズムを用いた場合には、合計10回の被乗数に係る加減算(6回の被乗数に係る加算、および4回の被乗数に係る減算)が行われる。したがって、従来技術と比較して、WS法の乗算アルゴリズムおよび2の補数のWS法の乗算アルゴリズムを用いた場合には、被乗数に係る加減算の回数が低減される。
ここで、二進法で表現されるNビット(Nは2以上の自然数)の乗数と被乗数とを乗算する場合について、被乗数に係る加減算の最大回数を考える。ブースの乗算アルゴリズムを用いる場合、仮に乗数を構成するビットの数値の配列が1と0とが全長に渡って交互に並ぶものとなると、被乗数に係る加減算の回数が最大回数である(N−1)回となる。また、定数加算法の乗算アルゴリズムを用いる場合、仮に乗数を構成するビットの数値の配列が1が全長に渡って並ぶものとなると、被乗数に係る加減算の回数が最大回数であるN回となる。更に、2の補数の定数加算法の乗算アルゴリズムを用いる場合、仮に乗数の2の補数を構成するビットの数値の配列が1が全長に渡って並ぶものとなると、被乗数に係る加減算の回数が最大回数であるN回となる。
これに対して、WS法の乗算アルゴリズムを用いる場合には、仮に乗数を構成するビットの数値の配列が1と0とが全長に渡って交互に並ぶものとなると、Nが偶数の場合には、被乗数に係る加減算の回数が最大回数であるN/2回となり、Nが奇数の場合には、被乗数に係る加減算の回数が最大回数である(N+1)/2回となる。また、2の補数のWS法の乗算アルゴリズムを用いる場合にも、仮に乗数の2の補数を構成するビットの数値の配列が1と0とが全長に渡って交互に並ぶものとなると、Nが偶数の場合には、被乗数に係る加減算の回数が最大回数であるN/2回となり、Nが奇数の場合には、被乗数に係る加減算の回数が最大回数である(N+1)/2回となる。
したがって、乗数が4ビット以上のものであれば、ブースの乗算アルゴリズム、定数加算法の乗算アルゴリズム、および2の補数の定数加算法の乗算アルゴリズムを用いる従来技術と比べて、WS法の乗算アルゴリズムおよび2の補数のWS法の乗算アルゴリズムを用いる場合には、乗数と被乗数とを乗算する際における被乗数に係る加減算の最大回数が相対的に少なくなる。そして、演算回路部5の構成や性能が、被乗数に係る加減算の最大回数に合わせたものとなることを考慮すると、WS法の乗算アルゴリズムおよび2の補数のWS法の乗算アルゴリズムを採用することで、従来技術と比較して、乗算における加算および減算の最大回数が低減されるため、演算装置1の小型化および演算速度の向上を図ることができる。このような効果は、乗数のビット数が増える程、顕著となる。
図11は、二進法で表現された乗数が図10で示すような26ビットの「01011010100000100111100110」である場合に、被乗数に係る加減算および所定の定数の加算を行う演算態様を示すイメージ図である。図11では、被乗数の加算に係るビット列Addと、被乗数の減算に係るビット列Subと、所定の定数の加算に係るビット列Constとが模式的に示されており、ビット列Add,Sub,Constが相互に加算されることで、被乗数と乗数との乗算結果が得られる。
なお、以上では、被乗数および乗数の双方が変数である場合にも被乗数と乗数との乗算が可能な構成を示して説明したが、これに限られない。例えば、乗数が既知の定数である場合には、予め乗数のビットの数値の配列を解析して、被乗数の加減算を行う桁、ならびに加算するための所定の定数を求めておくことができる。そして、乗算を実際に行う際には、乗数のビットを解析することなく、シフトレジスタにおいて被乗数のデータを決められた桁までシフトしつつ該被乗数に係る加算または減算を順次に行うとともに、所定の定数を加算するようにすれば良い。このような構成を採用することで、例えば、演算装置1から符号拡張・シフトレジスタ3を取り除き、制御回路部4および演算回路部5の構成の簡略化を図った演算回路を実現することができる。
<WS法の乗算アルゴリズムの画像表示装置への応用>
図12は、ビデオカメラ10、テレビ20、および画像表示装置30を備えて構成される映像システムを例示する図である。ビデオカメラ10は、NTSCの規格に基づく画像信号(以下「NTSC信号」と称する)を取得して、該NTSC信号をテレビ20および画像表示装置30に提供する。テレビ20は、アナログテレビとして構成され、NTSC信号をそのまま利用して、該NTSC信号に基づく動画を表示する。一方、画像表示装置30は、NTSC信号から、赤(R)色、緑(G)色、青(B)色の3原色の画像信号(以下「RGB画像信号」と称する)に変換した上で、該RGB画像信号に基づく動画を表示する。この画像表示装置30では、NTSC信号からRGB画像信号を生成する際に、上述したWS法の乗算アルゴリズムを利用する。以下、画像表示装置30の構成について説明する。
<画像表示装置の構成>
図13は、画像表示装置30の機能構成を示すブロック図である。画像表示装置30は、信号変換部31、RGB変換部32、タイミング制御部33、表示パネルDP、XドライバXd、およびYドライバYdを備える。
信号変換部31は、NTSC信号を受け付け、アナログ動画信号であるNTSC信号を所定の規格(例えば、ITU−R BT.601)で規定されたフォーマットに沿ってデジタル信号に変換し、該デジタル信号の各フレームを構成する各画素の信号(画素信号)について、いわゆるYC分離(輝度信号と色差信号とを高精度に分離する技術)を行う。そして、信号変換部31は、YC分離によって得られる輝度信号であるYのデータと、色差信号であるCr,Cbのデータとを出力する。
RGB変換部32は、上式(1)〜(3)で示される所定の変換式に沿って、各フレームの画素信号について、入力画像信号であるY,Cr,Cbのデータを表示用画像信号であるR,G,Bのデータ(RGB画像信号)に変換する。図14は、RGB変換部32の構成を例示する図である。正数を示すYのデータが、上式(1)〜(3)の演算を行う回路に供され、整数を示すCrのデータが、上式(1),(2)の演算を行う回路に供され、整数を示すCbのデータが、上式(2),(3)の演算を行う回路に供される。このRGB変換部32では、上式(1)〜(3)に沿った演算に上述したWS法の乗算アルゴリズムを利用する。この演算の具体例については後述する。
タイミング制御部33は、NTSC信号の水平同期信号Hsyncおよび垂直同期信号Vsyncに基づき、XドライバXdに制御信号(例えば、スタートパルスSTH)を出力するとともに、YドライバYdに制御信号(例えば、スタートパルスSTV)を出力することで、表示パネルDPにおける動画像の表示タイミングを制御する。
表示パネルDPは、例えば、有機EL素子などの発光素子をそれぞれ含む多数の発光部がマトリックス状に配列されたディスプレイを備え、例えば、横320×縦240のドットからなるQVGAの解像度の画像が再生可能に構成されている。ここでは、多数の発光部は、それぞれR色の光を発する発光素子を有する発光部と、G色の光を発する発光素子を有する発光部と、B色の光を発する発光素子を有する発光部とによって構成されている。そして、表示パネルDPは、RGB画像信号に基づいて画像を表示する表示部として機能する。
XドライバXdは、タイミング制御部33からのスタートパルスSTH、およびRGB変換部32からのRGB画像信号に基づき、該RGB画像信号に含まれる各画素のデータ信号(画素信号)に応じた電位を表示パネルDPに配設された画像信号線に付与する。
YドライバYdは、タイミング制御部33からのスタートパルスSTVに応答して、表示パネルDPに配設された走査信号線に所定の電位を付与する。
<WS法の乗算アルゴリズムを用いたRGB変換>
Y,Cr,CbのデータをR,G,Bのデータに変換する変換式は、具体的には、下式(4)〜(6)で示される。
R=1.164×(Y−16)+1.596×(Cr−128) ・・・(4)
G=1.164×(Y−16)−0.391×(Cb−128)−0.813×(Cr−128) ・・・(5)
B=1.164×(Y−16)+2.018×(Cb−128) ・・・(6)。
ここでは、Yが0〜255の範囲で変化する場合が示されている。そして、上式(4)〜(6)において、(Y−16)となるのは、Yの0〜15は同期信号として使用され、16〜255が実際の輝度信号になるためである。但し、Yが0〜15のときには、輝度信号が負の値を示すことになるが、この場合には、RGB色の発光が不要となるため、RGBの信号を0とする。また、Cr,Cbについては、正負を含む整数を示す8ビットの数値であり、(Cr−128)および(Cb−128)は、それぞれ8ビットの整数(−128〜127)の範囲で変化する。
ここで、下式(7),(8)の関係が成立するものとして、上式(4)〜(6)に下式(7),(8)を代入して整理すると、下式(9)〜(11)が得られる。
(Cr−128)=(Cr*) ・・・(7)
(Cb−128)=(Cb*) ・・・(8)。
R=1.164×(Y)+1.596×(Cr*)−18.624 ・・・(9)
G=1.164×(Y)−0.391×(Cb*)−0.813×(Cr*)−18.624 ・・・(10)
B=1.164×(Y)+2.018×(Cb*)−18.624 ・・・(11)。
更に、上式(9)〜(11)の各定数の表現を十進法から二進法に書き換えると、下式(12)〜(14)が得られる。
R=1.00101010×(Y)+1.10011001×(Cr*)−10010.10100000 ・・・(12)
G=1.00101010×(Y)−0.01100100×(Cb*)−0.11010000×(Cr*)−10010.10100000 ・・・(13)
B=1.00101010×(Y)+10.00000101×(Cb*)−10010.10100000 ・・・(14)。
図15〜図17は、WS法の乗算アルゴリズムを使用して上式(12)〜(14)にそれぞれ従った演算を行う過程を示す図である。詳細には、図15では、上式(12)に従ってY,Cr*のデータからRのデータを導出する演算を行う過程が示され、図16では、上式(13)に従ってY,Cb*,Cr*のデータからGのデータを導出する演算を行う過程が示され、図17では、上式(14)に従ってY,Cb*のデータからBのデータを導出する演算を行う過程が示されている。また、ここでは、(Y)を、二進法の表現で最上位が符号ビットではない8ビットの「(Y7)(Y6)(Y5)(Y4)(Y3)(Y2)(Y1)(Y0)」と表し、Y7〜Y0には、0または1の数値が入る。また、(Cr)を、二進法の表現で最上位が符号ビットである8ビットの「(Cr7)(Cr6)(Cr5)(Cr4)(Cr3)(Cr2)(Cr1)(Cr0)」と表し、(Cb)を、二進法の表現で最上位ビットが符号ビットである8ビットの「(Cb7)(Cb6)(Cb5)(Cb4)(Cb3)(Cb2)(Cb1)(Cb0)」と表す。なお、Cr0〜Cr7およびCb0〜Cb7には、0または1の数値が入る。更に、図15〜図17では、小数点が入る桁を明確化するために、小数点が入る位置に太破線が付されている。
ここで、(Cr*)および(Cb*)すなわち(Cr−128)および(Cb−128)については、(Cr)および(Cb)と比較して最上位ビットが反転する。例えば、(Cr)の最上位ビットの数値が"1"である場合には、(Cr−128)は正の値となり、その値を表す整数の符号ビットの値は"0"となる。また、(Cr)の最上位ビットの数値が"0"である場合には、(Cr−128)は負の値となり、その値を表す整数の符号ビットの値は"1"となる。具体的には、(Cr*)すなわち(Cr−128)は、二進法の表現では「(notCr7)(Cr6)(Cr5)(Cr4)(Cr3)(Cr2)(Cr1)(Cr0)」となり、(Cb*)すなわち(Cb−128)は、二進法の表現では「(notCb7)(Cb6)(Cb5)(Cb4)(Cb3)(Cb2)(Cb1)(Cb0)」となる。なお、(notCr7)は(Cr7)のビットを反転したものを示し、(notCb7)は(Cb7)のビットを反転したものを示す。したがって、WS法の乗算アルゴリズムの演算では、最上位ビットを負論理として加算を行う場合には、最上位ビットの数値は(Cb7)および(Cr7)の正論理で加算が行われることになるが、所定の定数を求めるためのオフセット値の算出については、最上位ビットは負論理の項として扱われる。
以下、図15〜図17を参照しつつ、被乗数が正負の双方を取り得るCb,Crの項についてWS法の乗算アルゴリズムを使用して上式(12)〜(14)にそれぞれ従った演算を行う過程について説明する。なお、図15〜図17では、ハッチングが付されず且つ単に太枠で囲まれたビットは、正論理で加算されるが、オフセット値の算出については負論理のビットの項として扱われる。また、ハッチングが付され且つ太線で囲まれたビットは、負論理で加算され、且つオフセット値の算出についても負論理のビットの項として扱われる。更に、ハッチングが付され且つ細線で囲まれたビットは、負論理で加算されるが、オフセット値の算出については正論理のビットの項として扱われる。
図15(a)では、1〜4行目が「+1.00101010×(Y)」の項の演算を示し、5〜9行目が「1.10011001×(Cr*)」の項の演算を示し、10行目がオフセット値を相殺するための所定の定数を示し、11行目が「10010.10100000」の負数を示し、12行目が小数点以下を四捨五入するために加算する数を示す。そして、図15(b)では、図15(a)で示すビット列に係る加算のうち、10〜12行目の定数部分をまとめたものが示されている。
図16(a)では、1〜4行目が「+1.00101010×(Y)」の項の演算を示し、5〜7行目が「−0.01100100×(Cb*)」の項の演算を示し、8〜10行目が「−0.11010000×(Cr*)」の項の演算を示し、11行目がオフセット値を相殺するための所定の定数を示し、12行目が「10010.10100000」の負数を示し、13行目が小数点以下を四捨五入するために加算する数を示す。そして、図16(b)では、図16(a)で示すビット列に係る加算のうち、11〜13行目の定数部分をまとめたものが示されている。
図17(a)では、1〜4行目が「+1.00101010×(Y)」の項の演算を示し、5〜7行目が「+10.00000101×(Cb*)」の項の演算を示し、8行目がオフセット値を相殺するための所定の定数を示し、9行目が「10010.10100000」の負数を示し、10行目が小数点以下を四捨五入するために加算する数を示す。そして、図17(b)では、図17(a)で示すビット列に係る加算のうち、8〜10行目の定数部分をまとめたものが示されている。
このように、Y,Cr,CbのデータをR,G,Bのデータに変換する際に、WS法の乗算アルゴリズムを採用することで、入力画像信号に相当するY,Cr,Cbのデータから、表示用信号に相当するRGBのデータに変換するための構成の簡略化と演算速度の高速化とが容易に図られる。このため、画像表示装置30の小型化および製造コストの低減が図られる。
<変形例>
本発明は上述の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更、改良等が可能である。
◎例えば、上記実施形態に係る演算装置1では、例えば、論理回路を用いて演算を行うことを基本としていたが、これに限られない。例えば、演算装置1における演算を行う構成の一部または全部の構成がCPUにおいてソフトウエアが実行されることで機能的に実現されても良い。以下、被乗数と乗数との乗算アルゴリズムをソフトウエアを用いて実現する演算装置1Aを具体例として説明する。
図18は、本発明の変形例に係る演算装置1Aの概略構成を示す図である。図18で示すように、演算装置1Aは、CPU100およびメモリ200をバスラインBLで接続した一般的なコンピュータの構成を有する。なお、メモリ200は、適宜RAMやROMやハードディスクなどの記憶部を含む。また、バスラインBLは、適宜インターフェース(図示を省略)などを介して表示部300および操作部400に接続される。そして、CPU100がメモリ200に格納されるプログラムに従って動作することにより、演算装置1Aの各種機能および動作が実現される。
図19は、演算装置1Aにおいて実現される機能的な構成を示すブロック図である。図19で示すように、演算装置1Aは、CPU100とメモリ200との協働により機能的な構成として、被乗数保持部101、乗数保持部102、シフト反転部103、デコーダ部104、モードマシン部105、タイミング制御部106、および加算部107を備える。例えば、被乗数保持部101、および乗数保持部102は、主にメモリ200などによって実現され、シフト反転部103、デコーダ部104、モードマシン部105、タイミング制御部106、および加算部107は、主に、CPU100などによって実現される。
被乗数保持部101は、外部からバスラインBLを介して入力されてくる被乗数のデータを一時的に保持し、該被乗数のデータが適宜シフト反転部103によって読み出される。
乗数保持部102は、外部からバスラインBLを介して入力されてくる乗数のデータを一時的に保持する。また、乗数保持部102では、乗数のデータのビット数に応じて、符号拡張が行われる。そして、該乗数のビット列が2ビットずつ右(すなわち下位側)に順次にシフトされる毎に、該乗数のビット列から連続する3ビットの数値がデコーダ部104に読み出される。
シフト反転部103は、被乗数を+2倍した数値(以下「+2倍被乗数」と称する)のデータ、被乗数を−1倍した数値(以下「−1倍被乗数」と称する)のデータ、および被乗数を−2倍した数値(以下「−2倍被乗数」と称する)のデータを生成する。つまり、シフト反転部103は、+2倍被乗数、被乗数の+1倍の数値(以下「+1倍被乗数」と称する)、−1倍被乗数、および−2倍被乗数の各データを準備する。また、シフト反転部103は、デコーダ部104からの指令に従って、+2倍被乗数、+1倍被乗数、−1倍被乗数、および−2倍被乗数のうちの何れかの数値のデータを加算部107に対して出力する。
デコーダ部104は、乗数保持部102から読み出した連続する3ビットの数値の配列パターン(ビットパターン)に応じて、モードマシン部105に対して、加算基調の演算を行うモード(以下「モード0」と称する)と減算基調の演算を行うモード(以下「モード1」と称する)との間でモードを切り替えるための指令を送出する。また、デコーダ部104は、モードマシン部105によって設定されているモードを参照しつつ、乗数保持部102から読み出した連続する3ビットの数値の配列パターン(ビットパターン)に応じて、+2倍被乗数、+1倍被乗数、−1倍被乗数、および−2倍被乗数のうちの何れの数値の加算を行うのかを決定し、決定した結果に応じた指令をシフト反転部103に出力する。
モードマシン部105は、デコーダ部104からの指令に従って、モード0とモード1との間でモードを切り替えて、該モードの設定状態を示す情報を保持する。
タイミング制御部106は、スタートパルスに応じて、乗数および被乗数のデータの入力のタイミングと、各構成の動作とが適宜同期するように、演算装置1Aの動作を制御する。
加算部107は、シフト反転部103から出力される+2倍被乗数、+1倍被乗数、−1倍被乗数、および−2倍被乗数のうちの何れかの数値を順次に加算する。但し、加算部107は、デコーダ部104において連続する3ビットの数値の配列パターン(ビットパターン)が認識されるごとに、それまでの加算結果を示すビット列が左(すなわち上位側)に2ビットずつシフトされる。なお、加算部107における加算では、最上位ビットの桁が揃うように、+2倍被乗数、+1倍被乗数、−1倍被乗数、および−2倍被乗数の符号拡張が行われる。
図20から図25は、演算装置1Aにおける演算処理フローを示すフローチャートである。本演算処理フローは、演算装置1Aへの被乗数および乗数のデータの入力に応答して開始される。
ステップS201では、乗数保持部102により、乗数のデータのビット数が2n+1(nは自然数)であるか否か判定される。ここでは、ビット数が2n+1であれば、ステップS202に進み、ビット数が2n+1でなければ、ステップS203に進む。
ステップS202では、乗数保持部102により、乗数について2ビット分符号拡張が行われ、ステップS204に進む。ここで符号拡張された乗数を「符号拡張乗数」と称する。
ステップS203では、乗数保持部102により、乗数について1ビット分符号拡張が行われ、ステップS204に進む。ここで符号拡張された乗数を「符号拡張乗数」と称する。
ステップS204では、シフト反転部103により、被乗数保持部101から被乗数のデータが読み出されて、+2倍被乗数、+1倍被乗数、−1倍被乗数、および−2倍被乗数がそれぞれ算出される。
ステップS205では、モードマシン部105により、デフォルトのモードとして、加算基調の演算を行うモード0が設定される。
ステップS206では、デコーダ部104により、符号拡張乗数の最下位から3ビットが判定対象として設定される。
ステップS207では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"000"であるか否か判定される。ここで、ビットパターンが"000"であれば、加減算を行うことなく、図22のステップS231に進み、ビットパターンが"000"でなければ、ステップS208に進む。
ステップS208では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"001"であるか否か判定される。ここで、ビットパターンが"001"であれば、ステップS209に進み、ビットパターンが"001"でなければ、図21のステップS211に進む。
ステップS209では、シフト反転部103から加算部107に対して+1倍被乗数のデータが出力され、加算部107により、+1倍被乗数が符号拡張されつつ加算される。
図21のステップS211では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"010"であるか否か判定される。ここで、ビットパターンが"010"であれば、ステップS212に進み、ビットパターンが"010"でなければ、ステップS213に進む。
ステップS212では、シフト反転部103から加算部107に対して+2倍被乗数のデータが出力され、加算部107により、+2倍被乗数が符号拡張されつつ加算されて、図22のステップS231に進む。
ステップS213では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"011"であるか否か判定される。ここで、ビットパターンが"011"であれば、ステップS214に進み、ビットパターンが"011"でなければ、ステップS216に進む。
ステップS214では、モードマシン部105により、加算基調の演算を行うモード0から減算基調の演算を行うモード1にモード設定が変更される。
ステップS215では、シフト反転部103から加算部107に対して−1倍被乗数のデータが出力され、加算部107により、−1倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−1倍被乗数の加算は、+1倍被乗数の減算と同一の演算となる。
ステップS216では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"100"であるか否か判定される。ここで、ビットパターンが"100"であれば、加減算を行うことなく、図22のステップS231に進み、ビットパターンが"100"でなければ、ステップS217に進む。
ステップS217では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"101"であるか否か判定される。ここで、ビットパターンが"101"であれば、ステップS218に進み、ビットパターンが"101"でなければ、ステップS219に進む。
ステップS218では、シフト反転部103から加算部107に対して+1倍被乗数のデータが出力され、加算部107により、+1倍被乗数が符号拡張されつつ加算され、図22のステップS231に進む。
ステップS219では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"110"であるか否か判定される。ここで、ビットパターンが"110"であれば、ステップS220に進み、ビットパターンが"110"でなければ、ステップS222に進む。なお、ステップS222に進む場合には、判定対象の3ビットのビットパターンが"111"であることを意味する。
ステップS220では、ステップS214と同様に、モードマシン部105により、加算基調の演算を行うモード0から減算基調の演算を行うモード1にモード設定が変更される。
ステップS221では、シフト反転部103から加算部107に対して−2倍被乗数のデータが出力され、加算部107により、−2倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−2倍被乗数の加算は、+2倍被乗数の減算と同一の演算となる。
ステップS222では、ステップS214と同様に、モードマシン部105により、加算基調の演算を行うモード0から減算基調の演算を行うモード1にモード設定が変更される。
ステップS223では、ステップS215と同様に、シフト反転部103から加算部107に対して−1倍被乗数のデータが出力され、加算部107により、−1倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−1倍被乗数の加算は、+1倍被乗数の減算と同一の演算となる。
図22のステップS231では、ステップS202,S203で符号拡張されたビットも含めた符号拡張乗数の全ビットについてのビットパターンの判定が終了しているか否か判定される。ここでは、符号拡張乗数の全ビットについてのビットパターンの判定が終了していれば、本動作フローが終了され、符号拡張乗数の全ビットについてのビットパターンの判定が終了していなければ、ステップS232に進む。
ステップS232では、乗数保持部102により、符号拡張乗数のビット列が2ビット右(すなわち下位側)にシフトされて、デコーダ部104による判定対象の3ビットが2ビット左(すなわち上位側)に設定される。つまり、判定対象の3ビットが、符号拡張乗数の2ビット分上位側に変更される。
ステップS233では、加算部107により、これまでの加算結果を示すビット列が相対的に右(すなわち下位側)に2ビット分シフトされて、図20のステップS207に進む。
図23のステップS234では、ステップS202,S203で符号拡張されたビットも含めた符号拡張乗数の全ビットについてのビットパターンの判定が終了しているか否か判定される。ここでは、符号拡張乗数の全ビットについてのビットパターンの判定が終了していれば、本動作フローが終了され、符号拡張乗数の全ビットについてのビットパターンの判定が終了していなければ、ステップS235に進む。
ステップS235では、乗数保持部102により、符号拡張乗数のビット列が2ビット右(すなわち下位側)にシフトされて、デコーダ部104による判定対象の3ビットが2ビット左(すなわち上位側)に設定される。つまり、判定対象の3ビットが、符号拡張乗数の2ビット分上位側に変更される。
ステップS236では、加算部107により、これまでの加算結果を示すビット列が相対的に左(すなわち下位側)に2ビット分シフトされて、図24のステップS241に進む。
なお、ステップS231,S234で本演算処理フローが終了される場合には、加算部107において算出されている加算結果が、被乗数と乗数との乗算結果として、加算部107から出力される。
図24のステップS241では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"000"であるか否か判定される。ここで、ビットパターンが"000"であれば、ステップS242に進み、ビットパターンが"000"でなければ、ステップS244に進む。
ステップS242では、モードマシン部105により、減算基調の演算を行うモード1から加算基調の演算を行うモード0にモード設定が変更される。
ステップS243では、ステップS218と同様に、シフト反転部103から加算部107に対して+1倍被乗数のデータが出力され、加算部107により、+1倍被乗数が符号拡張されつつ加算され、図22のステップS231に進む。
ステップS244では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"001"であるか否か判定される。ここで、ビットパターンが"001"であれば、ステップS245に進み、ビットパターンが"001"でなければ、ステップS247に進む。
ステップS245では、ステップS242と同様に、モードマシン部105により、減算基調の演算を行うモード1から加算基調の演算を行うモード0にモード設定が変更される。
ステップS246では、ステップS212と同様に、シフト反転部103から加算部107に対して+2倍被乗数のデータが出力され、加算部107により、+2倍被乗数が符号拡張されつつ加算され、図22のステップS231に進む。
ステップS247では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"010"であるか否か判定される。ここで、ビットパターンが"010"であれば、ステップS248に進み、ビットパターンが"010"でなければ、図25のステップS251に進む。
ステップS248では、シフト反転部103から加算部107に対して−1倍被乗数のデータが出力され、加算部107により、−1倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−1倍被乗数の加算は、+1倍被乗数の減算と同一の演算となる。
図25のステップS251では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"011"であるか否か判定される。ここで、ビットパターンが"011"であれば、加減算を行うことなく、図23のステップS234に進み、ビットパターンが"011"でなければ、ステップS252に進む。
ステップS252では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"100"であるか否か判定される。ここで、ビットパターンが"100"であれば、ステップS253に進み、ビットパターンが"100"でなければ、ステップS255に進む。
ステップS253では、ステップS242と同様に、モードマシン部105により、減算基調の演算を行うモード1から加算基調の演算を行うモード0にモード設定が変更される。
ステップS254では、ステップS243と同様に、シフト反転部103から加算部107に対して+1倍被乗数のデータが出力され、加算部107により、+1倍被乗数が符号拡張されつつ加算され、図22のステップS231に進む。
ステップS255では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"101"であるか否か判定される。ここで、ビットパターンが"101"であれば、ステップS256に進み、ビットパターンが"101"でなければ、ステップS257に進む。
ステップS256では、シフト反転部103から加算部107に対して−2倍被乗数のデータが出力され、加算部107により、−2倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−2倍被乗数の加算は、+2倍被乗数の減算と同一の演算となる。
ステップS257では、デコーダ部104により、判定対象である3ビットの数値の配列パターン(ビットパターン)が"110"であるか否か判定される。ここで、ビットパターンが"110"であれば、ステップS258に進み、ビットパターンが"110"でなければ、加減算を行うことなく、図23のステップS234に進む。
ステップS258では、シフト反転部103から加算部107に対して−1倍被乗数のデータが出力され、加算部107により、−1倍被乗数が符号拡張されつつ加算され、図23のステップS234に進む。なお、ここでは、−1倍被乗数の加算は、+1倍被乗数の減算と同一の演算となる。
以上のように、被乗数と乗数との乗算アルゴリズムをソフトウエアを用いて実現する演算装置1Aについて説明したが、演算装置1Aでは、ビットを反転させる負論理や所定の定数の加算などを行わない。これは、ソフトウエアによってCPUで実現される演算では、ビットを反転させる演算のルーチンや、所定の定数の加算を行うための演算のルーチンが別途必要になるため、これらの演算については、行われない方が演算速度や演算による負荷低減を図る上で好ましい。したがって、演算装置1Aでは、被乗数の符号拡張を行いつつ、被乗数に係る加算および減算が行われることで、演算の簡略化が図られて、被乗数と乗数との乗算結果が求められるように構成される。
これに対して、上記実施形態に係る演算装置1の様に、例えば、論理回路を用いて演算を行うことを基本とする場合には、ビットを反転させる演算は、NAND回路などによって容易に実現され、演算に対する論理圧縮も可能である。このため、所定の定数を算出して、加算する演算も容易に実現可能である。また、所定の定数を加算する方式では、加減算する被乗数の符号拡張が不要となり、論理回路の構成の複雑化も招かない。したがって、上記実施形態に係る演算装置1の様に、例えば、論理回路を用いて演算を行うことを基本とする場合には、ビットの反転や、所定の定数の加算を行う演算を採用することで、被乗数の符号拡張を行うことなく、乗算を行うことが可能となり、演算を行う部分の構成の簡略化が図られる。
◎また、上記実施形態に係る画像表示装置30では、明度および色差を示す信号であるY,Cr,Cbの信号を、所定のルールに従ってRGBの各色の階調を示す信号に変換する演算において、WS法の乗算アルゴリズムを適用する例を挙げて説明したが、これに限られない。例えば、温度の変化に対して、いわゆるγ変換のためのテーブルを補正する演算に、WS法の乗算アルゴリズムを適用するようにしても良い。
◎また、上記実施形態に係る画像表示装置30では、RGBの3原色の光の組合せによって各種画像が表現されたが、これに限られず、例えば、イエロー(Y)、マゼンタ(M)、シアン(C)などのその他の複数の色の組合せによって各種画像が表現されても良い。なお、このような構成においても、上記実施形態と同様に、明度および色差を示す信号を所定のルールに従って各色の階調を示す信号に変換するための演算にWS法の乗算アルゴリズムを適用すれば良い。
本発明の実施形態に係る演算装置1の機能構成を示すブロック図である。 本発明の変形例に係る演算装置1aの機能構成を示すブロック図である。 演算装置1における演算処理フローを示すフローチャートである。 演算装置1における演算処理フローを示すフローチャートである。 演算装置1における演算処理フローを示すフローチャートである。 演算装置1における計算例を説明するための図である。 本発明の実施形態のバリエーションに係る演算処理フローを示すフローチャートである。 本発明の実施形態のバリエーションに係る演算処理フローを示すフローチャートである。 本発明の実施形態のバリエーションに係る演算処理フローを示すフローチャートである。 演算装置1における被乗数に係る加減算の回数と、従来技術における被乗数に係る加減算の回数とを比較するための図である。 被乗数の加減算と定数加算とを行う演算態様を示すイメージ図である。 映像システムを例示する図である。 画像表示装置の機能構成を示すブロック図である。 RGB変換部におけるデータ変換について説明するための図である。 R色に係るデータ変換を説明するための図である。 G色に係るデータ変換を説明するための図である。 B色に係るデータ変換を説明するための図である。 本発明の変形例に係る演算装置1Aの概略構成を示す図である。 本発明の変形例に係る演算装置1Aの機能構成を示すブロック図である。 演算装置1Aにおける演算処理フローを示すフローチャートである。 演算装置1Aにおける演算処理フローを示すフローチャートである。 演算装置1Aにおける演算処理フローを示すフローチャートである。 演算装置1Aにおける演算処理フローを示すフローチャートである。 演算装置1Aにおける演算処理フローを示すフローチャートである。 演算装置1Aにおける演算処理フローを示すフローチャートである。 ブースの乗算アルゴリズムの演算処理フローを示すフローチャートである。 十進法の数値に対応する二進法の4ビットの整数表記を示す図である。 ブースの乗算アルゴリズムによる計算例を説明するための図である。 定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。 定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。 定数加算法の乗算アルゴリズムによる計算例を説明するための図である。 2の補数の定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。 2の補数の定数加算法の乗算アルゴリズムの演算処理フローを示すフローチャートである。 2の補数の定数加算法の乗算アルゴリズムによる計算例を説明するための図である。
符号の説明
1,1a,1A 演算装置
2 シフトレジスタ
2a レジスタ
3 符号拡張・シフトレジスタ
4,4a 制御回路部
5,5a 演算回路部
30 画像表示装置
31 信号変換部
32 RGB変換部
33 タイミング制御部
100 CPU
101 被乗数保持部
102 乗数保持部
103 シフト反転部
104 デコーダ部
105 モードマシン部
106 タイミング制御部
107 加算部
200 メモリ
300 表示部
400 操作部
BL バスライン
DP 表示パネル
Xd Xドライバ
Yd Yドライバ

Claims (14)

  1. 二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、
    前記乗数を記憶する乗数記憶部と、
    前記乗数におけるビットの数値の下桁側からの配列に応じて、加算基調の演算を行った後に、該加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行うことを決定する決定部と、
    を備え、
    前記加算基調の演算が、
    前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、
    前記減算基調の演算が、
    前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする演算装置。
  2. 請求項1に記載の演算装置であって、
    前記被乗数を記憶する被乗数記憶部と、
    前記決定部による決定結果に応じた演算を行う演算部と、
    を更に備えることを特徴とする演算装置。
  3. 二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、
    前記被乗数を記憶する被乗数記憶部と、
    前記乗数におけるビットの数値の下桁側からの配列に応じて、加算基調の演算を行った後に、該加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行う演算部と、
    を備え、
    前記加算基調の演算が、
    前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、
    前記減算基調の演算が、
    前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする演算装置。
  4. 請求項2または請求項3に記載の演算装置であって、
    前記演算部が、
    前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、
    前記所定の定数が、
    前記被乗数に0を代入して、前記配列に応じて、前記加算基調の演算を行った後に、該加算基調の演算および前記減算基調の演算のうちの少なくとも一方の演算を行うことで得られる演算結果の2の補数であることを特徴とする演算装置。
  5. 請求項2または請求項3に記載の演算装置であって、
    前記演算部が、
    前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、
    前記所定の定数が、
    前記演算部によって前記加算および減算を行う際に負論理で扱われたビットに係る項に1を代入し、正論理で扱われたビットに係る項に0を代入した上で加算した結果の2の補数であることを特徴とする演算装置。
  6. 二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、
    前記乗数を記憶する乗数記憶部と、
    前記乗数におけるビットの数値の下桁側からの配列を認識して、前記配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行うことを決定する決定部と、
    を備えることを特徴とする演算装置。
  7. 請求項6に記載の演算装置であって、
    前記被乗数を記憶する被乗数記憶部と、
    前記決定部による決定結果に応じた演算を行う演算部と、
    を更に備えることを特徴とする演算装置。
  8. 二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算装置であって、
    前記被乗数を記憶する被乗数記憶部と、
    前記乗数におけるビットの数値の配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行う演算部と、
    を備えることを特徴とする演算装置。
  9. 請求項7または請求項8に記載の演算装置であって、
    前記演算部が、
    前記被乗数の符号ビットを負論理で扱い且つその他のビットを正論理で扱うことで前記被乗数に係る加算を行い、前記被乗数の符号ビットを正論理で扱い且つその他のビットを負論理で扱うことで前記被乗数に係る減算を行うことで得られた演算結果に、所定の定数を加算することによって、前記被乗数と前記乗数との乗算結果を導出し、
    前記所定の定数が、
    前記演算部によって前記加算および減算を行う際に負論理で扱われたビットに係る項に1を代入し、正論理で扱われたビットに係る項に0を代入した上で加算した結果の2の補数であることを特徴とする演算装置。
  10. 請求項2、請求項3、請求項7、及び請求項8の何れかに記載の演算装置であって、
    前記演算部が、
    前記被乗数の符号拡張を行いつつ前記被乗数に係る加算および減算を行うことで、前記被乗数と前記乗数との乗算結果を導出することを特徴とする演算装置。
  11. 請求項1から請求項10の何れかに記載の演算装置を用いて入力画像信号を表示用画像信号に変換する変換部と、
    前記表示用画像信号に基づいて画像を表示する表示部と、
    を備えることを特徴とする画像表示装置。
  12. 請求項11に記載の画像表示装置であって、
    前記変換部が、
    明度および色差を示す信号を所定のルールに従って各色の階調を示す信号に変換するための乗算に、請求項1から請求項10の何れかに記載の演算装置を用いることを特徴とする画像表示装置。
  13. 演算装置において二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算方法であって、
    (a)加算基調の演算を行うステップと、
    (b)前記(a)ステップの後に、前記乗数におけるビットの数値の下桁側からの配列に応じて、前記加算基調の演算および減算基調の演算のうちの少なくとも一方の演算を順次に行うステップと、
    を備え、
    前記加算基調の演算が、
    前記配列が下桁側から順に1、0となる場合に前記被乗数に係る加算を行い、前記配列が下桁側から順に1、1となる場合に前記減算基調の演算に移行しつつ前記被乗数に係る減算を行う演算であり、
    前記減算基調の演算が、
    前記配列が下桁側から順に0、1となる場合に前記被乗数に係る減算を行い、前記配列が下桁側から順に0、0となる場合に前記加算基調の演算に移行しつつ前記被乗数に係る加算を行う演算であることを特徴とする演算方法。
  14. 演算装置において二進法でそれぞれ表現される被乗数と乗数との乗算を行う演算方法であって、
    (a)前記乗数におけるビットの数値の配列が下桁側から順に0が連続した後に1、0となる場合に前記被乗数に係る加算を行うステップと、
    (b)前記配列が下桁側から順に0が連続した後に1、1となる場合に前記被乗数に係る減算を行うステップと、
    (c)前記配列が下桁側から順に1が連続した後に0、1となる場合に前記被乗数に係る減算を行うステップと、
    (d)前記配列が下桁側から順に1が連続した後に0、0となる場合に前記被乗数に係る加算を行うステップと、
    を備えることを特徴とする演算方法。
JP2008198153A 2008-07-31 2008-07-31 演算装置、画像表示装置、および演算方法 Active JP5313586B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008198153A JP5313586B2 (ja) 2008-07-31 2008-07-31 演算装置、画像表示装置、および演算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008198153A JP5313586B2 (ja) 2008-07-31 2008-07-31 演算装置、画像表示装置、および演算方法

Publications (2)

Publication Number Publication Date
JP2010039516A true JP2010039516A (ja) 2010-02-18
JP5313586B2 JP5313586B2 (ja) 2013-10-09

Family

ID=42012040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008198153A Active JP5313586B2 (ja) 2008-07-31 2008-07-31 演算装置、画像表示装置、および演算方法

Country Status (1)

Country Link
JP (1) JP5313586B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111459552B (zh) * 2020-06-16 2020-10-13 之江实验室 一种内存中并行化计算的方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61289425A (ja) * 1985-06-18 1986-12-19 Mitsubishi Electric Corp 乗算回路
JPH03218519A (ja) * 1990-01-24 1991-09-26 Matsushita Electric Ind Co Ltd 乗算装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61289425A (ja) * 1985-06-18 1986-12-19 Mitsubishi Electric Corp 乗算回路
JPH03218519A (ja) * 1990-01-24 1991-09-26 Matsushita Electric Ind Co Ltd 乗算装置

Also Published As

Publication number Publication date
JP5313586B2 (ja) 2013-10-09

Similar Documents

Publication Publication Date Title
JP5035973B2 (ja) 液晶表示装置、その液晶表示装置のコントロールドライバ
KR100677811B1 (ko) 화상 신호 처리 장치 및 방법
CN102103825A (zh) 通过适用于显示面板驱动器的数值运算的显示数据校正
JP2001169303A (ja) 画像表示装置
JP6744757B2 (ja) 画像圧縮装置、画像展開装置、画像圧縮展開システム及び表示ドライバ
US7663678B2 (en) Gamma correction, image processing method and program, gamma correction circuit, image processing apparatus, and display apparatus
JP5526251B1 (ja) 色変換方法、階調値補正装置、コンピュータプログラム及び表示装置
JP3016016B2 (ja) カラーlcd駆動装置
JP5313586B2 (ja) 演算装置、画像表示装置、および演算方法
KR100510308B1 (ko) 화상 처리 장치
JP2002162952A (ja) 表示装置及び疑似階調データ生成方法
JP2017211601A (ja) 色調整回路、表示ドライバ及び表示装置
CN100472602C (zh) 伽马校正方法和电路以及图像处理设备和显示设备
JP2010038968A (ja) 表示制御装置および表示制御方法
JP2001166752A (ja) 液晶表示装置
KR20140018606A (ko) 표시 장치 및 그 구동 방법
JP3618338B2 (ja) 色変換装置および色変換方法
JP4826022B2 (ja) 画像処理回路および画像処理システム
JP3006522B2 (ja) 減色処理装置
JPH1098743A (ja) 輝度信号の計算装置及びその方法
JP2010278873A (ja) 色変換装置
JP3659254B2 (ja) 画像表示装置
JP6684164B2 (ja) 色処理装置、色処理方法
JP2009156957A (ja) カラー映像表示装置とモノクロ映像表示方法
JP3721895B2 (ja) 画像変換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110801

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20111020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121016

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130116

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130704

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5313586

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250