位相出力回路
【課題】小さな回路規模で浮動小数点形式のディジタル値A,Bに対応することができる位相出力回路を提供する。
【解決手段】ビット分割回路6−1、6−2を設け、浮動小数点形式のディジタル値A、Bを指数部ビットAe、Beと仮数部ビットAm、Bmとに分割する。大小差検出部7において、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、仮数部調整回路8−1,8−2へ送る。仮数部調整回路8−1は、Ae−Beが負の場合、ディジタル値Aの仮数部ビットAmをディジタル値B側の指数に合わせて調整し、仮数部調整回路8−2は、Ae−Beが正の場合、ディジタル値Bの仮数部ビットBmをディジタル値A側の指数に合わせて調整し、最上位ビットから下位mビットを選択抽出し、mビット幅データa,bとして処理部に出力する。処理部は位相変換テーブルのアドレス(a,b)のθを出力する。
【解決手段】ビット分割回路6−1、6−2を設け、浮動小数点形式のディジタル値A、Bを指数部ビットAe、Beと仮数部ビットAm、Bmとに分割する。大小差検出部7において、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、仮数部調整回路8−1,8−2へ送る。仮数部調整回路8−1は、Ae−Beが負の場合、ディジタル値Aの仮数部ビットAmをディジタル値B側の指数に合わせて調整し、仮数部調整回路8−2は、Ae−Beが正の場合、ディジタル値Bの仮数部ビットBmをディジタル値A側の指数に合わせて調整し、最上位ビットから下位mビットを選択抽出し、mビット幅データa,bとして処理部に出力する。処理部は位相変換テーブルのアドレス(a,b)のθを出力する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、2入力A,B(ディジタル値)のtan-1(B/A)を位相変換テーブルを利用して求める位相出力回路、例えば特許文献1(パターン照合装置)に記載されている位相限定相関法による指紋照合過程で指紋の位相情報を高速且つ精度よく求める場合に複素数A+jBを位相θに変換する際に用いられる位相出力回路に関するものである。
【背景技術】
【0002】
従来より、この種の位相出力回路として、2入力A,Bのtan-1(B/A)=θを予め求めておいて位相変換テーブルのアドレス(A,B)に格納しておき、A,Bが入力されたならこの2入力A,Bに対応するθ=tan-1(B/A)を位相変換テーブルから読み出して出力する方法が考えられている。
【0003】
すなわち、図10に示すように、A,Bのビット幅nに対応してすべての組み合わせ分のアドレス(A,B)を位相変換テーブル1に用意してそれぞれのtan-1(B/A)=θを格納しておく。A,Bが処理部2に入力されると、処理部2は2入力A,Bに対応するθ=tan-1(B/A)を位相変換テーブル1から読み出して出力する。
【0004】
この場合、入力値A,Bのすべての組み合わせ分のテーブルを用意していれば、高精度な結果を得ることができるが、位相変換テーブル1が極めて大きくなり、現実的ではない。例えば、A,Bそれぞれが16ビット幅を持つ場合、2の32乗個分のワードの位相変換テーブル1が必要となり、回路規模が激増してしまう。
【0005】
そこで、位相変換テーブル1の容量を小さくした位相出力回路として、本出願人が先に提案した特許文献2が存在する。この特許文献2に示された位相出力回路の構成を図11に示す。同図において、1は位相変換テーブル、2は処理部、3は最上位有効ビット検出部、4は下位ビット選択抽出部であり、最上位有効ビット検出部3は論理和回路3−1とプライオリティ・エンコーダ3−2とから構成され、下位ビット選択抽出部4はマルチプレクサ4−1と4−2とから構成されている。
【0006】
この位相出力回路において、最上位有効ビット検出部3は、nビット幅のディジタル値A,Bを入力とし、この入力値A,Bのうち数値を有効とするビットパターン(この例では、「0」,「1」レベルの「1」)が割り当てられた最も上位のビット位置を最上位有効ビット位置Pとして検出する。なお、この例では、A,Bは共に正の値を示すディジタル値とされ、固定小数点のデータとして入力されことを前提としている。
【0007】
下位ビット選択抽出部4は、最上位有効ビット検出部3への入力値AおよびBを分岐入力とし、また最上位有効ビット検出部3からの最上位有効ビット位置Pを入力とし、入力値AおよびBより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データaおよびbとして処理部2へ与える。
【0008】
位相変換テーブル1にはアドレス(a,b)にθ=tan-1(b/a)が格納されている。すなわち、mビット幅データa,bに対応してすべての組み合わせ分のアドレス(a,b)を位相変換テーブル1に用意し、それぞれのtan-1(b/a)=θを格納している。この位相変換テーブル1の容量はmによって決まり、ワード数にして22mワードでよい。
【0009】
今、A,Bを8ビット幅のディジタル値とし、Aとして「01100101」が、Bとして「00101011」が入力されるものとする。この場合、最上位有効ビット検出部3の論理和回路3−1は、入力値A,Bの各ビットの論理和をとる。これにより、論理和回路3−1からの出力(論理和出力)は、「01101111」となる。この論理和出力はプライオリティ・エンコーダ3−2へ与えられる。
【0010】
プライオリティ・エンコーダ3−2は論理和回路3−1からの論理和出力における最も上位に存在する「1」、すなわち数値を有効とするビットパターンの位置を検出する。この場合、プライオリティ・エンコーダ3−2は最下位のビット位置を「0」とし、ビット位置「7」を最上位有効ビット位置Pとして検出する。
【0011】
一方、入力値Aは下位ビット選択抽出部4のマルチプレクサ4−1に、入力値Bは下位ビット選択抽出部4のマルチプレクサ4−2に与えられる。マルチプレクサ4−1は、プライオリティ・エンコーダ3−2からの最上位有効ビット位置Pを受けて、入力値Aより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データaとし、このmビット幅データaを処理部2へ与える。
【0012】
マルチプレクサ4−2は、プライオリティ・エンコーダ3−2からの最上位有効ビット位置Pを受けて、入力値Bより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データbとし、このmビット幅データbを処理部2へ与える。
【0013】
この例では、m=4とされており、マルチプレクサ4−1は最上位有効ビット位置P=「7」から下位4ビットの「1100」を切り出し、mビット幅データaとする。また、マルチプレクサ4−2は最上位有効ビット位置P=「7」から下位4ビットの「0101」を切り出し、mビット幅データbとする。
【0014】
処理部2は、下位ビット選択抽出部4からのmビット幅データa,bを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。この場合、アドレス(1100,0101)に格納されているθ=23゜がtan-1(B/A)として出力される。
【0015】
このような構成とすることにより、特許文献2に示された位相出力回路では、小容量の位相変換テーブルを用い、しかも高精度で位相θを求めることができる。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開平9−22406号公報
【特許文献2】特開平11−219432号公報
【発明の概要】
【発明が解決しようとする課題】
【0017】
特許文献2に示された位相出力回路では、入力されるnビット幅のディジタル値A,Bが固定小数点のデータであることを前提にしているが、実際にはディジタル値A,Bが浮動小数点のデータとして与えられることも多く、ディジタル値A,Bが浮動小数点のデータとして与えられた場合、そのままの回路構成では対応することができない。
【0018】
なお、浮動小数点のデータは、例えばIEEE754規格に従い構成され、図12に示されるようにその内訳として、単精度形式の場合、1ビットの符号部(「1」は負数、「」」0は正数)と、8ビットの指数部と、23ビットの仮数部とを有する。この場合、ディジタル値A,Bは、符号部ビット(1ビット)と指数部ビット(8ビット)と仮数部ビット(23ビット)とで構成される。この場合、指数部は、2のべき乗の整数値を表し、仮数部は小数部とも呼ばれ、1.0〜2.0未満の値を表す。
【0019】
ディジタル値A,Bが浮動小数点のデータとして与えられる場合の回路構成として、図13に示すように、最上位有効ビット検出部3の前段に整数化回路5−1および5−2を設け、浮動小数点形式のディジタル値A,Bを固定小数点形式のディジタル値A’およびB’に変換し、この変換された固定小数点形式のディジタル値A’およびB’を最上位有効ビット検出部3の論理和回路3−1に入力することが考えられる。
【0020】
しかしながら、浮動小数点はダイナミックレンジが非常に広いため、これを固定小数点に変換するためには、必要とするビット数が増大し、回路規模が非常に大きくなってしまう。
【0021】
例えば、IEEE754に定められた浮動小数点のデータ構造の単精度形式の場合、正規化によって、浮動小数点データは、1.17549435082228751E−38〜3.4028234663852886E+38の範囲を有するので、この範囲の数を表現するためにはディジタル値A,Bに対してそれぞれ設けられる整数化回路5−1,5−2や最上位有効ビット検出部3の論理和回路3−1およびプライオリティ・エンコーダ3−2、下位ビット選択抽出部4のマルチプレクサ4−1,4−2を250ビット対応のものにする必要があり、回路規模が非常に大きくなってしまう。
【0022】
本発明は、このような課題を解決するためになされたもので、その目的とするところは、小さな回路規模で、浮動小数点形式のディジタル値A,Bへ対応することができる位相出力回路を提供することにある。
【課題を解決するための手段】
【0023】
このような目的を達成するために本発明は、浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ指数部ビットと仮数部ビットとに分割して出力するビット分割部と、ビット分割部から出力されるディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、大小差検出部が検出する指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、位相変換テーブルから仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する位相出力部とを備えたものである。
【0024】
この発明によれば、浮動小数点形式のnビット幅のディジタル値A,Bがそれぞれ指数部ビットと仮数部ビットとに分割され、ディジタル値A,Bの指数部ビットが示す指数の大小差が検出され、この検出された指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、このθがtan-1(B/A)として出力される。但し、この場合、θは0゜から90゜の場合に対応できる。
【0025】
0゜から360゜のθに対応させたい場合には、符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割して出力するビット分割部と、ビット分割部から出力されるディジタル値A,Bの符号部ビットからディジタル値A,Bの正負を検出する正負検出部と、ビット分割部から出力されるディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、大小差検出部が検出する指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、位相変換テーブルから仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出す位相読出部と、位相読出部によって読み出されたθを正負検出部で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する象限変換部とを設けるようにする。
【0026】
この場合、浮動小数点形式のnビット幅のディジタル値A,Bがそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割され、符号部ビットからディジタル値A,Bの正負が検出されるとともに、ディジタル値A,Bの指数部ビットが示す指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、この読み出されたθが入力値A,Bの正負に基づき象限を考慮した補正値Θに補正され、この補正値Θがtan-1 (B/A)として出力される。この場合、Θは0゜から360゜の場合に対応できる。
【発明の効果】
【0027】
本発明によれば、ディジタル値A,Bの指数部ビットが示す指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、このθがtan-1(B/A)として出力されるものとなり、膨大なビット数の増加の要因となる整数化回路や論理和回路、プライオリティ・エンコーダを不要とし、また最上位ビットから下位mビットを選択抽出するマルチプレクサなどの対応ビット数を少なくし、小さな回路規模で、浮動小数点形式のディジタル値A,Bに対応することができる位相出力回路を提供することが可能となる。
【図面の簡単な説明】
【0028】
【図1】本発明の一実施の形態(実施の形態1)を示す位相出力回路のブロック図である。
【図2】この位相出力回路の実施の形態2を示すブロック図である。
【図3】この位相出力回路の実施の形態3を示すブロック図である。
【図4】8×8の近似テーブル(2次元テーブル)として用意されている位相変換テーブルを例示する図である。
【図5】この位相出力回路の実施の形態4を示すブロック図である。
【図6】この位相出力回路における象限変換回路での補正内容を示す図である。
【図7】実施の形態2の位相出力回路に対して正負検出回路および象限変換回路を設けた例を示すブロック図である。
【図8】実施の形態3の位相出力回路に対して正負検出回路および象限変換回路を設けた例を示すブロック図である。
【図9】この位相出力回路の実施の形態5の要部を示すブロック図である。
【図10】従来の位相出力回路を示すブロック図である。
【図11】特許文献2に示された位相出力回路の構成を示すブロック図である。
【図12】IEEE754規格に従う浮動小数点のデータ構造の一例(単精度形式の場合)を示す図である。
【図13】特許文献2に示された位相出力回路においてディジタル値A,Bが浮動小数点のデータとして与えられる場合に想定される回路構成を示すブロック図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
〔実施の形態1〕
図1はこの発明の一実施の形態を示す位相出力回路のブロック図である。同図において、1は位相変換テーブル、2は処理部、6はビット分割部、7は大小差検出部、8は仮数部下位ビット選択抽出部であり、ビット分割部6は第1のビット分割回路6−1と第2のビット分割回路6−2とから構成され、仮数部下位ビット選択抽出部8は第1の仮数部調整回路8−1と第2の仮数部調整回路8−2とから構成されている。
【0030】
第1のビット分割回路6−1は、浮動小数点形式のnビット幅のディジタル値Aを入力とし、この入力値Aを指数部ビットAeと仮数部ビットAmとに分割して出力する。第2のビット分割回路6−2は、浮動小数点形式のnビット幅のディジタル値Bを入力とし、この入力値Bを指数部ビットBeと仮数部ビットBmとに分割して出力する。
【0031】
大小差検出部7は、第1のビット分割回路6−1から出力されるディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2から出力されるディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして出力する。
【0032】
この場合、Ae−Beが正(Ae−Be>0)であれば、ディジタル値Aの指数部ビットAeが示す指数がディジタル値Bの指数部ビットBeが示す指数よりも「Ae−Be」だけ大きいことを表している。また、Ae−Beが負(Ae−Be<0)であれば、ディジタル値Bの指数部ビットBeが示す指数がディジタル値Aの指数部ビットAeが示す指数よりも「Be−Ae」だけ大きいことを表している。
【0033】
第1の仮数部調整回路8−1は、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが負の場合(Beの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをディジタル値Aの指数をディジタル値Bの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ与える一方、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ与える。
【0034】
第2の仮数部調整回路8−2は、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをディジタル値Bの指数をディジタル値Aの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ与える一方、Ae−Beが負の場合(Beの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ与える。
【0035】
位相変換テーブル1にはアドレス(a,b)にθ=tan-1(b/a)が格納されている。すなわち、mビット幅データa,bに対応してすべての組み合わせ分のアドレス(a,b)を位相変換テーブル1に用意し、それぞれのtan-1(b/a)=θを格納している。この位相変換テーブル1の容量はmによって決まり、ワード数にして22mワードでよい。
【0036】
なお、この実施の形態では、A,Bは共に正の値を示すディジタル値であり、0〜90゜の範囲でtan-1(B/A)を求めるものとする。また、ディジタル値A,Bは、IEEE754に定められた浮動小数点のデータ構造の単精度形式であるとし、1ビットの符号部(「1」は負数、「0」は正数)と、8ビットの指数部と、23ビットの仮数部とで構成されているものとする(図12参照)。
【0037】
次に、ビット分割部6(第1のビット分割回路6−1、第2のビット分割回路6−2),大小差検出部7、仮数部下位ビット選択抽出部8(第1の仮数部調整回路8−1、第2の仮数部調整回路8−2)の機能を交えながら、この位相出力回路の動作について説明する。
【0038】
今、A+jBを複素数とし、実部のデータとして浮動小数点形式のn=32ビット幅のディジタル値Aが第1のビット分割回路6−1へ、虚部のデータとして浮動小数点形式のn=32ビット幅のディジタル値Bが第2のビット分割回路6−2へ入力されたとする。
【0039】
第1のビット分割回路6−1は、32ビット幅のディジタル値Aを8ビット(ビット位置「23」〜「30」)の指数部ビットAeと23ビット(ビット位置「0」〜「22」)の仮数部ビットAmに分割し、指数部ビットAeを大小差検出部7へ送り、仮数部ビットAmを第1の仮数部調整回路8−1へ送る。
【0040】
第2のビット分割回路6−2は、32ビット幅のディジタル値Bを8ビット(ビット位置「23」〜「30」)の指数部ビットBeと23ビット(ビット位置「0」〜「22」)の仮数部ビットBmに分割し、指数部ビットBeを大小差検出部7へ送り、仮数部ビットBmを第2の仮数部調整回路8−2へ送る。
【0041】
大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beを第1の仮数部調整回路8−1および第2の仮数部調整回路8−2へ送る。
【0042】
この場合、大小差検出部7では、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beを2進数の減算値として求めてもよいし、10進数の減算値として求めてもよい。大小差検出部7において、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beを2進数の減算値として求めるものとすれば、大小差検出部7を単純な2進数の減算回路で構成することができ、回路の簡略化が図られる。
【0043】
〔Ae−Be>0の場合〕
ここで、Ae−Beが正(Ae−Be>0)である場合、すなわちディジタル値Aの指数部ビットAeが示す指数がディジタル値Bの指数部ビットBeが示す指数よりも「Ae−Be」だけ大きい場合、第1の仮数部調整回路8−1は、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0044】
これに対し、第2の仮数部調整回路8−2は、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをディジタル値Bの指数をディジタル値Aの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0045】
例えば、「Ae−Be」が2であった場合、第2の仮数部調整回路8−2は、ディジタル値Bの仮数部ビットBmが示す値(2進数)を2桁分だけ下げ、その2桁分だけ下げたディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0046】
〔Ae−Be<0の場合〕
Ae−Beが負(Ae−Be<0)である場合、すなわちディジタル値Bの指数部ビットBeが示す指数がディジタル値Aの指数部ビットAeが示す指数よりも「Be−Ae」だけ大きい場合、第2の仮数部調整回路8−2は、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0047】
これに対し、第1の仮数部調整回路8−1は、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをディジタル値Aの指数をディジタル値Bの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0048】
例えば、「Be−Ae」が2であった場合、第1の仮数部調整回路8−1は、ディジタル値Aの仮数部ビットAmが示す値(2進数)を2桁分だけ下げ、その2桁分だけ下げたディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0049】
処理部2は、第1の仮数部調整回路8−1からのmビット幅データaおよび第2の仮数部調整回路8−2からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。
【0050】
この位相出力回路において、ビット分割部6はディジタル値A,B用にそれぞれ31ビット分の信号の分配で済み、大小差検出部7はディジタル値A,Bに対して8ビット分の入力が可能であればよい。また、仮数部下位ビット選択抽出部8は、ディジタル値A,Bそれぞれの仮数部ビットの23ビット分の入力が可能であればよい。
【0051】
このような回路構成から分かるように、本実施の形態の位相出力回路では、膨大なビット数の増加の要因となる整数化回路や論理和回路、プライオリティ・エンコーダが不要であり、また最上位ビットから下位mビットを選択抽出するマルチプレクサなどの対応ビット数を少なくし、小さな回路規模で、浮動小数点形式のディジタル値A,Bへの対応が可能となる。
【0052】
〔実施の形態2〕
実施の形態2では、図2に示すように、実施の形態1における第1の仮数部調整回路8−1に対応する構成として第1の仮数部正規化回路81を設け、第2の仮数部調整回路8−2に対応する構成として第2の仮数部正規化回路82を設けている。そして、第1の仮数部正規化回路81を正規化部81Aとマルチプレクサ81Bとで構成し、第2の仮数部正規化回路82を正規化部82Aとマルチプレクサ82Bとで構成している。
【0053】
第1の仮数部正規化回路81において、正規化部81Aは、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが負の場合(Beの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmが示す値をディジタル値Aの指数をディジタル値Bの指数に合わせた値に正規化し、その正規化されたディジタル値Aの仮数部ビットAmをマルチプレクサ81Bへ与える一方、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをそのままマルチプレクサ81Bへ送る。マルチプレクサ81Bは、正規化部81Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0054】
第2の仮数部正規化回路82において、正規化部82Aは、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmが示す値をディジタル値Bの指数をディジタル値Aの指数に合わせた値に正規化し、その正規化されたディジタル値Bの仮数部ビットBmをマルチプレクサ82Bへ与える一方、Ae−Beが負の場合(Beの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをマルチプレクサ82Bへ送る。マルチプレクサ82Bは、正規化部82Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0055】
〔実施の形態3〕
実施の形態3では、図3に示すように、実施の形態1における第1の仮数部調整回路8−1に対応する構成として第1の仮数部ビットシフト回路83を設け、第2の仮数部調整回路8−2に対応する構成として第2の仮数部ビットシフト回路84を設けている。そして、第1の仮数部ビットシフト回路83をビットシフト部(右シフト回路)83Aとマルチプレクサ83Bとで構成し、第2の仮数部ビットシフト回路84をビットシフト部(右シフト回路)84Aとマルチプレクサ84Bとで構成している。
【0056】
第1の仮数部ビットシフト回路83において、ビットシフト部83Aは、大小差検出部7が出力する指数の大小差Ae−Beをシフト量として入力とし、シフト量Ae−Beが負の場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る一方、シフト量Ae−Beが正の場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをそのままマルチプレクサ83Bへ送る。マルチプレクサ83Bは、ビットシフト部83Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0057】
第2の仮数部ビットシフト回路84において、ビットシフト部84Aは、大小差検出部7が出力する指数の大小差Ae−Beをシフト量として入力とし、シフト量Ae−Beが正の場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Bの仮数部ビットBmをマルチプレクサ84Bへ送る一方、シフト量Ae−Beが負の場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをそのままマルチプレクサ84Bへ送る。マルチプレクサ84Bは、ビットシフト部84Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0058】
この実施の形態3の位相出力回路において、A=325、B=1231とし、浮動小数点形式のディジタル値AとしてAfloat_in_hex=01000011101000101000000000000000が第1のビット分割回路6−1へ入力され、浮動小数点形式のディジタル値BとしてBfloat_in_hex=01000100100110011110000000000000が第2のビット分割回路6−2へ入力されたとする。
【0059】
この場合、第1のビット分割回路6−1は、指数部ビットAeとして「10000111」を大小差検出部7へ送り、仮数部ビットAmとして「01000101000000000000000」をビットシフト部83Aへ送る。第2のビット分割回路6−2は、指数部ビットBeとして「10001001」を大小差検出部7へ送り、仮数部ビットBmとして「00110011110000000000000」をビットシフト部84Aへ送る。
【0060】
大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beをシフト量としてビットシフト部83Aおよびビットシフト部84Aへ送る。この場合、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差は、Ae=128+7=135、Be=128+9=137であることから、Ae−Be=−2となる。
【0061】
第1の仮数部ビットシフト回路83において、ビットシフト部83Aは、大小差検出部7から送られてくるAe−Beが−2であるので、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る。この場合、仮数部ビットAmとして送られてくる「01000101000000000000000」を下位方向(右方向)に2ビットシフトして、「00010001010000000000000」とし、このビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る。
【0062】
マルチプレクサ83Bは、ビットシフト部83Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。例えば、m=3とした場合、「00010001010000000000000」の最上位ビットから下位3ビットを選択抽出し、この選択抽出した下位3ビット「000」をmビット幅データaとして処理部2へ送る。
【0063】
一方、第2の仮数部ビットシフト回路84において、ビットシフト部84Aは、大小差検出部7から送られてくるAe−Beが−2であるので、すなわちAe−Beが正ではないので、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをそのままマルチプレクサ84Bへ送る。この場合、仮数部ビットBmとして送られてくる「00110011110000000000000」をそのままマルチプレクサ84Bへ送る。
【0064】
マルチプレクサ84Bは、ビットシフト部84Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。例えば、m=3とした場合、「00110011110000000000000」の最上位ビットから下位3ビットを選択抽出し、この選択抽出した下位3ビット「001」をmビット幅データbとして処理部2へ送る。
【0065】
処理部2は、第1の仮数部ビットシフト回路83からのmビット幅データaおよび第2の仮数部ビットシフト回路84からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。例えば、m=3とした場合、8×8の近似テーブル(2次元テーブル)として用意されている位相変換テーブル1(図4参照)より、アドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。
【0066】
〔実施の形態4〕
実施の形態1は、A,Bは共に正の値を示すディジタル値とし、0〜90゜の範囲でtan-1(B/A)を求めることを前提とした。A,Bが正,負の値を示すディジタル値であることを前提とする場合、図5に示すように正負検出回路9−1,9−2および象限変換回路10を設けるようにして、0〜360゜の範囲でtan-1(B/A)を求めることができるようにする。
【0067】
この場合、第1のビット分割回路6−1は、浮動小数点形式のnビット幅のディジタル値Aを入力とし、この入力値Aを符号部ビットAsと指数部ビットAeと仮数部ビットAmとに分割し、符号部ビットAsを正負検出回路9−1へ送り、指数部ビットAeを大小差検出部7へ送り、仮数部ビットAmを第1の仮数部調整回路8−1へ送る。
【0068】
第2のビット分割回路6−2は、浮動小数点形式のnビット幅のディジタル値Bを入力とし、この入力値Bを符号部ビットBsと指数部ビットBeと仮数部ビットBmとに分割し、符号部ビットBsを正負検出回路9−2へ送り、指数部ビットBeを大小差検出部7へ送り、仮数部ビットBmを第2の仮数部調整回路8−2へ送る。
【0069】
正負検出回路9−1は、入力値Aの符号部ビットAsより、その符号部ビットAsが「1」である場合には負数として、「0」である場合には正数として、入力値Aの符号の正負を検出する。また、正負検出回路9−2は、入力値Bの符号部ビットBsより、その符号部ビットBsが「1」である場合には負数として、「0」である場合には正数として、入力値Bの符号の正負を検出する。この正負検出回路9−1,9−2での検出結果は象限変換回路10へ送られる。
【0070】
一方、大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beを第1の仮数部調整回路8−1および第2の仮数部調整回路8−2へ送る。
【0071】
第1の仮数部調整回路8−1は、大小差検出部7からのディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beに基づいて、Ae−Beが正である場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送り、Ae−Beが負である場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmを調整し、この調整した仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0072】
第2の仮数部調整回路8−2は、大小差検出部7からのディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beに基づいて、Ae−Beが負である場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送り、Ae−Beが正である場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmを調整し、この調整した仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0073】
処理部2は、第1の仮数部調整回路8−1からのmビット幅データaおよび第2の仮数部調整回路8−1からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、この読み出したθ=tan-1(b/a)を象限変換回路10へ与える。
【0074】
象限変換回路10は、処理部2からのθを正負検出回路9−1,9−2で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する。象限変換回路10での補正内容を図6に示す。
【0075】
この補正内容に従い、象限変換回路10は、A,Bが共に正である場合にはベクトル(A,B)が第1象限にあるものとみなし、Θ=θとする。Aが負、Bが正である場合にはベクトル(A,B)が第2象限にあるものとみなし、Θ=180−θとする。A,Bが共に負である場合にはベクトル(A,B)が第3象限にあるものとみなし、Θ=180+θとする。Aが正、Bが負である場合にはベクトル(A,B)が第4象限にあるものとみなし、Θ=360−θとする。
【0076】
なお、この実施の形態4は、実施の形態1の位相出力回路に対して、正負検出回路9−1,9−2および象限変換回路10を設けた例として説明したが、実施の形態2,3の位相出力回路についても、同様にして正負検出回路9−1,9−2および象限変換回路10を設けるようにしてもよい。図7に実施の形態2の位相出力回路に対して正負検出回路9−1,9−2および象限変換回路10を設けた例を、図8に実施の形態3の位相出力回路に対して正負検出回路9−1,9−2および象限変換回路10を設けた例を示す。
【0077】
〔実施の形態5〕
上述した実施の形態1〜4においては、mビット幅データa,bに共に0が入ると位相変換テーブル1の(0,0)に登録された一定値を出してしまうが、本来tan-1(0/0)は不定であり、これが問題を生じる場合がある。
【0078】
実際、本発明の応用例であるパターン認識装置に利用した場合、例えばカメラを覆うなどして実現できる、真っ黒の(すなわち、画素データがすべて0の)画像をカメラから入力すると、位相変換テーブルの(0,0)に登録された一定値だけで構成されえた画像が出力される。しかし、これは位相成分・周波数成分を持たないものになってしまう。
【0079】
このような出力画像が発生すると、装置の故障によって登録画像のデータが正常に取り込めず、一定値だけの画像を登録画像として誤って取り込んでしまったとき、このパターン認識装置は画像があっていないにも拘わらず、一致という判断結果を出力してしまう。
【0080】
あるいは、指紋照合装置などのように応用例の場合には、登録者がカメラの入力を手で覆うなどして真っ黒の画像を登録させた場合、照合時にカメラを手でふさげば誰でも本人一致となってしまうセキュリティーホールになるため、特にセキュリティ製品へ応用する場合には大きな問題となる。
【0081】
これを回避するためには、入力の複素数に0+j0、すなわち位相が不定となる条件の場合に一定値が出ないように制御すればよい。すなわち、図9に示すように、OR回路11、マルチプレクサ12、乱数発生部13−1と不定値発生制御部13−2とから構成される不定値発生回路13を設け、mビット幅データa,bがともに0である場合、すなわちOR回路10の出力が「0」レベルとなった場合、不定値発生制御部13−2からマルチプレクサ12へ不定値発生指令を送り、処理部2から出力されるθの代わりに乱数発生処理部13−1からの乱数Rを取り込んで、tan-1(0/0)として出力する。
【0082】
このような回路を付加することにより、複素数位相変換後のデータがすべて一定になることが発生しないため、上記に記載した問題例がすべて回避できる。なお、この実施の形態では、mビット幅データa,bのORをとるようにしたが、入力値A,BのORをとるようにしてもよい。
【0083】
なお、上述した実施の形態では、ディジタル値A,BをIEEE754に定められた浮動小数点のデータ構造の単精度形式としたが、倍精度形式、4倍精度形式などであっても、同様にして適用することが可能である。
【産業上の利用可能性】
【0084】
本発明の位相出力回路は、2入力A,B(ディジタル値)のtan-1(B/A)を位相変換テーブルを利用して求める位相出力回路として、パターン認識装置や指紋照合装置など各種の装置に利用することが可能である。
【符号の説明】
【0085】
1…位相変換テーブル、2…処理部、6…ビット分割部、6−1…第1のビット分割回路、6−2…第2のビット分割回路、7…大小差検出部、8…仮数部下位ビット選択抽出部、8−1…第1の仮数部調整回路、8−2…第2の仮数部調整回路、81…第1の仮数部正規化回路、81A…正規化部、81B…マルチプレクサ、82…第2の仮数部正規化回路、82A…正規化部、82B…マルチプレクサ、83…第1の仮数部ビットシフト回路、83A…ビットシフト部、83B…マルチプレクサ、84…第2の仮数部ビットシフト回路、84A…ビットシフト部、84B…マルチプレクサ、9−1,9−2…正負検出回路、10…象限変換回路、11…OR回路、12…マルチプレクサ、13…不定値発生回路、13−1…乱数発生部、13−2…不定値発生制御部。
【技術分野】
【0001】
この発明は、2入力A,B(ディジタル値)のtan-1(B/A)を位相変換テーブルを利用して求める位相出力回路、例えば特許文献1(パターン照合装置)に記載されている位相限定相関法による指紋照合過程で指紋の位相情報を高速且つ精度よく求める場合に複素数A+jBを位相θに変換する際に用いられる位相出力回路に関するものである。
【背景技術】
【0002】
従来より、この種の位相出力回路として、2入力A,Bのtan-1(B/A)=θを予め求めておいて位相変換テーブルのアドレス(A,B)に格納しておき、A,Bが入力されたならこの2入力A,Bに対応するθ=tan-1(B/A)を位相変換テーブルから読み出して出力する方法が考えられている。
【0003】
すなわち、図10に示すように、A,Bのビット幅nに対応してすべての組み合わせ分のアドレス(A,B)を位相変換テーブル1に用意してそれぞれのtan-1(B/A)=θを格納しておく。A,Bが処理部2に入力されると、処理部2は2入力A,Bに対応するθ=tan-1(B/A)を位相変換テーブル1から読み出して出力する。
【0004】
この場合、入力値A,Bのすべての組み合わせ分のテーブルを用意していれば、高精度な結果を得ることができるが、位相変換テーブル1が極めて大きくなり、現実的ではない。例えば、A,Bそれぞれが16ビット幅を持つ場合、2の32乗個分のワードの位相変換テーブル1が必要となり、回路規模が激増してしまう。
【0005】
そこで、位相変換テーブル1の容量を小さくした位相出力回路として、本出願人が先に提案した特許文献2が存在する。この特許文献2に示された位相出力回路の構成を図11に示す。同図において、1は位相変換テーブル、2は処理部、3は最上位有効ビット検出部、4は下位ビット選択抽出部であり、最上位有効ビット検出部3は論理和回路3−1とプライオリティ・エンコーダ3−2とから構成され、下位ビット選択抽出部4はマルチプレクサ4−1と4−2とから構成されている。
【0006】
この位相出力回路において、最上位有効ビット検出部3は、nビット幅のディジタル値A,Bを入力とし、この入力値A,Bのうち数値を有効とするビットパターン(この例では、「0」,「1」レベルの「1」)が割り当てられた最も上位のビット位置を最上位有効ビット位置Pとして検出する。なお、この例では、A,Bは共に正の値を示すディジタル値とされ、固定小数点のデータとして入力されことを前提としている。
【0007】
下位ビット選択抽出部4は、最上位有効ビット検出部3への入力値AおよびBを分岐入力とし、また最上位有効ビット検出部3からの最上位有効ビット位置Pを入力とし、入力値AおよびBより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データaおよびbとして処理部2へ与える。
【0008】
位相変換テーブル1にはアドレス(a,b)にθ=tan-1(b/a)が格納されている。すなわち、mビット幅データa,bに対応してすべての組み合わせ分のアドレス(a,b)を位相変換テーブル1に用意し、それぞれのtan-1(b/a)=θを格納している。この位相変換テーブル1の容量はmによって決まり、ワード数にして22mワードでよい。
【0009】
今、A,Bを8ビット幅のディジタル値とし、Aとして「01100101」が、Bとして「00101011」が入力されるものとする。この場合、最上位有効ビット検出部3の論理和回路3−1は、入力値A,Bの各ビットの論理和をとる。これにより、論理和回路3−1からの出力(論理和出力)は、「01101111」となる。この論理和出力はプライオリティ・エンコーダ3−2へ与えられる。
【0010】
プライオリティ・エンコーダ3−2は論理和回路3−1からの論理和出力における最も上位に存在する「1」、すなわち数値を有効とするビットパターンの位置を検出する。この場合、プライオリティ・エンコーダ3−2は最下位のビット位置を「0」とし、ビット位置「7」を最上位有効ビット位置Pとして検出する。
【0011】
一方、入力値Aは下位ビット選択抽出部4のマルチプレクサ4−1に、入力値Bは下位ビット選択抽出部4のマルチプレクサ4−2に与えられる。マルチプレクサ4−1は、プライオリティ・エンコーダ3−2からの最上位有効ビット位置Pを受けて、入力値Aより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データaとし、このmビット幅データaを処理部2へ与える。
【0012】
マルチプレクサ4−2は、プライオリティ・エンコーダ3−2からの最上位有効ビット位置Pを受けて、入力値Bより最上位有効ビット位置Pから下位mビットを選択抽出してmビット幅データbとし、このmビット幅データbを処理部2へ与える。
【0013】
この例では、m=4とされており、マルチプレクサ4−1は最上位有効ビット位置P=「7」から下位4ビットの「1100」を切り出し、mビット幅データaとする。また、マルチプレクサ4−2は最上位有効ビット位置P=「7」から下位4ビットの「0101」を切り出し、mビット幅データbとする。
【0014】
処理部2は、下位ビット選択抽出部4からのmビット幅データa,bを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。この場合、アドレス(1100,0101)に格納されているθ=23゜がtan-1(B/A)として出力される。
【0015】
このような構成とすることにより、特許文献2に示された位相出力回路では、小容量の位相変換テーブルを用い、しかも高精度で位相θを求めることができる。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開平9−22406号公報
【特許文献2】特開平11−219432号公報
【発明の概要】
【発明が解決しようとする課題】
【0017】
特許文献2に示された位相出力回路では、入力されるnビット幅のディジタル値A,Bが固定小数点のデータであることを前提にしているが、実際にはディジタル値A,Bが浮動小数点のデータとして与えられることも多く、ディジタル値A,Bが浮動小数点のデータとして与えられた場合、そのままの回路構成では対応することができない。
【0018】
なお、浮動小数点のデータは、例えばIEEE754規格に従い構成され、図12に示されるようにその内訳として、単精度形式の場合、1ビットの符号部(「1」は負数、「」」0は正数)と、8ビットの指数部と、23ビットの仮数部とを有する。この場合、ディジタル値A,Bは、符号部ビット(1ビット)と指数部ビット(8ビット)と仮数部ビット(23ビット)とで構成される。この場合、指数部は、2のべき乗の整数値を表し、仮数部は小数部とも呼ばれ、1.0〜2.0未満の値を表す。
【0019】
ディジタル値A,Bが浮動小数点のデータとして与えられる場合の回路構成として、図13に示すように、最上位有効ビット検出部3の前段に整数化回路5−1および5−2を設け、浮動小数点形式のディジタル値A,Bを固定小数点形式のディジタル値A’およびB’に変換し、この変換された固定小数点形式のディジタル値A’およびB’を最上位有効ビット検出部3の論理和回路3−1に入力することが考えられる。
【0020】
しかしながら、浮動小数点はダイナミックレンジが非常に広いため、これを固定小数点に変換するためには、必要とするビット数が増大し、回路規模が非常に大きくなってしまう。
【0021】
例えば、IEEE754に定められた浮動小数点のデータ構造の単精度形式の場合、正規化によって、浮動小数点データは、1.17549435082228751E−38〜3.4028234663852886E+38の範囲を有するので、この範囲の数を表現するためにはディジタル値A,Bに対してそれぞれ設けられる整数化回路5−1,5−2や最上位有効ビット検出部3の論理和回路3−1およびプライオリティ・エンコーダ3−2、下位ビット選択抽出部4のマルチプレクサ4−1,4−2を250ビット対応のものにする必要があり、回路規模が非常に大きくなってしまう。
【0022】
本発明は、このような課題を解決するためになされたもので、その目的とするところは、小さな回路規模で、浮動小数点形式のディジタル値A,Bへ対応することができる位相出力回路を提供することにある。
【課題を解決するための手段】
【0023】
このような目的を達成するために本発明は、浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ指数部ビットと仮数部ビットとに分割して出力するビット分割部と、ビット分割部から出力されるディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、大小差検出部が検出する指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、位相変換テーブルから仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する位相出力部とを備えたものである。
【0024】
この発明によれば、浮動小数点形式のnビット幅のディジタル値A,Bがそれぞれ指数部ビットと仮数部ビットとに分割され、ディジタル値A,Bの指数部ビットが示す指数の大小差が検出され、この検出された指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、このθがtan-1(B/A)として出力される。但し、この場合、θは0゜から90゜の場合に対応できる。
【0025】
0゜から360゜のθに対応させたい場合には、符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割して出力するビット分割部と、ビット分割部から出力されるディジタル値A,Bの符号部ビットからディジタル値A,Bの正負を検出する正負検出部と、ビット分割部から出力されるディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、大小差検出部が検出する指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、位相変換テーブルから仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出す位相読出部と、位相読出部によって読み出されたθを正負検出部で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する象限変換部とを設けるようにする。
【0026】
この場合、浮動小数点形式のnビット幅のディジタル値A,Bがそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割され、符号部ビットからディジタル値A,Bの正負が検出されるとともに、ディジタル値A,Bの指数部ビットが示す指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、この読み出されたθが入力値A,Bの正負に基づき象限を考慮した補正値Θに補正され、この補正値Θがtan-1 (B/A)として出力される。この場合、Θは0゜から360゜の場合に対応できる。
【発明の効果】
【0027】
本発明によれば、ディジタル値A,Bの指数部ビットが示す指数の大小差に基づいて、ディジタル値A,Bの仮数部ビットがそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整され、その調整後のディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットが選択抽出されてmビット幅データaおよびbとされ、位相変換テーブルからmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)が読み出され、このθがtan-1(B/A)として出力されるものとなり、膨大なビット数の増加の要因となる整数化回路や論理和回路、プライオリティ・エンコーダを不要とし、また最上位ビットから下位mビットを選択抽出するマルチプレクサなどの対応ビット数を少なくし、小さな回路規模で、浮動小数点形式のディジタル値A,Bに対応することができる位相出力回路を提供することが可能となる。
【図面の簡単な説明】
【0028】
【図1】本発明の一実施の形態(実施の形態1)を示す位相出力回路のブロック図である。
【図2】この位相出力回路の実施の形態2を示すブロック図である。
【図3】この位相出力回路の実施の形態3を示すブロック図である。
【図4】8×8の近似テーブル(2次元テーブル)として用意されている位相変換テーブルを例示する図である。
【図5】この位相出力回路の実施の形態4を示すブロック図である。
【図6】この位相出力回路における象限変換回路での補正内容を示す図である。
【図7】実施の形態2の位相出力回路に対して正負検出回路および象限変換回路を設けた例を示すブロック図である。
【図8】実施の形態3の位相出力回路に対して正負検出回路および象限変換回路を設けた例を示すブロック図である。
【図9】この位相出力回路の実施の形態5の要部を示すブロック図である。
【図10】従来の位相出力回路を示すブロック図である。
【図11】特許文献2に示された位相出力回路の構成を示すブロック図である。
【図12】IEEE754規格に従う浮動小数点のデータ構造の一例(単精度形式の場合)を示す図である。
【図13】特許文献2に示された位相出力回路においてディジタル値A,Bが浮動小数点のデータとして与えられる場合に想定される回路構成を示すブロック図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
〔実施の形態1〕
図1はこの発明の一実施の形態を示す位相出力回路のブロック図である。同図において、1は位相変換テーブル、2は処理部、6はビット分割部、7は大小差検出部、8は仮数部下位ビット選択抽出部であり、ビット分割部6は第1のビット分割回路6−1と第2のビット分割回路6−2とから構成され、仮数部下位ビット選択抽出部8は第1の仮数部調整回路8−1と第2の仮数部調整回路8−2とから構成されている。
【0030】
第1のビット分割回路6−1は、浮動小数点形式のnビット幅のディジタル値Aを入力とし、この入力値Aを指数部ビットAeと仮数部ビットAmとに分割して出力する。第2のビット分割回路6−2は、浮動小数点形式のnビット幅のディジタル値Bを入力とし、この入力値Bを指数部ビットBeと仮数部ビットBmとに分割して出力する。
【0031】
大小差検出部7は、第1のビット分割回路6−1から出力されるディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2から出力されるディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして出力する。
【0032】
この場合、Ae−Beが正(Ae−Be>0)であれば、ディジタル値Aの指数部ビットAeが示す指数がディジタル値Bの指数部ビットBeが示す指数よりも「Ae−Be」だけ大きいことを表している。また、Ae−Beが負(Ae−Be<0)であれば、ディジタル値Bの指数部ビットBeが示す指数がディジタル値Aの指数部ビットAeが示す指数よりも「Be−Ae」だけ大きいことを表している。
【0033】
第1の仮数部調整回路8−1は、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが負の場合(Beの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをディジタル値Aの指数をディジタル値Bの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ与える一方、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ与える。
【0034】
第2の仮数部調整回路8−2は、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをディジタル値Bの指数をディジタル値Aの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ与える一方、Ae−Beが負の場合(Beの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ与える。
【0035】
位相変換テーブル1にはアドレス(a,b)にθ=tan-1(b/a)が格納されている。すなわち、mビット幅データa,bに対応してすべての組み合わせ分のアドレス(a,b)を位相変換テーブル1に用意し、それぞれのtan-1(b/a)=θを格納している。この位相変換テーブル1の容量はmによって決まり、ワード数にして22mワードでよい。
【0036】
なお、この実施の形態では、A,Bは共に正の値を示すディジタル値であり、0〜90゜の範囲でtan-1(B/A)を求めるものとする。また、ディジタル値A,Bは、IEEE754に定められた浮動小数点のデータ構造の単精度形式であるとし、1ビットの符号部(「1」は負数、「0」は正数)と、8ビットの指数部と、23ビットの仮数部とで構成されているものとする(図12参照)。
【0037】
次に、ビット分割部6(第1のビット分割回路6−1、第2のビット分割回路6−2),大小差検出部7、仮数部下位ビット選択抽出部8(第1の仮数部調整回路8−1、第2の仮数部調整回路8−2)の機能を交えながら、この位相出力回路の動作について説明する。
【0038】
今、A+jBを複素数とし、実部のデータとして浮動小数点形式のn=32ビット幅のディジタル値Aが第1のビット分割回路6−1へ、虚部のデータとして浮動小数点形式のn=32ビット幅のディジタル値Bが第2のビット分割回路6−2へ入力されたとする。
【0039】
第1のビット分割回路6−1は、32ビット幅のディジタル値Aを8ビット(ビット位置「23」〜「30」)の指数部ビットAeと23ビット(ビット位置「0」〜「22」)の仮数部ビットAmに分割し、指数部ビットAeを大小差検出部7へ送り、仮数部ビットAmを第1の仮数部調整回路8−1へ送る。
【0040】
第2のビット分割回路6−2は、32ビット幅のディジタル値Bを8ビット(ビット位置「23」〜「30」)の指数部ビットBeと23ビット(ビット位置「0」〜「22」)の仮数部ビットBmに分割し、指数部ビットBeを大小差検出部7へ送り、仮数部ビットBmを第2の仮数部調整回路8−2へ送る。
【0041】
大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beを第1の仮数部調整回路8−1および第2の仮数部調整回路8−2へ送る。
【0042】
この場合、大小差検出部7では、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beを2進数の減算値として求めてもよいし、10進数の減算値として求めてもよい。大小差検出部7において、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beを2進数の減算値として求めるものとすれば、大小差検出部7を単純な2進数の減算回路で構成することができ、回路の簡略化が図られる。
【0043】
〔Ae−Be>0の場合〕
ここで、Ae−Beが正(Ae−Be>0)である場合、すなわちディジタル値Aの指数部ビットAeが示す指数がディジタル値Bの指数部ビットBeが示す指数よりも「Ae−Be」だけ大きい場合、第1の仮数部調整回路8−1は、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0044】
これに対し、第2の仮数部調整回路8−2は、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをディジタル値Bの指数をディジタル値Aの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0045】
例えば、「Ae−Be」が2であった場合、第2の仮数部調整回路8−2は、ディジタル値Bの仮数部ビットBmが示す値(2進数)を2桁分だけ下げ、その2桁分だけ下げたディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0046】
〔Ae−Be<0の場合〕
Ae−Beが負(Ae−Be<0)である場合、すなわちディジタル値Bの指数部ビットBeが示す指数がディジタル値Aの指数部ビットAeが示す指数よりも「Be−Ae」だけ大きい場合、第2の仮数部調整回路8−2は、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0047】
これに対し、第1の仮数部調整回路8−1は、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをディジタル値Aの指数をディジタル値Bの指数に合わせた場合の仮数部ビットに調整し、その調整したディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0048】
例えば、「Be−Ae」が2であった場合、第1の仮数部調整回路8−1は、ディジタル値Aの仮数部ビットAmが示す値(2進数)を2桁分だけ下げ、その2桁分だけ下げたディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0049】
処理部2は、第1の仮数部調整回路8−1からのmビット幅データaおよび第2の仮数部調整回路8−2からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。
【0050】
この位相出力回路において、ビット分割部6はディジタル値A,B用にそれぞれ31ビット分の信号の分配で済み、大小差検出部7はディジタル値A,Bに対して8ビット分の入力が可能であればよい。また、仮数部下位ビット選択抽出部8は、ディジタル値A,Bそれぞれの仮数部ビットの23ビット分の入力が可能であればよい。
【0051】
このような回路構成から分かるように、本実施の形態の位相出力回路では、膨大なビット数の増加の要因となる整数化回路や論理和回路、プライオリティ・エンコーダが不要であり、また最上位ビットから下位mビットを選択抽出するマルチプレクサなどの対応ビット数を少なくし、小さな回路規模で、浮動小数点形式のディジタル値A,Bへの対応が可能となる。
【0052】
〔実施の形態2〕
実施の形態2では、図2に示すように、実施の形態1における第1の仮数部調整回路8−1に対応する構成として第1の仮数部正規化回路81を設け、第2の仮数部調整回路8−2に対応する構成として第2の仮数部正規化回路82を設けている。そして、第1の仮数部正規化回路81を正規化部81Aとマルチプレクサ81Bとで構成し、第2の仮数部正規化回路82を正規化部82Aとマルチプレクサ82Bとで構成している。
【0053】
第1の仮数部正規化回路81において、正規化部81Aは、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが負の場合(Beの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmが示す値をディジタル値Aの指数をディジタル値Bの指数に合わせた値に正規化し、その正規化されたディジタル値Aの仮数部ビットAmをマルチプレクサ81Bへ与える一方、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをそのままマルチプレクサ81Bへ送る。マルチプレクサ81Bは、正規化部81Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0054】
第2の仮数部正規化回路82において、正規化部82Aは、大小差検出部7が出力する指数の大小差Ae−Beを入力とし、Ae−Beが正の場合(Aeの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmが示す値をディジタル値Bの指数をディジタル値Aの指数に合わせた値に正規化し、その正規化されたディジタル値Bの仮数部ビットBmをマルチプレクサ82Bへ与える一方、Ae−Beが負の場合(Beの方の指数が大の場合)には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをマルチプレクサ82Bへ送る。マルチプレクサ82Bは、正規化部82Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0055】
〔実施の形態3〕
実施の形態3では、図3に示すように、実施の形態1における第1の仮数部調整回路8−1に対応する構成として第1の仮数部ビットシフト回路83を設け、第2の仮数部調整回路8−2に対応する構成として第2の仮数部ビットシフト回路84を設けている。そして、第1の仮数部ビットシフト回路83をビットシフト部(右シフト回路)83Aとマルチプレクサ83Bとで構成し、第2の仮数部ビットシフト回路84をビットシフト部(右シフト回路)84Aとマルチプレクサ84Bとで構成している。
【0056】
第1の仮数部ビットシフト回路83において、ビットシフト部83Aは、大小差検出部7が出力する指数の大小差Ae−Beをシフト量として入力とし、シフト量Ae−Beが負の場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る一方、シフト量Ae−Beが正の場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをそのままマルチプレクサ83Bへ送る。マルチプレクサ83Bは、ビットシフト部83Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0057】
第2の仮数部ビットシフト回路84において、ビットシフト部84Aは、大小差検出部7が出力する指数の大小差Ae−Beをシフト量として入力とし、シフト量Ae−Beが正の場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Bの仮数部ビットBmをマルチプレクサ84Bへ送る一方、シフト量Ae−Beが負の場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをそのままマルチプレクサ84Bへ送る。マルチプレクサ84Bは、ビットシフト部84Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0058】
この実施の形態3の位相出力回路において、A=325、B=1231とし、浮動小数点形式のディジタル値AとしてAfloat_in_hex=01000011101000101000000000000000が第1のビット分割回路6−1へ入力され、浮動小数点形式のディジタル値BとしてBfloat_in_hex=01000100100110011110000000000000が第2のビット分割回路6−2へ入力されたとする。
【0059】
この場合、第1のビット分割回路6−1は、指数部ビットAeとして「10000111」を大小差検出部7へ送り、仮数部ビットAmとして「01000101000000000000000」をビットシフト部83Aへ送る。第2のビット分割回路6−2は、指数部ビットBeとして「10001001」を大小差検出部7へ送り、仮数部ビットBmとして「00110011110000000000000」をビットシフト部84Aへ送る。
【0060】
大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beをシフト量としてビットシフト部83Aおよびビットシフト部84Aへ送る。この場合、ディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差は、Ae=128+7=135、Be=128+9=137であることから、Ae−Be=−2となる。
【0061】
第1の仮数部ビットシフト回路83において、ビットシフト部83Aは、大小差検出部7から送られてくるAe−Beが−2であるので、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmをその指数の差分だけ下位方向にビットシフトし、そのビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る。この場合、仮数部ビットAmとして送られてくる「01000101000000000000000」を下位方向(右方向)に2ビットシフトして、「00010001010000000000000」とし、このビットシフトしたディジタル値Aの仮数部ビットAmをマルチプレクサ83Bへ送る。
【0062】
マルチプレクサ83Bは、ビットシフト部83Aからのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。例えば、m=3とした場合、「00010001010000000000000」の最上位ビットから下位3ビットを選択抽出し、この選択抽出した下位3ビット「000」をmビット幅データaとして処理部2へ送る。
【0063】
一方、第2の仮数部ビットシフト回路84において、ビットシフト部84Aは、大小差検出部7から送られてくるAe−Beが−2であるので、すなわちAe−Beが正ではないので、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmをそのままマルチプレクサ84Bへ送る。この場合、仮数部ビットBmとして送られてくる「00110011110000000000000」をそのままマルチプレクサ84Bへ送る。
【0064】
マルチプレクサ84Bは、ビットシフト部84Aからのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。例えば、m=3とした場合、「00110011110000000000000」の最上位ビットから下位3ビットを選択抽出し、この選択抽出した下位3ビット「001」をmビット幅データbとして処理部2へ送る。
【0065】
処理部2は、第1の仮数部ビットシフト回路83からのmビット幅データaおよび第2の仮数部ビットシフト回路84からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。例えば、m=3とした場合、8×8の近似テーブル(2次元テーブル)として用意されている位相変換テーブル1(図4参照)より、アドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する。
【0066】
〔実施の形態4〕
実施の形態1は、A,Bは共に正の値を示すディジタル値とし、0〜90゜の範囲でtan-1(B/A)を求めることを前提とした。A,Bが正,負の値を示すディジタル値であることを前提とする場合、図5に示すように正負検出回路9−1,9−2および象限変換回路10を設けるようにして、0〜360゜の範囲でtan-1(B/A)を求めることができるようにする。
【0067】
この場合、第1のビット分割回路6−1は、浮動小数点形式のnビット幅のディジタル値Aを入力とし、この入力値Aを符号部ビットAsと指数部ビットAeと仮数部ビットAmとに分割し、符号部ビットAsを正負検出回路9−1へ送り、指数部ビットAeを大小差検出部7へ送り、仮数部ビットAmを第1の仮数部調整回路8−1へ送る。
【0068】
第2のビット分割回路6−2は、浮動小数点形式のnビット幅のディジタル値Bを入力とし、この入力値Bを符号部ビットBsと指数部ビットBeと仮数部ビットBmとに分割し、符号部ビットBsを正負検出回路9−2へ送り、指数部ビットBeを大小差検出部7へ送り、仮数部ビットBmを第2の仮数部調整回路8−2へ送る。
【0069】
正負検出回路9−1は、入力値Aの符号部ビットAsより、その符号部ビットAsが「1」である場合には負数として、「0」である場合には正数として、入力値Aの符号の正負を検出する。また、正負検出回路9−2は、入力値Bの符号部ビットBsより、その符号部ビットBsが「1」である場合には負数として、「0」である場合には正数として、入力値Bの符号の正負を検出する。この正負検出回路9−1,9−2での検出結果は象限変換回路10へ送られる。
【0070】
一方、大小差検出部7は、第1のビット分割回路6−1からのディジタル値Aの指数部ビットAeおよび第2のビット分割回路6−2からのディジタル値Bの指数部ビットBeを入力とし、このディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差をAe−Beとして求め、この求めた指数の大小差Ae−Beを第1の仮数部調整回路8−1および第2の仮数部調整回路8−2へ送る。
【0071】
第1の仮数部調整回路8−1は、大小差検出部7からのディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beに基づいて、Ae−Beが正である場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送り、Ae−Beが負である場合には、第1のビット分割回路6−1からのディジタル値Aの仮数部ビットAmを調整し、この調整した仮数部ビットAmの最上位ビットから下位mビットを選択抽出し、mビット幅データaとして処理部2へ送る。
【0072】
第2の仮数部調整回路8−2は、大小差検出部7からのディジタル値A,Bの指数部ビットAe,Beが示す指数の大小差Ae−Beに基づいて、Ae−Beが負である場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送り、Ae−Beが正である場合には、第2のビット分割回路6−2からのディジタル値Bの仮数部ビットBmを調整し、この調整した仮数部ビットBmの最上位ビットから下位mビットを選択抽出し、mビット幅データbとして処理部2へ送る。
【0073】
処理部2は、第1の仮数部調整回路8−1からのmビット幅データaおよび第2の仮数部調整回路8−1からのmビット幅データbを受けて、位相変換テーブル1からmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、この読み出したθ=tan-1(b/a)を象限変換回路10へ与える。
【0074】
象限変換回路10は、処理部2からのθを正負検出回路9−1,9−2で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する。象限変換回路10での補正内容を図6に示す。
【0075】
この補正内容に従い、象限変換回路10は、A,Bが共に正である場合にはベクトル(A,B)が第1象限にあるものとみなし、Θ=θとする。Aが負、Bが正である場合にはベクトル(A,B)が第2象限にあるものとみなし、Θ=180−θとする。A,Bが共に負である場合にはベクトル(A,B)が第3象限にあるものとみなし、Θ=180+θとする。Aが正、Bが負である場合にはベクトル(A,B)が第4象限にあるものとみなし、Θ=360−θとする。
【0076】
なお、この実施の形態4は、実施の形態1の位相出力回路に対して、正負検出回路9−1,9−2および象限変換回路10を設けた例として説明したが、実施の形態2,3の位相出力回路についても、同様にして正負検出回路9−1,9−2および象限変換回路10を設けるようにしてもよい。図7に実施の形態2の位相出力回路に対して正負検出回路9−1,9−2および象限変換回路10を設けた例を、図8に実施の形態3の位相出力回路に対して正負検出回路9−1,9−2および象限変換回路10を設けた例を示す。
【0077】
〔実施の形態5〕
上述した実施の形態1〜4においては、mビット幅データa,bに共に0が入ると位相変換テーブル1の(0,0)に登録された一定値を出してしまうが、本来tan-1(0/0)は不定であり、これが問題を生じる場合がある。
【0078】
実際、本発明の応用例であるパターン認識装置に利用した場合、例えばカメラを覆うなどして実現できる、真っ黒の(すなわち、画素データがすべて0の)画像をカメラから入力すると、位相変換テーブルの(0,0)に登録された一定値だけで構成されえた画像が出力される。しかし、これは位相成分・周波数成分を持たないものになってしまう。
【0079】
このような出力画像が発生すると、装置の故障によって登録画像のデータが正常に取り込めず、一定値だけの画像を登録画像として誤って取り込んでしまったとき、このパターン認識装置は画像があっていないにも拘わらず、一致という判断結果を出力してしまう。
【0080】
あるいは、指紋照合装置などのように応用例の場合には、登録者がカメラの入力を手で覆うなどして真っ黒の画像を登録させた場合、照合時にカメラを手でふさげば誰でも本人一致となってしまうセキュリティーホールになるため、特にセキュリティ製品へ応用する場合には大きな問題となる。
【0081】
これを回避するためには、入力の複素数に0+j0、すなわち位相が不定となる条件の場合に一定値が出ないように制御すればよい。すなわち、図9に示すように、OR回路11、マルチプレクサ12、乱数発生部13−1と不定値発生制御部13−2とから構成される不定値発生回路13を設け、mビット幅データa,bがともに0である場合、すなわちOR回路10の出力が「0」レベルとなった場合、不定値発生制御部13−2からマルチプレクサ12へ不定値発生指令を送り、処理部2から出力されるθの代わりに乱数発生処理部13−1からの乱数Rを取り込んで、tan-1(0/0)として出力する。
【0082】
このような回路を付加することにより、複素数位相変換後のデータがすべて一定になることが発生しないため、上記に記載した問題例がすべて回避できる。なお、この実施の形態では、mビット幅データa,bのORをとるようにしたが、入力値A,BのORをとるようにしてもよい。
【0083】
なお、上述した実施の形態では、ディジタル値A,BをIEEE754に定められた浮動小数点のデータ構造の単精度形式としたが、倍精度形式、4倍精度形式などであっても、同様にして適用することが可能である。
【産業上の利用可能性】
【0084】
本発明の位相出力回路は、2入力A,B(ディジタル値)のtan-1(B/A)を位相変換テーブルを利用して求める位相出力回路として、パターン認識装置や指紋照合装置など各種の装置に利用することが可能である。
【符号の説明】
【0085】
1…位相変換テーブル、2…処理部、6…ビット分割部、6−1…第1のビット分割回路、6−2…第2のビット分割回路、7…大小差検出部、8…仮数部下位ビット選択抽出部、8−1…第1の仮数部調整回路、8−2…第2の仮数部調整回路、81…第1の仮数部正規化回路、81A…正規化部、81B…マルチプレクサ、82…第2の仮数部正規化回路、82A…正規化部、82B…マルチプレクサ、83…第1の仮数部ビットシフト回路、83A…ビットシフト部、83B…マルチプレクサ、84…第2の仮数部ビットシフト回路、84A…ビットシフト部、84B…マルチプレクサ、9−1,9−2…正負検出回路、10…象限変換回路、11…OR回路、12…マルチプレクサ、13…不定値発生回路、13−1…乱数発生部、13−2…不定値発生制御部。
【特許請求の範囲】
【請求項1】
符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ指数部ビットと仮数部ビットとに分割して出力するビット分割部と、
前記ビット分割部から出力される前記ディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値A,Bの仮数部ビットをそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、
アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、
前記位相変換テーブルから前記仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する位相出力部と
を備えることを特徴とする位相出力回路。
【請求項2】
符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割して出力するビット分割部と、
前記ビット分割部から出力される前記ディジタル値A,Bの符号部ビットから前記ディジタル値A,Bの正負を検出する正負検出部と、
前記ビット分割部から出力される前記ディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、
アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、
前記位相変換テーブルから前記仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出す位相読出部と、
前記位相読出部によって読み出されたθを前記正負検出部で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する象限変換部部と
を備えることを特徴とする位相出力回路。
【請求項3】
請求項1又は2に記載された位相出力回路において、
前記大小差検出部は、
前記ディジタル値A,Bの指数部ビットが示す指数の大小差を2進数の減算値として出力する減算回路で構成されている
ことを特徴とする位相出力回路。
【請求項4】
請求項1又は2に記載された位相出力回路において、
前記仮数部下位ビット選択抽出部は、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値AおよびBの仮数部ビットが示す値をそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた値に正規化し、その正規化後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとして出力する仮数部正規化回路で構成されている
ことを特徴とする位相出力回路。
【請求項5】
請求項1又は2に記載された位相出力回路において、
前記仮数部下位ビット選択抽出部は、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタルAおよびBの仮数部ビットのうちそのディジタル値A,Bの指数が小さい方の仮数部ビットをその指数の差分だけ下位方向にビットシフトし、このビットシフト後の前記ディジタルAおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとして出力する仮数部ビットシフト回路で構成されている
ことを特徴とする位相出力回路
【請求項6】
請求項1−5の何れか1項において、
入力値A,Bがともに0又はmビット幅データa,bがともに0であることを検出する2入力値ゼロ検出部と、
この2入力値ゼロ検出部によって入力値A,B又はmビット幅データa,bがともに0であることが検出された場合、前記位相出力部から出力するθの代わりに乱数Rをtan-1(0/0)として出力する不定値発生部と
を備えることを特徴とする位相出力回路。
【請求項1】
符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ指数部ビットと仮数部ビットとに分割して出力するビット分割部と、
前記ビット分割部から出力される前記ディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値A,Bの仮数部ビットをそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、
アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、
前記位相変換テーブルから前記仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出し、このθをtan-1(B/A)として出力する位相出力部と
を備えることを特徴とする位相出力回路。
【請求項2】
符号部ビットと指数部ビットと仮数部ビットとから構成される浮動小数点形式のnビット幅のディジタル値A,Bを入力とし、この入力値A,Bをそれぞれ符号部ビットと指数部ビットと仮数部ビットとに分割して出力するビット分割部と、
前記ビット分割部から出力される前記ディジタル値A,Bの符号部ビットから前記ディジタル値A,Bの正負を検出する正負検出部と、
前記ビット分割部から出力される前記ディジタル値A,Bの指数部ビットが示す指数の大小差を検出する大小差検出部と、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値A,Bの仮数部ビットをそのディジタルA,Bの指数を何れか大きい方の指数に合わせた場合の値を示す仮数部ビットに調整し、その調整後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとする仮数部下位ビット選択抽出部と、
アドレス(a,b)にθ=tan-1(b/a)を格納した位相変換テーブルと、
前記位相変換テーブルから前記仮数部下位ビット選択抽出部で選択抽出されたmビット幅データa,bに対応するアドレス(a,b)に格納されているθ=tan-1(b/a)を読み出す位相読出部と、
前記位相読出部によって読み出されたθを前記正負検出部で検出された入力値A,Bの正負に基づき象限を考慮した補正値Θに補正し、この補正値Θをtan-1(B/A)として出力する象限変換部部と
を備えることを特徴とする位相出力回路。
【請求項3】
請求項1又は2に記載された位相出力回路において、
前記大小差検出部は、
前記ディジタル値A,Bの指数部ビットが示す指数の大小差を2進数の減算値として出力する減算回路で構成されている
ことを特徴とする位相出力回路。
【請求項4】
請求項1又は2に記載された位相出力回路において、
前記仮数部下位ビット選択抽出部は、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタル値AおよびBの仮数部ビットが示す値をそのディジタル値A,Bの指数を何れか大きい方の指数に合わせた値に正規化し、その正規化後の前記ディジタル値AおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとして出力する仮数部正規化回路で構成されている
ことを特徴とする位相出力回路。
【請求項5】
請求項1又は2に記載された位相出力回路において、
前記仮数部下位ビット選択抽出部は、
前記大小差検出部が検出する前記指数の大小差に基づいて、前記ディジタルAおよびBの仮数部ビットのうちそのディジタル値A,Bの指数が小さい方の仮数部ビットをその指数の差分だけ下位方向にビットシフトし、このビットシフト後の前記ディジタルAおよびBの仮数部ビットの最上位ビットから下位mビットを選択抽出してmビット幅データaおよびbとして出力する仮数部ビットシフト回路で構成されている
ことを特徴とする位相出力回路
【請求項6】
請求項1−5の何れか1項において、
入力値A,Bがともに0又はmビット幅データa,bがともに0であることを検出する2入力値ゼロ検出部と、
この2入力値ゼロ検出部によって入力値A,B又はmビット幅データa,bがともに0であることが検出された場合、前記位相出力部から出力するθの代わりに乱数Rをtan-1(0/0)として出力する不定値発生部と
を備えることを特徴とする位相出力回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−210153(P2011−210153A)
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願番号】特願2010−79359(P2010−79359)
【出願日】平成22年3月30日(2010.3.30)
【出願人】(000006666)株式会社山武 (1,808)
【Fターム(参考)】
【公開日】平成23年10月20日(2011.10.20)
【国際特許分類】
【出願日】平成22年3月30日(2010.3.30)
【出願人】(000006666)株式会社山武 (1,808)
【Fターム(参考)】
[ Back to top ]