JP4887821B2 - 線形補間演算器 - Google Patents

線形補間演算器 Download PDF

Info

Publication number
JP4887821B2
JP4887821B2 JP2006037944A JP2006037944A JP4887821B2 JP 4887821 B2 JP4887821 B2 JP 4887821B2 JP 2006037944 A JP2006037944 A JP 2006037944A JP 2006037944 A JP2006037944 A JP 2006037944A JP 4887821 B2 JP4887821 B2 JP 4887821B2
Authority
JP
Japan
Prior art keywords
bit
value
bits
interpolation
sign
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.)
Expired - Fee Related
Application number
JP2006037944A
Other languages
English (en)
Other versions
JP2007219714A (ja
Inventor
元伸 外村
恭司 吉野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing 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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2006037944A priority Critical patent/JP4887821B2/ja
Priority to US11/523,351 priority patent/US7840623B2/en
Publication of JP2007219714A publication Critical patent/JP2007219714A/ja
Priority to US12/917,655 priority patent/US8671126B2/en
Priority to US12/917,766 priority patent/US8265427B2/en
Application granted granted Critical
Publication of JP4887821B2 publication Critical patent/JP4887821B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)

Description

本発明は、線形補間演算器に関し、特に、符号をもった2つの補間対象値についての線形補間値をハードウエア回路により演算する技術に関する。
2つの値の中間的な値を補間によって求める方法として、線形補間は最も代表的な方法である。最近では、特に、画像処理の手法として、この線形補間が盛んに利用されている。たとえば、一般に「αブレンド」と呼ばれている画像合成の手法は、画像Aと画像Bとを、α:(1−α)の比率(但し、0≦α≦1)で合成する手法であり、画像Aの画素値と画像Bの画素値との中間的な値を線形補間して求める処理が行われる。また、任意の倍率で画像の拡大や縮小を行う場合にも、線形補間が利用されている。
線形補間の基本原理は、2つの補間対象値AおよびBと、補間割合D(上記αに対応する値であり、0≦D≦1)と、に基づいて、C=(1−D)*A+D*Bなる式(*は乗算を示す記号である)で示される線形補間値Cを求める演算を行うことにある。この式に基づく演算をデジタル演算器を用いて実行する場合、A,B,C,Dはいずれもデジタルデータとして取り扱われ、通常、補間割合Dは、小数部のみを示すビット列で表わされる。この場合、補間割合Dは、1を含まない「0≦D<1」なる値として取り扱うことになる。下記の特許文献1には、このような線形補間演算(αブレンド演算)をパイプライン演算処理で行う演算器の構成が開示されており、特許文献2には、並列演算を基本とした処理で行う演算器の構成が開示されている。
米国特許第5113362号公報 米国特許第5517437号公報
上記各特許文献に開示された演算器をはじめとして、従来の一般的な線形補間演算器の多くは、補間対象値として正の値を想定したものである。通常、画像を構成する個々の画素の画素値は正の値で表現されるため、一般的な画像についての「αブレンド」処理は、2つの正の画素値に基づく線形補間演算を行えば足り、上記各特許文献に開示された演算器で演算が可能である。しかしながら、近年、様々な画像処理が行われるようになってきており、負の画素値をもった画像を取り扱う機会も少なくない。たとえば、何らかの過程で、画像Aの画素値から画像Bの画素値を減算する処理を行う必要がある場合、減算結果として得られる画像Cには、負の画素値をもった画素が含まれる可能性がある。もちろん、線形補間処理の用途は、画像処理だけに限定されるものではないので、この他にも、正負両方の値を考慮した線形補間処理が必要になる事例は少なくない。
このような要望に応えるため、符号をもった2つの補間対象値について線形補間演算を実行することが可能な演算器もいくつか提案されている。しかしながら、従来提案されている符号付線形補間演算器は、いずれも符号付きデジタルデータを取り扱う機能を実現するために複雑な回路構成を採用しており、効率的な演算を行うことができない。
そこで本発明は、符号をもった2つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能な線形補間演算器を提供することを目的とする。
(1) 本発明の第1の態様は、符号をもった2つの補間対象値AおよびBと、補間割合D(但し、0≦D<1)と、に基づいて、C=(1−D)*A+D*Bなる式で示される線形補間値Cを求める演算を行う線形補間演算器において、
符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、an−1,an−2,…,a,aなるビットを有する補間対象値Aを入力する第1の補間対象値入力手段と、
符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、bn−1,bn−2,…,b,bなるビットを有する補間対象値Bを入力する第2の補間対象値入力手段と、
小数部のみを示すnビットのデジタルデータとして、最上位ビット側から順に、dn−1,dn−2,…,d,dなるビットを有する補間割合Dを入力する補間割合入力手段と、
演算式 bn−1−1+(an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1))+(2−n+Σi=0〜n−1(i−1))・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2 (但し、eはdの論理反転ビット)に基づく演算を行うことにより、最上位ビット側から順に、c2n−2,c2n−3,…,c,cなるビットを有する合計(2n−1)ビットのデジタルデータを生成する非符号部演算手段と、
n−1+bn−1なる演算結果(二進表現での0,1,10のいずれか)と、前記非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)と、を加算して得られる二進数を求め、求めた二進数が1ビットの場合には当該ビットを、求めた二進数が2ビットの場合には下位側のビットを、それぞれビットc2n−1の値として求める符号部演算手段と、
「最上位ビット側から順に前記各ビットc2n−1,c2n−2,c2n−3,…,c,cを羅列してなる合計2nビットのデジタルデータ」もしくは「当該2nビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Cを示すデジタルデータとして出力する演算値出力手段と、
を設け、
非符号部演算手段を、
補間割合Dを示すデジタルデータの所定のビットの論理値に基づいて、ビットa もしくはb (但し、i=0,1,2,…,(n−1))のいずれかを選択して出力するセレクタと、
ビットa もしくはb (但し、i=0,1,2,…,(n−1))、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
によって構成し、上記演算式における、同じ桁に含まれている互いに相補的な係数d およびe を有する一対の乗算項の加算演算をセレクタによって行い、その他の加算演算をカウンタによって行うようにしたものである。
(2) 本発明の第2の態様は、上述の第1の態様に係る線形補間演算器において、
符号部演算手段を、
ビットan−1とビットbn−1との排他的論理和を出力する第1のXOR回路と、
非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)を示すビットと、前記第1のXOR回路の出力ビットと、の排他的論理和を出力する第2のXOR回路と、
によって構成したものである。
本発明に係る線形補間演算器は、理想的な形態の演算式に対応した回路構成を有するため、符号をもった2つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能になる。
以下、本発明を図示する実施形態に基づいて説明する。
<<< §1.線形補間と負数表現 >>>
はじめに、一般的な線形補間の基本概念と、デジタルデータにおける一般的な負数表現について簡単に説明しておく。図1は、線形補間演算の基本概念を示すグラフである。図示の例は、x軸上に区間0〜1が設定されており、その両端点においてのみ関数f(x)の値が定義されている場合に、区間0〜1内の任意の位置xにおける関数値を線形補間により求める方法を示している。具体的には、f(0)=A、f(1)=Bである場合に、0≦x≦1の範囲内にある任意のxについての関数値f(x)=Cの値を、数値A,Bを用いた補間演算により求めることになる。
線形補間では、図示のとおり、点Aと点Bとの間に直線を定義し、この直線上にある点Cの縦座標値として、Cの値を求めることになる。ここで、任意の点xの位置を、「区間0〜1を『D:(1−D)』の比で分割する位置」と定義し、Dを補間割合と呼ぶことにすると、求める線形補間値Cは、2つの補間対象値A,Bと補間割合Dとを用いて、C=(1−D)*A+D*Bなる基本式で表わされる演算により求めることができる(*は乗算を示す記号である)。なお、補間割合Dの値は、理論的には、0≦D≦1なる範囲をとることが可能であるが、本実施形態では、デジタルデータを用いた演算を行う都合上、D=1の場合を除外し、0≦D<1なる範囲をとるものとする。
たとえば、A=10,B=20,D=0.4という具体的な数値が与えられた場合、上記基本式に基づいて、C=(1−0.4)*10+(0.4*20)なる演算を行うことにより、C=14という補間値が求まることになる。もちろん、A,Bのいずれか一方、あるいは双方が負の数であっても、上記基本式は有効である。たとえば、A=−10,B=20,D=0.4という具体的な数値が与えられた場合、上記基本式に基づいて、C=(1−0.4)*(−10)+(0.4*20)なる演算を行うことにより、C=+2という補間値が求まる。
続いて、デジタルデータにおける一般的な負数表現について述べる。図2は、2の補数表現により負数を表現する方法を説明する図である。図2の左側の表は、十進表現による数値と二進表現による数値との対応を示している。図示のとおり、4ビットの二進数を用いることにより、0を含めて+7〜−7までの15通りの数値を表現することができる。正の数の二進表現は、「0000」に順に1を加えてゆくことにより行うことができ、負の数の二進表現は、「0000」から順に1を減じてゆくことにより行うことができる。このような負数の表現方法は、「2の補数表現」と呼ばれており、デジタルデータでの一般的な負数の表現方法となっている。
図2の右側には、正の数の各ビットと負の数の各ビットとの対応関係が示されている。すなわち、正の数「A」を4ビットの羅列「a」で表わした場合、負の数「−A」は、この4ビット「a」をすべて論理反転させた後に1を加えた二進数として表現されることになる。たとえば、「+7」の二進表現は、「0111」であるので、「−7」の二進表現は、「0111」の各ビットをすべて反転させて得られる「1000」に、1を加えた「1001」ということになる。絶対値が同じ正の数と負の数は、二進表現した場合、常に上述した関係が成り立つ。
図2の左側の表を見れば明らかなように、負の数を二進表現すると、その最上位ビットは必ず「1」になる。別言すれば、符号をもった二進数の場合、最上位ビットは符号を示す「符号部」、それ以外のビットは絶対値を示す「非符号部」として認識することができる。図示のように、全4ビットから構成される符号をもった二進数の場合、一番左の1ビットが「符号部」、残りの3ビットが「非符号部」ということになる。「符号部」が「0」であれば、その二進数は0または正の数であり、「符号部」が「1」であれば、その二進数は負の数である。
このように、符号をもった二進数は、必ず「符号部」と「非符号部」とを含んでいるため、その取り扱いは少々めんどうである。既に述べたとおり、符号をもった2つの補間対象値についての線形補間演算を実行することが可能な演算器は、従来から提案されている。しかしながら、これら従来の演算器は、いずれも符号をもった二進数を取り扱うために複雑な回路構成を採っており、効率的な演算を行うことができない。本発明は、符号をもった補間対象値についての線形補間演算を、単純な構成で効率的に実行する新たな手法を提案するものである。
<<< §2.基本式の変形 >>>
2つの補間対象値AおよびBについての線形補間は、補間割合をD(但し、0≦D<1)としたときに、C=(1−D)*A+D*Bなる基本式に基づく演算で実行されることは既に述べたとおりである。そこで、まず、二進数で表現されたデジタルデータに、この基本式を適用することを考えてみよう。
図3は、符号をもった補間対象値A,Bと、0≦D<1なる範囲内の値である補間割合Dとを、nビットからなる二進数のビット値を用いて定義した式を示す図である。この図3の上段には、まず、(式1)として、
A=−an−1n−1+an−2n−2+……+a+a
=−an−1n−1+Σj=0〜n−2
なる式が示されている(なお、本願特許請求の範囲および明細書本文では、電子出願の制約上、総和を示す算術演算子Σの下に記載すべきパラメータαおよびΣの上に記載すべきパラメータβを、Σα〜βのような下付き添字として記載することにする)。この(式1)におけるan−1,an−2,…,a,aは、数値Aをnビットからなる二進数として表現した場合の各ビット(0または1)に相当するものであり、an−1が最上位ビット(1番左側のビット)、aが最下位ビット(1番右側のビット)である。上述したとおり、最上位ビットは符号部を構成することになるため、(式1)の右辺第1項である「−an−1n−1」は符号部となり、残りの項である「Σj=0〜n−2」は非符号部となる。
(式1)の右下には、n=4の場合、すなわち、数値Aを4ビットからなる二進数として表現した場合のビット構成図が示されている。この場合、最上位ビットの「a」が符号部となり、残りの3ビットの部分「a」が非符号部となる。この(式1)の意味合いは、具体的な数値を当てはめてみれば容易に理解できよう。たとえば、A=+7を二進表現にすると、図2の表から「0111」である。すなわち、a=0,a=1,a=1,a=1となるが、これを(式1)において、n=4とした式に当てはめてみれば、
A=−0*2+1*2+1*2+1*2=+7
となる。一方、負の数の場合、A=−7を二進表現にすると、図2の表から「1001」であるから、a=1,a=0,a=0,a=1となるが、これを(式1)において、n=4とした式に当てはめてみれば、
A=−1*2+0*2+0*2+1*2=−7
となる。符号部の項にマイナスがついているのは、このように負の数の場合に、正しい値が得られるようにするためである。
同様に、図3の中段には、(式2)として、
B=−bn−1n−1+bn−2n−2+……+b+b
=−bn−1n−1+Σj=0〜n−2
なる式が示されている。この(式2)におけるbn−1,bn−2,…,b,bは、数値Bをnビットからなる二進数として表現した場合の各ビット(0または1)に相当するものであり、bn−1が最上位ビット(1番左側のビット)、bが最下位ビット(1番右側のビット)である。やはり最上位ビットは符号部を構成することになるため、(式2)の右辺第1項である「−bn−1n−1」は符号部となり、残りの項である「Σj=0〜n−2」は非符号部となる。
(式2)の右下には、n=4の場合、すなわち、数値Bを4ビットからなる二進数として表現した場合のビット構成図が示されている。この場合、最上位ビットの「b」が符号部となり、残りの3ビットの部分「b」が非符号部となる。
一方、図3の下段には、(式3)として、
D=dn−1−1+dn−2−2+……+d−n
=Σi=0〜n−1(i−n)
なる式が示されている。この(式3)におけるdn−1,dn−2,…,dは、数値Dを小数部のみを示すnビットからなる二進数として表現した場合の各ビット(0または1)に相当するものであり、dn−1が最上位ビット(1番左側のビット)、dが最下位ビット(1番右側のビット)である。
(式3)の右下には、n=4の場合、すなわち、数値Dを小数部のみを示す4ビットからなる二進数として表現した場合のビット構成図が示されている。図示のとおり、この4ビットは、いずれも小数点よりも下の桁のビットとなり、たとえば、ビットdは小数第1位の桁(2−1の桁)の値であり、ビットdは小数第2位の桁(2−2の桁)の値である。数値Dは、0≦D<1の範囲をとる補間割合であるので、符号をもたない二進数として表現される。たとえば、「1111」なる4ビットの二進数は、通常は「15」なる十進数を示すことになるが、「1111」なる4ビットの二進数で数値Dが表現された場合、この4ビットは小数部のみを示すことになり、実際には、「0.1111」なる二進数に対応することになる(1/2+1/4+1/8+1/16=0.9375に対応する)。したがって、n=4の場合、Dは0〜0.9375の値をとることになる。
さて、図3の(式1),(式2),(式3)によって、補間対象値A,Bおよび補間割合Dをデジタルデータとして定義することができたので、これらの値を線形補間の基本式「C=(1−D)*A+D*B」に代入してみると、図4の上段に示す(式4)が得られる。この(式4)において破線で囲って示した部分が、上記基本式の各項に対応する部分であり、(式1)〜(式3)を代入した部分である。この(式4)を展開して整理すると、(式5)が得られる。したがって、この(式5)に基づく演算を逐次実行するような演算回路を構成すれば、補間値Cを求める補間演算器を作成することは可能である。
しかしながら、この(式5)に基づいて補間値Cを求める補間演算器を設計すると、その構成はかなり複雑なものとなり、効率的な演算を期待することはできない。その第1の理由は、符号部の処理を適切に行うための何らかの工夫が必要になる点である。前述したとおり、an−1,bn−1という項は、補間対象値A,Bの符号部であり、補間対象値の絶対値を示すものではない。このため、符号部として適切な取り扱いを行う必要がある。そして第2の理由は、総和を示す算術演算子Σ同士の積の形が含まれているため、多数の乗算器や加算器を用いた複雑な回路構成が必要になる点である。この(式5)に基づく逐次演算を行う以上、補間対象値A,Bのビット数、すなわち、nの数が増えれば増えるほど、回路構成は飛躍的に複雑化することになる。
本願発明者は、この(式5)を別な形に変形することにより、単純な回路構成で効率的な演算が実施できるようになるのではないかと考えた。そこで、補間演算器としての具体的な回路構成を念頭において、この(式5)をどのような形に変形すれば、効率的な演算器を構成できるかを検討し、試行錯誤を行った結果、次に述べるような変形を行うことにより、極めて効率的な演算器を構成できることに想到した。
まず、図5の(式6)を考える。この(式6)自体は、数学的に古くから知られている公式である。たとえば、n=4の場合、(式6)は、次のようになる。
−4+2−3+2−2+2−1+2−4
=1/16+1/8+1/4+1/2+1/16=1
もちろん、この(式6)は、任意のnについて成立する公式である。この(式6)の右辺の1を左辺に移動すれば、(式7)が得られる。
次に、(式8)を考える。この(式8)の1行目は、「−D=0−D」という至極当然の式であるが、「0」の部分に(式7)の左辺を代入し、「D」の部分に(式3)を代入すると、(式8)の2〜3行目が得られる。これを変形すると、(式9)の1行目から、更に2行目の形が導かれる。ところで、dは、補間割合Dの小数部のみを示すための各ビットであるから、実際の値としては、0または1のいずれかをとる。したがって、e=(1−d)とおいた場合、eはdの論理反転ビットということになる(d=1の場合、e=0となり、d=0の場合、e=1となる)。したがって、(式9)は、dの論理反転ビットをeと書くことにより、(式10)のように変形されることになる。
さて、ここで、図4に示す(式5)において、破線で囲った部分が「−D」であることに着目し、この部分に(式10)の右辺を代入すると、図6の(式11)が得られることになる。この(式11)において、破線で囲った部分は、「−D」に対応する部分であり、(式10)の右辺に相当する。一方、(式11)の1行目に示された一点鎖線で囲った部分は、図の最下部左に示す(ア)のような形に変形することができる(2n−1の項をΣ記号の内部へ組み込めばよい)。また、(式11)の3行目に示された二点鎖線で囲った2箇所の部分の積は、図の最下部右に示す(イ)のような形に変形することができる(やはり2n−1の項をΣ記号の内部へ組み込めばよい)。
かくして、図6の(式11)を変形することにより、図7の(式12)が得られることになる。この(式12)は、図4に(式4)として示されている線形補間の基本式と等価であるが、この(式12)の形は、補間演算器を設計する上で、極めて都合が良い形になっている。以下、この(式12)を、「本発明に係る演算式」と呼ぶことにする。なお、この(式12)の演算式に基づいて、線形補間値Cが得られるように構成した具体的な演算器については、後の§4に例示する。
<<< §3.本発明に係る演算式の特徴 >>>
図7に示す本発明に係る演算式(式12)は、図に破線で囲って区別したように、符号部、非符号部1、非符号部2の3つの部分によって構成されており、後述するように、それぞれ固有の役割を果たすことになる。まず、この(式12)の全体構成をながめると、求める補間値Cを、複数の項の和として表現した式であり、個々の項は、それぞれ2のべき乗に何らかの係数を乗じた形になっていることがわかる。ここで、2のべき乗は、二進数の特定の桁を示しており、これに乗じられる係数は、当該桁の数値を示している。たとえば、2n−1は、補間値Cを示す二進数の最上位ビットの桁を示しており、補間値Cの符号部に対応する。
図7において、符号部と記された破線で囲まれた部分は、「−(an−1+bn−1)2n−1」なる形の項となっているが、これは、「n−1」で示される桁(補間値Cの最上位ビットの桁)のビット値が、「−(an−1+bn−1)」であることを示している。ここで、先頭にマイナス記号が付されているのは、図3の(式1)や(式2)の場合と同様に、当該ビットが符号を示す符号部として機能するためである。すなわち、負数を2の補数表現で表わした場合、最上位ビットで示される数値を、残りのビットで示される数値から減じることにより、当該負数が得られるためである。たとえば、十進数「−7」を二進表現すると、「1001」となるが、最上位ビットの「1」で示される数値は2=8であり、残りの3ビット「001」で示される数値は1であるから、−8+1=−7が得られることになる。
ところで、an−1は、補間対象値Aの符号部(最上位ビット)であり、bn−1は、補間対象値Bの符号部(最上位ビット)であるから、図7に符号部と記された破線で囲まれた部分は、結局、両補間対象値A,Bの符号部同士の和を、補間値Cの符号部(最上位ビット)とする機能を果たしていることになる。
また、図7に非符号部1と記された破線で囲まれた部分も、やはりan−1とbn−1(補間対象値A,Bの符号部)に基づく演算から構成される部分であり、an−2以下のビットやbn−2以下のビットは、一切関与していない。この非符号部1に含まれる2のべき乗の項は、最大でも2n−2の項あるので(Σの総和を求める演算において、i=n−1の場合の2(i−1)の項)、この非符号部1の演算により、補間値Cの符号部(2n−1の桁)が直接定義されることはないが、2n−2の桁からの繰り上がりが生じた場合には、補間値Cの符号部(2n−1の桁)に影響を与えることになる。そのような意味で、この非符号部1は、補間値Cの符号部に影響を与える可能性をもった演算を行う役割を果たす。
一方、図7に非符号部2と記された破線で囲まれた部分は、すべてan−2以下のビットやbn−2以下のビットに関する演算のみから構成されており、an−1やbn−1(補間対象値A,Bの符号部)に関する演算は全く含まれていない。別言すれば、この非符号部2は、両補間対象値A,Bの非符号部のみに関する演算を行う役割を果たす。
このように、図7に示す(式12)では、符号部、非符号部1、非符号部2という3つの部分による役割分担が明確になされているため、この式に基づいて演算器を構成すると、符号部の処理を適切に行うことが可能になる。これが、(式12)の第1の特徴である。
(式12)の第2の特徴は、式の形式上、dとeとが相補的に組み込まれているという点である。たとえば、非符号部1には、「an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1)」なる形の式が含まれており、非符号部2には、「Σi=0〜n−1(i−1)・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2」なる形の式が含まれている。前述したとおり、eはdの論理反転ビットであるから、dが1であればeは必ず0であり、dが0であればeは必ず1である、という関係にある。したがって、上記各式の個々の項を演算するにあたって、d=1の場合は、eが含まれている項は必ず0になるので、dが含まれている項のみを演算すれば足り、d=0の場合は、dが含まれている項は必ず0になるので、eが含まれている項のみを演算すれば足りる。これにより、演算回路を単純化した効率的な演算が可能になる。
続いて、本発明に係る演算式の利点をより明瞭に示すために、図7に示す(式12)において、n=4とした場合の具体的な事例を考えてみる。図8に示す(式13)は、図7に示す(式12)において、nに4を代入することにより得られる式である。この式は、補間対象値A,Bと補間割合Dとが、いずれも4ビットのデジタルデータとして与えられた場合の演算式に対応することになる。すなわち、補間対象値Aは、「a」なる4ビットのデータとして与えられ、補間対象値Bは、「b」なる4ビットのデータとして与えられ、補間割合Dは、「d」なる4ビットのデータとして与えられる(図3の各式の右下の図参照)。この(式13)において、2のべき乗の項に着目すると、最大は2の項、最小は2−4の項であり、結局、演算結果として求められた補間値Cは、2,2,2,2,2−1,2−2,2−3,2−4という各桁の数値を示す合計8ビットのデータとして与えられることがわかる。ここでは、この8ビットの個々のデータを、c,c,c,c,c,c,c,cと表わすことにする。
図9は、図8に示す式に基づく演算に関与するデジタルデータのビット構成を示す図である。すなわち、図8に示す演算は、「a」なる4ビットのデータとして与えられる補間対象値Aと、「b」なる4ビットのデータとして与えられる補間対象値Bと、「d」なる4ビットのデータ(ビットdの左側に小数点が位置し、小数部のみを示すデータ)として与えられる補間割合Dとに基づいて、「c」なる8ビットのデータとして与えられる線形補間値Cを求める演算ということになる。上述したとおり、ビットcは2の桁の値であり、ビットcは2−1の桁の値であるので、ビットcとビットcとの間に小数点が位置することになる。したがって、図9の下段に示すとおり、補間値Cを構成する8ビットのデータのうち、ビット「c」は符号部、ビット「c」は整数部、ビット「c」は小数部という構成になる。
なお、こうして得られた線形補間値Cは、8ビットのデータのまま演算結果として出力する必要はなく、必要な有効桁のみを適宜選択して出力すればよい。実用上は、補間対象値A,Bを4ビットのデータとして与えたのであるから、最終的に出力する補間値Cも4ビットのデータであれば十分であるケースが多いであろう。このような場合は、小数部を切り捨て(もしくは切り上げ)して、符号部および整数部のみからなる4ビットのデータを出力すればよい。
続いて、図8に示す演算式に基づいて演算器を設計することにより、どれだけ効率的な演算が実現できるかを、具体的に説明しよう。図10に示す(式14)は、図8に示す(式13)における算術演算子Σを展開したものである。(式14)の符号部は、(式13)のものと変わりはないが、非符号部1は、図示のとおり3行に展開されている。ここで、第2行目と第3行目とを比較すると、第2行目はaとd(i=0,1,2,3)についての式となっているのに対して、第3行目はbとe(i=0,1,2,3)についての式となっている点は相違するものの、式の形は全く同じである。また、非符号部2は、図示のとおり丸数字1〜9に展開されている。ここでも、丸数字2と6,丸数字3と7,丸数字4と8,丸数字5と9をそれぞれ比較すると、前者はa(j=0,1,2)とe(i=0,1,2,3)についての式となっているのに対して、後者はb(j=0,1,2)とd(i=0,1,2,3)についての式となっている点は相違するものの、式の形は全く同じである。
図11は、図10に示す式の非符号部2(丸数字1〜9の式)を構成する各項の係数を、各桁ごとに整理して示すテーブルである。このテーブルの横方向に並んだ列は、それぞれ2,2,2,2,2−1,2−2,2−3,2−4という位取りに対応しており、ビットc,c,c,c,c,c,c,cは、演算によって求められる補間値Cの各ビットを示している。上述したとおり、ビットcとビットcとの間に小数点が位置し、補間値Cを構成する8ビットのデータのうち、ビット「c」は符号部、ビット「c」は非符号部の整数部、ビット「c」は非符号部の小数部である。
この図11のテーブルの第1行目には、図10に示す(式14)の丸数字5の式の係数が記載されている。すなわち、丸数字5の式「a−1+a+a」における係数「a」を2−1の桁に記載し、係数「a」を2の桁に記載し、係数「a」を2の桁に記載したものである。同様に、図11のテーブルの第2行目には丸数字9の式の係数が記載されており、第3行目には丸数字4の式の係数が記載されており、第4行目には丸数字8の式の係数が記載されており、第5行目には丸数字3の式の係数が記載されており、第6行目には丸数字7の式の係数が記載されており、第7行目には丸数字2の式の係数が記載されており、第8行目には丸数字6の式の係数が記載されており、第9行目には丸数字1の式の係数が記載されている。
この図11のテーブルに記載されている係数a,a,a,b,b,bは、補間対象値A,Bの非符号部を構成するいずれかのビットであり、絶対値を示すビットということができる(別言すれば、図11のテーブルには、補間対象値A,Bの符号部a,bは含まれていない)。したがって、これらのビットに関しては、符号を考慮することなしに、単なる加算を行えば、補間値Cの絶対値の部分を算出することができる。
しかも、都合のよいことに、同じ桁の係数の中には、一対の相補的な係数が多く含まれている。たとえば、2−4の桁には、第7行目のa、第8行目のb、第9行目のa、という3つの係数が記載されており、ビットcは、これら3つの係数を加算することにより求めることができる。ところが、eはdの論理反転ビットであるから、第7行目のaと第8行目のbとは一対の相補的な係数を構成しており、必ず、いずれか一方は0になる。たとえば、e=1の場合、d=0であるから、ビットcは、第9行目のaに、第7行目のaを加える演算を行うだけで求まる。逆に、e=0の場合、d=1であるから、ビットcは、第9行目のaに、第8行目のbを加える演算を行うだけで求まる。
結局、ビットcを求めるには、まず、dの値に応じて第7行目の係数aか、第8行目の係数bか、のいずれか一方を選択し(具体的には、d=0の場合はaを選択し、d=1の場合はbを選択し)、選択結果を第9行目の係数aに加算する処理を行えばよい。このような一対の相補的な係数は、たとえば、2−3の桁の第5行目と第6行目、第7行目と第8行目、2−2の桁の第3行目と第4行目、第5行目と第6行目、第7行目と第8行目、…というように、各桁の随所に見られる。したがって、個々の桁ごとの加算を行う演算回路の構成は、非常に単純化される。
図12に示すテーブルは、図10に示す(式14)を構成する各項の係数すべてを、各桁ごとに整理して示すテーブルである。このテーブルにおいて、2の桁に記載された「−(a+b)」は、(式14)の符号部の係数に対応するものであり、太線で囲った部分に記載された各係数は、(式14)の非符号部1の各係数に対応するものである。別言すれば、図12に示すテーブルは、図11に示すテーブルに、更に、符号部および非符号部1の係数を追加したテーブルということができる。この図12で追加された係数は、補間値Cの絶対値に関与するものではなく、補間値Cの符号に関与するものである。以下、補間値Cの符号がどのように決定されるかを説明する。
図12の2の桁には、「−(a3+b3)」なる符号付きの係数が記載されているが、これは(式14)の符号部の係数を便宜上そのまま転載したものであり、実際の演算で用いられる本来のビットを示すものではない。本来のビット演算には、そもそも「マイナス」という符号の概念はない。したがって、図12に示すテーブルにおいて、補間値Cの非符号部に相当する各ビットc,c,c,c,c,c,cは、各桁(各列)に記載された係数値を加算し、繰り上がりがあれば、上位の桁へと繰り上げ処理を行うという通常の演算により決定することができるが、符号部に相当するビットcについては、次のような方法で、そのビット値を決定するようにする。
まず、(a+b)なる演算結果を求める。aもbも1ビットの数値(0または1)であるので、(a+b)なる演算結果は、二進表現での0,1,10のいずれかになる。次に、非符号部についての演算(図12に示すビットc〜cを求めるための加算演算)によって、ビットcの桁(2の桁)からの繰り上がり(二進表現での0,1のいずれか:繰り上がり有りの場合は1、繰り上がり無しの場合は0)を求め、(a+b)なる演算結果に加算する。そして、この加算の結果として得られる二進数を求め、求めた二進数が1ビットの場合には当該ビットを、求めた二進数が2ビットの場合には下位側のビットを、それぞれビットcの値とする。
このような方法でビットcの値を決定する意味を説明しよう。ここでは、説明の便宜上、2つの補間対象値A,Bの符号に基づく場合分けを行うことにする。
まず、値A,Bがいずれも正の場合を考えてみる。この場合、a=0,b=0であるから、(a+b)なる和も0になる。しかも、この場合、非符号部からの繰り上がりも0になる(すなわち、非符号部からの繰り上がりは生じない)。なぜなら、図12に太線で囲った部分(非符号部1)は、a=0,b=0であるからいずれも0になり、これらに起因する繰り上がりは0である。また、この太線で囲った部分よりも右側の部分(非符号部2:図11のテーブルに記載されている部分)については、これらの部分に起因したビットcの桁への繰り上がりは必ず0である。
その理由は、この演算が2つの補間対象値A,Bについての補間演算であるためである。非符号部は、補間値Cの絶対値を示す部分であるが、この絶対値は、必ず、値Aの絶対値と値Bの絶対値との中間的な値になるので、値Aの絶対値や値Bの絶対値を決して超えることはない。したがって、図11のテーブルに記載されている部分に関する加算を行う限り、最終的にビットcの桁への繰り上がりは必ず0である。これは、100未満の2つの正の数を補間対象値A,Bとした場合、その補間値Cも必ず100未満の正の値になることを考えれば、容易に理解できよう。この場合、補間値Cが3桁の数になることはあり得ない。補間対象値A,Bがいずれも2桁の数で収まっている以上、補間値Cも2桁の数に収まり、2桁目から3桁目への繰り上がりは必ず0である。
結局、値A,Bがいずれも正の場合は、(a+b)=0に、非符号部からの繰り上がり(=0)を加えることにより、ビットc=0が得られることになる。これは、得られた補間値Cが正の数であることを示しており、正しい符号の取り扱いがなされたことになる。
次に、値A,Bがいずれも負の場合を考えてみる。この場合、a=1,b=1であるから、(a+b)なる和は10になる。しかも、この場合、非符号部からの繰り上がりも必ず1になる(すなわち、ビットcの桁からビットcの桁への繰り上がりが必ず生じる)。これは、図12に太線で囲った部分(非符号部1)の演算を考えれば容易に理解できる。まず、ビットcの桁に記載された非符号部1(太線で囲った部分)の加算は、「a+b+b」であるが、a=1,b=1であり、しかもdかeかのいずれか一方は1であるから、ビットcの桁の合計値は、少なくとも「10」になり、ビットcの桁からビットcの桁への繰り上がりは必ず生じる。
次に、ビットcの桁に記載された非符号部1(太線で囲った部分)の加算は、「a+b」であるが、a=1,b=1であり、しかもdかeかのいずれか一方は1、他方は0であるから、「a+b=1」になる。ここに、ビットcの桁からの繰り上がりが加算されるので、ビットcの桁の合計値は、少なくとも「10」になり、ビットcの桁からビットcの桁への繰り上がりは必ず生じる。
同様にして、ビットcの桁からビットcの桁への繰り上がりも必ず生じることになり、更に、ビットcの桁からビットcの桁への繰り上がりも必ず生じることになる。結局、値A,Bがいずれも負の場合は、(a+b)=10に、非符号部からの繰り上がり(=1)を加えることにより、「11」なる加算結果が得られる。ビットcは、この加算結果の下位側のビットとして定義されるので、ビットc=1が得られることになる。これは、得られた補間値Cが負の数であることを示しており、正しい符号の取り扱いがなされたことになる。
最後に、値A,Bのいずれか一方が正、他方が負の場合を考えてみる。この場合、(a+b)なる和は1になるので、ビットcの値は、非符号部からの繰り上がりに依存して、0になったり1になったりする。ここでは詳しい説明は省略するが、得られる補間値Cが零もしくは正の数になる場合には、非符号部からの繰り上がりが必ず生じ、得られる補間値Cが負の数になる場合には、非符号部からの繰り上がりは生じない。したがって、補間値Cが零もしくは正の数の場合は、(a+b)の演算結果である1に、繰り上がりの1を加えることにより、「10」なる加算結果が得られることになり、この加算結果の下位側のビットとして定義されるビットcは0になる。これは、得られた補間値Cが零または正の数であることを示しており、正しい符号の取り扱いがなされたことになる。逆に、補間値Cが負の数の場合は、(a+b)の演算結果である1に、繰り上がりの0を加えることにより、「1」なる加算結果が得られることになり、ビットcは1になる。これは、得られた補間値Cが負の数であることを示しており、正しい符号の取り扱いがなされたことになる。
このように、図12のテーブルに基づく演算において、ビットcの値を前述したような方法で決定するようにすれば、正しい符号の取り扱いが可能になる。
以上、説明の便宜上、n=4の具体的な場合を例にとって説明を行ったが、もちろん、nは2以上の整数であれば任意の値に設定することができる。要するに、本発明の特徴は、符号をもった2つの補間対象値AおよびBと、補間割合D(但し、0≦D<1)と、に基づいて、C=(1−D)*A+D*Bなる式で示される線形補間値Cを求める演算を行う線形補間演算器を、図7の(式12)に示す演算式、すなわち、C=−(an−1+bn−1)2n−1+bn−1−1+(an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1))+(2−n+Σi=0〜n−1(i−1))・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2 なる演算式(但し、eはdの論理反転ビット)で定義される乗算および加算を行うことにより線形補間値Cが得られるように演算器を構成する点にある。
このとき、この演算器に与えるべき補間対象値Aは、符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、an−1,an−2,…,a,aなるビットを有するようにする。
また、この演算器に与えるべき補間対象値Bは、符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、bn−1,bn−2,…,b,bなるビットを有するようにする。
更に、この演算器に与えるべき補間割合Dは、小数部のみを示すnビットのデジタルデータとして、最上位ビット側から順に、dn−1,dn−2,…,d,dなるビットを有するようにする。
上記演算式のうち、「bn−1−1+(an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1))+(2−n+Σi=0〜n−1(i−1))・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2」なる部分(但し、eはdの論理反転ビット)は、非符号部に関する演算を示しており、この非符号部に関する演算を行うことにより、最上位ビット側から順に、c2n−2,c2n−3,…,c,cなるビットを有する合計(2n−1)ビットのデジタルデータを生成することができる。
一方、上記演算式のうち、「−(an−1+bn−1)2n−1」なる部分に関しては、an−1+bn−1なる演算結果(二進表現での0,1,10のいずれか)と、非符号部に関する演算の結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)と、を加算して得られる二進数を求め、求めた二進数が1ビットの場合には当該ビットを、求めた二進数が2ビットの場合には下位側のビットを、それぞれビットc2n−1の値として求める処理を行えばよい。
こうして、最上位ビット側から順に、各ビットc2n−1,c2n−2,c2n−3,…,c,cを羅列してなる合計2nビットのデジタルデータが得られたら、当該2nビットのデジタルデータ、もしくは、当該2nビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータを、線形補間値Cを示すデジタルデータとして出力すればよい。
このように、線形補間演算器を、図7の(式12)に示す演算式に基づいて設計すれば、非常に合理的な符号の取り扱いが可能になり、また、同じ桁の加算演算を行う際に、一対の相補的な係数を利用した効率的な演算が可能になるので、符号をもった2つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能な線形補間演算器を実現できる。
<<< §4.本発明に係る線形補間演算器の具体的な構成例 >>>
続いて、図7に示す本発明に係る演算式(式12)に基づく補間演算を実行する機能を有する具体的な線形補間演算器の構成例を述べる。この(式12)の演算式は、大別して、符号部と非符号部(非符号部1および2)とによって構成されるので、ここでは、符号部についての演算処理を行う部分を符号部演算手段と呼び、非符号部についての演算処理を行う部分を非符号部演算手段と呼ぶことにする。非符号部演算手段は、セレクタとカウンタとの組合わせによって構成することができる。セレクタとしては、補間割合Dを示すデジタルデータの所定のビットの論理値に基づいて、ビットaもしくはb(但し、i=0,1,2,…,(n−1))のいずれかを選択して出力する機能をもった装置を用いればよく、カウンタとしては、ビットaもしくはb(但し、i=0,1,2,…,(n−1))、セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力する機能をもった装置を用いればよい。
図13は、上述のような機能をもったセレクタおよびカウンタの具体例を示す図であり、これらのセレクタやカウンタは、後述する具体的な線形補間演算器の基本構成要素として利用されている。
まず、図13(a) に示すセレクタ100は、2つの入力値X,Y(いずれも1ビットの値)のうち、いずれか一方を選択値Sとして出力する機能をもった構成要素である。いずれの入力値を選択するかは、1ビットの制御値Dの論理状態によって定まる。すなわち、制御値D=0のときは、入力値Xが選択され(S=Xになる)、制御値D=1のときは、入力値Yが選択される(S=Yになる)。
次に、図13(b) に示す2−2カウンタ200は、2つの入力値X,Y(いずれも1ビットの値)についての加算演算を行い、演算結果の2の桁の値を和Sとして出力し、演算結果の2の桁の値をキャリーC(上位桁への繰り上がり)として出力する機能をもった構成要素である。和SおよびキャリーCは、いずれも1ビットのデータになる。
また、図13(c) に示す3−2カウンタ300は、3つの入力値X,Y,Z(いずれも1ビットの値)についての加算演算を行い、演算結果の2の桁の値を和Sとして出力し、演算結果の2の桁の値をキャリーC(上位桁への繰り上がり)として出力する機能をもった構成要素である。やはり和SおよびキャリーCは、いずれも1ビットのデータになる。
図14〜図16は、図13に示すセレクタ100,2−2カウンタ200,3−2カウンタ300を組み合わせることにより構成した線形補間演算器を示す回路図である。図示の便宜上、3つの図面に分けて示してあるが、この3つの図面に描かれた回路全体によって、1台の線形補間演算器が構成されることになる。図において、100番台の符号が記されている構成要素101〜116は、図13(a) に示すセレクタ100と同等の要素であり、200番台の符号が記されている構成要素201〜204は、図13(b) に示す2−2カウンタ200と同等の要素であり、300番台の符号が記されている構成要素301〜312は、図13(c) に示す3−2カウンタ300と同等の要素である。また、図16に示す構成要素401,402は、XOR回路(排他的論理和回路)である。
なお、説明の便宜上、各セレクタから出力される選択値は、当該セレクタの符号の頭にSをつけた符号で示すことにし、各カウンタから出力される和もしくはキャリーには、当該カウンタの符号の頭にSもしくはCをつけた符号で示すことにする。たとえば、図14の右側に示されているS101は、セレクタ101から出力される選択値であり、S201は、カウンタ201から出力される和であり、C201は、カウンタ201から出力されるキャリー(上位桁へ加算されることになる)である。また、図16の左側に示されているS401,S402は、それぞれXOR回路401,402の排他的論理和出力である。
この図14〜図16に示されている線形補間演算器は、図8の(式13)に示されている演算式(n=4の場合の演算式)に基づいて、補間値Cを求める演算を行うものであり、その構成は、図12のテーブルに対応したものとなっている。すなわち、図14に示すビットc演算部,ビットc演算部,ビットc演算部、図15に示すビットc演算部,ビットc演算部、図16に示すビットc演算部,ビットc演算部は、それぞれ図12のテーブルにおけるビットc〜cを求める演算を行う構成要素であり、ビットc演算部は、図12のテーブルにおけるビットcを求める演算を行う構成要素である。別言すれば、ビットc演算部〜ビットc演算部により非符号部演算手段が構成され、ビットc演算部により符号部演算手段が構成されていることになる。
また、図14〜図16に示されている値a,a,a,aは、補間対象値Aの各ビットであり、値b,b,b,bは、補間対象値Bの各ビットであり、値d,d,d,dは、補間割合Dの各ビットである。そして、各ビット演算部の下部に描かれている出力値S0〜S7は、図12のテーブルにおけるビットc〜cの値に対応する。
たとえば、図14に示すビットc演算部の構成に着目すると、図12のテーブルにおけるビットcを求める演算を行うための構成になっていることが理解できるであろう。セレクタ101は、制御値dに基づいて、2つの入力値a,bのいずれか一方を選択し、選択した入力値を選択値S101として出力する機能を果たすが、これは、図12のテーブルにおけるビットcの桁に示されている係数「a」と「b」との加算に相当する処理である。既に述べたとおり、「a」と「b」とは、相補的な関係にあり、d=1の場合は、a=0、b=bとなり、d=0の場合は、a=a、b=0となるので、結局、セレクタ101により、d=1の場合は、S101=bを選択値として出力し、d=0の場合は、S101=aを選択値として出力すれば、係数「a」と「b」との加算に相当する処理に代えることができる。最後に、カウンタ201により、選択値S101とaとの加算を行えば、結果的に、図12のテーブルにおけるビットcを求める演算が実行されたことになる。
このとき、ビットcの桁への繰り上がりがあれば、キャリーC201=1なる値が、ビットc演算部へと伝達されることになる。もちろん、繰り上がりがなければ、キャリーC201=0なる値が、ビットc演算部へと伝達される。他の桁についての演算も、これと同様である。
なお、図16の左側に示すビットcの演算部だけは、符号部として機能するビットcを決定する処理を行う必要があるため、他の演算部とは異なる構成を有している。ビットcを決定する処理は、既に§3で述べたとおり、(a+b)なる和(二進表現での0,1,10のいずれか)に、ビットcの演算部からの繰り上がりを加算して得られる二進数を求め、求めた二進数が1ビットの場合には当該ビットを、求めた二進数が2ビットの場合には下位側のビットを、ビットcの値とする、という処理になる。XOR回路401,402によって構成される図示の回路は、正にこのような処理を行う回路である。
すなわち、XOR回路401の出力値S401は、aとbとが等しければ0、異なれば1になるので、a=0,b=0の場合は0になり、a=1,b=0の場合は1になり、a=0,b=1の場合は1になり、a=1,b=1の場合は0になる。
そして、XOR回路402の出力値S402は、この出力値S401とC312(ビットcの演算部からの繰り上がり)との排他的論理和になるので、S401=0,C312=0の場合は0になり、S401=1,C312=0の場合は1になり、S401=0,C312=1の場合は1になり、S401=1,C312=1の場合は0になる。結局、XOR回路402の出力値S402は、(a+b)なる和に、ビットCの演算部からの繰り上がりを加算して得られる二進数の下位側のビットということになる。
nを任意の値に設定した場合は、ビットan−1とビットbn−1との排他的論理和を出力する第1のXOR回路と、非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)を示すビットと、第1のXOR回路の出力ビットと、の排他的論理和を出力する第2のXOR回路と、によって符号部演算手段を構成すればよい。
なお、符号部演算手段は、必ずしもXOR回路を用いて構成する必要はない。たとえば、図16に示すXOR回路401,402の代わりに、図13(b) に示す2−2カウンタ200を用いることも可能である。この場合、2−2カウンタの和Sの値を、それぞれ出力値S401,S402として利用し、キャリーCについては無視すればよい。もっとも、このような構成では、キャリーCを無駄にすることになるので、実用上は、図16に示すようにXOR回路を用いて構成するのが好ましい。
以上、本発明に係る線形補間演算器の主要部の構成例を、図14〜図16の回路図を参照して説明したが、実際には、この主要部にデジタルデータA,B,Dを入力するための構成要素と、この主要部からデジタルデータCを出力するための構成要素とを付加する必要がある。図17は、このような入出力のための構成要素を付加することにより得られる本発明に係る線形補間演算器の全体構成を示すブロック図である。
図示のとおり、この線形補間演算器は、nビットのデジタルデータAを入力するための第1の補間対象値入力手段10と、nビットのデジタルデータBを入力するための第2の補間対象値入力手段20と、nビットのデジタルデータDを入力するための補間割合入力手段30と、演算手段40とによって構成されている。
第1の補間対象値入力手段10は、符号を示す最上位ビットan−1からなる符号部と、絶対値を示す(n−1)ビットからなる非符号部(an−2,……,a1,a0)と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、an−1,an−2,…,a,aなるビットを有する補間対象値Aを入力する手段である。
また、第2の補間対象値入力手段20は、符号を示す最上位ビットbn−1からなる符号部と、絶対値を示す(n−1)ビットからなる非符号部(bn−2,……,b1,b0)と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、bn−1,bn−2,…,b,bなるビットを有する補間対象値Bを入力する手段である。
一方、補間割合入力手段30は、小数部のみを示すnビットのデジタルデータとして、最上位ビット側から順に、dn−1,dn−2,…,d,dなるビットを有する補間割合Dを入力する手段である。
そして、演算手段40は、図示のとおり、符号部演算手段41,非符号部演算手段42,演算値出力手段43によって構成されている。ここで、非符号部演算手段42は、演算式 bn−1−1+(an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1))+(2−n+Σi=0〜n−1(i−1))・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2 (但し、eはdの論理反転ビット)に基づく演算を行うことにより、最上位ビット側から順に、c2n−2,c2n−3,…,c,cなるビットを有する合計(2n−1)ビットのデジタルデータを生成する機能を果たす。また、符号部演算手段41は、an−1+bn−1なる演算結果(二進表現での0,1,10のいずれか)と、前記非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)と、を加算して得られる二進数の右側の桁のビットを、ビットc2n−1の値として求める機能を果たす。そして、演算値出力手段43は、「最上位ビット側から順に各ビットc2n−1,c2n−2,c2n−3,…,c,cを羅列してなる合計2nビットのデジタルデータ」もしくは「当該2nビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Cを示すデジタルデータとして出力する機能を果たす。
なお、各ビットc2n−1,c2n−2,c2n−3,…,c,cを羅列してなる合計2nビットのデジタルデータは、ビットcとcn−1との間に小数点が位置するデータであり、ビットc2n−1は符号部、ビットc2n−2,c2n−3,…,cは整数部、ビットcn−1,…,c,cは小数部を示すビットになる。
線形補間演算の基本概念を示すグラフである。 2の補数表現により負数を表現する方法を説明する図である。 補間対象値A,Bと補間割合Dとを、二進数のビット値を用いて定義した式を示す図である。 本発明に係る線形補間演算器で実行される補間演算の基本式を示す図である。 図4に示す基本式の変形プロセスを示す図である。 図4に示す基本式の変形プロセスを示す別な図である。 図4に示す基本式を変形することにより得られる本発明の特徴となる演算式を示す図である。 図7に示す演算式にn=4を代入することにより得られる式を示す図である。 図8に示す式に基づく演算に関与するデジタルデータのビット構成を示す図である。 図8に示す式における算術演算子Σを展開した式を示す図である。 図10に示す式の非符号部2を構成する各項の係数を、各桁ごとに整理して示すテーブルである。 図10に示す式を構成する各項の係数を、各桁ごとに整理して示すテーブルである。 本発明の一実施形態に係る線形補間演算器の基本構成要素を示す図である。 本発明の一実施形態に係る線形補間演算器の第1の部分を示す回路図である。 本発明の一実施形態に係る線形補間演算器の第2の部分を示す回路図である。 本発明の一実施形態に係る線形補間演算器の第3の部分を示す回路図である。 本発明に係る線形補間演算器の全体構成を示すブロック図である。
符号の説明
10:第1の補間対象値入力手段
20:第2の補間対象値入力手段
30:補間割合入力手段
40:演算手段
41:符号部演算手段
42:非符号部演算手段
43:演算値出力手段
100〜116:セレクタ
200〜204:2−2カウンタ
300〜312:3−2カウンタ
401,402:XOR回路

