(57)【特許請求の範囲】
【請求項１】
回路の書き換えが可能な集積回路と、
前記集積回路の回路情報を記憶する第１の記憶領域と第２の記憶領域とを備える記憶手段と、
を有する情報処理装置であって、
前記集積回路は、
電源が投入されたときに、前記第１の記憶領域に記憶された回路情報に基づき、前記集積回路の回路を構成する回路構成手段と、
前記第１の記憶領域に記憶された回路情報で回路が構成された場合に前記第２の記憶領域に正常な回路情報が記憶されているのかを確認する確認手段と、を有し、
前記回路構成手段は、
前記確認手段により、前記第２の記憶領域に正常な回路情報が記憶されていると確認されたときは、前記第２の記憶領域に記憶された回路情報に基づき、前記集積回路の回路を書き換えることを特徴とする情報処理装置。
【請求項２】
前記記憶手段は、
前記第２の記憶領域に前記集積回路の回路情報が記憶されているのかを示す情報を記憶する第３の記憶領域と、
前記第２の記憶領域に記憶された回路情報が正常な回路であるのかを確認するための情報を記憶する第４の記憶領域と、をさらに備え、
前記確認手段は、
前記第３の記憶領域に記憶された情報と、前記第４の記憶領域に記憶された情報と、に基づき、前記第２の記憶領域に正常な回路情報が記憶されているのかを確認することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶手段は、
複数の前記第２の記憶領域を有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記記憶手段のインタフェースは、
パラレルインタフェースであることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
電源が投入されたときに、記憶手段の第１の記憶領域に記憶された回路情報に基づき、集積回路の回路を回路構成手段により構成するステップと、
前記第１の記憶領域に記憶された回路情報で回路が構成された場合に、前記記憶手段の第２の記憶領域に正常な回路情報が記憶されているかを確認手段により確認するステップと、
前記確認手段により、前記第２の記憶領域に正常な回路情報が記憶されていると確認されたときは、前記第２の記憶領域に記憶された回路情報に基づき、前記集積回路の回路を前記回路構成手段により書き換えるステップと、
を有することを特徴とする書換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部論理回路の書き換えが可能な集積回路に関する。
【背景技術】
【０００２】
ＦＰＧＡ等の、内部回路を不揮発メモリの内容に応じて変更可能なＬＳＩにおいて、製品に組み込んだまま不揮発メモリの内容を変更し、ＦＰＧＡの内部回路の構成を変更する技術がある。
【０００３】
例えば、ＦＰＧＡとプロセッサにより構成される機器において、ネットワークからのＦＰＧＡ用データを受信し、プロセッサにてＦＰＧＡの内部回路の構成を変更するなどの技術がある。特許文献１には、ネットワーク経由で、ＦＰＧＡのコンフィグレーションメモリを書き換える目的で、ＦＰＧＡからのリセット信号に遅延を持たせるリセット回路から、コンフィグレーションのリセットをかける構成とし、ＦＰＧＡへ入力される特定パターンのデータを検出して、それをトリガーとして、メモリに回路データを書き込み、リセット回路からリセット信号が入力されるタイミングで取り込んで、ＦＰＧＡのコアロジックを書き換える方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ＦＰＧＡ自身が、ＦＰＧＡの回路情報を保持している不揮発メモリを書き換えることで、ＦＰＧＡの回路構成を変更する場合、書き換え中に、電源が遮断されたりすると、不揮発メモリの内容が不完全な状態となり、ＦＰＧＡが正常に動作することができなくなる。
【０００５】
また、回路情報を保持している不揮発メモリ中の別領域に新たな回路情報を追加する場合は、不揮発メモリから読み出す回路情報のアドレスを変更する必要があるため、ＦＰＧＡが搭載された基板のスイッチを操作する等の処理が必要である。このため、例えば、遠隔操作では、ＦＰＧＡの回路情報を安全に変更することができない。つまり、ネットワーク経由では、ＦＰＧＡの回路情報を安全に変更することができない。
【０００６】
そこで本発明は、上記問題点に鑑みてなされたもので、ＦＰＧＡの回路情報を含むメモリの書き換えを行う際に、電源遮断等の異常が発生しても安全に元の状態に復旧できる情報処理装置及び書換方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明における情報処理装置は、回路の書き換えが可能な集積回路と、前記集積回路の回路情報を記憶する第１の記憶領域と第２の記憶領域とを備える記憶手段と、を有する情報処理装置であって、前記集積回路は、電源が投入されたときに、前記第１の記憶領域に記憶された回路情報に基づき、前記集積回路の回路を構成する回路構成手段と、前記第１の記憶領域に記憶された回路情報で回路が構成された場合に前記第２の記憶領域に正常な回路情報が記憶されているのかを確認する確認手段と、を有し、前記回路構成手段は、前記確認手段により、前記第２の記憶領域に正常な回路情報が記憶されていると確認されたときは、前記第２の記憶領域に記憶された回路情報に基づき、前記集積回路の回路を書き換えることを特徴とする。
【発明の効果】
【０００９】
本発明により、ＦＰＧＡの回路情報を含むメモリの書き換えを行う際に、電源遮断等の異常が発生しても安全に元の状態に復旧することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る情報処理装置の構成例である。
【図２】本発明の実施形態に係るＦｌａｓｈＲＯＭのメモリマップの例を示す図である。
【図３】本発明の実施形態におけるＦｌａｓｈＲＯＭとＦＰＧＡの関係を説明する図である。
【発明を実施するための形態】
【００１１】
本発明の実施の形態を説明する。本発明は、ＦＰＧＡの回路情報を含む不揮発メモリ書換処理に際して、以下の特徴を有する。要するに、ＦＰＧＡの回路情報を新しくする際、新しい回路情報を元の回路情報を含むメモリ領域に上書きするのではなく、元の回路情報とは別のメモリ領域に書き込み、起動時は、元の回路情報にて起動し、追加の新しい回路情報領域に正しく書き込まれた回路情報があるかどうかを検査し、あれば回路情報を含むメモリ領域にてコンフィグレーションメモリのアドレス端子を制御し、新しいコンフィグレーションデータ領域で、再コンフィグレーション可能にすることで、メモリに新しいコンフィグレーションデータを書き込む際に電源遮断等が発生した場合でも安全に復旧することができることが特徴になっている。上記記載の本発明の特徴について、以下の図面を用いて詳細に解説する。
【００１２】
＜情報処理装置１００の構成例＞
本発明はＦＰＧＡを搭載した情報処理装置に関する。図１は、本発明の実施形態に係る情報処理装置１００の構成例を示す図である。本実施形態に係る情報処理装置１００は、ＦＰＧＡ１０１と、ＦｌａｓｈＲＯＭ１０２と、ＳＤＲＡＭ１０３と、ネットワークコントローラ１０４と、を有して構成される。
【００１３】
ＦＰＧＡ１０１は、情報処理装置１００のコントローラである。ＦＰＣＡ１０１は、内部にプロセッサ１０５を備える。プロセッサ１０５は、情報処理装置１００全体の制御を行う。プロセッサ１０５は、ソフトマクロでもハードマクロでも良い。
【００１４】
ＦｌａｓｈＲＯＭ１０２は、ＦＰＧＡ１０１の回路情報およびプロセッサ１０５の命令コード及びデータが格納されている。
【００１５】
図２は、ＦｌａｓｈＲＯＭ１０２のメモリマップの例を示す図である。ＦＰＧＡ１０１の初期起動回路情報は、ＦｌａｓｈＲＯＭ１０２の領域１に格納されている。追加の回路情報は領域２、領域３へ格納される。領域２（領域３）に回路が正しく書き込まれていることを検査するためのチェックサムは、領域５（領域７）に格納される。領域２、３に追加回路情報があることを示す起動コードは、領域４（領域６）に格納される。プロセッサ１０５の命令コード及びデータは領域８に格納される。なお、図２に示した例では、初期起動回路情報領域以外の追加領域として領域２と領域３を示しているが、追加回路情報領域は２に限るものではなく、２以上であっても良い。
【００１６】
ＳＤＲＡＭ１０３は、プロセッサ１０５が情報を処理するために実行する命令及びデータを格納する。
【００１７】
ネットワークコントローラ１０４は、外部ネットワークとの通信を行うために使用する。ネットワークコントローラ１０４は、コネクタ１０６を外部ネットワークと接続する。
【００１８】
情報処理装置１００は、このような構成により、電源投入後、正常に起動できた場合は、通常状態の制御として各種処理を行う。
【００１９】
＜情報処理装置１００における処理動作例＞
次に、本実施形態に係る情報処理装置１００の電源が投入され、稼動状態となるまでのフローを示す。
【００２０】
（ステップＳ１０１）電源ＯＮにより、ＦＰＧＡ１０１がＦｌａｓｈＲＯＭ１０２の０番地から初期起動回路情報を読み出し、ＦＰＧＡ１０１内部の回路を構成するメモリに書き込んで行く。
【００２１】
（ステップＳ１０２）回路情報がＦＰＧＡ１０１に正常に書き込まれ、起動すると、ＦＰＧＡ１０１は、ＦｌａｓｈＲＯＭ１０２の領域４からデータを読み出し、そのデータが起動コードでなければ、ＦｌａｓｈＲＯＭ１０２の領域２に回路情報がないと判断し、ＦＰＧＡ１０１は、初期起動回路情報のまま、通常動作を行う。
【００２２】
（ステップＳ１０３）起動コードと一致した場合は、ＦｌａｓｈＲＯＭ１０２の領域２のチェックサムを算出する。
【００２３】
（ステップＳ１０４）ＦＰＧＡ１０１は、次に、ＦｌａｓｈＲＯＭ１０２の領域４に格納されているチェックサムを読み出す。
【００２４】
（ステップＳ１０５）ＦＰＧＡ１０２は、ステップＳ１０３で算出したチェックサムと、ステップＳ１０４で読み出したチェックサムと、を比較し、合致すれば、領域２に正常な回路情報があると判断し、ＦｌａｓｈＲＯＭ１０２の領域２が０番地になるように、ＦｌａｓｈＲＯＭ１０２のアドレス端子を操作する。
【００２５】
具体例として、図３に示すように、アドレス線が０〜２０までの２ＭＢのＦｌａｓｈＲＯＭの場合で、領域１が５１２ＫＢであり、領域２と領域４と領域５とが合わせて５１２ＫＢであり、領域３と領域６と領域７とが合わせて５１２ＫＢであり、領域８が５１２ＫＢである場合について説明する。つまり、パラレルインタフェースであるＦｌａｓｈＲＯＭについて説明する。図３に示すように領域２を０番地とするために、ＦＰＧＡ１０１は、ＤＦＦ１、２０１を１にセットし、ＤＦＦ２、２０２を０にセットする。なお、電源投入時は、ＲｅｓｅｔＩＣ３００によって、ＤＦＦ１、２０１と、ＤＦＦ２、２０２と、は０にセットされており、ＦＰＧＡ１０１のＳＥＬ０とＳＥＬ１とは、ハイインピーダンス状態のため、各セレクタはプルダウンにより０を選択している。これによって、ＦｌａｓｈＲＯＭ１０２のアドレス１９とアドレス２０とに与えられる信号は０となり、ＦＰＧＡ１０１は、ＦｌａｓｈＲＯＭ１０２の０番地から回路情報を読み出すようになっている。
【００２６】
（ステップＳ１０６）ステップＳ１０５にて、ＦｌａｓｈＲＯＭ１０２のアドレス１９は１に、アドレス２０は０に、なっており、この状態で、ＦＰＧＡ１０１は、再度回路情報の更新を行う。
【００２７】
具体的にはＦＰＧＡ１０１が持つ回路情報更新用の端子を自らセットする。または、ＦＰＧＡ１０１自身の電源を一旦遮断し、再度起動することで回路情報更新を促す。
【００２８】
（ステップＳ１０７）ステップＳ１０６によって、再度回路情報がＦＰＧＡ１０１に書き込まれる際、ＦｌａｓｈＲＯＭ１０２のアドレス１９は１に、アドレス２０は０になっているため、ＦＰＧＡ１０１の回路情報は、領域２から読み出されることになる。これによって、ＦＰＧＡ１０１は、領域２に格納された回路情報２にて正常に起動することが可能となる。
【００２９】
このように、本実施形態では、ＦＰＧＡの回路情報を含むメモリには、初期起動用の回路情報が書き込まれており、電源投入時はこの初期起動回路にて起動行う。初期起動回路は、メモリ中の初期起動回路情報（以降メモリ領域Ａとする）とは別の領域（以降メモリ領域Ｂとする）に正常な回路情報が含まれているか検査する手段を持っている。メモリ領域Ｂに何も書き込まれていない、あるいは異常な回路が書き込まれていると判断した際は、初期起動回路にてそのままシステムの動作を継続する。また、メモリ領域Ｂに正常な回路が書き込まれていると判断した際は、メモリ領域ＢがＦＰＧＡの内部回路を構成できるようなアドレスに割り付けるためメモリのアドレス端子を入れ替える。その後、ＦＰＧＡの内部回路を再度構成しなおすように外部回路を操作することで、メモリ領域Ｂの回路情報でＦＰＧＡが起動する。
【００３０】
次に、新たに回路情報を書き込む場合について説明する。
【００３１】
（ステップＳ２０１）ＦＰＧＡ１０１内のプロセッサ１０５は、ネットワークコントローラ１０４を介し、ネットワーク経由で、新しい回路情報を取得し、ＳＤＲＡＭ１０３に書き込む。
【００３２】
（ステップＳ２０２）プロセッサ１０５は、ＦｌａｓｈＲＯＭ１０２の領域２に、ＳＤＲＡＭ１０３に格納した新しい回路情報を書き込む前に、領域２、領域４、領域５を消去する際は、まず領域４を消去し、領域２、領域５と消去する。これにより、安全にＦＰＧＡ１０１が起動できる。もし、領域２を先に消している最中に電源が遮断した場合、領域４が残っていると、ＦＰＧＡ１０１は、領域２には回路情報があると判断してしまい、チェックサムの計算を行う。万が一、チェックサムが一致してしまった場合は、不正な回路が書き込まれエラーとなってしまうためである。
【００３３】
（ステップＳ２０３）プロセッサ１０５は、ＦｌａｓｈＲＯＭ１０２の領域２に、ＳＤＲＡＭ１０３に格納した新しい回路情報を書き込むときは、まず、はじめに、領域２に回路情報を書き込む。続いて、チェックサムを計算し、領域５にチェックサムを書き込む。最後に、領域４に起動コードを書き込む。この順番で書き込むことで、万が一書き込み中に電源が遮断されても領域４に起動コードがなければ、領域２には回路情報が含まれないと判断できるので、領域１の回路情報で正常にＦＰＧＡ１０１は起動できる。
【００３４】
（ステップＳ２０４）回路情報の書き込みが完了した後は、図３に示すように、領域２を０番地とするために、ＦＰＧＡ１０１は、ＤＦＦ１、２０１を１にセットし、ＤＦＦ２、２０２を０にセットする。なお、電源投入時は、ＲｅｓｅｔＩＣ３０によって、ＤＦＦ１、２０１と、ＤＦＦ２、２０２と、は０にセットされており、ＦＰＧＡ１０１のＳＥＬ０とＳＥＬ１とは、ハイインピーダンス状態のため、各セレクタはプルダウンにより０を選択している。これによって、ＦｌａｓｈＲＯＭ１０２のアドレス１９とアドレス２０に与えられる信号は０となり、ＦＰＧＡ１０１は、ＦｌａｓｈＲＯＭ１０２の０番地から回路情報を読み出すようになっている。
【００３５】
（ステップＳ２０５）ＦｌａｓｈＲＯＭ１０２のアドレス１９は１に、アドレス２０は０になっており、この状態で、ＦＰＧＡ１０１は、再度回路情報の更新を行う。
【００３６】
具体的には、ＦＰＧＡ１０１が持つ回路情報更新用の端子を自らセットする。または、ＦＰＧＡ１０１自身の電源を一旦遮断し、再度起動することで回路情報更新を促す。
【００３７】
（ステップＳ２０６）ステップＳ２０５によって、再度回路情報がＦＰＧＡ１０１に書き込まれる際、ＦｌａｓｈＲＯＭ１０２のアドレス１９は１に、アドレス２０は０になっているため、ＦＰＧＡ１０１の回路情報は、領域２から読み出されることになる。これによって、ＦＰＧＡ１０１は、領域２に格納された回路情報２にて正常に起動することが可能となる。
【００３８】
このように、本実施形態では、回路情報を新しくする場合は、メモリ中の初期起動回路情報（以降メモリ領域Ａとする）は書き換えずに、メモリ領域Ａとは別の領域（以降メモリ領域Ｂとする）へ新しい回路情報を書き込む。これによって、正常に動作することが保障されている回路が書き込まれているメモリ領域Ａを消去することなく、新しい回路情報をメモリ領域Ｂへ追加できる。このため、メモリに新しい回路情報を書き込んでいる最中に電源が遮断でしても、次回起動時は初期起動用の回路情報でＦＰＧＡが起動し、新しい回路情報の入ったメモリ領域を検査し、異常であると判断できるため、初期起動用の回路で正常に動作することができる。
【００３９】
以上より、本発明によれば、ＦＰＧＡに新しい回路を追加する際、電源遮断等が発生しても、元の回路に影響を与えることがなく、また元の回路で安全に再起動することができるようになる。このため、ＦＰＧＡの回路情報をネットワーク経由で安全に書き換えることが可能となる。
【００４０】
上述した実施形態における処理動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成によって実行することも可能である。
【００４１】
なお、ソフトウェアによる処理を実行する場合には、処理シーケンスを記録したプログラムが格納されているＲＯＭ（Read Only Memory）から、専用のハードウェアに組み込まれているコンピュータ内のメモリ（ＲＡＭ）にプログラムを読み込んで実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【００４２】
例えば、プログラムは、記録媒体としてのハードディスクやＲＯＭに予め記録しておくことが可能である。あるいは、プログラムは、フロッピー（登録商標）ディスク等の磁気ディスク、ＣＤ（Compact Disc）、ＤＶＤ(Digital Versatile Disc)等の光ディスク、ＭＯ（Magneto Optical）ディスク等の光磁気ディスクなどのリムーバブル記録媒体に、一時的、あるいは、永続的に格納（記録）しておくことが可能である。
【００４３】
このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することが可能である。
【００４４】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ（Local Area Network）、インターネットといったネットワークを介して、コンピュータに有線で転送したりし、コンピュータでは、転送されてきたプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることが可能である。
【００４５】
また、上記実施形態で説明した処理動作に従って時系列的に実行されるのみならず、処理を実行する装置の処理能力、あるいは、必要に応じて並列的にあるいは個別に実行するように構築することも可能である。
【００４６】
また、上記実施形態で説明したシステムは、複数の装置の論理的集合構成にしたり、各装置の機能を混在させたりするように構築することも可能である。
【００４７】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範囲な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更が可能である。
【００４８】
また、本発明における情報処理装置は、前記記憶手段は、前記第２の記憶領域に前記集積回路の回路情報が記憶されているのかを示す情報を記憶する第３の記憶領域と、前記第２の記憶領域に記憶された回路情報が正常な回路であるのかを確認するための情報を記憶する第４の記憶領域と、をさらに備え、前記確認手段は、前記第３の記憶領域に記憶された情報と、前記第４の記憶領域に記憶された情報と、に基づき、前記第２の記憶領域に正常な回路情報が記憶されているのかを確認するようにしても良い。
【００４９】
また、本発明における情報処理装置は、前記記憶手段は、複数の前記第２の記憶領域を有するようにしても良い。
【００５０】
また、本発明における情報処理装置は、前記記憶手段のインタフェースは、パラレルインタフェースであるようにしても良い。
【００５１】
また、本発明における情報処理装置は、前記集積回路は、前記確認手段を備えるようにしても良い。
【００５２】
また、本発明における情報処理装置は、前記集積回路は、前記回路構成手段を備えるようにしても良い。
【符号の説明】
【００５３】
１００    情報処理装置
１０１    ＦＰＧＡ
１０２    ＦｌａｓｈＲＯＭ
１０３    ＳＤＲＡＭ
１０４    ネットワークコントローラ
１０５    プロセッサ
１０６    コネクタ
【先行技術文献】
【特許文献】
【００５４】
【特許文献１】特開２００２−３０５４３８号公報
【図１】
0005552930.tif 000002
【図２】
0005552930.tif 000003
【図３】
0005552930.tif 000004