説明

インターフェース設定方法

【課題】半導体集積回路の端子を増加させず、外付け回路を追加せず、基板配線上で交差させず、ソフトウェアのパフォーマンスを低下させずに、データのエンディアン、データのニブルの並び順、データのビットの昇順降順が異なる半導体集積回路の接続を行う。
【解決手段】エンディアン、ニブルの並び順、データのビットの昇順降順を入れ替えても値の変わらないデータ配列を書き込むことでエンディアンの変更、ニブルの並び順の変更、データのビットの昇順降順を行えるレジスタ10,20,30を実装し、デバイス2のハードウェアリセット解除直後にそのレジスタを1回だけ設定することで、エンディアンおよびLSB/MSBの向きを確定させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体集積回路におけるインターフェース設定方法にかかわり、特にはインターフェース仕様(エンディアンやバスタイプ)が異なるプロセッサとデバイスの接続の技術に関するものである。
【背景技術】
【0002】
半導体集積回路において、プロセッサの代表例であるCPU(Central ProcessingUnit:中央演算処理装置)とCPUによって制御されるデバイスとを接続する場合には、それぞれのバスタイプおよびデータのエンディアンを考慮して接続する必要がある。エンディアン(endian)とは、別名バイトオーダー(byteorder)のことであって、2バイト以上のデータ量を持つ数値データを記録したり転送するときには1バイトごとに分割するが、その際の記録/転送を行う順番(データの上下位バイトの並べ方)を示すものである。
【0003】
CPUのバスタイプについては、CPUが出力するアドレス信号とデータ信号がそれぞれ別の端子群から出力されるもの(セパレートタイプ)と、同一の端子群からアドレスおよびデータの両方が出力されるもの(マルチプレクスタイプ)との2種類が存在する。CPUのエンディアンについては、CPUのデータレジスタの下位バイトにデータの上位バイトを、上位バイトにデータの下位バイトをそれぞれ格納するいわゆるビッグエンディアン(big endian)方式と、CPUのデータレジスタの上位バイトにデータの上位バイトを、下位バイトにデータの下位バイトをそれぞれ格納するいわゆるリトルエンディアン(little endian)方式との2種類が存在する。ビッグエンディアン方式では最上位のバイトから順番に記録/送信し、リトルエンディアン方式では最下位のバイトから順番に記録/送信する。また、CPUのニブル(nibble:バイトの2分の1)については、CPUのデータレジスタの下位ニブルにデータの上位ニブルを、上位ニブルにデータの下位ニブルを格納する方法と、上位ニブルにデータの上位ニブルを、下位ニブルにデータの下位ニブルを格納する方法の2種類が存在する。データ端子の並び順は、各CPUメーカーが任意に定めている。
【0004】
バスタイプおよびデータエンディアンが異なる半導体集積回路の接続技術で望まれることは、外付け回路を極力減らすこと、半導体集積回路の端子を浪費しないこと、基板配線の引き回しを避けること、パフォーマンスの低下を避けること等である。
【0005】
以下、現在広く用いられているバスタイプおよびエンディアンが異なる半導体集積回路の相互接続技術について説明する。
【0006】
図14は、同じバスタイプで同じデータエンディアンであるCPUとデバイスを接続した場合の結線を示す。図14において、81はCPU、82はCPU81によって制御されるCPU81と同じエンディアンで同じバスタイプのデバイス、83はCPU81のアドレス出力端子、84は基板上のアドレス信号線、85はデバイス82のアドレス入力端子、86はCPU81のデータ入出力端子、87は基板上のデータ信号線、88はデバイス82のデータ入出力端子である。一般的に、CPUとデバイスの接続には、アドレスとデータ以外にも、例えばイネーブル信号、割り込み信号、アクノリッジ信号などがあるが、ここでは省略する。CPU81のアドレス出力端子83から出力されたアドレス信号は、信号線84を介してデバイス82のアドレス入力端子85に供給される。CPU81のデータ入出力端子86から出力されたデータ信号は、データ信号線87を介してデバイス82のデータ入出力端子88に供給される。データ信号は双方向信号であり、デバイス82から出力されることもある。その場合は、デバイス82のデータ入出力端子88からデータが出力され、データ信号線87を介してCPU81のデータ入出力端子86に供給される。ここで、CPU81はデータとアドレスが別の端子83,86に分かれており、アドレスはアドレス、データはデータとしてデバイス82に供給されている。つまり、CPU81とデバイス82は同じバスタイプ(セパレートタイプ)である。また、CPU81のデータのエンディアンはデバイス82のデータのエンディアンと同じものである。よって、データ信号線87は、CPU81のデータ入出力端子86の最上位ビットとデバイス82のデータ入出力端子88の最上位ビット同士をつなぎ、以降、降順にデータ入出力端子86とデータ入出力端子88の最下位ビット同士までを接続されている。
【0007】
図15は、同じバスタイプで異なるデータエンディアンであるCPUとデバイスを接続した場合の結線を示す。図15において、82aはCPU81と同じバスタイプでエンディアンが異なるデバイスである。アドレス信号の接続については、CPU81とデバイス82aのバスタイプが同じ(セパレートタイプ)であることから、図14で説明したのと同様である。CPU81のデータ入出力端子86から出力されたデータ信号を、データ信号線87を介してデバイス82aのデータ入出力端子88aに供給する。データ信号は、CPU81とデバイス82aのデータエンディアンが異なることから、データ信号線87を交差させて接続している。この場合の接続方法としては、例えばCPU81およびデバイス82aがそれぞれ32ビットのデータ幅を持っていた場合、CPU81のデータ0ビット〜7ビットから出ている信号を、デバイス82aのデータの24ビット〜31ビットに接続し、CPU81のデータ8ビット〜15ビットから出ている信号を、デバイス82aのデータの16ビット〜23ビットに接続し、CPU81のデータ16ビット〜23ビットから出ている信号を、デバイス82aのデータの8ビット〜15ビットに接続し、CPU81のデータ24ビット〜31ビットから出ている信号を、デバイス82aのデータの0ビット〜7ビットに接続する。つまり、データのバイトの並び順をCPU81とデバイス82a側で逆にする必要がある。そのため、データ信号線87は、基板上で交差することになる。
【0008】
図16は、同じバスタイプでデータエンディアンが異なるCPUとデバイスを接続した場合の、図15とは異なる結線の例を示す。図16において、82aはCPU81と同じバスタイプ(セパレートタイプ)でエンディアンが異なるデバイス、88aはデバイス82aのデータ入出力端子、89はデバイス82aのデータエンディアンを変えるためのエンディアン変更入力端子、90はエンディアン変更入力端子89に接続した入力信号線である。アドレス信号の接続については、図14、図15で説明したものと同様である。データ信号の接続については、CPU81とデバイス82aのエンディアンが異なっているが、エンディアン変更入力端子89の機能によってエンディアンを変更できるため、データ信号線87の基板上の交差はなく、図14と同様に結線する。エンディアン変更入力端子89は、入力信号線90によって何らかの値に固定されるが、その値によってビッグエンディアンかリトルエンディアンかを変更可能な回路が実装されている。したがって、図15で示すような、基板上でのデータ結線の交差は発生しない。代わりに、デバイス82aの外部に端子を1つ追加することになる。
【0009】
図17は、同じバスタイプで異なるデータエンディアンのCPUとデバイスを接続した場合の、図16および図17とは異なる結線の例を示す。図17において、82aはCPU81と同じバスタイプでエンディアンが異なるデバイスである。アドレス、データともに、結線の方法としては、図14で説明したものと同じであるが、デバイス82aには、図16のようなエンディアン変更入力端子は存在しない。この場合、CPU81がデバイス82aとデータのやりとりを行う度に、ソフトウェアでデータの上位バイトを下位バイトとを入れ替えることにより、異なるエンディアンのデバイス間でのデータ通信を可能とする。実際には、データアクセスの度に、数クロックサイクルから場合によっては数十クロックサイクルを消費して、データのエンディアン変更を行うことになる。
【0010】
図18は、異なるバスタイプでデータエンディアンは同じであるCPUとデバイスを接続した場合の結線を示す。図18において、81aはマルチプレクスタイプのCPU、82はCPU81aと異なるバスタイプ(セパレートタイプ)でエンディアンが同じであるデバイス、83aはアドレスストローブ信号出力端子、91はアドレスストローブ信号出力端子83aの値を後述するラッチ回路92に入力するための出力信号線、92は後述するアドレス兼データ信号線87におけるアドレス部分を取り込むためのラッチ回路、86aはCPU81aのアドレス兼データ入出力端子、87aはアドレス兼データ信号線である。アドレス兼データ入出力端子86aから出力されたアドレス兼データ信号は、アドレス兼データ信号線87aを介してデバイス82のデータ入出力端子88に入力される。また、アドレス兼データ信号は、ラッチ回路92にも入力される。アドレス兼データ入出力端子86aからは、ある時点ではアドレスが、また、ある時点ではデータが出力されているが、アドレスが出力された時点で、アドレスストローブ信号出力端子83aからアドレスストローブ信号が出力される。その出力は、出力信号線91を介してラッチ回路92に入力され、ラッチ回路92はアドレス兼データ信号線87aからアドレスの値を取り込む。ラッチ回路92で取り込んだアドレスの値は、信号線84を介してアドレス入力端子85に供給される。データは、アドレス兼データ信号線87aを介してデータ入出力端子88に供給される。信号線84の値とアドレス兼データ信号線87aの値が一定となった時、デバイス82はそれぞれの値を取り込む。こうすることで、バスタイプが異なるCPUとデバイス間でのデータ通信が可能となる。
【0011】
図19は、異なるバスタイプでデータエンディアンも異なるCPUとデバイスを接続した場合の結線を示す。図19において、81aはマルチプレクスタイプのCPU、82aはCPU81aと異なるバスタイプ(セパレートタイプ)でエンディアンも異なるデバイス、88aはデバイス82aのデータ入出力端子である。アドレスの入力については、図18で説明したものと同じである。データの入出力に関しては、図15で説明したものと同じである。
【0012】
これらの相互接続技術は、バスタイプが異なるCPUとデバイスの接続に有効であり、現在広く使用されている。
【0013】
また、バスタイプおよびエンディアンが異なる半導体集積回路の別の接続技術について、特許文献1(エンディアン変換方式)、特許文献2(自動判定機能付きエンディアン変換装置および方法)、および特許文献3(半導体装置におけるインタフェース回路)に記載のものがある。
【特許文献1】特開平3−160550号公報(第3−4頁、第3−6図)
【特許文献2】特開平8−305628号公報(第4−5頁、第1−4図)
【特許文献3】特開2004−13943号公報(第4−6頁、第1−2図)
【発明の開示】
【発明が解決しようとする課題】
【0014】
しかしながら、これらの方法では、外付け回路の増加、半導体集積回路の端子浪費、パフォーマンスの低下、基板上の配線混雑が避けられず、所望する全ての好条件を同時に満たせる接続技術にはなっていない。
【0015】
本発明は、バスタイプやエンディアン等のインターフェース仕様が異なる半導体集積回路の接続において、外付け回路の追加や、半導体集積回路の端子の浪費や、パフォーマンスの低下や、基板上の配線混雑などについて、これを緩和させることのできる技術を提供することを目的としている。
【課題を解決するための手段】
【0016】
本発明によるインターフェース設定方法は、プロセッサと、前記プロセッサによって制御されるもので複数種類のインターフェース仕様を有するデバイスとの間でインターフェース仕様を設定する方法であって、前記デバイスにインターフェース仕様設定用のレジスタを設けておき、前記プロセッサから前記デバイスの前記レジスタに対するソフトウェア的制御により前記レジスタに所定のインターフェース仕様を設定し、この設定以降、前記デバイスを前記レジスタに設定された前記インターフェース仕様で動作させることを特徴とする。
【0017】
これによれば、デバイスにインターフェース仕様設定用のレジスタを設けておき、プロセッサからの制御により前記のレジスタにインターフェース仕様をソフトウェア的に設定するので、CPU等のプロセッサのインターフェース仕様に整合する状態で、プロセッサとデバイスとをインターフェースさせることができる。プロセッサおよびデバイスのハードウェアリセット解除直後に一度だけデバイスのレジスタにインターフェース仕様の設定を行い、以後その状態で固定し、プロセッサに合ったインターフェース仕様でデバイスに対してアクセスを行う。プロセッサから受け取るデータのタイプによらず、プロセッサとデバイスとの間で、データのやりとりが可能となる。そして、外付け回路や特殊な端子の追加や、基板配線の改変を必要としないですむ。
【0018】
上記において、前記インターフェース仕様設定用のレジスタとしてデータのエンディアンを設定するためのエンディアン設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記エンディアン設定用レジスタにデータのエンディアンを設定するという態様がある。
【0019】
この場合に、前記データのエンディアンの設定は、前記エンディアン設定用レジスタにエンディアンの影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【0020】
これによれば、エンディアンが異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてエンディアンを合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのエンディアンを変更する必要もなく、エンディアンを変更するための端子の追加も必要でなくなる。
【0021】
また、上記において、前記インターフェース仕様設定用のレジスタとしてデータのニブルの並び順を設定するためのニブル並び順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記ニブル並び順設定用レジスタにデータのニブルの並び順を設定するという態様がある。
【0022】
この場合に、前記データのニブルの並び順の設定は、前記ニブル並び順設定用レジスタにニブルの並び順の影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【0023】
これによれば、データのニブルの並び順が異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてデータのニブルの並び順を合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのニブルの並び順を変更する必要もなく、ニブルの並び順を変更するための端子の追加も必要でなくなる。
【0024】
また、上記において、前記インターフェース仕様設定用のレジスタとしてデータのビットの昇順降順を設定するための昇順降順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記昇順降順設定用レジスタにデータのビットの昇順降順を設定するという態様がある。
【0025】
この場合に、前記データのビットの昇順降順の設定は、前記昇順降順設定用レジスタにデータのビットの昇順降順の影響を受けないデータ配列を書き込むことによって行うことが好ましい。
【0026】
これによれば、データのビットの昇順降順が異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を交差させてデータのビットの昇順降順を合わせる必要もなく、ソフトウェアでプロセッサからデバイスにアクセスを行う度にソフトウェアでデータのビットの昇順降順を変更する必要もなく、データのビットの昇順降順を変更するための端子の追加も必要でなくなる。
【0027】
また、上記において、前記インターフェース仕様設定用のレジスタとしてアドレスおよびデータのバスタイプを設定するためのバスタイプ設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記バスタイプ設定用レジスタにアドレスおよびデータのバスタイプを設定するという態様がある。
【0028】
この場合に、前記バスタイプ設定用レジスタとして、前記デバイスが持つアドレス信号幅から1ビット除いたもので表現可能な番地の任意のレジスタを用い、前記デバイスのバスタイプをセパレートタイプまたはマルチプレクスタイプに設定するためのデータ配列を書き込むことが好ましい。
【0029】
これによれば、アドレスおよびデータのバスタイプが異なるプロセッサとデバイスの接続に際して、外付け回路が必要でなく、基板配線を改変してバスタイプを合わせる必要もなく、基板上にアドレス値を保持するためのラッチ回路を実装する必要もない。
【0030】
また、上記において、前記バスタイプ設定用レジスタは、前記バスタイプをマルチプレクスタイプに設定した場合に、その設定値を保持し、前記設定値の更新はハードウェアリセットのみで可能であるという態様がある。これによれば、プロセッサがデバイスに対してデータアクセスを行うたびにバスタイプ設定用レジスタの値が変わってしまうという不都合を回避することができる。
【0031】
また、上記において、前記デバイスをマルチプレクスタイプとして使用する際、前記バスタイプ設定用レジスタの番地指定に無関係の1ビットを前記プロセッサが出力するアドレスストローブ信号の入力として使用するという態様がある。これによれば、バスタイプ設定用レジスタの番地指定に用いなかったアドレス入力のうち任意の1本をプロセッサが出力するアドレスストローブ入力端子として用いることで、デバイスの端子の増加が抑えられる。
【0032】
また、上記において、前記インターフェース仕様設定用のレジスタはソフトウェアリセット機能の対象外で、設定値の変更はハードウェアリセットまたは値の上書きで可能となるという態様がある。ここで、インターフェース仕様設定用のレジスタは、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタ、バスタイプ設定用レジスタのうちの任意のいずれか1つまたは任意のいずれか2つ以上の組み合わせである。これによれば、不測の誤動作を未然に回避することができる。
【0033】
また、上記において、さらに、前記デバイスにおける設定確認用レジスタを用いて、前記インターフェース仕様設定用のレジスタにおける設定を確認するという態様がある。これによれば、設定確認用レジスタの値を読み出すことで、現在の設定状態が分かる。
【0034】
また、上記において、前記インターフェース仕様設定用のレジスタとして、データのエンディアンを設定するためのエンディアン設定用レジスタ、データのニブルの並び順を設定するためのニブル並び順設定用レジスタ、データのビットの昇順降順を設定するための昇順降順設定用レジスタの少なくともいずれか2つ以上を用い、前記設定確認用レジスタは、前記いずれのレジスタの値も変更した場合にも互いに一致しない値を設定し、かつハードウェアリセットおよびソフトウェアリセットでも値を保持するという態様がある。これは、設定確認用レジスタを書き込み禁止レジスタにするということであり、間違いなく現在の設定値を知ることが可能となる。
【発明の効果】
【0035】
本発明によれば、エンディアンやバスタイプなどのインターフェース仕様が異なるプロセッサとデバイスを接続する際に、外付け回路を追加する必要がなく、プロセッサおよびデバイスの端子を浪費することがなく、基板配線の改変をする必要がなく、ソフトウェアの実行パフォーマンスを低下させることがない。
【発明を実施するための最良の形態】
【0036】
以下、本発明にかかわるインターフェース設定方法の実施の形態を図面に基づいて詳細に説明する。
【0037】
(実施の形態1)
図1は本発明の実施の形態1における半導体集積回路のインターフェース設定方法を説明するための回路構成図である。図1において、1はバスタイプがセパレートタイプのCPU(プロセッサの代表例)、2はCPU1によって制御される同じくセパレートタイプのデバイス、3はCPU1のアドレス出力端子、4は基板上のアドレス信号線、5はデバイス2のアドレス入力端子、6はCPU1のデータ入出力端子、7は基板上のデータ信号線、8はデバイスのデータ入出力端子である。一般的に、CPUとデバイスの接続には、アドレスとデータ以外にも、例えばイネーブル信号、割り込み信号、アクノリッジ信号などがあるが、ここでは省略する。
【0038】
ここで、CPU1とデバイス2のデータのエンディアンが同じであるとすると、特に何の対策を施さなくても接続上は問題がない。しかし、CPU1とデバイス2のデータのエンディアンやニブルの並び順が異なる場合は、図15に示すように基板上のデータ信号線をバイト単位またはニブル単位で交差させなければならない。それを回避するために、本実施の形態では、エンディアン設定用レジスタを設け、これに設定値を書き込むことでエンディアンを設定する。したがって、エンディアンが異ならないものとしてCPU1とデバイス2を接続する。
【0039】
具体的な例を、図2および図3を用いて説明する。図2および図3は、エンディアン設定用レジスタに書き込む値を示す図である。図2、図3において、10はエンディアン設定用の設定値を書き込むエンディアン設定用レジスタ、11はエンディアン設定用レジスタ10の最上位バイト、12は上から2番目のバイト、13は下から2番目のバイト、14は最下位バイトである。このエンディアン設定用レジスタ10はデバイス2の内部に設けられている。
【0040】
デバイス2のエンディアンを変更したい場合、エンディアン設定用レジスタ10に、上位バイトと下位バイトの並び順が変わってもレジスタ全体で値が変わらない値を書き込む。例えば図2では、全ビットに対して、値“1”を書き込んだ場合について記載しているが、この場合、最上位バイト11と最下位バイト14、および、上から2番目のバイト12と下から2番目のバイト13が入れ替わっても、エンディアン設定用レジスタ10の値は変わらない。このような値をエンディアン設定用レジスタ10に書き込んだ場合に、ビッグエンディアンになるような回路をデバイス2に具備させておけば、デバイス2をリトルエンディアンのデバイスからビッグエンディアンのデバイスへ切り替えができるものとする。
【0041】
図3では、図2で説明したものと違うレジスタの値について記載している。図3では、エンディアン設定用レジスタ10の全ビットに値“0”を書き込んでいる。この場合も、最上位バイト11と最下位バイト14、および、上から2番目のバイト12と下から2番目のバイト13が入れ替わっても、レジスタ全体の値は変わらない。このような値をエンディアン設定用レジスタ10に書き込んだ場合に、リトルエンディアンになるような回路をデバイス2に具備させておけば、デバイス2をビッグエンディアンのデバイスからリトルエンディアンのデバイスへ切り替えができるものとする。
【0042】
このようにエンディアン設定用レジスタ10に設定するデータ配列によってデータのエンディアンをリトルエンディアンとビッグエンディアンとの間で切り替えることができるようになっている。
【0043】
次に、データのニブルの並び順を設定する場合の例について説明する。図4および図5は、ニブルの並び順を入れ替えるための設定をするニブル並び順設定用レジスタを示す。図4において、20はデータのニブルの並び順を設定するためのニブル並び順設定用レジスタ、21はニブル並び順設定用レジスタ20の最上位バイト、22は上から2番目のバイト、23は下から2番目のバイト、24は最下位バイトである。21aは最上位バイト21の上位ニブル、21bはその下位ニブル、22aは上から2番目のバイト22の上位ニブル、22bはその下位ニブル、23aは下から2番目のバイト23の上位ニブル、23bはその下位ニブル、24aは最下位バイト24の上位ニブル、24bはその下位ニブルである。このニブル並び順設定用レジスタ20はデバイス2の内部に設けられている。
【0044】
ニブルの並び順を変える場合、データの各バイトで上位ニブルと下位ニブルを入れ替えることになる。図4では、データの全ビットに値“1”を書き込んだ場合を記載している。この場合、データの各バイトのニブルの並び順が変わっても、データ全体の値は変わらない、つまり、ニブル21aとニブル21b、ニブル22aとニブル22b、ニブル23aとニブル23b、ニブル24aとニブル24bがそれぞれ入れ替わっても、レジスタ全体の値は変わらない。このような値をニブル並び順設定用レジスタ20に書き込んだ場合に、各バイトの上位ニブルと下位ニブルが入れ替わるような回路をデバイス2に具備させておけば、CPU1とデバイス2のデータのバイトのニブルの並び順が異なっていても、ソフトウェアでデバイス2のニブルの並び順を変更できる。
【0045】
図5では、図4で説明したものと違うレジスタの値について記載している。図5では、ニブル並び順設定用レジスタ20の全ビットに値“0”を書き込んでいる。この場合も、ニブル21aとニブル21b、ニブル22aとニブル22b、ニブル23aとニブル23b、ニブル24aとニブル24bがそれぞれ入れ替わっても、レジスタ全体の値は変わらない。このような値で、かつ、ニブルを入れ替える設定のときに、書き込む値とは異なる値をニブル並び順設定用レジスタ20に書き込んだ場合に、デバイス2のデータのニブルは変わらないようにしておけば、図4で説明したものを合わせて、ニブルの並び順を入れ替えるか入れ替えないかをソフトウェアで切り替えることができる。
【0046】
このようにニブル並び順設定用レジスタ20に設定するデータ配列によってデータのニブルの並び順を入れ替え、また、元に戻すことができるようになっている。
【0047】
次に、データの上位と下位を入れ替える方法について説明する。図6および図7は、データの上位と下位を入れ替えるための設定をする昇順降順設定用レジスタの設定状態を示す。図6において、30はデータの上位と下位を入れ替えるための設定をする昇順降順設定用レジスタである。この昇順降順設定用レジスタ30はデバイス2の内部に設けられている。ここではデータの全ビットに値“1”を書き込んだ場合を記載しているが、このようにデータの上位と下位の並び順が変わってもデータ全体の値が変わらないデータ配列を昇順降順設定用レジスタ30に書き込んだ場合にデータの上位と下位が反転するような回路をデバイス2に具備させておけば、CPU1とデバイス2のデータの上位下位をレジスタ設定によって反転させることが可能となる。逆に、データの上位下位を反転させたくない場合は、図7に示すように、データの上位下位を反転させるためのものでない値を昇順降順設定用レジスタ30に書き込むことで、データの上位下位を反転させない回路をデバイス2に具備させておけばよい。
【0048】
なお、これらの設定用のエンディアン設定用レジスタ10、ニブル並び順設定用レジスタ20および昇順降順設定用レジスタ30は、デバイスをソフトウェアで初期化する、いわゆるソフトウェアリセットの対象外とし、初期化をするにはハードウェアリセットによってのみ行えるものとする。
【0049】
次に、現在の設定がどうなっているかを確認するための設定確認用レジスタについて、図8を用いて説明する。図8において、40は設定確認用レジスタである。この設定確認用レジスタ40はデバイス2の内部に設けられている。いま、例として設定確認用レジスタ40には値“0000 0001 0010 0011 0100 0101 0110 0111”、16進数でいうと“01234567”が入っているものとする。この設定確認用レジスタ40の値を読み出した場合、エンディアンの切り替え、データのニブルの並び順、およびデータの上位下位の反転の全てを行っていない場合は、そのままの値である“00000001 0010 0011 0100 0101 0110 0111”、16進数でいうと“01234567”が読み出される。
【0050】
図9は、設定によって読み出される設定確認用レジスタ40の値の一覧を示す。
【0051】
図9(b)に示すように、エンディアンの切り替え(逆エンディアン)を行っている場合、設定確認用レジスタ40の値は“0110 0111 0100 0101 0010 0011 0000 0001”、16進数でいうと“67452301”と読み出される。
【0052】
図9(c)に示すように、ニブルの反転(ニブルスワップ)を行っている場合、設定確認用レジスタ40の値は“0001 0000 0011 0010 0101 0100 0111 0110”、16進数でいうと“10325476”と読み出される。
【0053】
図9(d)に示すように、データの上位下位の反転(LSB/MSBスワップ)を行っている場合、設定確認用レジスタ40の値は“1110 0110 1010 0010 1100 0100 1000 0000”、16進数でいうと“E6A2C480”と読み出される。
【0054】
図9(e)に示すように、エンディアンの切り替え(逆エンディアン)と、ニブルの反転(ニブルスワップ)を同時に行った場合、設定確認用レジスタ40の値は“0111 0110 0101 0100 0011 0010 0001 0000”、16進数でいうと“76543210”と読み出される。
【0055】
図9(f)に示すように、エンディアンの切り替え(逆エンディアン)と、データの上位下位の反転(LSB/MSBスワップ)を行っている場合、設定確認用レジスタ40の値は“1000 0000 1100 0100 1010 0010 1110 0110”、16進数でいうと“80C4A2E6”と読み出される。
【0056】
図9(g)に示すように、ニブルの反転(ニブルスワップ)と、データの上位下位の反転(LSB/MSBスワップ)を行っている場合、設定確認用レジスタ40の値は“0110 1110 0010 1010 0100 1100 0000 1000”、16進数でいうと“6E2A4C08”と読み出される。
【0057】
図9(h)に示すように、エンディアンの切り替え(逆エンディアン)と、ニブルの反転(ニブルスワップ)と、データの上位下位の反転(LSB/MSBスワップ)を行っている場合、設定確認用レジスタ40の値は“0000 1000 0100 1100 0010 1010 0110 1110”、16進数でいうと“084C2A6E”と読み出される。
【0058】
以上のように、全ての設定の場合において、一致しない値が読み出される設定確認用レジスタをデバイス2に具備させておけば、その値を読むことで、現在どのような設定になっているかを判断することができる。また、この設定確認用レジスタは書き込み禁止レジスタであり、ハードウェアリセットやソフトウェアリセットを用いて初期化をかけても値が変わらないものとする必要がある。
【0059】
(実施の形態2)
図10は本発明の実施の形態2のインターフェース設定方法を説明するための回路構成図である。図10において、51はCPU、52はCPU51によって制御されるデバイス、53はデバイス52のアドレス入力端子、54はアドレス入力端子53に接続されたアドレス入力信号線、55はCPU51のアドレス兼データ入出力端子、56はデバイス52のデータ入出力端子、57はアドレス兼データ入出力端子55とデータ入出力端子56とを接続する信号線である。CPU51からは、アドレスとデータが兼用信号としてアドレス兼データ入出力端子55から入出力される。このような動作をするCPU51は、いわゆるマルチプレクスタイプであり、アドレスとデータは、図11で示すように出力される。
【0060】
図11は、CPU51を動作させるクロックと出力されるアドレスおよびデータのタイムチャートである。図11において、CKはCPU51を動作させているクロック、S1はアドレス兼データ入出力端子55に現れるアドレスとデータ信号である。一般的に、マルチプレクスタイプのCPUのアドレス兼データ入出力信号は、信号S1で示すように、クロックCKの数サイクル分のアドレスを出力し、次にクロックCKの数サイクル分のデータを入出力する。
【0061】
本実施の形態は、このようなマルチプレクスタイプのCPUに、バスタイプをセパレートタイプにするかマルチプレクスタイプにするかを選択するバスタイプ設定用レジスタを具備させたデバイス52を接続している。デバイス52では、アドレス入力端子53とデータ入出力端子56が分かれており、これはいわゆるセパレートタイプのCPUを接続することを前提としている。
【0062】
ここで、デバイス52におけるバスタイプ設定用レジスタに対して、マルチプレクスタイプを選択するための値を書き込むことで、バスタイプをマルチプレクスタイプに切り替えることができる。デバイス52をマルチプレクスタイプのデバイスとして設定する場合、アドレス入力信号線54によってアドレス入力端子53をバスタイプ設定用レジスタの番地に固定する。これにより、データ入出力端子56から入力されるアドレス兼データ入力の値は、全て、バスタイプ設定用レジスタに書き込まれることになる。次に、ソフトウェアにより、アドレス兼データ入出力端子55からバスタイプを切り替えるための設定値を出力し、バスタイプ設定用レジスタに書き込む。こうすることで、デバイス52のバスタイプを切り替えることができる。
【0063】
また、通常、マルチプレクスタイプのCPUは、アドレス兼データ入出力端子からアドレスを出力していることを接続先のデバイスに伝えるために、アドレスストローブという信号を出力しており、CPUがアドレスを出力している途中で信号レベルが変化する。また、CPUは、接続先のデバイスに対して何らかの値の書き込みを行う際、書き込み要求信号(以降、ライトイネーブル信号)を出力し、接続先のデバイスに対して書き込み動作であることを伝える。これらの、アドレスストローブ信号およびライトイネーブル信号を用いた場合の、CPUとデバイスの接続について、図12で説明する。
【0064】
図12は、本発明の実施の形態2のインターフェース設定方法の別の回路構成を示す。図12において、51はマルチプレクスタイプのCPU、52はCPU51によって制御されるデバイス、58はCPU51のアドレスストローブ信号出力端子、53はデバイス52のアドレス入力端子、59はアドレスストローブ信号の出力信号線、54はアドレス信号入力線、55はCPU51のアドレス兼データ入出力端子、56はデバイス52のデータ入出力端子、57はデータ信号線、60はCPU51のライトイネーブル出力端子、61はデバイス52のライトイネーブル入力端子、62はライトイネーブル信号線である。
【0065】
アドレスストローブ信号出力端子58は、出力信号線59を介してアドレス入力端子53のうちの1本に接続されている。アドレス兼データ入出力端子55は、データ信号線57を介してデータ入出力端子56に接続されている。ライトイネーブル端子60は、ライトイネーブル信号線62を介してライトイネーブル入力端子61に接続されている。
【0066】
図13は、デバイス52の内部の具体的構成の一例を示す。図13において、63は内部のアドレス信号線、64は内部のアドレス兼データ信号線、65は内部のライトイネーブル信号線、66はデバイス52のバスタイプをセパレートタイプにするかマルチプレクスタイプにするかを設定するためのバスタイプ設定用レジスタ、67は内部のアドレスストローブ信号線、68はアドレス兼データ信号線64からアドレス部分を取り込むためのラッチ回路、69はバスタイプ設定用レジスタ66の出力信号線、70は内部で使用するアドレス信号をアドレス信号線63の値にするかラッチ回路68の出力値にするかを選択するセレクタ、71は内部で使用されるアドレス信号線、72はエンディアン設定およびニブルの並び順およびデータのビットの昇順降順を入れ替える手段の挿入箇所である。
【0067】
マルチプレクスタイプのCPU51からのアドレス兼データ信号線64には、アドレスとデータの両方の値が乗る。アドレスストローブ信号出力端子58から出力されるアドレスストローブ信号は、デバイス52のアドレスストローブ信号線67に伝わる。アドレスストローブ信号線67の値が、CPU51がアドレスを出力したことを示す値に変化した時、ラッチ回路68はアドレス兼データ信号線64からアドレスの値を取り込み、保持する。
【0068】
次に、CPU51を接続し、デバイス52のバスタイプをマルチプレクスタイプに設定するときの動作について説明する。
【0069】
デバイス52をマルチプレクスタイプにするために、アドレス入力端子53の値を、バスタイプ設定用レジスタ66の番地を指定する値に固定する。このアドレス入力端子53の値は、アドレス信号線63を介してバスタイプ設定用レジスタ66に入力される。すなわち、バスタイプ設定用レジスタ66が優先的にアドレス指定される。
【0070】
ライトイネーブル信号線65の値が書き込み要求を指示したときは、バスタイプ設定用レジスタ66は、アドレス兼データ信号線64の値を取り込む。
【0071】
このとき、取り込んだ値がマルチプレクスタイプへの変更を指示するときは、バスタイプ設定用レジスタ66は、セレクタ70を切り替えるための値を出力信号線69に出力する。その結果、セレクタ70は、ラッチ回路68の出力を選択する。このラッチ回路68の出力は、アドレス兼データ入出力端子55から出力されたアドレスである。
【0072】
一方、取り込んだ値がセパレートタイプを指示するときは、バスタイプ設定用レジスタ66は、セレクタ70をセパレートタイプ側に切り替え、セレクタ70は、アドレス信号線63の値を選択する。
【0073】
アドレス入力端子53のうちアドレスストローブ入力以外は、デバイス52の外部で固定されており、バスタイプ設定用レジスタ66が常時アドレス指定状態になっている。つまり、アドレス兼データ信号線64における時系列的に変化する値が常時的にバスタイプ設定用レジスタ66の入力に印加されるようになっている。これに対して、バスタイプ設定用レジスタ66は、一旦、マルチプレクスタイプへの変更を指示すると、ハードウェアリセット以外の手段では値を変えられないようになっている。それは、CPU51がデバイス52に対してデータアクセスを行うたびにバスタイプ設定用レジスタ66の値が変わってしまうという不都合を回避するためである。すなわち、セレクタ70の状態を、常に、ラッチ回路68の選択状態に固定する。
【0074】
さらに、デバイス52をマルチプレクスタイプに変更した後、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタの値を設定するように構成することにより、現存する全てのCPUと接続可能となる。
【0075】
なお、エンディアン設定用レジスタ、ニブル並び順設定用レジスタ、昇順降順設定用レジスタは、ラッチ回路68への分岐点のさらに後方のポイント72に挿入するものとする。それは、アドレス兼データ入出力端子56の直後に挿入すると、ラッチ回路68で取り込むアドレス値にも変更がかかってしまうが、この不都合を避けるためである。
【産業上の利用可能性】
【0076】
本発明のインターフェース設定方法は、エンディアンやバスタイプが異なるCPU等のプロセッサとデバイスを接続する技術として有用である。
【図面の簡単な説明】
【0077】
【図1】本発明の実施の形態1における半導体集積回路のインターフェース設定方法を説明するための回路構成図
【図2】実施の形態1におけるエンディアン設定用レジスタに書き込む値を示す図(その1)
【図3】実施の形態1におけるエンディアン設定用レジスタに書き込む値を示す図(その2)
【図4】実施の形態1におけるニブル並び順設定用レジスタに書き込む値を示す図(その1)
【図5】実施の形態1におけるニブル並び順設定用レジスタに書き込む値を示す図(その2)
【図6】実施の形態1における昇順降順設定用レジスタに書き込む値を示す図(その1)
【図7】実施の形態1における昇順降順設定用レジスタに書き込む値を示す図(その2)
【図8】実施の形態1における設定確認用レジスタに書き込む値を示す図
【図9】実施の形態1における設定確認用レジスタの設定値の一覧を示す図
【図10】本発明の実施の形態2における半導体集積回路のインターフェース設定方法を説明するための回路構成図(その1)
【図11】実施の形態2におけるCPUを動作させるクロックと出力されるアドレスおよびデータのタイムチャート
【図12】本発明の実施の形態2における半導体集積回路のインターフェース設定方法を説明するための回路構成図(その2)
【図13】本発明の実施の形態2における半導体集積回路のデバイスの内部を詳しく示す回路構成図
【図14】同じバスタイプで同じデータエンディアンであるCPUとデバイスを接続した場合の半導体集積回路の結線図
【図15】従来の、同じバスタイプで異なるデータエンディアンであるCPUとデバイスを接続した場合の半導体集積回路の結線図(その1)
【図16】従来の、同じバスタイプで異なるデータエンディアンであるCPUとデバイスを接続した場合の半導体集積回路の結線図(その2)
【図17】従来の、同じバスタイプで異なるデータエンディアンであるCPUとデバイスを接続した場合の半導体集積回路の結線図(その3)
【図18】従来の、異なるバスタイプで、データエンディアンは同じであるCPUとデバイスを接続した場合の半導体集積回路の結線図
【図19】従来の、異なるバスタイプで異なるデータエンディアンであるCPUとデバイスを接続した場合の半導体集積回路の結線図
【符号の説明】
【0078】
1 CPU(プロセッサ)
2 デバイス
3 アドレス出力端子
4 アドレス信号線
5 アドレス入力端子
6 データ入出力端子
7 データ信号線
8 データ入出力端子
10 エンディアン設定用レジスタ
11 最上位バイト
12 上から2番目のバイト
13 下から2番目のバイト
14 最下位バイト
20 ニブル並び順設定用レジスタ
21 最上位バイト
22 上から2番目のバイト
23 下から2番目のバイト
24 最下位バイト
21a,22a,23a,24a 上位ニブル
21b,22b,23b,24b 下位ニブル
30 昇順降順設定用レジスタ
40 設定確認用レジスタ
51 マルチプレクスタイプのCPU(プロセッサ)
52 デバイス
53 アドレス入力端子
54 アドレス入力信号線
55 アドレス兼データ入出力端子
56 データ入出力端子
57 データ信号線
58 アドレスストローブ信号出力端子
59 アドレスストローブ信号出力信号線
60 ライトイネーブル出力端子
61 ライトイネーブル入力端子
62 ライトイネーブル信号線
63 内部のアドレス信号線
64 内部のアドレス兼データ信号線
65 内部のライトイネーブル信号線
66 バスタイプ設定用レジスタ
67 内部のアドレスストローブ信号線
68 ラッチ回路
69 出力信号線
70 セレクタ
71 内部のアドレス信号線
72 レジスタの挿入箇所