Claims (2)

  1. 符号をもった2つの補間対象値AおよびBと、補間割合D(但し、0≦D<1)と、に基づいて、C=(1−D)*A+D*Bなる式で示される線形補間値Cを求める演算を行う線形補間演算器であって、
    符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、an−1,an−2,…,a,aなるビットを有する補間対象値Aを入力する第1の補間対象値入力手段と、
    符号を示す最上位ビットからなる符号部と、絶対値を示す(n−1)ビットからなる非符号部と、によって構成され(但し、n≧2)、2の補数表現により負数を表現した合計nビットのデジタルデータとして、最上位ビット側から順に、bn−1,bn−2,…,b,bなるビットを有する補間対象値Bを入力する第2の補間対象値入力手段と、
    小数部のみを示すnビットのデジタルデータとして、最上位ビット側から順に、dn−1,dn−2,…,d,dなるビットを有する補間割合Dを入力する補間割合入力手段と、
    演算式 bn−1−1+(an−1Σi=0〜n−1(i−1)+bn−1Σi=0〜n−1(i−1))+(2−n+Σi=0〜n−1(i−1))・Σj=0〜n−2+Σi=0〜n−1(i−n)・Σj=0〜n−2 (但し、eはdの論理反転ビット)に基づく演算を行うことにより、最上位ビット側から順に、c2n−2,c2n−3,…,c,cなるビットを有する合計(2n−1)ビットのデジタルデータを生成する非符号部演算手段と、
    n−1+bn−1なる演算結果(二進表現での0,1,10のいずれか)と、前記非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)と、を加算して得られる二進数を求め、求めた二進数が1ビットの場合には当該ビットを、求めた二進数が2ビットの場合には下位側のビットを、それぞれビットc2n−1の値として求める符号部演算手段と、
    「最上位ビット側から順に前記各ビットc2n−1,c2n−2,c2n−3,…,c,cを羅列してなる合計2nビットのデジタルデータ」もしくは「当該2nビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Cを示すデジタルデータとして出力する演算値出力手段と、
    を備え、
    前記非符号部演算手段が、
    補間割合Dを示すデジタルデータの所定のビットの論理値に基づいて、ビットa もしくはb (但し、i=0,1,2,…,(n−1))のいずれかを選択して出力するセレクタと、
    ビットa もしくはb (但し、i=0,1,2,…,(n−1))、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
    によって構成されており、前記演算式における、同じ桁に含まれている互いに相補的な係数d およびe を有する一対の乗算項の加算演算を前記セレクタによって行い、その他の加算演算を前記カウンタによって行うことを特徴とする線形補間演算器。
  2. 請求項1に記載の線形補間演算器において、
    符号部演算手段が、
    ビットan−1とビットbn−1との排他的論理和を出力する第1のXOR回路と、
    非符号部演算手段による演算結果として得られるビットc2n−2の桁からの繰り上がり(二進表現での0,1のいずれか)を示すビットと、前記第1のXOR回路の出力ビットと、の排他的論理和を出力する第2のXOR回路と、
    によって構成されていることを特徴とする線形補間演算器。
