(57)【特許請求の範囲】
【請求項１】
２のべき乗のビット数でなる符号ビット付き入力データを、その上位側の非有効桁ビットを除外して正規化するための左シフト量であるべき数を求めるべき数エンコーダ回路において、
入力データが負数（又は正数）の場合には、符号ビット以外のデータ部分を反転させると共に符号ビットを最下位ビットの位置に移動させ、入力データが正数（又は負数）の場合には、符号ビット以外のデータ部分をそのまま通過させると共に符号ビットを最下位ビットの位置に移動させる第１の論理演算回路と、
上記第１の論理演算回路からの出力データを、上位ビット側から順に複数の組に分割し、各組の分割データのそれぞれに対し、分割データを構成する各ビットの組み合わせが、上位側からの非有効桁ビットと有効桁ビットとの組み合わせになっているか否かを表す第１のビットと、分割データを構成する全てのビットが非有効桁ビットであるか否かを表す第２のビットとを形成する第２の論理演算回路と、
上記第２の論理演算回路からの出力データから、べき数の各ビットを求める第３の論理演算回路と
を備えていることを特徴とするべき数エンコーダ回路。
【請求項２】
上記第３の論理演算回路は、上記入力データがオール“０”の場合にのみ有意な論理レベルをとる零検出信号の形成構成を含むことを特徴とする請求項１に記載のべき数エンコーダ回路。
【請求項３】
Ｎビットでなる入力データにおける、有意な論理レベルをとる最も上位のビット位置を含め、それより下位のビット位置のビットを全て一方の論理レベルにすると共に、有意な論理レベルをとる最も上位のビット位置より上位のビット位置のビットを全て他方の論理レベルにするマスク回路において、
上記入力データ数と同じ数の出力線と、
出力線前処理信号に基づき、上記各出力線をチャージ（又はディスチャージ）して一方の論理レベルにする上記各出力線に対応する出力線初期化用トランジスタと、
第ｎ（ｎは１〜Ｎ）番目の上記出力線に対してｎ個設けられ、ゲートへの有意な論理レベルの入力により、それぞれがその出力線をディスチャージ（又はチャージ）し得る出力確定用トランジスタと、
第ｎ（ｎは１〜Ｎ）番目の上記出力線に対するｎ個の出力確定用トランジスタのそれぞれのゲートに対し、上記入力データのＭＳＢ側からのｎ個のビット値を入力させる入力線とを備え、
出力線前処理信号に基づき、全ての上記出力線を一方の論理レベルにした後、上記各入力線に上記入力データを入力させて、上記各出力線に出力データを形成させる
ことを特徴としたマスク回路。
【請求項４】
２のべき乗のビット数でなる符号ビット付き入力データを正規化するための左シフト量であるべき数を求めるべき数エンコーダ回路において、
入力データが負数（又は正数）の場合には、べき数が同じになる正数のデータに変換すると共に、入力データが正数（又は負数）の場合には、そのまま通過させる符号合せ回路と、
この符号合せ回路の出力における、有意な論理レベルをとる最も上位のビット位置を含め、それより下位のビット位置のビットを全て一方の論理レベルにすると共に、有意な論理レベルをとる最も上位のビット位置より上位のビット位置のビットを全て他方の論理レベルにするマスク回路と、
このマスク回路の出力からべき数を生成するエンコーダ回路と
を有することを特徴とするべき数エンコーダ回路。
【請求項５】
上記マスク回路として、請求項３に記載のものを適用したことを特徴とする請求項４に記載のべき数エンコーダ回路。
【請求項６】
上記マスク回路として、バレルシフタ構成のものを適用したことを特徴とする請求項４に記載のべき数エンコーダ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ等におけるべき数エンコーダ回路や、べき数エンコーダ回路に適用可能なマスク回路に関するものである。
【０００２】
【従来の技術】
べき数エンコーダ回路は、入力データを正規化するための左シフト量を求めるための回路であり、そのべき数エンコード結果（左シフト量）を用い、入力データを正規化することにより、非有効桁ビットを解消する。これにより、小さい値の乗算も左シフト量を考慮することによって、精度を保って演算を実行することができる。
【０００３】
８ビット符号付の入力データのべき数エンコーダ回路であれば、図２に示すような真理値表に従い、入力データ（ＩＮＰＵＴ）に対するべき数エンコード結果（ＯＵＴ）を出力する。例えば、入力データが０２ｈ（００００００１０）であれば、べき数エンコード結果は５（１０１）となり、左シフトを５回行うと、シフト後のデータは０１００００００（最上位の０は正数を表す）となる。
【０００４】
従来、べき数エンコーダ回路としては、シフト演算を用いてべき数をカウントする図３に示すものや、符号ビットと異なるビット位置を検出してその検出位置からべき数をエンコードする図４に示すものがある。なお、図３は、符号付きでない入力データに対応するものである。
【０００５】
図３に示す従来のべき数エンコーダ回路は、以下のように動作する。
【０００６】
（１）選択回路ｓl、ｓ２により、記憶素子Ｉ１に入力データＩｎを格納し、記憶素子Ｉ２に０ｈを格納する初期化を行う。
【０００７】
（２）記憶素子Ｉ１の出力をシフタＳＦＴに入力し、シフタＳＦＴによって１ビットだけ左シフトを実行させる。
【０００８】
（３）シフタＳＦＴの出力を選択回路ｓ１を介して記憶素子Ｉ１に与えて保持させる。
【０００９】
（４）シフタＳＦＴの出力の最上位ビット（ＭＳＢ）と入力データＩｎのＭＳＢのイクスクルーシブノアをイクスクルーシブノア回路（Ｅｘ−ＮＯＲ）により得る。シフタＳＦＴの出力の最上位ビット（ＭＳＢ）と入力データＩｎのＭＳＢとが異なるデータとなった場合には、イクスクルーシブノア出力は“０”となり、完了信号ＦＩＮＩＳＨが“１”となる。イクスクルーシブノア出力が“１”であれば、加算器ＡＤＤＥＲ及び選択回路ｓ２により、記憶素子Ｉ２の記憶値を１インクリメントする。
【００１０】
（５）上述した（２）〜（４）を１サイクルとし、完了信号ＦＩＮＩＳＨが“１”となるまで繰り返す。完了信号ＦＩＮＩＳＨが“１”となったときの加算器ＡＤＤＥＲの出力がべき数ＥＸＰとなる。
【００１１】
なお、図３は、入力データＩｎが０の場合についての回路構成は記載していない。
【００１２】
また、図４に示す従来のべき数エンコーダ回路は、以下のように動作する。図４のべき数エンコーダ回路は、８ビットの符号付データに対するものである。
【００１３】
入力データＩｎの符号ビットＩｎ７（ＭＳＢ）が、入力データが負数であることを表しているならば（Ｉｎ７が１）、イクスクルーシブオア回路（Ｅｘ−ＯＲ回路）Ｉ２９〜Ｉ３６によって入力データＩｎを反転させ、入力データＩｎの符号ビットＩｎ７（ＭＳＢ）が、入力データが正数であることを表しているならば（Ｉｎ７が０）、入力データＩｎをイクスクルーシブオア回路（Ｅｘ−ＯＲ回路）Ｉ２９〜Ｉ３６をそのまま通過させて、出力Ｎ６〜Ｎ０、ＮＺを得る（ＮＺは符号を表すものとなっている）。
【００１４】
この出力データＮ６〜Ｎ０、ＮＺをＭＳＢから順に見た場合、最初に“１”があるビット位置の直前のビット位置のデータまでが非有効桁ビットであるので（図２参照）、この検出ビット位置からべき数をエンコードする。
【００１５】
図４の論理ゲートＩ１〜Ｉ２５は、最初に“１”があるビット位置を検出するビット位置検出回路を構成している。
【００１６】
次に、論理ゲートＩ１〜Ｉ１２、Ｉ１３〜Ｉ２４をそれぞれ１ブロックとして見た場合の論理ゲートＩ１〜Ｉ１２のブロックの動作を説明する。
【００１７】
論理ゲートＩ１は、次段へのルックアヘッドとなっており、データＮ６〜Ｎ３が全て“０”の場合に“１”となる４入力ノア回路（ＮＯＲ回路）であり、この出力は、“１”となった場合のみ、論理ゲートＩ１４を介して、次段のブロック（Ｉ１３〜Ｉ２４）を有効とするイネーブル信号となっている。
【００１８】
論理ゲートＩ２は、前段までのイネーブル信号をモニタするためにあり、４入力とも全て“１”となった場合に“０”となる４入力のナンド回路（ＮＡＮＤ回路）であり、この出力が“０”になった場合に、このブロック（Ｉ１〜Ｉ１２）の検出回路が有効となる。なお、この論理ゲートＩ２は、入力データのビット数が８ビットより多い場合の拡張用に設けられており、入力データが８ビットの場合には、論理ゲートＩ２への４入力は全て“１”になされている。
【００１９】
論理ゲートＩ３、Ｉ４、Ｉ５〜Ｉ８は検出結果伝播回路であり、前ビット（上位側）までの検出結果を伝播させるものである。
【００２０】
論理ゲートＩ９〜Ｉ１２は検出フラグ生成回路であり、出力信号Ｆiｎｄが４ビット中検出されたビット位置のみ“１”となり、その他は“０”となるように論理演算するものである。
【００２１】
例えば、データＮ６が“１”の場合、論理ゲートＩ５〜Ｉ８の出力はそれぞれ、Ｉ５＝０、Ｉ６＝１、Ｉ７＝０、Ｉ８＝１となり、論理ゲートＩ９〜Ｉ１２の出力はそれぞれ、Ｉ９＝１、Ｉ１０＝０、Ｉ１１＝０、Ｉ１２＝０となる。
【００２２】
下位ブロックＩ１３〜Ｉ２４も同様な動作をし、その結果、Ｆiｎｄ信号の８ビット中の検出位置のビットのみ“１”、その他は“０”となる。
【００２３】
なお、論理ゲートＩ２５はビット長拡張用のゲートであり、８ビット入力固定の場合には必要としないものである。
【００２４】
論理ゲートＩ２６〜Ｉ２８は、ビット検出位置からべき数を形成するビット検出位置エンコード回路を構成している。論理ゲートＩ２６〜Ｉ２８は、検出ビット位置信号Ｆiｎｄにより、入力データの正規化に必要な左シフト量を求めるためにエンコードして、べき数Ｅｘｐを得ている。
【００２５】
【発明が解決しようとする課題】
しかしながら、図３に示した従来のべき数エンコーダ回路においては、べき数エンコード結果を得るまでに、最大で入力データのビット数分のサイクルが必要となり、平均的に見ても、べき数エンコード結果を得るための処理時間が長いという課題を有する。そのため、べき数を求める処理を使用する頻度が高いアプリケーションを設計する場合には、処理時間が増大するため、アプリケーションの低速化の課題や、ある決められた処理時間（例えばサンプリング時間）内で処理が終了しないことも生じるという課題を有する。
【００２６】
また、図４に示した従来のべき数エンコーダ回路においては、通過ゲート段数が多く、プロセッサの高速化に伴い、１サイクル内で終了できなくなるという課題や、各論理ゲートへの入力の遅延時間が異なることにより、スイッチング回数が増加し、その分電力消費が増大するという課題を有する。
【００２７】
【課題を解決するための手段】
第１の本発明は、２のべき乗のビット数でなる符号ビット付き入力データを、その上位側の非有効桁ビットを除外して正規化するための左シフト量であるべき数を求めるべき数エンコーダ回路において、入力データが負数（又は正数）の場合には、符号ビット以外のデータ部分を反転させると共に符号ビットを最下位ビットの位置に移動させ、入力データが正数（又は負数）の場合には、符号ビット以外のデータ部分をそのまま通過させると共に符号ビットを最下位ビットの位置に移動させる第１の論理演算回路と、この第１の論理演算回路からの出力データを、上位ビット側から順に複数の組に分割し、各組の分割データのそれぞれに対し、分割データを構成する各ビットの組み合わせが、上位側からの非有効桁ビットと有効桁ビットとの組み合わせになっているか否かを表す第１のビットと、分割データを構成する全てのビットが非有効桁ビットであるか否かを表す第２のビットとを形成する第２の論理演算回路と、この第２の論理演算回路からの出力データから、べき数の各ビットを求める第３の論理演算回路とを備えていることを特徴とする。
【００２８】
第２の本発明は、Ｎビットでなる入力データにおける、有意な論理レベルをとる最も上位のビット位置を含め、それより下位のビット位置のビットを全て一方の論理レベルにすると共に、有意な論理レベルをとる最も上位のビット位置より上位のビット位置のビットを全て他方の論理レベルにするマスク回路において、上記入力データ数と同じ数の出力線と、出力線前処理信号に基づき、上記各出力線をチャージ（又はディスチャージ）して一方の論理レベルにする上記各出力線に対応する出力線初期化用トランジスタと、第ｎ（ｎは１〜Ｎ）番目の上記出力線に対してｎ個設けられ、ゲートへの有意な論理レベルの入力により、それぞれがその出力線をディスチャージ（又はチャージ）し得る出力確定用トランジスタと、第ｎ（ｎは１〜Ｎ）番目の上記出力線に対するｎ個の出力確定用トランジスタのそれぞれのゲートに対し、上記入力データのＭＳＢ側からのｎ個のビット値を入力させる入力線とを備え、出力線前処理信号に基づき、全ての上記出力線を一方の論理レベルにした後、上記各入力線に上記入力データを入力させて、上記各出力線に出力データを形成させることを特徴とする。
【００２９】
第３の本発明は、２のべき乗のビット数でなる符号ビット付き入力データを正規化するための左シフト量であるべき数を求めるべき数エンコーダ回路において、入力データが負数（又は正数）の場合には、べき数が同じになる正数のデータに変換すると共に、入力データが正数（又は負数）の場合には、そのまま通過させる符号合せ回路と、この符号合せ回路の出力における、有意な論理レベルをとる最も上位のビット位置を含め、それより下位のビット位置のビットを全て一方の論理レベルにすると共に、有意な論理レベルをとる最も上位のビット位置より上位のビット位置のビットを全て他方の論理レベルにするマスク回路と、このマスク回路の出力からべき数を生成するエンコーダ回路とを有することを特徴とする。
【００３０】
【発明の実施の形態】
（Ａ）第１の実施形態
以下、本発明によるべき数エンコーダ回路の第１の実施形態を図面を参照しながら詳述する。
【００３１】
図１は、第１の実施形態のべき数エンコーダ回路の構成を示すブロック図である。なお、第１の実施形態のべき数エンコーダ回路は、８ビット符号付入力データ（図２参照）を取扱うものであり、入力データＩｎ［７：０］からべき数エンコード結果Ｅｘｐ［２：０］と零検出信号Ｚを得るものである。
【００３２】
第１の実施形態のべき数エンコーダ回路は、図１に示すように、複数の論理ゲートＧ１〜Ｇ３７から構成されている。
【００３３】
イクスクルーシブオア回路（Ｅｘ−ＯＲ回路）である８個の２入力論理ゲートＧ１〜Ｇ８の一方の入力端子には、入力データＩｎにおける符号ビット（ＭＳＢ）Ｉｎ７が入力され、他方の入力端子には、入力データＩｎにおける各ビット位置のビット値Ｉｎ６、…、Ｉｎ０及び固定値“０”が入力されている。
【００３４】
論理ゲートＧ１〜Ｇ８は、図２に示すような負数の入力データにおける符号以外のビット部分を反転すると共に、図２に示すような正数の入力データにおける符号以外のビット部分をそのまま通過させ、かつ、符号ビットを最下位ビット（ＬＳＢ）の位置に移動させるものである。
【００３５】
論理ゲートＧ１〜Ｇ８からの出力データａ０〜ａ７と、結果としてのべき数Ｅｘｐ２〜Ｅｘｐ０と、零検出信号Ｚとの関係は、図２から、図５のようになる。なお、図５は、関係の一部を示している。
【００３６】
この図５からは、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０、零検出信号Ｚは、データａ０〜ａ７に対する次の論理演算式（１）〜（４）によって求められることが分かる。
【００３７】
【数１】
0003640643.tif 000002
各論理演算式（１）、…、（４）における共通項を整理し、その共通項を整理した後の論理演算式を実現するように、図１に示す論理ゲートＧ９〜Ｇ３７を設けている。なお、論理ゲートＧ２１及びＧ２５は機能的には図１に示すように２個の論理ゲートからなっているが、回路的には、１個の論理ゲートＧ１’で実現できるものである。論理ゲートＧ２３及びＧ２８、論理ゲートＧ３１及びＧ３４、並びに、論理ゲートＧ３２及びＧ３５も同様に、回路的にはそれぞれ、１個の論理ゲートＧ２’、Ｇ３’、Ｇ４’で実現できるものである。
【００３８】
上述したような共通項の整理により、８ビットデータａ７〜ａ０に対し、初めの論理演算は、２ビットずつ（ａ７及びａ６、ａ５及びａ４、ａ３及びａ２、ａ１及びａ０）の処理構成になっている。論理ゲートＧ９〜Ｇ１２及び論理ゲートＧ１３〜Ｇ２０がこのような２ビットずつの処理構成になっている。
【００３９】
論理ゲートＧ９〜Ｇ１２はインバータ回路になっており、論理ゲートＧ１３〜Ｇ２０は２入力ナンド回路（ＮＡＮＤ回路）になっている。
【００４０】
論理ゲートＧ１からの出力ａ７は、論理ゲートＧ１３及びＧ１４に入力され、論理ゲートＧ２からの出力ａ６は、論理ゲートＧ９を介して反転されて論理ゲートＧ１３に入力されると共に、論理ゲートＧ１４に入力される。データａ７、ａ６が“００”のときには、論理ゲートＧ１３及びＧ１４から“０１”が出力され、データａ７、ａ６が“０１”のときには、論理ゲートＧ１３及びＧ１４から“１０”が出力され、データａ７、ａ６が“１０”及び“１１”のときには、論理ゲートＧ１３及びＧ１４から“００”が出力される。
【００４１】
べき数エンコーダ回路の場合には、データａ７〜ａ１中の最も上位で“１”をとるビット位置が問題となっており、２ビットが“１０”及び“１１”の場合には、同一に取り扱って良い。また、２ビットが“００”の場合には、データａ７〜ａ１中の最も上位で“１”をとるビット位置がそこに存在しないことを意味し、２ビットが“０１”の場合には、データａ７〜ａ１中の最も上位で“１”をとるビット位置が、２ビット中“０１”の“１”である可能性があることを表している。すなわち、２ビットの４個の組み合わせを３分類すれば十分である。
【００４２】
データａ５、ａ４に対する論理ゲートＧ１０、Ｇ１５、Ｇ１６や、データａ３、ａ２に対する論理ゲートＧ１１、Ｇ１７、Ｇ１８も、上述したデータａ７、ａ６に対する論理ゲートＧ９、Ｇ１１３、Ｇ１４と同様な意味を実現するものである。
【００４３】
データａ１、ａ０に対する論理ゲートＧ１２、Ｇ１９、Ｇ２０は、上述の意味合いとは異なるが、２ビットの４個の組み合わせを３分類で区別するためのものである。
【００４４】
図５の１行目及び２行目に示すように、データａ７〜ａ０がオール“０”のとき（入力データＩｎ７〜Ｉｎ０がオール“０”）と、データａ７〜ａ０が“０００００００１”のとき（入力データＩｎ７〜Ｉｎ０がオール“１”）とは、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０、零検出信号Ｚを特異な値にしなければならない。これらの２種類のデータの場合、データａ１、ａ０の組み合わせだけが、“００”と“０１”と異なっており、そのため、データａ１、ａ０の組み合わせとして、“００”と“０１”とをマークしなければならない。データａ１、ａ０の組み合わせが、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０（及び零検出信号Ｚ）に影響を与えるときは、あとは、図５の３行目及び４行目のときである。しかし、３行目及び４行目のときは、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０（及び零検出信号Ｚ）は同じ値であるので、そのときのデータａ１、ａ０の組み合わせ“１０”及び“１１”を区別する必要はない。
【００４５】
論理ゲートＧ９〜Ｇ２０による２ビット毎の論理演算以降は、所望のべき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０及び零検出信号Ｚを得られるように、２ビット単位での演算結果に対し、論理ゲートＧ２１〜Ｇ３７による論理演算を行っている。
【００４６】
負数の入力データＩｎ７〜Ｉｎ０が入力されると、論理ゲートＧ１〜Ｇ８により、符号ビット以外を反転させると共に、符号ビットをＬＳＢに移動させ、また、正数の入力データＩｎ７〜Ｉｎ０が入力されると、論理ゲートＧ１〜Ｇ８により、符号ビット以外をそのまま通過させると共に、符号ビットをＬＳＢに移動させる。以上の処理により、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０が同じとなる正の入力データと負の入力データのいずれが入力されても、符号ビット以外のビットが同じ表記となっているデータａ７〜ａ０に変換される。
【００４７】
その後、データａ７〜ａ０と、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０及び零検出信号Ｚとの真理値表から求められたデータａ７〜ａ０からべき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０及び零検出信号Ｚを求める論理演算式を具現化した論理ゲートＧ９〜Ｇ３７により、べき数Ｅｘｐ２、Ｅｘｐ１、Ｅｘｐ０及び零検出信号Ｚを並列演算させて出力する。
【００４８】
第１の実施形態のべき数エンコーダ回路によれば、以下の効果を奏することができる。
【００４９】
（１）通過する論理ゲートの段数（通過論理段数）を削減できるため、処理の高速化が期待できる。例えば、図４に示す従来回路におけるクリティカルパスの通過論理段数は最大９段であるが、第１の実施形態における通過論理段数は最大５段となり、４段の削減が実現できる。
【００５０】
（２）各論理ゲートの入力への遅延を等しくすることが容易であるため、無駄なスイッチングが減少し、消費電力を抑えることができる。
【００５１】
（３）入力ビット長を容易に拡張できる。仮に２倍の１６ビット長に拡張する場合、第１の実施形態の回路を２段に並べ、一方の回路を上位ブロックとし、他方の回路を下位ブロックとする。そして、上位ブロックの零検出信号により、上位ブロック又は下位ブロックの出力Ｅｘｐを選択することにより最終結果を得ることができる（但し、上位ブロックの零検出信号は出力するべき数のＭＳＢとなり、選択されたＥｘｐの３ビットはその下位に位置する）。ここで、上位ブロックの零検出信号が有意であることは、１６ビット入力の上位側（８ビット）には有効桁ビットがなく、下位側に有効桁ビットがあることを意味し、上位ブロックの零検出信号が非有意であることは、１６ビット入力の上位側に有効桁ビットがあることを意味する。すなわち、最も上位の有効桁ビットが、入力データを上位、下位に２分した場合のどちらにあるかを、上位ブロックの零検出信号が表しており、その上位又は下位の８ビットでのシフト量の選択指令として用いることができる。
【００５２】
なお、この場合、選択回路に代え、図６に示すようなＡＮＤＯＲ回路による組み合わせ回路を適用できる。
【００５３】
（Ｂ）第２の実施形態
次に、本発明によるべき数エンコーダ回路の第２の実施形態を図面を参照しながら詳述する。なお、第２の実施形態のべき数エンコーダ回路におけるマスク回路として、本発明のマスク回路を適用することができる。後述する図９に示すマスク回路は、本発明のマスク回路の実施形態になっている。
【００５４】
図７は、第２の実施形態のべき数エンコーダ回路の構成を示すブロック図である。なお、第２の実施形態のべき数エンコーダ回路は、８ビット符号付入力データ（図２参照）を取扱うものであり、入力データＩｎ［７：０］からべき数エンコード結果（べき数）Ｅｘｐ［２：０］を得るものである。
【００５５】
図７において、第２の実施形態のべき数エンコーダ回路は、符号合せ回路１０、マスク回路１１及びエンコーダ回路１２が縦続接続されて構成されている。
【００５６】
符号合せ回路１０は、入力データＩｎ［７：０］が正数の場合にはそのまま通過させ、入力データＩｎ［７：０］が負数の場合にはべき数Ｅｘｐ［２：０］が同じとなる正数に変換するものであり、処理後のデータＸ［７：０］をマスク回路１１に与えるものである。
【００５７】
なお、第２の実施形態の場合、入力データＩｎ［７：０］がオール“１”の場合には、図２とは異なって、べき数として０（“０００”）を出力するようになされている。
【００５８】
符号合せ回路１０は、例えば、図８に示すように、８個の２入力イクスクルーシブオア回路ＥＯＲ７〜ＥＯＲ０で実現できる。入力データＩｎにおける符号ビットＩｎ７は、全てのイクスクルーシブオア回路ＥＯＲ７〜ＥＯＲ０に入力され、また、入力データＩｎにおける各ビットＩｎ７、…、Ｉｎ０は対応するイクスクルーシブオア回路ＥＯＲ７、…、ＥＯＲ０に入力される。
【００５９】
イクスクルーシブオア回路ＥＯＲ７は、符号ビットＩｎ７が“０”でも“１”でも正を表す“０”のデータＸ７を出力する。
【００６０】
イクスクルーシブオア回路ＥＯＲ６、…、ＥＯＲ０は、符号ビットＩｎ７が“１”のときに、入力データＩｎ６、…、Ｉｎ０を反転させたデータＸ６、…、Ｘ０を出力し、符号ビットＩｎ７が“０”のときに、入力データＩｎ６、…、Ｉｎ０と同じデータＸ６、…、Ｘ０を出力する。
【００６１】
マスク回路１１は、入力されたデータＸ７、…、Ｘ０の中で、“１”をとる最も上位に位置するビット位置を含め、それより下位のビット位置の論理レベルを全て一方の論理レベル（例えば“０”）にすると共に、それより上位のビット位置の論理レベルを全て他方の論理レベル（例えば“１”）にしたデータＹ７、…、Ｙ０を形成するものである。
【００６２】
図９は、マスク回路１１の具体的な構成例を示す回路図である。図９に示すマスク回路１１は、入力データＸ［７：０］に対し、ワイヤードオアにより出力データＹ［７：０］を生成するものである。
【００６３】
べき数エンコード実行時に出力線プリチャージ信号ＰＣによりオン動作して、出力線Ｙ７〜Ｙ０をプリチャージするＰＭＯＳトランジスタｐ７〜ｐ０が設けられている。また、各出力線Ｙ７〜Ｙ０には、ディスチャージ用のＮＭＯＳトランジスタｎ１〜ｎ３６が設けられている。
【００６４】
最上位の出力線Ｙ７には、入力データＸ７が“１”のときにオン動作して、その出力線Ｙ７をディスチャージするＮＭＯＳトランジスタｎ１が接続されている。
【００６５】
次のビット位置の出力線Ｙ６には、入力データＸ７又はＸ６が“１”のときにオン動作してその出力線Ｙ６をディスチャージする２個のＮＭＯＳトランジスタｎ２及びｎ３が接続されている。
【００６６】
次のビット位置の出力線Ｙ５には、入力データＸ７、Ｘ６又はＸ５が“１”のときにオン動作してその出力線Ｙ５をディスチャージする３個のＮＭＯＳトランジスタｎ４〜ｎ６が接続されている。
【００６７】
以下、同様に、出力線Ｙ４、…、Ｙ０に対するディスチャージ用ＮＭＯＳトランジスタｎ７〜ｎ１０、ｎ１１〜ｎ１５、ｎ１６〜ｎ２１、ｎ２２〜ｎ２８、ｎ２９〜ｎ３６を利用したワイヤードオア構成が設けられている。
【００６８】
以上のような構成において、べき数エンコード実行時にはまず、出力線プリチャージ信号ＰＣによりＰＭＯＳトランジスタｐ７〜ｐ０をオンして、出力線Ｙ７〜Ｙ０をプリチャージし、その後、出力線ディスチャージ用ＮＭＯＳトランジスタｎ１〜ｎ３６に入力Ｘを与える。このとき、出力線Ｙは、入力データＸをＭＳＢからみて最初に“１”が出てきたビット位置より下位ビットを“０”にディスチャージする。すなわち、出力線Ｙ［７：０］は、入力データＸをＭＳＢから順に見た場合、最初に出てくる“１”以降の値を全て“０”にマスクする信号線である。
【００６９】
例えば、入力データＸが“００１１００００”であると、ＭＳＢから見て最初に“１”が出現するビット位置はＸ５であるので、出力データＹは、そのビット位置Ｙ５を含めたそれより下位ビットを“０”とし、出力データＹは“１１００００００”となる。
【００７０】
なお、図９では、入力データＸ７をもマスク対象としたものを示したが、入力データＸ７は符号ビットであるので、入力データＸ６〜Ｘ０の範囲をマスク対象とするようにしても良い。
【００７１】
また、図９とは逆に、出力線を予め“０”にディスチャージし、その後、入力データＸ６〜Ｘ０に応じてチャージするようなものであっても良い。すなわち、図９のＰＭＯＳトランジスタをＮＭＯＳトランジスタに変更し、図９のＮＭＯＳトランジスタをＰＭＯＳトランジスタに変更してマスク回路１１を構成するようにしても良い。
【００７２】
なお、マスク回路１１としては、既存のバレルシフタ回路などを用いることもできる。バレルシフタ回路を適用した場合には、より回路規模の削減が可能となる。
【００７３】
エンコーダ回路１２は、マスク回路１１の出力（マスク結果）Ｙ［７：０］から、べき数ＥｘＰ［２：０］を生成するものである。
【００７４】
図１０は、エンコーダ回路１２の構成例を示すブロック図である。なお、図１０は、入力データＹ７は、べき数ＥｘＰ［２：０］の生成には無関係であるので、入力データＹ６〜Ｙ０からべき数ＥｘＰ［２：０］を生成するものとなっている。
【００７５】
図１０において、エンコーダ回路１２は、６個の２入力イクスクルーシブオア回路ＥＯＲ１１〜ＥＯＲ１６と、３個の３入力オア回路ＯＲ１〜ＯＲ３とから構成されている。
【００７６】
入力データＹ６〜Ｙ０は、マスク回路１１の機能により、境界は一定ではないが、上位側に“１”があり、下位側に“０”があるものである（オール“１”やオール“０”のことはある）。イクスクルーシブオア回路ＥＯＲ１１〜ＥＯＲ１６は、その境界検出用のものである。各イクスクルーシブオア回路ＥＯＲ１１、…、ＥＯＲ１６には、入力データＹ６〜Ｙ０における隣り合う２ビットずつの一致不一致を示す出力を形成するものであり、境界を挟んだ２ビットが入力されるいずれか１個（境界がない場合は０個）のイクスクルーシブオア回路だけが“１”を出力する。
【００７７】
オア回路ＯＲ１〜ＯＲ３は、イクスクルーシブオア回路ＥＯＲ１１〜ＥＯＲ１６による境界検出結果をデコードし、出力（べき数）Ｅｘｐ［２：０］を生成するものである。
【００７８】
例えば、データＹが“１１００００００”とした場合、“１”と“０”の境界は６ビット目と５ビット目に存在し（最下位ビットを０ビットとしている）、イクスクルーシブオア回路ＥＯＲ１１〜ＥＯＲ１６の出力は“１０００００”となり、これをエンコードすることによって、べき数Ｅｘｐとして１（“００１”）が得られる。
【００７９】
第２の実施形態のべき数エンコーダ回路によれば、以下の効果を奏することができる。
【００８０】
（１）マスク回路１１の出力Ｙ［７：０］を一度に求めることができるため、処理の高速化を図ることができる。
【００８１】
（２）入力ビット長を拡張した場合でも、最終結果を得るまでの時間はほぼ変わらない。従って、ビット長を容易に拡張できる。
【００８２】
（Ｃ）（利用形態）の説明
上記各実施形態は、符号付の入力データのべき数を得るものを示したが、符号ビットがない入力データに対しても、本発明の技術思想を適用することができる。例えば、第１の実施形態であれば、負数の入力データの各ビットを反転する論理ゲートＧ１〜Ｇ８を省略したような構成とすれば良い。また例えば、第２の実施形態であれば、符号合せ回路１０を省略し、マスク回路１１及びエンコード回路１２によってべき数エンコーダ回路を構成すれば良い。
【００８３】
また、上記各実施形態では、負数の入力データを、正数の入力データと同様に取り扱うために、符号ビット以外の部分を反転するものを示したが、逆に、正数の入力データを、負数の入力データと同様に取り扱うように、符号ビット以外の部分を反転し、その後、べき数を求めるようにしても良い。
【００８４】
さらに、第２の実施形態で説明したマスク回路１１は、べき数エンコーダ回路以外の回路に適用することができる。
【００８５】
【発明の効果】
以上のように、本発明のべき数エンコーダ回路によれば、処理の高速化が期待できたり、入力ビット長を容易に拡張できたりするなどの効果を奏することができる。
【００８６】
また、本発明によるマスク回路によれば、マスク出力の各ビットを一度に求めることができる。
【図面の簡単な説明】
【図１】第１の実施形態のべき数エンコーダ回路を示すブロック図である。
【図２】８ビット符号付きデータとべき数エンコード結果との関係を示す図表である。
【図３】従来回路（その１）を示すブロック図である。
【図４】従来回路（その２）を示すブロック図である。
【図５】第１の実施形態の入力データの符号合わせ後のデータと、べき数エンコード結果（べき数）との関係を示す図表である。
【図６】第１の実施形態の回路でビット長を拡張した際に必要となる回路部分を示すブロック図である。
【図７】第２の実施形態のべき数エンコーダ回路を示すブロック図である。
【図８】第２の実施形態の符号合せ回路の詳細構成例を示すブロック図である。
【図９】第２の実施形態のマスク回路の詳細構成例を示す回路図である。
【図１０】第２の実施形態のエンコーダ回路の詳細構成例を示すブロック図である。
【符号の説明】
Ｇ１〜Ｇ３７…論理ゲート、１０…符号合せ回路、１１…マスク回路、１２…エンコーダ回路。
【図１】
0003640643.tif 000003
【図２】
0003640643.tif 000004
【図３】
0003640643.tif 000005
【図４】
0003640643.tif 000006
【図５】
0003640643.tif 000007
【図６】
0003640643.tif 000008
【図７】
0003640643.tif 000009
【図８】
0003640643.tif 000010
【図９】
0003640643.tif 000011
【図１０】
0003640643.tif 000012