(57)【要約】【課題】消費電力の変動を抑える論理回路を実現する。【解決手段】所定の演算処理を行う論理回路１Aは、１又は２以上の２進数の入力データに対して、入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダ４００Aと、デコーダ４００Aにより変換された第１の複数のビットデータを受信し、所定の演算処理のために、受信した第１の複数のビットデータのビット位置を入れ替えることによって、第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する配線ネットワーク２００Aと、配線ネットワークに２００A接続され、配線ネットワーク２００Aにおいて生成された第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダ３００Aとを有する。【選択図】図２
2008099204.tif 000002
【特許請求の範囲】
【請求項１】
所定の演算処理を行う論理回路であって、
１又は２以上の２進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダと、
該デコーダに接続され、前記デコーダにより変換された前記第１の複数のビットデータを受信し、前記所定の演算処理のために、受信した前記第１の複数のビットデータのビット位置を入れ替えることによって、前記第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する配線ネットワークと、
該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダと、
を有することを特徴とする論理回路。
【請求項２】
前記第１の複数のビットデータは、前記ハミング重みが１又は２以上のビットデータであることを特徴とする請求項１に記載の論理回路。
【請求項３】
前記第１の複数のビットデータをそれぞれ入力する複数の入力端において前記第１の複数のビットデータの並びの順序が、前記第２の複数のビットデータをそれぞれ出力する複数の出力端において逆になるように、前記複数の入力端と前記複数の出力端間の配線パターンを形成することによって、前記配線ネットワークにおける前記第１の複数のビットデータのビット位置の入れ替えが行われることを特徴とする請求項１又は２に記載の論理回路。
【請求項４】
前記配線ネットワークは、それぞれが制御入力端に入力される制御入力に応じて２つの入力端に入力される２つの信号が２つの出力端に現れる状態を変更する複数の選択回路を含み、
前記第１の複数のビットデータが入力された前記複数の選択回路の出力を、前記入力データとは別の入力データを前記制御入力として、前記複数の選択回路のそれぞれの制御入力端に入力することによって、前記配線ネットワークにおける前記第１の複数のビットデータのビット位置の入れ替えが行われることを特徴とする請求項１又は２に記載の論理回路。
【請求項５】
前記デコーダは、２つの入力データをそれぞれ第１のデコードデータ及び第２のデコードデータに変換し、
前記配線ネットワークは、それぞれが制御入力端に入力される制御入力に応じて２つの端子間の接続と非接続の状態を変更する複数の接続素子を含み、
前記第１のデコードデータを前記複数の接続素子の一方の端子に入力し、生成される前記第２のビットデータをそれぞれ出力する複数の出力端を前記複数の接続素子の他方の端子に接続し、かつ前記第２のデコードデータを前記制御入力として前記複数の接続素子のそれぞれの制御入力端に入力することによって、前記配線ネットワークにおける前記第１の複数のビットデータのビット位置の入れ替えが行われることを特徴とする請求項１又は２に記載の論理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路に関し、特に、消費電力の変動を抑えることができる論理回路に関する。
【背景技術】
【０００２】
近年のLSI技術の進歩より、半導体装置は、情報機器だけでなく、産業機器から家電製品まで多くのかつ種々の製品に広く応用されている。
【０００３】
また、半導体装置は、その高性能化が進み、その消費電力も大きくなってきている。消費電力の増加は、半導体装置の熱の発生の問題だけでなく、その半導体装置が搭載される応用製品がバッテリー駆動の場合に、その応用製品の長時間に亘る使用ができなくなるという、連続駆動時間の減少の問題にも繋がる。
【０００４】
半導体装置には、種々の機能を実現するための多くの論理回路が含まれている。論理回路は、一般的なAND回路、排他的論理和回路、加算器等がある。  
しかし、近年は、データ処理の基本単位が３２ビット、６４ビットとビット数が多くなってきているため、同時に処理されるデータの変化に応じて消費電力が大きく変化する場合がある。一方、半導体回路における低消費電力化の技術に関する提案もなされている（例えば、特許文献１参照）。
【０００５】
そのため、半導体回路の設計において、そのようなデータの変化に応じた消費電力の変化における最大値と最小値とを考慮して電源回路の設計を行わなければならないという問題があった。
【特許文献１】特開２０００−２１６２６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、本発明は、以上のような課題に鑑みてなされたものであり、消費電力の変動を抑える論理回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、所定の演算処理を行う論理回路であって、１又は２以上の２進数の入力データに対して、該入力データのハミング重みと関係なく、ハミング重みが一定となる第１の複数のビットデータに変換するデコーダと、該デコーダに接続され、前記デコーダにより変換された前記第１の複数のビットデータを受信し、前記所定の演算処理のために、受信した前記第１の複数のビットデータのビット位置を入れ替えることによって、前記第１の複数のビットデータのビットパターンを変更して、第２の複数のビットデータを生成する配線ネットワークと、該配線ネットワークに接続され、前記配線ネットワークにおいて生成された前記第２の複数のビットデータを、１又は２以上の２進数の出力データに変換するエンコーダとを有する論理回路を提供することができる。
【発明の効果】
【０００８】
本発明によれば、消費電力の変動を抑える論理回路を実現することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施の形態を説明する。  
（第１の実施の形態）  
まず図１に基づき、本発明の第１の実施の形態に係わる論理回路の全体構成について説明する。図１は、第１の実施の形態に係わる論理回路のビット反転を行う反転回路の構成を示すブロック図である。  
図１は、種々の論理回路に適用できる基本構成を示し、配線ネットワーク部（以下、配線ネットワークという）２と、エンコード部（以下、エンコーダという）３と、デコード部（以下、デコーダという）４を含んで構成される論理回路１を示す。デコーダ４は、nビットの２進数データをmビット(m>n)のビット列に変換するデコーダである。配線ネットワーク２は、デコードされたデータを入れ替えることによって所定の演算を行う配線ネットワーク回路である。エンコーダ３は、配線ネットワーク２から出力されたsビットのデータをtビットのデータ(s>t)に変換するエンコーダである。
【００１０】
ここで、入力されたデータはnビットであるが、デコードされるとnより大きいmビットとなり、冗長性が増加している。さらに、デコード後のデータは、入力されたnビットの２進数データのハミング重みとは無関係なハミング重みのデータであり、その後処理されている。例えば、mを２のn乗として、mビットのデータのただ１つの信号のみがHIGH（以下、Hともいう）となるようなデータに、入力データは変換される。そのように変換すると、デコード後、常にHとなる信号の配線は1本のみなので、デコードされたデータのハミング重みが常に一定となる。従って、論理回路１の消費電力は入力されたデータに依存しないので、消費電力の変動を抑える論理回路を実現することができる。  
配線ネットワーク２は、デコーダ４に接続され、デコーダ４により変換して得られたデコードデータである第１の複数のビットデータを複数の入力端を介して受信する。配線ネットワーク２は、受信したデコードデータの各ビットデータのそれぞれに対応する複数の配線の接続あるいは信号の経路を変更することによって、所定の演算処理のために前記第１の複数のビットデータのビット位置を入れ替えて、第２の複数のビットデータを生成する。その第２の複数のビットデータは、配線ネットワーク２の複数の出力端からエンコーダ３に出力される。言い換えると、配線ネットワーク２は、デコーダ４から出力されたハミング重みが一定のデコードデータのビットパターン（複数のビットデータの並びの順序）を、変更して出力データとして出力する。
【００１１】
なお、図１に示す回路構成は、本実施の形態だけでなく、第２の実施の形態以下に説明する他の論理回路においても適用されている構成である。
【００１２】
以下に、本実施の形態の具体例を図面を用いて説明する。  
図２は、本実施の形態に係わる反転回路の構成例を示すブロック図である。図２の反転回路１Aは、ビット反転を実現する論理回路の例である。
【００１３】
反転回路１Aは、３ビットの入力データを入力するための３つの入力端子（B2〜0）を有する入力部101Aと、３ビットのデータを８ビットのデータに変換するデコーダ400Aと、８ビットのデータ（あるいは配線）を入れ替える変換を行う配線ネットワーク200Aと、８ビットのデータを３ビットのデータに変換するエンコーダ300Aと、エンコーダ300Aの３ビットのデータを出力するための３つの出力端子（Z2〜0）を有する出力部102Aとを含んで構成される。反転回路１Aには、３ビットの２進数データが入力され、反転回路１Aは、ビット反転した３ビットの２進数データを出力する。
【００１４】
デコーダ400Aは、ここでは、８個のAND（論理積）回路を含み、８個のAND回路の入力端には、３ビットで表される８個（０から７）のそれぞれの値に対して、１つのAND回路からのみ出力が出るように、インバータ回路が設けられている。デコーダ400Aは、３ビットの入力から８ビットのデコードデータである出力を生成する。デコーダ400Aの各AND回路の出力は、対応する配線ネットワーク200Aの各入力端に接続されている。配線ネットワーク200Aの各出力は、エンコーダ300Aの各入力端に接続されている。
【００１５】
図２では、例えば、３ビットの入力データが(0,0,0)のときは、デコーダ400Aの出力端子D0のみに出力が出るように、３つのインバータ回路がそれぞれ３つの入力端に設けられた、一番目のAND回路が設けられている。また、３ビットのデータが(0,0,1)のときは、デコーダ400Aの出力端子D1のみに出力が出るように、２つのインバータ回路がそれぞれ２つの入力端に設けられた、２番目のAND回路が設けられている。同様に、３ビットのデータが(1,1,1)のときは、デコーダ400Aの出力端子D7のみに出力が出るように、インバータ回路を入力端に有しないAND回路が設けられている。すなわち、デコーダ400Aの出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。
【００１６】
ビット反転を実現する配線ネットワーク200Aは、データあるいは配線の順番を反対にするように構成されている。図２に示すように、配線ネットワーク200Aの複数の入力端における複数のビットデータであるデコードデータの並びの順序は、配線ネットワーク200Aにおける複数の出力端において逆になるように、複数の入力端と複数の出力端間の配線パターンが形成される。その結果、配線ネットワーク200Aにおいてデコードデータのビット位置の入れ替えが行われる
エンコーダ300Aは、ここでは、３つの論理和（OR）回路を含み、８ビットで表される８個の値に対応して３ビットデータが出力されるように、３つのOR回路の複数の入力端と配線ネットワーク200Aの複数の出力端との接続は、互いに異なっている。エンコーダ300Aは、８ビットの入力から３ビットの出力を生成する。
【００１７】
具体的には、図２に示すように、第１のOR回路は、８ビットのデータのうち、配線ネットワーク200Aの出力N7からN4のデータを入力して、出力端子Z2に出力を出す。第２のOR回路は、８ビットのデータのうち、配線ネットワーク200Aの出力N 7,N6,N3,N2のデータを入力して、出力端子Z1に出力を出す。第３のOR回路は、８ビットのデータのうち、配線ネットワーク200Aの出力N 7,N5,N3,N1のデータを入力して、出力端子Z0に出力を出す。
【００１８】
次に、図２の論理回路の動作を、図３を用いて説明する。
【００１９】
図３は、図２のビット反転回路である論理回路１の各部の出力を示す表である。入力データとして、(B2, B1, B0)= 110が入力された場合を用いて説明する。この２進数110は、１０進数で表現すると６である。デコーダ400Aの出力は、７番目のAND回路の出力D6のみがHとなり、残りの出力は、Lとなる。従って、デコーダ400Aの出力は、(D7, D6, 〜, D0) = 01000000となる。配線ネットワーク200Aは、D0がN7に、D1がN6に、D2がN5に、というようにデータあるいは配線の順番が入れ替わるネットワークである。01000000が入力されると、配線ネットワーク200Aは、(N7, N6, 〜N0) = 00000010を出力する。これは、１０進数の１に該当し，エンコーダ300Aによって001が出力される。すなわち、入力データ110のビット反転データである001が出力される。
【００２０】
以上のように、図２に示すような、デコーダ400A、配線ネットワーク200A、エンコーダ300Aを用いることでビット反転回路を実現することができる。このとき、デコーダ400Aの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200A上でもHになる出力信号は、どのような入力に対しても1つのみである。特に、CMOS論理回路の消費電力は、処理されるデータに依存する。従って、ビット反転処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００２１】
（第２の実施の形態）  
次に、図４に基づき、本発明の第２の実施の形態に係わる論理回路の全体構成について説明する。図４は、第２の実施の形態に係わる排他的論理和回路の構成を示すブロック図である。  
図４の排他的論理和回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。
【００２２】
図４の排他的論理和回路1Bは、２つの２桁の２進数同士の排他的論理和をとる回路の例である。
【００２３】
排他的論理和回路1Bは、入力部101Bと、デコーダ400Ｂと、配線ネットワーク200Bと、エンコーダ300Bと、出力部102Bとを含んで構成される。入力部101Bは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する２つの入力部を有する。デコーダ400Ｂは、一方の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換する。配線ネットワーク200Bは、デコーダ400Ｂからの４ビットのデコードデータと、他方の一対の入力端子(A1,A0）の別の２ビットデータとを入力して、デコーダ400Ｂからの４ビットデータ（あるいは４つの配線）を入れ替える変換を行う。エンコーダ300Bは、入力された４ビットデータを２ビットデータに変換する。出力部102Bは、エンコーダ300Bの２ビットデータを出力するための一対の出力端子（Z1,Z0）を有する。排他的論理和回路1Bには、それぞれが２ビットの２進数データである２つの入力データA,Bが入力され、排他的論理和回路1Bは、２つの入力データA,Bの排他的論理和をとって２ビットの２進数の出力データを出力する。
【００２４】
デコーダ400Bは、ここでは、４個のAND（論理積）回路を含み、４個のAND回路の入力端には、２ビットで表される４個（０から３）のそれぞれの値に対して、１つのAND回路からのみ出力が出るように、インバータ回路が設けられている。デコーダ400Bは、２ビットの入力から４ビットの出力を生成する。デコーダ400Bの各AND回路の出力”0”,”1”,”2”,”3”は、対応する配線ネットワーク200Bの各入力端に接続されている。配線ネットワーク200Bの各出力”0”,”1”,”2”,”3”は、エンコーダ300Aの各入力端に接続されている。
【００２５】
図４では、例えば、２ビットの入力データが(0,0)のときは、デコーダ400Bの出力”0”のみに出力が出るように、２つのインバータ回路がそれぞれ２つの入力端に設けられた、一番目のAND回路が設けられている。また、２ビットのデータが(0,1)のときは、デコーダ400Bの出力”1”のみに出力が出るように、１つのインバータ回路が１つの入力端に設けられた、２番目のAND回路が設けられている。同様に、２ビットのデータが(1,1)のときは、デコーダ400Bの出力”3”のみに出力が出るように、インバータ回路を入力端に有しないAND回路が設けられている。すなわち、デコーダ400Bの出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。
【００２６】
エンコーダ300Ｂは、ここでは、２つの論理和（OR）回路を含み、４ビットで表される４個の値に対応して２ビットデータが出力されるように、２つのOR回路の複数の入力端と配線ネットワーク200Ｂの複数の出力端との接続は、互いに異なっている。エンコーダ300Ｂは、４ビットの入力から２ビットの出力を生成する。
【００２７】
図４に示すように、第１のOR回路は、４ビットのデータのうち、配線ネットワーク200Ｂの出力”3”,”2”のデータを入力とする。第２のOR回路は、４ビットのデータのうち、配線ネットワーク200Ｂの出力”3”,”1”のデータを入力とする。
【００２８】
配線ネットワーク200Ｂは、複数の（ここでは４つの）選択回路600-1-1, 600-1-2, 600-2-1, 600-2-2を含んで構成される。選択回路600-1-1, 600-1-2が、第１段目のセレクタを構成し、選択回路600-2-1, 600-2-2が、第２段目のセレクタを構成する。各選択回路は、２つの入力データ（入力1と入力2）と、１つの制御入力と、２つの出力データ（出力1と出力2）を有する。各選択回路は、制御信号である制御入力に応じて、入力1と入力2をそれぞれ出力1と出力2のいずれかに転送して出力する。図４の場合、制御入力が0の場合は、２つの入力データがそれぞれ直進し、その結果、入力１は出力１から出力され、入力２は出力２から出力される。制御入力が1の場合は、２つの入力データが交差し、その結果、入力１は出力２から出力され、入力２は出力１から出力される。言い換えると、各選択回路600は、制御入力端に入力される制御入力に応じて２つの入力端に入力される２つの信号が２つの出力端に現れる状態を変更する回路である。
【００２９】
そして、１段目の２つの選択回路600-1-1, 600-1-2は、デコーダ400Bの第１から第４のＡＮＤ回路から４つのデータ”0”,”1”,”2”,”3”を受信する。選択回路600-1-1は、デコーダ400Bの出力”2”,”3”を受信する。選択回路600-1-2は、デコーダ400Bの出力”0”,”1”を受信する。１段目の２つの選択回路600-1-1, 600-1-2には、それぞれ制御入力として入力データA0が入力される。入力Aは、入力Bとは別の入力データである。２段目の２つの選択回路600-2-1, 600-2-2は、２つの選択回路600-1-1, 600-1-2からの４つのデータを受信する。選択回路600-2-1, 600-2-2は、それぞれ選択回路600-1-1と選択回路600-1-2の出力を受信する。２段目の２つの選択回路600-2-1, 600-2-2には、それぞれ制御入力として入力データA1が入力される。
【００３０】
例えば、A0が1のとき、デコーダ400Bの出力”3”, “2”, “1”, “0”が入力されると、１段目の２つの選択回路600-1-1, 600-1-2は、”2”, “3”, “0”, “1”という順序で出力データを出力する。２段目の２つの選択回路600-2-1, 600-2-2には、１段目の２つの選択回路600-1-1, 600-1-2から”2”, “0”, “3”, “1”という順序でデータが入力されるように、１段目と２段目の選択回路間の配線の接続が形成されている。すなわち、この１段目の２つの選択回路600-1-1, 600-1-2の出力”2”, “3”, “0”, “1”が、図４のような接続によって、入力”2”, “0”, “3”, “1”となって２段目の２つの選択回路600-2-1, 600-2-2に入力される。
【００３１】
そして、A1が0の場合、この入力データがそのまま、すなわち、出力”2”, “0”, “3”, “1”が２段目の２つの選択回路600-2-1, 600-2-2から出力される。２段目の２つの選択回路600-2-1, 600-2-2は、その”2”, “0”, “3”, “1” という順序で出力データを出力する。”2”, “3”, “0”, “1”という順序で出力データが、エンコーダ300Ｂに入力されるように、２段目の２つの選択回路600-2-1, 600-2-2とエンコーダ300Ｂ間の配線の接続が形成されている。
【００３２】
上記の場合、配線ネットワーク200Ｂの出力は、”2”, “3”, “0”, “1”となりエンコーダ300Bに転送される。出力”2”, “3”, “0”, “1”を２進数で表現すると、”10”, “11”, “00”, “01”であり、各２進数の第二ビットが反転している。すなわち、２つの入力ＡとＢの排他的論理和処理が実現されていることになる。
【００３３】
以上のように、上述した配線ネットワーク200Bの複数の選択回路600には、入力Bのデコードデータが入力される。複数の選択回路600は、入力データBとは別の入力データAを制御入力として、複数の選択回路600のそれぞれの制御入力端に入力することによって、入力Bのデコードデータのビットデータのビット位置の入れ替えを行う。
【００３４】
よって、図４に示すような、デコーダ400B、配線ネットワーク200B、エンコーダ300Bを用いることで排他的論理和回路を実現することができる。このとき、デコーダ400Bの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200B上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、排他的論理和処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００３５】
（第３の実施の形態）  
次に、図５に基づき、本発明の第３の実施の形態に係わる論理回路の全体構成について説明する。図５は、第３の実施の形態に係わる排他的論理和回路の構成を示すブロック図である。  
図５の排他的論理和回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。
【００３６】
図５の排他的論理和回路1Cは、図４の回路と同様に、２つの２桁の２進数同士の排他的論理和をとる回路構成である。図５の回路では、２つの入力が共にデコードされている点が、図４の回路とは異なる。
【００３７】
排他的論理和回路1Cは、入力部101Cと、デコーダ400Cと、配線ネットワーク200C と、エンコーダ300Cと、出力部102Cとを含んで構成される。入力部101Cは、それぞれが２ビットの入力データを入力するための複数の（ここでは一対の）入力端子(A1,A0）,（B1,B0）を有する２つの入力部101C1、101C2を有する。デコーダ400Cは、入力部101C1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400C−１と、入力部101C2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400C−２とを含んで構成される。配線ネットワーク200Cは、デコーダ400C−１からの４ビットのデコードデータと、デコーダ400C−２からの４ビットのデコードデータを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、４ビットデータを出力する。エンコーダ300C は、入力された４ビットデータを２ビットデータに変換する。出力部102Cは、エンコーダ300Cの２ビットデータを出力するための一対の出力端子（Z1,Z0）を有する１つの出力部を有する。排他的論理和回路1Cには、２つの２ビットの２進数データA,Bが入力され、排他的論理和回路1 Cは、２つの入力データA,Bの排他的論理和をとって２ビットの２進数の出力データを出力する。
【００３８】
デコーダ400Cの２つのデコーダ400C−１，400C−２は、それぞれ、ここでは、４個のAND（論理積）回路を含み、４個のAND回路の入力端には、２ビットで表される４個（０から３）のそれぞれの値に対して、１つのAND回路からのみ出力が出るように、インバータ回路が設けられている。２つのデコーダ400C−１，400C−２は、それぞれ、２ビットの入力から４ビットの出力を生成する。デコーダ400Cの各AND回路の出力”0”,”1”,”2”,”3”は、対応する配線ネットワーク200Cの各入力端に接続されている。配線ネットワーク200Cの各出力”0”,”1”,”2”,”3”は、エンコーダ300Cの各入力端に接続されている。
【００３９】
図５の２つのデコーダ400C−１，400C−２の動作は、図４で説明したデコーダ400Bと同様であるので、説明は省略する。
【００４０】
配線ネットワーク200Cには、それぞれがデコードされた２つの４ビットデータが入力される。図５に示すように、デコーダ400C−２からの４ビットデータが入力される４本の信号線と、エンコーダ300Cへの４ビットデータが出力される４本の出力線は、マトリックス状に配置される。マトリックスの各交点には、デコーダ400C−２からの信号線とエンコーダ300Cへの出力線とを接続あるいは非接続にする接続素子620が設けられる。各接続素子620は、２つのデータ端子と、２つのデータ端子の接続と非接続を制御する１つの制御入力端子を有する。制御入力端子には、デコーダ400C−１からの信号線が接続されている。すなわち、入力部101C1の入力端子(A1,A0）に入力された入力データのデコードされたデータが制御入力として各制御入力端子に入力される。言い換えると、各接続素子は、制御入力端に入力される制御入力に応じて２つの端子間の接続と非接続の状態を変更する素子である。
【００４１】
図５に示すように、デコーダ400C−２からの４本の信号線と、配線ネットワーク200Cからエンコーダ300Cへの４本の出力線とからなるマトリックスがあるとき、各出力線上に位置する４つの接続素子620の４つの制御入力端子には、それぞれデコーダ400C−１からの４本の信号線が接続されている。さらに、デコーダ400C−１からの４本の信号線は、各出力線毎にみると、各出力線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つにそれぞれ別々に接続されている。また、デコーダ400C−１からの４本の信号線は、各信号線毎についてみると、各信号線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つにそれぞれ別々に接続されている。そして、２つの入力データの排他的論理和の出力が、エンコーダ300Cから出力されるように、デコーダ400C−１の信号線と、各接続素子620の制御入力端子とが配線によって接続される。
【００４２】
なお、接続素子620は、制御信号である制御入力によって２つのデータ端子が接続されるか切断される機能を持つ素子で、例えば、３状態バッファ、転送ゲートなどである。
【００４３】
排他的論理和回路1Cでは、入力端子（A1,A0）への入力データAが0(２進数で00)のとき、入力端子（B1,B0）への入力データBと、エンコーダ300Cの出力との関係は、図６で示すようになる。図６から図９は、入力データBとエンコーダの出力との関係を説明するための表である。
【００４４】
さらに、入力端子（A1,A0）への入力データAが1(2進数で01)のとき、入力端子（B1,B0）への入力データBと、エンコーダ300Cの出力との関係は、図７で示すようになる。
【００４５】
さらに、入力端子（A1,A0）への入力データAが2(2進数で10)のとき、入力端子（B1,B0）への入力データBと、エンコーダ300Cの出力との関係は、図８で示すようになる。
【００４６】
さらに、入力端子（A1,A0）への入力データAが3(2進数で11)のとき、入力端子（B1,B0）への入力データBと、エンコーダ300Cの出力との関係は、図９で示すようになる。
【００４７】
以上のように、上述した配線ネットワーク200Cの複数の接続素子620の一方の端子に入力Bのデコードデータを入力し、エンコーダ300Cへの複数の出力線を複数の接続素子620の他方の端子に接続する。さらに、入力Aのデコードデータを制御入力として複数の接続素子620のそれぞれの制御入力端に入力することによって、配線ネットワーク200Cにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【００４８】
よって、図５に示すような、デコーダ400C、配線ネットワーク200C、エンコーダ300Cを用いることで排他的論理和回路を実現することができる。このとき、デコーダ400C-1,400C-2の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200C上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、排他的論理和処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００４９】
（第４の実施の形態）  
次に、図１０に基づき、本発明の第４の実施の形態に係わる論理回路の全体構成について説明する。図１０は、第４の実施の形態に係わる加算器の構成を示すブロック図である。本実施の形態の加算器は、桁上げのない加算器である。  
図１０の加算器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。
【００５０】
図１０の加算器1Dは、入力部101Dと、デコーダ400Dと、配線ネットワーク200D と、エンコーダ300Dと、出力部102Dとを含んで構成される。入力部101Dは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する２つの入力部101D1、101D2を有する。デコーダ400Dは、入力部101D 1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400D−１と、入力部101D 2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400D−２とを含んで構成される。配線ネットワーク200Dは、デコーダ400D−１からの４ビットのデコードデータと、デコーダ400D−２からの４ビットのデコードデータを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、４ビットデータを出力する。エンコーダ300Dは、入力された４ビットデータを２ビットデータに変換する。出力部102Dは、エンコーダ300Dの２ビットデータを出力するための複数の一対の出力端子（Z1,Z0）を有する１つの出力部を有する。加算器1Dには、２つの２ビットの２進数データA,Bが入力され、加算器1Dは、２つの入力データA,Bを加算して２ビットの２進数データを出力する。
【００５１】
デコーダ400Dの２つのデコーダ400D−１，400D−２は、図５のデコーダ400C−１，400C−２と同様である。
【００５２】
配線ネットワーク200Dには、それぞれがデコードされた２つの４ビットデータが入力される。図１０に示すように、デコーダ400D−２からの４ビットデータが入力される複数の（ここでは４本の）信号線と、エンコーダ300Dへの４ビットデータが出力される複数の（ここでは４本の）信号線は、マトリックス状に配置される。マトリックスの各交点には、デコーダ400D−２からの信号線とエンコーダ300Dへの信号線とを接続あるいは非接続にする接続素子620が設けられる。各接続素子620は、図５の接続素子620と同じであり、２つのデータ端子と、２つのデータ端子の接続と非接続を制御する１つの制御入力端子を有する。制御入力端子には、デコーダ400D−１からの信号線が接続されている。すなわち、入力部101D 1の入力端子(A1,A0）に入力された入力データのデコードされたデータが各制御入力端子に入力される。
【００５３】
図１０に示すように、デコーダ400D−２からの４本の信号線と、配線ネットワーク200Dからエンコーダ300Dへの４本の出力線とからなるマトリックスがあるとき、各出力線上に位置する４つの接続素子620の４つの制御入力端子には、それぞれデコーダ400D−１からの４本の信号線が接続されている。さらに、デコーダ400D−１からの各信号線は、各出力線毎にみると、各出力線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つに接続されている。また、デコーダ400D−１からの各信号線は、デコーダ400D−２からの４本の信号線のそれぞれについてみると、各信号線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つに接続されている。そして、２つの入力データの加算結果の出力が、エンコーダ300Dから出力されるように、デコーダ400D−１の信号線と、各接続素子620の制御入力端子とが配線によって接続される。
【００５４】
図１０に示した加算器１Dは、２つの２桁の２進数の桁上げの無い加算器である。加算器１Dは、２つの２桁の２進数入力Ａ、Ｂを持ち、両方の入力がそれぞれデコーダ400Dによってデコードされる。デコードされたデータは、配線ネットワーク200Dに送られ，加算処理が行われ、エンコーダ300Dに転送される。桁上げの無い加算器は、図１１に示すような動作をする。
【００５５】
図１１は、図１０の加算器１Dの入力と出力の関係を示す図である。図１１に示す動作を実現する配線ネットワーク200Dが図１０に示した通りである。配線ネットワーク200Dの構造は、図５と同様、接続素子620が入力と出力を接続している。その制御入力の接続が異なっている。このように、デコードされたデータが1対1に対応するような入出力関係であれば，接続素子の配列を用いて論理回路を実現することが可能となる。
【００５６】
以上のように、上述した配線ネットワーク200Dの複数の接続素子620の一方の端子に入力Bのデコードデータを入力し、エンコーダ300 Dへの複数の出力線を複数の接続素子620の他方の端子に接続する。さらに、入力Aのデコードデータを制御入力として複数の接続素子620のそれぞれの制御入力端に入力することによって、配線ネットワーク200 Dにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【００５７】
よって、図１０に示すような、デコーダ400D、配線ネットワーク200D、エンコーダ300Dを用いることで桁上げのない加算器を実現することができる。このとき、デコーダ400D-1, 400D-2の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200D上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、桁上げのない加算処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００５８】
（第５の実施の形態）
次に、図１２に基づき、本発明の第５の実施の形態に係わる論理回路の全体構成について説明する。図１２は、第５の実施の形態に係わる加算器の構成を示すブロック図である。本実施の形態の加算器は、桁上げのある加算器である。  
図１２の加算器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。  
図１２の加算器1 Eは、入力部101Eと、デコーダ400Eと、配線ネットワーク200E と、エンコーダ300Eと、出力部102Eとを含んで構成される。入力部101Eは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する、２つの入力部101E 1、101E 2を有する。デコーダ400Eは、入力部101E 2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダである。配線ネットワーク200Eは、デコーダ400Eからの４ビットのデコードデータと、入力部101E 1からの２ビットデータを入力して、４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、４ビットデータを出力すると共に、３ビットデータを出力する。エンコーダ300Eは、入力された４ビットデータを２ビットデータに変換すると共に桁上げ信号（carry信号）を出力する。出力部102Eは、エンコーダ300Eの２ビットデータを出力するための一対の出力端子（Z1,Z0）と、桁上げ信号用の出力端子(Z2)とを有する。加算器1Eには、それぞれが２ビットの２進数データである２つの入力データA,Bが入力され、加算器1 Eは、２つの入力データA,Bを加算して得られた２ビットの２進数データと桁上げ信号の出力データを出力する。
【００５９】
デコーダ400Eは、図４のデコーダ400Bと同様である。
【００６０】
配線ネットワーク200Eは、複数の選択回路610を含んで構成される配線ネットワークである。配線ネットワーク200Eは、２段のセレクタを含むローテイトシフタ200E1を有する。ローテイトシフタ200E１の第１段目のセレクタと２段目のセレクタは、それぞれ４つの選択回路610を含む。ローテイトシフタ200E1の出力は、桁上げの有無とは関係のない加算結果の出力である。
【００６１】
各選択回路610は、２つの入力（入力１と入力２）と、１つの制御入力と、１つの出力を有する。各選択回路610は、制御入力端に入力される制御入力に応じて、入力1と入力２のいずれかを一方を出力端に転送して出力する。図１２の場合、制御信号である制御入力が0の場合は、各選択回路610の上側の入力１が出力端から出力され、制御入力が1の場合は、各選択回路610の下側の入力２が出力端から出力される。  
そして、１段目の４つの選択回路610の一方の入力端には、それぞれデコーダ400Eの第１から第４のAND回路から４つのデータ”0”,”1”,”2”,”3”が入力される。１段目の４つの、すなわち第１から第４の選択回路610の他方の入力端には、それぞれデコーダ400Eの第２、第３、第４及び第１のAND回路から４つのデータ”1”,”2”,”3”,”0” が入力される。すなわち、１段目の４つの選択回路610の他方の入力端には、それぞれ一方の入力端に接続されたAND回路の隣のAND回路の出力が接続される。１段目の４つの選択回路610のそれぞれの制御入力端には、制御入力として入力データA0が入力される。
【００６２】
従って、１段目のセレクタの出力”0”, “1”, “2”, “3”には、A0が0の場合は、それぞれ、デコーダ400Eの出力”0”, “1”, “2”, “3”が出力され、A0が1の場合は，それぞれ、デコーダ400Eの出力”3”, ”0”, “1”, “2”が出力される。
【００６３】
２段目の第１から第４の４つの選択回路610の一方の入力端には、それぞれ１段目の第１から第４の４つの選択回路610からの４つの出力が入力される。２段目の第１から第４の４つの選択回路610の他方の入力端には、それぞれ１段目の第３、第４、第１及び第２の４つの選択回路610からの４つの出力が入力される。すなわち、２段目の４つの選択回路610の他方の入力端には、それぞれ一方の入力端に接続された選択回路610の隣の隣の選択回路610の出力が接続される。２段目の４つの選択回路610のそれぞれの制御入力端には、制御入力として入力データA1が入力される。
【００６４】
配線ネットワーク200Eは、さらに桁上げ計算用のネットワークを構成する４つの選択回路610を含んでいる。第１の選択回路610ａの一方の入力端には、第４のAND回路からの出力”3”が入力され、他方の入力端には、”L”が入力される。第１の選択回路610ａの制御入力端には、制御入力として入力データA0が入力される。
【００６５】
第２の選択回路610bの一方の入力端には、第１の選択回路610aの出力”4”が接続されている。第２の選択回路610bの他方の入力端には、１段目のセレクタの第３の選択回路610の出力”2”が接続されている。第２の選択回路610bの制御入力端には、制御入力として入力データA1が入力される。
【００６６】
第３の選択回路610cの一方の入力端には、第１のセレクタの第４の選択回路610の出力”3”が接続されている。第３の選択回路610cの他方の入力端には、”L”が入力される。第３の選択回路610cの制御入力端には、制御入力として入力データA1が入力される。
【００６７】
第４の選択回路610dの一方の入力端には、第１の選択回路610ａの出力”4”が接続されている。第４の選択回路610dの他方の入力端には、”L”が入力される。第４の選択回路610dの制御入力端には、制御入力として入力データA1が入力される。
【００６８】
１段目のセレクタの４つの選択回路610と、桁上げ計算用のネットワークの第１の選択回路610aと、を含めて構成される初段のセレクタの出力は、出力”0”, “1”, “2”, “3”, “4”である。２段目のセレクタの４つの選択回路610と、桁上げ計算用のネットワークの第２、第３及び第４の選択回路610b,610c,610dと、を含めて構成される後段のセレクタの出力は、出力”0”, “1”, “2”, “3”, “4” , “5”, “6”である。
【００６９】
初段のセレクタの制御入力には、A0が入力され、後段のセレクタの制御入力には、A1が入力される。A1は、２進数の２桁目であるので、10進数の２の意味を持つ。従って、A1が1のときは、2を加えることに対応する。後段のセレクタの上側の入力が選択されている場合の出力(A1が0の場合の出力)は、初段のセレクタの出力”0”, “1”, “2”, “3”, “4”であり、下側の入力が選択されている場合の出力(A1が1の場合の出力)は、”2”, “3”, “0”, “1”, “2”, “3”, “4”である。
【００７０】
エンコーダ300Eは、図４のエンコーダ300Bと同様の構成を有する。すなわち、図１２に示すように、エンコーダ300Eは、２段目のセレクタの４つの選択回路610の出力を、２つのOR回路に入力し、その２つのOR回路の出力を出力端子（Z1,Z0）に出力する。
【００７１】
また、エンコーダ300Eは、桁上げ計算用のネットワークの第２、第３及び第４の選択回路610b,610c,610dの３つの出力”4”, “5”, “6”を入力とするOR回路300E1を含み、そのOR回路300E1の出力が、桁上げ信号として、出力端子（Z2）に出力される。
【００７２】
このような構成を用いることで、桁上げが発生した場合は、２段目のセレクタの出力により、図１１と同様の結果が得られると共に、後段のセレクタの３つの出力”4”, “5”, “6”のいずれかがHになる。３つの出力”4”, “5”, “6”の論理和によって桁上げビットを計算することが可能となる。
【００７３】
以上のように、配線ネットワーク200Eの桁上げ計算用のネットワークは、加算によって桁上げが発生した場合、OR回路300E1の３つの入力端のいずれか1つの入力がＨとなる。すなわち、図１２の例では、それぞれが0から3までの２つのデータ入力に対して、４以上の加算結果が出る場合、OR回路300E1の３つの入力(第２、第３及び第４の選択回路610b,610c,610dの３つの出力“4”, “5”, “6”)のいずれか１つがＨとなる。
【００７４】
以上のように、上述した配線ネットワーク200Eの複数の選択回路610のそれぞれの制御入力端には、入力データBとは別の入力データAが制御入力として入力される。その結果、入力Bのデコードデータが入力された複数の選択回路610の出力が変更されて、配線ネットワーク200Eにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【００７５】
よって、図１２に示すような、デコーダ400E、配線ネットワーク200E、エンコーダ300Eを用いることで桁上げのある加算器を実現することができる。このとき、デコーダ400Eの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200E上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、桁上げのある加算処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００７６】
（第６の実施の形態）
次に、図１３に基づき、本発明の第６の実施の形態に係わる論理回路の全体構成について説明する。図１３は、第６の実施の形態に係わる加算器の構成を示すブロック図である。本実施の形態の加算器は、桁上げのある加算器である。  
図１３の加算器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。  
図１３の加算器1 Eは、入力部101Fと、デコーダ400Fと、配線ネットワーク200Fと、エンコーダ300Fと、出力部102Fとを含んで構成される。入力部101Fは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する２つの入力部101F1、101F2を有する。デコーダ400Fは、入力部101F 1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400F−１と、入力部101F2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400F−２とを含んで構成される。配線ネットワーク200Fは、デコーダ400F−１からの４ビットのデコードデータと、デコーダ400F−２からの４ビットのデコードデータを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、４ビットデータをエンコーダ300Fに出力すると共に、３ビットデータをエンコーダ300Fに出力する。
【００７７】
エンコーダ300Fは、入力された４ビットデータを２ビットデータに変換すると共に桁上げ信号（carry信号）を出力する。出力部102Fは、エンコーダ300Fの２ビットデータを出力するための一対の出力端子（Z1,Z0）と、桁上げ信号用の出力端子(Z2)とを有する。加算器1 Fには、それぞれが２ビットの２進数データである２つの入力データA,Bが入力され、加算器1 Fは、２つの入力データA,Bを加算して得られた２ビットの２進数データと桁上げ信号の出力データを出力する。
【００７８】
デコーダ400Fの２つのデコーダ400F−１，400F−２は、図５のデコーダ400C−１，400C−２と同様である。
【００７９】
配線ネットワーク200Fには、それぞれがデコードされた２つの４ビットデータが入力される。図１３に示すように、デコーダ400F−２からの４ビットデータが入力される４本の信号線と、エンコーダ300Fへの４ビットデータが出力される４本の信号線は、マトリックス状に配置される。マトリックスの各交点には、デコーダ400F−２からの信号線とエンコーダ300Fへの信号線とを接続あるいは非接続にする接続素子620が設けられる。各接続素子620は、図５の接続素子620と同じであり、２つのデータ端子と、２つのデータ端子の接続と非接続を制御する１つの制御入力端子を有する。制御入力端子には、デコーダ400F−１からの信号線が接続されている。すなわち、入力部101F1の入力端子(A1,A0）に入力された入力データAのデコードされたデータが制御入力として各制御入力端子に入力される。
【００８０】
図１３に示すように、デコーダ400F−２からの４本の信号線と、配線ネットワーク200Fからエンコーダ300Fへの４本の出力線とからなるマトリックスがあるとき、各出力線上に位置する４つの接続素子620の４つの制御入力端子には、それぞれデコーダ400F−１からの４本の信号線が接続されている。さらに、デコーダ400F−１からの４本の信号線は、各出力線毎にみると、各出力線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つにそれぞれ別々に接続されている。また、デコーダ400F−１からの４本の信号線は、各信号線毎についてみると、各信号線に接続された４つの接続素子620の４つの制御入力端子のいずれか１つにそれぞれ別々に接続されている。そして、２つの入力データの桁上げのある加算の出力が、エンコーダ300Fから出力されるように、デコーダ400F−１の信号線と、各接続素子620の制御入力端子とが配線によって接続される。
【００８１】
配線ネットワーク200Fは、さらに桁上げ計算用のネットワークを構成する１２個の接続素子620と、”0”（すなわちLレベル）の信号が供給されている３本のLレベル信号線とを含んでいる。
【００８２】
エンコーダ300Fは、図４のエンコーダ300Bと同様の構成を有する。さらに、図１３に示すように、エンコーダ300Fは、３本の桁上げ用信号線の信号が入力されるOR回路300F1を有する。第１の桁上げ用信号線C1には、デコーダ400F-2の第２、第３及び第４のAND回路の３本の信号線と第１のLレベル信号線L1との４つの交点に、それぞれ４つの接続素子620が設けられている。第２の桁上げ用信号線C2には、デコーダ400F-2の第３及び第４のAND回路の２本の信号線と第１及び第２のLレベル信号線L1,L2との４つの交点に、それぞれ４つの接続素子620が設けられている。第３の桁上げ用信号線C3には、デコーダ400F-2の第４のAND回路の信号線と第１、第２及び第３のLレベル信号線L1,L2,L3との４つの交点に、それぞれ４つの接続素子620が設けられている。３本の桁上げ用信号線C1,C2,C3は、OR回路300F1の入力端に接続される。OR回路300F1の出力は、出力端子（Z2）に出力される。
【００８３】
このように構成された加算器１Fは、図１２と同じ機能を実現する論理回路である。図１２の配線ネットワークでは、一方の入力がデコードされていないデータで処理されるのに対し、図１３の配線ネットワークでは、両方ともデコードされた値で処理される。
【００８４】
図１４は、図１３に示した加算回路の具体的な構成例を示す回路図である。図１４は、接続素子620としてｎチャネルトランジスタNTを用いた場合の構成例を示す。また、それぞれの出力線には、プリチャージ用のｐチャネルトランジスタPTのドレインが接続されている。演算を行う前に全てのｐチャネルトランジスタPTがオンとなるように制御され、配線ネットワーク200Fの出力がすべてHとなる。次に全てのpチャネルトランジスタPTがオフし、そして、データがデコーダ400F-1, 400F-2から配線ネットワーク200Fに供給され、各nチャネルトランジスタNTは、各ゲート入力に応じてオン/オフする。各出力線では、デコーダ400F-1からの出力がLの場合は、チャージされていた電荷が引き抜かれ、デコーダ400F-1からの出力がHの場合のみH状態が保持される。従って、ｎチャンネルトランジスタNTが動作した後は、図１３と同様の結果の信号が配線ネットワーク200Fから出力される。このような構成にすることにより、配線ネットワーク200F内のトランジスタ数が削減できると共に、プリチャージを行うことによって前の出力状態が消去され、消費電力の結果依存性を低減することが可能となる。
【００８５】
以上のように、上述した配線ネットワーク200Fの複数の接続素子620の一方の端子に入力Bのデコードデータを入力し、エンコーダ300 Fへの複数の出力線を複数の接続素子620の他方の端子に接続する。さらに、入力Aのデコードデータを制御入力として複数の接続素子620のそれぞれの制御入力端に入力することによって、配線ネットワーク200Fにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【００８６】
よって、図１３及び図１４に示すような、デコーダ400F、配線ネットワーク200F、エンコーダ300Fを用いることで桁上げのある加算器を実現することができる。このとき、デコーダ400F -1,400 F -2の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200F上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、桁上げのある加算処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【００８７】
（第７の実施の形態）
次に、図１５に基づき、本発明の第７の実施の形態に係わる論理回路の全体構成について説明する。図１５は、第７の実施の形態に係わる加算器の構成を示すブロック図である。本実施の形態の加算器は、桁上げ入力のある加算器である。  
図１５の加算器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。  
図１５の加算器1 Gは、入力部101Gと、デコーダ400Gと、配線ネットワーク200Gと、エンコーダ300Gと、出力部102Gとを含んで構成される。入力部101Gは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する、２つの入力部101G 1、101G 2を有する。デコーダ400Gは、入力部101G 2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダである。配線ネットワーク200Gは、デコーダ400Gからの４ビットデータと、入力部101G 1からの２ビットデータと、桁上げ入力データCIを入力して、４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、加算結果の４ビットデータをエンコーダ300Gに出力すると共に、桁上げのための４ビットデータをエンコーダ300Gに出力する。エンコーダ300Gは、入力された４ビットデータを２ビットデータに変換すると共に桁上げ信号（carry信号）を出力する。出力部102Gは、エンコーダ300Gの２ビットデータを出力するための一対の出力端子（Z1,Z0）と、桁上げ信号用の出力端子(Z2)とを有する。加算器1Gには、桁上げ入力データCIと、２つの２ビットの２進数データA,Bが入力され、加算器1Gは、２つの入力データA,Bを加算して得られた２ビットの２進数データと桁上げ信号の出力データを出力する。
【００８８】
デコーダ400Gは、図４のデコーダ400Bと同様である。
【００８９】
配線ネットワーク200Gは、複数の選択回路610を含んで構成される配線ネットワークである。配線ネットワーク200Gは、３段のセレクタを含むローテイトシフタ200G1を有する。ローテイトシフタ200G１の第１段目、第２段目及び第３段目の各セレクタは、それぞれ４つの選択回路610を含む。ローテイトシフタ200G1の出力は、桁上げの有無とは関係のない加算結果の出力である。
【００９０】
各選択回路610は、２つの入力（入力１と入力２）と、１つの制御入力と、１つの出力を有する。各選択回路610は、制御入力端に入力される制御入力に応じて、入力1と入力２のいずれかを一方を出力端に転送して出力する。図１２の場合と同様に、制御入力が0の場合は、各選択回路610の上側の入力１が出力端から出力され、制御入力が1の場合は、各選択回路610の下側の入力２が出力端から出力される。  
そして、１段目の４つの選択回路610の一方の入力端には、それぞれデコーダ400Gの第１から第４のAND回路から４つのデータ”0”,”1”,”2”,”3”が入力される。１段目の４つの、すなわち第１から第４の選択回路610の他方の入力端には、それぞれデコーダ400Gの第４、第１、第２及び第３のAND回路から４つのデータ”3”,”0”,”1”,”2” が入力される。すなわち、１段目の４つの選択回路610の他方の入力端には、それぞれ一方の入力端に接続されたAND回路の隣のAND回路の出力が接続される。１段目の４つの選択回路610のそれぞれの制御入力端には、制御入力として桁上げ入力データCIが入力される。
【００９１】
従って、CIが0の場合は、１段目のセレクタの出力”0”, “1”, “2”, “3”には、それぞれ、デコーダ400Eの出力”0”, “1”, “2”, “3”が出力され、CIが1の場合は，それぞれ、デコーダ400Eの出力”3”, ”0”, “1”, “2”が出力される。
【００９２】
２段目の第１から第４の４つの選択回路610の一方の入力端には、それぞれ１段目の第１から第４の４つの選択回路610からの４つの出力が入力される。２段目の第１から第４の４つの選択回路610の他方の入力端には、それぞれ１段目の第４、第１、第２及び第３の４つの選択回路610からの４つの出力が入力される。すなわち、２段目の４つの選択回路610のそれぞれの他方の入力端には、一方の入力端に接続された選択回路610の隣の選択回路610の出力が接続される。２段目の４つの選択回路610のそれぞれの制御入力端には、制御入力として入力データA0が入力される。
【００９３】
３段目の第１から第４の４つの選択回路610の一方の入力端には、それぞれ２段目の第１から第４の４つの選択回路610からの４つの出力が入力される。３段目の第１から第４の４つの選択回路610の他方の入力端には、それぞれ２段目の第３、第４、第１及び第２の４つの選択回路610からの４つの出力が入力される。すなわち、３段目の４つの選択回路610の他方の入力端には、それぞれ一方の入力端に接続された選択回路610の隣の隣の選択回路610の出力が接続される。３段目の４つの選択回路610のそれぞれの制御入力端には、制御入力として入力データA1が入力される。
【００９４】
配線ネットワーク200Gは、さらに桁上げ計算用のネットワークを構成する７つの選択回路610を含んでいる。第１の選択回路610-1ａの一方の入力端には、第４のAND回路からの出力が入力され、他方の入力端には、0(=”L”)が入力される。第１の選択回路610-1ａの制御入力端には、制御入力として入力データCIが入力される。そして、第２から第７の選択回路610-1b〜610-1gは、桁上げ結果を処理するセレクタを構成する。
【００９５】
第２の選択回路610-1bの一方の入力端には、第１の選択回路610-1aの出力が接続されている。第２の選択回路610-1bの他方の入力端には、１段目のセレクタの第４の選択回路の出力が接続されている。第２の選択回路610-1bの制御入力端には、制御入力として入力データA0が入力される。
【００９６】
第３の選択回路610-1cの一方の入力端には、第１の選択回路610-1aの出力が接続されている。第３の選択回路610-1cの他方の入力端には、0(=”L”)が入力される。第３の選択回路610-1cの制御入力端には、制御入力として入力データA0が入力される。
【００９７】
第４の選択回路610-1dの一方の入力端には、第２のセレクタの第３の選択回路の出力が接続されている。第３の選択回路610-1dの他方の入力端には、第２の選択回路610-1bの出力が入力される。第４の選択回路610-1dの制御入力端には、制御入力として入力データA1が入力される。
【００９８】
第５の選択回路610-1eの一方の入力端には、第２のセレクタの第４の選択回路の出力が接続されている。第５の選択回路610-1eの他方の入力端には、第３の選択回路610-1cの出力が入力される。第５の選択回路610-1eの制御入力端には、制御入力として入力データA1が入力される。
【００９９】
第６の選択回路610-1fの一方の入力端には、第２の選択回路610-1bの出力が接続されている。第６の選択回路610-1fの他方の入力端には、0(=”L”)が入力される。第６の選択回路610-1fの制御入力端には、制御入力として入力データA1が入力される。
【０１００】
第７の選択回路610-1gの一方の入力端には、第３の選択回路610-1cの出力が接続されている。第７の選択回路610-1gの他方の入力端には、0(=”L”)が入力される。第７の選択回路610-1gの制御入力端には、制御入力として入力データA1が入力される。
【０１０１】
１段目のセレクタの４つの選択回路610と、桁上げ計算用のネットワークの第１の選択回路610-1aと、を含めて構成される初段のセレクタの出力は、出力”0”, “1”, “2”, “3”, “4”である。２段目のセレクタの４つの選択回路610と、桁上げ計算用のネットワークの第２及び第３の選択回路610-1b,610-1cと、を含めて構成される中段のセレクタの出力は、出力”0”, “1”, “2”, “3”, “4” , “5”, “6”である。３段目のセレクタの４つの選択回路610と、桁上げ計算用のネットワークの第４、第５、第６及び第７の選択回路610-1d,610-1e,610-1f,610-1gと、を含めて構成される後段のセレクタの出力は、出力”0”, “1”, “2”, “3”, “4” , “5”, “6” , “7”, “8”である。初段のセレクタは、加算のための配線ネットワークの前に設けられた、１の加算を実現するためのセレクタ段である。
【０１０２】
後段のセレクタの制御入力には、A1が入力される。A1は、２進数の２桁目であるので、10進数の２の意味を持つ。従って、A1が1のときは、2を加えることに対応する。後段のセレクタの上側の入力が選択されている場合の出力(A1が0の場合の出力)は、中段のセレクタの出力”0”, “1”, “2”, “3”, “4” , L,Lであり、下側の入力が選択されている場合の出力(A1が1の場合の出力)は、”2”, “3”, “0”, “1”, “2”, “3” , “4”, “5”である。  
エンコーダ300Gは、図４のエンコーダ300Bと同様の構成を含む。すなわち、図１５に示すように、エンコーダ300Gは、３段目のセレクタの４つの選択回路610の出力を、２つのOR回路に入力し、その２つのOR回路の出力を出力端子（Z1,Z0）に出力する。
【０１０３】
また、エンコーダ300Eは、桁上げ計算用のネットワークの第４、第５、第６及び第７の選択回路610-1d,610-1e,610-1f,610-1gの４つの出力“4”, “5” , “6”, “7”を入力とするOR回路300G1を含み、そのOR回路300G1の出力が、桁上げ信号として、出力端子（Z2）に出力される。
【０１０４】
このような構成を用いることで、桁上げが発生した場合は、３段目のセレクタの出力により、図１２と同様の結果が得られると共に、後段のセレクタの４つの出力“4”, “5” , “6”, “7”のいずれかがHになる。４つの出力“4”, “5” , “6”, “7”の論理和によって桁上げビットを計算することが可能となる。
【０１０５】
以上のように、配線ネットワーク200Gには、桁上げ入力があると、さらに１が加えられるように初段のセレクタが設けられている。さらに、配線ネットワーク200Gの桁上げ計算用のネットワークは、加算によって桁上げが発生した場合、OR回路300G1の４つの入力端のいずれか1つの入力がＨとなる。すなわち、図１５の例では、それぞれが0から3までの２つのデータ入力に対して、４以上の加算結果が出る場合、OR回路300E1の３つの入力(第２、第３及び第４の選択回路610b,610c,610dの３つの出力“4”, “5”, “6”)のいずれか１つがＨとなる。
【０１０６】
以上のように、上述した配線ネットワーク200Gの複数の選択回路610のそれぞれの制御入力端には、入力データBとは別の入力データAと桁上げデータが制御入力として入力される。その結果、入力Bのデコードデータが入力された複数の選択回路610の出力が変更されて、配線ネットワーク200Gにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【０１０７】
よって、図１５に示すような、デコーダ400G、配線ネットワーク200G、エンコーダ300Gを用いることで桁上げ入力のある加算器を実現することができる。このとき、デコーダ400Gの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200G上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、桁上げ入力のある加算処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１０８】
（第８の実施の形態）
次に、図１６に基づき、本発明の第８の実施の形態に係わる論理回路の全体構成について説明する。図１６は、第８の実施の形態に係わる加算器の構成を示すブロック図である。本実施の形態の加算器は、桁上げ入力のある加算器である。  
図１６の加算器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。  
図１６の加算器1 Hは、入力部101Hと、デコーダ400Hと、配線ネットワーク200Hと、エンコーダ300Hと、出力部102Hとを含んで構成される。入力部101Hは、それぞれが２ビットの入力データA,Bを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する２つの入力部101H1、101H2を有する。デコーダ400Hは、入力部101H 1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400H−１と、入力部101H 2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400H−２とを含んで構成される。配線ネットワーク200Hは、デコーダ400H−１からの４ビットのデコードデータと、デコーダ400H−２からの４ビットのデコードデータと、桁上げ入力データCIとを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、加算結果の４ビットデータをエンコーダ300Hに出力すると共に、桁上げのための４ビットデータをエンコーダ300Hに出力する。
【０１０９】
エンコーダ300Hは、入力された４ビットデータを２ビットデータに変換すると共に桁上げ信号（carry信号）を出力する。出力部102Hは、エンコーダ300Hの２ビットデータを出力するための一対の出力端子（Z1,Z0）と、桁上げ信号用の出力端子(Z2)とを有する。加算器1 Hには、それぞれが２ビットの２進数データである２つの入力データA,Bが入力され、加算器1 Hは、２つの入力データA,Bを加算して得られた２ビットの２進数データと桁上げ信号の出力データを出力する。
【０１１０】
デコーダ400Hの２つのデコーダ400H−１，400H−２は、図５のデコーダ400C−１，400C−２と同様である。
【０１１１】
配線ネットワーク200Hは、デコーダ400H-2からの４つの出力を入力とする、桁上げ入力処理を行うセレクタ200H1を含む。セレクタ200H1は、５つの選択回路610を含み、４つの選択回路（第１から第４の選択回路）610の一方の入力端には、それぞれデコーダ400H-2の第１から第４の出力が入力される。残りの１つの選択回路（第５の選択回路）610の一方の入力端には、”0”（=L）の信号が入力される。第１の選択回路610の他方の入力端には、”0”（=L）の信号が入力される。第２から第５の選択回路610の他方の入力端には、デコーダ400H-2の第１から第４のAND回路の出力”0”, “1”, “2”, “3”が入力される。セレクタ200H1の第１から第５の選択回路610の出力は、”0”, “1”, “2”, “3”, “4”とする。以上の構成により、桁上げ入力がある場合に、出力に1を加えるように、セレクタ200H1は、５つの出力を変更する。
【０１１２】
配線ネットワーク200Hには、セレクタ200H1の５つの出力と”0”（=L）の信号の６つの出力とを含む１１本の信号線のデータと、デコーダ400H-1からの４ビットデータが入力される。図１６に示すように、その１１本の信号線と、エンコーダ300Hへの８ビットデータが出力される８本の信号線は、マトリックス状に配置される。配線ネットワーク200Hの出力は、”0”, “1”, “2”, “3”, “4” , “5”, “6”, “7”とする。
【０１１３】
マトリックスの各交点には、図１６に示すように、１１本の信号線とエンコーダ300Hへの８本の出力線とを接続あるいは非接続にする接続素子620が設けられる。なお、図１６に示すように、全ての交点に接続素子620が設けられていない。各接続素子620は、図５の接続素子620と同じであり、２つのデータ端子と、２つのデータ端子の接続と非接続を制御する１つの制御入力端子を有する。制御入力端子には、デコーダ400H−１からの信号線が接続されている。すなわち、入力部101H 1の入力端子(A1,A0）に入力された入力データAのデコードされたデータが各制御入力端子に入力される。すなわち、接続素子620を含む配線ネットワーク200Hは、セレクタ200H1において桁上げ処理がなされた結果と、デコーダ400H-1においてデコードされた結果との加算を行う。
【０１１４】
図１６に示すように、１１本の信号線を、第１から第１１までの順に並べた場合、第１から第３までの信号線は、”0”（=L）の信号線である。第４から第８までの信号線は、セレクタ200H１の第１から第５の選択回路610の出力”0”, “1”, “2”, “3”, “4”に対応する信号線である。第９から第１１までの信号線は、”0”（=L）の信号線である。
【０１１５】
図１６に示すように、エンコーダ300Hへの８つの出力”0”, “1”, “2”, “3”, “4” , “5”, “6”, “7”のそれぞれと、１１本の信号線の中の４つの信号線との交点に、接続素子620が設けられている。
【０１１６】
第１の出力線と第１から第４の信号線との各交点に、接続素子620が設けられている。第２の出力線と第２から第５の信号線との各交点に、接続素子620が設けられている。以下同様にして、各交点に、接続素子620が設けられている。
【０１１７】
すなわち、第ｎ番目の出力線と、第ｎから第（n+3）番目の信号線との各交点に、接続素子620が設けられている。なお、図１６の場合は、ｎは１から８である。  
そして、デコーダ400H-1の第４の出力”3”は、第ｎ番目の出力線と、第ｎ番目の信号線との各交点に設けられた接続素子620の制御入力端子に接続される。デコーダ400H-1の第３の出力”2”は、第ｎ番目の出力線と、第(ｎ+1)番目の信号線との各交点に設けられた接続素子620の制御入力端子に接続される。デコーダ400H-1の第２の出力”1”は、第ｎ番目の出力線と、第(ｎ+2)番目の信号線との各交点に設けられた接続素子620の制御入力端子に接続される。デコーダ400H-1の第１の出力”0”は、第ｎ番目の出力線と、第(ｎ+3)番目の信号線との各交点に設けられた接続素子620の制御入力端子に接続される。
【０１１８】
配線ネットワーク200Hの８つの出力は、エンコーダ300Hに入力される。
【０１１９】
エンコーダ300Hは、図４のエンコーダ300Bと同様の構成を有する。さらに、図１６に示すように、エンコーダ300Hは、４本の桁上げ用信号線の信号が入力されるOR回路300H1を有する。
【０１２０】
加算結果を出力する２つの出力端子（Z1,Z0）には、それぞれ第１及び第２のOR回路の出力が接続されている。第１のOR回路の４つの入力は、それぞれ第２，第４、第６及び第８の出力が接続されている。第２のOR回路の４つの入力は、それぞれ第３，第４、第７及び第８の出力が接続されている。
【０１２１】
桁上げ結果を出力する出力端子（Z2）には、第３のOR回路300H1の出力が接続されている。第３のOR回路300H1の４つの入力は、それぞれ第５，第６、第７及び第８の出力が接続されている。
【０１２２】
以上のような構成により、セレクタ200H1において桁上げ処理がなされた結果は、0から4の５つの値のいずれか１つをとる。また、デコーダ400H-1の出力は、0から３の４つの値のいずれか１つをとるので、その加算結果は、0から7の８つの値のいずれか１つをとり得る。従って、配線ネットワーク200Hの出力は８本となり、この８本の出力線の中のいずれか１つが”1”(=H)となり、残りは”0”(=L)となるように動作する。
【０１２３】
例えば入力Aが2、入力Bが3、かつ桁上げ入力CIが0だった場合、桁上げ処理回路であるセレクタ200H1の出力は、”3”のみがHとなり、残りの出力は、Lとなる。複数の接続素子620の中で、制御入力がデコーダ400H-1の出力”2”に接続されたもののみが導通状態となる。従って、配線ネットワーク200Hの出力”5”のみがHとなり、残りの出力はLとなる。以上のような動作により、配線ネットワーク200Hからは、加算演算されたデータが出力され、エンコーダ300Hに入力される。エンコーダ300Hは、入力されたデータをエンコードし、この例の場合、2進数の101が出力される。以上のような動作により、加算処理を実現することができる。
【０１２４】
なお、図１２から図１５の回路では、加算結果の出力線と、桁上げの出力線とが有していたが、本実施の形態の加算器は、加算結果と桁上げの出力線はそれぞれ専用の出力線ではないように構成されている。
【０１２５】
このように構成された加算器１Hは、図１３と同じ機能を実現すると共に、桁上げ入力を有する論理回路である。また、本実施の形態においても、桁上げの有無にかかわらず、配線ネットワークの複数の出力線の中の1つだけがHとなるため、消費電力の変動は抑えられる。
【０１２６】
以上のように、上述した配線ネットワーク200Hの複数の選択回路には、入力Bのデコードデータと桁上げデータを入力して桁上げ処理データを生成する。複数の接続素子620の一方の端子に桁上げ処理データを入力し、エンコーダ300Hへの複数の出力線を複数の接続素子620の他方の端子に接続する。さらに、入力Aのデコードデータを制御入力として複数の接続素子620のそれぞれの制御入力端に入力することによって、配線ネットワーク200Hにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【０１２７】
よって、図１６に示すような、デコーダ400H、配線ネットワーク200H、エンコーダ300Hを用いることで桁上げ入力のある加算器を実現することができる。このとき、デコーダ400H -1,400 H -2の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200H上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、桁上げ入力のある加算処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１２８】
（第９の実施の形態）
次に、図１７に基づき、本発明の第９の実施の形態に係わる論理回路の全体構成について説明する。図１７は、第９の実施の形態に係わる循環シフト器の構成を示すブロック図である。  
図１７の循環シフト器の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図１７の循環シフト器1Iは、入力部101Iと、デコーダ400Iと、配線ネットワーク200I と、エンコーダ300Iと、出力部102Iとを含んで構成される。循環シフト器1Iは、４ビットの2進数の入力データを0から3ビットのいずれかだけ右シフトする回路の例である。
【０１２９】
入力部101Iは、４ビットの入力データを入力するための４つの入力端子(Bit0,Bit1,Bit2,Bit3）を有する入力部101I1と、２つの入力端子（Sft0,Sft1）を有する入力部101I2を含む。デコーダ400Iは、入力部101I1の４つの入力端子（Bit0,Bit1,Bit2,Bit3）の４ビットデータを、入力部101I2の入力データに基づいて、１６ビットデータに変換するデコーダである。配線ネットワーク200Iは、デコーダ400Iからの４ビットのデコードデータと、入力部101I2からの２ビットのシフト量データを入力して、１６ビットデータ（あるいは１６個の配線）を入れ替える変換を行い、１６ビットデータを出力する。エンコーダ300Iは、入力された１６ビットデータを４ビットデータに変換して、出力部102Iに出力する。出力部102Iは、エンコーダ300Iの４ビットデータを出力するための４つの出力端子（Bit0,Bit1,Bit2,Bit3）を有する。循環シフト器1Iには、４ビットの２進数の入力データと、２ビットのシフト量データとが入力され、循環シフト器1Iは、入力されたシフト量に応じてシフトされた１６ビットの２進数の出力データを出力する。
【０１３０】
デコーダ400Iは、ここでは、１６個のAND回路を含み、１６個のAND回路の入力端には、４ビットで表される１６個（０から１５）のそれぞれの値に対して、１つのAND回路からのみ出力が出るように、インバータ回路が設けられている。デコーダ400Iは、４ビットの入力から１６ビットの出力を生成する。デコーダ400Iの各AND回路の出力は、対応する配線ネットワーク200Iの各入力端に接続されている。配線ネットワーク200Iの各出力は、エンコーダ300Iの各入力端に接続されている。
【０１３１】
図１７では、例えば、４ビットの入力データが(0,0,0,0)のときは、デコーダ400Iの出力端子D0のみに出力が出るように、４つのインバータ回路がそれぞれ４つの入力端に設けられた、一番目のAND回路は構成されている。また、４ビットのデータが(0,0,0,1)のときは、デコーダ400Iの出力端子D1のみに出力が出るように、３つのインバータ回路がそれぞれ３つの入力端に設けられた、２番目のAND回路が設けられている。同様に、４ビットのデータが(1,1,1,1)のときは、デコーダ400Iの出力端子D15のみに出力が出るように、インバータ回路を入力端に有しないAND回路が設けられている。すなわち、デコーダ400Iの出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。
【０１３２】
配線ネットワーク200Iは、複数の選択回路610を含んで構成される配線ネットワークである。配線ネットワーク200Iは、２段のセレクタを有する。第１段目のセレクタは、１４個の選択回路610を含む。第２段目のセレクタは、１２個の選択回路610を含む。
【０１３３】
なお、デコーダ400Iの第１の出力端子D0の出力は、配線ネットワーク200Iの第１の入力端に入力され、そのまま第１の出力端から出力される。同様に、デコーダ400Iの第１６の出力端子D15の出力は、配線ネットワーク200Iの第１５の入力端に入力され、そのまま第１５の出力端から出力される。
【０１３４】
各選択回路610は、２つの入力（入力１と入力２）と、１つの制御入力と、１つの出力を有する。各選択回路610は、制御入力に応じて、入力1と入力２のいずれかを一方を出力端に転送して出力する。図１７の場合、制御入力が0の場合は、各選択回路610の上側の入力１が出力端から出力され、制御入力が1の場合は、各選択回路610の下側の入力２が出力端から出力される。  
そして、１段目の１４個の選択回路（第１から第１５までの選択回路）610の一方の入力端には、それぞれデコーダ400Iの第２から第１５のAND回路から１４個のデータが入力される。１段目の第２から第１５の選択回路610の他方の入力端には、それぞれ、第９，第２，第１０，第３，第１１，第４，第１２，第５，第１３，第６，第１４，第７，第１５及び第８のAND回路から１４個のデータが入力される。１段目の１４個の選択回路610のそれぞれの制御入力端には、制御入力として入力データSft0が入力される。
【０１３５】
従って、１段目のセレクタの出力には、Sft0が0の場合は、それぞれ、デコーダ400Iの出力が出力され、Sft0が1の場合は，それぞれ、デコーダ400Iの出力端子D0,D8,D1,D9,D2,D10,D3,D11,D4,D12,D5,D13,D6,D14,D7,D15の出力が出力される。
【０１３６】
２段目の第１から第４，第５から第８，及び第９から第１２の１２個の選択回路610の一方の入力端には、それぞれ、１段目の第１から第４、第６から第９及び第１１から第１４の１２個の選択回路610からの１２個の出力が入力される。
【０１３７】
２段目の第１から第４，第５から第８，及び第９から第１２の１２個の選択回路610の他方の入力端には、それぞれ１段目の第４、第８、第１２、第１、第９、第１３、第２、第６、第１４、第３、第７及び第１１の１２個の選択回路610からの１２個の出力が入力される。
【０１３８】
なお、第１段目の第５の選択回路610の出力は、そのまま配線ネットワーク200Iの第６の出力端に接続されている。同様に、第１段目の第１０の選択回路610の出力は、そのまま配線ネットワーク200Iの第１１の出力端に接続されている。
【０１３９】
２段目の第１から第４，第５から第８，及び第９から第１２の１２個の選択回路610の出力は、それぞれ、配線ネットワーク200Iの第２から第５，第７から第１０及び第１２から第１５の出力端に接続されている。２段目の１２個の選択回路610のそれぞれの制御入力端には、制御入力として入力データSft1が入力される。
【０１４０】
配線ネットワーク200Iは、２段のセレクタを含んで構成されている。1段目のセレクタは、１ビットシフトとシフト無しを切り替えるためのセレクタであり、２段目のセレクタは、２ビットシフトとシフト無しを切り替えるためのセレクタである。この２つのセレクタによって、入力データの0から3ビットのシフトを実現している。  
図１８は、2進数の入力データをシフトしたときの、入力と結果を示す表である。図１７の最初のセレクタは、この表の1ビットシフトを実現するためのセレクタであり、２段目のセレクタは、この表の２ビットシフトを実現するためのセレクタである。
【０１４１】
なお、図１７では、シフト量(セレクタへの制御入力)は、デコードされていない値を用いたものであるが、シフト量をデコードした値を用い、接続素子620を含む配線ネットワークを用いた構成でも実現してもよい。
【０１４２】
エンコーダ300Iは、配線ネットワーク200Iの１６個の出力端からの信号を入力とし、４つの出力端子（Bit0,Bit1,Bit2,Bit3）を有する出力部102Iから４ビットデータを出力する。
【０１４３】
エンコーダ300Iは、第１から第４のOR回路を有する。第１のOR回路の８つの入力端には、配線ネットワーク200Iの第２，第４，第６，第８，第１０，第１２，第１４，第１６の出力端が接続されている。第２のOR回路の８つの入力端には、配線ネットワーク200Iの第３，第４，第７，第８，第１１，第１２，第１５，第１６の出力端が接続されている。第３のOR回路の８つの入力端には、配線ネットワーク200Iの第５から第８，及び第１３から第１６の出力端が接続されている。第４のOR回路の８つの入力端には、配線ネットワーク200Iの第９から第１６の出力端が接続されている。第１、第２、第３及び第４のOR回路の出力は、それぞれ、４つの出力端子（Bit0,Bit1,Bit2,Bit3）に接続されている。
【０１４４】
このような構成を用いることで、４ビットの2進数を0から3ビット右シフトする循環シフト機能を実現することが可能となる。
【０１４５】
以上のように、上述した配線ネットワーク200Iの複数の選択回路610のそれぞれの制御入力端には、入力データBとは別のシフト量データが制御入力として入力される。その結果、入力Bのデコードデータが入力された複数の選択回路610の出力が変更されて、配線ネットワーク200Iにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【０１４６】
よって、図１７に示すような、デコーダ400I、配線ネットワーク200I、エンコーダ300Iを用いることで循環シフト回路を実現することができる。このとき、デコーダ400Iの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200I上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、循環シフト処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１４７】
（第１０の実施の形態）
次に、図１９に基づき、本発明の第１０の実施の形態に係わる論理回路の全体構成について説明する。図１９は、第１０の実施の形態に係わるAND回路の構成を示すブロック図である。  
図１９のAND回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図１９のAND回路1Jは、入力部101Jと、デコーダ400Jと、配線ネットワーク200Jと、エンコーダ300Jと、出力部102Jとを含んで構成される。AND回路1Jは、共に３ビットの２つの入力データの論理積をとる回路の例である。
【０１４８】
論理積(AND)では、出力結果に対して複数の入力条件が存在するので、単純なビットの入れ替えでは実現できない。例えば、入力1が01で、出力が00の場合、入力2として、10または00が取り得る。従って、入力1と入力2の両方に依存した配線の入れ替えが必要となる。
【０１４９】
図１９のAND回路１Jは、それぞれ、３ビットの入力データを入力するための２つの入力端子（A2,A1,A0）,（B2,B1,B0）を有する入力部101J1、101J2と、入力部101J2からの３ビットのデータを８ビットのデータに変換するデコーダ400Jと、８ビットのデータ（あるいは配線）を入れ替える変換を行う配線ネットワーク200Jと、８ビットのデータを３ビットのデータに変換するエンコーダ300Jと、エンコーダ300Jの３ビットのデータを出力するための３つの出力端子（Z2〜0）を有する出力部102Jとを含んで構成される。AND回路１Jには、それぞれ３ビットの２進数データである２つの入力データA,Bが入力され、AND回路１Jは、３ビットの２進数の出力データを出力する。
【０１５０】
デコーダ400Jは、図２のデコーダ400Aと同様の構成である。よって、デコーダ400Jの出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。デコーダ400Jの各AND回路の出力は、対応する配線ネットワーク200Jの各入力端に接続されている。配線ネットワーク200Jの各出力は、エンコーダ300Jの各入力端に接続されている。
【０１５１】
エンコーダ300Jも、図２のエンコーダ300Aと同様の構成である。  
AND機能を実現する配線ネットワーク200Jは、入力データと制御入力の信号に依存してデータの入れ替えを行うデータ依存スイッチ素子630を多段に接続して構成されている。
【０１５２】
配線ネットワーク200Jは、第１、第２及び第３のステージを含む。各ステージには、４つのデータ依存スイッチ素子630が含まれている。データ依存スイッチ素子630は、２入力、２出力及び１制御入力のための２つの入力端と、２つの出力端と、１つの制御入力端を有する。データ依存スイッチ素子630は、制御信号である制御入力が1の場合、入力されたデータを入れ替えずに、上側の入力は上側の出力に、そして下側の入力は下側の出力に、というように、そのまま出力し、制御入力が0の場合、入力されたデータに依存してデータが入れ替えられる。すなわち、データに1がある場合、必ず上側の出力端に出力され、下側の出力端は0となるように入れ替えられる。
【０１５３】
デコーダ400Jからの８つの出力は、第１のステージの４つのデータ依存スイッチ素子630の８つの入力端に入力される。第１ステージの４つのデータ依存スイッチ素子630の８つの出力は、配線部を介して、第２のステージの４つのデータ依存スイッチ素子630の８つの入力端に入力される。さらに、第２ステージの４つのデータ依存スイッチ素子630の８つの出力は、配線部を介して、第３のステージの４つのデータ依存スイッチ素子630の８つの入力端に入力される。配線ネットワーク200Jにおいて、第１から第８の入力端は、それぞれ第１から第８の出力端に接続されるが、次に述べるように一部配線の入れ替えが行われる。
【０１５４】
第１と第２のステージ間の配線部の配線は、第１の配線の入れ替え部を有する。具体的には、図１９に示すように、第１ステージの第１のデータ依存スイッチ素子630-1-1の下側の出力端が、第２ステージの第２のデータ依存スイッチ630-2-2の上側の入力端と接続され、第１ステージの第２のデータ依存スイッチ素子630-1-2の上側の出力端が、第２ステージの第１のデータ依存スイッチ630-2-1の下側の入力端と接続され、第１ステージの第３のデータ依存スイッチ素子630-1-3の下側の出力端が、第２ステージの第４のデータ依存スイッチ630-2-4の上側の入力端と接続され、第１ステージの第４のデータ依存スイッチ素子630-1-4の上側の出力端が、第２ステージの第３のデータ依存スイッチ630-2-3の下側の入力端と接続されるように、配線は入れ替えられる。
【０１５５】
第２と第３のステージ間の配線部の配線も、第２の配線の入れ替え部を有する。具体的には、図１９に示すように、第２ステージの第１のデータ依存スイッチ素子630-2-1の下側の出力端が、第３ステージの第２のデータ依存スイッチ630-3-2の上側の入力端と接続され、第２ステージの第２のデータ依存スイッチ素子630-2-2の上側の出力端が、第３ステージの第３のデータ依存スイッチ630-3-3の上側の入力端と接続され、第２ステージの第２のデータ依存スイッチ素子630-2-2の下側の出力端が、第３ステージの第４のデータ依存スイッチ630-3-4の上側の入力端と接続され、第２ステージの第３のデータ依存スイッチ素子630-2-3の上側の出力端が、第３ステージの第１のデータ依存スイッチ630-3-1の下側の入力端と接続され、第２ステージの第３のデータ依存スイッチ630-2-3の下側の入力端が、第３ステージの第２のデータ依存スイッチ630-3-2の下側の入力端と接続され、第２ステージの第４のデータ依存スイッチ630-2-4の上側の入力端が、第４ステージの第３のデータ依存スイッチ630-3-3の下側の入力端と接続されるように、配線は入れ替えられる。
【０１５６】
さらに、第３ステージの４つのデータ依存スイッチ素子630の８つの出力は、エンコーダ300Jの第１から第８の入力端に接続される。このとき、図１９に示すように、第３ステージの４つのデータ依存スイッチ素子630の第１から第８の出力端は、それぞれ、エンコーダの第１、第５、第３、第７、第２、第６，第４、及び第８の入力端に接続されるように、配線ネットワーク200Jの第３ステージの４つのデータ依存スイッチ素子630とエンコーダ300Jとの間の配線は、第３の配線の入れ替え部を有する。
【０１５７】
データ依存スイッチ630は、図１９に示すように、２つのセレクタ631，632と、１つのOR回路とを含む。上側の入力端（A）と下側の入力端（B）は、それぞれ、２つのセレクタ631，632の一方の入力端（１）と、OR回路633の２つの入力端に接続されている。第１のセレクタ631の他方の入力端（０）には、OR回路633の出力端が接続され、第２のセレクタ631の他方の入力端（０）には、”0”(=L)が入力される。２つのセレクタ631，632には、制御入力端（C）が接続されている。２つのセレクタ631，632の出力は、それぞれ上側と下側の出力端（X）,(Y)に接続されている。
【０１５８】
第１ステージの４つのデータ依存スイッチ素子630のそれぞれの制御入力端には、入力部101J1のA0が入力され、第２ステージの４つのデータ依存スイッチ素子630のそれぞれの制御入力端には、入力部101J1のA1が入力され、第３ステージの４つのデータ依存スイッチ素子630のそれぞれの制御入力端には、入力部101J1のA2が入力される。
【０１５９】
次に、図１９の論理回路の動作を、例を用いて説明する。  
例として、２つの入力A＝010、B＝011が入力された場合の動作を説明する。B＝011であるので、デコーダ400Jの出力は、00010000となる。すなわち、D3のみがHで、残りの信号はLとなる。データ依存スイッチ素子630-1-2の上側の入力端には0、下側の入力端には1、制御入力端には0が入力される。制御入力が0(=A0)であるので、入力データに依存してデータが入れ替えられる。データの一方が1であるので、そのデータが上側の出力端に出力され、下側の出力端には0が出力される。
【０１６０】
よって、第１ステージの出力は、00100000(=010)となり、最下位ビットがAの最下位ビットとの論理積がとられた結果となる。同様に第２ステージでも処理が行われるが制御入力が1(=A1)であるので、上下が交換されること無く出力される。第三ステージでは、データ依存スイッチ素子630-3-2の上側の入力端にHが入力され、それ以外の入力端にはLが入力される。スイッチ素子630-3-2では、制御入力には0が入力されるのでデータに依存して交換が行われるが、上側の出力にHが来るように出力される。従って、エンコーダ300Jの入力には、00100000(=010)が入力され、論理積の演算結果として010(=2)が出力される。
【０１６１】
以上のような構成を用いることで、それぞれ３ビットの2進数の論理積機能を実現することが可能となる。
【０１６２】
以上のように、0から７までの８個のデータ入力に対して、デコーダ400Jの８個の出力のうち、いずれか１つだけがＨとなるようにして、論理積機能を実現することができる。
【０１６３】
以上のように、上述した配線ネットワーク200Jの複数のデータ依存スイッチ素子630のそれぞれの制御入力端には、入力データBとは別の入力データが制御入力として入力される。その結果、入力Bのデコードデータが入力された複数のデータ依存スイッチ素子630の出力が変更されて、配線ネットワーク200Jにおける入力Bのデコードデータのビット位置の入れ替えが行われる。
【０１６４】
よって、図１９に示すような、デコーダ400J、配線ネットワーク200J、エンコーダ300Jを用いることで論理積回路を実現することができる。このとき、デコーダ400Jの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200J上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、論理積回路処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１６５】
（第１１の実施の形態）
次に、図２０に基づき、本発明の第１１の実施の形態に係わる論理回路の全体構成について説明する。図２０は、第１１の実施の形態に係わるAND回路の構成を示すブロック図である。  
図２０のAND回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２０のAND回路1Kは、入力部101Kと、デコーダ400Kと、配線ネットワーク200Kと、エンコーダ300Kと、出力部102Kとを含んで構成される。AND回路1 Kは、共に２ビットの２つの入力データの論理積をとる回路の例である。
【０１６６】
入力部101Kは、それぞれが２ビットの入力データを入力するための複数の（ここでは一対の）入力端子(A1,A0）,（B1,B0）を有する２つの入力部101K 1、101K 2を有する。デコーダ400Kは、入力部101K1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400K−１と、入力部101K 2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400K−２とを含んで構成される。配線ネットワーク200Kは、デコーダ400K−１からの４ビットのデコードデータと、デコーダ400K−２からの４ビットのデコードデータを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、４ビットデータを出力する。エンコーダ300K は、入力された４ビットデータを２ビットデータに変換する。出力部102Kは、エンコーダ300Kの２ビットデータを出力するための一対の出力端子（Z1,Z0）を有する１つの出力部を有する。AND回路1 Kには、それぞれが２ビットの２進数データである２つの入力データA,Bが入力され、AND回路1 Kは、２つの入力データA,Bの論理積をとって２ビットの２進数の出力データを出力する。
【０１６７】
デコーダ400Kの２つのデコーダ400K−１，400K−２は、図５の２つデコーダ400C-1, 400C-2と同様の構成である。デコーダ400Kの各AND回路の出力は、対応する配線ネットワーク200Kの各入力端に接続されている。配線ネットワーク200Kの各出力は、エンコーダ300Kの各入力端に接続されている。
【０１６８】
図２０の２つのデコーダ400K−１，400K−２の動作は、図５で説明したデコーダ400Bと同様であるので、説明は省略する。また、エンコーダ300Kも、図５で説明したエンコーダ300Cと同様であるので、説明は省略する。
【０１６９】
配線ネットワーク200Kには、それぞれがデコードされた２つの４ビットデータと、接地電位（GND）が入力される。配線ネットワーク200Kは、接地電位（GND）に接続されたGND線を含む。図２０に示すように、GND線と、デコーダ400K−１からの４ビットデータの信号線は、図２０に示すように１６本の信号線に変換される。その１６本の信号線と、エンコーダ300Kへの４ビットデータが出力される４本の出力線は、マトリックス状に配置される。マトリックスの各交点には、１６本の信号線とエンコーダ300Kへの出力線とを接続あるいは非接続にする接続素子620が設けられる。各接続素子620は、２つのデータ端子と、２つのデータ端子の接続と非接続を制御する１つの制御入力端子を有する。制御入力端子には、デコーダ400K−２からの信号線が接続されている。すなわち、入力部101K２の入力端子(B1,B0）に入力された入力データのデコードされたデータが接続素子620の各制御入力端子に入力される。
【０１７０】
図２０に示すように、１６本の信号線の内、第１から第４の信号線は、それぞれデコーダ400K-1の第１から第４の出力と接続されている。１６本の信号線の内、第５から第８の信号線は、それぞれGND線、デコーダ400K-1の第１と第２の２つの出力を入力とするOR回路200K1の出力、GND線、及びデコーダ400K-1の第３と第４の２つの出力を入力とするOR回路200K2の出力と接続されている。１６本の信号線の内、第９から第１２の信号線は、それぞれGND線、GND線、デコーダ400K-1の第１と第３の２つの出力を入力とするOR回路200K3の出力、及びデコーダ400K-1の第２と第４の２つの出力を入力とするOR回路200K4の出力と接続されている。１６本の信号線の内、第１３から第１６の信号線は、それぞれGND線、GND線、GND線、及びデコーダ400K-1の第１から第４の４つの出力を入力とするOR回路200K5の出力と接続されている。
【０１７１】
図２０に示すように、１６本の信号線と、配線ネットワーク200Kからエンコーダ300Kへの４本の出力線とからなるマトリックスがあるとき、各出力線上に位置する４つの接続素子620の４つの制御入力端子には、それぞれデコーダ400K−２からの４本の信号線が接続されている。具体的には、デコーダ400K−２からの４本の信号線の内、第１の信号線は、それぞれ、１６本の信号線の内の第１から第４の信号線に接続された接続素子620の４つの制御入力に接続されている。デコーダ400K−２の第２の信号線は、それぞれ、１６本の信号線の内の第５から第８の信号線に接続された接続素子620の４つの制御入力に接続されている。デコーダ400K−２の第３の信号線は、それぞれ、１６本の信号線の内の第９から第１２の信号線に接続された接続素子620の４つの制御入力に接続されている。デコーダ400K−２の第４の信号線は、それぞれ、１６本の信号線の内の第１３から第１６の信号線に接続された接続素子620の４つの制御入力に接続されている。
【０１７２】
以上の構成にかかるAND回路によれば、配線ネットワーク200Kは、入力Bが00の場合は、入力Aによらず結果が00となる。入力Bが01の場合、入力Aが01または11のときは、結果は01となり、それ以外のときは、結果は00となる。入力Bが10の場合、入力Aが10または11のときは、結果は10で、それ以外のときは、結果は00となる。入力Bが11の場合は、入力Aの値がそのまま出力されるように構成される。
【０１７３】
以上のように、図２０に示すような、デコーダ400K、配線ネットワーク200K、エンコーダ300Kを用いることで論理積回路を実現することができる。
【０１７４】
このとき、配線ネットワーク上でアクティブになる信号は，どのような入力に対しても1つのみであり、消費電力の変動は抑えられる。
【０１７５】
なお、ここではAND回路を示したが、論理和(OR)回路も同様の方法で容易に構成することができる。
【０１７６】
以上のように、上述した配線ネットワーク200Kの複数の接続素子620の一方の端子に入力Aのデコードデータを入力し、エンコーダ300Kへの複数の出力線を複数の接続素子620の他方の端子に接続する。さらに、入力Bのデコードデータを制御入力として複数の接続素子620のそれぞれの制御入力端に入力することによって、配線ネットワーク200Kにおける入力Aのデコードデータのビット位置の入れ替えが行われる。
【０１７７】
よって、図２０に示すような、デコーダ400K、配線ネットワーク200K、エンコーダ300Kを用いることで論理積回路を実現することができる。このとき、デコーダ400K -1, 400 K -2の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200K上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、論理積処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１７８】
（第１２の実施の形態）
次に、図２１に基づき、本発明の第１２の実施の形態に係わる論理回路の全体構成について説明する。図２１は、第１２の実施の形態に係わる下位ビット追加回路の構成を示すブロック図である。  
図２１の下位ビット追加回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２１の下位ビット追加回路1Lは、入力部101Lと、デコーダ400Lと、配線ネットワーク200Lと、エンコーダ300Lと、出力部102Lとを含んで構成される。下位ビット追加回路1Lは、２ビットの2進数の入力データに、下位ビットデータを追加する回路の例である。
【０１７９】
入力部101Kは、２ビットの入力データBを入力するための一対の入力端子（B1,B0）と、１ビットの入力データAを入力するための入力端子（A）と有する２つの入力部を有する。デコーダ400Lは、一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換する。配線ネットワーク200Lは、デコーダ400Lからの４ビットのデコードデータと、入力端子(A）の１ビットデータを入力して、デコーダ400Lからの４ビットデータ（あるいは４つの配線）を入れ替える変換を行う。エンコーダ300Lは、入力された８ビットデータを３ビットデータに変換する。出力部102Lは、エンコーダ300Lの３ビットデータを出力するための３つの出力端子（Z2,Z1,Z0）を有する。
【０１８０】
デコーダ400Lは、図４のデコーダ400Bと同様の構成であるので、説明は省略する。配線ネットワーク200Lの各出力は、エンコーダ300Lの各入力端に接続されている。
【０１８１】
エンコーダ300Lは、ここでは、３つのOR回路を含み、８ビットデータに対応して３ビットデータが出力されるように、３つのOR回路において、各入力端と配線ネットワーク200Lの出力の各配線との接続は、互いに異なっている。
【０１８２】
配線ネットワーク200Lは、４つの選択回路600-1, 600-2, 600-3, 600-4を含んで構成される。各選択回路は、２つの入力データ（入力1と入力2）と、１つの制御入力と、２つの出力データ（出力1と出力2）を有する。各選択回路は、制御入力に応じて、入力1と入力2をそれぞれ出力1と出力2のいずれかに転送して出力する。図２１の場合、制御入力が0の場合は、２つの入力データがそれぞれ直進し、その結果、入力１は出力１から出力され、入力２は出力２から出力される。制御入力が1の場合は、２つの入力データが交差し、その結果、入力１は出力２から出力され、入力２は出力１から出力される。言い換えると、選択回路600は、それぞれが制御入力端に入力される制御入力に応じて２つの入力端に入力される２つの信号が２つの出力端に現れる状態を変更する回路である。
【０１８３】
そして、第１の選択回路600-1では、デコーダ400Lの第１のＡＮＤ回路の出力が入力１に接続され、接地電位（GND）に接続されたGND線が入力２に接続されている。接地電位（GND）に接続されたGND線は、論理0(Lレベル)である。第２の選択回路600-2では、デコーダ400Lの第２のＡＮＤ回路の出力が入力１に接続され、接地電位（GND）に接続されたGND線が入力２に接続されている。第３の選択回路600-3では、デコーダ400Lの第３のＡＮＤ回路の出力が入力１に接続され、接地電位（GND）に接続されたGND線が入力２に接続されている。第４の選択回路600-4では、デコーダ400Lの第４のＡＮＤ回路の出力が入力１に接続され、接地電位（GND）に接続されたGND線が入力２に接続されている。各選択回路の制御入力端は、入力端子(A）に接続されている。
【０１８４】
第１の選択回路600-1の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第１及び第２の入力端に接続されている。第２の選択回路600-2の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第３及び第４の入力端に接続されている。第３の選択回路600-3の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第５及び第６の入力端に接続されている。第４の選択回路600-4の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第７及び第８の入力端に接続されている。
【０１８５】
エンコーダ300Lでは、第１のOR回路の４つの入力端には、第２，第４，第６及び第８の入力端が接続されている。第２のOR回路の４つの入力端には、第３，第４，第７及び第８の入力端が接続されている。第３のOR回路の４つの入力端には、第５から第８の入力端が接続されている。第１のOR回路の出力は出力端子（Z0）に接続され、第２のOR回路の出力は出力端子（Z1）に接続され、第３のOR回路の出力は出力端子（Z2）に接続されている。
【０１８６】
図２１の回路は、入力データの下位へのビット追加を実現する回路構成を示す。図２１は、2ビットのデータBの下位に1ビットのデータAを追加する機能を持つ回路である。入力Bが00のときで下位に0を追加する場合は、出力は000となり、下位に1を追加する場合は、出力は001となる。
【０１８７】
各選択回路600の上側の入力は論理0が入力されており、選択回路600の制御入力端には、追加されるビットである入力Aが入力されている。入力Aが0の場合、入力側の上下の信号がそのまま出力側の上下の信号として出力される。入力Aが1の場合は、入力側の上下の信号が交換されて出力側の上下の信号として出力される。例えば、入力Bが00だった場合、デコーダ400Lの出力は、第１のAND回路の出力（00）のみがHで、他はLとなる。選択回路600-1では、下側の入力端にのみ、デコーダ400LのHの信号が入力され、上側にはLが入力されている。入力Aが選択回路600-1の制御入力に入力され、入力Aが0の場合は、出力側の下側にHが出力され、入力Aが1の場合は、出力側の上側にHが出力される。すなわち、入力Aが0の場合は、選択回路600-1の下側の出力端（000）がHに、入力Aが1の場合は、選択回路600-1の上側の出力端001がHとなる。
【０１８８】
以上のように、図２１に示す回路によって、下位ビットの追加が可能となる。
【０１８９】
また、デコーダ400L及び配線ネットワーク200Lの出力は、常にHになる信号の本数が同じ、すなわち１つであり、従って、ビット追加の演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０１９０】
なお、図２１の回路は、入力データに下位ビットを追加する下位ビット追加回路であるが、図２２の回路のようにすることによって、入力データに上位ビットを追加する上位ビット追加回路を実現することができる。図２２は、上位ビット追加回路の構成例を示す回路図である。
【０１９１】
図２２の回路において、図２１との相違する点は、配線ネットワーク200Mの出力端と、エンコーダ300Mの入力端の接続の関係だけである。よって、入力部101M、デコーダ400M、配線ネットワーク200M、エンコーダ300M及び出力部102Mは、図２１の入力部101L、デコーダ400L、配線ネットワーク200L、エンコーダ300L及び出力部102Lと同様の構成である。
【０１９２】
配線ネットワーク200Mの第１の選択回路600-1の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第１及び第５の入力端に接続されている。第２の選択回路600-2の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第２及び第６の入力端に接続されている。第３の選択回路600-3の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第３及び第７の入力端に接続されている。第４の選択回路600-4の出力１と出力２は、それぞれエンコーダ300Lの８つの入力端の第４及び第８の入力端に接続されている。
【０１９３】
以上のように構成することによって、上位ビットの追加が可能となる。
【０１９４】
以上のように、上述した配線ネットワーク200L,Mの複数の選択回路600には、入力Bのデコードデータと接地電位（GND）が入力される。複数の選択回路600は、入力データBとは別の入力データAを制御入力として、複数の選択回路600のそれぞれの制御入力端に入力することによって、入力Bのデコードデータのビットデータのビット位置の入れ替えを行う。
【０１９５】
よって、図２１と図２２に示すような、デコーダ400L、400M、配線ネットワーク200L、200M、エンコーダ300L、300M、を用いることでビット追加回路を実現することができる。このとき、デコーダ400L、400Mの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200L、200M上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、ビット追加処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０１９６】
（第１３の実施の形態）
次に、図２３に基づき、本発明の第１３の実施の形態に係わる論理回路の全体構成について説明する。図２３は、第１３の実施の形態に係わる下位ビット削除回路の構成を示すブロック図である。  
図２３の下位ビット削除回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２３の下位ビット削除回路1Nは、入力部101Nと、デコーダ400Nと、配線ネットワーク200Nと、エンコーダ300Nと、出力部102Nとを含んで構成される。下位ビット削除回路1Nは、３ビットの入力データから下位ビットデータを削除する回路の例である。
【０１９７】
下位ビット削除回路1Nは、３ビットの入力データを入力するための３つの入力端子（B2〜0）を有する入力部101Nと、３ビットのデータを８ビットのデータに変換するデコーダ400Nと、８ビットのデータ（あるいは配線）を入れ替える変換を行う配線ネットワーク200Nと、４ビットのデータを２ビットのデータに変換するエンコーダ300Nと、エンコーダ300Nの２ビットのデータを出力するための２つの出力端子（Z1,Z0）を有する出力部102Nとを含んで構成される。下位ビット削除回路1Nには、３ビットの２進数の入力データが入力され、下位ビット削除回路1Nは、下位の１ビットを削除した、２ビットの２進数データを出力する。
【０１９８】
デコーダ400Nは、図２のデコーダ400Aと同様の構成であるので、説明は省略する。配線ネットワーク200Nの各出力は、エンコーダ300Nの各入力端に接続されている。
【０１９９】
エンコーダ300Nは、図４のエンコーダ300Bと同様の構成であるので、説明は省略する。
【０２００】
配線ネットワーク200Nは、４つのOR回路を含んで構成される。各OR回路は、２つの入力（入力1と入力2）を有する。第１のOR回路には、デコーダ400Nの第１及び第２の出力が接続される。第２のOR回路には、デコーダ400Nの第３及び第４の出力が接続される。第３のOR回路には、デコーダ400Nの第５及び第６の出力が接続される。第４のOR回路には、デコーダ400Nの第７及び第８の出力が接続される。
【０２０１】
第１から第４のOR回路の出力は、それぞれエンコーダ300Nの第１から第４の入力端に接続される。
【０２０２】
デコーダ400Nの８つのAND回路の出力のうち、１つの出力のみがHとなる。すなわち、デコーダ400Nの出力は、いずれか1つの配線（すなわち出力）のみがアクティブ(この例では論理1であるH)となる。同様に、配線ネットワーク200Nの４つのOR回路の出力のうち、１つの出力のみがHとなる。
【０２０３】
図２４は、図２３の回路における入力と出力の関係を示す表である。図２４に示すように、出力は、入力の最下位ビットを削除したデータとなっている。図２４に示すように、デコーダ400Nの出力が（000）または（001）のときは、第１のOR回路の出力（00）がHになる。デコーダ400Nの出力が（010）または（011）のときは、第２のOR回路の出力（01）がHになる。デコーダ400Nの出力が（100）または（101）のときは、第３のOR回路の出力（10）がHになる。デコーダ400Nの出力が（110）または（111）のときは、第２のOR回路の出力（11）がHになる。このような配線ネットワーク200Nによって下位ビットの削除が実現できる。
【０２０４】
以上のように、デコーダ400N及び配線ネットワーク200Nの出力は、常にHになる信号の本数が同じ、すなわち１つであり、従って、ビット削減の演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０２０５】
なお、図２３の回路は、入力データから下位ビットを削減する下位ビット削減回路であるが、図２５の回路のようにすることによって、入力データから上位ビットを削減する上位ビット削減回路を実現することができる。図２５は、上位ビット削減回路の構成例を示す回路図である。
【０２０６】
図２５の回路において、図２３との相違する点は、デコーダ400Pの出力端と配線ネットワーク200Pの入力端との接続の関係だけである。よって、入力部101P、デコーダ400P、配線ネットワーク200P、エンコーダ300P及び出力部102Pは、図２３の入力部101N、デコーダ400N、配線ネットワーク200N、エンコーダ300N 及び出力部102Nと同様の構成である。
【０２０７】
配線ネットワーク200Ｐの第１のOR回路の２つの入力端は、デコーダ400Pの第１及び第５のAND回路の出力端と接続されている。配線ネットワーク200Ｐの第２のOR回路の２つの入力端は、デコーダ400Pの第２及び第６のAND回路の出力端と接続されている。配線ネットワーク200Ｐの第３のOR回路の２つの入力端は、デコーダ400Pの第３及び第７のAND回路の出力端と接続されている。配線ネットワーク200Ｐの第４のOR回路の２つの入力端は、デコーダ400Pの第４及び第８のAND回路の出力端と接続されている。
【０２０８】
以上のように構成することによって、上位ビットの削減が可能となる。
【０２０９】
以上のように、配線ネットワーク200N,Pの複数のOR回路の入力端に、入力データBのデコードデータを入力することによって、配線ネットワーク200N,Pにおける入力データBのデコードデータのビット位置を入れ替えが行われる。
【０２１０】
よって、図２３と図２５に示すような、デコーダ400N、400P、配線ネットワーク200N、200P、エンコーダ300N、300Pを用いることでビット削減回路を実現することができる。このとき、デコーダ400N、400Pの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200N、200P上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、ビット削減処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０２１１】
また、図２１から図２５に示した構成の応用として、任意の位置のビットの追加あるいは削除をする回路も同様に実現可能である。
【０２１２】
（第１４の実施の形態）
次に、図２６に基づき、本発明の第１４の実施の形態に係わる論理回路の全体構成について説明する。図２６は、第１４の実施の形態に係わるビット結合回路の構成を示すブロック図である。  
図２６のビット結合回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２６のビット結合回路1Qは、入力部と、デコーダと、配線ネットワーク200Qと、エンコーダと、出力部とを含んで構成される。ビット結合回路1Qは、それぞれが２ビットの2進数の２つの入力データを結合してその結合した４ビットデータを出力データとして出力する回路の例である。
【０２１３】
図２６では、配線ネットワーク200Qの構成のみを示している。２つのデコーダ（図示せず）は、それぞれ２ビットの２つの入力A,Bを、それぞれ４ビットデータにデコードする。２つのデコーダの出力は、入力A,B毎に、出力４ビットのうち、１ビットのみがHとなる。デコーダからの８つの出力は、それぞれ配線ネットワーク200Qの８つの入力端に出力される。
【０２１４】
配線ネットワーク200Qは、１６個の、すなわち第１から第１６のAND回路を含む。図２６に示すように、８つの入力端が複数のAND回路の複数の入力に接続されている。各AND回路は、２つの入力を有する。  
第１から第４のAND回路のそれぞれの一方の入力端は、入力Aの（00）に対応する入力端（A0）に接続されている。第１から第４のAND回路の他方の入力端は、それぞれ入力Bの(00),(01),(10)及び,(11)に対応する４つの入力端(B0),(B1),(B2),(B3)に接続されている。
【０２１５】
第５から第８のAND回路のそれぞれの一方の入力端は、入力Aの（01）に対応する入力端（A1）に接続されている。第５から第８のAND回路の他方の入力端は、それぞれ入力Bの(00),(01),(10)及び,(11)に対応する４つの入力端(B0),(B1),(B2),(B3)に接続されている。
【０２１６】
第９から第１２のAND回路のそれぞれの一方の入力端は、入力Aの（10）に対応する入力端（A2）に接続されている。第９から第１２のAND回路の他方の入力端は、それぞれ入力Bの(00),(01),(10)及び,(11)に対応する４つの入力端(B0),(B1),(B2),(B3)に接続されている。
【０２１７】
第１３から第１６のAND回路のそれぞれの一方の入力端は、入力Aの（11）に対応する入力端（A2）に接続されている。第１３から第１６のAND回路の他方の入力端は、それぞれ入力Bの(00),(01),(10)及び,(11)に対応する４つの入力端(B0),(B1),(B2),(B3)に接続されている。
【０２１８】
従って、上述した構成の配線ネットワーク200Qによれば、入力A,Bの組み合わせに応じて、配線ネットワーク200Qの１６個の出力線のうち、１つの出力線のみがHとなる。そして、エンコーダ(図示せず)は、配線ネッワーク200Qの出力を受けて、入力A,Bの組み合わせに対応するデータを生成する。
【０２１９】
以上のように、図２６の配線ネットワーク200Qは、それぞれがデコードされた２つの入力データの結合を実現するための配線ネットワークであって、それぞれ2ビットの2進数の２つの入力データA、Bを結合する配線ネットワークである。２つの入力データA、Bは、それぞれデコードされ、A0〜A3およびB0〜B3の信号となっている。図２６に示した配線ネットワーク200Qは、これらを結合し、4ビットの2進数（A,B）に対応するデータを生成する。例えば、入力Aが01、入力Bが10の場合、生成される信号は、0110である。この例の場合、A0〜A3の信号では，A1(01)のみがHとなり、B0〜B3の信号では、B2(10)のみがHとなる。よって、出力は、Z6(0110)のみがHとなり、他の信号はLである。
【０２２０】
以上のように、本実施の形態の回路によれば、ビットの結合が実現できる。
【０２２１】
特に、デコーダ及び配線ネットワーク200Qの出力は、常にHになる信号の本数が同じ、すなわち１つであり、従って、ビット結合の演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０２２２】
以上のように、配線ネットワーク200Qの複数のAND回路の入力端に、入力A,Bのそれぞれのデコードデータを入力することによって、配線ネットワーク200Qにおいて２つのデコードデータのビット位置を入れ替えが行われる。
【０２２３】
よって、図２６に示すような、デコーダ400Q、配線ネットワーク200Q、エンコーダ300Qを用いることでビット結合回路を実現することができる。このとき、２つのデコーダの出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200Q上でもHになる出力信号は、どのような入力に対しても1つのみである。従って、ビット結合処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０２２４】
（第１５の実施の形態）
次に、図２７に基づき、本発明の第１５の実施の形態に係わる論理回路の全体構成について説明する。図２７は、第１５の実施の形態に係わるビット分割回路の構成を示すブロック図である。  
図２７のビット分割回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２７のビット分割回路1Ｒは、入力部と、デコーダと、配線ネットワーク200Ｒと、エンコーダと、出力部とを含んで構成される。ビット分割回路1Ｒは、１つの入力データを分割してその分割して得られた２つのビットデータを出力する回路の例である。
【０２２５】
図２７では、配線ネットワーク200Ｒの構成のみを示している。デコーダ（図示せず）からの出力は、４ビットの入力Zを、１６ビットデータにデコードする。デコーダの出力は、入力Zの値毎に、出力１６ビットのうち、１ビットのみがHとなる。デコーダからの１６つの出力は、それぞれ配線ネットワーク200Rの１６個の入力端（Z0〜Z15）に出力される。
【０２２６】
配線ネットワーク200Rは、８個の、すなわち第１から第８のOR回路を含む。図２７に示すように、１６個の入力端（Z0〜Z15）が複数のOR回路の複数の入力に接続されている。各OR回路は、４つの入力を有する。  
第１のOR回路の４つの入力端は、入力Zの（0000〜0011）に対応する４つの入力端（Z0〜Z3）に接続されている。第２のOR回路の４つの入力端は、入力Zの（0100〜0111）に対応する４つの入力端（Z4〜Z7）に接続されている。第３のOR回路の４つの入力端は、入力Zの（1000〜1011）に対応する４つの入力端（Z8〜Z11）に接続されている。第４のOR回路の４つの入力端は、入力Zの（1100〜1111）に対応する４つの入力端（Z12〜Z16）に接続されている。
【０２２７】
第５のOR回路の４つの入力端は、それぞれ、入力Zの（0000),(0100),(1000),(1100）に対応する４つの入力端（Z0,Z4,Z8,Z12）に接続されている。第６のOR回路の４つの入力端は、それぞれ、入力Zの（0001),(0101),(1001),(1101）に対応する４つの入力端（Z1,Z5,Z9,Z13）に接続されている。第７のOR回路の４つの入力端は、それぞれ、入力Zの（0010),(0110),(1010),(1110）に対応する４つの入力端（Z2,Z6,Z10,Z14）に接続されている。第８のOR回路の４つの入力端は、それぞれ、入力Zの（0011),(0111),(1011),(1111）に対応する４つの入力端（Z3,Z7,Z11,Z15）に接続されている。
【０２２８】
第１から第８のOR回路の８個の出力は、それぞれ、４ビットの第１の出力端(A0〜A3)と、４ビットの第２の出力端(B0〜B3)とに接続されている。
【０２２９】
まず、2進数の入力Zは、デコードされ、Z0〜Z15の１６ビットのデコードデータとして配線ネットワーク200Ｒに入力される。配線ネットワーク200Rは、入力Zを分割したA0〜A3及びB0〜B3の２つの信号に対応する２つの出力A,Bを生成して、エンコーダに出力する。例えば入力Zが0111の場合、図２７のZ7のみがHとなり、残りの信号はLである。このとき、入力Z7が接続されているOR回路（第２と第８のOR回路）のみがHとなるので、出力A1及びB3がHとなり、残りの信号はLである。よって、出力Aが01で、出力Bが11となり、入力Zが2つの信号に分割される。
【０２３０】
従って、上述した構成の配線ネットワーク200Rによれば、入力Zの値に応じて、配線ネットワーク200Rの１６個の入力線のうち、１つの入力線のみがHとなる。そして、エンコーダ(図示せず)は、配線ネッワーク200Rの出力を受けて、分割されたデータとしての出力A,Bの組み合わせに対応するデータを生成する。
【０２３１】
以上のように、図２７の配線ネットワーク200Rは、デコードされたデータの分割を実現する配線ネットワークであって、それぞれ４ビットの２つの出力に分割する配線ネットワークである。ビット分割回路1Ｒは、4ビットの2進数Zから、それぞれ2ビットの2進数の出力AとBを生成する配線ネットワークを含み、入力Zの上位2ビットが出力Aに、入力Zの下位2ビットが出力Bとなる。
【０２３２】
以上のように、本実施の形態の回路によれば、ビットの分割が実現できる。
【０２３３】
特に、デコーダ及び配線ネットワーク200Qの出力は、常にHになる信号の本数が同じであり、従って、ビット分割の演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０２３４】
以上のように、配線ネットワーク200Rの複数のOR回路の入力端に、入力データZを入力することによって、配線ネットワーク200Rにおける入力データZのビットデータのビット位置を入れ替えが行われる。
【０２３５】
よって、図２７に示すような、デコーダ400、配線ネットワーク200R、エンコーダを用いることでビット分割回路を実現することができる。このとき、デコーダの出力は、常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク200R上でもHになる出力信号は、どのような入力に対しても２つだけである。従って、ビット分割処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０２３６】
（第１６の実施の形態）
次に、図２８に基づき、本発明の第１６の実施の形態に係わる論理回路の全体構成について説明する。図２８は、第１６の実施の形態に係わるビット入れ替え回路の構成を示すブロック図である。  
図２８のビット入れ替え回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成される。図２８のビット入れ替え回路1Sは、入力部と、デコーダと、配線ネットワーク200Sと、エンコーダと、出力部とを含んで構成される。ビット入れ替え回路1Sは、それぞれ２ビットの2進数からなる２つ入力を、２つの入力間でビットの入れ替えをしたビットデータを出力する回路の例である。ビット入れ替え回路1Sは、2ビットの入力A(A1, A0)とB(B1, B0)から2ビットの出力X(X1, X0)とY(Y1, Y0)を生成する回路である。
【０２３７】
入力部101Sは、それぞれが２ビットの入力データを入力するための一対の入力端子(A1,A0）,（B1,B0）を有する２つの入力部101S1、101S2を有する。デコーダ400Sは、入力部101S 1の一対の入力端子（A1,A0）の２ビットデータを４ビットデータに変換するデコーダ400S−１と、入力部101S2の一対の入力端子（B1,B0）の２ビットデータを４ビットデータに変換するデコーダ400S−２とを含んで構成される。配線ネットワーク200Sは、デコーダ400S−１からの４ビットのデコードデータと、デコーダ400S−２からの４ビットのデコードデータを入力して、２つの４ビットデータ（あるいは４つの配線）を入れ替える変換を行い、８ビットデータを出力する。エンコーダ300Sは、それぞれが４ビットデータを入力して２ビットデータを出力する、２つのエンコーダ300S1,300S2を有する。出力部102Sは、エンコーダ300Sからの４ビットデータを出力するための４つの出力端子を有する。２つの出力端子（X0,X1）は、エンコーダ300S1の２つの出力に接続され、２つの出力端子（Y0,Y1）は、エンコーダ300S2の２つの出力に接続されている。
【０２３８】
デコーダ400Sの２つのデコーダ400S-１，400S-２は、図５のデコーダ400C-1，400C-2と同様の構成である。
【０２３９】
エンコーダ300Sの２つのエンコーダ300S１，300S２は、それぞれ図５のエンコーダ300Cと同様の構成である。
【０２４０】
配線ネットワーク200Ｓは、４つの選択回路600と、１つの排他的論理和回路（以下、XOR回路という）801と、２つのOR回路802,803とを含んで構成されている。第１の選択回路600-1において、下側の入力１は、入力Aの０に対応する、デコーダ400S-1の第１の出力に接続され、上側の入力２は、入力Aの２に対応する、デコーダ400S-1の第３の出力に接続される。第１の選択回路600-1において、下側の出力１は、エンコーダ300S1の第１の入力に接続され、上側の出力２は、エンコーダ300S1の第３の入力に接続される。
【０２４１】
第２の選択回路600-2において、下側の入力１は、入力Aの1に対応する、デコーダ400S-1の第２の出力に接続され、上側の入力２は、入力Aの３に対応する、デコーダ400S-1の第４の出力に接続される。第２の選択回路600-1において、下側の出力１は、エンコーダ300S1の第２の入力に接続され、上側の出力２は、エンコーダ300S1の第４の入力に接続される。
【０２４２】
第３の選択回路600-3において、下側の入力１は、入力Bの０に対応する、デコーダ400S-2の第１の出力に接続され、上側の入力２は、入力Bの１に対応する、デコーダ400S-1の第２の出力に接続される。第３の選択回路600-3において、下側の出力１は、エンコーダ300S2の第１の入力に接続され、上側の出力２は、エンコーダ300S2の第２の入力に接続される。
【０２４３】
第４の選択回路600-4において、下側の入力１は、入力Bの２に対応する、デコーダ400S-2の第３の出力に接続され、上側の入力２は、入力Bの３に対応する、デコーダ400S-2の第４の出力に接続される。第４の選択回路600-4において、下側の出力１は、エンコーダ300S2の第３の入力に接続され、上側の出力２は、エンコーダ300S2の第４の入力に接続される。
【０２４４】
また、第１のOR回路802の２つの入力端は、デコーダ400S-1の第３と第４の出力に接続される。第２のOR回路803の２つの入力端は、デコーダ400S-2の第２と第４の出力に接続される。
【０２４５】
さらに、XOR回路801の２つの入力端は、第１及び第２のＯＲ回路802,803のそれぞれの出力に接続されている。XOR回路801の出力は、第１から第４の選択回路600-1,600-2,600-3,600-4の制御入力に接続されている。
【０２４６】
図２８の回路は、Aの上位ビットA1とBの下位ビットB0との排他的論理和を求め、その結果をもとにデータの入れ替えを行う回路である。入力A1がHのときデコーダ400Ｓ-1の出力”2”または”3”がHとなるので、この2つの信号の論理和によって入力A1がHであることを検知できる。同様にデコーダ400Ｓ-2の出力”1”と”3”によってB0がHであることを検知できる。従って、論理和の結果の排他的論理和を求めることで、入れ替えによってデータが変化するかどうかを判断することができる。図２８では、OR回路802が入力A1の検知、OR回路803が入力B0の検知、そして、XOR回路801が、２つのOR回路からの2つのビットの不一致を検知する。XOR回路801の出力が選択回路600の制御入力に転送され、不一致の場合は信号の入れ替えが行われ、一致している場合は、入力がそのまま出力に転送される。
【０２４７】
図２８の動作を説明する。図２８の回路では、入力Aの上位ビットA1と入力Bの下位ビットB0を入れ替えられて、出力X(=B0, A0)とY(=B1, A1)が生成される。しかし、入れ替えるビットのA1とB0が同じ値であれば、出力XとYは、入力AとBと同じである、すなわち出力は、入力から変化しない。これに対して、ビットのA1とB0が異なる値であれば、出力X,Yの値は、入力A,Bとは異なる、すなわち出力は、入力から変化する。図２９は、上位ビットが変わる場合を説明するための表である。入力Aは、図２９の表に示すように、A1とB0が同じ値の場合（表の左側の列（０→０）と右側の列（１→１）の場合）、デコードされた入力の値0または１がそのままの状態で、出力Xとして出力される。
【０２４８】
A1とB0が異なる値の場合（表の中央左側の列（０→１）と中央右側の列（１→０）の場合）、入力Aは、Aの上位ビットA1が変更されて、出力Xとして出力される。すなわち、入力Aの値0及び1は、それぞれ2及び3に入れ替わり、入力Aの値２及び３は、それぞれ0及び1に入れ替わる。入力Bについても、同様である。
【０２４９】
従って、入れ替えるデータが異なる場合は、デコードされた信号の2本の信号(“0”と”2”、および、”1”と”3”)を入れ替えることで実現できる。なお、同様に、下位ビットを入れ替える場合は、デコードされた信号の隣りあう2本(“0”と”1”、および、”2”と”3”)を入れ替えることで実現できる。
【０２５０】
次に、本実施の形態のビット入れ替え回路の第１の変形例を説明する。  
図３０は、ビット入れ替え回路の第１の変形例の回路図である。図３０の回路において、図２８との相違する点は、配線ネットワーク200T内の回路構成だけである。よって、入力部101T、デコーダ400T、エンコーダ300T及び出力部102Tは、図２８の入力部101S、デコーダ400S、エンコーダ300S及び出力部102Sと同様の構成である。
【０２５１】
配線ネットワーク200Tは、８つの選択回路600と、２つのOR回路802,803とを含んで構成されている。第１から第４の選択回路600-1,600-2,600-3,600-4は、１段目のセレクタを構成する。第５から第８の選択回路600-5,600-6,600-7,600-8は、２段目のセレクタを構成する。
【０２５２】
第１から第４の選択回路600-1,600-2,600-3,600-4の各入力端とデコーダ400Tの各出力端との接続は、図２８における第１から第４の選択回路600-1,600-2,600-3,600-4の各入力端とデコーダ400Sの各出力端との接続と同じである。
【０２５３】
第５から第８の選択回路600-5,600-6,600-7,600-8の各入力端とエンコーダ300Tの各入力端との接続は、図２８における第１から第４の選択回路600-1,600-2,600-3,600-4の各出力端とエンコーダ300Sの各出力端との接続と同じである。
【０２５４】
第１の選択回路600-1において、下側の出力１は、第５の選択回路600-5の下側の入力１に接続され、上側の出力２は、第５の選択回路600-5の上側の入力２に接続される。第２の選択回路600-2において、下側の出力１は、第６の選択回路600-6の下側の入力１に接続され、上側の出力２は、第６の選択回路600-6の上側の入力２に接続される。以下、同様にして、１段目のセレクタの各選択回路の下側と上側の出力１，出力２は、それぞれ２段目のセレクタの各選択回路の下側と上側の入力１、入力２に接続されている。
【０２５５】
さらに、OR回路802の出力は、１段目のセレクタの各選択回路の制御入力に接続されている。OR回路803の出力は、２段目のセレクタの各選択回路の制御入力に接続されている。
【０２５６】
以上のように、図３０の回路では、図２８の回路と比べて、XOR回路が取り除かれ、セレクタが２段設けられている。初段のセレクタには入力A1の値、２段目のセレクタには入力B0の値が入力される。入力A1とB0のいずれか一方がHの場合は、信号の入れ替えが行われるが、両方ともLの場合は、入れ替えが行われない。また、両方ともHの場合は、入れ替えが２回行われ、結果として入れ替えが行われない状態となる。これによって図３０の配線ネットワーク200Tは、図２８の配線ネットワーク200Sと同様の機能を実現することができる。
【０２５７】
次に、本実施の形態のビット入れ替え回路の第２の変形例を説明する。  
図３１は、ビット入れ替え回路の第２の変形例の回路図である。図３１の回路において、図２８との相違する点は、配線ネットワーク200U内の回路構成だけである。よって、入力部101U、デコーダ400U、エンコーダ300U及び出力部102Uは、図２８の入力部101S、デコーダ400S、エンコーダ300S及び出力部102Sと同様の構成である。
【０２５８】
配線ネットワーク200Uは、１６個の選択回路600を含んで構成されている。第１から第４の選択回路600-1,600-2,600-3,600-4は、１段目のセレクタを構成する。第５から第８の選択回路600-5,600-6,600-7,600-8は、２段目のセレクタを構成する。第９から第１２の選択回路600-9,600-10,600-11,600-12は、３段目のセレクタを構成する。第１３から第１６の選択回路600-13,600-14,600-15,600-16は、４段目のセレクタを構成する。
【０２５９】
第１から第４の選択回路600-1,600-2,600-3,600-4の各入力端とデコーダ400Uの各出力端との接続は、図２８における第１から第４の選択回路600-1,600-2,600-3,600-4の各入力端とデコーダ400Sの各出力端との接続と同じである。
【０２６０】
第１３から第１６の選択回路600-13,600-14,600-15,600-16の各入力端とエンコーダ300Uの各入力端との接続は、図２８における第１から第４の選択回路600-1,600-2,600-3,600-4の各出力端とエンコーダ300Sの各出力端との接続と同じである。
【０２６１】
各セレクタ間の各選択回路間の出力と入力の接続の関係は、図３０における第１のセレクタと第２のセレクタ間の各選択回路間の出力と入力の接続関係と同じである。すなわち、第ｉの選択回路と第（ｉ＋４）の選択回路との間では、第ｉの選択回路の下側の出力１と、第（ｉ＋４）の選択回路の下側の入力１とが接続され、第ｉの選択回路の上側の出力２と、第（ｉ＋４）の選択回路の上側の入力２とが接続される。ここで、ｉは１〜１２の整数である。
【０２６２】
さらに、デコーダ400U-1の第４の出力は、セレクタ１の各選択回路600の制御入力に接続されている。デコーダ400U-1の第３の出力は、セレクタ２の各選択回路600の制御入力に接続されている。デコーダ400U-2の第４の出力は、セレクタ３の各選択回路600の制御入力に接続されている。デコーダ400U-2の第２の出力は、セレクタ４の各選択回路600の制御入力に接続されている。
【０２６３】
図３１の動作は、図２８と同様である。図３１では、OR回路も取り除かれ、セレクタが4段になっている。デコーダ400U-1,400U-2の出力は、それぞれいずれか1つの信号のみがHとなる。入力A1がHの場合、デコーダ400U-1の出力”2”または”3”のいずれか一方のみがHとなるので、1段目と2段目のセレクタのいずれか一方のみで信号が入れ替えられる。同様に入力B0がHの場合は、3段目と4段目のセレクタのいずれか一方のみで信号が入れ替えられる。よって、図３１の回路によれば、図２８及び図３０で示したビット入れ替え回路と同じ動作が実現できる。
【０２６４】
特に、デコーダ及び配線ネットワークの出力は、常にHになる信号の本数が同じであり、従って、ビット入れ替えの演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０２６５】
以上のように、配線ネットワーク200S,200Tの記複数の選択回路610の入力端には、入力A,Bのそれぞれのデコードデータが入力される。さらに、入力A,Bのそれぞれのデコードデータから生成したデータを制御入力として複数の選択回路610のそれぞれの制御入力端に入力することによって、配線ネットワーク200S,200Tにおける入力A,Bのそれぞれのデコードデータのビット位置の入れ替えが行われる。
【０２６６】
また、配線ネットワーク200Uの記複数の選択回路610の入力端には、入力A,Bのそれぞれのデコードデータが入力される。さらに、入力A,Bのそれぞれのデコードデータデータを制御入力として複数の選択回路610のそれぞれの制御入力端に入力することによって、配線ネットワーク200Uにおける入力A,Bのそれぞれのデコードデータのビット位置の入れ替えが行われる。
【０２６７】
よって、図２８、図３０及び図３１に示すような、デコーダ400、配線ネットワーク200、エンコーダ300を用いることでビット入れ替え回路を実現することができる。このとき、２つのデコーダ400の出力は、それぞれ常にHになる信号の本数が同じ、すなわち１つであり、配線ネットワーク上でもHになる出力信号は、どのような入力に対しても２つだけみである。従って、ビット入れ替え処理における消費電力の変動は、入力されるデータの値によらず、抑えられる。
【０２６８】
（第１７の実施の形態）
次に、図３２に基づき、本発明の第１７の実施の形態に係わる論理回路の全体構成について説明する。図３２は、第１７の実施の形態に係わる論理回路の組合せ回路からなる加算器の構成を示すブロック図である。  
図３２の組合せ回路の基本的な構成は、図１に示した基本構成と同様に、デコーダと、配線ネットワークと、エンコーダとを含んで構成されるが、複数の加算器を組み合わせた回路である。
【０２６９】
図３２は、２つの入力データを入力し、所定の演算、ここでは加算演算を行って、その加算結果を、複数のビットデータとして出力する回路である。具体的には、図３２の論理回路は、それぞれが６ビットデータである２つの入力A,Bを加算する回路であって、３つの２ビット加算器100を用いて実現している。その３つの２ビット加算器100のそれぞれは、例えば図１６に示した加算器である。
【０２７０】
図１６に示した加算器は、桁上げ入力CIと2つの2ビットデータ入力と2ビットデータ出力と桁上げ出力を有する。図３２の回路に入力される２つの6ビットデータA,Bは、それぞれ2ビットずつの３つに分割される。入力Aの３つの２ビットデータは、それぞれ2ビット加算器100-1, 100-2, 100-3の一方のデコーダ400-1に入力される。データBの３つの２ビットデータは、それぞれ2ビット加算器100-1, 100-2, 100-3の他方のデコーダ400-2に入力される。
【０２７１】
2ビット加算器100-1には、桁上げ入力と入力A及びBの下位2ビット(A1, A0, B1, B0)が入力され、2ビット加算器100-1は、加算結果(S1, S0)と桁上げ出力とを出力する。2ビット加算器100-2には、加算器100-1の桁上げ出力と入力A及びBの次の2ビット(A3, A2, B3, B2)が入力され、2ビット加算器100-2は、加算結果(S3, S2)と桁上げ出力を出力する。2ビット加算器100-3には、加算器100-2の桁上げ出力と入力A及びBの次の2ビット(A5, A4, B5, B4)が入力され、2ビット加算器100-3は、加算結果(S5, S4)と桁上げ出力COを出力する。
【０２７２】
以上のように、組合せ論理回路からなる加算器は、複数のデコーダと、複数の配線ネットワークと、複数のエンコーダとを有する。  
よって、それぞれがデコーダと配線ネットワークとエンコーダとを含む、複数の加算器を組み合わせて、より大きなビット数の加算器を構成することができる。このような加算器をさらに多く組み合わせれば、大規模な加算器等を実現することが可能となる。
【０２７３】
このように、それぞれがデコーダと配線ネットワークとエンコーダとを含む、複数の論理回路を組み合わせて、演算回路を構成することができる。このような組合せ回路をさらに多く組み合わせれば、大規模な所定の演算処理を実行する回路を実現することが可能となる。例えば、複数の演算処理を行うプロセッサなどに、本実施の形態の組合せ回路は適用することができる。
【０２７４】
なお、組合せ回路においても、その組合せ回路の数に応じて、デコーダ及び配線ネットワークの出力は、常にHになる信号の本数が同じとなる。従って、複数の論理演算における消費電力の変動が、入力されるデータの値によらず、抑えられる。
【０２７５】
さらになお、図２の配線ネットワークのような場合、配線ネットワークの構成を次のようにしてもよい。図３３は、上述した配線ネットワークの配線レイアウト例を示す平面図である。ここでは、１６ビット入力で１６ビット出力の例を示す。一般に、LSIの消費電力は、CMOSの場合、その負荷容量に依存する。LSIでの配線による容量の差が消費電力の差となって現れるため、消費電力の変動を抑えるためには、配線容量を等しくする必要がある。図２の配線ネットワークのように、配線の入力と出力を単純に接続するような形状で、配線ネットワークの配線パターンをそのまま実現した場合、信号先によってその長さが異なり、配線容量に差が出る。
【０２７６】
そこで、図３３に示した配線レイアウトは、横方向の配線710と縦方向の配線720は、すべて同じ長さである。図３４は、図３３のXXXIV−XXXIV線に沿った断面を説明するための断面図である。図３５は、図３３のXXXV−XXXV線に沿った断面を説明するための断面図である。  
具体的には、配線ネットワークは、それぞれ縦方向及び横方向に延びる複数の配線パターンを有し、複数のビットデータのビット位置を入れ替えるために、複数の配線パターン７１０，７２０において、接続される入力側の端子と出力側の端子に対応する交点が、図３４及び図３５に示すように、コンタクト７３０によって電気的に接続されている。また、必要な配線(0から15)の外側には、ダミーの配線が配置されている。縦方向の配線と横方向の配線は、コンタクト730で接続されている。図３３において、横方向に延びる複数の配線は入力(デコーダ４)に接続され、縦方向に延びる複数の配線は、出力(エンコーダ３)に接続されている。図３３に示した配線レイアウトでは、すべての配線が同じ長さであり、かつ、必要な配線の両側にダミーの配線が配置されているので、配線と基板の間の容量と配線と配線の間の容量ともすべての配線で等しくなる。このような配線レイアウトを用いることで配線容量をすべての配線で等しくすることができ、その結果、データによる消費電力のばらつきを小さくすることが可能となる。
【０２７７】
以上説明したように、上述した各実施の形態及び各変形例に係る論理回路によれば、諸費電力を一定にできる論理回路を実現することができる。よって、上述した各実施の形態及び各変形例に係る論理回路が適用される半導体装置の定消費電力化が実現できる。
【０２７８】
なお、上述した複数の実施の形態及では、信号がHとなる配線の数は、１又は２であったが、ハミング重みが一定であれば、３以上であってもよい。  
さらに、このような論理回路を用いて各種回路を形成すれば、消費電力が急激に増加する等もなくなり、ひいては、半導体装置、応用装置等の消費電力を小さくすることにも繋がる。
【０２７９】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【０２８０】
【図１】本発明の第１の実施の形態に係わる論理回路のビット反転を行う反転回路の構成を示すブロック図である。
【図２】本発明の第１の実施の形態に係わる反転回路の構成例を示すブロック図である。
【図３】図２のビット反転回路である論理回路の各部の出力を示す表である。
【図４】本発明の第２の実施の形態に係わる排他的論理和回路の構成を示すブロック図である。
【図５】本発明の第３の実施の形態に係わる排他的論理和回路の構成を示すブロック図である。
【図６】入力データとエンコーダの出力との関係を説明するための表である。
【図７】入力データとエンコーダの出力との関係を説明するための表である。
【図８】入力データとエンコーダの出力との関係を説明するための表である。
【図９】入力データとエンコーダの出力との関係を説明するための表である。
【図１０】本発明の第４の実施の形態に係わる加算器の構成を示すブロック図である。
【図１１】図１０の加算器の入力と出力の関係を示す図である。
【図１２】本発明の第５の実施の形態に係わる加算器の構成を示すブロック図である。
【図１３】本発明の第６の実施の形態に係わる加算器の構成を示すブロック図である。
【図１４】図１３に示した加算回路の具体的な構成例を示す回路図である。
【図１５】本発明の第７の実施の形態に係わる加算器の構成を示すブロック図である。
【図１６】本発明の第８の実施の形態に係わる加算器の構成を示すブロック図である。
【図１７】本発明の第９の実施の形態に係わる循環シフト器の構成を示すブロック図である。
【図１８】2進数の入力データをシフトしたときの、入力と結果を示す表である。
【図１９】本発明の第１０の実施の形態に係わるAND回路の構成を示すブロック図である。
【図２０】本発明の第１１の実施の形態に係わるAND回路の構成を示すブロック図である。
【図２１】本発明の第１２の実施の形態に係わる下位ビット追加回路の構成を示すブロック図である。
【図２２】本発明の第１２の実施の形態に係わる上位ビット追加回路の構成例を示す回路図である。
【図２３】本発明の第１３の実施の形態に係わる下位ビット削除回路の構成を示すブロック図である。
【図２４】図２３の回路における入力と出力の関係を示す表である。
【図２５】図２５は、上位ビット削減回路の構成例を示す回路図である。
【図２６】本発明の第１４の実施の形態に係わるビット結合回路の構成を示すブロック図である。
【図２７】本発明の第１５の実施の形態に係わるビット分割回路の構成を示すブロック図である。
【図２８】本発明の第１６の実施の形態に係わるビット入れ替え回路の構成を示すブロック図である。
【図２９】図２８の回路において、上位ビットが変わる場合を説明するための表である。
【図３０】本発明の第１６の実施の形態に係わるビット入れ替え回路の第１の変形例の回路図である。
【図３１】本発明の第１６の実施の形態に係わるビット入れ替え回路の第２の変形例の回路図である。
【図３２】本発明の第１７の実施の形態に係わる論理回路の組合せ回路からなる加算器の構成を示すブロック図である。
【図３３】本発明の実施の形態に係る配線ネットワークの配線レイアウト例を示す平面図である。
【図３４】図３４は、図３３のXXXIV−XXXIV線に沿った断面を説明するための断面図である。
【図３５】図３５は、図３３のXXXV−XXXV線に沿った断面を説明するための断面図である。
【符号の説明】
【０２８１】
１  論理回路、１A  ビット反転回路、１B,１C  排他的論理和回路、１D,1E,1F,1G,1H  加算器、1I  循環シフト器、1J,1K  AND回路、１L  下位ビット追加回路、1M  上位ビット追加回路、１N  下位ビット削除回路、1P  上位ビット削除回路、1Q  ビット結合回路、1R  ビット分割回路、1S,1T,1U  ビット入れ替え回路、
２,200A〜200U  配線ネットワーク、３,300A〜300U  エンコーダ、４,400A〜400U  デコーダ、101A〜101U  入力部、102A〜102U  出力部
【図１】
2008099204.tif 000003
【図２】
2008099204.tif 000004
【図３】
2008099204.tif 000005
【図４】
2008099204.tif 000006
【図５】
2008099204.tif 000007
【図６】
2008099204.tif 000008
【図７】
2008099204.tif 000009
【図８】
2008099204.tif 000010
【図９】
2008099204.tif 000011
【図１０】
2008099204.tif 000012
【図１１】
2008099204.tif 000013
【図１２】
2008099204.tif 000014
【図１３】
2008099204.tif 000015
【図１４】
2008099204.tif 000016
【図１５】
2008099204.tif 000017
【図１６】
2008099204.tif 000018
【図１７】
2008099204.tif 000019
【図１８】
2008099204.tif 000020
【図１９】
2008099204.tif 000021
【図２０】
2008099204.tif 000022
【図２１】
2008099204.tif 000023
【図２２】
2008099204.tif 000024
【図２３】
2008099204.tif 000025
【図２４】
2008099204.tif 000026
【図２５】
2008099204.tif 000027
【図２６】
2008099204.tif 000028
【図２７】
2008099204.tif 000029
【図２８】
2008099204.tif 000030
【図２９】
2008099204.tif 000031
【図３０】
2008099204.tif 000032
【図３１】
2008099204.tif 000033
【図３２】
2008099204.tif 000034
【図３３】
2008099204.tif 000035
【図３４】
2008099204.tif 000036
【図３５】
2008099204.tif 000037