説明

エンディアン変換回路、エンディアン変換方法及びマイクロコントローラ

【課題】効率よくエンディアン変換が可能なエンディアン変換回路を提供する。
【解決手段】アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部11と、エンディアン変換部12を有し、エンディアン変換部12は、データ保持部11へアクセスするアドレス信号の最下位ビットの値に基づいて、データ保持部11への書き込みデータ、またはデータ保持部11からの読み出しデータd1に対してエンディアン変換を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エンディアン変換回路、エンディアン変換方法及びマイクロコントローラに関する。
【背景技術】
【0002】
複数バイトのデータをメモリ上に配置する方式として、リトルエンディアン、ビッグエンディアンなどが知られている。エンディアンとは、2バイト以上のデータ量を持つ数値データを記録したり転送するときには1バイトごとに分割するが、その際の記録/転送を行う順番のことをいう。最上位のバイトから順番に記録/送信する方式を ビッグエンディアン、最下位のバイトから順番に記録/送信する方式をリトルエンディアンという。
【0003】
互いに異なるエンディアン方式が用いられているCPU(Central Processing Unit)などのプロセッサ、通信マクロまたはメモリマクロなどの間で、複数バイトのデータを転送して処理するには、エンディアン変換を行う必要がある。
【0004】
エンディアン変換の手法として、プログラムで行うものがある。
たとえば、CPUが自身のエンディアン方式と異なるエンディアン方式である通信マクロからデータを受信した場合、CPUがエンディアン変換プログラムを実行してエンディアン変換を行う。通信マクロへのデータ転送時にも、CPUが、予め入出力マクロのエンディアン方式への変換を行ったのち、データを転送する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−305628号公報
【特許文献2】特開2001−26150号公報
【特許文献3】特開2004−355432号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の技術では、プロセッサがエンディアン変換プログラムを実行して、データ並びを変換させる必要があり、プロセッサの動作効率が悪くなる問題がある。
上記の点を鑑みて、本発明は、効率よくエンディアン変換が可能なエンディアン変換回路、エンディアン変換方法及びマイクロコントローラを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、以下のようなエンディアン変換回路が提供される。
このエンディアン変換回路は、アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有する。
【0008】
また、上記目的を達成するために、以下のようなマイクロコントローラが提供される。
このマイクロコントローラは、アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有する。
【発明の効果】
【0009】
開示のエンディアン変換回路、エンディアン変換方法及びマイクロコントローラによれば、効率よくエンディアン変換が可能になる。
【図面の簡単な説明】
【0010】
【図1】エンディアン変換回路の一例の構成を示す図である。
【図2】データ保持部への書き込みアクセス時のエンディアン変換の様子を示す図である。
【図3】偶数アドレスが指定された場合の、データ保持部からのデータ読み出しの様子を示す図である。
【図4】偶数アドレスが指定された場合の、データ保持部へのデータ書き込みの様子を示す図である。
【図5】マイクロコントローラの一例の構成を示す図である。
【図6】通信マクロ内に設けられたエンディアン変換回路の一例を示す図である。
【図7】データ読み出し時のマイクロコントローラの処理の流れを示すフローチャートである。
【図8】データ書き込み時のマイクロコントローラの処理の流れを示すフローチャートである。
【図9】データ書き込み時にエンディアン変換を行う様子を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、エンディアン変換回路の一例の構成を示す図である。
【0012】
以降述べるエンディアンについて、たとえば、1234ABCDHという4バイトのデータを上位バイトから「12H 34H ABH CDH」と並べる方式をビッグエンディアンとし、下位バイトから「CDH ABH 34H 12H」と並べる方式をリトルエンディアンとする。なお、下付きのHは、その数値が16進数であることを示している。
【0013】
エンディアン変換回路10は、データ保持部11とエンディアン変換部12を有している。
データ保持部11は、たとえば、FIFO(First-In First-Out)回路などのバッファやメモリである。データ保持部11は、たとえば、図示しない通信マクロ及びプロセッサ間のデータ転送の際に、一時的にデータを保持する機能を有する。
【0014】
なお、図1の例では、データ保持部11に、4バイトで1ワードのデータd1がリトルエンディアンで格納されている様子が示されている。データd1の1バイト目が1000番地に格納され、2バイト目が1001番地に格納され、3バイト目が1002番地に格納され、4バイト目が1003番地に格納されている。
【0015】
データ保持部11に対して与えられるアドレス信号は、たとえば、チップ内のプロセッサから出力される。プロセッサから出力されるアドレス信号の下位ビットを丸めこまず、フルアドレスアクセスできることが本実施の形態において前提である。ただし、データ保持部11ではワードアクセスあるいはハーフワードアクセスの時はアドレスの最下位ビットは無視される。つまりデータ保持部11はフルアドレスデコードせず、アドレスの最下位ビットはドントケアビット(don't care bit)として処理される。一方、エンディアン変換回路10にはアドレスの最下位ビットが、エンディアン変換を行うか行わないかを示す情報として入力される。
【0016】
エンディアン変換部12は、たとえば、セレクタを用いて実現可能である。エンディアン変換部12は、データ保持部11へアクセスするアドレス信号が、データ保持部11の偶数アドレスまたは奇数アドレスのいずれか一方を指定しているか判定する。具体的には、エンディアン変換部12は、アドレス信号の最下位ビットを検出して、アドレス信号が、偶数アドレス(最下位ビットが0)を指定しているのか、奇数アドレス(最下位ビットが1)を指定しているのか判定する。そして、エンディアン変換部12は、アドレス信号が偶数アドレスまたは奇数アドレスのいずれか一方である場合に、データ保持部11への書き込みデータまたはデータ保持部11からの読み出しデータに対してエンディアン変換を行う。
【0017】
なお、エンディアン変換回路10は、データ保持部11に、図示しないプロセッサや通信インターフェースなどから転送されてくる1ワード(またはハーフワード)のデータごと、アドレス信号により、エンディアン変換するか否か決定できる。
【0018】
以下、エンディアン変換回路10の動作を説明する。
なお、以下の例では、エンディアン変換部12は、アドレス信号でデータ保持部11の奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとして説明する。
【0019】
たとえば、エンディアン変換回路10が、リトルエンディアンでデータを扱う通信マクロと、ビッグエンディアンでデータを扱うプロセッサ間に設けられた場合、エンディアン変換回路10は、以下のような動作を行う。
【0020】
たとえば、通信マクロにより、リトルエンディアンでデータ保持部11に保持されているデータd1をプロセッサが読み出す際、プロセッサは、アドレス信号により、データ保持部11の1001番地または1003番地を指定して読み出しアクセスする。このとき、アドレス信号は奇数アドレスであるので、最下位ビットは1となり、エンディアン変換部12は、エンディアン変換を実行する。すなわち、エンディアン変換部12は、リトルエンディアンのデータ並びのデータd1を、ビッグエンディアンのデータ並びのデータd1aに変換する。
【0021】
これにより、リトルエンディアンとは逆のデータ並びとなるビッグエンディアンのプロセッサでも、データd1と同じ内容のデータd1aとして処理可能になる。
次に、データ保持部11への書き込みアクセス時にエンディアン変換を施す場合の、エンディアン変換回路10の動作を説明する。
【0022】
図2は、データ保持部への書き込みアクセス時のエンディアン変換の様子を示す図である。
たとえば、ビッグエンディアンのプロセッサから、データd1aを、リトルエンディアンで転送するためのバッファとして用いるデータ保持部11に書き込む場合、エンディアン変換部12は、以下のような動作を行う。
【0023】
書き込みアクセス時のアドレス信号が、1001番地または1003番地のような奇数アドレスを指定している場合、エンディアン変換部12は、プロセッサ側からのビッグエンディアンのデータ並びのデータd1aをリトルエンディアンに変換する。そして、データ保持部11の1000番地にデータd1aの1バイト目を、1001番地に2バイト目を、1002番地に3バイト目と、1003番地に4バイト目をそれぞれ格納する。
【0024】
これにより、リトルエンディアンの通信マクロでも、データd1aと同じ内容のデータd1として処理可能になる。
なお、上記では、データ保持部11がリトルエンディアンでデータを扱い、プロセッサがビッグエンディアンでデータを扱う場合について説明したが、これが逆である場合にも同様にエンディアン変換を行うことができる。すなわち、データ保持部11がビッグエンディアンでデータを扱い、プロセッサがリトルエンディアンでデータを扱う場合にも、エンディアン変換部12は、アドレス信号が奇数アドレスを指定している場合には一方のデータをエンディアン変換して他方に転送する。
【0025】
エンディアン変換部12は、データ保持部11への読み出しアクセスまたは書き込みアクセス時のアドレス信号が偶数アドレスを指定する場合に、エンディアン変換を行わない。
【0026】
たとえば、通信マクロとプロセッサが両方ともリトルエンディアンでデータを扱う場合、図3及び図4で示すような動作が行われる。
図3は、偶数アドレスが指定された場合の、データ保持部からのデータ読み出しの様子を示す図である。
【0027】
読み出しアクセスの際、アドレス信号で偶数アドレス(最下位ビットが0)が指定されている場合、エンディアン変換部12は、エンディアン変換を行わず、データ保持部11のリトルエンディアンの並びのデータd1をそのまま転送する。
【0028】
通信マクロとプロセッサが両方ともビッグエンディアンでデータを扱う場合も同様に、エンディアン変換部12は、データ保持部11に保持されたビッグエンディアンの並びのデータを、エンディアン変換せずに、そのまま読み出せばよい。
【0029】
図4は、偶数アドレスが指定された場合の、データ保持部へのデータ書き込みの様子を示す図である。
書き込みアクセスの際、アドレス信号で偶数アドレスが指定されると、エンディアン変換部12は、エンディアン変換を行わず、プロセッサ側からのリトルエンディアンの並びのデータd1aを、データ保持部11に書き込む。
【0030】
通信マクロとプロセッサが両方ともビッグエンディアンでデータを扱う場合も同様に、エンディアン変換部12は、プロセッサ側からのリトルエンディアンの並びのデータを、エンディアン変換せずに、データ保持部11に書き込めばよい。
【0031】
以上のように、本実施の形態のエンディアン変換回路10では、データ保持部11へアクセスするアドレス信号が、偶数アドレスまたは奇数アドレスを指定しているかによって、エンディアン変換を行うか否かを決定している。これにより、簡単にエンディアン変換の要否が判定可能となり、エンディアン変換の要否を設定するためのレジスタやスイッチなどのハードウェア構成などを付加することなく、効率よくエンディアン変換が可能となる。また、プログラムによるデータのスワップも不要となり、プログラム効率が向上する。
【0032】
なお、上記の説明では、エンディアン変換部12は、アドレス信号で奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとしたが、これに限定されない。エンディアン変換部12は、アドレス信号で偶数アドレスが指定されている場合にエンディアン変換を行い、奇数アドレスが指定されている場合にはエンディアン変換を行わないようにしてもよい。
【0033】
また、上記の説明では、エンディアン変換部12は、アドレス信号が偶数アドレスまたは奇数アドレスかを判定して、エンディアン変換を行うか否かを決定する場合について説明したが、さらに、アクセスサイズを考慮してもよい。詳細は後述するが、バイトごとのアクセスが行われる場合には、エンディアン変換を行わなくてよいので、エンディアン変換を無効とし、複数バイト(たとえば、ハーフワードまたはワード)のアクセスの場合にエンディアン変換を有効とするようにしてもよい。
【0034】
次に、上記のようなエンディアン変換回路を、マイクロコントローラに適用した場合を例にして説明する。
(第2の実施の形態)
図5は、マイクロコントローラの一例の構成を示す図である。
【0035】
以降述べるエンディアンについて、たとえば、1234ABCDHという4バイトのデータを上位バイトから「12H 34H ABH CDH」と並べる方式をビッグエンディアンとし、下位バイトから「CDH ABH 34H 12H」と並べる方式をリトルエンディアンとする。なお、下付きのHは、その数値が16進数であることを示している。
【0036】
マイクロコントローラ20は、プロセッサ21、RAM(Random Access Memory)22、フラッシュメモリ23、バスコンバータ24、バスブリッジ25、周辺回路26,27、通信マクロ28,29を有している。
【0037】
プロセッサ21は、たとえば、CPUやDSP(Digital Signal Processor)などであり、マイクロコントローラ20の各部を制御する。また、プロセッサ21は、通信マクロ28,29の、後述のデータ保持部にアクセスする際、たとえば、アドレスの下位ビットを丸めこまず、フルアドレスアクセスする。ただし、データ保持部11ではワードアクセスあるいはハーフワードアクセスの時はアドレスの最下位ビットは無視される。つまりデータ保持部11はフルアドレスデコードせず、アドレスの最下位ビットはドントケアビット(don't care bit)として処理される。一方、エンディアン変換回路10にはアドレスの最下位ビットが、エンディアン変換を行うか行わないかを示す情報として入力される。
【0038】
RAM22は、プロセッサ21が実行途中のプログラムや、演算途中のデータを格納する。
フラッシュメモリ23は、プロセッサ21が実行するOS(Operation System)や、各種プログラム、各種データを格納する。
【0039】
バスコンバータ24は、プロセッサ21、RAM22、フラッシュメモリ23及び内部バスbsとのインターフェースとして機能し、たとえば、32ビットと16ビットの変換機能なども有する。
【0040】
バスブリッジ25は、内部バスbs1と、周辺バスbs2とを接続する。
周辺回路26,27は、割りこみコントローラや、ウォッチドッグタイマなどであり、周辺バスbs2に接続されている。
【0041】
通信マクロ28,29は、マイクロコントローラ20の外部との通信を行うためのインターフェース回路である。通信マクロ28,29は、たとえば、USB(Universal Serial Bus)や、UART(Universal Asynchronous Receiver Transmitter)、I2Cバス、CAN(Controller Area Network)バス、IE(Inter Equipment)バスなどのインターフェース回路である。図1で示したような、エンディアン変換回路10は、たとえば、通信マクロ28,29内に設けられる。
【0042】
なお、図5では、2つの通信マクロ28,29を示しているが、1つでも3つ以上であってもよい。
図6は、通信マクロ内に設けられたエンディアン変換回路の一例を示す図である。
【0043】
通信マクロ28は、データ保持部281、エンディアン変換部282を有しており、これらが、図1で示したようなエンディアン変換回路として機能する。すなわち、データ保持部281は、図1のデータ保持部11に対応し、エンディアン変換部282は、図1のエンディアン変換部12に対応している。ただし、図6に示されている構成では、エンディアン変換部282は、エンディアン変換を行うエンディアン変換セレクタ282aのほかに、アクセスサイズ検出部282bを有している。
【0044】
アクセスサイズ検出部282bは、データ保持部281へアクセスするアドレス信号と、データ保持部281へのアクセスサイズを基に、エンディアン変換セレクタ282aに、エンディアン変換を実行させるか否かを決定する。アクセスサイズ検出部282bは、バイトごとのアクセスが行われる場合には、エンディアン変換を行わなくてよいので、エンディアン変換を無効とし、複数バイトのアクセスの場合にエンディアン変換を有効とする。アクセスサイズ検出部282bは、エンディアン変換部282の外部にあってもよい。
【0045】
なお、以下の説明では、エンディアン変換セレクタ282aは、アドレス信号がデータ保持部281の奇数アドレス(最下位ビットが1)を指定している場合に、エンディアン変換を行う例を説明する。その場合、アクセスサイズ検出部282bは、たとえば、図6に示すように、OR回路282b1と、AND回路282b2とを用いて実現される。
【0046】
OR回路282b1には、複数バイトのアクセスとして、ワードアクセスかハーフワードアクセスなのかを示す2つの入力信号が、プロセッサ21から入力される。ワードアクセスまたはハーフワードアクセスの場合には、OR回路282b1には、1,0の信号が入力され、OR回路282b1は、1を出力する。また、バイトアクセスの場合には、OR回路282b1の2つの入力はともに0になり、OR回路282b1は、0を出力する。
【0047】
AND回路282b2の一方の入力端子には、アドレス信号の最下位ビットが入力され、他方の入力端子には、OR回路282b1の出力信号が入力される。OR回路282b1の出力が1である場合、AND回路282b2の出力は、アドレス信号の最下位ビットによって決まる。すなわち、AND回路282b2は、最下位ビットが1の場合は1を出力し、最下位ビットが0の場合は0を出力する。一方、OR回路282b1の出力が0である場合、AND回路282b2の出力は、アドレスの信号の最下位ビットの値によらず0となり、エンディアン変換が無効となる。
【0048】
なお、エンディアン変換部282は、通信マクロ28の外に設けられていてもよい。
以下、通信マクロ28がPC30とUSBで通信するインターフェース回路である場合を例にして、マイクロコントローラ20の動作を説明する。
【0049】
まず、データ読み出し時における、マイクロコントローラ20の動作を説明する。
図7は、データ読み出し時のマイクロコントローラの処理の流れを示すフローチャートである。
【0050】
まず、通信マクロ28は、PC30からUSBデータを受信してデータ保持部281に保持する(ステップS1)。図6では、1バイト目が01H、2バイト目が23H、3バイト目が45H、4バイト目が67Hという4バイトのデータd10が、リトルエンディアンの並びで、データ保持部281の100〜103番地に保持されている様子を示している。なお、下付きのHは、その数値が16進数であることを示している。
【0051】
次にプロセッサ21は、データ保持部281に対して読み出しアクセスを行う(ステップS2)。プロセッサ21は、データ保持部281に対して、たとえば、バイトごとのアクセスか、複数バイト(ワードまたはハーフワード)ごとのアクセスを行う。プロセッサ21は、ワードアクセスまたはハーフワードアクセスを行う場合には、図6で示したアクセスサイズ検出部282bのOR回路282b1の一方の入力端子に1を入力する。
【0052】
また、プロセッサ21は、ワードアクセスまたはハーフワードアクセスを行う際、自身がビッグエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ28のデータ保持部281に対して、奇数アドレスでアクセスする。たとえば、プロセッサ21は、100〜103番地の1ワードのデータd10を読み出す場合には、アドレス信号により101番地または103番地を指定して読み出しアクセスする。
【0053】
一方、プロセッサ21は、ワードアクセスまたはハーフワードアクセスを行う際、自身がリトルエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ28のデータ保持部281に対して、偶数アドレスでアクセスする。たとえば、プロセッサ21は、100〜103番地の1ワードのデータd10を読み出す場合には、アドレス信号により100番地または102番地を指定して読み出しアクセスする。
【0054】
次に、エンディアン変換部282は、プロセッサ21からのアクセスサイズが複数バイト(ワードまたはハーフワード)アクセスか否かを判定する(ステップS3)。そして、エンディアン変換部282は、複数バイトアクセスが発生していると判定した場合には、次に、アドレス信号の最下位ビットが1か否かを判定する(ステップS4)。
【0055】
具体的には、アクセスサイズ検出部282bは、OR回路282b1の2つの入力端子の少なくともいずれか一方に1が入力されている場合には、複数バイトアクセスと判定する。一方、アクセスサイズ検出部282bは、OR回路282b1の2つの入力端子の両方に0が入力されている場合には、バイトごとのアクセスと判定する。後者の場合、アクセスサイズ検出部282bは、アドレス信号の最下位ビットにかかわらず、エンディアン変換を無効にする。これにより、バイトアクセスの場合には、プロセッサ21で指定されたアドレスの1バイトのデータが、エンディアン変換されずに読み出される(ステップS5)。
【0056】
また、ステップS4の処理において最下位ビットが0と判定された場合にも、エンディアン変換部282は、ステップS5の処理を行う。エンディアン変換部282は、プロセッサ21により、たとえば、100番地または102番地を指定したワードアクセスがなされると、100〜103番地の1ワード分のデータd10を、エンディアン変換せずに読み出し、プロセッサ21に送信する。また、プロセッサ21により、100番地を指定したハーフワードアクセスがなされた場合、エンディアン変換部282は、100番地と101番地のハーフワード分のデータを、エンディアン変換せずに読み出し、プロセッサ21に送信する。
【0057】
一方、ステップS4の処理において最下位ビットが1と判定された場合、エンディアン変換部282は、エンディアン変換セレクタ282aにより、データ保持部281に保持されているデータに対してエンディアン変換を行い、読み出す(ステップS6)。エンディアン変換部282は、プロセッサ21により、たとえば、101番地または103番地を指定したワードアクセスがなされると、100〜103番地の1ワード分のデータd10を、図6のようなビッグエンディアンの並びのデータd10aに変換する。そして、エンディアン変換部282は、エンディアン変換したデータd10aを読み出し、プロセッサ21に送信する。
【0058】
次に、プロセッサ21からのデータ書き込み時における、マイクロコントローラ20の動作を説明する。
図8は、データ書き込み時のマイクロコントローラの処理の流れを示すフローチャートである。
【0059】
また、図9は、データ書き込み時にエンディアン変換を行う様子を示す図である。
まずプロセッサ21は、データ保持部281に対してデータの書き込みアクセスを行う(ステップS10)。このとき、プロセッサ21は、データ保持部281に対して、たとえば、バイトごとの書き込みアクセスか、複数バイト(たとえば、ワードまたはハーフワード)ごとの書き込みアクセスを行う。ワードアクセスまたはハーフワードアクセスを行う場合には、プロセッサ21は、アクセスサイズ検出部282bのOR回路282b1の一方の入力端子に1を入力する。
【0060】
また、プロセッサ21は、ワードアクセスまたはハーフワードアクセスを行う際、自身がビッグエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ28のデータ保持部281に対して、奇数アドレスでアクセスする。たとえば、プロセッサ21は、100〜103番地に1ワードのデータを書き込む場合には、アドレス信号により101番地または103番地を指定して書き込みアクセスする。
【0061】
一方、プロセッサ21は、ワードアクセスまたはハーフワードアクセスを行う際、自身がリトルエンディアンを採用している場合、リトルエンディアンの並びでデータを保持する通信マクロ28のデータ保持部281に対して、偶数アドレスでアクセスする。たとえば、プロセッサ21は、100〜103番地に1ワードのデータを書き込む場合には、アドレス信号により100番地または102番地を指定して書き込みアクセスする。
【0062】
次に、エンディアン変換部282は、プロセッサ21からのアクセスサイズが複数バイト(ワードまたはハーフワード)アクセスか否かを判定する(ステップS11)。そして、エンディアン変換部282は、複数バイトアクセスが発生していると判定した場合には、次に、アドレス信号の最下位ビットが1か否かを判定する(ステップS12)。
【0063】
具体的には、アクセスサイズ検出部282bは、OR回路282b1の2つの入力端子の少なくともいずれか一方に1が入力されている場合には、複数バイトアクセスと判定する。一方、アクセスサイズ検出部282bは、OR回路282b1の2つの入力端子の両方に0が入力されている場合には、バイトごとのアクセスと判定する。後者の場合、アクセスサイズ検出部282bは、アドレス信号の最下位ビットにかかわらず、エンディアン変換を無効にする。これにより、バイトアクセスの場合には、プロセッサ21で指定されたデータ保持部281のアドレスに、プロセッサ21側からの1バイトのデータが、エンディアン変換されずに書き込まれる(ステップS13)。
【0064】
また、ステップS12の処理において最下位ビットが0と判定された場合にも、エンディアン変換部282は、ステップS13の処理を行う。プロセッサ21により、たとえば、データ保持部281の100番地または102番地を指定したワードアクセスがなされると、エンディアン変換部282は、100〜103番地に、1ワード分のデータd10aを、エンディアン変換せずに書き込む。また、プロセッサ21により、100番地を指定したハーフワードアクセスがなされた場合、エンディアン変換部282は、100番地と101番地に、ハーフワード分のデータを、エンディアン変換せずに書き込む。
【0065】
一方、ステップS12の処理において最下位ビットが1と判定された場合、エンディアン変換部282は、プロセッサ21側から送信されてきたデータに対してエンディアン変換を行い、データ保持部281に書き込む(ステップS14)。エンディアン変換部282は、プロセッサ21により、たとえば、データ保持部281の101番地または103番地を指定したワードアクセスがなされると、1ワード分のデータd10aを、図9のようなリトルエンディアンの並びのデータd10に変換する。そして、エンディアン変換部282は、エンディアン変換したデータd10を、データ保持部281の100〜103番地に書き込む。そして、通信マクロ28は、書き込んだデータd10を、USBデータとしてPC30に送信する(ステップS15)。
【0066】
以上のように、本実施の形態のマイクロコントローラ20では、データ保持部281へアクセスするアドレス信号が、偶数アドレスまたは奇数アドレスを指定しているかによって、エンディアン変換を行うか否かを決定している。これにより、簡単にエンディアン変換の要否が判定可能となり、効率よくエンディアン変換が可能となる。
【0067】
たとえば、エンディアンが異なる複数の通信マクロ28,29があった場合、プロセッサ21では、偶数または奇数アドレスを指定するだけで、通信マクロ28,29ごとに、エンディアン変換をするか否か決定できる。
【0068】
なお、上記では、エンディアン変換部282は、アドレス信号で奇数アドレスが指定されている場合にエンディアン変換を行い、偶数アドレスが指定されている場合にはエンディアン変換を行わないとして説明したが、これに限定されない。エンディアン変換部282は、アドレス信号で偶数アドレスが指定されている場合にエンディアン変換を行い、奇数アドレスが指定されている場合にはエンディアン変換を行わないようにしてもよい。その場合、エンディアン変換セレクタ282aは、アドレス信号の最下位ビットが0の場合に、エンディアン変換を行うようにする。また、アクセスサイズ検出部282bは、バイトアクセスの場合に、エンディアン変換セレクタ282aに入力する出力信号を1に固定するような回路構成とすればよい。
【0069】
また、アドレス信号により、ワードごと、またはハーフワードごとにエンディアン変換を行うか否かの設定を行うようにしてもよい。
以上、実施の形態に基づき、本発明のエンディアン変換回路、エンディアン変換方法及びマイクロコントローラの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【0070】
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
(付記1) アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、
前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするエンディアン変換回路。
【0071】
(付記2) 前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記1記載のエンディアン変換回路。
【0072】
(付記3) 前記アクセスサイズ検出部は、前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記2記載のエンディアン変換回路。
【0073】
(付記4) アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部へアクセスするアドレス信号が、前記データ保持部の偶数アドレスまたは奇数アドレスのいずれを指定しているのか判定し、
前記判定結果に基づきエンディアン変換部が、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うことを特徴とするエンディアン変換方法。
【0074】
(付記5) 前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出し、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記4記載のエンディアン変換方法。
【0075】
(付記6) 前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記5記載のエンディアン変換方法。
(付記7) アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、
エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、
前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、を有することを特徴とするマイクロコントローラ。
【0076】
(付記8) 前記データ保持部への書き込み時または前記データ保持部からの読み出し時の、前記プロセッサからのアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする付記7記載のマイクロコントローラ。
【0077】
(付記9) 前記アクセスサイズ検出部は、前記アクセスサイズが、ワードまたはハーフワードの場合に前記エンディアン変換を有効にすることを特徴とする付記8記載のマイクロコントローラ。
【0078】
(付記10) 前記エンディアン変換部は、通信処理を行う通信マクロ内に配置されることを特徴とする付記7乃至9に記載のマイクロコントローラ。
【符号の説明】
【0079】
10 エンディアン変換回路
11 データ保持部
12 エンディアン変換部
d1,d1a データ

【特許請求の範囲】
【請求項1】
アドレス信号の最下位ビットをドントケアビットとして番地指令が行われるデータ保持部と、
前記データ保持部へアクセスする前記アドレス信号の前記最下位ビットの値に基づいて、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするエンディアン変換回路。
【請求項2】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項1記載のエンディアン変換回路。
【請求項3】
アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部へアクセスするアドレス信号が、前記データ保持部の偶数アドレスまたは奇数アドレスのいずれを指定しているのか判定し、
前記判定結果に基づきエンディアン変換部が、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うことを特徴とするエンディアン変換方法。
【請求項4】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時のアクセスサイズを検出し、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項3記載のエンディアン変換方法。
【請求項5】
アドレス信号の最下位ビットをドントケアビットとして処理するデータ保持部と、
エンディアン変換を行うか否かの情報を、前記データ保持部へアクセスする前記アドレス信号の最下位ビットに書き込み、前記データ保持部にアクセスするプロセッサと、
前記アドレス信号の前記最下位ビットに基づき、前記データ保持部への書き込みデータ、または前記データ保持部からの読み出しデータに対してエンディアン変換を行うエンディアン変換部と、
を有することを特徴とするマイクロコントローラ。
【請求項6】
前記データ保持部への書き込み時または前記データ保持部からの読み出し時の、前記プロセッサからのアクセスサイズを検出するアクセスサイズ検出部を有し、前記アクセスサイズ検出部は、前記アクセスサイズが複数バイトの場合に、前記エンディアン変換を有効にすることを特徴とする請求項5記載のマイクロコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate