(57)【要約】【課題】  一つの半導体集積回路で、様々な種類のプログラムＲＯＭに対応する。【解決手段】  リセット時に、半導体集積回路３００に接続されているプログラムＲＯＭ３１０の種類を識別し、識別したＲＯＭの種類に応じたＲＯＭコントローラＡ３０３又はＲＯＭコントローラＢ３０８を選択して、そのＲＯＭに対するアクセスプロトコルを実行し、リセット時と通常時とでメモリマップを切り換える。【選択図】      図３
2006127407.tif 000002
【特許請求の範囲】
【請求項１】
リセット時と通常時とでメモリマップを切り換え可能な半導体集積回路において、
リセット時に、前記半導体集積回路に接続されているＲＯＭの種類を識別する識別手段と、
前記識別手段で識別したＲＯＭの種類に応じたアクセスプロトコルを実行するよう制御する制御手段とを有することを特徴とする半導体集積回路。
【請求項２】
前記識別手段は、前記リセット時に、前記半導体集積回路の外部端子の値を前記ＲＯＭの種類として識別することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記外部端子は、リセット解除後は通常の信号ピンとして使用可能であることを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記リセット解除によって第一のレベルとなり、所定のレジスタに所定の値を書き込むことによって第二のレベルとなる信号に基づいて前記メモリマップを選択する選択手段を更に有し、
前記選択手段は、前記識別手段で識別したＲＯＭの種類に応じて、前記第一のレベルの期間は該ＲＯＭの種類に対するリセット時のメモリマップを選択し、前記第二のレベルの期間は該ＲＯＭの種類に対する通常時のメモリマップを選択することを特徴とする請求項１に記載の半導体集積回路。
【請求項５】
前記通常時のメモリマップのうち、任意のＲＯＭの種類に対する通常時のメモリマップにおけるＲＯＭ領域に相当する領域は、別のＲＯＭの種類に対する通常時のメモリマップにおいては、メインメモリ上のプログラム格納領域のシャドウとして構成されていることを特徴とする請求項１に記載の半導体集積回路。
【請求項６】
前記ＲＯＭへのアクセスプロトコルを実行するＲＯＭコントローラを有し、
前記制御手段は、前記識別手段で識別したＲＯＭの種類に応じたアクセスプロトコルを実行するよう前記ＲＯＭコントローラを制御することを特徴とする請求項１に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵを含む一つの半導体集積回路で様々な種類のプログラムＲＯＭに対応するための技術に関する。
【背景技術】
【０００２】
近年、半導体の集積度が向上したことにより、一つの半導体集積回路の中に、ＣＰＵを含むシステムの殆どの機能モジュールを実装することが可能となってきている（例えば、特許文献１）。しかし、依然として、ＣＰＵのプログラム等を記憶するプログラムＲＯＭと、メインメモリを構成する記憶装置（一般にはダイナミックＲＡＭ）は半導体集積回路の外部に設けられている場合が多い。
【０００３】
一方で、プログラムＲＯＭに使用するＲＯＭには、ＮＯＲ型フラッシュメモリ、ＮＡＮＤ型フラッシュメモリ、マスクＲＯＭ、シリアルＲＯＭなど、いくつかの種類があるが、これらはそれぞれ、集積度、読み出し速度、コスト、再プログラム（データの書き換え）が可能か否かなどが異なっている。
【０００４】
例えば、これらのＲＯＭのうち、再プログラムが可能なＲＯＭは、ＮＯＲ型フラッシュメモリ、ＮＡＮＤ型フラッシュメモリ、シリアルＲＯＭであり、中でも一般に安価であるのがマスクＲＯＭ、ＮＡＮＤ型フラッシュメモリ、シリアルＲＯＭである。
【０００５】
また、ＮＯＲ型フラッシュメモリとマスクＲＯＭとは、ＲＯＭに対するアクセスプロトコルがほぼ同じであるが、ＮＡＮＤ型フラッシュメモリやシリアルＲＯＭは、上述の二者とそれぞれアクセスプロトコルが大きく異なっている。
【０００６】
更に、ＮＡＮＤ型フラッシュメモリは、シーケンシャルアクセスを基本とするＲＯＭであるという制約があり（厳密にはランダムアクセスも可能ではあるが、ランダムアクセスをする度にＲＯＭデバイスがμＳオーダーのビジー状態になるため、読み出し速度の観点からランダムアクセスに向かない）、またシリアルＲＯＭは読み出し速度が他のタイプのＲＯＭに比べて著しく遅い。
【０００７】
そこで、従来はこれらのＲＯＭのうち、システムの性能やコストなどの要求に合わせて最適なＲＯＭをプログラムＲＯＭとして選択し、実装している。
【０００８】
図１は、従来技術を説明するための概略ブロック図である。半導体集積回路１００は、少なくともＣＰＵバス１０１、ＣＰＵ１０２、ＲＯＭコントローラ１０３、ＤＭＡコントローラ１０４、メモリコントローラ１０５から構成されている。尚、ＣＰＵバス１０１には他のモジュールも接続されているが、煩瑣を避けるため省略している。
【０００９】
また、この半導体集積回路１００の外部には、プログラムＲＯＭ１１０、メインメモリ１２０が接続されている。ここで、プログラムＲＯＭ１１０はＮＯＲ型フラッシュメモリによって構成されており、メインメモリ１２０はＳＤＲＡＭによって構成されているものとする。
【００１０】
図２は、従来技術におけるメモリマップを示す図である。尚、図２においては、メインメモリ領域２０２とＲＯＭ領域２０１とが記されているが、メモリマップ上にマッピングされている他のモジュールやデバイスの領域は、煩瑣を避けるため省略している。
【特許文献１】特開平06-027203号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、ある製品ジャンルの上級機種から低価格機までを一つの半導体集積回路でカバーしようとする場合、製品によって使用されるプログラムＲＯＭの種類が異なる。このため、複数のアクセスプロトコルに対応する必要があると共に、システムのブート時にプログラムＲＯＭのアクセスプロトコルを適切に選択しなければならない。
【００１２】
また、上述したように、ＮＡＮＤ型フラッシュメモリはシーケンシャルアクセスを基本とするデバイスであるため、プログラムの中でジャンプ命令（条件分岐命令なども含む）を実行できない。そのため、ＮＯＲ型フラッシュメモリやマスクＲＯＭとは異なるブートシーケンス制御に対応する必要がある。
【００１３】
更に、ある製品ジャンルの上級機種から低価格機までを一つの半導体集積回路でカバーすることによりハードウェアを共通化することができたとしても、システム（機種）毎にメモリマップが異なると、システム毎に異なった開発ツールや開発環境を準備しなければならなかった。また、場合によっては、システム毎にソフトウェア開発をし直さなければならず、ソフトウェアの開発効率の点でも問題があった。
【００１４】
本発明は、上記課題に鑑みてなされたもので、一つの半導体集積回路で、様々な種類のプログラムＲＯＭに対応することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、リセット時と通常時とでメモリマップを切り換え可能な半導体集積回路において、リセット時に、前記半導体集積回路に接続されているＲＯＭの種類を識別する識別手段と、前記識別手段で識別したＲＯＭの種類に応じたアクセスプロトコルを実行するよう制御する制御手段とを有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、一つの半導体集積回路で、様々な種類のプログラムＲＯＭに対応することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【実施例１】
【００１８】
図３は、実施例１における半導体集積回路の構成の一例を示す概略ブロック図である。図３に示すように、半導体集積回路３００は、少なくともＣＰＵバス３０１、ＣＰＵ３０２、ＲＯＭコントローラＡ３０３、ＤＭＡコントローラ３０４、メモリコントローラ３０５、リセットコントローラ３０６、ＣＰＵバス・マルチプレクサ（ＭＵＸ）３０７、ＲＯＭコントローラＢ３０８、ＲＯＭバス・マルチプレクサ（ＭＵＸ）３０９から構成されている。
【００１９】
尚、ＣＰＵバス３０１には他の機能モジュールも接続されているが、本発明とは関わりが無いため省略している。
【００２０】
この半導体集積回路３００の外部には、プログラムＲＯＭ３１０とメインメモリ３２０とが接続されている。また、半導体集積回路３００のシステムリセット端子reset_LにはリセットＩＣ３３０が接続され、起動ＲＯＭ識別端子gpには外部装置３４０が接続されると共に、基板上でプルダウンされている。この起動ＲＯＭ識別端子gpは、半導体集積回路３００において、リセットコントローラ３０６に接続されると共に、他の機能モジュール（図示せず）にも接続されている。
【００２１】
尚、プログラムＲＯＭ３１０はＮＯＲ型フラッシュメモリであり、メインメモリ３２０はＳＤＲＡＭである。
【００２２】
図４は、実施例１の変形例における半導体集積回路の構成の一例を示す概略ブロック図である。図３との構成上の違いは、プログラムＲＯＭ３１０がプログラムＲＯＭ４１０と置き換わったことと、起動ＲＯＭ識別端子gpが基板上でプルアップされていることのみであり、他は図３と同じである。ここで、プログラムＲＯＭ４１０はＮＡＮＤ型フラッシュメモリである。
【００２３】
図５は、実施例１における半導体集積回路のメモリマップを示す図である。図５では、メインメモリ領域とＲＯＭ領域のみが記されているが、メモリマップ上にマッピングされている他の機能モジュールやデバイスの領域は、煩瑣を避けるため省略している。
【００２４】
実施例１の半導体集積回路３００では、システムリセット解除時の起動ＲＯＭ識別端子gpの値が“０”の場合（図３の場合）には、ＮＯＲ型フラッシュメモリ（第一のＲＯＭ）・モードが選択され、“１”の場合（図４の場合）には、ＮＡＮＤ型フラッシュメモリ（第二のＲＯＭ）・モードが選択されるように構成されている。
【００２５】
図３に示すＮＯＲ型フラッシュメモリ・モードが選択された場合は、システムリセット解除後に、図５に示す５０１の第一のメモリマップが選択される。このメモリマップは、従来技術で説明した図２と同様である。
【００２６】
これに対して、図４に示すＮＡＮＤ型フラッシュメモリ・モードが選択された場合は、システムリセット解除後に、図５に示す５０２の第二のメモリマップが選択される。上述したように、ＮＡＮＤ型フラッシュメモリはシーケンシャルアクセスを基本とするメモリであるため、ジャンプ命令や条件分岐命令等を使用することができない。そのため、このモードでは、ブート処理を二段階に分けて行う。
【００２７】
まず、システムリセット解除後に、プログラムＲＯＭ４１０からメインメモリ３２０へメインプログラムを転送（コピー）するためのプログラムコードをＣＰＵ３０２内部のＲＡＭ領域或いはメインメモリ領域に生成するプログラムが実行される。その後、生成されたプログラムコードが実行され、メインプログラムをメインメモリ３２０上へ転送（コピー）する処理が行われる。メインプログラムの転送が完了すると、ブート処理は完了し、以降はメインメモリ３２０上のメインプログラムが実行される。
【００２８】
更に、ＮＡＮＤ型フラッシュメモリ・モードが選択された場合には、メインプログラムのメインメモリ３２０上への転送が完了すると、図５に示す５０３の第三のメモリマップにメモリマップの切り換えを行う。この切り換え処理は、ブートプログラムの最後で実行される。
【００２９】
この第三のメモリマップにおいては、第一のメモリマップ５０１（即ち、図３のＮＯＲ型フラッシュメモリによるシステムのメモリマップ）の第一のＲＯＭ領域に相当する領域が、メインメモリ領域上のメインプログラムが転送された領域のシャドウになっている。即ち、このシャドウ領域を介してメインプログラムにアクセスできるため、ソフトウェア的には、プログラムＲＯＭがＮＯＲ型フラッシュメモリであるか、ＮＡＮＤ型フラッシュメモリであるかが隠蔽されたメモリマップになっている。
【００３０】
次に、実施例１における半導体集積回路３００に含まれるリセットコントローラ３０６の詳細な構成及び動作について説明する。
【００３１】
図６は、実施例１におけるリセットコントローラ３０６の構成の一例を示すブロック図である。また、図７は、リセットコントローラ３０６内部の真理値表を示す図である。
【００３２】
図６において、rom_selデコーダ６０１は、システムリセット信号reset_Lの立ち上がり（即ち、システムリセットの解除）を検知することにより、起動ＲＯＭ識別端子gpの値を取り込み、Ｄタイプ・フリップフロップ６０２に出力する。Ｄタイプ・フリップフロップ６０２の出力は、ＲＯＭモード選択信号rom_selとして半導体集積回路３００内部の各部に入力される。
【００３３】
尚、図７に示す真理値表のように、起動ＲＯＭ識別端子gpは、システムリセットの解除後はrom_selデコーダ６０１の動作に影響を与えない。このため、実施例１では、通常時（即ち、システムリセット解除後）は起動ＲＯＭ識別端子gpを汎用ポート（即ち、通常の信号ピン）として使用し、他の機能モジュール（図３並びに図４では不図示）と外部装置３４０との間のやりとりのために使用している。
【００３４】
このように、起動ＲＯＭ識別機能と汎用ポート機能を兼用させることにより、端子数を増加させることなく、起動ＲＯＭ識別端子gpを具備することが可能となる。
【００３５】
一方、map_selデコーダ６０４は、システムリセット信号reset_Lの立ち上がりを検知することにより、Ｄタイプ・フリップフロップ６０５に対して“１”を出力する。また、Ｄタイプ・フリップフロップ６０５は、ＣＰＵ３０２にとっては汎用レジスタの一つ（map_selレジスタ）であり、ＣＰＵバス３０１、ＣＰＵバスＩ／Ｆ６０３を介して“０”又は“１”の値を書き込むことができる。
【００３６】
また、map_selデコーダ６０４は、ＣＰＵ３０２からの書き込み制御信号もデコードし、ＣＰＵバスＩ／Ｆ６０３から書き込みイネーブル信号wr_enがアサートされると、書き込みデータdec2_inの値をdec2_outとしてＤタイプ・フリップフロップ６０５に出力する。そして、Ｄタイプ・フリップフロップ６０５の出力は、メモリマップ選択信号map_selとしてＣＰＵバス・マルチプレクサ３０７に入力される。
【００３７】
即ち、メモリマップ選択信号map_selは、システムリセットの解除によってアクティブとなり、その後、プログラム（即ち、ＣＰＵ３０２）によってリマップレジスタ（即ち、Ｄタイプ・フリップフロップ６０５）に“０”を書き込むことで非アクティブにすることができるように構成されている。
【００３８】
以下、実施例１における第一の特徴である、起動ＲＯＭの識別並びに動作モードの選択について詳細に説明する。
【００３９】
上述したように、リセットコントローラ３０６のrom_selデコーダ６０１並びにフリップフロップ６０２によってリセット解除時の起動ＲＯＭ識別端子gpの値が取り込まれる。即ち、図３に示す構成では起動ＲＯＭ識別端子gpがプルダウンされているため、“０”が取り込まれ、また図４に示す構成では起動ＲＯＭ識別端子gpがプルアップされているため、“１”が取り込まれる。
【００４０】
実施例１の半導体集積回路３００においては、ＲＯＭモード選択信号rom_selが“０”の場合にはＮＯＲ型フラッシュメモリ・モードが選択され、“１”の場合にはＮＡＮＤ型フラッシュメモリ・モードが選択されるように構成されている。
【００４１】
即ち、ＲＯＭモード選択信号rom_selが“０”の場合のみ、ＲＯＭコントローラＡ３０３（ＮＯＲ型フラッシュメモリ用コントローラ）がアクティブとなり、ＲＯＭモード選択信号rom_selが“１”の場合のみ、ＲＯＭコントローラＢ３０８（ＮＡＮＤ型フラッシュメモリ用コントローラ）がアクティブになる。
【００４２】
更に、ＲＯＭバス・マルチプレクサ３０９は、ＲＯＭモード選択信号rom_selが“０”の場合、ＲＯＭコントローラＡ３０３と外部のプログラムＲＯＭ（図３の３１０）との間のパスが選択され、ＲＯＭモード選択信号rom_selが“１”の場合、ＲＯＭコントローラＢ３０８と外部のプログラムＲＯＭ（図４の４１０）との間のパスが選択される。
【００４３】
尚、メモリマップ選択信号map_sel及びＲＯＭモード選択信号rom_selは、ＣＰＵバス・マルチプレクサ３０７にも入力される。
【００４４】
また、ＣＰＵバス３０１は、例えばＡＲＭ社が仕様を定めたＡＭＢＡ（Advanced Microcontroller Bus Architecture）、ＡＨＢ（Advanced High-Performance Bus）で構成され、ＣＰＵバス・マルチプレクサ３０７もＡＭＢＡ推奨の方式並びに構成をとっている。
【００４５】
但し、実施例１における第二の特徴である、第三のメモリマップのシャドウ制御のために、メモリマップ選択信号map_sel及びＲＯＭモード選択信号rom_selが共に“１”である場合、アドレスの上位ビットをマスクし、［0xF800_0000］〜［0xFFFF_FFFF］のアドレス入力に対して、［0x0000_0000］〜［0x07FF_FFFF］を出力する。
【００４６】
以上のような構成並びに方法を採用することにより、プログラムＲＯＭとして、ＮＯＲ型フラッシュメモリ、ＮＡＮＤ型フラッシュメモリの何れが使用されたシステムにおいても、システムのブート時の処理が適正に行われ、かつ、ブート後のメインプログラム実行時においても、両者とも同じソフトウェア・ビューとなる。
【００４７】
これにより、ソフトウェアの開発ツールを共通化できる。また、場合によっては（製品仕様によっては）、全く同一のメインプログラムを使用できる。更には、これらの処理を行うための起動ＲＯＭ識別端子gpを通常の信号ピンと兼用することにより、端子数を増加させることなく具備することができる。
【実施例２】
【００４８】
次に、図面を参照しながら本発明に係る実施例２について詳細に説明する。
【００４９】
図８は、実施例２における半導体集積回路の構成の一例を示す概略ブロック図である。図８に示すように、半導体集積回路８００は、少なくともＣＰＵバス８０１、ＣＰＵ８０２、ＲＯＭコントローラ８０３、ＤＭＡコントローラ８０４、メモリコントローラ８０５、リセットコントローラ８０６、ＣＰＵバス・マルチプレクサ（ＭＵＸ）８０７から構成されている。
【００５０】
尚、ＣＰＵバス８０１には他の機能モジュールも接続されているが、本発明とは関わりが無いため省略している。
【００５１】
この半導体集積回路８００の外部には、プログラムＲＯＭ８１０とメインメモリ８２０とが接続されている。また、半導体集積回路８００のシステムリセット端子reset_LにはリセットＩＣ８３０が接続され、起動ＲＯＭ識別端子gp[1:0]には外部装置８４０が接続されると共に、２本共基板上でプルダウンされている。この起動ＲＯＭ識別端子gp[1:0]は、半導体集積回路８００において、リセットコントローラ８０６に接続されると共に、他の機能モジュール（図示せず）にも接続されている。
【００５２】
尚、プログラムＲＯＭ８１０はＮＯＲ型フラッシュメモリであり、メインメモリ８２０はＳＤＲＡＭである。
【００５３】
実施例１で説明した図３との違いは、起動ＲＯＭ識別端子のビット幅を増加し、４種類のＲＯＭモードを選択できるようにしたことと、１つのＲＯＭコントローラ８０３で全てのＲＯＭを制御するようにしたことである。
【００５４】
即ち、実施例２では、起動ＲＯＭ識別端子gp[1:0]の２ビットが［00］の場合は、ＮＯＲ型フラッシュメモリ・モード、［01］の場合は、ＮＡＮＤ型フラッシュメモリ・モード、［10］の場合は、シリアルＲＯＭ・モード、［11］の場合は、マスクＲＯＭ・モードが選択されるように構成されている。
【００５５】
尚、実施例２における半導体集積回路のメモリマップは、実施例１と同様である。即ち、図５に示した通りで、図５ではメインメモリ領域とＲＯＭ領域のみが記されているが、メモリマップ上にマッピングされている他の機能モジュールやデバイスの領域は、煩瑣を避けるため省略している。
【００５６】
また、実施例２における半導体集積回路８００では、プログラムＲＯＭとして、ＮＯＲ型フラッシュメモリが使用されている場合と、ＮＡＮＤ型フラッシュメモリが使用されている場合については、上述した実施例１と同様である。
【００５７】
即ち、システムリセット解除時の起動ＲＯＭ識別端子gp[1:0]の値が［00］の場合には、ＮＯＲ型フラッシュメモリ（第一のＲＯＭ）・モードが選択され、［01］の場合には、ＮＡＮＤ型フラッシュメモリ（第二のＲＯＭ）・モードが選択されるように構成されている。そして、ＮＯＲ型フラッシュメモリ・モードが選択された場合は、システムリセット解除後に、図５に示す５０１の第一のメモリマップが選択される。このメモリマップは、従来技術、実施例１と同様である。
【００５８】
これに対して、ＮＡＮＤ型フラッシュメモリ・モードが選択された場合は、システムリセット解除後に、図５に示す５０２第二のメモリマップが選択される。上述したように、ＮＡＮＤ型フラッシュメモリはシーケンシャルアクセスを基本とするメモリであるため、ジャンプ命令や条件分岐命令とを使用することができない。そのため、このモードでは、ブート処理を二段階に分けて行う。
【００５９】
まず、システムリセット解除後に、プログラムＲＯＭ８１０からメインメモリ８２０へメインプログラムを転送（コピー）するためのプログラムコードをＣＰＵ８０２内部のＲＡＭ領域或いはメインメモリ領域に生成するプログラムが実行される。その後、生成されたプログラムコードが実行され、メインプログラムのメインメモリ８２０上へ転送（コピー）する処理が行われる。メインプログラムの転送が完了すると、ブート処理は完了し、以降はメインメモリ８２０上のメインプログラムが実行される。
【００６０】
更に、ＮＡＮＤ型フラッシュメモリ・モードが選択された場合には、メインプログラムのメインメモリ８２０上への転送が完了すると、図５に示す５０３の第三のメモリマップにメモリマップの切り換えを行う。この切り換え処理は、ブートプログラムの最後で実行される。
【００６１】
この第三のメモリマップでは、第一のメモリマップ５０１（即ち、ＮＯＲ型フラッシュメモリによるシステムのメモリマップ）の第一のＲＯＭ領域に相当する領域が、メインメモリ上のメインプログラムが転送された領域のシャドウになっている。即ち、このシャドウ領域を介してメインプログラムにアクセスできるため、ソフトウェア的には、プログラムＲＯＭがＮＯＲ型フラッシュメモリであるか、ＮＡＮＤ型フラッシュメモリであるかが隠蔽されたメモリマップになっている。
【００６２】
また、実施例２における半導体集積回路８００では、起動ＲＯＭ識別端子gp[1:0]の値が［10］の場合は、シリアルＲＯＭ・モードが、［11］の場合は、マスクＲＯＭ・モードが選択されるが、メモリマップは何れもＮＯＲ型フラッシュメモリの場合と同様に、第一のメモリマップが選択される。
【００６３】
次に、実施例２における半導体集積回路８００に含まれるリセットコントローラ８０６の詳細な構成及び動作について説明する。
【００６４】
図９は、実施例２におけるリセットコントローラ８０６の構成の一例を示すブロック図である。また、図１０はリセットコントローラ８０６内部の真理値表を示す図である。
【００６５】
図９において、rom_selデコーダ９０１は、システムリセット信号reset_Lの立ち上がり（即ち、システムリセットの解除）を検知することにより、起動ＲＯＭ識別端子gp[1:0]の値を取り込み、Ｄタイプ・フリップフロップ９０２に出力する。Ｄタイプ・フリップフロップ９０２の出力は、ＲＯＭモード選択信号rom_sel[1:0]として半導体集積回路８００内部の各部に入力される。
【００６６】
尚、図１０に示す真理値表のように、起動ＲＯＭ識別端子gp[1:0]は、システムリセットの解除後はrom_selデコーダ９０１の動作に影響を与えない。このため、実施例２では、通常時（即ち、システムリセット解除後）は起動ＲＯＭ識別端子gp[1:0]を汎用ポート（即ち、通常の信号ピン）として使用し、他の機能モジュール（図８では不図示）と外部装置８４０との間のやりとりのために使用している。
【００６７】
このように、起動ＲＯＭ識別機能と汎用ポート機能を兼用させることにより、端子数を増加させることなく、起動ＲＯＭ識別端子gp[1:0]を具備することが可能となる。
【００６８】
尚、map_selデコーダ９０４並びにＤタイプ・フリップフロップ９０５の動作については、上述の実施例１と同様である。即ち、map_selデコーダ９０４は、システムリセット信号reset_Lの立ち上がりを検知することにより、Ｄタイプ・フリップフロップ９０５に対して“１”を出力する。また、Ｄタイプ・フリップフロップ９０５は、ＣＰＵ８０２にとっては汎用レジスタの一つ（map_selレジスタ）であり、ＣＰＵバス８０１、ＣＰＵバスＩ／Ｆ９０３を介して“０”又は“１”の値を書き込むことができる。
【００６９】
また、map_selデコーダ９０４は、ＣＰＵ８０２からの書き込み制御信号もデコードし、ＣＰＵバスＩ／Ｆ９０３から書き込みイネーブル信号wr_enがアサートされると、書き込みデータdec2_inの値をdec2_outとしてＤタイプ・フリップフロップ９０５に出力する。そして、Ｄタイプ・フリップフロップ９０５の出力は、メモリマップ選択信号map_selとしてＣＰＵバス・マルチプレクサ８０７に入力される。
【００７０】
即ち、メモリマップ選択信号map_selは、システムリセットの解除によってアクティブとなり、その後、プログラム（即ち、ＣＰＵ８０２）によってリマップレジスタ（即ち、Ｄタイプ・フリップフロップ９０５）に“０”を書き込むことで非アクティブにすることができるように構成されている。
【００７１】
以下、実施例２における第一の特徴である、起動ＲＯＭの識別並びに動作モードの選択について説明する。
【００７２】
上述したように、リセットコントローラ８０６のrom_selデコーダ９０１並びにフリップフロップ９０２によってリセット解除時の起動ＲＯＭ識別端子gp[1:0]の値が取り込まれる。即ち、実施例２の構成ではＲＯＭモード選択信号rom_sel[1:0]が［00］の場合には、ＮＯＲ型フラッシュメモリ・モード、［01］の場合にはＮＡＮＤ型フラッシュメモリ・モード、［10］の場合にはシリアルＲＯＭ・モード、［11］の場合にはマスクＲＯＭ・モードが選択されるように構成されている。そして、ＲＯＭコントローラ８０３は選択されたＲＯＭモードに応じたアクセスプロトコルでプログラムＲＯＭ８１０にアクセスする。図８に示す例では、起動ＲＯＭ識別端子gp[1:0]が２本共、プルダウンされているため、システムリセット解除時に、［00］が取り込まれ、ＲＯＭモード選択信号rom_sel[1:0]も［00］となるため、ＮＯＲ型フラッシュメモリ・モードが選択される。
【００７３】
尚、メモリマップ選択信号map_sel及びＲＯＭモード選択信号rom_sel[1:0]は、ＣＰＵバス・マルチプレクサ８０７にも入力される。
【００７４】
また、ＣＰＵバス８０１は、実施例１と同様に、ＡＭＢＡ、ＡＨＢで構成され、ＣＰＵバス・マルチプレクサ８０７もＡＭＢＡ推奨の方式並びに構成をとっている。
【００７５】
但し、実施例２における第二の特徴である、第三のメモリマップのシャドウ制御のために、メモリマップ選択信号map_selが“１”で、ＲＯＭモード選択信号rom_sel[1:0]が［01］である場合、アドレスの上位ビットをマスクし、［0xF800_0000］〜［0xFFFF_FFFF］のアドレス入力に対して、［0x0000_0000］〜［0x07FF_FFFF］を出力する。
【００７６】
以上のような構成並びに方法を採用することにより、プログラムＲＯＭとして、様々な種類のＲＯＭが使用されたシステムにおいても、システムのブート時の処理が適正に行われ、かつ、ブート後のメインプログラム実行時においても、それぞれ同じソフトウェア・ビューとなる。
【００７７】
これにより、ソフトウェアの開発ツールを共通化できる。また、場合によっては（製品仕様によっては）、全く同一のメインプログラムを使用できる。更には、これらの処理を行うための起動ＲＯＭ識別端子gp[1:0]を通常の信号ピンと兼用することにより、端子数を増加させることなく具備することができる。
【００７８】
尚、本発明は複数の機器（例えば、ホストコンピュータ，インターフェース機器，リーダ，プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用しても良い。
【００７９】
また、本発明の目的は前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００８０】
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００８１】
このプログラムコードを供給するための記録媒体としては、例えばフロッピー（登録商標）ディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００８２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８３】
更に、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００８４】
【図１】従来技術を説明するための概略ブロック図である。
【図２】従来技術におけるメモリマップを示す図である。
【図３】実施例１における半導体集積回路の構成の一例を示す概略ブロック図である。
【図４】実施例１の変形例における半導体集積回路の構成の一例を示す概略ブロック図である。
【図５】実施例１における半導体集積回路のメモリマップを示す図である。
【図６】実施例１におけるリセットコントローラ３０６の構成の一例を示すブロック図である。
【図７】リセットコントローラ３０６内部の真理値表を示す図である。
【図８】実施例２における半導体集積回路の構成の一例を示す概略ブロック図である。
【図９】実施例２におけるリセットコントローラ８０６の構成の一例を示すブロック図である。
【図１０】リセットコントローラ８０６内部の真理値表を示す図である。
【符号の説明】
【００８５】
１００  半導体集積回路
１０１  ＣＰＵバス
１０２  ＣＰＵ
１０３  ＲＯＭコントローラ
１０４  ＤＭＡコントローラ
１０５  メモリコントローラ
１１０  プログラムＲＯＭ
１２０  メインメモリ
２０１  ＲＯＭ領域
２０２  メインメモリ領域
３００  半導体集積回路
３０１  ＣＰＵバス
３０２  ＣＰＵ
３０３  ＲＯＭコントローラＡ
３０４  ＤＭＡコントローラ
３０５  メモリコントローラ
３０６  リセットコントローラ
３０７  ＣＰＵバス・マルチプレクサ（ＭＵＸ）
３０８  ＲＯＭコントローラＢ
３０９  ＲＯＭバス・マルチプレクサ（ＭＵＸ）
３１０  プログラムＲＯＭ（ＮＯＲ型フラッシュメモリ）
３２０  メインメモリ
３３０  リセットＩＣ
３４０  外部装置
４１０  プログラムＲＯＭ（ＮＡＮＤ型フラッシュメモリ）
５０１  第一のメモリマップ
５０２  第二のメモリマップ
５０３  第三のメモリマップ
６０１  rom_selデコーダ
６０２  Ｄタイプ・フリップフロップ
６０３  ＣＰＵバスＩ／Ｆ
６０４  map_selデコーダ
６０５  Ｄタイプ・フリップフロップ（map_selレジスタ）
８００  半導体集積回路
８０１  ＣＰＵバス
８０２  ＣＰＵ
８０３  ＲＯＭコントローラＣ
８０４  ＤＭＡコントローラ
８０５  メモリコントローラ
８０６  リセットコントローラ
８０７  ＣＰＵバス・マルチプレクサ（ＭＵＸ）
８１０  プログラムＲＯＭ
８２０  メインメモリ
８３０  リセットＩＣ
８４０  外部装置
９０１  rom_selデコーダ
９０２  Ｄタイプ・フリップフロップ
９０３  ＣＰＵバスＩ／Ｆ
９０４  map_selデコーダ
９０５  Ｄタイプ・フリップフロップ（map_selレジスタ）
【図１】
2006127407.tif 000003
【図２】
2006127407.tif 000004
【図３】
2006127407.tif 000005
【図４】
2006127407.tif 000006
【図５】
2006127407.tif 000007
【図６】
2006127407.tif 000008
【図７】
2006127407.tif 000009
【図８】
2006127407.tif 000010
【図９】
2006127407.tif 000011
【図１０】
2006127407.tif 000012