(57)【要約】【課題】外部端子を設けることなく、バスに関する複数のモードで動作することが可能なインタフェース回路等を提供する。【解決手段】ＣＰＵインタフェース部２１は、複数のモードの内のいずれかのモードを示すためのバス関連モード信号を出力するモード設定レジスタ３３と、バス関連モード信号によって示されるモードで動作し、ＣＰＵバスＢ１上の制御信号に基づいて内部信号を出力するレジスタアクセス信号生成部３１と、所与のアドレスへのライトアクセスを受けた場合に、ＣＰＵバスＢ１上のデータ信号によって特定されるモードを示すバス関連モード信号の出力を行わせるためのバス関連モード設定書込信号をモード設定レジスタ３１に出力するアドレスデコーダ３２とを含む。【選択図】図４
2009026162.tif 000002
【特許請求の範囲】
【請求項１】
バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵとバスを介して接続可能なインタフェース回路が実行する制御方法であって、
前記複数のモードの内のいずれかのモードで起動し、前記複数の種類のＣＰＵの内の接続されているＣＰＵからの指示に基づいて前記複数のモードの内の該ＣＰＵが動作するモードに移行する、インタフェース回路の制御方法。
【請求項２】
バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵとバスを介して接続可能なインタフェース回路であって、
前記複数のモードの内のいずれかのモードを示すための第１群の内部信号を出力する第１の回路と、
前記複数のモードの内の前記第１群の内部信号によって示されるモードで動作し、前記バスから供給される第１群のバス信号に基づいて第２群の内部信号を出力する第２の回路と、
前記第２群の内部信号及び／又は前記バスから供給される第２群のバス信号が所与の条件を満たした場合に、前記複数のモードの内の前記バスから供給される第３群のバス信号によって特定されるモードを示す前記第１群の内部信号の出力を前記第１の回路に行わせるための第３の内部信号を前記第１の回路に出力する第３の回路と、
を含む、インタフェース回路。
【請求項３】
請求項２において、
前記複数のモードが、
ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード、前記バス上に出力されるデータの並び順に関する複数のモード若しくはＣＰＵが前記バス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせを含む、インタフェース回路。
【請求項４】
請求項２又は３において、
前記第１の回路が、
初期時において、前記複数のモードの内の所与のモードであって前記複数の種類のＣＰＵの内のいずれの種類のＣＰＵと接続された場合であっても前記第２の回路が前記第１群のバス信号に基づいて前記第２群の内部信号を出力することが可能な前記所与のモードを示す前記第１群の内部信号を前記第２の回路に出力する、インタフェース回路。
【請求項５】
請求項２乃至４のいずれかにおいて、
前記第１群のバス信号が供給される複数の端子を更に含み、
前記複数の種類のＣＰＵの内のいずれの種類のＣＰＵと接続された場合であっても前記第２の回路が前記第１群のバス信号に基づいて前記第２群の内部信号を出力することが可能となるように、前記第１群のバス信号が前記複数の端子にそれぞれ供給される、インタフェース回路。
【請求項６】
請求項２乃至５のいずれかにおいて、
前記第１の回路が、
前記第３の内部信号を前記第３の回路から受けたときに、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵが前記バス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせの内の１つのモードを特定する前記第３群のバス信号を取り込み、取り込んだ前記第３群のバス信号によって特定されるモードを示す前記第１群の内部信号を前記第２の回路に出力する、インタフェース回路。
【請求項７】
請求項２乃至６のいずれかにおいて、
前記第３の回路が、
前記第２群の内部信号及び／又は前記第２群のバス信号が所与の第２の条件を満たす場合にそのことを通知するための第４の内部信号を前記第１の回路に更に出力し、
前記第１の回路が、
前記第３の内部信号を前記第３の回路から受けたときに、前記バス上に出力されるデータの並び順に関する複数のモードの内の１つのモードを特定する前記第３群のバス信号を取り込み、前記第４の内部信号を前記第３の回路から受けたときに、前記バス上に出力されるデータの並び順に関する複数のモードの内の前記第３の内部信号を受けたときに取り込んだ前記第３群のバス信号によって特定される１つのモードを示す前記第１群の内部信号を前記第２の回路に出力する、インタフェース回路。
【請求項８】
請求項２乃至７のいずれかにおいて、
前記第１群の内部信号の値を変更することを禁止するための第５の内部信号を前記第１の回路に出力するための第４の回路を更に含み、
前記第３の回路が、
前記第２群の内部信号、前記第２群のバス信号及び／又は前記第３群のバス信号が所与の第３の条件を満たした場合に、前記第５の内部信号を出力することを前記第４の回路に行わせるための第６の内部信号を前記第４の回路に出力する、インタフェース回路。
【請求項９】
請求項８において、
前記第１の回路が、
前記第５の内部信号が前記第４の回路から供給されている場合には、前記第３及び／又は第４の内部信号が前記第２の回路から供給されても前記第１群の内部信号の値の変更を行わないことを特徴とする、インタフェース回路。
【請求項１０】
請求項２乃至９のいずれかにおいて、
前記第１群のバス信号が複数の制御信号であり、
前記第２群のバス信号が複数のアドレス信号であり、
前記第３群のバス信号が複数のデータ信号であり、
前記所与の条件が、前記第２群の内部信号及び／又は前記バスから供給される前記複数のアドレス信号が所与のアドレスへのライトアクセスを表すこと
を特徴とする、インタフェース回路。
【請求項１１】
請求項１０において、
データを書き込むための制御信号の種類及び／又はタイミングに関するモードが所与の第２のモードであり且つ前記バス上に出力可能な最大データ幅に関するモードが所与の第３のモードであるＣＰＵに接続された場合に、
前記複数の端子の内の第１の端子に、前記第１群のバス信号の内の前記バス上のデータの上位バイトを取り込むタイミングを表す信号が供給され、
前記複数の端子の内の第２の端子に、前記第１群のバス信号の内の前記バス上のデータの下位バイトを取り込むタイミングを表す信号が供給され、
データを書き込むための制御信号の種類及び／又はタイミングに関するモードが所与の第４のモードであり且つ前記バス上に出力可能な最大データ幅に関するモードが前記所与の第３のモードであるＣＰＵに接続された場合に、
前記第１の端子に、前記第１群のバス信号の内の前記バス上のデータの上位バイトが有効又は無効であることを表す信号が供給され、
前記第２の端子に、前記第１群のバス信号の内の前記バス上のデータを取り込むタイミングを表す信号が供給され、
前記複数の端子の内の第３の端子に、前記第１群のバス信号の内の前記バス上のデータの下位バイトが有効又は無効であることを表す信号が供給され、
前記バス上に出力可能な最大データ幅に関するモードが所与の第５のモードであるＣＰＵに接続された場合に、
前記第２の端子に、前記第１群のバス信号の内の前記バス上のデータを取り込むタイミングを表す信号が供給され、
前記第３の端子に、前記第２群のバス信号の内の最下位ビットが供給される、インタフェース回路。
【請求項１２】
請求項１０乃至１１のいずれかにおいて、
前記第３の回路が、
前記第２群の内部信号及び／又は前記複数のアドレス信号が前記所与のアドレスへのライトアクセスを表す場合に前記第３の内部信号を前記第１の回路に出力し、
前記第１の回路が、
前記第３の内部信号を前記第３の回路から受けたときに、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵが前記バス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせの内の１つのモードを特定する前記複数のデータ信号を取り込み、取り込んだ前記複数のデータ信号によって特定されるモードを示す前記第１群の内部信号を前記第２の回路に出力する、インタフェース回路。
【請求項１３】
請求項１０乃至１２のいずれかにおいて、
前記第３の回路が、
前記第２群の内部信号及び／又は前記複数のアドレス信号が前記所与のアドレスへのライトアクセスを表す場合に前記第３の内部信号を前記第１の回路に出力し、前記第２群の内部信号及び／又は前記複数のアドレス信号が前記所与のアドレスへのライトアクセスが終了したことを表すとき若しくは前記所与のアドレスへのライトアクセスが終了した後において前記第２群の内部信号及び／又は前記複数のアドレス信号が所与の第２のアドレスへのライトアクセスを表すときにそのことを通知するための前記第４の内部信号を前記第１の回路に出力し、
前記第１の回路が、
前記第３の内部信号を前記第３の回路から受けたときに、前記バス上に出力されるデータの並び順に関する複数のモードの内の１つのモードを特定する前記複数のデータ信号を取り込み、前記第４の内部信号を前記第３の回路から受けたときに、前記バス上に出力されるデータの並び順に関する複数のモードの内の前記第３の内部信号を受けたときに取り込んだ前記複数のデータ信号によって特定される１つのモードを示す前記第１群の内部信号を前記第２の回路に出力する、インタフェース回路。
【請求項１４】
請求項１０乃至１３のいずれかにおいて、
前記第３の回路が、
前記第２群の内部信号及び／又は前記複数のアドレス信号が所与の第３のアドレスへのリード又はライトアクセスを表す場合に前記第６の内部信号を前記第４の回路に出力する、インタフェース回路。
【請求項１５】
バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵの内の１つのＣＰＵと、
請求項２乃至１４のいずれかに記載のインタフェース回路を含む周辺回路と、
を含む、電子機器。
【請求項１６】
バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵの内の１つのＣＰＵと、請求項２乃至１４のいずれかに記載のインタフェース回路を含む周辺回路と、を含む電子機器において、前記ＣＰＵが実行する方法であって、
前記インタフェース回路内において前記所与の条件が満たされるような前記第１群及び第２群のバス信号並びに前記複数のモードの内の前記ＣＰＵが動作するモードを特定する前記第３群のバス信号を前記インタフェース回路に出力するステップを含む、インタフェース回路の制御方法。
【請求項１７】
請求項１６において、
前記ＣＰＵが、
前記インタフェース回路内において前記所与の条件が満たされるような前記第１群及び第２群のバス信号並びに前記複数のモードの内の前記ＣＰＵが動作するモードを特定する前記第３群のバス信号を前記インタフェース回路に出力するステップの後に、前記インタフェース回路内において前記所与の第２の条件が満たされるような前記第１群及び第２群のバス信号を前記インタフェース回路に出力するステップを更に含む、インタフェース回路の制御方法。
【請求項１８】
請求項１６又は１７のいずれかにおいて、
前記ＣＰＵが、
前記インタフェース回路内において前記所与の条件が満たされるような前記第１群及び第２群のバス信号並びに前記複数のモードの内の前記ＣＰＵが動作するモードを特定する前記第３群のバス信号を前記インタフェース回路に出力するステップの後、又は、前記インタフェース回路内において前記所与の第２の条件が満たされるような前記第１群及び第２群のバス信号を前記インタフェース回路に出力するステップの後に、前記インタフェース回路内において前記所与の第３の条件が満たされるような前記第１群及び第２群のバス信号を前記インタフェース回路に出力するステップを更に含む、インタフェース回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵと接続可能なインタフェース回路及びそのようなインタフェース回路の制御方法に関する。また、本発明は、そのようなインタフェース回路を含む電子機器に関する。さらに、本発明は、そのような電子機器においてＣＰＵが実行するインタフェース回路の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵを用いた電子機器において、ＣＰＵのほか、ペリフェラルＩＣ（周辺ＩＣ）が用いられる。メインＣＰＵとペリフェラルＩＣは、バスで接続される。そして、現在、バスに関し複数のモードでそれぞれ動作する複数の種類のＣＰＵが存在する。そのため、ペリフェラルＩＣには、様々なＣＰＵに接続可能とするため、バスに関する複数のモードで動作することが可能であることが望まれている。
【０００３】
バスに関する複数のモードで動作可能なペリフェラルＩＣに関する技術として、下記の非特許文献１には、バスに関するモードを設定するための外部端子を設け、この外部端子に印加される電位によって、バスに関するモードを設定する技術が掲載されている。
【０００４】
【非特許文献１】"μＰＤ７２０１２２  データ・シート"、［online］、［平成１９年６月６日検索］、インターネット＜URL： http://www.necel.com/nesdis/image/S16685JJ3V0DS00.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、バスに関するモードを設定するための外部端子を設けると、チップサイズやパッケージサイズの増大、ペリフェラルＩＣを実装する基板のサイズの増大を招くことになる。そして、そのようなチップサイズやパッケージサイズの増大、基板のサイズの増大は、コストアップを招くことになる。また、今日、電子機器の小型化が求められており、この点においても好ましいことではない。
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、外部端子を設けることなく、バスに関する複数のモードで動作することが可能なインタフェース回路、そのようなインタフェース回路の制御方法、そのようなインタフェース回路を含む電子機器及びそのような電子機器において実行されるインタフェース回路の制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵとバスを介して接続可能なインタフェース回路が実行する制御方法であって、複数のモードの内のいずれかのモードで起動し、複数の種類のＣＰＵの内の接続されているＣＰＵからの指示に基づいて複数のモードの内の該ＣＰＵが動作するモードに移行する、インタフェース回路の制御方法に関係する。
【０００８】
本発明によれば、モードを設定するための外部端子を設けることなく、種々のモードで動作することができるようになる。
【０００９】
また、本発明は、バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵとバスを介して接続可能なインタフェース回路であって、複数のモードの内のいずれかのモードを示すための第１群の内部信号を出力する第１の回路と、複数のモードの内の第１群の内部信号によって示されるモードで動作し、バスから供給される第１群のバス信号に基づいて第２群の内部信号を出力する第２の回路と、第２群の内部信号及び／又はバスから供給される第２群のバス信号が所与の条件を満たした場合に、複数のモードの内のバスから供給される第３群のバス信号によって特定されるモードを示す第１群の内部信号の出力を第１の回路に行わせるための第３の内部信号を第１の回路に出力する第３の回路と、を含む、インタフェース回路に関係する。
【００１０】
本発明によれば、モードを設定するための外部端子を設けることなく、種々のモードで動作することができるようになる。
【００１１】
また、本発明では、複数のモードが、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード、バス上に出力されるデータの並び順に関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせを含んでいても良い。
【００１２】
このようにすれば、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード、バス上に出力されるデータの並び順に関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせを含むモードで動作できるようになる。
【００１３】
また、本発明では、第１の回路が、初期時において、複数のモードの内の所与のモードであって複数の種類のＣＰＵの内のいずれの種類のＣＰＵと接続された場合であっても第２の回路が第１群のバス信号に基づいて第２群の内部信号を出力することが可能な所与のモードを示す第１群の内部信号を第２の回路に出力するようにしても良い。
【００１４】
このようにすれば、いずれのモードで動作するＣＰＵと接続された場合であっても、モードの変更ができるようになる。また、本発明の初期時のモードと同じモードで動作するＣＰＵに接続された場合には、モードの変更を不要にすることができるようになる。
【００１５】
また、本発明では、第１群のバス信号が供給される複数の端子を更に含み、複数の種類のＣＰＵの内のいずれの種類のＣＰＵと接続された場合であっても第２の回路が第１群のバス信号に基づいて第２群の内部信号を出力することが可能となるように、第１群のバス信号が複数の端子にそれぞれ供給されるようにしても良い。
【００１６】
このようにすれば、いずれのモードで動作するＣＰＵと接続された場合であっても、モードの変更が可能となる実装を容易に実現することができるようになる。
【００１７】
また、本発明では、第１の回路が、第３の内部信号を第３の回路から受けたときに、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせの内の１つのモードを特定する第３群のバス信号を取り込み、取り込んだ第３群のバス信号によって特定されるモードを示す第１群の内部信号を第２の回路に出力するようにしても良い。
【００１８】
このようにすれば、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせへの変更を可能となる実装を実現することができるようになる。
【００１９】
また、本発明では、第３の回路が、第２群の内部信号及び／又は第２群のバス信号が所与の第２の条件を満たす場合にそのことを通知するための第４の内部信号を第１の回路に更に出力し、第１の回路が、第３の内部信号を第３の回路から受けたときに、バス上に出力されるデータの並び順に関する複数のモードの内の１つのモードを特定する第３群のバス信号を取り込み、第４の内部信号を第３の回路から受けたときに、バス上に出力されるデータの並び順に関する複数のモードの内の第３の内部信号を受けたときに取り込んだ第３群のバス信号によって特定される１つのモードを示す第１群の内部信号を第２の回路に出力するようにしても良い。
【００２０】
このようにすれば、バス上に出力されるデータの並び順に関するモードを変更する場合に生じ得る誤動作を防止することができるようになる。
【００２１】
また、本発明では、第１群の内部信号の値を変更することを禁止するための第５の内部信号を第１の回路に出力するための第４の回路を更に含み、第３の回路が、第２群の内部信号、第２群のバス信号及び／又は第３群のバス信号が所与の第３の条件を満たした場合に、第５の内部信号を出力することを第４の回路に行わせるための第６の内部信号を第４の回路に出力するようにしても良い。
【００２２】
このようにすれば、モードの誤変更を防止することができるようになる。
【００２３】
また、本発明では、第１の回路が、第５の内部信号が第４の回路から供給されている場合には、第３及び／又は第４の内部信号が第２の回路から供給されても第１群の内部信号の値の変更を行わないようにしても良い。
【００２４】
このようにすれば、モードの誤変更を防止することができる実装を容易に実現することができるようになる。
【００２５】
また、本発明では、第１群のバス信号が複数の制御信号であり、第２群のバス信号が複数のアドレス信号であり、第３群のバス信号が複数のデータ信号であり、所与の条件が、第２群の内部信号及び／又はバスから供給される複数のアドレス信号が所与のアドレスへのライトアクセスを表すことであっても良い。
【００２６】
このようにすれば、モードの変更をライトアクセスで容易に実現できるようになる。
【００２７】
また、本発明では、データを書き込むための制御信号の種類及び／又はタイミングに関するモードが所与の第２のモードであり且つバス上に出力可能な最大データ幅に関するモードが所与の第３のモードであるＣＰＵに接続された場合に、複数の端子の内の第１の端子に、第１群のバス信号の内のバス上のデータの上位バイトを取り込むタイミングを表す信号が供給され、複数の端子の内の第２の端子に、第１群のバス信号の内のバス上のデータの下位バイトを取り込むタイミングを表す信号が供給され、データを書き込むための制御信号の種類及び／又はタイミングに関するモードが所与の第４のモードであり且つバス上に出力可能な最大データ幅に関するモードが所与の第３のモードであるＣＰＵに接続された場合に、第１の端子に、第１群のバス信号の内のバス上のデータの上位バイトが有効又は無効であることを表す信号が供給され、第２の端子に、第１群のバス信号の内のバス上のデータを取り込むタイミングを表す信号が供給され、複数の端子の内の第３の端子に、第１群のバス信号の内のバス上のデータの下位バイトが有効又は無効であることを表す信号が供給され、バス上に出力可能な最大データ幅に関するモードが所与の第５のモードであるＣＰＵに接続された場合に、第２の端子に、第１群のバス信号の内のバス上のデータを取り込むタイミングを表す信号が供給され、第３の端子に、第２群のバス信号の内の最下位ビットが供給されるようにしても良い。
【００２８】
このようにすれば、種々のモードで動作するＣＰＵと接続された場合であっても、モードの変更が可能となる実装を容易に実現することができるようになる。
【００２９】
また、本発明では、第３の回路が、第２群の内部信号及び／又は複数のアドレス信号が所与のアドレスへのライトアクセスを表す場合に第３の内部信号を第１の回路に出力し、第１の回路が、第３の内部信号を第３の回路から受けたときに、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせの内の１つのモードを特定する複数のデータ信号を取り込み、取り込んだ複数のデータ信号によって特定されるモードを示す第１群の内部信号を第２の回路に出力するようにしても良い。
【００３０】
このようにすれば、ＣＰＵがデータを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード若しくはＣＰＵがバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせの変更を可能にする実装を容易に実現することができるようになる。
【００３１】
また、本発明では、第３の回路が、第２群の内部信号及び／又は複数のアドレス信号が所与のアドレスへのライトアクセスを表す場合に第３の内部信号を第１の回路に出力し、第２群の内部信号及び／又は複数のアドレス信号が所与のアドレスへのライトアクセスが終了したことを表すとき若しくは所与のアドレスへのライトアクセスが終了した後において第２群の内部信号及び／又は複数のアドレス信号が所与の第２のアドレスへのライトアクセスを表すときにそのことを通知するための第４の内部信号を第１の回路に出力し、第１の回路が、第３の内部信号を第３の回路から受けたときに、バス上に出力されるデータの並び順に関する複数のモードの内の１つのモードを特定する複数のデータ信号を取り込み、第４の内部信号を第３の回路から受けたときに、バス上に出力されるデータの並び順に関する複数のモードの内の第３の内部信号を受けたときに取り込んだ複数のデータ信号によって特定される１つのモードを示す第１群の内部信号を第２の回路に出力するようにしても良い。
【００３２】
このようにすれば、バス上に出力されるデータの並び順に関するモードを変更する場合に生じ得る誤動作を防止することが可能な実装を容易に実現できるようになる。
【００３３】
また、本発明では、第３の回路が、第２群の内部信号及び／又は複数のアドレス信号が所与の第３のアドレスへのリード又はライトアクセスを表す場合に第６の内部信号を第４の回路に出力するようにしても良い。
【００３４】
このようにすれば、モードの誤変更の防止をリード又はライトアクセスで容易に実現することができるようになる。
【００３５】
また、本発明は、バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵの内の１つのＣＰＵと、本発明に係るインタフェース回路を含む周辺回路と、を含む、電子機器に関係する。
【００３６】
本発明によれば、モード変更のための端子を設けることなく、また端子に入力される信号をフィルタリングすることなく、バスに関する複数のモードで動作することができるようになる。
【００３７】
また、本発明は、バスに関する複数のモードでそれぞれ動作する複数の種類のＣＰＵの内の１つのＣＰＵと、本発明に係るインタフェース回路を含む周辺回路と、を含む電子機器において、ＣＰＵが実行する方法であって、インタフェース回路内において所与の条件が満たされるような第１群及び第２群のバス信号並びに複数のモードの内のＣＰＵが動作するモードを特定する第３群のバス信号をインタフェース回路に出力するステップを含む、インタフェース回路の制御方法に関係する。
【００３８】
本発明によれば、モード変更のための端子を設けることなく、バスに関する複数のモードの変更の制御をＣＰＵが行うことができるようになる。
【００３９】
また、本発明では、ＣＰＵが、インタフェース回路内において所与の条件が満たされるような第１群及び第２群のバス信号並びに複数のモードの内のＣＰＵが動作するモードを特定する第３群のバス信号をインタフェース回路に出力するステップの後に、インタフェース回路内において所与の第２の条件が満たされるような第１群及び第２群のバス信号をインタフェース回路に出力するステップを更に含むようにしても良い。
【００４０】
このようにすれば、バス上に出力されるデータの並び順に関するモードを変更する場合に生じ得る誤動作を防止する制御をＣＰＵが行うことができるようになる。
【００４１】
また、本発明では、ＣＰＵが、インタフェース回路内において所与の条件が満たされるような前記第１群及び第２群のバス信号並びに前記複数のモードの内の前記ＣＰＵが動作するモードを特定する前記第３群のバス信号を前記インタフェース回路に出力するステップの後、又は、前記インタフェース回路内において前記所与の第２の条件が満たされるような前記第１群及び第２群のバス信号を前記インタフェース回路に出力するステップの後に、前記インタフェース回路内において前記所与の第３の条件が満たされるような前記第１群及び第２群のバス信号を前記インタフェース回路に出力するステップを更に含むようにしても良い。
【００４２】
このようにすれば、モードの誤変更を防止する制御をＣＰＵが行うことができるようになる。
【発明を実施するための最良の形態】
【００４３】
以下、本発明の実施形態について詳細に説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００４４】
１．  バスに関するモード
バスに関するモード（以下、「バス関連モード」とも言う。）として多くのモードが存在するが、ここでは幾つかを例に挙げて説明する。
【００４５】
１．１  ＣＰＵのペリフェラルＩＣにデータを書き込むための制御信号に関するモード
１．１．１  ＢＥモード
ＢＥ（Byte Enable）モードは、ＣＰＵのペリフェラルＩＣにデータを書き込むための制御信号の種類及び／又はタイミングに関するモードの１つであり、１ワードが複数バイト（ここでは、２バイトとする。）を含む場合に、１ワードの中の複数のバイトが有効又は無効であることをそれぞれ表す複数のイネーブル信号（ここでは、ハイバイトイネーブル信号ＸＢＥＨ（接頭字「Ｘ」は、負論理を表す。）及びローバイトイネーブル信号ＸＢＥＬとする。）と、有効である１つ又は複数のバイトを取り込むタイミングを表すストローブ信号（ここでは、ライトストローブ信号ＸＷＲとする。）を使用するモードである。
【００４６】
図１は、ＢＥモードで動作するＣＰＵとペリフェラルＩＣとの間で送受されるＣＰＵバス上の制御信号のタイミングチャートである。
図１において、タイミングＴＭ１〜ＴＭ４は、ハイバイトライトバスサイクルであり、タイミングＴＭ５〜ＴＭ８は、ローバイトライトバスサイクルであり、タイミングＴＭ９〜ＴＭ１２は、ワードライトバスサイクルである。
【００４７】
まず、ハイバイトライトバスサイクルについて説明する。
タイミングＴＭ１において、ＣＰＵがチップセレクト信号ＸＣＳをアサートする（ローレベルにする）と、バスサイクルが開始される。このとき、ＣＰＵがローバイトイネーブル信号ＸＢＥＬをネゲートする（ハイレベルにする）ことで、このバスサイクルはハイバイトライトバスサイクルとなる。
【００４８】
次に、タイミングＴＭ２において、ＣＰＵがライトストローブ信号ＸＷＲをアサートしたときに、ペリフェラルＩＣがデータバス上の上位バイトを取り込む。
【００４９】
その後、タイミングＴＭ３において、ＣＰＵがライトストローブ信号ＸＷＲをネゲートし、さらに、タイミングＴＭ４において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ハイバイトライトバスサイクルが終了する。なお、タイミングＴＭ４において、ＣＰＵがローバイトイネーブル信号ＸＢＥＬをアサートしている。
【００５０】
次に、ローバイトライトバスサイクルについて説明する。
タイミングＴＭ５において、ＣＰＵがチップセレクト信号ＸＣＳをアサートすると、バスサイクルが開始される。このとき、ＣＰＵがハイバイトイネーブル信号ＸＢＥＨをネゲートすることで、このバスサイクルはローバイトライトバスサイクルとなる。
【００５１】
次に、タイミングＴＭ６において、ＣＰＵがライトストローブ信号ＸＷＲをアサートしたときに、ペリフェラルＩＣがデータバス上の下位バイトを取り込む。
【００５２】
その後、タイミングＴＭ７において、ＣＰＵがライトストローブ信号ＸＷＲをネゲートし、さらに、タイミングＴＭ８において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ローバイトライトバスサイクルが終了する。なお、タイミングＴＭ８において、ＣＰＵがハイバイトイネーブル信号ＸＢＥＨをアサートしている。
【００５３】
次に、ワードライトバスサイクルについて説明する。
タイミングＴＭ９において、ＣＰＵがチップセレクト信号ＸＣＳをアサートすると、バスサイクルが開始される。このとき、ＣＰＵがハイバイトイネーブル信号ＸＢＥＨ及びローバイトイネーブル信号ＸＢＥＬを共にアサートしているので、このバスサイクルはワードライトバスサイクルとなる。
【００５４】
次に、タイミングＴＭ１０において、ＣＰＵがライトストローブ信号ＸＷＲをアサートしたときに、ペリフェラルＩＣがデータバス上の上位及び下位バイト（ワード）を取り込む。
【００５５】
その後、タイミングＴＭ１１において、ＣＰＵがライトストローブ信号ＸＷＲをネゲートし、さらに、タイミングＴＭ１２において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ワードライトバスサイクルが終了する。
【００５６】
１．１．２  Ｓｔｒｏｂｅモード
Ｓｔｒｏｂｅ（ストローブ）モードは、ＣＰＵがペリフェラルＩＣにデータを書き込むための制御信号の種類及び／又はタイミングに関するモードの１つであり、先に説明したＢＥモードと排他的に用いられる。Ｓｔｒｏｂｅモードは、１ワードが複数バイト（ここでは、２バイトとする。）を含む場合に、１ワードの中の複数のバイトのデータを取り込むタイミングをそれぞれ表す複数のストローブ信号（ここでは、ハイバイトライトストローブ信号ＸＷＲＨ及びローバイトライトストローブ信号ＸＷＲＬとする。）を使用するモードであり、１ワードの中の複数のバイトの有効又は無効をそれぞれ表す複数のイネーブル信号を使用しない。
【００５７】
図２は、Ｓｔｒｏｂｅモードで動作するＣＰＵとペリフェラルＩＣとの間で送受されるＣＰＵバス上の制御信号のタイミングチャートである。
図２において、タイミングＴＭ２１〜ＴＭ２４は、ハイバイトライトバスサイクルであり、タイミングＴＭ２５〜ＴＭ２８は、ローバイトライトバスサイクルであり、タイミングＴＭ２９〜ＴＭ３２は、ワードライトバスサイクルである。
【００５８】
まず、ハイバイトライトバスサイクルについて説明する。
タイミングＴＭ２１において、ＣＰＵがチップセレクト信号ＸＣＳをアサートすると、バスサイクルが開始される。
【００５９】
次に、タイミングＴＭ２２において、ＣＰＵがハイバイトライトストローブ信号ＸＷＲＨをアサートしたときに、ペリフェラルＩＣがデータバス上の上位バイトを取り込む。
【００６０】
その後、タイミングＴＭ２３において、ＣＰＵがハイバイトライトストローブ信号ＸＷＲＨをネゲートし、さらに、タイミングＴＭ２４において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ハイバイトライトバスサイクルが終了する。
【００６１】
次に、ローバイトライトバスサイクルについて説明する。
タイミングＴＭ２５において、ＣＰＵがチップセレクト信号ＸＣＳをアサートすると、バスサイクルが開始される。
【００６２】
次に、タイミングＴＭ２６において、ＣＰＵがローバイトライトストローブ信号ＸＷＲＬをアサートしたときに、ペリフェラルＩＣがデータバス上の下位バイトを取り込む。
【００６３】
その後、タイミングＴＭ２７において、ＣＰＵがローバイトライトストローブ信号ＸＷＲＬをネゲートし、さらに、タイミングＴＭ２８において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ローバイトライトバスサイクルが終了する。
【００６４】
次に、ワードライトバスサイクルについて説明する。
タイミングＴＭ２９において、ＣＰＵがチップセレクト信号ＸＣＳをアサートすると、バスサイクルが開始される。
【００６５】
次に、タイミングＴＭ３０において、ＣＰＵがハイバイトライトストローブ信号ＸＷＲＨ及びローバイトライトストローブ信号ＸＷＲＬをアサートしたときに、ペリフェラルＩＣがデータバス上の上位及び下位バイトを取り込む。
【００６６】
その後、タイミングＴＭ３１において、ＣＰＵがハイバイトライトストローブ信号ＸＷＲＨ及びローバイトライトストローブ信号ＸＷＲＬをネゲートし、さらに、タイミングＴＭ３２において、ＣＰＵがチップセレクト信号ＸＣＳをネゲートすると、ワードライトバスサイクルが終了する。
【００６７】
１．２  データの並び順に関するモード
次に、バス上に出力されるデータの並び順に関するモードについて説明する。
そのようなモードとして、Ｂｉｇ  Ｅｎｄｉａｎ（ビッグエンディアン）とＬｉｔｔｌｅ  Ｅｎｄｉａｎ（リトルエンディアン）が広く用いられている。
【００６８】
図３は、ビッグエンディアンで動作するＣＰＵとペリフェラルＩＣとの間で送受されるＣＰＵバス上のデータの例及びリトルエンディアンで動作するＣＰＵとペリフェラルＩＣとの間で送受されるＣＰＵバス上のデータの例を示す図である。
【００６９】
例えば、ビッグエンディアンで動作するＣＰＵとペリフェラルＩＣとの間で"０ｘ１２３４"という１６ビットデータが送受される場合、図３に示すように、ＣＰＵバスのデータバス上のデータＣＤ［１５：８］、すなわち上位バイトが"０ｘ１２（０ｂ０００１００１０）"となり、データＣＤ［７：０］、すなわち下位バイトが"０ｘ３４（０ｂ００１１０１００）"となる。
【００７０】
一方、リトルエンディアンで動作するＣＰＵとペリフェラルＩＣとの間で同じ"０ｘ１２３４"という１６ビットデータが送受される場合、図３に示すように、データ信号ＣＤ［１５：８］、すなわち上位バイトが"０ｘ３４（０ｂ００１１０１００）"となり、データ信号ＣＤ［７：０］、すなわち下位バイトが"０ｘ１２（０ｂ０００１００１０）"となる。
【００７１】
このように、ビッグエンディアンで動作するＣＰＵとリトルエンディアンで動作するＣＰＵとでは、ＣＰＵバス上に出力されるデータの上位バイトの位置と下位バイトの位置とが逆になる。
【００７２】
１．３  最大データ幅に関するモード
次に、ＣＰＵがバス上に出力可能な最大データ幅に関するモードについて説明する。
現在、携帯可能な小型電子機器等のＣＰＵとして、８個のデータ端子を有しバス上に出力可能な最大データ幅が８ビットであるもの（以下、「８ビットモードＣＰＵ」という。）、１６個のデータ端子を有しバス上に出力可能な最大データ幅が１６ビットであるもの（以下、「１６ビットモードＣＰＵ」という。）が広く用いられている。なお、８ビットモードＣＰＵであっても内部レジスタ等が１６ビットのＣＰＵもあり、１６ビットモードＣＰＵであっても内部レジスタ等が３２ビットのＣＰＵもある。
【００７３】
ペリフェラルＩＣが８ビットモードＣＰＵ及び１６ビットモードＣＰＵの両方に接続可能であるためには、ペリフェラルＩＣは１６個のデータ端子を有する必要がある。
【００７４】
そして、１６個のデータ端子を有するペリフェラルＩＣが８ビットモードＣＰＵに接続されて動作するモード（以下、「８ビットモード」という。）の場合、ＣＰＵの８個のデータ端子（ＣＤ［７：０］）とペリフェラルＩＣの１６個のデータ端子（ＣＤ［１５：０］）の内の下位８個のデータ端子（ＣＤ［７：０］）とが、ＣＰＵバスを介して接続される。
【００７５】
一方、１６個のデータ端子を有するペリフェラルＩＣが１６ビットモードＣＰＵに接続されて動作するモード（以下、「１６ビットモード」という。）の場合、ＣＰＵの１６個のデータ端子（ＣＤ［１５：０］）とペリフェラルＩＣの１６個のデータ端子（ＣＤ［１５：０］）とが、ＣＰＵバスを介して接続される。
【００７６】
１．４  モードの組み合わせ
上記した、ＣＰＵがペリフェラルＩＣにデータを書き込むための制御信号に関するモード、バス上に出力されるデータの並び順に関するモード及びＣＰＵがバス上に出力可能な最大データ幅に関するモードは、組み合わせることができる。例えば、ＢＥモード且つＢｉｇ  Ｅｎｄｉａｎ且つ１６ビットモード、Ｓｔｒｏｂｅモード且つＬｉｔｔｌｅ  Ｅｎｄｉａｎ且つ１６ビットモードなどの種々の組み合わせが可能である。
【００７７】
２．  構成
図４に、複数のバス関連モードでそれぞれ動作する複数のＣＰＵと接続可能なインタフェース回路を含むコントローラ１３及びこれを含む電子機器１の構成例を示す。
【００７８】
電子機器１は、メインＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２及びコントローラ１３を含む。メインＣＰＵ１１、ＲＡＭ１２及びコントローラ１３は、ＣＰＵバスＢ１を介して相互に接続されている。ＣＰＵバスＢ１は、制御バス、アドレスバス及びデータバスを含む。
【００７９】
コントローラ１３（広義には、周辺回路）は、ＣＰＵインタフェース部（広義には、インタフェース回路）２１と、ＵＳＢ（Universal Serial Bus）インタフェース部２２と、ＦＩＦＯ部２３と、ＤＭＡ処理部２４と、を含む。ＣＰＵインタフェース部２１、ＵＳＢインタフェース部２２、ＦＩＦＯ部２３及びＤＭＡ処理部２４は、内部バスＢ２を介して相互に接続されている。
【００８０】
なお、コントローラ１３、電子機器１は図４の構成に限定されず、その構成要素の一部を省略したり、構成要素間の接続形態を変更したり、図４とは異なる構成要素を追加する変形実施が可能である。例えば、コントローラ１３において、ＵＳＢインタフェース部２２やＦＩＦＯ部２３やＤＭＡ処理部２４等の構成を省いたり、ＵＳＢインタフェース部２２に代えてＩＥＥＥ１３９４インタフェース部やＡＴＡ（AT Attachment）インタフェース部等を含む変形実施も可能である。また電子機器１において、図４に示されるもの以外の構成要素（例えば操作部、表示部、ＲＯＭ、撮像部、又は、電源等）を追加してもよい。
【００８１】
また、本実施形態の電子機器１としては、ビデオカメラ、デジタルカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、光ディスクドライブ装置、ハードディスクドライブ装置、オーディオ機器、携帯電話機、携帯型ゲーム機、電子手帳、電子辞書又は携帯型情報端末等の種々のものが考えられる。
【００８２】
また、コントローラ１３を半導体集積回路としても良いし、コントローラ１３、メインＣＰＵ１１及び／又はＲＡＭ１２を半導体集積回路としても良い。
【００８３】
メインＣＰＵ１１は、電子機器１の全体的な処理、制御を行う。例えば、電子機器１がビデオカメラである場合には、メインＣＰＵ１は、カメラプロセッサとして機能し、撮像デバイスの制御や画像のエフェクト処理や画像の圧縮処理などを行う。
ＲＡＭ１２は、種々のデータやプログラムを記憶する。
【００８４】
コントローラ１３のＣＰＵインタフェース部２１は、複数のバス関連モード（ここでは、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモード、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモード若しくはメインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモード又はこれらの組み合わせを含む）の内のいずれかで動作し、ＣＰＵバスＢ１を介してメインＣＰＵ１１及びＲＡＭ１２との間でデータ等の送受信等を行うためのバスインターフェース回路である。なお、ＣＰＵインタフェース部２１については、後で詳細に説明する。
【００８５】
コントローラ１３のＵＳＢインタフェース部２２は、ＵＳＢを介してデータ転送（高速シリアル転送）を行うためのインターフェースである。具体的には、ＵＳＢインタフェース部２２は、ＵＳＢ（シリアルバス）を介してデータの受信や送信を行う物理層回路を含み、ＵＳＢ機器２との間のデータ転送を行う。ＵＳＢインタフェース部２２は、メインＣＰＵ１１のアドレス空間（メモリ空間、Ｉ／Ｏ空間等）にマッピングされメインＣＰＵ１１からリード及び／又はライトアクセス可能なレジスタ２２ａを含んでおり、メインＣＰＵ１１がレジスタ２２ａにコマンド及び／又はデータを書き込み、ＵＳＢインタフェース部２２は、レジスタ２２ａ書き込まれたコマンド及び／又はデータに基づいて、ＵＳＢ機器２との間のデータ転送を行う。なお、レジスタ２２ａは、１つであっても良いし複数であっても良い。
【００８６】
なお、ＵＳＢインタフェース部２２がホスト機能を有する場合には、ＵＳＢにＵＳＢデバイスを接続し、そのＵＳＢデバイスとの間でデータ転送を行うようにしてもよい。
【００８７】
コントローラ１３のＦＩＦＯ部２３は、ＲＡＭとロジック回路（制御回路）を含み、ＵＳＢ機器２に送信されるデータや、ＵＳＢ機器２から受信されたデータを一時記憶する。ＦＩＦＯ部２３は、メインＣＰＵ１１のアドレス空間にマッピングされメインＣＰＵ１１からリード及び／又はライトアクセス可能なレジスタ２３ａを含んでおり、メインＣＰＵ１１がレジスタ２３ａにコマンド及び／又はデータを書き込み、ＦＩＦＯ部２３は、レジスタ２３ａに書き込まれたコマンド及び／又はデータに基づいて、ＦＩＦＯ処理を行う。なお、レジスタ２３ａは、１つであっても良いし複数であっても良い。
【００８８】
コントローラ１３のＤＭＡ処理部２４は、内部バスＢ２のほか、ＣＰＵバスＢ１にも接続されており、ＵＳＢ機器２に送信されるデータをＲＡＭ１２からＦＩＦＯ部２３にＤＭＡ転送し及び／又はＵＳＢ機器２から受信されたデータをＦＩＦＯ部２３からＲＡＭ１２にＤＭＡ転送する。ＤＭＡ処理部２４は、メインＣＰＵ１１のアドレス空間にマッピングされメインＣＰＵ１１からリード及び／又はライトアクセス可能なレジスタ２４ａを含んでおり、メインＣＰＵ１１がレジスタ２４ａにコマンド及び／又はデータを書き込み、ＤＭＡ処理部２４は、書き込まれたコマンド及び／又はデータに基づいて、ＦＩＦＯ部２３とＲＡＭ１２との間のＤＭＡ転送を行う。なお、レジスタ２４ａは、１つであっても良いし複数であっても良い。
【００８９】
ＣＰＵインタフェース部２１は、レジスタアクセス信号生成部３１と、アドレスデコーダ３２と、モード設定レジスタ３３と、モードプロテクトレジスタ３４とを含む。モード設定レジスタ３３及びモードプロテクトレジスタ３４は、メインＣＰＵ１１のアドレス空間にそれぞれマッピングされている。
【００９０】
モード設定レジスタ３３（広義には、第１の回路）は、複数のバス関連モードの内の１つを示すバス関連モード信号（広義には、第１群の内部信号）をレジスタアクセス信号生成部３１に出力する。レジスタアクセス信号生成部３１（広義には、第２の回路）は、複数のバス関連モードの内のバス関連モード信号によって示されるバス関連モードで動作し、ＣＰＵバスＢ１との間の信号の送受を行う。モード設定レジスタ３３は、初期時（パワーオン時、リセット時等）において、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎであることを示すバス関連モード信号を出力する。従って、レジスタアクセス信号生成部３１は、初期時において、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎであるものとして動作する。バス関連モード信号は、後で説明するように、メインＣＰＵ１１がモード設定レジスタ３３にアクセスすることで、変更可能である。
【００９１】
モードプロテクトレジスタ３４（広義には、第４の回路）は、後で説明するように、メインＣＰＵ１１からアクセスされると、バス関連モード信号の変更を禁止するためのモードプロテクト信号（広義には、第５の内部信号）をモード設定レジスタ３３に出力する。
【００９２】
図５にＣＰＵインタフェース部２１の構成例を示す。
レジスタアクセス信号生成部３１（広義には、第２の回路）には、メインＣＰＵ１１のアクセス対象がコントローラ１３であることを表すチップセレクト信号ＸＣＳ（接頭字「Ｘ」は負論理を表す。）、メインＣＰＵ１１からコントローラ１３へのリードアクセスであることを表すリード信号ＸＲＤ、下位バイトの取り込みタイミングを表すローバイトライトストローブ信号ＸＷＲＬ及び上位バイトの取り込みタイミングを表すハイバイトライトストローブ信号ＸＷＲＨ（広義には、第１群のバス信号）が、ＣＰＵバスＢ１の制御バスからそれぞれ入力される。なお、ＣＰＵインタフェース部２１がＢＥモードで動作する場合には、ローバイトライトストローブ信号ＸＷＲＬに代えて上位及び／又は下位バイトの取り込みタイミングを表すライトストローブ信号ＸＷＲ（広義には、第１群のバス信号）が、ハイバイトライトストローブ信号ＸＷＲＨに代えて上位バイトが有効又は無効であることを表すハイバイトイネーブル信号ＸＢＥＨ（広義には、第１群のバス信号）が、ＣＰＵバスＢ１の制御バスからそれぞれ入力される。また、ＣＰＵインタフェース部２１がＢＥモードで動作する場合には、下位バイトが有効又は無効であることを表すローバイトイネーブル信号ＸＢＥＬ（広義には、第１群のバス信号）がＣＰＵバスＢ１の制御バスから更に入力される。
【００９３】
コントローラ１３は複数の制御信号入力端子を有し、複数の制御信号入力端子は３つの端子Ｐ０〜Ｐ２を含む。図６にメインＣＰＵ１１のモードの種類と端子Ｐ０〜Ｐ２の好適なピンアサインとの関係の一例を示す。
【００９４】
メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモードであり且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモードである場合には、コントローラ１３の端子Ｐ０には、ハイバイトライトストローブ信号ＸＷＲＨが入力され、端子Ｐ１には、ローバイトライトストローブ信号ＸＷＲＬが入力されると好適である。
【００９５】
メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモードであり且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモードである場合には、コントローラ１３の端子Ｐ０には、ハイバイトイネーブル信号ＸＢＥＨが入力され、端子Ｐ１には、ライトストローブ信号ＸＷＲが入力され、端子Ｐ２には、ローバイトイネーブル信号ＸＢＥＬが入力されると好適である。
【００９６】
メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが８ビットモードである場合には、コントローラ１３の端子Ｐ１には、ライトストローブ信号ＸＷＲが入力され、端子Ｐ２には、ＣＰＵバスＢ１のアドレスバス上のアドレス信号（広義には、第２群のバス信号）のＬＳＢ（Least Significant Bit）であるＣＡ［０］が入力されると好適である。
【００９７】
なお、その他の制御信号入力端子については、種々のピンアサインが実現可能であり、説明を省略する。
【００９８】
再び図５を参照すると、レジスタアクセス信号生成部３１には、バス関連モード信号がモード設定レジスタ３３から入力される。ここでは、バス関連モード信号は、データ書込制御モード信号、８／１６ビット信号及びスワップ信号を含む。
【００９９】
データ書込制御モード信号は、Ｌレベルの場合にメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモードであることを示し、Ｈレベルの場合にメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモードであることを示す信号である。
【０１００】
８／１６ビット信号は、Ｌレベルの場合にメインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモードであることを示し、Ｈレベルの場合にメインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが８ビットモードであることを示す信号である。
【０１０１】
スワップ信号は、Ｌレベルの場合にＣＰＵバスＢ１のデータバス上に出力されるデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎであることを示し、Ｈレベルの場合にＣＰＵバスＢ１のデータバス上に出力されるデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎであることを示す信号である。
【０１０２】
先に説明したように、モード設定レジスタ３３は、初期時において、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード、メインＣＰＵ１１がＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎであることを示すバス関連モード信号を出力する。すなわち、初期時において、データ書込制御モード信号、８／１６ビット信号及びスワップ信号は、それぞれＬレベルである。
【０１０３】
レジスタアクセス信号生成部３１は、上記のような入力信号に基づいて、上位バイトライトアクセス信号、上位バイトライトアクセス非同期信号、下位バイトライトアクセス信号、下位バイトライトアクセス非同期信号及びリードアクセス信号（広義には、第２群の内部制御信号）を生成してアドレスデコーダ３２に出力する。なお、上位バイトライトアクセス信号及び下位バイトライトアクセス信号は、通常動作時（レジスタ２２ａ、２３ａ、２４ａへのリード及び／又はライトアクセス時）に用いられる。また、上位バイトライトアクセス非同期信号及び下位バイトライトアクセス非同期信号は、レジスタ２２ａ、２３ａ、２４ａへの非同期アクセスに用いられるほか、バス関連モードの変更動作時及びバス関連モードの変更禁止動作時（モード設定レジスタ３３及びモードプロテクトレジスタ３４へのアクセス時）にも用いられる。
【０１０４】
図７にレジスタアクセス信号生成部３１の構成例を示す。図７に示すように、レジスタアクセス信号生成部３１は、セレクタ３１ａ〜３１ｄと、ＡＮＤゲート回路３１ｅ〜３１ｉと、遅延（ディレイ）素子３１ｊ〜３１ｍとを含む。
【０１０５】
セレクタ３１ａは、ローバイトライトストローブ信号ＸＷＲＬ又はライトストローブ信号ＸＷＲ（図６に示す端子Ｐ１のピンアサイン参照）、ハイバイトライトストローブ信号ＸＷＲＨ又はハイバイトイネーブル信号ＸＢＥＨ（図６に示す端子Ｐ０のピンアサイン参照）、ローバイトイネーブル信号ＸＢＥＬ又はアドレス信号のＬＳＢであるアドレス信号ＣＡ［０］（図６に示す端子Ｐ２のピンアサイン参照）、データ書込制御モード信号、並びに、８／１６ビット信号に基づいて上位バイトストローブ前信号を生成し、セレクタ３１ｃ、３１ｄに出力する。
【０１０６】
図８（ａ）にセレクタ３１ａの入力信号と出力信号の関係を示す。図８（ａ）に示すように、セレクタ３１ａは、データ書込制御モード信号がＬレベル（Ｓｔｒｏｂｅモードを示す。）且つ８／１６ビット信号がＬレベル（１６ビットモードを示す。）の場合には、ハイバイトライトストローブ信号ＸＷＲＨを上位バイトストローブ前信号として選択出力する。また、セレクタ３１ａは、データ書込制御モード信号がＬレベル（Ｓｔｒｏｂｅモードを示す。）且つ８／１６ビット信号がＨレベルの場合（８ビットモードを示す。）には、ローバイトライトストローブ信号ＸＷＲＬとローバイトイネーブル信号ＸＢＥＬとの論理和を上位バイトストローブ前信号として出力する。さらに、セレクタ３１ａは、データ書込制御モード信号がＨレベルの場合（ＢＥモードを示す。）には、８／１６ビット信号の値にかかわらず、ライトストローブ信号ＸＷＲ又はローバイトライトストローブ信号ＸＷＲＬとハイバイトイネーブル信号ＸＢＥＨ又はハイバイトライトストローブ信号ＸＷＲＨとの論理和を上位バイトストローブ前信号として出力する。
【０１０７】
再び図７を参照すると、セレクタ３１ｂは、ローバイトライトストローブ信号ＸＷＲＬ又はライトストローブ信号ＸＷＲ、ハイバイトライトストローブ信号ＸＷＲＨ又はハイバイトイネーブル信号ＸＢＥＨ、ローバイトイネーブル信号ＸＢＥＬ又はアドレス信号のＬＳＢであるＣＡ［０］、データ書込制御モード信号、並びに、８／１６ビット信号に基づいて下位バイトストローブ前信号を生成し、セレクタ３１ｃ、３１ｄに出力する。
【０１０８】
図８（ｂ）にセレクタ３１ｂの入力信号と出力信号の関係を示す。図８（ｂ）に示すように、セレクタ３１ｂは、データ書込制御モード信号がＬレベル（Ｓｔｒｏｂｅモードを示す。）且つ８／１６ビット信号がＬレベルの場合（１６ビットモードを示す。）には、ローバイトライトストローブ信号ＸＷＲＬ又はライトストローブ信号ＸＷＲを下位バイトストローブ前信号として選択出力する。また、セレクタ３１ｂは、データ書込制御モード信号がＬレベル（Ｓｔｒｏｂｅモードを示す。）且つ８／１６ビット信号がＨレベルの場合（８ビットモードを示す。）には、ローバイトライトストローブ信号ＸＷＲＬ又はストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬの反転又はアドレス信号ＣＡ［０］の反転との論理和を下位バイトストローブ前信号として出力する。さらに、セレクタ３１ｂは、データ書込制御モード信号がＨレベルの場合（ＢＥモードを示す。）には、８／１６ビット信号の値にかかわらず、ローバイトライトストローブ信号ＸＷＲＬ又はライトストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬ又はアドレス信号ＣＡ［０］との論理和を下位バイトストローブ前信号として出力する。
【０１０９】
再び図７を参照すると、セレクタ３１ｃは、スワップ信号がＬレベルの場合（Ｂｉｇ  Ｅｎｄｉａｎを示す。）には、上位バイトストローブ前信号を反転して上位バイトストローブ信号として出力する。また、セレクタ３１ｃは、スワップ信号がＨレベルの場合（Ｌｉｔｔｌｅ  Ｅｎｄｉａｎを示す。）には、下位バイトストローブ前信号を反転して上位バイトストローブ信号として出力する。
【０１１０】
セレクタ３１ｄは、スワップ信号がＬレベルの場合（Ｂｉｇ  Ｅｎｄｉａｎを示す。）には、下位バイトストローブ前信号を反転して下位バイトストローブ信号として出力する。また、セレクタ３１ｄは、スワップ信号がＨレベルの場合（Ｌｉｔｔｌｅ  Ｅｎｄｉａｎを示す。）には、上位バイトストローブ前信号を反転して下位バイトストローブ信号として出力する。
【０１１１】
ＡＮＤゲート回路３１ｅは、上位バイトストローブ信号とチップセレクト信号ＸＣＳの反転との論理積を上位バイトライトアクセス信号として出力する。
遅延素子３１ｊは、上位バイトライトアクセス信号を遅延させて出力し、遅延素子３１ｋは、遅延素子３１ｊの出力信号を遅延させて出力する。
【０１１２】
ＡＮＤゲート回路３１ｈは、遅延素子３１ｊの出力信号と遅延素子３１ｋの出力信号の反転との論理積を上位バイトライトアクセス非同期信号として出力する。すなわち、上位バイトライトアクセス非同期信号は、上位バイトライトアクセス信号より遅延素子３１ｊの遅延時間だけ遅延し且つ遅延素子３１ｋの遅延時間だけアクティブなパルス信号となる。
【０１１３】
ＡＮＤゲート回路３１ｆは、下位バイトストローブ信号とチップセレクト信号ＸＣＳの反転との論理積を下位バイトライトアクセス信号として出力する。
遅延素子３１ｌは、下位バイトライトアクセス信号を遅延させて出力し、遅延素子３１ｍは、遅延素子３１ｌの出力信号を遅延させて出力する。
【０１１４】
ＡＮＤゲート回路３１ｉは、遅延素子３１ｌの出力信号と遅延素子３１ｍの出力信号の反転との論理積を下位バイトライトアクセス非同期信号として出力する。すなわち、下位バイトライトアクセス非同期信号は、下位バイトライトアクセス信号より遅延素子３１ｌの遅延時間だけ遅延し且つ遅延素子３１ｍの遅延時間だけアクティブなパルス信号となる。
【０１１５】
ＡＮＤゲート回路３１ｇは、リード信号ＸＲＤの反転とチップセレクト信号ＸＣＳの反転との論理積をリードアクセス信号として出力する。
【０１１６】
アドレスデコーダ３２は、例えば、アドレスデコード回路と、第１〜第３のＡＮＤゲート回路とで構成可能である。
【０１１７】
アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］の値が"０ｘ００７５"又は"０ｘ００７４"である場合に、第１アドレス検出信号をＨレベルにする。後で詳細に説明するように、この第１アドレス検出信号がＨレベルとなることが、ＣＰＵバスＢ１のデータバス上の下位３ビットのデータＣＤ［２：０］（広義には、第３群のバス信号）がモード設定レジスタ３３に書き込まれる条件の１つとなっている。なお、アドレス"０ｘ００７５"は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合に、メインＣＰＵ１１がＣＰＵバスＢ１のデータバス上の下位３ビットのデータＣＤ［２：０］をモード設定レジスタ３３に書き込むためのアドレスである。また、アドレス"０ｘ００７４"は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合に、メインＣＰＵ１１がＣＰＵバスＢ１のデータバス上の下位３ビットのデータＣＤ［２：０］をモード設定レジスタ３３に書き込むためのアドレスである。
【０１１８】
このように、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合と、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合とで、ＣＰＵバスＢ１のデータバス上の下位３ビットのデータＣＤ［２：０］をモード設定レジスタ３３に書き込むためのアドレスが異なる理由は、次の通りである。
【０１１９】
先に説明したように、コントローラ１３は、初期時において、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎ、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモードであるものとして動作する。すなわち、Ｓｔｒｏｂｅモード、Ｂｉｇ  Ｅｎｄｉａｎ及び１６ビットモードの組み合わせが、コントローラ１３のデフォルトのバス関連モードとなる。そして、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合に、メインＣＰＵ１１がアドレス"０ｘ００７５"への１バイトのライトアクセスを行うと、ＣＰＵバスＢ１のデータバス上のデータＣＤ［７：０］に１バイトのライトデータが出力される（図３の上段参照）。そのため、モード設定レジスタ３３は、後で詳細に説明するように、ＣＰＵバスＢ１のデータバス上のデータＣＤ［７：０］（より詳細には、その内の下位３ビットのデータＣＤ［２：０］）を取り込むように回路構成されている。一方、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合に、メインＣＰＵ１１がＣＰＵバスＢ１のデータバス上のＣＤ［７：０］に１バイトのライトデータを出力するためには、メインＣＰＵ１１がアドレス"０ｘ００７４"への１バイトのライトアクセスを行う必要があるからである（図３の下段参照）。
【０１２０】
また、アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］の値が"０ｘ００７６"である場合に、第２アドレス検出信号をＨレベルにする。後で詳細に説明するように、この第２アドレス検出信号がＨレベルとなることが、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更する条件の１つとなっている。アドレス"０ｘ００７６"は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合にレジスタアクセス信号生成部３１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更させるためにアクセスするアドレスである。なお、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合には、コントローラ１３のＥｎｄｉａｎの変更は不要である。そのため、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  ＥｎｄｉａｎであるメインＣＰＵ１１は、アドレス"０ｘ００７６"にアクセスする必要がない。
【０１２１】
また、アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］がモードプロテクトレジスタ３４がマッピングされている所与のアドレスである場合に、第３アドレス検出信号をＨレベルにする。後で詳細に説明するように、この第３アドレス検出信号がＨレベルとなることが、モード設定レジスタ３３へのデータの書き込みを禁止するための条件となっている。このようにモード設定レジスタ３３へのデータの書き込みを禁止することで、コントローラ１３のバスに関するモードの誤変更を防止することができる。
【０１２２】
また、アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］がレジスタ２２ａ（図４参照）がマッピングされている所与のアドレスである場合に、第４アドレス検出信号をＨレベルにする。この第４アドレス検出信号がＨレベルとなることで、レジスタ２２ａへのデータの書き込み又はレジスタ２２ａからのデータの読み出しが可能となる。
【０１２３】
また、アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］がレジスタ２３ａ（図４参照）がマッピングされている所与のアドレスである場合に、第５アドレス検出信号をＨレベルにする。この第５アドレス検出信号がＨレベルとなることで、レジスタ２３ａへのデータの書き込み又はレジスタ２３ａからのデータの読み出しが可能となる。
【０１２４】
また、アドレスデコード回路は、ＣＰＵバスＢ１のアドレスバス上のアドレス信号ＣＡ［１５：０］がレジスタ２４ａ（図４参照）がマッピングされている所与のアドレスである場合に、第６アドレス検出信号をＨレベルにする。この第６アドレス検出信号がＨレベルとなることで、レジスタ２４ａへのデータの書き込み又はレジスタ２４ａからのデータの読み出しが可能となる。
【０１２５】
第１のＡＮＤゲート回路は、レジスタアクセス信号生成部３１から入力される下位バイトライトアクセス非同期信号と第１アドレス検出信号との論理積を、バス関連モード設定書込信号（広義には、第３の内部信号）として、出力する。すなわち、バス関連モード設定書込信号は、メインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にライトアクセスを行った場合に、Ｈレベルとなる。
【０１２６】
第２のＡＮＤゲート回路は、レジスタアクセス信号生成部３１から入力されるリードアクセス信号と第２アドレス検出信号との論理積を、エンディアン変更信号（広義には、第４の内部信号）として、出力する。すなわち、エンディアン変更信号は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合に、メインＣＰＵ１１がアドレス"０ｘ００７６"にリードアクセスを行ったときに、Ｈレベルとなる。
【０１２７】
なお、本実施形態においては、メインＣＰＵ１１から所与のアドレスへのリードアクセスを受けた場合にエンディアン変更信号をアサートすることとしているが、メインＣＰＵ１１から所与のアドレスへのライトアクセス（ダミーのライトアクセスであっても良い。）を受けた場合にエンディアン変更信号をアサートするようにしても良い。
【０１２８】
また、第１バスサイクルのチップセレクト信号ＸＣＳがネゲートされたとき（立ち上がりエッジ）をトリガとして、エンディアン変更信号をアサートするようにしても良い。その場合には、チップセレクト信号ＸＣＳがネゲートされたときから所与の期間、メインＣＰＵ１１がコントローラ１３へのアクセスを控えるようにすると好適である。メインＣＰＵ１１がコントローラ１３へのアクセスを控える実装として、例えば、メインＣＰＵ１１が第１バスサイクルの終了後にＮＯＰ（no operation）命令の実行等を行うようにしても良い。
【０１２９】
第３のＡＮＤゲート回路は、レジスタアクセス信号生成部３１から入力される下位バイトライトアクセス非同期信号と第３アドレス検出信号との論理積を、モードプロテクト書込信号（広義には、第６の内部信号）として、出力する。すなわち、モードプロテクト書込信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行った場合に、Ｈレベルとなる。
【０１３０】
図９にモードプロテクトレジスタ３４の構成例を示す。図９に示すように、モードプロテクトレジスタ３４は、Ｄ型フリップフロップ３４ａ〜３４ｈと、デコード回路３４ｉとを含む。
【０１３１】
フリップフロップ３４ａ〜３４ｈのデータ入力端子（Ｄ端子）には、ＣＰＵバスＢ１のデータバス上のデータ信号ＣＤ［７：０］がそれぞれ入力される。また、フリップフロップ３４ａ〜３４ｈのトリガ入力端子には、モードプロテクト書込信号が入力される。従って、フリップフロップ３４ａ〜３４ｈは、モードプロテクト書込信号の立ち上がりエッジにおいて、ＣＰＵバスＢ１のデータバス上のデータ信号ＣＤ［７：０］をそれぞれ記憶することになる。
【０１３２】
デコード回路３４ｉには、フリップフロップ３４ａ〜３４ｈのデータ出力端子（Ｑ端子）からデータ信号がそれぞれ入力される。デコード回路３４ｉは、フリップフロップ３４ａ〜３４ｈからそれぞれ入力されるデータ信号が所与の値（例えば、０ｘ５６等）である場合に、モードプロテクト信号をＬレベルにし、フリップフロップ３４ａ〜３４ｈからそれぞれ入力されるデータ信号が所与の値以外である場合に、モードプロテクト信号をＨレベルにする。なお、フリップフロップ３４ａ〜３４ｈの初期値は上記した所与の値であり、デコード回路３４ｉの出力信号であるモードプロテクト信号の初期値はＬレベルである。
【０１３３】
先に説明したように、モードプロテクト書込信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行った場合に、Ｈレベルとなる。
従って、モードプロテクト信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスに上記した所与の値以外の値をライトするまではＬレベルであり、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスに上記した所与の値以外の値をライトした後はＨレベルとなる。
【０１３４】
なお、図９においては、フリップフロップ３４ａ〜３４ｈがＣＰＵバスＢ１のデータバス上のデータ信号ＣＤ［７：０］を記憶し、デコード回路３４ｉがフリップフロップ３４ａ〜３４ｈの出力信号をデコードすることとしているが、図１０に示すように、デコード回路３４ｉがＣＰＵバスＢ１のデータバス上のデータ信号ＣＤ［７：０］をデコードし、フリップフロップ３４ａがデコード回路３４ｉの出力信号を記憶しモードプロテクト信号として出力するようにしても良い。
【０１３５】
図１１にモード設定レジスタ３３の構成例を示す。図１１に示すように、モード設定レジスタ３３は、ＡＮＤゲート回路３３ａと、Ｄ型フリップフロップ３３ｂ〜３３ｅとを含む。フリップフロップ３３ｂ〜３３ｅの出力信号の初期値はＬレベルである。
【０１３６】
ＡＮＤゲート回路３３ａは、アドレスデコーダ３２から入力されるバス関連モード設定書込信号とアドレスデコーダ３２から入力されるモードプロテクト信号の反転との論理積を、フリップフロップ３３ｂ〜３３ｄのトリガ入力端子に出力する。
【０１３７】
先に説明したように、バス関連モード設定書込信号は、メインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にライトアクセスを行った場合に、Ｈレベルとなる。また、モードプロテクト信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行うまではＬレベルであり、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行った後はＨレベルとなる。
【０１３８】
従って、ＡＮＤゲート回路３３ａの出力信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行う前且つメインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にライトアクセスを行った場合に、Ｈレベルとなる。また、ＡＮＤゲート回路３３ａの出力信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行った後は、Ｌレベルとなる。
【０１３９】
フリップフロップ３３ｂの入力端子（Ｄ端子）には、ＣＰＵバスＢ１のデータバス上のデータＣＤ［１］が入力される。従って、フリップフロップ３３ｂの出力信号であるデータ書込制御モード信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行う前且つメインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にデータＣＤ［１］が"０ｂ１"であるようなライトアクセスを行った場合に、Ｈレベルとなる。
【０１４０】
フリップフロップ３３ｃの入力端子（Ｄ端子）には、ＣＰＵバスＢ１のデータバス上のデータＣＤ［０］が入力される。従って、フリップフロップ３３ｃの出力信号である８／１６ビット信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行う前且つメインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にデータＣＤ［０］が"０ｂ１"であるようなライトアクセスを行った場合に、Ｈレベルとなる。
【０１４１】
フリップフロップ３３ｄの入力端子（Ｄ端子）には、ＣＰＵバスＢ１のデータバス上のデータＣＤ［２］が入力される。従って、フリップフロップ３３ｄの出力信号であるエンディアン信号は、メインＣＰＵ１１がモードプロテクトレジスタ３４がマッピングされている所与のアドレスにライトアクセスを行う前且つメインＣＰＵ１１がアドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）にデータＣＤ［２］が"０ｂ１"であるようなライトアクセスを行った場合に、Ｈレベルとなる。
【０１４２】
フリップフロップ３３ｅのトリガ入力端子には、アドレスデコーダ３２からエンディアン変更信号が入力され、入力端子（Ｄ端子）には、フリップフロップ３３ｄからエンディアン信号が入力される。
【０１４３】
先に説明したように、エンディアン変更信号は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合に、そのようなメインＣＰＵ１１がアドレス"０ｘ００７６"にリードアクセスを行ったときに、Ｈレベルとなる。
【０１４４】
従って、フリップフロップ３３ｅの出力信号であるスワップ信号は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合に、そのようなメインＣＰＵ１１がアドレス"０ｘ００７４"にデータＣＤ［２］が"０ｂ１"であるようなライトアクセスを行い且つその後そのようなメインＣＰＵ１１がアドレス"０ｘ００７６"にリードアクセスを行ったときに、Ｈレベルとなる。
【０１４５】
なお、バス関連モード信号の内のデータ書込制御モード信号及び８／１６ビット信号がライトアクセス１回（アドレス"０ｘ００７５"（メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合）又は"０ｘ００７４"（メインＣＰＵ１１がＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合）へのライトアクセス１回）で変化するのに対し、スワップ信号がライトアクセス１回とリードアクセス１回とで変化するようにした理由については、後で詳細に説明する。
【０１４６】
３．  ＣＰＵが実行するバス関連モード変更処理
図１２にメインＣＰＵ１１のモードの種類とメインＣＰＵ１１が初期において実行するコントローラ１３のモードを変更するためのバス関連モード変更処理（メインＣＰＵ１１が実行するプログラム処理）との対応を示す。
【０１４７】
まず、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合について、説明する。先に説明したように、コントローラ１３は、初期時において、メインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎとして動作する。そのため、この場合には、メインＣＰＵ１１は、コントローラ１３のバス関連モードの変更を行う必要がない。なお、この場合において、メインＣＰＵ１１が、バス関連モードの誤変更防止のため、前述したように、モードプロテクトレジスタ３４にライトアクセスしても良い。
【０１４８】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合について、説明する。この場合には、メインＣＰＵ１１は、コントローラ１３のＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更する必要がある。そのため、メインＣＰＵ１１は、前述したように、アドレス"０ｘ００７４"に"０ｘ０４"をライトするという命令（プログラム）を実行する。なお、書き込むデータ"０ｘ０４"の上位５ビットは"０ｂ０００００"でなくても良い。これにより、エンディアン信号（図１１参照）がＨレベルに変化する。その後、メインＣＰＵ１１は、前述したように、アドレス"０ｘ００７６"をリードするという命令を実行する。これにより、スワップ信号（図１１参照）がＨレベルに変化し、このスワップ信号の変化に基づいて、レジスタアクセス信号生成部３１（図７参照）は、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更する。なお、その後、メインＣＰＵ１１が、バス関連モードの誤変更防止のため、前述したように、モードプロテクトレジスタ３４にライトアクセスしても良い。
【０１４９】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合について、説明する。この場合には、メインＣＰＵ１１は、コントローラ１３のデータを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに変更する必要がある。そのため、ＣＰＵは、前述したように、アドレス"０ｘ００７５"に"０ｘ０２"をライトするという命令を実行する。なお、書き込むデータ"０ｘ０２"の上位５ビットは"０ｂ０００００"でなくても良い。これにより、データ書込制御モード信号（図１１参照）がＨレベルに変化し、このデータ書込制御モード信号の変化に基づいて、レジスタアクセス信号生成部３１（図７参照）は、データを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに変更する。なお、その後、メインＣＰＵ１１が、バス関連モードの誤変更防止のため、前述したように、モードプロテクトレジスタ３４にライトアクセスしても良い。
【０１５０】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合について、説明する。この場合には、メインＣＰＵ１１は、コントローラ１３のデータを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに、それぞれ変更する必要がある。そのため、メインＣＰＵ１１は、前述したように、アドレス"０ｘ００７４"に"０ｘ０６"をライトするという命令を実行する。なお、書き込むデータ"０ｘ０６"の上位５ビットは"０ｂ０００００"でなくても良い。これにより、データ書込制御モード信号（図１１参照）及びエンディアン信号（図１１参照）が、Ｈレベルにそれぞれ変化する。このデータ書込制御モード信号の変化に基づいて、レジスタアクセス信号生成部３１（図７参照）は、データを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに変更する。その後、メインＣＰＵ１１は、前述したように、アドレス"０ｘ００７６"をリードするという命令を実行する。これにより、スワップ信号（図１１参照）がＨレベルに変化し、このスワップ信号の変化に基づいて、レジスタアクセス信号生成部３１（図７参照）は、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更する。なお、その後、メインＣＰＵ１１が、バス関連モードの誤変更防止のため、前述したように、モードプロテクトレジスタ３４にライトアクセスしても良い。
【０１５１】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが８ビットモードである場合について、説明する。この場合には、メインＣＰＵ１１は、コントローラ１３のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードを１６ビットモードから８ビットモードに変更する必要がある。そのため、メインＣＰＵ１１は、前述したように、アドレス"０ｘ００７５"に"０ｘ０１"をライトするという命令を実行する。なお、書き込むデータ"０ｘ０１"の上位５ビットは"０ｂ０００００"でなくても良い。これにより、８／１６ビット信号（図１１参照）がＨレベルに変化する。この８／１６ビット信号の変化に基づいて、レジスタアクセス信号生成部３１（図７参照）は、ＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードを１６ビットモードから８ビットモードに変更する。なお、その後、メインＣＰＵ１１が、バス関連モードの誤変更防止のため、前述したように、モードプロテクトレジスタ３４にライトアクセスしても良い。
【０１５２】
４．  動作
次に、電子機器１の動作について説明する。
まず、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  Ｅｎｄｉａｎである場合における電子機器１の動作について、説明する。
【０１５３】
図１３は、この場合における電子機器１の動作を示すフローチャートである。
この場合、メインＣＰＵ１１は、前述したように、コントローラ１３のバス関連モードを変更する必要がない。なお、この場合、レジスタアクセス信号生成部３１が出力する上位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とハイバイトライトストローブ信号ＸＷＲＨの反転との論理積である（図６、図７、図８等参照）。また、レジスタアクセス信号生成部３１が出力する下位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とローバイトライトストローブ信号ＸＷＲＬの反転との論理積である（図６、図７、図８等参照）。さらに、レジスタアクセス信号生成部３１が出力するリードアクセス信号は、チップセレクト信号ＸＣＳの反転とリード信号ＸＲＤの反転との論理積である（図７参照）。これらの上位バイトライトアクセス信号、下位バイトライトアクセス信号及び／又はリードアクセス信号と、レジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが検出されたときにそれぞれＨレベルとなる第４〜第６アドレス検出信号（図９参照）とが、内部バスＢ２を介して、レジスタ２２ａ、２３ａ、２４ａに供給されると、レジスタ２２ａ、２３ａ、２４ａへのリード及び／又はライトアクセスが可能である。
【０１５４】
そこで、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上にチップセレクト信号ＸＣＳ、ハイバイトライトストローブ信号ＸＷＲＨ、ローバイトライトストローブ信号ＸＷＲＬ等を適宜アサートし、ＣＰＵバスＢ１のアドレスバス上にレジスタ２２ａ、２３ａ、２４ａがそれぞれマッピングされているアドレスを適宜出力し、レジスタ２２ａ、２３ａ、２４ａにリード及び／又はライトアクセスし、レジスタ２２ａ、２３ａ、２４ａにコマンド及び／又はデータを書き込む（ステップＳ１１）。
【０１５５】
ＵＳＢインタフェース部２２、ＦＩＦＯ部２３及びＤＭＡ処理部２４（図４参照）は、レジスタ２２ａ、２３ａ、２４ａに書き込まれたコマンド及び／又はデータに基づいて、ＵＳＢ機器２（図４参照）との間のデータ転送を行う（ステップＳ２１）。
【０１５６】
なお、メインＣＰＵ１１が、好ましくはステップＳ１１の前に、コントローラ１３のバス関連モードの誤変更を防止するため、モードプロテクトレジスタ３４がマッピングされているアドレスにライトアクセスを行うようにしても良い。
【０１５７】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合における電子機器１の動作について、説明する。
【０１５８】
図１４は、この場合における電子機器１の動作を示すフローチャートである。
図１５及び図１６は、この場合におけるタイミングチャートである。なお、図１５に示す第１及び第２バスサイクルは、コントローラ１３のバス関連モードを変更するためのバスサイクルであり、図１６に示す第３及び第４バスサイクルは、レジスタ２２ａ、２３ａ、２４ａへのライトバスサイクルである。
【０１５９】
この場合、メインＣＰＵ１１は、前述したように、コントローラ１３のデータを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに、それぞれ変更する必要がある。なお、この場合、初期時においては、レジスタアクセス信号生成部３１が出力する上位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とハイバイトイネーブル信号ＸＢＥＨの反転との論理積である（図６〜図８等参照）。また、レジスタアクセス信号生成部３１が出力する下位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とライトストローブ信号ＸＷＲの反転との論理積である（図６〜図８等参照）。さらに、レジスタアクセス信号生成部３１が出力するリードアクセス信号は、チップセレクト信号ＸＣＳの反転とリード信号ＸＲＤの反転との論理積である（図７参照）。
【０１６０】
図１４を参照すると、メインＣＰＵ１１は、アドレス"０ｘ００７４"にデータ"０ｘ０６"をライトするライトアクセスを行う（ステップＳ３１）。なお、このライトアクセスは、図１５の第１バスサイクルに対応する。
【０１６１】
より詳細には、図１５を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをアサートし（図１５のタイミングＴＭ４１参照）、その後ライトストローブ信号ＸＷＲをアサートする（図１５のタイミングＴＭ４２参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７４"を、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上に"０ｘ０６"を、それぞれ出力する（図示せず）。
【０１６２】
ここで図６〜図８を参照すると、ライトストローブ信号ＸＷＲがアサートされると（図１５のタイミングＴＭ４２参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、Ｈレベルとなる。そして、下位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１５のタイミングＴＭ４３参照）から所与の期間だけ、ＡＮＤゲート回路３１ｉの出力信号である下位バイトライトアクセス非同期信号が、Ｈレベルとなる。
【０１６３】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７４"が出力されると、第１アドレス検出信号がＨレベルとなる。そして、上述したように、下位バイトライトアクセス非同期信号がＨレベルとなると（図１５のタイミングＴＭ４３参照）、ＡＮＤゲート回路３２ｂの出力信号であるバス関連モード設定書込信号が、Ｈレベルとなる。
【０１６４】
ここで図１１を参照すると、上述したようにバス関連モード設定書込信号がＨレベルになると、前述したようにモードプロテクト信号の初期値はＬレベルであるので、ＡＮＤゲート回路３３ａの出力信号は、Ｈレベルになる。従って、フリップフロップ３３ｂ〜３３ｄは、ＣＰＵバスＢ１のデータバス上のデータＣＤ［１］、ＣＤ［０］及びＣＤ［２］を、それぞれ取り込む。ここでは、前述したようにＣＰＵバスＢ１のデータバス上には"０ｘ０６"が出力されているので、フリップフロップ３３ｂの出力信号であるデータ書込制御モード信号及びフリップフロップ３３ｄの出力信号であるエンディアン信号は、ＬレベルからＨレベルにそれぞれ変化する（図１５のタイミングＴＭ４３参照）。一方、フリップフロップ３３ｃの出力信号である８／１６ビット信号は、Ｌレベルのまま変化しない。
【０１６５】
ここで図１４を参照すると、コントローラ１３は、データを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに変更する（ステップＳ４１）。
【０１６６】
ここで図７を参照すると、初期時からライトストローブ信号ＸＷＲを下位バイトストローブ前信号として選択出力していたセレクタ３１ｂは、上述したようにデータ書込制御モード信号がＨレベルになると（図１５のタイミングＴＭ４３参照）、ライトストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬとの論理和を下位バイトストローブ前信号として出力するようになる（図６及び図８参照）。但し、図１５のタイミングＴＭ４３において、ライトストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬは共にＬレベルである。そのため、下位バイトストローブ前信号の生成の基となる信号は違う信号に変わるものの、下位バイトストローブ前信号は、結果的にはＬレベルのまま変化しないことになる。
【０１６７】
また、初期時からハイバイトイネーブル信号ＸＢＥＨを上位バイトストローブ前信号として選択出力していたセレクタ３１ａは、上述したようにデータ書込制御モード信号がＨレベルになると（図１５のタイミングＴＭ４３参照）、ライトストローブ信号ＸＷＲとハイバイトイネーブル信号ＸＢＥＨとの論理和を上位バイトストローブ前信号として出力するようになる（図６参照）。但し、図１５のタイミングＴＭ４３において、ハイバイトイネーブル信号ＸＢＥＨはＨレベルである。そのため、上位バイトストローブ前信号の生成の基となる信号は違う信号に変わるものの、上位バイトストローブ前信号は、結果的にはＨレベルのまま変化しないことになる。
【０１６８】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１５のタイミングＴＭ４４参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをネゲートする（図１５のタイミングＴＭ４５参照）ことで、第１バスサイクルが終了する。
【０１６９】
ここで図１４を参照すると、メインＣＰＵ１１は、アドレス"０ｘ００７６"にリードアクセスを行う（ステップＳ３２）。なお、このリードアクセスは、図１５の第２バスサイクルに対応する。
【０１７０】
より詳細には、図１５を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上にチップセレクト信号ＸＣＳをアサートし（図１５のタイミングＴＭ４６参照）、その後リード信号ＸＲＤをアサートする（図１５のタイミングＴＭ４７参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７６"を出力する（図示せず）。
【０１７１】
ここで図７を参照すると、リード信号ＸＲＤがアサートされると（図１５のタイミングＴＭ４７参照）、ＡＮＤゲート回路３１ｇの出力信号であるリードアクセス信号はＨレベルとなる。
【０１７２】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７６"が出力されると、第２アドレス検出信号がＨレベルとなる。そして、上述したように、リードアクセス信号がＨレベルとなると（図１５のタイミングＴＭ４７参照）、ＡＮＤゲート回路３２ｃの出力信号であるエンディアン変更信号が、Ｈレベルとなる（図１５のタイミングＴＭ４７参照）。
【０１７３】
ここで図１１を参照すると、上述したように、エンディアン変更信号がＨレベルとなると（図１５のタイミングＴＭ４７参照）、フリップフロップ３３ｅは、エンディアン信号を取り込む。前述したようにエンディアン信号はＨレベルになっているので（図１５のタイミングＴＭ４３参照）、フリップフロップ３３ｅの出力信号であるスワップは、ＬレベルからＨレベルに変化する（図１５のタイミングＴＭ４７参照）。
【０１７４】
再び図１４を参照すると、コントローラ１３は、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに変更する（ステップＳ４２）。
【０１７５】
ここで図７を参照すると、初期時から上位バイトストローブ前信号の反転を上位バイトストローブ信号として出力していたセレクタ３１ｃは、上述したようにスワップ信号がＨレベルになると（図１５のタイミングＴＭ４７参照）、下位バイトストローブ前信号の反転を上位バイトストローブ信号として出力するようになる。但し、図１５のタイミングＴＭ４７において、下位バイトストローブ前信号はＨレベルである。そのため、上位バイトストローブ信号を生成する基となる信号は違う信号に変わるものの、上位バイトストローブ信号は、結果的にはＨレベルのまま変化しない。
【０１７６】
また、初期時から下位バイトストローブ前信号の反転を下位バイトストローブ信号として出力していたセレクタ３１ｄは、上述したようにスワップ信号がＨレベルになると（図１５のタイミングＴＭ４７参照）、上位バイトストローブ前信号の反転を下位バイトストローブ信号として出力するようになる。但し、図１５のタイミングＴＭ４７において、上位バイトストローブ前信号はＨレベルである。そのため、上位バイトストローブ信号を生成する基となる信号は違う信号に変わるものの、上位バイトストローブ信号は、結果的にはＨレベルのまま変化しない。
【０１７７】
その後、メインＣＰＵ１１が、リード信号ＸＲＤをネゲートすると（図１５のタイミングＴＭ４８参照）、ＡＮＤゲート回路３１ｇの出力信号であるリードアクセス信号は、ＨレベルからＬレベルに変化し、アドレスデコーダ３２内のＡＮＤゲート回路３２ｃ（図９参照）の出力信号であるエンディアン変更信号も、ＨレベルからＬレベルに変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳをネゲートする（図１５のタイミングＴＭ４９参照）ことで、第２バスサイクルが終了するとともに、コントローラ１３のバス関連モードの変更処理が終了する。
【０１７８】
ここで図１４を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上にチップセレクト信号ＸＣＳ、ハイバイトライトストローブ信号ＸＷＲＨ、ローバイトライトストローブ信号ＸＷＲＬ等を適宜アサートし、ＣＰＵバスＢ１のアドレスバス上にレジスタ２２ａ、２３ａ、２４ａがそれぞれマッピングされているアドレスを適宜出力し、レジスタ２２ａ、２３ａ、２４ａにリード及び／又はライトアクセスし、レジスタ２２ａ、２３ａ、２４ａにコマンド及び／又はデータを書き込む（ステップＳ３３）。
【０１７９】
ＵＳＢインタフェース部２２、ＦＩＦＯ部２３及びＤＭＡ処理部２４（図４参照）は、レジスタ２２ａ、２３ａ、２４ａに書き込まれたコマンド及び／又はデータに基づいて、ＵＳＢ機器２（図４参照）との間のデータ転送を行う（ステップＳ４３）。
【０１８０】
なお、メインＣＰＵ１１が、ステップＳ３２の後、より好ましくはステップＳ３２の後且つステップＳ３３の前に、コントローラ１３のバス関連モードの誤変更を防止するため、モードプロテクトレジスタ３４がマッピングされているアドレスにライトアクセスを行うようにしても良い。
【０１８１】
次に、メインＣＰＵ１１がレジスタ２２ａ、２３ａ、２４ａにアクセスする場合のコントローラ１３の動作について、図１６を参照して説明する。前述したように、図１６に示す第３及び第４バスサイクルは、レジスタ２２ａ、２３ａ、２４ａにアクセスするバスサイクルの例である。
【０１８２】
メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをアサートし（図１６のタイミングＴＭ５０参照）、その後ライトストローブ信号ＸＷＲをアサートする（図１６のタイミングＴＭ５１参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａのいずれかがマッピングされているアドレスを、ＣＰＵバスＢ１のデータバスＣＤ［１５：８］上に、レジスタ２２ａ、２３ａ、２４ａに書き込むためのコマンド及び／又はデータを、それぞれ出力する（図示せず）。
【０１８３】
ここで図７を参照すると、ローバイトイネーブル信号ＸＢＥＬとライトストローブ信号ＸＷＲの両方がアサートされると（図１６のタイミングＴＭ５１参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｃの出力信号である上位バイトストローブ信号及びＡＮＤゲート回路３１ｅの出力信号である上位バイトライトアクセス信号は、Ｈレベルとなる。なお、上位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１６のタイミングＴＭ５２参照）から所与の期間だけＡＮＤゲート回路３１ｈの出力信号である上位バイトライトアクセス非同期信号がＨレベルとなる。
【０１８４】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが出力されると、第４〜第６アドレス検出信号のいずれかがＨレベルとなる。そして、上述したように上位バイトライトアクセス信号がＨレベルとなると（図１６のタイミングＴＭ５１参照）、レジスタ２２ａ、２３ａ、２４ａへのライトアクセスが行われることになる。
【０１８５】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１６のタイミングＴＭ５３参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｃの出力信号である上位バイトストローブ信号及びＡＮＤゲート回路３１ｅの出力信号である上位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをネゲートする（図１６のタイミングＴＭ１４参照）ことで、第３バスサイクルが終了する。
【０１８６】
次に、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳ及びハイバイトイネーブル信号ＸＢＥＨをアサートし（図１６のタイミングＴＭ５５参照）、その後ライトストローブ信号ＸＷＲをアサートする（図１６のタイミングＴＭ５６参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａのいずれかがマッピングされているアドレスを、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上には、レジスタ２２ａ、２３ａ、２４ａに書き込むためのコマンド及び／又はデータを、それぞれ出力する（図示せず）。
【０１８７】
ここで図７を参照すると、ハイバイトイネーブル信号ＸＢＥＨとライトストローブ信号ＸＷＲの両方がアサートされると（図１６のタイミングＴＭ５６参照）、セレクタ３１ａの出力信号である上位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、Ｈレベルとなる。なお、下位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１６のタイミングＴＭ５７参照）から所与の期間だけＡＮＤゲート回路３１ｉの出力信号である下位バイトライトアクセス非同期信号がＨレベルとなる。
【０１８８】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが出力されると、第４〜第６アドレス検出信号のいずれかがＨレベルとなる。そして、上述したように下位バイトライトアクセス信号がＨレベルとなると（図１６のタイミングＴＭ５６参照）、レジスタ２２ａ、２３ａ、２４ａへのライトアクセスが行われることになる。
【０１８９】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１６のタイミングＴＭ５８参照）、セレクタ３１ａの出力信号である上位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳ及びハイバイトイネーブル信号ＸＢＥＨをネゲートする（図１６のタイミングＴＭ５９参照）ことで、第４バスサイクルが終了する。
【０１９０】
なお、ここでは、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合について説明したが、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＳｔｒｏｂｅモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  ＥｎｄｉａｎのＣＰＵである場合も、同様の処理及びタイミングで実現可能である。その場合には、メインＣＰＵ１１が、アドレス"０ｘ００７４"にデータ"０ｘ０６"をライトする（図１４のステップＳ３１参照）ことに代えて、アドレス"０ｘ００７４"にデータ"０ｘ０４"をライトすれば良い。そして、その場合には、図１５に示す第１バスサイクルにおいて、エンディアン信号が変化し、データ書込制御モード信号は変化しないことになる。
【０１９１】
また、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＢｉｇ  ＥｎｄｉａｎのＣＰＵである場合も、図１４〜図１６と同様の処理及びタイミングで実現可能である。その場合には、メインＣＰＵ１１が、アドレス"０ｘ００７４"にデータ"０ｘ０６"をライトする（図１４のステップＳ３１参照）ことに代えて、アドレス"０ｘ００７５"にデータ"０ｘ０２"をライトすれば良い。そして、その場合には、図１５に示す第１バスサイクルにおいて、データ書込制御モード信号が変化し、エンディアン信号は変化しないことになる。また、その場合には、アドレス"０ｘ００７６"へのリードアクセス（図１４のステップＳ３２及び図１５の第２バスサイクル参照）を省くことが出来る。
【０１９２】
次に、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが８ビットモードである場合における電子機器１の動作について、説明する。
【０１９３】
図１７は、この場合における電子機器１の動作を示すフローチャートである。
図１８及び図１９は、この場合におけるタイミングチャートである。なお、図１８に示す第１バスサイクルは、コントローラ１３のバス関連モードを変更するためのバスサイクルであり、図１８に示す第２バスサイクル及び図１９に示す第３及び第４バスサイクルは、レジスタ２２ａ、２３ａ、２４ａにアクセスするバスサイクルである。
【０１９４】
この場合、メインＣＰＵ１１は、前述したように、コントローラ１３のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードを１６ビットモードから８ビットモードに変更する必要がある。なお、この場合、初期時においては、レジスタアクセス信号生成部３１が出力する下位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とライトストローブ信号ＸＷＲの反転との論理積となる（図６〜図８等参照）。
【０１９５】
図１９を参照すると、メインＣＰＵ１１は、アドレス"０ｘ００７５"にデータ"０ｘ０１"をライトするライトアクセスを行う（ステップＳ５１）。なお、このライトアクセスは、図１８の第１バスサイクルに対応する。
【０１９６】
より詳細には、図１８を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをアサートする（図１８のタイミングＴＭ６１参照）。なお、前述したように、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが８ビットモードである場合には、ローバイトイネーブル信号ＸＢＥＬ信号に代えてアドレス信号のＬＳＢであるＣＡ［０］が入力される（図６の端子Ｐ２のピンアサイン参照）。そして、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７５"を出力するので、アドレス信号ＣＡ［０］はＨレベルとなる（図１８のタイミングＴＭ６１参照）。その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをアサートする（図１８のタイミングＴＭ６参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上に"０ｘ０１"を出力する（図示せず）。
【０１９７】
ここで図６〜図８を参照すると、ライトストローブ信号ＸＷＲがアサートされると（図１８のタイミングＴＭ６２参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、Ｈレベルとなる。そして、下位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１８のタイミングＴＭ６３参照）から所与の期間だけ、ＡＮＤゲート回路３１ｉの出力信号である下位バイトライトアクセス非同期信号が、Ｈレベルとなる。
【０１９８】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７５"が出力されると、第１アドレス検出信号がＨレベルとなる。そして、上述したように、下位バイトライトアクセス非同期信号がＨレベルとなると（図１８のタイミングＴＭ６３参照）、ＡＮＤゲート回路３２ｂの出力信号であるバス関連モード設定書込信号が、Ｈレベルとなる。
【０１９９】
ここで図１１を参照すると、上述したようにバス関連モード設定書込信号がＨレベルとなると、前述したようにモードプロテクト信号の初期値はＬレベルであるので、ＡＮＤゲート回路３３ａの出力信号は、Ｈレベルになる。従って、フリップフロップ３３ｂ〜３３ｄは、ＣＰＵバスＢ１のデータバス上のデータＣＤ［１］、ＣＤ［０］及びＣＤ［２］を、それぞれ取り込む。ここでは、前述したようにＣＰＵバスＢ１のデータバス上には"０ｘ０１"が出力されているので、フリップフロップ３３ｃの出力信号である８／１６ビット信号は、ＬレベルからＨレベルに変化する（図１８のタイミングＴＭ６３参照）。一方、フリップフロップ３３ｂの出力信号であるデータ書込制御モード信号及びフリップフロップ３３ｄの出力信号であるエンディアン信号は、Ｌレベルのまま変化しない。
【０２００】
ここで図１７を参照すると、コントローラ１３は、ＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードを１６ビットモードから８ビットモードに変更する（ステップＳ６１）。
【０２０１】
ここで図７を参照すると、初期時からライトストローブ信号ＸＷＲを下位バイトストローブ前信号として選択出力していたセレクタ３１ｂは、上述したように８／１６ビット信号がＨレベルになると（図１８のタイミングＴＭ６３参照）、ライトストローブ信号ＸＷＲとアドレス信号ＣＡ［０］の反転との論理和を下位バイトストローブ前信号として出力するようになる（図６及び図８参照）。但し、図１８のタイミングＴＭ３３において、ライトストローブ信号ＸＷＲはＬレベルであり、アドレス信号ＣＡ［０］はＨレベルである。そのため、下位バイトストローブ前信号の生成の基となる信号は違う信号に変わるものの、下位バイトストローブ前信号は、結果的にはＬレベルのまま変化しないことになる。
【０２０２】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１８のタイミングＴＭ６４参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳをネゲートする（図１８のタイミングＴＭ６５参照）ことで、第１バスサイクルが終了するとともに、コントローラ１３のバス関連モードの変更処理が終了する。
【０２０３】
ここで図１７を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上にチップセレクト信号ＸＣＳ、ハイバイトライトストローブ信号ＸＷＲＨ、ローバイトライトストローブ信号ＸＷＲＬ等を適宜アサートし、ＣＰＵバスＢ１のアドレスバス上にレジスタ２２ａ、２３ａ、２４ａがそれぞれマッピングされているアドレスを適宜出力し、レジスタ２２ａ、２３ａ、２４ａにリード及び／又はライトアクセスし、レジスタ２２ａ、２３ａ、２４ａにコマンド及び／又はデータを書き込む（ステップＳ５２）。
【０２０４】
ＵＳＢインタフェース部２２、ＦＩＦＯ部２３及びＤＭＡ処理部２４（図４参照）は、レジスタ２２ａ、２３ａ、２４ａに書き込まれたコマンド及び／又はデータに基づいて、ＵＳＢ機器２（図４参照）との間のデータ転送を行う（ステップＳ６２）。
【０２０５】
なお、メインＣＰＵ１１が、ステップＳ５１の後、好ましくはステップＳ５１の後且つステップＳ５２の前に、コントローラ１３のバス関連モードの誤変更を防止するため、モードプロテクトレジスタ３４がマッピングされているアドレスにライトアクセスを行うようにしても良い。
【０２０６】
次に、メインＣＰＵ１１がレジスタ２２ａ、２３ａ、２４ａにアクセスする場合のコントローラ１３の動作について、図１８及び図１９を参照して説明する。前述したように、図１８に示す第２バスサイクル及び図１９に示す第３及び第４バスサイクルは、レジスタ２２ａ、２３ａ、２４ａにアクセスするバスサイクルの例である。
【０２０７】
メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳをアサートし（図１８のタイミングＴＭ６６参照）、その後リード信号ＸＲＤをアサートする（図１８のタイミングＴＭ６７参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａのいずれかがマッピングされているアドレスを出力する（図示せず）。
【０２０８】
ここで図７を参照すると、チップセレクト信号ＸＣＳとリード信号ＸＲＤの両方がアサートされると（図１８のタイミングＴＭ６７参照）、ＡＮＤゲート回路３１ｇの出力信号であるリードアクセス信号は、Ｈレベルとなる。
【０２０９】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが出力されると、第４〜第６アドレス検出信号のいずれかがＨレベルとなる。そして、上述したようにリードアクセス信号がＨレベルとなると（図１６のタイミングＴＭ６７参照）、レジスタ２２ａ、２３ａ、２４ａへのリードアクセスが行われることになる。
【０２１０】
その後、メインＣＰＵ１１が、リード信号ＸＲＤをネゲートすると（図１８のタイミングＴＭ６８参照）、ＡＮＤゲート回路３１ｇの出力信号であるリードアクセス信号は、ＨレベルからＬレベルに変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳをネゲートする（図１８のタイミングＴＭ６９参照）ことで、第２バスサイクルが終了する。
【０２１１】
次に図１９を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳをアサートし（図１９のタイミングＴＭ７０参照）、その後ライトストローブ信号ＸＷＲをアサートする（図１９のタイミングＴＭ７１参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａのいずれかがマッピングされているアドレスを、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上に、レジスタ２２ａ、２３ａ、２４ａに書き込むためのコマンド及び／又はデータを、それぞれ出力する（図示せず）。なお、ここでは、アドレス信号のＬＳＢであるＣＡ［０］がＨレベル、すなわち奇数アドレスへのアクセスであるものとする。
【０２１２】
ここで図７を参照すると、アドレス信号ライトストローブ信号ＸＷＲがアサートされると（図１９のタイミングＴＭ７１参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、Ｈレベルとなる。なお、下位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１９のタイミングＴＭ７２参照）から所与の期間だけＡＮＤゲート回路３１ｉの出力信号である下位バイトライトアクセス非同期信号がＨレベルとなる。
【０２１３】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが出力されると、第４〜第６アドレス検出信号のいずれかがＨレベルとなる。そして、上述したように下位バイトライトアクセス信号がＨレベルとなると（図１９のタイミングＴＭ７１参照）、レジスタ２２ａ、２３ａ、２４ａへのライトアクセスが行われることになる。
【０２１４】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１９のタイミングＴＭ７３参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳをネゲートする（図１９のタイミングＴＭ７４参照）ことで、第３バスサイクルが終了する。
【０２１５】
次に、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳをアサートし（図１９のタイミングＴＭ７５参照）、その後ライトストローブ信号ＸＷＲをアサートする（図１９のタイミングＴＭ７４参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａのいずれかがマッピングされているアドレスを、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上に、レジスタ２２ａ、２３ａ、２４ａに書き込むためのコマンド及び／又はデータを、それぞれ出力する（図示せず）。なお、ここでは、アドレス信号のＬＳＢであるＣＡ［０］がＬレベル、すなわち偶数アドレスへのアクセスであるものとする。
【０２１６】
ここで図７を参照すると、アドレス信号ライトストローブ信号ＸＷＲがアサートされると（図１９のタイミングＴＭ７６参照）、セレクタ３１ａの出力信号である上位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｃの出力信号である上位バイトストローブ信号及びＡＮＤゲート回路３１ｅの出力信号である上位バイトライトアクセス信号は、Ｈレベルとなる。なお、上位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図１９のタイミングＴＭ７７参照）から所与の期間だけＡＮＤゲート回路３１ｈの出力信号である上位バイトライトアクセス非同期信号がＨレベルとなる。
【０２１７】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上にレジスタ２２ａ、２３ａ、２４ａがマッピングされているアドレスが出力されると、第４〜第６アドレス検出信号のいずれかがＨレベルとなる。そして、上述したように上位バイトライトアクセス信号がＨレベルとなると（図１９のタイミングＴＭ７６参照）、レジスタ２２ａ、２３ａ、２４ａへのライトアクセスが行われることになる。
【０２１８】
その後、メインＣＰＵ１１が、ライトストローブ信号ＸＷＲをネゲートすると（図１９のタイミングＴＭ７８参照）、セレクタ３１ａの出力信号である上位バイトストローブ前信号は、ＬレベルからＨレベルに変化し、セレクタ３１ｃの出力信号である上位バイトストローブ信号及びＡＮＤゲート回路３１ｅの出力信号である上位バイトライトアクセス信号は、ＨレベルからＬレベルにそれぞれ変化する。さらに、その後、メインＣＰＵ１１が、チップセレクト信号ＸＣＳをネゲートする（図１９のタイミングＴＭ７９参照）ことで、第４バスサイクルが終了する。
【０２１９】
以上説明したように、本実施形態によれば、バスに関するモードを設定するための外部端子を設けることなく、バスに関する複数のモードで動作することができる。
【０２２０】
また、コントローラ１３が有する複数の制御信号入力端子の内の３つの端子Ｐ０〜Ｐ２のピンアサインを図６に示すようなピンアサインにすることにより、データを書き込むための制御信号の種類及び／又はタイミングに関する複数のモード、バス上に出力されるデータの並び順に関する複数のモード若しくはバス上に出力可能な最大データ幅に関する複数のモード又はこれらの組み合わせのいずれのＣＰＵに接続された場合であっても、モードの変更を行うことができるようになる。
【０２２１】
また、コントローラ１３のモードの変更をメインＣＰＵ１１が行うことができるようになる。
【０２２２】
５．  比較例
次に、本実施形態の比較例について説明する。
図２０に本比較例のモード設定レジスタ４１を示す。このモード設定レジスタ４１は、本実施形態のモード設定レジスタ３３（図１１参照）に置き換えて利用する。本比較例のその他の構成は、本実施形態と同様である。
【０２２３】
モード設定レジスタ４１は、モード設定レジスタ３３のフリップフロップ３３ｅを削除し、フリップフロップ３３ｄの出力信号をエンディアン信号且つスワップ信号としたものである。
【０２２４】
図２１は、メインＣＰＵ１１のＣＰＵバスＢ１のデータバス上に出力可能な最大データ幅に関するモードが１６ビットモード且つメインＣＰＵ１１のコントローラ１３にデータを書き込むための制御信号に関するモードがＢＥモード且つＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードがＬｉｔｔｌｅ  Ｅｎｄｉａｎである場合における本比較例のタイミングチャートである。なお、図２１に示すバスサイクルは、本比較例のバス関連モードを変更するためのバスサイクルである。
【０２２５】
この場合、メインＣＰＵ１１は、本比較例のデータを書き込むための制御信号に関するモードをＳｔｒｏｂｅモードからＢＥモードに、ＣＰＵバスＢ１のデータバス上に出力するデータの並び順に関するモードをＢｉｇ  ＥｎｄｉａｎからＬｉｔｔｌｅ  Ｅｎｄｉａｎに、それぞれ変更する必要がある。すなわち、メインＣＰＵ１１は、アドレス"０ｘ００７４"にデータ"０ｘ０６"をライトするライトアクセスを行う必要がある。なお、この場合、初期時においては、レジスタアクセス信号生成部３１が出力する上位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とハイバイトイネーブル信号ＸＢＥＨの反転との論理積である（図６〜図８等参照）。また、レジスタアクセス信号生成部３１が出力する下位バイトライトアクセス信号は、チップセレクト信号ＸＣＳの反転とライトストローブ信号ＸＷＲの反転との論理積である（図６〜図８等参照）。さらに、レジスタアクセス信号生成部３１が出力するリードアクセス信号は、チップセレクト信号ＸＣＳの反転とリード信号ＸＲＤの反転との論理積である（図７参照）。
【０２２６】
図２１を参照すると、メインＣＰＵ１１は、ＣＰＵバスＢ１の制御バス上のチップセレクト信号ＸＣＳ及びローバイトイネーブル信号ＸＢＥＬをアサートし（図２１のタイミングＴＭ８１参照）、その後ライトストローブ信号ＸＷＲをアサートする（図２１のタイミングＴＭ８２参照）。また、メインＣＰＵ１１は、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７４"を、ＣＰＵバスＢ１のデータバスＣＤ［７：０］上に"０ｘ０６"を、それぞれ出力する（図示せず）。
【０２２７】
ここで図６〜図８を参照すると、ライトストローブ信号ＸＷＲがアサートされると（図２１のタイミングＴＭ８２参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルとなり、セレクタ３１ｄの出力信号である下位バイトストローブ信号及びＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号は、Ｈレベルとなる。そして、下位バイトライトアクセス信号がＨレベルとなったときから所与の時間経過後（図２１のタイミングＴＭ８３参照）から所与の期間だけ、ＡＮＤゲート回路３１ｉの出力信号である下位バイトライトアクセス非同期信号が、Ｈレベルとなる。
【０２２８】
ここで図９を参照すると、ＣＰＵバスＢ１のアドレスバスＣＡ［１５：０］上に"０ｘ００７４"が出力されると、第１アドレス検出信号がＨレベルとなる。そして、上述したように、下位バイトライトアクセス非同期信号がＨレベルとなると（図２１のタイミングＴＭ８３参照）、ＡＮＤゲート回路３２ｂの出力信号であるバス関連モード設定書込信号が、Ｈレベルとなる。
【０２２９】
ここで図２０を参照すると、上述したようにバス関連モード設定書込信号がＨレベルになると、前述したようにモードプロテクト信号の初期値はＬレベルであるので、ＡＮＤゲート回路３３ａの出力信号は、Ｈレベルになる。従って、フリップフロップ３３ｂ〜３３ｄは、ＣＰＵバスＢ１のデータバス上のデータＣＤ［１］、ＣＤ［０］及びＣＤ［２］を、それぞれ取り込む。ここでは、前述したようにＣＰＵバスＢ１のデータバス上には"０ｘ０６"が出力されているので、フリップフロップ３３ｂの出力信号であるデータ書込制御モード信号及びフリップフロップ３３ｄの出力信号であるエンディアン信号及びスワップ信号は、ＬレベルからＨレベルにそれぞれ変化する（図２１のタイミングＴＭ８３参照）。一方、フリップフロップ３３ｃの出力信号である８／１６ビット信号は、Ｌレベルのまま変化しない。
【０２３０】
ここで図７を参照すると、初期時からライトストローブ信号ＸＷＲを下位バイトストローブ前信号として選択出力していたセレクタ３１ｂは、上述したようにデータ書込制御モード信号がＨレベルになると（図２１のタイミングＴＭ８３参照）、ライトストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬとの論理和を下位バイトストローブ前信号として出力するようになる（図６及び図８参照）。但し、図２１のタイミングＴＭ８３において、ライトストローブ信号ＸＷＲとローバイトイネーブル信号ＸＢＥＬは共にＬレベルである。そのため、下位バイトストローブ前信号の生成の基となる信号は違う信号に変わるものの、下位バイトストローブ前信号は、結果的にはＬレベルのまま変化しないことになる。
【０２３１】
また、初期時からハイバイトイネーブル信号ＸＢＥＨを上位バイトストローブ前信号として選択出力していたセレクタ３１ａは、上述したようにデータ書込制御モード信号がＨレベルになると（図２１のタイミングＴＭ８３参照）、ライトストローブ信号ＸＷＲとハイバイトイネーブル信号ＸＢＥＨとの論理和を上位バイトストローブ前信号として出力するようになる（図６参照）。但し、図２１のタイミングＴＭ８３において、ハイバイトイネーブル信号ＸＢＥＨはＨレベルである。そのため、上位バイトストローブ前信号の生成の基となる信号は違う信号に変わるものの、上位バイトストローブ前信号は、結果的にはＨレベルのまま変化しないことになる。
【０２３２】
ところが、初期時からセレクタ３１ａの出力信号である上位バイトストローブ前信号を反転して上位バイトストローブ信号として出力していたセレクタ３１ｃは、上述したようにスワップ信号がＨレベルになると（図２１のタイミングＴＭ８３参照）、セレクタ３１ｂの出力信号である下位バイトストローブ前信号を反転して上位バイトストローブ信号として出力するようになる。このとき、セレクタ３１ｂの出力信号である下位バイトストローブ前信号はＬレベルであるので、セレクタ３１ｃの出力信号である上位バイトストローブ信号は、ＬレベルからＨレベルに変化する（図２１のタイミングＴＭ８３参照）また、セレクタ３１ｃの出力信号である上位バイトストローブ信号がＬレベルからＨレベルに変化すると、ＡＮＤゲート回路３１ｅの出力信号である上位バイトライトアクセス信号も、ＬレベルからＨレベルに変化する。
【０２３３】
一方、初期時からセレクタ３１ｂの出力信号である下位バイトストローブ前信号を反転して下位バイトストローブ信号として出力していたセレクタ３１ｄは、上述したようにスワップ信号がＨレベルになると（図２１のタイミングＴＭ８３参照）、セレクタ３１ａの出力信号である上位バイトストローブ前信号を反転して下位バイトストローブ信号として出力するようになる。このとき、セレクタ３１ａの出力信号である上位バイトストローブ前信号はＨレベルであるので、セレクタ３１ｄの出力信号である下位バイトストローブ信号は、ＨレベルからＬレベルに変化する（図２１のタイミングＴＭ８３参照）また、セレクタ３１ｄの出力信号である下位バイトストローブ信号がＨレベルからＬレベルに変化すると、ＡＮＤゲート回路３１ｆの出力信号である下位バイトライトアクセス信号も、ＨレベルからＬレベルに変化する。
【０２３４】
このように、１つのライトバスサイクルの中で下位バイトストローブ信号と上位バイトストローブ信号の両方がＨレベルになると、誤動作を招き得る。
【０２３５】
一方、本実施形態によれば、図１５に示す第１バスサイクルでエンディアン信号をＨレベルに変化させ、図１５に示す第２バスサイクルでスワップ信号をＨレベルに変化させるようにしている。これにより、１つのライトバスサイクルの中で下位バイトストローブ信号と上位バイトストローブ信号の両方がＨレベルになるということが起こることがなく、誤動作を防止することが可能である。
【０２３６】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置や電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。例えばＵＳＢは、ＩＥＥＥ１３９４やシリアルＡＴＡやＣＥ−ＡＴＡのバスであってもよい。
【図面の簡単な説明】
【０２３７】
【図１】１６ビットＢＥモードのタイミングチャート。
【図２】１６ビットＳｔｒｏｂｅモードのタイミングチャート。
【図３】Ｂｉｇ  Ｅｎｄｉａｎ及びＬｉｔｔｌｅ  Ｅｎｄｉａｎの説明図。
【図４】本実施形態の構成例を示す図。
【図５】図４のＣＰＵインタフェース部の構成例を示す図。
【図６】本実施形態の端子のピンアサインの例を示す図。
【図７】図５のレジスタアクセス信号生成部の構成例を示す図。
【図８】図７のセレクタの動作の説明図。
【図９】図５のモードプロテクトレジスタの構成例を示す図。
【図１０】図５のモードプロテクトレジスタの構成例を示す図。
【図１１】図５のモード設定レジスタの構成例を示す図。
【図１２】メインＣＰＵ１１の種類とバス関連モード変更処理との関係を示す図。
【図１３】本実施形態の動作を示すフローチャート。
【図１４】本実施形態の動作を示すフローチャート。
【図１５】本実施形態の動作を示すタイミングチャート。
【図１６】本実施形態の動作を示すタイミングチャート。
【図１７】本実施形態の動作を示すフローチャート。
【図１８】本実施形態の動作を示すタイミングチャート。
【図１９】本実施形態の動作を示すタイミングチャート。
【図２０】変形例のモード設定レジスタの構成例を示す図。
【図２１】変形例の動作を示すタイミングチャート。
【符号の説明】
【０２３８】
１  電子機器、２  ＵＳＢ機器、１１  ＣＰＵ、１２  ＲＡＭ、１３  コントローラ、
２１  ＣＰＵインタフェース部、２２  ＵＳＢインタフェース部、２３  ＦＩＦＯ部、
２４  ＤＭＡ処理部、２２ａ、２３ａ、２４ａ  レジスタ、
３１  レジスタアクセス信号生成部、３２  アドレスデコーダ、
３２ａ  アドレスデコード回路、  ３３、４１  モード設定レジスタ、
３４  モードプロテクトレジスタ、３１ａ〜３１ｄ  セレクタ、
３１ｅ〜３１ｉ、３２ｂ〜３２ｄ、３３ａ  ＡＮＤゲート回路、
３１ｊ〜３１ｍ  遅延素子、３３ｂ〜３３ｅ、３４ａ〜３４ｈ  フリップフロップ、
３４ｉ  デコード回路
【図１】
2009026162.tif 000003
【図２】
2009026162.tif 000004
【図３】
2009026162.tif 000005
【図４】
2009026162.tif 000006
【図５】
2009026162.tif 000007
【図６】
2009026162.tif 000008
【図７】
2009026162.tif 000009
【図８】
2009026162.tif 000010
【図９】
2009026162.tif 000011
【図１０】
2009026162.tif 000012
【図１１】
2009026162.tif 000013
【図１２】
2009026162.tif 000014
【図１３】
2009026162.tif 000015
【図１４】
2009026162.tif 000016
【図１５】
2009026162.tif 000017
【図１６】
2009026162.tif 000018
【図１７】
2009026162.tif 000019
【図１８】
2009026162.tif 000020
【図１９】
2009026162.tif 000021
【図２０】
2009026162.tif 000022
【図２１】
2009026162.tif 000023