(57)【要約】【課題】非同期回路を組み込んだ場合においても複数の処理の切替えを正確かつ確実に行うこと。【解決手段】外部から入力される入力値に対して、回路情報に基づいて演算処理を行って出力値を出力する複数の論理ブロックを有するプログラム可能アレイ１０１と、論理ブロックの出力と入力との接続情報に基づいて、各論理ブロックの出入力間を接続するプログラム可能配線回路１０４と、プログラム可能アレイ１０１に回路情報の変更を指令するとともに、プログラム可能配線回路１０４に接続情報の変更を指令することにより、回路機能の変更制御を行う処理切替制御回路１０３と、回路機能の変更制御時に、第１の時間の間に、実現中の回路機能に関する論理ブロックの出力値を保存し、第１の時間の経過後であって第２の時間の間、変更後に実現される回路機能に関して保存した論理ブロックの出力値を出力値として出力する出力信号記憶部１０３と、を備えた。【選択図】        図１
2005318214.tif 000002
【特許請求の範囲】
【請求項１】
種々の回路機能を実現可能なプログラマブルゲートアレイであって、
外部から入力される入力値に対して、実現する前記回路機能に応じた回路情報に基づいて演算処理を行って演算処理の出力値を出力する複数の論理ブロックを有するプログラム可能アレイと、
実現する前記回路機能に応じた前記論理ブロックの出力と入力との接続関係を示す接続情報に基づいて、前記各論理ブロックの出入力間を接続する接続部と、
前記プログラム可能アレイに前記回路情報の変更を指令するとともに、前記接続部に前記接続情報の変更を指令することにより、前記回路機能の変更制御を行う変更制御部と、
前記変更制御部による回路機能の変更制御時に、予め定められた第１の時間の間に、実現中の回路機能に関する前記論理ブロックの出力値を保存し、前記第１の時間の経過後であって予め定められた第２の時間の間、変更後に実現される回路機能に関して保存した当該論理ブロックの出力値を当該論理ブロックの出力値として出力する出力値記憶部と、
を備えたことを特徴とするプログラマブルゲートアレイ。
【請求項２】
前記プログラム可能アレイと前記出力値記憶部は直結されており、前記出力値記憶部は前記プログラム可能アレイの前記複数の論理ブロックからの全ての出力値を保持することを特徴とする請求項１に記載のプログラマブルゲートアレイ。
【請求項３】
前記プログラム可能アレイは、前記出力値を記憶すべき出力のみに対して前記接続部を介して前記出力値記憶部と接続されており、
前記出力値記憶部は、前記プログラム可能アレイからの保持すべき前記出力値を前記接続部を介して保持することを特徴とする請求項１に記載のプログラマブルゲートアレイ。
【請求項４】
前記出力信号記憶手段は、前記第２の時間だけ入力を無効にすることを特徴とする請求項１〜３のいずれか一つに記載のプログラマブルゲートアレイ。
【請求項５】
前記出力値記憶部は、前記プログラム可能アレイの複数の論理ブロックのそれぞれに対応して前記論理ブロックからの出力値を保持する複数の出力値保存回路を備え、
前記出力値保存回路のそれぞれは、
シングルラッチ回路である複数のレジスタと、
前記変更制御部からの指令により、前記出力値を前記レジスタを介さずに出力する通過モードと、前記出力値を前記レジスタにに保持させる保存モードと、前記出力値にかかわらず、前記レジスタに保持されている前記出力値を出力する出力モードとを切り替える保存選択回路とを備えたことを特徴とする請求項１〜４のいずれか一つに記載のプログラマブルゲートアレイ。
【請求項６】
前記保存選択回路は、さらに、前記保存モードの場合に、現在の処理に関する前記論理ブロックから出力される前記出力値を保持するレジスタを前記複数のレジスタの中から選択し、かつ前記出力モードの場合に、次の処理に関する前記論理ブロックの出力信号を保持している前記レジスタを前記複数のレジスタの中から選択することを特徴とする請求項５に記載のプログラマブルゲートアレイ。
【請求項７】
前記出力値記憶部は、前記プログラム可能アレイからの出力値を保持して外部に出力する複数の第１のシングルラッチ回路を有する出力値保存回路と、外部から入力された状態を一時的に保持し、前記第１のシングルラッチ回路に出力する第２のシングルラッチ回路と、を備え、
前記第１のシングルラッチ回路に保持すべき出力値が外部から前記出力値記憶部に入力された場合に、前記第１のシングルラッチ回路と前記第２のシングルラッチ回路とで構成されるダブルラッチ回路により、外部から入力された出力値を前記第２のシングルラッチ回路から前記第１のシングルラッチ回路へ移動しながら前記第１のシングルラッチ回路に保持するとともに、既に前記第１のシングルラッチ回路に保持されていた出力値を前記第２のシングルラッチ回路を介して外部に出力することを特徴とする請求項１に記載のプログラマブルゲートアレイ。
【請求項８】
前記出力値記憶部は、前記プログラム可能アレイからの出力値を前記第１のシングルラッチ回路を介さずに通過して出力するモードと、前記プログラム可能アレイからの出力値を前記第１のシングルラッチ回路に保持させるモードとを切り替える保存選択制御回路をさらに備えたことを特徴とする請求項７に記載のプログラマブルゲートアレイ。
【請求項９】
外部から入力される入力値に対して実現する回路機能に応じた回路情報に基づいて演算処理を行って演算処理の出力値を出力する複数の論理ブロックを有するプログラム可能アレイに対して前記回路情報の変更を指令するとともに、実現する前記回路機能に応じた前記論理ブロックの出力と入力との接続関係を示す接続情報に基づいて前記各論理ブロックの出入力間を接続する接続部に対して前記接続情報の変更を指令することにより、前記回路機能の変更制御を行う変更制御工程と、
前記変更制御工程による回路機能の変更制御時に、予め定められた第１の時間の間に、実現中の回路機能に関する前記論理ブロックの出力値を出力値記憶部に保存する保存工程と、
前記第１の時間の経過後であって予め定められた第２の時間の間、変更後に実現される回路機能に関して前記出力記憶部に保存した当該論理ブロックの出力値を当該論理ブロックの出力値として出力する出力工程と、
を含むことを特徴とする回路機能変更制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時分割で複数の処理を切替えながら実行するプログラマブルゲートアレイおよびこのような処理を実現する回路機能の変更を制御する回路機能変更制御方法に関する。
【背景技術】
【０００２】
時分割された複数の処理を切替えながら実行するプログラマブルゲートアレイとしては、例えば特許文献１に開示されている技術が知られている。この特許文献１の技術は、動的に再構成可能なプログラマブルゲートアレイに関するものであり、イベント管理部からの指示によりメモリプレーンから指定された回路プログラムが共用回路実現リソースにロードされるとともに、レジスタプレーンから指定されたレジスタがラッチとして回路に与えられることで所望の論理回路を実現する動的回路変更可能ゲートアレイが開示されている。このような従来のプログラマブルゲートアレイでは、一般的に処理の切替えは以下のように行われる。
【０００３】
従来のプログラマブルゲートアレイは、論理ブロックを有し演算処理を実行するプログラム可能アレイと、プログラム可能アレイによる演算処理の途中結果の出力を格納する複数のレジスタから構成されるレジスタ群と、プログラム可能アレイ内部に設けられた複数の論理ブロック同士の入力および出力を接続するためのプログラム可能アレイとレジスタ群１１０２とを接続するプログラム可能配線回路と、動的に回路を再構成する際に処理を矛盾なく切替制御する処理切替制御回路とから構成されている。
【０００４】
演算処理は、ＲＡＭ等のプログラム可能アレイに外部からデータを書き込むことによって実行される。ここで、プログラム可能アレイは、外部からの制御により複数の処理を実行することができるように、複数の論理ブロックを有している。また、レジスタ群は、同期回路である複数のレジスタから構成され、各レジスタによってプログラム可能アレイからの出力を保持し、処理の異なる論理ブロックに対応して回路の切り替えとともに格納内容を切り替え可能となっている。
【０００５】
処理切替制御回路は、レジスタ群の出力と論理ブロックからなる回路情報の書き換えのタイミングを調整するために、処理変更のタイミングを回路構成に合わせて遅延させ各部に送るものである。
【０００６】
【特許文献１】特開平８−２５０６８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、このような従来のプログラマブルゲートアレイでは、処理の切替時の出力、すなわち切り替え前の処理の出力と切り替え後の処理の出力とを、レジスタ群を構成する同期回路の複数のレジスタで保持しているため、プログラム可能アレイによって非同期回路が実現された場合には、クロックと非同期に出力される非同期回路の出力をレジスタ群内部のレジスタで保持することができない。このため、プログラム可能アレイで非同期回路を実現した場合には、複数の処理を正確に切り替えることが困難であるという問題がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、非同期回路を実現する場合においても複数の処理の切替えを正確かつ確実に行うことができるプログラマブルゲートアレイおよび回路機能変更制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、種々の回路機能を実現可能なプログラマブルゲートアレイであって、外部から入力される入力値に対して、実現する前記回路機能に応じた回路情報に基づいて演算処理を行って演算処理の出力値を出力する複数の論理ブロックを有するプログラム可能アレイと、実現する前記回路機能に応じた前記論理ブロックの出力と入力との接続関係を示す接続情報に基づいて、前記各論理ブロックの出入力間を接続する接続部と、前記プログラム可能アレイに前記回路情報の変更を指令するとともに、前記接続部に前記接続情報の変更を指令することにより、前記回路機能の変更制御を行う変更制御部と、前記変更制御部による回路機能の変更制御時に、予め定められた第１の時間の間に、実現中の回路機能に関する前記論理ブロックの出力値を保存し、前記第１の時間の経過後であって予め定められた第２の時間の間、変更後に実現される回路機能に関して保存した当該論理ブロックの出力値を当該論理ブロックの出力値として出力する出力値記憶部とを備えたことを特徴とするプログラマブルゲートアレイである。
【００１０】
また、本発明は、外部から入力される入力値に対して実現する回路機能に応じた回路情報に基づいて演算処理を行って演算処理の出力値を出力する複数の論理ブロックを有するプログラム可能アレイに対して前記回路情報の変更を指令するとともに、実現する前記回路機能に応じた前記論理ブロックの出力と入力との接続関係を示す接続情報に基づいて前記各論理ブロックの出入力間を接続する接続部に対して前記接続情報の変更を指令することにより、前記回路機能の変更制御を行う変更制御工程と、前記変更制御工程による回路機能の変更制御時に、予め定められた第１の時間の間に、実現中の回路機能に関する前記論理ブロックの出力値を出力値記憶部に保存する保存工程と、前記第１の時間の経過後であって予め定められた第２の時間の間、変更後に実現される回路機能に関して前記出力記憶部に保存した当該論理ブロックの出力値を当該論理ブロックの出力値として出力する出力工程とを含むことを特徴とする回路機能変更制御方法である。
【発明の効果】
【００１１】
本発明によれば、回路機能の変更制御時に、予め定められた第１の時間の間に、実現中の回路機能に関する論理ブロックの出力値を保存し、第１の時間の経過後であって予め定められた第２の時間の間、変更後に実現される回路機能に関して保存した当該論理ブロックの出力値を当該論理ブロックの出力値として出力することで、プログラム可能アレイによって非同期回路を実現した場合でも、第１の時間の間にプログラム可能アレイから出力された状態を出力値記憶部で保持することができ、複数の回路機能の変更を正確に行うことができ、非同期回路を用いた論理回路の動的な再構成を正確かつ確実に実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明にかかるプログラマブルゲートアレイおよび回路機能変更制御方法の最良な実施の形態を詳細に説明する。
【００１３】
（実施の形態１）
図１は、実施の形態１にかかるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の概略構成図である。本実施の形態は、本発明にかかるプログラマブルゲートアレイをＦＰＧＡに適用したものである。
【００１４】
実施の形態１のＦＰＧＡは、図１に示すように、プログラム可能アレイ１０１と、出力信号記憶部１０２と、処理切替制御回路１０３と、プログラム可能配線回路１０４とを備えている。ここで、処理切替制御回路１０３は本発明における変更制御部に相当する。プログラム可能配線回路１０４は本発明における接続部に相当する。また、出力信号記憶部１０２は本発明における出力値記憶部に相当する。
【００１５】
プログラム可能アレイ１０１は、複数の図示しない論理ブロックを有する回路であり、各論理ブロックは、実現する回路機能に応じて変更可能な論理値の真理値表に従って論理演算を実行するユニットである。プログラム可能アレイ１０１は、図１に示すように、プログラム可能配線回路１０４に接続されており、内部の各論理ブロックへの入力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）がプログラム可能配線回路１０４から供給されるようになっている。
【００１６】
また、プログラム可能アレイ１０１は、全ての出力が出力信号記憶部１０２に直接接続されており、内部の各論理ブロックの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）が出力信号記憶部１０２に出力されるようになっている。ここで、後述するように、出力信号記憶部１０２がプログラム可能配線回路１０４に接続されているため、プログラム可能アレイ１０１の各論理ブロックの出力信号の全てが出力信号記憶部１０２を経由してプログラム可能配線回路１０４に入力されるようになっている。
【００１７】
プログラム可能配線回路１０４は、プログラム可能アレイ１０１からの出力とプログラム可能アレイ１０１への入力とを接続するものである。すなわち、プログラム可能配線回路１０４は、図１に示すように、出力信号記憶部１０２を経由して、プログラム可能アレイ１０１内部の各論理ブロックの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を入力する一方、プログラム可能アレイ１０１内部の各論理ブロックへの入力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を供給する。そして、プログラム可能配線回路１０４の内部において、出力信号記憶部１０２を経由したプログラム可能アレイ１０１内の各論理ブロックの出力と、各論理ブロックへの入力とを接続するようになっている。このプログラム可能配線回路１０４の内部の接続関係は実現する回路機能に応じて接続情報として与えられ、プログラム可能となっている。
【００１８】
処理切替制御回路１０３は、プログラム可能アレイ１０１に対して、内部の各論理ブロックの真理値の変更を示す回路情報の変更を指令するとともに、プログラム可能配線回路１０４に対して各論理ブロックの入力と出力の接続関係を示す接続情報の変更を指令することにより、ＦＰＧＡの回路機能の変更を制御するものである。かかる変更制御によって、本実施形態のＦＰＧＡは様々な回路を動的に実現することができ、非同期回路も実現可能となっている。
【００１９】
出力信号記憶部１０２は、プログラム可能アレイ１０１の処理の切替時に、切替前の処理を実行していたプログラム可能アレイ１０１内部の各論理ブロックの出力信号を保存し、次の処理を実行するための各論理ブロックの出力信号回路の出力信号を復帰させるものである。ここで、出力信号とはプログラム可能アレイ１０１の各論理ブロック間の配線上での論理値である。例えば、ある論理ブロックから出力された論理値Ｘが他の論理ブロックの入力信号となる場合、この論理値Ｘが両論理ブロック間の出力信号となる。
【００２０】
プログラム可能配線回路１０４によって各論理ブロックの出力を他の論理ブロックの入力に接続した場合は、フィードバックが発生するので、論理の出力から入力までの間の出力信号を出力信号記憶部１０２に記憶する必要がある。このため、出力信号記憶部１０２は、プログラム可能アレイ１０１の処理の切替時に、切替前の処理を実行する論理ブロックの出力信号を保存する。そして、出力信号記憶部１０２は、予め定められた時間、各論理ブロックからの出力に拘らず保存した出力信号に基づいて出力を行う。そして、当該時間の経過後、出力信号記憶部１０２は、次の処理を実行する各論理ブロックの保存されていた出力信号を復帰させ、所定時間、各論理ブロックからの出力に拘らず復帰した出力信号に基づいて出力を行う。なお、出力信号記憶部１０２の詳細な構成については後述する。
【００２１】
ここで、図１において、処理切替制御回路１０３に入力されるｐｒｏｃｅｓｓ  ｓｅｌｅｃｔ信号は、選択された処理を示す信号である。処理切替制御回路１０３から出力されてプログラム可能アレイ１０１に入力されるｃｉｒｃｕｉｔ  ｓｅｌｅｃｔ信号は、処理切替制御回路１０３による切替え対象の処理を実行するために、プログラム可能アレイ１０１の各論理ブロック回路の真理値を変更指示する信号（回路情報の変更指令）である。処理切替制御回路１０３から出力されて出力信号記憶部１０２に入力されるｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号は、処理切替制御回路１０３による切替え対象の処理を実行するプログラム可能アレイ１０１の各論理ブロックの出力信号を保持する出力信号記憶部１０２内のレジスタを選択指示するための信号である。処理切替制御回路１０３から出力されてプログラム可能配線回路１０４に入力されるｉｎｔｅｒｃｏｎｎｅｃｔ  ｓｅｌｅｃｔ信号は、処理切替制御回路１０３による切替え対象の処理を実行するために、プログラム可能アレイ１０１の各論理ブロック回路の出力と入力の接続を変更指示する信号（接続情報の変更指令）である。
【００２２】
プログラム可能配線回路１０４に入力されるｐｒｏｃｅｓｓ  ｉｎｐｕｔ信号は、現在の各論理ブロックの接続によって実行される処理の入力信号である。プログラム可能配線回路１０４から出力されるｐｒｏｃｅｓｓ  ｏｕｔｐｕｔ信号は、プログラム可能アレイ１０１による処理の結果の出力信号である。
【００２３】
プログラム可能アレイ１０１に入力されるｃｉｒｃｕｉｔ  ｄａｔａ信号は、プログラム可能アレイ１０１内部の論理ブロック論理ブロックの論理値のデータである。プログラム可能配線回路１０４に入力されるｉｎｔｅｒｃｏｎｎｅｃｔ  ｄａｔａ信号は、プログラム可能アレイ１０１内部の論理ブロックの出力と入力との接続に関するデータである。
【００２４】
次に、出力信号記憶部１０２の詳細な構成について説明する。図２は、出力信号記憶部１０２の内部構成を示す構成図である。図２に示すように、出力信号記憶部１０２は、プログラム可能アレイ１０１の各論理ブロックからの出力を記憶するための複数の出力信号保存回路２０１を備えた構成となっている。出力信号記憶部１０２では、プログラム可能アレイ１０１の出力と出力信号保存回路２０１とが１：１対応となっており、各出力信号保存回路２０１には、ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号とｐｒｏｃｅｓｓ  ｄａｔａ信号が入力されるようになっている。
【００２５】
図３は、この出力信号保存回路２０１の構成を示す構成図である。図３に示すように、出力信号保存回路２０１は、保存選択制御回路３０１と、直列に接続された複数のレジスタ３０２から構成される。ここで各レジスタ３０２はシングルラッチ回路となっている。
【００２６】
また、各出力信号記憶回路２０１は、プログラム可能アレイ１０１の各論理回路からの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を入力してそのまま通過させて出力する通過モードと、各論理回路からの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）をレジスタ２０３に記憶する保存モードと、各論理ブロックの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）に無関係に内部のレジスタ２０３に保持している出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を出力する出力モードとを有している。
【００２７】
保存選択制御回路３０１は、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号によって指定されたレジスタ３０２を選択して、選択されたレジスタ３０２に入力されたプログラム可能アレイ１０１の論理ブロックの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を保存する保存モードと、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号がデータの通過を示す所定の値の場合に、レジスタ３０２の選択を行わず、入力された出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を通過させてそのまま外部に出力する通過モードと、プログラム可能アレイ１０１からの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）と無関係に、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号によって指定されたレジスタ３０２を選択し、選択されたレジスタ３０２に保存されている値（次に行う処理の出力信号）をプログラム可能配線回路１０４に出力する出力モードとを切り替える処理を行う。
【００２８】
次に以上のように構成された本実施の形態にかかるＦＰＧＡによる回路機能の変更制御処理について説明する。図４は、本実施の形態にかかるＦＰＧＡの回路機能の変更制御処理の手順を示すフローチャートである。
【００２９】
まず、ｐｒｏｃｅｓｓ  ｓｅｌｅｃｔ信号で次の処理の指令を処理切替制御回路１０３が受け取ると、処理切替制御回路１０３は待機の開始を出力信号記憶部１０２に指示し、待機状態を開始する（ステップＳ４０１）。
【００３０】
出力信号保存回路２０１の状態は、それまで前の処理の定常状態として、ｐｒｏｃｅｓｓ  ｄａｔａの保持を行わずにそのまま出力する通過モードである。このため、出力信号保存回路２０１は、ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号を入力すると、保存選択制御回路３０１によって、上記通過モードから、ｐｒｏｃｅｓｓ  ｄａｔａの入力をレジスタ３０２に保持する保存モードに切り替える（ステップＳ４０２）。
【００３１】
次に、処理切替制御回路１０３から出力されたｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号によって指定された、今までの処理を実行していたプログラム可能アレイ１０１の論理ブロックの出力信号を保存するレジスタ３０２を保存選択制御回路３０１によって選択する（ステップＳ４０３）。そして、保存選択制御回路３０１によって選択されたレジスタ３０２に現在の処理を実行しているプログラム可能アレイ１０１の論理ブロックの出力信号を保存する（ステップＳ４０４）。
【００３２】
そして、待機開始から予め定めされた第１の時間が経過したか否かを判断し（ステップＳ４０５）、経過するまで待機する（ステップＳ４０５：Ｎｏ）。
【００３３】
待機開始から第１の時間が経過したら（ステップＳ４０５：Ｙｅｓ）、保存選択制御回路３０１によって、上記保存モードから、レジスタ３０２に保持された値（次の処理の出力信号）を出力する出力モードに切り替える（ステップＳ４０６）。
【００３４】
次に、処理切替制御回路１０３からｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号によって次の切り替える処理の出力信号を保持するレジスタ３０２が指定されるので、保存選択制御回路３０１は、指定されたレジスタ３０２を選択する（ステップＳ４０７）。そして、保存選択制御回路３０１によって選択されたレジスタ３０２から次の処理の出力信号を復帰し（ステップＳ４０８）、復帰した次の処理の出力信号をｐｒｏｃｅｓｓ  ｄａｔａとしてプログラム可能配線回路１０４に出力する（ステップＳ４０９）。
【００３５】
そして、ステップＳ４０６の時点から予め定められた第２の時間が経過したか否かを判断し（ステップＳ４１０）、経過するまで待機する（ステップＳ４１０：Ｎｏ）。これによって新たな処理の安定状態に入ることになる。ステップＳ４０６の時点から第２の時間が経過したら（ステップＳ４１０：Ｙｅｓ）、保存選択制御回路３０１によって出力モードから通過モードに切り替える（ステップＳ４１１）。
【００３６】
次に、このような処理切替制御処理において、処理ａから処理ｂに切り替われる場合を例にあげて説明する。図５は、処理ａから処理ｂに切り替われる場合における各信号のタイムチャートを示す説明図である。
【００３７】
処理の選択指示を示すｐｒｏｃｅｓｓ  ｓｅｌｅｃｔ信号が定常状態の処理ａである場合には、出力信号保存回路２０１の状態は通過モードであり（ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ＝ｆｒｅｅ）、プログラム可能配線部１０４は、プログラム可能アレイ１０１内の各論理ブロックの出力と入力とを処理ａの回路を実現するように接続し、各論理ブロックの真理値が処理ａの回路を実現するようになっている（ｉｎｔｅｒｃｏｎｎｅｃｔ  ｓｅｌｅｃｔ、ｃｉｒｃｕｉｔ  ｓｅｌｅｃｔ）。また、このとき、処理の入力信号は、そのまま有効な値として処理されている（ｐｒｏｃｅｓｓ  ｉｎｐｕｔ＝ｖａｌｉｄ）。
【００３８】
ｐｒｏｃｅｓｓ  ｓｅｌｅｃｔ信号により処理ａから処理ｂへの切り替え指示があった場合には、処理切替制御回路１０３によりｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号によって現在の処理の論理ブロックの出力信号を保持するためのレジスタ３０２が指定される（ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ＝ｒ＿ａ）。そして、上記第１の時間の間、処理切替制御回路１０３は、出力信号保存回路２０１に対して、処理の入力を保持し（ｐｒｏｃｅｓｓ  ｉｎｐｕｔ＝ｈｏｌｄ）、現在の処理ａの各論理ブロックの出力信号を、ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号で指定された処理ａに対応するレジスタ３０２に保存する。図５の例では、レジスタ３０２はシングルラッチ回路で構成されている、レジスタ３０２の内容は出力信号に従って変化する。
【００３９】
第１の時間を経過し、回路状態が安定状態に達すると、処理切替制御回路１０３によりｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号によって次の処理ｂの論理ブロックの出力信号が保持されているレジスタ３０２が指定される（ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ＝ｗ＿ｂ）。そして、出力信号保存回路２０１は、処理ｂに対応する指定されたレジスタ３０２の内容をプログラム可能配線回路１０４に対して出力する。
【００４０】
このとき、プログラム可能配線回路１０４は、プログラム可能アレイ１０１内の各論理ブロックの出力と入力とを処理ｂの回路を実現するように接続し、各論理ブロックの真理値が処理ｂの回路を実現するように変更する。この時点では、回路状態がまだ不安定なため、処理の入力信号は無効状態になっている（ｐｒｏｃｅｓｓ  ｉｎｐｕｔ＝ｉｎｖａｌｉｄ）。そして、第２の時間を経過後、回路状態が安定したら、出力信号保存回路２０１は保存モードから通過モードに変わり（ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ＝ｆｒｅｅ）、処理の入力信号は有効な値として処理されるようになり（ｐｒｏｃｅｓｓ  ｉｎｐｕｔ＝ｖａｌｉｄ）、処理ｂについての定常状態になる。
【００４１】
このように本実施の形態にかかるＦＰＧＡでは、実現可能な複数の論理ブロックを有するプログラム可能アレイ１０１に対して、実行する処理に応じて論理ブロックの出力と入力の接続を行うプログラム可能配線回路１０４と、プログラム可能アレイ１０１内の各論理ブロックの出力信号を予め定められた第１の時間の間保持し、第１の時間の経過後であて第２の時間の間に、既に保持された次に実行する処理の出力信号を復帰する出力信号記憶部１０２を備えているので、プログラム可能アレイ１０１で非同期回路が実現された場合でも、第１の時間の間にプログラム可能アレイ１０１から出力された出力信号を出力信号記憶部１０２のレジスタ３０２で保持することができ、複数の回路機能による処理の切替えを正確かつ確実に行うことができる。
【００４２】
なお、本実施の形態のＦＰＧＡでは、同期回路を実現するためのレジスタ群を備えていないが、このようなレジスタ群を備えた構成とすることも可能である。
【００４３】
また、本実施の形態の出力信号記憶部１０２では、出力信号保存回路２０１ごとに保存選択制御回路３０１を備えているが、この保存選択制御回路３０１を単一として、すべての出力信号保存回路に共有するように構成してもよい。また、プログラム可能アレイ１０１の出力が、一部の出力信号保存回路２０１を通過しないように構成してもよい。この場合には、プログラム可能アレイ１０１の出力を保存する必要がないように回路構成時に構成するようにする必要がある。
【００４４】
（実施の形態２）
実施の形態１にかかるＦＰＧＡでは、プログラム可能アレイ１０１の全ての出力が直接、出力信号記憶部１０２に接続された構成となっていたが、本実施の形態のＦＰＧＡは、プログラム可能アレイ１０１の出力がプログラム可能配線回路１０４を介して出力信号記憶部６０１に接続されたものである。
【００４５】
すなわち、実施の形態１にかかるＦＰＧＡでは、プログラム可能アレイの出力の全て又は多くの部分に対して、出力信号記憶部１０２を接続しているため、論理回路を効率よく構成することができる。しかしながら、プログラム可能アレイ１０１の回路構成が複雑な場合には、これらのプログラム可能アレイ１０１の出力ごとに出力信号を保存可能であるか否かにより、可能な回路構成の幅が狭まる可能性がある。
【００４６】
本実施の形態にかかるＦＰＧＡでは、配線状態を保存する必要があるプログラム可能アレイ１０１の出力に対してのみ、個別にプログラム可能配線回路１０４によって出力信号記憶部６０１に結合するものである。これによって、出力信号記憶部６０１で保存可能な出力信号の総数が実施の形態１にかかるＦＰＧＡより少ない数でも実現可能な論理回路の範囲を拡大することができる。
【００４７】
図６は、実施の形態２にかかるＦＰＧＡの概略構成図である。本実施の形態のＦＰＧＡは、図６に示すように、プログラム可能アレイ１０１と、出力信号記憶部６０１と、処理切替制御回路１０３と、プログラム可能配線回路６０４と、レジスタ群６０２とを備えている。
【００４８】
プログラム可能配線回路６０４は、プログラム可能アレイ１０１からの出力とプログラム可能アレイ１０１への入力とを接続するものである。本実施の形態では、プログラム可能アレイ１０１の出力の中で出力状態を保存する必要がある一部の論理ブロックからの出力がプログラム可能配線回路６０４を介して出力信号記憶部６０１に接続されている。そして、プログラム可能配線回路６０４は、その一部の論理ブロックの個数分の出力は出力信号記憶部６０１に接続された構成となっている。出力状態を保存する必要が無い論理ブロックについては、プログラム可能配線回路６０４によって次の論理ブロックに直接接続される。すなわち、プログラム可能アレイ１０１の出力の中で出力信号を保存する必要がある一部の出力のみがプログラム可能配線回路１０４を介して出力信号記憶部６０１に接続された構成となっている。
【００４９】
レジスタ群６０２は、演算処理の途中結果の状態を格納するものであり、複数のレジスタから構成される。このレジスタ群６０２は、本実施形態のＦＰＧＡで同期回路を実現する時に用いられる。
【００５０】
なお、プログラム可能アレイ１０１、出力信号記憶部６０１、処理切替制御回路１０３の構成および機能は実施の形態１のＦＰＧＡと同様であるため、説明を省略する。また、本実施の形態のＦＰＧＡにおける処理切替制御の処理は、実施の形態１のＦＰＧＡと同様に行われるため説明を省略する。
【００５１】
このように本実施の形態にかかるＦＰＧＡでは、プログラム可能アレイ１０１の出力の中で出力信号を保存する必要がある一部の出力のみがプログラム可能配線回路１０４に接続され、この一部の出力のみがプログラム可能配線回路１０４を介して出力信号記憶部６０１に接続されているので、プログラム可能アレイ１０１の回路構成が複雑で、出力信号記憶部６０１で保存可能な出力信号の総数が少ない場合に、小規模な回路構成でプログラム可能アレイ１０１により実現可能な回路機能の範囲を拡大することができる。
【００５２】
なお、本実施の形態では、プログラム可能アレイ１０１の出力がすべてプログラム可能配線回路１０４を介して出力信号記憶部６０１に接続された構成となっているが、プログラム可能アレイ１０１の出力の一部が実施の形態１と同様に、出力信号記憶部６０１と直接接続されるように構成してもよい。
【００５３】
（実施の形態３）
実施の形態１および２にかかるＦＰＧＡは、非同期回路による処理の切替時における出力信号を出力信号記憶部に保存して、処理の切替を確実に行うものであったが、この実施の形態３にかかるＦＰＧＡは、さらに非同期回路の任意の処理における出力信号記憶部内部のレジスタの内容を読み出しまたは書き込みを行うことができるものである。
【００５４】
図７は、実施の形態３にかかるＦＰＧＡの概略構成図である。本実施の形態のＦＰＧＡは、図７に示すように、プログラム可能アレイ１０１と、出力信号記憶部７０１と、処理切替制御回路１０３と、プログラム可能配線回路７０４と、レジスタ群６０２とを備えている。
【００５５】
本実施の形態では、処理切替制御回路１０３からレジスタ群６０２にｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号が入力され、出力信号記憶部７０１から出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）がレジスタ群６０２とプログラム可能配線回路７０４に出力されている。また、出力信号記憶部７０１とレジスタ群６０２のそれぞれには、外部から出力信号記憶部７０１に保存する入力値であるｓｔａｔｕｓ  ｉｎｐｕｔ信号が入力され、出力信号記憶部７０１とレジスタ群６０２のそれぞれから出力信号記憶部７０１内部のレジスタの内容を読み出したｓｔａｔｕｓ  ｏｕｔｐｕｔ信号が出力されるようになっている。その他の接続形態、信号の入出力は、実施の形態１のＦＰＧＡと同様であるため説明を省略する。
【００５６】
出力信号記憶部７０１は、プログラム可能アレイ１０１からの出力信号を通過したり保持するものである。なお、出力信号記憶部７０１の詳細な構成については後述する。
【００５７】
本実施の形態では、実施の形態１と同様に、プログラム可能アレイ１０１の全ての出力が出力信号記憶部７０１に直接接続された構成となっているが、実施の形態２のＦＰＧＡと同様に、プログラム可能アレイ１０１の出力の中で出力信号を保存する必要がある一部の出力のみをプログラム可能配線回路１０４を介して出力信号記憶部７０１に接続するように構成してもよい。
【００５８】
なお、プログラム可能アレイ１０１、処理切替制御回路１０３、プログラム可能配線回路７０４の構成および機能は実施の形態１のＦＰＧＡと同様であり、レジスタ群６０２の構成および機能も実施の形態２のＦＰＧＡと同様であるため、説明を省略する。
【００５９】
次に、出力信号記憶部７０１の詳細な構成について説明する。図８は、出力信号記憶部７０１の内部構成を示す構成図である。図８に示すように、出力信号記憶部７０１は、複数の出力信号保存回路８０１が直列に接続された構成となっている。出力信号記憶部７０１では、プログラム可能アレイ１０１の出力と出力信号保存回路８０１とが１：１対応となっており、各出力信号保存回路８０１には、実施の形態１と同様に、ｒｅｇｉｓｔｅｒ  ｓｅｌｅｃｔ信号とｐｒｏｃｅｓｓ  ｄａｔａ信号が入力される他、ｓｔａｔｕｓ  ｉｎｐｕｔ信号が入力されるようになっている。
【００６０】
図９は、この出力信号保存回路８０１の構成を示す構成図である。図９に示すように、出力信号保存回路８０１は、保存選択制御回路９０１と、直列に接続された複数のレジスタ９０２と、仮レジスタ９０３とから構成される。各レジスタ９０２と仮レジスタ９０３はそれぞれシングルラッチ回路であり、各レジスタ９０２への書き込みおよび各レジスタ９０２からの読み出しを実行する際に、仮レジスタ９０３と各レジスタ９０２がダブルラッチ回路を構成し、データの記憶が可能となる。ここで、レジスタ９０２は本発明における第１のシングルラッチ回路を、仮レジスタ９０３は本発明における第２のシングルラッチ回路を構成する。
【００６１】
保存選択制御回路９０１は、実施の形態１と同様に、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号によって指定されたレジスタ９０２を選択して選択されたレジスタ９０２に入力されたプログラム可能アレイ１０１の論理ブロックの出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を保存する保存モードと、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号がデータの通過を示す所定の値の場合に、レジスタ９０２の選択を行わず、出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）を通過させてそのまま外部に出力する通過モードと、プログラム可能アレイ１０１の出力信号（ｐｒｏｃｅｓｓ  ｄａｔａ）と無関係に、ｒｅｇｉｓｅｒ  ｓｅｌｅｃｔ信号によって指定されたレジスタ９０２を選択して選択されたレジスタ９０２の内容をプログラム可能配線回路１０４に出力する出力モードとを切り替える処理を行う。
【００６２】
仮レジスタ９０３は、ＦＰＧＡ外部から出力信号記憶部７０１に保存する入力値であるｓｔａｔｕｓ  ｉｎｐｕｔ信号を入力した場合に、保存選択制御回路９０１で選択されたレジスタ９０２とダブルラッチ回路を構成するようになっている。
【００６３】
データを記憶する機構には、ＲＡＭの他に、データの通過および保持の機能を有するシングルラッチと、あるタイミングでデータを更新しながら保持しつづけるフリップフロップ又はダブルラッチ回路の機構がある。
【００６４】
ダブルラッチ回路はシングルラッチを二個組み合わせた構成であるために製造コストが高くなるという問題がある。通常、同期回路においてデータの記憶を行う場合には、ダブルラッチ回路が使用される。これは、シングルラッチで構成する場合には、状態の変化のタイミングの制御が複雑になることと、動作周波数を向上させる必要があるためである。
【００６５】
本実施の形態におけるレジスタ群６０２は、ダブルラッチ回路で構成されている。これに対し、出力信号保存回路８０１では、通常時には通過モードで、出力信号はレジスタ９０２に記憶されず単に通過しているだけであり、また非同期であるため、その記憶機構はシングルラッチ回路で構成することが好ましい。
【００６６】
しかしながら、シングルラッチ回路で構成した場合には、出力信号保存回路８０１内部のレジスタ９０２の内容を外部から書き込んだり、あるいは外部から読み出す場合には、その書き込みおよび読み出しの処理はクロックに同期して処理を行う同期回路であるために、シングルラッチ回路で構成されていると上述のように状態の変化のタイミング制御が複雑になり、また動作周波数の向上を図ることができないという問題がある。
【００６７】
このため、本実施の形態にかかるＦＰＧＡでは、上述のように出力信号保存回路８０１の内部にレジスタ９０２とは異なる仮レジスタ９０３を設け、この仮レジスタ９０３と外部からの読み書きの対象となっているレジスタ９０２とによってダブルラッチ回路を構成している。
【００６８】
すなわち、本実施の形態では、非同期回路の回路機能の処理の切替時におけるプログラム可能アレイ１０１の各論理ブロックの出力信号の保存を、仮レジスタ９０３を使用せずにシングルラッチ回路のレジスタ９０２のみで行い、ＦＰＧＡ外部からの出力信号記憶部７０１のレジスタ９０２の内容の読み書きの処理を行う場合には、仮レジスタ９０３と選択されたレジスタ９０２とでダブルラッチ回路を構成して、状態変化のタイミング制御を複雑にせず、かつ動作周波数の向上を図りながら回路の製造コストの低減を図っている。
【００６９】
なお、本実施の形態のＦＰＧＡにおける処理切替制御の処理は、実施の形態１のＦＰＧＡと同様に行われるため説明を省略する。
【００７０】
次に、以上のように構成された本実施の形態にかかるＦＰＧＡによる出力信号記憶部７０１への書き込みおよび出力信号記憶部７０１からの読み出し処理について説明する。図１０は、出力信号記憶部７０１への書き込みおよび出力信号記憶部７０１からの読み出し処理における各信号のタイムチャートを示す説明図である。ここで、ｎｂ＿ｍ（ｍ：整数）は、レジスタ９０２に書き込む処理ｂの新しい出力信号であり、ｃｂ＿ｍ（ｍ：整数）は、レジスタ９０２から読み込む現在の出力信号である。また、このような書き込み、読み出し処理は、処理ａにおいてｐｒｏｃｅｓｓ  ｓｅｌｅｃｔ信号が図１０の「ａ  ｒｗ＿ｂ」の期間に実行われる。
【００７１】
通常の処理実行時には（ｐｒｏｃｅｓｓ  ｓｅｌｅｃｔが「ａ  ｒｗ＿ｎｏ」の期間）、ｓｔａｔｕｓ  ｉｎｐｕｔ信号が入力されないため、仮レジスタは使用されず無効な状態となっている。ここで、処理ｂの現在の状態ｃｂ＿ｍ（ｍ：整数）をレジスタ９０２から読み出すとともに、外部から新たな状態ｎｂ＿ｍ（ｍ：整数）を書き込む処理を実行する場合を考える。
【００７２】
このような場合、ｓｔａｔｕｓ  ｉｎｐｕｔ信号が出力信号記憶部７０１に入力され、仮レジスタ９０３が有効な状態となる。また、各段の出力信号保存回路８０１において、保存選択制御回路９０１によって処理ｂについてのレジスタ９０２が選択される。
【００７３】
ｓｔａｔｕｓ  ｉｎｐｕｔ信号が入力されると、まず、ｎ段目の仮レジスタ（以下、「ｎー仮レジスタ」という。）９０３に、ｉｎｐｕｔ  ｓｔａｔｕｓ信号が値が格納される。そして、次のクロックで、ｎー仮レジスタとダブルラッチ回路を構成する保存選択制御回路９０１で選択された処理ｂについてのレジスタｎに格納される。そして、次のクロックで、レジスタｎに格納された内容は、ｎ−１段目の出力信号保存回路８０１の（ｎ−１）−仮レジスタに格納され、次のクロックで、（ｎ−１）ー仮レジスタとダブルラッチ回路を構成する保存選択制御回路９０１で選択された処理ｂについてのレジスタｎー１に格納される。このように、ｓｔａｔｕｓ  ｉｎｐｕｔ信号によって入力された新たな状態ｎｂ＿ｍ（ｍ：整数）は、出力信号記憶部７０１の各段の出力信号保存回路８０１の処理ｂのレジスタ９０２に順次シフトされて格納されていく。
【００７４】
一方、これと同時に、各レジスタ９０２に格納されている処理ｂの現在の状態ｃｂ＿ｍ（ｍ：整数）は、各レジスタ９０２から次の段の仮レジスタ９０３に格納され、順次各段のレジスタ９０、次の段の仮レジスタにシフトされていき、各レジスタ９０２の内容が順次ｏｕｔｐｕｔ  ｓｔａｔｕｓとして外部に出力される。
【００７５】
出力信号記憶部７０１のレジスタ９０２から現在の状態を読み出す処理のみを実行する場合には、ｓｔａｔｕｓ  ｏｕｔｐｕｔ信号の出力をｓｔａｔｕｓ  ｉｎｐｕｔに戻すようにすればよい。一方、出力信号記憶部７０１のレジスタ９０２に新たな出力信号を書き込む処理のみを実行する場合には、ｓｔａｔｕｓ  ｏｕｔｐｕｔ信号の無視するように構成すればよい。
【００７６】
このように本実施の形態のＦＰＧＡでは、非同期回路の回路機能の処理の切替時における出力信号の保存を、仮レジスタ９０３を使用せずにシングルラッチ回路のレジスタ９０２のみで行い、ＦＰＧＡ外部からの出力信号記憶部７０１のレジスタ９０２の内容の読み書きの処理を行う場合には、仮レジスタ９０３と選択されたレジスタ９０２とでダブルラッチ回路を構成して、状態変化のタイミング制御を複雑にせず、かつ動作周波数の向上を図りながら回路の製造コストの低減を図ることができる。
【００７７】
なお、実施の形態１〜３にかかるＦＰＧＡでは、プログラム可能アレイ１０１の各論理ブロックが論理値の真理値表に従って論理演算を実行するものとしているが、この他、各論理ブロックを四則演算等の算術演算をも実行可能なように構成されたプログラム可能アレイを有するＦＰＧＡ（例えば、ＩＰＦｌｅｘ（Ｒ）社のＤＡＰ／ＤＮＡ（Ｒ））や、各論理ブロックで小規模なプログラムを実行可能なように構成されたプログラム可能アレイを有するＦＰＧＡ（例えば、日本電気株式会社（Ｒ）及びＮＥＣエレクトロニクス社（Ｒ）のＤＲＰ）にも本発明を適用することができる。
【産業上の利用可能性】
【００７８】
本発明のプログラマブルゲートアレイおよび回路機能変更制御方法は、複数の回路機能を実現可能なＦＰＧＡに適用することができる。
【図面の簡単な説明】
【００７９】
【図１】実施の形態１にかかるＦＰＧＡの概略構成図である。
【図２】実施の形態１の出力信号記憶部１０２の内部構成を示す構成図である。
【図３】実施の形態１の出力信号保存回路２０１の構成を示す構成図である。
【図４】実施の形態１にかかるＦＰＧＡによる回路機能の切替え制御処理の手順を示すフローチャートである。
【図５】処理ａから処理ｂに切り替われる場合における各信号のタイムチャートを示す説明図である。
【図６】実施の形態２にかかるＦＰＧＡの概略構成図である。
【図７】実施の形態３にかかるＦＰＧＡの概略構成図である。
【図８】実施の形態３の出力信号記憶部７０１の内部構成を示す構成図である。
【図９】実施の形態３の出力信号保存回路８０１の構成を示す構成図である。
【図１０】出力信号記憶部７０１への書き込みおよび状態記憶部７０１からの読み出し処理における各信号のタイムチャートを示す説明図である。
【符号の説明】
【００８０】
１０１  プログラム可能アレイ
１０２，６０１  出力信号記憶部
１０３  処理切替制御回路
１０４  プログラム可能配線回路
２０１  出力信号保存回路
３０１  保存選択制御回路
３０２  レジスタ
６０２  レジスタ群
６０４  プログラム可能配線回路
７０１  出力信号記憶部
７０４  プログラム可能配線回路
８０１  出力信号保存回路
９０１  保存選択制御回路
９０２  レジスタ
９０３  仮レジスタ
【図１】
2005318214.tif 000003
【図２】
2005318214.tif 000004
【図３】
2005318214.tif 000005
【図４】
2005318214.tif 000006
【図５】
2005318214.tif 000007
【図６】
2005318214.tif 000008
【図７】
2005318214.tif 000009
【図８】
2005318214.tif 000010
【図９】
2005318214.tif 000011
【図１０】
2005318214.tif 000012