(57)【要約】【課題】  システム構成を変更することなく、外部半導体装置のアドレスバス幅の広狭に応じた最適のアドレス拡張を実現する半導体装置を提供する。【解決手段】  半導体装置（１０Ａ）において、拡張レジスタ（１２）は、外部ＣＰＵ（２０）から与えられた原アドレス（ＡＤＲｏｒｇ）に付加すべき拡張ビットを保持する。また、マスクレジスタ（１３）は、当該拡張ビットのビット長を保持する。そして、アドレス拡張部（１４Ａ）は、原アドレス（ＡＤＲｏｒｇ）に、拡張レジスタ（１２）に保持されたデータのうちマスクレジスタ（１３）によって示されたビット長分を付加して、拡張アドレス（ＡＤＲｅｘ）を生成する。【選択図】  図１
2005038224.tif 000002
【特許請求の範囲】
【請求項１】
外部半導体装置から与えられた原アドレスに拡張ビットを付加して内部資源へのアクセスに係る拡張アドレスを生成し、前記外部半導体装置による前記内部資源へのアクセスを可能にする半導体装置であって、
前記拡張ビットを少なくとも一部に含むデータを保持する第１のレジスタと、
前記拡張ビットのビット長を保持する第２のレジスタと、
前記原アドレスに、前記第１のレジスタに保持されたデータのうち、前記拡張ビットを含む、前記第２のレジスタが示すビット長分のデータを付加して、前記拡張アドレスを生成するアドレス拡張部とを備えた
ことを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記第１のレジスタは、前記外部半導体装置による前記内部資源へのアクセス開始前に、前記外部半導体装置のアドレスバス幅分のビットを所定値に設定するものであり、
前記第２のレジスタは、前記第１のレジスタに設定された値に基づいて、前記拡張ビットのビット長を得る
ことを特徴とする半導体装置。
【請求項３】
請求項１に記載の半導体装置において、
前記アドレス拡張部は、
前記外部半導体装置からの制御信号に基づいて、前記第１および第２のレジスタのアドレス上位ビットに相当する部分アドレス、および前記拡張ビットを含み、前記拡張アドレスの上位ビットに相当する部分アドレスのいずれか一方を選択するアドレスセレクタ部と、
前記アドレスセレクタ部によって選択された部分アドレスに、前記原アドレスによって指定され、前記拡張アドレスの下位ビットに相当する部分アドレスを付加して、前記拡張アドレスを生成するアドレス生成部とを有する
ことを特徴とする半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記制御信号は、前記外部半導体装置から出力されたアドレスデータの一部である
ことを特徴とする半導体装置。
【請求項５】
外部半導体装置から与えられた原アドレスに拡張ビットを付加して内部資源へのアクセスに係る拡張アドレスを生成し、前記外部半導体装置による前記内部資源へのアクセスを可能にする半導体装置であって、
複数種類の拡張ビットをそれぞれ保持する複数のレジスタと、
前記外部半導体装置からのレジスタ切替信号に基づいて前記複数のレジスタのいずれか一つを選択し、前記原アドレスに、当該選択したレジスタに保持された拡張ビットを付加して、前記拡張アドレスを生成するアドレス拡張部とを備えた
ことを特徴とする半導体装置。
【請求項６】
請求項５に記載の半導体装置において、
前記複数のレジスタのそれぞれについて、前記アドレスセレクタ部によって選択された回数をカウントするカウンタを備え、
前記複数のレジスタのうち、前記カウンタによってカウントされた回数が相対的に小さいものに、新たな拡張データを上書きする
ことを特徴とする半導体装置。
【請求項７】
請求項５に記載の半導体装置において、
前記アドレス拡張部は、
前記外部半導体装置からの制御信号に基づいて、前記複数のレジスタのアドレス上位ビットに相当する部分アドレス、および前記拡張ビットを含み、前記拡張アドレスの上位ビットに相当する部分アドレスのいずれか一方を選択するアドレスセレクタ部と、
前記アドレスセレクタ部によって選択された部分アドレスに、前記原アドレスによって指定され、前記拡張アドレスの下位ビットに相当する部分アドレスを付加して、前記拡張アドレスを生成するアドレス生成部とを有する
ことを特徴とする半導体装置。
【請求項８】
アドレス幅が相対的に狭い外部半導体装置に対して、アドレス幅が相対的に広い内部資源へのアクセスを可能にする半導体装置であって、
前記内部資源へのアクセスに係る拡張アドレス生成の基となるデータを保持するレジスタと、
前記外部半導体装置から前記拡張アドレスの差分データを受け、当該差分データおよび前記レジスタに保持されたデータから、新たな拡張アドレスを生成するアドレスデコーダ部とを備えた
ことを特徴とする半導体装置。
【請求項９】
内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から出力された原アドレスに拡張ビットを付加して、前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法であって、
あらかじめ前記拡張ビットを少なくとも一部に含むデータおよび前記拡張ビットのビット長を保持し、前記原アドレスに、前記拡張ビットを含む前記ビット長分のデータを付加して、前記拡張アドレスを生成する
ことを特徴とするアドレス拡張方法。
【請求項１０】
内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から出力された原アドレスに拡張ビットを付加して、前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法であって、
あらかじめ複数種類の拡張ビットをそれぞれ保持し、前記複数種類の拡張ビットのいずれか一つを選択し、前記原アドレスに、当該選択した拡張ビットを付加して、前記拡張アドレスを生成する
ことを特徴とするアドレス拡張方法。
【請求項１１】
内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法であって、
前記内部資源へのアクセスに係る拡張アドレス生成の基となるデータを保持し、前記第２の半導体装置から前記拡張アドレスの差分データを受け、当該差分データおよび前記保持されたデータから、新たな拡張アドレスを生成する
ことを特徴とするアドレス拡張方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相対的に狭いアドレス幅の外部半導体装置と相対的に広いアドレス幅の半導体装置とを接続する技術に関し、特に、狭いアドレスバス幅を有する外部ＣＰＵが広いアドレスバス幅を有する被アクセス装置にアクセスする際のアドレス拡張の技術に関する。
【背景技術】
【０００２】
近年のシステムＬＳＩは１チップにさまざまな機能を有するようになり、また、その機能が大規模化することにより、システムＬＳＩに必要となるピン数の増加が問題となっている。そこで、ピン数を削減して、システムＬＳＩのパッケージ面積を削減することが行われている。このため、システムＬＳＩは、多種多様のインタフェースおよびアドレスバス幅を有するようになっている。この中でも、特に、狭いアドレスバス幅を有するシステムＬＳＩについては、当該システムＬＳＩが広いアドレスバス幅を有する被アクセス装置にアクセスする際、アドレス拡張を行う必要がある。
【０００３】
従来、これを解決するために、次のような手段が講じられている。すなわち、被アクセス装置の内部資源へのアクセスに係る上位アドレスを保持可能なアドレス用レジスタを設け、データバスを通じて、当該アドレス用レジスタに上位アドレスを設定しておく。そして、アドレスバスを通じて与えられたアドレスを下位アドレスとして、これを上記アドレス用レジスタに保持された上位アドレスに付加して、上記内部資源へのアクセスに係る拡張アドレスを生成している（たとえば、特許文献１参照）。
【特許文献１】特開平５―１７３９２７号公報（第２頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の従来技術では、被アクセス装置に接続されたシステムＬＳＩ、たとえば、外部ＣＰＵのアドレスバス幅の大きさに応じて、アドレス用レジスタに設定される上位アドレスのビット幅が決められる。たとえば、３２ビット幅のアドレスバスを有する被アクセス装置に、８ビット幅のアドレスバスおよび１６ビット幅のデータバスを有する外部ＣＰＵが接続される場合、被アクセス装置におけるアドレス用レジスタは２４ビット幅の上位アドレスを保持するように構成される。このように構成された被アクセス装置では、２０ビット幅のアドレスバスを有する外部ＣＰＵを接続する場合でも、拡張アドレスの下位ビットは８ビット幅でしか設定することができないため、アドレス用レジスタに２４ビットの上位アドレスデータを設定しなければならない。このため、アドレス用レジスタに２回アクセスする必要がある。すなわち、アドレス用レジスタに対するアクセスが不必要に増加してしまい、処理速度の低下を招くこととなる。
【０００５】
この問題を解決する方法として、被アクセス装置に、さまざまなアドレスバス幅に対応したシステムを複数設けることが容易に考えられる。しかし、そのような被アクセス装置は汎用性に乏しく、また、コスト的にも不利である。
【０００６】
上記問題に鑑み、本発明は、外部ＣＰＵなどの外部半導体装置からのアドレスを拡張して内部資源へのアクセスを可能にする半導体装置について、特にシステム構成を変更することなく、当該外部半導体装置のアドレスバス幅の広狭に応じた最適のアドレス拡張を実現することを課題とする。また、本発明は、内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、当該第２の半導体装置のアドレスバス幅の広狭に応じた最適なアドレス拡張方法を提供する。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明が講じた手段は、外部半導体装置から与えられた原アドレスに拡張ビットを付加して内部資源へのアクセスに係る拡張アドレスを生成し、前記外部半導体装置による前記内部資源へのアクセスを可能にする半導体装置として、前記拡張ビットを少なくとも一部に含むデータを保持する第１のレジスタと、前記拡張ビットのビット長を保持する第２のレジスタと、前記原アドレスに、前記第１のレジスタに保持されたデータのうち、前記拡張ビットを含む、前記第２のレジスタが示すビット長分のデータを付加して、前記拡張アドレスを生成するアドレス拡張部とを備えたものとする。
【０００８】
これによると、第１のレジスタに拡張ビットを少なくとも一部に含むデータが保持され、第２のレジスタに拡張ビットのビット長が保持されるため、任意のビット長の拡張ビットを用いることができる。そして、アドレス拡張部によって、外部半導体装置から与えられた原アドレスに、第１のレジスタに保持された拡張ビットが付加されて、内部資源へのアクセスのための拡張アドレスが生成される。したがって、外部半導体装置のアドレスバス幅の広狭にかかわらず、原アドレスの全ビットを拡張アドレス生成のために用いることができる。
【０００９】
好ましくは、上記の半導体装置において、前記第１のレジスタは、前記外部半導体装置による前記内部資源へのアクセス開始前に、前記外部半導体装置のアドレスバス幅分のビットを所定値に設定するものであり、前記第２のレジスタは、前記第１のレジスタに設定された値に基づいて、前記拡張ビットのビット長を得るものとする。
【００１０】
また、具体的には、前記アドレス拡張部は、前記外部半導体装置からの制御信号に基づいて、前記第１および第２のレジスタのアドレス上位ビットに相当する部分アドレス、および前記拡張ビットを含み、前記拡張アドレスの上位ビットに相当する部分アドレスのいずれか一方を選択するアドレスセレクタ部と、前記アドレスセレクタ部によって選択された部分アドレスに、前記原アドレスによって指定され、前記拡張アドレスの下位ビットに相当する部分アドレスを付加して、前記拡張アドレスを生成するアドレス生成部とを有するものとする。
【００１１】
より好ましくは、前記制御信号は、前記外部半導体装置から出力されたアドレスデータの一部であるとする。
【００１２】
一方、上記課題を解決するために本発明が講じた別の手段は、外部半導体装置から与えられた原アドレスに拡張ビットを付加して内部資源へのアクセスに係る拡張アドレスを生成し、前記外部半導体装置による前記内部資源へのアクセスを可能にする半導体装置として、複数種類の拡張ビットをそれぞれ保持する複数のレジスタと、前記外部半導体装置からのレジスタ切替信号に基づいて前記複数のレジスタのいずれか一つを選択し、前記原アドレスに、当該選択したレジスタに保持された拡張ビットを付加して、前記拡張アドレスを生成するアドレス拡張部とを備えたものとする。
【００１３】
これによると、複数のレジスタに複数種類の拡張ビットが保持され、アドレス拡張部によって、当該複数のレジスタのいずれか一つが選択され、当該レジスタに保持された拡張ビットが拡張アドレスの生成に用いられる。したがって、外部半導体装置は、内部資源へのアクセスのたびに拡張ビットをレジスタに設定する必要がなく、原アドレスを出力するだけでよくなる。
【００１４】
好ましくは、上記の半導体装置は、前記複数のレジスタのそれぞれについて、前記アドレスセレクタ部によって選択された回数をカウントするカウンタを備え、前記複数のレジスタのうち、前記カウンタによってカウントされた回数が相対的に小さいものに、新たな拡張データを上書きするものとする。
【００１５】
また、具体的には、前記アドレス拡張部は、前記外部半導体装置からの制御信号に基づいて、前記複数のレジスタのアドレス上位ビットに相当する部分アドレス、および前記拡張ビットを含み、前記拡張アドレスの上位ビットに相当する部分アドレスのいずれか一方を選択するアドレスセレクタ部と、前記アドレスセレクタ部によって選択された部分アドレスに、前記原アドレスによって指定され、前記拡張アドレスの下位ビットに相当する部分アドレスを付加して、前記拡張アドレスを生成するアドレス生成部とを有するものとする。
【００１６】
一方、上記課題を解決するために本発明が講じた別の手段は、アドレス幅が相対的に狭い外部半導体装置に対して、アドレス幅が相対的に広い内部資源へのアクセスを可能にする半導体装置として、前記内部資源へのアクセスに係る拡張アドレス生成の基となるデータを保持するレジスタと、前記外部半導体装置から前記拡張アドレスの差分データを受け、当該差分データおよび前記レジスタに保持されたデータから、新たな拡張アドレスを生成するアドレスデコーダ部とを備えたものとする。
【００１７】
これによると、外部半導体装置からは差分データを出力するだけで、半導体装置において拡張アドレスが生成される。したがって、外部半導体装置のアドレスバス幅が、アクセス先の半導体装置のアドレスバス幅よりも狭い任意の大きさであっても、システム構成を変更することなく、最適のアドレス拡張を行うことができる。
【００１８】
また、本発明が講じた手段は、内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から出力された原アドレスに拡張ビットを付加して、前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法として、あらかじめ前記拡張ビットを少なくとも一部に含むデータおよび前記拡張ビットのビット長を保持し、前記原アドレスに、前記拡張ビットを含む前記ビット長分のデータを付加して、前記拡張アドレスを生成するものとする。
【００１９】
これによると、拡張ビットを少なくとも一部に含むデータおよび拡張ビットのビット長が保持されるため、任意のビット長の拡張ビットを用いることができる。そして、第２の半導体装置から与えられた原アドレスに、保持された拡張ビットが付加されて、内部資源へのアクセスのための拡張アドレスが生成される。したがって、第２の半導体装置のアドレスバス幅の広狭にかかわらず、原アドレスの全ビットを拡張アドレス生成のために用いることができる。
【００２０】
また、本発明が講じた別の手段は、内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から出力された原アドレスに拡張ビットを付加して、前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法として、あらかじめ複数種類の拡張ビットをそれぞれ保持し、前記複数種類の拡張ビットのいずれか一つを選択し、前記原アドレスに、当該選択した拡張ビットを付加して、前記拡張アドレスを生成するものとする。
【００２１】
これによると、複数種類の拡張ビットが保持され、当該複数種類の拡張ビットのいずれか一つが選択され、当該選択された拡張ビットが拡張アドレスの生成に用いられる。したがって、第２の半導体装置は、内部資源へのアクセスのたびに拡張ビットを設定する必要がなく、原アドレスを出力するだけでよくなる。
【００２２】
また、本発明が講じた別の手段は、内部資源を備えた第１の半導体装置と、これよりも狭いアドレスバス幅の第２の半導体装置とが接続されたシステムにおいて、前記第２の半導体装置から前記内部資源へのアクセスに係る拡張アドレスを生成するアドレス拡張方法として、前記内部資源へのアクセスに係る拡張アドレス生成の基となるデータを保持し、前記第２の半導体装置から前記拡張アドレスの差分データを受け、当該差分データおよび前記保持されたデータから、新たな拡張アドレスを生成するものとする。
【００２３】
これによると、第２の半導体装置からは差分データを出力するだけで、第１の半導体装置において拡張アドレスが生成される。したがって、第２の半導体装置のアドレスバス幅が、第１の半導体装置のアドレスバス幅よりも狭い任意の大きさであっても、第１の半導体装置内のシステム構成を変更することなく、最適のアドレス拡張を行うことができる
【発明の効果】
【００２４】
以上のように、本発明によると、外部ＣＰＵなどの外部半導体装置からのアドレスを拡張して内部資源へのアクセスを可能にする半導体装置について、特にシステム構成を変更することなく、当該外部半導体装置のアドレスバス幅の広狭に応じた最適のアドレス拡張を実現することができる。これにより、汎用性に優れ、コスト的にも優れた半導体装置を得ることができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００２６】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る半導体装置の構成を示す。本実施形態に係る半導体装置１０Ａは、外部半導体装置としての外部ＣＰＵ２０からアドレスバス３１を通じて与えられた原アドレスＡＤＲｏｒｇに拡張ビットを付加して拡張アドレスＡＤＲｅｘを生成し、外部ＣＰＵ２０が内部資源１１にアクセスすることを可能にするものである。半導体装置１０Ａは、拡張ビットを少なくとも一部に含むデータを保持する拡張レジスタ１２と、拡張ビットのビット長を保持するマスクレジスタ１３と、拡張アドレスＡＤＲｅｘを生成するアドレス拡張部１４Ａとを備えている。さらに詳細には、アドレス拡張部１４Ａは、拡張アドレスＡＤＲｅｘの上位ビットを選択するアドレスセレクタ部１４１Ａと、原アドレスＡＤＲｏｒｇの下位ビットＬＯＷＥＲｏｒｇにアドレスセレクタ部１４１Ａによって選択された上位ビットＵＰＰＥＲｓｅｌを付加して拡張アドレスＡＤＲｅｘを生成するアドレス生成部１４２とを備えている。
【００２７】
次に、外部ＣＰＵ２０が内部資源１１（アドレス0xAAAABBBB）にアクセスする場合を例に、半導体装置１０Ａによるアドレス拡張方法について、図２のタイミングチャートを参照しながら説明する。なお、下記の説明において、外部ＣＰＵ２０のアドレスバス幅およびデータバス幅はいずれも１６ビットとし、拡張アドレスＡＤＲｅｘのアドレス幅は３２ビットとする。
【００２８】
まず、外部ＣＰＵ２０から原アドレスＡＤＲｏｒｇ（16’h8000）が出力される。ここで、半導体装置１０Ａは、原アドレスＡＤＲｏｒｇの最上位ビットを制御信号ＣＴＬとして用い、残りの１５ビットでアドレス指定を行うように構成されている。したがって、この場合、制御信号ＣＴＬが“１”となる。
【００２９】
制御信号ＣＴＬが“１”となることによって、アドレスセレクタ部１４１Ａに、拡張レジスタ１２およびマスクレジスタ１３に共通のアドレス上位ビットＵＰＰＥＲｒｅｇ（28’h1111000）がオフセットされ、アドレスセレクタ部１４１Ａから、アドレス上位ビットＵＰＰＥＲｓｅｌ（28’h1111000）が出力される。そして、アドレス生成部１４２によって、原アドレスＡＤＲｏｒｇの下位ビットＬＯＷＥＲｏｒｇ（4’h0）にアドレス上位ビットＵＰＰＥＲｓｅｌ（28’h1111000）が付加され、拡張アドレスＡＤＲｅｘ（32’h11110000）が生成される。これにより、拡張レジスタ１２（アドレス0x11110000）に、データバス３２を通じて、データＤＴ（32’hAAAA8000）が設定される。
【００３０】
次に、外部ＣＰＵ２０から原アドレスＡＤＲｏｒｇ（16’h8004）が出力される。引き続き制御信号ＣＴＬが“１”であるため、アドレスセレクタ部１４１Ａからアドレス上位ビットＵＰＰＥＲｓｅｌ（28’h1111000）が出力される。そして、アドレス生成部１４２によって、原アドレスＡＤＲｏｒｇの下位ビットＬＯＷＥＲｏｒｇ（4’h4）に上位アドレスＵＰＰＥＲｓｅｌ（28’h1111000）が付加され、拡張アドレスＡＤＲｅｘ（32’h11110004）が生成される。これにより、マスクレジスタ１３（アドレス0x11110004）に、データバス３２を通じて、データＤＴ（32’hFFFF8000）が設定される。
【００３１】
この時点で、拡張レジスタ１２およびマスクレジスタ１３は、図３に示したようにデータを保持している。すなわち、拡張レジスタ１２については、上位１７ビット目までが有効データである。また、マスクレジスタ１３については、上位１７ビット目までが“１”に設定されている。これは、拡張レジスタ１２に保持されたデータのうち拡張ビットのビット長が１７ビットであることを表している。
【００３２】
次に、外部ＣＰＵ２０から原アドレスＡＤＲｏｒｇ（16’h3BBB）が出力される。これにより、制御信号ＣＴＬは“０”となる。制御信号ＣＴＬが“０”になることによって、アドレスセレクタ部１４１Ａによって、拡張ビットが選択される。具体的には、アドレスセレクタ部１４１Ａは、原アドレスＡＤＲｏｒｇの上位ビットＵＰＰＥＲｏｒｇ（15’h3BB）に、拡張レジスタ１２に保持されたデータのうち有効な上位１７ビットを付加して、上位アドレスＵＰＰＥＲｓｅｌ（28’AAAABBB）を生成する。この拡張レジスタ１２に保持されたデータの有効ビット長は、マスクレジスタ１３に保持されたビット長に基づいている。
【００３３】
その後、アドレス生成部１４２によって、原アドレスＡＤＲｏｒｇの下位ビットＬＯＷＥＲｏｒｇ（4’hB）に上位アドレスＵＰＰＥＲｓｅｌ（28’AAAABBB）が付加され、拡張アドレスＡＤＲｅｘ（32’AAAABBBB）が生成される。これにより、内部資源１１（アドレス0xAAAABBBB）に、データバス３２を通じて、データＤＴ（32’h11223344）が設定される。
【００３４】
上記説明は外部ＣＰＵ２０のアドレスバス幅が１６ビットの場合であるが、これが１０ビットや２０ビットのときでも、上記と同様にしてアドレス拡張を行うことができる。すなわち、拡張レジスタ１２およびマスクレジスタ１３に、外部ＣＰＵ２０のアドレスバス幅に応じた拡張ビットおよびそのビット長情報を設定することにより、上記と同様の方法でアドレス拡張を行うことができる。
【００３５】
以上、本実施形態によると、システム構成を変更することなく、さまざまなアドレスバス幅の外部ＣＰＵ２０に対応した最適のアドレス拡張を行うことができる。
【００３６】
なお、マスクレジスタ１２は特に省略してもよい。マスクレジスタ１２を省略した場合、内部資源１１へのアクセスに先立って外部ＣＰＵ２０のアドレスバスをプルアップすることで、外部ＣＰＵ２０の有効なアドレスバス幅を知ることができる。具体的には、拡張レジスタ１２の全ビットを、たとえば、“０”に設定しておき、外部ＣＰＵ２０のアドレスバスのプルアップ結果を拡張レジスタ１２に取り込み、他のレジスタに保持するようにする。これにより、上記と同様の方法でアドレス拡張を行うことができる。しかも、この場合、外部ＣＰＵ２０が自己の有効アドレスバス幅の情報を半導体装置１０Ａ内のマスクレジスタ１３に書き込むといった初期アクセスを省略することができるという利点がある。
【００３７】
また、本実施形態では、原アドレスＡＤＲｏｒｇの最上位ビットを制御信号ＣＴＬとして用いているが、原アドレスＡＤＲｏｒｇとは別個に制御信号ＣＴＬを出力するようにしてもよい。さらに、アドレスセレクタ部１４１Ａにおいて、制御信号ＣＴＬが“０”のとき、アドレス上位ビットＵＰＰＥＲｒｅｇを選択し、制御信号ＣＴＬが“１”のとき、拡張ビットに基づくアドレス上位ビットを選択するようにしてもよいことは言うまでもない。
【００３８】
（第２の実施形態）
図４は、本発明の第２の実施形態に係る半導体装置の構成を示す。本実施形態に係る半導体装置１０Ｂは、第１の実施形態に係る半導体装置１０Ａにおけるマスクレジスタ１３を省略し、ｎ個の拡張レジスタ１２―１，１２―２〜１２―ｎを備えた構成をしている。以下、半導体装置１０Ｂによるアドレス拡張方法について説明する。
【００３９】
まず、制御信号バス３３を通じて制御信号ＣＴＬが“１”に設定される。これにより、アドレスセレクタ部１４１Ｂに、拡張レジスタ１２―１〜１２―ｎのアドレス上位ビットＵＰＰＥＲｒｅｇ（24’haaaa00）がオフセットされ、アドレスセレクタ部１４１Ｂからアドレス上位ビットＵＰＰＥＲｓｅｌ（24’haaaa00）が出力される。そして、アドレス生成部１４２によって、８ビット幅の原アドレスＡＤＲｏｒｇ（8’h04, 8’h08, ・・・など）に、アドレス上位ビットＵＰＰＥＲｓｅｌが付加されて、拡張レジスタ１２―１〜１２―ｎのいずれか一つを指定する３２ビット幅の拡張アドレスＡＤＲｅｘ（0xaaaa0004，0xaaaa0008，・・・など）が生成される。すなわち、ここでは、原アドレスＡＤＲｏｒｇは、拡張レジスタの指定信号として用いられる。
【００４０】
拡張アドレスＡＤＲｅｘによって指定された拡張レジスタ１２―ｉ（ｉは１からｎまでの整数）には、データバス３２を通じて、２４ビット長の拡張ビットが設定される。拡張レジスタ１２―１〜１２―ｎに設定しておくべき拡張ビットは、半導体装置１０Ｂにおいて頻繁に指定される拡張アドレスＡＤＲｅｘの上位ビット（24’h111100, 24’h222200，・・・など）である。
【００４１】
次に、制御信号ＣＴＬが“０”となり、外部ＣＰＵ２０から制御信号バス３３を通じて、アドレスセレクタ部１４１Ｂにレジスタ切替信号ＲＧＳＷが与えられる。アドレスセレクタ部１４１Ｂは、レジスタ切替信号ＲＧＳＷに基づいて、拡張レジスタ１２―１〜１２―ｎのいずれか一つを選択し、当該選択した拡張レジスタ１２―ｉに保持された拡張ビットをアドレス上位ビットＵＰＰＥＲｓｅｌとして出力する。そして、アドレス生成部１４２によって、原アドレスＡＤＲｏｒｇ（8’h04）に、上位アドレスＵＰＰＥＲｓｅｌが付加されて、内部資源１１（アドレス0x11110004）を指定する３２ビット幅の拡張アドレスＡＤＲｅｘ（32’h11110004）が生成される。
【００４２】
上記説明は外部ＣＰＵ２０のアドレスバス幅が８ビットの場合であるが、これが１０ビットや２０ビットのときでも、上記と同様にしてアドレス拡張を行うことができる。すなわち、拡張レジスタ１２―１〜１２―ｎに、外部ＣＰＵ２０のアドレスバス幅に応じたビット長の拡張ビットを設定することにより、上記と同様の方法でアドレス拡張を行うことができる。
【００４３】
以上、本実施形態によると、複数の拡張レジスタ１２―１〜１２―ｎに、外部ＣＰＵ２０の有効アドレスバス幅に応じたビット長の拡張ビットをあらかじめ設定しておくことにより、外部ＣＰＵ２０は拡張アドレスＡＤＲｅｘの下位ビットのみを指定するだけ、半導体装置１０Ｂの内部資源１１にアクセスすることができる。これにより、システム構成を変更することなく、さまざまなアドレスバス幅の外部ＣＰＵ２０に対応した最適のアドレス拡張を行うことができる。また、外部ＣＰＵ２０から半導体装置１０Ｂの内部資源１１へのアクセスのたびに、拡張ビットを設定する必要がないため、アクセス時間を短縮することができる。
【００４４】
なお、半導体装置１０Ｂに、拡張レジスタ１２―１〜１２―ｎのそれぞれについて、アドレスセレクタ部１４１Ｂによって選択された回数をカウントするカウンタ１５を設けてもよい。そして、拡張ビットの新たに設定する場合に、当該カウント数が相対的に小さい拡張レジスタ１２―ｉを指定し、その拡張レジスタ１２―ｉに新たな拡張ビットを上書きするようにする。これにより、拡張レジスタ１２―１〜１２―ｎが保持する拡張ビットの中から、あまり頻繁に使用されないものを優先的に消去することができる。したがって、拡張レジスタ１２―１〜１２―ｎへの拡張ビット設定に係るアクセス回数を低減することができる。
【００４５】
（第３の実施形態）
図５は、本発明の第３の実施形態に係る半導体装置の構成を示す。本実施形態に係る半導体装置１０Ｃは、拡張アドレスＡＤＲｅｘの生成の基となるデータを保持する展開レジスタ１６と、外部ＣＰＵ２０´から拡張アドレスの差分データＡＤＲｄｉｆを受け、この差分データＡＤＲｄｉｆおよび展開レジスタ１６に保持されたデータから拡張アドレスＡＤＲｅｘを生成するアドレスデコーダ部１７と、アドレスレジスタ１８とを備えている。以下、半導体装置１０Ｃによるアドレス拡張方法について説明する。
【００４６】
まず、制御信号バス３３を通じて制御信号ＣＴＬが“０”に設定される。これにより、アドレスレジスタ１８が指定され、アドレスレジスタ１８に、最初のアクセスに係る内部資源１１のアドレスが設定される。そして、外部ＣＰＵ２０´から当該内部資源１１に対してアクセスが行われる。アドレスデコーダ部１７は、このときの拡張アドレスを所定の圧縮方法で処理して、展開レジスタ１６に記録しておく。
【００４７】
次に、制御信号ＣＴＬが“１”に設定される。これにより、アドレスデコーダ部１７は、外部ＣＰＵ２０´から与えられる差分データＡＤＲｄｉｆおよび展開レジスタ１６が保持するデータから、新たな拡張アドレスＡＤＲｅｘを生成する。そして、この新たな拡張アドレスＡＤＲｅｘによって、新たな内部資源１１が指定され、外部ＣＰＵ２０´は当該内部資源１１にアクセス可能となる。
【００４８】
以上、本実施形態によると、外部ＣＰＵ２０´から差分データＡＤＲｄｉｆを受けるだけで、半導体装置１０Ｃの内部資源１１にアクセスするための拡張アドレスＡＤＲｅｘを生成することができる。これにより、外部ＣＰＵ２０´のアドレスバス幅が、半導体装置１０Ｃのものよりも狭い任意の大きさであっても、システム構成を変更することなく、最適のアドレス拡張を行うことができる。
【図面の簡単な説明】
【００４９】
【図１】本発明の第１の実施形態に係る半導体装置の構成図である。
【図２】図１に示した半導体装置のタイミングチャートである。
【図３】拡張レジスタおよびマスクレジスタが保持するデータを示す図である。
【図４】本発明の第２の実施形態に係る半導体装置の構成図である。
【図５】本発明の第３の実施形態に係る半導体装置の構成図である。
【符号の説明】
【００５０】
１０Ａ，１０Ｂ，１０Ｃ  半導体装置（第１の半導体装置）
１１  内部資源
１２  拡張レジスタ（第１のレジスタ）
１２―１〜１２―ｎ（複数種類の拡張ビットをそれぞれ保持する複数のレジスタ）
１３  マスクレジスタ（第２のレジスタ）
１４Ａ，１４Ｂ，１４Ｃ  アドレス拡張部
１４１Ａ，１４１Ｂ  アドレスセレクタ部
１４２  アドレス生成部
１５  カウンタ
１６  展開レジスタ（拡張アドレス生成の基となるデータを保持するレジスタ）
１７  アドレスデコーダ部
２０，２０´  外部ＣＰＵ（外部半導体装置、第２の半導体装置）
ＡＤＲｏｒｇ  原アドレス
ＡＤＲｅｘ  拡張アドレス
ＣＴＬ  制御信号
ＲＧＳＷ  レジスタ切替信号
【図１】
2005038224.tif 000003
【図２】
2005038224.tif 000004
【図３】
2005038224.tif 000005
【図４】
2005038224.tif 000006
【図５】
2005038224.tif 000007