(57)【要約】【課題】  符号付きの値Ａ，Ｂについての補間演算を、単純な回路構成で効率的に実行する。【解決手段】  ２の補数表現により負数を表現した４ビット値Ａ（ビットａ３ａ２ａ１ａ０）およびＢ（ビットｂ３ｂ２ｂ１ｂ０）と、小数部のみからなる４ビットの補間割合Ｄ（ビットｄ３ｄ２ｄ１ｄ０）とに基づき補間値Ｃを求める。Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる基本式を、ビットｄｉもしくはその論理反転値ｅｉとの積の和を含み（ｉ＝０，１，２，３）、補間値Ｃの絶対値を示す非符号部と、補間値Ｃの符号を示す符号部と、によって構成される式に変形する。非符号部の算術演算によりビットｃ６〜ｃ０の７ビットを生成させ、この非符号部の算術演算によるビットｃ６の桁からの繰り上がりを考慮して符号部の論理判定を行い、ビットｃ７を生成させる。得られた８ビットの値Ｃ（ビットｃ７〜ｃ０）のうちの必要有効桁を補間値として出力する。【選択図】図１２
2007219714.tif 000002
【特許請求の範囲】
【請求項１】
符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器であって、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを入力する第１の補間対象値入力手段と、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを入力する第２の補間対象値入力手段と、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを入力する補間割合入力手段と、
演算式  ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）に基づく演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成する非符号部演算手段と、
ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、前記非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ2ｎ−1の値として求める符号部演算手段と、
「最上位ビット側から順に前記各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータ」もしくは「当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Ｃを示すデジタルデータとして出力する演算値出力手段と、
を備えることを特徴とする線形補間演算器。
【請求項２】
請求項１に記載の線形補間演算器において、
非符号部演算手段が、
補間割合Ｄを示すデジタルデータの所定のビットの論理値に基づいて、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））のいずれかを選択して出力するセレクタと、
ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
によって構成されていることを特徴とする線形補間演算器。
【請求項３】
請求項１または２に記載の線形補間演算器において、
符号部演算手段が、
ビットａｎ−１とビットｂｎ−１との排他的論理和を出力する第１のＸＯＲ回路と、
非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）を示すビットと、前記第１のＸＯＲ回路の出力ビットと、の排他的論理和を出力する第２のＸＯＲ回路と、
によって構成されていることを特徴とする線形補間演算器。
【請求項４】
符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器を設計する方法であって、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを入力する第１の補間対象値入力手段を設計する段階と、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを入力する第２の補間対象値入力手段を設計する段階と、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを入力する補間割合入力手段を設計する段階と、
演算式  ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）に基づく演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成する非符号部演算手段を設計する段階と、
ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、前記非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ2ｎ−1の値として求める符号部演算手段を設計する段階と、
「最上位ビット側から順に前記各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータ」もしくは「当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Ｃを示すデジタルデータとして出力する演算値出力手段を設計する段階と、
を有することを特徴とする線形補間演算器の設計方法。
【請求項５】
請求項４に記載の線形補間演算器の設計方法において、
非符号部演算手段を設計する段階で、
補間割合Ｄを示すデジタルデータの所定のビットの論理値に基づいて、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））のいずれかを選択して出力するセレクタと、
ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
を用いた設計を行うことを特徴とする線形補間演算器の設計方法。
【請求項６】
請求項４または５に記載の線形補間演算器の設計方法において、
符号部演算手段を設計する段階で、
ビットａｎ−１とビットｂｎ−１との排他的論理和を出力する第１のＸＯＲ回路と、
非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）を示すビットと、前記第１のＸＯＲ回路の出力ビットと、の排他的論理和を出力する第２のＸＯＲ回路と、
を用いた設計を行うことを特徴とする線形補間演算器の設計方法。
【請求項７】
符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器を設計する方法であって、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを定義し、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを定義し、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを定義し、
演算式  Ｃ＝−（ａｎ−１＋ｂｎ−１）２n−１+ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）で定義される乗算および加算を行うことにより線形補間値Ｃが得られるように演算器を構成することを特徴とする線形補間演算器の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、線形補間演算器およびその設計方法に関し、特に、符号をもった２つの補間対象値についての線形補間値をハードウエア回路により演算する技術に関する。
【背景技術】
【０００２】
２つの値の中間的な値を補間によって求める方法として、線形補間は最も代表的な方法である。最近では、特に、画像処理の手法として、この線形補間が盛んに利用されている。たとえば、一般に「αブレンド」と呼ばれている画像合成の手法は、画像Ａと画像Ｂとを、α：（１−α）の比率（但し、０≦α≦１）で合成する手法であり、画像Ａの画素値と画像Ｂの画素値との中間的な値を線形補間して求める処理が行われる。また、任意の倍率で画像の拡大や縮小を行う場合にも、線形補間が利用されている。
【０００３】
線形補間の基本原理は、２つの補間対象値ＡおよびＢと、補間割合Ｄ（上記αに対応する値であり、０≦Ｄ≦１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式（＊は乗算を示す記号である）で示される線形補間値Ｃを求める演算を行うことにある。この式に基づく演算をデジタル演算器を用いて実行する場合、Ａ，Ｂ，Ｃ，Ｄはいずれもデジタルデータとして取り扱われ、通常、補間割合Ｄは、小数部のみを示すビット列で表わされる。この場合、補間割合Ｄは、１を含まない「０≦Ｄ＜１」なる値として取り扱うことになる。下記の特許文献１には、このような線形補間演算（αブレンド演算）をパイプライン演算処理で行う演算器の構成が開示されており、特許文献２には、並列演算を基本とした処理で行う演算器の構成が開示されている。
【特許文献１】米国特許第５１１３３６２号公報
【特許文献２】米国特許第５５１７４３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記各特許文献に開示された演算器をはじめとして、従来の一般的な線形補間演算器の多くは、補間対象値として正の値を想定したものである。通常、画像を構成する個々の画素の画素値は正の値で表現されるため、一般的な画像についての「αブレンド」処理は、２つの正の画素値に基づく線形補間演算を行えば足り、上記各特許文献に開示された演算器で演算が可能である。しかしながら、近年、様々な画像処理が行われるようになってきており、負の画素値をもった画像を取り扱う機会も少なくない。たとえば、何らかの過程で、画像Ａの画素値から画像Ｂの画素値を減算する処理を行う必要がある場合、減算結果として得られる画像Ｃには、負の画素値をもった画素が含まれる可能性がある。もちろん、線形補間処理の用途は、画像処理だけに限定されるものではないので、この他にも、正負両方の値を考慮した線形補間処理が必要になる事例は少なくない。
【０００５】
このような要望に応えるため、符号をもった２つの補間対象値について線形補間演算を実行することが可能な演算器もいくつか提案されている。しかしながら、従来提案されている符号付線形補間演算器は、いずれも符号付きデジタルデータを取り扱う機能を実現するために複雑な回路構成を採用しており、効率的な演算を行うことができない。
【０００６】
そこで本発明は、符号をもった２つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能な線形補間演算器を提供することを目的とし、また、そのような演算器を設計する方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
(1)   本発明の第１の態様は、符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器において、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを入力する第１の補間対象値入力手段と、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを入力する第２の補間対象値入力手段と、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを入力する補間割合入力手段と、
演算式  ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）に基づく演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成する非符号部演算手段と、
ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、前記非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ2ｎ−1の値として求める符号部演算手段と、
「最上位ビット側から順に前記各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータ」もしくは「当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Ｃを示すデジタルデータとして出力する演算値出力手段と、
を設けるようにしたものである。
【０００８】
(2)   本発明の第２の態様は、上述の第１の態様に係る線形補間演算器において、
非符号部演算手段を、
補間割合Ｄを示すデジタルデータの所定のビットの論理値に基づいて、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））のいずれかを選択して出力するセレクタと、
ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
によって構成したものである。
【０００９】
(3)   本発明の第３の態様は、上述の第１または第２の態様に係る線形補間演算器において、
符号部演算手段を、
ビットａｎ−１とビットｂｎ−１との排他的論理和を出力する第１のＸＯＲ回路と、
非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）を示すビットと、前記第１のＸＯＲ回路の出力ビットと、の排他的論理和を出力する第２のＸＯＲ回路と、
によって構成したものである。
【００１０】
(4)   本発明の第４の態様は、符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器を設計する方法において、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを入力する第１の補間対象値入力手段を設計する段階と、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを入力する第２の補間対象値入力手段を設計する段階と、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを入力する補間割合入力手段を設計する段階と、
演算式  ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）に基づく演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成する非符号部演算手段を設計する段階と、
ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、前記非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ2ｎ−1の値として求める符号部演算手段を設計する段階と、
「最上位ビット側から順に前記各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータ」もしくは「当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Ｃを示すデジタルデータとして出力する演算値出力手段を設計する段階と、
を行うようにしたものである。
【００１１】
(5)   本発明の第５の態様は、上述の第４の態様に係る線形補間演算器の設計方法において、
非符号部演算手段を設計する段階で、
補間割合Ｄを示すデジタルデータの所定のビットの論理値に基づいて、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））のいずれかを選択して出力するセレクタと、
ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））、前記セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力するカウンタと、
を用いた設計を行うようにしたものである。
【００１２】
(6)   本発明の第６の態様は、上述の第４または第５の態様に係る線形補間演算器の設計方法において、
符号部演算手段を設計する段階で、
ビットａｎ−１とビットｂｎ−１との排他的論理和を出力する第１のＸＯＲ回路と、
非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）を示すビットと、前記第１のＸＯＲ回路の出力ビットと、の排他的論理和を出力する第２のＸＯＲ回路と、
を用いた設計を行うようにしたものである。
【００１３】
(7)   本発明の第７の態様は、符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器を設計する方法において、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを定義し、
符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを定義し、
小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを定義し、
演算式  Ｃ＝−（ａｎ−１＋ｂｎ−１）２n−１+ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）で定義される乗算および加算を行うことにより線形補間値Ｃが得られるように演算器を構成する設計を行うようにしたものである。
【発明の効果】
【００１４】
本発明に係る線形補間演算器は、理想的な形態の演算式に対応した回路構成を有するため、符号をもった２つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を図示する実施形態に基づいて説明する。
【００１６】
＜＜＜  §１．線形補間と負数表現  ＞＞＞
はじめに、一般的な線形補間の基本概念と、デジタルデータにおける一般的な負数表現について簡単に説明しておく。図１は、線形補間演算の基本概念を示すグラフである。図示の例は、ｘ軸上に区間０〜１が設定されており、その両端点においてのみ関数ｆ（ｘ）の値が定義されている場合に、区間０〜１内の任意の位置ｘにおける関数値を線形補間により求める方法を示している。具体的には、ｆ（０）＝Ａ、ｆ（１）＝Ｂである場合に、０≦ｘ≦１の範囲内にある任意のｘについての関数値ｆ（ｘ）＝Ｃの値を、数値Ａ，Ｂを用いた補間演算により求めることになる。
【００１７】
線形補間では、図示のとおり、点Ａと点Ｂとの間に直線を定義し、この直線上にある点Ｃの縦座標値として、Ｃの値を求めることになる。ここで、任意の点ｘの位置を、「区間０〜１を『Ｄ：（１−Ｄ）』の比で分割する位置」と定義し、Ｄを補間割合と呼ぶことにすると、求める線形補間値Ｃは、２つの補間対象値Ａ，Ｂと補間割合Ｄとを用いて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる基本式で表わされる演算により求めることができる（＊は乗算を示す記号である）。なお、補間割合Ｄの値は、理論的には、０≦Ｄ≦１なる範囲をとることが可能であるが、本実施形態では、デジタルデータを用いた演算を行う都合上、Ｄ＝１の場合を除外し、０≦Ｄ＜１なる範囲をとるものとする。
【００１８】
たとえば、Ａ＝１０，Ｂ＝２０，Ｄ＝０．４という具体的な数値が与えられた場合、上記基本式に基づいて、Ｃ＝（１−０．４）＊１０＋（０．４＊２０）なる演算を行うことにより、Ｃ＝１４という補間値が求まることになる。もちろん、Ａ，Ｂのいずれか一方、あるいは双方が負の数であっても、上記基本式は有効である。たとえば、Ａ＝−１０，Ｂ＝２０，Ｄ＝０．４という具体的な数値が与えられた場合、上記基本式に基づいて、Ｃ＝（１−０．４）＊（−１０）＋（０．４＊２０）なる演算を行うことにより、Ｃ＝＋２という補間値が求まる。
【００１９】
続いて、デジタルデータにおける一般的な負数表現について述べる。図２は、２の補数表現により負数を表現する方法を説明する図である。図２の左側の表は、十進表現による数値と二進表現による数値との対応を示している。図示のとおり、４ビットの二進数を用いることにより、０を含めて＋７〜−７までの１５通りの数値を表現することができる。正の数の二進表現は、「００００」に順に１を加えてゆくことにより行うことができ、負の数の二進表現は、「００００」から順に１を減じてゆくことにより行うことができる。このような負数の表現方法は、「２の補数表現」と呼ばれており、デジタルデータでの一般的な負数の表現方法となっている。
【００２０】
図２の右側には、正の数の各ビットと負の数の各ビットとの対応関係が示されている。すなわち、正の数「Ａ」を４ビットの羅列「ａ３ａ２ａ１ａ０」で表わした場合、負の数「−Ａ」は、この４ビット「ａ３ａ２ａ１ａ０」をすべて論理反転させた後に１を加えた二進数として表現されることになる。たとえば、「＋７」の二進表現は、「０１１１」であるので、「−７」の二進表現は、「０１１１」の各ビットをすべて反転させて得られる「１０００」に、１を加えた「１００１」ということになる。絶対値が同じ正の数と負の数は、二進表現した場合、常に上述した関係が成り立つ。
【００２１】
図２の左側の表を見れば明らかなように、負の数を二進表現すると、その最上位ビットは必ず「１」になる。別言すれば、符号をもった二進数の場合、最上位ビットは符号を示す「符号部」、それ以外のビットは絶対値を示す「非符号部」として認識することができる。図示のように、全４ビットから構成される符号をもった二進数の場合、一番左の１ビットが「符号部」、残りの３ビットが「非符号部」ということになる。「符号部」が「０」であれば、その二進数は０または正の数であり、「符号部」が「１」であれば、その二進数は負の数である。
【００２２】
このように、符号をもった二進数は、必ず「符号部」と「非符号部」とを含んでいるため、その取り扱いは少々めんどうである。既に述べたとおり、符号をもった２つの補間対象値についての線形補間演算を実行することが可能な演算器は、従来から提案されている。しかしながら、これら従来の演算器は、いずれも符号をもった二進数を取り扱うために複雑な回路構成を採っており、効率的な演算を行うことができない。本発明は、符号をもった補間対象値についての線形補間演算を、単純な構成で効率的に実行する新たな手法を提案するものである。
【００２３】
＜＜＜  §２．基本式の変形  ＞＞＞
２つの補間対象値ＡおよびＢについての線形補間は、補間割合をＤ（但し、０≦Ｄ＜１）としたときに、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる基本式に基づく演算で実行されることは既に述べたとおりである。そこで、まず、二進数で表現されたデジタルデータに、この基本式を適用することを考えてみよう。
【００２４】
図３は、符号をもった補間対象値Ａ，Ｂと、０≦Ｄ＜１なる範囲内の値である補間割合Ｄとを、ｎビットからなる二進数のビット値を用いて定義した式を示す図である。この図３の上段には、まず、（式１）として、
Ａ＝−ａｎ−１２ｎ−１＋ａｎ−２２ｎ−２＋……＋ａ１２１＋ａ０２０
＝−ａｎ−１２ｎ−１＋Σｊ＝０〜ｎ−２ａｊ２ｊ
なる式が示されている（なお、本願特許請求の範囲および明細書本文では、電子出願の制約上、総和を示す算術演算子Σの下に記載すべきパラメータαおよびΣの上に記載すべきパラメータβを、Σα〜βのような下付き添字として記載することにする）。この（式１）におけるａｎ−１，ａｎ−２，…，ａ１，ａ０は、数値Ａをｎビットからなる二進数として表現した場合の各ビット（０または１）に相当するものであり、ａｎ−１が最上位ビット（１番左側のビット）、ａ０が最下位ビット（１番右側のビット）である。上述したとおり、最上位ビットは符号部を構成することになるため、（式１）の右辺第１項である「−ａｎ−１２ｎ−１」は符号部となり、残りの項である「Σｊ＝０〜ｎ−２ａｊ２ｊ」は非符号部となる。
【００２５】
（式１）の右下には、ｎ＝４の場合、すなわち、数値Ａを４ビットからなる二進数として表現した場合のビット構成図が示されている。この場合、最上位ビットの「ａ３」が符号部となり、残りの３ビットの部分「ａ２ａ１ａ０」が非符号部となる。この（式１）の意味合いは、具体的な数値を当てはめてみれば容易に理解できよう。たとえば、Ａ＝＋７を二進表現にすると、図２の表から「０１１１」である。すなわち、ａ３＝０，ａ２＝１，ａ１＝１，ａ０＝１となるが、これを（式１）において、ｎ＝４とした式に当てはめてみれば、
Ａ＝−０＊２３＋１＊２２＋１＊２１＋１＊２０＝＋７
となる。一方、負の数の場合、Ａ＝−７を二進表現にすると、図２の表から「１００１」であるから、ａ３＝１，ａ２＝０，ａ１＝０，ａ０＝１となるが、これを（式１）において、ｎ＝４とした式に当てはめてみれば、
Ａ＝−１＊２３＋０＊２２＋０＊２１＋１＊２０＝−７
となる。符号部の項にマイナスがついているのは、このように負の数の場合に、正しい値が得られるようにするためである。
【００２６】
同様に、図３の中段には、（式２）として、
Ｂ＝−ｂｎ−１２ｎ−１＋ｂｎ−２２ｎ−２＋……＋ｂ１２１＋ｂ０２０
＝−ｂｎ−１２ｎ−１＋Σｊ＝０〜ｎ−２ｂｊ２ｊ
なる式が示されている。この（式２）におけるｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０は、数値Ｂをｎビットからなる二進数として表現した場合の各ビット（０または１）に相当するものであり、ｂｎ−１が最上位ビット（１番左側のビット）、ｂ０が最下位ビット（１番右側のビット）である。やはり最上位ビットは符号部を構成することになるため、（式２）の右辺第１項である「−ｂｎ−１２ｎ−１」は符号部となり、残りの項である「Σｊ＝０〜ｎ−２ｂｊ２ｊ」は非符号部となる。
【００２７】
（式２）の右下には、ｎ＝４の場合、すなわち、数値Ｂを４ビットからなる二進数として表現した場合のビット構成図が示されている。この場合、最上位ビットの「ｂ３」が符号部となり、残りの３ビットの部分「ｂ２ｂ１ｂ０」が非符号部となる。
【００２８】
一方、図３の下段には、（式３）として、
Ｄ＝ｄｎ−１２−１＋ｄｎ−２２−２＋……＋ｄ０２−ｎ
＝Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）
なる式が示されている。この（式３）におけるｄｎ−１，ｄｎ−２，…，ｄ０は、数値Ｄを小数部のみを示すｎビットからなる二進数として表現した場合の各ビット（０または１）に相当するものであり、ｄｎ−１が最上位ビット（１番左側のビット）、ｄ０が最下位ビット（１番右側のビット）である。
【００２９】
（式３）の右下には、ｎ＝４の場合、すなわち、数値Ｄを小数部のみを示す４ビットからなる二進数として表現した場合のビット構成図が示されている。図示のとおり、この４ビットは、いずれも小数点よりも下の桁のビットとなり、たとえば、ビットｄ３は小数第１位の桁（２−１の桁）の値であり、ビットｄ２は小数第２位の桁（２−２の桁）の値である。数値Ｄは、０≦Ｄ＜１の範囲をとる補間割合であるので、符号をもたない二進数として表現される。たとえば、「１１１１」なる４ビットの二進数は、通常は「１５」なる十進数を示すことになるが、「１１１１」なる４ビットの二進数で数値Ｄが表現された場合、この４ビットは小数部のみを示すことになり、実際には、「０．１１１１」なる二進数に対応することになる（１／２＋１／４＋１／８＋１／１６＝０．９３７５に対応する）。したがって、ｎ＝４の場合、Ｄは０〜０．９３７５の値をとることになる。
【００３０】
さて、図３の（式１），（式２），（式３）によって、補間対象値Ａ，Ｂおよび補間割合Ｄをデジタルデータとして定義することができたので、これらの値を線形補間の基本式「Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂ」に代入してみると、図４の上段に示す（式４）が得られる。この（式４）において破線で囲って示した部分が、上記基本式の各項に対応する部分であり、（式１）〜（式３）を代入した部分である。この（式４）を展開して整理すると、（式５）が得られる。したがって、この（式５）に基づく演算を逐次実行するような演算回路を構成すれば、補間値Ｃを求める補間演算器を作成することは可能である。
【００３１】
しかしながら、この（式５）に基づいて補間値Ｃを求める補間演算器を設計すると、その構成はかなり複雑なものとなり、効率的な演算を期待することはできない。その第１の理由は、符号部の処理を適切に行うための何らかの工夫が必要になる点である。前述したとおり、ａｎ−１，ｂｎ−１という項は、補間対象値Ａ，Ｂの符号部であり、補間対象値の絶対値を示すものではない。このため、符号部として適切な取り扱いを行う必要がある。そして第２の理由は、総和を示す算術演算子Σ同士の積の形が含まれているため、多数の乗算器や加算器を用いた複雑な回路構成が必要になる点である。この（式５）に基づく逐次演算を行う以上、補間対象値Ａ，Ｂのビット数、すなわち、ｎの数が増えれば増えるほど、回路構成は飛躍的に複雑化することになる。
【００３２】
本願発明者は、この（式５）を別な形に変形することにより、単純な回路構成で効率的な演算が実施できるようになるのではないかと考えた。そこで、補間演算器としての具体的な回路構成を念頭において、この（式５）をどのような形に変形すれば、効率的な演算器を構成できるかを検討し、試行錯誤を行った結果、次に述べるような変形を行うことにより、極めて効率的な演算器を構成できることに想到した。
【００３３】
まず、図５の（式６）を考える。この（式６）自体は、数学的に古くから知られている公式である。たとえば、ｎ＝４の場合、（式６）は、次のようになる。
２−４＋２−３＋２−２＋２−１＋２−４
＝１／１６＋１／８＋１／４＋１／２＋１／１６＝１
もちろん、この（式６）は、任意のｎについて成立する公式である。この（式６）の右辺の１を左辺に移動すれば、（式７）が得られる。
【００３４】
次に、（式８）を考える。この（式８）の１行目は、「−Ｄ＝０−Ｄ」という至極当然の式であるが、「０」の部分に（式７）の左辺を代入し、「Ｄ」の部分に（式３）を代入すると、（式８）の２〜３行目が得られる。これを変形すると、（式９）の１行目から、更に２行目の形が導かれる。ところで、ｄｉは、補間割合Ｄの小数部のみを示すための各ビットであるから、実際の値としては、０または１のいずれかをとる。したがって、ｅｉ＝（１−ｄｉ）とおいた場合、ｅｉはｄｉの論理反転ビットということになる（ｄｉ＝１の場合、ｅｉ＝０となり、ｄｉ＝０の場合、ｅｉ＝１となる）。したがって、（式９）は、ｄｉの論理反転ビットをｅｉと書くことにより、（式１０）のように変形されることになる。
【００３５】
さて、ここで、図４に示す（式５）において、破線で囲った部分が「−Ｄ」であることに着目し、この部分に（式１０）の右辺を代入すると、図６の（式１１）が得られることになる。この（式１１）において、破線で囲った部分は、「−Ｄ」に対応する部分であり、（式１０）の右辺に相当する。一方、（式１１）の１行目に示された一点鎖線で囲った部分は、図の最下部左に示す（ア）のような形に変形することができる（２ｎ−１の項をΣ記号の内部へ組み込めばよい）。また、（式１１）の３行目に示された二点鎖線で囲った２箇所の部分の積は、図の最下部右に示す（イ）のような形に変形することができる（やはり２ｎ−１の項をΣ記号の内部へ組み込めばよい）。
【００３６】
かくして、図６の（式１１）を変形することにより、図７の（式１２）が得られることになる。この（式１２）は、図４に（式４）として示されている線形補間の基本式と等価であるが、この（式１２）の形は、補間演算器を設計する上で、極めて都合が良い形になっている。以下、この（式１２）を、「本発明に係る演算式」と呼ぶことにする。なお、この（式１２）の演算式に基づいて、線形補間値Ｃが得られるように構成した具体的な演算器については、後の§４に例示する。
【００３７】
＜＜＜  §３．本発明に係る演算式の特徴  ＞＞＞
図７に示す本発明に係る演算式（式１２）は、図に破線で囲って区別したように、符号部、非符号部１、非符号部２の３つの部分によって構成されており、後述するように、それぞれ固有の役割を果たすことになる。まず、この（式１２）の全体構成をながめると、求める補間値Ｃを、複数の項の和として表現した式であり、個々の項は、それぞれ２のべき乗に何らかの係数を乗じた形になっていることがわかる。ここで、２のべき乗は、二進数の特定の桁を示しており、これに乗じられる係数は、当該桁の数値を示している。たとえば、２ｎ−１は、補間値Ｃを示す二進数の最上位ビットの桁を示しており、補間値Ｃの符号部に対応する。
【００３８】
図７において、符号部と記された破線で囲まれた部分は、「−（ａｎ−１＋ｂｎ−１）２ｎ−１」なる形の項となっているが、これは、「ｎ−１」で示される桁（補間値Ｃの最上位ビットの桁）のビット値が、「−（ａｎ−１＋ｂｎ−１）」であることを示している。ここで、先頭にマイナス記号が付されているのは、図３の（式１）や（式２）の場合と同様に、当該ビットが符号を示す符号部として機能するためである。すなわち、負数を２の補数表現で表わした場合、最上位ビットで示される数値を、残りのビットで示される数値から減じることにより、当該負数が得られるためである。たとえば、十進数「−７」を二進表現すると、「１００１」となるが、最上位ビットの「１」で示される数値は２３＝８であり、残りの３ビット「００１」で示される数値は１であるから、−８＋１＝−７が得られることになる。
【００３９】
ところで、ａｎ−１は、補間対象値Ａの符号部（最上位ビット）であり、ｂｎ−１は、補間対象値Ｂの符号部（最上位ビット）であるから、図７に符号部と記された破線で囲まれた部分は、結局、両補間対象値Ａ，Ｂの符号部同士の和を、補間値Ｃの符号部（最上位ビット）とする機能を果たしていることになる。
【００４０】
また、図７に非符号部１と記された破線で囲まれた部分も、やはりａｎ−１とｂｎ−１（補間対象値Ａ，Ｂの符号部）に基づく演算から構成される部分であり、ａｎ−２以下のビットやｂｎ−２以下のビットは、一切関与していない。この非符号部１に含まれる２のべき乗の項は、最大でも２ｎ−２の項あるので（Σの総和を求める演算において、ｉ＝ｎ−１の場合の２（ｉ−１）の項）、この非符号部１の演算により、補間値Ｃの符号部（２ｎ−１の桁）が直接定義されることはないが、２ｎ−２の桁からの繰り上がりが生じた場合には、補間値Ｃの符号部（２ｎ−１の桁）に影響を与えることになる。そのような意味で、この非符号部１は、補間値Ｃの符号部に影響を与える可能性をもった演算を行う役割を果たす。
【００４１】
一方、図７に非符号部２と記された破線で囲まれた部分は、すべてａｎ−２以下のビットやｂｎ−２以下のビットに関する演算のみから構成されており、ａｎ−１やｂｎ−１（補間対象値Ａ，Ｂの符号部）に関する演算は全く含まれていない。別言すれば、この非符号部２は、両補間対象値Ａ，Ｂの非符号部のみに関する演算を行う役割を果たす。
【００４２】
このように、図７に示す（式１２）では、符号部、非符号部１、非符号部２という３つの部分による役割分担が明確になされているため、この式に基づいて演算器を構成すると、符号部の処理を適切に行うことが可能になる。これが、（式１２）の第１の特徴である。
【００４３】
（式１２）の第２の特徴は、式の形式上、ｄｉとｅｉとが相補的に組み込まれているという点である。たとえば、非符号部１には、「ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１）」なる形の式が含まれており、非符号部２には、「Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１）・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ」なる形の式が含まれている。前述したとおり、ｅｉはｄｉの論理反転ビットであるから、ｄｉが１であればｅｉは必ず０であり、ｄｉが０であればｅｉは必ず１である、という関係にある。したがって、上記各式の個々の項を演算するにあたって、ｄｉ＝１の場合は、ｅｉが含まれている項は必ず０になるので、ｄｉが含まれている項のみを演算すれば足り、ｄｉ＝０の場合は、ｄｉが含まれている項は必ず０になるので、ｅｉが含まれている項のみを演算すれば足りる。これにより、演算回路を単純化した効率的な演算が可能になる。
【００４４】
続いて、本発明に係る演算式の利点をより明瞭に示すために、図７に示す（式１２）において、ｎ＝４とした場合の具体的な事例を考えてみる。図８に示す（式１３）は、図７に示す（式１２）において、ｎに４を代入することにより得られる式である。この式は、補間対象値Ａ，Ｂと補間割合Ｄとが、いずれも４ビットのデジタルデータとして与えられた場合の演算式に対応することになる。すなわち、補間対象値Ａは、「ａ３ａ２ａ１ａ０」なる４ビットのデータとして与えられ、補間対象値Ｂは、「ｂ３ｂ２ｂ１ｂ０」なる４ビットのデータとして与えられ、補間割合Ｄは、「ｄ３ｄ２ｄ１ｄ０」なる４ビットのデータとして与えられる（図３の各式の右下の図参照）。この（式１３）において、２のべき乗の項に着目すると、最大は２３の項、最小は２−４の項であり、結局、演算結果として求められた補間値Ｃは、２３，２２，２１，２０，２−１，２−２，２−３，２−４という各桁の数値を示す合計８ビットのデータとして与えられることがわかる。ここでは、この８ビットの個々のデータを、ｃ７，ｃ６，ｃ５，ｃ４，ｃ３，ｃ２，ｃ１，ｃ０と表わすことにする。
【００４５】
図９は、図８に示す式に基づく演算に関与するデジタルデータのビット構成を示す図である。すなわち、図８に示す演算は、「ａ３ａ２ａ１ａ０」なる４ビットのデータとして与えられる補間対象値Ａと、「ｂ３ｂ２ｂ１ｂ０」なる４ビットのデータとして与えられる補間対象値Ｂと、「ｄ３ｄ２ｄ１ｄ０」なる４ビットのデータ（ビットｄ３の左側に小数点が位置し、小数部のみを示すデータ）として与えられる補間割合Ｄとに基づいて、「ｃ７ｃ６ｃ５ｃ４ｃ３ｃ２ｃ１ｃ０」なる８ビットのデータとして与えられる線形補間値Ｃを求める演算ということになる。上述したとおり、ビットｃ４は２０の桁の値であり、ビットｃ３は２−１の桁の値であるので、ビットｃ４とビットｃ３との間に小数点が位置することになる。したがって、図９の下段に示すとおり、補間値Ｃを構成する８ビットのデータのうち、ビット「ｃ７」は符号部、ビット「ｃ６ｃ５ｃ４」は整数部、ビット「ｃ３ｃ２ｃ１ｃ０」は小数部という構成になる。
【００４６】
なお、こうして得られた線形補間値Ｃは、８ビットのデータのまま演算結果として出力する必要はなく、必要な有効桁のみを適宜選択して出力すればよい。実用上は、補間対象値Ａ，Ｂを４ビットのデータとして与えたのであるから、最終的に出力する補間値Ｃも４ビットのデータであれば十分であるケースが多いであろう。このような場合は、小数部を切り捨て（もしくは切り上げ）して、符号部および整数部のみからなる４ビットのデータを出力すればよい。
【００４７】
続いて、図８に示す演算式に基づいて演算器を設計することにより、どれだけ効率的な演算が実現できるかを、具体的に説明しよう。図１０に示す（式１４）は、図８に示す（式１３）における算術演算子Σを展開したものである。（式１４）の符号部は、（式１３）のものと変わりはないが、非符号部１は、図示のとおり３行に展開されている。ここで、第２行目と第３行目とを比較すると、第２行目はａ３とｄｉ（ｉ＝０，１，２，３）についての式となっているのに対して、第３行目はｂ３とｅｉ（ｉ＝０，１，２，３）についての式となっている点は相違するものの、式の形は全く同じである。また、非符号部２は、図示のとおり丸数字１〜９に展開されている。ここでも、丸数字２と６，丸数字３と７，丸数字４と８，丸数字５と９をそれぞれ比較すると、前者はａｊ（ｊ＝０，１，２）とｅｉ（ｉ＝０，１，２，３）についての式となっているのに対して、後者はｂｊ（ｊ＝０，１，２）とｄｉ（ｉ＝０，１，２，３）についての式となっている点は相違するものの、式の形は全く同じである。
【００４８】
図１１は、図１０に示す式の非符号部２（丸数字１〜９の式）を構成する各項の係数を、各桁ごとに整理して示すテーブルである。このテーブルの横方向に並んだ列は、それぞれ２３，２２，２１，２０，２−１，２−２，２−３，２−４という位取りに対応しており、ビットｃ７，ｃ６，ｃ５，ｃ４，ｃ３，ｃ２，ｃ１，ｃ０は、演算によって求められる補間値Ｃの各ビットを示している。上述したとおり、ビットｃ４とビットｃ３との間に小数点が位置し、補間値Ｃを構成する８ビットのデータのうち、ビット「ｃ７」は符号部、ビット「ｃ６ｃ５ｃ４」は非符号部の整数部、ビット「ｃ３ｃ２ｃ１ｃ０」は非符号部の小数部である。
【００４９】
この図１１のテーブルの第１行目には、図１０に示す（式１４）の丸数字５の式の係数が記載されている。すなわち、丸数字５の式「ａ０ｅ３２−１＋ａ１ｅ３２０＋ａ２ｅ３２１」における係数「ａ０ｅ３」を２−１の桁に記載し、係数「ａ１ｅ３」を２０の桁に記載し、係数「ａ２ｅ３」を２１の桁に記載したものである。同様に、図１１のテーブルの第２行目には丸数字９の式の係数が記載されており、第３行目には丸数字４の式の係数が記載されており、第４行目には丸数字８の式の係数が記載されており、第５行目には丸数字３の式の係数が記載されており、第６行目には丸数字７の式の係数が記載されており、第７行目には丸数字２の式の係数が記載されており、第８行目には丸数字６の式の係数が記載されており、第９行目には丸数字１の式の係数が記載されている。
【００５０】
この図１１のテーブルに記載されている係数ａ０，ａ１，ａ２，ｂ０，ｂ１，ｂ２は、補間対象値Ａ，Ｂの非符号部を構成するいずれかのビットであり、絶対値を示すビットということができる（別言すれば、図１１のテーブルには、補間対象値Ａ，Ｂの符号部ａ３，ｂ３は含まれていない）。したがって、これらのビットに関しては、符号を考慮することなしに、単なる加算を行えば、補間値Ｃの絶対値の部分を算出することができる。
【００５１】
しかも、都合のよいことに、同じ桁の係数の中には、一対の相補的な係数が多く含まれている。たとえば、２−４の桁には、第７行目のａ０ｅ０、第８行目のｂ０ｄ０、第９行目のａ０、という３つの係数が記載されており、ビットｃ０は、これら３つの係数を加算することにより求めることができる。ところが、ｅｉはｄｉの論理反転ビットであるから、第７行目のａ０ｅ０と第８行目のｂ０ｄ０とは一対の相補的な係数を構成しており、必ず、いずれか一方は０になる。たとえば、ｅ０＝１の場合、ｄ０＝０であるから、ビットｃ０は、第９行目のａ０に、第７行目のａ０を加える演算を行うだけで求まる。逆に、ｅ０＝０の場合、ｄ０＝１であるから、ビットｃ０は、第９行目のａ０に、第８行目のｂ０を加える演算を行うだけで求まる。
【００５２】
結局、ビットｃ０を求めるには、まず、ｄ０の値に応じて第７行目の係数ａ０か、第８行目の係数ｂ０か、のいずれか一方を選択し（具体的には、ｄ０＝０の場合はａ０を選択し、ｄ０＝１の場合はｂ０を選択し）、選択結果を第９行目の係数ａ０に加算する処理を行えばよい。このような一対の相補的な係数は、たとえば、２−３の桁の第５行目と第６行目、第７行目と第８行目、２−２の桁の第３行目と第４行目、第５行目と第６行目、第７行目と第８行目、…というように、各桁の随所に見られる。したがって、個々の桁ごとの加算を行う演算回路の構成は、非常に単純化される。
【００５３】
図１２に示すテーブルは、図１０に示す（式１４）を構成する各項の係数すべてを、各桁ごとに整理して示すテーブルである。このテーブルにおいて、２３の桁に記載された「−（ａ３＋ｂ３）」は、（式１４）の符号部の係数に対応するものであり、太線で囲った部分に記載された各係数は、（式１４）の非符号部１の各係数に対応するものである。別言すれば、図１２に示すテーブルは、図１１に示すテーブルに、更に、符号部および非符号部１の係数を追加したテーブルということができる。この図１２で追加された係数は、補間値Ｃの絶対値に関与するものではなく、補間値Ｃの符号に関与するものである。以下、補間値Ｃの符号がどのように決定されるかを説明する。
【００５４】
図１２の２３の桁には、「−（ａ３＋ｂ３）」なる符号付きの係数が記載されているが、これは（式１４）の符号部の係数を便宜上そのまま転載したものであり、実際の演算で用いられる本来のビットを示すものではない。本来のビット演算には、そもそも「マイナス」という符号の概念はない。したがって、図１２に示すテーブルにおいて、補間値Ｃの非符号部に相当する各ビットｃ６，ｃ５，ｃ４，ｃ３，ｃ２，ｃ１，ｃ０は、各桁（各列）に記載された係数値を加算し、繰り上がりがあれば、上位の桁へと繰り上げ処理を行うという通常の演算により決定することができるが、符号部に相当するビットｃ７については、次のような方法で、そのビット値を決定するようにする。
【００５５】
まず、（ａ３＋ｂ３）なる演算結果を求める。ａ３もｂ３も１ビットの数値（０または１）であるので、（ａ３＋ｂ３）なる演算結果は、二進表現での０，１，１０のいずれかになる。次に、非符号部についての演算（図１２に示すビットｃ６〜ｃ０を求めるための加算演算）によって、ビットｃ６の桁（２２の桁）からの繰り上がり（二進表現での０，１のいずれか：繰り上がり有りの場合は１、繰り上がり無しの場合は０）を求め、（ａ３＋ｂ３）なる演算結果に加算する。そして、この加算の結果として得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ７の値とする。
【００５６】
このような方法でビットｃ７の値を決定する意味を説明しよう。ここでは、説明の便宜上、２つの補間対象値Ａ，Ｂの符号に基づく場合分けを行うことにする。
【００５７】
まず、値Ａ，Ｂがいずれも正の場合を考えてみる。この場合、ａ３＝０，ｂ３＝０であるから、（ａ３＋ｂ３）なる和も０になる。しかも、この場合、非符号部からの繰り上がりも０になる（すなわち、非符号部からの繰り上がりは生じない）。なぜなら、図１２に太線で囲った部分（非符号部１）は、ａ３＝０，ｂ３＝０であるからいずれも０になり、これらに起因する繰り上がりは０である。また、この太線で囲った部分よりも右側の部分（非符号部２：図１１のテーブルに記載されている部分）については、これらの部分に起因したビットｃ７の桁への繰り上がりは必ず０である。
【００５８】
その理由は、この演算が２つの補間対象値Ａ，Ｂについての補間演算であるためである。非符号部は、補間値Ｃの絶対値を示す部分であるが、この絶対値は、必ず、値Ａの絶対値と値Ｂの絶対値との中間的な値になるので、値Ａの絶対値や値Ｂの絶対値を決して超えることはない。したがって、図１１のテーブルに記載されている部分に関する加算を行う限り、最終的にビットｃ７の桁への繰り上がりは必ず０である。これは、１００未満の２つの正の数を補間対象値Ａ，Ｂとした場合、その補間値Ｃも必ず１００未満の正の値になることを考えれば、容易に理解できよう。この場合、補間値Ｃが３桁の数になることはあり得ない。補間対象値Ａ，Ｂがいずれも２桁の数で収まっている以上、補間値Ｃも２桁の数に収まり、２桁目から３桁目への繰り上がりは必ず０である。
【００５９】
結局、値Ａ，Ｂがいずれも正の場合は、（ａ３＋ｂ３）＝０に、非符号部からの繰り上がり（＝０）を加えることにより、ビットｃ７＝０が得られることになる。これは、得られた補間値Ｃが正の数であることを示しており、正しい符号の取り扱いがなされたことになる。
【００６０】
次に、値Ａ，Ｂがいずれも負の場合を考えてみる。この場合、ａ３＝１，ｂ３＝１であるから、（ａ３＋ｂ３）なる和は１０になる。しかも、この場合、非符号部からの繰り上がりも必ず１になる（すなわち、ビットｃ６の桁からビットｃ７の桁への繰り上がりが必ず生じる）。これは、図１２に太線で囲った部分（非符号部１）の演算を考えれば容易に理解できる。まず、ビットｃ３の桁に記載された非符号部１（太線で囲った部分）の加算は、「ａ３ｄ０＋ｂ３ｅ０＋ｂ３」であるが、ａ３＝１，ｂ３＝１であり、しかもｄ０かｅ０かのいずれか一方は１であるから、ビットｃ３の桁の合計値は、少なくとも「１０」になり、ビットｃ３の桁からビットｃ４の桁への繰り上がりは必ず生じる。
【００６１】
次に、ビットｃ４の桁に記載された非符号部１（太線で囲った部分）の加算は、「ａ３ｄ１＋ｂ３ｅ１」であるが、ａ３＝１，ｂ３＝１であり、しかもｄ１かｅ１かのいずれか一方は１、他方は０であるから、「ａ３ｄ１＋ｂ３ｅ１＝１」になる。ここに、ビットｃ３の桁からの繰り上がりが加算されるので、ビットｃ４の桁の合計値は、少なくとも「１０」になり、ビットｃ４の桁からビットｃ５の桁への繰り上がりは必ず生じる。
【００６２】
同様にして、ビットｃ５の桁からビットｃ６の桁への繰り上がりも必ず生じることになり、更に、ビットｃ６の桁からビットｃ７の桁への繰り上がりも必ず生じることになる。結局、値Ａ，Ｂがいずれも負の場合は、（ａ３＋ｂ３）＝１０に、非符号部からの繰り上がり（＝１）を加えることにより、「１１」なる加算結果が得られる。ビットｃ７は、この加算結果の下位側のビットとして定義されるので、ビットｃ７＝１が得られることになる。これは、得られた補間値Ｃが負の数であることを示しており、正しい符号の取り扱いがなされたことになる。
【００６３】
最後に、値Ａ，Ｂのいずれか一方が正、他方が負の場合を考えてみる。この場合、（ａ３＋ｂ３）なる和は１になるので、ビットｃ７の値は、非符号部からの繰り上がりに依存して、０になったり１になったりする。ここでは詳しい説明は省略するが、得られる補間値Ｃが零もしくは正の数になる場合には、非符号部からの繰り上がりが必ず生じ、得られる補間値Ｃが負の数になる場合には、非符号部からの繰り上がりは生じない。したがって、補間値Ｃが零もしくは正の数の場合は、（ａ３＋ｂ３）の演算結果である１に、繰り上がりの１を加えることにより、「１０」なる加算結果が得られることになり、この加算結果の下位側のビットとして定義されるビットｃ７は０になる。これは、得られた補間値Ｃが零または正の数であることを示しており、正しい符号の取り扱いがなされたことになる。逆に、補間値Ｃが負の数の場合は、（ａ３＋ｂ３）の演算結果である１に、繰り上がりの０を加えることにより、「１」なる加算結果が得られることになり、ビットｃ７は１になる。これは、得られた補間値Ｃが負の数であることを示しており、正しい符号の取り扱いがなされたことになる。
【００６４】
このように、図１２のテーブルに基づく演算において、ビットｃ７の値を前述したような方法で決定するようにすれば、正しい符号の取り扱いが可能になる。
【００６５】
以上、説明の便宜上、ｎ＝４の具体的な場合を例にとって説明を行ったが、もちろん、ｎは２以上の整数であれば任意の値に設定することができる。要するに、本発明の特徴は、符号をもった２つの補間対象値ＡおよびＢと、補間割合Ｄ（但し、０≦Ｄ＜１）と、に基づいて、Ｃ＝（１−Ｄ）＊Ａ＋Ｄ＊Ｂなる式で示される線形補間値Ｃを求める演算を行う線形補間演算器を、図７の（式１２）に示す演算式、すなわち、Ｃ＝−（ａｎ−１＋ｂｎ−１）２n−１+ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  なる演算式（但し、ｅｉはｄｉの論理反転ビット）で定義される乗算および加算を行うことにより線形補間値Ｃが得られるように演算器を構成する点にある。
【００６６】
このとき、この演算器に与えるべき補間対象値Ａは、符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有するようにする。
【００６７】
また、この演算器に与えるべき補間対象値Ｂは、符号を示す最上位ビットからなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有するようにする。
【００６８】
更に、この演算器に与えるべき補間割合Ｄは、小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有するようにする。
【００６９】
上記演算式のうち、「ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ」なる部分（但し、ｅｉはｄｉの論理反転ビット）は、非符号部に関する演算を示しており、この非符号部に関する演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成することができる。
【００７０】
一方、上記演算式のうち、「−（ａｎ−１＋ｂｎ−１）２n−１」なる部分に関しては、ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、非符号部に関する演算の結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、それぞれビットｃ2ｎ−1の値として求める処理を行えばよい。
【００７１】
こうして、最上位ビット側から順に、各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータが得られたら、当該２ｎビットのデジタルデータ、もしくは、当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータを、線形補間値Ｃを示すデジタルデータとして出力すればよい。
【００７２】
このように、線形補間演算器を、図７の（式１２）に示す演算式に基づいて設計すれば、非常に合理的な符号の取り扱いが可能になり、また、同じ桁の加算演算を行う際に、一対の相補的な係数を利用した効率的な演算が可能になるので、符号をもった２つの補間対象値についての線形補間演算を、単純な構成で効率的に実行することが可能な線形補間演算器を実現できる。
【００７３】
＜＜＜  §４．本発明に係る線形補間演算器の具体的な構成例  ＞＞＞
続いて、図７に示す本発明に係る演算式（式１２）に基づく補間演算を実行する機能を有する具体的な線形補間演算器の構成例を述べる。この（式１２）の演算式は、大別して、符号部と非符号部（非符号部１および２）とによって構成されるので、ここでは、符号部についての演算処理を行う部分を符号部演算手段と呼び、非符号部についての演算処理を行う部分を非符号部演算手段と呼ぶことにする。非符号部演算手段は、セレクタとカウンタとの組合わせによって構成することができる。セレクタとしては、補間割合Ｄを示すデジタルデータの所定のビットの論理値に基づいて、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））のいずれかを選択して出力する機能をもった装置を用いればよく、カウンタとしては、ビットａｉもしくはｂｉ（但し、ｉ＝０，１，２，…，（ｎ−１））、セレクタの出力値、もしくは他のカウンタの出力値を入力し、入力した値の加算結果を出力する機能をもった装置を用いればよい。
【００７４】
図１３は、上述のような機能をもったセレクタおよびカウンタの具体例を示す図であり、これらのセレクタやカウンタは、後述する具体的な線形補間演算器の基本構成要素として利用されている。
【００７５】
まず、図１３(a) に示すセレクタ１００は、２つの入力値Ｘ，Ｙ（いずれも１ビットの値）のうち、いずれか一方を選択値Ｓとして出力する機能をもった構成要素である。いずれの入力値を選択するかは、１ビットの制御値Ｄの論理状態によって定まる。すなわち、制御値Ｄ＝０のときは、入力値Ｘが選択され（Ｓ＝Ｘになる）、制御値Ｄ＝１のときは、入力値Ｙが選択される（Ｓ＝Ｙになる）。
【００７６】
次に、図１３(b) に示す２−２カウンタ２００は、２つの入力値Ｘ，Ｙ（いずれも１ビットの値）についての加算演算を行い、演算結果の２０の桁の値を和Ｓとして出力し、演算結果の２１の桁の値をキャリーＣ（上位桁への繰り上がり）として出力する機能をもった構成要素である。和ＳおよびキャリーＣは、いずれも１ビットのデータになる。
【００７７】
また、図１３(c) に示す３−２カウンタ３００は、３つの入力値Ｘ，Ｙ，Ｚ（いずれも１ビットの値）についての加算演算を行い、演算結果の２０の桁の値を和Ｓとして出力し、演算結果の２１の桁の値をキャリーＣ（上位桁への繰り上がり）として出力する機能をもった構成要素である。やはり和ＳおよびキャリーＣは、いずれも１ビットのデータになる。
【００７８】
図１４〜図１６は、図１３に示すセレクタ１００，２−２カウンタ２００，３−２カウンタ３００を組み合わせることにより構成した線形補間演算器を示す回路図である。図示の便宜上、３つの図面に分けて示してあるが、この３つの図面に描かれた回路全体によって、１台の線形補間演算器が構成されることになる。図において、１００番台の符号が記されている構成要素１０１〜１１６は、図１３(a) に示すセレクタ１００と同等の要素であり、２００番台の符号が記されている構成要素２０１〜２０４は、図１３(b) に示す２−２カウンタ２００と同等の要素であり、３００番台の符号が記されている構成要素３０１〜３１２は、図１３(c) に示す３−２カウンタ３００と同等の要素である。また、図１６に示す構成要素４０１，４０２は、ＸＯＲ回路（排他的論理和回路）である。
【００７９】
なお、説明の便宜上、各セレクタから出力される選択値は、当該セレクタの符号の頭にＳをつけた符号で示すことにし、各カウンタから出力される和もしくはキャリーには、当該カウンタの符号の頭にＳもしくはＣをつけた符号で示すことにする。たとえば、図１４の右側に示されているＳ１０１は、セレクタ１０１から出力される選択値であり、Ｓ２０１は、カウンタ２０１から出力される和であり、Ｃ２０１は、カウンタ２０１から出力されるキャリー（上位桁へ加算されることになる）である。また、図１６の左側に示されているＳ４０１，Ｓ４０２は、それぞれＸＯＲ回路４０１，４０２の排他的論理和出力である。
【００８０】
この図１４〜図１６に示されている線形補間演算器は、図８の（式１３）に示されている演算式（ｎ＝４の場合の演算式）に基づいて、補間値Ｃを求める演算を行うものであり、その構成は、図１２のテーブルに対応したものとなっている。すなわち、図１４に示すビットｃ０演算部，ビットｃ１演算部，ビットｃ２演算部、図１５に示すビットｃ３演算部，ビットｃ４演算部、図１６に示すビットｃ５演算部，ビットｃ６演算部は、それぞれ図１２のテーブルにおけるビットｃ０〜ｃ６を求める演算を行う構成要素であり、ビットｃ７演算部は、図１２のテーブルにおけるビットｃ７を求める演算を行う構成要素である。別言すれば、ビットｃ０演算部〜ビットｃ６演算部により非符号部演算手段が構成され、ビットｃ７演算部により符号部演算手段が構成されていることになる。
【００８１】
また、図１４〜図１６に示されている値ａ０，ａ１，ａ２，ａ３は、補間対象値Ａの各ビットであり、値ｂ０，ｂ１，ｂ２，ｂ３は、補間対象値Ｂの各ビットであり、値ｄ０，ｄ１，ｄ２，ｄ３は、補間割合Ｄの各ビットである。そして、各ビット演算部の下部に描かれている出力値Ｓ０〜Ｓ７は、図１２のテーブルにおけるビットｃ０〜ｃ７の値に対応する。
【００８２】
たとえば、図１４に示すビットｃ０演算部の構成に着目すると、図１２のテーブルにおけるビットｃ０を求める演算を行うための構成になっていることが理解できるであろう。セレクタ１０１は、制御値ｄ０に基づいて、２つの入力値ａ０，ｂ０のいずれか一方を選択し、選択した入力値を選択値Ｓ１０１として出力する機能を果たすが、これは、図１２のテーブルにおけるビットｃ０の桁に示されている係数「ａ０ｅ０」と「ｂ０ｄ０」との加算に相当する処理である。既に述べたとおり、「ａ０ｅ０」と「ｂ０ｄ０」とは、相補的な関係にあり、ｄ０＝１の場合は、ａ０ｅ０＝０、ｂ０ｄ０＝ｂ０となり、ｄ０＝０の場合は、ａ０ｅ０＝ａ０、ｂ０ｄ０＝０となるので、結局、セレクタ１０１により、ｄ０＝１の場合は、Ｓ１０１＝ｂ０を選択値として出力し、ｄ０＝０の場合は、Ｓ１０１＝ａ０を選択値として出力すれば、係数「ａ０ｅ０」と「ｂ０ｄ０」との加算に相当する処理に代えることができる。最後に、カウンタ２０１により、選択値Ｓ１０１とａ０との加算を行えば、結果的に、図１２のテーブルにおけるビットｃ０を求める演算が実行されたことになる。
【００８３】
このとき、ビットｃ１の桁への繰り上がりがあれば、キャリーＣ２０１＝１なる値が、ビットｃ１演算部へと伝達されることになる。もちろん、繰り上がりがなければ、キャリーＣ２０１＝０なる値が、ビットｃ１演算部へと伝達される。他の桁についての演算も、これと同様である。
【００８４】
なお、図１６の左側に示すビットｃ７の演算部だけは、符号部として機能するビットｃ７を決定する処理を行う必要があるため、他の演算部とは異なる構成を有している。ビットｃ７を決定する処理は、既に§３で述べたとおり、（ａ３＋ｂ３）なる和（二進表現での０，１，１０のいずれか）に、ビットｃ６の演算部からの繰り上がりを加算して得られる二進数を求め、求めた二進数が１ビットの場合には当該ビットを、求めた二進数が２ビットの場合には下位側のビットを、ビットｃ７の値とする、という処理になる。ＸＯＲ回路４０１，４０２によって構成される図示の回路は、正にこのような処理を行う回路である。
【００８５】
すなわち、ＸＯＲ回路４０１の出力値Ｓ４０１は、ａ３とｂ３とが等しければ０、異なれば１になるので、ａ３＝０，ｂ３＝０の場合は０になり、ａ３＝１，ｂ３＝０の場合は１になり、ａ３＝０，ｂ３＝１の場合は１になり、ａ３＝１，ｂ３＝１の場合は０になる。
そして、ＸＯＲ回路４０２の出力値Ｓ４０２は、この出力値Ｓ４０１とＣ３１２（ビットｃ６の演算部からの繰り上がり）との排他的論理和になるので、Ｓ４０１＝０，Ｃ３１２＝０の場合は０になり、Ｓ４０１＝１，Ｃ３１２＝０の場合は１になり、Ｓ４０１＝０，Ｃ３１２＝１の場合は１になり、Ｓ４０１＝１，Ｃ３１２＝１の場合は０になる。結局、ＸＯＲ回路４０２の出力値Ｓ４０２は、（ａ３＋ｂ３）なる和に、ビットＣ６の演算部からの繰り上がりを加算して得られる二進数の下位側のビットということになる。
【００８６】
ｎを任意の値に設定した場合は、ビットａｎ−１とビットｂｎ−１との排他的論理和を出力する第１のＸＯＲ回路と、非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）を示すビットと、第１のＸＯＲ回路の出力ビットと、の排他的論理和を出力する第２のＸＯＲ回路と、によって符号部演算手段を構成すればよい。
【００８７】
なお、符号部演算手段は、必ずしもＸＯＲ回路を用いて構成する必要はない。たとえば、図１６に示すＸＯＲ回路４０１，４０２の代わりに、図１３(b) に示す２−２カウンタ２００を用いることも可能である。この場合、２−２カウンタの和Ｓの値を、それぞれ出力値Ｓ４０１，Ｓ４０２として利用し、キャリーＣについては無視すればよい。もっとも、このような構成では、キャリーＣを無駄にすることになるので、実用上は、図１６に示すようにＸＯＲ回路を用いて構成するのが好ましい。
【００８８】
以上、本発明に係る線形補間演算器の主要部の構成例を、図１４〜図１６の回路図を参照して説明したが、実際には、この主要部にデジタルデータＡ，Ｂ，Ｄを入力するための構成要素と、この主要部からデジタルデータＣを出力するための構成要素とを付加する必要がある。図１７は、このような入出力のための構成要素を付加することにより得られる本発明に係る線形補間演算器の全体構成を示すブロック図である。
【００８９】
図示のとおり、この線形補間演算器は、ｎビットのデジタルデータＡを入力するための第１の補間対象値入力手段１０と、ｎビットのデジタルデータＢを入力するための第２の補間対象値入力手段２０と、ｎビットのデジタルデータＤを入力するための補間割合入力手段３０と、演算手段４０とによって構成されている。
【００９０】
第１の補間対象値入力手段１０は、符号を示す最上位ビットａｎ−１からなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部（ａｎ−２，……，ａ１，ａ０）と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ａｎ−１，ａｎ−２，…，ａ１，ａ０なるビットを有する補間対象値Ａを入力する手段である。
【００９１】
また、第２の補間対象値入力手段２０は、符号を示す最上位ビットｂｎ−１からなる符号部と、絶対値を示す（ｎ−１）ビットからなる非符号部（ｂｎ−２，……，ｂ１，ｂ０）と、によって構成され（但し、ｎ≧２）、２の補数表現により負数を表現した合計ｎビットのデジタルデータとして、最上位ビット側から順に、ｂｎ−１，ｂｎ−２，…，ｂ１，ｂ０なるビットを有する補間対象値Ｂを入力する手段である。
【００９２】
一方、補間割合入力手段３０は、小数部のみを示すｎビットのデジタルデータとして、最上位ビット側から順に、ｄｎ−１，ｄｎ−２，…，ｄ１，ｄ０なるビットを有する補間割合Ｄを入力する手段である。
【００９３】
そして、演算手段４０は、図示のとおり、符号部演算手段４１，非符号部演算手段４２，演算値出力手段４３によって構成されている。ここで、非符号部演算手段４２は、演算式  ｂｎ−１２−１＋（ａｎ−１Σｉ＝０〜ｎ−１ｄｉ２（ｉ−１）＋ｂｎ−１Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））＋（２−ｎ＋Σｉ＝０〜ｎ−１ｅｉ２（ｉ−１））・Σｊ＝０〜ｎ−２ａｊ２ｊ＋Σｉ＝０〜ｎ−１ｄｉ２（ｉ−ｎ）・Σｊ＝０〜ｎ−２ｂｊ２ｊ  （但し、ｅｉはｄｉの論理反転ビット）に基づく演算を行うことにより、最上位ビット側から順に、ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０なるビットを有する合計（２ｎ−１）ビットのデジタルデータを生成する機能を果たす。また、符号部演算手段４１は、ａｎ−１＋ｂｎ−１なる演算結果（二進表現での０，１，１０のいずれか）と、前記非符号部演算手段による演算結果として得られるビットｃ2n−２の桁からの繰り上がり（二進表現での０，１のいずれか）と、を加算して得られる二進数の右側の桁のビットを、ビットｃ2ｎ−1の値として求める機能を果たす。そして、演算値出力手段４３は、「最上位ビット側から順に各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータ」もしくは「当該２ｎビットのデジタルデータのうち必要な有効桁数に相当するデジタルデータ」を、線形補間値Ｃを示すデジタルデータとして出力する機能を果たす。
【００９４】
なお、各ビットｃ2ｎ−1，ｃ2ｎ−２，ｃ2ｎ−３，…，ｃ１，ｃ０を羅列してなる合計２ｎビットのデジタルデータは、ビットｃｎとｃｎ−１との間に小数点が位置するデータであり、ビットｃ2ｎ−1は符号部、ビットｃ2ｎ−２，ｃ2ｎ−３，…，ｃｎは整数部、ビットｃｎ−１，…，ｃ１，ｃ０は小数部を示すビットになる。
【図面の簡単な説明】
【００９５】
【図１】線形補間演算の基本概念を示すグラフである。
【図２】２の補数表現により負数を表現する方法を説明する図である。
【図３】補間対象値Ａ，Ｂと補間割合Ｄとを、二進数のビット値を用いて定義した式を示す図である。
【図４】本発明に係る線形補間演算器で実行される補間演算の基本式を示す図である。
【図５】図４に示す基本式の変形プロセスを示す図である。
【図６】図４に示す基本式の変形プロセスを示す別な図である。
【図７】図４に示す基本式を変形することにより得られる本発明の特徴となる演算式を示す図である。
【図８】図７に示す演算式にｎ＝４を代入することにより得られる式を示す図である。
【図９】図８に示す式に基づく演算に関与するデジタルデータのビット構成を示す図である。
【図１０】図８に示す式における算術演算子Σを展開した式を示す図である。
【図１１】図１０に示す式の非符号部２を構成する各項の係数を、各桁ごとに整理して示すテーブルである。
【図１２】図１０に示す式を構成する各項の係数を、各桁ごとに整理して示すテーブルである。
【図１３】本発明の一実施形態に係る線形補間演算器の基本構成要素を示す図である。
【図１４】本発明の一実施形態に係る線形補間演算器の第１の部分を示す回路図である。
【図１５】本発明の一実施形態に係る線形補間演算器の第２の部分を示す回路図である。
【図１６】本発明の一実施形態に係る線形補間演算器の第３の部分を示す回路図である。
【図１７】本発明に係る線形補間演算器の全体構成を示すブロック図である。
【符号の説明】
【００９６】
１０：第１の補間対象値入力手段
２０：第２の補間対象値入力手段
３０：補間割合入力手段
４０：演算手段
４１：符号部演算手段
４２：非符号部演算手段
４３：演算値出力手段
１００〜１１６：セレクタ
２００〜２０４：２−２カウンタ
３００〜３１２：３−２カウンタ
４０１，４０２：ＸＯＲ回路
【図１】
2007219714.tif 000003
【図２】
2007219714.tif 000004
【図３】
2007219714.tif 000005
【図４】
2007219714.tif 000006
【図５】
2007219714.tif 000007
【図６】
2007219714.tif 000008
【図７】
2007219714.tif 000009
【図８】
2007219714.tif 000010
【図９】
2007219714.tif 000011
【図１０】
2007219714.tif 000012
【図１１】
2007219714.tif 000013
【図１２】
2007219714.tif 000014
【図１３】
2007219714.tif 000015
【図１４】
2007219714.tif 000016
【図１５】
2007219714.tif 000017
【図１６】
2007219714.tif 000018
【図１７】
2007219714.tif 000019