JP2006037944A 2005-09-26 2006-02-15 線形補間演算器 Expired - Fee Related JP4887821B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2006037944A JP4887821B2 (ja) 2006-02-15 2006-02-15 線形補間演算器
US11/523,351 US7840623B2 (en) 2005-09-26 2006-09-19 Interpolator and designing method thereof
US12/917,655 US8671126B2 (en) 2005-09-26 2010-11-02 Interpolator and designing method thereof
US12/917,766 US8265427B2 (en) 2005-09-26 2010-11-02 Interpolator and designing method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006037944A JP4887821B2 (ja) 2006-02-15 2006-02-15 線形補間演算器

Publications (2)

Publication Number Publication Date
JP2007219714A JP2007219714A (ja) 2007-08-30
JP4887821B2 true JP4887821B2 (ja) 2012-02-29

Family

ID=38496968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006037944A Expired - Fee Related JP4887821B2 (ja) 2005-09-26 2006-02-15 線形補間演算器

Country Status (1)

Country Link
JP (1) JP4887821B2 (ja)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62232028A (ja) * 1986-04-02 1987-10-12 Mitsubishi Electric Corp Rom型乗算器
JPS63623A (ja) * 1986-06-19 1988-01-05 Mitsubishi Electric Corp 乗算器
JPH0614317B2 (ja) * 1986-07-11 1994-02-23 松下電器産業株式会社 演算処理装置
JPH0614318B2 (ja) * 1986-07-11 1994-02-23 松下電器産業株式会社 演算処理装置
JPS6488831A (en) * 1987-09-30 1989-04-03 Nec Corp Parallel data multiplying circuit with sign processing function
JPH01315871A (ja) * 1988-06-15 1989-12-20 Yokogawa Medical Syst Ltd データ補間回路
US5148381A (en) * 1991-02-07 1992-09-15 Intel Corporation One-dimensional interpolation circuit and method based on modification of a parallel multiplier
JPH0713741A (ja) * 1993-06-22 1995-01-17 Matsushita Electric Ind Co Ltd アルファ合成演算器
JPH07200869A (ja) * 1993-12-28 1995-08-04 Matsushita Electric Ind Co Ltd アルファブレンディング演算装置
US5935198A (en) * 1996-11-22 1999-08-10 S3 Incorporated Multiplier with selectable booth encoders for performing 3D graphics interpolations with two multiplies in a single pass through the multiplier
JPH1139289A (ja) * 1997-07-17 1999-02-12 Nec Corp 演算回路
JP3985321B2 (ja) * 1998-01-29 2007-10-03 ソニー株式会社 演算装置および画像処理装置
JP2003162410A (ja) * 2001-11-27 2003-06-06 Mitsubishi Electric Corp リニアフィルタ回路
JP4248212B2 (ja) * 2002-09-24 2009-04-02 富士重工業株式会社 ステレオ画像処理装置およびステレオ画像処理方法
JP2005328469A (ja) * 2004-05-17 2005-11-24 Murata Mach Ltd カラー画像処理装置

