(57)【要約】【課題】初期動作のみに必要なモード識別信号（例えば、メモリ機種の識別信号等）を専用ピンに割り当ててしまうことにより、無駄にチップサイズを大きくしてしまう。【解決手段】被制御装置の動作モード（例えば、フラッシュメモリ機種）の切り替えが可能であるシステムLSI３０において、通常機能で使用する双方向のI/Oセル３１−２のピンに対して抵抗２５を接続して電源電圧にプルアップ又はグランド電圧にプルダウンし、所定のタイミングで、そのI/Oセル３１−２の入出力方向制御によりプルアップ又はプルダウンの論理値“１”又は“０”をシステムLSI３０の内部に取り込み、その論理値を使用することによってシステムLSIのフラッシュメモリ機種の切り替えを行う。【選択図】図１
2008071080.tif 000002
【特許請求の範囲】
【請求項１】
第１のリセット信号が入力されると、第１の論理レベルになって第１の期間の経過後に第２の論理レベルに遷移する第２のリセット信号と、前記第１の期間の経過前において前記第１の期間よりも短い第２の期間の間だけ活性化する入出力制御信号とを出力するリセット制御部と、
被制御装置と、前記被制御装置に対応したモード識別信号を生成するモード識別信号生成手段とが接続され、前記入出力制御信号の第２の期間のみ入力ポートとして機能して前記モード識別信号を入力し、前記第２の期間外は出力ポートとして機能する入出力ポートと、
前記第２のリセット信号の第１の論理レベルによりリセットされ、前記第２のリセット信号の第２の論理レベルによりリセットが解除されて、前記入出力ポートにより入力された前記モード識別信号に基づき、動作モードの切り替えを行って前記被制御装置に対するアクセス制御を行うアクセス制御部と、
を備えたことを特徴とする半導体集積回路。
【請求項２】
前記第１の期間は、カウンタによるカウント値により設定されることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記アクセス制御部は、前記モード識別信号に基づき、ソフトウェア又はハードウェアにより前記動作モードの切り替えを行うことを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
前記被制御装置は、メモリであり、
前記モード識別信号は、前記メモリの機種を識別するためのメモリ機種識別信号であり、
前記アクセス制御部は、前記メモリ機種識別信号に基づいて前記メモリの機種を識別し、この識別結果に基づき、前記動作モードの切り替えを行って前記メモリに対するアクセス制御を行うことを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記モード識別信号生成手段は、前記メモリ機種識別信号を生成するプルアップ回路又はプルダウン回路であることを特徴とする請求項４記載の半導体集積回路。
【請求項６】
前記メモリは、フラッシュメモリであることを特徴とする請求項４又は５記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被制御装置（例えば、シリアルインタフェースのフラッシュメモリ等）に対するアクセス制御を行うための半導体集積回路、例えば、フラッシュメモリ機種等に応じた動作モードに切り替えるための回路構成に関するものである。
【背景技術】
【０００２】
一般に、メモリアクセス機能を有する半導体集積回路（例えば、大規模集積回路、以下「LSI」という。）に接続される外部メモリ（例えば、電気的に情報の書き込みや消去を行えるようにした不揮発性メモリであるシリアルインタフェースのフラッシュメモリ）は、機種それぞれ独自の命令コードを持っている。又、フラッシュメモリの識別情報（以下「ID情報」という。）を読み出す命令により機種を識別できるが、ID情報を読み出す命令の命令コードが機種毎に異なるため、共通の命令コードによってフラッシュメモリの機種識別を行うことはできない。従来、この問題を解決するための技術として、例えば、下記の特許文献に記載されるものがあった。
【０００３】
【特許文献１】特開２００４−２３４１２９号公報
【０００４】
特許文献１には、半導体集積回路におけるメモリ識別回路の技術が記載されている。この技術では、メモリアクセス機能を有する半導体集積回路に接続される外部メモリ（例えば、フラッシュ・リード・オンリ・メモリ、以下「フラッシュROM」という。）を変更した場合に、制御コード転送ソフトにて接続するフラッシュROMに対して最適な制御レジスタ設定を行い、再度外部通信手段によって制御コード等をランダム・アクセス・メモリ（以下「RAM」という。）に書き込む必要があるため、操作が複雑で、汎用性に欠けるという課題を解決するために、次のような構成を採用している。
【０００５】
この特許文献１では、半導体集積回路に設けられたプルアップ・プルダウンが可能な複数の端子によって端子状態を識別してバス幅を決定し、フラッシュROMから製品番号等を読み出してフラッシュROMを判定し、半導体集積回路内に設けられた制御部のレジスタを設定して仕様等を決定し、フラッシュROMとのアクセスに必要な仕様、接続には不要な端子の処理等をレジスタに設定する構成になっている。
【０００６】
このような構成により、フラッシュROMの接続に関する設定、ライトコマンドの実行を、半導体集積回路内に設けられた中央処理装置（以下「CPU」という。）により予め制御コード転送ソフトにて行う必要がなくなるため、煩雑な処理を行わずに接続を行うことができるという効果がある。しかし、フラッシュROMから製品番号等を読み出してフラッシュROMを判定する構成のため、半導体集積回路の回路構成あるいは機能が複雑になるという欠点がある。
【０００７】
この欠点を解決する技術として、例えば、LSIの外部に専用ピンを設けて、この専用ピンからフラッシュメモリの機種を識別する信号を与えるようなものがあり、この構成例を図２に示す。
【０００８】
図２は、２種類のシリアルインタフェースのフラッシュメモリをアクセスすることが可能な従来のシステムLSIの一例を示す概略の構成図である。
【０００９】
このシステムLSI１０は、被制御装置（例えば、命令コードが異なる２種類のシリアルインタフェースのフラッシュメモリ）２１又は２２をアクセスすることが可能なシステムであり、入／出力（以下「I/O」という。）ポートである複数のI/Oセル１１−１〜１１−６を有し、このI/Oセル１１−３〜１１−６に、２種類のフラッシュメモリ２１，２２のうちのいずれか一方が接続される。フラッシュメモリ２１，２２は、I/Oセル１１−３〜１１−６に接続されるシリアルインタフェース端子SIF1〜SIF4を有し、システムLSI１０を動作させるためのプログラムが格納されている。システムLSI１０に接続するフラッシュメモリ２１，２２はどちらか１つで、接続するシステムLSI１０側のピンはどちらの機種でも同一ピンを使用する。
【００１０】
システムLSI１０において、I/Oセル１１−１は、負極性（Neg極性）の非同期リセット信号rstnを外部から入力する回路であり、このI/Oセル１１−１には、フラッシュメモリ２１，２２を制御するためのフラッシュコントロール回路１２と、プログラムを実行するためのCPU、メモリ及び周辺機能が集積化されたマイクロコントローラ（以下「MCU」という。）１３とが接続されている。フラッシュコントロール回路１２は、I/Oセル１１−３〜１１−６との間でフラッシュインタフェース入出力信号fsif1〜fsif4を授受すると共に、MCU１３との間で信号を授受する機能等を有している。
【００１１】
MCU１３には、フラッシュコントロール回路１２が接続されると共に、ブートROM（以下「BOOT_ROM」という。）１４、RAM１５、及びI/Oセル１１−２が接続されている。BOOT_ROM１４は、リセット後の初期動作用プログラムを保持するメモリであり、MCU１３によりアクセスされる。RAM１５は、システムLSI１０における通常動作用プログラムを格納するメモリであり、フラッシュコントロール回路１２及びMCU１３によりアクセスされる。I/Oセル１１−２は、フラッシュメモリ機種を識別するための１ビット（以下「bit」という。）の識別信号typeを外部から入力してMCU１３に与える回路である。
【００１２】
なお、システムLSI１０は、クロック信号clkを発生するためのクロック発生回路等のシステムLSIを構成するのに必要な回路も有するが、説明を簡単にするために図示されていない。
【００１３】
図３は、図２中のフラッシュコントロール回路１２を示す概略の構成図である。
このフラッシュコントロール回路１２は、リセット信号rstnによりリセットされ、実行するフラッシュ命令の命令コードを格納する例えば８bitのレジスタ１２ａ等を有し、フラッシュメモリ２１又は２２を制御するためのフラッシュインタフェース入出力信号fsif1〜fsif4、MCU１３を制御するための制御信号cmcu、及び、RAM１５を制御するための制御信号cRAMを授受する機能等を有している。例えば、フラッシュメモリ２１又は２２への命令を行う場合、MCU１３が識別信号typeの値からフラッシュメモリ機種を判断し、命令コードの値をレジスタ１２ａに書き込む構成になっている。
【００１４】
次に、図２及び図３に示すシステムLSI１０の概略の動作を説明する。
例えば、システムLSI１０に接続するフラッシュメモリ２１又は２２の識別方法については、接続するものがフラッシュメモリ２１である場合、識別信号typeとして論理値“０”、接続するものがフラッシュメモリ２２である場合、識別信号typeとして論理値“１”をを外部から与えるものとする。
【００１５】
フラッシュメモリ２１，２２には、システムLSI１０の通常動作用プログラムが格納されている。システムLSI１０は、リセット信号rstnによるフラッシュコントロール回路１２及びMCU１３のリセット後、先ず初期動作として、MCU１３がBOOT_ROM１４のプログラムを実行する。BOOT_ROM１４には、フラッシュメモリ２１又は２２内のデータ（通常動作用プログラム）を読み出し、RAM１５に格納するためのプログラムが格納されている。フラッシュメモリ２１又は２２のプログラムをRAM１５に格納した後は、MCU１３はRAM１５のプログラムを実行する。
【００１６】
初期動作におけるフラッシュメモリ２１又は２２の読み出し、及び通常動作におけるフラッシュメモリ２１又は２２への書き込み、読み出し動作は、MCU１３がフラッシュコントロール回路１２を制御することにより、フラッシュメモリ２１又は２２への命令を実行する。
【００１７】
一般に、フラッシュメモリ２１，２２の命令コードは、フラッシュメモリの機種によって異なるため、MCU１３は、I/Oセル１１−２から入力される識別信号typeの値“１”又は“０”からフラッシュメモリ機種を識別し、機種に応じた命令コードをフラッシュコントロール回路１２内のレジスタ１２ａに書き込むことで、フラッシュメモリ機種に応じた制御を実行する。
【００１８】
フラッシュコントロール回路１２は、MCU１３からの制御信号cmcuを受け、フラッシュメモリ２１又は２２を制御する。フラッシュメモリ２１又は２２からの読み出しの場合は、フラッシュメモリ２１又は２２から読み出したデータをRAM１５に格納する。フラッシュメモリ２１又は２２への書き込みを行う場合、後述のRAM１５から読み出したデータをフラッシュメモリ２１又は２２に書き込む。
【００１９】
図４は、図２のシステムLSI１０のリセット後にBOOT_ROM１４の初期動作用プログラムによってフラッシュメモリ内のプログラムをRAM１５にダウンロードするまでの動作を示すフローチャートである。以下、この動作を説明する。
【００２０】
MCU１３にアサート(assert)されたリセット信号rstnが解除されると（ステップＳ１）、MCU１３は、BOOT_ROM１４に格納された初期動作用のブートプログラムを読み出してこのプログラムの実行を開始する（ステップＳ２）。
【００２１】
先ず、BOOT_ROM１４に格納されたプログラムの動作では、MCU１３が、フラッシュメモリ機種の識別信号typeの値（例えば、“０”）により、システムLSI１０に接続されたフラッシュメモリの機種（２１）を判断し、機種に応じた「読み出し」命令の命令コードをフラッシュコントロール回路１２内のレジスタ１２ａに格納する（ステップＳ３）。次に、MCU１３は、フラッシュコントロール回路１２に対し、フラッシュメモリデータの読み出し命令を行う指示を出す（ステップＳ５）。フラッシュコントロール回路１２は、レジスタ１２ａに格納されたデータをシリアル変換してフラッシュメモリ２１に送る。読み出し命令を受けたフラッシュメモリ２１は、フラッシュコントロール回路１２に対してシリアルデータを返す（ステップＳ６）。フラッシュコントロール回路１２は、受信したシリアルデータをパラレル変換してRAM１５に書き込む（ステップＳ７）。フラッシュメモリ２１内のプログラムがRAM１５に全て格納されると（ステップＳ８）、読み出し命令を完了し、RAM１５にダウンロードされたプログラムにより、MCU１３が通常動作を開始する（ステップＳ９）。
【００２２】
なお、フローチャートには示さないが、フラッシュメモリ２１又は２２への「データ書き込み」等の他のフラッシュメモリ命令を実行する場合も、「読み出し」命令と同様に、フラッシュコントロール回路１２内のレジスタ１２ａへの命令コード書き込みを行うことで、機種に応じた命令コードでフラッシュメモリ２１又は２２に対する命令実行を行う。
【発明の開示】
【発明が解決しようとする課題】
【００２３】
しかしながら、従来の図２の構成では、フラッシュメモリ２１，２２の機種識別信号typeを入力するために専用のI/Oセル１１−２のピンを割り当てる必要がある。図２の構成例では、２種選択のため識別信号typeは１ピンであるが、識別信号ピン数は対応機種の数に従って増加する。
【００２４】
又、フラッシュメモリ２１，２２の機種識別については、初期動作で機種識別情報を記憶すれば、以降の動作では機種識別信号typeが入力されている必要はない。そのため、従来の構成では、初期動作のみに必要な識別信号typeを専用ピンに割り当ててしまうことにより、無駄にチップサイズを大きくしてしまうという課題があった。
【００２５】
このような課題は、半導体集積回路によりアクセスされるフラッシュメモリ以外の他の被制御装置についても生じ得る。
【課題を解決するための手段】
【００２６】
本発明の半導体集積回路では、リセット制御部と、I/Oポートと、アクセス制御部とを備えている。前記リセット制御部は、第１のリセット信号が入力されると、第１の論理レベルになって第１の期間の経過後に第２の論理レベルに遷移する第２のリセット信号と、前記第１の期間の経過前において前記第１の期間よりも短い第２の期間の間だけ活性化する入出力制御信号とを出力するものである。
【００２７】
前記I/Oポートは、被制御装置と、前記被制御装置に対応したモード識別信号を生成するモード識別信号生成手段とが接続され、前記入出力制御信号の第２の期間のみ入力ポートとして機能して前記モード識別信号を入力し、前記第２の期間外は出力ポートとして機能するものである。更に、前記アクセス制御部は、前記第２のリセット信号の第１の論理レベルによりリセットされ、前記第２のリセット信号の第２の論理レベルによりリセットが解除されて、前記I/Oポートにより入力された前記モード識別信号に基づき、動作モードの切り替えを行って前記被制御装置に対するアクセス制御を行うものである。
【発明の効果】
【００２８】
本発明によれば、例えば、通常動作時には被制御装置に対するインタフェース入出力信号として使用しているI/Oポートに対して、被制御装置非動作期間であるリセット直後の初期動作期間のみ、モード識別信号の役割を持たせることができる。これにより、I/Oポートのピン数を増やすことなく、複数モードの被制御装置に対応する半導体集積回路を構成することができる。特に、入力される第１のリセット信号により半導体集積回路をリセットした後、リセット制御部による第１の期間の経過前に、半導体集積回路に接続された被制御装置の動作モードを識別するためのモード識別信号を、I/Oポートから入力し、その後、そのモード識別信号に基づき、動作モードの切り替えを行って被制御装置に対するアクセス制御を行うようにしたので、被制御装置の動作モードを確実に識別でき、その後の被制御装置に対するアクセスを安定して行うことができる。
【発明を実施するための最良の形態】
【００２９】
動作モードの切り替えが可能である半導体集積回路（例えば、システムLSI）において、通常機能で使用するI/OポートであるI/Oセルのピンに対して抵抗を接続してプルアップ又はプルダウンし、そのピンの入出力方向制御を行うリセット制御部を持ち、所定のタイミングで入出力方向制御によりプルアップ又はプルダウンの論理値をシステムLSI内部に取り込み、その論理値を使用することによってシステムLSIの動作モードの切り替えを行うようにしている。
【００３０】
又、前記動作モードの切り替えをリセット後の初期動作で行うシステムLSIにおいて、動作モードの切り替えをアクセス制御部のリセット中にハードウェアで実行することにより、初期動作用プログラムを不要としている。
【実施例１】
【００３１】
（実施例１の構成）
図１は、本発明の実施例１を示す半導体集積回路（例えば、システムLSI）の概略の構成図である。
【００３２】
このシステムLSI３０は、従来の図２のシステムLSI１０と同様に、被制御装置（例えば、命令コードが異なる２種類のシリアルインタフェースのフラッシュメモリ）２１又は２２をアクセスすることが可能なシステムであり、I/Oポートである従来のI/Oセル１１−１，１１−４〜１１−６と同様の複数のI/Oセル３１−１，３１−３〜３１−５と、従来のI/Oセル１１−２，１１−３とは異なる双方向のI/Oセル３１−２とを有し、これらのI/Oセル３１−２〜３１−５に、従来と同様の２種類のフラッシュメモリ２１，２２のうちのいずれか一方が接続される。
【００３３】
フラッシュメモリ２１，２２は、I/Oセル３１−２〜３１−５に接続される従来と同様のシリアルインタフェース端子SIF1〜SIF4を有し、システムLSI３０を動作させるためのプログラムが格納されている。システムLSI３０に接続するフラッシュメモリ２１，２２はどちらか１つで、接続するシステムLSI３０側のピンはどちらの機種でも同一ピンを使用する。
【００３４】
本実施例１では、特に、従来のリセット信号typeを入力するためのI/Oセル１１−２を削除し、これに代えて、双方向のI/Oセル３１−２を設け、このI/Oセル３１−２とフラッシュメモリ２１又は２２のシリアルインタフェース端子SIF1とを接続する信号inout用の信号線２４を、モード識別信号生成手段（例えば、プルアップ回路を構成する抵抗）２５を介して電源端子VDDに接続することにより、“１”にプルアップしている。図示しないが、信号線２４は、モード識別信号生成手段（例えば、プルダウン回路を構成する抵抗）２５を介してグランドGNDに接続することにより、“０”にプルダウンしても良い。抵抗２５によるプルアップ又はプルダウンの“１”、“０”は、モード識別信号（例えば、従来のフラッシュメモリ機種識別信号）typeの値に相当する。図１はプルアップ（“１”）であるため、フラッシュメモリ２２を接続する場合の例である。
【００３５】
なお、信号線２４を抵抗２５によりプルアップ又はプルダウンしない場合は、この信号線２４の両端に接続されたフラッシュメモリ２２やI/Oセル３１−２の電位により、信号線２４の電位が決まり、この信号線２４がフローティング状態になることはない。
【００３６】
システムLSI３０において、I/Oセル３１−１は、従来と同様に、第１のリセット信号（例えば、負極性（Neg極性）の非同期リセット信号）rstnを外部から入力する回路であり、このI/Oセル３１−１には、従来とは異なり、新たに追加されたリセット制御部（例えば、リセットコントロール回路）３２が接続されている。リセットコントロール回路３２は、I/Oセル３１−１から与えられるリセット信号rstnを入力し、所定のタイミングで第２のリセット信号（例えば、負極性のリセット信号）mcu_rstnと入出力制御信号（例えば、フラッシュメモリ機種識別イネーブル信号）enを出力する回路である。イネーブル信号enが“１”のとき、フラッシュメモリ機種識別が有効である。
【００３７】
リセットコントロール回路３２におけるイネーブル信号en用の出力端子には、I/Oセル３１−２と、フラッシュメモリ２１，２２を制御するための従来とは構成の異なるフラッシュコントロール回路３４とが接続され、更に、リセットコントロール回路３２におけるリセット信号mcu_rstn用の出力端子に、従来とほぼ同様にプログラムを実行するためのCPUを有するMCU３５が接続されている。これらのフラッシュコントロール回路３４及びMCU３５により、アクセス制御部が構成されている。
【００３８】
フラッシュコントロール回路３４は、I/Oセル３１−１からのリセット信号rstn、及びリセットコントロール回路３２からのリセット信号mcu_rstnを入力し、I/Oセル３１−２〜３１−５との間でフラッシュインタフェース入出力信号fsif1〜fsif4、及びモード識別信号（例えば、フラッシュメモリ機種識別信号）ftypeを授受すると共に、MCU３５との間で信号を授受する機能等を有している。
【００３９】
MCU３５には、リセットコントロール回路３２及びフラッシュコントロール回路３４が接続されると共に、BOOT_ROM３６、及びRAM３７が接続されている。BOOT_ROM３６は、従来と同様にリセット後の初期動作用プログラムを保持するメモリであり、MCU３５によりアクセスされる。RAM３７は、従来と同様にシステムLSI３０における通常動作用プログラムを格納するメモリであり、フラッシュコントロール回路３４及びMCU３５によりアクセスされる。
【００４０】
なお、システムLSI３０は、従来と同様に、クロック信号clkを発生するためのクロック発生回路等のシステムLSIを構成するのに必要な回路も有するが、説明を簡単にするために図示されていない。
【００４１】
図５は、図１中の双方向のI/Oセル３１−２とその周辺回路を示す概略の構成図である。
双方向のI/Oセル３１−２は、リセットコントロール回路３２から出力されるイネーブル信号enを入力する出力イネーブル端子OUTEN、フラッシュコントロール回路３４から出力されるフラッシュインタフェース入出力信号fsif1を入力する入力端子Ａ、フラッシュメモリ機種識別信号ftypeを出力する出力端子Ｙ、及び信号inout用の信号線２４に接続されたパッド端子PADを有している。
【００４２】
入力端子Ａは、トライステートバッファ３１ａを介してパッド端子PADに接続され、このトライステートバッファ３１ａのイネーブル端子が出力イネーブル端子OUTENに接続されている。トライステートバッファ３１ａは、出力イネーブル端子OUTENが“０”のときにオン状態になり、入力端子Ａから入力された信号fsifを駆動してパッド端子PADへ出力し、出力イネーブル端子OUTENが“１”のときに出力側がハイインピーダンス状態（解放状態）になる素子である。パッド端子PADは、信号駆動用のバッファ３１ｂを介して出力端子Ｙに接続されている。
【００４３】
この双方向のI/Oセル３１−２において、出力イネーブル端子OUTENが“０”のときI/Oセル３１−２は出力方向、“１”のときI/Oセル３１−２は入力方向となる。I/Oセル３１−２が出力方向のとき、パッド端子PADと出力端子Ｙの値は入力端子Ａの値となる。つまり、パッド端子PADの信号inoutと識別信号ftypeの値は信号fsifの値となる。I/Oセル３１−２が入力方向のとき、出力端子Ｙの値はパッド端子PADの値となる。つまり、識別信号ftypeの値はパッド端子PADの信号inoutの値となる。図５では、信号inoutの値は抵抗２５により電源端子VDDの電圧にプルアップされているため、識別信号ftypeの値は“１”となる。
【００４４】
図６は、図１中のリセットコントロール回路３２を示す概略の構成図である。
このリセットコントロール回路３２は、カウンタ３２ａを有し、この出力側に、多入力１出力の論理和ゲート（以下「ORゲート」という。）３２ｂと、多入力１出力の論理積ゲート（以下「ANDゲート」という。）３２cとが接続され、更に、このORゲート３２ｂの出力側とANDゲート３２cの反転出力側とに、２入力１出力のANDゲート３２dが接続されている。
【００４５】
カウンタ３２aは、リセット信号rstnがアサートされると、クロック信号clkのカウント値（計数値）をリセットし、リセット解除後は一定のカウント満了値「Ｋ」までクロック信号clkをカウントし、カウント満了後は同じ値を維持する。カウンタ３２aの値が「１」〜「Ｋ−１」の間、ANDゲート３２dから出力されるフラッシュメモリ機種識別イネーブル信号enは“１”となり、それ以外のときイネーブル信号enは“０”となる。カウンタ３２aが「Ｋ」のとき、ANDゲート３２cから出力されるリセット信号mcu_rstnはリセット解除（“１”）され、それ以外のとき、リセット状態（“０”)となる。
【００４６】
図７は、図１中のフラッシュコントロール回路３４を示す概略の構成図である。
このフラッシュコントロール回路３４は、リセット信号rstnによりリセットされ、実行するフラッシュ命令の命令コードを格納する従来と同様の例えば８bitのレジスタ３４aを有する他に、新たに追加されたセレクタ３４ｂ及びフラッシュメモリ機種識別情報レジスタ３４ｃを有し、フラッシュメモリ２１又は２２を制御するためのフラッシュインタフェース入出力信号fsif1〜fsif4、MCU３５を制御するための制御信号cmcu、及び、RAM３７を制御するための制御信号cramを授受する機能等を有している。
【００４７】
レジスタ３４ｃは、クロック信号clkに同期して動作し、イネーブル信号enが“１”のとき、セレクタ３４ｂにより選択された識別信号ftypeの値を取り込み、イネーブル信号enが“０”のときは、セレクタ３４ｂを介して値を保持し、リセット信号rstnの反転信号によりリセットされる回路である。
【００４８】
（実施例１の動作モード切り替え方法）
図８は、図１のシステムLSI３０におけるリセット解除からフラッシュメモリ２１又は２２の機種識別情報をフラッシュコントロール回路３４内のレジスタ３４ｃに格納するまでの初期動作を示すフローチャートである。図９は、図８のフローチャートに対応する図１の初期動作を示すタイムチャートである。なお、図９中の時刻ｔ０〜ｔ２は第１の期間、時刻ｔ１〜ｔ２は第２の期間である。
【００４９】
図９の時刻ｔ０において、外部から入力されるリセット信号rstnがアサート（＝“０”）されると、I/Oセル３１−１を通してリセットコントロール回路３２内のカウンタ３２aがリセットされてカウント値がゼロ（０）にリセットされる。これを受けて、リセットコントロール回路３２内のANDゲート３２cから出力されるリセット信号mcu_rstnが“０”になると共に、ORゲート３２ｂを介してANDゲート３２dから出力されるイネーブル信号enが“０”になる。
【００５０】
リセット信号mcu_rstnの“０”により、MCU３５がリセットされる。イネーブル信号enの“０”により、フラッシュコントロール回路３４内のセレクタ３４ｂを介してレジスタ３４ｃが前の値を保持し、書き込み不可となる。リセット信号rstnの“０”により、フラッシュコントロール回路３４内のレジスタ３４a，３４ｃがリセットされ、レジスタ３４aから出力されるフラッシュインタフェース入出力信号fsif1等が“０”となる。イネーブル信号enの“０”により、I/Oセル３１−２内のトライステートバッファ３１ａがオン状態になり、信号fsif1の“０”により、トライステートバッファ３１ａ、バッファ３１ｂ、及び出力端子Ｙを介して識別信号ftypeが“０”（ftype=fsif1)となる（図８のステップＳ１１）。
【００５１】
図９の時刻ｔ１において、外部から入力されるリセット信号rstnが“１”になると、リセットが解除され、リセットコントロール回路３２内のカウンタ３２aがクロック数のカウントを開始する（図８のステップＳ１２）。カウント動作がカウント満了値「Ｋ」までは、ANDゲート３２cから出力されるリセット信号mcu_rstnがアサート（＝“０”）されたままであり、MCU３５は初期動作を開始しない。
【００５２】
この間、カウンタ３２ａの値が「１」〜「Ｋ−１」であるとき、ANDゲート３２dから出力されるイネーブル信号enが“１”となる（図８のステップＳ１４）。これにより、双方向のI/Oセル３１−２内のトライステートバッファ３１ａの出力側がハイインピーダンス状態になるので、このI/Oセル３１−２は入出力制御が入力方向となり、バッファ３１ｂから出力される識別信号ftypeの値は、信号線２４上の信号inoutの値となる。
【００５３】
このときフラッシュメモリ２２を駆動する前であるため、信号inoutが抵抗２５によりプルアップされているので、識別信号ftypeが“１”となる。イネーブル信号enの“１”により、フラッシュコントロール回路３４内のセレクタ３４ｂの“１”側が選択されて、レジスタ３４ｃが書き込み可能であるため、識別信号ftypeの値“１”がセレクタ３４ｂを介してレジスタ３４ｃに書き込まれる（図８のステップＳ１５）。
【００５４】
図９の時刻ｔ２において、リセットコントロール回路３２内のカウンタ３２aの値がカウント満了値「Ｋ」までカウントされると（図８のステップＳ１３）、ANDゲート３２cから出力されるリセット信号mcu_rstnが“１”になると共に、ANDゲート３２dから出力されるイネーブル信号enが“０”になる。リセット信号mcu_rstnの“１”により、MCU３５のリセットが解除され（図８のステップＳ１６）、更に、イネーブル信号enの“０”により、フラッシュコントロール回路３４内のセレクタ３４ｂの“０”側が選択され、以降次のリセットまでレジスタ３４ｃの値が保持される。
【００５５】
前記図９の時刻ｔ２において、カウンタ３２aがカウント満了してリセット信号mcu_rstnの“１”によりMCU３５のリセットが解除された後は、従来の図４のフローチャートに従い、従来と同様に、BOOT_ROM３６の初期動作用プログラムによってフラッシュメモリ２２内のプログラムがRAM３７にダウンロードされる。
【００５６】
（実施例１の効果）
本実施例１によれば、通常動作時にはフラッシュインタフェース入出力信号fsif1として使用しているI/Oセル３１−２のピンに対して、フラッシュメモリ非動作期間であるリセット直後の初期動作期間のみ、フラッシュメモリ機種識別信号ftypeの役割を持たせることができる。これにより、ピン数を増やすことなく、複数機種のフラッシュメモリ２１，２２に対応するシステムLSI３０を構成することができる。
【００５７】
特に、本実施例１では、外部から入力されるリセット信号rstnによりシステムLSI３０をリセットした後、リセットコントロール回路３２内のカウンタ３２aによるカウント満了までの間に、システムLSI３０に接続されたフラッシュメモリ２１又は２２の機種を識別するための識別信号ftypeの値を、フラッシュコントロール回路３４内のレジスタ３４ｃに格納し、その後、ブートプログラムの読み出しを開始するようにしたので、フラッシュメモリ２１又は２２の機種をシステムLSI３０に確実に登録でき、その後のフラッシュメモリ２１又は２２に対するアクセスを安定して行うことができる。
【実施例２】
【００５８】
（実施例２の構成）
図１０は、本発明の実施例２を示す半導体集積回路（例えば、システムLSI）の概略の構成図であり、実施例１を示す図１中の要素と共通の要素には共通の符号が付されている。
【００５９】
本実施例２のシステムLSI３０Ａでは、実施例１のBOOT_ROM３６を削除すると共に、実施例１のリセットコントロール回路３２、フラッシュコントロール回路３４、及びMCU３５に代えて、これとは構成の異なるリセット制御部（例えば、リセットコントロール回路）３２Ａと、アクセス制御部（例えば、フラッシュコントロール回路３４Ａ、及びMCU３５Ａ）とを設け、実施例１のBOOT_ROM３６を用いたソフトウェア処理に代えて、これと同様の機能をハードウェア処理により実現している。
【００６０】
リセットコントロール回路３２Ａは、I/Oセル３１−１から与えられるリセット信号rstnと、フラッシュコントロール回路３４Ａから与えられる読み出し命令完了信号read_doneとを入力し、所定のタイミングで負極性のリセット信号mcu_rstnとフラッシュメモリ機種識別イネーブル信号enとを出力する回路である。イネーブル信号enが“１”のとき、フラッシュメモリ機種識別が有効である。読み出し命令完了信号read_doneは、リセット直後の初期動作における「読み出し」命令の完了を示す信号であり、リセット時には“０”となり、初期動作の「読み出し」命令完了後に“１”となる。
【００６１】
リセットコントロール回路３２Ａにおけるイネーブル信号en用の出力端子には、実施例１と同様のI/Oセル３１−２と、フラッシュメモリ２１，２２を制御するための実施例１とは構成の異なるフラッシュコントロール回路３４Ａとが接続され、更に、リセットコントロール回路３２Ａにおけるリセット信号mcu_rstn用の出力端子に、実施例１とは機能の異なるプログラム実行用のCPUを有するMCU３５Ａが接続されている。
【００６２】
フラッシュコントロール回路３４Ａは、I/Oセル３１−１からのリセット信号rstn、及びリセットコントロール回路３２からのフラッシュメモリ機種識別イネーブル信号enを入力し、I/Oセル３１−２〜３１−５との間でフラッシュインタフェース入出力信号fsif1〜fsif4、及びフラッシュメモリ機種識別信号ftypeを授受し、読み出し命令完了信号read_doneをリセットコントロール回路３２Ａに与えると共に、MCU３５Ａとの間で信号を授受する機能等を有している。
【００６３】
つまり、このフラッシュコントロール回路３４Ａは、実施例１のフラッシュコントロール回路３４に対して、初期動作における「フラッシュメモリ機種識別」機能、及び「フラッシュメモリ読み出し」機能を付加し、実施例１においてBOOT_ROM３５に格納された初期動作プログラムでソフトウェアにより実行していた「フラッシュメモリ機種識別」、及び「フラッシュメモリ読み出し動作」をハードウェアで実現する回路構成になっている。
【００６４】
その他の構成は、実施例１と同様である。
図１１は、図１０中のリセットコントロール回路３２Ａを示す概略の構成図である。
【００６５】
このリセットコントロール回路３２Ａでは、実施例１の図６のリセットコントロール回路３２におけるリセット信号mcu_rstnを、新たに追加した２入力ANDゲート３２eにより生成している。即ち、２入力ANDゲート３２eは、I/Oセル３１−１から与えられるリセット信号rstnと、フラッシュコントロール回路３４Ａから与えられる初期動作の読み出し命令完了信号read_doneとの論理積を求め、リセット信号mcu_rstnを出力する回路である。読み出し完了信号read_doneが“０”のときには、リセット信号mcu_rstnが“０”（MCUリセット）、読み出し完了信号read_doneが“１”のときには、リセット信号mcu_rstnが“１”(MCUリセット解除)となる。
【００６６】
図１２は、図１０中のフラッシュコントロール回路３４Ａを示す概略の構成図である。
このフラッシュコントロール回路３４Ａは、フラッシュメモリ機種識別信号ftypeを入力してフラッシュメモリ機種毎の各命令コードをデコードするテーブルを有するデコード回路３４ｄを備え、この出力側に、フラッシュメモリ２１，２２に対する命令コードを格納するための例えば各８bitの命令コードレジスタ３４ｅ，３４ｆ,３４ｇがそれぞれ接続されている。これらの各命令コードレジスタ３４ｅ,３４ｆ，３４ｇは、イネーブル信号enにより書き込み可能になり、リセット信号rstnによりリセットされる。
【００６７】
命令コードレジスタ３４ｅは、フラッシュメモリ２１，２２の「読み出し」命令コードを格納するレジスタであり、フラッシュメモリ機種識別後に、デコード回路３４dのデコード結果に従い機種に応じた命令コードが格納される。命令コードレジスタ３４ｆは、フラッシュメモリ２１，２２の「書き込み」命令コードを格納するレジスタであり、フラッシュメモリ機種識別後に、デコード回路３４dのデコード結果に従い機種に応じた命令コードが格納される。更に、命令コードレジスタ３４ｇは、フラッシュメモリ２１，２２の「消去」命令コードを格納するレジスタであり、フラッシュメモリ機種識別後に、デコード回路３４dのデコード結果に従い機種に応じた命令コードが格納される。
【００６８】
これらの命令コードレジスタ３４ｅ,３４ｆ，３４ｇの出力信号は、セレクタ３４ｉにより選択されてフラッシュインタフェース入出力信号fsif1〜fsif4のいずれか１つが出力される構成になっている。このセレクタ３４ｉには、フラッシュ動作制御回路３４ｈが接続されている。フラッシュ動作制御回路３４ｈは、セレクタ３４ｉの出力を切り替える制御信号、及び読み出し命令完了信号read_doneを出力すると共に、フラッシュコントロール回路全体を制御する回路である。
【００６９】
図１３は、図１２中のデコード回路３４ｄ内のテーブルの内容を示す図である。
デコード回路３４ｄ内のテーブルには、識別信号fypeが“０”のときのフラッシュメモリ２１に対する８bit命令コードレジスタ３４ｅ用の読み出し命令コード、８bit命令コードレジスタ３４ｆ用の書き込み命令コード、及び８bit命令コードレジスタ３４ｇ用の消去命令コードが格納され、更に、識別信号fypeが“１”のときのフラッシュメモリ２２に対する８bit命令コードレジスタ３４ｅ用の読み出し命令コード、８bit命令コードレジスタ３４ｆ用の書き込み命令コード、及び８bit命令コードレジスタ３４ｇ用の消去命令コードが格納されている。
【００７０】
デコード回路３４ｄは、識別信号ftypeの値“０”又は“１”によって各命令コードの値を決定し、この各命令コードを格納する命令コードレジスタ３４ｅ，３４ｄ，３４ｆへの入力値を与える機能を有している。
【００７１】
（実施例２の動作モード切り替え方法）
図１４は、図１０のシステムLSI３０Ａにおけるリセット解除からフラッシュメモリ「読み出し」完了までの初期動作（フラッシュメモリ機種識別→命令コードセット）を示すフローチャートである。図１５は、図１４のフローチャートに対応する図１０の初期動作（フラッシュメモリ機種識別→命令コードセット）を示すタイムチャートである。
【００７２】
図１５の時刻ｔ０において、外部から入力されるリセット信号rstnがアサート（＝“０”）されると、I/Oセル３１−１を通してリセットコントロール回路３２Ａ内のカウンタ３２aがリセットされてカウント値がゼロ（０）にリセットされ、更に、ANDゲート３２eから出力されるリセット信号mcu_rstnが“０”になる。カウント値がゼロにリセットされると、ORゲート３２b及びANDゲート３２eを介してANDゲート３２dから出力されるイネーブル信号enが“０”になる。
【００７３】
リセット信号mcu_rstnの“０”により、MCU３５Ａがリセットされる。リセット信号rstnの“０”により、フラッシュコントロール回路３４Ａ内の命令コードレジスタ３４ｅ,３４ｆ，３４ｇがリセットされると共に、イネーブル信号enの“０”により、その命令コードレジスタ３４ｅ,３４ｆ，３４ｇが書き込み不可となる。命令コードレジスタ３４ｅ，３４ｆ，３４ｇのリセットにより、セレクタ３４ｉから出力されるフラッシュインタフェース入出力信号fsif1等が“０”となる。イネーブル信号enの“０”により、I/Oセル３１−２内のトライステートバッファ３１ａがオン状態になり、信号fsif1の“０”により、トライステートバッファ３１ａ、バッファ３１ｂ、及び出力端子Ｙを介して識別信号ftypeが“０”（ftype=fsif1)となる（図１４のステップＳ２１）。
【００７４】
図１５の時刻ｔ１において、外部から入力されるリセット信号rstnが“１”になると、リセットが解除され、リセットコントロール回路３２Ａ内のカウンタ３２aがクロック数のカウントを開始する（図１４のステップＳ２２）。コントロール回路３４Ａ内のフラッシュ動作制御回路３４ｈから出力される読み出し命令完了信号read_doneは、読み出し完了までは“０”であるので、リセットコントロール回路３２Ａ内のANDゲート３２eから出力されるリセット信号mcu_rstnがアサート（＝“０”）されたままであり、MCU３５Ａがリセット状態を維持する。
【００７５】
カウンタ３２aの値が「１」〜「Ｋ−１」であるとき（図１４のステップＳ２３）、ANDゲート３２dから出力されるイネーブル信号enが“１”となる（図１４のステップＳ２４）。これにより、双方向のI/Oセル３１−２内のトライステートバッファ３１ａの出力側がハイインピーダンス状態になるので、このI/Oセル３１−２は入出力制御が入力方向となり、バッファ３１ｂから出力される識別信号ftypeの値は、信号線２４上の信号inoutの値となる。
【００７６】
このときフラッシュメモリ２２を駆動する前であるため、信号inoutが抵抗２５によりプルアップされているので、識別信号ftypeが“１”となる。これがデコード回路３４ｄにより判断され（図１４のステップＳ２５）、イネーブル信号enの“１”により、各命令コードレジスタ３４ｅ,３４ｆ,３４ｇにそれぞれフラッシュメモリ機種識別信号ftypeの値“１”に応じた命令コードが書き込まれる（図１４のステップＳ２６−２）。仮に、識別信号ftypeが“０”のときには、各命令コードレジスタ３４ｅ,３４ｆ,３４ｇにそれぞれフラッシュメモリ機種識別信号ftypeの値“０”に応じた命令コードが書き込まれる（図１４のステップＳ２６−１）。
【００７７】
図１５の時刻ｔ２において、リセットコントロール回路３２Ａ内のカウンタ３２aの値がカウント満了値「Ｋ」までカウントされると（図１４のステップＳ２３）、ANDゲート３２dから出力されるイネーブル信号enが“０”になり、以降次のリセットまで命令コードレジスタ３４ｅ,３４ｆ,３４ｇの値が保持される。
【００７８】
前記図１５の時刻ｔ２において、カウンタ３２aがカウント満了すると、フラッシュコントロール回路３４Ａにより、命令コードレジスタ３４ｅに格納された命令コードを用いてフラッシュメモリ読み出し命令が実行され、フラッシュメモリ２２から読み出された通常プログラムのデータがRAM３７に書き込まれる（図１４のステップＳ２７）。
【００７９】
図１５の時刻ｔ３において、フラッシュメモリ読み出し命令が完了すると、フラッシュ動作制御回路３４ｈから出力される読み出し命令完了信号read_doneの値が“１”となり（図１４のステップＳ２８）、リセットコントロール回路３２Ａ内のANDゲート３２eから出力されるリセット信号mcu_rstnが“１”になり、MCU３５Ａのリセットが解除される（図１４のステップＳ２９）。以降、MCU３５Ａは、RAM３７に格納された通常プログラムを使用して通常動作を開始する。
【００８０】
図１４のフローチャートでは、実施例１における図８のフローチャートの処理から、その後の図４のフローチャートの処理までの一連の動作を、フラッシュコントロール回路３４Ａのハードウェアで実現していることを示している。
【００８１】
（実施例２の効果）
本実施例２によれば、フラッシュメモリ機種の識別と、フラッシュメモリ２１又は２２からのプログラム読み出しとを、フラッシュコントロール回路３４Ａのハードウェアで実現しているので、実施例１では必要であった初期動作用のプログラム格納用のBOOT_ROM３６を必要としない。これにより、ROM領域であるBOOT_ROM３６の確保が不要となり、システムLSI３０Ａを例えばランダムロジック等で構成（代用）可能なため、レイアウトに有利となり、回路規模の削減が期待できる。しかも、初期動作をブートプログラムを用いたソフトウェア動作ではなく、フラッシュコントロール回路３４Ａのハードウェアで行うことにより、動作の高速化が期待できる。
【００８２】
（変形例）
本発明は、上記実施例１、２に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）〜（ｇ）のようなものがある。
【００８３】
（ａ）  実施例１、２では、抵抗２５によって信号inoutを電源電圧にプルアップして“１”をI/Oセル３１−２に入力しているが、抵抗２５をグランド電圧にプルダウンして“０”を入力することも可能である。以下の説明でも、「プルアップ」は「プルダウン」として適用可能である。
【００８４】
（ｂ）  実施例１、２では、抵抗２５を接続しているI/Oセルのピンは、フラッシュメモリ２１又は２２とのシリアルインタフェースと接続するI/Oセル３１−２で説明したが、本発明はこれに限定されない。図示しないが、システムLSI３０，３０Ａに設けられる入出力方向を制御できるI/Oセルのピンであれば、どのピンでも適用可能である。
【００８５】
（ｃ）  実施例１、２では、抵抗２５によるプルアップの論理値を取り込むタイミングを、外部からのリセット信号rstnの解除後でMCU３５，３５Ａのリセット中、として説明したが、プルアップしているI/Oセル３１−２のピンの入出力方向を制御できる状態であれば、プルアップの論理値を取り込むタイミングはリセット時に限らない。
【００８６】
（ｄ）  実施例１では、抵抗２５によるプルアップの論理値をフラッシュメモリ機種識別信号ftypeとして使用しているが、この値はより一般にシステムLSI３０の動作モード切り替え信号として利用可能である。この場合、システムLSI３０はフラッシュメモリ２１又は２２に接続するシステムLSIである必要は無く、フラッシュメモリ以外の他のメモリ等の被制御装置を接続する半導体集積回路にも適用可能である。又、システムLSI３０，３０Ａに代えて、IC、VLSI等の他の半導体集積回路にも適用可能である。
【００８７】
（ｅ）  実施例１、２では、抵抗２５によりプルアップしているI/Oセル３１−２のピンは１個であるが、本発明を適用するピン数に制限は無く、複数ピンでも適用可能である。適用するピン数をＮとすると、各ピンに対してプルアップ、プルダウンを組み合わせることにより、２N種のモード識別が可能である。
【００８８】
（ｆ）  実施例２では、フラッシュメモリ命令コードを格納するレジスタを３個（３４ｅ,３４ｆ,３４ｇ）使用しているが、使用する命令コード及び格納レジスタはいくつでも適用可能である。
【００８９】
（ｇ）  実施例２では、フラッシュメモリ命令コードを格納するレジスタ３４ｅ,３４ｆ,３４ｇを使用したが、命令コードを格納するレジスタは使用せずに、実施例１のフラッシュメモリ機種識別信号ftypeを格納するレジスタ３４ｃを使用して、命令実行の度にレジスタ３４ｃの値とデコード回路３４ｄにより各命令コードをデコードして命令を実行する構成も可能である。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施例１を示すシステムLSIの概略の構成図である。
【図２】従来のシステムLSIの一例を示す概略の構成図である。
【図３】図２中のフラッシュコントロール回路１２を示す概略の構成図である。
【図４】図２のシステムLSI１０の動作を示すフローチャートである。
【図５】図１中の双方向のI/Oセル３１−２とその周辺回路を示す概略の構成図である。
【図６】図１中のリセットコントロール回路３２を示す概略の構成図である。
【図７】図１中のフラッシュコントロール回路３４を示す概略の構成図である。
【図８】図１のシステムLSI３０における初期動作（フラッシュメモリ機種識別）を示すフローチャートである。
【図９】図１の初期動作（フラッシュメモリ機種識別）を示すタイムチャートである。
【図１０】本発明の実施例２を示すシステムLSIの概略の構成図である。
【図１１】図１０中のリセットコントロール回路３２Ａを示す概略の構成図である。
【図１２】図１０中のフラッシュコントロール回路３４Ａを示す概略の構成図である。
【図１３】図１２中のデコード回路３４ｄ内のテーブルの内容を示す図である。
【図１４】図１０のシステムLSI３０Ａにおける初期動作（フラッシュメモリ機種識別→命令コードセット）を示すフローチャートである。
【図１５】図１０の初期動作（フラッシュメモリ機種識別→命令コードセット）を示すタイムチャートである。
【符号の説明】
【００９１】
２１，２２      フラッシュメモリ
３０，３０Ａ      システムLSI
３１−２      I/Oセル
３２，３２Ａ      リセットコントロール回路
３４，３４Ａ      フラッシュコントロール回路
３５，３５Ａ      MCU
３６      BOOT_ROM
３７    RAM
【図１】
2008071080.tif 000003
【図２】
2008071080.tif 000004
【図３】
2008071080.tif 000005
【図４】
2008071080.tif 000006
【図５】
2008071080.tif 000007
【図６】
2008071080.tif 000008
【図７】
2008071080.tif 000009
【図８】
2008071080.tif 000010
【図９】
2008071080.tif 000011
【図１０】
2008071080.tif 000012
【図１１】
2008071080.tif 000013
【図１２】
2008071080.tif 000014
【図１３】
2008071080.tif 000015
【図１４】
2008071080.tif 000016
【図１５】
2008071080.tif 000017