(57)【要約】【課題】ＣＯＲＤＩＣ回路を使用しない回路構成で、高精度で高速に対数変換できるようにする。【解決手段】  ２進数のデータを上位ビットから比較し、最初に１となるビット位置Ｅを求めて出力するＥの検出器と、該データを２のＥ乗で割った値をMantの値にとる除算器と、各々のMantに対して２を底とする対数値をあらかじめテーブルに記憶しておき、所望のMantに対してテーブルを参照して、２を底とするMantの対数値を読み出す記憶手段と、該記憶手段から読み出したMantの対数値と前記求めたＥとを加算出力する加算手段とにより対数変換する。  【選択図】図１
2006338390.tif 000002
【特許請求の範囲】
【請求項１】
２を底とする対数に変換する対数変換回路において、
２進数のデータを上位ビットから比較し、最初に１となるビット位置Ｅを求めて出力するＥの検出器と、
該データを２のＥ乗で割った値をMantの値にとる除算器と、
各々のMantに対して２を底とする対数値をあらかじめテーブル記憶しておき、
所望のMantに対してテーブルを参照して、２を底とするMantの対数値を読み出す記憶手段と、
該記憶手段から読み出したMantの対数値と前記求めたＥとを加算出力する加算手段と、
を備え、前記データを、２を底とする対数に変換することを特徴とする対数変換回路。
【請求項２】
平方根に変換する平方根変換回路において、
２進数のデータを上位ビットから比較し、最初に１となるビット位置Ｅを求めて出力するＥの検出器と、
該データを２のＥ乗で割った値をMantの値にとる除算器と、
各々のMantに対して２を底とする対数値をあらかじめテーブル記憶しておき、
所望のMantに対してテーブルを参照して、２を底とするMantの対数値を読み出す第１の記憶手段と、
該第１の記憶手段から読み出したMantの対数値を１ビット右へシフトして１／２とする第１のシフトレジスタと、
各々のMantの２を底とする対数値に対してMantの値をあらかじめテーブルに記憶しておき、所望のMantの２を底とする対数値に対してテーブルを参照して、Mantの値を読み出す第２の記憶手段と、
前記Ｅの検出器の出力Ｅを１ビット右へシフトしてＥ/２を出力する第２のシフトレジスタと、
前記第２の記憶手段から読み出したMantの値を左へＥ/２ビットシフトする第３のシフトレジスタと、
を具備して、前記データを平方根に変換する平方根変換回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スペクトラム・アナライザなどに使用される高精度で高速に動作する対数および平方根変換回路に関するものである。
【背景技術】
【０００２】
スペクトラム・アナライザのデジタルＩＦの信号処理には、対数変換が使用される。
従来、その対数変換は、コーディック（ＣＯＲＤＩＣ）回路により実現している。
【０００３】
しかし、ＣＯＲＤＩＣ回路は、繰り返し計算により解を収束させていくので、高速かつ高精度を実現するには、多くの反復回数が必要となり、かなりの計算時間とそのためのハードウェア量を必要とする問題があった。
【特許文献１】特許公開平７−１２１６８７
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする問題点は、ＣＯＲＤＩＣ回路を用いないでハードウェアを構成し、高精度で高速に対数変換ができるようにすることであり、またその対数変換の応用として平方根変換を実現する。
【課題を解決するための手段】
【０００５】
本発明の第１は、２を底とする対数に変換する対数変換回路において、
２進数のデータを上位ビットから比較し、最初に１となるビット位置Ｅを求めて出力するＥの検出器と、
該データを２のＥ乗で割った値をMantの値にとる除算器と、
各々のMantに対して２を底とする対数値をあらかじめテーブルに記憶しておき、
所望のMantに対してテーブルを参照して、２を底とするMantの対数値を読み出す記憶手段と、
該記憶手段から読み出したMantの対数値と前記求めたＥとを加算出力する加算手段と、
を備え、前記データを、２を底とする対数に変換することを特徴とする対数変換回路。
本発明の第２は、平方根に変換する平方根変換回路において、
２進数のデータを上位ビットから比較し、最初に１となるビット位置Ｅを求めて出力するＥの検出器と、
該データを２のＥ乗で割った値をMantの値にとる除算器と、
各々のMantに対して２を底とする対数値をあらかじめテーブルに記憶しておき、
所望のMantに対してテーブルを参照して、２を底とするMantの対数値を読み出す第１の記憶手段と、
該第１の記憶手段から読み出したMantの対数値を１ビット右へシフトして１／２とする第１のシフトレジスタと、
各々のMantの２を底とする対数値に対してMantの値をあらかじめテーブルに記憶しておき、所望のMantの２を底とする対数値に対してテーブルを参照して、Mantの値を読み出す第２の記憶手段と、
前記Ｅの検出器の出力Ｅを１ビット右へシフトしてＥ/２を出力する第２のシフトレジスタと、
前記第２の記憶手段から読み出したMantの値を左へＥ/２ビットシフトする第３のシフトレジスタと、
を具備して、前記データを平方根に変換する平方根変換回路。
【発明の効果】
【０００６】
本発明の対数および平方根変換回路は、簡単な回路構成と、アルゴリズムにもとづいて変換できるので、回路規模を小さくでき、また高速に高精度の変換結果が得られるという利点がある。
【発明を実施するための最良の形態】
【０００７】
本発明は、回路規模を小さく、また高速・高精度にデータ変換する目的を、記憶手段のＲＯＭ、シフトレジスタ等を使用して実現した。
【実施例１】
【０００８】
最初に、本発明の対数変換回路例について説明する。
図１に示すように、本発明の対数変換回路のブロック図の一例は、Ｅの検出器１、除算器２、ＲＯＭ３、可算器４で構成し、２を底とする対数変換をおこなう。
【０００９】
入力信号のデジタル・データＤの２を底とする対数Log2Ｄを求める場合、１０進数のＤを式（１）のように分解すると、Mantのとりうる範囲は、式（２）に示すように１以上で２未満となる。
【００１０】
Ｄ＝２ Ｅ＊Mant・・・・・・・・・・・・・・・・・（１）
【００１１】
１≦Mant＜２  ・・・・・・・・・・・・・・・・・（２）
式（１）の対数をとると、Log2Ｄは、下記式（３）で求められる。
Log2 Ｄ＝Ｅ＋Log2Mant  ・・・・・・・・・・・（３）
【００１２】
そこで、Ｅの検出器１において、２進数のデジタル・データＤを上位ビットから比較し、最初に“１”となるビット位置をＥの検出器１で検出してＥを出力する。
次に、式（１）からわかるようにＤを２のＥ乗で割った値がMantとなるので、除算器２において、２進数のＤの値をＥビット右へシフトした値を２進数のMantとする。
【００１３】
ここで、所望のMantの値に対してLog2 Mantを読み出せるように、記憶手段のＲＯＭ３にテーブルとしてあらかじめ記憶しておく。
そして、各々のMantに対してＲＯＭ３のテーブルを参照することでMantの対数であるLog2Mantを求め出力する。
このMantの対数値とＥの検出器１の出力したＥとを加算器４で加算すると、その出力は（Ｅ＋Log2Mant）となる。
【００１４】
従って、本発明により、デジタル・データＤを対数変換した値Log2Ｄが出力として得られる。
【００１５】
デジタル・データＤの値から、直接Log2Ｄを引くテーブルを作ると、回路が簡単になるが、テーブルが大きくなってしまい実用的でない。
そこで本発明においては、Mantの範囲が、式（２）で示すように、１以上で２未満となるので、ROM3に記憶するデータを小さくできる利点がある。
【００１６】
次に、本発明の対数変換回路の動作について、具体的な数値例により説明する。
例えば、２進数表示のデジタル・データＤ＝１００１(2)として、Ｄの２を底とする対数Log2 Ｄを求める場合で説明する。
２進数表示のデジタル・データＤ＝１００１(2)は、１０進数の９(10)であり、式（１）に示すように分解すると、下記式（４）となる。
【００１７】
９＝２３＊1.125    ・・・・・・・・・・・・（４）
Ｅの検出器１において、２進数のデジタル・データＤ＝１００１(2)を上位ビットから比較し、最初に“１”となるビット位置は、下位ビットから、０、１、２、３と数えて３ビット目となる。
つまり、Ｅの検出器１の出力Ｅの値は、２の３乗である３となる。
【００１８】
次に、Ｅの検出器１の回路例について、図５を参照して説明する。
図５に示すように、Ｅの検出器１は、４ビットのデータからＥを検出する回路で、３つのゲート２１、ゲート２２、ゲート２３と、エンコーダ２４とで構成している。
例えば、デジタル・データＤが９(10)の場合、２進数の１００１(2)入力に対して、エンコーダの入力（３つのゲート２１、ゲート２２、ゲート２３の出力）は、２進数で１０００（２）となり、エンコーダの出力（Ｅの検出器１の出力）Ｅは、２進数では００１１(2)、１０進数では３(10)となる。
また、デジタル・データＤが７(10)の場合、２進数の０１１１(2)入力に対して、エンコーダの入力は０１００(2)、エンコーダの出力（Ｅの検出器１の出力）Ｅは、２進数では００１０(2)、１０進数では２(10)となる。
【００１９】
また、除算器２により、２進数のデータＤ＝１００１(2)を３ビット右へシフトした２進数のMantの値は、１．００１(2)となる。
【００２０】
次に、本発明の回路は、デジタル値で動作しているが、ＲＯＭ３以下の動作を直感的にわかりやすい１０進数表示で主として説明する。
２進数のMantの値１．００１(2)は、１０進数では1.125(10)である。
そして、この１０進数のMantの値1.125(10)に対して、図３に示すＲＯＭ３のテーブルを参照することで、Log2 (1.125)の値に対する参照データ0.170(10)が読み出される。
ここで、テーブルに記憶するデータの桁数は、必要とする誤差の範囲となるように決定する。
このLog2 (Mant)の値0.170(10)とＥの検出器１の出力したＥ＝３(10)とを加算器４で加算すると、その出力であるLog2 Ｄは、3.170(10)となる。
【００２１】
従って、デジタル・データの１００１(2)は１０進数では９(10)であり、本発明の対数変換回路により２を底とする対数の値3.170(10)に変換できる。
【実施例２】
【００２２】
次に、本発明の対数変換回路の応用である、平方根変換回路について以下説明する。
本発明の平方根変換回路のブロック図は、図２に示すように、Ｅの検出器１、除算器２、ＲＯＭ３、可算器４、シフトレジスタ５、シフトレジスタ６、シフトレジスタ７、ＲＯＭ８とで構成している。
ここで、加算器４は、対数変換出力を得るためであり、平方根変換出力のみを得る場合は、無くてもよい。
【００２３】
デジタル・データＤを平方根（√Ｄ）に変換する場合として以下説明する。
ただし、Ｅの検出器１、除算器２、ＲＯＭ３、可算器４の動作については、実施例１で説明しているので、この部分の詳細説明を省略する。
最初に、対数変換回路のＲＯＭ３で、所望のデジタル・データＤのLog2 Mantを読み出す。
【００２４】
次に、式（１）により、Log2 Ｄを１／２倍すると、下記式（５）となる。
【００２５】
（1/2）Log2 Ｄ＝Log2 （√Ｄ）・・・・・・・・・（５）
この式より、Dの平方根を求めるには、前の実施例1を用いてLog2 (Ｄ)を計算し、
その結果を  1/2して、ｙ＝Log2 （√Ｄ）の逆変換、つまり、（√Ｄ）＝（２のｙ乗）を求める。
ここで、ｙを下記式（６）に示すように整数部と少数部とに分解する。
【００２６】
ｙ＝整数部＋少数部・・・・・・・・・・・・・（６）
すると、（√Ｄ）は、下記式（７）で表せる。
【００２７】
（√Ｄ）＝２の（整数部＋少数部）乗
＝２の整数部乗＊２の少数部乗・・・・・・（７）
ここで、２の整数部乗は、整数部だけ左へビットシフトする。
また、２の少数部乗は、ＲＯＭ８のテーブルを参照して読み出す。
そして、少数部の１０進数での範囲は、下記式（８）となる。
【００２８】
０≦少数部＜１  ・・・・・・・・・・・・・（８）
また、２の少数部乗の１０進数での範囲は、下記式（９）となる。
１≦２の少数部乗＜２  ・・・・・・・・・・（９）
そして、２の少数部乗は、ＲＯＭ３の出力Log2 Mantを１／２倍するため、２進数をシフトレジスタ５で１ビット右へシフトすると、(1/2) Log2 Mantとなる。
ここで、各々の(1/2) Log2 Mantの入力に対して、２の((1/2) Log2 Mant)乗を読み出せるように、記憶手段のＲＯＭ８にテーブルとしてあらかじめ記憶しておく。
つまり、記憶手段のＲＯＭ８は、記憶手段のＲＯＭ３とは逆方向に引くテーブルとなる。
そして、所望の(1/2) Log2 Mantの入力に対してＲＯＭ８のテーブルを参照することで２の((1/2) Log2 Mant)乗の値を読み出す。
一方、Ｅの検出器１で検出したＥを１／２するため、２進数をシフトレジスタ６で右へ１ビットシフトし、Ｅ／２を出力する。
【００２９】
そして、式（７）により、（２の整数部乗＊２の少数部乗）を求めれば、デジタル・データＤの平方根（√Ｄ）に変換できるので、２進数のＲＯＭ８の出力データをシフトレジスタ７で（Ｅ／２）ビット左へシフトする。
実施例では、シフトレジスタを用いて構成しているが、乗算器をもちいても良い。
【００３０】
次に、本発明の動作について、具体的な数値例により主として２進数で説明する。
例えば、１０進数の７(10)は、２進数表示のデジタル・データＤ＝０１１１(2)であり、そのデータＤの平方根(√Ｄ)を求める場合で説明する。
２進数のデジタル・データＤ＝０１１１(2)は、式（１）に示すように分解すると、下記式（１０）となる。
【００３１】
０１１１(2)＝２２＊１.１１００(2)・・・・・・・・・・・・（１０）
図４に示すＲＯＭ３の２進数のテーブルを参照して、Mantの１.１１００(2)に対して２進数データ１１０１(2)を読み出す。
その読み出した２進数１１０１(2)を、最上位ビットの前に計算上の少数点を付けて、Log2 Mantの０.１１０１(2)とする。
次に、シフトレジスタ５により、２進数の１１０１(2)を右へ１ビットシフトすると、(1/2) Log2 Mantは０.０１１０(2)となる。
図４に示すＲＯＭ８のテーブル（２進数）において、 Log2 Mantの０１１０(2)をＲＯＭ３とは逆方向に引くと、１.０１０１(2)が読み出される。
一方、Ｅの検出器１で検出したＥは、１０進数では２(10)であり、２進数では００１０(2)である。
ここで、式（７）により、（√Ｄ）は２の少数部乗に２の整数部乗を掛け算することにより求められる。
つまり、２の小数部乗に２の整数部乗を掛算することは、２の小数部乗の２進数をシフトレジスタ７により、２の整数部つまり（Ｅ/２）ビットだけ左へビットシフトして、（√Ｄ）が求められる。
この例では、シフトレジスタ６により、２進数の００１０(2)を右へ１ビットシフトすると、Ｅ/２は２進数の０００１(2)となり、１０進数では１(10)となる。
ただし、（Ｅ/２）に少数点以下が生じる場合は切り捨てることとする。
そこで、２の小数部乗である１.０１０１(2)に、２の整数部乗である２の１乗を掛算するので、シフトレジスタ７により、１.０１０１(2)を左へ１ビットシフトして、Ｄの平方根（√Ｄ）は１０.１０１(2)に変換できる。
【産業上の利用可能性】
【００３２】
本発明は、高速測定が要求される製造ライン用の他の測定器などにも適用できる。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施方法を示したブロック図である。（実施例１）
【図２】本発明の応用例を示したブロック図である。（実施例２）
【図３】本発明の１０進数のグラフとテーブル例の図である。
【図４】本発明２進数のテーブル例の図である。
【図５】本発明のＥの検出器の回路図例である。
【符号の説明】
【００３４】
１    Ｅの検出器
２    除算器
３    ＲＯＭ
４    加算器
５、６、７  シフトレジスタ
８    ＲＯＭ
２１、２２、２３  ゲート
２４    エンコーダ
【図１】
2006338390.tif 000003
【図２】
2006338390.tif 000004
【図３】
2006338390.tif 000005
【図４】
2006338390.tif 000006
【図５】
2006338390.tif 000007