JP2004258799A - ルックアップテーブル・カスケード論理回路 - Google Patents
ルックアップテーブル・カスケード論理回路 Download PDFInfo
- Publication number
- JP2004258799A JP2004258799A JP2003046386A JP2003046386A JP2004258799A JP 2004258799 A JP2004258799 A JP 2004258799A JP 2003046386 A JP2003046386 A JP 2003046386A JP 2003046386 A JP2003046386 A JP 2003046386A JP 2004258799 A JP2004258799 A JP 2004258799A
- Authority
- JP
- Japan
- Prior art keywords
- output
- input
- circuit
- function
- memory
- 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.)
- Pending
Links
Images
Abstract
【解決手段】分解関数fkの関数値が分解関数ルックアップテーブルTkとして格納された論理関数メモリ2と、入力ラインの一部に入力変数Xが入力され、他の一部は論理関数メモリ2の出力端子に接続され、出力ラインは論理関数メモリ2の入力端子に接続され、両ラインのスイッチ回路を備えた接続回路6と、スイッチ回路の切換情報を、接続情報テーブルCkとして記憶する接続メモリ7と、分解関数fkの演算制御を、演算段数kの昇順に逐次行う演算制御手段11とを具備した。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、プログラム可能な論理回路に係り、特に、目的論理関数を関数分解して得られる分解関数を、逐次計算することにより、目的論理関数の演算を行うルックアップテーブル・カスケード論理回路に関する。
【0002】
【従来の技術】
従来より、回路構成をプログラムすることが可能な論理回路として、フィールド・プログラマブル・ゲートアレイ(以下、「FPGA」という。)が知られている。FPGAは、多くの論理セルがアレイ状に配列され、これらの論理セルのデータ及び論理セル間を接続する配線を自由に変更できるように構成される。FPGAはハードウェア的に演算を行うことから、マイクロ・プロセッサ(以下、「MPU」という。)により論理関数の演算を実行する場合に比べると、実行速度が速いという特徴を有する。そのため、近年では各種電子回路に多く使用されるようになってきている。その一方、FPGAは、物理的な配線の引き回しをプログラムにより変更することから、配線遅延を考慮した設計が必要であり、設計に長時間を要する。また、論理セル間の配線の引き回しの仕方により演算時間が変わるため、設計時において演算時間の予測が困難である。
【0003】
そこで、FPGAの上記のような欠点をカバーするプログラム可能な論理回路として、ルックアップテーブル・カスケード論理回路が提案されている(非特許文献1参照)。以下、ルックアップテーブル・カスケード論理回路について簡単に説明する。
【0004】
図14はルックアップテーブル・カスケード論理回路の原理を表す図である。
【0005】
まず、演算を行う論理関数を目的論理関数fと呼ぶことにする。また、目的論理関数の入力変数をX=(x1,x2,…,xn)で表し、Xの変数の集合を{X}で表す。更に、Xの変数の個数を|X|で表す。
【0006】
このとき、目的論理関数fは、二分決定グラフ(以下、「BDD」という。)を用いた関数分解手法等を利用して、図14に示すように、p個の論理関数に分解することができる。以下、目的論理関数fを分解して得られる論理関数を分解関数fk(k∈{1,…,p})という。図14において、X1,…,Xpは入力変数Xを分割したものであり、{X1}∪…∪{Xp}={X}、{Xi}∩{Xj}=φ(i≠j、i,j∈{1,…,p})である。j段目(j∈{1,…,p−1})の分解関数fjの出力変数Yj=(yj,1,…,yj,uj)は、j+1段目の分解関数fj+1に入力される。ここで、ujは、分解関数fjの出力変数Yjの個数|Yj|を表す。
【0007】
また、|Xi|=ni(i∈{1,…,p})とすると、n1=s(sは分解関数fiの入力変数の数)、ni=s−ui−1(1<i<p)、np=s−up−1−t(0≦t≦s−2)となるように関数分解することができる。
【0008】
このように、目的論理関数fをp−1個のs入力の分解関数fj(j∈{1,…,p−1})と1個のs−t入力の分解関数fpとに分解する。そして、各分解関数fk(k∈{1,…,p})を、分解関数fkの真理値表からなる分解関数ルックアップテーブルTkとして構成する。それぞれの分解関数ルックアップテーブルTkは、s入力uk出力の論理関数メモリを用いて実現できる。
【0009】
ルックアップテーブル・カスケード論理回路は、目的論理関数fの入出力数が大きい場合には、多数のルックアップテーブルをカスケード接続することとなるため、最適化されたFPGAに比べて演算速度は劣る。しかし、ルックアップテーブル・カスケード論理回路は、論理関数メモリを用いて演算をハードウェア的に行うために、MPUに比べ演算速度の高速化が期待できる。そして、ルックアップテーブルの段数によって一義的に演算速度が決まることから、設計時に目的論理関数の演算時間の予測も容易である。また、隣接するルックアップテーブルの間でのみ配線を行えばよいため、配線遅延を考慮する必要がなく、設計も容易となる。
【0010】
【非特許文献1】
笹尾勤,松浦宗寛,井口幸洋,“多出力関数のカスケード実現と再構成可能ハードウェアによる実現”,電子情報通信学会FTS研究会, FTS2001−8, pp. 57−64, 三重大学(2001−04).
【非特許文献2】
T. Sasao, M. Matsuura, and Y. Iguchi, ”A cascade realization of multiple−output function for reconfigurable hardware,” International Workshop on Logic and Synthesis (IWLS01), Lake Tahoe, CA, June 12−15, 2001. pp.225−230.
【0011】
【発明が解決しようとする課題】
上記のルックアップテーブル・カスケード論理回路を実現する場合、単純に考えるとp個の論理関数メモリをカスケード接続すればよい。しかしながら、これを1個の論理関数メモリを用いて実現しようとした場合、分解関数fkの演算を行うときには、外部から入力変数Xkを論理関数メモリに入力すると共に、論理関数メモリから出力される前段の分解関数fk−1の出力変数Yk−1を再度論理関数メモリに入力する必要がある。
【0012】
上記非特許文献1には、1個の論理関数メモリを用いて実現されたルックアップテーブル・カスケード論理回路として、シーケンサを用いて論理関数メモリの入出力の接続を切り換える構成のルックアップテーブル・カスケード論理回路のアーキテクチャが示されている。しかしながら、シーケンサを用いた場合、入出力の接続切り換えに時間がかかるため、高速なルックアップテーブル・カスケード論理回路の実現が困難である。
【0013】
そこで、本発明の解決すべき課題は、1個の論理関数メモリを用いて構成された、高速演算が可能なルックアップテーブル・カスケード論理回路を提供することにある。
【0014】
【課題を解決するための手段】
本発明に係るルックアップテーブル・カスケード論理回路は、入力変数X=(x1,…,xn)を有する目的論理関数f(X)を関数分解して得られる分解関数{fi;i=1,…,p}を、逐次計算することにより、目的論理関数f(X)の演算を行うルックアップテーブル・カスケード論理回路であって、複数の入力端子と複数の出力端子とを有し、前記分解関数fk(k∈{1,…,p})に対応する領域番号pkにより指定されるアドレス領域に、前記分解関数fkの関数値が分解関数ルックアップテーブルとして格納された論理関数メモリと、複数の入力ラインと複数の出力ラインとを備え、前記入力ラインの一部には前記入力変数Xが入力され、前記入力ラインの他の一部は前記論理関数メモリの出力端子に接続され、前記出力ラインは前記論理関数メモリの入力端子に接続されており、前記各入力ラインと前記各出力ラインとの接続を切り換えるスイッチ回路を具備している接続回路と、前記各分解関数fkに対して、前記接続回路の入力ラインに入力される入力変数X、及び論理関数メモリの出力端子から出力される分解関数fk−1の出力変数Ykの接続関係を、前記分解関数ルックアップテーブルを参照するために前記論理関数メモリの入力端子に入力する入力変数の順序に整合するように、前記接続回路内のスイッチ回路を切り換えるための情報を、接続情報テーブルとして記憶する接続メモリと、前記論理関数メモリに対し前記領域番号pkを指定して前記分解関数ルックアップテーブルを参照可能にするとともに、前記接続メモリに記憶された接続情報テーブルに従って前記接続回路内のスイッチ回路の切換を行い、前記論理関数メモリの出力端子から前記分解関数fkの関数値を出力させる一連の制御を、演算段数kの昇順に逐次行う演算制御手段と、を備えていることを特徴とする。
【0015】
この構成によれば、分解関数fkの演算を行う場合、演算制御手段は、前記論理関数メモリに対し前記領域番号pkを指定して前記分解関数ルックアップテーブルを参照可能にする。それとともに、接続メモリに記憶された接続情報テーブルに従って接続回路内のスイッチ回路の切換を行う。これにより、接続回路の出力ラインからは、分解関数fk(k∈{1,…,p})の演算に使用される変数Xk(Xk∈X)又は変数Ykが出力される。論理関数メモリは、出力ラインから入力される変数Xk(Xk∈X)又は変数Ykの値を参照して、分解関数ルックアップテーブルから分解関数fkの関数値を出力する。
【0016】
演算制御手段は、このような演算をk=1からpまで繰り返すことにより、目的論理関数fを演算することができる。
【0017】
ここで、接続回路内のスイッチ回路の切換は接続メモリに記憶された接続情報テーブルに従って行われる。これにより、接続回路内のスイッチ回路の切換動作は短時間で行われる。そのため、目的論理関数fの演算速度を高速化することが可能となる。
【0018】
また、目的論理関数のプログラムは、論理関数メモリ、接続メモリに対して分解関数ルックアップテーブル、接続情報テーブルを書き込むだけでよいため、設計が極めて簡単となる。また、配線は固定されているため、FPGAのように、物理的な配線の引き回しの設計を必要がなく、設計時に配線遅延の考慮は不要である。従って、効率的な論理演算回路の設計ができる。更に、分解関数fkの数が決まれば、演算時間も一意的に決まることから、設計時に演算時間の予測が容易にできる。
【0019】
尚、上記「接続回路」としては、クロスバスイッチ、マルチプレクサ、バレル・シフタ等を使用することができる。
【0020】
また、本発明に係るルックアップテーブル・カスケード論理回路においては、更に、前記入力変数Xの一部を選択して出力端子から出力する入力変数選択回路を備え、前記接続回路の前記入力ラインの一部は、前記入力変数選択回路の出力端子に接続されており、前記演算制御手段は、前記分解関数fkの演算を行う際には、前記入力変数選択回路に対し、少なくとも入力変数Xのうち、前記分解関数fk(k∈{1,…,p})の演算に使用される入力変数Xk(Xk∈X)を選択させるように制御する構成とすることができる。
【0021】
この構成によれば、入力変数選択回路により、入力変数Xの一部を選択して接続回路の入力ラインに入力することで、接続回路の入力ラインの本数を減らすことができる。そのため、入力ラインと出力ラインとの交点数が減少する。従って、接続回路を小型化することができる。また、接続情報テーブルCkが小さくなる。従って、接続メモリのメモリ容量を減少させることも可能となり、回路が小型化される。
【0022】
また、本発明に係るルックアップテーブル・カスケード論理回路においては、前記出力回路は、wチャンネル1出力(w≧2)のマルチプレクサを多段にカスケード接続し、各段において、出力を取り出せるように構成することができる。
【0023】
この構成により、多出力論理関数の演算を行う場合、複数の出力を取り出すことが可能となり、多出力論理関数の演算を複数の出力に関して同時に行うことが可能となる。従って、多出力論理関数の演算速度の向上を図ることができる。
【0024】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を参照しながら説明する。
【0025】
(実施形態1)
図1は本発明の実施形態1に係るルックアップテーブル・カスケード論理回路のブロック図である。
【0026】
本発明の実施形態1に係るルックアップテーブル・カスケード論理回路1は、論理関数メモリ2、入力変数レジスタ3、入力変数選択回路4、入力選択メモリ5、接続回路6、接続メモリ7、出力回路8、出力選択メモリ9、出力レジスタ10、及び演算制御部11を備えている。
【0027】
論理関数メモリ2は、目的論理関数fを関数分解して得られるp個の分解関数fk(k∈{1,…,p})の関数値が、ルックアップテーブルTkとして記憶されている。この論理関数メモリ2は、複数の入力端子と複数の出力端子を備えており、入力端子から入力される入力変数により指定されるルックアップテーブルTk内の関数値を、出力端子から出力する。
【0028】
入力変数レジスタ3には、目的関数fの入力変数X=(x1,…,xn)が記憶される。入力変数選択回路4は、入力変数レジスタ3内に格納された入力変数Xのうちm個の入力変数(xdk,…,xdk+m−1)を選択して出力端子に出力する。入力選択メモリ5は、入力変数選択回路4に対し、入力変数Xの選択範囲を指定する入力選択データdk(k∈{1,…,p})を出力する。
【0029】
接続回路6は、複数の入力ライン、複数の出力ライン、これらの入力ラインと出力ラインとの接続を行うためのスイッチ回路、及び各スイッチ回路の切換制御をするための複数の接続制御ラインを備えている。接続回路6の入力ラインのうちのm本は、入力変数選択回路4のm個の出力端子にそれぞれ接続されている。また、接続回路6の入力ラインの残りのものは、論理関数メモリ2の出力端子に接続されている。また、接続回路6の各出力ラインは、論理関数メモリ2の入力端子に接続されている。接続メモリ7は、各出力端子が接続回路6の各接続制御ラインに接続されている。そして、接続回路6内の各スイッチ回路を切り換えるための情報が、接続情報テーブルCk(k∈{1,…,p})として格納されている。
【0030】
出力回路8は、複数の入力ラインと1本の出力ラインとを備えており、各入力ラインは、論理関数メモリ2の各出力端子に接続されている。出力回路8は、これらの入力ラインから入力されるデータから、1つを選択して出力ラインに出力する。また、出力選択メモリ9には、出力回路8が選択すべき入力ラインの情報である出力選択データが記憶されている。出力回路8は、この出力選択メモリ9に記憶された出力選択データに基づいて、データの選択を行う。出力レジスタ10は、出力回路8の出力ラインに接続されており、出力回路8から出力される目的論理関数fの演算結果のデータを記憶する。
尚、本実施形態では、出力回路8の出力ラインを1本の場合について説明するが、本発明においては出力回路8の出力ラインの本数は2本以上であってもよい。
【0031】
演算制御部11は、論理関数メモリ2の入出力、入力選択メモリ5のデータ出力、接続メモリ7のデータ出力、及び出力選択メモリ9のデータ出力の制御を行うことによって、ルックアップテーブル・カスケード論理回路1の演算制御を行う。
【0032】
図2は入力変数選択回路の回路構成図である。
【0033】
図2において、本実施形態の入力変数選択回路4は、バレル・シフタ回路により構成されている。入力変数選択回路4は、各入力端子in(01)〜in(16)と出力端子out(01)〜out(08)を有する。入力変数選択回路4の入力端子in(01)〜in(16)は、入力レジスタ3の出力側に接続される。また、入力変数選択回路4の出力端子out(01)〜out(08)は、接続回路6の入力ラインに接続される。尚、図2では、入力変数選択回路4の入力は16ビット、出力は8ビットの例を示しているが、本発明では入力変数選択回路4の入出力のビット数はこれに限られるものではない。
【0034】
入力変数選択回路4は、入力端子in(01)〜in(16)の側から、8ビット・シフタ回路15、4ビット・シフタ回路16、2ビット・シフタ回路17、及び1ビット・シフタ回路18が直列接続された構成からなる。各シフタ回路15,16,17,18は、それぞれ制御ラインshf4,shf3,shf2,shf1により制御される。各制御ラインshf4〜shf1は、入力選択メモリ5に接続されている。そして、入力選択メモリ5から各制御ラインshf4〜shf1に0が入力された場合、各シフタ回路15〜18は入出力ラインのシフトを行わない。一方、各制御ラインshf4〜shf1に1が入力された場合、各シフタ回路15〜18は入出力ラインのシフトを行う。
【0035】
尚、実際には、図2のようにシフタ回路を多段に接続すると、信号振幅が減衰する。従って、図2では省略しているが、実際には、減衰が大きい場合、シフタ回路の数段ごとに増幅器(バッファ)を挿入しておくことが必要となる。
【0036】
図3は接続回路周辺の回路構成を表す図である。
【0037】
図3において、入力変数選択回路4、接続回路6、及び接続メモリ7は、図1と同様のものであるため、同一の符号を付して説明は省略する。
【0038】
本実施形態においては、接続回路6はクロスバスイッチとして構成されている。すなわち、接続回路6は、入力ラインi1〜i16と出力ラインo1〜o8とが格子状に配列され、各入力ラインと各出力ラインとの交点は、パストランジスタからなるスイッチ回路を介して接続されている。
【0039】
入力ラインi1〜i8は、入力変数選択回路4の出力端子に接続されており、入力ラインi9〜i16は、論理関数メモリ2の出力端子に接続されている。また、出力ラインo1〜o8は、論理関数メモリ2の入力端子に接続されている。Nc=16×8個のパストランジスタのゲートは、それぞれ、Nc個の接続メモリ7の出力端子に接続されている。そして、各パストランジスタは、接続メモリ7の出力端子に現れる出力値によって同時に切換が行われる。
【0040】
尚、本実施形態においては、一例として、接続回路6の入力ライン本数は16本、出力ライン本数は8本としたが、本発明では、接続回路6の入出力ラインの本数はこれらの数に限るものではない。
【0041】
図4は接続メモリの構成を表すブロック図である。
【0042】
図4において、接続メモリ7の内部には、p個のメモリアレイCM1〜CMpが備えられている。各メモリアレイCM1〜CMpには、接続回路6内のNc個のパストランジスタのオン/オフ情報をビットマップで表した接続情報テーブルC1〜Cpが記憶されている。これらのメモリアレイCM1〜CMpのNc個の出力端子は、接続回路6内の各パストランジスタのゲートに接続されている。
【0043】
また、接続メモリ7の内部には、ページデコーダ21が設けられている。ページデコーダ21は、演算制御部11から入力される段数指定kに従って、k番目のメモリアレイCMkを選択する。ページデコーダ21により選択されたメモリアレイCMkは、Ncビットの接続情報テーブルCkを出力端子に出力する。
【0044】
図5は論理関数メモリの構成を表すブロック図である。
【0045】
図5において、論理関数メモリ2は、内部にpページからなるメモリアレイFM1〜FMpを備えている。これらのメモリアレイFM1〜FMpには、分解関数f1〜fpの関数値が分解関数ルックアップテーブルT1〜Tpとして記憶されている。
【0046】
また、論理関数メモリ2は、ページデコーダ22を有している。ページデコーダ22は、演算制御部11から入力される領域選択番号pkに基づいて、メモリアレイFMkを選択する。更に、論理関数メモリ2は、アドレスデコーダ23を有している。アドレスデコーダ23は、Nin=8個の入力端子から入力される変数(Xk,Yk)に基づき、メモリアレイFMk内のアドレスを選択する。この選択されたアドレスのメモリセルには、分解関数fkの関数値fk(Xk,Yk)が格納されている。メモリアレイFMkは、ページデコーダ22及びアドレスデコーダ23によりメモリセルのアドレスが指定されると、当該メモリセル内に記憶されているデータを、出力変数Yk+1=(yk+1,1,…yk+1,|Yk+1|)として、出力端子に出力する。
【0047】
尚、本実施形態においては、一例として、論理関数メモリ2の入出力のビット数は8ビットとしたが、本発明では、論理関数メモリ2の入出力のビット数はこれらの数に限るものではない。
【0048】
以上のように構成された本実施形態に係るルックアップテーブル・カスケード論理回路において、以下その動作を説明する。
【0049】
図6は本実施形態に係るルックアップテーブル・カスケード論理回路の動作を表すフローチャートである。
【0050】
まず、目的関数fの演算が開始されると、演算制御部11は、演算段数を表すカウンタkを1に設定する(S1)。そして、演算制御部11は、接続メモリ7のページデコーダ21に対してkページの選択を指示する。ページデコーダ21は、接続メモリ7の指示に従って、kページのメモリアレイCMkを選択する。選択されたメモリアレイCMkは、その内部に記憶された接続情報テーブルCkを出力端子から出力する。それに伴い、接続情報テーブルCkのビットマップに従って接続回路6内の各スイッチ回路が切り換えられ、接続回路6の入力ラインと出力ラインとの接続がなされる(S2)。
【0051】
また、接続回路6の接続設定とともに、演算制御部11は、入力選択メモリ5に対して、k段目の入力選択データdkの出力を指示する。ここで、入力選択データdkは、出力ラインに対する入力ラインのシフト量を2進表示した値からなるデータである。入力選択メモリ5はこの指示を受けて、入力変数選択回路4の制御ラインshf1〜shf4に対し、入力選択データdkを出力する。これにより、入力変数選択回路4の出力端子には、入力変数{xdk,xdk+1,…,xdk+m−1}(本実施形態では、m=8としているが、一般にはmの値はこれに限られない。)が出力される(S3)。すなわち、入力変数{xdk,xdk+1,…,xdk+m−1}が接続回路6のm本の入力ラインに入力される。一方、接続回路6の他の入力ラインには、論理関数メモリ2の出力ラインからの出力変数Yk=(yk,1,yk,2,…,yk,|Yk|)が入力されている。尚、k=1のときには、Y1はどんな値であってもよい。k=1のときは、論理関数メモリ2からの出力は使用しないからである。
【0052】
このとき、接続回路6内の各スイッチ回路によって、入力ラインと出力ラインとは、接続情報テーブルCkのビットマップに従って接続されている。そのため、接続回路6の出力ラインには、Xk=(xdk,xdk+1,…,xdk+|Xk|−1)及びYk(以下、出力ラインに出力されるYkを「中間変数」と呼ぶ。)が出力される。
【0053】
次に、演算制御部11は、論理関数メモリ2内のページデコーダ22に領域選択番号pkを出力する。ページデコーダ22は、領域選択番号pkに基づいて、メモリアレイFMkを選択する(S4)。これにより、分解関数fkに対する分解関数ルックアップテーブルTkが選択されたこととなる。
【0054】
このとき、論理関数メモリ2の入力端子には、接続回路6の出力ラインから、入力変数Xk及び中間変数Ykが入力されている。従って、アドレスデコーダ23は、変数(Xk,Yk)に基づき、メモリアレイFMk内のメモリセルを選択する(S5)。
【0055】
メモリアレイFMkは、アドレスデコーダ23によりメモリセルが選択されると、当該メモリセル内に格納された関数値fk(Xk,Yk)を、論理関数メモリ2の出力端子に出力する(S6)。
【0056】
そして、演算制御部11は、カウンタkの値をインクリメントした後(S7)、カウンタkの値がp以下であれば(S8)、上記ステップS2〜S8の動作を繰り返す。
【0057】
ステップS8において、カウンタkの値がpを超えた場合、演算制御部11は、出力選択メモリ9に対して出力指示を与える。出力選択メモリ9は、出力指示が与えられると、出力回路8に対して、論理関数メモリ2の出力端子の選択信号を出力する(S9)。そして、出力回路8は、当該選択信号に従って、論理関数メモリ2の出力端子の一つから出力される出力変数を、出力レジスタ10へ出力する(S10)。以上の動作によって、入力変数Xに対する目的関数fの演算結果f(X)が出力レジスタ10に得られる。
【0058】
以上のように、本実施形態のルックアップテーブル・カスケード論理回路によれば、前段の分解関数の演算から次段の分解関数の演算への入力変数及び中間変数の受け渡しに、接続回路6及び接続メモリ7を使用して、予め用意された接続情報テーブル{C1,…,Cp}を参照して接続切換を行うことで、接続切換を高速化することが可能となる。
【0059】
また、各段の分解関数間の変数の受け渡し順序は、接続メモリ7内の接続情報テーブルの内容を書き換えるだけで、容易に変更することができる。すなわち、分解関数の演算部分と、各分解関数間の変数の受け渡し及び新たな入力変数の入力部分との双方を、論理関数メモリ2及び接続メモリ7内に分解関数ルックアップテーブル及び接続情報テーブルを書き込み、入力選択メモリ5及び出力選択メモリ9に入力選択データ及び出力選択データを書き込むだけで容易にプログラムすることが可能となる。
【0060】
次に、上記演算動作をより分かりやすく説明するために、具体的な例を用いてルックアップテーブル・カスケード論理回路の具体的な動作を説明する。
【0061】
(例)5変数多数決論理関数
ここでは、簡単な論理関数として、5変数多数決論理関数の演算を例にとってルックアップテーブル・カスケード論理回路1の動作を説明する。
【0062】
5変数多数決関数とは、5つの2進数からなる入力変数X=(x1,x2,x3,x4,x5)をもち、そのうちの3つ以上の値が1のときにのみ、出力が1となるような関数をいう。5変数多数決関数を論理式により表すと、下式のような10個の積項により表される。
【数1】
【0063】
また、5変数多数決関数fをBDDで表すと、図7〜図9のようになる。図7〜図9において、x1〜x5の符号が記入された円は、非終端節点を表し、入力変数に対応する。また、0,1の符号が記載された四角形は終端節点を表し、論理関数値f(X)に対応する。また、各節点間を結ぶ線は枝(エッジ)と呼ばれる。各枝のうち、点線で表されたものは、入力変数の値が0の枝、実線で表されたものは入力変数の値が1の枝を表す。
【0064】
図7は、目的論理関数である5変数多数決関数fを、変数の順序を(x1,x2,x3,x4,x5)に固定して、冗長な節点の削除と同形な部分グラフの共有を可能な限り行った、既約順序付二分決定グラフ(以下、「ROBDD」という。)である。以下、このROBDDを、ルックアップテーブル・カスケード論理回路を用いて構成する場合について説明する。
【0065】
まず、図7のROBDDを適当な位置で上下に分割する。この場合、分割した上側のBDDの入力変数の数は、論理関数メモリの入力端子の数以下とする。ここでは、入力変数x3と入力変数x4との間で分割することとし、分割した上側のBDDの入力変数X1=(x1,x2,x3)は3個とする。図8は分割されたBDDを表す。図8において、L1は分割線を表す。分割線L1の上のBDDで表される分解関数を、分解関数f1=f1(X1)と呼ぶことにする。
【0066】
ここで、一般に、変数xkと変数xk+1の間の分割線を横切る枝の個数を「BDDのレベルkにおける幅」とよび、μkで表す。但し、同一の節点に接続している枝は1つと数えるものとする。
【0067】
分割線L1におけるBDDの幅はμ3=4であり、分割線L1の上側のBDDの出力値は、
【数2】
の出力変数Y2=(y2,1,y2,2)により表すことができる。図8においては、X1=(0,0,0)に対する出力変数の値をY2=(0,0)、X1=(0,0,1),(0,1,0),(1,0,0)に対する出力変数の値をY2=(0,1)、X1=(0,1,1),(1,0,1),(1,1,0)に対する出力変数の値をY2=(1,0)、X1=(1,1,1)に対する出力変数の値をY2=(1,1)のように割り当てている。尚、出力変数Y2に対する値の割り当て方法は自由であり、この例に限られるものではない。
【0068】
次に、分割線L1の下側のBDDを、変数x4と変数x5との間で更に分割する。図9は更に分割されたBDDを表す。図9において、L2は2回目の分割における分割線、L3は最後の分割線(出力)を表す。この場合、分割線Lk−1とLkの間のBDDの入力変数Xkの変数の個数nk=|Xk|と、分割線Lk−1の上のBDDの出力変数の個数mk=|Yk|との和nk+mkが、論理関数メモリの入力端子の数以下となるようにBDDを分割する。
【0069】
分割線L2におけるBDDの幅はμ4=3であり、分割線L2の上側のBDDの出力値は、
【数3】
の出力変数Y3=(y3,1,y3,2)により表すことができる。図9においては、(X2,Y2)=(x4,y2,1,y2,2)=(0,0,0),(1,0,0),(0,0,1)に対する出力変数の値をY3=(0,0)、(X2,Y2)=(1,0,1),(0,1,0)に対する出力変数の値をY3=(1,0)、(X2,Y2)=(1,1,0),(0,1,1),(1,1,1)に対する出力変数の値をY3=(1,1)のように割り当てている。
【0070】
分割線L3におけるBDDの幅はμ5=2であり、分割線L3の上側のBDDの出力値は、
【数4】
の出力変数Y4=(y4,1)により表すことができる。出力変数Y4の値として、(X3,Y3)=(x5,y3,1,y3,2)=(0,0,0),(1,0,0),(0,1,0)に対する出力変数の値をY4=(0)、(X3,Y3)=(1,1,0),(0,1,1),(1,1,1)に対する出力変数の値をY4=(1)のように割り当てる。このように出力変数Y4の値を割り当てることによって、出力変数Y4に目的論理関数である5変数多数決関数fの値が出力される。尚、ここで、分割線L2の上の分割されたBDDにより表される分解関数を分解関数f2=f2(X2,Y2)と呼び、分割線L2の下の分割されたBDDにより表される分解関数を分解関数f3=f3(X3,Y3)と呼ぶことにする。
【0071】
以上の分割の結果、5変数多数決関数fは、3つの分解関数f1,f2,f3に関数分解される。これらの分解関数を分解関数ルックアップテーブルT1,T2,T3により表す。ここで、分解関数fkの分解関数ルックアップテーブルTkとは、2nk行2mk列の表であって、各行が入力値Xkの値に対応し、各列が出力変数yi(i∈{1,…,|Yk|})の値に対応する表をいう。
【0072】
分解関数f1,f2,f3の真理値表、及び分解関数f1,f2,f3を表す分解関数ルックアップテーブルT1,T2,T3は、それぞれ、以下のようになる。
【表1】
【表2】
【表3】
【数5】
【0073】
これらの分解関数ルックアップテーブルを用いれば、5変数多数決関数fは、以下の参照演算により計算できる。
【数6】
ここで、参照演算子Tk[A]は、分解関数ルックアップテーブルTkの各行のうち、入力変数Aで特定される行の値(一般にベクトル値)を返す演算子である。
【0074】
上式において、参照演算は論理関数メモリ2を使用してハードウェア的に行うことができる。すなわち、論理関数メモリ2のkページに、分解関数ルックアップテーブルTkを格納する。このとき、k=1のときは、入力変数X1=(x1,x2,x3)で指定されるアドレスに、その入力変数に対応する関数値Y2=f1(X1)を記憶しておく。k=2のときは、入力変数と中間変数の組(X2,Y2)=(x4,y2,1,y2,2)で指定されるアドレスに、その入力変数に対応する関数値Y3=f2(X2,Y2)を記憶しておく。k=3のときは、入力変数と中間変数の組(X3,Y3)=(x5,y3,1,y3,2)で指定されるアドレスに、その入力変数に対応する関数値Y4=f3(X3,Y3)を記憶しておく。これにより、論理関数メモリ2の入力端子に入力変数又は中間変数を入力し、それらの変数で指定されるアドレスの値を読み出せば、参照演算の結果をすぐに得ることができる。これを模式図で表すと、図10のようなルックアップテーブル・カスケードとなる。
【0075】
分解関数の参照演算を行うためには、当該参照演算で使用する入力変数又は中間変数を、所定の順序で論理関数メモリ2の入力端子に入力する必要がある。このときの入力変数及び中間変数の順序の入れ替えは、接続回路6及び接続メモリ7により行われる。
【0076】
この例の場合、接続メモリ7の1〜3ページには、下式で表される接続情報テーブルC1,C2,C3が記憶されている。
【数7】
【数8】
【0077】
各行及び各列の接続情報テーブルの値は、図3の接続回路6内の各列及び各行のスイッチ回路のオン/オフ情報に対応している。1がオン、0がオフを表す。例えば、接続情報テーブルC2は、図3の(i1,o1),(i9,o2),(i10,o3)の各交点のスイッチ回路をオン状態とし、他のスイッチ回路をオフ状態とすることを意味する。
【0078】
入力選択メモリ5には、入力変数選択回路4の各演算段におけるシフト値として、d1=(0000)2,d2=(0011)2,d2=(0100)2が記憶されている。また、出力選択メモリ9には、最終段の出力変数Y4の出力される出力端子の番号1が記憶されている。
【0079】
次に、上記ルックアップテーブル・カスケード論理回路1による5変数多数決関数fの演算動作について具体的に説明する。
【0080】
まず、演算制御部11は、入力選択メモリ5に記憶されたシフト値d1=(0000)2を入力変数選択回路4の制御ラインshf4〜shf1に設定する。入力変数選択回路4は、制御ラインshf4〜shf1にd1=(0000)2が設定されると、in(01)〜in(08)をout(01)〜out(08)に接続する。これにより、out(01)〜out(05)には、それぞれ入力変数x1〜x5の値が出力され、これが接続回路6の入力ラインi1〜i5に入力される。
【0081】
次に、演算制御部11は、図4の接続メモリ7の段数指定に1ページ目を表す値(00000)2を設定する。これにより、接続メモリ7の出力端子には、メモリアレイCM1に格納された接続情報テーブルC1の値が設定される。接続回路6内のスイッチ回路は、この接続メモリ7の出力に従ってオン/オフ状態が切り換えられる。具体的には、接続回路6の(i1,o1),(i2,o2),(i3,o3)の交点のスイッチ回路がオン状態となり、それ以外のスイッチ回路がオフ状態となる。これにより、出力ラインo1,o2,o3には、それぞれ入力変数x1,x2,x3の値が出力される。すなわち、接続回路6は、以下の行列演算を行う。
【数9】
【0082】
次に、演算制御部11は、論理関数メモリ2に対して、読み出しページ番号pk=1を設定する。論理演算メモリ2は、1ページ目のメモリアレイFM1にアクセスし、接続回路6から入力される入力変数X1=(x1,x2,x3)で指定されるアドレスに記憶された分解関数f1の関数値Y2=(y2,1,y2,2)を出力端子から出力する。すなわち、論理演算メモリ2の出力端子(y1,…,y8)には、(y2,1,y2,2,0,…,0)が出力される。これにより、論理関数メモリ2は、以下の参照演算を行ったことになる。
【数10】
【0083】
次に、演算制御部11は、入力選択メモリ5に記憶されたシフト値d2=(0011)2を入力変数選択回路4の制御ラインshf4〜shf1に設定し、入力変数選択回路4は、in(04)〜in(11)をout(01)〜out(08)に接続する。これにより、out(01),out(02)には、それぞれ入力変数x4,x5の値が出力され、これが接続回路6の入力ラインi1,i2に入力される。
【0084】
次に、演算制御部11は、図4の接続メモリ7の段数指定に2ページ目を表す値(00001)2を設定する。これにより、接続メモリ7の出力端子には、メモリアレイCM2に格納された接続情報テーブルC2の値が設定される。すなわち、接続回路6の(i1,o1),(i9,o2),(i10,o3)の交点のスイッチ回路がオン状態となり、それ以外のスイッチ回路がオフ状態となる。そして、出力ラインo1,o2,o3には、それぞれ入力変数x4,及び中間変数y2,1,y2,2の値が出力される。すなわち、接続回路6は、以下の行列演算を行う。
【数11】
【0085】
次に、演算制御部11は、論理関数メモリ2に対して、読み出しページ番号pk=2を設定する。論理演算メモリ2は、2ページ目のメモリアレイFM2にアクセスし、接続回路6から入力される変数(X2,Y2)=(x4,y2,1,y2,2)で指定されるアドレスに記憶された分解関数f2の関数値Y3=(y3,1,y3,2)を出力端子から出力する。すなわち、論理演算メモリ2の出力端子(y1,…,y8)には、(y3,1,y3,2,0,…,0)が出力される。これにより、論理関数メモリ2は、以下の参照演算を行ったことになる。
【数12】
【0086】
次に、演算制御部11は、入力選択メモリ5に記憶されたシフト値d3=(0100)2を入力変数選択回路4の制御ラインshf4〜shf1に設定し、入力変数選択回路4は、in(05)〜in(12)をout(01)〜out(08)に接続する。これにより、out(01)には、入力変数x5の値が出力され、これが接続回路6の入力ラインi1に入力される。
【0087】
次に、演算制御部11は、図4の接続メモリ7の段数指定に3ページ目を表す値(00010)2を設定する。これにより、接続メモリ7の出力端子には、メモリアレイCM3に格納された接続情報テーブルC3の値が設定される。すなわち、接続回路6の(i1,o1),(i9,o2),(i10,o3)の交点のスイッチ回路がオン状態となり、それ以外のスイッチ回路がオフ状態となる。そして、出力ラインo1,o2,o3には、それぞれ入力変数x5,及び中間変数y3,1,y3,2の値が出力される。すなわち、接続回路6は、以下の行列演算を行う。
【数13】
【0088】
次に、演算制御部11は、論理関数メモリ2に対して、読み出しページ番号pk=3を設定する。論理演算メモリ2は、3ページ目のメモリアレイFM3にアクセスし、接続回路6から入力される変数(X3,Y3)=(x5,y3,1,y3,2)で指定されるアドレスに記憶された分解関数f3の関数値Y4=(y4,1)を出力端子から出力する。すなわち、論理演算メモリ2の出力端子(y1,…,y8)には、(y4,1,0,…,0)が出力される。これにより、論理関数メモリ2は、以下の参照演算を行ったことになる。
【数14】
【0089】
最後に、演算制御部11は、出力選択メモリ9に記憶された、出力選択データ(すなわち、出力変数Y4の出力される出力端子の番号1)を出力回路8に設定する。そして、出力回路8は出力端子y1を選択し、y1に出力された関数値Y4の値を出力レジスタ10に出力する。これにより、5変数多数決関数fの演算がされたことになる。
【0090】
(実施形態2)
図11は本発明の実施形態2に係るルックアップテーブル・カスケード論理回路の接続回路の構成を示す図である。尚、本実施形態においては、ルックアップテーブル・カスケード論理回路の全体構成は図1と同様であるため説明は省略する。
【0091】
本実施形態のルックアップテーブル・カスケード論理回路は、接続回路6’が、各出力ラインo1〜omo(moは出力ラインの本数)に対して、総ての入力ラインi1〜imi(miは入力ラインの本数)のうちの1本を選択して当該出力ラインとの接続を行うマルチプレクサMUX1〜MUX8を備えていることを特徴とする。そして、接続メモリ7’は、各マルチプレクサMUX1〜MUX8の接続制御ラインに接続されている。それぞれのマルチプレクサの接続制御ラインの数nchは、
【数15】
なので、接続回路6’に必要な接続制御ラインの総数は、
【数16】
となる。実施形態1では、接続回路6としてクロスバスイッチを使用したが、実施形態1の場合、接続回路6に必要な接続制御ラインの総数Nchは、mi×mo本である。従って、例えば、mi=16,mo=8とすると、Nch=128本となる。また、接続メモリ7の出力端子は、少なくとも接続回路6の接続制御ラインの総数Nchだけ必要なので、接続メモリ7の回路サイズがかなり大きくなる。また、接続メモリ7の出力端子の数に比例して、接続情報テーブル{C1,…,Cp}のサイズも大きくなるため、接続メモリ7もかなり大きなメモリ容量が必要とされる。それに対し、本実施形態では、接続回路6’にマルチプレクサMUX1〜MUX8を使用することで、接続回路6’に必要な接続制御ラインの総数Nchを、上記実施形態1の場合よりも大幅に削減することができる。例えば、mi=16,mo=8とすると、Nch=8×log216=32本となる。そのため、接続メモリ7’の出力端子数も少なくなる。従って、上記実施形態1のものに比べて接続回路6’を小型化することができるとともに、メモリ7’のメモリ容量も小さくすることが可能となる。
【0092】
(実施形態3)
図12は本発明の実施形態2に係るルックアップテーブル・カスケード論理回路の出力回路の構成を示す図である。尚、本実施形態においては、ルックアップテーブル・カスケード論理回路の全体構成は図1と同様であるため説明は省略する。
【0093】
本実施形態のルックアップテーブル・カスケード論理回路は、出力回路8’が、図12に示したように、2チャンネル1出力のマルチプレクサ(以下、「MUX」という。)31〜44を多段にカスケード接続し、各段において、出力を取り出せるように構成したことを特徴とする。
【0094】
出力回路8’の入力ラインy1〜y8は、論理関数メモリ2の各出力端子に接続される。この入力ラインy1〜y8から、出力変数Yk(k∈{1,…,p})の値が入力される。出力回路8’の出力ラインf(1)〜f(8)からは、入力ラインy1〜y8のうち選択されたものに出力された出力変数Ykの値(yk,1,…,yk,|Y k|)が出力される。
【0095】
入力ラインy1,y2、入力ラインy3,y4、入力ラインy5,y6、及び入力ラインy7,y8は、それぞれMUX31、MUX32、MUX33、及びMUX34の入力側に接続されている。MUX31,32、及びMUX33,34の出力は、それぞれMUX35、及びMUX36の入力側に接続されている。MUX35,36の出力は、MUX37の入力に接続されている。
【0096】
MUX31〜34は、共通の切換制御ラインF1により切換制御がされる。すなわち、F1が“0”のときはMUX31,32,33,34は、それぞれ、入力ラインy1,y3,y5,y7を選択し、F1が“1”のときはMUX31,32,33,34は、それぞれ、入力ラインy2,y4,y6,y8を選択する。
【0097】
MUX35,36は、共通の切換制御ラインF2により切換制御がされる。すなわち、F2が“0”のときはMUX35,36は、それぞれ、MUX31,33を選択し、F2が“1”のときはMUX35,36は、それぞれ、MUX32,34を選択する。
【0098】
また、MUX37は、切換制御ラインF3により切換制御がされる。すなわち、F3が“0”のときはMUX37は、MUX35を選択し、F3が“1”のときはMUX37は、それぞれ、MUX36を選択する。
【0099】
MUX31〜34によって、8本の入力ラインy1〜y8のうち4本が選択される。MUX31〜36によって、8本の入力ラインy1〜y8のうち2本が選択される。更に、MUX31〜36によって、8本の入力ラインy1〜y8のうち1本が選択される。このようにして、8本の入力ラインy1〜y8のうち、8本、4本、2本、又は1本の出力ラインを選択して、目的関数fの演算結果f(X)として出力させることが可能となる。
【0100】
尚、実際の回路においては、LSIに組み込まれた場合に出力ピンの本数を極力減らす必要があるため、出力回路8’の出力ラインの数を減らす必要がある。そこで、MUX38〜44によって、各本数の選択がされたときの出力を共通の出力ラインf(1)〜f(8)を通して出力するようにされている。MUX38〜44は、共通の切換制御ラインSelectによって切換制御がされる。
【0101】
MUX38は、Selectが“0”のとき入力ラインy1を選択し、Selectが“1”のときMUX31の出力を選択し、選択したラインの信号値を出力ラインf(1)に出力する。MUX39は、Selectが“0”のとき入力ラインy3を選択し、Selectが“1”のときMUX32の出力を選択し、選択したラインの信号値を出力ラインf(3)に出力する。MUX40は、Selectが“0”のとき入力ラインy5を選択し、Selectが“1”のときMUX33の出力を選択し、選択したラインの信号値を出力ラインf(5)に出力する。MUX41は、Selectが“0”のとき入力ラインy7を選択し、Selectが“1”のときMUX34の出力を選択し、選択したラインの信号値を出力ラインf(7)に出力する。
【0102】
MUX42は、Selectが“0”のとき入力ラインy2を選択し、Selectが“1”のときMUX35の出力を選択し、選択したラインの信号値を出力ラインf(2)に出力する。MUX43は、Selectが“0”のとき入力ラインy4を選択し、Selectが“1”のときMUX37の出力を選択し、選択したラインの信号値を出力ラインf(4)に出力する。MUX44は、Selectが“0”のとき入力ラインy6を選択し、Selectが“1”のときMUX36の出力を選択し、選択したラインの信号値を出力ラインf(6)に出力する。また、出力ラインf(8)は、入力ラインy8に直結されている。
【0103】
目的関数fの演算結果f(X)のビット数(出力の本数)が8のときは、Selectを“0”とする。これにより、出力ラインf(1)〜f(8)には、論理関数メモリ2から入力ラインy1〜y8に入力される出力変数Yp=(yp,1,…,yp, 8)の値が出力される。出力の本数が4のときは、Selectを“1”とし、F1に“0”又は“1”を設定する。これにより、出力ラインf(1),f(3),f(5),f(7)には、論理関数メモリ2から入力ラインy1〜y8のうち4本に入力される出力変数Yp=(yp,1,…,yp,4)の値が出力される。出力の本数が2のときは、Selectを“1”とし、F1、F2に“0”又は“1”を設定する。これにより、出力ラインf(2),f(6)には、論理関数メモリ2から、入力ラインy1〜y8のうち2本に入力される出力変数Yp=(yp,1,yp,2)の値が出力される。出力の本数が1のときは、Selectを“1”とし、F1,F2,F3に“0”又は“1”を設定する。これにより、出力ラインf(4)には、論理関数メモリ2から、入力ラインy1〜y8のうち1本に入力される出力変数Yp=(yp,1)の値が出力される。
【0104】
尚、切換制御ラインF1〜F3及びSelectの設定値は、あらかじめ出力選択メモリ9に記憶される。そして、演算制御部11の制御によって、各切換制御ラインF1〜F3及びSelectに設定される。
【0105】
このように、本実施形態によれば、多出力論理関数の演算を行う場合、複数の出力を取り出すことが可能となる。そのため、多出力論理関数の演算を複数の出力に関して同時に行うことが可能となる。従って、多出力論理関数の演算速度の向上を図ることができる。
【0106】
また、目的関数fの演算が最後まで終了するのを待たず、分解関数fkを任意の段まで計算した途中の演算結果を、自由に取り出すことも可能となる。
【0107】
尚、本実施形態では、出力回路8’内のマルチプレクサは2チャンネル1出力のものを使用しているが、一般に、wチャンネル1出力(w≧2)のマルチプレクサを使用することが可能である。
【0108】
(実施形態4)
図13は実施形態4に係るルックアップテーブル・カスケード論理回路の接続回路の構成を示す図である。尚、本実施形態においては、ルックアップテーブル・カスケード論理回路の全体構成は図1と同様であるため説明は省略する。
【0109】
本実施形態のルックアップテーブル・カスケード論理回路は、接続回路6”が、入力ラインを出力ラインに対して自在にシフトさせて接続するシフタ回路からなることを特徴とする。
【0110】
図13では、シフタ回路として、図2と同様のバレル・シフタ回路を使用して構成した例を示している。入力ラインi1〜i16の側から、8ビット・シフタ回路51、4ビット・シフタ回路52、2ビット・シフタ回路53、及び1ビット・シフタ回路54が、それぞれ直列に接続されている。
【0111】
入力ラインi1〜i8は、入力変数選択回路4の出力端子に接続されており、入力ラインi9〜i16は、論理関数メモリ2の出力端子に接続されている。入力ラインi8,i7,…の順に、入力変数xdk,xdk+1,…が入力される。また、入力ラインi9,i10,…の順に、前段k−1の出力変数yk,1,yk,2,…が入力される。
【0112】
各シフタ回路51〜54のシフトのオン/オフは、各シフタ回路51〜54に1本づつ設けられた接続制御ライン55〜58により制御される。そして、接続制御ライン55〜58は、接続メモリ7”の出力端子に接続されている。従って、接続メモリ7”の出力端子から出力される接続情報テーブルCk(k∈{1,…,p})の値に従って、各シフタ回路51〜54のシフト量が制御される。
【0113】
これらのシフタ回路51〜54により、出力ラインo1〜o8は、akビットだけシフトされて、入力ラインi8+ak〜i1+akに接続される。
【0114】
このように、接続回路6”にシフタ回路を利用することにより、接続の切換を制御する接続制御ラインは、
【数17】
だけあれば充分である。但し、Ninは、入力ラインの本数、Noutは出力ラインの本数である。例えば、図13の例のように、Nin=16、Nout=8の場合には、接続制御ラインは4本あれば充分である。従って、接続情報テーブルCk(k∈{1,…,p})は、接続制御ラインの本数と同じビット数で充分となり、接続メモリ7”の記憶容量を少なくすることができる。また、接続メモリ7”の出力端子数を大幅に減少させることができることから、接続回路6”及び接続メモリ7”の回路を小型化することができる。
【0115】
尚、実際には、図13のようにシフタ回路を多段に接続すると、信号振幅が減衰する。従って、図13では省略しているが、実際には、減衰が大きい場合、シフタ回路の数段ごとに増幅器(バッファ)を挿入しておくことが必要となる。
【0116】
【発明の効果】
以上のように、本発明に係るルックアップテーブル・カスケード論理回路によれば、接続回路内のスイッチ回路の切換を、接続メモリに記憶された接続情報テーブルCkにより行うことで、接続回路内のスイッチ回路の切換動作を短時間で行うことができる。そのため、目的論理関数fの演算速度を高速化することが可能となる。
【0117】
また、目的論理関数のプログラムは、論理関数メモリ、接続メモリに対して分解関数ルックアップテーブル、接続情報テーブルを書き込むだけでよいため、設計が極めて簡単となる。
【0118】
また、回路内の配線は固定されているため、設計時に配線遅延の考慮は不要である。従って、効率的な論理演算回路の設計ができる。
【0119】
更に、分解関数fkの数が決まれば、演算時間も一意的に決まることから、設計時に演算時間の予測が容易となる。
【0120】
また、入力変数選択回路によって、入力変数Xの一部を選択して接続回路の入力ラインに入力することにより、接続回路や接続メモリを小型化することができる。
【0121】
出力回路を、wチャンネル1出力(w≧2)のマルチプレクサを多段にカスケード接続し、各段において出力を取り出せるように構成することで、多出力論理関数の演算を複数の出力に関して同時に行い、多出力論理関数の演算速度の向上を図ることができる。
【図面の簡単な説明】
【図1】本発明の実施形態1に係るルックアップテーブル・カスケード論理回路のブロック図である。
【図2】入力変数選択回路の回路構成図である。
【図3】接続回路周辺の回路構成を表す図である。
【図4】接続メモリの構成を表すブロック図である。
【図5】論理関数メモリの構成を表すブロック図である。
【図6】本実施形態に係るルックアップテーブル・カスケード論理回路の動作を表すフローチャートである。
【図7】5変数多数決関数のBDDである。
【図8】分割された5変数多数決関数のBDDである。
【図9】分割された5変数多数決関数のBDDである。
【図10】5変数多数決関数のルックアップテーブル・カスケードの模式図である。
【図11】本発明の実施形態2に係るルックアップテーブル・カスケード論理回路の接続回路の構成を示す図である。
【図12】本発明の実施形態2に係るルックアップテーブル・カスケード論理回路の出力回路の構成を示す図である。
【図13】実施形態4に係るルックアップテーブル・カスケード論理回路の接続回路の構成を示す図である。
【図14】ルックアップテーブル・カスケード論理回路の原理を表す図である。
【符号の説明】
1 ルックアップテーブル・カスケード論理回路
2 論理関数メモリ
3 入力変数レジスタ
4 入力変数選択回路
5 入力選択メモリ
6,6’,6” 接続回路
7,7’,7” 接続メモリ
8,8’ 出力回路
9 出力選択メモリ
10 出力レジスタ
11 演算制御部
15,51 8ビット・シフタ回路
16,52 4ビット・シフタ回路
17,53 2ビット・シフタ回路
18,54 1ビット・シフタ回路
21,22 ページデコーダ
23 アドレスデコーダ
31〜44 マルチプレクサ
55〜58 接続制御ライン
Claims (3)
- 入力変数X=(x1,…,xn)を有する目的論理関数f(X)を関数分解して得られる分解関数{fi;i=1,…,p}を、逐次計算することにより、目的論理関数f(X)の演算を行うルックアップテーブル・カスケード論理回路であって、
複数の入力端子と複数の出力端子とを有し、前記分解関数fk(k∈{1,…,p})に対応する領域番号pkにより指定されるアドレス領域に、前記分解関数fkの関数値が分解関数ルックアップテーブルとして格納された論理関数メモリと、
複数の入力ラインと複数の出力ラインとを備え、前記入力ラインの一部には前記入力変数Xが入力され、前記入力ラインの他の一部は前記論理関数メモリの出力端子に接続され、前記出力ラインは前記論理関数メモリの入力端子に接続されており、前記各入力ラインと前記各出力ラインとの接続を切り換えるスイッチ回路を具備している接続回路と、
前記各分解関数fkに対して、前記接続回路の入力ラインに入力される入力変数X、及び論理関数メモリの出力端子から出力される分解関数fk−1の出力変数Ykの接続関係を、前記分解関数ルックアップテーブルを参照するために前記論理関数メモリの入力端子に入力する入力変数の順序に整合するように、前記接続回路内のスイッチ回路を切り換えるための情報を、接続情報テーブルとして記憶する接続メモリと、
前記論理関数メモリに対し前記領域番号pkを指定して前記分解関数ルックアップテーブルを参照可能にするとともに、前記接続メモリに記憶された接続情報テーブルに従って前記接続回路内のスイッチ回路の切換を行い、前記論理関数メモリの出力端子から前記分解関数fkの関数値を出力させる一連の制御を、演算段数kの昇順に逐次行う演算制御手段と、
を備えていることを特徴とするルックアップテーブル・カスケード論理回路。 - 前記入力変数Xの一部を選択して出力端子から出力する入力変数選択回路を備え、
前記接続回路の前記入力ラインの一部は、前記入力変数選択回路の出力端子に接続されており、
前記演算制御手段は、前記分解関数fkの演算を行う際には、前記入力変数選択回路に対し、少なくとも入力変数Xのうち、前記分解関数fk(k∈{1,…,p})の演算に使用される入力変数Xk(Xk∈X)を選択させるように制御すること
を特徴とする請求項1記載のルックアップテーブル・カスケード論理回路。 - 前記出力回路は、wチャンネル1出力(w≧2)のマルチプレクサを多段にカスケード接続し、各段において、出力を取り出せるように構成したことを特徴とする請求項1又は2記載のルックアップテーブル・カスケード論理回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003046386A JP2004258799A (ja) | 2003-02-24 | 2003-02-24 | ルックアップテーブル・カスケード論理回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003046386A JP2004258799A (ja) | 2003-02-24 | 2003-02-24 | ルックアップテーブル・カスケード論理回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004258799A true JP2004258799A (ja) | 2004-09-16 |
Family
ID=33112945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003046386A Pending JP2004258799A (ja) | 2003-02-24 | 2003-02-24 | ルックアップテーブル・カスケード論理回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004258799A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7773447B2 (en) | 2006-10-30 | 2010-08-10 | Elpida Memory, Inc. | Memory circuit, semiconductor device and read control method of memory circuit |
US8285922B2 (en) | 2006-03-31 | 2012-10-09 | Kyushu Institute Of Technology | Address generator using LUT cascade logic network |
US8352677B2 (en) | 2006-03-31 | 2013-01-08 | Kyushu Institute Of Technology | Associative memory |
US8719549B2 (en) | 2006-03-31 | 2014-05-06 | Kyushu Institute Of Technology | Device to reconfigure multi-level logic networks, method to reconfigure multi-level logic networks, device to modify logic networks, and reconfigurable multi-level logic network |
WO2023072226A1 (zh) * | 2021-11-01 | 2023-05-04 | 华为技术有限公司 | 一种多级查找表电路、函数求解方法及相关设备 |
-
2003
- 2003-02-24 JP JP2003046386A patent/JP2004258799A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285922B2 (en) | 2006-03-31 | 2012-10-09 | Kyushu Institute Of Technology | Address generator using LUT cascade logic network |
US8352677B2 (en) | 2006-03-31 | 2013-01-08 | Kyushu Institute Of Technology | Associative memory |
US8719549B2 (en) | 2006-03-31 | 2014-05-06 | Kyushu Institute Of Technology | Device to reconfigure multi-level logic networks, method to reconfigure multi-level logic networks, device to modify logic networks, and reconfigurable multi-level logic network |
US7773447B2 (en) | 2006-10-30 | 2010-08-10 | Elpida Memory, Inc. | Memory circuit, semiconductor device and read control method of memory circuit |
WO2023072226A1 (zh) * | 2021-11-01 | 2023-05-04 | 华为技术有限公司 | 一种多级查找表电路、函数求解方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11386644B2 (en) | Image preprocessing for generalized image processing | |
US5596743A (en) | Field programmable logic device with dynamic interconnections to a dynamic logic core | |
US6539477B1 (en) | System and method for control synthesis using a reachable states look-up table | |
JP4593866B2 (ja) | 乗算器をfpgaに組込むための方法および装置 | |
EP0612154B1 (en) | Programmable logic circuit | |
McKenna et al. | Implementing a fuzzy system on a field programmable gate array | |
Upegui et al. | Evolving hardware by dynamically reconfiguring Xilinx FPGAs | |
US7088134B1 (en) | Programmable logic device with flexible memory allocation and routing | |
JPH07177008A (ja) | 改良されたプログラマブル論理セルアレイアーキテクチャ | |
US20130257476A1 (en) | Integrated circuits with multi-stage logic regions | |
US6157212A (en) | Programmable logic device with expandable-width memory regions | |
US10715144B2 (en) | Logic circuits with augmented arithmetic densities | |
US4159520A (en) | Memory address control device with extender bus | |
JPH04127275A (ja) | Lsi論理回路自動合成における組合せ回路のテクノロジーマッピング方式 | |
Wang et al. | A novel design for memristor-based multiplexer via NOT-material implication | |
US20190213289A1 (en) | Method and apparatus for implementing an application aware system on a programmable logic device | |
JP2004258799A (ja) | ルックアップテーブル・カスケード論理回路 | |
TWI511038B (zh) | 可重組之排序裝置與排序方法 | |
EP0121763B1 (en) | Associative array processor | |
JPWO2004088500A1 (ja) | プログラマブル論理デバイス | |
US7768301B2 (en) | Reconfigurable integrated circuits with scalable architecture including a plurality of special function elements | |
US5055712A (en) | Register file with programmable control, decode and/or data manipulation | |
JP4208751B2 (ja) | データフローグラフ処理装置。 | |
JP4330472B2 (ja) | 処理装置 | |
JP2001051826A (ja) | 情報処理システム、プログラマブル論理回路の回路情報形成方法、プログラマブル論理回路の再構成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060111 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070608 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070806 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070831 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20071227 |