【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサによって制御されるもので複数種類のインターフェース仕様を有するデバイスとの間でインターフェース仕様を設定する方法であって、
前記デバイスにインターフェース仕様設定用のレジスタを設けておき、前記プロセッサから前記デバイスの前記レジスタに対するソフトウェア的制御により前記レジスタに所定のインターフェース仕様を設定し、この設定以降、前記デバイスを前記レジスタに設定された前記インターフェース仕様で動作させるインターフェース設定方法。
【請求項2】
前記インターフェース仕様設定用のレジスタとしてデータのエンディアンを設定するためのエンディアン設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記エンディアン設定用レジスタにデータのエンディアンを設定する請求項1に記載のインターフェース設定方法。
【請求項3】
前記データのエンディアンの設定は、前記エンディアン設定用レジスタにエンディアンの影響を受けないデータ配列を書き込むことによって行う請求項2に記載のインターフェース設定方法。
【請求項4】
前記インターフェース仕様設定用のレジスタとしてデータのニブルの並び順を設定するためのニブル並び順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記ニブル並び順設定用レジスタにデータのニブルの並び順を設定する請求項1から請求項3までのいずれかに記載のインターフェース設定方法。
【請求項5】
前記データのニブルの並び順の設定は、前記ニブル並び順設定用レジスタにニブルの並び順の影響を受けないデータ配列を書き込むことによって行う請求項4に記載のインターフェース設定方法。
【請求項6】
前記インターフェース仕様設定用のレジスタとしてデータのビットの昇順降順を設定するための昇順降順設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記昇順降順設定用レジスタにデータのビットの昇順降順を設定する請求項1から請求項5までのいずれかに記載のインターフェース設定方法。
【請求項7】
前記データのビットの昇順降順の設定は、前記昇順降順設定用レジスタにデータのビットの昇順降順の影響を受けないデータ配列を書き込むことによって行う請求項6に記載のインターフェース設定方法。
【請求項8】
前記インターフェース仕様設定用のレジスタとしてアドレスおよびデータのバスタイプを設定するためのバスタイプ設定用レジスタを用い、前記プロセッサからのデータアクセスに基づくソフトウェア的制御によって前記バスタイプ設定用レジスタにアドレスおよびデータのバスタイプを設定する請求項1から請求項7までのいずれかに記載のインターフェース設定方法。
【請求項9】
前記バスタイプ設定用レジスタとして、前記デバイスが持つアドレス信号幅から1ビット除いたもので表現可能な番地の任意のレジスタを用い、前記デバイスのバスタイプをセパレートタイプまたはマルチプレクスタイプに設定するためのデータ配列を書き込む請求項8に記載のインターフェース設定方法。
【請求項10】
前記バスタイプ設定用レジスタは、前記バスタイプをマルチプレクスタイプに設定した場合に、その設定値を保持し、前記設定値の更新はハードウェアリセットのみで可能である請求項9に記載のインターフェース設定方法。
【請求項11】
前記デバイスをマルチプレクスタイプとして使用する際、前記バスタイプ設定用レジスタの番地指定に無関係の1ビットを前記プロセッサが出力するアドレスストローブ信号の入力として使用する請求項9または請求項10に記載のインターフェース設定方法。
【請求項12】
前記インターフェース仕様設定用のレジスタはソフトウェアリセット機能の対象外で、設定値の変更はハードウェアリセットまたは値の上書きで可能となる請求項1から請求項11までのいずれかに記載のインターフェース設定方法。
【請求項13】
さらに、前記デバイスにおける設定確認用レジスタを用いて、前記インターフェース仕様設定用のレジスタにおける設定を確認する請求項1から請求項12までのいずれかに記載のインターフェース設定方法。
【請求項14】
前記インターフェース仕様設定用のレジスタとして、データのエンディアンを設定するためのエンディアン設定用レジスタ、データのニブルの並び順を設定するためのニブル並び順設定用レジスタ、データのビットの昇順降順を設定するための昇順降順設定用レジスタの少なくともいずれか2つ以上を用い、前記設定確認用レジスタは、前記いずれのレジスタの値も変更した場合にも互いに一致しない値を設定し、かつハードウェアリセットおよびソフトウェアリセットでも値を保持する請求項13に記載のインターフェース設定方法。

【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2007−148622(P2007−148622A)
【公開日】平成19年6月14日(2007.6.14)
【国際特許分類】
【出願番号】特願2005−340115(P2005−340115)
【出願日】平成17年11月25日(2005.11.25)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】