(57)【要約】【課題】ユニット及び集積回路を統合することで低価格化を実現しながら、画像処理部及び画像形成部の機能を混合することなく独立して開発可能である集積回路を提供すること。【解決手段】画像形成処理を実行するための２個のＣＰＵ３４、２１と、２個のＣＰＵ３４、２１毎に独立して接続され、２個のＣＰＵ３４、２１のそれぞれによって暗号鍵を設定可能である２個の暗号鍵用レジスタ２４、３０と、２個のＣＰＵ３４、２１に接続され、２個の暗号鍵用レジスタ２４、３０のいずれかに設定された暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う暗号／復号回路２０と、暗号／復号回路２０に接続されたプログラマブル回路４８と、を備え、暗号鍵用レジスタ２４に暗号鍵を設定したＣＰＵ３４、２１のみが、プログラマブル回路４８にプログラムを設定可能であり、また、プログラマブル回路４８に設定されたプログラムを読取可能である。【選択図】図２
2010268308.tif 000002
【特許請求の範囲】
【請求項１】
画像形成処理を実行するためのＮ個（Ｎ≧２）のプロセッサと、
前記Ｎ個のプロセッサ毎に独立して接続され、前記Ｎ個のプロセッサのそれぞれによって暗号鍵を設定可能であるＮ個の暗号鍵用レジスタと、
前記Ｎ個のプロセッサに接続され、前記Ｎ個の暗号鍵用レジスタのいずれかに設定された暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う暗号／復号回路と、
前記暗号／復号回路に接続されたプログラマブル回路と、を備え、
前記暗号鍵用レジスタに前記暗号鍵を設定したプロセッサのみが、前記プログラマブル回路に前記プログラムを設定可能であり、また、前記プログラマブル回路に設定された前記プログラムを読取可能であることを特徴とする画像形成装置用集積回路。
【請求項２】
画像形成処理を実行するためのＮ個（Ｎ≧２）のプロセッサと、
前記Ｎ個のプロセッサ毎に独立して接続され、前記Ｎ個のプロセッサのそれぞれによって第１の暗号鍵を設定可能であるＮ個の第１の暗号鍵用レジスタと、
前記Ｎ個のプロセッサ毎に独立して接続され、前記第１の暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行うＮ個の第１の暗号／復号回路と、
前記Ｎ個のプロセッサ毎に独立して接続され、前記Ｎ個のプロセッサのそれぞれによって第２の暗号鍵を設定可能であるＮ個の第２の暗号鍵用レジスタと、
前記Ｎ個の第１の暗号／復号回路にそれぞれ接続され、前記第２の暗号鍵を用いて暗号化されたプログラムの復号化処理又は前記プログラムの暗号化処理を行うＮ個の第２の暗号／復号回路と、
前記Ｎ個の第２の暗号／復号回路のそれぞれに接続されたＮ個のプログラマブル回路と、を備え、
前記第１の暗号鍵用レジスタに第１の暗号鍵を、また、前記第２の暗号鍵用レジスタに第２の暗号鍵を設定したプロセッサのみが、前記プログラマブル回路に前記プログラムを設定可能であり、また、前記プログラマブル回路に設定された前記プログラムを読取可能であることを特徴とする画像形成装置用集積回路。
【請求項３】
画像形成処理を実行するための第１、第２のプロセッサと、
前記第１のプロセッサに独立して接続され、前記第１のプロセッサによって第１の暗号鍵を設定可能である第１の暗号鍵用レジスタと、
前記第１のプロセッサに接続され、前記第１の暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う暗号／復号回路と、
前記暗号／復号回路に接続されたプログラマブル回路と、
前記第２のプロセッサに独立して接続され、前記第２のプロセッサによって第２の暗号鍵を設定可能である第２の暗号鍵用レジスタと、
前記第２のプロセッサに独立して接続され、前記第２のプロセッサによって公開鍵を設定可能である公開鍵用レジスタと、
前記公開鍵により前記第２の暗号鍵の暗号化処理を行う暗号回路と、
前記第２のプロセッサ及び前記暗号回路に接続され、前記公開鍵で暗号化された第２の暗号鍵を、第３のプロセッサを備えた外部装置へ転送するための第１のインターフェースと、
前記第１のプロセッサ及び前記暗号／復号回路に接続され、前記外部装置に記憶され、該外部装置で暗号化されたプログラムを取得可能である第２のインターフェースと、を備え、
前記第１の暗号鍵用レジスタに前記第１の暗号鍵が設定された場合には前記第１のプロセッサのみが、前記第２の暗号鍵用レジスタに前記第２の暗号鍵が設定され、かつ、前記公開鍵用レジスタに前記公開鍵が設定された場合には前記第３のプロセッサのみが、前記プログラマブル回路に前記プログラムを設定可能であり、また、前記プログラマブル回路に設定された前記プログラムを読取可能であることを特徴とする画像形成装置用集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置用集積回路に関する。
【背景技術】
【０００２】
従来の画像印刷装置は、ホストコンピュータ等からコードデータを受け取る画像処理部と、画像処理部からのイメージデータに基づいて画像を形成する画像形成部とを備える構成であるため、異なる製造業者のそれぞれが画像処理部、画像形成部の開発を個々に行っていた（特許文献１及び２参照）。また、近年、集積回路の高密度化や多機能化が進み、集積回路の規模が拡大するのに伴い、１個のチップで多品種に対応可能とすべく、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いた機能切り替え技術が提案されている（特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０９−８６０１８号公報
【特許文献２】特開平０７−１４３３００号公報
【特許文献３】特開２０００−８９９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、異なる製造業者が、画像処理部、画像形成部の制御用基板を個々に作成する場合には、特許文献３に開示されているように、それぞれの制御用基板にプログラマブル回路を用いた機能切り替え技術を適用することができる。
【０００５】
しかしながら、より安価な構成にするために、画像処理部と画像形成部とを統合すると、互いに異なる製造業者が１個の集積回路上で機能切り替え技術を用いて開発することとなり、一方の製造業者の技術が他方の製造業者に漏洩してしまう可能性がある。
【０００６】
本発明は、上記問題点に鑑みてなされたものであり、ユニット及び集積回路を統合することで低価格化を実現しながら、画像処理部及び画像形成部の機能を混合することなく独立して開発可能である集積回路を提供するものである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係る画像形成装置用集積回路は、画像形成処理を実行するためのＮ個（Ｎ≧２）のプロセッサと、前記Ｎ個のプロセッサ毎に独立して接続され、前記Ｎ個のプロセッサのそれぞれによって暗号鍵を設定可能であるＮ個の暗号鍵用レジスタと、前記Ｎ個のプロセッサに接続され、前記Ｎ個の暗号鍵用レジスタのいずれかに設定された暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う暗号／復号回路と、前記暗号／復号回路に接続されたプログラマブル回路と、を備え、前記暗号鍵用レジスタに前記暗号鍵を設定したプロセッサのみが、前記プログラマブル回路に前記プログラムを設定可能であり、また、前記プログラマブル回路に設定された前記プログラムを読取可能である。
【発明の効果】
【０００８】
本発明によれば、ユニット及び集積回路を統合することで低価格化を実現しながら、画像処理部及び画像形成部の機能を混合することなく独立して開発可能である画像形成装置用集積回路を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例１に係るカラーレーザビームプリンタの断面図である。
【図２】カラーレーザビームプリンタの制御部のブロック図である。
【図３】ＣＰＵ３４がプログラマブル回路４８を用いる場合のフローチャートである。
【図４】ＣＰＵ２１がプログラマブル回路４８を用いる場合のフローチャートである。
【図５】実施例２に係るカラーレーザビームプリンタの制御部の情報隠蔽機能部分のブロック図である。
【図６】実施例３に係るカラーレーザビームプリンタの制御部のブロック図である。
【図７】ＣＰＵ６４がプログラマブル回路４８を用いる場合のＣＰＵ６４のフローチャートである。
【図８】外部ＣＰＵ７６がプログラマブル回路４８を用いる場合の外部ＣＰＵ７６のフローチャートである。
【図９】外部ＣＰＵ７６がプログラマブル回路４８を用いる場合のＣＰＵ６７のフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態について添付図面を参照して詳細に説明する。なお、本発明の技術的範囲は特許請求の範囲によって確定されるのであって、以下に例示する実施の形態に限定されるものではない。
【００１１】
＜実施例１（図１〜図４）＞
図１は本発明の特徴を表すカラーレーザビームプリンタの断面図である。ここでは、同じ機能を有する構成には同じ符号を付け、符号の後にａ、ｂ、ｃ、ｄと付けることで同じ機能が複数の構成であることを示す。
【００１２】
１００はプリンタ本体である。１は感光体ドラム、２は感光体ドラム１を均一に帯電する帯電器、３はビデオデータに同期してレーザ光を走査し、感光体ドラム１上に潜像を作像するレーザスキャナである。４は感光体ドラム１上の潜像を可視化する現像器、５は紙を格納する紙カセット、６は紙カセット５内の紙を本体に給紙する給紙ローラである。
【００１３】
７は給紙ローラ６で給紙された紙を一旦停止し、画像とタイミングを合わせて紙搬送を再開するレジストローラである。８はトナー像を重ね合わせてカラー画像を転写する中間転写ベルトである。９は搬送された中間転写ベルト８に感光体ドラム１上のトナー像を転写する１次転写器、１０は搬送された紙に中間転写ベルト８上のトナー像を転写する２次転写器である。１１は加熱及び加圧することで紙上のトナー像を定着する定着器、１２は紙の有無を判別する排紙センサ、１３は紙を機外に排出する排紙ローラ、１４は排紙トレイ、１５は制御部である。
【００１４】
図２は本発明の特徴を表すカラーレーザビームプリンタの制御部のブロック図である。制御部１５は、外部のホストコンピュータ等からコード化された画像データを受け取り、そのコードデータをビットマップ化された画素データに変換するコントローラ制御機能と、トナー画像を記録材である紙に形成するためのエンジン制御機能とを有する。５０はコントローラ制御とエンジン制御を集積化した画像形成装置用集積回路（ＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ））である。コントローラ制御機能は、画像形成処理を実行するためのＮ個（本実施例では、２個）のＣＰＵ２１、３４（プロセッサ）を有する。ＣＰＵ２１には、共通バス２９を介して、外部Ｉ／Ｆ２２、画素データ用ＲＡＭ２３、共用ＲＡＭ２５、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２６及び表示部２８等の各デバイスが接続される。共通バス２９はデータバス、アドレスバス、コントロールバスから構成されており、ＣＰＵ２１から各デバイスのアクセスが可能とされる。
【００１５】
係るコントローラ制御機能は、外部インタフェース（例えば、セントロニクス型パラレルインタフェース又はＲＳ２３２Ｃ型シリアルインタフェース）を介してコード化された画像データを受け取る。そのコードデータは、外部Ｉ／Ｆ２２に入力される。
【００１６】
ＣＰＵ２１は、画像データの送信準備処理として外部Ｉ／Ｆ２２を介して入力されたコードデータを共用ＲＡＭ２５に格納すると共に、コードデータを所定のフォーマットに従って画素データを生成し、画素データをＲＡＭ２３の特定のアドレスに格納する。
【００１７】
なお、電子写真プロセスを用いた画像形成処理では、１画素で表現できる階調数が少ないため、画素データへの変換において、複数画素で階調表現を行う擬似中間調（例えば、ディザ法や誤差拡散法）を行う。この画素データを格納するＲＡＭ２３は、いわゆるビットマップメモリである。コードデータから画素データへの変換は、プログラマブル回路４８で行われ、そのプログラムデータは暗号化された状態でＲＯＭ１７に格納される。
【００１８】
ＣＰＵ２１は、後述のプログラマブル回路の情報隠蔽機能を用いて、コードデータから画素データへの変換回路をプログラマブル回路４８上に形成し、プログラマブル回路４８上の変換回路で画素データを生成する。
【００１９】
なお、プログラマブル回路４８は、共通バス２９でも接続されており、コードデータは共通バス２９から画素データへの変換回路に入力され、結果の出力は共通バス２９を用いてＲＡＭ２３へ格納する。このように生成、格納を行ってＣＰＵ２１は後述のエンジン制御機能がデータの受け取り可能であることを確認してＤＭＡＣ２６をアクティブの状態にする。そして、ＤＭＡＣ２６は、共通バス２９を専有してＲＡＭ２３に格納された画素データを所定のアドレスから読み出していく。ＤＭＡＣ２６がアクティブになると、ＣＰＵ２１及びＤＭＡＣ２６は交互に共通バス２９を専有する。ＤＭＡＣ２６はＲＡＭ２３の所定のアドレスから画素データを読み出し、そのデータをシリアルデータに変換する。
【００２０】
そして、エンジン制御に同期してそのシリアル化した画像信号３２をレーザ制御回路３１に送る。エンジン制御では、その画像信号３２に従ってトナー像を形成する。エンジン制御は、制御手段としてのＣＰＵ３４を有し、コントローラ制御機能の指令に従ってエンジン内の各部をローカルバス１８に接続されたエンジン制御Ｉ／Ｏ２７を介して制御する。このように、コントローラ制御機能は、外部より受けた画像データをシリアル化した（すなわち、ラスタイメージ化した）画像信号に変換し、その信号をエンジン制御機能に送る。
【００２１】
なお、コントローラ制御機能は外部インタフェースを介して受け取る画像データの他に、補正用データを生成し、生成した補正用データも同様にラスタイメージ化してレーザ制御回路３１へ送る。ＣＰＵ３４は、その補正用データに従ってトナー像（以下、トナーパッチと呼ぶ）を中間転写ベルト８に形成する。補正用データは、階調−濃度特性が得られるように、複数の階調をパッチ状に配置したものである。中間転写ベルト８上に作成されたトナーパッチの濃度を濃度センサ（図示せず）で検出し、その検出結果に基づいて階調−濃度特性を生成する。検出結果に基づいて階調−濃度特性を生成するための演算は、プログラマブル回路４８で行われ、そのプログラムデータは暗号化された状態でＲＯＭ１６に格納される。
【００２２】
ＣＰＵ３４は、後述のプログラマブル回路の情報隠蔽機能を用いて、階調−濃度特性を生成するための演算回路をプログラマブル回路４８上に形成し、プログラマブル回路４８上の演算回路で階調−濃度特性を生成する。なお、ＣＰＵ３４とプログラマブル回路４８との間は、共通バス２９でも接続されており、演算回路へのデータ入力と結果の出力は共通バス２９を用いて行う。ＣＰＵ３４は、生成した階調−濃度特性を共用ＲＡＭ２５を介してコントローラ制御機能へ渡す。ＣＰＵ２１は、受け取ったトナーパッチの階調‐濃度特性に基づいて、画素データの濃度を補正する。その他に、コントローラ制御機能のＣＰＵ２１は、共用ＲＡＭ２５を介してエンジン制御機能の特定の動作をエンジン制御機能に指令する役割を有する。その動作の指令（コマンド）は、共用ＲＡＭ２５を介して画像形成手段及び給紙制御手段としてのＣＰＵ３４に渡される。また、ＣＰＵ２１は、共用ＲＡＭ２５を介してエンジンの内部情報を知ることができる。
【００２３】
［印字動作について］
コントローラ制御機能のＣＰＵ２１が、外部インタフェースを介してホストコンピュータから印字指令を受けたことを想定する。ＣＰＵ２１は、ホストコンピュータから受けたコードデータが１ページ分に達したと判断し、共用ＲＡＭ２５を介してＣＰＵ３４に対してカセット給紙指令を渡して印字を開始する。ＣＰＵ３４は、このカセット給紙指令を受け取ると、エンジン制御Ｉ／Ｏ２７を介して、レーザスキャナモータドライバ３６をアクティブにし、レーザスキャナモータ３７を回転させる。同時にＣＰＵ３４は、搬送や作像系や定着の各種モータドライバ３８をアクティブにし、各種モータ３９を回転させて感光体ドラム１、定着器１１内の加熱ローラや加圧ローラを回転させる。また、各種モータ３９は紙を搬送させる役割をもつ。
【００２４】
ＣＰＵ３４がレーザスキャナモータ３７の回転数が所定値に達したことを検知すると、レーザ制御回路３１にレーザ強制点灯指令を出力する。半導体レーザ４０から発光したレーザビームは、レーザスキャナモータ３７によって回転するポリゴンミラー（不図示）に照射され、そのビームは反射ミラー（不図示）上を走査する。そして、反射ミラーによって反射されたビームは感光体ドラム１上を走査する。
【００２５】
一方、ポリゴンミラーの反射ビームは、その一部がビーム受光素子４１に入射される。ビーム検出回路４２より出力されたパルス信号は、レーザ制御回路３１に入り、主走査同期信号としてＤＭＡＣ２６に送られる。レーザ制御回路３１は、一度、主走査同期信号を出力できるようになると、半導体レーザ４０を強制的に全点灯するのを停止し、レーザビームがビーム受光素子の近傍のみを走査するように、半導体レーザ４０を部分点灯させる。
【００２６】
一方、ＣＰＵ３４は、各種モータ３９を回転し始めた後、高圧発生回路４３で帯電器２、現像器４、１次転写器９及び２次転写器１０に順次高圧を印加させていく。高圧により潜像形成が可能な状態になると、ＣＰＵ３４は、共用ＲＡＭ２５を介して画像信号をすぐに受ける用意ができたことをコントローラ制御機能のＣＰＵ２１に知らせる。ＣＰＵ２１は、共用ＲＡＭ２５を介してこの情報を知り、ＤＭＡＣ２６をアクティブの状態にする。
【００２７】
そして、ＤＭＡＣ２６は、ＲＡＭ２３から画素データを読み取り、レーザ制御回路３１からの主走査同期信号に同期してシリアルの画像信号３２をレーザ制御回路３１に出力する。レーザ制御回路３１は、画像信号３２に基づいてレーザドライバ３３を駆動し、半導体レーザ４０から画像信号によって変調されたビームを出力させる。変調ビームは、ポリゴンミラーに入射し、反射ミラーで反射された後、感光体ドラム１の表面上を走査する。
【００２８】
感光体ドラム１の表面は、帯電器２によって帯電されており、その帯電したドラムの表面上を変調されたレーザ光が走査することによって感光体ドラム１の表面上に潜像が形成される。潜像は現像器４によってトナー像に変換され、１次転写器９によって中間転写ベルト８に転写される。
【００２９】
一方、ＣＰＵ３４は、各種モータ３９を回転し始めた後、定着器１１内の加熱ローラの温度が所定値に上昇するのを確認した後に給紙ローラ６を駆動させ、紙カセット５上に積載された紙を給紙する。その給紙した紙はレジストローラ７で一度停止する。中間転写ベルト８に転写されたトナー像の位置が搬送された紙と合うように、ＣＰＵ３４はレジストローラ７を駆動する。ここで、給紙ローラ６、レジストローラ７の駆動は、各種ソレノイド４４によってＯＮ／ＯＦＦされる。レジストローラ７の駆動により搬送された紙は、２次転写器１０によって中間転写ベルト８上のトナー像が転写される。トナー像を載せた搬送紙は、回転する定着器１１内の加熱ローラと加圧ローラとの間に入り込む。搬送紙上のトナーは、定着器１１内の加熱ローラと加圧ローラとから受ける熱と圧力によって紙に定着される。そして、トナーが定着された搬送紙は、排紙ローラ１３により排紙トレイ１４に排出される。
【００３０】
なお、このトナーの定着プロセスにおいて、定着器１１内の加熱ローラの表面温度はＣＰＵ３４によって一定の温度に保たれる。定着器１１内の加熱ローラの表面温度は、サーミスタ（不図示）に伝達され、ＣＰＵ３４がサーミスタの出力値が所定値になるようにヒータドライバ４５を介して加熱ローラヒータ４６をＯＮ／ＯＦＦさせる。これにより、定着器１１内の加熱ローラの表面温度は一定値に保たれる。ＣＰＵ３４は、中間転写ベルト８上のクリーニングが終了した後、順次、各動作を停止する。
【００３１】
［プログラマブル回路の情報隠蔽機能について］
図２において、破線で囲んだ部分４９がプログラマブル回路の情報隠蔽機能を構成する部分である。３４、２１はＣＰＵで、上述した様にそれぞれ、エンジン制御とコントローラ制御を行う。１６はＲＯＭで、ＣＰＵ３４用の制御プログラムや暗号鍵データや暗号化されたプログラマブル回路用の階調−濃度特性を生成するための演算回路を生成するプログラムデータが格納される。１７はＲＯＭで、ＣＰＵ２１用の制御プログラムや暗号鍵データや暗号化されたプログラマブル回路用のコードデータから画素データへの変換回路を生成するプログラムデータが格納される。１８はＣＰＵ３４のローカルバス、１９はＣＰＵ２１のローカルバス、２９は共通バスである。２５は共用ＲＡＭで、ＣＰＵ３４、ＣＰＵ２１用のワークデータの格納、ＣＰＵ３４とＣＰＵ２１との間で情報データの受け渡しのために用いられる。
【００３２】
なお、情報隠蔽機能のために、共用ＲＡＭ２５上には、プログラマブル回路４８の使用が可能であるか否かをＣＰＵ３４とＣＰＵ２１との間で確認するための領域として、回路使用中フラグを設ける。回路使用中フラグは、プログラマブル回路４８を使用するＣＰＵが１を設定し、使用が終われば０に設定する。他方のＣＰＵは、回路使用中フラグを確認することで、プログラマブル回路４８を使用可能であるか否かを判断できる。４８はプログラマブル回路で、例えば、ＦＰＧＡアーキテクチャで構成され、プログラムデータにより内部のロジックを変更する。プログラマブル回路４８は、暗号／復号回路２０に接続される。
【００３３】
２０は暗号／復号回路であり、２個のＣＰＵ３４、２１に接続され、２個の暗号鍵用レジスタ２４、３０のいずれかに設定された暗号鍵を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う。また、暗号／復号回路２０には、例えば、共通鍵暗号方式であるＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）を用いる。２４は暗号鍵Ｂ用レジスタ（暗号鍵用レジスタ）で、ＣＰＵ３４とローカルバス１８で接続され、暗号鍵Ｂデータを設定する。３０は暗号鍵Ａ用レジスタで、ＣＰＵ２１とローカルバス１９で独立して接続され、ＣＰＵ２１によって暗号鍵Ａデータを設定可能である。３５は排他的論理和演算回路で、暗号鍵Ｂ用レジスタ２４のデータと暗号鍵Ａ用レジスタ３０のデータを排他的論理和演算する。
【００３４】
４７は鍵データ格納レジスタで、排他的論理和演算回路３５の演算結果が格納され、暗号／復号回路２０で用いる暗号鍵データとなる。暗号／復号回路２０は、共通バス２９に接続され、鍵データ格納レジスタ４７のデータを用いて共通バス２９からのデータを復号してプログラマブル回路４８へ送り、プログラマブル回路４８からのデータは暗号化して共通バス２９へ送る。暗号鍵Ｂ用レジスタ２４又は暗号鍵Ａ用レジスタ３０には、暗号／復号回路２０を用いない場合に、全て“０”のデータを入れ、他方の鍵データを有効にする。鍵データを全て“０”にする場合は、プログラマブル回路４８へ書き込んだプログラムデータの内容を理解不能とするため、プログラマブル回路４８を初期化するか、無効な（他方のＣＰＵでデータを読み出されても良い）データを書き込んでおく。
【００３５】
ＣＰＵ３４がプログラマブル回路４８を用いる場合の処理の一例を図３に示す。まず、回路使用中フラグが０であることを確認し、回路使用中フラグを１に設定する（Ｓ１１）。そして、ローカルバス１８を介して暗号鍵Ｂ用レジスタ２４を設定し、暗号化したプログラムデータを共通バス２９を介して暗号／復号回路２０へ送る（Ｓ１２）。暗号／復号回路２０は、暗号鍵Ｂ用レジスタ２４のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路４８へ書き込む（Ｓ１３）。プログラマブル回路４８は、書き込まれたプログラムデータに従って回路（動作）の変更を行う（Ｓ１４）。必要な動作が終了したら（Ｓ１５）、プログラマブル回路４８に予め定めた初期化データを書き込むことで回路を初期化し（Ｓ１６）、暗号鍵Ｂ用レジスタ２４のデータに全て０を書き込み、回路使用中フラグを０に設定する（Ｓ１７）。
【００３６】
ＣＰＵ２１がプログラマブル回路４８を用いる場合の処理の一例を図４に示す。まず、回路使用中フラグが０であることを確認し、回路使用中フラグを１に設定する（Ｓ２１）。そして、ローカルバス１９を介して暗号鍵Ａ用レジスタ３０を設定し、暗号化したプログラムデータを共通バス２９を介して暗号／復号回路２０へ送る（Ｓ２２）。暗号／復号回路２０は、暗号鍵Ａ用レジスタ３０を用いて暗号化したプログラムデータを復号化し、プログラマブル回路４８へ書き込む（Ｓ２３）。プログラマブル回路４８は、書き込まれたプログラムデータに従って回路（動作）の変更を行う（Ｓ２４）。必要な動作が終了したら（Ｓ２５）、プログラマブル回路４８に予め定めた初期化データを書き込むことで回路を初期化し（Ｓ２６）、暗号鍵Ａ用レジスタ３０のデータに全て０を書き込み、回路使用中フラグを０に設定する（Ｓ２７）。
【００３７】
また、暗号鍵Ａ用レジスタ３０、暗号鍵Ｂ用レジスタ２４のいずれにも暗号鍵が設定されていない場合には、暗号／復号回路２０は暗号／復号動作を行わず、共通バス２９とプログラマブル回路４８が接続された状態と同等の動作となる。
【００３８】
以上述べた通り、本実施例によれば、暗号鍵Ｂ用レジスタ２４に暗号鍵Ｂを設定したＣＰＵ３４又は暗号鍵Ａ用レジスタ３０に暗号鍵Ａを設定したＣＰＵ２１のみが、プログラマブル回路４８にプログラムを設定可能であり、また、プログラマブル回路４８に設定されたプログラムを読取可能とすることができる。これにより、ＳＯＣ内でコントローラ制御機能とエンジン制御機能とを統合してプログラマブル回路を共有した場合であっても、プログラマブル回路の生成データを暗号化することで、コンタミネーション無しに独立した開発をすることが可能になる。
【００３９】
＜実施例２（図５）＞
図５は、実施例２の特徴を表すカラーレーザビームプリンタの制御部の情報隠蔽機能部分のブロック図である。なお、本実施例に係るカラーレーザビームプリンタの構成は、図５の破線で囲んだ部分４９の内部構成のみが実施例１の構成と異なるため、実施例１と同等の部分の説明は省略し、また、実施例１の構成と同じ機能を有する箇所は同じ符号を付す。
【００４０】
図５において、３４、２１は画像形成処理を行うためのＣＰＵ（プロセッサ）で、実施例１で説明したように、それぞれがエンジン制御とコントローラ制御を行う。１６はＲＯＭで、ＣＰＵ３４用の制御プログラムや暗号鍵データや暗号化されたプログラマブル回路用の階調−濃度特性を生成するための演算回路を生成するプログラムデータが格納される。１７はＲＯＭで、ＣＰＵ２１用の制御プログラムや暗号鍵データや暗号化されたプログラマブル回路用のコードデータから画素データへの変換回路を生成するプログラムデータが格納される。１８はＣＰＵ３４のローカルバス、１９はＣＰＵ２１のローカルバス、２９は共通バスである。２５は共用ＲＡＭで、ＣＰＵ３４、ＣＰＵ２１用のワークデータの格納と、ＣＰＵ３４とＣＰＵ２１との間での情報データの受け渡しに用いられる。
【００４１】
なお、実施例１と同様に、情報隠蔽機能のために、共用ＲＡＭ２５上には、プログラマブル回路５１、５２の使用が可能であるか否かをＣＰＵ３４とＣＰＵ２１との間で確認するための領域として回路１使用中フラグと回路２使用中フラグを設ける。回路１使用中フラグは、プログラマブル回路５１を使用するＣＰＵが１を設定し、使用が終われば０に設定する。他方のＣＰＵは、回路１使用中フラグを確認することで、プログラマブル回路５１を使用可能であるか否かを判断できる。回路２使用中フラグは、プログラマブル回路５２を使用するＣＰＵが１を設定し、使用が終われば０に設定する。他方のＣＰＵは、回路２使用中フラグを確認することで、プログラマブル回路５２を使用可能であるか否かを判断できる。５１、５２はプログラマブル回路で、暗号／復号回路５５、５６のそれぞれに接続される。プログラマブル回路５１、５２は、例えば、ＦＰＧＡアーキテクチャで構成され、プログラムデータにより内部のロジックを変更する。
【００４２】
５３、５４は暗号／復号回路（第１の暗号／復号回路）であり、ＣＰＵ３４、２１毎（プロセッサ毎）に独立して接続され、暗号鍵Ｃ、Ｄ（第１の暗号鍵）のいずれかを用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う。暗号／復号回路５３、５４には、共通鍵暗号方式のＤＥＳやＡＥＳを用いる。
【００４３】
５５、５６は暗号／復号回路（第２の暗号／復号回路）であり、２個の暗号／復号回路５３、５４にそれぞれ接続され、暗号鍵Ｃ、Ｄ（第２の暗号鍵）のいずれかを用いて暗号化されたプログラムの復号化処理又はプログラムの暗号化処理を行う。すなわち、実施例１の暗号／復号回路２０と同等の２種類の鍵を切り替えて用いることができる暗号／復号回路である。
【００４４】
５７は暗号鍵Ｃ用レジスタ（第１の暗号鍵用レジスタ）で、ＣＰＵ３４とローカルバス１８で独立して接続され、ＣＰＵ３４によって暗号鍵Ｃデータを設定可能である。５８は暗号鍵Ｄ用レジスタ（第１の暗号鍵用レジスタ）で、ＣＰＵ２１とローカルバス１９で独立して接続され、ＣＰＵ２１によって暗号鍵Ｄデータを設定可能である。５９は暗号鍵Ｃ用レジスタ（第２の暗号鍵用レジスタ）で、ＣＰＵ３４とローカルバス１８で独立して接続され、暗号鍵Ｃデータを設定可能である。６０は暗号鍵Ｄ用レジスタで、ＣＰＵ２１とローカルバス１９で接続され、ＣＰＵ２１によって暗号鍵Ｄデータを設定可能である。６１は暗号鍵Ｃ用レジスタで、ＣＰＵ３４とローカルバス１８で接続され、ＣＰＵ３４によって暗号鍵Ｃデータを設定可能である。６２は暗号鍵Ｄ用レジスタ（第２の暗号鍵用レジスタ）で、ＣＰＵ２１とローカルバス１９で接続され、ＣＰＵ２１によって暗号鍵Ｄデータを設定可能である。
【００４５】
暗号／復号回路５３は、ローカルバス１８でＣＰＵ３４に接続され、ＣＰＵ３４から送られたデータを暗号鍵Ｃデータで暗号化して共通バス２９に送出し、共通バス２９のデータを暗号鍵Ｃデータで復号化してＣＰＵ３４へ送出する。暗号／復号回路５４は、ローカルバス１９でＣＰＵ２１に接続され、ＣＰＵ２１から送られたデータを暗号鍵Ｄデータで暗号化して共通バス２９に送出し、共通バス２９のデータを暗号鍵Ｄデータで復号化してＣＰＵ２１へ送出する。
【００４６】
暗号／復号回路５５は、プログラマブル回路５１に接続され、暗号鍵Ｃデータ又は暗号鍵Ｄデータで、共通バス２９のデータを復号化してプログラマブル回路５１へ送出し、プログラマブル回路５１のデータを暗号化して共通バス２９に送出する。暗号／復号回路５６は、プログラマブル回路５２に接続され、暗号鍵Ｃデータ又は暗号鍵Ｄデータで、共通バス２９のデータを復号化してプログラマブル回路５２へ送出し、プログラマブル回路５２のデータを暗号化して共通バス２９に送出する。
【００４７】
ＣＰＵ３４がプログラマブル回路５１を用いる場合、回路１使用中フラグが０であることを確認し、回路１使用中フラグを１に設定する。そして、ローカルバス１８を介して暗号鍵Ｃ用レジスタ５７及び暗号鍵Ｃ用レジスタ５９を設定し、プログラムデータをローカルバス１８を介して暗号／復号回路５３へ送る。暗号／復号回路５３は、暗号鍵Ｃ用レジスタ５７のデータを用いてプログラムデータを暗号化し、共通バス２９を介して暗号／復号回路５５へ送る。暗号／復号回路５５は、暗号鍵Ｃ用レジスタ５９のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路５１へ書き込む。プログラマブル回路５１は、書き込まれたプログラムデータに従って回路（動作）の変更を行う。
【００４８】
必要な動作が終了したら、プログラマブル回路５１に予め定めた初期化データを書き込むことで回路を初期化し、暗号鍵Ｃ用レジスタ５７、５９のデータに全て０を書き込み、回路１使用中フラグを０に設定する。この時、共通バス２９上には暗号鍵Ｃデータで暗号化されたデータしか現れないため、ＣＰＵ２１からはプログラマブル回路５１のプログラム状態を知ることはできない。
【００４９】
同様に、ＣＰＵ３４がプログラマブル回路５２を用いる場合、回路２使用中フラグが０であることを確認し、回路２使用中フラグを１に設定する。そして、ローカルバス１８を介して、暗号鍵Ｃ用レジスタ５７及び暗号鍵Ｃ用レジスタ６１を設定し、プログラムデータをローカルバス１８を介して暗号／復号回路５３へ送る。暗号／復号回路５３は、暗号鍵Ｃ用レジスタ５７のデータを用いてプログラムデータを暗号化し、共通バス２９を介して暗号／復号回路５６へ送る。暗号／復号回路５６は、暗号鍵Ｃ用レジスタ６１のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路５２へ書き込む。プログラマブル回路５２は、書き込まれたプログラムデータに従って回路（動作）の変更を行う。
【００５０】
必要な動作が終了したら、プログラマブル回路５２に予め定めた初期化データを書き込むことで回路を初期化し、暗号鍵Ｃ用レジスタ５７、６１のデータに全て０を書き込み、回路２使用中フラグを０に設定する。ＣＰＵ２１がプログラマブル回路５１を用いる場合、回路１使用中フラグが０であることを確認し、回路１使用中フラグを１に設定する。
【００５１】
次に、ローカルバス１９を介して、暗号鍵Ｄ用レジスタ５８及び暗号鍵Ｄ用レジスタ６０を設定し、プログラムデータをローカルバス１９を介して暗号／復号回路５４へ送る。暗号／復号回路５４は、暗号鍵Ｄ用レジスタ５８のデータを用いてプログラムデータを暗号化し、共通バス２９を介して暗号／復号回路５５へ送る。暗号／復号回路５５は、暗号鍵Ｄ用レジスタ６０のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路５１へ書き込む。プログラマブル回路５１は、書き込まれたプログラムデータに従って回路（動作）の変更を行う。
【００５２】
必要な動作が終了したら、プログラマブル回路５１に予め定めた初期化データを書き込むことで回路を初期化し、暗号鍵Ｄ用レジスタ５８、６０のデータに全て０を書き込み、回路１使用中フラグを０に設定する。この時、共通バス２９上には暗号鍵Ｄデータで暗号化されたデータしか現れないため、ＣＰＵ３４からはプログラマブル回路５１のプログラム状態を知ることはできない。同様に、ＣＰＵ２１がプログラマブル回路５２を用いる場合、回路２使用中フラグが０であることを確認し、回路２使用中フラグを１に設定する。
【００５３】
次に、ローカルバス１９を介して、暗号鍵Ｄ用レジスタ５８及び暗号鍵Ｄ用レジスタ６２を設定し、プログラムデータをローカルバス１９を介して暗号／復号回路５４へ送る。暗号／復号回路５４は、暗号鍵Ｄ用レジスタ５８のデータを用いてプログラムデータを暗号化し、共通バス２９を介して暗号／復号回路５６へ送る。暗号／復号回路５６は、暗号鍵Ｄ用レジスタ６２のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路５２へ書き込む。プログラマブル回路５２は、書き込まれたプログラムデータに従って回路（動作）の変更を行う。
【００５４】
必要な動作が終了したら、プログラマブル回路５２に予め定めた初期化データを書き込むことで回路を初期化し、暗号鍵Ｄ用レジスタ５８、６２のデータに全て０を書き込み、回路２使用中フラグを０に設定する。暗号鍵Ｃ用レジスタ５７、暗号鍵Ｄ用レジスタ５８のデータが全て０の時は、暗号／復号回路５３、５４は暗号／復号動作を行わず、共通バス２９とＣＰＵ３４、２１が接続された状態と同等の動作となる。暗号鍵Ｃ用レジスタ５９、６１、暗号鍵Ｄ用レジスタ６０、６２のデータが全て０の時は、暗号／復号回路５５、５６は暗号／復号動作を行わず、共通バス２９とプログラマブル回路５１、５２は切断された状態となる。
【００５５】
以上述べた通り、本実施例によれば、ＣＰＵ３４が暗号鍵Ｃ用レジスタ５７、５９に暗号鍵Ｃを設定した場合にはＣＰＵ３４のみが、また、ＣＰＵ２１が暗号鍵Ｄ用レジスタ５８、６２に暗号鍵Ｄを設定した場合にはＣＰＵ２１のみが、プログラマブル回路５１、５２にプログラムを設定可能とし、また、プログラマブル回路５１、５２に設定されたプログラムを読取可能とすることができる。これにより、ＳＯＣ内に複数のプログラマブル回路を共有しても、プログラマブル回路の生成データを暗号化することで、コンタミネーション無しに独立した開発をすることことが可能になる。
【００５６】
なお、本実施例では、プログラマブル回路５１、５２をそれぞれ独立した状態で用いる場合を想定して説明したが、本実施例のように独立処理をさせる場合だけでなく、並列処理をさせる場合にも同様にそれぞれの暗号／復号回路に鍵データを設定することで本発明を適用することができる。
【００５７】
＜実施例３（図６〜図９）＞
図６は、実施例３の特徴を表すカラーレーザビームプリンタの制御部のブロック図である。なお、実施例３に係るカラーレーザビームプリンタの構成は、実施例１の構成と基本的に同じ構成であるため、実施例１で説明した箇所についての説明は省略し、同じ機能を有する箇所には同じ番号を付す。
【００５８】
８２は外部装置で、外部Ｉ／Ｆ７４及び鍵転送外部Ｉ／Ｆ７３を介して、ＳＯＣ５０内の外部Ｉ／Ｆ２２（第２のインターフェース）及び鍵転送外部Ｉ／Ｆ６８（第１のインターフェース）と接続され、ＳＯＣ５０の外部からプログラマブル回路４８に暗号化されたプログラムデータを転送する。
【００５９】
すなわち、鍵転送外部Ｉ／Ｆ６８は、ＣＰＵ６７及び暗号回路７２に接続され、公開鍵で暗号化された暗号鍵Ｆ（第２の暗号鍵）を、ＣＰＵ７６を備えた外部装置８２へ転送可能である。外部Ｉ／Ｆ２２は、ＣＰＵ６４及び暗号／復号回路２０に接続され、外部装置８２に記憶され、外部装置８２で暗号化されたプログラムを取得可能である。
【００６０】
７６は外部装置のＣＰＵで、ＳＯＣの内外で暗号鍵をやり取りするために必要となる制御及びＳＯＣの外部からＳＯＣ内のプログラマブル回路４８にプログラムデータを転送する際に必要となる制御を行う。７５はＲＯＭで、外部ＣＰＵ７６（第３のプロセッサ）用の制御プログラムや公開鍵／秘密鍵データや暗号化されたプログラマブル回路用の階調−濃度特性を生成する演算回路、コードデータから画素データへの変換回路を生成するプログラムデータが格納される。７７は、ＳＯＣ５０から外部装置８２に転送されてきた暗号化された暗号鍵データに復号化処理を行う回路である。７８はＳＯＣ５０から外部装置８２に転送されてきた暗号化された暗号鍵データを復号化する際に用いる秘密鍵を設定するためのレジスタ領域である。７９は外部装置８２からＳＯＣ５０内のプログラマブル回路４８に書き込むプログラムデータを暗号化する際に用いられる暗号鍵（共通鍵）を設定するためのレジスタ領域である。８０は外部装置８２からＳＯＣ５０内のプログラマブル回路４８に書き込むプログラムデータに暗号化処理を行う回路である。
【００６１】
６４は画像形成処理を実行するためのＣＰＵ（第１のプロセッサ）で、実施例１で説明したＣＰＵ３４、ＣＰＵ２１の機能を有する。すなわち、ＣＰＵ６４がエンジン制御及びコントローラ制御を行う。６５はＲＯＭで、ＣＰＵ６４用の制御プログラムや暗号鍵データや暗号化されたプログラマブル回路用の階調−濃度特性を生成する演算回路、コードデータから画素データへの変換回路を生成するプログラムデータが格納される。６７は画像形成処理を実行するためのＣＰＵ（第２のプロセッサ）で、ＳＯＣ５０の内外での暗号鍵をやり取りするために必要となる制御を外部ＣＰＵ７６と通信しながら行う。６９は暗号鍵を生成する鍵生成回路で、ＣＰＵ６７から送信されてくる乱数の種に基づいて暗号鍵Ｆデータを生成する。７２は公開鍵／秘密鍵暗号方式の暗号回路で、鍵生成回路６９で生成された暗号鍵Ｆデータに暗号化処理を施す。７１は暗号鍵を設定するためのレジスタ（公開鍵用レジスタ）で、ＣＰＵ６７に独立して接続され、ＣＰＵ６７によって暗号回路７２で暗号化処理を行う際に用いる暗号鍵（公開鍵）を設定可能である。
【００６２】
１８はＣＰＵ６４のローカルバス、６６はＣＰＵ６７のローカルバス、２９は共通バスである。２５は共用ＲＡＭで、ＣＰＵ６４と外部ＣＰＵ７６との間での情報の受け渡しに用いられる。なお、実施例１と同様に、情報隠蔽機能のために、共用ＲＡＭ２５上には、プログラマブル回路４８の使用が可能であるか否かをＣＰＵ６４と外部ＣＰＵ７６との間で確認するための領域として回路使用中フラグを設ける。回路使用中フラグは、プログラマブル回路４８を使用するＣＰＵが１を設定し、使用が終われば０に設定する。
【００６３】
他方のＣＰＵは、回路使用中フラグを確認することで、プログラマブル回路４８を使用可能であるか否かを判断できる。４８はプログラマブル回路で、暗号／復号回路に接続される。また、プログラマブル回路４８は、例えば、ＦＰＧＡアーキテクチャで構成され、プログラムデータにより内部のロジックを変更する。２０は暗号／復号回路であり、ＣＰＵ６４に接続され、暗号鍵Ｅ（第１の暗号鍵）を用いてプログラムの暗号化処理又は暗号化されたプログラムの復号化処理を行う。暗号／復号回路２０は、２種類の鍵を切り替えて用いることができる。
【００６４】
８４は暗号鍵Ｅ用レジスタ領域（第１の暗号鍵用レジスタ）で、ＣＰＵ６４とローカルバス１８で接続され、ＣＰＵ６４によって暗号鍵Ｅデータを設定可能である。７０は暗号鍵Ｆ用レジスタ領域で、鍵生成回路６９と暗号回路７２で接続され、暗号鍵Ｆデータを設定可能である。暗号／復号回路２０は、プログラマブル回路４８に接続され、暗号鍵Ｅデータ又は暗号鍵Ｆデータで、共通バス２９のデータを復号化してプログラマブル回路４８へ送出し、プログラマブル回路４８のデータを暗号化して共通バス２９に送出する。暗号鍵Ｅ用レジスタ領域８４又は暗号鍵Ｆ用レジスタ領域７０には、暗号／復号回路２０を用いない場合に全て０のデータを入れ、他方の鍵データを有効にする。鍵データを全て０にする場合は、プログラマブル回路４８へ書き込んだプログラムデータの内容を理解不能とするため、プログラマブル回路４８を初期化するか、無効なデータを書き込んでおく。
【００６５】
［ＣＰＵ６４がプログラマブル回路４８を用いる場合（図７）］
まず、ＣＰＵ６４は、回路使用中フラグが０であることを確認し（Ｓ３１）、回路使用中フラグを１に設定する。次に、ローカルバス１８を介して暗号鍵Ｅ用レジスタ領域８４に暗号鍵Ｅを設定し（Ｓ３２）、暗号化したプログラムデータを共通バス２９を介して暗号／復号回路２０へ送る。暗号／復号回路２０は、暗号鍵Ｅ用レジスタ領域８４のデータを用いて暗号化したプログラムデータを復号化し、プログラマブル回路４８へ書き込む（Ｓ３３）。プログラマブル回路４８は書き込まれたプログラムに従って回路（動作）の変更を行う（Ｓ３４）。必要な動作が終了したら（Ｓ３５）、プログラマブル回路４８に予め定めた初期化データを書き込むことで回路を初期化し（Ｓ３６）、暗号鍵Ｅ用レジスタ８４のデータに全て０を書き込み、回路使用中フラグを０に設定する（Ｓ３７）。
【００６６】
［外部ＣＰＵ７６がプログラマブル回路４８を用いる場合（図８、図９）］
まず、外部ＣＰＵ７６は、共用ＲＡＭ２５にアクセスし、回路使用中フラグが０であることを確認し（Ｓ４１）、回路使用中フラグを１に設定する。そして、外部ＣＰＵ７６は、ＣＰＵ６７に対して共通鍵の転送要求を出す（Ｓ４２）。ＣＰＵ６７は、外部ＣＰＵ７６から共通鍵の転送要求を受信したら（Ｓ６１）、外部ＣＰＵ７６に対して転送する共通鍵に施す暗号化処理に用いる暗号鍵（公開鍵）の転送要求を行う（Ｓ６２）。
【００６７】
外部ＣＰＵ７６は、ＣＰＵ６７からの暗号鍵（公開鍵）転送要求を受信したら（Ｓ４３）、外部ＣＰＵ用ＲＯＭ７５から暗号鍵（公開鍵）データを取り出し、ＣＰＵ６７に送信する（Ｓ４４）。ＣＰＵ６７は、外部ＣＰＵ７６から送信されてきた暗号鍵（公開鍵）データを受信したら（Ｓ６３）、暗号鍵（公開鍵）データレジスタ領域７１に設定する。また、上記処理と並行して、鍵生成回路６９に対して鍵生成回路６９をアクティブにする信号、暗号鍵を生成する際に用いる乱数の種、生成した暗号鍵Ｆデータを設定するレジスタアドレス値を設定する（Ｓ６４）。
【００６８】
鍵生成回路６９は、ＣＰＵ６７から受信した乱数の種に基づいて、暗号鍵を生成し、ローカルバス６６を介して、暗号鍵Ｆデータ用レジスタ領域７０（第２の暗号鍵用レジスタ）に設定する。同時に、暗号回路７２へ暗号鍵Ｆデータを入力する。暗号回路７２は、入力された暗号鍵Ｆデータに対して、暗号鍵（公開鍵）データレジスタ領域７１に設定された暗号鍵（公開鍵）で暗号化処理を行い、暗号回路７２内のバッファにデータを蓄積する。
【００６９】
ＣＰＵ６７は、暗号回路７２内のバッファから、暗号化された暗号鍵Ｆを取り出し、鍵転送用バス８３に送出する（Ｓ６５）。ＳＯＣ５０より外部装置８２に転送されてきた暗号化された暗号鍵Ｆデータは、外部ＣＰＵ７６の制御に基づいて、復号回路７７に入力される（Ｓ４５）。復号回路７７では、予め暗号鍵（秘密鍵）データレジスタ領域７８に設定された暗号鍵（秘密鍵）を用いて復号化処理を行う。暗号鍵（秘密鍵）データは、外部ＣＰＵ用ＲＯＭ７５に格納されており、電源ＯＮ時に暗号鍵（秘密鍵）データレジスタ領域７８に設定される。復号化処理が施された後、暗号鍵Ｆデータは、外部ＣＰＵ７６によって、外部用暗号鍵（共通鍵）Ｆデータ用レジスタ領域７９へ設定され（Ｓ４６）、外部用暗号鍵（共通鍵）Ｆデータで暗号化したプログラムデータをバス８１に送出する。この暗号化されたプログラムデータは、バス８１から外部Ｉ／Ｆ７４を介して、共通バス２９上に転送され、暗号／復号回路２０へ送られる。暗号／復号回路２０は、暗号鍵Ｆデータ用レジスタ領域７０に設定された暗号鍵を用いて暗号化したプログラムデータを復号化し、プログラマブル回路４８へ書き込む（Ｓ４７）。プログラマブル回路４８は、書き込まれたプログラムデータに従って回路（動作）の変更を行う（Ｓ４８）。外部ＣＰＵ７６は、必要な動作が終了したら（Ｓ４９）、プログラマブル回路４８に予め定められた初期化データを書き込むことで回路を初期化する（Ｓ５０）。
【００７０】
また、外部ＣＰＵ７６は、ＣＰＵ６７に対して暗号鍵（共通鍵）Ｆデータ用レジスタ領域７０のデータに全て０を書き込むように要求を出す（Ｓ５１）。ＣＰＵ６７では、外部ＣＰＵ７６から上記要求を受信したら（Ｓ６６）、鍵生成回路６９に非アクティブ信号を設定する（Ｓ６７）。鍵生成回路６９は、非アクティブ信号が設定されたら、出力が全て０になるように設計される。ＣＰＵ６７は、鍵生成回路６９に対して非アクティブ信号を設定後、外部ＣＰＵ７６に暗号鍵Ｆ解除完了信号を送信する（Ｓ６８）。外部ＣＰＵ７６は、ＣＰＵ６７からの暗号鍵Ｆ解除完了信号を受信すると一連の動作が完了したとみなす（Ｓ５２）。また、いずれの暗号鍵も設定されない場合には、暗号／復号回路２０は暗号／復号動作を行わず、共通バス２９とプログラマブル回路４８が接続された状態となる。
【００７１】
以上述べた通り、本実施例によれば、暗号鍵Ｅ用レジスタ領域８４に暗号鍵Ｅが設定された場合にはＣＰＵ６４のみが、暗号鍵Ｆデータ用レジスタ領域７０に暗号鍵Ｆが設定され、かつ、暗号鍵（公開鍵）データレジスタ領域７１に公開鍵が設定された場合には外部ＣＰＵ７６のみが、プログラマブル回路４８にプログラムを設定可能とし、また、プログラマブル回路４８に設定されたプログラムを読取可能とすることができる。これにより、ＳＯＣ内のプログラマブル回路をＳＯＣの内と外で共有しても、プログラマブル回路の生成データを暗号化することで、コンタミネーション無しにＳＯＣ内と外で独立した開発をすることが可能となる。
【図１】
2010268308.tif 000003
【図２】
2010268308.tif 000004
【図３】
2010268308.tif 000005
【図４】
2010268308.tif 000006
【図５】
2010268308.tif 000007
【図６】
2010268308.tif 000008
【図７】
2010268308.tif 000009
【図８】
2010268308.tif 000010
【図９】
2010268308.tif 000011