(57)【要約】【課題】設計データやソフトウェアが読み出せないセキュリティー性の高い半導体集積回路、データ転送システム、及びデータ転送方法を提供する。【解決手段】暗号化された設計データが外部から入力され、かつ、予め設定された暗号コードに基づいて、暗号化された設計データを解読するデコーダ回路３と、デコーダ回路３の出力を受けて、設計データを配線の接続情報に変換して出力するコンフィグレーション回路５と、内部にＲＡＭ及びＲＡＭデータに応じて接続がなされる配線及びＲＡＭデータに応じて論理が決まるコンフィギャブル・ロジック・ブロックを有し、コンフィグレーション回路５の出力を受けて、論理回路構築が行われるＦＰＧＡ回路６とを備えることを特徴とする半導体集積回路。【選択図】　　　図１
2004007472.tif 000002
【特許請求の範囲】
【請求項１】
暗号解読コードを記憶する暗号解読コードブロックと、
前記暗号解読コードブロックに接続され、外部ＲＯＭからの暗号データを前記暗号解読コードに基いて解読するデコーダ回路と、
前記デコーダ回路の出力が入力されるコンフィグレーション回路と、
前記コンフィグレーション回路に接続され、前記コンフィグレーション回路に基いて回路構成が決定されるＦＰＧＡ回路と、
前記ＦＰＧＡ回路に接続され、回路動作が規定される内部回路
とを備えることを特徴とする半導体集積回路。
【請求項２】
暗号解読コードを記憶する暗号解読コードブロックと、
前記暗号解読コードブロックに接続され、外部ＲＯＭからの暗号ソフトウェアデータを前記暗号解読コードに基いて解読するデコーダ回路と、
前記デコーダ回路の出力が入力されるＣＰＵと、
前記ＣＰＵに接続され、前記ＣＰＵによって、回路動作が規定される内部回路
とを備えることを特徴とする半導体集積回路。
【請求項３】
前記ＦＰＧＡ回路は、内部にＲＡＭ及びＲＡＭデータに応じて接続がなされる配線及びＲＡＭデータに応じて論理が決まるコンフィギャブル・ロジック・ブロックを有し、前記コンフィグレーション回路の出力を受けて、論理回路構築が行われることを特徴とする請求項１記載の半導体集積回路。
【請求項４】
前記デコーダ回路は、暗号化されたソフトウェアデータが外部から入力され、かつ、予め設定された暗号解読コードに基いて、前記暗号化されたソフトウェアデータを解読すると共に、前記ＣＰＵは前記デコーダ回路において復号化されたソフトウェアデータが入力されて動作を開始することを特徴とする請求項２記載の半導体集積回路。
【請求項５】
暗号化されたＦＰＧＡ設計情報を記録する第１の外部ＲＯＭを集積化した第１の半導体チップと、
暗号解読コードを記憶する第１の暗号解読コードブロックと、前記第１の暗号解読コードブロックに接続され、前記第１の外部ＲＯＭからの暗号データを前記暗号解読コードに基いて解読する第１のデコーダ回路と、前記第１のデコーダ回路の出力が入力されるコンフィグレーション回路と、前記コンフィグレーション回路に接続され、前記コンフィグレーション回路に基いて回路構成が決定されるＦＰＧＡ回路と、前記ＦＰＧＡ回路に接続され、回路動作が規定される内部回路とを集積化した第２の半導体チップ
とを備えることを特徴とするデータ転送システム。
【請求項６】
前記第１の外部ＲＯＭと前記第１のデコーダ回路との間に接続され、暗号化されたＦＰＧＡ設計情報が伝達されるビット数に応じた本数のデータ配線を更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項７】
暗号化されたＣＰＵソフトウェア設計情報を記録する第１の外部ＲＯＭを集積化した第１の半導体チップと、
暗号解読コードを記憶する暗号解読コードブロックと、前記暗号解読コードブロックに接続され、前記第１の外部ＲＯＭからの暗号ソフトウェアデータを前記暗号解読コードに基いて解読するデコーダ回路と、前記デコーダ回路の出力が入力されるＣＰＵと、前記ＣＰＵに接続され、前記ＣＰＵによって、回路動作が規定される内部回路とを集積化した第２の半導体チップ
とを備えることを特徴とするデータ転送システム。
【請求項８】
前記第１及び第２の半導体チップを搭載する実装基板を更に備えることを特徴とする請求項５又は７に記載のデータ転送システム。
【請求項９】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記デコーダ回路に接続され、前記暗号解読コードに基いて前記デコーダ回路において解読された前記ＣＰＵソフトウェア設計情報に基いて動作するＣＰＵ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１０】
前記第１の外部ＲＯＭと前記デコーダ回路との間に接続され、前記暗号化されたソフトウェアデータが伝達されるビット数に応じた本数のデータ配線を更に備えることを特徴とする請求項７記載のデータ転送システム。
【請求項１１】
前記第２の外部ＲＯＭは、前記第１の外部ＲＯＭが集積化された前記第１の半導体チップと同一の半導体チップに集積化されたことを特徴とする請求項９記載のデータ転送システム。
【請求項１２】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記ＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記コンフィグレーション回路に接続され、ＦＰＧＡ回路から構成される第２の暗号解読コードブロックと、
前記第２のデコーダ回路に接続され、前記暗号解読コードに基いて前記第２のデコーダ回路において解読された前記ＣＰＵソフトウェア設計情報に基いて動作するＣＰＵ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１３】
前記第２の半導体チップはＡＳＩＣであることを特徴とする請求項５記載のデータ転送システム。
【請求項１４】
第３の半導体チップに集積化され、前記ＦＰＧＡ回路に接続されるＡＳＩＣを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１５】
第３の半導体チップに集積化され、前記ＦＰＧＡ回路の外部に縦続接続される複数段のＡＳＩＣを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１６】
第３の半導体チップに集積化され、前記ＦＰＧＡ回路に外部接続されるＦＰＧＡ回路を更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１７】
第３の半導体チップに集積化され、前記ＦＰＧＡ回路の外部に縦続接続される複数段のＦＰＧＡ回路を更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項１８】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＦＰＧＡ設計情報を記録する第２の外部ＲＯＭと、
前記デコーダ回路に接続され、第３の半導体チップに集積化されたＡＳＩＣ
とを更に備えることを特徴とする請求項７記載のデータ転送システム。
【請求項１９】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＦＰＧＡ設計情報を記録する第２の外部ＲＯＭと、
前記デコーダ回路に接続され、第３の半導体チップに集積化されたＦＰＧＡ回路
とを更に備えることを特徴とする請求項７記載のデータ転送システム。
【請求項２０】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
第３の半導体チップに集積化され、前記デコーダ回路に接続され、前記暗号解読コードに基いて前記デコーダ回路において解読された前記ＣＰＵソフトウェア設計情報に基いて動作するＣＰＵを内蔵するＡＳＩＣ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２１】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
第３の半導体チップに集積化され、前記デコーダ回路に接続され、前記暗号解読コードに基いて前記デコーダ回路において解読された前記ＣＰＵソフトウェア設計情報に基いて動作するＣＰＵ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２２】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＦＰＧＡ設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記暗号化されたＦＰＧＡ設計情報を記録する前記第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記ＦＰＧＡ回路に接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化される第１のＡＳＩＣと、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化される第２のＡＳＩＣ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２３】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＦＰＧＡ設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記暗号化されたＦＰＧＡ設計情報を記録する前記第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記ＦＰＧＡ回路に外部接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化されるＦＰＧＡ回路と、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化されるＦＰＧＡ回路
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２４】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記ＣＰＵソフトウェア設計情報を記録する外部ＲＯＭに接続される第２のデコーダ回路と、
前記ＦＰＧＡ回路に外部接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化される第１のＡＳＩＣと、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化される第２のＡＳＩＣ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２５】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記ＣＰＵソフトウェア設計情報を記録する前記第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記ＦＰＧＡ回路に外部接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化されるＦＰＧＡ回路と、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化されるＣＰＵ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２６】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記ＣＰＵソフトウェア設計情報を記録する前記第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記第２の半導体チップ上に集積化され、前記コンフィグレーション回路に接続され、ＦＰＧＡ回路から構成される第２の暗号解読コードブロックと、
前記ＦＰＧＡ回路に外部接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化される第１のＡＳＩＣと、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化される第２のＡＳＩＣ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２７】
前記第２の半導体チップとは異なる半導体チップに集積化され、暗号化されたＣＰＵソフトウェア設計情報を記録する第２の外部ＲＯＭと、
前記第２の半導体チップ上に集積化され、前記ＣＰＵソフトウェア設計情報を記録する前記第２の外部ＲＯＭに接続される第２のデコーダ回路と、
前記第２の半導体チップ上に集積化され、前記コンフィグレーション回路に接続され、ＦＰＧＡ回路から構成される第２の暗号解読コードブロックと、
前記ＦＰＧＡ回路に接続され、前記第２の半導体チップとは異なる第３の半導体チップ上に集積化されるＦＰＧＡ回路と、
前記第２のデコーダ回路に接続され、前記第２の半導体チップとは異なる第４の半導体チップ上に集積化されるＣＰＵ
とを更に備えることを特徴とする請求項５記載のデータ転送システム。
【請求項２８】
半導体集積回路内の暗号解読コードブロックに暗号解読コードを記録する手順と、
第１の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、
前記半導体集積回路内のデコーダ回路が、前記第１の外部ＲＯＭからの暗号化された前記ＲＯＭデータを取り込み復号化する手順と、
暗号化された前記ＲＯＭデータをすべて取り込んだかどうかを前記デコーダ回路が判断する手順と、
未終了であるならば、前記第１の外部ＲＯＭから暗号化された前記ＲＯＭデータを取り込み復号化する手順に戻る手順と、
終了であるならば、ＦＰＧＡ回路をユーザーモードに移行し、前記半導体集積回路の稼動を開始する手順
とを備えることを特徴とするデータ転送方法。
【請求項２９】
前記半導体集積回路に前記外部ＲＯＭから暗号化された設計情報を転送する手順と、
解読された前記設計情報に基づいて、前記ＦＰＧＡ回路の回路構築を行う手順とを更に備えることを特徴とする請求項２８記載のデータ転送方法。
【請求項３０】
半導体集積回路内の暗号解読コードブロックに暗号解読コードを記録する手順と、
第１の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、
前記半導体集積回路内のＣＰＵが、前記第１の外部ＲＯＭに対してＲＯＭアドレスを要求し、前記ＲＯＭアドレスを決定する手順と、
前記半導体集積回路内のデコーダ回路が、暗号化された前記ＲＯＭデータを復号化する手順と、
復号化された前記ＲＯＭデータに基づき、前記ＣＰＵを実行させる手順
とを備えることを特徴とするデータ転送方法。
【請求項３１】
前記半導体集積回路に前記外部ＲＯＭから暗号化された前記ＣＰＵソフトウェアデータを転送する手順と、
解読された前記ソフトウェアデータに基づいて、前記ＣＰＵを動作させる手順とを更に備えることを特徴とする請求項３０記載のデータ転送方法。
【請求項３２】
半導体集積回路内の暗号解読コードブロックに暗号解読コードを記録する手順と、
第２の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、
ＣＰＵが、前記第２の外部ＲＯＭに対して、ＲＯＭアドレスを要求し、前記ＲＯＭアドレスを決定する手順と、
前記デコーダ回路が、前記第２の外部ＲＯＭからの暗号化された前記ＲＯＭデータを復号化する手順と、
復号化された前記ＲＯＭデータに基づき、前記ＣＰＵを実行させる手順
とを更に備えることを特徴とする請求項２８記載のデータ転送方法。
【請求項３３】
前記半導体集積回路内のデコーダ回路が、前記第１の外部ＲＯＭからの暗号化された前記ＲＯＭデータを取り込み復号化する手順と、
復号化されたデータをコンフィグレーション回路から第２の暗号解読コードブロック内のＦＰＧＡ回路に転送し、記録する手順と、
第２の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、
ＣＰＵが、前記第２の外部ＲＯＭに対して、ＲＯＭアドレスを要求し、前記ＲＯＭアドレスを決定する手順と、
第２のデコーダ回路が、暗号化された前記ＲＯＭデータを復号化する手順と、
復号化された前記ＲＯＭデータに基づき、前記ＣＰＵを実行させる手順
とを更に備えることを特徴とする請求項２８記載のデータ転送方法。
【請求項３４】
前記第１の外部ＲＯＭ及び前記第２の外部ＲＯＭの変更され、暗号化されたＣＰＵソフトウェアデータをインターネット上にＷＥＢ登録する手順と、
前記インターネット上にＷＥＢ登録された前記第１の外部ＲＯＭ及び前記第２の外部ＲＯＭの前記暗号化されたＣＰＵソフトウェアデータをそれぞれ、前記第１の外部ＲＯＭ及び前記第２の外部ＲＯＭにダウンロードする手順
とを更に備えることを特徴とする請求項２８又は請求項３０に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路に係り、特に外部ＲＯＭからデータを入力させる半導体集積回路、この半導体集積回路を用いたデータ転送システム、及び半導体集積回路へのデータ転送方法に関する。
【０００２】
【従来の技術】
使用者が自分で設計して、動作させることが可能なプログラム可能なロジックデバイスであるＦＰＧＡ（Ｆｉｅ１ｄ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｇａｔｅ　Ａｒｒａｙ）回路を混載した半導体集積回路が開発されている。その集積度向上の魅力から最近では、ＲＡＭ型ＦＰＧＡ回路が多く用いられる。ＲＡＭ型ＦＰＧＡ回路では、使用者が電源投入のたびに、回路構成をその都度設定でき、動的に回路構成を変化できる。しかし、ＲＡＭ型ＦＰＧＡ回路では、ＳＲＡＭ（Ｓｔａｔｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）を通常用いており、揮発性メモリの特性により、回路情報は電源切断に伴い消滅する。そのため、電源投入のたびに、速やかに外部ＲＯＭ（Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）から回路情報を書き込む動作であるコンフィグレーションが行われる。ここで、コンフィグレーションとは、回路に固有のプログラミングデータを１個又は複数のＦＰＧＡに入力して、ロジックモジュールをその周辺の内部接続パストランジスタに接続して機能を規定する動作である。コンフィグレーションの後すぐに、半導体集積回路の初期化が行われ、次に、半導体集積回路の通常動作が行われることになる。
【０００３】
【特許文献】
特開２００２−５０９５６号公報
【０００４】
【発明が解決しようとする課題】
以上のような従来の半導体集積回路及びデータ転送システムでは、以下の課題が生じる。ＲＡＭに替えて、不揮発性メモリ（ＲＯＭ）を用いたＦＰＧＡ回路では、不揮発性メモリに書き込んだ設計データは外部から容易に読出し可能である。従って、ＲＯＭ型ＦＰＧＡ回路の場合には、設計データを読出して解析が可能である。ＲＯＭ型不揮発性メモリを用いたＦＰＧＡ回路では、最近の技術として設計データを書き込んだ後に、設計データ読出し端子の、出力バッファの特性を変更して、外から内部の不揮発性メモリ（ＲＯＭ）の中身を読み出せないようにする手法が現れている。不揮発性メモリ（ＲＯＭ）を用いて設計データを読み出せないようにする手法は、不揮発性メモリ（ＲＯＭ）型ＦＰＧＡ回路を混載した集積回路製品には適用可能であるが、ＲＡＭ型ＦＰＧＡ回路を混載した半導体集積回路製品には適用できない。なぜなら、揮発性メモリ（ＲＡＭ）に記憶された回路情報は電源切断の際に、消滅してしまうので、外部ＲＯＭから回路情報を電源投入時に入力することが欠かせないからである。
【０００５】
ここで問題となるのは、ＦＰＧＡ回路は汎用的であるため、外部ＲＯＭに記録されたデータを分析すると、ＦＰＧＡ回路が活動中にどのような回路を形成して機能しているかが、簡単に読みとれてしまうことである。このように、ＲＡＭ型ＦＰＧＡ回路を用いると、外部ＲＯＭに設計データを格納し、実装基板上にＦＰＧＡ回路と外部ＲＯＭの両方を搭載することになるので、外部ＲＯＭのデータを分析することにより、容易に設計データの秘密が暴かれてしまう。このような事態はデッドコピーをも可能としてしまう。従って、ＲＡＭ型ＦＰＧＡ回路を混載した半導体集積回路においても、設計データの機密性を保つことが可能なＦＰＧＡ回路を混載した半導体集積回路が望まれている。
【０００６】
同様に、ＣＰＵを内蔵し、外部ＲＯＭからソフトウェアを取り込んで動作する半導体集積回路及びシステムでは、外部ＲＯＭのデータを分析することにより、容易にソフトウェア設計データの秘密を暴くことが可能である。ＣＰＵの命令は、一般的に公開されているで、ＲＯＭデータを分析すれば、ソフトウェアの解読は容易に可能となる。従って、設計データやソフトウェアが読み出せないセキュリティー性の高い半導体集積回路が望まれている。
【０００７】
本発明の目的は、設計データやソフトウェアが読み出せないセキュリティー性の高い半導体集積回路、この半導体集積回路へのデータ転送システム、及びデータ転送方法を提供することにある。
【０００８】
【課題を解決するための手段】
本発明の第１の特徴は、（イ）暗号解読コードを記憶する暗号解読コードブロックと、（ロ）暗号解読コードブロックに接続され、外部ＲＯＭからの暗号データを暗号解読コードに基いて解読するデコーダ回路と、（ハ）デコーダ回路の出力が入力されるコンフィグレーション回路と、（ニ）コンフィグレーション回路に接続され、コンフィグレーション回路に基いて回路構成が決定されるＦＰＧＡ回路と、（ホ）ＦＰＧＡ回路に接続され、回路動作が規定される内部回路とを備える半導体集積回路であることを要旨とする。
【０００９】
本発明の第２の特徴は、（イ）暗号解読コードを記憶する暗号解読コードブロックと、（ロ）暗号解読コードブロックに接続され、外部ＲＯＭからの暗号ソフトウェアデータを暗号解読コードに基いて解読するデコーダ回路と、（ハ）デコーダ回路の出力が入力されるＣＰＵと、（ニ）ＣＰＵに接続され、ＣＰＵによって、回路動作が規定される内部回路とを備える半導体集積回路であることを要旨とする。
【００１０】
本発明の第３の特徴は、（イ）暗号化されたＦＰＧＡ設計情報を記録する第１の外部ＲＯＭを集積化した第１の半導体チップと、（ロ）暗号解読コードを記憶する第１の暗号解読コードブロックと、第１の暗号解読コードブロックに接続され、第１の外部ＲＯＭからの暗号データを暗号解読コードに基いて解読する第１のデコーダ回路と、第１のデコーダ回路の出力が入力されるコンフィグレーション回路と、コンフィグレーション回路に接続され、コンフィグレーション回路に基いて回路構成が決定されるＦＰＧＡ回路と、ＦＰＧＡ回路に接続され、回路動作が規定される内部回路とを集積化した第２の半導体チップとを備えるデータ転送システムであることを要旨とする。
【００１１】
本発明の第４の特徴は、（イ）暗号化されたＣＰＵソフトウェア設計情報を記録する第１の外部ＲＯＭを集積化した第１の半導体チップと、（ロ）暗号解読コードを記憶する暗号解読コードブロックと、暗号解読コードブロックに接続され、第１の外部ＲＯＭからの暗号ソフトウェアデータを暗号解読コードに基いて解読するデコーダ回路と、デコーダ回路の出力が入力されるＣＰＵと、ＣＰＵに接続され、ＣＰＵによって、回路動作が規定される内部回路とを集積化した第２の半導体チップとを備えるデータ転送システムであることを要旨とする。
【００１２】
本発明の第５の特徴は、（イ）半導体集積回路内の暗号解読コードブロックに暗号解読コードを記録する手順と、（ロ）第１の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、（ハ）半導体集積回路内のデコーダ回路が、第１の外部ＲＯＭからの暗号化されたＲＯＭデータを取り込み復号化する手順と、（ニ）暗号化されたＲＯＭデータをすべて取り込んだかどうかをデコーダ回路が判断する手順と、（ホ）未終了であるならば、第１の外部ＲＯＭから暗号化された前記ＲＯＭデータを取り込み復号化する手順に戻る手順と、（へ）終了であるならば、ＦＰＧＡ回路をユーザーモードに移行し、半導体集積回路の稼動を開始する手順とを備えるデータ転送方法であることを要旨とする。
【００１３】
本発明の第６の特徴は、（イ）半導体集積回路内の暗号解読コードブロックに暗号解読コードを記録する手順と、（ロ）第１の外部ＲＯＭに暗号化されたＲＯＭデータを書き込む手順と、（ハ）半導体集積回路内のＣＰＵが、第１の外部ＲＯＭに対してＲＯＭアドレスを要求し、ＲＯＭアドレスを決定する手順と、（ニ）半導体集積回路内のデコーダ回路が、暗号化されたＲＯＭデータを復号化する手順と、（ホ）復号化されたＲＯＭデータに基づき、ＣＰＵを実行させる手順とを備えるデータ転送方法であることを要旨とする。
【００１４】
【発明の実施の形態】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術思想を具体化するための装置や方法を例示するものであって、この発明の技術思想を下記のものに特定するものではない。この発明の技術思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１５】
まず、本発明の第１乃至第１３の実施の形態の説明に入る前に、本発明に至る経緯として、途中で検討した比較例１及び比較例２を説明する。
【００１６】
本発明は、半導体集積回路、データ転送システム、及びデータ転送方法に係る。以下の実施の形態においては、第１の実施の形態においては、ＦＰＧＡ回路を混載した半導体集積回路及びデータ転送システムについて説明する。第２の実施の形態においては、ＣＰＵを混載した半導体集積回路及びデータ転送システムについて説明する。第３の実施の形態においては、暗号化対象処理回路を混載したＡＳＩＣ及びＡＳＩＣシステムについて説明する。第４の実施の形態においては、ＦＰＧＡ回路を混載したＡＳＩＣ及びＡＳＩＣシステムについて説明する。第５の実施の形態においては、ＣＰＵを混載したＡＳＩＣ及びＡＳＩＣシステムについて説明する。第６乃至第７の実施の形態においては、ＦＰＧＡ回路及びＣＰＵを混載したＡＳＩＣ及びＡＳＩＣシステムについて説明する。第８の実施の形態においては、ＦＰＧＡを混載したデータ転送システムにおいて、更に別チップのＡＳＩＣ、ＦＰＧＡ回路等が実装された例について説明する。第９の実施の形態においては、ＣＰＵを混載したデータ転送システムにおいて、外部ＲＯＭが複数個存在し、更に別チップのＡＳＩＣ、ＦＰＧＡ回路が実装された例について説明する。第１０乃至第１３の実施の形態においては、ＦＰＧＡを混載したデータ転送システムにおいて、外部ＲＯＭが複数個存在し、更に別チップのＡＳＩＣ、ＦＰＧＡ回路、ＣＰＵ等が実装された例について説明する。
【００１７】
（比較例１）
ここで、本発明の比較例としてのＲＡＭ型ＦＰＧＡ混載のデータ転送システムは、図３４に示すように、実装基板５５上に実装された外部ＲＯＭ５０と半導体集積回路５１とから構成されたハイブリッド集積回路である。外部ＲＯＭ５０は、ＦＰＧＡ回路５３を混載したモノリシック集積回路である半導体集積回路５１に接続されている。外部ＲＯＭ５０は半導体集積回路５１に対して、データをパラレルに出力する。半導体集積回路５１は、外部ＲＯＭ５０とデータバス配線５６を介して接続されたコンフィグレーション回路５２と、コンフィグレーション回路５２に接続されたＦＰＧＡ回路５３と、内部回路５４から構成される。
【００１８】
外部ＲＯＭ５０内には、ＲＡＭ型ＦＰＧＡ回路５３の設計データが格納されている。半導体集積回路５１内には、外部ＲＯＭ５０からの設計データが入力されるコンフィグレーション回路５２が設けられている。このコンフィグレーション回路５２からの回路情報をＦＰＧＡ回路５３が受け取り、ＦＰＧＡ回路５３内の回路が構成される。ＦＰＧＡ回路５３は、設計者の希望に合った機能回路を実現することができる。
【００１９】
この希望に合った機能回路が形成された後に、ＦＰＧＡ回路５３は、半導体集積回路５１内において集積化された内部回路５４との間で回路動作を実行する。内部回路５４内には、用途に合わせて決まる汎用マイクロプロセッサコア、ＤＳＰコア、メモリ、インターフェイス回路などから選択される回路が含まれている。更に、実装基板５５上には、ＦＰＧＡ設計情報が外部ＲＯＭ５０から伝達されるビット数に応じた本数のデータバス配線５６が、外部ＲＯＭ５０と半導体集積回路５１との間において接続されている。
【００２０】
（比較例２）
比較例２としてのＣＰＵコアを混載したデータ転送システムは、図３５に示すように、実装基板６６上に実装された外部ＲＯＭ６０と半導体集積回路６１から構成されたハイブリッド集積回路である。外部ＲＯＭ６０は、ＣＰＵ６２混載の形式を有するモノリシック集積回路である半導体集積回路６１に接続されている。外部ＲＯＭ６０は、半導体集積回路６１の入出力ポートに１対１で対応するポートを有した、半導体記憶装置となっていて、半導体集積回路６１に対して、データをパラレルに出力する。半導体集積回路６１は、外部ＲＯＭとアドレスバス配線６３及びデータバス配線６４を介して接続されたＣＰＵ６２と、内部回路６５を構成要素として含む。
【００２１】
外部ＲＯＭ６０内には、ＣＰＵ６２のソフトウェアデータが格納されている。外部Ｒ０Ｍ６０から出力されるのソフトウェアデータはＣＰＵ６２に入力される。更に、ＣＰＵ６２と外部ＲＯＭ６０との間はアドレスバス配線６３を介して直接接続されており、ＣＰＵ６２はアドレスを指定して外部ＲＯＭ６０に対してデータを要求する。外部ＲＯＭ６０は指定されたアドレスをＣＰＵ６２へデータバス配線６４を介して提出する。
【００２２】
このＣＰＵ６２が動作を開始した後に、半導体集積回路６１内に内部回路６５との間で回路動作を行う。内部回路６５内には、用途に合せて決まる汎用マイクロプロセッサコア、ＤＳＰコア、メモリ、インターフェイス回路などから選択される回路素子を持っている。更に、実装基板６６上には、暗号化されたＣＰＵソフトウェア情報が外部ＲＯＭ６０から伝達されるビット数に応じた本数のデータバス配線６４と、アドレスバス配線６３とが外部ＲＯＭ６０と半導体集積回路６１との間に接続されている。
【００２３】
（第１の実施の形態）
本発明の第１の実施の形態に係る半導体集積回路及びデータ転送システムは、図１に示すように、実装基板８上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ１と、ＦＰＧＡ回路６を混載した半導体集積回路２とから構成されたハイブリッド集積回路である。更に、第２の半導体チップ上に集積化された半導体集積回路２は、外部ＲＯＭ１とデータバス配線９を介して接続されたデコーダ回路３と、デコーダ回路３に接続された暗号解読コードブロック４と、更にデコーダ回路３に接続されたコンフィグレーション回路５と、コンフィグレーション回路５に接続されたＦＰＧＡ回路６と、ＦＰＧＡ回路６に接続された内部回路７を混載したモノリシック集積回路である。外部ＲＯＭ１は半導体集積回路２とは別の第１の半導体チップ上に集積化され、半導体集積回路２の入出力ポートに１対１で対応するポートを有する半導体記憶装置であり、半導体集積回路２に対して、データをパラレルに出力する。尚、図１の例では実装基板８上に第１の半導体チップ及び第２の半導体チップがともに実装される例が示されているが、半田バンプ等を介して、第１の半導体チップ及び第２の半導体チップが多層構造として、実装されていても良いことは明らかである。
【００２４】
外部ＲＯＭ１内には、ＲＡＭ型ＦＰＧＡ回路６に用いられる暗号化された設計データが格納されている。従って、半導体集積回路２内のデコーダ回路３には、外部ＲＯＭ１からの暗号化設計データが、データバス配線９を介して、入力される。暗号解読コードは、半導体集積回路２を設計する時点で決められていて、半導体集積回路２内の暗号解読コードブロック４内に記録され、埋め込まれる。
【００２５】
デコーダ回路３には、暗号解読コードブロック（記録部）４から暗号解読コードが入力される。この暗号解読コードを用いてデコーダ回路３は、外部ＲＯＭ１から入力された暗号化設計データを復号化して、設計データを半導体集積回路２内に設けられたコンフィグレーション回路５へ出力する。本発明の第１の実施の形態においては、外部ＲＯＭ１とコンフィグレーション回路５との間に、デコーダ回路３を設け、デコーダ回路３において、外部ＲＯＭ１からの設計データを受け取り、コンフィグレーション回路５に設計データを送出している。
【００２６】
コンフィグレーション回路５からの回路情報をＦＰＧＡ回路６が受け取り、ＦＰＧＡ回路６内の回路が構成される。
【００２７】
このＦＰＧＡ回路６が形成された後に、半導体集積回路２内の内部回路７との間で回路動作を行う。内部回路７内には、用途に合わせて決まる汎用マイクロプロセッサコア、ＤＳＰコア、インターフェイス回路などから選択される回路が含まれる。このように半導体集積回路２は、ＦＰＧＡ回路６と内部回路７との混載形式で形成されている。このため、その用途は広い。外部ＲＯＭ１及び半導体集積回路２は同じ実装基板８上に搭載されてデータ転送システムを構成する。更に、実装基板８上においては、暗号化されたＦＰＧＡ設計情報が外部ＲＯＭ１から伝達されるビット数に応じた本数のデータバス配線９が外部ＲＯＭ１と半導体集積回路２との間に接続されている。
【００２８】
次に、図２を用いて、発明の第１の実施の形態に係る半導体装置及びデータ転送システムの動作方法を説明する。
【００２９】
（ａ）まず第１ステップＳＴ１において、半導体集積回路２内のＦＰＧＡ回路６の設計者がＦＰＧＡ回路６の設計を行う。
【００３０】
（ｂ）次に、第２ステップＳＴ２において、設計されたＦＰＧＡ回路６をＲＯＭデータとして作成する。
【００３１】
（ｃ）次に、第３ステップＳＴ３において、半導体集積回路２の製造者から入手した暗号化コードの採用を決定する。
【００３２】
（ｄ）次に、第４ステップＳＴ４において、暗号化コードに基づいてＲＯＭデータを暗号化する。
【００３３】
（ｅ）次に、第５ステップＳＴ５において、暗号化されたＲＯＭデータを外部ＲＯＭ１へ書き込む。
【００３４】
（ｆ）次に、第６ステップＳＴ６において、外部ＲＯＭ１を実装基板８上に実装する。
【００３５】
（ｇ）次に、第７ステップＳＴ７において、実装基板８に対して、電源を投入する。
【００３６】
（ｈ）次に、第８ステップＳＴ８において、外部ＲＯＭ１から暗号化されたＲＯＭデータを半導体集積回路２のデコーダ回路３へ取り込む。デコーダ回路３において、暗号化されたＲＯＭデータを回路設計データとして解読し、コンフィグレーション回路５へ出力する。コンフィグレーション回路５において、ＦＰＧＡ回路６の回路作成を行わせる指示をＦＰＧＡ回路６に出力する。
【００３７】
（ｉ）次に、第９ステップＳＴ９において、ＦＰＧＡ回路６において、復号化されたデータを受信する。
【００３８】
（ｊ）次に、第１０ステップＳＴ１０において、ＦＰＧＡ回路６において、復号化された最後のデータを受信したかどうかを判断する。ＹＥＳであるならば、第１１ステップＳＴ１１に進み、ＮＯであるならば、第８ステップＳＴ８に戻る。
【００３９】
（ｋ）次に、第１１ステップＳＴ１１において、ＦＰＧＡ回路６をユーザーモードにシフトさせる。
【００４０】
（ｌ）次に、第１２ステップＳＴ１２において、半導体集積回路２の動作を開始させる。
【００４１】
（ｍ）上記のステップは、電源供給停止により終了する。
【００４２】
（ｎ）次に、電源投入が行われると、再度、デコーダ回路３へのＲＯＭデータの書き込みから再度繰り返される。
【００４３】
このように、電源投入直後に外部ＲＯＭ１のデータはデコーダ回路３及びコンフィグレーション回路５を経由して、すべてのデータが取り込まれた時点で、この半導体集積回路はＲＡＭ型ＦＰＧＡ回路を構成する。この回路構成は速やかに行われ、数１００ミリ秒程度での構成が可能である。
【００４４】
ＦＰＧＡ回路６はＲＡＭ型であり、図３に示されるように、各回路を構成するコンフィギャブル・ロジック・ブロック（ｃｏｎｆｉｇｕｒａｂｌｅ　ｌｏｇｉｃ　ｂｌｏｃｋ）１０，１０ｉ，ｊ，１０ｉ，ｊ＋１，…，　１０ｉ＋１，ｊ，１０ｉ＋１，ｊ＋１…、各回路の配線接続を切り替えるスイッチング・マトリックス（ｓｗｉｔｃｈｉｎｇ　ｍａｔｒｉｘ）１１，１１ｉ，ｊ，１１ｉ，ｊ＋１，１１ｉ，ｊ＋２…，１１ｉ＋１，ｊ，１１ｉ＋１，ｊ＋１，１１ｉ＋１，ｊ＋２…，１１ｉ＋２，ｊ，…，　１１ｉ＋２，ｊ＋１，１１ｉ＋２，ｊ＋２…、主配線１２、接続配線１３及び接続点１４から構成される。コンフィギャブル・ロジック・ブロック１０，１０ｉ，ｊ，１０ｉ，ｊ＋１，…，　１０ｉ＋１，ｊ，１０ｉ＋１，ｊ＋１…内に取りつけられたＲＡＭのデータを変えることにより、設計者の希望に合った機能回路を実現することができる。そのＲＡＭのデータは外部ＲＯＭ１に記録されている。具体的には、コンフィギャブル・ロジック・ブロック１０内には、ＳＲＡＭ素子が設けられている。コンフィギャブル・ロジック・ブロック１０の周囲には、互いにスイッチング・マトリックス１１で接続された主配線１２が設けられている。この主配線１２の内の数本とコンフィギャブル・ロジック・ブロック１０とは接続配線１３によって接続点１４において接続されている。このようにＦＰＧＡ回路６は回路設計情報に基づいて、コンフィギャブル・ロジック・ブロック１０と主配線１２との接続、非接続状態が設定されて回路が構成される。
【００４５】
ここで、暗号化には半導体集積回路２の設計時点で決められた暗号解読コードが用いられる。暗号解読コードは、半導体集積回路２の製造業者が予め決めておき、その内容を半導体集積回路２の購入者に通知して、半導体集積回路２の購入者が回路設計情報を暗号化して、半導体集積回路２へ入力することで、所望の半導体集積回路２が形成される。
【００４６】
ＦＰＧＡ回路のＲＡＭは、図４に示すように、シフトレジスタの構成になっている。コンフィグレーション回路５から送り出されたデータは図４において、第１段目のシフトレジスタＳＲ１のＤ入力端子にシフトレジスタ入力信号ＳＩとして入力され、新しいデータが１個ずつ入って、シフトレジスタＳＲ１に記憶される度に、古いデータは同期して右方向にシフトしていく。各シフトレジスタＳＲ１，ＳＲ２，ＳＲ３，…，ＳＲ６の出力はＱ１〜Ｑ６のような形で、コンフィギャブル・ロジック・ブロック１０やスイッチング・マトリックス１１やＩ／Ｏレジスタ部に配信され、コンフィギャブル・ロジック・ブロック１０の機能を決定したり、スイッチング・マトリックス１１の配線接続方法を決定したり、Ｉ／Ｏの機能を決定するデータとして活用される。
【００４７】
このように半導体集積回路２での初期化動作では、ＦＰＧＡ回路６内に設けられた図４に示すようなシフトレジスタＳＲ１，ＳＲ２，ＳＲ３，…，ＳＲ６に外部ＲＯＭ１からデータが、コンフィグレーション回路５を経由して、順次書き込まれていく。図４のシフトレジスタＳＲ１，ＳＲ２，ＳＲ３，…，ＳＲ６ではコンフィグレーション回路５から１個ずつデータが、シフトレジスタ入力信号ＳＩとして各シフトレジスタのＤ入力端子に送られるとともに、同期したクロック信号が送られてくるので、クロック信号の立ち上り時間に同期してシフトレジスタのＤ入力端子に入力されたシフトレジスタ入力信号ＳＩがシフトレジスタＳＲ１に取り込まれる。そして、そのデータがＱ１に出力される。さらに次のデータの読み込みにあわせてクロック信号が入力されるので、Ｑ１の信号は２段目のシフトレジスタＳＲ２に移りＱ２に出力されて、Ｑ１は新しくシフトレジスタのＤ入力端子に設定されたデータが記憶されて、出力される。こうしてクロック信号が来る度に、新しいデータが初段のシフトレジスタＳＲ１に取り込まれ、古いデータは順次、右のレジスタにシフトしていく。
【００４８】
シフトレジスタを構成する基本単位としてよく用いられるのは、例えば、図５に示すように、Ｄタイプフリップフロップ（Ｄ−ＦＬＩＰ／ＦＬＯＰ）である。このＤタイプフリップフロップの入出力端子プリセット、クリア、ＥＮ，ＱＮの内、いくつかの端子を削除した変形例がある。Ｄ入力端子から入力される信号をＣＫ入力端子に入力される信号の立ち上りタイミングで捕らえて、記憶する。記憶情報をＱ出力端子に出力、反転信号をＱＮ端子に出力する。ＥＮ入力端子に“１”が入力されている時のみ、クロック入力が許可され、その他の時はクロック入力が無視される。プリセット端子は通常“１”が入力されているが、“０”が入力された時に記憶内容を“１”に設定する。クリア端子は通常“１”が入力されているが、“０”が入力された時に、記憶内容を“０”に設定する。レジスタをリセットする場合には、クリア端子に“０”のパルスを与えて記憶内容を“０”にする。
【００４９】
ＦＰＧＡ回路６のＩ／Ｏレジスタ回路の一般例は、図６に示すように、出力バッファの周辺に３つのレジスタを備える。アウトプット・レジスタ５０１は出力内容の“０”か“１”を決定する。アウトプット・イネーブル・レジスタ５０２はＩ／Ｏバッファ５０４が出力するか否かを決定する。アウトプット・イネーブル・レジスタ５０２が“０”の時には、出力が切り離されハイ・インピーダンス状態になる。インプット・レジスタ５０３はＩ／Ｏターミナル５０５に印加された信号を記憶する。
【００５０】
コンフィグレーション時には、上記レジスタの内、アウトプット・イネーブル・レジスタ５０２の記憶内容を“０“して出力し、Ｉ／Ｏバッファ５０４の出力が出ないようにするとともに、インプット・レジスタ５０３のイネーブル（ＥＮ）端子に“０”の信号を与えておき、Ｉ／Ｏターミナル５０５に印加された信号を集積回路内部に取り込まないようにする。つまり、Ｉ／Ｏターミナル５０５では外部信号環境から切り離された状態にしておく。初期化動作では、これら３つのレジスタ５０１，５０２，５０３は外部ＲＯＭ１にプログラムされた設定内容に従った値に切り替わる。
【００５１】
また初期化動作では、図６に示すようなＲＡＭ型ＦＰＧＡ回路のＩ／Ｏレジスタ回路の内、アウトプット・イネーブル・レジスタ５０２及びインプット・レジスタ５０３のイネーブル（ＥＮ）端子に“０”の信号を与えておき、Ｉ／Ｏバッファ５０４の出力が出ないようにするとともに、Ｉ／Ｏターミナル５０５に印加された信号を集積回路内部に取り込まないようにする。つまりＩ／Ｏターミナル５０５では外部信号環境から切り離された状態にしておく。全てのＲＯＭデータが取り込まれた後で、最後にアウトプット・レジスタ５０１，インプット・レジスタ５０３及びアウトプット・イネーブル・レジスタ５０２のＥＮ端子に“１”を加えて、Ｉ／Ｏバッファ５０４が活動できる状態に切り替える。こうしてロジックデバイスとして動作を可能にする。
【００５２】
ここで、コンフィグレーション動作状態と初期化状態を「コマンドモード」といい、通常動作状態を「ユーザーモード」という。半導体集積回路２の電源投入後、速やかに、回路情報がコンフィグレーション回路５に転送され、初期化が行われ、ＦＰＧＡ回路６内に回路情報に基づいた回路が新たに構成される。その後、ロジック動作を開始する。
【００５３】
ＳＲＡＭを用いたＲＡＭ型ＦＰＧＡ回路６内には、少数の入力形式の少ファンインのロジックモジュールを含む、ロジック・エレメントを多数内蔵されている。このように構成されたＲＡＭ型ＦＰＧＡ回路６を用いて、設計者が回路設計後、速やかに実機での回路の動作検証が可能であるため、効率良く回路設計を行うことができる。また、ＦＰＧＡ回路６自体は同一の基本構造を持った半導体集積回路製品を製造することができ、ＦＰＧＡ回路６の使用者ごとに変更を加えて製造する必要がないので、製造効率が良い。即ち、ＦＰＧＡ回路６自体は汎用製品として製造することができるので、大量生産が可能で製造効率が良い。
【００５４】
ＦＰＧＡ回路６を含んだ半導体集積回路２は、汎用マイクロプロセッサコア、ＤＳＰコア、インターフェイス回路などの他の回路素子を持っていて構成されていても良く、混載形式で形成されることで、より用途が広くなる。
【００５５】
ここで、コンフィグレーションの方法について、図７に示すフローチャート図を用いて説明する。
【００５６】
（ａ）電源が投入されると、自動的にコンフィグレーションが開始されるが、まずステップＳＴ１０１において、一般のＩ／Ｏピンをディスエーブル状態にする。
【００５７】
（ｂ）次に、ステップＳＴ１０２において、データ入力がパラレルかシリアルかを判断する。デコーダ回路３において、ＲＯＭデータを受け取るが、パラレルデータを受け取るのかシリアルデータを受け取るのかで方法が異なる。
【００５８】
（ｃ）パラレルデータを受け取る場合には、ステップＳＴ１０６において、ＲＯＭ１からデータを受け取った後、ステップＳＴ１０７において、パラレルデータをシリアルデータに変換して、ステップＳＴ１０８において、ＦＰＧＡ回路６にデータを送り出す。次に、ステップＳＴ１０９において、ＲＯＭデータが最後かどうかを判断する。ＹＥＳであるならば、ステップＳＴ１１０に進み、ＮＯであるならば、ステップＳＴ１０６に戻る。
【００５９】
（ｄ）シリアルデータを受け取った場合には、ステップＳＴ１０３において、ＲＯＭ１からデータを受け取った後、ステップＳＴ１０４において、そのままデータをＦＰＧＡ回路６に送り出す。次に、ステップＳＴ１０５において、ＲＯＭデータが最後かどうかを判断する。ＹＥＳであるならば、ステップＳＴ１１０に進み、ＮＯであるならば、ステップＳＴ１０３に戻る。
【００６０】
（ｅ）ＲＯＭデータを全て受け取ると、コンフィグレーション動作状態から初期化状態に入る。即ち、ステップＳＴ１１０において、内部レジスタをリセットする。次に、ステップＳＴ１１１において、一般のＩ／Ｏピンをイネーブル状態にする。次に、ステップＳＴ１１２において、システム動作を開始する。
【００６１】
ステップＳＴ１０１からＳＴ１１１までは、コマンドモードに相当し、ステップＳＴ１１２から後はユーザーモードに相当する。
【００６２】
次に、図８を用いてデコーダ回路３と暗号解読コードブロック４の構成を説明する。図８には説明を判り易くするためにデコーダ回路３の簡単な例を示している。即ち、デコーダ回路３は、８つの排他的論理和回路ＥＯ０，ＥＯ１、・・・、ＥＯ７を有していて、それぞれの入力端には、外部ＲＯＭ１からの１ビットデータと暗号解読コードブロック４からの１ビットのコードが入力される。排他的論理和回路ＥＯ０，ＥＯ１、・・・、ＥＯ７の出力は図８中で右側に抜けて図１に示されるコンフィグレーション回路５に接続されている。
【００６３】
ここで、例えば外部ＲＯＭ１からデコーダ回路３に対して８ビットのパラレルデータが入ってくるとする。暗号化の方法としては、すべてのデータを“１”、“０”反転して暗号化したとする。当然復号化する場合には、すべてのビットを“１”は“０”へ、“０”は“１”へと反転して元に戻さなくてはならない。
【００６４】
排他的論理和回路は、２つの入力信号が異なる場合のみ、出力信号が“１”になり、反対に２つの入力信号が同じ場合には、出力信号が“０”になる回路である。従って、暗号解読コードが“１”とすると、ＲＯＭ１からの入力信号が“１”の場合は出力“０”、入力信号が“０”の場合は出力“１”となって、ＲＯＭ１からの信号を反転する。逆のケースで、暗号解読コードを“０”とすると、ＲＯＭ１からの入力信号が“１”の場合は出力“１”、入力信号が“０”の場合は出力“０”となって、ＲＯＭ１からの信号がそのまま、出力される。
【００６５】
外部ＲＯＭ１からの８ビットデータＤ０，Ｄ１，Ｄ２，…，Ｄ７が左から入ってくる。入力される８ビットすべてを反転させる訳であるから、暗号解読コードをすべて“１”にしておけば良い。反転しないビットの場合には、暗号解読コードを“０”にしておく必要がある。
【００６６】
こうして４ビットデータＤ０，Ｄ１，Ｄ２，Ｄ３は“０”の信号が外部ＲＯＭ１から入ってきたとして、“１”の信号がコンフィグレーション回路５に渡される。逆に残りの４ビットデータＤ４，Ｄ５，Ｄ６，Ｄ７は“１”の信号が外部ＲＯＭ１から入ってきたとして、“０”の信号がコンフィグレーション回路５に渡される。
【００６７】
本発明の第１の実施の形態に係る半導体集積回路、データ転送システム、及びデータ転送方法においては、外部ＲＯＭ１のデータを暗号化し、ＦＰＧＡ回路６を混載した半導体集積回路２の内部において、予め暗号解読コードブロック４に埋め込まれた暗号解読コードを用いて、暗号データを復号化してＦＰＧＡ回路６に書き込む。この埋め込まれた暗号は設計された半導体集積回路２毎に異なるので、製品毎に異なる暗号を持つことになる。もちろん、暗号を用いて回路を構成しても、回路形成後に実装基板８上で動作させることで正しく所望の半導体集積回路２及び外部ＲＯＭ１と共に実装されたデータ転送システムが形成されているか否かが確認できる。
【００６８】
本発明の第１の実施の形態に係るデータ転送システムでは、半導体集積回路２と外部ＲＯＭ１との間でのデータの受け渡し時に、暗号を用いており、第三者にデータの内容が判らないようにしている。本発明の第１の実施の形態に係る半導体集積回路の暗号化手法を用いない場合には、ＦＰＧＡ回路６を個別に設計し直さないと、その機密性は保てない。それに対して、本発明の第１の実施の形態に係る半導体集積回路においては、外部ＲＯＭ１のデータを暗号化することによって、回路設計情報の機密性が保たれ、なおかつ従来のＦＰＧＡ設計データを暗号化するだけなので、暗号化も自動処理可能のため、設計者に負担をかけることはない。これは、まったく新しいＦＰＧＡ回路６を設計する場合に比べると、設計の時間と労力を大幅に削減することができ、利用者の設計業務効率が向上する。回路設計情報の機密性が保たれ、回路設計効率が向上することから、ＦＰＧＡ回路混載の半導体集積回路が利用者にとって魅力的なものとなる。
【００６９】
なお、外部ＲＯＭ１からパラレルにデータを入力する場合、高速にデータを半導体集積回路２に取り込むことができるため、高速にＦＰＧＡ回路６の回路構成を行うことができる。
【００７０】
ＲＡＭ型ＦＰＧＡ回路を採用して、製造が容易で不揮発性メモリ（ＲＯＭ）を用いたＦＰＧＡよりもＦＰＧＡ領域を縮小させつつ、機密性を高めたＦＰＧＡ混載半導体集積回路及びデータ転送システムを本実施の形態は提供することができる。
【００７１】
本発明の第１の実施の形態に係る半導体集積回路によれば、暗号化設計データの機密性の高い外部ＲＯＭ対応ＦＰＧＡ回路搭載の半導体集積回路を提供することができる。更に、本発明の第１の実施の形態のデータ転送システムによれば、暗号化設計データの機密性の高い外部ＲＯＭ型のデータ転送システムを供給できる。このように外部ＲＯＭ１と半導体集積回路２とのデータ受け渡しに暗号化データを用いることで、ソフトウェアの機密性を向上することができる。
【００７２】
（第１の実施の形態の変形例）
本発明の第１の実施の形態の変形例は、第１の実施の形態において、外部ＲＯＭ１とＦＰＧＡ回路６混載の半導体集積回路２との間のデータバス配線９の本数を１本として、外部ＲＯＭ１から半導体集積回路２へのデータ転送をパラレルではなくシリアルに実行する構成を有する。図９を用いて、本発明の第１の実施の形態の変形例における、デコーダ回路３と暗号解読コードブロック４の構成を説明する。図９には説明を判り易くするためにデコーダ回路３の簡単な例を示している。外部ＲＯＭ１は半導体集積回路２の入出力ポートに１対１で対応するポートを有した半導体記憶装置となっている。このように外部ＲＯＭ１は、半導体集積回路２に対して、データをシリアルに出力する。ここでは、例えば外部ＲＯＭ１からシリアルデータが半導体集積回路２に対して入ってきた時の対応例を示す。この場合にも、パラレルデータと同様に８ビット単位で暗号化の方法を設定してある場合が示してある。このデコーダ回路３に対しては、外部ＲＯＭ１と同期してデータを取り込むために、外部ＲＯＭ１にも入力されてデータの出力タイミングを制御するクロック信号ＣＬＯＣＫが入力されている。このクロック信号ＣＬＯＣＫは、３ビットのバイナリーカウンタ１８のクロック信号入力端子ＣＬＯＣＫに入力されている。このバイナリーカウンタ１８からは３ビットのセレクト信号が出力端子ＱＡ、ＱＢ、ＱＣから出力される。この３ビットのセレクト信号はデータセレクタ（８−Ｌｉｎｅ　ｔｏ１−Ｌｉｎｅ　ＤＡＴＡ　ＳＥＬＥＣＴＯＲ）１９のセレクト信号入力端子Ａ、Ｂ、Ｃへ入力される。このデータセレクタ１９へは、暗号解読コードブロック４からの８ビットの暗号解読コードが暗号コード入力端子ＤＥ０、ＤＥ１、ＤＥ２、ＤＥ３、ＤＥ４、ＤＥ５、ＤＥ６、ＤＥ７へ入力される。
【００７３】
デコーダ回路３は、更に１つの排他的論理和回路ＥＯを有していて、その入力端には、外部ＲＯＭ１からの１ビットデータとデータセレクタ回路１９の出力端子Ｙからの１ビットのコードが入力される。排他的論理和回路ＥＯの出力は図９中で順次、右側に抜けて図１に示されるコンフィグレーション回路５に接続されている。
【００７４】
次に、外部ＲＯＭ１からのデータの取り込み方法を説明する。８ビット単位でシリアルデータが入ってくる順番にＤ０、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７として、その各々が“０”と“１”の間で反転するか、しないか、を決めて、暗号解読コードとして、半導体集積回路２内の暗号解読コードブロック４にデータを埋め込んでおく。シリアルデータがＤ７まできたら、暗号解読コードの最初に戻って繰り返す。今回は図８で示した方法と同様に全てのビットを反転させるケースを示した。外部ＲＯＭ１から暗号データとして順番に０、０、０、０、１、１、１、１が入ってくると、このデコーダ回路３からの出力は１、１、１、１、０、０、０、０の順でデータが出て行く。
【００７５】
半導体集積回路２の外部からのクロック信号ＣＬＯＣＫは３ビットのバイナリーカウンタ１８に入り、バイナリーカウンタ１８内で０から７までのカウントを行って現在のカウント値をバイナリコードでＱＣ、ＱＢ，ＱＡ出力端子に表示する。ここで、ＱＣが最上位ビット、ＱＡが最下位ビットである。この信号はデータセレクタ回路１９へ送られ、カウンタの値に合ったデータＤＥ０，ＤＥ１，ＤＥ２，…，ＤＥ７が選択されて、Ｙ出力端子に出力される。データＤＥ０，ＤＥ１，ＤＥ２，…，Ｄ７は半導体集積回路２に埋め込まれた暗号解読コードブロック４に接続されているので、その１つのデータが順番に選択されて、Ｙ端子に出力されてくることになる。そのＹ出力信号は外部ＲＯＭ１からのデータＤＡＴＡとともに排他的論理和回路Ｅ０に入力される。この排他的論理和回路Ｅ０は２入力の値が同じ時には“０”を出力し、２入力の信号が異なる時には“１”を出力する機能がある。従って、片方を“１”に固定した場合、残りの入力の反転回路としての機能を果たし、逆に片方を“０”に固定すると、残りの入力値がそのまま出力される機能がある。
【００７６】
こうして、シリアルデータが順番に暗号解読されて、次段の回路であるコンフィグレーション回路５に送られていく。このようにシリアルにデータを取り込む場合、外部ＲＯＭ１と半導体集積回路２とを接続するパスの本数が第１の実施の形態よりも少数でよいため、実装基板８上での配線本数を減らすことができる。このため、配線密度が高く配線の配置余裕が少ない実装基板８上においても、本発明の第１の実施の形態の変形例は構成できる。上記構成以外は第１の実施の形態と同様の構成を有している。本発明の第１の実施の形態の変形例は、第１の実施の形態と同様にデータの機密性を保持できる効果を有する。
【００７７】
本発明の第１の実施の形態の変形例によれば、設計データやソフトウェアが読み出せないセキュリティ性の高い、ＦＰＧＡ回路を混載した半導体集積回路、データ転送システム、及びデータ転送方法を提供することができる。
【００７８】
（第２の実施の形態）
本発明の第２の実施の形態に係る半導体集積回路及びデータ転送システムは、図１０に示すように、実装基板２８上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ２０と、第２の半導体チップ上に集積化され、ＣＰＵ２４を混載した半導体集積回路２１とから構成されたハイブリッド集積回路である。更に、半導体集積回路２１は、外部ＲＯＭ２０とデータバス配線２６を介して接続されたデコーダ回路２２と、デコーダ回路２２に接続された暗号解読コードブロック２３と、更にデコーダ回路２２に接続されたＣＰＵ２４と、ＣＰＵ２４に接続された内部回路２７を混載したモノリシック集積回路から構成されている。外部ＲＯＭ２０は半導体集積回路２１の入出力ポートに１対１で対応するポートを有する半導体記憶装置であり、半導体集積回路２１に対して、データをパラレルに出力する。
【００７９】
尚、図１０の例では実装基板２８上に第１の半導体チップ及び第２の半導体チップがともに実装される例が示されているが、半田バンプ等を介して、第１の半導体チップ及び第２の半導体チップが多層構造として、実装されていても良いことは明らかである。
【００８０】
外部ＲＯＭ２０内には、ＣＰＵ２４の暗号化されたソフトウェアデータが格納されている。従って、半導体集積回路２１内のデコーダ回路２２には、外部ＲＯＭ２０からの暗号化ソフトウェアデータが、データバス配線２６を介して、入力される。暗号解読コードは、半導体集積回路２１を設計する時点で決められていて、半導体集積回路２１内の暗号解読コードブロック２３内に記録され、埋め込まれる。
【００８１】
デコーダ回路２２には、暗号解読コードブロック（記録部）２３から暗号解読コードが入力される。この暗号解読コードを用いてデコーダ回路２２は、外部ＲＯＭ２０から入力された暗号化設計データを復号化して、設計データを半導体集積回路２１内に設けられたＣＰＵ２４へ出力する。本発明の第２の実施の形態においては、外部ＲＯＭ２０とＣＰＵ２４との間に、デコーダ回路２２を設け、デコーダ回路２２において、外部ＲＯＭ２０からの設計データを受け取り、ＣＰＵ２４に設計データを送出している。
【００８２】
ここでは更に、ＣＰＵ２４と外部ＲＯＭ２０との間はアドレスバス配線２５を介して直接接続されており、ＣＰＵ２４はアドレスを指定して外部ＲＯＭ２０に対してデータを要求する。外部ＲＯＭ２０は指定されたアドレスをデコーダ回路２２へデータバス配線２６を介して提出する。更に、デコーダ回路２２は指定されたアドレスをＣＰＵ２４へ提出する。
【００８３】
本発明の第２の実施の形態に係る半導体集積回路２１においては、図１０に示すように、外部ＲＯＭ２０とＣＰＵ２４の間にデコーダ回路２２を設け、デコーダ回路２２には暗号解読コード情報が伝えられるようになっている。
【００８４】
まず半導体集積回路２１の設計時に暗号コードを決定し、それに基いて暗号解読コードが半導体集積回路２１内の暗号解読コードブロック２３に記録され、埋め込まれている。従って、暗号化設計データに関係する暗号化ソフトウェアデータは各半導体集積回路２１毎に異なる固有の暗号となる。
【００８５】
こうして、外部ＲＯＭ２０から入手した暗号データは、デコーダ回路２２において復号化されて、ＣＰＵ２４に伝えられて一般的なソフトウェアと同じ働きをする。このＣＰＵ２４が動作を開始した後に、半導体集積回路２１内の内部回路２７との間で回路動作を行う。内部回路２７内には、用途に合わせて決まる汎用マイクロプロセッサコア、ＤＳＰコア、インターフェイス回路などから選択される回路が含まれる。このように半導体集積回路２１は、ＣＰＵ２４と他のロジック回路などとの混載形式で形成されている。このためその用途は広い。この外部ＲＯＭ２０及び半導体集積回路２１は同じ実装基板２８上に搭載されてデータ転送システムを構成する。さらに実装基板２８上においては、暗号化されたＣＰＵソフトウェア情報が外部ＲＯＭ２０から伝達されるビット数に応じた本数のデータバス配線２６と、アドレスバス配線２５とが外部ＲＯＭ１と半導体集積回路２との間に接続されている。
【００８６】
次に、図１１を用いて本発明の第２の実施の形態に係る半導体集積回路及びデータ転送システムの動作方法を説明する。
【００８７】
（ａ）まず、第１ステップＳＵ１において、半導体集積回路２１内のＣＰＵ２４のソフトウェア設計者がＣＰＵ２４のソフトウェア設計を行う。
【００８８】
（ｂ）次に、第２ステップＳＵ２において、設計されたソフトウェアをＲＯＭデータとして作成する。
【００８９】
（ｃ）次に、第３ステップＳＵ３において、半導体集積回路２１の製造者から入手した暗号化コードの採用を決定する。
【００９０】
（ｄ）次に、第４ステップＳＵ４において、暗号化コードに基づいてＲＯＭデータを暗号化する。
【００９１】
（ｅ）次に、第５ステップＳＵ５において、別の外部ＲＯＭから暗号化されたＲＯＭデータを外部ＲＯＭ２０へ書き込む。
【００９２】
（ｆ）次に、第６ステップＳＵ６において、外部ＲＯＭ２０を実装基板２８上に実装する。
【００９３】
（ｇ）次に、第７ステップＳＵ７において、実装基板２８に対して、電源を投入する。
【００９４】
（ｈ）次に、第８ステップＳＵ８において、読み出しＲＯＭアドレスを決定し、半導体集積回路２１内のＣＰＵ２４から外部ＲＯＭ２０に対して、必要とするソフトウェアのアドレスを出力する。
【００９５】
（ｉ）次に、第９ステップＳＵ９において、外部ＲＯＭ２０から指定されたアドレスに対応する暗号化されたＲＯＭデータを半導体集積回路２１内のデコーダ回路２２へ取り込む。デコーダ回路２２において、暗号解読コードブロック２３から入力された暗号解読コードを利用して、暗号化されたＲＯＭデータをソフトウェアデータとして解読し、ＣＰＵ２４へ出力する。
【００９６】
（ｊ）次に、第１０ステップＳＵ１０において、ＣＰＵ２４において、入力されたソフトウェアデータに基づいてＣＰＵ動作が行われる。
【００９７】
（ｋ）次に、第１１ステップＳＵ１１において、次の業務指示があるかどうかを判断する。ＮＯであるならば、第１１ステップＳＵ１１に戻る。ＹＥＳであるならば、第８ステップＳＵ８に戻る。
【００９８】
（ｌ）上記のステップは、電源供給停止により終了する。
【００９９】
（ｍ）次に、電源投入が行われると、再度、ＣＰＵ２４から外部ＲＯＭ２０へのアドレス出力のステップから再度繰り返される。
【０１００】
デコーダ回路２２は第１の実施の形態において図８を用いて説明した構成と同じであるので、説明を省略する。
【０１０１】
外部ＲＯＭ２０からパラレルにデータを入力する場合、高速にデータを半導体集積回路２１に取り込むことができるため、高速にＣＰＵにデータを転送することができる。データをパラレル入力することで、高速にソフトウェアを取り込み、ＣＰＵを高速動作させることができる。尚、場合により、本発明の第１の実施の形態の変形例において説明したように、図９に記載されたデコーダ回路３と暗号解読コードブロック４の構成を、デコーダ回路２２と暗号解読コードブロック２３の構成に適用して、データのシリアル入力を行うこともできる。シリアルにデータを取り込む場合、外部ＲＯＭ２０と半導体集積回路２１とを接続するパスの本数が少数でよいため、実装基板８上での配線本数を減らすことができる。配線密度が高く配線の配置余裕が少ない実装基板８上において適用可能である。
【０１０２】
外部ＲＯＭ２０のデータを暗号化してデコーダ回路２２に入力し、ＣＰＵ２４を混載した集積回路２１内部の暗号解読コードブロック２３に記録され、埋め込まれた暗号解読コードを利用して、デコーダ回路２２において暗号データを復号化してＣＰＵ２４を駆動するようにすれば、ソフトウェア設計の機密性は高くなる。ＣＰＵの命令コードが決まっているＣＰＵ２４の場合に、それに基づいてソフトウェア設計を行い、外部ＲＯＭ２０にソフトウェアデータを格納しても、外部ＲＯＭ２０のデータを分析してもソフトウェアの設計内容が暴かれることはない。
【０１０３】
本発明の第２の実施の形態に係る半導体集積回路によれば、ソフトウェア設計データの機密性の高い外部ＲＯＭ対応ＣＰＵを搭載した半導体集積回路を提供することができる。更に、本発明の第２の実施の形態のデータ転送システムによれば、ソフトウェア設計データの機密性の高い外部ＲＯＭ型のデータ転送システムを供給できる。このように外部ＲＯＭ２０と半導体集積回路２１とのデータ受け渡しに暗号化データを用いることで、ソフトウェアの機密性を向上することができる。
【０１０４】
本発明の第２の実施の形態よれば、設計データやソフトウェアが読み出せないセキュリティー性の高い、ＣＰＵを混載した半導体集積回路、データ転送システム、及びデータ転送方法を提供することができる。
【０１０５】
（第３の実施の形態）
本発明の第３の実施の形態に係る半導体集積回路及びデータ転送システムは、図１２に示すように、実装基板３２上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ３０と、第２の半導体チップ上に集積化されたＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ　ｓｐｅｃｉｆｉｃ　ｉｎｔｅｇｒａｔｅｄ　ｃｉｒｃｕｉｔｓ）３１とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０とバス配線３６を介して接続された暗号解読処理回路３３と、暗号解読処理回路３３に接続された暗号解読コードブロック４０と、更に、暗号解読処理回路３３に接続された暗号化対象処理回路３４と、暗号化対象処理回路３４と接続された内部回路３５とを混載したモノリシック集積回路から構成される。ここで、暗号化対象処理回路３４とは、秘密にしておくべき情報が格納され、内部回路３５との間で、一定の回路動作を実行する回路と定義することができる。主として、ＣＰＵ若しくはＦＰＧＡ回路から構成される。もちろん、暗号化を目標とする回路であれば、他の回路形式も含まれる。
【０１０６】
尚、図１２の例では実装基板３２上に第１の半導体チップ及び第２の半導体チップがともに実装される例が示されているが、半田バンプ等を介して、第１の半導体チップ及び第２の半導体チップが多層構造として、実装されていても良いことは明らかである。
【０１０７】
本発明の第３の実施の形態は、ＡＳＩＣの自動設計技術と組み合わせて用いると、より高い効果が得られる。即ち、ＡＳＩＣのデータベースへ汎用性のあるＦＰＧＡ回路或いはＣＰＵの基本回路を蓄積しておいても、第３者は解読できない。このように、ＦＰＧＡ回路或いはＣＰＵの標準化、デコーダ回路等の暗号解読処理回路３３の標準化による自動設計手法の簡素化、暗号コードの決定と暗号解読コードの設計手順の標準化、ＲＯＭの暗号化手法の標準化による自動設計手法の簡素などの設計手法の簡素化が可能であり、かつできあがったＦＰＧＡ混載の半導体集積回路或いはＣＰＵ混載の半導体集積回路製品の設計機密性の向上が可能である。
【０１０８】
ＦＰＧＡ回路コア或いはＣＰＵコアは暗号化されていないものが登録されている。更に、デコーダ回路等の暗号解読処理回路３３が登録されており、ＬＳＩ設計で、設計データをダウンロードする時に組み合わせて活用されることになる。
【０１０９】
ここで、「設計手法簡素化」について説明する。
【０１１０】
設計自動化を行なう場合には、まず対象となる回路を標準化する必要がある。同じ回路や、同じ設計手法がそのまま使えると、或いは又、修正方法が簡単であるほど、設計自動化のためのソフトウェアの作成が容易になるからである。本発明の第３の実施の形態の場合、ＦＰＧＡ回路やＣＰＵの回路の設計データはそのまま使えるので、設計自動化のためのソフトウェアの複雑化を招くことはない。
【０１１１】
更に、暗号化手法と復号化手法及び復号化回路を標準化することにより、まず、復号化回路の設計データもそのまま活用できることになる。
【０１１２】
更に、暗号化手法が決まることで、外部ＲＯＭ３０に書き込むデータを自動的に暗号化するためのソフトウェアを開発することができる。また、暗号化コードを決定し、その決まった暗号化に対する、復号化コードを自動算出して、ＡＳＩＣ３１に埋め込むソフトウェアも開発することが可能である。
【０１１３】
ＡＳＩＣ製品では、顧客からの要求回路を自動設計するために、様々な回路がデータベースとして登録されており、かつそれらの個別回路の特性も登録されていて、顧客要求回路に合せて、設計データを自動的に持ち出してきて、組み合わせてＡＳＩＣ３１を構築し、その特性も自動的に計算されるようになっているので、事前に顧客期待の性能を満足できるかまで確認できる。
【０１１４】
従って、本発明の第３の実施の形態において、設計データの暗号化処理や、デコーダ回路等の暗号解読処理回路３３の自動設計などは、ＡＳＩＣ自動設計の延長技術で問題なく処理可能である。かつ、設計者に対する負担が少なくなるので、ＡＳＩＣ技術と組み合わせることにより、設計効率のより高い効果が得られる。
【０１１５】
（第４の実施の形態）
本発明の第４の実施の形態に係る半導体集積回路及びデータ転送システムは、図１３に示すように、実装基板３２上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ３０と、第２の半導体チップ上に集積化されたＡＳＩＣ３１とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０とバス配線３６を介して接続された暗号解読処理回路３３と、暗号解読処理回路３３に接続された暗号解読コードブロック４０と、更に、暗号解読処理回路３３に接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とを混載したモノリシック集積回路から構成される。ここで、ＦＰＧＡ回路３７とは暗号化対象回路を代表的に示したものである。
【０１１６】
（第５の実施の形態）
本発明の第５の実施の形態に係る半導体集積回路及びデータ転送システムは、図１４に示すように、実装基板３２上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ３０と、第２の半導体チップ上に集積化されたＡＳＩＣ３１とから構成されされたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０とバス配線３６を介して接続された暗号解読処理回路３３と、暗号解読処理回路３３と接続された暗号解読コードブロック４０と、暗号解読処理回路３３に接続されたＣＰＵ３８と、ＣＰＵ３８と接続された内部回路３５とを混載したモノリシック集積回路から構成される。ここで、ＣＰＵ３８とは暗号化対象回路を代表的に示したものである。
【０１１７】
（第６の実施の形態）
本発明の第６の実施の形態に係る半導体集積回路及びデータ転送システムは、図１５に示すように、実装基板３２上に実装された第２の外部ＲＯＭ３０１及び第１の外部ＲＯＭ３０２と、ＡＳＩＣ３１とから構成されたハイブリッド集積回路である。第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化されている。第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップ上に集積化されている。或いは、第２の外部ＲＯＭ３０１は、第１の外部ＲＯＭ３０２と同じ、第１の半導体チップ上に集積化されていてもよい。更に、第２の半導体チップ上に集積化されたＡＳＩＣ３１は、外部ＲＯＭ３０１、３０２とそれぞれバス配線３６０、３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路１３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４に接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５と、デコーダ回路１３３と接続されたＣＰＵ３８とを混載して構成されたモノリシック集積回路である。更に、ＣＰＵ３８は、ＦＰＧＡ回路３７、内部回路３５、外部ＲＯＭ３０１に接続されている。ＣＰＵ３８は、アドレスバス配線３６２を介して、外部ＲＯＭ３０１に対してアドレスを指定して、データを要求する。その結果、デコーダ回路１３３において解読されたＲＯＭデータが、データバス配線３６３を介して、ＣＰＵ３８に対して提供される。本発明の第６の実施の形態の場合には、外部ＲＯＭが２個存在し、外部ＲＯＭ３０１にはＣＰＵ３８を駆動する暗号データが保持され、外部ＲＯＭ３０２にはＦＰＧＡ回路３７を駆動する暗号データが保持去れている。本発明の第６の実施の形態の場合には、図１５に示すように、ＦＰＧＡ回路３７及びＣＰＵ３８をＡＳＩＣ３１に混載した構造を有する点に大きな特徴がある。
【０１１８】
尚、図１５の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０１１９】
次に、図１６を用いて本発明の第６の実施の形態に係る半導体集積回路及びデータ転送システムの動作方法を説明する。電源投入からＣＰＵ３８の稼動までの動作フローが図１６には示されている。ＦＰＧＡ３７に対応する暗号データが保持されるＲＯＭ３０２のデータ書き込みのフローは、図２のステップＳＴ１のＦＰＧＡ回路３７の設計からステップＳＴ６のＲＯＭの実装基板への実装と同様であるため、記載を省略した。またＣＰＵ３８に対応する暗号データが保持されるＲＯＭ３０１のデータ書き込みのフローは、図１１のステップＳＵ１のソフトウェアの設計からステップＳＵ６のＲＯＭの実装基板への実装と同様であるため、記載を省略した。
【０１２０】
ＲＯＭ３０２にはＦＰＧＡ回路３７上に構築する機能の情報が書き込まれているとする。またＲＯＭ３０１にはＣＰＵ３８上で稼動するソフト情報が書き込まれているものとする。ＲＯＭ３０１、ＲＯＭ３０２とも暗号化したデータが書き込まれているものとする。
【０１２１】
（ａ）ステップＳＶ１において、最初にＡＳＩＣ３１及び２個のＲＯＭ３０１，３０２を実装した実装基板３２に電源を投入する。
【０１２２】
（ｂ）次に、ステップＳＶ２において、ＲＯＭ３０２の暗号化されたデータをデコーダ回路１３３において受信し、復号化する。復号化するキーワードは暗号解読コードとして暗号解読コードブロック４０内に埋め込まれているので、その情報を用いる。
【０１２３】
（ｃ）次に、ステップＳＶ３において、復号化されたデータはコンフィグレーション回路１３４に送られて、ＦＰＧＡ回路３７が理解できる形にデータ変換が行われて、その復号化されたデータはＦＰＧＡ回路３７において、受信される。こうしてＦＰＧＡは予めプログラムされた機能を満たす回路が構築される。
【０１２４】
（ｄ）次に、ステップＳＶ４において、最後のデータが受信されたかどうかを判断する。ＹＥＳならば、ステップＳＶ５に進む。ＮＯならば、ステップＳＶ２に戻る。
【０１２５】
（ｅ）次に、ステップＳＶ５において、ＲＯＭ３０２からのデータが全て取り込まれると、ＦＰＧＡ回路３７はユーザーモードに移行する。
【０１２６】
（ｆ）次に、ステップＳＶ６において、ＡＳＩＣ３１は動作を開始する。
【０１２７】
ＡＳＩＣ内のＣＰＵも同様に稼動を始める。
【０１２８】
（ｇ）次に、ステップＳＶ７において、ＣＰＵ３８からＣＰＵ３８の設計時に設定されたスタートアドレスを外部ＲＯＭ３０１に対して出力して、外部ＲＯＭ３０１に対して、アドレス指定が行なわれる。
【０１２９】
（ｈ）次に、ステップＳＶ８において、デコーダ回路１３３において、ＲＯＭ３０１からの暗号化されたソフトウェアデータを受信し、復号化して、ＣＰＵ３８に送る。
【０１３０】
（ｉ）次に、ステップＳＶ９において、ＣＰＵ３８では復号化されたデータに基づき業務を実行する。
【０１３１】
（ｊ）次に、ステップＳＶ１０において、次の業務指示があるかどうかを判断する。ＹＥＳであるならば、ステップＳＶ７に戻る。ＮＯであるならば、ステップＳＶ１０を繰り返す。
【０１３２】
こうすることにより、ＲＯＭ３０１或いはＲＯＭ３０２のデータを読み取ってもＦＰＧＡ回路３７の機能もＣＰＵ３８上で動作するソフトも暗号化により機密が保持される。
【０１３３】
（第７の実施の形態）
本発明の第７の実施の形態に係る半導体集積回路及びデータ転送システムは、図１７に示すように、コンフィグレーション回路１３４に接続された第２の暗号解読コードブロック４００及び第２の暗号解読コードブロック４００に接続された第２のデコーダ回路２３３を更に備える点に特徴を有する。第２の暗号解読コードブロック４００は具体的にはＦＰＧＡ回路から構成される。従って、コンフィグレーション回路１３４により、その回路構成が定義される。ＣＰＵ３８は、アドレスバス配線３６２を介して、第２の外部ＲＯＭ３０１に対してアドレスを指定して、データを要求する。その結果、第２のデコーダ回路２３３において解読されたＲＯＭデータが、データバス配線３６４を介して、ＣＰＵ３８に対して提供される。本発明の第７の実施の形態の場合には、外部ＲＯＭが２個存在し、第２の外部ＲＯＭ３０１にはＣＰＵ３８を駆動する暗号データが保持され、第１の外部ＲＯＭ３０２にはＦＰＧＡ回路３７を駆動する暗号データが保持されている。本発明の第７の実施の形態の場合には、図１７に示すように、ＦＰＧＡ回路３７及びＣＰＵ３８を、第２の半導体チップ上に集積化されたＡＳＩＣ３１に混載した構造を有する点にも大きな特徴がある。図１７に示した第７の実施の形態の構成は、基本的には、図１５に示した第６の実施の形態の構成と同様であるが、ＣＰＵ３８の暗号解読コードは、ＦＰＧＡ回路からなる暗号解読コードブロック４００にて構築したものである。
【０１３４】
第１の半導体チップ上に集積化された第１の外部ＲＯＭ３０２に書き込まれた機能情報としての暗号データは、ＦＰＧＡ回路３７を構築するとともに、ＣＰＵ３８の暗号解読コードも情報として第１のＲＯＭ３０２に書き込まれている。ＡＳＩＣ３１が稼動を開始する前にＦＰＧＡ回路３７が構築される。ＣＰＵ３８が稼動を開始する前に、ＣＰＵ３８の暗号解読コードはＦＰＧＡ回路からなる暗号解読コードブロック４００に構築されている。こうすることにより、図１５に示した本発明の第６の実施の形態に係る半導体集積回路及びデータ転送システムの利点に加えて、ＣＰＵ３８の暗号解読コードが、第１の外部ＲＯＭ３０２のデータを変更することにより、いつでも切替可能になるという点に大きな特徴が存在する。即ち、第７の実施の形態においては、ＣＰＵ３８用の暗号データに外部から変更を加えたいような場合に有効である。第２の外部ＲＯＭ３０１に保持されていた暗号データが何らかの事情により、解読されているような場合には、第１の外部ＲＯＭ３０２によって、暗号解読コードブロック４００内に構築されるＦＰＧＡ回路に変更を加えることができる。同時に第２の外部ＲＯＭ３０１の内容も外部ＲＯＭ３０２の変更内容に合せて変更させる。こうすることによって、一端秘密を暴かれたＣＰＵ３８用の暗号データの内容に任意の変更を加えることができる。第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化されている。第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップ上に集積化されている。或いは、第２の外部ＲＯＭ３０１は、第１の外部ＲＯＭ３０２と同じ、第１の半導体チップ上に集積化されていてもよい。尚、図１７の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０１３５】
次に、図１８及び図１９を用いて本発明の第７の実施の形態に係る半導体集積回路及びデータ転送システムの動作方法を説明する。ＣＰＵソフトウェアの暗号化コード決定からＣＰＵの稼動までの動作フローを図１８に示し、ＣＰＵソフトウェアの暗号化コードの変更の動作フローを図１９示す。
【０１３６】
（ａ）まず、ステップＳＷ１において、ＣＰＵソフトウェアの暗号化コードを決定する。
【０１３７】
（ｂ）次に、ステップＳＷ２において、ＣＰＵソフトウェアの暗号化コードに基づいて暗号解読コードブロック４００の回路設計及びＦＰＧＡ回路３７に構築する機能の設計を行う。
【０１３８】
（ｃ）次に、ステップＳＷ３において、その設計に基づきＲＯＭ（１）３０２のデータを作成する。
【０１３９】
（ｄ）次に、ステップＳＷ４において、ＡＳＩＣ設計時に決めたＦＰＧＡ暗号化コードを使用する。
【０１４０】
（ｅ）次に、ステップＳＷ５において、ＲＯＭ（１）３０２のデータの暗号化を行う。
【０１４１】
（ｆ）次に、ステップＳＷ６において、その暗号化データをＲＯＭ（１）３０２に書き込む。
【０１４２】
以上のステップＳＷ２〜ＳＷ６の作業と並行して、以下のステップＳＷ７〜ＳＷ１０を実行する。
【０１４３】
（ｇ）ステップＳＷ７において、ＣＰＵ３８上で動作するソフトウェアの設計を行う。
【０１４４】
（ｈ）次に、ステップＳＷ８において、その設計データに基づきＲＯＭ（２）３０１のデータを作成する。
【０１４５】
（ｉ）次に、ステップＳＷ９において、ＲＯＭ（２）３０１のデータの暗号化コードは予め決められているので、そのコードを用いてＲＯＭ（２）３０１のデータの暗号化を行う。
【０１４６】
（ｊ）次に、ステップＳＷ１０において、その暗号化データをＲＯＭ（２）３０１へ書き込む。
【０１４７】
（ｋ）次に、ステップＳＷ１１において、ＲＯＭ３０１、ＲＯＭ３０２をＡＳＩＣ３１とともに実装基板３２に実装する。
【０１４８】
（ｌ）次に、ステップＳＷ１２において、実装基板３２に対して電源を投入する。自動的にＦＰＧＡ部のコンフィグレーション動作が開始する。
【０１４９】
（ｍ）ステップＳＷ１３において、ＲＯＭ（１）３０２のデータがＡＳＩＣ３１に取り込まれ、暗号解読コードブロック４０のデータを参照して、デコーダ回路１３３において、読み込みデータは復号化される。
【０１５０】
（ｎ）次に、ステップＳＷ１４において、復号化されたデータはコンフィグレーション回路１３４においてＦＰＧＡ回路に適合したデータに変換されて送出され、ＦＰＧＡ回路３７において受信される。同時に暗号解読コードブロック４００内のＦＰＧＡ回路において受信される。
【０１５１】
（ｏ）次に、ステップＳＷ１５において、ＲＯＭ３０２内の全てのデータが読み込まれたかどうかを判断する。ＹＥＳであるならば、ステップＳＷ１６に進み、ＮＯであるならば、ステップＳＷ１３に戻る。
【０１５２】
（ｐ）次に、ステップＳＷ１６において、ＦＰＧＡ回路３７及び暗号解読コードブロック４００内のＦＰＧＡ回路はユーザーモードにシフトする。ＦＰＧＡ回路は設計者が意図した機能を持つとともに、暗号解読コードブロック４００も構築される。
【０１５３】
（ｑ）次に、ステップＳＷ１７において、ＡＳＩＣ３１は動作を開始する。ＣＰＵ３８も稼動を開始する。
【０１５４】
（ｒ）次に、ステップＳＷ１８において、ＣＰＵ３８の設計時に設定されたスタートアドレスをＲＯＭ（２）３０１に提示してデータを要求する。即ち、読み込みＲＯＭ（２）３０１のアドレスを決定する。ＲＯＭ（２）３０１は指定されたアドレスのデータをＡＳＩＣ３１に送り出す。
【０１５５】
（ｓ）次に、ステップＳＷ１９において、デコーダ回路２３３において、コンフィグレーション時に構築された暗号解読コードブロック４００内の暗号解読コードに基いて、受信データの復号化を行う。
【０１５６】
（ｔ）次に、ステップＳＷ２０において、復号化データはＣＰＵ３８に送られ、ＣＰＵで解読されて、指定業務が行われ、次の指示を待つ。
【０１５７】
（ｕ）次に、ステップＳＷ２１において、次の指定業務が存在するかどうかを判断する。ＹＥＳであるならば、ステップＳＷ１８に戻る。ＮＯであるならば、ステップＳＷ２１を繰り返す。
【０１５８】
こうすることにより、図１７に示した第７の実施の形態に係る半導体集積回路及びデータ転送システムでは、図１５に示した第６の実施の形態に係る半導体集積回路及びデータ転送システムの利点に加えて、ＲＯＭ（１）３０２のデータを変更することによって、複数のＣＰＵ３８の暗号解読コードを作成することができる。
【０１５９】
数機種の応用機器を同時に設計する場合に、１つのＡＳＩＣを設計して、全ての応用機器に適用することが可能となる。かつまた、その各々機種によって異なるＣＰＵ用のソフトウェア暗号解読コードを持たせることができるようになる。従って、暗号の機密を破られた場合の被害を少なく抑えることができる。
【０１６０】
次に、外部ＲＯＭ３０１及び３０２に用いられるＲＯＭとしては、ＥＥＰＲＯＭ、フラッシュＰＲＯＭ、ＥＰＲＯＭ、ＯＴＰＲＯＭ（Ｏｎｅ　Ｔｉｍｅ　ＰＲＯＭ）、ＮＴＰＲＯＭ（Ｎ　Ｔｉｍｅ　ＰＲＯＭ：数回書替え可能）、ヒューズＲＯＭ、マスクＲＯＭなどが適用可能である。
【０１６１】
この内、ＥＥＰＲＯＭ、フラッシュＰＲＯＭ或いはＮＴＰＲＯＭを用いた場合には、応用機器が市場に出回った後で、応用ソフトのバージョンアップ等の時に、使用者側において、ＣＰＵソフトウェアの暗号コードの変更が可能になる利点が加わる。
【０１６２】
図１９にその場合の暗号解読コード変更のフローを示す。
【０１６３】
（ａ２）まず、ステップＳＷ２２において、ＣＰＵソフトウェアの暗号化コードを変更するために新しい暗号化コードを決定する。
【０１６４】
（ｂ２）次に、ステップＳＷ２３において、ＣＰＵソフトウェアの変更した暗号化コードに基づいて暗号解読コードブロック４００の回路設計及びＦＰＧＡ回路３７に構築する機能の設計を行う。
【０１６５】
（ｃ２）次に、ステップＳＷ２４において、その設計に基づきＲＯＭ（１）３０２のデータを作成する。
【０１６６】
（ｄ２）次に、ステップＳＷ２５において、ＦＰＧＡ暗号化コードを決定する。
【０１６７】
（ｅ２）次に、ステップＳＷ２６において、ＲＯＭ（１）３０２のデータの暗号化を行う。
【０１６８】
（ｆ２）次に、ステップＳＷ２７において、その暗号化データをインターネット上においてＷＥＢ登録する。
【０１６９】
（ｇ２）次に、ステップＳＷ２８において、インターネット上においてＷＥＢ登録されたＲＯＭ（１）３０２の暗号データをダウンロードする。
【０１７０】
（ｈ２）次に、ステップＳＷ２９において、ＲＯＭ（１）３０２にダウンロードした暗号データを書き込む。
【０１７１】
以上のステップＳＷ２３〜ＳＷ２９の作業と並行して、以下のステップＳＷ３０〜ＳＷ３５を実行する。
【０１７２】
（ｉ２）ステップＳＷ３０において、ＣＰＵ３８上で動作する新しいソフトウェアの設計を行う。
【０１７３】
（ｊ２）次に、ステップＳＷ３１において、その設計データに基づきＲＯＭ（２）３０１のデータを作成する。
【０１７４】
（ｋ２）次に、ステップＳＷ３２において、ＲＯＭ（２）３０１の暗号化データを決定する。
【０１７５】
（ｌ２）次に、ステップＳＷ３３において、その暗号化データをインターネット上においてＷＥＢ登録する。
【０１７６】
（ｍ２）次に、ステップＳＷ３４において、インターネット上においてＷＥＢ登録されたＲＯＭ（２）３０１の暗号データをダウンロードする。
【０１７７】
（ｎ２）次に、ステップＳＷ３５において、ＲＯＭ（２）３０１にダウンロードした暗号データを書き込む。
【０１７８】
（ｏ２）次に、ステップＳＷ３６において、実装基板３２に対して電源を投入する。自動的にＦＰＧＡ部のコンフィグレーション動作が開始する。
【０１７９】
以下、図１８に示すステップＳＷ１３〜ＳＷ２１と同様のステップを実行する。
【０１８０】
ＲＯＭ（１）３０２のデータ，ＲＯＭ（２）３０１のデータはＷＥＢ登録以外にＣＤＲＯＭ等で一般に配布される場合もある。
【０１８１】
こうすることにより、随時、暗号化コードの変更が行われ、古いソフトの暗号の機密が破られた場合でも、新しいソフトへの機密漏洩の影響は無くなる利点がある。
【０１８２】
（第８の実施の形態）
本発明の第８の実施の形態に係る半導体集積回路及びデータ転送システムは、図２０に示すように、実装基板３２上に実装され、第１の半導体チップ上に集積化された外部ＲＯＭ３０と、第２の半導体チップ上に集積化されたＡＳＩＣ３１と、第３の半導体チップ上に集積化されたＡＳＩＣ３１０とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０とデータバス配線３６を介して接続されたデコーダ回路１３３と、デコーダ回路１３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４に接続されたＦＰＧＡ回路３７と、デコーダ回路１３３に接続された暗号解読コードブロック４０と、更に、ＦＰＧＡ回路３７に接続された内部回路３５とを混載して構成されたモノリシック集積回路である。更にこのＦＰＧＡ回路３７は別のＡＳＩＣ３１０内のＦＰＧＡ回路３４０の接続されている。尚、図２０の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０１８３】
本発明の第８の実施の形態に係る半導体集積回路及びデータ転送システムは、図２０に示すように、本発明の第１の実施の形態の変形例と見ることもできる。ＡＳＩＣ３１０にはコンフィグレーション回路（図示省略）とＦＰＧＡ回路３４０が搭載されている。
【０１８４】
２個のＦＰＧＡ回路３７及び３４０はシリアルに結合されている。１個の外部ＲＯＭ１からの暗号化されたデータを、デコーダ回路１３３において受信し、復号化して機能情報がＦＰＧＡ回路３７に書き込まれる。ＦＰＧＡ回路３７の機能を決める情報を格納するＲＡＭは、図４に示したように、シフトレジスタにて構成され、その基本単位として、例えば、Ｄタイプ・フリップ／フロップがシリアルに結合されている。従って、２個のＦＰＧＡ回路３７，３４０がシリアルに結合された場合にも、シリアル結合の段数が変わるだけであり、基本的に書き込み動作に変更はない。まずこれらのＬＳＩを実装した実装基板３２に電源が投入されると、暗号化されたＲＯＭデータがデコーダ回路１３３に送られ復号化されて、コンフィグレーション回路１３４に送られる。コンフィグレーション回路１３４ではＦＰＧＡ回路３７に合った形にデータ変換を行い、ＦＰＧＡ回路３７にデータを送る。ＦＰＧＡ回路３７内では、シリアルに結合されたシフトレジスタの入り口にデータが取り込まれ、次のデータが取り込まれる度に、全ての入手済みデータが１ステップずつ先に送られる。こうしてＡＳＩＣ３１内のＦＰＧＡ回路３７において、シフトレジスタのシリアル結合段の最終段まできたデータは、ＡＳＩＣ３１０のＦＰＧＡ回路３４０に取り込まれる。
【０１８５】
ＲＯＭデータが最後まで取り込まれると、２つのＦＰＧＡ回路３７、３４０はユーザーモードに切り替わり、ＡＳＩＣ３１及びＡＳＩＣ３１０が稼動を開始する。
【０１８６】
本発明の第８の実施の形態に係る半導体集積回路及びデータ転送システムの構成から明らかなように、複数のＡＳＩＣを有する場合においても、１個の外部ＲＯＭ３０と接続された１個のデコーダ回路１３３を用いるだけで、各ＡＳＩＣ内に搭載されるＦＰＧＡ回路の機能情報を管理することができる。このようにして、複数のＡＳＩＣ内に搭載されたＦＰＧＡ回路上に構築する機能情報は１個のデコーダ回路１３３を用いるだけで、機密性の向上を図ることが出来る利点がある。
【０１８７】
（第８の実施の形態の変形例１）
本発明の第８の実施の形態の変形例１に係る半導体集積回路及びデータ転送システムは、例えば、図２１に示すように、ＡＳＩＣ３１０内に搭載されるＦＰＧＡ回路３４０の出力を更に別のＡＳＩＣ３２０内に搭載されるＦＰＧＡ回路３５０に結合した構成を有する。第７の実施の形態から明らかなように、複数のＡＳＩＣを有する場合においても、１個の外部ＲＯＭ３０と接続された１個のデコーダ回路１３３を用いるだけで、各ＡＳＩＣ内に搭載されるＦＰＧＡ回路の機能情報を管理することができる。複数のＡＳＩＣ内に搭載されたＦＰＧＡ回路上に構築する機能情報は１個のデコーダ回路１３３を用いるだけで、機密性の向上を図ることができる。更に、別のＡＳＩＣ内にＦＰＧＡ回路を搭載して、ＦＰＧＡ回路３５０の出力にシリアル接続するようにすることも、同様の方法で可能である。
【０１８８】
（第８の実施の形態の変形例２）
本発明の第８の実施の形態の変形例２に係る半導体集積回路及びデータ転送システムは、例えば、図２２に示すように、ＦＰＧＡ回路３７を搭載したＡＳＩＣ３１とＦＰＧＡ回路３４０をシリアルに結合した構成を有する。この場合にも、図２０に示した第８の実施の形態と同様に、外部ＲＯＭ３０のＲＯＭデータが復号化されて、ＦＰＧＡ回路３７及びＦＰＧＡ回路３４０に書き込まれた後に、ＦＰＧＡ回路３７及びＦＰＧＡ回路３４０はユーザーモードに移行して、ＡＳＩＣ３１が稼動を開始する。このようにすることによって、１個のＡＳＩＣ３１に搭載されたＦＰＧＡ回路３７のデータの機密性を向上することが可能であるとともに、外部に接続されたＦＰＧＡ回路３４０のデータの機密性を向上することも可能となる。
【０１８９】
（第８の実施の形態の変形例３）
本発明の第８の実施の形態の変形例３に係る半導体集積回路及びデータ転送システムは、例えば、図２３に示すように、ＦＰＧＡ回路３７を搭載したＡＳＩＣ３１とＦＰＧＡ回路３４０をシリアルに結合し、更にＦＰＧＡ回路３４０に対してＦＰＧＡ回路３５０をシリアルに結合した構成を有する。この場合にも、図２０に示した第７の実施の形態と同様に、外部ＲＯＭ３０のＲＯＭデータが復号化されて、ＦＰＧＡ回路３７及びＦＰＧＡ回路３４０及びＦＰＧＡ回路３５０に書き込まれた後に、ＦＰＧＡ回路３７及びＦＰＧＡ回路３４０及びＦＰＧＡ回路３５０はユーザーモードに移行して、ＡＳＩＣ３１が稼動を開始する。このようにすることによって、１個のＡＳＩＣ３１に搭載されたＦＰＧＡ回路３７のデータの機密性を向上することが可能であるとともに、外部に接続されたＦＰＧＡ回路３４０及びＦＰＧＡ回路３５０のデータの機密性を向上することも可能となる。複数のＦＰＧＡ回路を有する場合においても、１個の外部ＲＯＭ３０と接続された１個のデコーダ回路１３３を用いるだけで、各ＦＰＧＡ回路の機能情報を管理することができる。ＦＰＧＡ回路上に構築する機能情報は１個のデコーダ回路１３３を用いるだけで、機密性の向上を図ることができる。更に、ＦＰＧＡ回路３５０に別のＦＰＧＡデバイスをシリアル接続してシステムを拡張することも、同様の方法で可能である。
【０１９０】
（第９の実施の形態）
本発明の第９の実施の形態に係る半導体集積回路及びデータ転送システムは、図２４に示すように、実装基板３２上に実装された第２の外部ＲＯＭ３０１及び第１の外部３０２と、ＡＳＩＣ３１及びＡＳＩＣ３１０とから構成されたハイブリッド集積回路である。第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化され、第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップに集積化される。第２の外部ＲＯＭ３０１は第１の半導体チップと同一の半導体チップ上に集積化されていても良い。更に、第２の半導体チップ上に集積化されたＡＳＩＣ３１は、外部ＲＯＭ３０１、３０２とそれぞれデータバス配線３６０、３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路１３３に接続されたＣＰＵ３８と、ＣＰＵ３８と接続された内部回路３５とを混載して構成されたモノリシック集積回路である。ＡＳＩＣ３１０にはコンフィグレーション回路（図示省略）及びＦＰＧＡ回路３４０が搭載されている。更にこのデコーダ回路１３３はＡＳＩＣ３１０内のＦＰＧＡ回路３４０に接続されている。ここで、本発明の第９の実施の形態の場合には、外部ＲＯＭが２個存在し、それぞれの目的に合わせて、暗号コードを保持している。即ち、外部ＲＯＭ３０２にはＦＰＧＡ回路３４０に使用する暗号データが保持されている。また、外部ＲＯＭ３０１にはＣＰＵ３８において使用する暗号ソフトウェアが保持されている。尚、図２４の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０１９１】
まずこれらのＬＳＩを搭載した実装基板３２に電源が投入されると、ＲＯＭ３０２の暗号化されたデータがＡＳＩＣ３１に取り込まれ、デコーダ回路１３３において復号化されて、データバス配線３６５を介して、ＡＳＩＣ３１０に出力される。ＡＳＩＣ３１０に取り込まれたデータはコンフィグレーション回路を経由してＦＰＧＡ回路３４０に取り込まれる。ＲＯＭ３０２の全てのデータがＦＰＧＡ回路３４０に取り込まれた後、ＦＰＧＡ回路３４０はユーザーモードに移行して、ＡＳＩＣ３１及びＡＳＩＣ３１０は稼動を開始する。
【０１９２】
ＡＳＩＣ３１が稼動を開始すると、内部に搭載されたＣＰＵ３８も稼動を開始して、ＣＰＵ３８の設計時に設定されたスタートアドレスを、アドレスバス配線３６２を介して、ＲＯＭ３０１に出力し、ＲＯＭ３０１からのデータを要求する。ＲＯＭ３０１は指定されたアドレスのデータを、データバス配線３６０を介して、ＡＳＩＣ３１に出力する。ＡＳＩＣ３１では入手したデータをデコーダ回路１３３で復号化して、データバス配線３６３を介して、ＣＰＵ３８にデータ転送する。ＣＰＵ３８では入手したデータを解読して、業務を実行し次の業務指示を待つ。
【０１９３】
このようにすることにより、ＦＰＧＡ回路３４０及びＣＰＵ３８が別々のＡＳＩＣに搭載された場合にも、１個のデコーダ回路１３３で双方のデータの機密性を向上することが可能となる。
【０１９４】
（第９の実施の形態の変形例）
本発明の第９の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、図２５に示すように、ＣＰＵ３８を搭載したＡＳＩＣ３１とＦＰＧＡ回路３４０をシリアルに結合した構成を有する。ＡＳＩＣ３１にＣＰＵ３８を搭載し、ＡＳＩＣ３１と外部接続されたＦＰＧＡ回路３４０のデータの機密性を向上した実施例を示す。図２４に示された第９の実施の形態の動作と同様に、外部ＲＯＭ３０２の全データがＦＰＧＡ回路３４０に書き込まれた後、ＦＰＧＡ回路３４０はユーザーモードに移行し、ＡＳＩＣ３１は稼動を開始する。そしてＣＰＵ３８も稼動を開始して、ＲＯＭ３０１からデータを入手して、復号化した後、ＣＰＵにてデータを解読して、業務を行う。このようにすることにより、ＣＰＵ３８を搭載したＡＳＩＣ３１のソフトウェアの機密性の向上を図るとともに、外部接続されたＦＰＧＡ回路３４０のデータの機密性を向上することができる。
【０１９５】
図２３に示した第８の実施の形態の変形例３に係る半導体集積回路及びデータ転送システムの構成と同様に、ＣＰＵ３８を搭載したＡＳＩＣ３１とＦＰＧＡ回路３４０をシリアルに結合し、更にＦＰＧＡ回路３４０に対してＦＰＧＡ回路３５０をシリアルに結合した構成を採用しても良い。
【０１９６】
複数のＦＰＧＡ回路を有する場合においても、外部ＲＯＭ３０２と接続された１個のデコーダ回路１３３を用いるだけで、各ＦＰＧＡ回路の機能情報を管理することができる。ＦＰＧＡ回路上に構築する機能情報は１個のデコーダ回路１３３を用いるだけで、機密性の向上を図ることができる。更に、ＦＰＧＡ回路３５０に別のＦＰＧＡデバイスをシリアル接続してシステムを拡張することも、同様の方法で可能である。
【０１９７】
（第１０の実施の形態）
本発明の第１０の実施の形態に係る半導体集積回路及びデータ転送システムは、図２６に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１及び３１０とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０１及び３０２とそれぞれバス配線３６０及び３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路１３３に接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とを混載して構成されたモノリシック集積回路である。また、ＡＳＩＣ３１０にはＣＰＵ３４１が搭載されている。更に、ＡＳＩＣ３１内のデコーダ回路１３３は、ＡＳＩＣ３１０内のＣＰＵ３４１に接続されている。ＦＰＧＡ回路３７は、内部回路３５との間で、一定の回路動作を実行する。第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化され、第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップに集積化される。第２の外部ＲＯＭ３０１は第１の半導体チップと同一の半導体チップ上に集積化されていても良い。また、ＡＳＩＣ３１は第２の半導体チップ上に集積化され、ＡＳＩＣ３１０は第３の半導体チップ上に集積化されている。尚、図２６の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０１９８】
第１０の実施の形態に係る半導体集積回路及びデータ転送システムは、図２６に示すように、２個のＡＳＩＣにＦＰＧＡ回路或いはＣＰＵを搭載して、結合した構成を有する点では、図２４に示した第９の実施の形態と同様である。第１０の実施の形態においては、ＦＰＧＡ回路３７を搭載するＡＳＩＣ３１にデコーダ回路１３３が搭載されている。
【０１９９】
まずＲＯＭ３０２から、データバス配線３６１を介して、ＡＳＩＣ３１に暗号化されたデータが出力される。次に、ＡＳＩＣ３１のデコーダ回路１３３においてデータの復号化が行われる。次に、コンフィグレーション回路１３４を経由して、ＦＰＧＡ回路３７に復号化されたデータが書き込まれる。外部ＲＯＭ３０２内の全てのＲＯＭデータが書き込まれた後、ＦＰＧＡ回路３７はユーザーモードに移行し、ＡＳＩＣ３１及びＡＳＩＣ３１０は稼動を開始する。
【０２００】
ＡＳＩＣ３１０に搭載されたＣＰＵ３４１も稼動を開始する。ＣＰＵ３４１は、アドレスバス配線３６６を介して、ＲＯＭ３０１にアドレスを指定してデータを要求する。ＲＯＭ３０１の暗号化されたデータは、データバス配線３６０を介して、まずＡＳＩＣ３１に送り出され、ＡＳＩＣ３１のデコーダ回路１３３において復号化される。次にこの復号化されたデータは、データバス配線３６５を介して、ＡＳＩＣ３１０に送り出される。ＡＳＩＣ３１０内のＣＰＵ３４１は入手したデータを解読して業務を行う。
【０２０１】
このようにすることにより、ＦＰＧＡ回路３７及びＣＰＵ３４１が別々のＡＳＩＣに搭載された場合にも、１個のデコーダ回路１３３によって双方のデータの機密性を向上することが可能となる。
【０２０２】
（第１０の実施の形態の変形例）
本発明の第１０の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、図２７に示すように、ＦＰＧＡ回路３７を搭載したＡＳＩＣ３１とＣＰＵ３４１をシリアルに結合した構成を有する。ＡＳＩＣ３１にＦＰＧＡ回路３７を搭載し、ＡＳＩＣ３１と外部接続されたＣＰＵ３４１双方のデータの機密性を向上した実施例を示す。
【０２０３】
図２６に示した第１０の実施の形態の動作と同様に、全てのＲＯＭ３０２のデータがＦＰＧＡ回路３７に書き込まれた後、ＦＰＧＡ回路３７はユーザーモードに移行し、ＡＳＩＣ３１及びＣＰＵ３４１は稼動を開始する。ＣＰＵ３４１はＲＯＭ３０１にアドレスを指定してデータを要求する。ＲＯＭ３０１は指定アドレスのデータをＡＳＩＣ３１に送出する。ＡＳＩＣ３１ではデコーダ回路１３３においてデータを復号化して、ＣＰＵ３４１にデータを送出する。ＣＰＵ３４１は入手したデータを解読して業務を行う。
【０２０４】
このようにすることにより、ＦＰＧＡ回路３７を搭載したＡＳＩＣ３１のデータの機密性の向上を図るとともに、外部接続されたＣＰＵ３４１のソフトウェアデータの機密性の向上を図ることができる。
【０２０５】
（第１１の実施の形態）
本発明の第１１の実施の形態に係る半導体集積回路及びデータ転送システムは、図２８に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１及びＡＳＩＣ３１０及び３２０とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０２とバス配線３６１を介して接続されたデコーダ回路１３３と、外部ＲＯＭ３０１とバス配線３６０を介して接続されたデコーダ回路２３３と、デコーダ回路１３３及びデコーダ回路２３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４と接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とを混載して構成されたモノリシック集積回路である。ＡＳＩＣ３１０及び３２０にはコンフィグレーション回路（図示省略）及びＦＰＧＡ回路３４０及び３５０が搭載されている。更にこのＦＰＧＡ回路３７はＡＳＩＣ３１０内のＦＰＧＡ回路３４０に接続されている。更にまた、デコーダ回路１３３は、更にデータバス配線３６５を介して、ＡＳＩＣ３２０内のＦＰＧＡ回路３５０に接続されている。ここで、ＦＰＧＡ回路３７は、他の回路３５との間で、一定の回路動作を実行すると共に、ＦＰＧＡ回路３４０の回路形式を定義することができる。
【０２０６】
第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化され、第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップに集積化されている。或いはまた、第２の外部ＲＯＭ３０１は第１の半導体チップと同一の半導体チップ上に集積化されていても良い。また、ＡＳＩＣ３１は第２の半導体チップ上に集積化され、ＡＳＩＣ３１０は第３の半導体チップ上に集積化されている。更に、ＡＳＩＣ３２０は第４の半導体チップ上に集積化されている。尚、図２８の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０２０７】
図２８に示す第１１の実施の形態に係る半導体集積回路及びデータ転送システムは、３個のＡＳＩＣにＦＰＧＡ回路を搭載して、各々を結合した実施例に相当している。これらのＬＳＩが実装された実装基板３２に電源が投入されると、ＲＯＭ３０１及びＲＯＭ３０２のデータは並行してＡＳＩＣ３１に取り込まれていく。ＲＯＭ３０１のデータはデコーダ回路２３３において復号化され、コンフィグレーション回路１３４を経由してＦＰＧＡ回路３７に書き込まれ、更にＡＳＩＣ３１０内のＦＰＧＡ回路３４０に書き込まれていく。ＲＯＭ３０２のデータはＡＳＩＣ１のデコーダ回路１３３において復号化され、ＡＳＩＣ３２０に送出され、ＡＳＩＣ３２０内のＦＰＧＡ回路３５０に書き込まれていく。ＲＯＭ３０１の全データがＦＰＧＡ回路３７及び３４０に書き込まれ、ＲＯＭ３０２の全データがＦＰＧＡ回路３５０に書き込まれた後、全てのＦＰＧＡ回路３７，３４０，及び３５０はユーザーモードに移行し、ＡＳＩＣ３１、ＡＳＩＣ３１０、ＡＳＩＣ３２０は稼動を開始する。このようにすることにより、ＦＰＧＡ回路を各々搭載した複数のＡＳＩＣでも１個の暗号解読コードブロック４０によって、全体のデータの機密性を向上することが可能となる。かつ複数のＡＳＩＣに対して、コンフィグレーションを複数ラインで同時に実施するので、コンフィグレーション時間を短縮することができる利点がある。
【０２０８】
（第１１の実施の形態の変形例）
本発明の第１１の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、図２９に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、外部のＦＰＧＡ回路３４０及び３５０とから構成される。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０１とバス配線３６０を介して接続されたデコーダ回路２３３と、外部ＲＯＭ３０２とバス配線３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３及びデコーダ回路２３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４と接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とから構成される。更にこのＦＰＧＡ回路３７はＦＰＧＡ回路３４０に接続されている。更にまた、デコーダ回路１３３は、データバス配線３６５を介して、ＦＰＧＡ回路３５０に接続されている。ここで、ＦＰＧＡ回路３７は、他の回路３５との間で、一定の回路動作を実行すると共に、ＦＰＧＡ回路３４０の回路形式を定義することができる。
【０２０９】
図２９に示す第１１の実施の形態の変形例は、ＦＰＧＡ回路３７を搭載したＡＳＩＣ３１、及び２個のＦＰＧＡ回路３４０、３５０を結合した実施例を示す。図２８と動作状況は殆ど同じであるが、図２８において、外部接続される、ＦＰＧＡ回路３４０、３５０を搭載したＡＳＩＣ３１０、３２０がＦＰＧＡ回路３４０、３５０に変わったものである。この場合にもＲＯＭ３０１の全データ及びＲＯＭ３０２の全データがＦＰＧＡ回路３７、３４０或いはＦＰＧＡ回路３５０に書き込まれた後、ＦＰＧＡ回路３７、３４０或いはＦＰＧＡ回路３５０はユーザーモードに移行し、ＡＳＩＣ３１は稼動を開始する。このようにすることにより、ＦＰＧＡ回路３７を搭載した１個のＡＳＩＣ３１で、外部接続された複数個のＦＰＧＡ回路を含めた全てのＦＰＧＡ書き込みデータの機密性を向上することが可能となる。かつコンフィグレーションを複数ラインで同時に実施するので、コンフィグレーション時間を短縮することができる利点がある。
【０２１０】
（第１２の実施の形態）
本発明の第１２の実施の形態に係る半導体集積回路及びデータ転送システムは、図３０に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１及びＡＳＩＣ３１０及び３２０とから構成されたハイブリッド集積回路である。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０１とバス配線３６０を介して接続されたデコーダ回路２３３と、外部ＲＯＭ３０２とバス配線３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３及びデコーダ回路２３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４と接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とを混載して構成されるモノリシック集積回路である。ＡＳＩＣ３１０にはコンフィグレーション回路（図示省略）及びＦＰＧＡ回路３４０が搭載され、ＡＳＩＣ３２０にはＣＰＵ３４１が搭載されている。更にこのＦＰＧＡ回路３７はＡＳＩＣ３１０内のＦＰＧＡ回路３４０に接続されている。更にまた、デコーダ回路１３３は、データバス配線３６５を介して、ＡＳＩＣ３２０内のＣＰＵ３４１に接続されている。ここで、ＦＰＧＡ回路３７は、内部回路３５との間で、一定の回路動作を実行すると共に、ＦＰＧＡ回路３４０の回路形式を定義することができる。
【０２１１】
第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化され、第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップに集積化されている。或いはまた、第２の外部ＲＯＭ３０１は第１の半導体チップと同一の半導体チップ上に集積化されていても良い。また、ＡＳＩＣ３１は第２の半導体チップ上に集積化され、ＡＳＩＣ３１０は第３の半導体チップ上に集積化されている。更に、ＡＳＩＣ３２０は第４の半導体チップ上に集積化されている。尚、図３０の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０２１２】
図３０に示す第１２の実施の形態は、３個のＡＳＩＣの内２個にＦＰＧＡ回路を搭載し、１個にＣＰＵを搭載して、各々を結合した実施例に相当している。図２０に示す第８の実施の形態と図２６に示す第１０の実施の形態との組み合わせと見ることもできる。これらのＬＳＩが実装された実装基板３２に電源が投入されると、第２の外部ＲＯＭ３０１の全データがＡＳＩＣ３１に取り込まれて、ＦＰＧＡ回路３１及びＦＰＧＡ回路３４０がユーザーモードになった後、第１の外部ＲＯＭ３０２のデータがＡＳＩＣ３１に取り込まれる。第２の外部ＲＯＭ３０１のデータはデコーダ回路２３３において復号化され、コンフィグレーション回路１３４を経由してＦＰＧＡ回路３７に書き込まれ、更にＡＳＩＣ３１０内のＦＰＧＡ回路３４０に書き込まれていく。第１の外部ＲＯＭ３０２のデータはＡＳＩＣ１のデコーダ回路１３３において復号化され、データバス配線３６５を介して、ＡＳＩＣ３２０に送出され、ＡＳＩＣ３２０内のＣＰＵ３４１に提供される。第２の外部ＲＯＭ３０１の全データがＦＰＧＡ回路３７及び３４０に書き込まれた後、ＡＳＩＣ３１、ＡＳＩＣ３１０、ＡＳＩＣ３２０は稼動を開始する。第１の外部ＲＯＭ３０２に対してはＣＰＵ３４１からアドレス指定を要求され、そのアドレス要求に応答して、第１の外部ＲＯＭ３０２のデータがＣＰＵ３４１に書き込まれる。このようにすることにより、ＦＰＧＡ回路或いはＣＰＵを各々搭載した複数のＡＳＩＣでも１個の暗号解読コードブロック４０によって、全体のデータの機密性を向上することが可能となる。
【０２１３】
（第１２の実施の形態の変形例）
本発明の第１２の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、図３１に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１及び外部のＦＰＧＡ回路３４０及びＣＰＵ３４１とから構成される。更に、ＡＳＩＣ３１は、外部ＲＯＭ３０１とバス配線３６０を介して接続されたデコーダ回路２３３と、外部ＲＯＭ３０２とバス配線３６１を介して接続されたデコーダ回路１３３と、デコーダ回路１３３及びデコーダ回路２３３に接続された暗号解読コードブロック４０と、更に、デコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４と接続されたＦＰＧＡ回路３７と、ＦＰＧＡ回路３７と接続された内部回路３５とから構成される。更にこのＦＰＧＡ回路３７はＦＰＧＡ回路３４０に接続されている。更にまた、デコーダ回路１３３は、データバス配線３６５を介して、ＣＰＵ３４１に接続されている。ここで、ＦＰＧＡ回路３７は、他の回路３５との間で、一定の回路動作を実行すると共に、ＦＰＧＡ回路３４０の回路形式を定義することができる。
【０２１４】
図３１に示す第１２の実施の形態の変形例は、１個のＦＰＧＡ回路３７を搭載したＡＳＩＣ３１に対して、外部にＣＰＵ３４１及びＦＰＧＡ回路３４０を配置して、各々を結合した実施例に相当している。図２２示す第８の実施の形態の変形例２と図２７に示す第１０の実施の形態の変形例との組み合わせと見ることもできる。これらのＬＳＩが実装された実装基板３２に電源が投入されると、第２の外部ＲＯＭ３０１の全データがＡＳＩＣ３１に取り込まれて、ＦＰＧＡ回路３１及びＦＰＧＡ回路３４０がユーザーモードになった後、第１の外部ＲＯＭ３０２のデータがＡＳＩＣ３１に取り込まれる。第２の外部ＲＯＭ３０１のデータはデコーダ回路２３３において復号化され、コンフィグレーション回路１３４を経由してＦＰＧＡ回路３７に書き込まれ、更にＦＰＧＡ回路３４０に書き込まれていく。第１の外部ＲＯＭ３０２のデータはＡＳＩＣ１のデコーダ回路１３３において復号化され、ＣＰＵ３４１に提供される。第２の外部ＲＯＭ３０１の全データがＦＰＧＡ回路３７及び３４０に書き込まれた後、ＡＳＩＣ３１は稼動を開始する。第１の外部ＲＯＭ３０２に対してはＣＰＵ３４１からアドレス指定を要求され、そのアドレス要求に応答して、第１の外部ＲＯＭ３０２のデータがＣＰＵ３４１に書き込まれる。このようにすることにより、ＦＰＧＡ回路或いはＣＰＵを各々搭載した複数のＡＳＩＣでも１個の暗号解読コードブロック４０によって、全体のデータの機密性を向上することが可能となる。
【０２１５】
（第１３の実施の形態）
本発明の第１３の実施の形態に係る半導体集積回路及びデータ転送システムは、図３２に示すように、実装基板３２上に実装された外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１及びＡＳＩＣ３１０及びＡＳＩＣ３２０とから構成されたハイブリッド集積回路である。ＡＳＩＣ３１は、外部ＲＯＭ３０１にバス配線３６０を介して接続されたデコーダ回路２３３と、外部ＲＯＭ３０２にバス配線３６１を介して接続されたデコーダ回路１３３と、デコーダ回路２３３に接続された暗号解読コードブロック４０と、更にデコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４に接続されたＦＰＧＡ回路３７と、更に、コンフィグレーション回路１３４に接続された暗号解読コードブロック４００と、ＦＰＧＡ回路３７に接続された内部回路３５とを混載して構成されたモノリシック集積回路である。図３２において、暗号解読コードブロック４００がＦＰＧＡ回路によって構成されている点に大きな特徴がある。ＡＳＩＣ３１０は、コンフィグレーション回路（図示せず）とＦＰＧＡ回路３４０を含み、ＡＳＩＣ３２０はＣＰＵ３４１を含む。ＦＰＧＡ回路３７はＡＳＩＣ３１０内のコンフィグレーション回路を介してＦＰＧＡ回路３４０に接続されている。また、デコーダ回路１３３は、データバス配線３６５を介して、ＡＳＩＣ３２０内のＣＰＵ３４１に接続されている。またＣＰＵ３４１はアドレスバス配線３６６を介して、ＲＯＭ３０２に接続されている。
【０２１６】
ＡＳＩＣ３１においては、ＦＰＧＡ回路データの復号化に用いられる暗号解読コードが暗号解読コードブロック４０内に埋め込まれている。ＣＰＵ３４１のデータ復号化に用いられる暗号解読コードはＦＰＧＡ回路で構成された暗号解読コードブロック４００内に埋め込まれている。暗号解読コードブロック４００を構成するＦＰＧＡ回路はコンフィグレーション回路１３４によって定義されることから、ＲＯＭ３０１のプログラミングによって、ＣＰＵの暗号ソフトウェアは変更可能となる。
【０２１７】
第１の外部ＲＯＭ３０２は第１の半導体チップ上に集積化され、第２の外部ＲＯＭ３０１は第２の半導体チップとは異なる半導体チップに集積化されている。或いはまた、第２の外部ＲＯＭ３０１は第１の半導体チップと同一の半導体チップ上に集積化されていても良い。また、ＡＳＩＣ３１は第２の半導体チップ上に集積化され、ＡＳＩＣ３１０は第３の半導体チップ上に集積化されている。更に、ＡＳＩＣ３２０は第４の半導体チップ上に集積化されている。尚、図３２の例ではすべての半導体チップが、同一の実装基板３２上に実装される例が示されているが、半田バンプ等を介して、多層構造として、実装されていても良いことは明らかである。
【０２１８】
第１３の実施の形態に係る半導体集積回路及びデータ転送システムは、図１７に示した、本発明の第７の実施の形態と構成及び動作が基本的には同じである。ＣＰＵ３４１が外部接続されたＡＳＩＣ３２０に搭載され、ＡＳＩＣ３１のＦＰＧＡ回路３７にはＦＰＧＡ回路３４０を搭載したＡＳＩＣ３１０が外部接続されている。このようにすることにより、ＦＰＧＡ回路３７を搭載した１個のＡＳＩＣ３１で、外部接続された複数個のＦＰＧＡ回路３４０への書き込みデータ、及びＣＰＵ３４１のソフトウェアデータの機密性を向上することが可能となる。その利点に加えて、ＣＰＵ３４１の暗号解読コードがＲＯＭ３０１のデータを変更することにより、いつでも切替可能になる。
【０２１９】
（第１３の実施の形態の変形例）
本発明の第１３の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、図３３に示すように、実装基板３２上に実装された、外部ＲＯＭ３０１及び３０２と、ＡＳＩＣ３１と、外部ＦＰＧＡ回路３４０と、外部ＣＰＵ３４１とから構成される。ＡＳＩＣ３１は、外部ＲＯＭ３０１にバス配線３６０を介して接続されたデコーダ回路２３３と、外部ＲＯＭ３０２にバス配線３６１を介して接続されたデコーダ回路１３３と、デコーダ回路２３３に接続された暗号解読コードブロック４０と、更にデコーダ回路２３３に接続されたコンフィグレーション回路１３４と、コンフィグレーション回路１３４に接続されたＦＰＧＡ回路３７と、更に、コンフィグレーション回路１３４に接続された暗号解読コードブロック４００と、ＦＰＧＡ回路３７に接続された内部回路３５とから構成される。図３２と同様に、暗号解読コードブロック４００は、ＦＰＧＡ回路によって構成されている。ＦＰＧＡ回路３７はＦＰＧＡ回路３４０に接続されている。また、デコーダ回路１３３は、データバス配線３６５を介して、ＣＰＵ３４１に接続されている。また、ＣＰＵ３４１はアドレスバス配線３６６を介してＲＯＭ３０２の接続されている。
【０２２０】
ＡＳＩＣ３１においては、ＦＰＧＡ回路データの復号化に用いられる暗号解読コードが暗号解読コードブロック４０内に埋め込まれている。ＣＰＵ３４１のデータ復号化に用いられる暗号解読コードはＦＰＧＡ回路で構成された暗号解読コードブロック４００内に埋め込まれている。暗号解読コードブロック４００を構成するＦＰＧＡ回路はコンフィグレーション回路１３４によって定義されることから、ＲＯＭ３０１のプログラミングによって、ＣＰＵの暗号ソフトウェアは変更可能となる。
【０２２１】
図３２と図３３とを比較すると明らかなように、第１３の実施の形態の変形例に係る半導体集積回路及びデータ転送システムは、基本的には構成及び動作は、第１３の実施の形態に係る半導体集積回路及びデータ転送システムと同様である。このようにすることにより、ＦＰＧＡ回路３７を搭載した１個のＡＳＩＣ３７で、ＡＳＩＣ３１に搭載されたＦＰＧＡ回路３７に書き込まれるデータの機密性を向上するだけでなく、外部接続された汎用製品であるＦＰＧＡ回路３４０及びＣＰＵ３４１のデータの機密性を向上することが可能となる。その利点に加えて、ＣＰＵ３４１の暗号解読コードがＲＯＭ３０１のデータを変更することにより、いつでも切替可能になる。
【０２２２】
なお、上記各実施の形態は、それぞれ組み合わせて実施することができる。組み合わせた場合、ＣＰＵ、ＦＰＧＡを搭載し、ＣＰＵ、ＦＰＧＡをともに暗号データを用いて、入力を行う半導体集積回路及びデータ転送システムを得ることができる。
【０２２３】
このように、本発明はここでは記載していない様々な実施例等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な以下のクレイムによってのみ定められるものである。
【０２２４】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。したがって、本発明の技術範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【０２２５】
【発明の効果】
本発明によれば、設計データやソフトウェアが読み出せないセキュリティー性の高い半導体集積回路、データ転送システム、及びデータ転送方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態にかかる半導体集積回路及びデータ転送システムの構成を表すブロック図。
【図２】本発明の第１の実施の形態にかかる半導体集積回路及びデータ転送システムの動作方法を表すフローチャート図。
【図３】本発明の第１の実施の形態にかかるＲＡＭ型ＦＰＧＡ回路の構成を表すブロック図。
【図４】本発明の第１の実施の形態にかかるＲＡＭ型ＦＰＧＡ回路のＲＡＭの構成を表すブロック図。
【図５】本発明の第１の実施の形態にかかるＲＡＭ型ＦＰＧＡ回路のＲＡＭを構成するシフトレジスタの基本単位となるＤタイプ・フリップ・フロップの一例を表すブロック図。
【図６】本発明の第１の実施の形態にかかるＲＡＭ型ＦＰＧＡ回路のＩ／Ｏレジスタ回路の構成を表すブロック図。
【図７】本発明の第１の実施の形態におけるコンフィグレーション方法を説明するフローチャート図。
【図８】本発明の第１の実施の形態にかかるデコーダ回路及び暗号解読コード部の構成を表す論理回路図。
【図９】本発明の第１の実施の形態の変形例にかかるデコーダ回路及び暗号解読コード部の構成を表す論理回路図。
【図１０】本発明の第２の実施の形態にかかる半導体集積回路及びデータ転送システムの構成を表すブロック図。
【図１１】本発明の第２の実施の形態にかかる半導体集積回路及び半導体集積回路の動作方法を表すフローチャート図。
【図１２】本発明の第３の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図１３】本発明の第４の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図１４】本発明の第５の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図１５】本発明の第６の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図１６】本発明の第６の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの動作方法を表すフローチャート図。
【図１７】本発明の第７の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図１８】本発明の第７の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムにおいて、ＣＰＵソフトウェアの暗号化コードの決定からＣＰＵの稼動までの動作方法を表すフローチャート図。
【図１９】本発明の第７の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムにおいて、ＣＰＵソフトウェアの暗号化解読コードの変更からＣＰＵの稼動までの動作方法を表すフローチャート図。
【図２０】本発明の第８の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２１】本発明の第８の実施の形態の変形例１にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２２】本発明の第８の実施の形態の変形例２にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２３】本発明の第８の実施の形態の変形例３にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２４】本発明の第９の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２５】本発明の第９の実施の形態の変形例にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２６】本発明の第１０の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２７】本発明の第１０の実施の形態の変形例にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２８】本発明の第１１の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図２９】本発明の第１１の実施の形態の変形例にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図３０】本発明の第１２の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図３１】本発明の第１２の実施の形態の変形例にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図３２】本発明の第１３の実施の形態にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図３３】本発明の第１３の実施の形態の変形例にかかるＡＳＩＣ及びＡＳＩＣシステムの構成を表すブロック図。
【図３４】本発明の比較例のＦＰＧＡ混載半導体集積回路及びデータ転送システムの構成を表すブロック図。
【図３５】本発明の別の比較例のＣＰＵ混載半導体集積回路及びデータ転送システムの構成を表すブロック図。
【符号の説明】
１，２０，３０，５０，６０，３０１，３０２…ＲＯＭ
２，２１，５１，６１…半導体集積回路
３，２２，１３３，２３３…デコーダ回路
４，２３，４０，４００…暗号解読コードブロック
５，５２，１３４…コンフィグレーション回路
６，３７，５３，３４０，３５０…ＦＰＧＡ回路
７，２７，３５，５４，６５…内部回路
８，２８，３２，５５，６６…実装基板
１０，１０ｉ，ｊ，１０ｉ，ｊ；１，　１０ｉ；１，ｊ，１０ｉ；１，ｊ；１…コンフィギャブル・ロジック・ブロック
１１，１１ｉ，ｊ，　１１ｉ，ｊ；１，　１１ｉ，ｊ；２，　１１ｉ；１，ｊ，　１１ｉ；１，ｊ；１，　１１ｉ；１，ｊ；２，　１１ｉ；２，ｊ，　１１ｉ；２，ｊ；１，　１１ｉ；２，ｊ；２…スイッチング・マトリックス
１２…主配線
１３…接続配線
１４…接続点
１８…バイナリーカウンタ
１９…データセレクタ
２４，３８，６２，３４１…ＣＰＵ
２５，６３，３６２，３６６…アドレスバス配線
２６，３６，５６，６４，３６０，３６１，３６３，３６５…データバス配線
３１，３１０，３２０…ＡＳＩＣ
３３…暗号解読処理回路
３４…暗号化対象処理回路
５０１…アウトプット・レジスタ
５０２…アウトプット・イネーブル・レジスタ
５０３…インプット・レジスタ
５０４…Ｉ／Ｏバッファ
５０５…Ｉ／Ｏターミナル
ＥＯ，ＥＯ０，ＥＯ１，ＥＯ２，ＥＯ３，ＥＯ４，ＥＯ５，ＥＯ６，ＥＯ７…排他的論理和回路
ＳＴ１〜ＳＴ１２，ＳＴ１０１〜ＳＴ１１２，ＳＵ１〜ＳＵ１１，ＳＶ１〜ＳＶ１０，ＳＷ１〜ＳＷ３６…ステップ
ＳＩ…シフトレジスタ入力信号
ＳＲ１，ＳＲ２，…，ＳＲ６…シフトレジスタ
Ｄ…ＤタイプフリップフロップのＤ入力
ＣＫ…Ｄタイプフリップフロップのクロック入力
Ｑ…ＤタイプフリップフロップのＱ出力
ＱＮ…Ｄタイプフリップフロップの反転出力
Ｑ１，Ｑ２，…，Ｑ６…シフトレジスタの各ステージの出力
ＥＮ…Ｄタイプフリップフロップのイネーブル入力
【図１】
2004007472.tif 000003
【図２】
2004007472.tif 000004
【図３】
2004007472.tif 000005
【図４】
2004007472.tif 000006
【図５】
2004007472.tif 000007
【図６】
2004007472.tif 000008
【図７】
2004007472.tif 000009
【図８】
2004007472.tif 000010
【図９】
2004007472.tif 000011
【図１０】
2004007472.tif 000012
【図１１】
2004007472.tif 000013
【図１２】
2004007472.tif 000014
【図１３】
2004007472.tif 000015
【図１４】
2004007472.tif 000016
【図１５】
2004007472.tif 000017
【図１６】
2004007472.tif 000018
【図１７】
2004007472.tif 000019
【図１８】
2004007472.tif 000020
【図１９】
2004007472.tif 000021
【図２０】
2004007472.tif 000022
【図２１】
2004007472.tif 000023
【図２２】
2004007472.tif 000024
【図２３】
2004007472.tif 000025
【図２４】
2004007472.tif 000026
【図２５】
2004007472.tif 000027
【図２６】
2004007472.tif 000028
【図２７】
2004007472.tif 000029
【図２８】
2004007472.tif 000030
【図２９】
2004007472.tif 000031
【図３０】
2004007472.tif 000032
【図３１】
2004007472.tif 000033
【図３２】
2004007472.tif 000034
【図３３】
2004007472.tif 000035
【図３４】
2004007472.tif 000036
【図３５】
2004007472.tif 000037