(57)【要約】【課題】全体を小型化するのに適した構成を有するプログラマブルロジックデバイス及びそのコンフィギュレーション方法を提供する。【解決手段】ＰＬＤ１が有する２次元に配列されてなる複数のＬＥ２について、コンフィグデータをメモリ１１に入力するパスと、演算データを入力するパスとを共通化し、論理演算結果データが配列の行方向に並ぶ次段のＬＥ２に入力されるように構成する。ＬＥ２は、演算データが入力される方向に沿って論理演算結果データを出力し、イネーブル制御回路８は、ＬＥ２にコンフィグデータが入力された際に、メモリにコンフィグデータを書き込むためのイネーブル信号を前記配列の行方向に並ぶＬＥ２毎に一括して出力する。【選択図】図１
2016015710.tif 000002
【特許請求の範囲】
【請求項１】
外部より入力されるコンフィギュレーションデータに応じて論理演算機能が再定義可能である複数の論理ブロックが２次元に配列されてなるプログラマブルロジックデバイスであって、
前記論理ブロック（２，３１，５１）は、前記コンフィギュレーションデータが記憶されるメモリ（１１）を備え、前記コンフィギュレーションデータを前記メモリに入力するパスと、論理演算の対象となる演算データを入力するパスとが共通化されており、且つ論理演算結果データが次段の論理ブロックに入力されるように構成され（但し、最終段の論理ブロックを除く）、且つ前記演算データが入力される方向に沿って前記論理演算結果データが出力されるもので、
前記演算データが入力される方向を列方向，この列方向に直交する方向を行方向とすると、
前記論理ブロックに対して前記コンフィギュレーションデータが入力された際に、前記メモリに前記コンフィギュレーションデータを書き込むためのイネーブル信号を、前記行方向に並ぶ論理ブロック毎に一括して出力するイネーブル制御回路（８，２３）を備えることを特徴とするプログラマブルロジックデバイス。
【請求項２】
前記論理ブロック（２）は、複数の入力端子及び複数の出力端子を備え、
前記複数の出力端子は、次段の複数の論理ブロックの入力端子にそれぞれ直接接続されていることを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項３】
前記コンフィギュレーションデータが記憶されるメモリ（４３）を有し、外部より入力されるコンフィギュレーションデータに応じて、入力されたデータの出力方向を２次元方向（但し、データが入力された方向と同じ方向を除く）に選択可能である少なくとも１つのパス選択ブロック（４２）を、前記列方向に並ぶ論理ブロックの各段の間に備え、
前記イネーブル制御回路は、前記パス選択ブロックに対して前記コンフィギュレーションデータが入力された際にも、前記メモリに前記コンフィギュレーションデータを書き込むためのイネーブル信号を、前記行方向に並ぶパス選択ブロック毎に一括して出力することを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項４】
前記イネーブル制御回路は、前記コンフィギュレーションデータが前記論理ブロックに入力されると、前記イネーブル信号を、前記列方向に沿って順次出力し、最終段の１つ手前の論理ブロックまで出力すると、次は、前記方向とは逆方向に前記イネーブル信号を出力することを特徴とする請求項１から３の何れか一項に記載のプログラマブルロジックデバイス。
【請求項５】
前記論理ブロック（５１）は、前記コンフィギュレーションデータが記憶されるメモリを偶数個備え、前記メモリの半数には前記コンフィギュレーションデータの反転値が入力されるように構成され、
前記イネーブル制御回路は、前記コンフィギュレーションデータが前記論理ブロックに入力されると、前記イネーブル信号を全ての論理ブロックに一括して出力し、次は、最終段の論理ブロックから初段の論理ブロック方向に、前記イネーブル信号を出力することを特徴とする請求項１から３の何れか一項に記載のプログラマブルロジックデバイス。
【請求項６】
入力される前記コンフィギュレーションデータと前記演算データとの何れか一方を初段の論理ブロックに出力する演算・コンフィギュレーションデータインターフェイス（７）と、
前記コンフィギュレーションデータが入力されると、当該データを前記演算・コンフィギュレーションデータインターフェイスを介して前記初段の論理ブロックに出力すると共に、前記イネーブル制御回路を起動するコンフィギュレーション制御回路（６）とを備えることを特徴とする請求項４又は５記載のプログラマブルロジックデバイス。
【請求項７】
請求項１から４又は請求項４を引用する請求項６の何れか一項に記載のプログラマブルロジックデバイスにコンフィギュレーションデータを入力して、所望の論理演算機能に定義するための方法であって、
最初に、前記行方向に並ぶ初段の論理ブロックについて、入力される演算データがそのまま次段の論理ブロックに出力されるように論理演算機能を定義し、
次に、前記次段の論理ブロックについて、前記初段の論理ブロックと同様に論理演算機能を定義し、同様の定義を前記列方向に沿って最終段の１つ手前の論理ブロックまで行うと、
次に、最終段の論理ブロックを、所望の論理演算機能に定義し、
次に、最終段の１つ手前の論理ブロックを、所望の論理演算機能に定義し、
以降、前記方向と逆方向に遡行しながら、各段の論理ブロックを初段まで順次所望の論理演算機能に定義することを特徴とするプログラマブルロジックデバイスのコンフィギュレーション方法。
【請求項８】
最初に、前記初段の論理ブロックについて入力される演算データがそのまま次段に出力されるように論理演算機能を定義すると、
次に、その次段のパス選択ブロックについて、入力される演算データがそのまま次段の論理ブロックに出力されるようにデータの出力方向を定義し、
次に、前記次段の論理ブロックについて、前記初段の論理ブロックと同様に論理演算機能を定義すると、その次段のパス選択ブロックについて、入力される演算データがそのまま次段の論理ブロックに出力されるようにデータの出力方向を定義し、
同様の定義を前記列方向に沿って最終段の１つ手前のパス選択ブロックまで行うと、
次に、最終段の論理ブロックを、所望の論理演算機能に定義し、
次に、最終段の１つ手前の論理ブロックを、所望の論理演算機能に定義し、
以降、前記方向と逆方向に遡行しながら、各段の論理ブロック又はパス選択ブロックを初段まで順次所望の論理演算機能に定義することを特徴とする請求項３記載のプログラマブルロジックデバイスを引用する請求項７記載のプログラマブルロジックデバイスのコンフィギュレーション方法。
【請求項９】
請求項５又は請求項５を引用する請求項６の何れか一項に記載のプログラマブルロジックデバイスにコンフィギュレーションデータを入力して、所望の論理演算機能に定義するための方法であって、
最初に、前記行方向に並ぶ初段の論理ブロックから最終段の論理ブロックについて、入力される演算データがそのまま次段の論理ブロックに出力されるように論理演算機能を一括して定義し、
次に、最終段の論理ブロックを、所望の論理演算機能に定義し、
次に、最終段の１つ手前の論理ブロックを、所望の論理演算機能に定義し、
以降、前記列方向と逆方向に遡行しながら、各段の論理ブロックを初段まで順次所望の論理演算機能に定義することを特徴とするプログラマブルロジックデバイスのコンフィギュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部より入力されるコンフィギュレーションデータに応じて論理演算機能が再定義可能である複数の論理ブロックが２次元に配列されてなるプログラマブルロジックデバイス，及び当該デバイスのコンフィギュレーション方法に関する。
【背景技術】
【０００２】
ＡＳＩＣ（Application Specific Integrated Circuit）は製造時に回路機能が固定されてしまうのに対し、例えばＦＰＧＡ（Field Programmable Gate Array）やＣＰＬＤ（Complex Programmable Logic Device）等のプログラマブルロジックデバイスは、製造後に回路機能をプログラムすることが可能なデバイスであり、これらも広く用いられている。プログラマブルロジックデバイスは、様々な論理演算を定義可能な複数の論理ブロックを備えている。そして、デバイス全体のロジック（論理演算）機能を定義するため、電源投入時にコンフィグレーションデータ（コンフィギュレーションデータ）を、デバイス内部の例えばＬＵＴ（Look Up Table）に配置されている設定メモリに書き込む必要がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−９９３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
そのため、各論理ブロックには、論理演算の対象となるデータを入力するパスとは別に、コンフィギュレーションデータを入力するパスが必要となり、デバイスの小型化を妨げる要因となっていた。
本発明は上記事情に鑑みてなされたものであり、その目的は、全体を小型化するのに適した構成を有するプログラマブルロジックデバイス及びプログラマブルロジックデバイスのコンフィギュレーション方法を提供することにある。
【課題を解決するための手段】
【０００５】
請求項１記載のプログラマブルロジックデバイスによれば、２次元に配列されてなる複数の論理ブロックは、コンフィギュレーションデータをメモリに入力するパスと、論理演算の対象となる演算データを入力するパスとが共通化されていると共に、論理演算結果データが次段の論理ブロックに入力されるように構成されている。また、論理ブロックは、演算データが入力される列方向に沿って論理演算結果データを出力する。そして、イネーブル制御回路は、論理ブロックにコンフィギュレーションデータが入力された際に、メモリにコンフィギュレーションデータを書き込むためのイネーブル信号を、行方向に並ぶ論理ブロック毎に一括して出力する。
【０００６】
すなわち、論理ブロックにコンフィギュレーションデータを入力するパスと演算データを入力するパスとが共通化されるので、コンフィギュレーションデータを入力するための回路を小型に構成することができ、プログラマブルロジックデバイスの全体を小型に構成できる。また、双方のパスを共通化しても、論理ブロックにコンフィギュレーションデータが入力された際に、イネーブル制御回路がイネーブル信号を出力することで、コンフィギュレーションデータをメモリに書き込むことができる。したがって、各論理ブロックを順次コンフィギュレーションすることができる。
【０００７】
請求項２記載のプログラマブルロジックデバイスによれば、各論理ブロックが備える複数の出力端子は、次段の複数の論理ブロックの入力端子にそれぞれ直接接続される。したがって、論理ブロックの間にデータの出力方向を切換えるための構成が無くても、複数の論理ブロックを順次経由させて、異なる段に属する所望の論理ブロックにデータを送出することができる。
【０００８】
請求項５記載のプログラマブルロジックデバイスによれば、論理ブロックは、コンフィギュレーションデータが記憶されるメモリを偶数個備え、それらの半数にはコンフィギュレーションデータの反転値が入力される。そして、イネーブル制御回路は、コンフィギュレーションデータが論理ブロックに入力されると、イネーブル信号を全ての論理ブロックに一括して出力し、次は、最終段の論理ブロックから初段の論理ブロック方向にイネーブル信号を出力する。
【０００９】
例えば、論理ブロックがｎビット（ｎは自然数）のデータを入出力する構成であれば、（２ｎ×ｎ）個のメモリを備える。そして、最初に入力するコンフィギュレーションデータをオール「０」又はオール「１」にして、（入力データ）＝（出力データ）となるようなメモリ設定値が前記データと異なる極性であるメモリに対し、前記データの反転値を入力し、イネーブル制御回路がイネーブル信号を全ての論理ブロックに一括して出力すれば、２ｎ個のメモリのｎ列の組み合わせで表現されるｎビットのデータが、（入力データ）＝（出力データ）となるように各論理ブロックをコンフィギュレーションできる。
【００１０】
請求項７記載のプログラマブルロジックデバイスのコンフィギュレーション方法によれば、最初に、行方向に並ぶ初段の論理ブロックについて、入力される演算データがそのまま次段の論理ブロックに出力されるように論理演算機能を定義する。次に、前記次段の論理ブロックについて、前記初段の論理ブロックと同様に論理演算機能を定義し、同様の定義を列方向に沿って最終段の１つ手前の論理ブロックまで行う。これにより、初段の論理ブロックに入力したコンフィギュレーションデータを、途中の論理ブロックを順次経由させて最終段の論理ブロックまで到達させることができる。
【００１１】
それから、最終段の論理ブロックを、所望の論理演算機能に定義し、次に、最終段の１つ手前の論理ブロックを所望の論理演算機能に定義し、以降、前記方向と逆方向に遡行しながら、各段の論理ブロックを初段まで順次所望の論理演算機能に定義すれば、全ての論理ブロックを所望の論理演算機能に定義できる。
【００１２】
請求項８記載のプログラマブルロジックデバイスのコンフィギュレーション方法によれば、請求項３記載のプログラマブルロジックデバイスのように、各段の論理ブロックの間にパス選択ブロックが介在するものについても、パス選択ブロックのデータ出力方向を、請求項７の論理ブロックと同様に定義することで、入力したコンフィギュレーションデータを最終段の論理ブロックまで到達させることができ、請求項７と同様にコンフィギュレーションを行うことができる。
【００１３】
請求項９記載のプログラマブルロジックデバイスのコンフィギュレーション方法によれば、請求項５記載のプログラマブルロジックデバイスのように、偶数個のメモリの半数にコンフィギュレーションデータの反転値が入力される構成において、入力される演算データがそのまま次段の論理ブロックに出力されるように、全ての論理ブロックの論理演算機能を一括して定義できる。したがって、コンフィギュレーションをより迅速に行うことができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態であり、プログラマブルロジックデバイスの構成を概略的に示す機能ブロック図
【図２】ロジックエレメントの内部構成を示す図
【図３】（ａ）はルックアップテーブルの構成、（ｂ）はセレクタの真理値表、（ｃ）はコンフィギュレーションの一例を示す図
【図４】コンフィギュレーションの手順を示す図（その１）
【図５】コンフィギュレーションの手順を示す図（その２）
【図６】コンフィギュレーションの手順を示す図（その３）
【図７】コンフィギュレーションの手順を示す図（その４）
【図８】演算・コンフィグデータインターフェイス及び書き込みイネーブル制御回路の内部構成を示す図
【図９】ロジックエレメントの２次元配列を示す図
【図１０】プログラマブルロジックデバイスが、複数のロジックエレメント集合体を備えている状態を示す図
【図１１】書き込みイネーブル制御回路の動作を示すタイミングチャート（その１）
【図１２】書き込みイネーブル制御回路の動作を示すタイミングチャート（その２）
【図１３】コンフィギュレーションの手順を示すフローチャート
【図１４】論理演算機能（Ｘ＝Ａ，Ｙ＝Ｂ）を設定するためのＬＵＴのデータを示す図
【図１５】コンフィギュレーションの手順を示す図（その１）
【図１６】コンフィギュレーションの手順を示す図（その２）
【図１７】コンフィギュレーションの手順を示す図（その３）
【図１８】コンフィギュレーションの手順を示す図（その４）
【図１９】コンフィギュレーションの手順を示す図（その５）
【図２０】コンフィギュレーションの手順を示す図（その６）
【図２１】コンフィギュレーションの手順を示す図（その７）
【図２２】第２実施形態であり、プログラマブルロジックデバイスの構成を概略的に示す機能ブロック図
【図２３】演算・コンフィグデータインターフェイス及び書き込みイネーブル制御回路の内部構成を示す図
【図２４】転送指示部の動作を示すフローチャート
【図２５】第３実施形態であり、ロジックエレメントの内部構成を示す図
【図２６】第４実施形態であり、ロジックエレメントと共にスイッチボックスを備えるプログラマブルロジックデバイスの構成を概略的に示す図
【図２７】スイッチボックスの内部構成を示す図
【図２８】スイッチボックスのコンフィギュレーションの手順を示す図（その１）
【図２９】スイッチボックスのコンフィギュレーションの手順を示す図（その２）
【図３０】スイッチボックスのコンフィギュレーションの手順を示す図（その３）
【図３１】スイッチボックスのコンフィギュレーションの手順を示す図（その４）
【図３２】スイッチボックスのコンフィギュレーションの手順を示す図（その５）
【図３３】第５実施形態であり、ロジックエレメントの内部構成を示す図
【図３４】ロジックエレメントのコンフィギュレーションを示す図
【図３５】ＰＬＤ全体のコンフィギュレーションの手順を示すフローチャート
【発明を実施するための形態】
【００１５】
（第１実施形態）
図１に示すように、本実施形態のプログラマブルロジックデバイス（以下、ＰＬＤと称す）１は、複数のロジックエレメント（以下、ＬＥと称す；論理ブロック）２が２次元に配列されて構成されている。各ＬＥ２の論理演算を定義するためのコンフィグレーションデータ（以下、コンフィグデータと称す）は、ＰＬＤ１とシステムバス３を介して接続されているメモリ４に予め配置されている。コンフィグデータは、例えばＣＰＵやＤＭＡ（Direct Memory Access）コントローラ等からなる転送指示部５によってメモリ４から読み出され、ＰＬＤ１に転送される。
【００１６】
コンフィグデータは、ＰＬＤ１の内部において、コンフィグ制御回路６及び演算・コンフィグデータインターフェイス（Ｉ／Ｆ）７を介して配列の図中左右方向（行方向）に並ぶ初段のＬＥ２に入力される。また、各ＬＥ２について論理演算機能を定義した後に、その論理演算の対象となるデータ（演算データ）は、例えばＣＰＵ等により出力され、システムバス３及び演算・コンフィグデータＩ／Ｆ７を介して上記初段のＬＥ２に入力される。尚、ＬＥ２に対してコンフィグデータ又は演算データが入力される方向を列方向とし、この列方向に直交する方向を行方向とする。
【００１７】
書き込みイネーブル制御回路８は、ＰＬＤ１にコンフィグデータが入力される期間に、各ＬＥ２に内蔵されるＬＵＴ９（図２，図３参照）にコンフィグデータを書き込んで記憶させるための書き込みイネーブル信号（ＷＥ）を出力するもので、コンフィグ制御回路６により制御される。書き込みイネーブル信号は、配列の行方向に並ぶ各段のＬＥ２について共通に出力される。上記初段のＬＥ２の出力端子は、行方向に並ぶ次段のＬＥ２の入力端子に接続されており、上記次段のＬＥ２の出力端子は、図１では図示しない更に次段のＬＥ２の入力端子に接続されている。
【００１８】
図２に示すように、ＬＥ２は、例えば２入力（Ａ，Ｂ）／２出力（Ｘ，Ｙ）構成であり、入力Ａ側のＬＵＴ９Ａと、入力Ｂ側のＬＵＴ９Ｂとを備えている。ＬＵＴ９は、４つの１ビットメモリ１１（１）〜１１（４）と、４入力セレクタ１２とで構成されている。入力端子Ａは、Ａ側の１ビットメモリ１１（１）〜１１（４）の各データ入力端子と、Ａ，Ｂ双方のセレクタ１２の制御端子とに接続されている。また、入力端子Ｂは、Ｂ側の１ビットメモリ１１（１）〜１１（４）の各データ入力端子と、Ａ，Ｂ双方のセレクタ１２のもう１つの制御端子とに接続されている。１ビットメモリ１１（１）〜１１（４）の各出力端子は、セレクタ１２の入力端子にそれぞれ接続されている。
【００１９】
尚、図示の都合上、Ａ側，Ｂ側の１ビットメモリ１１の書き込みイネーブル信号（ラッチ信号）の入力端子を分けて示しているが、前述したように、同じ行方向に並ぶものには共通のイネーブル信号が入力される。
【００２０】
図３に示すように、ＬＵＴ９（Ａ側を例示している）のセレクタ１２は、入力端子Ａ，Ｂに与えられる２ビットのデータ値に応じて、１ビットメモリ１１（１）〜１１（４）が出力するデータの何れか１つを選択して出力端子（Ｘ）に出力する。例えば図３（ｂ）に示す真理値表のように、
入力（Ａ，Ｂ）＝（０，０）  →  メモリ１１（１）
入力（Ａ，Ｂ）＝（１，０）  →  メモリ１１（２）
入力（Ａ，Ｂ）＝（０，１）  →  メモリ１１（３）
入力（Ａ，Ｂ）＝（１，１）  →  メモリ１１（４）
のように選択される。
【００２１】
したがって、図３（ｃ）の例示のように、１ビットメモリ１１（１）〜１１（４）に予め格納されたコンフィグデータが、
メモリ１１（１，２，３，４）＝（０，０，０，１）
であれば、入力（Ａ，Ｂ）に対する出力Ｘの論理は、
Ｘ＝Ａ（ＡＮＤ）Ｂ
となる。
【００２２】
図４〜図７に示すように、ＬＥ２の論理演算機能を定義する（コンフィギュレーション）際には、例えば入力（Ａ，Ｂ）＝（１，１）を与えた際に、書き込みイネーブル制御回路８がメモリ１１（１）に書き込みイネーブル信号を出力することで（図中ではデータ値「１」で書き込みイネーブル信号のアクティブを示す）、メモリ１１（１Ａ，１Ｂ）＝（１，１）が書き込まれる（図４参照）。次に、入力（Ａ，Ｂ）＝（０，１）を与えた際に、書き込みイネーブル制御回路８がメモリ１１（２）に書き込みイネーブル信号を出力することで、メモリ１１（２Ａ，２Ｂ）＝（０，１）が書き込まれる（図５参照）。
【００２３】
以下、同様にして、入力（Ａ，Ｂ）＝（１，０）を与えた際に、メモリ１１（３）に書き込みイネーブル信号を出力すればメモリ１１（３Ａ，３Ｂ）＝（１，０）が書き込まれ（図６参照）、入力（Ａ，Ｂ）＝（０，０）を与えた際に、メモリ１１（４）に書き込みイネーブル信号を出力すればメモリ１１（４Ａ，４Ｂ）＝（０，０）が書き込まれる（図７参照）。以上でコンフィギュレーションが終了し、これによりＬＥ２に設定された論理演算機能は、
Ｘ＝（ＮＯＴ）Ａ，Ｙ＝（ＮＯＴ）Ｂ
となる。
【００２４】
図８に示すように、演算・コンフィグデータＩ／Ｆ７は、初段のＬＥ２の１つにつき２個のＤフリップフロップ１３を備えている。これらのＤフリップフロップ１３には、システムバス３より入力されたコンフィグデータが、コンフィグ制御回路６（出力端子Ｄ０）及びバスＩ／Ｆ１４を介してそれぞれ１ビットデータとして入力される。尚、コンフィグ制御回路６は、コンフィグ信号CONFGが、外部よりイネーブルにされている期間だけ有効となり、その期間に入力されたデータをコンフィグデータとしてバスＩ／Ｆ１４に出力する。
【００２５】
また、各ＬＥ２の論理演算機能を定義した後に入力される演算データは、システムバス３よりバスＩ／Ｆ１４を介してＤフリップフロップ１３に入力される。各Ｄフリップフロップ１３のリセットも、バスＩ／Ｆ１４によって行われる。そして、コンフィグ制御回路６及び各Ｄフリップフロップ１３には、共通のクロック信号ＣＬＫが入力されている。バスＩ／Ｆ１４のコンフィグデータＤ０と演算データＳＹＳとの切り換えは、コンフィグ制御回路６が出力する制御信号Ｍによって行われ、制御信号ＭがハイレベルであればコンフィグデータＤ０が選択されて出力され、ローレベルであれば演算データＳＹＳが選択されて出力される。
【００２６】
書き込みイネーブル制御回路８は、Ｄフリップフロップ１５と、出力端子がＤフリップフロップ１５の入力端子Ｄに接続されているセレクタ１６との組を、図中の列方向に複数直列接続して構成されている。初段のセレクタ１６の入力端子の一方は、コンフィグ制御回路６の出力端子Ｗに接続されており、入力端子の他方は、次段のＤフリップフロップ１５の出力端子Ｑに接続されている。全てのセレクタ１６の入力選択端子は、コンフィグ制御回路６の出力端子ＷＳに共通に接続されている。
尚、２段目のセレクタ１６の入力端子の他方は、３段目のＤフリップフロップ１５の出力端子Ｑに接続されており、以降同様にして、セレクタ１６の入力端子の他方は、その次段のＤフリップフロップ１５の出力端子Ｑに接続されている。
【００２７】
全てのＤフリップフロップ１５のクロック端子には、前記クロック信号ＣＬＫが共通に入力されており、リセット端子Ｒは、コンフィグ制御回路６の出力端子ＷＲに共通に接続されている。また、Ｄフリップフロップ１５はイネーブル端子Ｅを備えており、そのイネーブル端子Ｅは、コンフィグ制御回路６の出力端子ＷＥに共通に接続されている。
そして、初段から４段目までのＤフリップフロップ１５の出力端子Ｑは、図中行方向に沿って並ぶ１群のＬＥ２（初段）に、メモリ１１（１）〜１１（４）に対応した４ビット分の書き込みイネーブル信号を出力する。また、図示しないが、５段目から８段目のＤフリップフロップ１５の出力端子Ｑは、次段のＬＥ２に４ビット分の書き込みイネーブル信号を出力する。
【００２８】
図９に示すように、実際のＬＥ２の２次元配列は、初段のＬＥ２の出力端子Ｘ，Ｙが、次段のＬＥ２の入力端子Ｂ，Ａにそれぞれ接続される形態である。つまり、上段のＬＥ２が出力するデータは、その下段の２つのＬＥ２に入力されるようになっている。また、最下段のＬＥ２が出力するデータは、データバスＩ／Ｆ１７を介してシステムバス３に出力される。
【００２９】
また、図１０に示すように、ＰＬＤ１は、演算・コンフィグデータＩ／Ｆ７，複数のＬＥ２の２次元配列の纏まりである集合体２Ｇ及び書き込みイネーブル制御回路８の組を複数備えており、コンフィグ制御回路６は、他の組の集合体２Ｇ（２，３）に対してもコンフィグデータＤ１，Ｄ２を出力し、各種の制御信号を演算・コンフィグデータＩ／Ｆ７（２，３）及び書き込みイネーブル制御回路８（２，３）にも出力する。
【００３０】
次に、本実施形態の作用について説明する。ＰＬＤ１の全てのＬＥ２は、初期状態では未定義である（図１５参照）。図中では未定義のＬＥ２をブランクで示している。転送指示部５がメモリ４よりコンフィグデータを読み出しＰＬＤ１への転送を開始すると、図１１に示すように、コンフィグ制御回路６が起動されてコンフィギュレーションが開始される。すると、コンフィグ制御回路６は、信号Ｗ及びＷＥを、クロック信号ＣＬＫの立ち上がりエッジをカバーするように１クロック周期程度ハイレベルにして（時点（１））、書き込みイネーブル制御回路８における初段のＤフリップフロップ１５の出力端子Ｑをハイレベルにする。これにより、初段のＬＥ２におけるメモリ１１（１）への書き込みがイネーブルとなる。そして、信号ＭをハイレベルにしてバスＩ／Ｆ１４にコンフィグデータＤ０を選択させるようにして（時点（２））データＤ０を出力する（時点（３））。すると、次のクロック信号ＣＬＫの立ち上がりで初段のＬＥ２にデータＤ０が出力されて（時点（４））、メモリ１１（１）に書き込まれる（図１３；Ｓ１）。
【００３１】
次に、時点（５）で信号ＷＥをハイレベルにすると、次のクロック信号ＣＬＫの立ち上がりで（時点（６））初段のＤフリップフロップ１５の出力端子Ｑはローレベルになると共に、次段のＤフリップフロップ１５の出力端子Ｑがハイレベルになる。それから、メモリ１１（２）用のコンフィグデータＤ０を出力すると（時点（７））、次のクロック信号ＣＬＫの立ち上がりでＬＥ２にデータＤ０が出力されて（時点（８））、メモリ１１（２）に書き込まれる。
【００３２】
以降同様にして信号ＷＥをハイレベルにすることで、初段のＬＥ２におけるメモリ１１（３），１１（４）が書き込みイネーブルとなり、図４〜図７に示したように初段のＬＥ２のコンフィギュレーションが完了する（図１３；Ｓ１，図１６）。尚、この段階でコンフィギュレーションする論理演算機能は、図１４に示すように（Ｘ＝Ａ，Ｙ＝Ｂ）であり、入力Ａ，Ｂに与えられたデータがそのまま出力Ｘ，Ｙより出力される論理とする。この論理をステップＳ１では「配線機能」と示しており、この「配線機能」を実現するためのコンフィギュレーションデータが、図１１に示している「配線情報」である。「配線機能」を実現するため、ＬＵＴ９Ａ側はメモリ１１（１）〜１１（４）にそれぞれデータ（０，１，０，１）を設定し、ＬＵＴ９Ｂ側はそれぞれデータ（０，０，１，１）を設定する。図中では、上記のようにコンフィギュレーションされたＬＥ２に縦線を入れて示している。
【００３３】
同様にして、次段以降のＬＥ２についてもコンフィギュレーションを行い（Ｓ２，図１７）、最下段のＬＥ２まで全て（Ｘ＝Ａ，Ｙ＝Ｂ）にコンフィギュレーションする（Ｓ３：ＹＥＳ，図１８）。尚、ここでは図示の都合上、最下段のＬＥ２までとしたが、実際は、最下段の１つ上段のＬＥ２までコンフィギュレーションすれば良い。
【００３４】
以上までのコンフィギュレーションによって、ＰＬＤ１の初段に入力されたデータは、最下段のＬＥ２の入力端子Ａ，Ｂまで到達するようになる。そこで次に、最下段のＬＥ２に、所望の論理演算機能をコンフィギュレーションする（Ｓ４，図１９）。図中では、所望の論理演算機能にコンフィギュレーションされたＬＥ２に横線を加えて示している。このコンフィギュレーションが、図１２に示す時点（３）で出力されたデータＤ０に対応する。
【００３５】
図１２に時点（５）で、コンフィグ制御回路６が信号ＷＳをハイレベルにすると、書き込みイネーブル制御回路８のセレクタ１６が、１段下のＤフリップフロップ１５の出力データを選択する。これにより、ＬＥ２のコンフィギュレーションを行う方向が反転し、下段から上段方向に遡行するようになる。そして、最下段の１つ上段のＬＥ２に所望の論理演算機能をコンフィギュレーションし（Ｓ５，図１２の時点（６）〜（９），図２０）、それを最上段のＬＥ２に到達するまで繰り返し実行する（Ｓ６，図２１）。以上の処理により、ＰＬＤ１の全てのＬＥ２を、所望の論理演算機能に定義できる。
【００３６】
以降、コンフィグ制御回路６は機能を停止して信号Ｍはローレベルとなり、演算・コンフィグデータＩ／Ｆ７はシステムバス３より直接入力される演算データを選択する。したがって、例えばＣＰＵが、システムバス３を介してＰＬＤ１に演算データを入力すれば、定義された論理演算機能に応じて処理されたデータが、データバスＩ／Ｆ１７を介してシステムバス３に出力される。
【００３７】
以上のように本実施形態によれば、ＰＬＤ１は、２次元に配列されてなる複数のＬＥ２について、コンフィグデータをメモリ１１に入力するパスと、演算データを入力するパスとを共通化し、論理演算結果データが配列の行方向に並ぶ次段の（次の行の）ＬＥ２に入力されるように構成する。また、ＬＥ２は、演算データが入力される列方向に沿って論理演算結果データを出力し、イネーブル制御回路８は、ＬＥ２にコンフィグデータが入力された際に、メモリ１１にコンフィグデータを書き込むためのイネーブル信号を、前記配列の行方向に並ぶＬＥ２毎に一括して出力するようにした。
【００３８】
すなわち、ＬＥ２にコンフィグデータを入力するパスと演算データを入力するパスとを共通化したことでコンフィギュレーションデータを入力するための回路を小型に構成でき、したがってＰＬＤ１の全体を小型に構成できる。また、双方のパスを共通化しても、ＬＥ２にコンフィグデータが入力された際にイネーブル制御回路８がイネーブル信号を出力することで、コンフィグデータをメモリ１１に書き込むことができる。したがって、各ＬＥ２を順次コンフィギュレーションできる。
【００３９】
また、ＰＬＤ１は、各ＬＥ２が備える複数の出力端子が、次段の複数のＬＥ２の入力端子にそれぞれ直接接続される構成であるから、ＬＥ２の間にデータの出力方向を切換えるための構成が無くても、複数のＬＥ２を順次経由させて異なる段に属する所望のＬＥ２にデータを送出することができる。
【００４０】
そして、ＰＬＤ１をコンフィギュレーションする際に、最初に、初段のＬＥ２について、入力される演算データがそのまま次段のＬＥ２に出力されるように論理演算機能を定義し、次に、次段のＬＥ２について初段のＬＥ２と同様に論理演算機能を定義し、同様の定義を最終段の１つ手前のＬＥ２まで行う。これにより、初段のＬＥ２に入力したコンフィグデータを、途中のＬＥ２を順次経由させて最終段のＬＥ２まで到達させることができる。それから、最終段のＬＥ２を所望の論理演算機能に定義し、次に、最終段の１つ手前のＬＥ２を所望の論理演算機能に定義し、以降、逆方向（上段方向）に遡行しながら各段のＬＥ２を初段まで順次所望の論理演算機能に定義すれば、全てのＬＥ２を所望の論理演算機能に定義できる。
【００４１】
（第２実施形態）
以下、第１実施形態と同一部分には同一符号を付して説明を省略し、異なる部分について説明する。図２２に示すように、第２実施形態のＰＬＤ２１は、コンフィグ制御回路８が削除されており、演算・コンフィグデータＩ／Ｆ７、書き込みイネーブル制御回路８に替わる演算・コンフィグデータＩ／Ｆ２２、書き込みイネーブル制御回路２３を備えている。そして、これらの制御は、転送指示部５に替わる転送指示部２４によって行われる。
【００４２】
図２３に示すように、演算・コンフィグデータＩ／Ｆ２２はバスＩ／Ｆ２５を備えており、システムバス３よりＰＬＤ２１に入力されるデータは、全てバスＩ／Ｆ２５からＤフリップフロップ１３を介して初段のＬＥ２に入力される。書き込みイネーブル制御回路２３は、バスＩ／Ｆ２６と複数のＤフリップフロップ２７とで構成されている。Ｄフリップフロップ２７はＤフリップフロップ１５に替わるもので、各段のＬＥ２について４個配置されている。
【００４３】
バスＩ／Ｆ２６は、システムバス３に接続されており、１つのＬＥ２に対応する４つのＤフリップフロップ２７（１）〜２７（４）の入力端子Ｄに、それぞれ出力端子Ｗ０＿０〜Ｗ０＿３を介してデータを出力する。図示しないが、バスＩ／Ｆ２６は、出力端子Ｗ０＿０〜Ｗ０＿３から出力されるデータ値を設定するための複数のレジスタ（ＨＷレジスタ）を内蔵している。転送指示部２４は、そのＨＷレジスタに書き込みを行うことでＬＥ２のＬＵＴ９を構成するメモリ１１の書き込みを制御する。
【００４４】
次に、第２実施形態の作用について説明する。図２４に示すように、転送指示部２４は、初段のＬＥ２について論理演算機能（Ｘ＝Ａ，Ｙ＝Ｂ）を定義するためのコンフィグデータを演算・コンフィグデータＩ／Ｆ２２に入力すると（Ｓ１１）、書き込みイネーブル制御回路２３の対応するＨＷレジスタに「１」を書き込む（Ｓ１２）。すると、バスＩ／Ｆ２６の出力端子Ｗ０＿０がハイレベルとなり、ＬＥ２のメモリ１１（１）に演算・コンフィグデータＩ／Ｆ２２より入力されたデータが書き込まれる。
【００４５】
その後、転送指示部２４は一定時間待機（Ｗａｉｔ）を行った後（Ｓ１３）、対応するＨＷレジスタに「０」を書き込む（Ｓ１４）。以上の処理を、各段のＬＥ２について４回ずつ行い、最下段（の１つ上段）のＬＥ２まで繰り返し実行すると（Ｓ１５：ＹＥＳ）ステップＳ１６に移行する。
【００４６】
続くステップＳ１６では、最下段のＬＥ２に設定する論理演算機能に対応するコンフィグデータを演算・コンフィグデータＩ／Ｆ２２に入力し、書き込みイネーブル制御回路２３の対応するＨＷレジスタに「１」を書き込む（Ｓ１７）。すると、最下段のＬＥ２のメモリ１１（１）に演算・コンフィグデータＩ／Ｆ２２より入力されたデータが書き込まれる。
【００４７】
その後、転送指示部２４は一定時間待機を行った後（Ｓ１８）、対応するＨＷレジスタに「０」を書き込む（Ｓ１９）。以上の処理を、同様に各段のＬＥ２について４回ずつ行い、今度は、上段方向に遡行しながら各段のＬＥ２を所望の論理演算機能にコンフィギュレーションし、最上段のＬＥ２まで繰り返し実行すると（Ｓ２０：ＹＥＳ）処理を終了する。
【００４８】
以上のように第２実施形態によれば、ＰＬＤ２１の外部にある転送指示部２４が、演算・コンフィグデータＩ／Ｆ２２及び書き込みイネーブル制御回路２３を制御することでＰＬＤ２１をコンフィギュレーションするので、コンフィグ制御回路６を内蔵しないＰＬＤ２１についてもコンフィギュレーションを行うことができる。
【００４９】
（第３実施形態）
図２５に示すように、第３実施形態は、ＬＥ３１の構成が上記実施形態とは相違しており、ＬＥ３１は、ＬＵＴ９’（２入力／１出力）、その出力側に配置されるＤフリップフロップ３２、セレクタ３３及びメモリ１１（５）を備えている。セレクタ３３の入力端子の一方はＬＵＴ９’の出力端子に接続されており、他方はＤフリップフロップ３２を介して前記出力端子に接続されている。セレクタ３３の入力選択切替えは、メモリ１１（５）の出力データによって行われ、メモリ１１（５）はＬＵＴ９’をコンフィギュレーションする際に併せてコンフィギュレーションされる。
【００５０】
メモリ１１（５）のデータ入力端子は入力Ａに接続されており、書き込みイネーブル端子には、書き込みイネーブル制御回路８等により書き込みイネーブル信号が入力される。Ｄフリップフロップ３２は、例えばＬＵＴ９’の１クロック周期前の出力データを保持しており、メモリ１１（５）の出力データによって、ＬＵＴ９’が直接出力したデータと、Ｄフリップフロップ３２の出力データとが選択される。
【００５１】
（第４実施形態）
図２６に示すように、第４実施形態のＰＬＤ４１は、ＬＥ２と共にデータパスを切換えるためのスイッチボックス（ＳＢ）４２を備えている。ＳＢ４２（パス選択ブロック）は、１つの端子からの入力を３つの出力方向の何れか１つ以上に選択するもので、図２７に示すように、６個のＮチャネルＭＯＳＦＥＴ＿Ｍ１〜Ｍ６、これらのＦＥＴ＿Ｍ１〜Ｍ６のゲートを個別に制御する制御データ（コンフィグデータの一部）が書き込まれる６つのメモリ４３（１）〜４３（６）を備えている。尚、図２６等では、例示としてＬＥ２及びＳＢ４２を何れも４入力／４出力で示している。
【００５２】
端子Ｔ１，Ｔ４の間にはＦＥＴ＿Ｍ１が配置され、端子Ｔ１，Ｔ２の間にはＦＥＴ＿Ｍ２が配置されている。端子Ｔ２，Ｔ４の間にはＦＥＴ＿Ｍ３が配置され、端子Ｔ３，Ｔ４の間にはＦＥＴ＿Ｍ４が配置されている。端子Ｔ２，Ｔ３の間にはＦＥＴ＿Ｍ５が配置され、端子Ｔ１，Ｔ３の間にはＦＥＴ＿Ｍ６が配置されている。ＳＢ４２は、図２７（ｂ）に示す構成が、入力端子及び出力端子数に応じた格子点の数だけ存在する。
【００５３】
ＳＢ４２は、ＰＬＤ４１において行方向に沿って並ぶ各段のＬＥ２の間に列状に配置されており、所謂アイランド型構造をなしている。そして、ＬＥ２をコンフィギュレーションする際に併せてコンフィギュレーションされる。例えば、端子Ｔ１−Ｔ２間のパスを繋ぐ場合はメモリ４３（２）に「１」を書き込んでＦＥＴ＿Ｍ２をオンさせ、端子Ｔ１−Ｔ３間のパスを繋ぐ場合はメモリ４３（６）に「１」を書き込んでＦＥＴ＿Ｍ６をオンさせる。
【００５４】
次に、第４実施形態の作用について説明する。ＰＬＤ４１をコンフィギュレーションする際には、最初にＬＥ２を入力（Ａ，Ｂ）＝出力（Ｘ，Ｙ）にコンフィギュレーションする際に、ＳＢ４２についても同様にコンフィギュレーションする。そして、最下段のＬＥ２から所望の論理演算機能をコンフィギュレーションする際に、各ＳＢ４２についてそれぞれ必要なデータパスを設定するようにコンフィギュレーションする。
【００５５】
以降、ＳＢ４２のコンフィギュレーションについて説明する。図２８に示すように、ＰＬＤ４１に電源が投入された直後はリセット信号が発行されて、メモリ４３が全てゼロクリアされており、ＦＥＴ＿Ｍ１〜Ｍ６は何れもオフになっている。次に、図２９（ａ）に示す４×４の２次元配列のうち、第１行に並ぶ格子点について、ＦＥＴ＿Ｍ６だけをオンするようにメモリ４３（６）に「１」を書き込む。この場合、端子Ｔ１にデータ値「０，１」を与えると共に、対応するメモリ４３に書き込みイネーブル信号を順次与えることでメモリ４３（６）だけに「１」を書き込み、その他のメモリ４３に「０」を書き込むようにする（図２９（ｂ）参照）。これにより、図２９（ｂ）の○で囲んだＦＥＴ＿Ｍ６だけがオンして端子Ｔ１−Ｔ３間のパスが繋がる。
【００５６】
以降、同様に第４行についても端子Ｔ１−Ｔ３間のパスを繋ぐことで、１つのＳＢ４２について上下方向にデータパスが繋がるようになる。これを、各ＬＥ２について、初段から最終段の１つ手前までデータパスを通すようにコンフィギュレーションを行う際に併せて行う。
【００５７】
次に、図３０及び図３１に示すように、第４行の格子点について、ＦＥＴ＿Ｍ６からＭ１に向かって、各ＬＥ２により目的とする論理演算を実現するため所望のパスを構成するように、メモリ４３に順次書き込みを行う。図３０（ｂ）では○で囲んだＦＥＴ＿Ｍ６をコンフィギュレーションし、図３１（ｂ）では○で囲んだＦＥＴ＿Ｍ５をコンフィギュレーションしている。図３２は、最終的にメモリ４３（１）〜４３（６）の全てに書き込みを行った状態を示しており、これにより、端子Ｔ１−Ｔ２，Ｔ２−Ｔ３，Ｔ１−Ｔ３間の各パスが繋がるようにコンフィギュレーションされている。
【００５８】
以上を、第３行から第１行の格子点についても同様に行うことで、１つのＳＢ４２について所望のデータパスを選択することができる。これを、各ＬＥ２について、最終段から初段に向けて所望の論理演算機能をコンフィギュレーションする際に合わせて行う。
以上のように第４実施形態によれば、ＬＥ２と共にＳＢ４２を備える構成のＰＬＤ４１についても、同様にコンフィギュレーションすることができる。
【００５９】
（第５実施形態）
図３３に示すように、第５実施形態のＬＥ５１（論理ブロック）では、ＬＵＴ５２Ａを構成するメモリ１１（１），１１（３）のデータ入力端子に、それぞれＮＯＴゲート５３Ａ（１），５３Ａ（３）を介してデータが入力される。また、ＬＵＴ５２Ｂを構成するメモリ１１（１），１１（２）のデータ入力端子にも、それぞれＮＯＴゲート５３Ｂ（１），５３Ｂ（２）を介してデータが入力される。ＬＥ５１をこのように構成することで、入力Ａ，Ｂにコンフィグデータを与えた際に、メモリ１１（１〜４）に対して書き込みイネーブル信号を一括して（同時に）出力することでコンフィギュレーションが可能になる。
【００６０】
図３４に示すように、ＬＥ５１を、入力Ａ，Ｂに与えられたデータがそのまま出力Ｘ，Ｙに出力されるように（Ｘ＝Ａ，Ｙ＝Ｂ）コンフィギュレーションする際には、入力Ａ，Ｂにコンフィグデータ（１，１）を与えて、メモリ１１（１〜４）に書き込みイネーブル信号を同時に出力すれば良い。すると、ＬＵＴ５２Ａのメモリ１１（１〜４）にはデータ（０，１，０，１）が書き込まれ、ＬＵＴ５２Ｂのメモリ１１（１〜４）にはデータ（０，０，１，１）が書き込まれる。したがって、ＬＥ５１は（Ｘ＝Ａ，Ｙ＝Ｂ）にコンフィギュレーションされる。
【００６１】
そして、図１３相当図である図３５に示すように、ＰＬＤの全体をコンフィギュレーションする際には、入力Ａ，Ｂにコンフィグデータ（１，１）を与えて、全てのＬＥ５１に書き込みイネーブル信号を同時に出力し、一括でコンフィギュレーションする（Ｓ２１）。これにより、全てのＬＥ５１が論理（Ｘ＝Ａ，Ｙ＝Ｂ）にコンフィギュレーションされる。以降は第１実施形態と同様にステップＳ４〜Ｓ６を実行する。
【００６２】
以上のように第５実施形態によれば、ＬＥ５１を、８個のメモリ１１の半数にコンフィギュレーションデータの反転値が入力されるように構成する。そして、イネーブル制御回路は、コンフィギュレーションデータがＬＥ５１に入力されると、イネーブル信号を全てのＬＥ５１に一括して出力し、次は、最終段のＬＥ５１から初段の方向にイネーブル信号を順次出力する。
【００６３】
例えば、ＬＥ５１がｎビット（ｎは自然数）のデータを入出力する構成であれば、（２ｎ×ｎ）個のメモリ１１を備え、最初に入力するコンフィギュレーションデータをオール「０」又はオール「１」にしてメモリ１１の半数に前記データの反転値を入力し、イネーブル信号を全てのＬＥ５１に一括して出力すれば、２ｎ個のメモリのｎ列の組み合わせでｎビットのデータを表現できる（第５実施形態はｎ＝２のケース）。そして、メモリ１１のデータを、入力データ値に応じてセレクタ１２によりマルチプレックスして出力すれば、（入力データ）＝（出力データ）となるように各ＬＥ５１がコンフィギュレーションされる。したがって、コンフィギュレーションをより迅速に行うことができる。
【００６４】
本発明は上記した、又は図面に記載した実施形態にのみ限定されるものではなく、以下のような変形又は拡張が可能である。
ＬＥの構成は、図示したものに限らず、少なくともＬＵＴを備えているものであれば良い。例えば、入力端子、出力端子の数も任意である。
プログラマブルロジックデバイスは、ＬＥ２の集合体２Ｇを１つだけ備えるものでも良い。
ロジックエレメントを、３ビット以上のデータを入出力するように構成しても良い。
第５実施形態において、ＮＯＴゲート５３の配置を変更することで、入力Ａ，Ｂにコンフィグデータ（０，０）を与えてロジックエレメントをコンフィギュレーションしても良い。
【符号の説明】
【００６５】
図面中、１はプログラマブルロジックデバイス、２はロジックエレメント（論理ブロック）、６はコンフィグ制御回路（コンフィギュレーション制御回路）、７は演算・コンフィグデータインターフェイス、８は書き込みイネーブル制御回路、９はルックアップテーブル、１１はメモリを示す。
【図１】
2016015710.tif 000003
【図２】
2016015710.tif 000004
【図３】
2016015710.tif 000005
【図４】
2016015710.tif 000006
【図５】
2016015710.tif 000007
【図６】
2016015710.tif 000008
【図７】
2016015710.tif 000009
【図８】
2016015710.tif 000010
【図９】
2016015710.tif 000011
【図１０】
2016015710.tif 000012
【図１１】
2016015710.tif 000013
【図１２】
2016015710.tif 000014
【図１３】
2016015710.tif 000015
【図１４】
2016015710.tif 000016
【図１５】
2016015710.tif 000017
【図１６】
2016015710.tif 000018
【図１７】
2016015710.tif 000019
【図１８】
2016015710.tif 000020
【図１９】
2016015710.tif 000021
【図２０】
2016015710.tif 000022
【図２１】
2016015710.tif 000023
【図２２】
2016015710.tif 000024
【図２３】
2016015710.tif 000025
【図２４】
2016015710.tif 000026
【図２５】
2016015710.tif 000027
【図２６】
2016015710.tif 000028
【図２７】
2016015710.tif 000029
【図２８】
2016015710.tif 000030
【図２９】
2016015710.tif 000031
【図３０】
2016015710.tif 000032
【図３１】
2016015710.tif 000033
【図３２】
2016015710.tif 000034
【図３３】
2016015710.tif 000035
【図３４】
2016015710.tif 000036
【図３５】
2016015710.tif 000037