(57)【要約】【課題】半導体集積回路の端子を増加させず、外付け回路を追加せず、基板配線上で交差させず、ソフトウェアのパフォーマンスを低下させずに、データのエンディアン、データのニブルの並び順、データのビットの昇順降順が異なる半導体集積回路の接続を行う。【解決手段】エンディアン、ニブルの並び順、データのビットの昇順降順を入れ替えても値の変わらないデータ配列を書き込むことでエンディアンの変更、ニブルの並び順の変更、データのビットの昇順降順を行えるレジスタ１０，２０，３０を実装し、デバイス２のハードウェアリセット解除直後にそのレジスタを１回だけ設定することで、エンディアンおよびＬＳＢ／ＭＳＢの向きを確定させる。【選択図】図１
2007148622.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサによって制御されるもので複数種類のインターフェース仕様を有するデバイスとの間でインターフェース仕様を設定する方法であって、
前記デバイスにインターフェース仕様設定用のレジスタを設けておき、前記プロセッサから前記デバイスの前記レジスタに対するソフトウェア的制御により前記レジスタに所定のインターフェース仕様を設定し、この設定以降、前記デバイスを前記レジスタに設定された前記インターフェース仕様で動作させるインターフェース設定方法。
【請求項２】
前記インターフェース仕様設定用のレジスタとしてデータのエンディアンを設定するためのエンディアン設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記エンディアン設定用レジスタにデータのエンディアンを設定する請求項１に記載のインターフェース設定方法。
【請求項３】
前記データのエンディアンの設定は、前記エンディアン設定用レジスタにエンディアンの影響を受けないデータ配列を書き込むことによって行う請求項２に記載のインターフェース設定方法。
【請求項４】
前記インターフェース仕様設定用のレジスタとしてデータのニブルの並び順を設定するためのニブル並び順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記ニブル並び順設定用レジスタにデータのニブルの並び順を設定する請求項１から請求項３までのいずれかに記載のインターフェース設定方法。
【請求項５】
前記データのニブルの並び順の設定は、前記ニブル並び順設定用レジスタにニブルの並び順の影響を受けないデータ配列を書き込むことによって行う請求項４に記載のインターフェース設定方法。
【請求項６】
前記インターフェース仕様設定用のレジスタとしてデータのビットの昇順降順を設定するための昇順降順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記昇順降順設定用レジスタにデータのビットの昇順降順を設定する請求項１から請求項５までのいずれかに記載のインターフェース設定方法。
【請求項７】
前記データのビットの昇順降順の設定は、前記昇順降順設定用レジスタにデータのビットの昇順降順の影響を受けないデータ配列を書き込むことによって行う請求項６に記載のインターフェース設定方法。
【請求項８】
前記インターフェース仕様設定用のレジスタとしてアドレスおよびデータのバスタイプを設定するためのバスタイプ設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記バスタイプ設定用レジスタにアドレスおよびデータのバスタイプを設定する請求項１から請求項７までのいずれかに記載のインターフェース設定方法。
【請求項９】
前記バスタイプ設定用レジスタとして、前記デバイスが持つアドレス信号幅から１ビット除いたもので表現可能な番地の任意のレジスタを用い、前記デバイスのバスタイプをセパレートタイプまたはマルチプレクスタイプに設定するためのデータ配列を書き込む請求項８に記載のインターフェース設定方法。
【請求項１０】
前記バスタイプ設定用レジスタは、前記バスタイプをマルチプレクスタイプに設定した場合に、その設定値を保持し、前記設定値の更新はハードウェアリセットのみで可能である請求項９に記載のインターフェース設定方法。
【請求項１１】
前記デバイスをマルチプレクスタイプとして使用する際、前記バスタイプ設定用レジスタの番地指定に無関係の１ビットを前記プロセッサが出力するアドレスストローブ信号の入力として使用する請求項９または請求項１０に記載のインターフェース設定方法。
【請求項１２】
前記インターフェース仕様設定用のレジスタはソフトウェアリセット機能の対象外で、設定値の変更はハードウェアリセットまたは値の上書きで可能となる請求項１から請求項１１までのいずれかに記載のインターフェース設定方法。
【請求項１３】
さらに、前記デバイスにおける設定確認用レジスタを用いて、前記インターフェース仕様設定用のレジスタにおける設定を確認する請求項１から請求項１２までのいずれかに記載のインターフェース設定方法。
【請求項１４】
前記インターフェース仕様設定用のレジスタとして、データのエンディアンを設定するためのエンディアン設定用レジスタ、データのニブルの並び順を設定するためのニブル並び順設定用レジスタ、データのビットの昇順降順を設定するための昇順降順設定用レジスタの少なくともいずれか２つ以上を用い、前記設定確認用レジスタは、前記いずれのレジスタの値も変更した場合にも互いに一致しない値を設定し、かつハードウェアリセットおよびソフトウェアリセットでも値を保持する請求項１３に記載のインターフェース設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路におけるインターフェース設定方法にかかわり、特にはインターフェース仕様（エンディアンやバスタイプ）が異なるプロセッサとデバイスの接続の技術に関するものである。
【背景技術】
【０００２】
半導体集積回路において、プロセッサの代表例であるＣＰＵ（Central ProcessingUnit：中央演算処理装置）とＣＰＵによって制御されるデバイスとを接続する場合には、それぞれのバスタイプおよびデータのエンディアンを考慮して接続する必要がある。エンディアン（endian）とは、別名バイトオーダー（byteorder）のことであって、２バイト以上のデータ量を持つ数値データを記録したり転送するときには１バイトごとに分割するが、その際の記録／転送を行う順番（データの上下位バイトの並べ方）を示すものである。
【０００３】
ＣＰＵのバスタイプについては、ＣＰＵが出力するアドレス信号とデータ信号がそれぞれ別の端子群から出力されるもの（セパレートタイプ）と、同一の端子群からアドレスおよびデータの両方が出力されるもの（マルチプレクスタイプ）との２種類が存在する。ＣＰＵのエンディアンについては、ＣＰＵのデータレジスタの下位バイトにデータの上位バイトを、上位バイトにデータの下位バイトをそれぞれ格納するいわゆるビッグエンディアン（big endian）方式と、ＣＰＵのデータレジスタの上位バイトにデータの上位バイトを、下位バイトにデータの下位バイトをそれぞれ格納するいわゆるリトルエンディアン（little endian）方式との２種類が存在する。ビッグエンディアン方式では最上位のバイトから順番に記録／送信し、リトルエンディアン方式では最下位のバイトから順番に記録／送信する。また、ＣＰＵのニブル（nibble：バイトの２分の１）については、ＣＰＵのデータレジスタの下位ニブルにデータの上位ニブルを、上位ニブルにデータの下位ニブルを格納する方法と、上位ニブルにデータの上位ニブルを、下位ニブルにデータの下位ニブルを格納する方法の２種類が存在する。データ端子の並び順は、各ＣＰＵメーカーが任意に定めている。
【０００４】
バスタイプおよびデータエンディアンが異なる半導体集積回路の接続技術で望まれることは、外付け回路を極力減らすこと、半導体集積回路の端子を浪費しないこと、基板配線の引き回しを避けること、パフォーマンスの低下を避けること等である。
【０００５】
以下、現在広く用いられているバスタイプおよびエンディアンが異なる半導体集積回路の相互接続技術について説明する。
【０００６】
図１４は、同じバスタイプで同じデータエンディアンであるＣＰＵとデバイスを接続した場合の結線を示す。図１４において、８１はＣＰＵ、８２はＣＰＵ８１によって制御されるＣＰＵ８１と同じエンディアンで同じバスタイプのデバイス、８３はＣＰＵ８１のアドレス出力端子、８４は基板上のアドレス信号線、８５はデバイス８２のアドレス入力端子、８６はＣＰＵ８１のデータ入出力端子、８７は基板上のデータ信号線、８８はデバイス８２のデータ入出力端子である。一般的に、ＣＰＵとデバイスの接続には、アドレスとデータ以外にも、例えばイネーブル信号、割り込み信号、アクノリッジ信号などがあるが、ここでは省略する。ＣＰＵ８１のアドレス出力端子８３から出力されたアドレス信号は、信号線８４を介してデバイス８２のアドレス入力端子８５に供給される。ＣＰＵ８１のデータ入出力端子８６から出力されたデータ信号は、データ信号線８７を介してデバイス８２のデータ入出力端子８８に供給される。データ信号は双方向信号であり、デバイス８２から出力されることもある。その場合は、デバイス８２のデータ入出力端子８８からデータが出力され、データ信号線８７を介してＣＰＵ８１のデータ入出力端子８６に供給される。ここで、ＣＰＵ８１はデータとアドレスが別の端子８３，８６に分かれており、アドレスはアドレス、データはデータとしてデバイス８２に供給されている。つまり、ＣＰＵ８１とデバイス８２は同じバスタイプ（セパレートタイプ）である。また、ＣＰＵ８１のデータのエンディアンはデバイス８２のデータのエンディアンと同じものである。よって、データ信号線８７は、ＣＰＵ８１のデータ入出力端子８６の最上位ビットとデバイス８２のデータ入出力端子８８の最上位ビット同士をつなぎ、以降、降順にデータ入出力端子８６とデータ入出力端子８８の最下位ビット同士までを接続されている。
【０００７】
図１５は、同じバスタイプで異なるデータエンディアンであるＣＰＵとデバイスを接続した場合の結線を示す。図１５において、８２ａはＣＰＵ８１と同じバスタイプでエンディアンが異なるデバイスである。アドレス信号の接続については、ＣＰＵ８１とデバイス８２ａのバスタイプが同じ（セパレートタイプ）であることから、図１４で説明したのと同様である。ＣＰＵ８１のデータ入出力端子８６から出力されたデータ信号を、データ信号線８７を介してデバイス８２ａのデータ入出力端子８８ａに供給する。データ信号は、ＣＰＵ８１とデバイス８２ａのデータエンディアンが異なることから、データ信号線８７を交差させて接続している。この場合の接続方法としては、例えばＣＰＵ８１およびデバイス８２ａがそれぞれ３２ビットのデータ幅を持っていた場合、ＣＰＵ８１のデータ０ビット〜７ビットから出ている信号を、デバイス８２ａのデータの２４ビット〜３１ビットに接続し、ＣＰＵ８１のデータ８ビット〜１５ビットから出ている信号を、デバイス８２ａのデータの１６ビット〜２３ビットに接続し、ＣＰＵ８１のデータ１６ビット〜２３ビットから出ている信号を、デバイス８２ａのデータの８ビット〜１５ビットに接続し、ＣＰＵ８１のデータ２４ビット〜３１ビットから出ている信号を、デバイス８２ａのデータの０ビット〜７ビットに接続する。つまり、データのバイトの並び順をＣＰＵ８１とデバイス８２ａ側で逆にする必要がある。そのため、データ信号線８７は、基板上で交差することになる。
【０００８】
図１６は、同じバスタイプでデータエンディアンが異なるＣＰＵとデバイスを接続した場合の、図１５とは異なる結線の例を示す。図１６において、８２ａはＣＰＵ８１と同じバスタイプ（セパレートタイプ）でエンディアンが異なるデバイス、８８ａはデバイス８２ａのデータ入出力端子、８９はデバイス８２ａのデータエンディアンを変えるためのエンディアン変更入力端子、９０はエンディアン変更入力端子８９に接続した入力信号線である。アドレス信号の接続については、図１４、図１５で説明したものと同様である。データ信号の接続については、ＣＰＵ８１とデバイス８２ａのエンディアンが異なっているが、エンディアン変更入力端子８９の機能によってエンディアンを変更できるため、データ信号線８７の基板上の交差はなく、図１４と同様に結線する。エンディアン変更入力端子８９は、入力信号線９０によって何らかの値に固定されるが、その値によってビッグエンディアンかリトルエンディアンかを変更可能な回路が実装されている。したがって、図１５で示すような、基板上でのデータ結線の交差は発生しない。代わりに、デバイス８２ａの外部に端子を１つ追加することになる。
【０００９】
図１７は、同じバスタイプで異なるデータエンディアンのＣＰＵとデバイスを接続した場合の、図１６および図１７とは異なる結線の例を示す。図１７において、８２ａはＣＰＵ８１と同じバスタイプでエンディアンが異なるデバイスである。アドレス、データともに、結線の方法としては、図１４で説明したものと同じであるが、デバイス８２ａには、図１６のようなエンディアン変更入力端子は存在しない。この場合、ＣＰＵ８１がデバイス８２ａとデータのやりとりを行う度に、ソフトウェアでデータの上位バイトを下位バイトとを入れ替えることにより、異なるエンディアンのデバイス間でのデータ通信を可能とする。実際には、データアクセスの度に、数クロックサイクルから場合によっては数十クロックサイクルを消費して、データのエンディアン変更を行うことになる。
【００１０】
図１８は、異なるバスタイプでデータエンディアンは同じであるＣＰＵとデバイスを接続した場合の結線を示す。図１８において、８１ａはマルチプレクスタイプのＣＰＵ、８２はＣＰＵ８１ａと異なるバスタイプ（セパレートタイプ）でエンディアンが同じであるデバイス、８３ａはアドレスストローブ信号出力端子、９１はアドレスストローブ信号出力端子８３ａの値を後述するラッチ回路９２に入力するための出力信号線、９２は後述するアドレス兼データ信号線８７におけるアドレス部分を取り込むためのラッチ回路、８６ａはＣＰＵ８１ａのアドレス兼データ入出力端子、８７ａはアドレス兼データ信号線である。アドレス兼データ入出力端子８６ａから出力されたアドレス兼データ信号は、アドレス兼データ信号線８７ａを介してデバイス８２のデータ入出力端子８８に入力される。また、アドレス兼データ信号は、ラッチ回路９２にも入力される。アドレス兼データ入出力端子８６ａからは、ある時点ではアドレスが、また、ある時点ではデータが出力されているが、アドレスが出力された時点で、アドレスストローブ信号出力端子８３ａからアドレスストローブ信号が出力される。その出力は、出力信号線９１を介してラッチ回路９２に入力され、ラッチ回路９２はアドレス兼データ信号線８７ａからアドレスの値を取り込む。ラッチ回路９２で取り込んだアドレスの値は、信号線８４を介してアドレス入力端子８５に供給される。データは、アドレス兼データ信号線８７ａを介してデータ入出力端子８８に供給される。信号線８４の値とアドレス兼データ信号線８７ａの値が一定となった時、デバイス８２はそれぞれの値を取り込む。こうすることで、バスタイプが異なるＣＰＵとデバイス間でのデータ通信が可能となる。
【００１１】
図１９は、異なるバスタイプでデータエンディアンも異なるＣＰＵとデバイスを接続した場合の結線を示す。図１９において、８１ａはマルチプレクスタイプのＣＰＵ、８２ａはＣＰＵ８１ａと異なるバスタイプ（セパレートタイプ）でエンディアンも異なるデバイス、８８ａはデバイス８２ａのデータ入出力端子である。アドレスの入力については、図１８で説明したものと同じである。データの入出力に関しては、図１５で説明したものと同じである。
【００１２】
これらの相互接続技術は、バスタイプが異なるＣＰＵとデバイスの接続に有効であり、現在広く使用されている。
【００１３】
また、バスタイプおよびエンディアンが異なる半導体集積回路の別の接続技術について、特許文献１（エンディアン変換方式）、特許文献２（自動判定機能付きエンディアン変換装置および方法）、および特許文献３（半導体装置におけるインタフェース回路）に記載のものがある。
【特許文献１】特開平３−１６０５５０号公報（第３−４頁、第３−６図）
【特許文献２】特開平８−３０５６２８号公報（第４−５頁、第１−４図）
【特許文献３】特開２００４−１３９４３号公報（第４−６頁、第１−２図）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、これらの方法では、外付け回路の増加、半導体集積回路の端子浪費、パフォーマンスの低下、基板上の配線混雑が避けられず、所望する全ての好条件を同時に満たせる接続技術にはなっていない。
【００１５】
本発明は、バスタイプやエンディアン等のインターフェース仕様が異なる半導体集積回路の接続において、外付け回路の追加や、半導体集積回路の端子の浪費や、パフォーマンスの低下や、基板上の配線混雑などについて、これを緩和させることのできる技術を提供することを目的としている。
【課題を解決するための手段】
【００１６】
本発明によるインターフェース設定方法は、プロセッサと、前記プロセッサによって制御されるもので複数種類のインターフェース仕様を有するデバイスとの間でインターフェース仕様を設定する方法であって、前記デバイスにインターフェース仕様設定用のレジスタを設けておき、前記プロセッサから前記デバイスの前記レジスタに対するソフトウェア的制御により前記レジスタに所定のインターフェース仕様を設定し、この設定以降、前記デバイスを前記レジスタに設定された前記インターフェース仕様で動作させることを特徴とする。
【００１７】
これによれば、デバイスにインターフェース仕様設定用のレジスタを設けておき、プロセッサからの制御により前記のレジスタにインターフェース仕様をソフトウェア的に設定するので、ＣＰＵ等のプロセッサのインターフェース仕様に整合する状態で、プロセッサとデバイスとをインターフェースさせることができる。プロセッサおよびデバイスのハードウェアリセット解除直後に一度だけデバイスのレジスタにインターフェース仕様の設定を行い、以後その状態で固定し、プロセッサに合ったインターフェース仕様でデバイスに対してアクセスを行う。プロセッサから受け取るデータのタイプによらず、プロセッサとデバイスとの間で、データのやりとりが可能となる。そして、外付け回路や特殊な端子の追加や、基板配線の改変を必要としないですむ。
【００１８】
上記において、前記インターフェース仕様設定用のレジスタとしてデータのエンディアンを設定するためのエンディアン設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記エンディアン設定用レジスタにデータのエンディアンを設定するという態様がある。
【００１９】
この場合に、前記データのエンディアンの設定は、前記エンディアン設定用レジスタにエンディアンの影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【００２０】
これによれば、エンディアンが異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてエンディアンを合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのエンディアンを変更する必要もなく、エンディアンを変更するための端子の追加も必要でなくなる。
【００２１】
また、上記において、前記インターフェース仕様設定用のレジスタとしてデータのニブルの並び順を設定するためのニブル並び順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記ニブル並び順設定用レジスタにデータのニブルの並び順を設定するという態様がある。
【００２２】
この場合に、前記データのニブルの並び順の設定は、前記ニブル並び順設定用レジスタにニブルの並び順の影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【００２３】
これによれば、データのニブルの並び順が異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてデータのニブルの並び順を合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのニブルの並び順を変更する必要もなく、ニブルの並び順を変更するための端子の追加も必要でなくなる。
【００２４】
また、上記において、前記インターフェース仕様設定用のレジスタとしてデータのビットの昇順降順を設定するための昇順降順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記昇順降順設定用レジスタにデータのビットの昇順降順を設定するという態様がある。
【００２５】
この場合に、前記データのビットの昇順降順の設定は、前記昇順降順設定用レジスタにデータのビットの昇順降順の影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【００２６】
これによれば、データのビットの昇順降順が異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてデータのビットの昇順降順を合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのビットの昇順降順を変更する必要もなく、データのビットの昇順降順を変更するための端子の追加も必要でなくなる。
【００２７】
また、上記において、前記インターフェース仕様設定用のレジスタとしてアドレスおよびデータのバスタイプを設定するためのバスタイプ設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記バスタイプ設定用レジスタにアドレスおよびデータのバスタイプを設定するという態様がある。
【００２８】
この場合に、前記バスタイプ設定用レジスタとして、前記デバイスが持つアドレス信号幅から１ビット除いたもので表現可能な番地の任意のレジスタを用い、前記デバイスのバスタイプをセパレートタイプまたはマルチプレクスタイプに設定するためのデータ配列を書き込むことが好ましい。
【００２９】
これによれば、アドレスおよびデータのバスタイプが異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を改変してバスタイプを合わせる必要もなく、基板上にアドレス値を保持するためのラッチ回路を実装する必要もない。
【００３０】
また、上記において、前記バスタイプ設定用レジスタは、前記バスタイプをマルチプレクスタイプに設定した場合に、その設定値を保持し、前記設定値の更新はハードウェアリセットのみで可能であるという態様がある。これによれば、プロセッサがデバイスに対してデータアクセスを行うたびにバスタイプ設定用レジスタの値が変わってしまうという不都合を回避することができる。
【００３１】
また、上記において、前記デバイスをマルチプレクスタイプとして使用する際、前記バスタイプ設定用レジスタの番地指定に無関係の１ビットを前記プロセッサが出力するアドレスストローブ信号の入力として使用するという態様がある。これによれば、バスタイプ設定用レジスタの番地指定に用いなかったアドレス入力のうち任意の１本をプロセッサが出力するアドレスストローブ入力端子として用いることで、デバイスの端子の増加が抑えられる。
【００３２】
また、上記において、前記インターフェース仕様設定用のレジスタはソフトウェアリセット機能の対象外で、設定値の変更はハードウェアリセットまたは値の上書きで可能となるという態様がある。ここで、インターフェース仕様設定用のレジスタは、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタ、バスタイプ設定用レジスタのうちの任意のいずれか１つまたは任意のいずれか２つ以上の組み合わせである。これによれば、不測の誤動作を未然に回避することができる。
【００３３】
また、上記において、さらに、前記デバイスにおける設定確認用レジスタを用いて、前記インターフェース仕様設定用のレジスタにおける設定を確認するという態様がある。これによれば、設定確認用レジスタの値を読み出すことで、現在の設定状態が分かる。
【００３４】
また、上記において、前記インターフェース仕様設定用のレジスタとして、データのエンディアンを設定するためのエンディアン設定用レジスタ、データのニブルの並び順を設定するためのニブル並び順設定用レジスタ、データのビットの昇順降順を設定するための昇順降順設定用レジスタの少なくともいずれか２つ以上を用い、前記設定確認用レジスタは、前記いずれのレジスタの値も変更した場合にも互いに一致しない値を設定し、かつハードウェアリセットおよびソフトウェアリセットでも値を保持するという態様がある。これは、設定確認用レジスタを書き込み禁止レジスタにするということであり、間違いなく現在の設定値を知ることが可能となる。
【発明の効果】
【００３５】
本発明によれば、エンディアンやバスタイプなどのインターフェース仕様が異なるプロセッサとデバイスを接続する際に、外付け回路を追加する必要がなく、プロセッサおよびデバイスの端子を浪費することがなく、基板配線の改変をする必要がなく、ソフトウェアの実行パフォーマンスを低下させることがない。
【発明を実施するための最良の形態】
【００３６】
以下、本発明にかかわるインターフェース設定方法の実施の形態を図面に基づいて詳細に説明する。
【００３７】
（実施の形態１）
図１は本発明の実施の形態１における半導体集積回路のインターフェース設定方法を説明するための回路構成図である。図１において、１はバスタイプがセパレートタイプのＣＰＵ（プロセッサの代表例）、２はＣＰＵ１によって制御される同じくセパレートタイプのデバイス、３はＣＰＵ１のアドレス出力端子、４は基板上のアドレス信号線、５はデバイス２のアドレス入力端子、６はＣＰＵ１のデータ入出力端子、７は基板上のデータ信号線、８はデバイスのデータ入出力端子である。一般的に、ＣＰＵとデバイスの接続には、アドレスとデータ以外にも、例えばイネーブル信号、割り込み信号、アクノリッジ信号などがあるが、ここでは省略する。
【００３８】
ここで、ＣＰＵ１とデバイス２のデータのエンディアンが同じであるとすると、特に何の対策を施さなくても接続上は問題がない。しかし、ＣＰＵ１とデバイス２のデータのエンディアンやニブルの並び順が異なる場合は、図１５に示すように基板上のデータ信号線をバイト単位またはニブル単位で交差させなければならない。それを回避するために、本実施の形態では、エンディアン設定用レジスタを設け、これに設定値を書き込むことでエンディアンを設定する。したがって、エンディアンが異ならないものとしてＣＰＵ１とデバイス２を接続する。
【００３９】
具体的な例を、図２および図３を用いて説明する。図２および図３は、エンディアン設定用レジスタに書き込む値を示す図である。図２、図３において、１０はエンディアン設定用の設定値を書き込むエンディアン設定用レジスタ、１１はエンディアン設定用レジスタ１０の最上位バイト、１２は上から２番目のバイト、１３は下から２番目のバイト、１４は最下位バイトである。このエンディアン設定用レジスタ１０はデバイス２の内部に設けられている。
【００４０】
デバイス２のエンディアンを変更したい場合、エンディアン設定用レジスタ１０に、上位バイトと下位バイトの並び順が変わってもレジスタ全体で値が変わらない値を書き込む。例えば図２では、全ビットに対して、値“１”を書き込んだ場合について記載しているが、この場合、最上位バイト１１と最下位バイト１４、および、上から２番目のバイト１２と下から２番目のバイト１３が入れ替わっても、エンディアン設定用レジスタ１０の値は変わらない。このような値をエンディアン設定用レジスタ１０に書き込んだ場合に、ビッグエンディアンになるような回路をデバイス２に具備させておけば、デバイス２をリトルエンディアンのデバイスからビッグエンディアンのデバイスへ切り替えができるものとする。
【００４１】
図３では、図２で説明したものと違うレジスタの値について記載している。図３では、エンディアン設定用レジスタ１０の全ビットに値“０”を書き込んでいる。この場合も、最上位バイト１１と最下位バイト１４、および、上から２番目のバイト１２と下から２番目のバイト１３が入れ替わっても、レジスタ全体の値は変わらない。このような値をエンディアン設定用レジスタ１０に書き込んだ場合に、リトルエンディアンになるような回路をデバイス２に具備させておけば、デバイス２をビッグエンディアンのデバイスからリトルエンディアンのデバイスへ切り替えができるものとする。
【００４２】
このようにエンディアン設定用レジスタ１０に設定するデータ配列によってデータのエンディアンをリトルエンディアンとビッグエンディアンとの間で切り替えることができるようになっている。
【００４３】
次に、データのニブルの並び順を設定する場合の例について説明する。図４および図５は、ニブルの並び順を入れ替えるための設定をするニブル並び順設定用レジスタを示す。図４において、２０はデータのニブルの並び順を設定するためのニブル並び順設定用レジスタ、２１はニブル並び順設定用レジスタ２０の最上位バイト、２２は上から２番目のバイト、２３は下から２番目のバイト、２４は最下位バイトである。２１ａは最上位バイト２１の上位ニブル、２１ｂはその下位ニブル、２２ａは上から２番目のバイト２２の上位ニブル、２２ｂはその下位ニブル、２３ａは下から２番目のバイト２３の上位ニブル、２３ｂはその下位ニブル、２４ａは最下位バイト２４の上位ニブル、２４ｂはその下位ニブルである。このニブル並び順設定用レジスタ２０はデバイス２の内部に設けられている。
【００４４】
ニブルの並び順を変える場合、データの各バイトで上位ニブルと下位ニブルを入れ替えることになる。図４では、データの全ビットに値“１”を書き込んだ場合を記載している。この場合、データの各バイトのニブルの並び順が変わっても、データ全体の値は変わらない、つまり、ニブル２１ａとニブル２１ｂ、ニブル２２ａとニブル２２ｂ、ニブル２３ａとニブル２３ｂ、ニブル２４ａとニブル２４ｂがそれぞれ入れ替わっても、レジスタ全体の値は変わらない。このような値をニブル並び順設定用レジスタ２０に書き込んだ場合に、各バイトの上位ニブルと下位ニブルが入れ替わるような回路をデバイス２に具備させておけば、ＣＰＵ１とデバイス２のデータのバイトのニブルの並び順が異なっていても、ソフトウェアでデバイス２のニブルの並び順を変更できる。
【００４５】
図５では、図４で説明したものと違うレジスタの値について記載している。図５では、ニブル並び順設定用レジスタ２０の全ビットに値“０”を書き込んでいる。この場合も、ニブル２１ａとニブル２１ｂ、ニブル２２ａとニブル２２ｂ、ニブル２３ａとニブル２３ｂ、ニブル２４ａとニブル２４ｂがそれぞれ入れ替わっても、レジスタ全体の値は変わらない。このような値で、かつ、ニブルを入れ替える設定のときに、書き込む値とは異なる値をニブル並び順設定用レジスタ２０に書き込んだ場合に、デバイス２のデータのニブルは変わらないようにしておけば、図４で説明したものを合わせて、ニブルの並び順を入れ替えるか入れ替えないかをソフトウェアで切り替えることができる。
【００４６】
このようにニブル並び順設定用レジスタ２０に設定するデータ配列によってデータのニブルの並び順を入れ替え、また、元に戻すことができるようになっている。
【００４７】
次に、データの上位と下位を入れ替える方法について説明する。図６および図７は、データの上位と下位を入れ替えるための設定をする昇順降順設定用レジスタの設定状態を示す。図６において、３０はデータの上位と下位を入れ替えるための設定をする昇順降順設定用レジスタである。この昇順降順設定用レジスタ３０はデバイス２の内部に設けられている。ここではデータの全ビットに値“１”を書き込んだ場合を記載しているが、このようにデータの上位と下位の並び順が変わってもデータ全体の値が変わらないデータ配列を昇順降順設定用レジスタ３０に書き込んだ場合にデータの上位と下位が反転するような回路をデバイス２に具備させておけば、ＣＰＵ１とデバイス２のデータの上位下位をレジスタ設定によって反転させることが可能となる。逆に、データの上位下位を反転させたくない場合は、図７に示すように、データの上位下位を反転させるためのものでない値を昇順降順設定用レジスタ３０に書き込むことで、データの上位下位を反転させない回路をデバイス２に具備させておけばよい。
【００４８】
なお、これらの設定用のエンディアン設定用レジスタ１０、ニブル並び順設定用レジスタ２０および昇順降順設定用レジスタ３０は、デバイスをソフトウェアで初期化する、いわゆるソフトウェアリセットの対象外とし、初期化をするにはハードウェアリセットによってのみ行えるものとする。
【００４９】
次に、現在の設定がどうなっているかを確認するための設定確認用レジスタについて、図８を用いて説明する。図８において、４０は設定確認用レジスタである。この設定確認用レジスタ４０はデバイス２の内部に設けられている。いま、例として設定確認用レジスタ４０には値“0000 0001 0010 0011 0100 0101 0110 0111”、１６進数でいうと“01234567”が入っているものとする。この設定確認用レジスタ４０の値を読み出した場合、エンディアンの切り替え、データのニブルの並び順、およびデータの上位下位の反転の全てを行っていない場合は、そのままの値である“00000001 0010 0011 0100 0101 0110 0111”、１６進数でいうと“01234567”が読み出される。
【００５０】
図９は、設定によって読み出される設定確認用レジスタ４０の値の一覧を示す。
【００５１】
図９（ｂ）に示すように、エンディアンの切り替え（逆エンディアン）を行っている場合、設定確認用レジスタ４０の値は“0110 0111 0100 0101 0010 0011 0000 0001”、１６進数でいうと“67452301”と読み出される。
【００５２】
図９（ｃ）に示すように、ニブルの反転（ニブルスワップ）を行っている場合、設定確認用レジスタ４０の値は“0001 0000 0011 0010 0101 0100 0111 0110”、１６進数でいうと“10325476”と読み出される。
【００５３】
図９（ｄ）に示すように、データの上位下位の反転（ＬＳＢ／ＭＳＢスワップ）を行っている場合、設定確認用レジスタ４０の値は“1110 0110 1010 0010 1100 0100 1000 0000”、１６進数でいうと“E6A2C480”と読み出される。
【００５４】
図９（ｅ）に示すように、エンディアンの切り替え（逆エンディアン）と、ニブルの反転（ニブルスワップ）を同時に行った場合、設定確認用レジスタ４０の値は“0111 0110 0101 0100 0011 0010 0001 0000”、１６進数でいうと“76543210”と読み出される。
【００５５】
図９（ｆ）に示すように、エンディアンの切り替え（逆エンディアン）と、データの上位下位の反転（ＬＳＢ／ＭＳＢスワップ）を行っている場合、設定確認用レジスタ４０の値は“1000 0000 1100 0100 1010 0010 1110 0110”、１６進数でいうと“80C4A2E6”と読み出される。
【００５６】
図９（ｇ）に示すように、ニブルの反転（ニブルスワップ）と、データの上位下位の反転（ＬＳＢ／ＭＳＢスワップ）を行っている場合、設定確認用レジスタ４０の値は“0110 1110 0010 1010 0100 1100 0000 1000”、１６進数でいうと“6E2A4C08”と読み出される。
【００５７】
図９（ｈ）に示すように、エンディアンの切り替え（逆エンディアン）と、ニブルの反転（ニブルスワップ）と、データの上位下位の反転（ＬＳＢ／ＭＳＢスワップ）を行っている場合、設定確認用レジスタ４０の値は“0000 1000 0100 1100 0010 1010 0110 1110”、１６進数でいうと“084C2A6E”と読み出される。
【００５８】
以上のように、全ての設定の場合において、一致しない値が読み出される設定確認用レジスタをデバイス２に具備させておけば、その値を読むことで、現在どのような設定になっているかを判断することができる。また、この設定確認用レジスタは書き込み禁止レジスタであり、ハードウェアリセットやソフトウェアリセットを用いて初期化をかけても値が変わらないものとする必要がある。
【００５９】
（実施の形態２）
図１０は本発明の実施の形態２のインターフェース設定方法を説明するための回路構成図である。図１０において、５１はＣＰＵ、５２はＣＰＵ５１によって制御されるデバイス、５３はデバイス５２のアドレス入力端子、５４はアドレス入力端子５３に接続されたアドレス入力信号線、５５はＣＰＵ５１のアドレス兼データ入出力端子、５６はデバイス５２のデータ入出力端子、５７はアドレス兼データ入出力端子５５とデータ入出力端子５６とを接続する信号線である。ＣＰＵ５１からは、アドレスとデータが兼用信号としてアドレス兼データ入出力端子５５から入出力される。このような動作をするＣＰＵ５１は、いわゆるマルチプレクスタイプであり、アドレスとデータは、図１１で示すように出力される。
【００６０】
図１１は、ＣＰＵ５１を動作させるクロックと出力されるアドレスおよびデータのタイムチャートである。図１１において、ＣＫはＣＰＵ５１を動作させているクロック、Ｓ１はアドレス兼データ入出力端子５５に現れるアドレスとデータ信号である。一般的に、マルチプレクスタイプのＣＰＵのアドレス兼データ入出力信号は、信号Ｓ１で示すように、クロックＣＫの数サイクル分のアドレスを出力し、次にクロックＣＫの数サイクル分のデータを入出力する。
【００６１】
本実施の形態は、このようなマルチプレクスタイプのＣＰＵに、バスタイプをセパレートタイプにするかマルチプレクスタイプにするかを選択するバスタイプ設定用レジスタを具備させたデバイス５２を接続している。デバイス５２では、アドレス入力端子５３とデータ入出力端子５６が分かれており、これはいわゆるセパレートタイプのＣＰＵを接続することを前提としている。
【００６２】
ここで、デバイス５２におけるバスタイプ設定用レジスタに対して、マルチプレクスタイプを選択するための値を書き込むことで、バスタイプをマルチプレクスタイプに切り替えることができる。デバイス５２をマルチプレクスタイプのデバイスとして設定する場合、アドレス入力信号線５４によってアドレス入力端子５３をバスタイプ設定用レジスタの番地に固定する。これにより、データ入出力端子５６から入力されるアドレス兼データ入力の値は、全て、バスタイプ設定用レジスタに書き込まれることになる。次に、ソフトウェアにより、アドレス兼データ入出力端子５５からバスタイプを切り替えるための設定値を出力し、バスタイプ設定用レジスタに書き込む。こうすることで、デバイス５２のバスタイプを切り替えることができる。
【００６３】
また、通常、マルチプレクスタイプのＣＰＵは、アドレス兼データ入出力端子からアドレスを出力していることを接続先のデバイスに伝えるために、アドレスストローブという信号を出力しており、ＣＰＵがアドレスを出力している途中で信号レベルが変化する。また、ＣＰＵは、接続先のデバイスに対して何らかの値の書き込みを行う際、書き込み要求信号（以降、ライトイネーブル信号）を出力し、接続先のデバイスに対して書き込み動作であることを伝える。これらの、アドレスストローブ信号およびライトイネーブル信号を用いた場合の、ＣＰＵとデバイスの接続について、図１２で説明する。
【００６４】
図１２は、本発明の実施の形態２のインターフェース設定方法の別の回路構成を示す。図１２において、５１はマルチプレクスタイプのＣＰＵ、５２はＣＰＵ５１によって制御されるデバイス、５８はＣＰＵ５１のアドレスストローブ信号出力端子、５３はデバイス５２のアドレス入力端子、５９はアドレスストローブ信号の出力信号線、５４はアドレス信号入力線、５５はＣＰＵ５１のアドレス兼データ入出力端子、５６はデバイス５２のデータ入出力端子、５７はデータ信号線、６０はＣＰＵ５１のライトイネーブル出力端子、６１はデバイス５２のライトイネーブル入力端子、６２はライトイネーブル信号線である。
【００６５】
アドレスストローブ信号出力端子５８は、出力信号線５９を介してアドレス入力端子５３のうちの１本に接続されている。アドレス兼データ入出力端子５５は、データ信号線５７を介してデータ入出力端子５６に接続されている。ライトイネーブル端子６０は、ライトイネーブル信号線６２を介してライトイネーブル入力端子６１に接続されている。
【００６６】
図１３は、デバイス５２の内部の具体的構成の一例を示す。図１３において、６３は内部のアドレス信号線、６４は内部のアドレス兼データ信号線、６５は内部のライトイネーブル信号線、６６はデバイス５２のバスタイプをセパレートタイプにするかマルチプレクスタイプにするかを設定するためのバスタイプ設定用レジスタ、６７は内部のアドレスストローブ信号線、６８はアドレス兼データ信号線６４からアドレス部分を取り込むためのラッチ回路、６９はバスタイプ設定用レジスタ６６の出力信号線、７０は内部で使用するアドレス信号をアドレス信号線６３の値にするかラッチ回路６８の出力値にするかを選択するセレクタ、７１は内部で使用されるアドレス信号線、７２はエンディアン設定およびニブルの並び順およびデータのビットの昇順降順を入れ替える手段の挿入箇所である。
【００６７】
マルチプレクスタイプのＣＰＵ５１からのアドレス兼データ信号線６４には、アドレスとデータの両方の値が乗る。アドレスストローブ信号出力端子５８から出力されるアドレスストローブ信号は、デバイス５２のアドレスストローブ信号線６７に伝わる。アドレスストローブ信号線６７の値が、ＣＰＵ５１がアドレスを出力したことを示す値に変化した時、ラッチ回路６８はアドレス兼データ信号線６４からアドレスの値を取り込み、保持する。
【００６８】
次に、ＣＰＵ５１を接続し、デバイス５２のバスタイプをマルチプレクスタイプに設定するときの動作について説明する。
【００６９】
デバイス５２をマルチプレクスタイプにするために、アドレス入力端子５３の値を、バスタイプ設定用レジスタ６６の番地を指定する値に固定する。このアドレス入力端子５３の値は、アドレス信号線６３を介してバスタイプ設定用レジスタ６６に入力される。すなわち、バスタイプ設定用レジスタ６６が優先的にアドレス指定される。
【００７０】
ライトイネーブル信号線６５の値が書き込み要求を指示したときは、バスタイプ設定用レジスタ６６は、アドレス兼データ信号線６４の値を取り込む。
【００７１】
このとき、取り込んだ値がマルチプレクスタイプへの変更を指示するときは、バスタイプ設定用レジスタ６６は、セレクタ７０を切り替えるための値を出力信号線６９に出力する。その結果、セレクタ７０は、ラッチ回路６８の出力を選択する。このラッチ回路６８の出力は、アドレス兼データ入出力端子５５から出力されたアドレスである。
【００７２】
一方、取り込んだ値がセパレートタイプを指示するときは、バスタイプ設定用レジスタ６６は、セレクタ７０をセパレートタイプ側に切り替え、セレクタ７０は、アドレス信号線６３の値を選択する。
【００７３】
アドレス入力端子５３のうちアドレスストローブ入力以外は、デバイス５２の外部で固定されており、バスタイプ設定用レジスタ６６が常時アドレス指定状態になっている。つまり、アドレス兼データ信号線６４における時系列的に変化する値が常時的にバスタイプ設定用レジスタ６６の入力に印加されるようになっている。これに対して、バスタイプ設定用レジスタ６６は、一旦、マルチプレクスタイプへの変更を指示すると、ハードウェアリセット以外の手段では値を変えられないようになっている。それは、ＣＰＵ５１がデバイス５２に対してデータアクセスを行うたびにバスタイプ設定用レジスタ６６の値が変わってしまうという不都合を回避するためである。すなわち、セレクタ７０の状態を、常に、ラッチ回路６８の選択状態に固定する。
【００７４】
さらに、デバイス５２をマルチプレクスタイプに変更した後、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタの値を設定するように構成することにより、現存する全てのＣＰＵと接続可能となる。
【００７５】
なお、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタは、ラッチ回路６８への分岐点のさらに後方のポイント７２に挿入するものとする。それは、アドレス兼データ入出力端子５６の直後に挿入すると、ラッチ回路６８で取り込むアドレス値にも変更がかかってしまうが、この不都合を避けるためである。
【産業上の利用可能性】
【００７６】
本発明のインターフェース設定方法は、エンディアンやバスタイプが異なるＣＰＵ等のプロセッサとデバイスを接続する技術として有用である。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施の形態１における半導体集積回路のインターフェース設定方法を説明するための回路構成図
【図２】実施の形態１におけるエンディアン設定用レジスタに書き込む値を示す図（その１）
【図３】実施の形態１におけるエンディアン設定用レジスタに書き込む値を示す図（その２）
【図４】実施の形態１におけるニブル並び順設定用レジスタに書き込む値を示す図（その１）
【図５】実施の形態１におけるニブル並び順設定用レジスタに書き込む値を示す図（その２）
【図６】実施の形態１における昇順降順設定用レジスタに書き込む値を示す図（その１）
【図７】実施の形態１における昇順降順設定用レジスタに書き込む値を示す図（その２）
【図８】実施の形態１における設定確認用レジスタに書き込む値を示す図
【図９】実施の形態１における設定確認用レジスタの設定値の一覧を示す図
【図１０】本発明の実施の形態２における半導体集積回路のインターフェース設定方法を説明するための回路構成図（その１）
【図１１】実施の形態２におけるＣＰＵを動作させるクロックと出力されるアドレスおよびデータのタイムチャート
【図１２】本発明の実施の形態２における半導体集積回路のインターフェース設定方法を説明するための回路構成図（その２）
【図１３】本発明の実施の形態２における半導体集積回路のデバイスの内部を詳しく示す回路構成図
【図１４】同じバスタイプで同じデータエンディアンであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図
【図１５】従来の、同じバスタイプで異なるデータエンディアンであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図（その１）
【図１６】従来の、同じバスタイプで異なるデータエンディアンであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図（その２）
【図１７】従来の、同じバスタイプで異なるデータエンディアンであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図（その３）
【図１８】従来の、異なるバスタイプで、データエンディアンは同じであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図
【図１９】従来の、異なるバスタイプで異なるデータエンディアンであるＣＰＵとデバイスを接続した場合の半導体集積回路の結線図
【符号の説明】
【００７８】
１  ＣＰＵ（プロセッサ）
２  デバイス
３  アドレス出力端子
４  アドレス信号線
５  アドレス入力端子
６  データ入出力端子
７  データ信号線
８  データ入出力端子
１０  エンディアン設定用レジスタ
１１  最上位バイト
１２  上から２番目のバイト
１３  下から２番目のバイト
１４  最下位バイト
２０  ニブル並び順設定用レジスタ
２１  最上位バイト
２２  上から２番目のバイト
２３  下から２番目のバイト
２４  最下位バイト
２１ａ，２２ａ，２３ａ，２４ａ  上位ニブル
２１ｂ，２２ｂ，２３ｂ，２４ｂ  下位ニブル
３０  昇順降順設定用レジスタ
４０  設定確認用レジスタ
５１  マルチプレクスタイプのＣＰＵ（プロセッサ）
５２  デバイス
５３  アドレス入力端子
５４  アドレス入力信号線
５５  アドレス兼データ入出力端子
５６  データ入出力端子
５７  データ信号線
５８  アドレスストローブ信号出力端子
５９  アドレスストローブ信号出力信号線
６０  ライトイネーブル出力端子
６１  ライトイネーブル入力端子
６２  ライトイネーブル信号線
６３  内部のアドレス信号線
６４  内部のアドレス兼データ信号線
６５  内部のライトイネーブル信号線
６６  バスタイプ設定用レジスタ
６７  内部のアドレスストローブ信号線
６８  ラッチ回路
６９  出力信号線
７０  セレクタ
７１  内部のアドレス信号線
７２  レジスタの挿入箇所
【図１】
2007148622.tif 000003
【図２】
2007148622.tif 000004
【図３】
2007148622.tif 000005
【図４】
2007148622.tif 000006
【図５】
2007148622.tif 000007
【図６】
2007148622.tif 000008
【図７】
2007148622.tif 000009
【図８】
2007148622.tif 000010
【図９】
2007148622.tif 000011
【図１０】
2007148622.tif 000012
【図１１】
2007148622.tif 000013
【図１２】
2007148622.tif 000014
【図１３】
2007148622.tif 000015
【図１４】
2007148622.tif 000016
【図１５】
2007148622.tif 000017
【図１６】
2007148622.tif 000018
【図１７】
2007148622.tif 000019
【図１８】
2007148622.tif 000020
【図１９】
2007148622.tif 000021