(57)【要約】【課題】消費電力の変動を抑えつつ、論理演算の機能の変更をすることができる論理回路を提供する。【解決手段】論理回路１は、第１の入力データに対して、第１の入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダ４と、配線ネットワーク２と、配線ネットワーク２において生成された第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダ３と有する。配線ネットワーク２は、デコーダ４に接続され、デコーダ４により変換された第１の複数のビットデータを受信し、第１及び第２の論理演算のいずれを実行するかを指定する制御入力と第２の入力データとに応じて、受信した第１の複数のビットデータのビット位置を入れ替えることによって、第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する。【選択図】図３
2008187384.tif 000002
【特許請求の範囲】
【請求項１】
論理演算の機能が互いに異なる第１及び第２の論理演算を実行可能な論理回路であって、
１又は２以上の２進数の第１の入力データに対して、該第１の入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダと、
該デコーダに接続され、前記デコーダにより変換された前記第１の複数のビットデータを受信し、前記第１及び第２の論理演算のいずれを実行するかを指定する制御入力と第２の入力データとに応じて、受信した前記第１の複数のビットデータのビット位置を入れ替えることによって、前記第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する配線ネットワークと、
該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダと、
を有することを特徴とする論理回路。
【請求項２】
前記第１の複数のビットデータは、前記ハミング重みが１又は２以上のビットデータであることを特徴とする請求項１に記載の論理回路。
【請求項３】
前記配線ネットワークは、複数のスイッチ素子を有し、
前記複数のスイッチ素子は、複数のグループに分割して設けられ、
前記配線ネットワークは、前記第１の複数のビットデータを受信する第１のグループと、該第１のグループの複数のスイッチ素子の出力を受信する第２のグループとを含むことを特徴とする請求項２に記載の論理回路。
【請求項４】
前記複数のスイッチ素子のそれぞれは、２つの入力端と、２つの出力端と、前記制御入力及び前記第２の入力データを入力する２つの制御入力端とを有し、
各スイッチ素子は、前記制御入力及び前記第２の入力データに応じて、前記２つの入力端に入力された前記第１の複数のビットデータ中の２つのビットデータを変更して、前記２つの出力端から出力可能であることを特徴とする請求項３に記載の論理回路。
【請求項５】
少なくとも３つの入力データに対して、複数の論理演算の組合せを実行可能な論理回路であって、
１又は２以上の２進数の第１の入力データに対して、該第１の入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダと、
該デコーダに接続され、前記デコーダにより変換された前記第１の複数のビットデータを受信し、論理演算の機能が互いに異なる２つの論理演算のいずれを実行するかを指定する第１の制御入力と第２の入力データとに応じて、受信した前記第１の複数のビットデータのビット位置を入れ替えることによって、前記第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する第１の配線ネットワークと、
該第１の配線ネットワークに接続され、前記第１の配線ネットワークにより生成された前記第２の複数のビットデータを受信し、論理演算の機能が互いに異なる２つの論理演算のいずれを実行するかを指定する第２の制御入力と第３の入力データとに応じて、受信した前記第２の複数のビットデータのビット位置を入れ替えることによって、前記第２の複数のビットデータのビットパターンを変更して、第３の複数のビットデータを生成する第２の配線ネットワークと、
該第２の配線ネットワークに接続され、前記第２の配線ネットワークにおいて生成された前記第３の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダと、
を有することを特徴とする論理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路に関し、特に、消費電力の変動を抑えつつ、論理演算の機能の変更をすることができる論理回路に関する。
【背景技術】
【０００２】
近年のLSI技術の進歩より、半導体装置は、情報機器だけでなく、産業機器から家電製品まで多くのかつ種々の製品に広く応用されている。
【０００３】
また、半導体装置は、その高性能化が進み、その消費電力も大きくなってきている。消費電力の増加は、半導体装置の熱の発生の問題だけでなく、その半導体装置が搭載される応用製品がバッテリー駆動の場合に、その応用製品の長時間に亘る使用ができなくなるという、連続駆動時間の減少の問題にも繋がる。
【０００４】
半導体装置には、種々の機能を実行するための多くの論理回路が含まれている。論理回路は、一般的なAND回路、排他的論理和回路、加算器等がある。  
しかし、近年は、データ処理の基本単位が３２ビット、６４ビットとビット数が多くなってきているため、同時に処理されるデータの変化に応じて消費電力が大きく変化する場合がある。一方、半導体回路における低消費電力化の技術に関する提案もなされている（例えば、特許文献１参照）。
【０００５】
そのため、半導体回路の設計において、そのようなデータの変化に応じた消費電力の変化における最大値と最小値とを考慮して電源回路の設計を行わなければならないという問題があった。
【０００６】
また、それぞれが互いに異なる論理演算の機能に対応する複数の論理演算に対しては、それぞれの論理演算の機能ための論理回路を複数設けなければならなかった。
【特許文献１】特開２０００−２１６２６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明は、以上のような課題に鑑みてなされたものであり、消費電力の変動を抑えつつ、論理演算の機能の変更をすることができる論理回路を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、論理演算の機能が互いに異なる第１及び第２の論理演算を実行可能な論理回路であって、１又は２以上の２進数の第１の入力データに対して、該第１の入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダと、該デコーダに接続され、前記デコーダにより変換された前記第１の複数のビットデータを受信し、前記第１及び第２の論理演算のいずれを実行するかを指定する制御入力と第２の入力データとに応じて、受信した前記第１の複数のビットデータのビット位置を入れ替えることによって、前記第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する配線ネットワークと、該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダと、を有する論理回路を提供することができる。
【発明の効果】
【０００９】
本発明によれば、消費電力の変動を抑えつつ、論理演算の機能の変更をすることができる論理回路を実現することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の実施の形態を説明する。  
まず図１に基づき、本実施の形態に係わる論理回路の全体の機能を説明する。図１は、本実施の形態に係わる論理回路の機能を説明するための図である。
【００１１】
本実施の形態の論理回路１は、複数の入力、ここでは２つの入力A,Bに対して、所定の論理演算を行い、その論理演算の結果の出力Zを出力する回路である。論理回路１は、後述するように、消費電力の変動を抑えつつ、論理演算の機能を変更することができる。機能の変更をするために、論理回路１には、モード入力（mode）を有する。モード入力に入力される信号に基づいて、論理回路１において実行される論理演算の機能が選択されて変更される。すなわち、論理回路１は、論理演算の機能が互いに異なる第１及び第２の論理演算を実行可能な論理回路である。以下の実施の形態では、例として、互いに異なる第１及び第２の論理演算の２つの機能である、論理積（AND）機能と排他的論理和（XOR）機能のいずれかの機能が選択される場合について説明する。
【００１２】
図２は、論理回路１の基本構成を示すブロック図である。図２は、配線ネットワーク部（以下、配線ネットワークという）２と、エンコード部（以下、エンコーダという）３と、デコード部（以下、デコーダという）４を含んで構成される論理回路１を示す。デコーダ４は、nビットの２進数データである入力データBをmビット(m>n)のビット列に変換するデコーダである。
【００１３】
配線ネットワーク２は、デコーダ４においてデコードされたデータと、もう一つの入力Aとを入力して、その２つの入力に対して所定の論理演算を行う配線ネットワーク回路である。配線ネットワーク２には、２つの論理演算のうちのいずれの論理演算を行いかを指定あるいは選択するための、モード入力（mode）が入力される。入力Aも、ここでは、nビットの２進数データである。エンコーダ３は、配線ネットワーク２から出力されたsビットのデータをtビットのデータ(s>t)に変換するエンコーダである。
【００１４】
ここで、入力データBはnビットであるが、デコードされるとnより大きいmビットとなり、冗長性が増加している。さらに、デコード後のデータは、入力されたnビットの２進数データのハミング重みとは無関係なハミング重みのデータであり、その後処理されている。例えば、mを２のn乗として、mビットのデータのただ１つの信号のみがHIGH（以下、Hともいう）となるようなデータに、入力データは変換される。そのように変換すると、デコード後、常にHとなる信号の配線は1本のみなので、デコードされたデータのハミング重みが常に一定となる。すなわち、デコーダ４は、１又は２以上の２進数の第１の入力データに対して、該第１の入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダである。従って、論理回路１の消費電力は入力されたデータに依存しないので、消費電力の変動を抑える論理回路を実現することができる。  
配線ネットワーク２は、デコーダ４に接続され、デコーダ４により変換して得られたデコードデータである第１の複数のビットデータを複数の入力端を介して受信する。配線ネットワーク２は、モード入力と入力データAに基づいて、受信したデコードデータの各ビットデータのそれぞれに対応する複数の配線の接続あるいは信号の経路を変更することによって、所定の演算処理のために前記第１の複数のビットデータのビット位置を入れ替えて、第２の複数のビットデータを生成する。その第２の複数のビットデータは、配線ネットワーク２の複数の出力端からエンコーダ３に出力される。言い換えると、配線ネットワーク２は、デコーダ４から出力されたハミング重みが一定のデコードデータのビットパターン（複数のビットデータの並びの順序）を、変更して出力データとして出力する。
【００１５】
以下に、本実施の形態の具体例を図面を用いて説明する。  
図３は、本実施の形態に係わる論理回路の回路構成を示す回路図である。図３の論理回路１は、論理積（AND）機能と、排他的論理和（XOR）機能の両方の機能を有する論理回路の例である。
【００１６】
論理回路１は、３ビットの入力データAを入力するための３つの入力端子（A2〜0）を有する入力部101Aと、３ビットの入力データBを入力するための３つの入力端子（B2〜0）を有する入力部101Bと、機能切替を指定するためのモード入力が入力されるモード入力部102と、３ビットのデータを８ビットのデータに変換するデコーダ400と、８ビットのデータ（あるいは配線）を入れ替える変換を行う配線ネットワーク200と、８ビットのデータを３ビットのデータに変換するエンコーダ300と、エンコーダ300の３ビットのデータを出力するための３つの出力端子（Z2〜0）を有する出力部103とを含んで構成される。
【００１７】
論理回路１には、それぞれが３ビットの２進数データである、２つの入力データA,Bと、機能を指定するモード入力M（mode）とが入力され、論理回路１は、モード入力Mにより指定された機能の論理演算を行い、３ビットの２進数データである出力データZを出力する。配線ネットワーク200、エンコーダ300及びデコーダ400が、それぞれ図２の配線ネットワーク２、エンコーダ３及びデコーダ４に対応する。
【００１８】
デコーダ400は、ここでは、８個のAND（論理積）回路を含み、８個のAND回路の入力端には、３ビットで表される８個（０から７）のそれぞれの値に対して、１つのAND回路からのみ出力が出るように、インバータ回路が設けられている。デコーダ400は、３ビットの入力から８ビットのデコードデータである出力を生成する。デコーダ400の各AND回路の出力は、対応する配線ネットワーク200の各入力端に接続されている。配線ネットワーク200の各出力は、エンコーダ300の各入力端に接続されている。
【００１９】
図３では、例えば、３ビットの入力データが(0,0,0)のときは、デコーダ400の出力端子D0のみに出力が出るように、３つのインバータ回路がそれぞれ３つの入力端に設けられた、一番目のAND回路が設けられている。また、３ビットのデータが(0,0,1)のときは、デコーダ400の出力端子D1のみに出力が出るように、２つのインバータ回路がそれぞれ２つの入力端に設けられた、２番目のAND回路が設けられている。同様に、３ビットのデータが(1,1,1)のときは、デコーダ400の出力端子D7のみに出力が出るように、インバータ回路を入力端に有しないAND回路が設けられている。すなわち、デコーダ400の出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。
【００２０】
エンコーダ300は、ここでは、３つの論理和（OR）回路を含み、８ビットで表される８個の値に対応して３ビットデータが出力されるように、３つのOR回路の複数の入力端と配線ネットワーク200の複数の出力端との接続は、互いに異なっている。エンコーダ300は、８ビットの入力から３ビットの出力を生成する。
【００２１】
具体的には、図３に示すように、第１のOR回路は、８ビットのデータのうち、配線ネットワーク200の出力N7からN4のデータを入力して、出力端子Z2に出力を出す。第２のOR回路は、８ビットのデータのうち、配線ネットワーク200の出力N7,N6,N3,N2のデータを入力して、出力端子Z1に出力を出す。第３のOR回路は、８ビットのデータのうち、配線ネットワーク200の出力N7,N5,N3,N1のデータを入力して、出力端子Z0に出力を出す。
【００２２】
論理積（AND）機能と排他的論理和（XOR）機能の両方の機能を有する配線ネットワーク200は、モード入力Mに応じて、２つの入力データA,Bの論理積（AND）あるいは排他的論理和（XOR）のデータを出力するための演算を行うように構成されている。すなわち、モード入力Ｍによって、論理積（AND）機能と排他的論理和（XOR）機能のいずれの機能を実行するかが指定され得る。
【００２３】
配線ネットワーク200は、８つの入力端子（D0〜D7）を有する入力部と、８ビットのデータを出力するための８つの出力端子（Ｎ0〜Ｎ7）を有する出力部と、８ビットのデータに対して所定の変換処理を行い、８ビットのデータを出力する変換部と、を含んで構成される。  
配線ネットワーク200は、複数のグループ、すなわち複数の（ここでは３つの）段のステージST1,ST2,ST3を含んで構成され、各ステージは、複数の制御機能付きのスイッチ素子（以下、単にスイッチ素子ともいう）６４０を含む。スイッチ素子６４０−１−１, ６４０−１−２, ６４０−１−３, ６４０−１−４が、第１段目のステージST1を構成し、スイッチ素子６４０−２−１, ６４０−２−２, ６４０−２−３, ６４０−２−４が、第２段目のステージST2を構成し、スイッチ素子６４０−３−１, ６４０−３−２, ６４０−３−３, ６４０−３−４が、第３段目のステージST3を構成する。言い換えると、配線ネットワーク200は、複数のスイッチ素子を有し、その複数のスイッチ素子は、複数のグループに分割して設けられている。第１段目のステージST1の複数のスイッチ素子６４０は、デコーダ400からの複数のビットデータを受信する。第２段目以降のステージの複数のスイッチ素子６４０は、その前の段のステージの複数のスイッチ素子６４０の出力を受信する。
【００２４】
各スイッチ素子は、２つの入力データ（入力IN1と入力IN2）と、２つの制御入力と、２つの出力データ（出力OUT1と出力OUT2）を有する。各スイッチ素子は、制御信号である２つの制御入力に応じて、入力IN1と入力IN2をそれぞれ出力OUT1と出力OUT2のいずれかに転送して出力する。
【００２５】
第１段目のステージの各スイッチ素子６４０−１−１, ６４０−１−２, ６４０−１−３, ６４０−１−４の一方の制御入力C1には、入力部101Aから入力データAの１つのビットデータ（A0）が入力される。第２段目のステージの各スイッチ素子６４０−２−１, ６４０−２−２, ６４０−２−３, ６４０−２−４の一方の制御入力C1には、入力部101Aから入力データAの１つのビットデータ（A1）が入力される。第３段目のステージの各スイッチ素子６４０−３−１, ６４０−３−２, ６４０−３−３, ６４０−３−４の一方の制御入力C1には、入力部101Aから入力データAの１つのビットデータ（A2）が入力される。  
また、各ステージの各スイッチ素子の他方の制御入力C2には、モード入力Mのビットデータが入力される。本実施の形態では、論理回路１が排他的論理和（XOR）として機能するとき、モード入力Mは１であり、論理回路１が論理積（AND）として機能するとき、モード入力Mは０である。
【００２６】
全体の動作については、後述するが、論理回路１が排他的論理和（XOR）の回路として機能するとき、各スイッチ素子は、入力部101Aからの入力データAの１つのビットデータに応じて、２つの入力データを出力データとして、２つの出力端に、そのまま出力する（すなわち図３において、各スイッチ素子の上側と下側の入力端に入力された２つのデータは、それぞれ上側と下側の出力端に出力する）か、あるいは入れ替えて出力する（すなわち図３において、各スイッチ素子の上側と下側の入力端に入力された２つのデータは、それぞれ下側と上側の出力端に出力する）。
【００２７】
また、論理回路１が論理積（AND）の回路として機能するときは、各スイッチ素子は、制御信号である入力部101Aからの入力データの１つのビットデータが1の場合、入力されたデータを入れ替えずに、上側の入力端に入力されたデータは上側の出力端に、そして下側の入力端に入力されたデータは下側の出力端に、というように、そのまま出力する。また、制御入力である入力部101Aからの入力データの１つのビットデータが0の場合、各スイッチ素子は、入力されたデータに依存してデータが入れ替えられる。すなわち、２つの入力データの中に１がある場合、必ず上側の出力端に出力され、下側の出力端は0となるように入れ替えられる。
【００２８】
従って、言い換えると、各スイッチ素子６４０は、制御入力端に入力される２つの制御入力C1,C2に応じて２つの入力端に入力される２つの信号IN1,IN2が２つの出力端OUT1,OUT2に現れる状態を変更する回路である。
【００２９】
配線ネットワーク200の入力部の８つの入力端子（D0〜D7）の信号が、第１ステージST1の４つのスイッチ素子６４０の８つの入力端に入力される。第１ステージST1の４つのスイッチ素子６４０の８つの出力は、配線部を介して、第２ステージST2の４つのスイッチ素子６４０の８つの入力端に入力される。さらに、第２ステージST2の４つのスイッチ素子６４０の８つの出力は、配線部を介して、第３ステージST3の４つのスイッチ素子６４０の８つの入力端に入力される。配線ネットワーク200において、第１から第８の入力端は、それぞれ第１から第８の出力端に接続されるが、次に述べるように一部配線の入れ替えが行われる。
【００３０】
第１と第２のステージST1,ST2間の配線部の配線は、第１の配線の入れ替え部を有する。具体的には、図３に示すように、第１ステージST1の第１のスイッチ素子６４０−１−１の下側の出力端が、第２ステージST2の第２のスイッチ素子６４０−２−２の上側の入力端と接続され、第１ステージST1の第２のスイッチ素子６４０−１−２の上側の出力端が、第２ステージST2の第１のスイッチ素子６４０−２−１の下側の入力端と接続され、第１ステージST1の第３のスイッチ素子６４０−１−３の下側の出力端が、第２ステージST2の第４のスイッチ素子６４０−２−４の上側の入力端と接続され、第１ステージST1の第４のスイッチ素子６４０−１−４の上側の出力端が、第２ステージST2の第３のスイッチ素子６４０−２−３の下側の入力端と接続されるように、配線は入れ替えられる。
【００３１】
第２と第３のステージST2,ST3間の配線部の配線も、第２の配線の入れ替え部を有する。具体的には、図３に示すように、第２ステージST2の第１のスイッチ素子６４０−２−１の下側の出力端が、第３ステージST3の第２のスイッチ素子６４０−３−２の上側の入力端と接続され、第２ステージST2の第２のスイッチ素子６４０−２−２の上側の出力端が、第３ステージST3の第３のスイッチ素子６４０−３−３の上側の入力端と接続され、第２ステージST2の第２のスイッチ素子６４０−２−２の下側の出力端が、第３ステージST3の第４のスイッチ素子６４０−３−４の上側の入力端と接続され、第２ステージST2の第３のスイッチ素子６４０−２−３の上側の出力端が、第３ステージST3の第１のスイッチ素子６４０−３−１の下側の入力端と接続され、第２ステージST2の第３のスイッチ素子６４０−２−３の下側の入力端が、第３ステージST3の第２のスイッチ素子６４０−３−２の下側の入力端と接続され、第２ステージST2の第４のスイッチ素子６４０−２−４の上側の入力端が、第３ステージST3の第３のスイッチ素子６４０−３−３の下側の入力端と接続されるように、配線は入れ替えられる。
【００３２】
さらに、第３ステージST3の４つのスイッチ素子６４０の８つの出力は、第１から第８の出力端に接続される。このとき、図３に示すように、第３ステージST3の４つのスイッチ素子６４０の第１から第８の出力端は、それぞれ、第１、第５、第３、第７、第２、第６，第４、及び第８の出力端子に接続されるように、第３ステージST3と複数の出力端子間の配線は、第３の配線の入れ替え部を有する。
【００３３】
以上のように、配線ネットワーク200は、デコーダ400からの複数のビットデータを受信し、受信した複数のビットデータのビット位置を入れ替えることによって、指定された論理演算された複数のビットデータを生成するマスク処理用の配線ネットワークである。
【００３４】
図４は、スイッチ素子６４０の内部の回路構成を示す回路図である。  
スイッチ素子６４０は、上述したように、２つの入力IN1,IN2及び２つの制御入力C1,C2とを入力するための複数（４つ）の入力端と、２つの出力OUT1,OUT2を出力するための複数（２つ）の出力端を有する。各スイッチ素子６４０は、制御信号である２つの制御入力C1,C2に応じて、入力IN1と入力IN2をそれぞれ出力OUT1と出力OUT2のいずれかに転送して出力する。制御入力C1は、入力データAの１つのビットデータ入力であり、制御入力C2は、モード入力（M）である。
【００３５】
後述するように、スイッチ素子６４０は、複数の入力信号を出力するときに、入力端に入力されたビットを、入力パターンと同じパターンで出力パターンとして出力端から出力したり、あるいは入力端に入力された２つのビットの入力パターンとは異なるパターンで、入力された２つのビットを変更して、出力パターンとして出力端から出力するように変更可能な回路である。
【００３６】
スイッチ素子６４０は、セレクタ６４１，６４２と、論理和（OR）回路６４３と、論理積（AND）回路６４４，６４５と、排他的論理和（XOR）回路６４６とを含む。  
２つのセレクタ６４１，６４２は、それぞれ、２つの入力端と、１つの出力端と、１つの制御入力端を有する。セレクタ６４１の出力端は、出力OUT１に接続され、セレクタ６４２の出力端は、出力OUT2に接続される。セレクタ６４１の制御入力は、XOR回路６４６の出力端に接続される。セレクタ６４１の一方の入力端は、入力IN1に接続され、他方の入力端は、OR回路６４３の出力端に接続されている。
【００３７】
OR回路６４３の一方の入力端は、AND回路６４４の出力端に接続され、他方の入力端は、入力IN2に接続されている。  
AND回路６４４の一方の入力端は、入力IN1に接続され、他方の入力端は、インバータを介して、モード入力（M）に対応する制御入力C2に接続される。AND回路６４５の一方の入力端は、入力IN1に接続され、他方の入力端は、モード入力（M）に対応する制御入力C2に接続される。
【００３８】
XOR回路６４６の一方の入力端は、モード入力（M）に対応する制御入力C2に接続され、他方の入力端は、入力データAの１つのビットデータ入力に対応する制御入力C1に接続される。  
図４のスイッチ素子６４０が、図３のように複数接続されて、配線ネットワーク200が構成される。
【００３９】
図４の回路の動作を、説明する。  
制御入力C2は、モード入力Mに接続され、論理回路１を論理積（AND）回路として動作させるときには、モード入力Mは０であり、論理回路１を排他的論理和（XOR）回路として動作させるときには、モード入力Mは１である。
【００４０】
まず、論理回路１を排他的論理和（XOR）回路として動作させるときのスイッチ素子６４０の動作について、説明する。  
排他的論理和（XOR）回路の場合、モード入力Mは１、すなわち制御入力C2は１であり、AND回路６４４の一つの入力は、インバータを介しているので、０となる。同様に、AND回路６４５の一つの入力は、１となり、XOR回路６４６の一つの入力も１となる。
【００４１】
この場合、制御入力C1が０のとき、XOR回路６４６の出力は１となり、制御入力C1が１のとき、XOR回路６４６の出力は０となる。  
XOR回路６４６の出力が１のとき、セレクタ６４１は、入力IN1に接続された入力端（１）の方を選択して、出力端に出力する。同様に、その場合、セレクタ６４２も、入力IN2に接続された入力端（１）の方を選択して、出力端に出力する。
【００４２】
従って、モード入力Mが１のとき、制御入力C1が０ならば、上側の入力端の入力IN1の信号が上側の出力端の出力OUT1に出力され、下側の入力端の入力IN2の信号が下側の出力端の出力OUT2に出力される。
【００４３】
また、XOR回路６４６の出力が０のとき、セレクタ６４１は、OR回路６４３の出力端に接続された入力端（０）の方を選択して、出力端に出力する。同様に、その場合、セレクタ６４２も、AND回路６４５の出力端に接続された入力端（０）の方を選択して、出力端に出力する。
【００４４】
OR回路６４３の一方の入力端は、AND回路６４４の出力端に接続され、他方の入力端は、入力IN2に接続されている。AND回路６４４の一方の入力端には、インバータを介して０が入力されているので、AND回路６４４の出力は、常に０となる。よって、OR回路６４３の出力は、セレクタ６４１を介して、出力OUT1に入力IN2の入力データを出力する。
【００４５】
また、セレクタ６４２は、AND回路６４５の出力端に接続された入力端（０）の方を選択して、出力端に出力する。AND回路６４５の一方の入力端は、モード入力Mに接続されているので、１が入力され、他方の入力端は、入力IN1に接続されているので、AND回路６４５の出力は、セレクタ６４２を介して、出力OUT2に入力IN1の入力データを出力する。
【００４６】
従って、モード入力Mが１のとき、制御入力C1が１ならば、上側の入力端の入力IN1の信号が下側の出力端の出力OUT2に出力され、下側の入力端の入力IN2の信号が上側の出力端の出力OUT1に出力される。
【００４７】
すなわち、論理回路１を排他的論理和（XOR）回路として動作させるとき、制御入力C2は１であり、スイッチ素子６４０において、制御入力C1に応じて、入力IN1,IN2が、それぞれ出力OUT1,OUT2に出力され、あるいは出力OUT2,OUT1に出力される。  
次に、論理回路１を論理積（AND）回路として動作させるときのスイッチ素子６４０の動作について、説明する。  
論理積（AND）回路の場合、モード入力Mは０、すなわち制御入力C2は０であり、AND回路６４４の一つの入力は、インバータを介しているので、１となる。同様に、AND回路６４５の一つの入力は、０となり、XOR回路６４６の一つの入力も０となる。
【００４８】
この場合、制御入力C1が１のとき、XOR回路６４６の出力は１となり、制御入力C1が０のとき、XOR回路６４６の出力は０となる。  
上述したように、XOR回路６４６の出力が１のとき、セレクタ６４１は、入力IN1に接続された入力端（１）の方を選択して、出力端に出力する。同様に、その場合、セレクタ６４２も、入力IN2に接続された入力端（１）の方を選択して、出力端に出力する。
【００４９】
従って、モード入力Mが０のとき、制御入力C1が１ならば、上側の入力端の入力IN1の信号が上側の出力端の出力OUT1に出力され、下側の入力端の入力IN2の信号が下側の出力端の出力OUT2に出力される。
【００５０】
また、XOR回路６４６の出力が０のとき、セレクタ６４１は、OR回路６４３の出力端に接続された入力端（０）の方を選択して、出力端に出力する。同様に、その場合、セレクタ６４２も、AND回路６４５の出力端に接続された入力端（０）の方を選択して、出力端に出力する。
【００５１】
OR回路６４３の一方の入力端は、AND回路６４４の出力端に接続され、他方の入力端は、入力IN2に接続されている。AND回路６４４の一方の入力端には、インバータを介して１が入力されているので、AND回路６４４の出力は、入力IN1の入力データをOR回路６４３の一方の入力端に出力する。また、OR回路６４３の他方の入力端には、入力IN2が入力されている。しかし、デコーダ400からの８つの出力のうち、１つの出力のみが１であるので、入力IN1とIN2は、共に０か、あるいは一方が１で他方が０である。従って、OR回路６４３の出力は、入力IN1とIN2のいずれかが１であれば、１となる。また、OR回路６４３の出力は、入力IN1とIN2が共に０であれば、０となる。
【００５２】
また、セレクタ６４２は、AND回路６４５の出力端に接続された入力端（０）の方を選択して、出力端に出力する。AND回路６４５の一方の入力端は、モード入力Mに接続されて０が入力されているので、AND回路６４５の出力は、常に０となる。よって、AND回路６４５の出力である０が、セレクタ６４２を介して、出力OUT2に出力される。
【００５３】
従って、モード入力Mが０のとき、制御入力C1が０ならば、２つの入力IN1,IN2のうちいずれかが１であれば、上側の出力端の出力OUT1に１が出力され、下側の出力端の出力OUT2に０が出力される。
【００５４】
すなわち、論理回路１を論理積（AND）回路として動作させるとき、制御入力C2は０であり、スイッチ素子６４０において、制御入力C1が１であれば、入力IN1,IN2が、それぞれ出力OUT1,OUT2に出力され、制御入力C1が０であれば、入力IN1,IN2のいずれか一方が１であれば、出力OUT1に１が出力される。
【００５５】
次に、以上のような構成に係る論理回路１の動作について説明する。  
まず、論理回路１が、排他的論理和（XOR）の回路として機能するときの動作について説明する。
【００５６】
例えば、入力データBを110、入力データAを010とすると、論理回路１の出力は、100が出力される。  
その場合、入力データBとして110が入力されると、デコーダ400の出力端子D6のみに出力が出るので、デコーダ400の出力は、01000000となる。第１ステージST1には制御信号として入力データAの最下位ビットである0が入力される。第１ステージST1では、制御入力C1が0であるのでそのまま出力される。従って、第１ステージST1の４つのスイッチ素子６４０の出力は、01000000となる。
【００５７】
その出力が第２ステージST2に入力されるときは、第１ステージST1と第２ステージST2間の配線接続によって、２番目のビットと３番目のビット、６番目のビットと７番目のビットが入れ替えられる。よって、第２ステージST2には0010000が入力される。第２ステージST2の制御信号C1は、１であるので、入力されたデータの隣り合うビットが入れ替えられ、第２ステージST2の４つのスイッチ素子６４０の出力は、00010000となる。
【００５８】
その出力が第３ステージST3に入力されるときは、第２ステージST2と第３ステージST3間の配線接続によって、第３ステージST3には00000010が入力される。第３ステージST3には、制御信号C1として0が入力されるので、入力されたデータがそのまま出力され、00000010となる。配線ネットワーク200の最終段では、さらにビットの入れ替えがなされ、最終的に00010000が出力される。図３において、配線ネットワーク200における入力データの経路が点線で示されている。よって、エンコーダ300において、00010000が、エンコードされて、100となる。この100は、２つの入力110と010の排他的論理和を取ったデータである。  
以上のように、モード入力Ｍが１の場合、２つの入力データの排他的論理和が出力される。
【００５９】
次に、論理回路１が、論理積（AND）の回路として機能するときの動作について説明する。  
例えば、入力データBを110、入力データAを010とすると、論理回路１の出力は、010が出力される。  
その場合、入力データBとして110が入力されると、デコーダ400の出力端子D6のみに出力が出るので、デコーダ400の出力は、01000000となる。第１ステージST1には制御信号として入力データAの最下位ビットである0が入力される。第１ステージST1では、制御入力C1が0であるので、各スイッチ素子６４０においては、いずれか一方の入力に１があれば、上側の出力端に１が出力される。従って、スイッチ素子６４０−１−４の一方に１が入力されているので、第１ステージST1の４つのスイッチ素子６４０の出力は、01000000となる。
【００６０】
その出力が第２ステージST2に入力されるときは、第１ステージST1と第２ステージST2間の配線接続によって、２番目のビットと３番目のビット、６番目のビットと７番目のビットが入れ替えられる。よって、第２ステージST2には0010000が入力される。第２ステージST2の制御信号C1は、１であるので、各スイッチ素子６４０においては、上側の入力端IN1に入力された信号は、上側の出力端OUT1に出力され、下側の入力端IN2に入力された信号は、下側の出力端OUT2に出力される。よって、第２ステージST2の４つのスイッチ素子６４０の出力は、00100000となる。
【００６１】
その出力が第３ステージST3に入力されるときは、第２ステージST2と第３ステージST3間の配線接続によって、第３ステージST3には00001000が入力される。第３ステージST3には、制御信号C1として0が入力されるので、各スイッチ素子６４０においては、いずれか一方の入力に１があれば、上側の出力端に１が出力される。従って、スイッチ素子６４０−３−２の一方に１が入力されているので、第３ステージST3の４つのスイッチ素子６４０の出力は、00000100となる。配線ネットワーク200の最終段では、さらにビットの入れ替えがなされているが、最終的に00000100が出力される。図３において、配線ネットワーク200における入力データの経路が点線T２で示されている。よって、エンコーダ300において、00000100が、エンコードされて、010となる。この010は、２つの入力110と010の論理積（AND）を取ったデータである。  
よって、モード入力Ｍが０の場合、２つの入力データの論理積が出力される。
【００６２】
以上のように、論理回路１において、デコーダ400は、２つの入力データのうち一つの入力データBを、複数の出力端子の中の１つの端子だけがHとなるようなデコードデータにデコードして、配線ネットワーク200へ出力する。そして、配線ネットワーク200は、入力された複数のビットデータの並びの順序、あるいは各データに対応する配線の順番が複数の出力端子において変わるように、制御入力C1,C2に基づいて、デコードデータのビットパターンを変更してエンコーダ300に出力する。そのとき、出力される複数のデータの中で、１つだけがHで、他はLである。そして、配線ネットワーク200の出力をエンコーダ300で所定のデータにエンコードすることによって、所定の論理演算が実行される。
【００６３】
また、そのとき、配線ネットワーク200は、２つの論理演算の機能を実行することができるように、構成されている。具体的には、配線ネットワーク200の各スイッチ素子６４０の動作が、モード入力Mの信号に基づいて変更されるように、配線ネットワーク200が構成されている。
【００６４】
従来であれば、上述したような、排他的論理和（XOR）と論理積（AND）の２つの機能を実行する場合は、排他的論理和の回路と論理積の回路の２つの回路を設けていた。そして、それぞれの回路が、各機能に応じて動作するように制御されていたので、半導体装置の回路面積も大きくなっていた。
【００６５】
しかし、上述した本実施の形態によれば、１つの配線ネットワークにおいて２つの機能を実行するために、各スイッチ素子は、モード入力に応じて、その動作が変更されるように構成したので、一つの論理回路で２つの論理演算の機能を実行できる。よって、論理回路が搭載される半導体装置の回路面積も小さくすることができる。
【００６６】
以上の構成によれば、論理回路１において、配線ネットワーク200では、必ず１つのHの信号だけが処理されるので、消費電力は入力されたデータに依存せず、かつ、２つの論理演算を実行することができる。
【００６７】
なお、以上の説明では、デコーダにより１すなわちHとなる信号は、１つだけであったが、消費電力が一定となれば、一定の複数の信号がHとなるように、すなわちハミング重みが所定の２以上になるように、論理回路を構成してもよい。
【００６８】
次に、本実施の形態の応用例について説明する。  
図５は、本実施の形態の応用例に係る論理回路の構成を示すブロック図である。本応用例の論理回路は、より複雑な論理演算、すなわち論理演算の組合せを実行可能な論理回路である。図５の論理回路１Aは、３つの入力について、排他的論理和（XOR）と、論理積（AND）の種々の組合せを実行することができる。論理回路１Aは、３つのデコーダ400-1、400-2,400-3と、２つの配線ネットワーク200-1,200-2と、エンコーダ300を含む。２つの配線ネットワーク200-1,200-2の構成は、上述した配線ネットワーク200と同様の構成であり、それぞれの配線ネットワークに、個別にモード入力が入力されている。
【００６９】
図５において、３つの入力AA,BA,CAは、それぞれデコーダ400-1、400-2,400-3によってデコードされる。デコーダ400-1と400-2の出力が、配線ネットワーク200-1に入力される。配線ネットワーク200-1の出力と、デコーダ400-3の出力が、配線ネットワーク200-2に入力される。配線ネットワーク200-2の出力が、エンコーダ300に入力される。デコーダ400-2,400-3の出力は、上述した図３の入力データAのようなデータを出力するものである。なお、入力データBA,CAが、図３の入力データAのようなデータある場合は、デコーダ400-2、400-3は、無くてもよい。
【００７０】
このような構成によれば、論理回路１Aは、次のような論理演算の組合せの論理演算を行って、その論理演算の結果としての出力データZAを出力することができる。  
（１）（AA＊BA）＋CA
（２）（AA＊BA）＊CA
（３）（AA＋BA）＋CA
（４）（AA＋BA）＊CA
なお、ここで、「＊」は、論理積を示し、「＋」は排他的論理和を示す。  
すなわち、配線ネットワーク200-1,200-2においては、それぞれ排他的論理和（XOR）と論理積（AND）のいずれか１つを実行できる。よって、配線ネットワーク200-1において、論理積（AND）を実行し、配線ネットワーク200-2において、排他的論理和（XOR）を実行するように、２つの配線ネットワーク200-1,200-2のそれぞれにモード入力Mを与えれば、論理回路１Aは、式（１）の論理演算を実行可能となる。
【００７１】
配線ネットワーク200-1と200-2において、論理積（AND）を実行するように、２つの配線ネットワーク200-1,200-2のそれぞれにモード入力Mを与えれば、論理回路１Aは、式（２）の論理演算を実行可能となる。  
また、配線ネットワーク200-1と200-2において、排他的論理和（XOR）を実行するように、２つの配線ネットワーク200-1,200-2のそれぞれにモード入力Mを与えれば、論理回路１Aは、式（３）の論理演算を実行可能となる。  
さらに、配線ネットワーク200-1において、排他的論理和（XOR）を実行するようにして、配線ネットワーク200-2において、論理積（AND）を実行するように、２つの配線ネットワーク200-1,200-2のそれぞれにモード入力Mを与えれば、論理回路１Aは、式（４）の論理演算を実行可能となる。  
よって、本応用例によれば、２つの配線ネットワークがそれぞれ２つの論理演算の機能を実行可能なため、一つの論理回路で、論理演算の組合せの機能を実行できる。よって、その論理回路が搭載される半導体装置の回路面積も小さくすることができる。さらに、論理回路１Aにおいて、各配線ネットワークでは、必ず１つのHの信号だけが処理されるので、消費電力は入力されたデータに依存しない。
【００７２】
なお、上記応用例は、入力データが３つの場合であるが、入力データは、４つ以上でも同様に、複数の配線ネットワークを組み合わせることによって、一つの論理回路で複雑な論理演算の機能を実行できる論理回路を実現することができる。
【００７３】
以上のように、本実施の形態及び応用例によれば、消費電力の変動を抑えつつ、論理演算の機能の変更をすることができる論理回路を実現することができる。
【００７４】
なお、上述した実施の形態では、２つの論理演算の機能を実行できる論理回路が説明された。また、その応用例では、その２つの論理演算の機能を実行できる論理回路の配線ネットワークを組み合わせた論理回路が説明された。  
そして、２つの論理演算として、排他的論理和（XOR）と論理積（AND）の機能を挙げている。  
しかし、他の論理演算、例えば、論理和（OR）等も含めて、２つの論理演算の機能を、論理回路が実行できるようにしてもよい。さらに、そのような２つの論理演算の機能を実行可能な論理回路の配線ネットワークを組み合わせて、論理回路を構成してもよい。
【００７５】
さらに、論理和（OR）等も含めて、３つ以上の論理演算の機能を、論理回路が実行できるようにしてもよい。さらに、そのような３つ以上の論理演算の機能を実行可能な論理回路の配線ネットワークを組み合わせて、論理回路を構成してもよい。その場合、各配線ネットワーク内の各スイッチ素子は、３つ以上の論理演算に対応して、動作が変更される。
【００７６】
従って、そのような場合には、1つの例である図５のような複数の配線ネットワークの組合せによる複雑な論理演算も、より論理演算の組合せの自由度もより大きくなる。
【００７７】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の実施の形態に係わる論理回路の機能を説明するための図である。
【図２】本発明の実施の形態に係わる論理回路の基本構成を示すブロック図である。
【図３】本実施の形態に係わる論理回路の回路構成を示す回路図である。
【図４】本実施の形態に係わるスイッチ素子の内部の回路構成を示す回路図である。
【図５】本実施の形態の応用例に係る論理回路の構成を示すブロック図である。
【符号の説明】
【００７９】
１，１A  論理回路、２，２００  配線ネットワーク、３，３００  エンコーダ、４，４００  デコーダ、６４０  スイッチ素子
【図１】
2008187384.tif 000003
【図２】
2008187384.tif 000004
【図３】
2008187384.tif 000005
【図４】
2008187384.tif 000006
【図５】
2008187384.tif 000007