説明

プログラマブルロジックデバイスのコンフィギュレーション装置

【課題】プログラマブルロジックデバイスのコンフィギュレーションを信頼性をもって確実に行うことができるコンフィギュレーション装置を提供する。
【解決手段】シリアルフラッシュメモリ402に、同じコンフィギュレーションデータがブロックデータに分けて複数個格納される。コンフィギュレーション制御装置401は、複数個のコンフィギュレーションデータからその一つを選択し、選択されたコンフィギュレーションデータをプログラマブルロジックデバイス400に設定する。そのとき、ブロックデータにエラーが検出された場合、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのないブロックデータが読み出され、エラーが検出されたブロックデータが、そのエラーのないブロックデータに置き換えられて、エラーのないコンフィギュレーションデータがプログラマブルロジックデバイスに設定される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、外部からコンフィギュレーションデータを設定して所定の論理動作を可能にするプログラマブルロジックデバイスをコンフィギュレーションするコンフィギュレーション装置に関する。
【背景技術】
【0002】
図5は、従来のプログラマブルロジックデバイスをコンフィギュレーションする一構成例を示すブロック図で、外部からコンフィギュレーションデータ200(図6)が設定されて所望の論理動作が可能になるプログラマブルロジックデバイス100と、前記プログラマブルロジックデバイス100のコンフィギュレーションを行うコンフィギュレーション制御回路101と、前記コンフィギュレーションデータ200を格納したシリアルフラッシュメモリ102と、外部からコンフィギュレーションデータ200をシリアルフラッシュメモリ102へ書き込むCPU103が設けられる。
【0003】
図6は、従来の前記コンフィギュレーションデータ200の読み出しの対象となるシリアルフラッシュメモリ102のメモリマップである。
【0004】
図7は、コンフィギュレーション制御回路101がプログラマブルロジックデバイス100にコンフィギュレーションデータ200を設定する時のフローチャートである。
【0005】
従来のプログラマブルロジックデバイス100のコンフィギュレーションは、図7に示す通り、最初に電源がオンになると、プログラマブルロジックデバイス100内のコンフィギュレーションメモリが消去され、コンフィギュレーションメモリ消去が完了するとINIT信号(初期化終了信号)をアサートする(ステップ301)。
【0006】
次にコンフィギュレーション制御回路101が、CCLK信号(クロック信号)の立ち上がりエッジ毎にシリアルフラッシュメモリ102にSD信号(送出データ信号)として信号を送出し、READアクセスすると(ステップ302)、シリアルフラッシュメモリ102は図6に示すメモリマップに格納されているプログラマブルロジックデバイス100用のコンフィギュレーションデータ200をRD信号(読み出しデータ信号)として順に読み出し(ステップ303)、コンフィギュレーション制御回路101は、この信号をプログラマブルロジックデバイス100へDIN信号(データ入力信号)として転送する(ステップ304)。
【0007】
このプログラマブルロジックデバイス100でコンフィギュレーションデータ200の読み込みが正常に終了したと判断されると、DONE信号(終了信号)がアサートされ(ステップ305)、コンフィギュレーション制御回路101はコンフィギュレーションを終了させるが(ステップ307)、コンフィギュレーション実行中にプログラマブルロジックデバイス100でコンフィギュレーションデータにエラーが発生すると全てのコンフィギュレーションデータ200を読み込んでもDONE信号がアサートされず、コンフィギュレーションは異常終了となる(ステップ306)。
【0008】
このような従来のプログラマブルロジックデバイスのコンフィギュレーションの例としては、下記の引用文献1などがあげられる。
【特許文献1】特開2001−306404号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、従来のプログラマブルロジックデバイスのコンフィギュレーションは、プログラマブルロジックデバイス100一つに対してシリアルフラッシュメモリ102に格納されているコンフィギュレーションデータ200も一つであったため、シリアルフラッシュメモリ102へのコンフィギュレーションデータ200の書き込みが失敗した場合や、すでに格納されているコンフィギュレーションデータ200に何らかの原因によりビット化け等が発生した場合、電源オンによりコンフィギュレーションを実行すると、プログラマブルロジックデバイス100でコンフィギュレーションデータエラーが発生し、全てのコンフィギュレーションデータ200を読み込んでもDONE信号がアサートにならず、コンフィギュレーションは異常終了となっていたために、そのプログラマブルロジックデバイス100を使用している回路は正常動作せず、フィールドではシステム停止等の障害が発生してしまうという問題があった。
【0010】
また、コンフィギュレーションデータ200は汎用的であるため、シリアルフラッシュメモリ102に格納されたデータを分析すると、プログラマブルロジックデバイス100が動作中にどのような回路を形成して機能しているかが簡単に読み取れてしまい、容易に設計データの秘密が漏れてしまうという問題もあった。
【0011】
本発明は、このような問題点を解決するためになされたもので、プログラマブルロジックデバイスのコンフィギュレーションを信頼性をもって確実に行うことができるプログラマブルロジックデバイスのコンフィギュレーション装置を提供することを課題とする。
【課題を解決するための手段】
【0012】
本発明は、
外部からコンフィギュレーションデータを設定してプログラマブルロジックデバイスをコンフィギュレーションするコンフィギュレーション装置であって、
同じコンフィギュレーションデータを複数個格納するメモリと、
前記複数個のコンフィギュレーションデータからコンフィギュレーションデータを読み出し、該読み出されたコンフィギュレーションデータをプログラマブルロジックデバイスに設定する制御装置とを有し、
前記制御装置は、読み出されたコンフィギュレーションデータにエラーが検出された場合、前記メモリからエラーのない他のコンフィギュレーションデータを読み出し、該エラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定することを特徴とする。
【0013】
また、本発明は、
外部からコンフィギュレーションデータを設定してプログラマブルロジックデバイスをコンフィギュレーションするコンフィギュレーション装置であって、
同じコンフィギュレーションデータをブロックデータに分けて複数個格納するメモリと、
前記複数個のコンフィギュレーションデータからコンフィギュレーションデータを読み出し、該読み出されたコンフィギュレーションデータをプログラマブルロジックデバイスに設定する制御装置とを有し、
前記制御装置は、読み出されたコンフィギュレーションデータのブロックデータにエラーが検出された場合、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのないブロックデータを読み出し、該エラーが検出されたブロックデータを、エラーのないブロックデータに置き換えて、エラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定することを特徴とする。
【発明の効果】
【0014】
本発明によれば以下の効果が得られる。
【0015】
プログラマブルロジックデバイスに設定するコンフィギュレーションデータにエラーが発生した場合であっても、メモリに同じコンフィギュレーションデータを複数個格納させているため、エラーが発生したコンフィギュレーションデータとは異なるエラーのないコンフィギュレーションデータに切り替え、プログラマブルロジックデバイスに該エラーのないコンフィギュレーションデータを設定できるので、コンフィギュレーションが異常終了することを最小限に抑えることができ、プログラマブルロジックデバイスを使用するシステムの信頼性を大幅に向上できる。
【0016】
また、コンフィギュレーションデータをブロックデータに分け、そのブロックデータにエラーが発生したかどうかを検出するため、エラーが発生した場合でも、他のコンフィギュレーションデータのエラーのない同じブロックデータに置き換えて、エラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定するようにしたので、たとえ複数個のコンフィギュレーションデータでエラーが発生したとしても、全ての同じブロックデータにエラーが発生していない限り、正常にコンフィギュレーションを終了させることができる。
【0017】
また、本発明では、メモリに格納されているコンフィギュレーションデータにエラーが発生した場合でも、エラーのあるコンフィギュレーションデータを他のエラーのない正常なコンフィギュレーションデータで書き換えたり、あるいはエラーのあるブロックデータを他のエラーのない正常なコンフィギュレーションデータからブロックデータ単位で書き換え、自動修復するようにしたので、メモリに格納されているコンフィギュレーションデータを常に正常状態に保つことができ、さらにシステムの信頼性を向上できる。
【0018】
また、エラーが発生した場合、従来では、全コンフィギュレーションデータを再度プログラマブルロジックデバイスに設定するようにしていたので、エラーが発生するとコンフィギュレーションにかなりの時間を費やしていたが、本発明ではエラーが発生した場合、コンフィギュレーションデータをブロックデータ単位でエラーのないブロックデータに置き換えて、全体としてエラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定できるので、エラー発生時のコンフィギュレーション時間を大幅に短縮することができる。
【0019】
また、エラーが発生した場合、従来では、メモリに格納されているコンフィギュレーションデータを全て書き換える必要があったため、シリアルフラッシュメモリのデータの書き換えにかなりの時間を費やしていたが、本発明ではエラーが発生した場合、シリアルフラッシュメモリに格納されているコンフィギュレーションデータの中でエラーが発生したブロックデータのみを書き換えるようにしているので、メモリのコンフィギュレーションデータを書き換え、メモリに格納されているデータを修復する時間を大幅に短縮することができる。
【0020】
また、コンフィギュレーションデータをメモリに格納するごとに毎回異なる暗号化コードを設定し、その暗号化コードで暗号化されたアドレスに、コンフィギュレーションデータを格納するようにしているので、メモリに格納されているデータの分析が困難になり、セキュリティーを大幅に向上することができる。
【発明を実施するための最良の形態】
【0021】
以下、図面に示す実施例に基づいて本発明を詳細に説明する。
【実施例】
【0022】
図1は、本発明の一実施例を示すコンフィギュレーション装置のブロック図である。図1において、400は、コンフィギュレーションデータが設定され所定の論理動作を行うプログラマブルロジックデバイス、401は、コンフィギュレーションデータをプログラマブルロジックデバイスに設定するコンフィギュレーション制御装置で、コンフィギュレーション制御装置401は、制御回路401a、コマンド生成回路401b、アドレス生成回路401c、パラレル/シリアル変換回路401d、401j、エラー検出回路401e、DIN信号禁止用AND回路401f、CCLK信号禁止用AND回路401g、シリアル/パラレル変換回路401h、FIFO回路401i、レジスタ回路401k、暗号化回路401m、選択回路401n、チェックビット付加回路401oから構成される。
【0023】
402は、プログラマブルロジックデバイス400に設定されるコンフィギュレーションデータを複数個格納するシリアルフラッシュメモリとして構成されたメモリで、複数個のコンフィギュレーションデータは、後述するようにすべて同じコンフィギュレーションデータとなっている。
【0024】
403はクロック源でクロック信号CLKを出力する。405aはコンフィギュレーションが完了したことを通知するDONE信号(終了信号)、405bはプログラマブルロジックデバイス400がコンフィギュレーションデータを受信できるようになったことを通知するINIT信号(初期化終了信号)、405cはプログラマブルロジックデバイス400に設定するコンフィギュレーションデータのDIN信号(データ入力信号)、405d及び406dは基準となるクロックのCCLK信号(クロック信号)、406aはシリアルフラッシュメモリ402を制御するコマンドとアドレス情報及び書き込み時のデータをシリアルに変換したSD信号(送出データ信号)、406bはシリアルフラッシュメモリ402を選択したことを通知するCS信号(チップセレクト信号)、406cはメモリに格納されているデータのRD信号(読み出しデータ信号)である。
【0025】
404はコンフィギュレーションデータをシリアルフラッシュメモリ402へ書き込みを行うCPUで、407aはCPU404からコンフィギュレーション制御装置401に送出するデータ信号である。
【0026】
図2は、シリアルフラッシュメモリ402に格納されたデータを示すメモリマップである。図示した例では、コンフィギュレーションデータ(1)500、コンフィギュレーションデータ(2)501.....コンフィギュレーションデータ(n)502が格納されており、これらの格納された各コンフィギュレーションデータ(1)〜(n)は全て同じ内容のコンフィギュレーションデータである。
【0027】
図3は、コンフィギュレーション時コンフィギュレーション制御装置401が実行するフローチャートであり、図4は、外部のCPU404からシリアルフラッシュメモリ402にコンフィギュレーションデータを書込む時のフローチャートである。
【0028】
まず、本発明では、図4の流れに沿って、外部のCPU404からシリアルフラッシュメモリ402にコンフィギュレーションデータが書き込まれる。このとき、セキュリティを高めるために、書き込みアドレスが暗号化され、暗号化されたアドレスに書き込みが行われる。この暗号化のために、ステップ700で処理が開始された後、ステップ701において、暗号化コードが決定される。この暗号化コードは、CPU404がコンフィギュレーションデータを格納するごとに毎回違う暗号化コードに設定され、たとえば、暗号化コードとしては、書き込みアドレスを所定アドレスオフセットさせる、あるいは書き込みアドレスの最下位ビットと最上位ビットを入れ替えるなどの暗号化コードが考えられる。
【0029】
ステップ702では、data信号407aとしてCPU404から送出されてくる暗号化コードをコンフィギュレーション制御装置401のレジスタ回路401kに書き込む。
【0030】
ステップ703では、CPU404からコンフィギュレーション制御装置401のレジスタ回路401kに書き込まれた暗号化コードをシリアルフラッシュメモリ402の予め決められた領域に格納するとともに、ステップ704で、暗号化コードを暗号化回路401mに設定する。
【0031】
ステップ705では、コンフィギュレーションデータがシリアルフラッシュメモリ402に書き込まれる。この書き込みアドレスは、暗号化回路401mで今回の書き込み時に(ステップ701)設定される暗号化コードで暗号化され、たとえば、書き込みアドレスの最下位ビットと最上位ビットを入れ替えるような暗号化コードが用いられる。この暗号化されたアドレス信号はパラレル/シリアル変換回路401dでシリアル化される。また、コンフィギュレーションデータも、CPU404からdata信号としてレジスタ回路401k、選択回路401n、チェックビット付加回路401oを介してパラレル/シリアル変換回路401dでシリアル化され、シリアルフラッシュメモリ402の暗号化されたアドレスにコンフィギュレーションデータがブロック単位で順次書き込まれる。
【0032】
ステップ706では、CPU404から最後のデータを受信したかどうかが判断される。YESならステップ707へ進み終了。NOならステップ705へ戻る。
【0033】
シリアルフラッシュメモリ402に書き込まれるコンフィギュレーションデータは、図2に示したように、複数個(m個)のブロックデータに分けられブロック単位で書き込まれる。本発明では、同じコンフィギュレーションデータが複数個(n個)書き込まれる。これが、図2でコンフィギュレーションデータ(1)、(2).....(n)として図示されている。各コンフィギュレーションデータが同じであることは、各コンフィギュレーションデータがブロックデータ単位でみて同じであることを意味し、たとえば、コンフィギュレーションデータ(1)、(2).....(n)の各k(k=1〜m)番目のブロックデータはそれぞれ同じデータとなっている。
【0034】
各コンフィギュレーションデータ(1)、(2).....(n)の先頭アドレスA1、A2、.....Anは、それぞれ上述した暗号化コードで暗号化されたアドレスである。ただし、図2では、データの格納状況を示すため、アドレスA1、A2、.....Anは、暗号化されていないアドレスで示されている。
【0035】
図4のステップ706での判断は、図2でコンフィギュレーションデータ(1)、(2).....(n)の最後のブロックデータ(m番目)が書き込まれたかどうかの判断となる。
【0036】
なお、図2で402aは、暗号化コードを示し、この暗号化コードは、コンフィギュレーションデータを、図4に沿って格納するごとに毎回違う暗号化コードが設定されるので、シリアルフラッシュメモリが異なるごとに異なる暗号化コードとなり、また同じシリアルフラッシュメモリでも、初期化して次に書き込むときは、前回とは異なる暗号化コードが用いられる。
【0037】
次に、このようにしてシリアルフラッシュメモリ402に書き込まれたコンフィギュレーションデータをプログラマブルロジックデバイス400に設定し、プログラマブルロジックデバイス400をコンフィギュレーションする流れを、図3を参照して説明する。
【0038】
まず、電源をオンにして(ステップ600)、ステップ601において、プログラマブルロジックデバイス400内のコンフィギュレーションメモリが消去されたことを示すINIT信号(初期化終了信号)405bがアサートになったか否かが制御回路401aにより検出される。INIT信号405bがアサートになると、ステップ602に移行する。
【0039】
ステップ602では、制御回路401aが、暗号化コード402aが格納されている暗号化コード格納アドレスをアドレス生成回路401cに送出する。コマンド生成回路401bは読み出しコマンドをパラレル/シリアル変換回路401dに出力し、アドレス生成回路401cは暗号化コード格納アドレスを暗号化回路401mに送出する。このとき暗号化回路401mは未設定状態にあり、この状態では、アドレスはまだ暗号化されず、暗号化されていないアドレスがパラレル/シリアル変換回路401dに出力される。パラレル/シリアル変換回路401dは、読み出しコマンドと、暗号化コード格納アドレスを、それぞれシリアルデータに変換し、SD信号(送出データ信号)406aとしてシリアルフラッシュメモリ402に送出する。シリアルフラッシュメモリ402には、制御回路401aからCS信号(チップセレクト信号)406bが送出されるので、暗号化コード402aが格納されているアドレスにREADアクセスが行われ、暗号化コード402aがRD信号(読み出しデータ信号)として読み出される。
【0040】
ステップ603では、ステップ602でRD信号として読み出された暗号化コードを、シリアル/パラレル変換回路401h、FIFO回路401iを介して暗号化回路401mに設定する。この暗号化コードにより、以後のシリアルフラッシュメモリ402のREADアクセス時のアドレスは、図4のコンフィギュレーションデータ書き込み時のアドレスと同じ暗号化コードで暗号化される。
【0041】
ステップ604では、シリアルフラッシュメモリ402からコンフィギュレーションデータが順次読み出される。このために、コマンド生成回路401bは、読み出しコマンドを生成し、アドレス生成回路は、コンフィギュレーションデータ(1)が格納されているアドレスA1を生成する。このとき、生成されたアドレスA1は、暗号化回路401mにより上述した暗号化コードで暗号化される。パラレル/シリアル変換回路401dは、読み出しコマンドと暗号化されたアドレスA1をシリアルデータに変換し、SD信号406aとしてCS信号406bと共にシリアルフラッシュメモリ402に対して送出する。
【0042】
シリアルフラッシュメモリ402がSD信号406a及びCS信号406bを受信すると、暗号化されたアドレスA1に格納されているコンフィギュレーションデータ(1)500にREADアクセスが行われ、そのコンフィギュレーションデータがRD信号406cとして読み出される。
【0043】
ステップ605では、シリアルフラッシュメモリ402からRD信号406cとして読み出されたコンフィギュレーションデータ(1)500が、シリアル/パラレル変換回路401hで、ブロック単位毎にパラレル信号に変換され、FIFO回路401iに書き込まれると共にエラー検出回路401eでブロック単位でビット化けなどのエラーが発生したか否かが検出される。
【0044】
エラーが発生していない場合はステップ606に進み、DIN信号禁止用AND回路401f及びCCLK信号禁止用AND回路401gを開放とし、コンフィギュレーション制御装置401はFIFO回路401iからコンフィギュレーションデータを順次読み出し、シリアルのDIN信号(入力データ信号)405cとしてプログラマブルロジックデバイス400に送出する。プログラマブルロジックデバイス400は、このようにして読み出されたコンフィギュレーションデータをCCLK信号(クロック信号)405dに同期して取り込んでロードし、プログラマブルロジックデバイス400にコンフィギュレーションデータ(1)500がブロック単位で設定され、DONE信号がアサートされる(ステップ609のYES)。
【0045】
一方、エラーが発生した場合はステップ607に進み、DIN信号禁止用AND回路401f及びCCLK信号禁止用AND回路401gを禁止とし、プログラマブルロジックデバイス400に送出するシリアルのDIN信号405c及びCCLK信号405dを停止させ、コンフィギュレーションを一時中断させる。FIFO回路401iでは、エラーが発生したブロックのコンフィギュレーションデータをリセットする。
【0046】
ステップ608では、制御回路401aはエラー検出回路401eからの信号に基づき、エラーが発生したブロックデータのアドレス検出を行い、その情報を記憶する。図2のシリアルフラッシュメモリマップに示す他のコンフィギュレーションデータ(2)501のブロックデータで、エラーが発生したコンフィギュレーションデータ(1)のブロックデータに対応するブロックデータのアドレスがアドレス生成回路401cで生成されるとともに、その情報が記憶される。例えば、コンフィギュレーションデータ(1)をロード中に、ブロックデータBLOCK(1−3)にエラーが発生した場合には、コンフィギュレーションデータ(2)のブロックデータBLOCK(2−3)のアドレスを生成して、該アドレスに格納されているブロックデータBLOCK(2−3)を読み出す(ステップ604)。この読み出されたブロックデータBLOCK(2−3)が、エラー検出回路401eでエラーがあるかどうかが検出され(ステップ605)、エラーがなければ、エラーが検出されたブロックデータBLOCK(1−3)が、このエラーのないブロックデータBLOCK(2−3)に置き換えられる。
【0047】
一方、ブロックデータBLOCK(2−3)にも、エラーが検出されたときは、他のコンフィギュレーションデータ(n)(n=3、.....)のブロックデータBLOCK(n−3)が格納されているアドレスを生成して、該ブロックデータを読み出し、それにエラーがない場合は、エラーが検出されたブロックデータBLOCK(1−3)が、エラーのないブロックデータBLOCK(n−3)に置き換えられて、プログラマブルロジックデバイス400にロードされ、設定される。
【0048】
その後、コンフィギュレーションデータ(n)のブロックデータBLOCK(n−3)の後のブロックデータが順次プログラマブルロジックデバイス400にロードされていく。このロードの過程で、コンフィギュレーションデータ(n)の他のブロックデータにもエラーが検出された場合には、上記と同様にして、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのないブロックデータに置き換えられる。
【0049】
このように、ロードしようとしているコンフィギュレーションデータのブロックデータにエラーが検出された場合には、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのない正常なブロックデータが読み出され、エラーが検出されたブロックデータが、エラーのないブロックデータに置き換えられ、エラーのないコンフィギュレーションデータがプログラマブルロジックデバイスに設定される。
【0050】
ステップ609では、プログラマブルロジックデバイス400が必要な回路規模だけコンフィギュレーションデータを正常に受信すると、コンフィギュレーション制御装置401に対してDONE信号(終了信号)405aをアサートする。この時コンフィギュレーション制御装置401は制御回路401aでDONE信号405aがアサートされたことを確認する。
【0051】
ステップ611では、制御回路401aでエラー発生の履歴を読み出し、その情報をユーザーに対して通知する。
【0052】
ステップ612では、制御回路401aでエラー発生の履歴を読み出し、エラーの発生したブロックデータの有無を判断する。
【0053】
エラーが発生したブロックデータがない場合、ステップ618に進みコンフィギュレーション制御装置401はコンフィギュレーションを終了する。
【0054】
一方、エラーが発生したブロックデータがある場合、コンフィギュレーション制御装置401は、ステップ613以降の処理を行い、シリアルフラッシュメモリ402を自動修復する。
【0055】
ステップ613では、アドレス生成回路401cが制御回路401aの履歴にあるエラーが発生したブロックデータのアドレス情報を受信し、図2のシリアルフラッシュメモリマップに示すコンフィギュレーションデータ(1)500、コンフィギュレーションデータ(2)501、.....コンフィギュレーションデータ(n)502の中から正常に取得できた同一ブロックデータのアドレスを生成し、そのアドレスにREADアクセスする。
【0056】
ステップ614では、図2のシリアルフラッシュメモリマップに示す通り、READアクセスされたブロックデータが読み出される。
【0057】
ステップ615では、シリアルフラッシュメモリ402から読み出したブロックデータをシリアル/パラレル変換回路401hでパラレル信号に変換し、FIFO回路401iに書き込む。
【0058】
ステップ616では、コマンド生成回路401bで制御回路401aからの信号により書き込み用のコマンド情報が生成され、エラーの発生したブロックデータのアドレスにWRITEアクセスが行われ、エラーの発生したブロックデータが、エラーのない正常なブロックデータに書き換えられる。例えば、コンフィギュレーションデータ(2)のブロックデータBLOCK(2−2)でエラーが検出された場合には、このブロックデータが、コンフィギュレーションデータ(1)のブロックデータBLOCK(1−2)が正常として、その正常なブロックデータで書き換えられる。
【0059】
ステップ617では、書き込み動作が正常に終了した場合、該当するブロックのエラー発生履歴をリセットし、ステップ612へ進む。そして、すべてのエラーのあるブロックデータを、正常な他のブロックデータで書き換え、シリアルフラッシュメモリ402を自動修復する。
【0060】
このようにして、シリアルフラッシュメモリに格納されているコンフィギュレーションデータにブロック単位でエラーが発生した場合でも、エラーのあるブロックデータが、他のコンフィギュレーションデータの対応する正常なブロックデータで書き換えられるので、シリアルフラッシュメモリに格納されているコンフィギュレーションデータは常に正常状態になっており、システムの信頼性が向上する。
【0061】
なお、上述した実施例では、ブロックデータにエラーが検出された場合には、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのないブロックデータを読み出し、エラーが検出されたブロックデータを、エラーのないブロックデータに置き換えて、コンフィギュレーションデータをプログラマブルロジックデバイスにロードしたが、コンフィギュレーションデータのブロックデータにエラーがある場合には、他のブロックデータも異常であることが多い。したがって、ブロックデータの一つにエラーがある場合、そのコンフィギュレーションデータ全体を破棄して、他のコンフィギュレーションデータを読み込むようにしてもよい。たとえば、コンフィギュレーションデータ(1)のいずれか一つのブロックデータにエラーが検出された場合、プログラマブルロジックデバイス400にすでにロードされているコンフィギュレーションデータ(1)を消去し、コンフィギュレーションデータ(n)(n=2、.....)からエラーのないコンフィギュレーションデータをシリアルフラッシュメモリ402から読み出し、そのエラーのないコンフィギュレーションデータをプログラマブルロジックデバイス400に設定するようにしてもよい。
【0062】
このとき、シリアルフラッシュメモリ402の自動修復は、エラーが検出されたコンフィギュレーションデータ全体を、エラーのない他のコンフィギュレーションデータで書き換えて行うようにする。
【0063】
なお、上述した実施例では、コンフィギュレーションデータを複数個格納するメモリをシリアルフラッシュメモリで説明しているが、汎用フラッシュメモリを使用しその機能を実現しても良い。
【0064】
また、エラーの検出方法はCRC、パリティチェック、チェックサム等で実現可能である。
【図面の簡単な説明】
【0065】
【図1】本発明のコンフィギュレーション装置の構成を示すブロック図である。
【図2】コンフィギュレーションデータをメモリに格納したときのマップを示す説明図である。
【図3】コンフィギュレーションデータをシリアルフラッシュメモリから読み出し、プログラマブルロジックデバイスに設定する流れを説明するフローチャートである。
【図4】コンフィギュレーションデータをシリアルフラッシュメモリに書き込む流れを示すフローチャートである。
【図5】従来のコンフィギュレーション装置の構成を示すブロック図である。
【図6】従来のコンフィギュレーションデータのメモリ格納状態を示す説明図である。
【図7】従来のコンフィギュレーションデータをプログラマブルロジックデバイスに設定する流れを説明するフローチャートである。
【符号の説明】
【0066】
400 プログラマブルロジックデバイス
401 コンフィギュレーション制御装置
402 シリアルフラッシュメモリ
403 クロック源

