(57)【要約】【課題】複数のデバイス機能を持つ半導体デバイスを複数のデバイスとして外部からアクセスできるようにする。【解決手段】ｎビット（ｎは２以上の自然数）のアドレス値が割り当てられた複数のアドレスを有するレジスタ１００と、ｎビットのアドレス値のうちの上位ｍビット（ｍはｍ＜ｎの自然数）を無効ビットとするマスク値を格納するマスク指示レジスタＭＲＥＧと、外部から入力されたｎビットのアドレス値である第１のアドレス値ＡＤに対し、マスク値に基づき上位ｍビットをマスクした第２のアドレス値ＡＤＭを出力するアドレス制御部１２０とを含む半導体デバイス１。【選択図】図１
2009015413.tif 000002
【特許請求の範囲】
【請求項１】
ｎビット（ｎは２以上の自然数）のアドレス値が割り当てられた複数のアドレスを有するレジスタと、
前記ｎビットのアドレス値のうちの上位ｍビット（ｍはｍ＜ｎの自然数）を無効ビットとするマスク値を格納するマスク指示レジスタと、
外部から入力された前記ｎビットのアドレス値である第１のアドレス値に対し、前記マスク値に基づき前記上位ｍビットをマスクした第２のアドレス値を出力するアドレス制御部と、
を含む、
ことを特徴とする半導体デバイス。
【請求項２】
ｎビット（ｎは２以上の自然数）のアドレス値が割り当てられた複数のアドレスを有するレジスタを含む半導体デバイスのレジスタ空間制御方法であって、
前記ｎビットのアドレス値のうちの上位ｍビット（ｍはｍ＜ｎの自然数）を無効ビットとするマスク値を設定し、
外部から入力された前記ｎビットのアドレス値である第１のアドレス値に対し、前記マスク値に基づき前記上位ｍビットをマスクした第２のアドレス値を出力するアドレス制御工程を含む、
ことを特徴とする半導体デバイスのレジスタ空間制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデバイス機能を有する半導体デバイス及び半導体デバイスのレジスタ空間制御方法に関する。
【背景技術】
【０００２】
現在、１つのチップ内にＵＳＢ（Universal Serial Bus）＋ＩＤＥ（Integrated Drive Electronics）等のように複数のデバイス機能を持たせた半導体デバイスが開発されている。このような半導体デバイスにおいて、レジスタ空間のすべてがＭＭＵ（Memory Management Unit、メモリ管理ユニット）でメモリ管理を行える最小単位以下に収まっている場合、ＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）のようなＯＳ（Operating System）ではメモリ管理がなされており、同一アドレスにあるレジスタ領域を複数のドライバが確保しようとすると競合してしまうという問題があった。
【０００３】
この場合の実装方法として、ドライバ構成の枠組みを変更し、半導体デバイスのレジスタ空間を確保しない（ＯＳが提供しているメモリ管理を使用しない）という手段で実装が行われていた。例えば特許文献１には、質的に等価な複数のアドレス空間を保持可能なマイクロプロセッサについて記載されている。
【０００４】
【特許文献１】特開平５−１２７９８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の方法では、ドライバの枠組みを変更しなければならないという課題がある。また、１バイト内に複数の機能制御が割り当てられているような場合にも同様の課題があった。
【課題を解決するための手段】
【０００６】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【０００７】
［適用例１］
ｎビット（ｎは２以上の自然数）のアドレス値が割り当てられた複数のアドレスを有するレジスタと、前記ｎビットのアドレス値のうちの上位ｍビット（ｍはｍ＜ｎの自然数）を無効ビットとするマスク値を格納するマスク指示レジスタと、外部から入力された前記ｎビットのアドレス値である第１のアドレス値に対し、前記マスク値に基づき前記上位ｍビットをマスクした第２のアドレス値を出力するアドレス制御部と、を含む、ことを特徴とする半導体デバイス。
【０００８】
この構成によれば、複数のデバイス機能が共通のレジスタを使用する半導体デバイスにおいて、外部から異なるアドレス値で同一のレジスタアドレスを指定することができるので、個々のデバイス機能をサポートする仕組みを持たないＯＳのためにデバイスドライバの開発を行う場合にも、新たな枠組みを必要とせず、従来のドライバ開発と同様に開発を行うことができる。
【０００９】
［適用例２］
ｎビット（ｎは２以上の自然数）のアドレス値が割り当てられた複数のアドレスを有するレジスタを含む半導体デバイスのレジスタ空間制御方法であって、前記ｎビットのアドレス値のうちの上位ｍビット（ｍはｍ＜ｎの自然数）を無効ビットとするマスク値を設定し、外部から入力された前記ｎビットのアドレス値である第１のアドレス値に対し、前記マスク値に基づき前記上位ｍビットをマスクした第２のアドレス値を出力するアドレス制御工程を含む、ことを特徴とする半導体デバイスのレジスタ空間制御方法。
【００１０】
この構成によれば、複数のデバイス機能が共通のレジスタを使用する半導体デバイスにおいて、外部から異なるアドレス値で同一のレジスタアドレスを指定することができるので、個々のデバイス機能をサポートする仕組みを持たないＯＳのためにデバイスドライバの開発を行う場合にも、新たな枠組みを必要とせず、従来のドライバ開発と同様に開発を行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、半導体デバイスの実施形態について図面に従って説明する。
【００１２】
（第１実施形態）
＜半導体デバイスの構成＞
先ず、第１実施形態に係る半導体デバイスの構成について、図１を参照して説明する。図１は、第１実施形態に係る半導体デバイスの構成を示すブロック図である。図１に示すように、半導体デバイス１は、外部のＣＰＵ２００とのインターフェースであるＣＰＵインターフェース１１０と、アドレス制御部１２０と、複数のアドレスを有するレジスタ１００と、複数のデバイス機能としてＵＳＢコントローラ１３０とＩＤＥコントローラ１４０と、から構成されている。レジスタ１００には、マスク値を格納するマスク指示レジスタＭＲＥＧが含まれている。
【００１３】
本実施形態では、第１のアドレス値であるｎ＝２４ビットのアドレス値ＡＤ［０：２３］でレジスタ１００のアドレスを指示し、マスク指示レジスタＭＲＥＧ［０：２３］は、上位ｍ＝２ビットをマスクするマスク値＝０ｘ３ＦＦＦＦＦ（１６進数）が格納されている場合について説明する。マスク値＝０ｘ３ＦＦＦＦＦは、２進数では００１１−１１１１−１１１１−１１１１−１１１１−１１１１となり、０が設定されている上位２ビットがマスクされる。なお、ｎ及びｍは、この値に限定するものではない。
【００１４】
ＣＰＵ２００から出力されたアドレス値ＡＤ［０：２３］は、ＣＰＵインターフェース１１０を介してアドレス制御部１２０に入力される。アドレス制御部１２０は、マスク指示レジスタＭＲＥＧ［０：２３］の値に基づきアドレス値ＡＤ［０：２３］の上位２ビットをマスクした第２のアドレス値であるアドレス値ＡＤＭ［０：２３］を出力する。ＵＳＢコントローラ１３０とＩＤＥコントローラ１４０は、レジスタ１００を共通して使用する。従ってレジスタ１００の同じアドレスにＵＳＢコントローラ１３０とＩＤＥコントローラ１４０が使うレジスタ値が格納されている。
【００１５】
＜アドレス制御部の動作＞
次に、アドレス制御部の動作について図２を参照して説明する。図２は、アドレス制御部の動作を説明するフローチャートである。
【００１６】
先ず、ステップＳ１００では、アドレス制御部１２０にＣＰＵインターフェース１１０からアドレス値ＡＤ［０：２３］が入力される。
【００１７】
次に、ステップＳ１０２では、アドレス値ＡＤ［０：２３］とマスク指示レジスタＭＲＥＧ［０：２３］との論理積（ａｎｄ）を算出し、アドレス値ＡＤＭ［０：２３］に設定する。
【００１８】
次に、ステップＳ１０４では、アドレス制御部１２０は、アドレス値ＡＤＭ［０：２３］を出力して処理を終了する。
【００１９】
次に、アドレス制御部の動作例について図３を参照して説明する。図３は、アドレス制御部の動作例を示すブロック図である。
【００２０】
図３に示すように、ＵＳＢコントローラ１３０とＩＤＥコントローラ１４０がレジスタ１００のアドレス０ｘ００００２０のレジスタ値を共通に使用している場合を示す。マスク指示レジスタＭＲＥＧには、マスク値＝０ｘ３ＦＦＦＦＦが格納されている。ＣＰＵ２００は、ＵＳＢとして半導体デバイス１を使用する場合は、アドレス値ＡＤ１＝０ｘ４０００２０でレジスタ１００のアドレス０ｘ００００２０を指示し、ＩＤＥとして半導体デバイス１を使用する場合は、アドレス値ＡＤ２＝０ｘ８０００２０でレジスタ１００のアドレス０ｘ００００２０を指示することができる。すなわち、アドレス値ＡＤ１＝０ｘ４０００２０は、アドレス制御部１２０でマスク値＝０ｘ３ＦＦＦＦＦでマスクすると、ＡＤＭ１＝０ｘ００００２０となり、アドレス値ＡＤ２＝０ｘ８０００２０は、アドレス制御部１２０でマスク値＝０ｘ３ＦＦＦＦＦでマスクすると、ＡＤＭ２＝０ｘ００００２０となるからである。
【００２１】
以上に述べた本実施形態によれば、以下の効果が得られる。
【００２２】
本実施形態では、複数のデバイス機能が共通のレジスタを使用する半導体デバイスにおいて、外部から異なるアドレス値で同一のレジスタアドレスを指定することができるので、個々のデバイス機能をサポートする仕組みを持たないＯＳのためにデバイスドライバの開発を行う場合にも、新たな枠組みを必要とせず、従来のドライバ開発と同様に開発を行うことができる。
【００２３】
以上、半導体デバイスの実施形態を説明したが、こうした実施の形態に何ら限定されるものではなく、趣旨を逸脱しない範囲内において様々な形態で実施し得ることができる。以下、変形例を挙げて説明する。
【００２４】
（変形例１）半導体デバイスの変形例１について説明する。前記第１実施形態では、２つのデバイス機能ＵＳＢ，ＩＤＥを有する半導体デバイス１に対して、上位２ビットをマスクするように説明したが、上位１ビットをマスクすれば十分である。
【図面の簡単な説明】
【００２５】
【図１】第１実施形態に係る半導体デバイスの構成を示すブロック図。
【図２】アドレス制御部の動作を説明するフローチャート。
【図３】アドレス制御部の動作例を示すブロック図。
【符号の説明】
【００２６】
１…半導体デバイス、１００…レジスタ、１１０…ＣＰＵインターフェース、１２０…アドレス制御部、１３０…ＵＳＢコントローラ、１４０…ＩＤＥコントローラ、２００…ＣＰＵ。
【図１】
2009015413.tif 000003
【図２】
2009015413.tif 000004
【図３】
2009015413.tif 000005