JP2004506260A - 並列計数器と乗算を実行するための論理回路 - Google Patents
並列計数器と乗算を実行するための論理回路 Download PDFInfo
- Publication number
- JP2004506260A JP2004506260A JP2002517614A JP2002517614A JP2004506260A JP 2004506260 A JP2004506260 A JP 2004506260A JP 2002517614 A JP2002517614 A JP 2002517614A JP 2002517614 A JP2002517614 A JP 2002517614A JP 2004506260 A JP2004506260 A JP 2004506260A
- Authority
- JP
- Japan
- Prior art keywords
- binary
- logic
- inputs
- logic circuit
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5318—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/607—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Logic Circuits (AREA)
- Complex Calculations (AREA)
Abstract
1つの2進数を、複数の2進入力として受け取るための複数の入力と、複数の2進入力の内の2進のものの数を示す2進符号を出力するための、複数の出力と、1つ或いは2つ以上の2進入力の複数の組を結合するために排他的論理和ゲートを用いて、2進出力の内の少なくとも1つを、2進入力の基本対称関数として生成するための論理回路とを備えることを特徴とする並列計数器。
Description
【0001】
【発明の属する技術分野】
本発明は、広くディジタル電子機器に関し、その中で特に、2進論理を実行するディジタル電子機器に関する。本発明の1つの面は、並列計数器に関し、他の面は、2進数の乗算を実行する論理回路に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
多くの用途にとって、同じ2進の加重値のn個の入力を合わせて加えるブロックを持つことは役に立つ。このブロックの出力は、ハイの入力の数を2進で表したものである。その様な並列計数器と呼ばれるブロック(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq:349−356(1965年); E.E.Swartzlander Jr., Parallel Counters, IEEE Trans. Comput. C−22: 1021−1024(1973年))(これらの内容は、ここに参照として組み入れられる)は、2進の乗算を実行する回路の中で使用される。並列計数器の他の用途として、例えば、多数決復号器あるいはRSA符号化器と復号器がある。最高速を達成する並列計数器を提供することは重要なことである。乗算に並列計数器を使用するのは既知のことである(L. Dadda, On Parallel Digital Multipliers, Alta Freq 45: 574−580(1976年))(この内容は、ここに参照として組み入れられる)。
【0003】
全加算器は、3ビットの入力と2ビットの出力を持った、特別な並列計数器である。現在提供されている、より高度な計数器、すなわち入力がよりたくさんあるものは、全加算器を用いることを前提としている(C.C.Foster and F.D.Stockton, Conting Responders in an Associative Memory, IEEE Trans. Comput. C−20:1580−1583(1971年))。一般的に、出力の最下位ビットは、そのような適用において最も結果が出るのが速く、一方、他のビットは、通常これより遅い。
【0004】
以下の記述は、論理演算に用いられる。
【数3】
∨ 論理和
∧ 論理積
¬ 否定
【0005】
並列計数器の有効な従来技術による設計(Foster and Stockton)は、全加算器を用いている。FAと表される全加算器は、図1に示される、3ビットの入力を持つ並列計数器である。これは、3つの入力X1,X2,X3と2つの出力SとCとを持っている。出力に対する論理表現は、
【数4】
である。
【0006】
HAと表される半加算器は、図1に示される、2ビットの入力を持つ並列計数器である。これは、2つの入力X1,X2と2つの出力SとCとを持っている。出力に対する論理表現は、
【数5】
である。
図2に、従来技術による、7ビット並列計数器が図示される。
【0007】
Irving T. To とTien Chi Chen による”Multiple Addition by Residue Threshold Functions and Their Representation by Array Logic” (IEEE Trans. Comput. C−22:762−767(1973年))という表題の論文(この内容は、ここに参照として組み入れられる)は、残余閾値(residue threshold)機能を実行するための、正確な対称関数を使って、一集まりの数を足し合わせる方法を開示している。このやり方によって、従来の全加算器の速度が改善されたが、正確に計算する必要があるために、大幅に面積が増大する。
【0008】
乗算は、基本的な演算である。2つのn桁の2進数、
An−12n−1+An−22n−2+…+A12+A0 と
Bn−12n−1+Bn−22n−2+…+B12+B0 とが与えられると、その積である
P2n−122n−1+P2n−222n−2+…+P12+P0 は、2n桁までなり得る。出力として全てのPiを生成する論理回路は、一般的に図14に描かれた方式に従う。ウォーレス(Wallace)氏が乗算器として最初の高速アーキテクチャを発明し、現在では、ウォーレス・ツリー(Wallace−tree)乗算器と呼ばれる(Wallace, C.S., A Suggestion for a Fast Multiplier, IEEE Trans. Comput. EC−13:14−17(1964年))(この内容は、ここに参照として組み入れられる)。ダッダ(Dadda)氏は、乗算器におけるビットの動きを探求した(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq 34:349−356(1965年))(この内容は、ここに参照として組み入れられる)。彼は、ダッダ氏のとウォーレス氏の方式に則った様々な乗算器と殆どの並列乗算器を作成した。
【0009】
ダッダ氏の乗算器は、図22の方式を使用する。もし、入力が8ビットならば、64個の並列のAND回路が図23に示すアレイを生成する。ANDゲートの印∧は、簡略化のために書かれないので、Ai∧BjはAiBjとなる。図23の他の部分には、全加算器(FA)と半加算器(HA)を含むアレイの縮小が示される。同じ列からのビットは、半加算器あるいは全加算器によって加算される。全加算器に導かれるビットの或るグループは、矩形である。半加算器に導かれるビットの或るグループは、楕円である。アレイ縮小の結果は、最終段階で、加算される2個の2進数となる。1つは、これら2個の数を高速加算法の1つによって加算するが、これは例えば条件付き加算器あるいはキャリー先読み加算器などである。
【0010】
【課題を解決するための手段】
第1の面に従って、本発明は、基本対称関数の代数的特徴に基づいた並列計数器を提供する。複数の2進出力ビットの各々は、複数の2進入力ビットの基本対称関数として生成される。
【0011】
基本対称関数には、1つ或いは2つ以上の2進入力値の組を論理積(AND)で結合することと、論理的に結合された2進入力値の組を論理和(OR)或いは排他的な論理和で結合することを含み、2進出力を生成する。論理和と排他的論理和の対称関数は、基本対称関数であり、生成された出力の2進ビットは、入力の2進ビットの中のハイの入力の数によってのみ決まる。論理和対称関数において、もし、ハイの入力の数が、mならば、m≧kのときにのみ、出力はハイとなるが、ここで、kは、2進入力の組の大きさである。同様に、排他的論理和の対称関数を使って生成される2進出力ビットは、m≧kであり、かつ、ハイの入力の組の入力の部分集合の数が奇数のときにのみ、出力はハイとなる。1つの実施形態において、組の大きさは選択可能である。i番目の出力ビットは、排他的論理和の論理回路を用いた対称関数を用いて、その大きさが2iとなるよう選択することで生成することができるが、ここで、iは、1からNの間の整数であり、Nは2進出力の数であり、iは、各2進出力の重要さ(significance)を表す。
【0012】
1つの実施形態において、基本対称関数で使用される2進入力の組は、それぞれ、ただ1つのものであり、2進入力の全ての可能な組合せを網羅する。
【0013】
本発明の1つの実施形態において、論理回路は、複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の対称関数として用意される。2進入力は、複数の論理ユニットへの入力に分けられ、2進出力が複数の論理ユニットの2進出力を用いて生成される。
【0014】
この実施形態によって、回路内のファンアウトの数が減少し、論理回路を共有する数が増加する。その結果、大きな2進数のための並列計数器を、さらに実現可能にする。
【0015】
本発明の1つの実施形態において、論理回路は、階層的に用意される複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力をユニットの2進入力の基本対称関数として生成するように準備される。階層構造のより低位のおよびその各々における論理ユニットが、階層構造のより高位のおよびその各々における論理ユニットの論理回路内に含まれ、それ以上の入力を持つ。
【0016】
本発明の特定の実施形態において、並列計数器の論理回路と入力とは、2進ツリー(tree)に従って、分けられる。その論理回路は、複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力をユニットの2進入力の基本対称関数として生成するように準備される。2進入力は、複数の論理ユニットへの入力に分けられ、複数の出力の2進出力は、複数の論理ユニットの2進出力を用いて、生成される。
【0017】
ある実施形態において、論理ユニットの各々は、2進入力の2nを受け取るように用意されており、ここで、nは、2進ツリー内の論理ユニットのレベルを示す整数であり、全体の論理回路は各レベルでm個の論理ユニットを持ち、ここでmは、(2進入力の数)/2nから決定される丸められた整数であり、2進ツリー内に置いて高レベルの論理ユニットは、2進ツリー内のより低位のレベルで論理ユニットの論理回路を備え、各論理ユニットは、論理ユニットへの2進入力の基本対称関数として論理ユニット2進出力を生成するように決められる。
【0018】
1つの実施形態において、第1レベルの各論理ユニットは、前記全体の論理回路への2進入力の最小基本対称関数として、論理ユニット2進出力を生成するようにまとめられる。
【0019】
1つの実施形態において、第1レベルの各論理ユニットは、2進入力を結合するために、論理和ゲートを使用して論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられる。
【0020】
1つの実施形態において、第1レベルの各論理ユニットは、論理ユニットへの2進入力の各々を論理積し、論理ユニットへの2進入力の各々を論理和して、論理ユニット2進出力を生成するようにまとめられる。
【0021】
1つの実施形態において、第1レベルの各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するために排他的論理和を用いて、論理ユニット2進出力を生成するようにまとめられる。
1つの実施形態において、第1レベルの各論理ユニットは、論理ユニットへの2進入力の各々を論理積し、論理ユニットへの2進入力の各々を排他的論理和して、論理ユニット2進出力を生成するようにまとめられる。
【0022】
1つの実施形態において、基本対称関数を実行するために、基本論理ユニットは、第1レベルで論理ユニットとして提供され、また、前記複数の入力からの論理的に近い4つの2進入力を受け取るための、2つの第1基本論理ユニットの各々からの出力は、2つの第2基本論理ユニットへ入力され、副基本論理ユニットの各々からの出力は、第3基本論理ユニットへ入力され、第1及び第2及び第3論理ユニットは、第2基本論理ユニットの各々からの2進出力と、第3基本論理ユニットからの2つの2進出力とを備えた2進出力を持った2進ツリーの第2レベルにおいて、第2論理ユニットを形成する。
【0023】
1つの実施形態において、2進ツリーの第3レベルにおける第3論理ユニットは各々、複数の入力から論理的に隣り合う8個の2進入力を受け取る2つの第2論理ユニットと、入力として2つの第2論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、4個の基本論理ユニットの2進出力を用いて第3論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備える。
【0024】
1つの実施形態において、2進ツリーの第4レベルにおける第4論理ユニットは各々、複数の入力から論理的に近い16個の2進入力を受け取る2つの第3論理ユニットと、入力として2つの第3論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、4個の基本論理ユニットの2進出力を用いて第4論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備える。
【0025】
1つの実施形態において、最小の基本対称関数を実行するための第1レベルにおける論理ユニットとして基本論理ユニットが提供され、より高位のレベルの論理ユニットは、より低位のレベルの論理ユニットを備える。
【0026】
1つの実施形態において、第2レベル以上のより高位のレベルの論理ユニットは、すぐ前のレベルの論理ユニットと基本論理ユニットとを備える。
【0027】
1つの実施形態において、各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するための論理和回路を用いて、論理ユニット2進出力を生成するようにまとめられる。
【0028】
1つの実施形態において、各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するための排他的論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられる。
【0029】
1つの実施形態において、2進出力の各々は、排他的論理和回路を使用する基本対称関数を用いて生成することができる。しかし、排他的論理和回路は、論理和回路ほど速くない。
【0030】
本発明の他の実施形態によって、少なくとも1つの2進出力が、2進入力の基本対称関数として、様々な組の1つ或いは2つ以上の2進入力を結合するために、論理和回路を用いて生成される。その論理回路は、2進入力の各組の要素を論理積し、論理積演算の結果を論理和するようにまとめられる。
【0031】
こうして、論理和回路を用いた基本対称関数を使用することで、より速くなり、出力最上位ビットを生成するのに使用することができる。そのような実施形態において、大きさの設定は、2N−1に設定され、ここでNは、2進出力の数であり、N番目の出力が最上位である。
【0032】
また、上位ビットの出力値に基づいて、下位ビット用に論理和回路を用いた、基本対称関数を使用することもできる。そのような場合、N番目より下位の2進出力に対して可能な複数の2進出力が、Nを2進出力の数とする時に、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和回路を用いて、2進入力の基本対称関数として生成される。上位2進出力値に基づいて、可能な2進出力の1つを選択するのに、選択回路が提供される。(N−1)番目のビット用の、そのような装置における、この組の大きさは、それぞれ2N−1+2n−2と2N−2であるのが望ましく、可能な2進出力の1つは、N番目の2進出力値に基づいて選択される。
【0033】
本発明の一実施形態において、回路は、モジュラー形式で設計される。複数の下位回路モジュールが設計され、各々は、いくつかの2進入力の基本対称関数として、中間の2進出力を生成するためのものである。論理回路は、また、この実施形態において、2進出力を作るための中間の2進出力を論理的に結合するために提供される。
【0034】
本発明の一実施形態において、論理ユニットは、階層的にまとめられて、階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットが、反転した基本対称関数を実行する。1つの装置において、階層内の奇数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、その論理ユニットへの入力は、反転される。他の装置において、階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、この論理ユニットへの入力は、反転されない階層内の第1レベルの論理ユニットへ入力される。本発明のこの実施形態によって、論理回路内で使用される、高速の反転論理ゲートが可能になる。
【0035】
論理和回路は高速なので、一実施形態において、下位論理回路モジュールは、論理和回路を用いて基本対称関数を実行する。一実施形態において、下位回路モジュールを、いくつかの2進出力を生成するのに使用することができ、また、1つ或いは2つ以上の論理モジュールを、他の2進出力をするために、提供することができるが、ここで、1つ或いは2つ以上の2進入力の複数の組を結合するために、各論理モジュールは、2進入力の排他的論理和回路の基本対称関数として、2進出力を生成する。
【0036】
本発明の他の面によると、論理回路を設計する方法が提供され、該方法は、各々が小さい基本対称関数を実行するための論理モジュールのライブラリを提供する段階と、大きな基本対称関数を実行するための論理回路を設計する段階と、前記基本対称関数を実行できる小さな基本対称関数を識別する段階と、前記小さな基本対称関数を実行するために前記ライブラリから論理モジュールを選択する段階と、ある基本対称関数を実行し他の基本対称関数を実行するのに使用できる論理回路を、選択した論理回路内で識別する段階と、識別した基本対称関数に対応する論理回路を選択する段階と、選択した論理回路をインバータと共に使用して、基本対称関数間の
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
という関係を使って前記他の基本対称関数を実行する段階とを備えており、ここで、¬は反転を表し、nは入力の数であり、kは互いに論理積結合される入力の数である。
【0037】
本発明の他の面によると、n個の入力から、m個の可能なハイ入力を持つ条件付き並列計数器が提供され、ここでm<nであり、nとmは整数であり、前記計数器は、入力を計数してm個の入力に対してp個の出力を作る並列計数器を備え、ここで、計数器への入力の数nは、2pよりも大きく、pは、整数である。
【0038】
こうして、本発明のこれらの面によると、並列計数器を用いた全てのアーキテクチャにおいて使用することのできる高速な回路が提供される。その設計は、それによって論理回路を作るような全ての技術に対して応用可能である。
本発明のこの面に従った並列計数器は、一般的に、従来の計数器よりも著しく高速の乗算回路において応用でき使用できる。
【0039】
本発明の1つの面によると、n個の入力から、m個の可能なハイの入力を持つ条件付き並列計数器が提供され、ここでm<nであり、nとmは整数である。条件付き並列計数器は、上述した並列計数器を備え、これは、入力を計数して、m個の入力に対してp個の出力を生成するが、ここで、計数器への入力の数nは、2pよりも大きい。条件付き乗算器は、例えばディジタルフィルターの中で使用することができる。
【0040】
本発明の他の面に従って、2進数を乗算するための技術は、2つの2進数のビットの間で論理結合した、従来のものに比べて小さな配列が作られる、配列生成段階を備えている。
【0041】
本発明のこの面に従って、2つの2進数を乗算するための論理回路は、1つの2進数に含まれる各ビットと他の2進数に含まれる各ビット間で、2進値のアレイを備えた論理2進結合値のアレイを生成する論理2進処理を行い、かつ、アレイの最大深さをNビット未満にまで下げるのに論理的に隣接した値を論理的に結合するためのアレイ生成論理回路と、アレイの深さを2つの2進値まで下げるためのアレイ縮小論理回路と、2つの2進数の2進値を加算するための加算論理回路とを備え、ここで、Nは、2つの2進値の最大のもののビット数である。
【0042】
一実施形態において、2つの2進数が互いに乗算されるとき、従来は、第1の2進数の各ビットAiは、第2の2進数Bjの各ビットと論理的に結合されて、論理組合せAiとBjで表される2進数のシークエンス(sequence)を備えるアレイを生成する。それ以外の論理的結合は、A1とBN−1,A1とBN−2,A0とBN−2,A0とBN−1の組合せを論理的に結合することによって実行されるが、ここで、Nは、2進数のビット数である。このようにして、アレイ内で互いに加算される数の最大列の大きさが縮小される。
【0043】
より深く説明すると、アレイ生成論理回路は、A1 AND Bn−2と、A0 AND Bn−1の組合せを結合して、排他的論理和を用いてこの結合を置き換え、またA1 AND BN−1と、A0 AND Bn−2の組合せを結合して、A1 AND Bn−1の結合を置き換えるようにまとめられている。
【0044】
本発明の一実施形態では、アレイ縮小論理回路は、少なくとも1つの全加算器と、少なくとも1つの半加算器と、少なくとも1つの並列計数器との内から、少なくとも1つを含むことができる。該並列計数器あるいはその各々は、本発明の第1の面に従って、並列計数器を備えることができる。
【0045】
本発明のこの面によって、アレイ内の最大列長が短縮され、従って、アレイ縮小に必要な段階の数が少なくなる。本発明の第1の面が、本発明の第2の面と共に用いられると、さらに効率的な乗算回路が提供される。
【0046】
本発明の一実施形態によると、上述した論理回路を備えた積和(multiply−accumulate)論理回路が与えられ、前記アレイ生成論理回路は、前の乗算の累積を含むように作られる。
【0047】
本発明の他の面では、1つの2進数を複数の2進入力として受け取るための、少なくとも4つの入力と、2進符号を出力するための少なくとも1つの出力と、2進ツリーとして実現され、少なくとも2の閾値を持つ閾値関数に従って、第2進出力あるいはその各々を生成するために、複数の入力と該2進出力あるいはその各々との間で接続された論理素子とを備えた論理回路が提供される。閾値関数は、少なくとも入力の閾値kがハイの時、そしてその時のみハイであり、k≧2である。
【0048】
本発明の一実施形態において、論理素子は、該2進出力あるいはその各々を、2進入力の基本対称関数として作られ、すなわち、閾値関数は、基本対称関数として実現される。
【0049】
本発明の他の面によると、2進数を複数の2進入力として受け取るための少なくとも4つの入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と複数の2進出力の間で接続されて該複数の2進出力あるいはその各々を2進入力の基本対称関数として生成するように作られる論理素子とを備えた論理回路が提供される。
【0050】
本発明の他の面によると、2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力あるいはその各々との間で接続されて、該2進出力あるいはその各々を2進入力の閾値関数として生成するように作られた論理素子とを備えた論理回路を設計するための方法とシステムが提供される。この方法は、閾値関数を実行するための論理素子を決定する段階と、2つの閾値関数の論理積を実行する論理素子を識別して、識別した論理素子を高い閾値を持った閾値関数を実行するための論理素子へ縮小する段階と、2つの閾値関数の論理和を実行する論理素子を識別して、識別した論理素子を低い閾値を持った閾値関数を実行するための論理素子へと縮小する段階と備える。
【0051】
本発明のこの面は、1つ或いは多くのネットワーク接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現される。本発明は、かくして、コンピュータシステムを制御するためのプログラムコードを含んでいる。このコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0052】
本発明のさらなる面によると、2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力との間で接続されて、各々の2進出力を2進入力の対称関数として生成するように作られた論理素子とを備えた論理回路を設計するための方法とシステムが提供される。この方法は、排他的論理和を使用した論理回路を設計する段階と、同時にハイとなる入力を持つことのできない論理回路を全て識別する段階と、識別した排他的論理和を論理和に置き換える段階とを備える。
【0053】
本発明のこの面の一実施形態では、論理回路は、各2進出力を、2進入力の基本対称関数として生成するように設計される。
本発明のこの面の特定の実施形態では、論理回路は、並列計数器を備える。
【0054】
本発明のこの面は、1つ或いは多くのネットワークで接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現される。こうして、本発明は、コンピュータシステムを制御するためのプログラムコードを含む。このコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0055】
本発明のさらなる面によると、その各々が小さな対称関数を実行する論理モジュール設計のライブラリを提供する段階と、大きな対称関数を実行する論理回路を設計する段階と、前記対称関数を実行することのできる小さな対称関数を識別する段階と、前記小さな対称関数を実行する前記ライブラリから論理モジュールを選択する段階と、選択された論理回路の中から、対称関数を実行し、他の対称関数を実行するのに使用できる1つの論理回路を識別する段階と、識別された対称関数に対応し、かつ、
OR_N_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
の対称関数間の関係を用いて前記他の対称関数を実行するインバータを備えた選択された論理回路を用いて、論理回路を選択する段階とを備えた設計するための方法とシステムが提供される。前記式において、¬は反転を表し、nは入力の数であり、kは互いに論理積結合した入力の組の数である。
【0056】
本発明のこの面の一実施形態において、対称関数は、基本対称関数である。
本発明のこの面は、1つ或いはたくさんのネットワークで接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現することができる。こうして、本発明は、コンピュータシステムを制御するためのプログラムコードを含んでいる。このこのコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0057】
【発明の実施の形態】
次に、本発明の実施形態を、添付する図面を参照して説明する。
【0058】
本発明の第1の面を、次に説明する。
本発明の第1の面は、2進数に含まれるハイの値の数を計数する並列計数器に関する。この計数器は、i個の出力とn個の入力とを持ち、ここでiはlog2nプラス1の整数部分として決定される。
【0059】
本発明の第1の面に対する数学的な基盤は、対称関数の理論である。Cn kでn個の要素の組の、異なるk個の要素の部分集合の数を表す。n個の変数X1,X2,…Xnの、以下に掲げる2つの関数EXOR_n_kとOR_n_kを考える。
【数6】
ここで、(i1,i2,…ik)は正確にk個の要素を持つ{X1,X2,…Xn}の可能な全ての部分集合に渡る。そのような出力を作り出すブロックは、図3に示される。
【0060】
関数EXOR_n_kとOR_n_kは、基本対称関数である。それらの値は、X1,X2,X3,…Xnの中のハイの入力の数だけで決まる。より正確に言うと、もしmがX1,X2,X3,…Xnの中のハイの入力の数ならば、OR_n_k(X1,X2,…Xn)は、m≧kの時のみ、ハイとなる。同様に、EXOR_n_k(X1,X2,…Xn)は、m≧kかつCm kが奇数の時のみ、ハイとなる。
【0061】
EXOR_n_kとOR_n_kは、似ているように見え、排他的論理和ゲートが論理和ゲートよりも遅いために、OR_n_kは、より高速である。
【0062】
上記の表記で、nは入力の数であり、kは選択された入力の部分集合の大きさである。k個の入力の各組は、唯一の組であり、部分集合には、入力の組の全ての可能な部分集合が含まれている。例えば、対称関数OR_3_1には、3つの入力X1,X2,X3があり、この組の大きさは1である。したがって、この組には、X1,X2,X3が含まれる。これらの組の各々は、2進出力を作るために、論理和結合される。この関数を実行するための論理回路が図4に示されている。
【0063】
図5には、対称関数OR_4_1を実行するための論理回路が示されている。
入力の数が大きくなると、単純な論理回路を用いることができなくなるだろう。
図6には、対称関数OR_5_1を実行するための2つの論理和ゲートが示されている。
【0064】
図7には、同様に、EXOR_7_1を実行する論理回路が示されている。この組には、入力X1,X2,X3,X4,X5,X6,X7が含まれる。これらの入力は、排他的論理和ゲートの3つのレベルに入力される。
【0065】
kが1より大きい時、部分集合内の入力は、論理積結合されなくてはならない。図8には、対称関数OR_3_2を実行するための論理回路が示されている。入力X1とX2は、第1の組を含んでおり、第1論理積ゲートに入力される。入力X1とX3は、第2の組を構成し、第2論理積ゲートに入力される。入力X2とX3は、第3の組を構成し、第3論理積ゲートに入力される。論理積ゲートの出力は、論理和ゲートに入力され、出力関数を生成する。
【0066】
図9は、対称関数対称関数EXOR_5_3を実行するための論理回路が示された図である。この関数を実行するのに、5つの入力の組用の大きさ3の部分集合が、10個の組を備え、10個の論理積ゲートが必要になる。論理積ゲートの出力は、排他的論理和ゲートに入力されて関数を生成する。
【0067】
対称関数を実行するための特定の論理回路は、技術に依存している。それゆえ、論理回路は、使用される技術に従って設計することになる。
本発明の第1実施形態に従って、各出力の並列計数器は、排他的論理和回路を用いた対称関数を使って作られる。
【0068】
並列計数器に、n個の入力X1,…Xnと、t+1個の出力St,St−1,…S0を持たせる。S0は、最下位ビットであり、Stは最上位ビットである。0からtの全てのiに対して、Si=EXOR_n_2i(X1,X2,…Xn)である。
【0069】
したがって、7ビット入力、すなわちn=7に対して、iの値は0,1,2となることが分かる。したがって、出力S0を生成するために、関数はEXOR_7_1となり、出力S1を生成するために、関数はEXOR_7_2となり、出力S2を生成するために、関数はEXOR_7_4となるだろう。こうして、最下位ビットに対して、組の大きさ(k)は1であり、第2ビットに対して、組の大きさは、2であり、最上位ビットに対して、組の大きさは4である。上位ビットに対して必要な論理回路は、どんどん複雑になり、実行速度が遅くなるのは、明らかである。
【0070】
したがって、本発明の第2実施形態に従って、出力最上位ビットは、論理和回路を用いた対称関数を使って生成される。
OR_n_k関数は、EXOR_n_k関数よりも高速であるから、これはより実際的である。出力最上位ビットに対して、
Sk=OR_n_2t(X1,X2,…Xn)である。
特に、7ビット入力ならば、
S2=OR_7_4(X1,X2,X3,X4,X5,X6,X7)である。
【0071】
したがって、本発明のこの第2実施形態において、最上位ビットは、論理和回路を用いた対称関数を使って生成され、ところが、他のビットは、排他的論理和回路を用いた対称関数を使って生成される。
第3実施形態が、次に、説明されるが、そこでは、中間ビットが、論理和回路を用いた対称関数を使って生成される。
【0072】
任意の出力ビットは、最上位のビットが分かっていれば、OR_n_k関数を用いて表すことができる。例えば、第2最上位ビットが、
St−1=(St∧OR_n_2t+2t−1)∨((¬St)∧OR_n_2t−1)
で与えられる。特に、7ビットの入力ならば、
S1=(S2∧OR_7_6(X1,X2,X3,X4,X5,X6,X7))∨
((¬S2)∧OR_7_2(X1,X2,X3,X4,X5,X6,X7))である。
【0073】
さらに縮小すると、
S1=OR_7_6(X1,X2,X3,X4,X5,X6,X7)∨
((¬S2)∧OR_7_2(X1,X2,X3,X4,X5,X6,X7))である。
図3に示される乗算器MUは、この論理回路を実現している。そこには、2つの入力X0,X1と、制御Cと、下式で決定される出力Zがある。
Z=(C∧X1)∨((−C)∧X0)
【0074】
EXOR_n_k関数やOR_n_k関数を排他的に用いるのは、実際的でない。わずかの最上位ビットに対してOR_n_kを用い、残りのビットに対してEXOR_n_kを用いるのが望ましい。TSMC.25において、7入力の最速の並列計数器が図10に示されている。
【0075】
高速のOR_15_8ブロックを持った将来の技術ならば、15入力の並列計数器を作ることができるだろう。OR_n_mを用いた第3最上位ビットに対する式は、次の様である。
St−2=(St∧St−1∧OR_n_2t+2t−1+2t−2)∨
(St∧(¬St−1)∧OR_n_2t+2t−2)∨
((¬St)∧St−1∧OR_n_2t ― 1+2t−2)∨
((¬St)∧(¬St−1)∧OR_n_2t−2)
【0076】
本発明の第4実施形態が、次に、説明されるが、それは、対称関数を実行する論理ブロックを再使用できる小さなブロックに分割する。
OR_7_2の実行が、図11に示される。7つの入力は、2つのグループに分けられる、それは、X1からX5の5つの入力と、2つの残りの入力X6とX7である。そして、以下の恒等式は、図11の実行の基礎になるものである。
OR_7_2(X1,…,X7)=OR_5_2(X1,…,X5)∨
(OR_5_k1(X1,…X5)∧OR_2_1(X6,X7))∨
OR_2_2(X6,X7)
【0077】
OR_7_4とOR_7_6に対して、同様の式を書くことができる。
OR_7_4(X1,…,X7)=OR_5_4(X1,…,X5)∨
(OR_5_3(X1,…X5)∧OR_2_1(X6,X7))∨
(OR_5_2(X1,…X5)∧OR_2_2(X6,X7)),
OR_7_6(X1,…,X7)=
(OR_5_5(X1,…X5)∧OR_2_1(X6,X7))∨
(OR_5_4(X1,…X5)∧OR_2_2(X6,X7))。
【0078】
したがって、変数を分割して、小さなOR_n_k関数を並列計数器の中で再使用するのは有利なことである。例えば、図12で、7つの入力を2つと5つのグループに分けることに基づいた並列計数器の導入である。
同様に、7つの入力を、4つと3つのグループに分けることもできる。このやり方で分割した並列計数器が、図13に載っている。このやり方では、次の論理式を使用する。
【0079】
【数7】
【0080】
図12と図13における実行の間で方法を選ぶ必要がある。ここに、選択する際の肺炎規則(pneumonic rule)がある。もし1つ或いは2つの入力が、どうしても遅れて到着した場合、7=5+2の分割に則った図12のように実行すべきである。さもないと、7=4+3の分割に則った図13ののように実行するのが、多分最適である。
【0081】
6入力、5入力、4入力の並列計数器は、7入力並列計数器に対する論理回路に従って、実現することができる。入力の数を減らすことで、面積を著しく減らすことができ、速度を少々上げることができる。6,3+3,4+2の分割を用いて、6入力の並列計数器を実現するのが有利である。
本発明の一実施形態が、次に、図14〜21を参照して説明される。
【0082】
すべてのOR_n_k或いはEXOR_n_k関数を2レベルの論理回路で実現することが可能であるが、各入力のファンアウトが非常に高く、論理和ゲートのファンインも非常に高い。ファンアウトとファンインの両方が高いことにより、回路の遅延に著しく影響することは知られている。2つ以上のOR_n_k或いはEXOR_n_k関数が、同じ入力から数えられることが、しばしば必要である。2レベルの実現は、論理回路の共有化ができず、その結果、面積が広くなる。
【0083】
本発明のこの実施形態は、ファンアウトを減らして論理回路を再使用することができるように、入力と論理回路を分割する2進ツリーを使用する。図14には、論理回路の構成が図示されている。第1レベルにおいて、8個の基本論理ブロック1が使用され、各々は2進入力を2つ持ち、2つの出力を備えている。第1レベルの基本論理ブロック1は、基本対称関数を実行する。これらは、排他的論理和対称関数か、あるいは論理和対称関数であってよい。第2レベルにおいて、4つの第2次論理ブロック2の各々が、2つの基本論理ブロック1の論理回路を使用し、従って、4つの入力と4つの出力を持つ。第2次論理ブロック2は、より大きな対称関数を実行する。第3次レベルにおいて、2つの3次論理ブロック3の各々が2つの第2次論理ブロック2の論理回路を使用し、従って、8つの入力と8つの出力を持つ。第3次論理ブロック2は、より大きな対称関数を実行する。第4レベルにおいて、並列計数器4は、2つの第2次論理ブロック3の論理回路を使用し、従って、16個の入力と16個の出力とを持つ。
【0084】
図14から分かるように、論理回路の2進ツリー配列によって、並列計数器に使用する、より小さな対称関数を実行する論理回路が可能になる。また、この配列は、有効な論理回路の分割に対して用意される。これによって、著しくファンアウトが減る。
後に、より詳細に説明されるであろうが、2進ツリーの中の前の論理ブロックの出力を結合するための基本対称関数の論理回路を使用することによって、さらに論理回路を分割することも可能になる。
【0085】
関数OR_16_8とOR_16_4とOR_16_12は、入力X1,X2…X16の組から作られている。しかし、実施形態は、各論理和ゲートを排他的論理和ゲートで置き換えた後に、同じ構造がEXOR_n_k関数に適用されるOR_n_k関数で説明される。
【0086】
本発明のこの実施形態を支える原理を、次に説明する。関数OR_(r+s)_kは、tが0,1,2…kと変化する時に、関数OR_r_k∧OR_s_t−kの論理和で計算することができる。
OR_(r+s)_t(X1…Xr+s)=∨k=0 t[OR_r_k(X1…Xr)∧OR_s_(t−k)(Xr+1…Xr+s)]
【0087】
16個の入力を持つ一実施形態において、第1レベルでは、16個の入力が8個の部分集合―{X1,X2},{X3,X4},…,{X15,X16}に分割され、各部分集合は、2つの入力を備える。各部分集合にとって、OR_2_1とOR_2_2を計算する論理ブロックが作られる。ツリーの第1レベルから8個のブロックがある。各入力は、1つの論理和ゲートと1つの論理積ゲートへとファンアウト(fan out)するので、各入力のファンアウトは2であると分かる。第1層は、8個の同じブロックから非常に規則正しく構成される。対称関数OR_2_1とOR_2_2を計算するための論理ブロック1が、図15に示される。
【0088】
第2レベルにおいて、4個の論理ブロック2は、レベル1における2つの隣り合う論理ブロック1からの出力を結合することにより作られる。これらの4個のブロックは、ツリーの第2層を構成する。各ブロックには、入力として、レベル1から隣り合うブロックの主力を持っている。入力は、結合されて関数OR_4_1、OR_4_2、OR_4_3、OR_4_4を形成する。これらの対称関数を計算するための論理ブロック2が、図16に示されている。以下の式の中で使用される指標1と2は、入力の組の異なる部分集合に作られる関数を区別するものである。対称関数は、次の様に表すことができる。
【0089】
OR_4_1=[OR_2_1]1∨[OR_2_1]2,
OR_4_2=([OR_2_1]1∧[OR_2_1]2)∨
([OR_2_2]1+[OR_2_2]2),
OR_4_3=([OR_2_1]1∧[OR_2_2]2)∨
([OR_2_2]1∧[OR_2_1]2),
OR_4_4=[OR_2_2]1∧[OR_2_2]2
【0090】
第3レベルにおいて、2つの論理ブロック3は、レベル2の2つの隣り合う論理ブロック2からの出力を結合して作られる。これらの2つのブロックは、ツリーの第3層を構成する。各ブロックには、入力として、レベル2からの2つの隣り合うブロックの出力がある。その入力は、関数OR_8_1,OR_8_2,OR_8_3,OR_8_4,OR_8_5,OR_8_6,OR_8_7,OR_8_8から結合される。これらの対称関数を計算するための論理ブロック3が、図17に示される。対称関数は、以下のように表すことができる。
【0091】
【数8】
【0092】
最後のレベルにおいて、出力は、レベル3での2つの隣り合う論理ブロック3からの出力を組み合わせることによって作られる。この論理回路は、ツリーの第3層を備える。レベル3からの2つの隣り合うブロックの出力は、関数OR_16_8とOR_16_12を作るために結合される。これらの対称関数を計算するための論理ブロック4が、図18に示されている。対称関数は、以下のように表すことができる。
【0093】
【数9】
【0094】
本発明に従って、論理ブロック3の出力を用いて並列計数器の出力を全て生成することは可能であるが、別々に並列して最下位ビットを決定することは、有利なことである。これは、図19と図20とに示されている。これによってファンアウトが多少増えるが、ツリーの深さを減らし、そして回路の速度を上げる。図19は、対称関数EXOR_4_2とEXOR_4_1とを決定するための論理ブロック5の図である。EXOR_4_2を決定するのに、以下のように、より高速の論理和ゲートが排他的論理和ゲートに取って代わる。
【数10】
これらの論理ブロック5の4つは、16個の入力を取るべく提供される。こうして、論理ブロック5は、レベル1とレベル2を結合したものと考えることができる。
【0095】
図19において、最後の論理ゲートは、排他的論理和ゲートではなく論理和ゲートである。これは、ゲートへの両方の入力が、同時に、ハイになること、すなわち、AB=0となることは無いので、関係
【数11】
が保たれる。こうして、本発明の1つの面に従って、この関係が保たれる状況を識別することで、より高速の論理和ゲートを全体の論理回路の設計に含めることができる。この処理は、論理回路設計の間、コンピュータプログラムによって自動的に実行することができる。
【0096】
図20は、本実施形態の並列計数器から出力される少なくとも2つの重要なビットを備えた対称式EXOR_15_2とEXOR_15_1を決定するための論理ブロック6の図である。この論理ブロックは、2進ツリー内のレベル3を備えており、論理ブロック5の4つを使用する。こうして、最下位2ビットのこの並列した決定においても、2進ツリー構造を用いた論理回路の再使用である。
【0097】
図21は、本発明の本実施形態の並列計数器の図であり、ここで、ブロック4の論理回路は、最上位ビットを決定するのに使用され、ブロック6の論理回路は、最下位ビットを決定するのに使用される。
【0098】
図16,17,18で図示された論理ブロックにおいて、入力に対する論理回路の共有に加えて、基本論理ブロックと第2論理ブロックと第3次ブロックの出力は、基本論理ブロックへ入力され、そして、さらに論理回路を共有する。この理由は、論理和関数は、独立していないからである。もしk≧sとすると、
OR_n_k∧OR_n_s=OR_n_k…1
OR_n_k∨OR_n_s=OR_n_s…2
【0099】
これは、大きな基本対称関数を実現するのに、小さな基本対称関数を実行する論理回路の、出力に対する乗算処理の中に、冗長な論理積あるいは論理和の演算が可能なものがある。
これらの式は、並列計数器に対する論理回路を著しく縮小する結果となる。そのような縮小の第1の例は、並列計数器の第2最上位ビットに対する以下の式である。
St−1=OR_n_(2t+2t−1)
∨[¬OR_n_2t∧OR_n_2t ― 1]
【0100】
例えば、図10の回路において、乗算器(MU)は、OR(7,4)とOR(7,6)とOR(7,2)を用いてS1を生成する。S1を生成するための論理回路が縮小されないときには、
S1=[OR(7,4)∧OR(7,6)]∨
[¬OR(7,4)∧OR(7,2)]
これは、上記の式1,2を用いて、次の様に縮小される。
S1=OR(7,6)∨[¬OR(7,4)∧OR(7,2)]
こうして、関数OR(7,4)は、S1の決定において、冗長であると言うことができる。
【0101】
図21の回路において、多重化は、3つの論理ゲートによって実行される。出力S2から縮小されないときには、
S2=[OR(15,8)∧OR(15,12)]∨
[¬OR(15,8)∧OR(15,4)]
上掲の式1と2を用いて、これは、次のようにに縮小される。
S2=OR(15,12)∨[¬OR(15,8)∧OR(15,4)]
これは、図21に図示されている論理回路であり、ブロック4の出力すなわちインバータと論理積ゲートと論理和ゲートとを結合するための3つの論理ゲートを備えている。
【0102】
こうして、式1,2に与えられる関係が、実現しようとする論理回路内で縮小をどこで可能にするかを識別する論理回路設計処理の間に、この縮小の処理を実行することができる。
そのような縮小の第2の例を示すために、もしk≧sとすると、
([OR_n_k]1∧[OR_m_s]2)∨([OR_m_s]1∧[OR_n_k]2)=([OR_m_s]1∧[OR_m_s]2)∧([OR_n_k]1∧[OR_n_k]2)
【0103】
これらの式によって、ある論理回路を共有化することで、ファンアウトを減らすことができる。ブロック2に見られるように、関数OR_4_2とOR_4_3は、3レベルの共有化した論理回路によって実現される。
【数12】
【0104】
ブロック3は、レベル3の論理回路を実現する回路である。この減少によって、関数OR_8_1,OR_8_2,OR_8_3,OR_8_4,OR_8_5,OR_8_6,OR_8_7,OR_8_8の以下の式がもたらされる。
【数13】
【0105】
ブロック4は、レベル4に対する論理回路を実現した回路である。関数OR_16_1とOR_16_4とOR_16_12の実現は、縮小した以下の式に従う。
【数14】
【0106】
本発明の本実施形態の2進ツリーの原理は、論理和あるいは排他的論理和対称関数を用いて実現することができる。排他的論理和対称式を用いる時は、適用する論理回路が縮小される。
【数15】
とし、ここでSが、kの2進表記の1つの一の組として唯一のものとして決定される自然数の組であるとすると、
EXOR_n_k=ANDi ∈ SEXOR_n_2i
である。
【0107】
こうして、EXOR_n_kを計算する回路を設計するのに、部分集合に値して関数EXOR_n_2iを計算するだけでよく、そうすることで、排他的論理和回路は低速であるが、論理和回路を使用するよりも少ないファンアウトとなる。
図21から分かるように、最も効率的な回路は、論理和と排他的論理和の対称関数論理回路が混じったものを含んでいてよい。
【0108】
それ以上の縮小は、論理和基本対称関数に基づいた並列計数器用の論理回路に適用することができる。例えば、第3上位ビットは次の表現ができる。
【数16】
【0109】
縮小は、次の式を使って、より一般的に書くこともできる。
【数17】
ここで、Skは、k番目の出力で得有り、k=0〜t−1であり、tは、出力の数である。
【0110】
最上位ビットの下の出力ビットの生成は、1つの対称関数の出力と他の対称関数の出力の反転値との少なくとも1つの論理積結合と、論理積結合の結果を論理和結合として説明することができる。
【0111】
縮小の他の重要な応用は、条件付き並列計数器用の論理回路である。条件付き並列計数器は、n個の入力を持ったモジュールである。Qを{0,1…n}の部分集合とする。この部分集合は、条件を決定する。モジュールは、このハイ入力の数がQに属するならば、ハイ入力の数の2進表記を作り出す。もしハイ入力の数がQに属しないならば、出力は、どんな論理関数であってもよい。そのようなモジュールは、もしハイ入力の数がQの中にあれば、並列計数器に置き換えることができる。
【0112】
便利な条件付き並列計数器が、m≦nに対して、Q={0,1…m}を持つ。そのような計数器に対する論理回路は、各OR_m_kをOR_n_kに置き換えることによって、m個の入力を持った並列計数器に対する論理回路から得ることができる。例えば、もしQ={0,1,2,3}ならば、条件付き並列計数器は、次の式で与えられる、2つの出力S1,S0を持つ。
S1=OR_n_2,S0=EXOR_n_1
【0113】
条件付き並列計数器の別の例は、Q={0,1,2,3,4,5}。
S2=OR_n_4,S1=¬OR_n_4∧OR_n_2,
S0=EXOR_n_1
である。もし、これら2つの計数器の1つに対して、ハイ入力の数がQに属さなければ、出力は、Qの最大要素の2進表記すなわち3=11,5=101である。
【0114】
先述した実施形態は、論理ユニットの2進ツリー階層配列を備えているが、本発明は、論理ユニットのどんな階層配置にも応用可能である。入力の分割は、2進によるものである必要は無く、全ての入力は、小さな基本対称関数を実行するための論理ユニットへの入力である必要は無い。
【0115】
例えば、図22は、入力の内の4つだけが、基本論理ユニットに入力される階層配置を示している。入力の4つは、この階層の第3レベルの論理ユニットへの入力のみである。階層の各レベルの各論理ユニットは、前のレベルにおける論理ユニットの論理回路を備えている。この例では、左側のレベル2の論理ユニットは、第1レベルの2つの論理回路を備えており、左側のレベル3の論理ユニットは、第2レベルの論理ユニットを2つ備えている。右側の第3レベルの論理ユニットは、本実施形態では、論理回路の下位ユニットで作られていない。第4レベルの論理ユニットは、全ての論理ユニットを備え、また論理回路を備えている。
【0116】
図23は、図12の論理回路を2つの階層レベルに分割したものを図示したものである。この例において、第1レベルにおける1つの論理ユニットには、5つの入力があり、他のものには2つある。5つの入力を持った論理ユニットは、図12に見られるように、OR_5_1,OR_5_2,OR_5_3,OR_5_4,OR_5_5の対称関数を実現するための論理回路を備えている。2つの入力を持った論理ユニットは、図12に見られるように、EXOR_7_1対称関数を実現するための論理回路を備えている。第2レベルにおける論理ユニットは、第1レベルにおける論理ユニットを備え、完全な論理回路を備えている。
【0117】
図24は、図13の論理回路を2層レベルに分割したものを図示した、別の例である。この例において、第1レベルにおける1つの論理ユニットには、4つの入力があり、他のものは3つある。4つの入力を持った論理ユニットは、図13に見られるように、OR_4_1,OR_4_2,OR_4_3,OR_4_4の対称関数を実現するための論理回路を備えている。3つの入力を持った論理ユニットは、図13に見られるように、OR_3_1,OR_3_2,OR_3_3の対称関数を実現するための論理回路を備えている。第2レベルにおける論理ユニットは、第1レベルにおける論理ユニットを備え、完全な論理回路を備えている。
【0118】
並列計数器の設計の間、既に使用可能な高速論理ユニットを再使用することによって、論理回路を削減することが可能である。次に有用な式がある。
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
【0119】
このようにして、もしライブラリにOR_4_3を生成する高速モジュールがあるならば、このモジュールは、OR_4_2を生成するのにインバータと共に使用することができる。反対の見方も同様にあり得る:OR_4_2モジュールによって、OR_4_3の生成が可能となる。経済的なトランジスタと高速な閾値関数を実現する一実施形態を、図25〜28を参照して次に説明する。この実施形態において、閾値関数が、基本対称関数として実現される。
【0120】
エレクトロニクスにおいて良く知られているのは、AND−OR−INVERT(論理積−論理和−反転)ゲートは、実現するのにトランジスタの数が少なくてすみ、かつ遅延特性が良好である。従って、本発明の本実施形態は、これを利用して、経済的かつ高速な回路設計を提供する。
【0121】
前述したように、良く知られているように、
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
… (a)
これから、導かれるのは、
¬OR_n_k(X1…Xn)=OR_n_(n+1−k)(¬X1…¬Xn)
… (b)
と、
OR_n_k(¬X1…¬Xn)=OR_n_(n+1−k)(X1…Xn)
… (c)である。
【0122】
表記を簡単にするために、式(a)は、次のように書くことができる。
【数18】
式(b)は、次のように書くことができる。
【数19】
式(c)は、次のように書くことができる。
【数20】
ここで、’は、出力の反転を表し、下線は、反転した入力を表す。
【0123】
これらの関係を用いると、基本対称関数OR_8_4[8,4]に対する回路は、図14を参照した上述の実施形態と同様のやり方で作ることができる。図25は、その中に3レベルの論理回路がある基本対称関数OR_8_4を、2進ツリーで実現したものを図示してある。回路は反転入力X1’…X8’を受け取る。第1層の論理ユニットは、図26に示したように、否定論理積(NAND)と否定論理和(NOR)ゲートを備える。もしこの論理ユニットへの入力がA’とB’であるならば(’は反転を表す)、このブロックの出力は、それぞれ[2,1]=(A’∧B’)と[2,2]=(A’∨B’)である。この論理回路は、反転した入力を受け取り、基本対称関数を実行する。
【0124】
第2レベルにおいて、2つの連続する第1層の論理ユニットからの出力[2,1]a,[2,2]a,[2,1]b,[2,2]bは、
【数21】
を出力するために結合される。このために、以下の関係が使用される。
【数22】
【0125】
これらの論理式を実現する論理回路が、図27に示される。この論理回路は、反転されない入力を受け取り、反転した基本対称関数を実現する。
第3レベルにおいて、2つの連続する第2層の論理ユニットからの出力
【数23】
は、[8,4]を出力するために結合される。
【0126】
以下の関係が使用される。
【数24】
これらの論理式を実現する論理回路が、図28に示される。この論理回路は、反転されない入力を受け取り、反転した基本対称関数を実現する。
【0127】
こうして、図25〜29から、対称関数と反転した対称関数とは、論理ユニットの階層構造の別のレベルにおいて実現される。もし、奇数のレベルがあれば、その回路への入力は、反転されなくてはならず、これは[8,4]の例で図示されている。このように反転した対称関数を使用することによって、論理積ゲートの代わりに高速の否定論理積ゲートを使用することができる(インバータの付いた否定論理積として実現され、従って、論理積ゲートの代わりに否定論理積ゲートを使用することで、関数を実現するのに必要な論理回路を減らすことができる)。必要な論理回路を減らすことで、論理回路全体の面積を減らすことにもなる。
【0128】
本発明の本実施形態において、階層論理構造の各レベルには、反転論理回路が含まれる。
この技術は、関数[8,4]に即して図解されたが、当業者にとっては、本技術が、いかなる大きさの関数にでも適用できることは、明らかであろう。さらに、本発明の本実施形態は、2進ツリー構造で実現されたが、本技術は、論理ユニットのいかなる階層構造に対しても使用できる。また、本発明の本実施形態は、反転した入力が使用されるが、もし階層内の論理ユニットのレベル数が偶数ならば、入力は反転される必要がない。代わりに、偶数のレベルにおける反転した対称関数を使用することができる。反転した入力は、反転した対称関数を実行する奇数レベルを持つ回路に対して必要である。
【0129】
条件付き並列計数器の重要な応用例は、定数乗算器(constant multipliers)である。定数乗算器は、Aが許容される定数であるだけで、入力が2つの数A,Bの2進表記となり、出力が積A*Bの2進表記を含んでいるようなモジュールである。定数乗算器は、乗算器よりも小さく高速であるので、被乗数を許された定数から選ぶことができる限り、これを使うことは有益である。例えば、ディジタルフィルターを設計するのに使用することができる。
【0130】
本発明の別の面には、乗算の技術が含まれており、これは以降で説明される。
乗算は、ディジタル回路において、基本的な演算である。次の2つのn桁の2進値
An−12n−1+An−22n−2+…+A12+A0と、
Bn−12n−1+Bn−22n−2+…+B12+B0
が与えられると、次の積
Pn−12n−1+Pn−22n−2+…+P12+P0
は、2n桁までである。出力として全てのPiを生成する論理回路は、一般的に、図14のやり方に従う。ウォレス(Wallas)氏は、乗算器に関する最初の高速アーキテクチャを発明し、今日ではそれは、ウォレス・ツリー(Wallace−tree)乗算器と呼ばれている(Wallace, C.S., A Suggestion for a Fast Multiplier, IEEE Trans.Electron.Comput.EC−13:14−17(1964年))(この内容は、ここに参照として組み入れられる)。ダッダ(Dadda)氏は、乗算器におけるビットの動きを研究した(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq 34:349−356(1965年))(この内容は、ここに参照として組み入れられる)。彼は、様々な乗算器を作成し、多くの乗算器は、ダッダ氏の方法による。
【0131】
ダッダ氏の乗算器では、図29による方法が使われている。もし、入力が8ビットならば、64個の並列の論理積ゲートは、図30に示されるアレイを生成する。論理積ゲートの記号∧は、はっきりさせるために控え、従って、Ai∧Bjは、AiBjになる。図30の残りの部分は、全加算器(FA)と半加算器(HA)とを含む、アレイの縮小を示してある。同じ列からのビットは、半加算器或いは全加算器によって加算される。全加算器に与えられるビットのグループのいくつかは、矩形によって示される。半加算器に与えられるビットのグループのいくつかは、楕円によって示される。アレイ縮小の結果は、最後の段階で加算される2つの2進数である。これらの2つの数を、例えば条件付き加算器或いはキャリー先読み加算器などの高速化算法の1つによって加算する。
【0132】
本発明のこの面には、選ばれた2つの段階が備わる:本発明の第1の面による並列計数器を用いたアレイ変形とアレイ縮小である。
アレイ変形の処理を次に説明する。
【0133】
図30によるようなAiBjで作られる、乗算アレイのいくつかの部分は、興味深い特徴を持っている。これらの部分における、ビットの和に対する簡単な式を書くことができる。そのような特殊な部分の例が、図31にある。一般的に、整数kを選び、アレイにおいてi−j−kの絶対値が1より小さいか等しいようなAiBjは、特別な部分を備えている。
【0134】
Siを、図1に示されるAiBjの形式の全てのビットの和のビットにする。すると、k>0の全てのkに対して、
【数25】
k>1の全てのkに対して、
【数26】
【0135】
これらの式は、アレイ中の選ばれた入力を加算する論理回路を示し、大きくはならない。無作為の数が加算されたとしても、(n+1)番目のビットに対する論理回路は、n番目のビットに対する論理回路よりも大きい。
これらの式を使って、異なるアレイを作ることができる。アレイの形は変化する。これは、アレイ変形と呼ばれるからである。これらの式は、特定の形のアレイを作ることによって、乗算回路の速度を上げることができるゆえに、重要である。
【0136】
図32中のアレイは、8ビット乗算用である。論理積ゲートの記号∧は、はっきりさせるために控え、従って、Ai∧Bjは、AiBjになる。アレイ変形論理回路はXとYとZを生成する。
【数27】
【0137】
図30に対するアレイの利点は、列の中のビットの最大数が小さいことである。図30中のアレイには、8ビットの列がある。図32のアレイには、7ビットの列が4つあるが、8ビット或いはそれ以上のは無い。XとYとZを生成する論理回路が、図33に示される。この論理回路は、アレイ縮小段階で、2つの第1全加算器(図2で図示される)と並列に使用することができ、従って、追加された論理回路による遅延を避ける。
【0138】
アレイ縮小は、図32で図示される。第1段階では、1つの半加算器と3つの全加算器と1つの4入力並列計数器と2つの5入力並列加算器と1つの6入力並列加算器と4つの7入力並列加算器を使用する。(列7,8,9の)3つの並列加算器は、7=5+2の分割に基づいて実現している。ビットX,Y,Zは、分割中の2のグループに加わる。列6の計数器は、7=4+3の分割で実現される。列5の分割は、6=3+3の分割に基づいている。残りの計数器は、分割されるべきではない。全加算器の位置は、楕円で示される。半加算器は、矩形で示される。
【0139】
最後の2つの2進数用の加算器は、2つの数におけるビットの到着時間に基づいて設計される。これは、多少利点となるが、常識すなわち条件付き加算器とリップルキャリー加算器に基づいている。
【0140】
本実施形態においては、2つの8ビットの数の加算が示されたが、本発明は、すべてのNビットの2進値加算に応用できる。例えば、16ビット加算に対して、アレイ縮小が、中間の列の高さを16から15に減らし、従って、2つの7ビット加算器を、第1層に対して2つの3ビット出力を作るのに使用することができ、残された入力を、先の7入力全加算器への入力として他の2つの3出力と共に使用することができ、従って、16ビットの加算をわずか2層で行うことができる。
【0141】
本発明の本実施形態は、論理積2進組合せによるアレイを作ることに関して説明したが、本発明のこの面は、2つの2進数のビットの論理的結合、例えば論理和結合と排他的論理和結合と否定論理積結合とのいずれの方法をも含んだアレイの形成と、ブース(Booth)符号化を用いたアレイの形成のいかなる方法をも含んでいる。さらに、2つの2進数の長さは、同じである必要は無い。
【0142】
本発明のこの面は、特定の乗算論理回路に関して説明されたが、本発明は、積和論理回路(乗算論理回路の特殊な例と見ることもできる)を含む乗算を実行する、いかなる論理回路にも応用できる。積和論理回路において、A×B+Cの演算が実行され、ここでCが前の乗算の和である。積和論理回路は、乗算論理回路に対して前述したA×Bのアレイを生成することによって動作する。さらに行がCのビットに対するアレイの中に加えられる。Cは、前の和によって、AあるいはBよりも多くのビットを持って良い。これによって、アレイが大きくなり、従い、上述したようにアレイ縮小を経る。
【0143】
本発明のこの面は、高速回路を提供するのに、本発明の第1の面の並列計数器と共に使用することができる。
【0144】
本発明の第1の面の並列計数器には、本発明の1つの面の乗算器で使用される以外の他の応用がある。それは、RSAと縮小した領域の乗算器内で使用することができる。乗算器の一部だけを作ることも実際的なことがある。これは、アレイが大きすぎる時、例えば、被乗数が1000ビット以上あるRSAアルゴリズムにおいてあり得る。そして、乗算器のこの一部は、アレイを縮小するために繰り返し使われる。現在、実施されているものにおいては、全加算器の集まりから成っている。全加算器の代わりに、7入力の並列計数器を使うこともできる。
【0145】
並列加算器は、誤り訂正符号の回路で使用することもできる。並列加算器を使って、ハミング距離を作ることができる。この距離は、ディジタル通信において有用である。特に、ハミング距離は、例えば、ビタビ復号器或いは多数決復号器のような種類の復号器において計算しなくてはならない。
【0146】
2つの2進メッセージ(A1,A2,…An)と(B1,B2,…Bn)を与えられたとき、これらの間のハミング距離は、AiとBiが異なるような、1とnの間の指標iの数である。この距離は、そのn個の入力が、
【数28】
であるような並列加算器によって計算することができる。
【0147】
積和演算は、フィルタリングを含むために、ディジタルエレクトロニクスにおいて、基本的なものである。2n個の2進数X1,X2,…Xn,Y1,Y2,…Ynが与えられた時、この演算の結果は、X1Y1+X2Y2+…XnYnとなる。
以上で説明した乗算器を、ハードウェアで、積和演算を実行するのに使用することができる。他の方法は、図29の方法を使うことでも良い。積XiYiにおける全ての部分的な積は、アレイを生成する。そして、アレイを縮小するのに並列加算器Xを使用する。
【0148】
本発明において、数のアレイを加算する必要がある時はいつでも、並列計数器を使用することができる。例えば、2の補数の形式の負の数を乗算する時、ブース記録(A.D.Booth, A Signed Binary Multiplication Technique, Q.J.Mech.4:236−240(1951年))(この内容は、ここに参照として組み入れられる)或いは他の方法によって、異なるアレイを生成する。積を得るために、数のこのアレイを加算する。
【0149】
図34には、本発明の他の面の実施形態が示されている。この実施形態は、閾値2を持ち、2進ツリーとして実現される閾値関数に従って、出力を生成する。従って、この回路は、ハイである入力の数(k)が少なくとも2であるときに、出力を生成するための基本対称関数を実現する。
従って、出力は、論理和対称関数として生成される。
【数29】
【0150】
従って、回路は、スイッチとして働き、ある数の入力がハイのときに、出力を提供する。出力は、例えば、いかなるOR_n_kの基本対称関数を備えていても良い。ここで、nは入力の数、kはハイの入力の数である。
【0151】
本実施形態において、1つの出力が示されているが、本発明のこの面の原理は、1つより多い出力OR_n_kを生成するのに使用することができる。例えば、1つの出力はOR_4_2で、他の出力はOR_4_3であって良い。従って、本発明は、閾値関数を氏よした出力を提供する論理回路を含む。これは、並列計数器出力或いは他の論理回路に使用することができる。
【0152】
本発明は、上で、特定の実施形態に関して説明したが、変更は本発明の趣旨と範囲の内にあることは、当業者なら明らかであろう。
上述した本発明の本実施形態の論理回路は、集積回路或いはディジタル電子機器において実現することができる。
【図面の簡単な説明】
【図1】従来技術による全加算器と半加算器の図である。
【図2】従来技術による全加算器を用いた並列計数器の図である。
【図3】2進出力を生成するために対称関数を実行する論理モジュールと、出力を選択するために使用される乗算器(選択器)の図である。
【図4】本発明の一実施形態による対称関数OR_3_1を実行するための論理回路の図である。
【図5】本発明の一実施形態による対称関数OR_4_1を実行するための論理回路の図である。
【図6】本発明の一実施形態による、2 3入力の論理和ゲートを用いた対称関数OR_5_1を実行するための論理回路の図である。
【図7】本発明の一実施形態による、2入力の排他的論理和ゲートを用いた対称関数EXOR_7_1を実行するための論理回路の図である。
【図8】本発明の一実施形態による対称関数OR_3_2を実行するための論理回路の図である。
【図9】本発明の一実施形態による対称関数EXOR_5_3を実行するための論理回路の図である。
【図10】本発明の一実施形態による、2種類の対称関数を用い、7つの入力と3つの出力を持った並列計数器の図である。
【図11】本発明の一実施形態による、小さい論理ブロックを再使用することができるように、対称関数OR_7_2を下位モジュールに分割することを示した図である。
【図12】本発明の一実施形態による、全ての入力ビットから最下位出力ビットを生成するためのEXOR_7_1対称関数を用いた並列計数器と、第2,第3出力を生成するのに論理和回路を用いて対称関数を実行す小モジュールとの図である。
【図13】本発明の一実施形態による、入力の分割は、別に、異なる機能的下位モジュールを使用するように選択されること以外は、図12と似た並列計数器の図である。
【図14】本発明に第2の面による、並列計数器の持つ論理回路の2進ツリー構造を示した図である。
【図15】本発明の一実施形態による、基本対称関数OR_2_2とOR_2_1を実行するための論理ブロック(ブロック1)の図である。
【図16】本発明の一実施形態による、第2対称関数OR_4_4とOR_4_3とOR_4_2とOR_4_1を実行するための論理ブロック(ブロック2)の図である。
【図17】本発明の一実施形態による、第3対称関数OR_8_8とOR_8_7とOR_8_6とOR_8_5とOR_8_4とOR_8_3とOR_8_2とOR_8_1を実行するための論理ブロック(ブロック3)の図である。
【図18】本発明の一実施形態による、対称関数OR_15_12とOR_15_8とOR_15_4を実行するための論理ブロック(ブロック4)の図である。
【図19】本発明の一実施形態による、基本対称関数EXOR_4_2とOR_4_1を実行するための論理ブロック(ブロック5)の図である。
【図20】本発明の一実施形態による、基本対称関数EXOR_15_2とOR_15_1を実行するための論理ブロック(ブロック6)の図である。
【図21】本発明の一実施形態による、図15〜20の論理ブロックを用いた並列計数器を示した図である。
【図22】本発明の一実施形態による、論理ユニットの階層構造を示した図である。
【図23】本発明の一実施形態による、他の論理ユニットの階層構造を示した図である。
【図24】本発明の一実施形態による、さらに他の論理ユニットの階層構造を示した図である。
【図25】本発明の一実施形態による、基本対称関数OR_8_4を実行するツリー構造の論理ユニットの階層構造を示した図である。
【図26】図25の回路の第1レベルの高速版用の論理回路の図である。
【図27】図25の回路の第2レベルの高速版用の論理回路の図である。
【図28】図25の回路の第3レベルの高速版用の論理回路の図である。
【図29】従来技術で使用される、乗算の段階の図である。
【図30】図29の処理のより詳細な図である。
【図31】アレイ内の対角線領域の特性を示した図である。
【図32】本発明によるアレイ変形と、アレイ縮小と追加に続く段階を示した図である。
【図33】アレイ生成のために、この実施形態で使用された論理回路の図である。
【図34】閾値関数として出力を生成するための論理回路の図である。
【符号の説明】
FA…全加算器
HA…半加算器
MU…乗算器
OR_…基本対称関数
EXOR_…基本対称関数
【発明の属する技術分野】
本発明は、広くディジタル電子機器に関し、その中で特に、2進論理を実行するディジタル電子機器に関する。本発明の1つの面は、並列計数器に関し、他の面は、2進数の乗算を実行する論理回路に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
多くの用途にとって、同じ2進の加重値のn個の入力を合わせて加えるブロックを持つことは役に立つ。このブロックの出力は、ハイの入力の数を2進で表したものである。その様な並列計数器と呼ばれるブロック(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq:349−356(1965年); E.E.Swartzlander Jr., Parallel Counters, IEEE Trans. Comput. C−22: 1021−1024(1973年))(これらの内容は、ここに参照として組み入れられる)は、2進の乗算を実行する回路の中で使用される。並列計数器の他の用途として、例えば、多数決復号器あるいはRSA符号化器と復号器がある。最高速を達成する並列計数器を提供することは重要なことである。乗算に並列計数器を使用するのは既知のことである(L. Dadda, On Parallel Digital Multipliers, Alta Freq 45: 574−580(1976年))(この内容は、ここに参照として組み入れられる)。
【0003】
全加算器は、3ビットの入力と2ビットの出力を持った、特別な並列計数器である。現在提供されている、より高度な計数器、すなわち入力がよりたくさんあるものは、全加算器を用いることを前提としている(C.C.Foster and F.D.Stockton, Conting Responders in an Associative Memory, IEEE Trans. Comput. C−20:1580−1583(1971年))。一般的に、出力の最下位ビットは、そのような適用において最も結果が出るのが速く、一方、他のビットは、通常これより遅い。
【0004】
以下の記述は、論理演算に用いられる。
【数3】
∨ 論理和
∧ 論理積
¬ 否定
【0005】
並列計数器の有効な従来技術による設計(Foster and Stockton)は、全加算器を用いている。FAと表される全加算器は、図1に示される、3ビットの入力を持つ並列計数器である。これは、3つの入力X1,X2,X3と2つの出力SとCとを持っている。出力に対する論理表現は、
【数4】
である。
【0006】
HAと表される半加算器は、図1に示される、2ビットの入力を持つ並列計数器である。これは、2つの入力X1,X2と2つの出力SとCとを持っている。出力に対する論理表現は、
【数5】
である。
図2に、従来技術による、7ビット並列計数器が図示される。
【0007】
Irving T. To とTien Chi Chen による”Multiple Addition by Residue Threshold Functions and Their Representation by Array Logic” (IEEE Trans. Comput. C−22:762−767(1973年))という表題の論文(この内容は、ここに参照として組み入れられる)は、残余閾値(residue threshold)機能を実行するための、正確な対称関数を使って、一集まりの数を足し合わせる方法を開示している。このやり方によって、従来の全加算器の速度が改善されたが、正確に計算する必要があるために、大幅に面積が増大する。
【0008】
乗算は、基本的な演算である。2つのn桁の2進数、
An−12n−1+An−22n−2+…+A12+A0 と
Bn−12n−1+Bn−22n−2+…+B12+B0 とが与えられると、その積である
P2n−122n−1+P2n−222n−2+…+P12+P0 は、2n桁までなり得る。出力として全てのPiを生成する論理回路は、一般的に図14に描かれた方式に従う。ウォーレス(Wallace)氏が乗算器として最初の高速アーキテクチャを発明し、現在では、ウォーレス・ツリー(Wallace−tree)乗算器と呼ばれる(Wallace, C.S., A Suggestion for a Fast Multiplier, IEEE Trans. Comput. EC−13:14−17(1964年))(この内容は、ここに参照として組み入れられる)。ダッダ(Dadda)氏は、乗算器におけるビットの動きを探求した(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq 34:349−356(1965年))(この内容は、ここに参照として組み入れられる)。彼は、ダッダ氏のとウォーレス氏の方式に則った様々な乗算器と殆どの並列乗算器を作成した。
【0009】
ダッダ氏の乗算器は、図22の方式を使用する。もし、入力が8ビットならば、64個の並列のAND回路が図23に示すアレイを生成する。ANDゲートの印∧は、簡略化のために書かれないので、Ai∧BjはAiBjとなる。図23の他の部分には、全加算器(FA)と半加算器(HA)を含むアレイの縮小が示される。同じ列からのビットは、半加算器あるいは全加算器によって加算される。全加算器に導かれるビットの或るグループは、矩形である。半加算器に導かれるビットの或るグループは、楕円である。アレイ縮小の結果は、最終段階で、加算される2個の2進数となる。1つは、これら2個の数を高速加算法の1つによって加算するが、これは例えば条件付き加算器あるいはキャリー先読み加算器などである。
【0010】
【課題を解決するための手段】
第1の面に従って、本発明は、基本対称関数の代数的特徴に基づいた並列計数器を提供する。複数の2進出力ビットの各々は、複数の2進入力ビットの基本対称関数として生成される。
【0011】
基本対称関数には、1つ或いは2つ以上の2進入力値の組を論理積(AND)で結合することと、論理的に結合された2進入力値の組を論理和(OR)或いは排他的な論理和で結合することを含み、2進出力を生成する。論理和と排他的論理和の対称関数は、基本対称関数であり、生成された出力の2進ビットは、入力の2進ビットの中のハイの入力の数によってのみ決まる。論理和対称関数において、もし、ハイの入力の数が、mならば、m≧kのときにのみ、出力はハイとなるが、ここで、kは、2進入力の組の大きさである。同様に、排他的論理和の対称関数を使って生成される2進出力ビットは、m≧kであり、かつ、ハイの入力の組の入力の部分集合の数が奇数のときにのみ、出力はハイとなる。1つの実施形態において、組の大きさは選択可能である。i番目の出力ビットは、排他的論理和の論理回路を用いた対称関数を用いて、その大きさが2iとなるよう選択することで生成することができるが、ここで、iは、1からNの間の整数であり、Nは2進出力の数であり、iは、各2進出力の重要さ(significance)を表す。
【0012】
1つの実施形態において、基本対称関数で使用される2進入力の組は、それぞれ、ただ1つのものであり、2進入力の全ての可能な組合せを網羅する。
【0013】
本発明の1つの実施形態において、論理回路は、複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の対称関数として用意される。2進入力は、複数の論理ユニットへの入力に分けられ、2進出力が複数の論理ユニットの2進出力を用いて生成される。
【0014】
この実施形態によって、回路内のファンアウトの数が減少し、論理回路を共有する数が増加する。その結果、大きな2進数のための並列計数器を、さらに実現可能にする。
【0015】
本発明の1つの実施形態において、論理回路は、階層的に用意される複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力をユニットの2進入力の基本対称関数として生成するように準備される。階層構造のより低位のおよびその各々における論理ユニットが、階層構造のより高位のおよびその各々における論理ユニットの論理回路内に含まれ、それ以上の入力を持つ。
【0016】
本発明の特定の実施形態において、並列計数器の論理回路と入力とは、2進ツリー(tree)に従って、分けられる。その論理回路は、複数の論理ユニットに分けられる。各論理ユニットは、論理ユニット2進出力をユニットの2進入力の基本対称関数として生成するように準備される。2進入力は、複数の論理ユニットへの入力に分けられ、複数の出力の2進出力は、複数の論理ユニットの2進出力を用いて、生成される。
【0017】
ある実施形態において、論理ユニットの各々は、2進入力の2nを受け取るように用意されており、ここで、nは、2進ツリー内の論理ユニットのレベルを示す整数であり、全体の論理回路は各レベルでm個の論理ユニットを持ち、ここでmは、(2進入力の数)/2nから決定される丸められた整数であり、2進ツリー内に置いて高レベルの論理ユニットは、2進ツリー内のより低位のレベルで論理ユニットの論理回路を備え、各論理ユニットは、論理ユニットへの2進入力の基本対称関数として論理ユニット2進出力を生成するように決められる。
【0018】
1つの実施形態において、第1レベルの各論理ユニットは、前記全体の論理回路への2進入力の最小基本対称関数として、論理ユニット2進出力を生成するようにまとめられる。
【0019】
1つの実施形態において、第1レベルの各論理ユニットは、2進入力を結合するために、論理和ゲートを使用して論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられる。
【0020】
1つの実施形態において、第1レベルの各論理ユニットは、論理ユニットへの2進入力の各々を論理積し、論理ユニットへの2進入力の各々を論理和して、論理ユニット2進出力を生成するようにまとめられる。
【0021】
1つの実施形態において、第1レベルの各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するために排他的論理和を用いて、論理ユニット2進出力を生成するようにまとめられる。
1つの実施形態において、第1レベルの各論理ユニットは、論理ユニットへの2進入力の各々を論理積し、論理ユニットへの2進入力の各々を排他的論理和して、論理ユニット2進出力を生成するようにまとめられる。
【0022】
1つの実施形態において、基本対称関数を実行するために、基本論理ユニットは、第1レベルで論理ユニットとして提供され、また、前記複数の入力からの論理的に近い4つの2進入力を受け取るための、2つの第1基本論理ユニットの各々からの出力は、2つの第2基本論理ユニットへ入力され、副基本論理ユニットの各々からの出力は、第3基本論理ユニットへ入力され、第1及び第2及び第3論理ユニットは、第2基本論理ユニットの各々からの2進出力と、第3基本論理ユニットからの2つの2進出力とを備えた2進出力を持った2進ツリーの第2レベルにおいて、第2論理ユニットを形成する。
【0023】
1つの実施形態において、2進ツリーの第3レベルにおける第3論理ユニットは各々、複数の入力から論理的に隣り合う8個の2進入力を受け取る2つの第2論理ユニットと、入力として2つの第2論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、4個の基本論理ユニットの2進出力を用いて第3論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備える。
【0024】
1つの実施形態において、2進ツリーの第4レベルにおける第4論理ユニットは各々、複数の入力から論理的に近い16個の2進入力を受け取る2つの第3論理ユニットと、入力として2つの第3論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、4個の基本論理ユニットの2進出力を用いて第4論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備える。
【0025】
1つの実施形態において、最小の基本対称関数を実行するための第1レベルにおける論理ユニットとして基本論理ユニットが提供され、より高位のレベルの論理ユニットは、より低位のレベルの論理ユニットを備える。
【0026】
1つの実施形態において、第2レベル以上のより高位のレベルの論理ユニットは、すぐ前のレベルの論理ユニットと基本論理ユニットとを備える。
【0027】
1つの実施形態において、各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するための論理和回路を用いて、論理ユニット2進出力を生成するようにまとめられる。
【0028】
1つの実施形態において、各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するための排他的論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられる。
【0029】
1つの実施形態において、2進出力の各々は、排他的論理和回路を使用する基本対称関数を用いて生成することができる。しかし、排他的論理和回路は、論理和回路ほど速くない。
【0030】
本発明の他の実施形態によって、少なくとも1つの2進出力が、2進入力の基本対称関数として、様々な組の1つ或いは2つ以上の2進入力を結合するために、論理和回路を用いて生成される。その論理回路は、2進入力の各組の要素を論理積し、論理積演算の結果を論理和するようにまとめられる。
【0031】
こうして、論理和回路を用いた基本対称関数を使用することで、より速くなり、出力最上位ビットを生成するのに使用することができる。そのような実施形態において、大きさの設定は、2N−1に設定され、ここでNは、2進出力の数であり、N番目の出力が最上位である。
【0032】
また、上位ビットの出力値に基づいて、下位ビット用に論理和回路を用いた、基本対称関数を使用することもできる。そのような場合、N番目より下位の2進出力に対して可能な複数の2進出力が、Nを2進出力の数とする時に、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和回路を用いて、2進入力の基本対称関数として生成される。上位2進出力値に基づいて、可能な2進出力の1つを選択するのに、選択回路が提供される。(N−1)番目のビット用の、そのような装置における、この組の大きさは、それぞれ2N−1+2n−2と2N−2であるのが望ましく、可能な2進出力の1つは、N番目の2進出力値に基づいて選択される。
【0033】
本発明の一実施形態において、回路は、モジュラー形式で設計される。複数の下位回路モジュールが設計され、各々は、いくつかの2進入力の基本対称関数として、中間の2進出力を生成するためのものである。論理回路は、また、この実施形態において、2進出力を作るための中間の2進出力を論理的に結合するために提供される。
【0034】
本発明の一実施形態において、論理ユニットは、階層的にまとめられて、階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットが、反転した基本対称関数を実行する。1つの装置において、階層内の奇数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、その論理ユニットへの入力は、反転される。他の装置において、階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、この論理ユニットへの入力は、反転されない階層内の第1レベルの論理ユニットへ入力される。本発明のこの実施形態によって、論理回路内で使用される、高速の反転論理ゲートが可能になる。
【0035】
論理和回路は高速なので、一実施形態において、下位論理回路モジュールは、論理和回路を用いて基本対称関数を実行する。一実施形態において、下位回路モジュールを、いくつかの2進出力を生成するのに使用することができ、また、1つ或いは2つ以上の論理モジュールを、他の2進出力をするために、提供することができるが、ここで、1つ或いは2つ以上の2進入力の複数の組を結合するために、各論理モジュールは、2進入力の排他的論理和回路の基本対称関数として、2進出力を生成する。
【0036】
本発明の他の面によると、論理回路を設計する方法が提供され、該方法は、各々が小さい基本対称関数を実行するための論理モジュールのライブラリを提供する段階と、大きな基本対称関数を実行するための論理回路を設計する段階と、前記基本対称関数を実行できる小さな基本対称関数を識別する段階と、前記小さな基本対称関数を実行するために前記ライブラリから論理モジュールを選択する段階と、ある基本対称関数を実行し他の基本対称関数を実行するのに使用できる論理回路を、選択した論理回路内で識別する段階と、識別した基本対称関数に対応する論理回路を選択する段階と、選択した論理回路をインバータと共に使用して、基本対称関数間の
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
という関係を使って前記他の基本対称関数を実行する段階とを備えており、ここで、¬は反転を表し、nは入力の数であり、kは互いに論理積結合される入力の数である。
【0037】
本発明の他の面によると、n個の入力から、m個の可能なハイ入力を持つ条件付き並列計数器が提供され、ここでm<nであり、nとmは整数であり、前記計数器は、入力を計数してm個の入力に対してp個の出力を作る並列計数器を備え、ここで、計数器への入力の数nは、2pよりも大きく、pは、整数である。
【0038】
こうして、本発明のこれらの面によると、並列計数器を用いた全てのアーキテクチャにおいて使用することのできる高速な回路が提供される。その設計は、それによって論理回路を作るような全ての技術に対して応用可能である。
本発明のこの面に従った並列計数器は、一般的に、従来の計数器よりも著しく高速の乗算回路において応用でき使用できる。
【0039】
本発明の1つの面によると、n個の入力から、m個の可能なハイの入力を持つ条件付き並列計数器が提供され、ここでm<nであり、nとmは整数である。条件付き並列計数器は、上述した並列計数器を備え、これは、入力を計数して、m個の入力に対してp個の出力を生成するが、ここで、計数器への入力の数nは、2pよりも大きい。条件付き乗算器は、例えばディジタルフィルターの中で使用することができる。
【0040】
本発明の他の面に従って、2進数を乗算するための技術は、2つの2進数のビットの間で論理結合した、従来のものに比べて小さな配列が作られる、配列生成段階を備えている。
【0041】
本発明のこの面に従って、2つの2進数を乗算するための論理回路は、1つの2進数に含まれる各ビットと他の2進数に含まれる各ビット間で、2進値のアレイを備えた論理2進結合値のアレイを生成する論理2進処理を行い、かつ、アレイの最大深さをNビット未満にまで下げるのに論理的に隣接した値を論理的に結合するためのアレイ生成論理回路と、アレイの深さを2つの2進値まで下げるためのアレイ縮小論理回路と、2つの2進数の2進値を加算するための加算論理回路とを備え、ここで、Nは、2つの2進値の最大のもののビット数である。
【0042】
一実施形態において、2つの2進数が互いに乗算されるとき、従来は、第1の2進数の各ビットAiは、第2の2進数Bjの各ビットと論理的に結合されて、論理組合せAiとBjで表される2進数のシークエンス(sequence)を備えるアレイを生成する。それ以外の論理的結合は、A1とBN−1,A1とBN−2,A0とBN−2,A0とBN−1の組合せを論理的に結合することによって実行されるが、ここで、Nは、2進数のビット数である。このようにして、アレイ内で互いに加算される数の最大列の大きさが縮小される。
【0043】
より深く説明すると、アレイ生成論理回路は、A1 AND Bn−2と、A0 AND Bn−1の組合せを結合して、排他的論理和を用いてこの結合を置き換え、またA1 AND BN−1と、A0 AND Bn−2の組合せを結合して、A1 AND Bn−1の結合を置き換えるようにまとめられている。
【0044】
本発明の一実施形態では、アレイ縮小論理回路は、少なくとも1つの全加算器と、少なくとも1つの半加算器と、少なくとも1つの並列計数器との内から、少なくとも1つを含むことができる。該並列計数器あるいはその各々は、本発明の第1の面に従って、並列計数器を備えることができる。
【0045】
本発明のこの面によって、アレイ内の最大列長が短縮され、従って、アレイ縮小に必要な段階の数が少なくなる。本発明の第1の面が、本発明の第2の面と共に用いられると、さらに効率的な乗算回路が提供される。
【0046】
本発明の一実施形態によると、上述した論理回路を備えた積和(multiply−accumulate)論理回路が与えられ、前記アレイ生成論理回路は、前の乗算の累積を含むように作られる。
【0047】
本発明の他の面では、1つの2進数を複数の2進入力として受け取るための、少なくとも4つの入力と、2進符号を出力するための少なくとも1つの出力と、2進ツリーとして実現され、少なくとも2の閾値を持つ閾値関数に従って、第2進出力あるいはその各々を生成するために、複数の入力と該2進出力あるいはその各々との間で接続された論理素子とを備えた論理回路が提供される。閾値関数は、少なくとも入力の閾値kがハイの時、そしてその時のみハイであり、k≧2である。
【0048】
本発明の一実施形態において、論理素子は、該2進出力あるいはその各々を、2進入力の基本対称関数として作られ、すなわち、閾値関数は、基本対称関数として実現される。
【0049】
本発明の他の面によると、2進数を複数の2進入力として受け取るための少なくとも4つの入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と複数の2進出力の間で接続されて該複数の2進出力あるいはその各々を2進入力の基本対称関数として生成するように作られる論理素子とを備えた論理回路が提供される。
【0050】
本発明の他の面によると、2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力あるいはその各々との間で接続されて、該2進出力あるいはその各々を2進入力の閾値関数として生成するように作られた論理素子とを備えた論理回路を設計するための方法とシステムが提供される。この方法は、閾値関数を実行するための論理素子を決定する段階と、2つの閾値関数の論理積を実行する論理素子を識別して、識別した論理素子を高い閾値を持った閾値関数を実行するための論理素子へ縮小する段階と、2つの閾値関数の論理和を実行する論理素子を識別して、識別した論理素子を低い閾値を持った閾値関数を実行するための論理素子へと縮小する段階と備える。
【0051】
本発明のこの面は、1つ或いは多くのネットワーク接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現される。本発明は、かくして、コンピュータシステムを制御するためのプログラムコードを含んでいる。このコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0052】
本発明のさらなる面によると、2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力との間で接続されて、各々の2進出力を2進入力の対称関数として生成するように作られた論理素子とを備えた論理回路を設計するための方法とシステムが提供される。この方法は、排他的論理和を使用した論理回路を設計する段階と、同時にハイとなる入力を持つことのできない論理回路を全て識別する段階と、識別した排他的論理和を論理和に置き換える段階とを備える。
【0053】
本発明のこの面の一実施形態では、論理回路は、各2進出力を、2進入力の基本対称関数として生成するように設計される。
本発明のこの面の特定の実施形態では、論理回路は、並列計数器を備える。
【0054】
本発明のこの面は、1つ或いは多くのネットワークで接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現される。こうして、本発明は、コンピュータシステムを制御するためのプログラムコードを含む。このコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0055】
本発明のさらなる面によると、その各々が小さな対称関数を実行する論理モジュール設計のライブラリを提供する段階と、大きな対称関数を実行する論理回路を設計する段階と、前記対称関数を実行することのできる小さな対称関数を識別する段階と、前記小さな対称関数を実行する前記ライブラリから論理モジュールを選択する段階と、選択された論理回路の中から、対称関数を実行し、他の対称関数を実行するのに使用できる1つの論理回路を識別する段階と、識別された対称関数に対応し、かつ、
OR_N_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
の対称関数間の関係を用いて前記他の対称関数を実行するインバータを備えた選択された論理回路を用いて、論理回路を選択する段階とを備えた設計するための方法とシステムが提供される。前記式において、¬は反転を表し、nは入力の数であり、kは互いに論理積結合した入力の組の数である。
【0056】
本発明のこの面の一実施形態において、対称関数は、基本対称関数である。
本発明のこの面は、1つ或いはたくさんのネットワークで接続されたコンピュータを備えたコンピュータシステムを用いたソフトウェアで実現することができる。こうして、本発明は、コンピュータシステムを制御するためのプログラムコードを含んでいる。このこのコードは、例えば、フロッピー(登録商標)ディスクやハードディスクやCD ROMやプログラム可能な記憶素子や、電気的、光学的、マイクロ波、音響、無線周波数などの過渡的媒体(transient medium)のような可搬媒体上のコンピュータシステムに提供することができる。過渡的媒体の一例は、コードを、インターネットのようなネットワーク上で運ぶ信号である。
【0057】
【発明の実施の形態】
次に、本発明の実施形態を、添付する図面を参照して説明する。
【0058】
本発明の第1の面を、次に説明する。
本発明の第1の面は、2進数に含まれるハイの値の数を計数する並列計数器に関する。この計数器は、i個の出力とn個の入力とを持ち、ここでiはlog2nプラス1の整数部分として決定される。
【0059】
本発明の第1の面に対する数学的な基盤は、対称関数の理論である。Cn kでn個の要素の組の、異なるk個の要素の部分集合の数を表す。n個の変数X1,X2,…Xnの、以下に掲げる2つの関数EXOR_n_kとOR_n_kを考える。
【数6】
ここで、(i1,i2,…ik)は正確にk個の要素を持つ{X1,X2,…Xn}の可能な全ての部分集合に渡る。そのような出力を作り出すブロックは、図3に示される。
【0060】
関数EXOR_n_kとOR_n_kは、基本対称関数である。それらの値は、X1,X2,X3,…Xnの中のハイの入力の数だけで決まる。より正確に言うと、もしmがX1,X2,X3,…Xnの中のハイの入力の数ならば、OR_n_k(X1,X2,…Xn)は、m≧kの時のみ、ハイとなる。同様に、EXOR_n_k(X1,X2,…Xn)は、m≧kかつCm kが奇数の時のみ、ハイとなる。
【0061】
EXOR_n_kとOR_n_kは、似ているように見え、排他的論理和ゲートが論理和ゲートよりも遅いために、OR_n_kは、より高速である。
【0062】
上記の表記で、nは入力の数であり、kは選択された入力の部分集合の大きさである。k個の入力の各組は、唯一の組であり、部分集合には、入力の組の全ての可能な部分集合が含まれている。例えば、対称関数OR_3_1には、3つの入力X1,X2,X3があり、この組の大きさは1である。したがって、この組には、X1,X2,X3が含まれる。これらの組の各々は、2進出力を作るために、論理和結合される。この関数を実行するための論理回路が図4に示されている。
【0063】
図5には、対称関数OR_4_1を実行するための論理回路が示されている。
入力の数が大きくなると、単純な論理回路を用いることができなくなるだろう。
図6には、対称関数OR_5_1を実行するための2つの論理和ゲートが示されている。
【0064】
図7には、同様に、EXOR_7_1を実行する論理回路が示されている。この組には、入力X1,X2,X3,X4,X5,X6,X7が含まれる。これらの入力は、排他的論理和ゲートの3つのレベルに入力される。
【0065】
kが1より大きい時、部分集合内の入力は、論理積結合されなくてはならない。図8には、対称関数OR_3_2を実行するための論理回路が示されている。入力X1とX2は、第1の組を含んでおり、第1論理積ゲートに入力される。入力X1とX3は、第2の組を構成し、第2論理積ゲートに入力される。入力X2とX3は、第3の組を構成し、第3論理積ゲートに入力される。論理積ゲートの出力は、論理和ゲートに入力され、出力関数を生成する。
【0066】
図9は、対称関数対称関数EXOR_5_3を実行するための論理回路が示された図である。この関数を実行するのに、5つの入力の組用の大きさ3の部分集合が、10個の組を備え、10個の論理積ゲートが必要になる。論理積ゲートの出力は、排他的論理和ゲートに入力されて関数を生成する。
【0067】
対称関数を実行するための特定の論理回路は、技術に依存している。それゆえ、論理回路は、使用される技術に従って設計することになる。
本発明の第1実施形態に従って、各出力の並列計数器は、排他的論理和回路を用いた対称関数を使って作られる。
【0068】
並列計数器に、n個の入力X1,…Xnと、t+1個の出力St,St−1,…S0を持たせる。S0は、最下位ビットであり、Stは最上位ビットである。0からtの全てのiに対して、Si=EXOR_n_2i(X1,X2,…Xn)である。
【0069】
したがって、7ビット入力、すなわちn=7に対して、iの値は0,1,2となることが分かる。したがって、出力S0を生成するために、関数はEXOR_7_1となり、出力S1を生成するために、関数はEXOR_7_2となり、出力S2を生成するために、関数はEXOR_7_4となるだろう。こうして、最下位ビットに対して、組の大きさ(k)は1であり、第2ビットに対して、組の大きさは、2であり、最上位ビットに対して、組の大きさは4である。上位ビットに対して必要な論理回路は、どんどん複雑になり、実行速度が遅くなるのは、明らかである。
【0070】
したがって、本発明の第2実施形態に従って、出力最上位ビットは、論理和回路を用いた対称関数を使って生成される。
OR_n_k関数は、EXOR_n_k関数よりも高速であるから、これはより実際的である。出力最上位ビットに対して、
Sk=OR_n_2t(X1,X2,…Xn)である。
特に、7ビット入力ならば、
S2=OR_7_4(X1,X2,X3,X4,X5,X6,X7)である。
【0071】
したがって、本発明のこの第2実施形態において、最上位ビットは、論理和回路を用いた対称関数を使って生成され、ところが、他のビットは、排他的論理和回路を用いた対称関数を使って生成される。
第3実施形態が、次に、説明されるが、そこでは、中間ビットが、論理和回路を用いた対称関数を使って生成される。
【0072】
任意の出力ビットは、最上位のビットが分かっていれば、OR_n_k関数を用いて表すことができる。例えば、第2最上位ビットが、
St−1=(St∧OR_n_2t+2t−1)∨((¬St)∧OR_n_2t−1)
で与えられる。特に、7ビットの入力ならば、
S1=(S2∧OR_7_6(X1,X2,X3,X4,X5,X6,X7))∨
((¬S2)∧OR_7_2(X1,X2,X3,X4,X5,X6,X7))である。
【0073】
さらに縮小すると、
S1=OR_7_6(X1,X2,X3,X4,X5,X6,X7)∨
((¬S2)∧OR_7_2(X1,X2,X3,X4,X5,X6,X7))である。
図3に示される乗算器MUは、この論理回路を実現している。そこには、2つの入力X0,X1と、制御Cと、下式で決定される出力Zがある。
Z=(C∧X1)∨((−C)∧X0)
【0074】
EXOR_n_k関数やOR_n_k関数を排他的に用いるのは、実際的でない。わずかの最上位ビットに対してOR_n_kを用い、残りのビットに対してEXOR_n_kを用いるのが望ましい。TSMC.25において、7入力の最速の並列計数器が図10に示されている。
【0075】
高速のOR_15_8ブロックを持った将来の技術ならば、15入力の並列計数器を作ることができるだろう。OR_n_mを用いた第3最上位ビットに対する式は、次の様である。
St−2=(St∧St−1∧OR_n_2t+2t−1+2t−2)∨
(St∧(¬St−1)∧OR_n_2t+2t−2)∨
((¬St)∧St−1∧OR_n_2t ― 1+2t−2)∨
((¬St)∧(¬St−1)∧OR_n_2t−2)
【0076】
本発明の第4実施形態が、次に、説明されるが、それは、対称関数を実行する論理ブロックを再使用できる小さなブロックに分割する。
OR_7_2の実行が、図11に示される。7つの入力は、2つのグループに分けられる、それは、X1からX5の5つの入力と、2つの残りの入力X6とX7である。そして、以下の恒等式は、図11の実行の基礎になるものである。
OR_7_2(X1,…,X7)=OR_5_2(X1,…,X5)∨
(OR_5_k1(X1,…X5)∧OR_2_1(X6,X7))∨
OR_2_2(X6,X7)
【0077】
OR_7_4とOR_7_6に対して、同様の式を書くことができる。
OR_7_4(X1,…,X7)=OR_5_4(X1,…,X5)∨
(OR_5_3(X1,…X5)∧OR_2_1(X6,X7))∨
(OR_5_2(X1,…X5)∧OR_2_2(X6,X7)),
OR_7_6(X1,…,X7)=
(OR_5_5(X1,…X5)∧OR_2_1(X6,X7))∨
(OR_5_4(X1,…X5)∧OR_2_2(X6,X7))。
【0078】
したがって、変数を分割して、小さなOR_n_k関数を並列計数器の中で再使用するのは有利なことである。例えば、図12で、7つの入力を2つと5つのグループに分けることに基づいた並列計数器の導入である。
同様に、7つの入力を、4つと3つのグループに分けることもできる。このやり方で分割した並列計数器が、図13に載っている。このやり方では、次の論理式を使用する。
【0079】
【数7】
【0080】
図12と図13における実行の間で方法を選ぶ必要がある。ここに、選択する際の肺炎規則(pneumonic rule)がある。もし1つ或いは2つの入力が、どうしても遅れて到着した場合、7=5+2の分割に則った図12のように実行すべきである。さもないと、7=4+3の分割に則った図13ののように実行するのが、多分最適である。
【0081】
6入力、5入力、4入力の並列計数器は、7入力並列計数器に対する論理回路に従って、実現することができる。入力の数を減らすことで、面積を著しく減らすことができ、速度を少々上げることができる。6,3+3,4+2の分割を用いて、6入力の並列計数器を実現するのが有利である。
本発明の一実施形態が、次に、図14〜21を参照して説明される。
【0082】
すべてのOR_n_k或いはEXOR_n_k関数を2レベルの論理回路で実現することが可能であるが、各入力のファンアウトが非常に高く、論理和ゲートのファンインも非常に高い。ファンアウトとファンインの両方が高いことにより、回路の遅延に著しく影響することは知られている。2つ以上のOR_n_k或いはEXOR_n_k関数が、同じ入力から数えられることが、しばしば必要である。2レベルの実現は、論理回路の共有化ができず、その結果、面積が広くなる。
【0083】
本発明のこの実施形態は、ファンアウトを減らして論理回路を再使用することができるように、入力と論理回路を分割する2進ツリーを使用する。図14には、論理回路の構成が図示されている。第1レベルにおいて、8個の基本論理ブロック1が使用され、各々は2進入力を2つ持ち、2つの出力を備えている。第1レベルの基本論理ブロック1は、基本対称関数を実行する。これらは、排他的論理和対称関数か、あるいは論理和対称関数であってよい。第2レベルにおいて、4つの第2次論理ブロック2の各々が、2つの基本論理ブロック1の論理回路を使用し、従って、4つの入力と4つの出力を持つ。第2次論理ブロック2は、より大きな対称関数を実行する。第3次レベルにおいて、2つの3次論理ブロック3の各々が2つの第2次論理ブロック2の論理回路を使用し、従って、8つの入力と8つの出力を持つ。第3次論理ブロック2は、より大きな対称関数を実行する。第4レベルにおいて、並列計数器4は、2つの第2次論理ブロック3の論理回路を使用し、従って、16個の入力と16個の出力とを持つ。
【0084】
図14から分かるように、論理回路の2進ツリー配列によって、並列計数器に使用する、より小さな対称関数を実行する論理回路が可能になる。また、この配列は、有効な論理回路の分割に対して用意される。これによって、著しくファンアウトが減る。
後に、より詳細に説明されるであろうが、2進ツリーの中の前の論理ブロックの出力を結合するための基本対称関数の論理回路を使用することによって、さらに論理回路を分割することも可能になる。
【0085】
関数OR_16_8とOR_16_4とOR_16_12は、入力X1,X2…X16の組から作られている。しかし、実施形態は、各論理和ゲートを排他的論理和ゲートで置き換えた後に、同じ構造がEXOR_n_k関数に適用されるOR_n_k関数で説明される。
【0086】
本発明のこの実施形態を支える原理を、次に説明する。関数OR_(r+s)_kは、tが0,1,2…kと変化する時に、関数OR_r_k∧OR_s_t−kの論理和で計算することができる。
OR_(r+s)_t(X1…Xr+s)=∨k=0 t[OR_r_k(X1…Xr)∧OR_s_(t−k)(Xr+1…Xr+s)]
【0087】
16個の入力を持つ一実施形態において、第1レベルでは、16個の入力が8個の部分集合―{X1,X2},{X3,X4},…,{X15,X16}に分割され、各部分集合は、2つの入力を備える。各部分集合にとって、OR_2_1とOR_2_2を計算する論理ブロックが作られる。ツリーの第1レベルから8個のブロックがある。各入力は、1つの論理和ゲートと1つの論理積ゲートへとファンアウト(fan out)するので、各入力のファンアウトは2であると分かる。第1層は、8個の同じブロックから非常に規則正しく構成される。対称関数OR_2_1とOR_2_2を計算するための論理ブロック1が、図15に示される。
【0088】
第2レベルにおいて、4個の論理ブロック2は、レベル1における2つの隣り合う論理ブロック1からの出力を結合することにより作られる。これらの4個のブロックは、ツリーの第2層を構成する。各ブロックには、入力として、レベル1から隣り合うブロックの主力を持っている。入力は、結合されて関数OR_4_1、OR_4_2、OR_4_3、OR_4_4を形成する。これらの対称関数を計算するための論理ブロック2が、図16に示されている。以下の式の中で使用される指標1と2は、入力の組の異なる部分集合に作られる関数を区別するものである。対称関数は、次の様に表すことができる。
【0089】
OR_4_1=[OR_2_1]1∨[OR_2_1]2,
OR_4_2=([OR_2_1]1∧[OR_2_1]2)∨
([OR_2_2]1+[OR_2_2]2),
OR_4_3=([OR_2_1]1∧[OR_2_2]2)∨
([OR_2_2]1∧[OR_2_1]2),
OR_4_4=[OR_2_2]1∧[OR_2_2]2
【0090】
第3レベルにおいて、2つの論理ブロック3は、レベル2の2つの隣り合う論理ブロック2からの出力を結合して作られる。これらの2つのブロックは、ツリーの第3層を構成する。各ブロックには、入力として、レベル2からの2つの隣り合うブロックの出力がある。その入力は、関数OR_8_1,OR_8_2,OR_8_3,OR_8_4,OR_8_5,OR_8_6,OR_8_7,OR_8_8から結合される。これらの対称関数を計算するための論理ブロック3が、図17に示される。対称関数は、以下のように表すことができる。
【0091】
【数8】
【0092】
最後のレベルにおいて、出力は、レベル3での2つの隣り合う論理ブロック3からの出力を組み合わせることによって作られる。この論理回路は、ツリーの第3層を備える。レベル3からの2つの隣り合うブロックの出力は、関数OR_16_8とOR_16_12を作るために結合される。これらの対称関数を計算するための論理ブロック4が、図18に示されている。対称関数は、以下のように表すことができる。
【0093】
【数9】
【0094】
本発明に従って、論理ブロック3の出力を用いて並列計数器の出力を全て生成することは可能であるが、別々に並列して最下位ビットを決定することは、有利なことである。これは、図19と図20とに示されている。これによってファンアウトが多少増えるが、ツリーの深さを減らし、そして回路の速度を上げる。図19は、対称関数EXOR_4_2とEXOR_4_1とを決定するための論理ブロック5の図である。EXOR_4_2を決定するのに、以下のように、より高速の論理和ゲートが排他的論理和ゲートに取って代わる。
【数10】
これらの論理ブロック5の4つは、16個の入力を取るべく提供される。こうして、論理ブロック5は、レベル1とレベル2を結合したものと考えることができる。
【0095】
図19において、最後の論理ゲートは、排他的論理和ゲートではなく論理和ゲートである。これは、ゲートへの両方の入力が、同時に、ハイになること、すなわち、AB=0となることは無いので、関係
【数11】
が保たれる。こうして、本発明の1つの面に従って、この関係が保たれる状況を識別することで、より高速の論理和ゲートを全体の論理回路の設計に含めることができる。この処理は、論理回路設計の間、コンピュータプログラムによって自動的に実行することができる。
【0096】
図20は、本実施形態の並列計数器から出力される少なくとも2つの重要なビットを備えた対称式EXOR_15_2とEXOR_15_1を決定するための論理ブロック6の図である。この論理ブロックは、2進ツリー内のレベル3を備えており、論理ブロック5の4つを使用する。こうして、最下位2ビットのこの並列した決定においても、2進ツリー構造を用いた論理回路の再使用である。
【0097】
図21は、本発明の本実施形態の並列計数器の図であり、ここで、ブロック4の論理回路は、最上位ビットを決定するのに使用され、ブロック6の論理回路は、最下位ビットを決定するのに使用される。
【0098】
図16,17,18で図示された論理ブロックにおいて、入力に対する論理回路の共有に加えて、基本論理ブロックと第2論理ブロックと第3次ブロックの出力は、基本論理ブロックへ入力され、そして、さらに論理回路を共有する。この理由は、論理和関数は、独立していないからである。もしk≧sとすると、
OR_n_k∧OR_n_s=OR_n_k…1
OR_n_k∨OR_n_s=OR_n_s…2
【0099】
これは、大きな基本対称関数を実現するのに、小さな基本対称関数を実行する論理回路の、出力に対する乗算処理の中に、冗長な論理積あるいは論理和の演算が可能なものがある。
これらの式は、並列計数器に対する論理回路を著しく縮小する結果となる。そのような縮小の第1の例は、並列計数器の第2最上位ビットに対する以下の式である。
St−1=OR_n_(2t+2t−1)
∨[¬OR_n_2t∧OR_n_2t ― 1]
【0100】
例えば、図10の回路において、乗算器(MU)は、OR(7,4)とOR(7,6)とOR(7,2)を用いてS1を生成する。S1を生成するための論理回路が縮小されないときには、
S1=[OR(7,4)∧OR(7,6)]∨
[¬OR(7,4)∧OR(7,2)]
これは、上記の式1,2を用いて、次の様に縮小される。
S1=OR(7,6)∨[¬OR(7,4)∧OR(7,2)]
こうして、関数OR(7,4)は、S1の決定において、冗長であると言うことができる。
【0101】
図21の回路において、多重化は、3つの論理ゲートによって実行される。出力S2から縮小されないときには、
S2=[OR(15,8)∧OR(15,12)]∨
[¬OR(15,8)∧OR(15,4)]
上掲の式1と2を用いて、これは、次のようにに縮小される。
S2=OR(15,12)∨[¬OR(15,8)∧OR(15,4)]
これは、図21に図示されている論理回路であり、ブロック4の出力すなわちインバータと論理積ゲートと論理和ゲートとを結合するための3つの論理ゲートを備えている。
【0102】
こうして、式1,2に与えられる関係が、実現しようとする論理回路内で縮小をどこで可能にするかを識別する論理回路設計処理の間に、この縮小の処理を実行することができる。
そのような縮小の第2の例を示すために、もしk≧sとすると、
([OR_n_k]1∧[OR_m_s]2)∨([OR_m_s]1∧[OR_n_k]2)=([OR_m_s]1∧[OR_m_s]2)∧([OR_n_k]1∧[OR_n_k]2)
【0103】
これらの式によって、ある論理回路を共有化することで、ファンアウトを減らすことができる。ブロック2に見られるように、関数OR_4_2とOR_4_3は、3レベルの共有化した論理回路によって実現される。
【数12】
【0104】
ブロック3は、レベル3の論理回路を実現する回路である。この減少によって、関数OR_8_1,OR_8_2,OR_8_3,OR_8_4,OR_8_5,OR_8_6,OR_8_7,OR_8_8の以下の式がもたらされる。
【数13】
【0105】
ブロック4は、レベル4に対する論理回路を実現した回路である。関数OR_16_1とOR_16_4とOR_16_12の実現は、縮小した以下の式に従う。
【数14】
【0106】
本発明の本実施形態の2進ツリーの原理は、論理和あるいは排他的論理和対称関数を用いて実現することができる。排他的論理和対称式を用いる時は、適用する論理回路が縮小される。
【数15】
とし、ここでSが、kの2進表記の1つの一の組として唯一のものとして決定される自然数の組であるとすると、
EXOR_n_k=ANDi ∈ SEXOR_n_2i
である。
【0107】
こうして、EXOR_n_kを計算する回路を設計するのに、部分集合に値して関数EXOR_n_2iを計算するだけでよく、そうすることで、排他的論理和回路は低速であるが、論理和回路を使用するよりも少ないファンアウトとなる。
図21から分かるように、最も効率的な回路は、論理和と排他的論理和の対称関数論理回路が混じったものを含んでいてよい。
【0108】
それ以上の縮小は、論理和基本対称関数に基づいた並列計数器用の論理回路に適用することができる。例えば、第3上位ビットは次の表現ができる。
【数16】
【0109】
縮小は、次の式を使って、より一般的に書くこともできる。
【数17】
ここで、Skは、k番目の出力で得有り、k=0〜t−1であり、tは、出力の数である。
【0110】
最上位ビットの下の出力ビットの生成は、1つの対称関数の出力と他の対称関数の出力の反転値との少なくとも1つの論理積結合と、論理積結合の結果を論理和結合として説明することができる。
【0111】
縮小の他の重要な応用は、条件付き並列計数器用の論理回路である。条件付き並列計数器は、n個の入力を持ったモジュールである。Qを{0,1…n}の部分集合とする。この部分集合は、条件を決定する。モジュールは、このハイ入力の数がQに属するならば、ハイ入力の数の2進表記を作り出す。もしハイ入力の数がQに属しないならば、出力は、どんな論理関数であってもよい。そのようなモジュールは、もしハイ入力の数がQの中にあれば、並列計数器に置き換えることができる。
【0112】
便利な条件付き並列計数器が、m≦nに対して、Q={0,1…m}を持つ。そのような計数器に対する論理回路は、各OR_m_kをOR_n_kに置き換えることによって、m個の入力を持った並列計数器に対する論理回路から得ることができる。例えば、もしQ={0,1,2,3}ならば、条件付き並列計数器は、次の式で与えられる、2つの出力S1,S0を持つ。
S1=OR_n_2,S0=EXOR_n_1
【0113】
条件付き並列計数器の別の例は、Q={0,1,2,3,4,5}。
S2=OR_n_4,S1=¬OR_n_4∧OR_n_2,
S0=EXOR_n_1
である。もし、これら2つの計数器の1つに対して、ハイ入力の数がQに属さなければ、出力は、Qの最大要素の2進表記すなわち3=11,5=101である。
【0114】
先述した実施形態は、論理ユニットの2進ツリー階層配列を備えているが、本発明は、論理ユニットのどんな階層配置にも応用可能である。入力の分割は、2進によるものである必要は無く、全ての入力は、小さな基本対称関数を実行するための論理ユニットへの入力である必要は無い。
【0115】
例えば、図22は、入力の内の4つだけが、基本論理ユニットに入力される階層配置を示している。入力の4つは、この階層の第3レベルの論理ユニットへの入力のみである。階層の各レベルの各論理ユニットは、前のレベルにおける論理ユニットの論理回路を備えている。この例では、左側のレベル2の論理ユニットは、第1レベルの2つの論理回路を備えており、左側のレベル3の論理ユニットは、第2レベルの論理ユニットを2つ備えている。右側の第3レベルの論理ユニットは、本実施形態では、論理回路の下位ユニットで作られていない。第4レベルの論理ユニットは、全ての論理ユニットを備え、また論理回路を備えている。
【0116】
図23は、図12の論理回路を2つの階層レベルに分割したものを図示したものである。この例において、第1レベルにおける1つの論理ユニットには、5つの入力があり、他のものには2つある。5つの入力を持った論理ユニットは、図12に見られるように、OR_5_1,OR_5_2,OR_5_3,OR_5_4,OR_5_5の対称関数を実現するための論理回路を備えている。2つの入力を持った論理ユニットは、図12に見られるように、EXOR_7_1対称関数を実現するための論理回路を備えている。第2レベルにおける論理ユニットは、第1レベルにおける論理ユニットを備え、完全な論理回路を備えている。
【0117】
図24は、図13の論理回路を2層レベルに分割したものを図示した、別の例である。この例において、第1レベルにおける1つの論理ユニットには、4つの入力があり、他のものは3つある。4つの入力を持った論理ユニットは、図13に見られるように、OR_4_1,OR_4_2,OR_4_3,OR_4_4の対称関数を実現するための論理回路を備えている。3つの入力を持った論理ユニットは、図13に見られるように、OR_3_1,OR_3_2,OR_3_3の対称関数を実現するための論理回路を備えている。第2レベルにおける論理ユニットは、第1レベルにおける論理ユニットを備え、完全な論理回路を備えている。
【0118】
並列計数器の設計の間、既に使用可能な高速論理ユニットを再使用することによって、論理回路を削減することが可能である。次に有用な式がある。
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
【0119】
このようにして、もしライブラリにOR_4_3を生成する高速モジュールがあるならば、このモジュールは、OR_4_2を生成するのにインバータと共に使用することができる。反対の見方も同様にあり得る:OR_4_2モジュールによって、OR_4_3の生成が可能となる。経済的なトランジスタと高速な閾値関数を実現する一実施形態を、図25〜28を参照して次に説明する。この実施形態において、閾値関数が、基本対称関数として実現される。
【0120】
エレクトロニクスにおいて良く知られているのは、AND−OR−INVERT(論理積−論理和−反転)ゲートは、実現するのにトランジスタの数が少なくてすみ、かつ遅延特性が良好である。従って、本発明の本実施形態は、これを利用して、経済的かつ高速な回路設計を提供する。
【0121】
前述したように、良く知られているように、
OR_n_k(X1…Xn)=¬OR_n_(n+1−k)(¬X1…¬Xn)
… (a)
これから、導かれるのは、
¬OR_n_k(X1…Xn)=OR_n_(n+1−k)(¬X1…¬Xn)
… (b)
と、
OR_n_k(¬X1…¬Xn)=OR_n_(n+1−k)(X1…Xn)
… (c)である。
【0122】
表記を簡単にするために、式(a)は、次のように書くことができる。
【数18】
式(b)は、次のように書くことができる。
【数19】
式(c)は、次のように書くことができる。
【数20】
ここで、’は、出力の反転を表し、下線は、反転した入力を表す。
【0123】
これらの関係を用いると、基本対称関数OR_8_4[8,4]に対する回路は、図14を参照した上述の実施形態と同様のやり方で作ることができる。図25は、その中に3レベルの論理回路がある基本対称関数OR_8_4を、2進ツリーで実現したものを図示してある。回路は反転入力X1’…X8’を受け取る。第1層の論理ユニットは、図26に示したように、否定論理積(NAND)と否定論理和(NOR)ゲートを備える。もしこの論理ユニットへの入力がA’とB’であるならば(’は反転を表す)、このブロックの出力は、それぞれ[2,1]=(A’∧B’)と[2,2]=(A’∨B’)である。この論理回路は、反転した入力を受け取り、基本対称関数を実行する。
【0124】
第2レベルにおいて、2つの連続する第1層の論理ユニットからの出力[2,1]a,[2,2]a,[2,1]b,[2,2]bは、
【数21】
を出力するために結合される。このために、以下の関係が使用される。
【数22】
【0125】
これらの論理式を実現する論理回路が、図27に示される。この論理回路は、反転されない入力を受け取り、反転した基本対称関数を実現する。
第3レベルにおいて、2つの連続する第2層の論理ユニットからの出力
【数23】
は、[8,4]を出力するために結合される。
【0126】
以下の関係が使用される。
【数24】
これらの論理式を実現する論理回路が、図28に示される。この論理回路は、反転されない入力を受け取り、反転した基本対称関数を実現する。
【0127】
こうして、図25〜29から、対称関数と反転した対称関数とは、論理ユニットの階層構造の別のレベルにおいて実現される。もし、奇数のレベルがあれば、その回路への入力は、反転されなくてはならず、これは[8,4]の例で図示されている。このように反転した対称関数を使用することによって、論理積ゲートの代わりに高速の否定論理積ゲートを使用することができる(インバータの付いた否定論理積として実現され、従って、論理積ゲートの代わりに否定論理積ゲートを使用することで、関数を実現するのに必要な論理回路を減らすことができる)。必要な論理回路を減らすことで、論理回路全体の面積を減らすことにもなる。
【0128】
本発明の本実施形態において、階層論理構造の各レベルには、反転論理回路が含まれる。
この技術は、関数[8,4]に即して図解されたが、当業者にとっては、本技術が、いかなる大きさの関数にでも適用できることは、明らかであろう。さらに、本発明の本実施形態は、2進ツリー構造で実現されたが、本技術は、論理ユニットのいかなる階層構造に対しても使用できる。また、本発明の本実施形態は、反転した入力が使用されるが、もし階層内の論理ユニットのレベル数が偶数ならば、入力は反転される必要がない。代わりに、偶数のレベルにおける反転した対称関数を使用することができる。反転した入力は、反転した対称関数を実行する奇数レベルを持つ回路に対して必要である。
【0129】
条件付き並列計数器の重要な応用例は、定数乗算器(constant multipliers)である。定数乗算器は、Aが許容される定数であるだけで、入力が2つの数A,Bの2進表記となり、出力が積A*Bの2進表記を含んでいるようなモジュールである。定数乗算器は、乗算器よりも小さく高速であるので、被乗数を許された定数から選ぶことができる限り、これを使うことは有益である。例えば、ディジタルフィルターを設計するのに使用することができる。
【0130】
本発明の別の面には、乗算の技術が含まれており、これは以降で説明される。
乗算は、ディジタル回路において、基本的な演算である。次の2つのn桁の2進値
An−12n−1+An−22n−2+…+A12+A0と、
Bn−12n−1+Bn−22n−2+…+B12+B0
が与えられると、次の積
Pn−12n−1+Pn−22n−2+…+P12+P0
は、2n桁までである。出力として全てのPiを生成する論理回路は、一般的に、図14のやり方に従う。ウォレス(Wallas)氏は、乗算器に関する最初の高速アーキテクチャを発明し、今日ではそれは、ウォレス・ツリー(Wallace−tree)乗算器と呼ばれている(Wallace, C.S., A Suggestion for a Fast Multiplier, IEEE Trans.Electron.Comput.EC−13:14−17(1964年))(この内容は、ここに参照として組み入れられる)。ダッダ(Dadda)氏は、乗算器におけるビットの動きを研究した(L.Dadda, Some Schemes for Parallel Multipliers, Alta Freq 34:349−356(1965年))(この内容は、ここに参照として組み入れられる)。彼は、様々な乗算器を作成し、多くの乗算器は、ダッダ氏の方法による。
【0131】
ダッダ氏の乗算器では、図29による方法が使われている。もし、入力が8ビットならば、64個の並列の論理積ゲートは、図30に示されるアレイを生成する。論理積ゲートの記号∧は、はっきりさせるために控え、従って、Ai∧Bjは、AiBjになる。図30の残りの部分は、全加算器(FA)と半加算器(HA)とを含む、アレイの縮小を示してある。同じ列からのビットは、半加算器或いは全加算器によって加算される。全加算器に与えられるビットのグループのいくつかは、矩形によって示される。半加算器に与えられるビットのグループのいくつかは、楕円によって示される。アレイ縮小の結果は、最後の段階で加算される2つの2進数である。これらの2つの数を、例えば条件付き加算器或いはキャリー先読み加算器などの高速化算法の1つによって加算する。
【0132】
本発明のこの面には、選ばれた2つの段階が備わる:本発明の第1の面による並列計数器を用いたアレイ変形とアレイ縮小である。
アレイ変形の処理を次に説明する。
【0133】
図30によるようなAiBjで作られる、乗算アレイのいくつかの部分は、興味深い特徴を持っている。これらの部分における、ビットの和に対する簡単な式を書くことができる。そのような特殊な部分の例が、図31にある。一般的に、整数kを選び、アレイにおいてi−j−kの絶対値が1より小さいか等しいようなAiBjは、特別な部分を備えている。
【0134】
Siを、図1に示されるAiBjの形式の全てのビットの和のビットにする。すると、k>0の全てのkに対して、
【数25】
k>1の全てのkに対して、
【数26】
【0135】
これらの式は、アレイ中の選ばれた入力を加算する論理回路を示し、大きくはならない。無作為の数が加算されたとしても、(n+1)番目のビットに対する論理回路は、n番目のビットに対する論理回路よりも大きい。
これらの式を使って、異なるアレイを作ることができる。アレイの形は変化する。これは、アレイ変形と呼ばれるからである。これらの式は、特定の形のアレイを作ることによって、乗算回路の速度を上げることができるゆえに、重要である。
【0136】
図32中のアレイは、8ビット乗算用である。論理積ゲートの記号∧は、はっきりさせるために控え、従って、Ai∧Bjは、AiBjになる。アレイ変形論理回路はXとYとZを生成する。
【数27】
【0137】
図30に対するアレイの利点は、列の中のビットの最大数が小さいことである。図30中のアレイには、8ビットの列がある。図32のアレイには、7ビットの列が4つあるが、8ビット或いはそれ以上のは無い。XとYとZを生成する論理回路が、図33に示される。この論理回路は、アレイ縮小段階で、2つの第1全加算器(図2で図示される)と並列に使用することができ、従って、追加された論理回路による遅延を避ける。
【0138】
アレイ縮小は、図32で図示される。第1段階では、1つの半加算器と3つの全加算器と1つの4入力並列計数器と2つの5入力並列加算器と1つの6入力並列加算器と4つの7入力並列加算器を使用する。(列7,8,9の)3つの並列加算器は、7=5+2の分割に基づいて実現している。ビットX,Y,Zは、分割中の2のグループに加わる。列6の計数器は、7=4+3の分割で実現される。列5の分割は、6=3+3の分割に基づいている。残りの計数器は、分割されるべきではない。全加算器の位置は、楕円で示される。半加算器は、矩形で示される。
【0139】
最後の2つの2進数用の加算器は、2つの数におけるビットの到着時間に基づいて設計される。これは、多少利点となるが、常識すなわち条件付き加算器とリップルキャリー加算器に基づいている。
【0140】
本実施形態においては、2つの8ビットの数の加算が示されたが、本発明は、すべてのNビットの2進値加算に応用できる。例えば、16ビット加算に対して、アレイ縮小が、中間の列の高さを16から15に減らし、従って、2つの7ビット加算器を、第1層に対して2つの3ビット出力を作るのに使用することができ、残された入力を、先の7入力全加算器への入力として他の2つの3出力と共に使用することができ、従って、16ビットの加算をわずか2層で行うことができる。
【0141】
本発明の本実施形態は、論理積2進組合せによるアレイを作ることに関して説明したが、本発明のこの面は、2つの2進数のビットの論理的結合、例えば論理和結合と排他的論理和結合と否定論理積結合とのいずれの方法をも含んだアレイの形成と、ブース(Booth)符号化を用いたアレイの形成のいかなる方法をも含んでいる。さらに、2つの2進数の長さは、同じである必要は無い。
【0142】
本発明のこの面は、特定の乗算論理回路に関して説明されたが、本発明は、積和論理回路(乗算論理回路の特殊な例と見ることもできる)を含む乗算を実行する、いかなる論理回路にも応用できる。積和論理回路において、A×B+Cの演算が実行され、ここでCが前の乗算の和である。積和論理回路は、乗算論理回路に対して前述したA×Bのアレイを生成することによって動作する。さらに行がCのビットに対するアレイの中に加えられる。Cは、前の和によって、AあるいはBよりも多くのビットを持って良い。これによって、アレイが大きくなり、従い、上述したようにアレイ縮小を経る。
【0143】
本発明のこの面は、高速回路を提供するのに、本発明の第1の面の並列計数器と共に使用することができる。
【0144】
本発明の第1の面の並列計数器には、本発明の1つの面の乗算器で使用される以外の他の応用がある。それは、RSAと縮小した領域の乗算器内で使用することができる。乗算器の一部だけを作ることも実際的なことがある。これは、アレイが大きすぎる時、例えば、被乗数が1000ビット以上あるRSAアルゴリズムにおいてあり得る。そして、乗算器のこの一部は、アレイを縮小するために繰り返し使われる。現在、実施されているものにおいては、全加算器の集まりから成っている。全加算器の代わりに、7入力の並列計数器を使うこともできる。
【0145】
並列加算器は、誤り訂正符号の回路で使用することもできる。並列加算器を使って、ハミング距離を作ることができる。この距離は、ディジタル通信において有用である。特に、ハミング距離は、例えば、ビタビ復号器或いは多数決復号器のような種類の復号器において計算しなくてはならない。
【0146】
2つの2進メッセージ(A1,A2,…An)と(B1,B2,…Bn)を与えられたとき、これらの間のハミング距離は、AiとBiが異なるような、1とnの間の指標iの数である。この距離は、そのn個の入力が、
【数28】
であるような並列加算器によって計算することができる。
【0147】
積和演算は、フィルタリングを含むために、ディジタルエレクトロニクスにおいて、基本的なものである。2n個の2進数X1,X2,…Xn,Y1,Y2,…Ynが与えられた時、この演算の結果は、X1Y1+X2Y2+…XnYnとなる。
以上で説明した乗算器を、ハードウェアで、積和演算を実行するのに使用することができる。他の方法は、図29の方法を使うことでも良い。積XiYiにおける全ての部分的な積は、アレイを生成する。そして、アレイを縮小するのに並列加算器Xを使用する。
【0148】
本発明において、数のアレイを加算する必要がある時はいつでも、並列計数器を使用することができる。例えば、2の補数の形式の負の数を乗算する時、ブース記録(A.D.Booth, A Signed Binary Multiplication Technique, Q.J.Mech.4:236−240(1951年))(この内容は、ここに参照として組み入れられる)或いは他の方法によって、異なるアレイを生成する。積を得るために、数のこのアレイを加算する。
【0149】
図34には、本発明の他の面の実施形態が示されている。この実施形態は、閾値2を持ち、2進ツリーとして実現される閾値関数に従って、出力を生成する。従って、この回路は、ハイである入力の数(k)が少なくとも2であるときに、出力を生成するための基本対称関数を実現する。
従って、出力は、論理和対称関数として生成される。
【数29】
【0150】
従って、回路は、スイッチとして働き、ある数の入力がハイのときに、出力を提供する。出力は、例えば、いかなるOR_n_kの基本対称関数を備えていても良い。ここで、nは入力の数、kはハイの入力の数である。
【0151】
本実施形態において、1つの出力が示されているが、本発明のこの面の原理は、1つより多い出力OR_n_kを生成するのに使用することができる。例えば、1つの出力はOR_4_2で、他の出力はOR_4_3であって良い。従って、本発明は、閾値関数を氏よした出力を提供する論理回路を含む。これは、並列計数器出力或いは他の論理回路に使用することができる。
【0152】
本発明は、上で、特定の実施形態に関して説明したが、変更は本発明の趣旨と範囲の内にあることは、当業者なら明らかであろう。
上述した本発明の本実施形態の論理回路は、集積回路或いはディジタル電子機器において実現することができる。
【図面の簡単な説明】
【図1】従来技術による全加算器と半加算器の図である。
【図2】従来技術による全加算器を用いた並列計数器の図である。
【図3】2進出力を生成するために対称関数を実行する論理モジュールと、出力を選択するために使用される乗算器(選択器)の図である。
【図4】本発明の一実施形態による対称関数OR_3_1を実行するための論理回路の図である。
【図5】本発明の一実施形態による対称関数OR_4_1を実行するための論理回路の図である。
【図6】本発明の一実施形態による、2 3入力の論理和ゲートを用いた対称関数OR_5_1を実行するための論理回路の図である。
【図7】本発明の一実施形態による、2入力の排他的論理和ゲートを用いた対称関数EXOR_7_1を実行するための論理回路の図である。
【図8】本発明の一実施形態による対称関数OR_3_2を実行するための論理回路の図である。
【図9】本発明の一実施形態による対称関数EXOR_5_3を実行するための論理回路の図である。
【図10】本発明の一実施形態による、2種類の対称関数を用い、7つの入力と3つの出力を持った並列計数器の図である。
【図11】本発明の一実施形態による、小さい論理ブロックを再使用することができるように、対称関数OR_7_2を下位モジュールに分割することを示した図である。
【図12】本発明の一実施形態による、全ての入力ビットから最下位出力ビットを生成するためのEXOR_7_1対称関数を用いた並列計数器と、第2,第3出力を生成するのに論理和回路を用いて対称関数を実行す小モジュールとの図である。
【図13】本発明の一実施形態による、入力の分割は、別に、異なる機能的下位モジュールを使用するように選択されること以外は、図12と似た並列計数器の図である。
【図14】本発明に第2の面による、並列計数器の持つ論理回路の2進ツリー構造を示した図である。
【図15】本発明の一実施形態による、基本対称関数OR_2_2とOR_2_1を実行するための論理ブロック(ブロック1)の図である。
【図16】本発明の一実施形態による、第2対称関数OR_4_4とOR_4_3とOR_4_2とOR_4_1を実行するための論理ブロック(ブロック2)の図である。
【図17】本発明の一実施形態による、第3対称関数OR_8_8とOR_8_7とOR_8_6とOR_8_5とOR_8_4とOR_8_3とOR_8_2とOR_8_1を実行するための論理ブロック(ブロック3)の図である。
【図18】本発明の一実施形態による、対称関数OR_15_12とOR_15_8とOR_15_4を実行するための論理ブロック(ブロック4)の図である。
【図19】本発明の一実施形態による、基本対称関数EXOR_4_2とOR_4_1を実行するための論理ブロック(ブロック5)の図である。
【図20】本発明の一実施形態による、基本対称関数EXOR_15_2とOR_15_1を実行するための論理ブロック(ブロック6)の図である。
【図21】本発明の一実施形態による、図15〜20の論理ブロックを用いた並列計数器を示した図である。
【図22】本発明の一実施形態による、論理ユニットの階層構造を示した図である。
【図23】本発明の一実施形態による、他の論理ユニットの階層構造を示した図である。
【図24】本発明の一実施形態による、さらに他の論理ユニットの階層構造を示した図である。
【図25】本発明の一実施形態による、基本対称関数OR_8_4を実行するツリー構造の論理ユニットの階層構造を示した図である。
【図26】図25の回路の第1レベルの高速版用の論理回路の図である。
【図27】図25の回路の第2レベルの高速版用の論理回路の図である。
【図28】図25の回路の第3レベルの高速版用の論理回路の図である。
【図29】従来技術で使用される、乗算の段階の図である。
【図30】図29の処理のより詳細な図である。
【図31】アレイ内の対角線領域の特性を示した図である。
【図32】本発明によるアレイ変形と、アレイ縮小と追加に続く段階を示した図である。
【図33】アレイ生成のために、この実施形態で使用された論理回路の図である。
【図34】閾値関数として出力を生成するための論理回路の図である。
【符号の説明】
FA…全加算器
HA…半加算器
MU…乗算器
OR_…基本対称関数
EXOR_…基本対称関数
Claims (149)
- 1つの2進数を、複数の2進入力として受け取るための複数の入力と、
複数の2進入力の内の2進のものの数を示す2進符号を出力するための、複数の出力と、
複数の入力と複数の2進出力との間で接続されて、複数の2進出力の各々を2進入力の基本対称関数として生成するための論理回路と
を備えることを特徴とする並列計数器。 - 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するために排他的論理和ゲートを用いて、2進出力の内の少なくとも1つを、2進入力の基本対称関数として生成するようにまとめられていることを特徴とする請求項1記載の並列計数器。
- 前記論理回路は、2進入力の各組の要素を論理積し、論理積演算の結果を排他的論理和するようにまとめられることを特徴とする請求項2記載の並列計数器。
- 前記論理回路は、i番目の2進出力を生成するための各組の2i個の2進入力を論理積するようにまとめられており、ここで、iは1〜Nの整数であり、Nは2進出力の数であり、iは各2進出力の重要さを表し、各々の組は唯一のものであり、前記組は2進入力の全ての可能な組合せを網羅していることを特徴とする請求項3記載の並列計数器。
- 前記論理回路は、2進入力の各組の要素を論理積するようにまとめられており、ここで、各組は唯一のものであり、前記組は2進入力の全ての可能な組合せを網羅していることを特徴とする請求項3記載の並列計数器。
- 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和ゲートを用いて、2進出力の少なくとも1つを、2進入力の基本対称関数として生成するようにまとめられていることを特徴とする請求項1から請求項4のいずれか1つに記載の並列計数器。
- 前記論理回路は、2進入力の各組の要素を論理積し、論理積演算の結果を論理和するようにまとめられていることを特徴とする請求項6記載の並列計数器。
- 前記論理回路は、N番目の2進出力を生成するために、各組の2N−1個の2進入力を論理積し、ここで、Nは2進出力の要素であり、N番目の出力は最上位であり、各組は唯一のものであり、前記組は2進入力の全ての可能な組合せを網羅していることを特徴とする請求項7記載の並列計数器。
- 前記論理回路は、2進入力の各組の要素を論理積し、各組は、唯一のものであり、前記組は2進入力の全ての可能な組合せを網羅していることを特徴とする請求項7記載の並列計数器。
- 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するために、第1の2進出力を、排他的論理和ゲートを使用して、2進入力の基本対称関数として生成するように、また、1つ或いは2つ以上の2進入力の複数の組を結合するために、N番目の2進出力を、論理和ゲートを使用して、2進入力の基本対称関数として生成するようにまとめられていることを特徴とする請求項1記載の並列計数器。
- 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和ゲートを用いた2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の2進出力に対して生成するようにまとめられており、前記論理回路は、上位2進出力値に基づいて可能な2進出力の1つを選択する選択論理回路を含み、ここで、Nは2進出力の要素であり、可能な各2進出力に使われる組は、生成される2進出力の関数であり2つの異なる大きさを持つことを特徴とする並列計数器。
- 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するための、論理和ゲートを用いた2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の(N―1)番目の2進出力に対して生成するようにまとめられており、ここで、可能な各2進出力に使われる組は、それぞれ2N−1+2N−2と2N−2の大きさであり、前記選択論理回路は、N番目の2進出力値に基づいて、可能な2進出力の1つを選択するようにまとめられていることを特徴とする請求項11記載の並列計数器。
- 前記論理回路は、2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の2進出力に対して生成するようにまとめられており、また、前記論理回路は、上位2進出力値に基づいて可能な2進出力の1つを選択する選択論理回路を含むことを特徴とする請求項1から請求項10のいずれか1つに記載の並列計数器。
- 前記論理回路は、2進入力の基本対称関数として、中間出力を生成するための論理ユニットを含み、また、1つの論理ユニットの少なくとも中間出力と他の論理ユニットの反転出力とを論理積結合し、かつ、論理積結合した結果と他の中間出力とを論理和結合することによって、論理ユニットの中間出力を結合することで、N番目の出力よりも下位の2進出力を生成するようにまとめられることを特徴とする請求項1から請求項10のいずれか1つに記載の並列計数器。
- 前記論理回路は、各々が2進入力のいくつかの基本対称関数として、中間2進出力を生成する複数の下位回路論理モジュールと、前記2進出力を生成するために、中間2進出力を論理的に結合するための論理回路とを含むことを特徴とする請求項1から請求項15のいずれか1つに記載の並列計数器。
- 前記下位回路論理モジュールは、前記2進入力の前記いくつかの組を結合するために、論理和ゲートを用いるようにまとめられることを特徴とする請求項16記載の並列計数器。
- 前記論理回路は、各々が、1つ或いは2つ以上の2進入力の複数の組を結合するために、排他的論理和ゲートを用いて2進入力の基本対称関数として2進出力を生成するための、1つ或いは2つ以上の論理モジュールを含むことを特徴とする請求項17記載の並列計数器。
- 前記論理回路は、複数の小さな基本対称関数を実行し、結果を結合することによって、大きな基本対称関数を実行することを特徴とする請求項1から請求項14のいずれか1つに記載の並列計数器。
- 前記論理回路は、複数の論理ユニットに分割され、各論理ユニットは、論理ユニット2進出力を、論理ユニットへの2進入力の基本対称関数として生成するようにまとめられ、前記複数の入力の2進入力は、複数の前記論理ユニットへの入力に分割され、前記複数の出力の2進出力は、複数の前記論理ユニットの2進出力を用いて生成されることを特徴とする請求項1から請求項19のいずれか1つに記載の並列計数器。
- 前記論理ユニットは、階層的に高位の論理ユニットが、階層的に低位の少なくとも1つの論理ユニットの論理回路を含み、階層的に低位の論理ユニットよりも多くの2進入力を入力として持つことを特徴とする請求項20記載の並列計数器。
- 前記複数の入力の2進入力は、複数の前記論理ユニットへの入力への2進ツリーに従って分割されることを特徴とする請求項20あるいは請求項21記載の並列計数器。
- 前記論理ユニットは、2n個の前記2進入力を受け取るようにまとめられ、nは、2進ツリー内の論理ユニットのレベルを示す整数であり、前記論理回路は、各レベルでm個の論理ユニットを持ち、mは、(2進入力の数)/2nから決定される丸められた整数であり、2進ツリー内で高いレベルの論理ユニットは、2進ツリー内の低いレベルにある論理ユニットの論理回路を備えており、各論理ユニットは、論理ユニットの2進出力を、論理ユニットへの2進入力の対称関数として生成するようにまとめられることを特徴とする請求項22記載の並列計数器。
- 第1レベルにおける各論理ユニットは、前記論理回路への2進入力の小さな基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項23記載の並列計数器。
- 第1レベルにおける各論理ユニットは、2進入力を結合するために、論理和ゲートを用いて前記論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項23あるいは請求項24記載の並列計数器。
- 第1レベルにおける各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の各々を論理積し、かつ、論理ユニットへの2進入力の各々を論理和するようにまとめられることを特徴とする請求項25記載の並列計数器。
- 第1レベルにおける各論理ユニットは、2進入力を結合するために、排他的論理和ゲートを用いて前記論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項24記載の並列計数器。
- 第1レベルにおける各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の各々を論理積し、かつ、論理ユニットへの2進入力の各々を排他的論理和するようにまとめられることを特徴とする請求項27記載の並列計数器。
- 基本対称関数を実行するために第1レベルにおける論理ユニットとして基本論理ユニットが提供され、前記複数の入力からの論理的に隣り合う4つの2進入力を受け取る2つの第1基本論理ユニットの各々からの出力は、2つの第2基本論理ユニットへと入力され、第2基本論理ユニットの各々からの出力は、第3基本論理ユニットへと入力され、前記第1及び第2及び第3基本論理ユニットは、前記第2基本論理ユニットの各々からの2進出力と、前記第3基本論理ユニットからの2つの2進出力とを備える2進出力を持った2進ツリーの第2レベルにおいて第2論理ユニットを形成することを特徴とする請求項23から28のいずれか1つに記載の並列計数器。
- 2進ツリーの第3レベルにおける第3論理ユニットの各々は、前記複数の入力から論理的に隣り合う8個の2進入力を受け取る2つの第2論理ユニットと、前記2つの第2論理ユニットの出力を入力として受け取る4個の基本論理ユニットと、さらに、2進入力の対称関数として、前記4個の基本論理ユニットの2進出力を用いて前記第3論理ユニットへの2進出力を生成するための論理回路とを備えることを特徴とする請求項29記載の並列計数器。
- 2進ツリーの第4レベルにおける第4論理ユニットは各々、前記複数の入力から論理的に隣り合う16個の2進入力を受け取る2つの第3論理ユニットと、入力として前記2つの第3論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、前記4個の基本論理ユニットの2進出力を用いて前記第4論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備えることを特徴とする請求項30記載の並列計数器。
- 基本対称関数を実行するための第1レベルにおける論理ユニットとして基本論理ユニットが提供され、より高位のレベルの論理ユニットは、より低位のレベルの論理ユニットから成ることを特徴とする請求項23から請求項28のいずれか1つに記載の並列計数器。
- 第2レベル以上の、より高位のレベルの前記論理ユニットは、すぐ前のレベルの論理ユニットと基本論理ユニットとを備えることを特徴とする請求項32記載の並列計数器。
- 各レベルにおける各論理ユニットは、前記論理回路への2進入力の基本対称関数として、2進入力を結合するために論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項23から請求項33のいずれか1つに記載の並列計数器。
- 各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するために排他的論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項23から請求項33のいずれか1つに記載の並列計数器。
- 論理ユニットは、階層的にまとめられて、階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットが、反転した基本対称関数を実行することを特徴とする請求項20から請求項33のいずれか1つに記載の並列計数器。
- 階層内の奇数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、論理ユニットへへの入力は、反転されることを特徴とする請求項36記載の並列計数器。
- 階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、論理ユニットへへの入力は、反転されない階層内の第1レベルの論理ユニットへ入力されることを特徴とする請求項36記載の並列計数器。
- 階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の奇数のレベルにある論理ユニットは、対称関数を実行し、第1レベルでは、論理ユニットへの階層への入力は、反転されることを特徴とする請求項36記載の並列計数器。
- 階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットは、基本対称関数を実行し、反転した該基本対称関数或いはその各々と、該基本対称関数或いはその各々は、階層内の連続した交互のレベルで実行されることを特徴とする請求項36記載の並列計数器。
- 階層内の少なくとも1つのレベル内の論理ユニットは、反転論理ゲートを備えることを特徴とする請求項36から請求項40のいずれか1つに記載の並列計数器。
- 前記論理ユニットは、2進ツリー構造内で階層的にまとめられることを特徴とする請求項36から請求項41のいずれか1つに記載の並列計数器。
- 入力の数は、少なくとも4つであり、出力の数は、少なくとも3つであることを特徴とする請求項1から請求項42のいずれか1つに記載の並列計数器。
- 2進数を複数の2進入力として受け取るための少なくとも5つの入力と、
複数の2進入力内の2進のものの数を示す2進符号を出力するための少なくとも3つの出力と、
複数の入力と複数の2進出力の間で接続されて、該複数の2進出力の各々を2進入力の基本対称関数として生成するための論理素子と
を備えることを特徴とする並列計数器。 - 前記論理回路は、互いに独立して少なくとも2つの出力を生成するようにまとめられることを特徴とする請求項44記載の並列計数器。
- 2進数を2進入力として受け取るためのn個の入力と、
2進入力内の2進のものの数を示す2進符号を出力するための3つの出力と、
前記入力と前記3つの出力との間で接続されて、2進入力の基本対称関数EXOR_n_1として第1出力を生成し、3つの基本対称関数OR_n_2,OR_n_4,OR_n_6の組合せとして第2出力を生成し、基本対称関数OR_n_4として第3出力を生成する論理回路と
を備え、上記nは、4≧n≧7であることを特徴とする並列計数器。 - 2進数を2進入力として受け取るためのn個の入力と、
2進入力内の2進のものの数を示す2進符号を出力するための4つの出力と、
前記入力と前記4つの出力との間で接続されて、2進入力の基本対称関数EXOR_n_1として第1出力を生成し、2進入力のEXOR_n_2として第2出力を生成し、3つの基本対称関数OR_n_4,OR_n_8,OR_n_12の組合せとして第3出力を生成し、基本対称関数OR_n_8として第3出力を生成する論理回路と
を備え、上記nは、8≧n≧15であることを特徴とする並列計数器。 - n個の入力からm個の可能なハイの入力を持つ、条件付き並列計数記であって、ここでm<nであり、nとmは整数であり、前記条件付き計数器は、入力を計数してm個の入力に対してp個の出力を作る、請求項1から請求項47のいずれか1つに記載の並列計数器を備え、ここで、計数器への入力の数nは、2pよりも大きいことを特徴とする条件付き計数器。
- 請求項48記載の条件付き並列計数記を備えることを特徴とする定数乗算器。
- 請求項48記載の定数乗算器を備えることを特徴とするディジタルフィルター。
- 請求項1から請求項48のいずれか1つに記載の並列計数器を含むことを特徴とする論理回路。
- 請求項1から請求項48のいずれか1つに記載の並列計数器を含むことを特徴とする集積回路。
- 請求項1から請求項48のいずれか1つに記載の並列計数器を含むことを特徴とするディジタル電子機器。
- 各2進数の各ビットの組合せを備えた2進数のアレイを生成するアレイ生成論理回路と、
アレイ中の組合せの数を減らすために、請求項1から請求項48のいずれか1つに記載の並列計数器を少なくとも1つ含んだアレイ縮小論理回路と、
出力を生成するのに、縮小された組合せを加える2進加算論理回路と
を備えることを特徴とする、2つの2進数を乗算するための論理回路。 - 2つの2進数を乗算するための論理回路であって、
2つの2進数から、加えるのに必要な2進値のアレイを生成し、さらに、アレイ中の2進値を結合して、Nを2つの2進数の最大ビット数とするとき、アレイの最大深さがNビット未満のアレイを生成するためのアレイ生成論理回路と、
アレイの深さを2つの2進数へ縮小するアレイ縮小論理回路と、
2つの2進数の2進値を加算するための加算論理回路と
を備えることを特徴とする論理回路。 - 前記アレイ生成論理回路は、1つの2進数の各ビットと、他の2進数の各ビットとの間で論理2進演算を実行して、2進値のアレイを備えた論理2進結合のアレイを生成するようにまとめられていることを特徴とする請求項55記載の論理回路。
- 前記アレイ生成論理回路は、1つの2進数の各ビットと、他の2進数の各ビットとの間で論理積演算を実行して、2進値のアレイを備えた論理積結合のアレイを生成するようにまとめられていることを特徴とする請求項56記載の論理回路。
- 前記アレイ生成論理回路は、1つの2進数の各ビットAiと、他の2進数の各ビットBjとの論理2進結合によって作られた値に対して、さらなる値の論理結合を実行するようにまとめられており、ここで、i−j−k≦1であり、kは選択された整数であり、iとjは1〜Nの整数であることを特徴とする請求項57記載の論理回路。
- 前記アレイ生成論理回路は、第1の2進数の各ビットAiと、第2の2進数の各ビットBjとを論理積結合して、前記論理積結合(Ai)AND(Bj)によって表される2進数のシーケンスを備える前記アレイを生成し、Nを2進数内のビット数とするとき、(A1)AND(BN−2),(A1)AND(BN−1)の組合せを論理結合することによって、さらなる論理結合を実行するようにまとめられていることを特徴とする請求項55から請求項58のいずれか1つに記載の論理回路。
- 前記アレイ生成論理回路は、(A1)AND(BN−2)と(A0)AND(BN−1)の組合せを結合して、これらの組合せを排他的論理和を用いて置き換え、また、(A1)AND(BN−1)と(A0)AND(BN−2)を結合して(A1)AND(BN−1)と置き換えるようにまとめられることを特徴とする請求項59記載の論理回路。
- 前記アレイ縮小論理回路は、少なくとも1つの全加算器と少なくとも1つの半加算器と少なくとも1つの並列計数器のうちの少なくとも1つを含むことを特徴とする請求項55から請求項60のいずれか1つに記載の論理回路。
- 前記アレイ縮小論理回路は、請求項1から請求項40のいずれか1つに記載の少なくとも1つの並列計数器を含むことを特徴とする請求項61記載の論理回路。
- 前記アレイ生成論理回路は、前の乗算器の積算値を含むようにまとめられることを特徴とする請求項55から請求項62のいずれか1つに記載の論理回路を備えた積和論理回路。
- 請求項55から請求項62のいずれか1つに記載の論理回路を含む集積回路。
- 請求項55から請求項62のいずれか1つに記載の論理回路を含むディジタル電子機器。
- 複数の2進入力として、2進数を受け取るための少なくとも4つの入力と、
2進符号を出力するための少なくとも1つの出力と、
複数の入力と、前記2進出力或いはその各々との間で接続されて、2進ツリーとして実現されて少なくとも2の閾値を持つ閾値関数に従って、前記2進出力或いはその各々を生成するための論理素子と
を備えることを特徴とする論理回路。 - 前記論理素子は、前記2進出力或いはその各々を、2進入力の基本対称関数として生成するようにまとめられることを特徴とする請求項66記載の論理回路。
- 前記論理素子は、少なくとも1つの2進出力を、2進入力の論理和対称関数として生成するようにまとめられることを特徴とする請求項67記載の論理回路。
- 前記論理素子は、少なくとも1つの2進出力を、2進入力の排他的論理和対称関数として生成するようにまとめられることを特徴とする請求項68記載の論理回路。
- 前記論理素子は、各々が、中間2進出力を2進入力のいくつかの基本対称関数として生成するような、複数の下位回路論理モジュールと、中間2進出力を論理結合して前記2進出力或いはその各々を生成するための論理回路とを備えることを特徴とする請求項66から請求項69のいずれか1つに記載の論理回路。
- 前記論理素子は、各々が、中間2進出力を2進入力のいくつかの基本対称関数として生成するための複数の論理モジュールと、中間2進出力を論理結合して前記2進出力或いはその各々を生成するための論理回路とを備えており、前記論理モジュールは、階層的にまとめられて、階層の少なくとも1つのレベルにある少なくとも1つの論理モジュールが、反転した基本対称関数を実行するようにまとめられることを特徴とする請求項67記載の論理回路。
- 階層内の奇数レベルにある前記論理モジュールは、反転した基本対称関数を実行し、階層内の偶数レベルにある前記論理モジュールは、対称関数を実行し、階層の第1レベルにおける前記論理モジュールへの入力は反転されることを特徴とする請求項71記載の論理回路。
- 階層内の偶数レベルにある前記論理モジュールは、反転した基本対称関数を実行し、階層内の偶数レベルにある前記論理モジュールは、対称関数を実行し、階層の第1レベルにおける前記論理モジュールへの入力は、階層内の第1レベル内の論理ユニットへ反転せずに入力されることを特徴とする請求項71記載の論理回路。
- 階層内の偶数レベルにある前記論理モジュールは、反転した基本対称関数を実行し、階層内の奇数レベルにある前記論理モジュールは、対称関数を実行し、階層の第1レベルにおける前記論理モジュールへの入力は、反転されることを特徴とする請求項71記載の論理回路。
- 階層の少なくとも1つのレベル内の少なくとも1つの論理モジュールは、基本対称関数を実行し、前記反転した基本対称関数或いはその各々と、前記基本対称関数或いはその各々は、階層内の変更されたレベル内で実行されることを特徴とする請求項71記載の論理回路。
- 階層内の少なくとも1つのレベルの論理モジュールは、反転論理回路を備えることを特徴とする請求項71から請求項75記載の論理回路。
- 前記論理モジュールは、2進ツリー構造内で階層的にまとめられることを特徴とする請求項71から請求項76記載の論理回路。
- 2進数を複数の2進入力として受け取るための少なくとも4つの入力と、
2進符号を出力するための少なくとも1つの出力と、
複数の入力と複数の2進出力との間で接続され、前記複数の2進出力或いはその各々を2進入力の基本対称関数として生成するようにまとめられた論理素子と
を備えることを特徴とする論理回路。 - 前記論理素子は、1つ或いは2つ以上の2進入力の複数の組を結合するために、排他的論理和回路を用いて、少なくとも1つの2進出力を2進入力の基本対称関数として生成するようにまとめられることを特徴とする請求項78記載の論理回路。
- 前記論理素子は、2進入力の各組の要素を論理積し、論理積演算の結果を排他的論理和するようにまとめられることを特徴とする請求項79記載の論理回路。
- 前記論理素子は、i番目の2進出力を生成するために、各組の2i個の2進入力を論理積し、各組は唯一のものであり、全ての組で2進入力の全ての可能な組合せを網羅し、iは1からNの整数であり、Nは2進出力の数であり、iが各2進出力の重要さを表すことを特徴とする請求項80記載の論理回路。
- 前記論理素子は、2進入力の各組の要素を論理積し、各組は唯一のものであり、全ての組で2進入力の全ての可能な組合せを網羅するようにまとめられることを特徴とする請求項80記載の論理回路。
- 前記論理素子は、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和回路を用いて、少なくとも1つの2進出力を2進入力の基本対称関数として生成するようにまとめられることを特徴とする請求項78から請求項82のいずれか一つに記載の論理回路。
- 前記論理素子は、2進入力の各組の要素を論理積し、論理積演算の結果を論理和するようにまとめられることを特徴とする請求項83記載の論理回路。
- 前記論理素子は、N番目の2進出力を生成するために、各組の2N−1個の2進入力を論理積し、各組は唯一のものであり、全ての組で2進入力の全ての可能な組合せを網羅し、Nは2進出力の数であり、N番目の2進出力が最上位であることを特徴とする請求項84記載の論理回路。
- 前記論理素子は、2進入力の各組の要素を論理積し、各組は唯一のものであり、全ての組で2進入力の全ての可能な組合せを網羅するようにまとめられることを特徴とする請求項84記載の論理回路。
- 前記論理回路は、1つ或いは2つ以上の2進入力の複数の組を結合するために、第1の2進出力を、排他的論理和ゲートを使用して、2進入力の基本対称関数として生成するように、また、1つ或いは2つ以上の2進入力の複数の組を結合するために、N番目の2進出力を、論理和ゲートを使用して、2進入力の基本対称関数として生成するようにまとめられていることを特徴とする請求項78記載の論理回路。
- 前記論理素子は、1つ或いは2つ以上の2進入力の複数の組を結合するために、論理和ゲートを用いて2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の2進出力に対して生成するようにまとめられており、前記論理素子は、上位2進出力値に基づいて可能な2進出力の1つを選択する選択論理回路を含み、ここで、Nは2進出力の要素であり、可能な各2進出力に使われる組は、生成される2進出力の関数であり2つの異なる大きさを持つことを特徴とする請求項78から請求項87のいずれか一つに記載の論理回路。
- 前記論理素子は、1つ或いは2つ以上の2進入力の複数の組を結合するための、論理和ゲートを用いて2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の(N―1)番目の2進出力に対して生成するようにまとめられており、ここで、可能な各2進出力に使われる組は、それぞれ2N−1+2N−2と2N−2の大きさであり、前記選択論理回路は、N番目の2進出力値に基づいて、可能な2進出力の1つを選択するようにまとめられていることを特徴とする請求項88記載の論理回路。
- 前記論理素子は、2進入力の基本対称関数として、2つの可能な2進出力を、N番目の2進出力よりも下位の2進出力に対して生成するようにまとめられており、また、前記論理素子は、上位2進出力値に基づいて可能な2進出力の1つを選択する選択論理回路を含むことを特徴とする請求項78から87のいずれか1つに記載の論理回路。
- 前記論理素子は、2進入力の基本対称関数として、中間出力を生成するための論理ユニットを含み、また、1つの論理ユニットの中間出力と他の論理ユニットの反転出力とを論理積結合し、かつ、論理積結合した結果と他の中間出力とを論理和結合することによって、論理ユニットの中間出力を結合することで、N番目の出力よりも下位の2進出力を生成するようにまとめられることを特徴とする請求項78から請求項87のいずれか1つに記載の論理回路。
- 前記論理素子は、各々が2進入力のいくつかの基本対称関数として、中間2進出力を生成する複数の下位回路論理モジュールと、前記2進出力を生成するために、中間2進出力を論理的に結合するための論理回路とを含むことを特徴とする請求項78から請求項92のいずれか1つに記載の論理回路。
- 前記下位回路論理モジュールは、前記2進入力の前記いくつかの組を結合するために、論理和ゲートを用いるようにまとめられることを特徴とする請求項93記載の論理回路。
- 前記論理素子は、各々が、1つ或いは2つ以上の2進入力の複数の組を結合するために、排他的論理和ゲートを用いて2進入力の基本対称関数として2進出力を生成するための、1つ或いは2つ以上の論理モジュールを含むことを特徴とする請求項94記載の論理回路。
- 前記論理素子は、複数の小さな基本対称関数を実行し、結果を結合することによって、大きな基本対称関数を実行することを特徴とする請求項78から91のいずれか1つに記載の論理回路。
- 前記論理素子は、複数の論理ユニットに分割され、各論理ユニットは、論理ユニット2進出力を、論理ユニットへの2進入力の基本対称関数として生成するようにまとめられ、前記複数の入力の2進入力は、複数の前記論理ユニットへの入力に分割され、前記複数の出力の2進出力は、複数の前記論理ユニットの2進出力を用いて生成されることを特徴とする請求項78から96のいずれか1つに記載の論理回路。
- 前記論理ユニットは、階層的に高位の論理ユニットが、階層的に低位の少なくとも1つの論理ユニットの論理回路を含み、階層的に低位の論理ユニットよりも多くの2進入力を入力として持つことを特徴とする請求項97記載の論理回路。
- 前記複数の入力の2進入力は、複数の前記論理ユニットへの入力への2進ツリーに従って分割されることを特徴とする請求項97あるいは98記載の論理回路。
- 前記論理ユニットは、2n個の前記2進入力を受け取るようにまとめられ、nは、2進ツリー内の論理ユニットのレベルを示す整数であり、前記論理回路は、各レベルでm個の論理ユニットを持ち、mは、(2進入力の数)/2nから決定される丸められた整数であり、2進ツリー内で高いレベルの論理ユニットは、2進ツリー内の低いレベルにある論理ユニットの論理回路を備えており、各論理ユニットは、論理ユニットの2進出力を、論理ユニットへの2進入力の対称関数として生成するようにまとめられることを特徴とする請求項99記載の論理回路。
- 第1レベルにおける各論理ユニットは、前記論理回路への2進入力の小さな基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項100記載の論理回路。
- 第1レベルにおける各論理ユニットは、2進入力を結合するために、論理和ゲートを用いて前記論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項100あるいは101記載の論理回路。
- 第1レベルにおける各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の各々を論理積し、かつ、論理ユニットへの2進入力の各々を論理和するようにまとめられることを特徴とする請求項102記載の論理回路。
- 第1レベルにおける各論理ユニットは、2進入力を結合するために、排他的論理和ゲートを用いた前記論理回路への2進入力の基本対称関数として、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項101記載の論理回路。
- 第1レベルにおける各論理ユニットは、論理ユニット2進出力を生成するのに、論理ユニットへの2進入力の各々を論理積し、かつ、論理ユニットへの2進入力の各々を排他的論理和するようにまとめられることを特徴とする請求項104記載の論理回路。
- 基本対称関数を実行するために第1レベルにおける論理ユニットとして基本論理ユニットが提供され、前記複数の入力からの論理的に隣り合う4つの2進入力を受け取る2つの第1基本論理ユニットの各々からの出力は、2つの第2基本論理ユニットへと入力され、第2基本論理ユニットの各々からの出力は、第3基本論理ユニットへと入力され、前記第1及び第2及び第3基本論理ユニットは、前記第2基本論理ユニットの各々からの2進出力と、前記第3基本論理ユニットからの2つの2進出力とを備える2進出力を持った2進ツリーの第2レベルにおいて第2論理ユニットを形成することを特徴とする請求項100から105のいずれか1つに記載の論理回路。
- 2進ツリーの第3レベルにおける第3論理ユニットの各々は、前記複数の入力から論理的に隣り合う8個の2進入力を受け取る2つの第2論理ユニットと、前記2つの第2論理ユニットの出力を入力として受け取る4個の基本論理ユニットと、さらに、2進入力の対称関数として、前記4個の基本論理ユニットの2進出力を用いて前記第3論理ユニットへの2進出力を生成するための論理回路とを備えることを特徴とする請求項106記載の論理回路。
- 2進ツリーの第4レベルにおける第4論理ユニットは各々、前記複数の入力から論理的に隣り合う16個の2進入力を受け取る2つの第3論理ユニットと、入力として前記2つの第3論理ユニットの出力を受け取る4個の基本論理ユニットと、さらに、前記4個の基本論理ユニットの2進出力を用いて前記第4論理ユニットへの2進入力の基本対称関数として、2進出力を生成するための論理回路とを備えることを特徴とする請求項107記載の論理回路。
- 基本対称関数を実行するための第1レベルにおける論理ユニットとして基本論理ユニットが提供され、より高位のレベルの論理ユニットは、より低位のレベルの論理ユニットから成ることを特徴とする請求項100から105のいずれか1つに記載の論理回路。
- 第2レベル以上のより高位のレベルの前記論理ユニットは、すぐ前のレベルの論理ユニットと基本論理ユニットとを備えることを特徴とする請求項109記載の論理回路。
- 各レベルにおける各論理ユニットは、前記論理回路への2進入力の基本対称関数として、2進入力を結合するために論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項100から110のいずれか1つに記載の論理回路。
- 各レベルにおける各論理ユニットは、論理回路への2進入力の基本対称関数として、2進入力を結合するために排他的論理和ゲートを用いて、論理ユニット2進出力を生成するようにまとめられることを特徴とする請求項100から110のいずれか1つに記載の論理回路。
- 論理ユニットは、階層的にまとめられて、階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットが、反転した基本対称関数を実行することを特徴とする請求項97から112のいずれか1つに記載の論理回路。
- 階層内の奇数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、論理ユニットへの入力は、反転されることを特徴とする請求項113記載の論理回路。
- 階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の偶数のレベルにある論理ユニットは、対称関数を実行し、階層の第1レベルでは、論理ユニットへの入力は、反転されない階層内の第1レベルの論理ユニットへ入力されることを特徴とする請求項113記載の論理回路。
- 階層内の偶数のレベルにある論理ユニットは、反転した基本対称関数を実行し、階層内の奇数のレベルにある論理ユニットは、反転した対称関数を実行し、階層の第1レベルでは、論理ユニットへの入力は、反転されることを特徴とする請求項113記載の論理回路。
- 階層の少なくとも1つのレベル内の少なくとも1つの論理ユニットは、基本対称関数を実行し、反転した該基本対称関数或いはその各々と、該基本対称関数或いはその各々は、階層内の連続した交互のレベルで実行されることを特徴とする請求項113記載の論理回路。
- 階層内の少なくとも1つのレベル内の論理ユニットは、反転論理ゲートを備えることを特徴とする請求項113から117のいずれか1つに記載の論理回路。
- 前記論理ユニットは、2進ツリー構造内で階層的にまとめられることを特徴とする請求項113から118のいずれか1つに記載の論理回路。
- 請求項78から請求項119のいずれか1つに記載の論理回路を含むことを特徴とする集積回路。
- 請求項78から請求項119のいずれか1つに記載の論理回路を含むことを特徴とするディジタル電子機器。
- 各2進数の各ビットの組合せを備えた2進数のアレイを生成するためのアレイ生成論理回路と、
アレイ中の組合せの数を減らすための、請求項64から請求項98のいずれか1つに記載の少なくとも1つの論理回路を含むアレイ縮小論理回路と、
出力を生成するために、縮小した組合せを加算するための2進加算論理回路と
を備えることを特徴とする、2つの2進数を乗算するための論理回路。 - 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力あるいはその各々との間で接続されて、該2進出力あるいはその各々を2進入力の閾値関数として生成するように作られた論理素子とを備えた論理回路を設計する方法であって、該方法は、
閾値関数を実行するための論理素子を決定する段階と、
2つの閾値関数の論理積を実行する論理素子を識別して、識別した論理素子を高い閾値を持った閾値関数を実行するための論理素子へ縮小し、2つの閾値関数の論理和を実行する論理素子を識別して、識別した論理素子を低い閾値を持った閾値関数を実行するための論理素子へと縮小することによって論理素子を縮小する段階と
を備えることを特徴とする方法。 - 前記縮小は、k≧sであり、nは入力の数であり、kとsはハイの入力の数である時に、
OR_n_k∧OR_n_s=OR_n_k
OR_n_k∨OR_n_s=OR_n_s
の関係を持つ論理和閾値関数を用いて実行されることを特徴とする請求項123記載の方法。 - 前記論理素子は、閾値関数を基本対称関数として実行するように設計され、前記論理回路は、前記2進出力或いはその各々を基本対称関数として生成するように設計されることを特徴とする請求項123あるいは請求項124に記載の方法。
- 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と該2進出力あるいはその各々との間で接続されて、該2進出力あるいはその各々を2進入力の閾値関数として生成するように作られた論理素子とを備えた論理回路を設計するシステムであって、該システムは、
閾値関数を実行するための論理素子を決定するための決定手段と、
2つの閾値関数の論理積を実行する論理素子を識別して、識別した論理素子を高い閾値を持った閾値関数を実行するための論理素子へ縮小し、2つの閾値関数の論理和を実行する論理素子を識別して、識別した論理素子を低い閾値を持った閾値関数を実行するための論理素子へと縮小することによって論理素子を縮小するための縮小手段と
を備えることを特徴とするシステム。 - 前記縮小手段は、k≧sであり、nは入力の数であり、kとsはハイの入力の数である時に、
OR_n_k∧OR_n_s=OR_n_k
OR_n_k∨OR_n_s=OR_n_s
の関係を持つ論理和閾値関数を用いて縮小が実行されるように作られていることを特徴とする請求項126記載のシステム。 - 前記決定手段は、閾値関数を基本対称関数として実行し、前記2進出力或いはその各々を基本対称関数として生成するように、論理素子が設計されるように作られることを特徴とする請求項126あるいは請求項127に記載のシステム。
- 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と前記2進出力或いはその各々との間で接続されて、前記2進出力或いはその各々を2進入力の閾値関数として生成するようにまとめられた論理素子とを備えた論理回路を設計するためのコンピュータシステムであって、該コンピュータシステムは、 コンピュータ読み取り可能なコードを記憶したメモリと、
コードを読み取って実行するためのプロセッサと
を備え、前記メモリに記憶されたコードは、前記プロセッサが、
閾値関数を実行するための論理素子を決定し、
2つの閾値関数の論理積を実行する論理素子を識別して、識別した論理素子を高い閾値を持った閾値関数を実行するための論理素子へ縮小し、2つの閾値関数の論理和を実行する論理素子を識別して、識別した論理素子を低い閾値を持った閾値関数を実行するための論理素子へと縮小することによって論理素子を縮小する
のを制御するためのコードを備えることを特徴とするコンピュータシステム。 - 前記メモリに記憶されたコードは、k≧sであり、nは入力の数であり、kとsはハイの入力の数である時に、
OR_n_k∧OR_n_s=OR_n_k
OR_n_k∨OR_n_s=OR_n_s
の関係を持つ論理和閾値関数を用いて、プロセッサが縮小を実行するのを制御するためのコードを備えていることを特徴とする請求項129記載のコンピュータシステム。 - メモリに記憶されたコードは、プロセッサが、閾値関数を基本対称関数として実行する論理素子を設計し、かつ、前記2進出力或いはその各々を基本対称関数として生成するのを制御するためのコードを備えることを特徴とする請求項129あるいは請求項130に記載のコンピュータシステム。
- 請求項123から請求項125のいずれか1つに記載の方法をコンピュータが実行するのを制御するための、コンピュータ読み取り可能な命令を運ぶための搬送媒体。
- 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための少なくとも1つの出力と、複数の入力と前記2進出力との間で接続されて、各2進出力を2進入力の閾値関数として生成するようにまとめられた論理素子とを備えた論理回路を設計する方法であって、該方法は、
排他的論理和を用いて論理回路を設計する段階と、
同時にハイである入力を持つことのできない論理ゲートを全て識別する段階と、
識別された排他的論理和ゲートを論理和ゲートで置き換える段階と
を備えることを特徴とする方法。 - 前記論理回路は、各2進出力を2進入力の基本対称関数として生成するように設計されることを特徴とする請求項133記載の方法。
- 前記論理回路は、複数の出力を持つ並列計数器として設計されることを特徴とする請求項133あるいは134に記載の方法。
- 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための複数の出力と、複数の入力と前記2進出力との間で接続されて、各2進出力を2進入力の閾値関数として生成するようにまとめられた論理素子とを備えた論理回路を設計するシステムであって、該システムは、
排他的論理和を用いて論理回路を設計するための設計手段と、
同時にハイである入力を持つことのできない論理ゲートを全て識別するための識別手段と、
識別された排他的論理和ゲートを論理和ゲートで置き換えるための置き換え手段と
を備えることを特徴とするシステム。 - 前記設計手段は、論理回路が各2進出力を2進入力の基本対称関数として生成するように設計するべく作られることを特徴とする請求項136記載のシステム。
- 前記設計手段は、論理回路を、複数の出力を持つ並列計数器として設計するように作られることを特徴とする請求項136あるいは請求項137に記載のシステム。
- 2進数を複数の2進入力として受け取るための複数の入力と、2進符号を出力するための複数の出力と、複数の入力と前記2進出力との間で接続されて、各2進出力を2進入力の対称関数として生成するようにまとめられた論理素子とを備えた論理回路を設計するためのコンピュータシステムであって、該コンピュータシステムは、
コンピュータ読み取り可能なコードを記憶したメモリと、
コードを読み取って実行するためのプロセッサと
を備え、前記メモリに記憶されたコードは、プロセッサが、
排他的論理和を用いて論理回路を設計し、
同時にハイである入力を持つことのできない論理ゲートを全て識別し、
識別された排他的論理和ゲートを論理和ゲートで置き換える
のを制御するためのコードを備えることを特徴とするコンピュータシステム。 - 前記メモリに記憶されたコードは、各2進出力を2進入力の基本対称関数として生成する論理回路を、プロセッサが設計するのを制御するためのコードを備えることを特徴とする請求項139記載のコンピュータシステム。
- 前記メモリに記憶されたコードは、複数の出力を持つ並列計数器として論理回路を、プロセッサが設計するのを制御するためのコードを備えることを特徴とする請求項139あるいは請求項140に記載のコンピュータシステム。
- 請求項133から請求項135のいずれか1つに記載の方法をコンピュータが実行するのを制御するためのコンピュータ読み取り可能な命令を運ぶための搬送媒体。
- 論理回路を設計する方法であって、該方法は、
各々が小さな対称関数を実行するための、論理モジュール設計のライブラリを提供する段階と、
大きな対称関数を実行する論理回路を設計する段階と、
前記対称関数を実行することのできる小さな対称関数を識別する段階と、
前記小さな対称関数を実行するための前記ライブラリから論理モジュールを選択する段階と、
対称関数を実行し、他の対称関数を実行するのに使用できる1つの論理回路を、選択された論理回路から識別する段階と、
識別された対称関数に対応する論理回路を選択し、インバータと共に、選択した論理回路を用いて次の対称関数の間の関係
OR_n_k(X1...Xn)=¬OR_n_(n+1−k)(¬X1...¬Xn)
を使って、前記他の対称関数を実行する段階と
を備え、ここで¬は反転を示し、nは入力の数であり、kは互いに論理積結合された入力の組の数であることを特徴とする方法。 - 前記対称関数は、基本対称関数であることを特徴とする請求項143記載の方法。
- 論理回路を設計するためのシステムであって、該システムは、
各々が小さな対称関数を実行するための論理モジュール設計のライブラリを記憶する記憶手段と、
大きな対称関数を実行する論理回路を設計するための設計手段と、
前記対称関数を実行することのできる小さな対称関数を識別する段階と、
前記小さな対称関数を実行するための前期ライブラリから論理モジュールを選択するための第1選択手段と、
選択された論理回路から、対称関数を実行し、他の対称関数を実行するのに使用できる1つの論理回路を識別するための識別手段と、
識別された対称関数に対応する論理回路を選択し、インバータと共に、選択した論理回路を用いて次の対称関数の間の関係
OR_n_k(X1...Xn)=¬OR_n_(n+1−k)(¬X1...¬Xn)
を使って、前記他の対称関数を実行するための第2選択手段と
を備え、ここで¬は反転を示し、nは入力の数であり、kは互いに論理積結合された入力の組の数であることを特徴とするシステム。 - 前記対称関数は、基本対称関数であることを特徴とする請求項145記載の方法。
- 論理回路を設計するためのコンピュータシステムであって、該コンピュータシステムは、
各々が小さな対称関数を実行するための論理モジュール設計のライブラリを記憶するデータメモリと、
コンピュータ読み取り可能なコードを記憶するコードメモリと、
コードを読み出し実行するためのプロセッサと
を備え、コードメモリに記憶されるコードは、プロセッサが、
大きな対称関数を実行する論理回路を設計し、
前記対称関数を実行することのできる小さな対称関数を識別し、
前記小さな対称関数を実行するための前記ライブラリから論理モジュールを選択し、
選択された論理回路から、対称関数を実行し、他の対称関数を実行するのに使用できる1つの論理回路を識別し、
識別された対称関数に対応する論理回路を選択し、インバータと共に、選択した論理回路を用いて次の対称関数の間の関係
OR_n_k(X1...Xn)=¬OR_n_(n+1−k)(¬X1...¬Xn)
を使って、前記他の対称関数を実行する
のを制御するためのコードを備え、ここで¬は反転を示し、nは入力の数であり、kは互いに論理積結合された入力の組の数であることを特徴とするコンピュータシステム。 - 前記対称関数は、基本対称関数であることを特徴とする請求項147記載のコンピュータシステム。
- 請求項143あるいは請求項144のいずれか1つに記載の方法をコンピュータが実行するのを制御するためのコンピュータ読み取り可能な命令を運ぶための搬送媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0019287A GB2365636B (en) | 2000-08-04 | 2000-08-04 | A parallel counter and a multiplication logic circuit |
GB0101961A GB2365637B (en) | 2000-08-04 | 2001-01-25 | A parallel counter and a multiplication logic circuit |
PCT/GB2001/003415 WO2002012995A2 (en) | 2000-08-04 | 2001-07-27 | A parallel counter and a logic circuit for performing multiplication |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004506260A true JP2004506260A (ja) | 2004-02-26 |
Family
ID=26244799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002517614A Withdrawn JP2004506260A (ja) | 2000-08-04 | 2001-07-27 | 並列計数器と乗算を実行するための論理回路 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1307812A2 (ja) |
JP (1) | JP2004506260A (ja) |
CN (1) | CN1468396A (ja) |
AU (1) | AU2002229155A1 (ja) |
WO (1) | WO2002012995A2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6883011B2 (en) | 2000-08-04 | 2005-04-19 | Arithmatica Limited | Parallel counter and a multiplication logic circuit |
GB2365636B (en) | 2000-08-04 | 2005-01-05 | Automatic Parallel Designs Ltd | A parallel counter and a multiplication logic circuit |
US7136888B2 (en) | 2000-08-04 | 2006-11-14 | Arithmatica Limited | Parallel counter and a logic circuit for performing multiplication |
WO2003034200A1 (en) * | 2000-08-11 | 2003-04-24 | Arithmatica Limited | A parallel counter and a logic circuit for performing multiplication |
GB2373602B (en) | 2001-03-22 | 2004-11-17 | Automatic Parallel Designs Ltd | A multiplication logic circuit |
GB2396718B (en) | 2002-12-23 | 2005-07-13 | Arithmatica Ltd | A logic circuit and method for carry and sum generation and method of designing such a logic circuit |
US6909767B2 (en) | 2003-01-14 | 2005-06-21 | Arithmatica Limited | Logic circuit |
US7042246B2 (en) | 2003-02-11 | 2006-05-09 | Arithmatica Limited | Logic circuits for performing threshold functions |
US7308471B2 (en) | 2003-03-28 | 2007-12-11 | Arithmatica Limited | Method and device for performing operations involving multiplication of selectively partitioned binary inputs using booth encoding |
US7170317B2 (en) | 2003-05-23 | 2007-01-30 | Arithmatica Limited | Sum bit generation circuit |
EP1831782A2 (en) * | 2004-07-12 | 2007-09-12 | Halil Kilic | Digital processor and method of processing digital data |
CN112068802B (zh) * | 2020-08-14 | 2022-11-11 | 清华大学 | 计数器的设计方法、装置及计数器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3634658A (en) * | 1970-03-19 | 1972-01-11 | Sperry Rand Corp | Parallel bit counter |
US3757098A (en) * | 1972-05-12 | 1973-09-04 | Rca Corp | Carry generation means for multiple character adder |
US4703435A (en) * | 1984-07-16 | 1987-10-27 | International Business Machines Corporation | Logic Synthesizer |
JP2506991B2 (ja) * | 1987-09-25 | 1996-06-12 | 松下電器産業株式会社 | 回路変換システムと回路変換方法と反転論理生成方法および論理設計システム |
US5175862A (en) * | 1989-12-29 | 1992-12-29 | Supercomputer Systems Limited Partnership | Method and apparatus for a special purpose arithmetic boolean unit |
US5524082A (en) * | 1991-06-28 | 1996-06-04 | International Business Machines Corporation | Redundancy removal using quasi-algebraic methods |
US6023566A (en) * | 1997-04-14 | 2000-02-08 | Cadence Design Systems | Cluster matching for circuit implementation |
-
2001
- 2001-07-27 AU AU2002229155A patent/AU2002229155A1/en not_active Abandoned
- 2001-07-27 EP EP01984499A patent/EP1307812A2/en not_active Withdrawn
- 2001-07-27 WO PCT/GB2001/003415 patent/WO2002012995A2/en not_active Application Discontinuation
- 2001-07-27 CN CNA018169287A patent/CN1468396A/zh active Pending
- 2001-07-27 JP JP2002517614A patent/JP2004506260A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
WO2002012995A2 (en) | 2002-02-14 |
EP1307812A2 (en) | 2003-05-07 |
CN1468396A (zh) | 2004-01-14 |
AU2002229155A1 (en) | 2002-02-18 |
WO2002012995A3 (en) | 2003-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yeh et al. | High-speed Booth encoded parallel multiplier design | |
KR20030045021A (ko) | 승산을 수행하기 위한 병렬 카운터 및 로직 회로 | |
US5956265A (en) | Boolean digital multiplier | |
Moss et al. | A two-speed, radix-4, serial–parallel multiplier | |
Garner | Number systems and arithmetic | |
Erle et al. | Decimal multiplication with efficient partial product generation | |
US20040103135A1 (en) | Multiplication logic circuit | |
US6883011B2 (en) | Parallel counter and a multiplication logic circuit | |
CA1332196C (en) | Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction | |
US7136888B2 (en) | Parallel counter and a logic circuit for performing multiplication | |
Ciminiera et al. | Carry-save multiplication schemes without final addition | |
JP2004506260A (ja) | 並列計数器と乗算を実行するための論理回路 | |
US11321049B2 (en) | Fast binary counters based on symmetric stacking and methods for same | |
JPH0773227A (ja) | 論理回路の自動設計方法、そのシステム及びその装置並びに乗算器 | |
Yan et al. | An energy-efficient multiplier with fully overlapped partial products reduction and final addition | |
Rajashekhara et al. | Fast multiplier design using redundant signed-digit numbers | |
EP1008033A1 (en) | Digital adder circuit | |
Abraham et al. | An ASIC design of an optimized multiplication using twin precision | |
Lutz et al. | Comparison of two's complement numbers | |
Teja et al. | Implementation of vedic multiplier using modified architecture by routing rearrangement for high-optimization | |
Usman et al. | Efficient Multipliers for CNN with Optimized Compression Techniques | |
Ashok et al. | High-level optimization techniques for low-power modified booth multiplier design of fpga | |
ASHOK et al. | Realization of Fused-Add Multiply (FAM) Operator using Optimized Booth Recoder | |
Yadav et al. | Design and Simulation of Multiplier for High-speed Application' | |
JYOTHIRMAI et al. | Implementation of Spanning Tree Based Add-Multiply Operator for Optimized Power Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081007 |