(57)【要約】【課題】効率よくエンディアン変換が可能なエンディアン変換回路を提供する。【解決手段】アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部１１と、エンディアン変換部１２を有し、エンディアン変換部１２は、データ保持部１１へアクセスするアドレス信号の最下位ビットの値に基づいて、データ保持部１１への書き込みデータ、またはデータ保持部１１からの読み出しデータｄ１に対してエンディアン変換を行う。【選択図】図１
2011039964.tif 000002
【特許請求の範囲】
【請求項１】
アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、
前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするエンディアン変換回路。
【請求項２】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項１記載のエンディアン変換回路。
【請求項３】
アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部へアクセスするアドレス信号が、前記データ保持部の偶数アドレスまたは奇数アドレスのいずれを指定しているのか判定し、
前記判定結果に基づきエンディアン変換部が、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うことを特徴とするエンディアン変換方法。
【請求項４】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出し、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項３記載のエンディアン変換方法。
【請求項５】
アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、
エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、
前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするマイクロコントローラ。
【請求項６】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時の、前記プロセッサからのアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項５記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンディアン変換回路、エンディアン変換方法及びマイクロコントローラに関する。
【背景技術】
【０００２】
複数バイトのデータをメモリ上に配置する方式として、リトルエンディアン、ビッグエンディアンなどが知られている。エンディアンとは、２バイト以上のデータ量を持つ数値データを記録したり転送するときには１バイトごとに分割するが、その際の記録／転送を行う順番のことをいう。最上位のバイトから順番に記録／送信する方式を ビッグエンディアン、最下位のバイトから順番に記録／送信する方式をリトルエンディアンという。
【０００３】
互いに異なるエンディアン方式が用いられているＣＰＵ（Central Processing Unit）などのプロセッサ、通信マクロまたはメモリマクロなどの間で、複数バイトのデータを転送して処理するには、エンディアン変換を行う必要がある。
【０００４】
エンディアン変換の手法として、プログラムで行うものがある。
たとえば、ＣＰＵが自身のエンディアン方式と異なるエンディアン方式である通信マクロからデータを受信した場合、ＣＰＵがエンディアン変換プログラムを実行してエンディアン変換を行う。通信マクロへのデータ転送時にも、ＣＰＵが、予め入出力マクロのエンディアン方式への変換を行ったのち、データを転送する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−３０５６２８号公報
【特許文献２】特開２００１−２６１５０号公報
【特許文献３】特開２００４−３５５４３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、プロセッサがエンディアン変換プログラムを実行して、データ並びを変換させる必要があり、プロセッサの動作効率が悪くなる問題がある。
上記の点を鑑みて、本発明は、効率よくエンディアン変換が可能なエンディアン変換回路、エンディアン変換方法及びマイクロコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、以下のようなエンディアン変換回路が提供される。
このエンディアン変換回路は、アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有する。
【０００８】
また、上記目的を達成するために、以下のようなマイクロコントローラが提供される。
このマイクロコントローラは、アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有する。
【発明の効果】
【０００９】
開示のエンディアン変換回路、エンディアン変換方法及びマイクロコントローラによれば、効率よくエンディアン変換が可能になる。
【図面の簡単な説明】
【００１０】
【図１】エンディアン変換回路の一例の構成を示す図である。
【図２】データ保持部への書き込みアクセス時のエンディアン変換の様子を示す図である。
【図３】偶数アドレスが指定された場合の、データ保持部からのデータ読み出しの様子を示す図である。
【図４】偶数アドレスが指定された場合の、データ保持部へのデータ書き込みの様子を示す図である。
【図５】マイクロコントローラの一例の構成を示す図である。
【図６】通信マクロ内に設けられたエンディアン変換回路の一例を示す図である。
【図７】データ読み出し時のマイクロコントローラの処理の流れを示すフローチャートである。
【図８】データ書き込み時のマイクロコントローラの処理の流れを示すフローチャートである。
【図９】データ書き込み時にエンディアン変換を行う様子を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、エンディアン変換回路の一例の構成を示す図である。
【００１２】
以降述べるエンディアンについて、たとえば、１２３４ＡＢＣＤHという４バイトのデータを上位バイトから「１２H  ３４H  ＡＢH  ＣＤH」と並べる方式をビッグエンディアンとし、下位バイトから「ＣＤH  ＡＢH  ３４H  １２H」と並べる方式をリトルエンディアンとする。なお、下付きのＨは、その数値が１６進数であることを示している。
【００１３】
エンディアン変換回路１０は、データ保持部１１とエンディアン変換部１２を有している。
データ保持部１１は、たとえば、ＦＩＦＯ（First-In First-Out）回路などのバッファやメモリである。データ保持部１１は、たとえば、図示しない通信マクロ及びプロセッサ間のデータ転送の際に、一時的にデータを保持する機能を有する。
【００１４】
なお、図１の例では、データ保持部１１に、４バイトで１ワードのデータｄ１がリトルエンディアンで格納されている様子が示されている。データｄ１の１バイト目が１０００番地に格納され、２バイト目が１００１番地に格納され、３バイト目が１００２番地に格納され、４バイト目が１００３番地に格納されている。
【００１５】
データ保持部１１に対して与えられるアドレス信号は、たとえば、チップ内のプロセッサから出力される。プロセッサから出力されるアドレス信号の下位ビットを丸めこまず、フルアドレスアクセスできることが本実施の形態において前提である。ただし、データ保持部１１ではワードアクセスあるいはハーフワードアクセスの時はアドレスの最下位ビットは無視される。つまりデータ保持部１１はフルアドレスデコードせず、アドレスの最下位ビットはドントケアビット（don't care bit）として処理される。一方、エンディアン変換回路１０にはアドレスの最下位ビットが、エンディアン変換を行うか行わないかを示す情報として入力される。
【００１６】
エンディアン変換部１２は、たとえば、セレクタを用いて実現可能である。エンディアン変換部１２は、データ保持部１１へアクセスするアドレス信号が、データ保持部１１の偶数アドレスまたは奇数アドレスのいずれか一方を指定しているか判定する。具体的には、エンディアン変換部１２は、アドレス信号の最下位ビットを検出して、アドレス信号が、偶数アドレス（最下位ビットが０）を指定しているのか、奇数アドレス（最下位ビットが１）を指定しているのか判定する。そして、エンディアン変換部１２は、アドレス信号が偶数アドレスまたは奇数アドレスのいずれか一方である場合に、データ保持部１１への書き込みデータまたはデータ保持部１１からの読み出しデータに対してエンディアン変換を行う。
【００１７】
なお、エンディアン変換回路１０は、データ保持部１１に、図示しないプロセッサや通信インターフェースなどから転送されてくる１ワード（またはハーフワード）のデータごと、アドレス信号により、エンディアン変換するか否か決定できる。
【００１８】
以下、エンディアン変換回路１０の動作を説明する。
なお、以下の例では、エンディアン変換部１２は、アドレス信号でデータ保持部１１の奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとして説明する。
【００１９】
たとえば、エンディアン変換回路１０が、リトルエンディアンでデータを扱う通信マクロと、ビッグエンディアンでデータを扱うプロセッサ間に設けられた場合、エンディアン変換回路１０は、以下のような動作を行う。
【００２０】
たとえば、通信マクロにより、リトルエンディアンでデータ保持部１１に保持されているデータｄ１をプロセッサが読み出す際、プロセッサは、アドレス信号により、データ保持部１１の１００１番地または１００３番地を指定して読み出しアクセスする。このとき、アドレス信号は奇数アドレスであるので、最下位ビットは１となり、エンディアン変換部１２は、エンディアン変換を実行する。すなわち、エンディアン変換部１２は、リトルエンディアンのデータ並びのデータｄ１を、ビッグエンディアンのデータ並びのデータｄ１ａに変換する。
【００２１】
これにより、リトルエンディアンとは逆のデータ並びとなるビッグエンディアンのプロセッサでも、データｄ１と同じ内容のデータｄ１ａとして処理可能になる。
次に、データ保持部１１への書き込みアクセス時にエンディアン変換を施す場合の、エンディアン変換回路１０の動作を説明する。
【００２２】
図２は、データ保持部への書き込みアクセス時のエンディアン変換の様子を示す図である。
たとえば、ビッグエンディアンのプロセッサから、データｄ１ａを、リトルエンディアンで転送するためのバッファとして用いるデータ保持部１１に書き込む場合、エンディアン変換部１２は、以下のような動作を行う。
【００２３】
書き込みアクセス時のアドレス信号が、１００１番地または１００３番地のような奇数アドレスを指定している場合、エンディアン変換部１２は、プロセッサ側からのビッグエンディアンのデータ並びのデータｄ１ａをリトルエンディアンに変換する。そして、データ保持部１１の１０００番地にデータｄ１ａの１バイト目を、１００１番地に２バイト目を、１００２番地に３バイト目と、１００３番地に４バイト目をそれぞれ格納する。
【００２４】
これにより、リトルエンディアンの通信マクロでも、データｄ１ａと同じ内容のデータｄ１として処理可能になる。
なお、上記では、データ保持部１１がリトルエンディアンでデータを扱い、プロセッサがビッグエンディアンでデータを扱う場合について説明したが、これが逆である場合にも同様にエンディアン変換を行うことができる。すなわち、データ保持部１１がビッグエンディアンでデータを扱い、プロセッサがリトルエンディアンでデータを扱う場合にも、エンディアン変換部１２は、アドレス信号が奇数アドレスを指定している場合には一方のデータをエンディアン変換して他方に転送する。
【００２５】
エンディアン変換部１２は、データ保持部１１への読み出しアクセスまたは書き込みアクセス時のアドレス信号が偶数アドレスを指定する場合に、エンディアン変換を行わない。
【００２６】
たとえば、通信マクロとプロセッサが両方ともリトルエンディアンでデータを扱う場合、図３及び図４で示すような動作が行われる。
図３は、偶数アドレスが指定された場合の、データ保持部からのデータ読み出しの様子を示す図である。
【００２７】
読み出しアクセスの際、アドレス信号で偶数アドレス（最下位ビットが０）が指定されている場合、エンディアン変換部１２は、エンディアン変換を行わず、データ保持部１１のリトルエンディアンの並びのデータｄ１をそのまま転送する。
【００２８】
通信マクロとプロセッサが両方ともビッグエンディアンでデータを扱う場合も同様に、エンディアン変換部１２は、データ保持部１１に保持されたビッグエンディアンの並びのデータを、エンディアン変換せずに、そのまま読み出せばよい。
【００２９】
図４は、偶数アドレスが指定された場合の、データ保持部へのデータ書き込みの様子を示す図である。
書き込みアクセスの際、アドレス信号で偶数アドレスが指定されると、エンディアン変換部１２は、エンディアン変換を行わず、プロセッサ側からのリトルエンディアンの並びのデータｄ１ａを、データ保持部１１に書き込む。
【００３０】
通信マクロとプロセッサが両方ともビッグエンディアンでデータを扱う場合も同様に、エンディアン変換部１２は、プロセッサ側からのリトルエンディアンの並びのデータを、エンディアン変換せずに、データ保持部１１に書き込めばよい。
【００３１】
以上のように、本実施の形態のエンディアン変換回路１０では、データ保持部１１へアクセスするアドレス信号が、偶数アドレスまたは奇数アドレスを指定しているかによって、エンディアン変換を行うか否かを決定している。これにより、簡単にエンディアン変換の要否が判定可能となり、エンディアン変換の要否を設定するためのレジスタやスイッチなどのハードウェア構成などを付加することなく、効率よくエンディアン変換が可能となる。また、プログラムによるデータのスワップも不要となり、プログラム効率が向上する。
【００３２】
なお、上記の説明では、エンディアン変換部１２は、アドレス信号で奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとしたが、これに限定されない。エンディアン変換部１２は、アドレス信号で偶数アドレスが指定されている場合にエンディアン変換を行い、奇数アドレスが指定されている場合にはエンディアン変換を行わないようにしてもよい。
【００３３】
また、上記の説明では、エンディアン変換部１２は、アドレス信号が偶数アドレスまたは奇数アドレスかを判定して、エンディアン変換を行うか否かを決定する場合について説明したが、さらに、アクセスサイズを考慮してもよい。詳細は後述するが、バイトごとのアクセスが行われる場合には、エンディアン変換を行わなくてよいので、エンディアン変換を無効とし、複数バイト（たとえば、ハーフワードまたはワード）のアクセスの場合にエンディアン変換を有効とするようにしてもよい。
【００３４】
次に、上記のようなエンディアン変換回路を、マイクロコントローラに適用した場合を例にして説明する。
（第２の実施の形態）
図５は、マイクロコントローラの一例の構成を示す図である。
【００３５】
以降述べるエンディアンについて、たとえば、１２３４ＡＢＣＤHという４バイトのデータを上位バイトから「１２H  ３４H  ＡＢH  ＣＤH」と並べる方式をビッグエンディアンとし、下位バイトから「ＣＤH  ＡＢH  ３４H  １２H」と並べる方式をリトルエンディアンとする。なお、下付きのＨは、その数値が１６進数であることを示している。
【００３６】
マイクロコントローラ２０は、プロセッサ２１、ＲＡＭ（Random Access Memory）２２、フラッシュメモリ２３、バスコンバータ２４、バスブリッジ２５、周辺回路２６，２７、通信マクロ２８，２９を有している。
【００３７】
プロセッサ２１は、たとえば、ＣＰＵやＤＳＰ（Digital Signal Processor）などであり、マイクロコントローラ２０の各部を制御する。また、プロセッサ２１は、通信マクロ２８，２９の、後述のデータ保持部にアクセスする際、たとえば、アドレスの下位ビットを丸めこまず、フルアドレスアクセスする。ただし、データ保持部１１ではワードアクセスあるいはハーフワードアクセスの時はアドレスの最下位ビットは無視される。つまりデータ保持部１１はフルアドレスデコードせず、アドレスの最下位ビットはドントケアビット（don't care bit）として処理される。一方、エンディアン変換回路１０にはアドレスの最下位ビットが、エンディアン変換を行うか行わないかを示す情報として入力される。
【００３８】
ＲＡＭ２２は、プロセッサ２１が実行途中のプログラムや、演算途中のデータを格納する。
フラッシュメモリ２３は、プロセッサ２１が実行するＯＳ（Operation System）や、各種プログラム、各種データを格納する。
【００３９】
バスコンバータ２４は、プロセッサ２１、ＲＡＭ２２、フラッシュメモリ２３及び内部バスｂｓとのインターフェースとして機能し、たとえば、３２ビットと１６ビットの変換機能なども有する。
【００４０】
バスブリッジ２５は、内部バスｂｓ１と、周辺バスｂｓ２とを接続する。
周辺回路２６，２７は、割りこみコントローラや、ウォッチドッグタイマなどであり、周辺バスｂｓ２に接続されている。
【００４１】
通信マクロ２８，２９は、マイクロコントローラ２０の外部との通信を行うためのインターフェース回路である。通信マクロ２８，２９は、たとえば、ＵＳＢ（Universal Serial Bus）や、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）、Ｉ2Ｃバス、ＣＡＮ（Controller Area Network）バス、ＩＥ（Inter Equipment）バスなどのインターフェース回路である。図１で示したような、エンディアン変換回路１０は、たとえば、通信マクロ２８，２９内に設けられる。
【００４２】
なお、図５では、２つの通信マクロ２８，２９を示しているが、１つでも３つ以上であってもよい。
図６は、通信マクロ内に設けられたエンディアン変換回路の一例を示す図である。
【００４３】
通信マクロ２８は、データ保持部２８１、エンディアン変換部２８２を有しており、これらが、図１で示したようなエンディアン変換回路として機能する。すなわち、データ保持部２８１は、図１のデータ保持部１１に対応し、エンディアン変換部２８２は、図１のエンディアン変換部１２に対応している。ただし、図６に示されている構成では、エンディアン変換部２８２は、エンディアン変換を行うエンディアン変換セレクタ２８２ａのほかに、アクセスサイズ検出部２８２ｂを有している。
【００４４】
アクセスサイズ検出部２８２ｂは、データ保持部２８１へアクセスするアドレス信号と、データ保持部２８１へのアクセスサイズを基に、エンディアン変換セレクタ２８２ａに、エンディアン変換を実行させるか否かを決定する。アクセスサイズ検出部２８２ｂは、バイトごとのアクセスが行われる場合には、エンディアン変換を行わなくてよいので、エンディアン変換を無効とし、複数バイトのアクセスの場合にエンディアン変換を有効とする。アクセスサイズ検出部２８２ｂは、エンディアン変換部２８２の外部にあってもよい。
【００４５】
なお、以下の説明では、エンディアン変換セレクタ２８２ａは、アドレス信号がデータ保持部２８１の奇数アドレス（最下位ビットが１）を指定している場合に、エンディアン変換を行う例を説明する。その場合、アクセスサイズ検出部２８２ｂは、たとえば、図６に示すように、ＯＲ回路２８２ｂ１と、ＡＮＤ回路２８２ｂ２とを用いて実現される。
【００４６】
ＯＲ回路２８２ｂ１には、複数バイトのアクセスとして、ワードアクセスかハーフワードアクセスなのかを示す２つの入力信号が、プロセッサ２１から入力される。ワードアクセスまたはハーフワードアクセスの場合には、ＯＲ回路２８２ｂ１には、１，０の信号が入力され、ＯＲ回路２８２ｂ１は、１を出力する。また、バイトアクセスの場合には、ＯＲ回路２８２ｂ１の２つの入力はともに０になり、ＯＲ回路２８２ｂ１は、０を出力する。
【００４７】
ＡＮＤ回路２８２ｂ２の一方の入力端子には、アドレス信号の最下位ビットが入力され、他方の入力端子には、ＯＲ回路２８２ｂ１の出力信号が入力される。ＯＲ回路２８２ｂ１の出力が１である場合、ＡＮＤ回路２８２ｂ２の出力は、アドレス信号の最下位ビットによって決まる。すなわち、ＡＮＤ回路２８２ｂ２は、最下位ビットが１の場合は１を出力し、最下位ビットが０の場合は０を出力する。一方、ＯＲ回路２８２ｂ１の出力が０である場合、ＡＮＤ回路２８２ｂ２の出力は、アドレスの信号の最下位ビットの値によらず０となり、エンディアン変換が無効となる。
【００４８】
なお、エンディアン変換部２８２は、通信マクロ２８の外に設けられていてもよい。
以下、通信マクロ２８がＰＣ３０とＵＳＢで通信するインターフェース回路である場合を例にして、マイクロコントローラ２０の動作を説明する。
【００４９】
まず、データ読み出し時における、マイクロコントローラ２０の動作を説明する。
図７は、データ読み出し時のマイクロコントローラの処理の流れを示すフローチャートである。
【００５０】
まず、通信マクロ２８は、ＰＣ３０からＵＳＢデータを受信してデータ保持部２８１に保持する（ステップＳ１）。図６では、１バイト目が０１H、２バイト目が２３H、３バイト目が４５H、４バイト目が６７Hという４バイトのデータｄ１０が、リトルエンディアンの並びで、データ保持部２８１の１００〜１０３番地に保持されている様子を示している。なお、下付きのＨは、その数値が１６進数であることを示している。
【００５１】
次にプロセッサ２１は、データ保持部２８１に対して読み出しアクセスを行う（ステップＳ２）。プロセッサ２１は、データ保持部２８１に対して、たとえば、バイトごとのアクセスか、複数バイト（ワードまたはハーフワード）ごとのアクセスを行う。プロセッサ２１は、ワードアクセスまたはハーフワードアクセスを行う場合には、図６で示したアクセスサイズ検出部２８２ｂのＯＲ回路２８２ｂ１の一方の入力端子に１を入力する。
【００５２】
また、プロセッサ２１は、ワードアクセスまたはハーフワードアクセスを行う際、自身がビッグエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ２８のデータ保持部２８１に対して、奇数アドレスでアクセスする。たとえば、プロセッサ２１は、１００〜１０３番地の１ワードのデータｄ１０を読み出す場合には、アドレス信号により１０１番地または１０３番地を指定して読み出しアクセスする。
【００５３】
一方、プロセッサ２１は、ワードアクセスまたはハーフワードアクセスを行う際、自身がリトルエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ２８のデータ保持部２８１に対して、偶数アドレスでアクセスする。たとえば、プロセッサ２１は、１００〜１０３番地の１ワードのデータｄ１０を読み出す場合には、アドレス信号により１００番地または１０２番地を指定して読み出しアクセスする。
【００５４】
次に、エンディアン変換部２８２は、プロセッサ２１からのアクセスサイズが複数バイト（ワードまたはハーフワード）アクセスか否かを判定する（ステップＳ３）。そして、エンディアン変換部２８２は、複数バイトアクセスが発生していると判定した場合には、次に、アドレス信号の最下位ビットが１か否かを判定する（ステップＳ４）。
【００５５】
具体的には、アクセスサイズ検出部２８２ｂは、ＯＲ回路２８２ｂ１の２つの入力端子の少なくともいずれか一方に１が入力されている場合には、複数バイトアクセスと判定する。一方、アクセスサイズ検出部２８２ｂは、ＯＲ回路２８２ｂ１の２つの入力端子の両方に０が入力されている場合には、バイトごとのアクセスと判定する。後者の場合、アクセスサイズ検出部２８２ｂは、アドレス信号の最下位ビットにかかわらず、エンディアン変換を無効にする。これにより、バイトアクセスの場合には、プロセッサ２１で指定されたアドレスの１バイトのデータが、エンディアン変換されずに読み出される（ステップＳ５）。
【００５６】
また、ステップＳ４の処理において最下位ビットが０と判定された場合にも、エンディアン変換部２８２は、ステップＳ５の処理を行う。エンディアン変換部２８２は、プロセッサ２１により、たとえば、１００番地または１０２番地を指定したワードアクセスがなされると、１００〜１０３番地の１ワード分のデータｄ１０を、エンディアン変換せずに読み出し、プロセッサ２１に送信する。また、プロセッサ２１により、１００番地を指定したハーフワードアクセスがなされた場合、エンディアン変換部２８２は、１００番地と１０１番地のハーフワード分のデータを、エンディアン変換せずに読み出し、プロセッサ２１に送信する。
【００５７】
一方、ステップＳ４の処理において最下位ビットが１と判定された場合、エンディアン変換部２８２は、エンディアン変換セレクタ２８２ａにより、データ保持部２８１に保持されているデータに対してエンディアン変換を行い、読み出す（ステップＳ６）。エンディアン変換部２８２は、プロセッサ２１により、たとえば、１０１番地または１０３番地を指定したワードアクセスがなされると、１００〜１０３番地の１ワード分のデータｄ１０を、図６のようなビッグエンディアンの並びのデータｄ１０ａに変換する。そして、エンディアン変換部２８２は、エンディアン変換したデータｄ１０ａを読み出し、プロセッサ２１に送信する。
【００５８】
次に、プロセッサ２１からのデータ書き込み時における、マイクロコントローラ２０の動作を説明する。
図８は、データ書き込み時のマイクロコントローラの処理の流れを示すフローチャートである。
【００５９】
また、図９は、データ書き込み時にエンディアン変換を行う様子を示す図である。
まずプロセッサ２１は、データ保持部２８１に対してデータの書き込みアクセスを行う（ステップＳ１０）。このとき、プロセッサ２１は、データ保持部２８１に対して、たとえば、バイトごとの書き込みアクセスか、複数バイト（たとえば、ワードまたはハーフワード）ごとの書き込みアクセスを行う。ワードアクセスまたはハーフワードアクセスを行う場合には、プロセッサ２１は、アクセスサイズ検出部２８２ｂのＯＲ回路２８２ｂ１の一方の入力端子に１を入力する。
【００６０】
また、プロセッサ２１は、ワードアクセスまたはハーフワードアクセスを行う際、自身がビッグエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ２８のデータ保持部２８１に対して、奇数アドレスでアクセスする。たとえば、プロセッサ２１は、１００〜１０３番地に１ワードのデータを書き込む場合には、アドレス信号により１０１番地または１０３番地を指定して書き込みアクセスする。
【００６１】
一方、プロセッサ２１は、ワードアクセスまたはハーフワードアクセスを行う際、自身がリトルエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ２８のデータ保持部２８１に対して、偶数アドレスでアクセスする。たとえば、プロセッサ２１は、１００〜１０３番地に１ワードのデータを書き込む場合には、アドレス信号により１００番地または１０２番地を指定して書き込みアクセスする。
【００６２】
次に、エンディアン変換部２８２は、プロセッサ２１からのアクセスサイズが複数バイト（ワードまたはハーフワード）アクセスか否かを判定する（ステップＳ１１）。そして、エンディアン変換部２８２は、複数バイトアクセスが発生していると判定した場合には、次に、アドレス信号の最下位ビットが１か否かを判定する（ステップＳ１２）。
【００６３】
具体的には、アクセスサイズ検出部２８２ｂは、ＯＲ回路２８２ｂ１の２つの入力端子の少なくともいずれか一方に１が入力されている場合には、複数バイトアクセスと判定する。一方、アクセスサイズ検出部２８２ｂは、ＯＲ回路２８２ｂ１の２つの入力端子の両方に０が入力されている場合には、バイトごとのアクセスと判定する。後者の場合、アクセスサイズ検出部２８２ｂは、アドレス信号の最下位ビットにかかわらず、エンディアン変換を無効にする。これにより、バイトアクセスの場合には、プロセッサ２１で指定されたデータ保持部２８１のアドレスに、プロセッサ２１側からの１バイトのデータが、エンディアン変換されずに書き込まれる（ステップＳ１３）。
【００６４】
また、ステップＳ１２の処理において最下位ビットが０と判定された場合にも、エンディアン変換部２８２は、ステップＳ１３の処理を行う。プロセッサ２１により、たとえば、データ保持部２８１の１００番地または１０２番地を指定したワードアクセスがなされると、エンディアン変換部２８２は、１００〜１０３番地に、１ワード分のデータｄ１０ａを、エンディアン変換せずに書き込む。また、プロセッサ２１により、１００番地を指定したハーフワードアクセスがなされた場合、エンディアン変換部２８２は、１００番地と１０１番地に、ハーフワード分のデータを、エンディアン変換せずに書き込む。
【００６５】
一方、ステップＳ１２の処理において最下位ビットが１と判定された場合、エンディアン変換部２８２は、プロセッサ２１側から送信されてきたデータに対してエンディアン変換を行い、データ保持部２８１に書き込む（ステップＳ１４）。エンディアン変換部２８２は、プロセッサ２１により、たとえば、データ保持部２８１の１０１番地または１０３番地を指定したワードアクセスがなされると、１ワード分のデータｄ１０ａを、図９のようなリトルエンディアンの並びのデータｄ１０に変換する。そして、エンディアン変換部２８２は、エンディアン変換したデータｄ１０を、データ保持部２８１の１００〜１０３番地に書き込む。そして、通信マクロ２８は、書き込んだデータｄ１０を、ＵＳＢデータとしてＰＣ３０に送信する（ステップＳ１５）。
【００６６】
以上のように、本実施の形態のマイクロコントローラ２０では、データ保持部２８１へアクセスするアドレス信号が、偶数アドレスまたは奇数アドレスを指定しているかによって、エンディアン変換を行うか否かを決定している。これにより、簡単にエンディアン変換の要否が判定可能となり、効率よくエンディアン変換が可能となる。
【００６７】
たとえば、エンディアンが異なる複数の通信マクロ２８，２９があった場合、プロセッサ２１では、偶数または奇数アドレスを指定するだけで、通信マクロ２８，２９ごとに、エンディアン変換をするか否か決定できる。
【００６８】
なお、上記では、エンディアン変換部２８２は、アドレス信号で奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとして説明したが、これに限定されない。エンディアン変換部２８２は、アドレス信号で偶数アドレスが指定されている場合にエンディアン変換を行い、奇数アドレスが指定されている場合にはエンディアン変換を行わないようにしてもよい。その場合、エンディアン変換セレクタ２８２ａは、アドレス信号の最下位ビットが０の場合に、エンディアン変換を行うようにする。また、アクセスサイズ検出部２８２ｂは、バイトアクセスの場合に、エンディアン変換セレクタ２８２ａに入力する出力信号を１に固定するような回路構成とすればよい。
【００６９】
また、アドレス信号により、ワードごと、またはハーフワードごとにエンディアン変換を行うか否かの設定を行うようにしてもよい。
以上、実施の形態に基づき、本発明のエンディアン変換回路、エンディアン変換方法及びマイクロコントローラの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【００７０】
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
（付記１）  アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、
前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするエンディアン変換回路。
【００７１】
（付記２）  前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記１記載のエンディアン変換回路。
【００７２】
（付記３）  前記アクセスサイズ検出部は、前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記２記載のエンディアン変換回路。
【００７３】
（付記４）  アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部へアクセスするアドレス信号が、前記データ保持部の偶数アドレスまたは奇数アドレスのいずれを指定しているのか判定し、
前記判定結果に基づきエンディアン変換部が、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うことを特徴とするエンディアン変換方法。
【００７４】
（付記５）  前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出し、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記４記載のエンディアン変換方法。
【００７５】
（付記６）  前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記５記載のエンディアン変換方法。
（付記７）  アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、
エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、
前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有することを特徴とするマイクロコントローラ。
【００７６】
（付記８）  前記データ保持部への書き込み時または前記データ保持部からの読み出し時の、前記プロセッサからのアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記７記載のマイクロコントローラ。
【００７７】
（付記９）  前記アクセスサイズ検出部は、前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記８記載のマイクロコントローラ。
【００７８】
（付記１０）  前記エンディアン変換部は、通信処理を行う通信マクロ内に配置されることを特徴とする付記７乃至９に記載のマイクロコントローラ。
【符号の説明】
【００７９】
１０  エンディアン変換回路
１１  データ保持部
１２  エンディアン変換部
ｄ１，ｄ１ａ  データ
【図１】
2011039964.tif 000003
【図２】
2011039964.tif 000004
【図３】
2011039964.tif 000005
【図４】
2011039964.tif 000006
【図５】
2011039964.tif 000007
【図６】
2011039964.tif 000008
【図７】
2011039964.tif 000009
【図８】
2011039964.tif 000010
【図９】
2011039964.tif 000011