(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
プログラマブルアレイは、設計者の手元で所望の論理回路を構成できる半導体素子の一つである。
【0003】
プログラマブルアレイにおいて、電源投入後、ユーザ回路を動作可能な状態にするには、次の手順が必要であった。すなわち、(1)外部のメモリから内蔵のRAM(Random Access Memory)にユーザ回路の構成情報を読み込ませる。(2)読み込んだユーザ回路の構成情報を展開してRAM上に構成する。(3)外部から供給されたリセット信号によりユーザ回路を初期化する。
【0004】
以上の手順が完了した後、ユーザ回路のレジスタのそれぞれに初期値が設定され、ユーザ回路の動作が開始する。
【0005】
関連技術においては、プログラマブルアレイ上でのユーザ回路の展開(コンフィギュレーション)が終了すると、終了を通知する信号がリセット回路に供給され、リセット回路がコンフィギュレーション終了信号からリセット信号を生成して、ユーザ回路を初期化していた。
【0006】
さらに、ユーザ回路が動作可能な状態になるには、外部から供給されたリセット信号が解除されるまでの時間が必要であった。
【0007】
このようなプログラマブルアレイの構成では、ユーザ回路の初期化処理において、外部のリセット回路の動作を待つ時間が必要であった。
【0008】
このため、コンフィギュレーションが完了してからユーザ回路が動作可能な状態になるまでには長い時間を要するという問題があった。
【0009】
特許文献1は、ユーザ回路を展開するユーザ領域の外に固定領域を設け、固定領域がリセット回路を有する、フィールドプログラマブルゲートアレイ(FPGA)を開示する。固定領域に設けられたリセット回路は、コンフィギュレーション動作の終了を通知する信号に基づいて初期化信号を生成し、ユーザ領域に供給してユーザ回路を初期化する。これにより、FPGAから、外付けのリセット回路への入出力端子を削減することができる。
【0010】
しかしながら、特許文献1が開示するプログラマブルゲートアレイのような、ユーザ領域と固定領域とで動作のタイミングを制御するクロックを共有する構成では、クロックの立ち上がりと、制御信号のエッジとが衝突するおそれがある。
【0011】
すなわち、ユーザ領域を初期化するリセット信号の解除のタイミングと、クロックの立ち上がりが重なると、カウンタの値が不定になるなどの状態が発生する。
【0012】
例えば、フリップフロップにおいて、リセットのリリースとクロックの立ちあがりが衝突すると、フリップフロップの示す値は不定になる。このような状態になると、カウンタは正常な動作をしない。
【0013】
このため、リセット信号が解除する期間を、クロックのエッジ期間から分離するよう制御する必要がある。しかしながら、多数の機能ブロックが集積化したプログラマブルアレイにおいては、それぞれの素子の動作を時間的に分離することは困難である。
【0014】
この課題に対して、特許文献2は、クロックのエッジとリセット解除のエッジが重ならないように、リセットの前後でクロックの動作を止めるような制御をおこなう半導体集積回路を開示する。
【発明を実施するための形態】
【0024】
発明を実施するための最良の形態について図面を参照して詳細に説明する。ただし、本発明は以下に示す実施形態に限定されない。
[第1の実施形態]
[構成]
図1は、本発明の第1の実施形態に係るプログラマブルアレイの構成の一例を示すブロック図である。
【0025】
図1および
図2を参照して、本実施形態に係るプログラマブルアレイの動作について説明する。
【0026】
図1において、プログラマブルアレイは、リセット制御部3およびユーザ回路部4を含み、リセット制御部3は、リセットパルス制御部31、クロックライン制御部33を含む。
【0027】
ユーザ回路部4においてユーザ回路を構築(コンフィギュレーション)する際には、プログラマブルアレイの外部からユーザ回路部4にユーザ回路構成情報が入力される。ユーザ回路部4は、ユーザ回路の展開が完了すると、リセットパルス制御部31に対してリセットを要求する。
【0028】
リセットパルス制御部31は、ユーザ回路部4に対して、リセットパルスを出力する(
図2、ステップS101)。リセットパルス制御部31は、リセットパルスの出力が完了すると(
図2、ステップS102YES)、クロックライン制御部33にリセットパルス完了を通知して、ユーザ回路部4のクロックラインを駆動するよう要求する。
【0029】
クロックライン制御部33は、ユーザ回路部4に、クロックラインの駆動を許可するクロック許可パルス信号を出力する(
図2、ステップS103)。ユーザ回路部4は、クロック許可パルス信号を受信すると、ユーザ回路部4のクロックラインを駆動する(
図2、ステップS104)。
【0030】
本実施形態に係るプログラマブルアレイにおけるリセット制御部3は、ユーザ回路4を初期化するリセット信号を出力し、リセット信号の出力が完了すると、ユーザ回路4のクロックラインを駆動する指示をユーザ回路4に発行する。これにより、リセットパルスの解除とクロックのエッジが時間的に分離される。
【0031】
また、特許文献2の開示する半導体集積回路のように、クロックの安定した同期動作のために十分長く設定された所定の時間を、クロックの駆動開始まで待つ必要がなく、リセット信号の出力完了を確認した後、例えば数カウントでクロックの駆動を開始できる。このため、起動が高速で、リセット解除のエッジとクロックの立ち上がりの衝突を回避することによりユーザ回路の状態が安定した、プログラマブルアレイが提供される。
[第2の実施形態]
[構成]
[プログラマブルアレイ]
図3は、本発明の第2の実施形態に係るプログラマブルアレイの構成の一例を示すブロック図である。
【0032】
プログラマブルアレイは、メモリ部1、コンフィギュレーション制御部2、リセット制御部3、及びユーザ回路部4を含む。
【0033】
メモリ部1は、不揮発性のメモリを含み、電源が供給されない状態でも内部のデータを消失すること無く保存できる。メモリ部1は、外部からユーザ回路構成情報aを取り込み、保持する。
【0034】
ユーザ回路部4におけるユーザ回路の構築時には、メモリ部1はコンフィギュレーション制御部2から入力されるコンフィギュレーション開始信号bをトリガとして、ユーザ回路部4に対してユーザ回路構成情報cを出力する。メモリ部1は、ユーザ回路構成情報cの転送完了時に、コンフィギュレーション制御部2に対してデータ転送完了信号dを出力する。
【0035】
コンフィギュレーション制御部2は、電源が投入されてから、プログラマブルアレイに供給される電源電圧が動作可能な電圧値に到達すると、メモリ部1に対して、コンフィギュレーション開始信号bを出力する。コンフィギュレーション制御部2がメモリ部1からのデータ転送完了信号dを入力した後、ユーザ回路部4は、ユーザ回路の展開を完了すると、ユーザ回路展開完了信号iを出力する。コンフィギュレーション制御部2は、このユーザ回路展開完了信号iを入力すると、リセット制御部3に対してリセット制御要求信号eを出力する。
【0036】
リセット制御部3は、コンフィギュレーション制御部2からリセット制御要求信号eを入力すると、ユーザ回路部4に対してリセットパルス信号f、データ許可パルス信号g、クロック許可パルス信号hを出力する。
【0037】
ユーザ回路部4は、メモリ部1から入力されるユーザ回路構成情報cを元にユーザ回路をその内部に展開する。ユーザ回路部4は、ユーザ回路の展開を完了すると、ユーザ回路展開完了信号iをコンフィギュレーション制御部2に対して出力する。ユーザ回路部4はさらに、リセット制御部3から入力されたリセットパルス信号fによりユーザ回路を初期化する。また、ユーザ回路部4は、データ許可パルス信号gの入力によりユーザ回路内のデータラインの駆動を開始し、クロック許可パルス信号hの入力によりクロックラインの駆動を開始する。
[リセット制御部]
図4は、本発明の第2の実施形態に係るリセット制御部の構成の一例を示す。
【0038】
リセット制御部3は、リセットパルス制御部31、データライン制御部32、クロックライン制御部33を含む。
【0039】
リセットパルス制御部31は、コンフィギュレーション制御部2から出力されたリセット制御要求信号eが入力されると、ユーザ回路部4に対して、リセットパルス信号fを出力する。続いて、リセットパルス制御部31は、データライン制御部32に対してリセットパルス出力完了信号3aを出力する。
【0040】
データライン制御部32は、リセットパルス制御31から出力されたリセットパルス出力完了信号3aが入力されると、ユーザ回路部4に、データラインの駆動を許可するデータ許可パルス信号gを出力する。続いて、データライン制御部32は、クロックライン制御部33に対して、データ許可パルス出力完了信号3bを出力する。
【0041】
クロックライン制御部33は、データライン制御部32から出力されたデータ許可パルス出力完了信号3bが入力されると、ユーザ回路部4に、クロックラインの駆動を許可するクロック許可パルス信号hを出力する。
[動作]
次に、
図5乃至16のタイミングチャートおよびブロック図を参照して、本実施形態に係るプログラマブルアレイの制御回路の動作について詳細に説明する。
[プログラマブルアレイ]
図5は、
図3のブロック図に示される本実施形態に係るプログラマブルアレイにおいて送受信される信号の動作の一例を説明するタイミングチャートである。
【0042】
メモリ部1には、外部からユーザ回路構成情報aが取り込まれ蓄えられている。
【0043】
プログラマブルアレイに電源が投入されて、動作可能な所定の電圧に到達すると、コンフィギュレーション制御部2は、メモリ部1に対してコンフィギュレーション開始信号bを出力する。
【0044】
メモリ部1は、コンフィギュレーション開始信号bが入力されると、内部に蓄えられたユーザ回路構成情報をユーザ回路構成情報cとして、ユーザ回路部4に出力する。メモリ部1は、ユーザ回路構成情報の全てのデータの転送を完了すると、データ転送完了信号dをコンフィギュレーション制御部2に出力する。
【0045】
ユーザ回路部4は、ユーザ回路構成情報を元にユーザ回路を展開し、ユーザ回路の展開が完了すると、コンフィギュレーション制御部2にユーザ回路展開完了信号iを出力する。
【0046】
コンフィギュレーション制御部2は、ユーザ回路展開完了信号iを入力すると、リセット制御部3に対して、リセット制御要求信号eを出力する。
【0047】
リセット制御部3は、コンフィギュレーション制御部2から出力されたリセット制御要求信号eを入力すると、ユーザ回路部4に対して、リセットパルス信号f、データ許可パルス信号g、クロック許可パルス信号hを連続して出力する。
【0048】
なお、それぞれの信号の立ち上がりのタイミングは、クロックサイクルで示されるクロックのタイミングで制御される。
[リセット制御部]
図6は、
図4のブロック図に示される本実施形態に係るリセット制御部3において送受信される信号の動作の一例を説明するタイミングチャートである。
【0049】
先ず、コンフィギュレーション制御部2からリセットパルス制御部31に対して、リセット制御要求信号eが出力される。
【0050】
リセットパルス制御部31は、リセット制御要求信号eを入力すると、ユーザ回路部4に対してリセットパルス信号fを出力し、リセットパルスが完了したら、続いてデータライン制御部32に対してリセットパルス出力完了信号3aを出力する。
【0051】
データライン制御部32は、リセットパルス制御部31から出力されたリセットパルス出力完了信号3aを入力すると、データ許可パルス信号gをユーザ回路部4に対して出力し、続いてクロックライン制御部33に対してデータ許可パルス出力完了信号3bを出力する。
【0052】
クロックライン制御部33は、データライン制御部32からのデータ許可パルス出力完了信号3bを入力すると、ユーザ回路部4に対してクロック許可パルス信号hを出力する。
【0053】
なお、それぞれの信号の立ち上がりのタイミングは、クロックサイクルで示されるクロックのタイミングで制御される。
[ユーザ回路部]
図7は、本実施形態に係るユーザ回路部において送受信される信号の、ユーザ回路の初期化からユーザ回路の起動までの動作の一例を説明するタイミングチャートである。
【0054】
通常、ユーザ回路はメモリ上に展開されただけでは、起動時に参照される参照値などが不定である。ユーザ回路の起動時には、この不定状態はリセット処理により初期化される必要がある。
【0055】
ユーザ回路は、リセット制御部3から出力されたリセットパルス信号fの入力により、初期化される。
【0056】
次に、リセット制御部3から出力されたデータ許可パルス信号gの入力により、ユーザ回路部4内のデータラインが、初期状態からユーザ回路が動作するために必要な値へと駆動される。
【0057】
さらに、リセット制御部3から出力されたクロック許可パルス信号hの入力により、ユーザ回路部4内のクロックライン上に、素子の動作のタイミング制御に必要なクロックが駆動される。
【0058】
次に、ユーザ回路部4において展開されるユーザ回路として適用可能な例を挙げて、構成と手順を具体的に説明する。
[ビットカウンタの例]
ユーザ回路部4において展開されるユーザ回路として、4ビットのカウンタが構成される場合の動作の一例を、
図8乃至10を参照して説明する。
【0059】
比較のため、
図9においては、本発明が適用されない場合の動作の例を示す。
【0060】
図8は、本実施形態に係る4ビットカウンタの構成の一例を示す。
【0061】
リセット制御部3から出力されたリセットパルス信号fは、4ビットカウンタ61のCLR(クリア)入力端子に入力される。
【0062】
また、本発明が適用されない場合は、クロックの駆動制御が行われないため、ユーザ回路部4内には、クロックラインが、ユーザ回路展開後から、4ビットカウンタ61のCLK入力端子に入力されている。
【0063】
図9は、本発明が適用されない場合の、4ビットカウンタ61における信号の動作の一例を示す。
【0064】
図9に示されるように、本発明が適用されないプログラマブルアレイにおいては、リセットパルス信号fの解除タイミングとクロックの立ち上がりエッジのタイミングが衝突しうる。このような衝突時には、ビットカウンタ内部でタイミングエラーが発生する。このとき、リセットパルス信号fにより不定状態から初期状態に変化したカウンタ内部状態は、不定状態へと変化する。すなわち、ビットカウンタ61は、動作の開始時に不定状態となり、正常な“0”からのカウント動作をしない。
【0065】
次に、本発明をプログラマブルアレイに適用した場合に、ユーザ回路部4において展開されるユーザ回路としての4ビットカウンタの動作の一例について、
図8および10を参照して説明する。
【0066】
ユーザ回路部4にユーザ回路が展開された後、リセット制御部3からリセットパルス信号fが入力されて、4ビットカウンタ61が初期化される。
【0067】
次に、クロック許可パルス信号hが入力されて、ユーザ回路部4内にクロックの入力が開始する。
【0068】
リセットパルス信号が入力されてユーザ回路の初期化が完了した後に、クロックの動作が開始するので、リセットパルス信号の解除とクロックの立ち上がりのエッジとは時間的に分離される。これにより、
図9に例示されるようなタイミングエラーの可能性は排除され、ビットカウンタ61は常に正常なカウント動作を行うことができる。
[フリップフロップの例]
ユーザ回路部4において展開されるユーザ回路として、フリップフロップが構成される場合の動作の一例を、
図11乃至13を参照して説明する。
【0069】
比較のため、
図12においては、本発明が適用されない場合の動作の例を示す。
【0070】
図11は、本実施形態に係るフリップフロップの構成の一例を示す。
【0071】
リセット制御部3から出力されたリセットパルス信号fは、
図11のフリップフロップ91のCLR入力端子に入力される。
【0072】
本発明が適用されない場合、データとクロックの駆動制御が行われないため、ユーザ回路部4内には、クロックラインが、ユーザ回路展開後から、フリップフロップ91のCLK端子に入力されている。また、ユーザ回路展開後から、任意のタイミングでデータが駆動され、D入力端子に入力される。
【0073】
図12は、本発明が適用されない場合の、フリップフロップ91における信号の動作の一例を示す。
【0074】
図12に示されるように、本発明が適用されないプログラマブルアレイにおいては、リセットパルス信号fの解除タイミングとクロックの立ち上がりエッジのタイミングが衝突しうる。さらに、任意のタイミングで入力されるデータのデータラインの変化点とクロックの立ち上がりエッジのタイミングが衝突しうる。このような衝突時には、フリップフロップ内部でタイミングエラーが発生する。このとき、リセットパルス信号fにより不定状態から初期状態に変化したフリップフロップ内部の状態は、それぞれのタイミングで不定状態へと変化する。すなわち、フリップフロップ91は、動作の開始時、及び、データの入力時に不定状態となりうるので、このような状態に変化した場合、フリップフロップは正常な動作をしない。
【0075】
次に、本発明をプログラマブルアレイに適用した場合に、ユーザ回路部4において展開されるユーザ回路としてのフリップフロップの動作の一例について、
図11及び13を参照して説明する。
【0076】
ユーザ回路部4にユーザ回路が展開された後、リセット制御部3からリセットパルス信号fが入力されて、フリップフロップ91が初期化される。
【0077】
次に、データの入力に対して、データ許可パルス信号gが入力されて、データラインが駆動され、ユーザ回路部4内データラインが初期状態から駆動された状態に変化する。
【0078】
さらに、クロック許可パルス信号hが入力されて、クロックラインが駆動され、ユーザ回路部4内にクロックの入力が開始する。
【0079】
リセットパルス信号が入力されてユーザ回路の初期化が完了した後に、データ入力があればデータ許可パルス信号を入力してデータラインの状態を変化させ、さらに、クロック許可パルス信号を入力してクロックの動作が開始するので、リセットパルスの解除、データライン駆動によるデータの変化、クロックライン駆動によるクロックエッジの変化はそれぞれ時間的に分離される。これにより、
図12に例示されるようなタイミングエラーの可能性は排除され、フリップフロップ91は常に正常に動作する。
【0080】
なお、さらにデータラインの状態の変化に対しては、クロックエッジとデータラインの変化点との衝突を避けるために、ユーザ回路部4内クロックラインを再び停止する必要がある。このため、次回以降のデータ許可パルス信号gは、ユーザ回路部4内データラインの状態を変化させる前に、ユーザ回路部4内クロックラインを停止させる。
【0081】
ユーザ回路部4内クロックラインは、クロック許可パルス信号hが入力されれば、再び動作を開始する。クロックラインは、ユーザ回路部4内データラインの変化が完了してから発行されるクロック許可パルス信号hにより動作が開始するので、データラインの変化点とクロックのエッジとの衝突を避けることができる。
【0082】
本実施形態に係るプログラマブルアレイ制御回路は、メモリ部1に予めユーザ回路構成情報を蓄え、コンフィギュレーション制御部2からの指示によりメモリ部1はユーザ回路構成情報をユーザ回路部4に転送する。ユーザ回路部4においてユーザ回路情報の展開が完了したタイミングでコンフィギュレーション制御部2がリセット制御部3にその旨を伝える。リセット制御部3ではコンフィギュレーション制御部2からの指示によりユーザ回路部4に対して、先ず、ユーザ回路の初期化のためのリセットパルス出力、続いてユーザ回路を動作させるためにデータラインの駆動、最後にクロックラインの駆動を行う。
【0083】
これにより、ユーザ回路部4はプログラマブルアレイ内部で生成されるリセットにより初期化され、ユーザ回路として構成されるフリップフロップやカウンタといった素子もタイミングエラーを発生させずに動作することが可能になる。また、ユーザ回路部4に対する外付けの回路からのリセット信号の供給も不要となり、コンフィギュレーション完了直後からユーザ回路は動作可能な状態になる。
[第3の実施形態]
図14は、本発明の第3の実施形態に係るプログラマブルアレイの構成の一例を示すブロック図である。
【0084】
第3の実施形態に係るプログラマブルアレイは、第2の実施形態に係るプログラマブルアレイに、外部とのデータ入出力のためのインタフェース43をユーザ回路部4に追加して具備したものである。この他の構成は第2の実施形態と同一であるので、説明を省略する。
【0085】
第3の実施形態に係るプログラマブルアレイにおいて、ユーザ回路部4が備えるインタフェース43は、例えば、外部プロセッサから出力されるプロセッサコマンドjを取り込む。
【0086】
図15は、第3の実施形態に係るプログラマブルアレイのユーザ回路部4が有するインタフェース43の構成の一例を示す。
【0087】
インタフェース43は、デコード回路部41とリセットパルス生成部42を含む。
【0088】
デコード回路部41は、外部プロセッサからプロセッサコマンドjを入力し、このプロセッサコマンドjをデコードする。デコードにより得られた信号は、リセットコマンド4aとしてリセットパルス生成部に出力される。
【0089】
リセットパルス生成部42は、デコード回路部41から入力されたリセットコマンド4aをもとに、リセットパルスを生成し、リセットパルス4bとしてユーザ回路内に出力する。
【0090】
このとき、ユーザ回路部4内のクロックラインは、リセットパルス4bの解除とクロックのエッジとの衝突を回避するために、クロックを停止する。リセットパルス生成部は、クロック停止パルス信号4cを出力する。
【0091】
第2の実施形態においては、ユーザ回路構成情報が展開された直後のタイミングでのみユーザ回路に対してリセットが発行されたが、本実施形態にかかるプログラマブルアレイにおいては、ユーザ回路が通常動作中であっても、任意のタイミングで外部プロセッサからリセットが可能である。
【0092】
第3の実施形態においては、インタフェースをユーザ回路が備え、外部から入力されるプロセッサコマンドをデコードしたが、これに限定されない。
【0093】
ユーザ回路内にプロセッサを搭載して、外部からの指示に応じてリセットパルスを生成して、ユーザ回路内に出力してもよい。
【0094】
第3の実施形態に係るプログラマブルアレイによれば、例えば混入したノイズなどの要因により、ユーザ回路が不定状態に変化した場合に、初期状態に戻すために、ユーザ回路部からいったんユーザ回路を除去してユーザ回路を再展開する必要はなく、外部からリセットパルスを発行するよう指示すればよい。これにより、不定状態に変化したユーザ回路を迅速に初期状態に復帰させることができる。
【0095】
図16は、外部からプロセッサコマンドjが入力されたときの、インタフェース43内の信号の動作の一例を示す。
【0096】
外部から入力されたプロセッサコマンドjによりリセットパルス4bが発行され、ユーザ回路が初期化される。このとき、ユーザ回路部4内のクロックは停止し、リセットパルスの解除とクロックエッジとの衝突による不定状態の発生が抑制される。クロック許可パルス信号が再び入力されると、クロックの動作が再開する。
【0097】
本実施形態に係るプログラマブルアレイ制御回路は、ユーザ回路に対するリセット出力、データライン駆動、クロックライン駆動を順次行い、タイミングエラーが発生しない最短のタイミングでユーザ回路を使用可能な状態にする。このため、ユーザ回路構成情報が展開された直後からユーザ回路が動作可能である。
【0098】
また、本実施形態に係るプログラマブルアレイ制御回路は、リセット制御部でリセットを生成しているため、ユーザ回路に対する外付けのリセット制御回路が不要である。
【0099】
さらに、本実施形態に係るプログラマブルアレイ制御回路は、メモリ部を不揮発性のメモリで構成して事前にユーザ回路構成情報を蓄えておくことができるため、電源投入後に直ちにユーザ回路構成情報の転送と展開ができる。