【特許請求の範囲】
【請求項1】
外部からコンフィギュレーションデータを設定してプログラマブルロジックデバイスをコンフィギュレーションするコンフィギュレーション装置であって、
同じコンフィギュレーションデータを複数個格納するメモリと、
前記複数個のコンフィギュレーションデータからコンフィギュレーションデータを読み出し、該読み出されたコンフィギュレーションデータをプログラマブルロジックデバイスに設定する制御装置とを有し、
前記制御装置は、読み出されたコンフィギュレーションデータにエラーが検出された場合、前記メモリからエラーのない他のコンフィギュレーションデータを読み出し、該エラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定することを特徴とするプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項2】
前記制御装置は、エラーが検出されたコンフィギュレーションデータを、エラーのない他のコンフィギュレーションデータに書き換え、メモリに格納されているデータを修復することを特徴とする請求項1に記載のプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項3】
外部からコンフィギュレーションデータを設定してプログラマブルロジックデバイスをコンフィギュレーションするコンフィギュレーション装置であって、
同じコンフィギュレーションデータをブロックデータに分けて複数個格納するメモリと、
前記複数個のコンフィギュレーションデータからコンフィギュレーションデータを読み出し、該読み出されたコンフィギュレーションデータをプログラマブルロジックデバイスに設定する制御装置とを有し、
前記制御装置は、読み出されたコンフィギュレーションデータのブロックデータにエラーが検出された場合、エラーが検出されたブロックデータに対応する他のコンフィギュレーションデータのブロックデータでエラーのないブロックデータを読み出し、該エラーが検出されたブロックデータを、エラーのないブロックデータに置き換えて、エラーのないコンフィギュレーションデータをプログラマブルロジックデバイスに設定することを特徴とするプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項4】
前記制御装置は、エラーが検出されたコンフィギュレーションデータのブロックデータを、エラーのない他のコンフィギュレーションデータのブロックデータに書き換え、メモリに格納されているデータを修復することを特徴とする請求項3に記載のプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項5】
前記コンフィギュレーションデータが暗号化コードで暗号化されたアドレスに格納され、前記制御装置は、該暗号化コードを取得して、暗号化されたアドレスにアクセスしてコンフィギュレーションデータを読み出すことを特徴とする請求項1から4のいずれか1項に記載のプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項6】
前記コンフィギュレーションデータをメモリに格納するとき、格納ごとに異なる暗号化コードが用いられることを特徴とする請求項5に記載のプログラマブルロジックデバイスのコンフィギュレーション装置。
【請求項7】
前記制御装置は、エラーが発生した場合、エラー情報をユーザーに対して通知することを特徴とする請求項1から6のいずれか1項に記載のプログラマブルロジックデバイスのコンフィギュレーション装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2007−265056(P2007−265056A)
【公開日】平成19年10月11日(2007.10.11)
【国際特許分類】
【出願番号】特願2006−89755(P2006−89755)
【出願日】平成18年3月29日(2006.3.29)
【出願人】(000003399)JUKI株式会社 (1,557)
【Fターム(参考)】