以下、代表的な本発明の実施の形態について、図1を用いて説明する。本発明の実施の形態は、バス1とバス2との間に設けられたデータ変換ユニットと、バス1の制御コマンド線とバス2の制御コマンド線とを接続する共通コマンドバス50と、バス1及びバス2に接続されたバスマスタユニット及びバススレーブユニットに対して共通に設けられた調停回路とを有して構成される。以下、実施例を用いて詳細に説明を行なう。
◇第1実施例
図1は、本発明の第1実施例であるバスシステムの構成を示すブロック図、図2は、本実施例のバスシステムの共通制御コマンドバスを含むシステム構成を示す図、図3は、本実施例におけるバスマスタユニットの構成を示す図、図4は、本実施例におけるデータ変換ユニットの構成を示す図、図5は、本実施例におけるバススレーブユニットの構成を示す図、図6は、本実施例における、32ビットのバスマスタユニットから64ビットのバススレーブユニットへのリードアクセス時のデータ転送動作を示すタイミングチャート、図7は、本実施例における、64ビットのバスマスタユニットから、32ビットのバススレーブユニットに対するリードアクセス時のデータ転送動作を示すタイミングチャート、図8は、本実施例における、64ビットのバスマスタユニットから32ビットのバススレーブユニットへのライトアクセス時のデータ転送動作を示すタイミングチャート、図9は、本実施例における、32ビットのバスマスタユニットから64ビットのバススレーブユニットへのライトアクセス時のデータ転送動作を示すタイミングチャートである。
本実施例のバスシステム(バス接続回路)は、図1に示すように、制御コマンド線及び64ビットデータ線とに接続されたバス1と、制御コマンド線及び32ビットデータ線とに接続されたバス2と、データ変換ユニット3と、バス1とバス2の制御コマンド線を接続する共通制御コマンドバス50、バス1に制御コマンド線及び64ビットデータ線を介して接続されたバスマスタユニット4,5及びバススレーブユニット6,7と、バス2に制御コマンド線及び32ビットデータ線を介して接続されたバスマスタユニット8,9及びバススレーブユニット10,11と、バスマスタユニット4、5、8、9及びバススレーブユニット6、7、10、11に接続された調停回路12とを備えている。
なお、本実施例においては、リードデータを転送するリードバスと、コマンドとライトデータを転送するライトバスとが共通であって、データ幅が64ビットのバスとデータ幅が32ビットのバスとの間を接続するバス接続回路について説明する。なお、本実施例では、リードアクセス時、スプリット転送を行うものとして説明する。
ここで、バスマスタユニットは、外部マスタユニットとバスとの間のインタフェースユニットを示す。外部マスタユニットは、コマンドを発行する機能を有するユニットであり、例えば、中央演算処理装置(CPU)や、メモリに対するデータのDMA(Direct Memory Access)転送を制御するDMAコントローラ等が該当する。図1では、外部マスタユニットとして、CPU114、64ビットDMAコントローラ(マスター)115、32ビットPCIブリッジ(マスター)118、32ビットDMAコントローラ内蔵イーサネット(登録商標)(マスター)119を示している。
また、バススレーブユニットは、外部スレーブユニットとバスとの間のインタフェースユニットを示す。外部スレーブユニットは、外部マスタユニットによって発行されたコマンドを受けて処理を行うユニットであり、例えば、入出力回路(I/O)や、メモリ等が該当する。図1では、外部スレーブユニットとして、メモリ116、64ビットDMAコントローラ(スレーブ)117、32ビットPCIブリッジ(スレーブ)120、32ビットDMAコントローラ内蔵イーサネット(スレーブ)121を示している。
バス1は、64ビット幅のデータを送受するための64ビットデータ線と、制御コマンドを送受するための制御コマンド線とから構成され、バス2は、32ビット幅のデータを送受するための32ビットデータ線と、制御コマンドを送受するための制御コマンド線とから構成されている。バス1の制御コマンド線と、バス2の制御コマンド線とは、共通制御コマンドバス50を介して接続されている。データ変換ユニット3は、バス1とバス2との間で、64ビット幅のデータと32ビット幅のデータとの間のビット幅の変換を行い、例えば32ビットを64ビットに変換し、又は64ビットを32ビットに変換する。
バスマスタユニット4,5は、制御コマンド線と64ビットデータ線とを介してバス1に接続され、バスマスタユニット8,9は、制御コマンド線と32ビットデータ線とを介してバス2に接続されている。それぞれのバスマスタユニットは、外部マスタユニットとバス1又はバス2との間のインタフェースをとる。バススレーブユニット6,7は、制御コマンド線と64ビットデータ線とを介してバス1に接続され、バススレーブユニット10,11は、制御コマンド線と32ビットデータ線とを介してバス2に接続されている。それぞれのバススレーブユニットは、バス1又はバス2と外部スレーブユニットとの間のインタフェースをとる。
調停回路12は、各バスマスタユニット又はバススレーブユニットから出力される調停リクエスト信号に応じて、バス1とバス2におけるバス権の調停を行い、バス権が確立したとき、調停グラント信号によって、要求元のバスマスタユニット又はバススレーブユニットに対して、バス権獲得を通知する。
以下、本発明の基本的な動作フローを簡単に説明する。外部マスタユニットがリードコマンドを実行する場合は以下の通りである。CPU114が、32ビットPCIブリッジ(スレーブ)120に対するリードコマンドをバスマスタユニット4に出力する。バスマスタユニット4は、調停回路12に対して調停リクエストを行い、バス1及びバス2のバス権を獲得する。バス権を獲得したバスマスタユニット4は、リードコマンドをバス1に対して出力し、バス1上のリードコマンドは共通コマンドバス50を介してバス2に伝達される。リードコマンドをバス2を介して受け取ったバススレーブユニット10は、32ビットPCIブリッジ120に対してリードコマンドを伝達する。
32ビットPCIブリッジ120はリードコマンドに基づいてデータをバススレーブユニット10に出力し、バススレーブユニット10は、受け取ったデータをCPU114に送るためにバス2に出力する。バス2上のデータが32ビットのデータであり受け取り側のCPU114は64ビットのデータ幅を有するため、データ変換ユニット3は、32ビットのデータから64ビットのデータに変換を行ない、変換後のデータをバス1に出力する。バス1を介して変換後のデータを受け取ったバスマスタユニット4は、当該データをCPU114に伝達する。
外部マスタユニットがライトコマンドを実行する場合の動作は以下の通りである。CPU114は、32ビットPCIブリッジ(スレーブ)に対するライトコマンド、ライトデータをバスマスタユニット4に出力する。バスマスタユニット4は、調停回路12に対して調停リクエストを行ない、バス1及びバス2のバス権を得る。バス権を得たバスマスタユニット4は、ライトコマンド、ライトデータをバス1に出力する。ライトコマンドは共通制御バス50を介してバス2の伝達され、ライトデータは、データ変換ユニット3によって64ビットデータから32ビットデータに変換されバス2に伝達される。バススレーブユニット10は、バス2を介してライトデータ、ライトコマンドを受け取り、これらを32ビットPCIブリッジに伝達する。
次に、図1のバス接続回路の信号線について図2を使って詳細に説明する。図中、(1) 〜(13)は、以下に示す各制御コマンド線及び共通制御コマンドバスの各信号線を表す。
バス1の制御コマンド線は、(1):Frame64、(2):Master、(3):Address、(4):CMD、(5):DID、(7):Dvalid64、(8):ACK、(9):NACK、(10):Devselを伝達する。バス1の64ビットデータ線は、(6):Data64を伝達する。バス2の制御コマンド線は、(11):Frame32、(2):Master、(3):Address、(4):CMD、(5):DID、(13):Dvalid32、(8):ACK、(9):NACK、(10):Devselを伝達する。バス2の32ビットデータ線は、(12):Data32を伝達する。共通制御コマンドバス50は、バス1及びバス2との間で(2):Master、(3):Address、(4):CMD、(5):DID、(8):ACK、(9):NACK、(10):Devselを伝達する。
ここで、Frame64は、64ビット幅のバスの占有を示す情報、Masterは、バスマスタユニットからバススレーブユニットへの転送であることを示す情報、Addressは、バススレーブユニットを特定するためのアドレスデータ、Cmdは、コマンドの種類を示すコマンドデータ、DIDデータは、バスマスタユニットを特定するためのデバイスIDであり、Data64は、バス1内の64ビットデータ線上の転送データ、Dvalid64は、データ線上の転送データの有効な期間を示す情報、ACKは、選択されたユニットが要求された動作を実行することが可能になったことを示す情報、NACKは、選択されたユニットが要求された動作を実行することができないことを示す情報、Devselは、外部スレーブユニットが選択された状態であることを示す情報、Frame32は、32ビット幅のバスの占有を示す情報、Data32は、バス2内の32ビットデータ線上の転送データ、Dvalid32は、32ビットデータ線上の転送データの有効な期間を示す情報をそれぞれ示している。
ただし、DIDデータは、バスマスタユニット毎にユニークな値であるとする。また、DIDデータはバスマスタの外部から与えられるもであっても、バスマスタ内のレジスタに保持されているものでも良い。
図2に示されたシステム構成図は、バス構造がマルチプレクサ型の場合を示しているが、3ステートバッファ型の場合には、ACK信号を32ビットの場合と64ビットの場合とで区別する必要がある以外は同様のため説明を省略する。以下、本実施例の動作をタイミングチャート及び各構成ブロックの説明を交えながら説明する。
本発明の第1の実施例において、バスマスタユニット9に接続された32ビットのデータ幅を持つCPU30から、バススレーブユニット6に接続された64ビットのデータ幅を持つ外部スレーブユニット40に対してコマンドが出力された場合の、バスシステムについて、図2、図3、図4、図5及び図6を参照しながら説明する。なお、バス上のデータは、スプリット転送
によって制御されるものとする。
まず、バスマスタユニット4、5、8、9、データ変換ユニット3、バススレーブユニット6、7、10、11の構成について説明する。バスマスタユニット4、5、8、9は、図3に示されるように、バスアドレスバッファ31A、バスコマンドバッファ31B、バスライトデータバッファ32、バスリードデータバッファ33、バスマスタ制御回路34、マルチプレクサ35A、35B、35C、36、DID比較回路37、及びタイミング制御回路38から構成されている。
データ変換ユニット3は、図4に示されるように、データバッファ21、タイミング制御部22、及びマルチプレクサ23、24、25、26から構成されている。バススレーブユニット6、7、10、11は、図5に示されるように、バスコマンドバッファ41A、41B、41C、バスライトデータバッファ42、バスリードデータバッファ43、バススレーブ制御回路44、マルチプレクサ45、アドレス比較回路46及びタイミング制御回路47から構成されている。
次に、図2のブロック図において、CPU30からメモリ40に対してリードコマンドが出力された場合の各ユニットの内部動作について図6のタイミングチャートを参照しながら詳述する。なお、外部マスタユニットとしてのCPU30は、バスマスタユニット9に対して、バススレーブユニット6に接続された外部スレーブユニットとしてのメモリ40を指定するためのアドレスデータADD、メモリ40に対してライトコマンドやリードコマンドを送るためのコマンドデータCMD、コマンドデータCMDがライトコマンドを含む場合にはライトコマンドによってメモリ40に書き込まれるべきライトデータ及びこれらデータの転送をバスマスタユニット9に対して要求する転送リクエスト信号Mreqを出力する。ただし、コマンドデータCMDは、図12に示すように、リードアクセスであるか、又はライトアクセスであるかを示すビット、一度に転送するデータ量を、バイトで示したサイズを含んでいるものとする。
CPU30は、アドレスADD、リードコマンドを示すコマンドデータCMD及び転送リクエスト信号Mreqをバスマスタユニット9に出力する。CPU30から出力されたアドレスADD及びコマンドデータCMDは、バスマスタユニット9のバスアドレスバッファ31A及びバスコマンドバッファ31Bにそれぞれ保持され、転送リクエスト信号Mreqを受け取ったタイミング制御回路38は、転送開始信号をバスマスタ制御回路34に出力する。(ここまでのタイミングは、図示していない。)
転送開始信号を受け取ったバスマスタ制御回路34は、バス権を得るために調停リクエスト信号Mreqを調停回路12に出力する。調停回路12は、受け取った調停リクエスト信号Mareqに応答して調停を行ない、Frame32信号がインアクティブになっていることを確認した後(図6のFrame32信号上の丸で示している)、調停グラント信号Magrnt信号を出力してバス1及びバス2に対するバス権をバスマスタユニット9に与える。なお、調停回路12の調停動作については、一般的に良く知られているため、説明を省略する。調停グラント信号Magrntを受け取ったバスマスタ制御回路34は、アクティブなFrame32信号及びMaster信号をバス制御線に出力し、読み出し選択信号を出力する。
マルチプレクサ35A、35B、35C及び36は、読み出し選択信号に応答してDIDデータ、アドレスデータADD、コマンドデータCMDをバスDID線、バスアドレス線、バスコマンド線にそれぞれ出力する。なお、DIDはバスマスタユニット9の外部から供給されているものとする。バス2に出力されたアドレスデータADD、コマンドデータCMD、DIDデータ、アクティブ状態のMaster信号は、共通制御コマンドバス50を介してバス1に伝達される。バス1とバス2との間に接続された図2のデータ変換ユニット3は、タイミング制御部22によって、バス2のFrame32信号をFrame64信号としてバス1に出力する。このFrame32信号とFrame64信号とによって、バス2及びバス1の占有を同時に行なうことができる。すなわち、調停回路12による一度の調停によって、バス幅の異なるバス1及びバス2の占有を行なうことが可能となる。
バス1に接続された図5のバススレーブユニット6は、バス1上のアドレスデータADDが、マップアドレス線によって示されているアドレスの範囲に入っているかどうかをアドレス比較器46にて比較する。アドレス比較器46は、アドレスデータADDがマップアドレス線によって示されるアドレスの範囲内に入っている場合には、バススレーブ制御回路44に一致信号を出力すると共にデバイスが選択されたことを示すDevsel信号としてバス制御線に出力する。バススレーブ制御回路44は、一致信号に応答して書き込み許可信号を出力する。バススレーブ制御回路44は、一致信号に応答してメモリ40がコマンドデータCMDにより要求された処理を実行できるかどうかを状態信号によって判断し、実行可能な状態であればAck信号、実行できない状態であればNack信号を出力する。ここでは、スレーブ制御回路44は、メモリ40がコマンドを実行可能であるとしてAck信号を出力している。
Ack信号は、64ビット制御コマンド線内のバス制御線及びバス2を介してデータ変換ユニット3のタイミング制御部22に供給され、32ビット制御コマンド線内のバス制御線及びバス1を介してバスマスタユニット9のバスマスタ制御回路34に供給される。ここでは、スプリット転送の場合を想定しているため、バスマスタ制御回路34は、入力されたAck信号に応答してFrame32信号をインアクティブにすると共にタイミング制御回路38に完了信号を供給する。完了信号を受け取ったタイミング制御回路38は、CPU30に完了信号MCmdAckを出力する。このとき、Frame32がインアクティブになったことに応答してFrame64信号もインアクティブとされる。このようにして、バス1及びバス2を占有から開放する。
バススレーブユニット6のバススレーブ制御回路44は、Devsel信号及びAck信号を出力すると共に転送開始信号をタイミング制御回路47に対して出力する。また、バススレーブ制御回路44から出力された書き込み許可信号に応答してバスコマンドバッファ41A〜Cに書き込まれたコマンドデータ、アドレスデータ及びDIDデータは、タイミング制御回路47が転送開始信号に応答して出力する転送リクエスト信号と共にメモリ40に供給される。コマンドデータ(リードコマンド)がメモリ40に供給され、メモリ40内でのリードデータの準備がととのった場合には、メモリ40は、リードデータをバスリードデータバッファ43に供給すると共に完了信号をタイミング制御回路47に出力する。タイミング制御回路47は、完了信号に応答してリードデータ転送開始信号をバススレーブ制御回路44に出力する。
リードデータ転送開始信号を受け取ったバススレーブ制御回路44は、バスの占有権を得るために、調停リクエスト信号Sareqを調停回路12に対して出力する。調停回路12は、調停リクエスト信号Sareqに応答して調停を行い、調停グラント信号Sagrnt信号を出力する。バススレーブ制御回路は、調停グラント信号Sagrnt信号に応答して、バス1の占有を示すアクティブなFrame64信号を出力する。バス1上のFrame64信号は、バスマスタユニット9が出力したFrame32信号と同様に、データ変換ユニット3のタイミング制御部22を介してバス2のFrame32信号となる。また、バススレーブ制御回路44は、Frame64信号と共に、コマンドデータCMD、マスタを特定するためのDIDデータを出力する。
コマンドデータとDIDデータとは、バス1から共通制御コマンドバスを介してバス2に送られる。バス2に接続されたバスマスタ制御回路34は、Master信号がインアクティブとなっているとき比較信号を出力し、DID比較回路37は、比較信号によって活性化される。したがって、DID比較回路37によって、バス1のバスDID線上のDIDデータと、バスマスタユニットのDIDの値とが比較される。DID比較回路37が一致信号を出力した場合には、バスマスタ制御回路34は、Ack信号をバス1のバス制御線に出力する。
バス制御線上のAck信号を共通制御コマンドバス及びバス2を介して受け取ったバススレーブ制御回路44は、読み出し許可信号を出力すると共に、64ビットデータ線上のデータが有効であることを示すDvalid64信号をアクティブにする。マルチプレクサ45は、読み出し許可信号に応答してバスリードデータバッファ43に書き込まれたリードデータRD0〜RD3を順次64ビットのバスリードデータ線に出力する。
データ変換ユニット3は、64ビット幅のリードデータRD0〜RD3をバス1の64ビットデータ線を介して受け取り、マルチプレクサ23及び24を介して64ビット幅のデータバッファに書きこむ。このとき、64ビットのリードデータは、マルチプレクサ23と24に対応して上位32ビットのリードデータと下位32ビットのリードデータとに分けられ、タイミング制御部からの書き込み選択信号によってデータバッファ21に書きこまれる。書き込まれた64ビットのリードデータは、タイミング制御部22からの32ビット出力選択信号に対応して32ビットのリードデータとして順次読み出される。このときタイミング制御部22は、32ビットの出力選択信号を出力すると共に32ビットのデータRD0〜RD7が有効であることを示すDvalid32をアクティブにする。
ここで、タイミング制御部22は、Frame信号及びAck信号がどちらのバスから送られてきたのかに対応してビット変換の制御を行なっているものとする。すなわち、タイミング制御部22が、Frame32信号を受け取り、64ビット制御コマンド線からAck信号を受け取った場合は、32ビットから64ビットへ、逆に、Frame64信号を受け取り32ビット制御コマンド線からAck信号を受け取った場合には64ビットから32ビットへ変換するように制御を行なう。なお、タイミング制御部22が、同一の方向からFrame信号及びAck信号を受け取った場合は、マスタ側とスレーブ側が同じデータ幅を有していることを示しているため、データ変換ユニット3は変換を行なわない。このように、変換が不要なときには、データ変換ユニット3が動作させないことによって、消費電力を低減することができる。
バススレーブ制御回路44は、リードデータの出力が終了したことに応答してDvalid64信号をインアクティブにすると共にFrame64をインアクティブにする。ただし、本実施例では、データの個数が予め分かっているため、バス1の使用効率を向上させるためにDvalid64信号よりも1クロック早くFrame64をインアクティブにしている。バスマスタ制御回路34は、DID比較回路37が一致信号を出力し、Dvalid32信号がアクティブとなっているため、バスリードデータバッファ33に書きこみ許可信号を出力する。書きこみ許可信号に応答して、バスリードデータバッファ33は、バス2のバスリードデータ線上の32ビットリードデータを順次取りこみ、リードデータとしてCPU30に供給する。
データ変換ユニット3のタイミング制御部22は、データの個数に応じた期間だけDvalid32信号をアクティブにすると共に、最後のデータに対応してFrame32信号をインアクティブにする。ただし、本実施例では、バス2の使用効率を向上させるためにDvalid32信号よりも1クロック早くFrame32をインアクティブにしている。このようにして、32ビットのデータ幅を有するCPU30から64ビットのデータ幅を有するメモリ40に対するリードコマンドが実行される。
次に、バスマスタユニット4に接続された64ビットのデータ幅を有する外部マスタユニットからバススレーブユニット10に接続された32ビットのデータ幅を有する外部スレーブユニットに対するリードコマンドが実行された場合について、図7を参照して説明する。外部マスタユニットが64ビットのデータ幅を有するバスマスタユニット4に対して、アドレスデータADD、コマンドデータCMD及び転送リクエスト信号Mreqを出力してから、32ビットのデータ幅を有するバススレーブユニット10がバスマスタユニット4に対してCMD、DIDを送りバスマスタユニット4がAck信号を出力する動作については、図6に記載されたタイミングと実質的に同一のため説明を省略する。
バスマスタユニット4からバス1上に出力されたAck信号を共通制御コマンドバス及びバス2を介して受け取ったバススレーブ制御回路44は、読み出し許可信号を出力すると共に、データが有効であることを示すDvalid32信号をアクティブにする。マルチプレクサ45は、読み出し許可信号に応答してバスリードデータバッファ43に書き込まれたリードデータRD0〜RD7を順次32ビットのバスリードデータ線に出力する。
データ変換ユニット3は、32ビット幅のリードデータRD0〜RD7を32ビットデータ線を介して受け取り、マルチプレクサ23及び24を介してデータバッファ21に書きこむ。このとき、32ビットのリードデータは、マルチプレクサ23と24が、タイミング制御部22からの書きこみ選択信号に応答して交互にアクティブにされるため、データバッファ21の上位32ビットと下位32ビットに交互に書きこまれる(データバッファの上位ビットと下位ビットのどちらから順に書き込むかは設計に応じて変更可能である)。書き込まれた32ビットのリードデータは、タイミング制御部22からの64ビット出力選択信号に対応して64ビットのリードデータとして読み出される。このときタイミング制御部22は、32ビットのリードデータRD0〜RD7の半分以上を受信したことに応答して、すなわちRD3を受信したことに応答して、64ビットの出力選択信号を出力すると共に64ビットのデータRD0〜RD3が有効であることを示すDvalid64信号をアクティブにする。
バススレーブ制御回路44は、リードデータの出力が終了したことに応答してDvalid32信号をインアクティブにすると共にFrame32信号をインアクティブにする。ただし、本実施例では、データの個数が予め分かっているため、バス1の使用効率を向上させるためにDvalid64信号よりも1クロック早くFrame64をインアクティブにしている。バスマスタ制御回路34は、DID比較回路37が一致信号を出力し、Dvalid64信号がアクティブとなっているため、バスリードデータバッファ33に書きこみ許可信号を出力する。書きこみ許可信号に応答して、バスリードデータバッファ33は、バス2のバスリードデータ線上の64ビットリードデータを順次取りこみ、リードデータとしてCPU30に供給する。
データ変換ユニット3のタイミング制御部22は、データの個数に応じた期間だけDvalid64信号をアクティブにすると共に、最後のデータに対応してFrame64信号をインアクティブにする。ただし、本実施例では、バス1の使用効率を向上させるためにDvalid64信号よりも1クロック早くFrame64をインアクティブにしている。このようにして、64ビットのデータ幅を有する外部マスタユニットから32ビットのデータ幅を有する外部スレーブユニットに対するリードコマンドが実行される。
次に、バスマスタユニット4に接続された64ビットのデータ幅を有する外部マスタユニット(図示しない)からバススレーブユニット10に接続された32ビットのデータ幅を有する外部スレーブユニット(図示しない)に対するライトコマンドが実行された場合について、図8を参照して説明する。
ライトコマンドが実行される場合には、外部マスタユニットからバスマスタユニット4に対してライトデータData64、アドレスデータADD、コマンドデータCMDが送られてくる。このとき、バスマスタユニット4がアドレスデータADD、コマンドデータCMD、DIDデータをバススレーブユニット10に対して出力し、バススレーブユニット10がDevsel及びAck信号を返してくるまでの動作については、リードコマンドを実行した図6及び図7のタイミングと実質的に同一のため説明を省略する。したがって、バススレーブユニット10がAck信号を返してきたところから説明を行う。
バスマスタユニット4のバスマスタ制御回路34は、バススレーブユニット10が出力したAck信号を、バス制御線を介して受け取ると、マルチプレクサ36に対して読み出し選択信号を出力する。マルチプレクサ36は、読み出し選択信号に応答して、バスライトデータバッファ32に保持された64ビットのライトデータWD0〜WD3をバスライトデータ線に出力すると共に、これらのデータが有効であることを示すDvalid64信号を64ビットデータバリッド線に出力する。また、バスマスタ制御回路34は、データの転送が終了したことに応答してFrame64信号及びMaster信号をインアクティブにする。ただし、本例では、バス1の使用効率を向上させるためにDvalid64信号よりも1クロック早くFrame64及びMaster信号をインアクティブにしている。
ライトデータWD0〜WD3及びDvalid64信号は、バス1を介してデータ変換ユニット3に供給される。64ビットのライトデータWD0〜WD3は、64ビットデータ線を介してマルチプレクサ23、24に供給され、タイミング制御部22の書き込み選択信号に応答してデータバッファ21に書き込まれる。この書きこみ動作は、リードコマンドを実行して64ビットのデータがデータバッファに書きこまれる場合と同様にタイミング制御部22及びマルチプレクサ23、24によって実行される。さらに、タイミング制御部22は、データバッファ21に書き込まれたライトデータWD0〜WD3をバス2に出力するため、Dvalid64信号に応答して32ビット出力選択信号をマルチプレクサ26に対して出力して32ビットデータ線に32ビットのライトデータWD0〜WD7を順次出力すると共に、Dvalid32信号を32ビットデータバリッド信号線に出力する。
バススレーブユニット10のバススレーブ制御回路44は、アドレスデータADDにより自分が選択されていることが分かっているので、Dvalid32信号に応答してバスライトデータバッファ42に対して書き込み許可信号及び転送開始信号を出力する。バスライトデータバッファ42は、書き込み許可信号に応答してバスライトデータ線上のライトデータWD0〜WD7を保持する。バススレーブ制御回路44は、ライトデータWD0〜WD7を全て受け取ったことに応答してDvalid32信号及びFrame32信号をインアクティブにする。ただし、本実施例では、バス2の使用効率を向上させるためにDvalid32信号よりも1クロック早くFrame32をインアクティブにしている。
一方、転送開始信号を受け取ったタイミング制御回路47は、外部スレーブユニットに対して転送リクエストを出力する。外部スレーブユニットは、転送リクエストに応答して、コマンドデータCMD、アドレスデータADD、DIDデータ及びライトデータWD0〜WD7を受け取り、コマンドデータCMDに基づいて書き込みを実行する。このようにして、64ビットのデータ幅を有する外部マスタユニットから32ビットのデータ幅を有する外部スレーブユニットへのライトコマンドが実行される。
上述した64ビットのデータ幅を有する外部マスタユニットから32ビットのデータ幅を有する外部スレーブユニットへのライトコマンドが実行される場合とは逆に、32ビットのデータ幅を有する外部マスタユニットから64ビットのデータ幅を有する外部スレーブユニットへのライトコマンドが実行された場合は、図9に示すように、バスマスタユニットから32ビット幅のライトデータWD0〜WD7の半分以上を受け取るまで64ビット幅のライトデータWD0〜WD3の出力及びDvalid64の出力を待つこと及びデータの変換が逆になるようにデータ変換ユニット3のタイミング制御部22が制御することを除いては、上述のライトコマンドが実行される場合と同様のため、説明を省略する。また、データの変換の仕方についても、上述したリードコマンドを実行した場合において説明済みのため、説明を省略する。
このように、本実施例のバス接続回路では、リードデータバスとライトデータバスが共通の場合であって、スプリット転送を行う際に、バス間を越える際のバス権の調停が不要で、データの変換だけを行えばよいため、リードアクセス及びライトアクセスにおけるクロックサイクル数を少なくすることができる。
また、送信元(例えばCPU)は、送信先(例えばメモリ)からのAck信号を受け取ったことに応答して、送信元が接続されているバスのバス権を開放する。したがって、送信元から送信先へのデータ転送は、同一バスサイクル内に行われる。そのため、データ転送エラー発生時にも、バスサイクルが終了するまでは送信元でデータが保存されているためデータの喪失を生じることがない。なお、送信先へのデータ転送エラーが発生した場合には、バス1とバス2間に共通制御コマンドバスを介して、送信先がNACK信号を送出することによって、送信元へのデータ転送エラー発生を通知することができる。
さらに、データ変換が必要な条件を抽出してデータの変換を行うハードウェアのみを用意すればよく、制御コマンド等を完全に解析する必要はないため、回路構成が簡単になり、必要なハードウェア量を少なくすることができる。また、この例のバス制御回路では、バス権の調停回数が少いため遅延が少なくなる。したがって、バスを占有している期間が短くなり、その結果、バスのスループットを向上できるようになる。なお、DID比較回路がバスマスタユニットに含まれているものを記載したが、バスマスタユニットの外部に独立して設けても良い。
以上、第1の実施例においては、スプリット転送を行なう場合について説明したが、以下、ノンスプリット転送を行なう場合について説明する。
◇第2実施例
図10は、本発明の第2実施例であるバスシステムの構成を示すブロック図、図11は、本実施例における、32ビットバスマスタから64ビットスレーブユニットへのリードアクセス時のデータ転送動作を示すタイミングチャート、図12は、本実施例におけるコマンドの概要を示す図である。
本発明の第2の実施例として、ノンスプリット転送を行なう場合のバスシステムを、図10を用いて説明する。ノンスプリット転送では、バスマスタユニットからコマンドが出力されてからバススレーブユニットが処理を行ないバスマスタユニットにデータを返すまでバスを占有するため、バスマスタユニットはDIDデータを必要とせず、また、バススレーブユニットは、調停動作を必要としない。したがって、第2の実施例のバススレーブユニット及び調停回路は、これらの間を接続するための調停リクエスト線、調停グラント線を有していない点で、第1の実施例と異なる。第1の実施例と同一の構成要素については、同一の番号を使用し説明を省略する。
以下、バスマスタユニット8に接続された32ビットのデータ幅を有する外部マスタユニットがバススレーブユニット6Aに接続された64ビットのデータ幅を有する外部スレーブユニットに対してリードコマンドを出力した場合の動作について、図10、図11を参照しながら説明する。なお、外部マスタユニットが32ビットのデータ幅を有するバスマスタユニットに対して、アドレスデータADD、コマンドデータCMD及び転送リクエスト信号Mreqを出力してから、64ビットのデータ幅を有するバススレーブユニット6Aがバスマスタユニット8に対してDevsel信号及びAck信号を出力するまでの動作については、図6のタイミングと実質的に同一のため説明を省略する。また、図10のバススレーブユニットは、図5のバススレーブユニットにおいて、バスDIDバッファ41Cおよびバススレーブ制御回路44が調停回路12に対してバス権獲得に関する動作を行なわない以外は、実質的に同一のため図5を参照して説明する。
バススレーブユニット6Aのバススレーブ制御回路44は、Devsel信号及びAck信号と共に転送開始信号を出力する。外部スレーブユニットは、転送開始信号、アドレスデータADD及びコマンドデータCMDに応答して処理を実行し、リードデータRD0〜RD3をバススレーブユニット6Aに出力する。リードデータRD0〜RD3を受け取ったバススレーブユニット6Aは、バス2内のバスリードデータ線を介してリードデータRD0〜RD3をデータ変換ユニット3に出力すると共にバス制御線にDvalid64信号を出力する。また、バススレーブユニット6Aは、リードデータの出力が完了するとDvalid64信号をインアクティブにする。
データ変換ユニット3は、Dvalid64信号とリードデータRD0〜RD3を受け取り、Dvalid64信号に応答してDvalid32信号を出力すると共に、64ビットのリードデータRD0〜RD3を32ビットのリードデータRD0〜RDに変換して出力する。このときデータ変換ユニット3のタイミング制御部22は、32ビットのリードデータRD0〜RD7の出力が終了したことに応答してDvalid32信号をインアクティブにする。32ビットのリードデータRD0〜RD7を受け取ったバスマスタユニット8のバスマスタ制御回路34は、リードデータRD0〜RD7の受け取りが終了したことに応答してFrame信号をインアクティブにし、バス1を開放する。ただし、本実施例では、データのサイズが予め分かっているため、受け取りが終了する1クロック前にFrame信号をインアクティブにし、バスを開放している。
なお、それぞれのユニット内の動作については、スプリット転送固有の動作を除いて、第1の実施例で説明したスプリット転送によるリードコマンド実行時の説明と同様である。このようにノンスプリット転送をバス幅の異なるバス間で実行する場合、二つのバスに対して一つの調停回路を設け、双方のバス権を一度のバスマスタユニットからの調停リクエストによって得ることができる。
このように、本実施例のバス接続回路では、リードデータバスとライトデータバスが共通の場合であって、ノンスプリット転送を行う際に、バス間を越える際のバス権の調停が不要で、データの変換だけを行えばよいため、リードアクセス及びライトアクセスにおけるクロックサイクル数を少なくすることができる。本実施例でも、データ転送エラー発生時に送信元でデータの喪失が生じないとともに、送信元へのデータ転送エラー発生通知が可能なことは、第1実施例の場合と同様である。
さらに、従来技術のバスマスタ制御回路やバススレーブ制御回路におけるような、コマンド制御信号の細部にわたる制御が不要で、データ変換が必要な条件を抽出してデータの変換を行うハードウェアのみを用意すればよいので、回路構成が簡単になり、必要なハードウェア量を少なくすることができる。この例のバス接続回路は、スプリット転送方式の場合と比較して、スレーブ側のハードウェア量は少ないが、バスを占有する期間が長くなるため、第1の実施例に比べてスループットは低下する。しかしながら、従来例のようにバスブリッジ回路を用いたノンスプリット転送の場合と比べれば、スループットが向上する。
◇フローチャートの説明図13は、本実施例のバス接続回路における、バス権の調停からバス使用までの処理の流れを示すフローチャート、図14は、本実施例のバスシステムにおける、スプリット転送時のデータ変換ユニットの処理手順を説明するフローチャート、図15は、本実施例のバスシステムにおける、スプリット転送時のデータ変換ユニットの処理手順を説明するフローチャート、図16は、本実施例のバスシステムにおける、バス権の調停動作を含む、バスマスタユニットの処理を示すフローチャート、図17は、本実施例のバスシステムにおける、バス権の調停動作を含む、バスマスタユニットの処理を示すフローチャート、図18は、本実施例のバスシステムにおける、バス権の調停動作を含む、バススレーブユニットの処理を示すフローチャート、図19は、本実施例のバスシステムにおける、バス権の調停動作を含む、バススレーブユニットの処理を示すフローチャートである。
次に、図13に示すフローチャートを参照して、この例のバス接続回路における、バス権の調停からバス使用までの処理の流れを説明する。図2のシステム構成図に示されるように、調停回路12からすべてのバスマスタユニットとバススレーブユニットに調停リクエスト線と調停グラント線とが接続されている。調停リクエスト線は、バスマスタユニットが転送開始したいときに使用する。調停グラント線は、バス権の調停が成立したとき調停回路が出力するものであって、複数の調停グラント線のうちいずれか一つだけがアクティブにされる。調停リクエスト線が同時に複数、アクティブにされている場合には、優先度を考慮して調停を行い、従って、いずれか一つのバスマスタユニットに対する調停グラント線のみがアクティブにされる。
いま、外部回路(外部マスターユニット)から転送要求が発生して、バスマスタ制御回路(バスマスターユニット)に転送開始信号が出力されると(ステップS11)、当該バスマスタ制御回路に接続されている調停グラント線がアクティブ状態か否かをみる(ステップS12)。調停グラント線がアクティブ状態でないときは、調停リクエスト線をアクティブにして(ステップS13)、対応する調停グラント線がアクティブ状態になるのを待つ。
調停グラント線がアクティブ状態になったときは、バス上において、バスフレーム信号(Frame64又はFrame32)がアクティブ状態か否かをみて(ステップS14)、アクティブ状態のときはバスが使用中なので、バスフレーム信号がインアクティブ状態になるまで待つ(ステップS15)。バスフレーム信号がアクティブ状態でなくなったときは、バスが利用可能なので転送を開始し(ステップS16)、転送終了時、バス権をインアクティブにして、バスフレーム信号をインアクティブにすることによってバスを開放して(ステップS17)、初期状態に戻る。
次に、図14及び図15に示すフローチャートを参照して、図1のバス接続回路における、スプリット転送時のデータ変換ユニット3の処理手順を説明する。
(1) 32ビットのバスマスタユニットから、64ビットのバススレーブユニットに対するリードアクセス時
調停結果、バス権が付与された状態で、バスマスタユニットから32ビット側のバスに出力されるFrame32がアクティブにされていたとき(ステップS111)、バスマスタユニットからバススレーブユニットへの転送であって(ステップS112)、リードアクセスのときは(ステップS113)、リードコマンド伝送ではデータ変換ユニットはデータを処理する必要がないため、Frame32をインアクティブにして、そのバスサイクルが終了するまで待つ(ステップS110)。
バススレーブユニットでリードデータの準備ができたことによって、バススレーブユニットから64ビット側のバスに出力されるFrame64がアクティブにされると(ステップS101)、バススレーブユニットからリードデータの有効期間を示すDvalid64がアクティブにされるまで待ち(ステップS105)、Dvalid64がアクティブになっている間、バススレーブユニットからData64を受信する(ステップS106)。
そして、バススレーブユニットから64ビットのデータを受信しながら、32ビット側のバスへのDvalid32をアクティブにし、受信したData64を半分づつData32として32ビット側のバスに出力する(ステップS107)。その後、バススレーブユニットからのデータ転送が終了し、64ビット側のバスでFrame64がインアクティブにされても、32ビット側のバスではFrame32をアクティブにし続け(ステップS108)、最後に、バススレーブユニットから受信したデータがなくなったら、Frame32をインアクティブにして、バスサイクルを終了する(ステップS109)。
(2) 64ビットのバスマスタユニットから、32ビットのバススレーブユニットに対するリードアクセス時
調停結果、バス権が付与された状態で、バスマスタユニットから64ビット側のバスに出力されるFrame64がアクティブにされていた場合には(ステップS101)、バスマスタユニットからバススレーブユニットへの転送であって(ステップS102)、リードアクセスのときは(ステップS103)、データ変換ユニットはデータを処理する必要がないので、Frame64をインアクティブにして、そのバスサイクルが終了するまで待つ(ステップS110)。
バススレーブユニットでリードデータの準備ができたことによって、バススレーブユニットから32ビット側のバスに出力されるFrame32がアクティブにされると(ステップS111)、バススレーブユニットからのリードデータの有効期間を示すDvalid32がアクティブにされるまで待ち(ステップS115)、Dvalid32がアクティブになっている間、バススレーブユニットからData32を受信する(ステップS116)。
そして、転送サイズの半分以上のデータを受信するまで待って(ステップS117)、64ビット側のバスへのDvalid64をアクティブにし、Data32のデータを2回分結合して、Data64として64ビット側のバスに出力する(ステップS118)。この際、2回分のデータのどちらを64ビットデータの上位にするかは、64ビットのデータの上位と下位のどちらを高いアドレスに数えるかという、システムによって定まるアドレッシングモードに依存する。その後、バススレーブユニットからのデータ転送が終了し、32ビット側のバスでFrame32がインアクティブにされても、64ビット側のバスではFrame64をアクティブにし続け(ステップS119)、最後に、バススレーブユニットから受信したデータがなくなったら、Frame64をインアクティブにして、バスサイクルを終了する(ステップS120)。
(3) 32ビットのバスマスタユニットから、64ビットのバススレーブユニットに対するライトアクセス時
調停結果、バス権が付与された状態で、バスマスタユニットから32ビット側のバスにおいてFrame32がアクティブにされていたとき(ステップS111)、バスマスタユニットからバススレーブユニットへの転送であって(ステップS112)、リードアクセスでないときは(ステップS113)、64ビット側のバススレーブユニットから出力されるDevselがアクティブにされ、かつ64ビット側のACKがアクティブのときは(ステップS114)、データ変換ユニットは、バスマスタユニットから出力されるDvalid32がアクティブになるのを待つ(ステップS115)。
そして、Dvalid32がアクティブになっている間、データ変換ユニットは、バスマスタユニットからData32を受信して(ステップS116)、転送サイズの半分以上のデータを受信するまで待つ(ステップS117)。その後、64ビット側のバスにおいてDvalid64をアクティブにし、Data32のデータを2回分結合して、Data64としてバススレーブユニットへ出力する(ステップS118)。そして、32ビット側のバスにおいてFrame32がインアクティブにされても、64ビット側のバスではFrame64をアクティブにし続け(ステップS119)、最後に、受信したデータがなくなったら、Frame64をインアクティブにして、バスサイクルを終了する(ステップS120)。
(4) 64ビットのバスマスタユニットから、32ビットのバススレーブユニットに対するライトアクセス時調停結果、バス権が付与された状態で、バスマスタユニットから64ビット側のバスに出力されるFrame64がアクティブにされていたとき(ステップS101)、バスマスタユニットからバススレーブユニットへの転送であって(ステップS102)、リードアクセスでないときは(ステップS103)、32ビット側のバススレーブユニットから出力されるDevselがアクティブになっていて、32ビット側のACKがアクティブのときは(ステップS104)、データ変換ユニットは、バスマスタユニットから出力されるDvalid64がアクティブになるのを待つ(ステップS105)。
そして、Dvalid64がアクティブになっている間、データ変換ユニットは、バスマスタユニットからData64を受信して(ステップS106)、32ビット側のバスへ出力されるDvalid32をアクティブにし、Data64のデータを半分づつData32としてバススレーブユニットへ出力する(ステップS107)。その後、64ビット側のバスで出力されるFrame64がインアクティブにされても、32ビット側のバスではFrame32をアクティブにし続け(ステップS108)、最後に、受信したデータがなくなったら、Frame32をインアクティブにして、バスサイクルを終了する(ステップS109)。
次に、図16乃至図19のフローチャートを参照して、図1のバス接続回路における、バス権の調停を含むバスマスタユニットとバススレーブユニットの処理の流れを説明する。なお、これらのフローチャートは、スプリット転送動作時の処理を示している。
図16,図17は、バス権の調停動作を含む、バスマスタユニットの処理を示すフローチャートである。
(1) バスマスタユニットのコマンドとライトデータの転送動作
外部マスタユニットから転送要求が発生したとき、コマンドやアドレスを受信するとともに、ライトアクセスの場合はライトデータも受信して、それぞれバッファに格納する(ステップS201)。次に、バスマスタ制御回路に転送開始信号が出力されると(ステップS202)、バスマスタ制御回路は、調停回路へバス権の調停を要求してバス権を獲得し、バスが未使用状態になったら、バスコマンドを出力する(ステップS203)。
そして、バススレーブユニットからDevselが返送されたか否かをみて(ステップS204)、返送されなければバスエラーなので、処理を終了して初期状態に戻る(ステップS205)。一方、Devselが返送されたときは、データの送信許可を示すACKが返送されたか否かをみて(ステップS206)、返送されなければバスエラーなので、処理を終了して初期状態に戻る(ステップS205)。
ACKが返送されたときは、ライトアクセスか否かをみて(ステップS207)、ライトアクセスでないときはバスサイクルが完了したので、バスを開放して初期状態に戻る(ステップS208)。ライトアクセスであったときは、ライトデータをバスに出力し(ステップS209)、転送要求を行った外部マスタユニットに転送の完了信号を出力して(ステップS210)、バスサイクルが完了したのでバスを開放して初期状態に戻る(ステップS208)。
(2) バスマスタユニットのリードデータの受信動作
また、リードアクセスの場合は、バス上のバススレーブユニットが発行したアクセスにおいて、DIDが当該バスマスタユニットのDIDと同一のときは(ステップS211)、バス上のリードデータを受信して、要求元の外部マスタユニットにリードデータを渡したのち(ステップS212)、外部マスタユニットに転送の完了信号を出力して(ステップS213)、初期状態に戻る(ステップS214)
図18,図19は、バス権の調停動作を含む、バススレーブユニットの処理を示すフローチャートである。
(1) バススレーブユニットのコマンドとライトデータの受信動作
バス上における、バスマスタユニットが発行したアクセスにおいて、アドレスが当該バススレーブユニットのアドレス範囲に該当したとき(ステップS301)、バススレーブユニットはバス上のコマンドを受信して、バスにDevselを出力する(ステップS302)。
そして、コマンドを受信可能か否かをみて(ステップS303)、受信可能でないときは、バス上に送信不可を示すNACKを出力して、初期状態に戻る(ステップS304)。一方、コマンドが受信可能であったときは、受け付け可能なコマンドか否かをみて(ステップS305)、受け付け可能なコマンドでないときは、バス上にNACKを出力して、初期状態に戻る(ステップS304)。受け付け可能なコマンドであったときは、バス上に送信許可を示すACKを出力し(ステップS306)、ライトデータを出力すべき外部スレーブユニットに転送リクエスト信号を出力して、当該コマンド,アドレス,DID等を転送する(ステップS307)。
次に、ライトアクセスか否かをみて(ステップS308)、ライトアクセスでないときは、初期状態に戻り(ステップS309)、ライトアクセスであったときは、ライトデータを受信して(ステップS310)外部スレーブユニットに転送し、転送終了したとき、外部スレーブユニットへ転送の完了信号を出力して(ステップS311)、初期状態に戻る(ステップS312)。
(2) バススレーブユニットのリードデータ転送動作
外部スレーブユニットからリードデータの転送要求が発生して、コマンド,DIDを受信したとき(ステップS313)、バススレーブ制御回路に転送開始信号が出力される(ステップS314)。バススレーブ制御回路は調停回路にバス権を要求してバス権を獲得し、バスが未使用状態になったら、DID,コマンド,リードデータを出力するとともに(ステップS315)、外部スレーブユニットに対しては、転送の完了信号を出力して(ステップS316)、初期状態に戻る(ステップS317)。
◇バスの結線に関する説明図20は、マルチプレクサを用いたバスの構成を示す図、図21は、バスマスタユニットとバススレーブユニットがともに出力する信号を伝達する場合におけるマルチプレクサ形式のバスの構成を説明する図、図22は、バスマスタユニットのみが出力する信号を伝達する場合におけるマルチプレクサ形式のバスの構成を説明する図、図23は、バススレーブユニットのみが出力する信号を伝達する場合におけるマルチプレクサ形式のバスの構成を説明する図、図24は、3ステートバッファを用いたバスの構成を示す図、図25は、バスマスタユニットとバススレーブユニットがともに信号を出力する場合における3ステートバッファ形式のバスの構成を説明する図、図26は、バスマスタユニットのみが信号を出力する場合における3ステートバッファ形式のバスの構成を説明する図、図27は、バススレーブユニットのみが信号を出力する場合における3ステートバッファ形式のバスの構成を説明する図である。
次に、図1に示されたバス接続回路におけるバス構成の例として、マルチプレクサを用いたバスの場合について説明する。図1のバス接続回路における、マルチプレクサを用いたバスは、図20に示されるように、データ変換ユニット3と、64ビットのバスマスタユニット4,5と、64ビットのバススレーブユニット6,7と、32ビットのバスマスタユニット8,9と、32ビットのバススレーブユニット10,11との間で、マルチプレクサ51〜54を介してバス1を形成し、マルチプレクサ55〜58を介してバス2を形成した構成を有している。
マルチプレクサ51は、バスマスタユニット4,5からの64ビット幅の信号を切り替えて、マルチプレクサ54とデータ変換ユニット3に接続する。マルチプレクサ52は、マルチプレクサ53とデータ変換ユニット3からの64ビット幅の信号を切り替えて、バスマスタユニット4,5に接続する。マルチプレクサ53は、バススレーブユニット6,7からの64ビット幅の信号を切り替えて、マルチプレクサ52とデータ変換ユニット3に接続する。マルチプレクサ54は、マルチプレクサ51とデータ変換ユニット3からの64ビット幅の信号を切り替えて、バススレーブユニット6,7に接続する。
マルチプレクサ55は、バススレーブユニット8,9からの32ビット幅の信号を切り替えて、マルチプレクサ58とデータ変換ユニット3に接続する。マルチプレクサ56は、マルチプレクサ57とデータ変換ユニット3からの32ビット幅の信号を切り替えて、バスマスタユニット8,9に接続する。マルチプレクサ57は、バススレーブユニット10,11からの32ビット幅の信号を切り替えて、マルチプレクサ56とデータ変換ユニット3に接続する。マルチプレクサ58は、マルチプレクサ55とデータ変換ユニット3からの32ビット幅の信号を切り替えて、バススレーブユニット10,11に接続する。
図20中に示された各信号は、すべてバスマスタユニット又はバススレーブユニットのいずれかのみが出力する信号として、省略して示されている。以下、図21乃至図23を参照して、バスマスタユニット/バススレーブユニットの両方、又はバスマスタユニットのみ、又はバススレーブユニットのみが信号を出力する場合のマルチプレクサの具体的構成について説明する。なお、バス1及びバス2は、これら3種類のマルチプレクサ構造の組み合わせによって構成されているものとする。
バス1において、バスマスタユニットとバススレーブユニットが共通に出力する信号、例えばFrame信号を伝達する場合のバスの構成を、図21を用いて説明する。このような信号を伝達するためのバス1101は、マルチプレクサX1、X2及びオア回路O1によって構成することができる。なお、図20のマルチプレクサ51及び53は、マルチプレクサX1に、マルチプレクサ52及び54はマルチプレクサX2に対応する。以下、動作について説明する。
バスマスタユニットM1、M2、バススレーブユニットS1、S2は、調停回路からのグラント信号に応答してフレーム信号としてFrame64_O信号を出力する場合、同時にイネーブル信号(Frame64_OE信号)を出力する。ここでFrame64_OE信号は、対応するFrame64_O信号が有効になる期間を示す信号である。これによって、4:1のマルチプレクサX1は、有効になったいずれかのFrame64_O信号のみを選択して出力する。このFrame64_O信号は、フレーム信号の入力を示すFrame64_I信号としてデータ変換ユニットに接続される。
さらに、バス1101の外部からフレーム信号が供給される場合(例えばデータ変換ユニットからフレーム信号が供給される場合)には、2:1のマルチプレクサX2において、Frame64_OE信号がアクティブHIの場合、オア回路O1でバスマスタユニットM1、M2とバススレーブユニットS1、S2のFrame64_OE信号のオアをとった信号と、データ変換ユニットからのFrame64_OE信号とによって、マルチプレクサX1で選択されたFrame64_O信号と、データ変換ユニットからのFrame64_O信号とを選択して、選択されたFrame64_O信号をフレーム信号の入力を示すFrame64_I信号として、バスマスタユニットM1,M2、バススレーブユニットS1,S2に共通に接続する。
従って、バスマスタユニットM1,M2、バススレーブユニットS1,S2、データ変換ユニットのいずれかがFrame64_O信号を出力したときは、フレーム信号の入力を示すFrame64_I信号として、すべてのバスマスタユニット/バススレーブユニットの入力端子及びデータ変換ユニットに接続される。
バス1において、バスマスタユニットのみが出力する信号、例えばアドレス信号を伝達する場合のバスの構成を、図22を用いて説明する。このような信号を伝達するバス1102は、マルチプレクサX3、X4、及びオア回路O2とから構成される。以下動作について説明する。例えば、バスマスタユニットM1,M2がそれぞれ、アドレス信号としてAddr_O信号を出力する場合、それぞれ同時にその有効期間を示すAddr_OE信号を出力する。これによって、2:1のマルチプレクサX3は有効になったいずれかのAddr_O信号のみを選択して出力する。選択されたAddr_O信号は、オア回路O2においてバスマスタユニットM1,M2のAddr_OE信号のオアをとった信号とともに、共通制御コマンドバスに出力される。
さらに、バス1102の外部からAddr_O及びAddr_OEが供給される場合(バス2側のバスマスタユニットから供給される場合)2:1のマルチプレクサX4において、オア回路O2でバスマスタユニットM1,M2のAddr_OE信号のオアをとった信号と、共通制御コマンドバスからのAddr_OE信号とによって、マルチプレクサX3で選択されたAddr_O信号と、共通制御コマンドバスからのAddr_O信号とを選択して、選択されたAddr_O信号をアドレスの入力を示すAddr_I信号として、バススレーブユニットS1、S2に共通に接続する。
従って、バスマスタユニットM1、M2と、共通制御コマンドバスのいずれかがAddr_O信号を出力したときは、アドレス信号の入力を示すAddr_I信号として、すべてのバススレーブユニットの入力端子及び共通制御コマンドバスに接続される。
次に、バス1において、バススレーブユニットのみが出力する信号、例えばAck信号を伝達する場合のバスの構成を、図23を用いて説明する。このような信号を伝達するバス1103は、マルチプレクサX5、X6、及びオア回路O3とから構成される。以下動作について説明する。例えば、バススレーブユニットS1,S2がそれぞれ、送信許可信号としてACK_O信号を出力する場合、それぞれ同時にその有効期間を示すACK_OE信号を出力する。これによって、2:1のマルチプレクサX5は有効になったいずれかのACK_O信号のみを選択して出力する。選択されたACK_O信号は、オア回路O3においてバススレーブユニットS1、S2のACK_OE信号のオアをとった信号とともに共通制御コマンドバスに出力され、さらに、ACKの入力を示すACK_I信号としてデータ変換ユニットに接続される。
さらに、バス1103の外部からAck_O、Ack_OEが供給される場合(バス2から供給される場合)には、2:1のマルチプレクサX6において、オア回路O3でバススレーブユニットS1、S2のACK_OE信号のオアをとった信号と、共通制御コマンドバスからのACK_OE信号とによって、マルチプレクサX3で選択されたACK_O信号と、共通制御コマンドバスからのACK_O信号とを選択して、選択された信号をACKの入力を示すACK_I信号として、バスマスタユニットM1、M2に共通に接続する。
従って、バススレーブユニットS1,S2と、共通制御コマンドバスのいずれかがACK_O信号を出力したときは、ACK信号の入力を示すACK_I信号として、すべてのバスマスタユニットの入力端子及び共通制御コマンドバスに接続される。
マルチプレクサによるバス構成は、マルチプレクサで区切られたデータ転送経路となる配線のみを制御すればよく、3ステートバッファによるバス構成のように、長い配線を一括で制御する必要がないため、配線容量を少なくすることができ、従って高い周波数で動作できることと、信号がすべて単方向であるため、信号を増幅するためのリピータ(駆動バッファ:不図示)を挿入しやすいという利点がある。また、データ変換ユニットにとっての利点は、32ビット側の信号線と64ビット側の信号線とが同一にならないことである。そのため、例えば同じ送信許可を示すACK信号であったとしても、32ビット側の信号と64ビット側の信号とが、データ変換ユニットにとっては別の信号になるため、データ変換ユニットでこれらを区別することができる。
なお、図1のバス接続回路においては、バス構成として、マルチプレクサを用いる代わりに3ステートバッファを用いることもできるので、以下においては、この場合のバス構成について説明する。
3ステートバッファを用いたバスは、図24に示されるように、データ変換ユニット3と、64ビットのバスマスタユニット4,5と、64ビットのバススレーブユニット6,7と、32ビットのバスマスタユニット8,9と、32ビットのバススレーブユニット10,11との間で、3ステートバッファ61〜68を介してバス1を形成し、3ステートバッファ69〜76を介してバス2を形成した概略構成を有している
3ステートバッファ61は、バスマスタユニット4によってオンに制御されたとき、64ビットのバスマスタユニット4の出力をバス1に接続し、バッファ62は、バス1からの入力をバスマスタユニット4に接続する。3ステートバッファ63と、バッファ64と、64ビットのバスマスタユニット5との関係も同様である。3ステートバッファ65は、バススレーブユニット6によってオンに制御されたとき、64ビットのバススレーブユニット6の出力をバス1に接続し、バッファ66バス1からの入力をバススレーブユニット6に出力する。3ステートバッファ67,68と、64ビットのバススレーブユニット7との関係も同様である。
3ステートバッファ69は、バスマスタユニット8によってオンに制御されたとき、32ビットのバスマスタユニット8の出力をバス2に接続し、バッファ70は、バス2からの入力をバスマスタユニット8に接続する。3ステートバッファ71と、バッファ72と、32ビットのバスマスタユニット9との関係も同様である。3ステートバッファ73は、バススレーブユニット10オンに制御されたとき、32ビットのバススレーブユニット10の出力をバス2に接続し、バッファ76は、バス2からの入力をバススレーブユニット10に出力する。3ステートバッファ75,76と、32ビットのバススレーブユニット11との関係も同様である。
図24においては、信号線は、すべてのバスマスタユニットとバススレーブユニットが入出力する信号として表示されているが、実際には、入力だけの信号や出力だけの信号の場合も存在する。以下、図25乃至図26を参照して、バスマスタユニット/バススレーブユニットの両方、又はバスマスタユニットのみ、又はバススレーブユニットのみが信号を出力する場合のバスの具体的構成について説明する。
図25において、マルチプレクサによって構成されたバスと同様に、バスマスタユニットとバススレーブユニットがともに出力する信号、例えばFrame信号を伝達するためのバスの構成について説明する。
このようなバス1201は、3ステートバッファB11,B12,B13,B14,B15及びバッファB21、B22、B23、B24,B25から構成される。バスマスタユニットM11,M12、バススレーブユニットS11,S12、及びデータ変換ユニットは、Frame64_O信号と同時にFrame64_OE信号を出力する。3ステートバッファB11,B12,B13,B14,B15は、Frame64_OE信号が有効になった場合のみ、対応するユニットからのFrame64_O信号を出力する。
このFrame64信号は、それぞれバッファB21,B22,B23,B24,B25を経て、フレーム出力の入力を示すFrame64_I信号として、共通にバスマスタユニットM11,M12、バススレーブユニットS11,S12、及びデータ変換ユニットに接続される。従って、バスマスタユニットM1,M2、バススレーブユニットS1,S2、及びデータ変換ユニットのいずれかがFrame64_O信号を出力したときは、フレーム信号の入力を示すFrame64_I信号として、すべてのバスマスタユニット/バススレーブユニット及びデータ変換ユニットの入力端子に接続される。
図26において、バスマスタユニットのみが出力する信号、例えばアドレス信号を伝達するバスの構成を説明する。このような信号を伝達するバス1202は、3ステートバッファB31〜B34によって構成される。バスマスタユニットM11,M12は、それぞれ、アドレス信号としてAddr_O信号とAddr_OE信号とを出力する。3ステートバッファB31,B32は、Addr_OE信号が有効になった場合のみ、対応するユニットからのAddr_O信号を出力する。
このAddr信号はバッファB33,B34を経て、アドレスの入力を示すAddr_I信号としてバススレーブユニットS11,S12に出力されるとともに、共通制御コマンドバスにも出力される。従って、バスマスタユニットM1,M2のいずれかがAddr_O信号を出力したときは、アドレスを指示するAddr信号が、すべてのバススレーブユニットの入力端子に接続されるとともに共通制御コマンドバスにも出力される。
図27においては、バススレーブユニットのみが出力する信号、例えばAck信号を伝達するバスの構成を説明している。このような信号を伝達するバス1203は、バッファ41、42、45及び3ステートバッファB43,B44とから構成される。
バススレーブユニットS11,S12は、送信許可を示すACK64_O信号とACK64_OE信号を出力する。これによって、3ステートバッファB43,B44は、ACK64_OE信号が有効になった場合のみ、対応するユニットからのACK64_O信号を出力する。このACK64信号は、バッファB41,B42を経てACKの入力を示すACK64_I信号として、バスマスタユニットM11,M12に出力されるとともに、バッファB45を経てデータ変換ユニットにも出力される。従って、バススレーブユニットS11,S12のいずれかがACK64_O信号を出力したときは、送信許可を示すACK64信号が、すべてのバスマスタユニットとデータ変換ユニットの入力端子に接続される。
3ステートバッファによるバス構成では、配線の信号方向が双方向であるためリピータの挿入が困難であるとともに、データ転送経路の配線に接続された3ステートバッファの容量が加算されるため配線容量が大きくなり、そのため、動作周波数が一般的に低い。3ステートバッファ形式の場合のデータ変換ユニットにとっての特徴は、32ビット側の信号と64ビット側の信号とが区別できないことである。例えばACK信号が32ビット側と64ビット側とで共通であった場合、マルチプレクサによるバスと違って、例えば32ビット側が出力しても、それが64ビット側にも出力されるため、ACK信号が32ビット側で出力されたか、又は64ビット側で出力されたかを区別することができない。従って、32ビット側のACK信号と64ビット側のACK信号とを区別できるようにすることが必要になる。このように区別して扱う必要のある信号は、3ステートバッファによるバス構成では、制御コマンド信号として、共通化することができない。
◇第3実施例
図28は、本発明の第3実施例であるバスシステムの構成を示すブロック図、図29は、本実施例のバスシステムの共通制御コマンドバスを含むシステム構成を示す図、図30は、本実施例において、32ビットのバスマスタユニットから64ビットのバススレーブユニットに対して、リードアクセス後にライトアクセスを行ったときのデータ転送動作を示すタイミングチャートである。以下、第3実施例においては、リードバスとライトバスとが別個であって、かつ、スプリット転送の場合のバスシステムについて説明する。
この例のバスシステムは、図28に示すように、第1のライトバス1Wと、第1のリードバス1Rと、第2のライトバス2Wと、第2のリードバス2Rとに対して、ライトデータ変換ユニット3Wと、リードデータ変換ユニット3Rと、第1のライトバス1Wと第1のリードバス1Rに接続されたバスマスタユニット4,5及びバススレーブユニット6,7と、第2のライトバス2Wと第2のリードバス2Rに接続されたバスマスタユニット8,9及びバススレーブユニット10,11と、調停回路12A,12Bとを備えた概略構成を有している。
第1のライトバス1Wは、64ビットのデータ幅を有し、第2のライトバス2Wは、32ビットのデータ幅を有しているとともに、ライト制御コマンドバスを介して、相互に各種ライト制御コマンドを転送できるようになっている。ライトデータ変換ユニット3Wは、第1のライトバス1Wと第2のライトバス2Wとの間に接続されていて、64ビット幅のデータと32ビット幅のデータとの間の相互のビット幅の変換を行う。第1のリードバス1Rは、64ビットのデータ幅を有し、第2のリードバス2Rは、32ビットのデータ幅を有しているとともに、リード制御コマンドバスを介して、相互に各種リード制御コマンドを転送できるようになっている。リードデータ変換ユニット3Rは、第1のリードバス1Rと第2のリードバス2Rとの間に接続されていて、64ビット幅のデータと32ビット幅のデータとの間の相互のビット幅変換を行う。
バスマスタユニット4,5は、ライト制御コマンド線と64ビットライトデータ線とによって第1のライトバス1Wに接続され、リード制御コマンド線と64ビットリードデータ線とによって第1のリードバス1Rに接続されていて、それぞれタイミングを調整して、CPUやDMAコントローラ等の外部マスタユニットと第1のライトバス1W又は第1のリードバス1Rとの間で、コマンドとライトデータ又はリードデータのインタフェースをとる機能を有している。バススレーブユニット6,7は、ライト制御コマンド線と64ビットライトデータ線とによって第1のライトバス1Wに接続され、リード制御コマンド線と64ビットリードデータ線とによって第1のリードバス1Rに接続されていて、それぞれタイミングを調整して、第1のライトバス1W又は第1のリードバス1RとI/Oやメモリ等の外部スレーブユニットとの間で、コマンドとライトデータ又はリードデータのインタフェースをとる機能を有している。
バスマスタユニット8,9は、ライト制御コマンド線と32ビットライトデータ線とによって第2のライトバス2Wに接続され、リード制御コマンド線と32ビットリードデータ線とによって第2のリードバス2Rに接続されていて、それぞれタイミングを調整して、CPUやDMAコントローラ等の外部マスタユニットと第2のライトバス2W又は第2のリードバス2Rとの間で、コマンドとライトデータ又はリードデータのインタフェースをとる機能を有している。バススレーブユニット10,11は、ライト制御コマンド線と32ビットライトデータ線とによって第2のライトバス2Wに接続され、リード制御コマンド線と32ビットリードデータ線とによって第2のリードバス2Rに接続されていて、それぞれタイミングを調整して、第2のライトバス2W又は第2のリードバス2RとI/Oやメモリ等の外部スレーブユニットとの間で、コマンドとライトデータ又はリードデータのインタフェースをとる機能を有している。
調停回路12Aは、各バスマスタユニット4,5及8,9との間で、調停リクエスト信号に応じて、第1のライトバス1Wと第2のライトバス2Wとにおけるバス権の調停を行って、バス権が確立したとき、調停グラント信号によって、要求元のバスマスタユニットに対して、バス権獲得を通知する機能を有している。調停回路12Bは、各バススレーブユニット6,7及10,11との間で、調停リクエスト信号に応じて、第1のリードバス1Rと第2のリードバス2Rとにおけるバス権の調停を行って、バス権が確立したとき、調停グラント信号によって、要求元のバススレーブユニットに対して、バス権獲得を通知する機能を有している。
この例のバス接続回路におけるバス構成として、マルチプレクサ形式のバス又は3ステートバッファ形式のバスを使用できる点は、図5乃至図8又は図22乃至図25に示された第1実施例の場合と同様である。この例のバス接続回路における、バス権の調停からバス使用までの処理の流れは、図11に示された第1実施例の場合と同様である。また、この例のバス接続回路における、リードアクセス時又はライトアクセス時の、ライトデータ変換ユニット3W又はリードデータ変換ユニット3Rの処理手順は、図12及び図13に示された第1実施例の場合とほぼ同様であるが、リードアクセスとライトアクセスの動作を、それぞれ独立に実行できる点において、第1実施例の場合とは異なっている。
この例のバス接続回路の、共通制御コマンドバスを含むシステム構成は、図29に示すようになる。図29においては、図28におけると同じものを同じ番号で示し、(1) 〜(21)によって、各制御コマンド線及び各共通制御コマンドバスの信号を表していて、(1) はWFrame64,(2) はAddress,(3) はCmd,(4) はDID,(5) はWData64,(6) はWDvalid64,(7) はACK,(8) はNACK,(9) はDevsel,(10)はRFrame64,(11)はRCmd,(12)はRDID,(13)はRACK,(14)はRData64,(15)はRDvalid64,(16)はWFrame32,(17)はWData32,(18)はWDvalid32,(19)はRFrame32,(20)はRData32,(21)はRDvalid32をそれぞれ表している。これらのうち、ライトアクセスにおけるものはWを付して表し、リードアクセスにおけるものはRを付して表している。
図29に示されたシステム構成において用いられている各種コマンドは、図10に示されたものとほぼ同様の内容を有している。ただし、第1実施例の場合と比較して、一部のコントロール信号(例えばMaster)を欠いている。また、リードデータバスとライトデータバスが別個の場合は、バスが共通の場合と比較して、リードデータ転送時に、リードデータ転送用のFrame信号,Data信号,Dvalid信号,Cmd信号,及びDID信号が必要になる点が異なっている。
ここで、WFrame64はライトアクセスによる64ビット幅のバスの占有を示す情報、Addressは、バススレーブユニットを特定するための情報、Cmdはコマンド情報、DIDは、バスマスタユニットを特定するための情報、WData64は、ライトアクセスによる64ビット幅のバス上の転送データ、WDvalid64は、ライトアクセスにおいて64ビット幅のバス上のデータが有効な期間を示す情報、ACKは、選択されたユニットが要求された動作可能になったことを示す情報、NACKは、選択されたユニットが要求された動作可能な状態でないことを示す情報、Devselは、ユニットが選択された状態であることを示す情報、RFrame64は、リードアクセスによる64ビット幅のバスの占有を示す情報、RCmdは、リードアクセスにおけるコマンド情報、RDIDはリードアクセスにおいてバスマスタユニットを特定するための情報、RACKは、リードアクセスにおいて選択されたユニットが要求された動作可能になったことを示す情報、RData64は、リードアクセスによる64ビット幅のバス上の転送データ、RDvalid64は、リードアクセスにおいて64ビット幅のバス上のデータが有効な期間を示す情報をそれぞれ示している。
また、WFrame32はライトアクセスによる32ビット幅のバスの占有を示す情報、WData32は、ライトアクセスによる32ビット幅のバス上の転送データを示す情報、WDvalid32は、ライトアクセスにおいて32ビット幅のバス上のデータが有効な期間を示す情報、RFrame32は、リードアクセスによる32ビット幅のバスの占有を示す情報、RData32は、リードアクセスによる32ビット幅のバス上の転送データ、RDvalid32は、リードアクセスにおいて32ビット幅のバス上のデータが有効な期間を示す情報をそれぞれ示している。
次に、図28乃至図30を参照して、この例のバス接続回路において、スプリット転送によってリードデータのやりとりを行うとともに、ライトデータのやりとりを同時に行ったときの動作例を、32ビットのバスマスタユニットから64ビットのバススレーブユニットに対して、リードアクセスを行ったのちにライトアクセスを行った場合について説明する。なお、図30のタイミングチャートにおいては、調停動作の詳細については省略して示されている。
最初、バスマスタユニットからの調停リクエストに応じて、ライトバス1W,2Wに対するバス権の調停が行われ、その結果、バス権が付与されたとき、バスマスタユニットから32ビット側のライトバス2WにおいてWFrame32がアクティブにされる。さらにライトデータ変換ユニット3Wから64ビット側のライトバス1WにおいてWFrame64がアクティブにされる。これと同時に、バスマスタユニットから、コマンドとして、バススレーブユニットを特定するAddressと、データサイズ等を示すCmdと、バスマスタユニットを特定するDIDが出力される。これによって、指定されたバススレーブユニットはDevselを返し、さらに、Cmdの指示を了承したことを示すACKを64ビット側のライトバス1Wに出力する。その後、バスマスタユニットは、一旦、WFrame32をインアクティブにし、これによって、WFrame64もインアクティブにされる。
次に、バススレーブユニットでは、リードデータの準備ができたとき、調停リクエストを行うことによって、リードバス1R,2Rに対するバス権の調停が行われ、その結果、バス権が付与されたとき、64ビット側のリードバス1RにおいてRFrame64をアクティブにし、これによって、リードデータ変換ユニット3Rから32ビット側のリードバス2RにおいてRFrame32がアクティブにされる。これと同時に、バススレーブユニットから、コマンドとして、データサイズ等を示すRCmdと、バスマスタユニットを特定するRDIDが出力される。これによって、バススレーブユニットは、64ビット側のリードバス1RにおいてRDvalid64をアクティブにして、RData64を出力する。RData64の出力終了時、バススレーブユニットは、RDvalid64をインアクティブにするとともに、RFrame64をインアクティブにする。なおこの際、バスマスタユニットからのACKは必要ないものとする。
リードデータ変換ユニット3Rでは、RData64を受信すると、32ビット側のリードバス2RにおいてRDvalid32をアクティブにし、受信したRData64をRData32に変換して、バスマスタユニットへ送る。送信終了時、リードデータ変換ユニット3RはRDvalid32をインアクティブにし、さらに、RFrame32をインアクティブにする。
一方、再びバスマスタユニットからの調停リクエストに応じて、ライトバス1W,2Wに対するバス権の調停が行われ、その結果、バス権が付与されたとき、バスマスタユニットから32ビット側のライトバス2WにおいてWFrame32がアクティブにされ、さらにライトデータ変換ユニット3Wから64ビット側のライトバス1WにおいてWFrame64がアクティブにされる。これと同時に、バスマスタユニットから、コマンドとして、Addressと、Cmdと、DIDが出力される。これによって、指定されたバススレーブユニットはDevselを返すとともに、Cmdの指示を了承したことを示すACKを64ビット側のライトバス1Wに出力する。
次に、バスマスタユニットは、32ビット側のライトバス2Wに出力されるWDvalid32をアクティブにして,WData32を出力し、終了したときWDvalid32をインアクティブにして、WFrame32をインアクティブにする。ライトデータ変換ユニット3Wは、WData32を受信したとき、これをWData64に変換し、64ビット側のライトバス1WにおいてWDvalid64をアクティブにして、WData64をバススレーブユニットに出力し、終了したとき、WDvalid64をインアクティブにするとともに、WFrame64をインアクティブにする。
64ビットのバスマスタユニットから32ビットのバススレーブユニットに対するスプリット転送のリードアクセスとライトアクセスも、図18乃至図21に示された第1実施例の場合の各動作の組み合わせとして、同様に行うことができる。
このように、この例のバス接続回路では、リードデータバスとライトデータバスが別個の場合に、スプリット転送のリードアクセスとライトアクセスとをそれぞれ別個に行うことができるとともに、この際、リードアクセス及びライトアクセスにおけるクロックサイクル数を少なくすることができる。この際、データ転送エラー発生時に送信元でデータの喪失が生じないとともに、送信元へのデータ転送エラー発生通知が可能なことは、第1実施例の場合と同様である。
さらに、従来技術のバスマスタ制御回路やバススレーブ制御回路におけるような、コマンド制御信号の細部にわたる制御が不要で、データ変換が必要な条件を抽出してデータの変換を行うハードウェアのみを用意すればよいので、回路構成が簡単になり、必要なハードウェア量を少なくすることができる。また、この例のバス制御回路では、バス調停回数が少なく、従って遅延が少ないため、バスを占有している期間が短くなり、その結果、バスのスループットを向上できるようになる。
◇第4実施例
図31は、本発明の第4実施例である、2個のデータ変換ユニットを使用して、2段階にバス幅の変換を行う場合のバスシステムの構成を示すブロック図である。以下、第4実施例として、リードデータバスとライトデータバスが共通な、それぞれ異なるバス幅を有する3種類のバスを相互に接続する際に、2個のデータ変換ユニットを使用して、2段階にバス幅の変換を行う場合のバスシステムについて説明する。
この例のバスシステムは、図31に示すように、第1のバス101と、第2のバス102と、第3のバス103とに対して、第1のバス101に接続された128ビットのバスマスタユニット104と、第1のバス101に接続された128ビットのバススレーブユニット105と、第2のバス102に接続された64ビットのバスマスタユニット106と、第2のバス102に接続された64ビットのバススレーブユニット107と、第3のバス103に接続された32ビットのバスマスタユニット108と、第3のバス103に接続された32ビットのバススレーブユニット109と、第1のデータ変換ユニット110と、第2のデータ変換ユニット111と、調停回路112とを備えた概略構成を有している。
第1のバス101は、128ビットのデータ幅を有し、第2のバス102は64ビットのデータ幅を有し、第3のバス103は、32ビットのデータ幅を有しているとともに、第1のバス101と第2のバス102間、及び第2のバス102と第3のバス103間において、それぞれ共通制御コマンドバスを介して、アドレスバスとコントロールバスの信号を相互に転送できるようになっている。バスマスタユニット104は、128ビットの外部マスタユニット(不図示)と第1のバス101との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット105は、128ビットの外部スレーブユニット(不図示)と第1のバス101との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。
バスマスタユニット106は、64ビットの外部マスタユニット(不図示)と第2のバス102との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット107は、64ビットの外部スレーブユニット(不図示)と第2のバス102との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。バスマスタユニット108は、32ビットの外部マスタユニット(不図示)と第3のバス103との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット109は、32ビットの外部スレーブユニット(不図示)と第3のバス103との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。
第1のデータ変換ユニット110は、第1のバス101と第2のバス102との間で、128ビット幅のデータと64ビット幅のデータとの間の相互のビット幅の変換を行い、第2のデータ変換ユニット111は、第2のバス102と第3のバス103との間で、64ビット幅のデータと32ビット幅のデータとの間の相互のビット幅の変換を行う。調停回路112は、バスマスタユニット104、バススレーブユニット105,バスマスタユニット106,バススレーブユニット107,バスマスタユニット108,バススレーブユニット109からのそれぞれの調停リクエスト信号に応じて、第1のバス101,第2のバス102,第3のバス103におけるバス権の調停を行って、バス権を得たバスマスタユニット又はバススレーブユニットに対して調停グラント信号を出力する。
図31に示されたバス接続回路における、第1のバス101と第2のバス102間におけるバスの接続、又は第2のバス102と第3のバス103間におけるバスの接続は、上述した第1実施例の場合と同様にして行われる。また、第1のバス101と第3のバス103間におけるバスの接続は、第1のバス101と第2のバス102間におけるバスの接続と、第2のバス102と第3のバス103間におけるバスの接続とを順次行うことによって、相互に行うことができる。従って、図31に示されたバス接続回路によれば、128ビット幅のバスと、64ビット幅のバスと、32ビット幅のバスとの、3種類の異なるビット幅のバス間を相互に接続することができる。
このように、この例のバス接続回路によれば、2個のデータ変換ユニットを使用して2段階にバス幅の変換を行うことによって、リードデータバスとライトデータバスが共通な、3種類のそれぞれ異なるバス幅を有するバスを相互に接続してスプリット転送のリードアクセスとライトアクセスとを行うことができるとともに、この際、バス間を越える際の調停が不要で、データの変換だけを行えばよいため、リードアクセス及びライトアクセスにおけるクロックサイクル数を少なくすることができる。従って、送信元から送信先へのデータ転送を同一バスサイクル内に行うことができるので、データ転送エラー発生時に送信元でデータの喪失が生じないとともに、送信元へのデータ転送エラー発生通知が可能なことは、第1実施例の場合と同様である。
さらに、従来技術のバスマスタ制御回路やバススレーブ制御回路におけるような、コマンド制御信号の細部にわたる制御が不要で、データ変換が必要な条件を抽出してデータの変換を行うハードウェアのみを用意すればよいので、回路構成が簡単になり、必要なハードウェア量を少なくすることができる。また、この例のバス制御回路では、バス調停回数が少なく、従って遅延が少ないため、バスを占有している期間が短くなり、その結果、バスのスループットを向上できるようになる。
◇第5実施例
図32は、本発明の第5実施例である、1個のデータ変換ユニットを使用して、3種類の異なるビット幅のバスを接続する場合のバスシステムの構成を示すブロック図、図33は、本実施例のバスシステムにおけるデータ変換ユニットの構成例を示すブロック図、図34は、本実施例のバスシステムにおいて、バスマスタユニットとバススレーブユニットがともに出力する信号を伝達する場合におけるバス構成を説明する図、図35は、本実施例のバスシステムにおいて、バスマスタユニットのみが出力する信号を伝達する場合におけるのバス構成を説明する図、図36は、本実施例のバスシステムにおいて、バススレーブユニット側のみが出力する信号を伝達する場合におけるバスの構成を説明する図である。以下、第5実施例として、それぞれ異なるバス幅を有する3種類のバスを接続する際に、1個のデータ変換ユニットを使用して、相互にバス幅の変換を行う場合のバスシステムについて説明する。
この例のバスシステムは、図32に示すように、第1のバス201と、第2のバス202と、第3のバス203とに対して、第1のバス201に接続された128ビットのバスマスタユニット204と、第1のバス201に接続された128ビットのバススレーブユニット205と、第2のバス202に接続された64ビットのバスマスタユニット206と、第2のバス202に接続された64ビットのバススレーブユニット207と、第3のバス203に接続された32ビットのバスマスタユニット208と、第3のバス203に接続された32ビットのバススレーブユニット209と、データ変換ユニット210と、調停回路211とを備えた概略構成を有している。
第1のバス201は128ビットのデータ幅を有し、第2のバス202は64ビットのデータ幅を有し、第3のバス203は32ビットのデータ幅を有しているとともに、第1のバス201と第2のバス202間、第2のバス202と第3のバス203間、及び第1のバス201と第3のバス203間において、それぞれ共通制御コマンドバスを介して、アドレスバスとコントロールバスの信号を相互に転送できるようになっている。バスマスタユニット204は、128ビットの外部マスタユニット(不図示)と第1のバス201との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット205は、128ビットの外部スレーブユニット(不図示)と第1のバス201との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。
バスマスタユニット206は、64ビットの外部マスタユニット(不図示)と第2のバス202との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット207は、64ビットの外部スレーブユニット(不図示)と第2のバス202との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。バスマスタユニット208は、32ビットの外部マスタユニット(不図示)と第3のバス103との間で、コマンドとリードデータ,ライトデータのインタフェースをとり、バススレーブユニット209は、32ビットの外部スレーブユニット(不図示)と第3のバス203との間で、コマンドとリードデータ,ライトデータのインタフェースをとる。
データ変換ユニット210は、第1のバス201と第2のバス202と第3のバス203との間で、128ビット幅のデータと64ビット幅のデータと32ビット幅のデータとの間の相互のビット幅の変換を行う。調停回路211は、バスマスタユニット204、バススレーブユニット205,バスマスタユニット206,バススレーブユニット207,バスマスタユニット208,バススレーブユニット209からのそれぞれの調停リクエスト信号に応じて、第1のバス201,第2のバス202,第3のバス203におけるバス権の調停を行って、バス権を得たバスマスタユニット又はバススレーブユニットに対して調停グラント信号を出力する。
図33は、図32のバス接続回路におけるデータ変換ユニットの構成例を示したものである。このデータ変換ユニット210は、図33に示すように、データバッファ211と、タイミング制御部212と、マルチプレクサ213,214,215,216,217,218,219とから概略構成されている。
データバッファ211は、例えば128ビット幅のデータと、64ビット幅のデータと、32ビット幅のデータとの間の相互のビット幅の変換を行うFIFOメモリからなっている。すなわち、データバッファ211は、128ビット幅のデータを書き込んで、64ビットずつ2回に分けて読み出すことによって、64ビット幅のデータへの変換を行い、又は32ビットずつ4回に分けて読み出すことによって、32ビット幅のデータへの変換を行うとともに、また、64ビット幅のデータを書き込んで、32ビットずつ2回に分けて読み出すことによって、32ビット幅のデータへの変換を行う。
さらに、逆に、32ビット幅のデータを上位から下位へ向かって、又は下位から上位へ向かって、2回に分けて書き込んだものを結合して読み出すことによって64ビット幅のデータへの変換を行うとともに、また、32ビット幅のデータを上位から下位へ向かって、又は下位から上位へ向かって、4回に分けて書き込んだものを結合して読み出すことによって、又は、64ビット幅のデータを上位から下位へ向かって、又は下位から上位へ向かって、2回に分けて書き込んだものを結合して読み出すことによって、それぞれ128ビット幅のデータへの変換を行う。
タイミング制御部212は、128ビット制御コマンド信号又は64ビット制御コマンド信号又は32ビット制御コマンド信号に応じて、128ビットデータの書き込み時、書込選択信号によって、マルチプレクサ213,214,215,216を制御して、128ビットデータ線のデータをデータバッファ211に入力し、64ビットデータの書き込み時、書込選択信号によってマルチプレクサ213,214又は215,216を制御して、64ビットデータ線のデータをデータバッファ211に入力し、32ビットデータの書き込み時、書込選択信号によってマルチプレクサ213,214,215,216のいずれかを制御して、32ビットデータ線のデータをデータバッファ21に入力するように制御するとともに、128ビットデータの読み出し時、128ビット出力選択信号によって、マルチプレクサ217を制御して、128ビットデータを128ビットデータ線に出力し、64ビットデータの読み出し時、64ビット出力選択信号によってマルチプレクサ218を制御して、64ビットデータを64ビットデータ線に出力し、32ビットデータの読み出し時、32ビット出力選択信号によってマルチプレクサ219を制御して、32ビットデータを32ビットデータ線に出力するように制御する。
さらにタイミング制御部212は、128ビットデータ信号の出力時、128ビットデータが有効な期間を示す128ビットデータバリッド信号と、128ビットデータ線がアクティブになったことを示す128ビットフレーム信号を出力し、64ビットデータ信号の出力時、64ビットデータが有効な期間を示す64ビットデータバリッド信号と、64ビットデータ線がアクティブになったことを示す64ビットフレーム信号を出力し、32ビットデータ信号の出力時、32ビットデータが有効な期間を示す32ビットデータバリッド信号と、32ビットデータ線スがアクティブになったことを示す32ビットフレーム信号を出力する。
図34は、図32に示されたバス接続回路において、バス203を構成する複数のバスの内、バスマスタユニットとバススレーブの双方から出力される信号、例えばフレーム信号を伝達するバスの構成を示すものである。このような信号を伝達するためのバス1301は、マルチプレクサX17,X18,X19、オア回路O15、O16によって構成される。
4:1マルチプレクサX17は、マスターユニットM21,M22及びスレーブユニットS21,S22からFrame32_O、及びFrame32_OEを受け取り、Frame32_OEに基づいてFrame32_O信号を選択・出力する。2:1マルチプレクサX19は、バス1301の外部(バス201またはバス202からのフレーム信号)からのフレーム信号を選択・出力する。2:1マルチプレクサX18は、マルチプレクサX17の出力及びマルチプレクサX19の出力のいずれかを、オア回路O15及びオア回路O16の出力に基づいてマスターユニットM21,M22及びスレーブユニットS21,S22に供給する。
図35は、図32に示されたバス接続回路において、バス203を構成する複数のバスの内、バスマスタユニットからのみ出力される信号、例えばアドレス信号を伝達するバスの構成を示すものである。このような信号を伝達するためのバス1302は、マルチプレクサX11,X12,X13,及びオア回路O11、O12によって構成されている。
例えば、32ビットのバスマスタユニットM21,M22が、アドレス信号としてAddr32_O信号と、その有効を示すAddr32_OE信号とを出力する。これによって、マルチプレクサX11は有効になったいずれかのAddr32_O信号のみを選択して出力する。このAddr32_O信号は、オア回路O11においてバスマスタユニットM21,M22からのAddr32_OE信号のオアをとった信号とともに、共通制御コマンドバスに出力される。
さらに、マルチプレクサX13において、128ビットバスからのAddr128_O信号と64ビットバスからのAddr64_O信号とを、128ビットバスからのAddr128_OE信号と64ビットバスからのAddr64_OE信号とによって選択した信号と、マルチプレクサX11で選択されたAddr32_O信号とを、マルチプレクサX12において、オア回路O11からの信号と、オア回路O12において128ビットバスからのAddr128_OE信号と64ビットバスからのAddr64_OE信号とのオアをとった信号とによって選択して、選択された信号をアドレスの入力を示すAddr_I信号として、32ビットのバススレーブユニットS21,S22に共通に接続する。
さらに、このような接続を、64ビットバスマスタユニットと128ビットバスマスタユニット及び32ビットバスマスタユニット間と、128ビットバスマスタユニットと32ビットバスマスタユニット及び64ビットバスマスタユニット間とにおいて行うことによって、32ビット幅のバスと64ビット幅のバスと128ビット幅のバスとの間において、制御コマンドを共通化することができる。
図36は、図32に示されたバス接続回路において、バス203を構成する複数のバスの内、バススレーブユニットのみから出力される信号、例えばAck信号を伝達するバスの構成を示すものである。このような信号を伝達するためのバス1303は、マルチプレクサX14,X15,X16及びオア回路O13,O14から構成されている。
例えば、32ビットのバススレーブユニットS21,S22がそれぞれ、送信許可を示すACK32_O信号を出力する場合、それぞれ同時にその有効を示すACK32_OE信号を出力する。これによって、マルチプレクサX14は有効になったいずれかのACK32_O信号のみを選択して出力する。このACK32_O信号は、オア回路O13においてバススレーブユニットS21,S22からのACK32_OE信号のオアをとった信号とともに、共通制御コマンドバスに出力される。
さらに、マルチプレクサX16において、128ビットバスからのACK128_O信号と64ビットバスからのACK64_O信号とを、128ビットバスからのACK128_OE信号と64ビットバスからのACK64_OE信号とによって選択した信号と、マルチプレクサX14で選択されたACK32_O信号とを、マルチプレクサX15において、オア回路O13からの信号と、オア回路O14において128ビットバスからのACK128_OE信号と64ビットバスからのACK64_OE信号とのオアをとった信号とによって選択して、選択された信号をACKの入力を示すACK_I信号として、バスマスタユニットM21,M22に共通に接続する。
さらに、このような接続を、64ビットバスマスタユニットと128ビットバスマスタユニット及び32ビットバスマスタユニット間と、128ビットバスマスタユニットと32ビットバスマスタユニット及び64ビットバスマスタユニット間とにおいて行うことによって、32ビット幅のバスと64ビット幅のバスと128ビット幅のバスとの間において、制御コマンドを共通化することができる。
このように、この例のバス接続回路によれば、1個のデータ変換ユニットを使用して相互にバス幅の変換を行うことによって、リードデータバスとライトデータバスが共通な、3種類のそれぞれ異なるバス幅を有するバスを相互に接続してスプリット転送のリードアクセスとライトアクセスとを行うことができるとともに、この際、バス間を越える際のバス権の調停が不要で、データの変換だけを行えばよいため、リードアクセス及びライトアクセスにおけるクロックサイクル数を少なくすることができる。従って、送信元から送信先へのデータ転送を、同一バスサイクル内に行うことができるので、データ転送エラー発生時にも、データの喪失が生じることがないとともに、送信先から送信元へデータ転送エラー発生を通知することができることは、第1実施例の場合と同様である。
さらに、従来技術のバスマスタ制御回路やバススレーブ制御回路におけるような、コマンド制御信号の細部にわたる制御が不要で、データ変換が必要な条件を抽出してデータの変換を行うハードウェアのみを用意すればよいので、回路構成が簡単になり、必要なハードウェア量を少なくすることができる。また、この例のバス制御回路では、バス調停回数が少なく、従って遅延が少ないため、バスを占有している期間が短くなり、その結果、バスのスループットを向上できるようになる。
◇適用例
次に、上述して来た本発明のバスシステムを適用した情報処理システム、及び本発明のバスシステムを適用したチップを含む情報処理システムの例について、図37,図38を参照して簡単に説明する。各実施例と同一の参照番号を用いた構成要素については、既に説明しているため、説明を省略する。
図37は、本発明のバス変換ユニットを適用した情報処理システムの例を示したものである。本発明のバス変換ユニット370は、バス1、バス2、データ変換ユニット3、バスマスタユニット4、5、8、9、バススレーブユニット6、7、10、11、調停回路12、共通制御コマンドバス372、制御コマンド変換回路371とによって構成されている。なお、調停回路と、バスマスタユニット、バススレーブユニットとの間の線は省略している。このバス変換ユニット370に、外部マスタユニット301、302、303、304、外部スレーブユニット401、402、403、404が接続されて情報処理システムを構成している。
ここで、バス1とバス2との制御コマンド線上のコマンドのフォーマットが異なっている場合には、共通制御コマンドバス372の間に制御コマンド変換回路371を挟み、制御コマンド変換回路371によってコマンドのフォーマットの違いを吸収することができる。また、バス変換ユニット370を一つのマクロとして考えると、外部マスタユニット及び外部スレーブユニットは、バスマスタユニット及びバススレーブユニットとのインタフェースのみを考えれば良く、その内部の回路構成を意識する必要は無い。
また、図37に記載した情報処理システムをワンチップ上に構成しても良い。このように、情報処理システムをワンチップ上に構成した場合には、以下のような情報処理システムも構築可能である。情報処理システムの一例として、チップ380、外部バス382、外部メモリ383及びチップ384から構成されるものを図38に示す。
バス変換ユニット370を含むチップ380は、バス変換ユニット370内のバススレーブユニットと接続されるI/Oインタフェース381を備える。(図38において、外部スレーブユニット401がI/Oインタフェース381に置き換わったものと考える。)I/Oインタフェース381は、外部バス382を介して外部メモリ383及び別のチップ384と接続されている。
本例では、バス変換ユニット370に接続されたバスマスタユニットは、バススレーブユニット6を介して外部メモリ383及びチップ384にアクセスをすることが可能となる。このとき、バス変換ユニット370は、レイテンシが小さいため、高速に外部メモリ383及び外部スレーブユニットとしてチップ384にアクセスをすることが可能となる。また、バススレーブユニット6の代わりに、バスマスタユニットを用いることによってチップの外部に設けられた外部マスタユニットと接続することも可能となる。例えば、チップ384を外部マスタユニットとして、チップ380上のメモリにアクセスすることも可能となる。このとき、チップ384は、バス変換ユニットのレイテンシが小さいため高速にチップ380上のメモリにアクセスすることが可能となる。
以上、この発明の実施例を図面により詳述してきたが、具体的な構成はこの実施例に限られたものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれる。例えば、この発明の実施例にて、OR回路を用いて構成された論理はアクティブHIであることが前提である。アクティブLOWである場合には、AND回路を用いて構成することもできる。なお、実施例において、バススレーブユニットがアドレス比較回路を内蔵したものを記載したが、アドレス比較回路はバススレーブユニットの外部に設けてもよい。
また、実施例では、タイミング制御部22が、スレーブからのリードデータ転送に、Frame信号及びAck信号がどちらのバスから送られてきたのかに対応してビット変換の制御を行なっているものを示したが、Ack信号を出力するマスタが必ずデータを受け取ることができる状態であるとする場合には、マスタ側からのAck信号は不要となる。しかしながら、タイミング制御部22はAck信号が無くなるとビット変換の方向が分からなくなるため、常にビット変換を行なうこととなる。この場合、Ack信号を待たなくて良くなるため高速になるが、消費電力が大きくなる。逆に、マスタ側がAck信号を出力する場合には、Ack信号を待つ分だけ低速になるが、ビット変換が不要な場合には消費電力を低減することができる。
また、実施例では、2つ又は3つの異なるビット幅のバスの間におけるデータ転送のバスについて述べたが、本発明はこれに限るものでなく、2以上の異なるビット幅のバスの間におけるビット幅の変換時にも適用することができる。また、本発明は、異なる制御用コマンドを定義されているバス間を接続する場合にも、制御用コマンドの変換回路を共通制御コマンドバスに接続することによって適用することができる。
また、本実施例では、バスシステムに関する回路の構成を具体的に例示してきたが、このバスシステムおよびバスシステムを含んだチップ380に関して、この回路構造を表現した電子データを生成し、コンピュータ装置で読み取り自在なソフトウェアとして情報記憶媒体に格納することも可能である(図示せず)。さらに、バスシステムおよびバスシステムを含んだチップ380の動作をコンピュータ処理装置にシミュレートさせるコンピュータプログラムをC言語などのプログラミング言語やVerilog−HDLなどのハードウェア記述言語などで記述して情報記憶媒体に格納することも可能であり(図示せず)、このコンピュータプログラムや上述の電子データが情報記憶媒体に格納されているコンピュータ装置を形成することも可能である。
本発明でいう回路構造の電子データとは、その回路構造の論理構造を特定できるソフトウェアであれば良く、例えば、動作記述データ、RTL(Register Transfer Level)データ、ゲートレベルデータ、トランジスタレベルデータ、等からなる回路装置のネットリストなどとすることが可能である。また、本発明でいう情報記憶媒体とは、コンピュータ装置に各種処理を実行させるためのコンピュータプログラムが事前に格納されたハードウェアであれば良く、例えば、コンピュータ装置に固定されているROM(Read OnlyMemory)およびHDD(Hard Disc Drive)、コンピュータ装置に交換自在に装填されるCD(Compact Disc)−ROM、およびFD(Flexible Disc−Cartridge)、等で実施することが可能である。
本発明を適用したLSIは、種々の異なる実システムに適用することが可能である。この際の利点としては、
1. 本発明を適用した実システムでは、本発明のバス変換ユニットの特有の効果である低レイテンシアクセスに基づいて、チップ外へのアクセスの場合も、レイテンシ(クロックサイクル数)を小さくすることができる。
2. バスマスタユニット及びバススレーブユニットデータ間のインタフェースのみを行えばよく、データの転送先の状況を考慮して設計を行う必要がないので、LSIを将来、より大きいビット幅のバスで置き換えても、そのチップを、同一システム内で使用し続けることができる。
さらに、本発明のバス接続回路を備えることによって、ビット幅の異なる複数のバスのデータによって任意の情報処理を行う情報処理システムを構成することができる。また、本発明のバス接続回路又は上記の情報処理システムは、半導体基板上に集積回路として形成することが可能であり、これらの回路・システム情報を電子データとして記憶媒体に記録することもできる。