Also Published As

Publication number Publication date
JP2007219714A (ja) 2007-08-30

Similar Documents

Publication Publication Date Title
JP5456766B2 (ja) プログラム可能なプロセッサにおける随意選択的なガロア域計算の実行
JP4374363B2 (ja) ビットフィールド操作回路
JP4376904B2 (ja) 乗算装置
JP4273071B2 (ja) 除算・開平演算器
JP4887821B2 (ja) 線形補間演算器
JP2012141952A (ja) 除算回路及び除算方法
JP4045872B2 (ja) 符号化方法および符号化装置
JP4933405B2 (ja) データ変換装置及びその制御方法
KR100329914B1 (ko) 제산장치
JP4490380B2 (ja) 線形補間演算器
JP2008152367A (ja) 剰余演算装置及びプログラム
JP4405452B2 (ja) 逆変換回路
JP3982965B2 (ja) 繰り返し型乗算器とアレイ型乗算器
KR100506470B1 (ko) 평방근의 역수 계산 방법, 계산 회로, 및 기록매체
JP2012043405A (ja) 乗算回路
WO2023100372A1 (ja) データ処理装置、データ処理方法、及びデータ処理プログラム
JP4954019B2 (ja) 演算装置
JP4042215B2 (ja) 演算処理装置およびその方法
JP2009245407A (ja) 複素数の積和演算装置および積和演算方法
JPH05216626A (ja) 乗算器
JP4271589B2 (ja) 演算装置の制御方法、並びに、そのプログラムおよび記録媒体
JP5211398B2 (ja) ガロア体上の元の除算演算回路
JP5157018B2 (ja) ガロア体上の元の除算演算回路
JP2020035408A (ja) 簡単な演算を繰り返して実根の近似値を算出するプログラム
Fujisawa et al. Definitions of Radix-2k Signed-Digit number and its adder algorithm

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110705

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: 20111115

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111128

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees