信号転送回路
【課題】プロトコルに従ってアクセスを行うアービタとバスマスタとの間の入出力信号のタイミングの制約を改善することができる信号転送回路を提供する。
【解決手段】バスマスタから入力されたメモリへのアクセス要求をアービタに中継する際に、入力されるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を出力すると共に、アービタから入力されるアクセス許可入力信号に先行して、アクセス許可出力信号をバスマスタに出力する制御信号転送部と、データをバスマスタまたはアービタに中継する際に、入力されるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、バスマスタまたはアービタに出力すると共に、アービタから入力されるデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号をバスマスタに出力するデータ信号転送部と、を備える。
【解決手段】バスマスタから入力されたメモリへのアクセス要求をアービタに中継する際に、入力されるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を出力すると共に、アービタから入力されるアクセス許可入力信号に先行して、アクセス許可出力信号をバスマスタに出力する制御信号転送部と、データをバスマスタまたはアービタに中継する際に、入力されるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、バスマスタまたはアービタに出力すると共に、アービタから入力されるデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号をバスマスタに出力するデータ信号転送部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号転送回路に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムLSIなど、多くのシステムLSIでは、接続された1つのDRAM(Dynamic Random Access Memory)を、内蔵する複数の処理ブロック(以下、「バスマスタ」という)が共有している。このようなシステムLSIにおいては、内蔵している複数のバスマスタのそれぞれが、DMA(Direct Memory Access)によってDRAMへのアクセスを行う。また、システムLSIには、内蔵している複数のバスマスタのそれぞれから発せられるDRAMへのアクセス要求を調停するアービタを備えている。アービタは、それぞれのバスマスタから発せられるDRAMへのアクセス要求を適切に調停しながら、実際のDRAMへのアクセスを制御している。
【0003】
このようなシステムLSIにおいては、アービタとバスマスタとの間で入出力される信号のタイミングに関する規則(プロトコル)が、予め定められている。このプロトコルには、バスマスタからアービタに出力されるDRAMへのアクセス要求や、アービタからバスマスタに出力されるDRAMへのアクセス許可などの、アービタとバスマスタとの間の制御信号のタイミングが定められている。また、このプロトコルには、バスマスタからアービタに出力されるDRAMに書き込むデータや、アービタからバスマスタに出力されるDRAMから読み出したデータなどの、アービタとバスマスタとの間のデータのタイミングが定められている。
【0004】
図10は、従来のシステムLSIにおけるアービタとバスマスタとの構成および制御タイミングの一例を説明する図である。図10(a)には、従来のシステムLSIにおけるアービタとバスマスタとの接続の一例を示している。従来のシステムLSIでは、例えば、図10(a)に示したように、アービタ91に複数のバスマスタ92〜94が接続され、1つのDRAM90を共有している。なお、図10(a)では、アービタ91とバスマスタ92との接続のみ複数の信号線を示しているが、アービタ91とバスマスタ93および94との接続も同様に複数の信号線で接続されている。
【0005】
図10(b)には、従来のシステムLSIにおけるプロトコルに従ったタイミングチャートの一例を示している。図10(b)には、バスマスタからDRAMにデータを書き込む際のそれぞれの信号のタイミングチャートを示している。なお、以下の説明においては、バスマスタ92がDRAM90にデータの書き込みを行う場合について説明する。
【0006】
図10(a)に示したバスマスタ92〜94のそれぞれからアービタ91に対してDRAM90へのアクセス要求を表すリクエスト(REQ)信号を発行(出力)すると、アービタ91は、予め定められた調停アルゴリズムに従って1つのバスマスタ(例えば、バスマスタ92)を選択する。そして、アービタ91は、選択したバスマスタ(例えば、バスマスタ92)にアクセス要求を受け付けた、すなわち、アクセス要求を許可することを表すアクノリッジ(AEN)信号を返す(出力する)。
【0007】
アクセス要求が受け付けられた、すなわち、アクノリッジ(AEN)信号が入力されたバスマスタ92は、次に連続してDRAM90へのアクセス要求を発行しない場合には、同じクロックサイクルでリクエスト(REQ)信号の発行を停止する。
【0008】
また、アービタ91は、DRAM90のデータアクセスが可能なタイミングで、アクセス要求を受け付けたバスマスタ92に、DRAM90へのデータの書き込みが有効な期間を表すデータイネーブル(DEN)信号を発行(出力)する。バスマスタ92は、データイネーブル(DEN)信号が入力されると、同じクロックサイクルから、DRAM90に書き込むデータであるライトデータ(WDATA)を順次出力する。図10(b)には、4バーストのライトデータ(WDATA)を順次出力する場合を示している。
【0009】
なお、バスマスタがDRAMからデータを読み出す場合には、図10(b)に示したライトデータ(WDATA)と同じタイミングでアービタから出力される、DRAMから読み出したデータであるリードデータ(RDATA)を取り込む。
【0010】
このように、アービタとバスマスタとの間で予め定められたプロトコルのタイミングでアクセスすることによって、それぞれのバスマスタは、アービタを介してDRAMにアクセス(DRAMへのデータの書き込み、またはDRAMからのデータの読み出し)を行う。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2006−39672号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、上述したようなプロトコルにおいては、アービタとバスマスタとの間で入出力される信号に、タイミング的に厳しい経路が存在する。図11は、従来のシステムLSIにおいて、タイミング的に厳しい経路の一例を説明する図である。図11(a)には、バスマスタからDRAMにデータを書き込む場合における、タイミング的に厳しい制御タイミングの一例を示し、図11(b)には、従来のシステムLSIにおけるアービタとバスマスタとの接続の一例において、タイミング的に厳しい信号線の経路を示している。なお、図11(b)においては、バスマスタ92を、DRAM90にデータを書き込むバスマスタとし、バスマスタ93を、DRAM90からデータを読み出すバスマスタとしている場合を示している。
【0013】
図11(a)に示したように、バスマスタが連続してDRAM90へのアクセス要求を発行する場合、バスマスタは、アービタ91から入力されたアクノリッジ(AEN)信号に応じたリクエスト(REQ)信号の発行停止および再発行を、1クロックサイクル内で行う(制御する)必要がある(図11(a)のタイミングA参照)。また、それぞれのバスマスタが、アービタ91から入力されたデータイネーブル(DEN)信号に応じたライトデータ(WDATA)を出力する場合や、データイネーブル(DEN)信号と共に入力されたリードデータ(RDATA)の取り込み行う場合にも、それぞれのデータのアクセスを1クロックサイクル内で行う必要がある(図11(a)のタイミングB参照)。
【0014】
このような場合には、図11(b)に太線で示したような経路が、タイミング的に厳しい経路となる。より具体的には、バスマスタ92が連続してDRAM90へのアクセス要求を発行する場合、アービタ91内の調停回路911から入力されたアクノリッジ(AEN)信号は、まず、リクエスト生成回路921(バスマスタ93においては、リクエスト生成回路931)に入力される。リクエスト生成回路921(またはリクエスト生成回路931)は、アクノリッジ(AEN)信号が入力されると、リクエスト(REQ)信号の発行を停止するか、連続してリクエスト(REQ)信号を発行するかを判断する。そして、リクエスト(REQ)信号の発行を停止すると判断した場合には、リクエスト生成回路921(またはリクエスト生成回路931)は、フリップフロップ922(バスマスタ93においては、フリップフロップ932)を初期化(リセット)する。また、連続してリクエスト(REQ)信号を発行すると判断した場合には、リクエスト生成回路921(またはリクエスト生成回路931)は、リクエスト(REQ)信号をフリップフロップ922(またはフリップフロップ932)に入力する。このリクエスト生成回路921(またはリクエスト生成回路931)による判断と、フリップフロップ922(またはフリップフロップ932)に対する制御は、アクノリッジ(AEN)信号が入力されたクロックサイクル中に行う、すなわち、次のクロックサイクルで判定した結果を反映させる必要があるため、タイミング的に厳しくなる。
【0015】
また、バスマスタ92がライトデータ(WDATA)を出力する場合、アービタ91内の調停回路911から入力されたデータイネーブル(DEN)信号は、まず、データ制御回路923に入力される。データ制御回路923は、入力されたデータイネーブル(DEN)信号に基づいて、最初にアービタ91に出力するライトデータ(WDATA)を、フリップフロップ924に出力する。データ制御回路923は、フリップフロップ924への最初のライトデータ(WDATA)の出力を、フリップフロップ924の次のクロックサイクルまでに行う必要がある。以降、データ制御回路923は、クロックサイクル毎に、次のライトデータ(WDATA)を順次フリップフロップ924に出力する。図11(a)には、4バーストのライトデータ(WDATA)を、2回連続で出力する場合を示している。
【0016】
また、バスマスタ93がリードデータ(RDATA)の取り込み行う場合、アービタ91内の調停回路911から入力されたデータイネーブル(DEN)信号は、まず、データラッチ制御回路933に入力される。データラッチ制御回路933は、入力されたデータイネーブル(DEN)信号に基づいて、最初にアービタ91から出力されたリードデータ(RDATA)を取り込むためのデータラッチ信号を、フリップフロップ934に出力する。データラッチ制御回路933は、フリップフロップ934への最初のデータラッチ信号の出力を、フリップフロップ934の次のクロックサイクルまでに行う必要がある。以降、データラッチ制御回路933は、クロックサイクル毎に、次のリードデータ(RDATA)を取り込むためのデータラッチ信号を、順次フリップフロップ934に出力する。
【0017】
このように、従来のシステムLSIでは、プロトコルの制約によって、タイミング的に厳しい経路が存在する。このタイミング的に厳しい経路のタイミングは、システムLSI内でアービタ91が配置される位置と、それぞれのバスマスタが配置される位置との距離が離れると、さらに厳しくなる。このため、従来のシステムLSIでは、システムLSIを高性能にするために、内蔵するバスマスタの数を増やすことが困難である。これは、システムLSIに内蔵するバスマスタの数を増やすことによって、システムLSI内でアービタ91が配置される位置と、それぞれのバスマスタが配置される位置との距離が、さらに離れてしまう可能性があるからである。
【0018】
アービタとバスマスタとの配置位置が離れると、アービタとバスマスタとの間で入出力される信号の配線長が長くなり、配線の遅延時間が増えてしまう。配線の遅延時間が増えると、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号が、それぞれのバスマスタに入力されるまでの時間が遅くなってしまう。これにより、バスマスタ内で次のクロックサイクルまでに行う必要がある制御やデータの出力に使用することができる時間が短くなり、次のクロックサイクルまでに終了しない、すなわち、プロトコルを守れない、という問題となってしまう。
【0019】
また、システムLSIに内蔵するバスマスタの数を増やすことにより、アービタ91内の調停回路911の回路規模も増大する。これにより、それぞれの信号が通過する回路の段数(論理段数)も増えてしまう。このため、アクノリッジ(AEN)信号やデータイネーブル(DEN)信号の調停回路911からの出力も遅くなってしまうことも考えられる。
【0020】
また、従来のシステムLSIでは、システムLSIを高性能にするために、動作クロックを高速化することも困難である。これは、システムLSIの動作クロックを高速化することによって1クロックサイクルの期間が短くなってしまうからである。
【0021】
1クロックサイクルの期間が短くなると、バスマスタ内で次のクロックサイクルまでに行う必要がある制御やデータの出力に使用することができる時間も短くなる。このため、リクエスト生成回路921(またはリクエスト生成回路931)、データ制御回路923、またはデータラッチ制御回路933の論理段数による信号の遅延時間を考慮すると、プロトコルを守るためには、ある程度以上に動作クロックを高速化することができない、という問題となってしまう。
【0022】
そこで、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号も、一旦フリップフロップでラッチすることによって、1クロックサイクル以内に行う必要がある制御やデータの出力に使用することができる時間を確保することが考えられる。
【0023】
図12は、従来のシステムLSIにおいて、アービタから出力される信号をラッチするバスマスタの構成および制御タイミングの一例を説明する図である。図12(a)には、従来のシステムLSIにおけるアービタと、アービタから出力される信号をラッチするバスマスタとの接続の一例を示している。なお、図12(a)には、図11(b)に示したバスマスタ92に、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号をラッチするフリップフロップ925と、アービタ91内の調停回路911から出力されたデータイネーブル(DEN)信号をラッチするフリップフロップ926とを追加したバスマスタの構成を示している。
【0024】
図12(b)には、従来のシステムLSIにおけるプロトコルに従ったタイミングチャートの一例を示している。図12(b)には、図12(a)に示したバスマスタ92からDRAMにデータを書き込む際のそれぞれの信号のタイミングチャートを示している。なお、以下の説明においては、バスマスタ92がDRAM90にデータの書き込みを行う場合において、次に連続してDRAM90へのアクセス要求を発行しない場合について説明する。
【0025】
図12(a)に示したバスマスタ92からアービタ91に対してDRAM90へのアクセス要求を表すリクエスト(REQ)信号を発行(出力)すると、アービタ91は、予め定められた調停アルゴリズムに従ってバスマスタ92を選択し、アクノリッジ(AEN)信号を返す(出力する)。バスマスタ92は、入力されたアクノリッジ(AEN)信号を一旦フリップフロップ925でラッチし、ラッチしたアクノリッジ(AEN_d)信号を、リクエスト生成回路921に出力する。リクエスト生成回路921では、フリップフロップ925が一旦ラッチしたアクノリッジ(AEN_d)信号に基づいて、フリップフロップ922を初期化してリクエスト(REQ)信号の発行を停止する。
【0026】
これにより、図12(b)に示したように、アービタ91に入力されているリクエスト(REQ)信号が停止する。しかし、リクエスト(REQ)信号の発行停止は、フリップフロップ925が一旦ラッチしたアクノリッジ(AEN_d)信号に基づいて行われるため、図12(b)の期間Cだけ遅れたタイミングとなってしまう。このため、アービタ91は、期間Cの間にバスマスタ92から連続してDRAM90へのアクセス要求が発行されたものと誤認識してしまうことになる。
【0027】
また、アービタ91は、DRAM90のデータアクセスが可能なタイミングで、バスマスタ92に、データイネーブル(DEN)信号を発行(出力)する。バスマスタ92は、入力されたデータイネーブル(DEN)信号を一旦フリップフロップ926でラッチし、ラッチしたデータイネーブル(DEN_d)信号を、データ制御回路923に出力する。データ制御回路923では、フリップフロップ926が一旦ラッチしたデータイネーブル(DEN_d)信号に基づいて、最初にアービタ91に出力するライトデータ(WDATA)を、フリップフロップ924に出力する。なお、データ制御回路923は、フリップフロップ924への最初のライトデータ(WDATA)の出力を、フリップフロップ924の次のクロックサイクルまでに行う。
【0028】
これにより、図12(b)に示したように、バスマスタ92からライトデータ(WDATA)が、アービタ91に入力される。しかし、ライトデータ(WDATA)のアービタ91への出力は、フリップフロップ926が一旦ラッチしたデータイネーブル(DEN_d)信号に基づいて行われるため、図12(b)の期間Dのように、アービタ91が出力したデータイネーブル(DEN)信号に対して遅れたタイミングとなってしまう。このため、アービタ91は、期間Dの最初に、バスマスタ92から最初のライトデータ(WDATA)が入力される前のデータを、DRAM90に書き込んでしまうことになる。また、アービタ91は、期間Dの最後では、バスマスタ92から入力された最後(4つ目)のライトデータ(WDATA)を、DRAM90に書き込まないことになる。
【0029】
なお、バスマスタがDRAMからデータを読み出す場合には、図10(b)または図11(a)に示したライトデータ(WDATA)と同じタイミングで、リードデータ(RDATA)がバスマスタに入力される。このとき、フリップフロップが一旦ラッチしたデータイネーブル(DEN_d)信号に基づいたデータラッチ信号は、アービタ91が出力したデータイネーブル(DEN)信号に対して遅れたタイミングとなる。このため、リードデータ(RDATA)を取り込むバスマスタ(例えば、バスマスタ93)は、アービタ91から出力された最初のリードデータ(RDATA)を取り込むことができないことになる。また、バスマスタは、アービタ91から出力された最後のリードデータ(RDATA)よりも後のデータを取り込んでしまうことになる。
【0030】
このように、アービタから出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号を、単純に一旦フリップフロップでラッチすることによって、1クロックサイクル以内に行う必要がある制御やデータの出力に使用することができる時間を確保する方法では、アービタとバスマスタとの間で予め定められている、上述したようなプロトコルを守った状態でDRAMへのアクセスを行うことができない、という問題がある。
【0031】
本発明は、上記の課題認識に基づいてなされたものであり、プロトコルに従ってアクセスを行うアービタとバスマスタとの間の入出力信号のタイミングの制約を改善することができる信号転送回路を提供することを目的としている。
【課題を解決するための手段】
【0032】
上記の課題を解決するため、本発明の信号転送回路は、メモリへのアクセス要求を出力する複数のバスマスタのそれぞれと、前記メモリが接続され、前記バスマスタのそれぞれから入力された該メモリへの前記アクセス要求を調停し、許可した前記アクセス要求に応じて該メモリへのアクセスを制御するアービタとの間に挿入され、前記アービタと対応する前記バスマスタとの間のそれぞれの信号を中継する信号転送回路であって、当該信号転送回路は、対応する前記バスマスタから入力された前記メモリへのアクセス要求を前記アービタに中継する際に、該前記バスマスタから入力される、該アクセス要求におけるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を、前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求を許可することを表すアクセス許可入力信号に先行して、該アクセス要求を許可するアクセス許可出力信号を、該バスマスタに出力する制御信号転送部と、対応する前記バスマスタから入力された前記メモリへのアクセス要求における複数のデータを該バスマスタまたは前記アービタに中継する際に、前記アービタまたは該バスマスタから入力される、該アクセス要求におけるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、該バスマスタまたは前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求におけるそれぞれのデータが有効である期間を表すデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号を、該バスマスタに出力するデータ信号転送部と、を備える、ことを特徴とする。
【0033】
また、本発明の前記制御信号転送部は、前記アクセス要求入力信号と前記アクセス許可入力信号とに基づいて、前記アクセス要求出力信号を出力するか否かを決定し、該アクセス要求出力信号を出力すると決定したときに、該アクセス要求出力信号を出力することを表す出力タイミング信号を出力し、該出力タイミング信号を出力した次のタイミングから、該アクセス要求出力信号を出力するアクセス要求タイミング調整部と、前記出力タイミング信号が出力された次のタイミングから、前記メモリアドレス入力信号を、前記メモリアドレス出力信号として出力するアドレスタイミング調整部と、前記出力タイミング信号を、次のタイミングで、前記アクセス許可出力信号として出力するアクセス許可タイミング調整部と、を備え、前記アクセス要求タイミング調整部は、対応する前記バスマスタから、今回のアクセス要求に応じた前記アクセス要求入力信号が入力されたとき、該バスマスタによる前回のアクセス要求に応じた前記アクセス要求出力信号がすでに出力され、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されていないときには、今回のアクセス要求に応じた前記アクセス要求出力信号の出力を保留し、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されたときに、今回のアクセス要求に応じた前記アクセス要求出力信号を出力すると決定する、ことを特徴とする。
【0034】
また、本発明の信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリからデータを読み出すバスマスタである場合、前記データ信号転送部は、前記アービタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの前記データ出力信号として、前記バスマスタに出力するリードデータタイミング調整部と、前記アービタから入力された前記データ有効期間入力信号を、次のタイミングで、前記データ有効期間出力信号として、前記バスマスタに出力するリードデータ有効期間タイミング調整部と、を備える、ことを特徴とする。
【0035】
また、本発明の信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリにデータを書き込むバスマスタである場合、前記データ信号転送部は、前記アービタから入力される前記データ有効期間入力信号に先行して、前記データ有効期間出力信号を、前記バスマスタに出力するライトデータ有効期間タイミング調整部と、先行して出力された前記データ有効期間出力信号に応じて、前記バスマスタから入力される複数の前記データ入力信号の内、予め定めた数または全ての前記データ入力信号を保持する複数のデータ保持部を具備し、前記バスマスタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの該データ保持部に一旦保持し、前記アービタから前記データ有効期間入力信号が入力されたときに、保持したそれぞれの前記データ入力信号を、タイミングを整えたそれぞれの前記データ出力信号として、前記アービタに出力するライトデータタイミング調整部と、を備える、ことを特徴とする。
【0036】
また、本発明の前記ライトデータ有効期間タイミング調整部は、前記アクセス許可出力信号と前記データ有効期間出力信号とに基づいて、前記アクセス要求に応じた全ての前記データ出力信号の前記アービタへの出力が終了していない許可したアクセス要求の数を計測し、該計測した結果に基づいて生成した、対応する前記バスマスタによる前記アクセス要求をすでに許可しているが、全ての前記データ出力信号の前記アービタへの出力が終了していない許可済みのアクセス要求があるか否かを表す残許可アクセス信号を出力する許可アクセス計測部と、前記データ有効期間入力信号と前記データ有効期間出力信号とに基づいて、前記データ入力信号を保持することができる前記データ保持部の数を計測し、該計測した結果である保持可能データ数と、該計測した結果に基づいて生成した、前記データ入力信号を保持することができる前記データ保持部があるか否か表す保持可否信号と、を出力するデータ計測部と、を備え、前記残許可アクセス信号と前記保持可否信号とに基づいて生成した信号を、前記データ有効期間出力信号として出力し、前記ライトデータタイミング調整部は、前記保持可能データ数と、前記データ有効期間出力信号と、前記データ有効期間入力信号とに基づいて、前記バスマスタから入力されたそれぞれの前記データ入力信号を、複数の前記データ保持部の内、いずれのデータ保持部に保持させるかを制御するデータ保持制御部、を備える、ことを特徴とする。
【0037】
また、本発明の前記ライトデータタイミング調整部は、前記バスマスタから入力された2つの前記データ入力信号を、次のタイミングで、それぞれの保持する第1のデータ保持部と第2のデータ保持部とを具備し、前記第2のデータ保持部が保持した前記データ入力信号を、前記データ出力信号として前記アービタに出力し、前記データ保持制御部は、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が無効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第1のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が2つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数がないことを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記第1のデータ保持部に保持している前記データ入力信号を、前記第2のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させるように、前記第1のデータ保持部と前記第2のデータ保持部とを制御する、ことを特徴とする。
【0038】
また、本発明の信号転送回路における、前記次のタイミングは、当該信号転送回路と、前記アービタと、前記バスマスタとが動作する共通のクロックサイクルのタイミングである、ことを特徴とする。
【発明の効果】
【0039】
本発明によれば、プロトコルに従ってアクセスを行うアービタとバスマスタとの間の入出力信号のタイミングの制約を改善することができるという効果が得られる。
【図面の簡単な説明】
【0040】
【図1】本発明の実施形態における信号転送回路の基本構成を示したブロック図である。
【図2】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールの概略構成を示したブロック図である。
【図3】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールの構成の一例を示した回路図である。
【図4】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールのタイミングの一例を示したタイミングチャートである。
【図5】本実施形態の信号転送回路において、DRAMからデータを読み出すバスマスタに対応したリードデータ転送モジュールの概略構成を示したブロック図である。
【図6】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールの概略構成を示したブロック図である。
【図7】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールの構成の一例を示した回路図である。
【図8】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールが、DRAMに書き込むデータをラッチする際の制御方法を説明する真理値表である。
【図9】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールのタイミングの一例を示したタイミングチャートである。
【図10】従来のシステムLSIにおけるアービタとバスマスタとの構成および制御タイミングの一例を説明する図である。
【図11】従来のシステムLSIにおいて、タイミング的に厳しい経路の一例を説明する図である。
【図12】従来のシステムLSIにおいて、アービタから出力される信号をラッチするバスマスタの構成および制御タイミングの一例を説明する図である。
【発明を実施するための形態】
【0041】
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における信号転送回路の基本構成を示したブロック図である。図1は、本実施形態における信号転送回路の基本的な概念を表している。図1に示したように、本実施形態の信号転送回路は、アービタとバスマスタとの間に挿入される。信号転送回路は、アービタとバスマスタとの間で入出力される信号を転送(中継)する回路である。このとき、信号転送回路とアービタ、およびバスマスタと信号転送回路は、アービタとバスマスタとの間で予め定められたプロトコルと同じプロトコルに従ったタイミングでアクセスされる。
【0042】
図1(a)には、DRAMからデータを読み出すバスマスタ(以下、「リードバスマスタ」という)2と、アービタ1のとの間に挿入される信号転送回路を示している。リードバスマスタ2とアービタ1との間に挿入される信号転送回路は、制御信号転送モジュール10とリードデータ転送モジュール20とから構成される。また、図1(b)には、DRAMにデータを書き込むバスマスタ(以下、「ライトバスマスタ」という)3と、アービタ1のとの間に挿入される信号転送回路を示している。ライトバスマスタ3とアービタ1との間に挿入される信号転送回路は、制御信号転送モジュール10とライトデータ転送モジュール30とから構成される。以下の説明においては、リードバスマスタ2またはライトバスマスタ3のいずれか一方を表すときには、単に、「バスマスタ」ともいう。
【0043】
なお、リードバスマスタ2、ライトバスマスタ3、およびアービタ1の動作は、従来のシステムLSIに内蔵されたバスマスタおよびアービタと同様である。より具体的には、アービタ1は、図10および図11に示したアービタ91と同様に、それぞれのバスマスタから発せられる図示しないDRAMへのアクセス要求を適切に調停しながら、実際のDRAMへのアクセスを制御している。また、リードバスマスタ2は、図11(b)に示したバスマスタ93と同様に、アービタ1に、図示しないDRAMからデータを読み出すためのアクセス要求を出力し、アービタ1からアクセス要求が許可されたあとに、アービタ1を介して入力される図示しないDRAMからのデータを取り込む。また、ライトバスマスタ3は、図11(b)に示したバスマスタ92と同様に、アービタ1に、図示しないDRAMにデータを書き込むためのアクセス要求を出力し、アービタ1からアクセス要求が許可されたあとに、アービタ1を介して図示しないDRAMに書き込むデータを出力する。従って、リードバスマスタ2、ライトバスマスタ3、およびアービタ1の動作に関する詳細な説明は、省略する。
【0044】
制御信号転送モジュール10は、リードバスマスタ2またはライトバスマスタ3からアービタ1に発行される(出力される)、DRAMへのアクセス要求を表すリクエスト(REQ)信号と、アクセスするDRAMのアドレスを表すアドレス(ADR)とを中継する。また、制御信号転送モジュール10は、アービタ1が選択したバスマスタに返される(出力される)、DRAMへのアクセス要求を受け付けた、すなわち、アクセス要求を許可することを表すアクノリッジ(AEN)信号を中継する。
【0045】
制御信号転送モジュール10は、タイミング調整部110が、リクエスト(REQ)信号およびアドレス(ADR)のタイミングを整えて、アービタ1に出力する。また、制御信号転送モジュール10は、タイミング調整部120が生成したアクノリッジ(AEN)信号を、アービタ1からアクノリッジ(AEN)信号が入力されるより前のタイミングで、リードバスマスタ2またはライトバスマスタ3に出力する。これにより、制御信号転送モジュール10は、システムLSI内のアービタ1の配置位置とバスマスタの配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、制御信号転送モジュール10に関する詳細な説明は、後述する。
【0046】
リードデータ転送モジュール20は、アービタ1が選択したリードバスマスタ2に出力される、DRAMから読み出したデータが有効である期間を表すデータイネーブル(DEN)信号と、DRAMから読み出したデータであるリードデータ(RDATA)とを中継する。リードバスマスタ2とアービタ1のとの間に挿入される信号転送回路は、制御信号転送モジュール10とリードデータ転送モジュール20とが組として使用される。
【0047】
リードデータ転送モジュール20は、タイミング調整部210が、データイネーブル(DEN)信号およびリードデータ(RDATA)のタイミングを整えて、リードバスマスタ2に出力する。これにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、リードデータ転送モジュール20に関する詳細な説明は、後述する。
【0048】
ライトデータ転送モジュール30は、アービタ1が選択したライトバスマスタ3に出力される、DRAMへのデータの書き込みが有効である期間を表すデータイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力される、DRAMに書き込むデータであるライトデータ(WDATA)を中継する。ライトバスマスタ3とアービタ1のとの間に挿入される信号転送回路は、制御信号転送モジュール10とライトデータ転送モジュール30とが組として使用される。
【0049】
ライトデータ転送モジュール30は、タイミング調整部310が生成したデータイネーブル(DEN)信号を、アービタ1からデータイネーブル(DEN)信号が入力されるより前のタイミング、すなわち、先行したタイミングで、ライトバスマスタ3に出力する。また、ライトデータ転送モジュール30は、タイミング調整部320が、ライトデータ(WDATA)のタイミングを整えて、アービタ1に出力する。これにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とライトバスマスタ3の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、ライトデータ転送モジュール30に関する詳細な説明は、後述する。
【0050】
次に、制御信号転送モジュール10について説明する。図2は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10の概略構成を示したブロック図である。図2では、アービタ1とリードバスマスタ2との間に挿入される信号転送回路に含まれる制御信号転送モジュール10を示している。なお、アービタ1とライトバスマスタ3との間に挿入される信号転送回路に含まれる制御信号転送モジュール10も同様の構成である。
【0051】
制御信号転送モジュール10は、タイミング調整部110としてのリクエストタイミング調整部111およびアドレスタイミング調整部112と、タイミング調整部120と、を備えている。なお、以下の説明においては、タイミング調整部120を、アクノリッジタイミング調整部120ともいう。
【0052】
制御信号転送モジュール10は、リードバスマスタ2から入力されたリクエスト(REQ)信号を、リクエストタイミング調整部111でタイミングを整えて、アービタ1に出力する。リクエストタイミング調整部111は、例えば、リクエスト(REQ)信号を一旦ラッチしたのと同様のタイミングで、アービタ1に出力する。また、制御信号転送モジュール10は、リクエスト(REQ)信号と同時にリードバスマスタ2から入力されたアドレス(ADR)を、アドレスタイミング調整部112でタイミングを整えて、アービタ1に出力する。アドレスタイミング調整部112は、例えば、アドレス(ADR)を一旦ラッチしたのと同様のタイミングで、アービタ1に出力する。これにより、リードバスマスタ2から入力されたリクエスト(REQ)信号およびアドレス(ADR)は、制御信号転送モジュール10によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。
【0053】
以下の説明においては、リードバスマスタ2から入力されるリクエスト(REQ)信号およびアドレス(ADR)をそれぞれ、バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRという。また、アービタ1に出力するリクエスト(REQ)信号およびアドレス(ADR)をそれぞれ、アービタリクエスト信号A_REQおよびアービタアドレスA_ADRという。
【0054】
また、制御信号転送モジュール10は、タイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRがアービタ1に出力されるタイミング、すなわち、リクエストタイミング調整部111およびアドレスタイミング調整部112のそれぞれが、バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRを一旦ラッチしたのと同様のタイミングで、アクノリッジタイミング調整部120が生成したアクノリッジ(AEN)信号を、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、アービタ1がリードバスマスタ2を選択したときに返されるアクノリッジ(AEN)信号より前のタイミング、すなわち、先行したタイミングで、アクノリッジ(AEN)信号が入力される。
【0055】
以下の説明においては、アービタ1から入力されるアクノリッジ(AEN)信号を、アービタアクノリッジ信号A_AENという。また、リードバスマスタ2に出力するアクノリッジ(AEN)信号を、バスマスタアクノリッジ信号B_AENという。
【0056】
なお、制御信号転送モジュール10は、バスマスタアクノリッジ信号B_AENをリードバスマスタ2に返したことによって、リードバスマスタ2から再度バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRが入力された場合には、すぐにタイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRを、アービタ1に出力しない。
【0057】
再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応した、アービタリクエスト信号A_REQおよびアービタアドレスA_ADRは、制御信号転送モジュール10に、アービタ1からのアービタアクノリッジ信号A_AENが入力された後に、アービタ1に出力する。また、制御信号転送モジュール10は、リクエストタイミング調整部111およびアドレスタイミング調整部112のそれぞれから、タイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRがアービタ1に出力されるタイミングで、再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応してアクノリッジタイミング調整部120が生成したバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。
【0058】
以降、同様に、制御信号転送モジュール10は、アービタ1からアービタアクノリッジ信号A_AENが入力された後に、再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応したアービタリクエスト信号A_REQおよびアービタアドレスA_ADRのアービタ1への出力と、バスマスタアクノリッジ信号B_AENのリードバスマスタ2への出力とを繰り返す。
【0059】
このような動作によって、制御信号転送モジュール10は、バスマスタからアービタ1に発行される(出力される)リクエスト(REQ)信号およびアドレス(ADR)と、アービタ1からバスマスタに返される(出力される)アクノリッジ(AEN)信号とを中継する。これにより、制御信号転送モジュール10をアービタ1とバスマスタとの間に挿入することによって、制御信号転送モジュール10とアービタ1、およびバスマスタと制御信号転送モジュール10との間では、アービタ1とバスマスタとの間で予め定められているプロトコルを守った状態とした上で、アービタ1とバスマスタとの間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0060】
次に、制御信号転送モジュール10のより詳細な構成について説明する。図3は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10の構成の一例を示した回路図である。図3では、図2と同様に、アービタ1とリードバスマスタ2との間に挿入される制御信号転送モジュール10を示している。なお、アービタ1とライトバスマスタ3との間に挿入される制御信号転送モジュール10も同様の構成である。
【0061】
制御信号転送モジュール10では、リクエストタイミング調整部111が、フリップフロップ1111と、判定ロジック1112と、判定ロジック1113とで構成されている。また、アドレスタイミング調整部112およびアクノリッジタイミング調整部120は、それぞれフリップフロップで構成されている。以下の説明においては、アドレスタイミング調整部112をフリップフロップ112ともいい、アクノリッジタイミング調整部120をフリップフロップ120ともいう。
【0062】
判定ロジック1112は、アービタリクエスト信号A_REQのアービタ1への出力を開始するタイミングを表す、リクエストアサートタイミング信号を生成し、生成したリクエストアサートタイミング信号を、フリップフロップ1111のセット(SET)端子に出力する。また、リクエストアサートタイミング信号は、フリップフロップ112のイネーブル(EN)端子、およびフリップフロップ120のデータ(D)端子にも出力される。判定ロジック1112は、リードバスマスタ2から最初にバスマスタリクエスト信号B_REQが発行されたとき、もしくはリードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行された場合において、アービタ1からアービタアクノリッジ信号A_AENが入力されたときに、リクエストアサートタイミング信号を、アービタリクエスト信号A_REQをアービタ1に出力する状態(以下、「セット状態」という)にする。
【0063】
リクエストアサートタイミング信号は、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQと、アービタ1から入力されたアービタアクノリッジ信号A_AENと、フリップフロップ1111が出力するアービタリクエスト信号A_REQとに基づいて生成される。
【0064】
より具体的には、判定ロジック1112は、バスマスタリクエスト信号B_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタリクエスト信号A_REQがアクセス要求をしていない状態(例えば、“Low”レベル)のときに、リクエストアサートタイミング信号を、セット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から最初にバスマスタリクエスト信号B_REQが発行されたときに対応している。
【0065】
また、判定ロジック1112は、バスマスタリクエスト信号B_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタリクエスト信号A_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタアクノリッジ信号A_AENがアクセス要求を許可する状態(例えば、“High”レベル)となったときに、リクエストアサートタイミング信号を、セット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行された場合において、アービタ1から前回のアービタリクエスト信号A_REQに応じたアービタアクノリッジ信号A_AENが入力されたときに対応している。
【0066】
上記2つの状態以外のときには、判定ロジック1112は、セット状態のリクエストアサートタイミング信号を出力しない。例えば、“Low”レベルにする。
【0067】
判定ロジック1113は、アービタリクエスト信号A_REQのアービタ1への出力を停止するタイミングを表す、リクエストクリアタイミング信号を生成し、生成したリクエストクリアタイミング信号を、フリップフロップ1111のクリア(CLR)端子に出力する。判定ロジック1113は、アービタ1からアービタアクノリッジ信号A_AENが入力されたときに、リクエストクリアタイミング信号を、アービタリクエスト信号A_REQのアービタ1への出力を停止する状態(以下、「リセット状態」という)にする。
【0068】
リクエストクリアタイミング信号は、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQと、アービタ1から入力されたアービタアクノリッジ信号A_AENとに基づいて生成される。
【0069】
より具体的には、判定ロジック1113は、バスマスタリクエスト信号B_REQがアクセス要求をしていない状態(例えば、“Low”レベル)で、アービタアクノリッジ信号A_AENがアクセス要求を許可する状態(例えば、“High”レベル)となったときに、リクエストクリアタイミング信号を、リセット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行されていない状態で、最後のアービタリクエスト信号A_REQに応じたアービタアクノリッジ信号A_AENが入力されたときに対応している。
【0070】
上記の状態以外のときには、判定ロジック1113は、リセット状態のリクエストクリアタイミング信号を出力しない。例えば、“Low”レベルにする。
【0071】
フリップフロップ1111は、判定ロジック1112からセット(SET)端子に入力されたリクエストアサートタイミング信号と、判定ロジック1113からクリア(CLR)端子に入力されたリクエストクリアタイミング信号とに応じて生成したアービタリクエスト信号A_REQを、アービタ1に出力する。
【0072】
より具体的には、フリップフロップ1111は、セット状態のリクエストアサートタイミング信号が入力されると、次のクロックサイクルで、アービタリクエスト信号A_REQを、DRAMへのアクセスを要求する状態(例えば、“High”レベル)にする。また、フリップフロップ1111は、リセット状態のリクエストクリアタイミング信号が入力されると、次のクロックサイクルで、アービタリクエスト信号A_REQを、DRAMへのアクセスを要求しない、すなわち、DRAMへのアクセスを停止する状態(例えば、“High”レベル)にする。また、アービタリクエスト信号A_REQは、判定ロジック1112にも出力される。
【0073】
これにより、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQは、フリップフロップ1111によってクロックサイクルのタイミングに整えられて、アービタ1に出力されることになる。すなわち、アービタリクエスト信号A_REQは、フリップフロップ1111で一旦ラッチしたのと同様のタイミングで、アービタ1に出力されることになる。
【0074】
フリップフロップ112(アドレスタイミング調整部112)は、判定ロジック1112からイネーブル(EN)端子に入力されたリクエストアサートタイミング信号に応じて、リードバスマスタ2からデータ(D)端子に入力されたバスマスタアドレスB_ADRをラッチし、ラッチしたバスマスタアドレスB_ADRを、アービタアドレスA_ADRとしてアービタ1に出力する。なお、制御信号転送モジュール10には、バスマスタアドレスB_ADRのビット数分のフリップフロップ112が備えられている。
【0075】
これにより、バスマスタリクエスト信号B_REQと同時にリードバスマスタ2から入力されたバスマスタアドレスB_ADRは、フリップフロップ112によってクロックサイクルのタイミングに整えられて、アービタ1に出力されることになる。すなわち、バスマスタアドレスB_ADRは、フリップフロップ112で一旦ラッチしたバスマスタリクエスト信号B_REQと同様のタイミングで、アービタ1に出力されることになる。
【0076】
フリップフロップ120(アクノリッジタイミング調整部120)は、判定ロジック1112からデータ(D)端子に入力されたリクエストアサートタイミング信号をラッチし、ラッチしたリクエストアサートタイミング信号を、バスマスタアクノリッジ信号B_AENとして、リードバスマスタ2に出力する。
【0077】
これにより、バスマスタアクノリッジ信号B_AENは、アービタリクエスト信号A_REQとアービタアドレスA_ADRとをアービタ1に出力するタイミングと同じタイミングで、リードバスマスタ2に出力される。なお、このタイミングでは、今回アービタ1に出力したバスマスタリクエスト信号B_REQに対するアービタアクノリッジ信号A_AENは、アービタ1から入力されない。すなわち、このタイミングでリードバスマスタ2に出力されるバスマスタアクノリッジ信号B_AENは、アービタ1からアービタアクノリッジ信号A_AENが入力されるよりも先行したタイミングで出力されることになる。
【0078】
ここで、図3に示した制御信号転送モジュール10の動作について説明する。図4は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10のタイミングの一例を示したタイミングチャートである。なお、以下の説明においては、バスマスタリクエスト信号B_REQおよびアービタリクエスト信号A_REQが“High”レベルで、DRAMへのアクセス要求をしている状態であるものとし、アービタアクノリッジ信号A_AENおよびバスマスタアクノリッジ信号B_AENが“High”レベルで、DRAMへのアクセス要求を許可する状態であるものとして説明を行う。また、リクエストアサートタイミング信号が“High”レベルで、セット状態であるものとして説明を行う。
【0079】
まず、リードバスマスタ2は、DRAMへの最初のアクセス要求を発行する。これにより、タイミングt1において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。このとき、アービタリクエスト信号A_REQは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにする。
【0080】
その後、次のクロックサイクルであるタイミングt2において、フリップフロップ1111が、“High”レベルのアービタリクエスト信号A_REQを、アービタ1に出力する。また、同時に、フリップフロップ112が、アービタアドレスA_ADR(ADR1)を、アービタ1に出力する。これにより、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR1)とのタイミングが整えられて、アービタ1に中継される。
【0081】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt1で出力したDRAMへのアクセス要求が、事前に許可される。
【0082】
また、タイミングt2において、判定ロジック1112に、フリップフロップ1111から“High”レベルのアービタリクエスト信号A_REQが入力される。このとき、アービタアクノリッジ信号A_AENは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“Low”レベルにする。
【0083】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt3において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0084】
また、タイミングt2において、判定ロジック1112がリクエストアサートタイミング信号を“Low”レベルにしたことにより、タイミングt3において、フリップフロップ120から出力されているバスマスタアクノリッジ信号B_AENが“Low”レベルになる。
【0085】
その後、アービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt4において、アービタ1からの“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。これにより、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにする。
【0086】
その後、次のクロックサイクルであるタイミングt5において、フリップフロップ1111は、アービタリクエスト信号A_REQを、“Low”レベルにする。これにより、アービタ1は、アービタアクノリッジ信号A_AENを“Low”レベルにする。
【0087】
このようにして、リードバスマスタ2によるDRAMへの1回のアクセスが終了する。なお、リードバスマスタ2が再度DRAMにアクセスする際には、再び、DRAMへの最初のアクセス要求を発行する。これにより、タイミングt6において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。このとき、アービタリクエスト信号A_REQは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにする。
【0088】
その後、次のクロックサイクルであるタイミングt7において、フリップフロップ1111が、“High”レベルのアービタリクエスト信号A_REQを、アービタ1に出力する。また、同時に、フリップフロップ112が、アービタアドレスA_ADR(ADR2)を、アービタ1に出力する。これにより、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR2)とのタイミングが整えられて、アービタ1に中継される。
【0089】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt6で出力したDRAMへのアクセス要求が、事前に許可される。
【0090】
また、タイミングt7において、判定ロジック1112に、フリップフロップ1111から“High”レベルのアービタリクエスト信号A_REQが入力される。このとき、アービタアクノリッジ信号A_AENは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“Low”レベルにする。
【0091】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt8において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0092】
また、タイミングt7において、判定ロジック1112がリクエストアサートタイミング信号を“Low”レベルにしたことにより、タイミングt8において、フリップフロップ120から出力されているバスマスタアクノリッジ信号B_AENが“Low”レベルになる。
【0093】
その後、リードバスマスタ2がDRAMにアクセスする際には、再び、DRAMへのアクセス要求を発行する。これにより、タイミングt9において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。しかし、タイミングt9の時点では、リードバスマスタ2がタイミングt6で発行した最初のアクセス要求がアービタ1に受け付けられていない。すなわち、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力されていない。このため、アービタリクエスト信号A_REQは“High”レベルのままである。従って、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにしない。これにより、制御信号転送モジュール10は、リードバスマスタ2によってタイミングt6で発行されたバスマスタリクエスト信号B_REQに対応するDRAMへのアクセス要求の状態を継続する。
【0094】
その後、タイミングt7で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt10において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。このとき、タイミングt9で発行されたDRAMへのアクセス要求によって、バスマスタリクエスト信号B_REQは“High”レベルのままである。従って、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにしない。すなわち、アービタリクエスト信号A_REQをリセット状態にしない。
【0095】
また、判定ロジック1112は、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが入力されたことにより、リクエストアサートタイミング信号を“High”レベルにする。これは、タイミングt9でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応するものである。
【0096】
これにより、次のクロックサイクルであるタイミングt11において、フリップフロップ1111が出力するアービタリクエスト信号A_REQの“High”レベルが維持され、アービタ1に、連続したDRAMへのアクセス要求が出力される。
【0097】
また、タイミングt11では、リクエストアサートタイミング信号に応じて、フリップフロップ112によるアービタアドレスA_ADRの出力が、タイミングt9でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応したアービタアドレスA_ADR(ADR3)に切り替わる。これにより、タイミングt9において、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR3)とのタイミングが整えられて、アービタ1に中継される。
【0098】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt9で出力したDRAMへのアクセス要求が、事前に許可される。
【0099】
その後、次のクロックサイクルであるタイミングt12において、フリップフロップ120は、リクエストアサートタイミング信号の“Low”レベルに応じて、バスマスタアクノリッジ信号B_AENを、“Low”レベルにする。
【0100】
また、リードバスマスタ2に“High”レベルのバスマスタアクノリッジ信号B_AENが入力された後、リードバスマスタ2が連続してDRAMにアクセスする際には、DRAMへのアクセス要求の発行を停止せず、バスマスタリクエスト信号B_REQの“High”レベルを継続する。これにより、タイミングt12においても“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。しかし、タイミングt12の時点では、リードバスマスタ2がタイミングt9で発行した2回目のアクセス要求がアービタ1に受け付けられていない。すなわち、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力されていない。このため、アービタリクエスト信号A_REQは“High”レベルのままである。従って、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにしない。これにより、制御信号転送モジュール10は、リードバスマスタ2によってタイミングt9で発行されたバスマスタリクエスト信号B_REQに対応するDRAMへのアクセス要求の状態を継続する。
【0101】
その後、タイミングt11で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt13において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。このとき、タイミングt12で発行されたDRAMへのアクセス要求によって、バスマスタリクエスト信号B_REQは“High”レベルのままである。従って、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにせず、アービタリクエスト信号A_REQをリセット状態にしない。
【0102】
また、判定ロジック1112は、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが入力されたことにより、リクエストアサートタイミング信号を“High”レベルにする。これは、タイミングt12でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応するものである。
【0103】
これにより、次のクロックサイクルであるタイミングt14において、フリップフロップ1111が出力するアービタリクエスト信号A_REQの“High”レベルが維持され、アービタ1に、連続したDRAMへのアクセス要求が出力される。
【0104】
また、タイミングt14では、リクエストアサートタイミング信号に応じて、フリップフロップ112によるアービタアドレスA_ADRの出力が、タイミングt12でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応したアービタアドレスA_ADR(ADR4)に切り替わる。これにより、タイミングt12において、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR4)とのタイミングが整えられて、アービタ1に中継される。
【0105】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt12で出力したDRAMへのアクセス要求が、事前に許可される。
【0106】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt15において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0107】
また、タイミングt15において、フリップフロップ120は、リクエストアサートタイミング信号の“Low”レベルに応じて、バスマスタアクノリッジ信号B_AENを、“Low”レベルにする。
【0108】
その後、タイミングt14で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt16において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。これにより、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにする。
【0109】
その後、次のクロックサイクルであるタイミングt17において、フリップフロップ1111は、アービタリクエスト信号A_REQを、“Low”レベルにする。これにより、アービタ1は、アービタアクノリッジ信号A_AENを“Low”レベルにする。
【0110】
このようにして、DRAMへのアクセス要求が許可されていない状態でも、リードバスマスタ2は、連続してDRAMへのアクセス要求を発行し、DRAMへのアクセスを行うことができる。なお、フリップフロップ1111がアービタリクエスト信号A_REQを、“Low”レベルにした後に、リードバスマスタ2から再度DRAMへのアクセス要求が発行された場合には、図4のタイミングt17以降に示したように、入力された“High”レベルのバスマスタリクエスト信号B_REQが、DRAMへの最初のアクセス要求であるもとして動作する。図4のタイミングt17以降に示した制御信号転送モジュール10の動作は、図4のタイミングt1〜タイミングt17において説明した動作と同様であるため、タイミングの詳細な説明は省略する。
【0111】
上記に述べたとおり、制御信号転送モジュール10では、リードバスマスタ2からアービタ1に発行される(出力される)バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRのタイミングを整えて、アービタ1に出力する。また、制御信号転送モジュール10では、アービタ1からリードバスマスタ2に返される(出力される)アービタアクノリッジ信号A_AENよりも前のタイミングで、リードバスマスタ2にDRAMへのアクセス要求を許可する。これらにより、制御信号転送モジュール10では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、制御信号転送モジュール10とアービタ1、およびバスマスタと制御信号転送モジュール10との間では、予め定められているプロトコルをそれぞれ守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、制御信号転送モジュール10は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0112】
次に、リードデータ転送モジュール20について説明する。図5は、本実施形態の信号転送回路において、DRAMからデータを読み出すバスマスタに対応したリードデータ転送モジュール20の概略構成を示したブロック図である。図5では、アービタ1とリードバスマスタ2との間に挿入されるリードデータ転送モジュール20を示している。
【0113】
リードデータ転送モジュール20は、タイミング調整部210として、データイネーブルタイミング調整部211と、リードデータタイミング調整部212と、を備えている。
【0114】
リードデータ転送モジュール20は、アービタ1から入力されたデータイネーブル(DEN)信号を、データイネーブルタイミング調整部211でタイミングを整えて、リードバスマスタ2に出力する。データイネーブルタイミング調整部211は、例えば、データイネーブル(DEN)信号を一旦ラッチし、ラッチしたデータイネーブル(DEN)信号をリードバスマスタ2に出力する。また、リードデータ転送モジュール20は、データイネーブル(DEN)信号と同時にアービタ1から入力されたリードデータ(RDATA)を、リードデータタイミング調整部212でタイミングを整えて、リードバスマスタ2に出力する。リードデータタイミング調整部212は、例えば、リードデータ(RDATA)を一旦ラッチし、ラッチしたリードデータ(RDATA)をリードバスマスタ2に出力する。
【0115】
このように、アービタ1から入力されたデータイネーブル(DEN)信号およびリードデータ(RDATA)は、リードデータ転送モジュール20によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。これにより、リードデータ転送モジュール20をアービタ1とリードバスマスタ2との間に挿入することによって、リードデータ転送モジュール20とアービタ1、およびリードバスマスタ2とリードデータ転送モジュール20との間では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0116】
以下の説明においては、アービタ1から入力されるデータイネーブル(DEN)信号およびリードデータ(RDATA)をそれぞれ、アービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAという。また、リードバスマスタ2に出力するデータイネーブル(DEN)信号およびリードデータ(RDATA)をそれぞれ、リードバスマスタデータイネーブル信号B_RDENおよびバスマスタリードデータB_RDATAという。
【0117】
リードデータ転送モジュール20では、データイネーブルタイミング調整部211およびリードデータタイミング調整部212は、それぞれフリップフロップで構成されている。以下の説明においては、データイネーブルタイミング調整部211をフリップフロップ211ともいい、リードデータタイミング調整部212をフリップフロップ212ともいう。
【0118】
フリップフロップ211(データイネーブルタイミング調整部211)は、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENをラッチし、ラッチしたアービタデータリードイネーブル信号A_RDENを、リードバスマスタデータイネーブル信号B_RDENとしてリードバスマスタ2に出力する。
【0119】
フリップフロップ212(リードデータタイミング調整部212)は、アービタ1から入力されたアービタリードデータA_RDATAをラッチし、ラッチしたアービタリードデータA_RDATAを、バスマスタリードデータB_RDATAとしてリードバスマスタ2に出力する。なお、リードデータ転送モジュール20には、アービタリードデータA_RDATAのビット数分のフリップフロップ212が備えられている。
【0120】
なお、図5に示したリードデータ転送モジュール20の動作は、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAを、フリップフロップ211およびフリップフロップ212のそれぞれで一旦ラッチして、リードバスマスタデータイネーブル信号B_RDENおよびバスマスタリードデータB_RDATAとして出力するのみであるため、タイミングの詳細な説明は省略する。
【0121】
上記に述べたとおり、リードデータ転送モジュール20では、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAのタイミングを整えて、リードバスマスタ2に出力する。これにより、リードデータ転送モジュール20では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、リードデータ転送モジュール20とアービタ1、およびリードバスマスタ2とリードデータ転送モジュール20との間では、予め定められているプロトコルを守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0122】
次に、ライトデータ転送モジュール30について説明する。図6は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30の概略構成を示したブロック図である。図6では、アービタ1とライトバスマスタ3との間に挿入されるライトデータ転送モジュール30を示している。なお、ライトデータ転送モジュール30では、制御信号転送モジュール10から出力されるバスマスタアクノリッジ信号B_AENも用いて動作するため、ライトデータ転送モジュール30に係わる制御信号転送モジュール10の一部(アクノリッジタイミング調整部120)も併せて示している。
【0123】
ライトデータ転送モジュール30は、タイミング調整部310としてのアクノリッジ計測部311およびデータイネーブル調整部312と、タイミング調整部320としてのライトデータバッファ321およびライトデータバッファ322と、を備えている。
【0124】
ライトデータ転送モジュール30は、制御信号転送モジュール10からバスマスタアクノリッジ信号B_AENが出力された次のクロックサイクルで、データイネーブル調整部312が生成したデータイネーブル(DEN)信号を、ライトバスマスタ3に出力する。これにより、ライトバスマスタ3には、アービタ1がデータイネーブル(DEN)信号を出力するより前のタイミング、すなわち、先行したタイミングで、データイネーブル(DEN)信号が入力される。なお、ライトデータ転送モジュール30から先行してライトバスマスタ3に出力するデータイネーブル(DEN)信号は、ライトデータ転送モジュール30内にラッチすることができるライトデータ(WDATA)数だけ出力され、その後、アービタ1からデータイネーブル(DEN)信号が出力されたときに、残りのデータイネーブル(DEN)信号が、ライトバスマスタ3に出力される。
【0125】
以下の説明においては、アービタ1から入力されるデータイネーブル(DEN)信号をアービタデータライトイネーブル信号A_WDENといい、ライトバスマスタ3に出力するデータイネーブル(DEN)信号をライトバスマスタデータイネーブル信号B_WDENという。
【0126】
また、ライトデータ転送モジュール30は、先行して出力したライトバスマスタデータイネーブル信号B_WDENに応じてライトバスマスタ3から入力されるライトデータ(WDATA)を、ライトデータバッファ321またはライトデータバッファ322に一旦ラッチし、アービタデータライトイネーブル信号A_WDENに合わせて、ラッチしたライトデータ(WDATA)を、アービタ1に出力する。また、アービタデータライトイネーブル信号A_WDENが入力されてからのタイミングで出力した、残りのライトバスマスタデータイネーブル信号B_WDENに応じてライトバスマスタ3から入力されるライトデータ(WDATA)も、ライトデータバッファ321またはライトデータバッファ322に一旦ラッチしてから、アービタデータライトイネーブル信号A_WDENに合わせて、アービタ1に出力される。これにより、ライトバスマスタ3から入力されたライトデータ(WDATA)は、ライトデータ転送モジュール30によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。
【0127】
以下の説明においては、ライトバスマスタ3から入力されるライトデータ(WDATA)をバスマスタライトデータB_WDATAといい、アービタ1に出力するライトデータ(WDATA)をアービタライトデータA_WDATAという。
【0128】
このような動作によって、ライトデータ転送モジュール30は、アービタ1からライトバスマスタ3に発行される(出力される)データイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力されるライトデータ(WDATA)とを中継する。これにより、ライトデータ転送モジュール30をアービタ1とライトバスマスタ3との間に挿入することによって、ライトデータ転送モジュール30とアービタ1、およびライトバスマスタ3とライトデータ転送モジュール30との間では、アービタ1とライトバスマスタ3との間で予め定められているプロトコルを守った状態とした上で、アービタ1とライトバスマスタ3との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0129】
次に、ライトデータ転送モジュール30のより詳細な構成について説明する。図7は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30の構成の一例を示した回路図である。図7では、図6と同様に、アービタ1とライトバスマスタ3との間に挿入されるライトデータ転送モジュール30と、ライトデータ転送モジュール30に係わる制御信号転送モジュール10の一部の回路(アクノリッジタイミング調整部120:フリップフロップ120)とを併せて示している。なお、以下の説明においては、ライトデータ転送モジュール30が、4バーストのライトデータ(WDATA)に対応している場合を説明する。
【0130】
ライトデータ転送モジュール30では、タイミング調整部310が、アクノリッジ計測部311と、データイネーブル調整部312と、カウンタ313と、デコーダ314と、ANDロジック315と、カウンタ316と、デコーダ317と、ANDロジック318と、で構成されている。また、タイミング調整部320が、ライトデータバッファ321と、ライトデータバッファ322と、バッファ制御デコーダ323と、セレクタ324と、で構成されている。なお、アクノリッジ計測部311およびデータイネーブル調整部312は、それぞれカウンタとデコーダで構成されている。以下の説明においては、アクノリッジ計測部311を、カウンタ311ともいい、データイネーブル調整部312を、デコーダ312ともいう。また、ライトデータバッファ321およびライトデータバッファ322は、それぞれフリップフロップで構成されている。以下の説明においては、ライトデータバッファ321をフリップフロップ321ともいい、ライトデータバッファ322をフリップフロップ322ともいう。
【0131】
カウンタ313は、イネーブル(EN)端子に入力された、ライトデータ転送モジュール30が出力するライトバスマスタデータイネーブル信号B_WDENを、クロックサイクル毎にカウントし、カウントした結果のカウント値をデコーダ314に出力する。より具体的には、ライトデータ転送モジュール30は、4バーストのライトデータ(WDATA)に対応しているため、カウンタ313は、“0”〜“3”のカウント値をデコーダ314に出力する。
【0132】
デコーダ314は、カウンタ313から入力されたライトバスマスタデータイネーブル信号B_WDENのカウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック315に出力する。より具体的には、デコーダ314は、カウント値が“3”であることを表すデコード信号(例えば、“High”レベル)を、ANDロジック315に出力する。これは、ライトデータ転送モジュール30が、4バーストのライトデータ(WDATA)に対応しているためであり、デコーダ314は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルをデコードする。
【0133】
ANDロジック315は、ライトバスマスタデータイネーブル信号B_WDENと、デコーダ314から入力されたデコード信号とを論理積した結果である第4データ信号をカウンタ311のカウントダウン(DOWN)端子に出力する。ここで、ANDロジック315から出力される第4データ信号は、ライトバスマスタデータイネーブル信号B_WDENが出力されているときの4つ目のクロックサイクル、すなわち、4バーストのバスマスタライトデータB_WDATAの内、4つ目のバスマスタライトデータB_WDATAが、ライトバスマスタ3から入力されていることを表す信号である。
【0134】
カウンタ311(アクノリッジ計測部311)は、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力しているが、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力していないアクセス要求の数をカウントし、カウントした結果であるアクノリッジカウント値をデコーダ312に出力する。すなわち、カウンタ311は、ライトバスマスタ3によるDRAMへのアクセス要求に応じた動作が完了していないアクセス要求の数をカウントし、デコーダ312に出力する。
【0135】
より具体的には、カウンタ311は、カウントアップ(UP)端子に入力された、制御信号転送モジュール10が出力するバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップし、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンする。すなわち、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENを出力したときにアクノリッジカウント値をカウントアップし、4つ目のバスマスタライトデータB_WDATAがライトデータ転送モジュール30に入力されたときにアクノリッジカウント値をカウントダウンする。このときのアクノリッジカウント値をが、DRAMへのアクセスが完了していないアクセス要求の数となる。
【0136】
なお、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENがカウントアップする状態であり、カウントダウン(DOWN)端子に入力された第4データ信号がカウントダウンする状態である場合には、カウンタ311は、現在のアクノリッジカウント値を保持する。
【0137】
デコーダ312(データイネーブル調整部312)は、カウンタ311から入力されたアクノリッジカウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック318に出力する。より具体的には、デコーダ314は、アクノリッジカウント値が“0”以外であることを表すデコード信号(例えば、“High”レベル)を、ANDロジック318に出力する。デコード信号が“High”レベルであるということは、すでにバスマスタアクノリッジ信号B_AENが制御信号転送モジュール10から出力されているアクセス要求があることを表している。これにより、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っているか否かを判断することができる。
【0138】
カウンタ316は、タイミング調整部320にラッチされているバスマスタライトデータB_WDATAの数をカウントし、カウントした結果であるラッチ領域カウント値をデコーダ317に出力する。ここで、カウンタ316から出力されるラッチ領域カウント値は、タイミング調整部320のラッチ領域にラッチすることができるバスマスタライトデータB_WDATAの数、すなわち、タイミング調整部320の空き領域の数を表すカウント値である。また、カウンタ316が出力するラッチ領域カウント値は、バッファ制御デコーダ323のカウント(CNT)端子にも出力される。
【0139】
より具体的には、カウンタ316は、カウントアップ(UP)端子に入力されたアービタデータライトイネーブル信号A_WDENに応じて、クロックサイクル毎にラッチ領域カウント値をカウントアップし、カウントダウン(DOWN)端子に入力されたライトバスマスタデータイネーブル信号B_WDENに応じて、クロックサイクル毎にラッチ領域カウント値をカウントダウンする。すなわち、カウンタ316は、ライトバスマスタデータイネーブル信号B_WDENに応じてバスマスタライトデータB_WDATAが入力され、タイミング調整部320のラッチ領域にラッチされると、タイミング調整部320の空き領域の数をカウントダウンする。また、アービタデータライトイネーブル信号A_WDENに応じてタイミング調整部320のラッチ領域にラッチされたバスマスタライトデータB_WDATAが、アービタライトデータA_WDATAとして出力されると、タイミング調整部320の空き領域の数をカウントアップする。
【0140】
なお、ライトデータ転送モジュール30では、タイミング調整部320に2つのラッチ領域(ライトデータバッファ321およびライトデータバッファ322)を備えている。このため、タイミング調整部320のラッチ領域にバスマスタライトデータB_WDATAがラッチされていないときの値、すなわち、カウンタ316が出力するラッチ領域カウント値の初期値は“2”である。そして、カウンタ316は、タイミング調整部320の空き領域の数に応じて、“0”(空き領域なし),“1”(空き領域1つあり),“2”(空き領域2つあり)のカウント値を、ラッチ領域カウント値としてデコーダ317およびバッファ制御デコーダ323に出力する。
【0141】
なお、カウントアップ(UP)端子に入力されたアービタデータライトイネーブル信号A_WDENがカウントアップする状態であり、カウントダウン(DOWN)端子に入力されたライトバスマスタデータイネーブル信号B_WDENがカウントダウンする状態である場合には、カウンタ316は、現在のラッチ領域カウント値を保持する。
【0142】
デコーダ317は、カウンタ316から入力されたラッチ領域カウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック318に出力する。より具体的には、デコーダ317は、ラッチ領域カウント値が“0”(空き領域なし)以外、すなわち、タイミング調整部320に空き領域があることを表すデコード信号(例えば、“High”レベル)を、ANDロジック318に出力する。デコード信号が“High”レベルであるということは、タイミング調整部320に空き領域があることを表している。
【0143】
ANDロジック318は、デコーダ312から出力されたデコード信号と、デコーダ317から出力されたデコード信号とを論理積した結果を、ライトバスマスタデータイネーブル信号B_WDENとしてライトバスマスタ3に出力する。ANDロジック318から出力されるライトバスマスタデータイネーブル信号B_WDENは、ライトバスマスタ3にバスマスタアクノリッジ信号B_AENが出力されており、タイミング調整部320に空き領域があることを表している。また、上述したように、ANDロジック318が出力したライトバスマスタデータイネーブル信号B_WDENは、カウンタ313のイネーブル(EN)端子、ANDロジック315、およびカウンタ316のカウントダウン(DOWN)端子にも出力される。また、ライトバスマスタデータイネーブル信号B_WDENは、バッファ制御デコーダ323のライトイネーブル(WE)端子にも出力される。
【0144】
フリップフロップ321(ライトデータバッファ321)は、イネーブル(EN)端子に入力された、バッファ制御デコーダ323からのラッチイネーブル信号EN1に応じて、データ(D)端子に入力された、ライトバスマスタ3からのバスマスタライトデータB_WDATAを一旦ラッチする。フリップフロップ321は、ラッチしたバスマスタライトデータB_WDATA(以下、「ラッチデータL_DATA」という)を、セレクタ324に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のフリップフロップ321が備えられている。
【0145】
セレクタ324は、バッファ制御デコーダ323から入力されたセレクト信号SELに応じて、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA、またはフリップフロップ321から出力されたラッチデータL_DATAのいずれかのデータ(以下、「セレクトデータS_DATA」という)を、フリップフロップ322に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のセレクタ324が備えられている。
【0146】
フリップフロップ322(ライトデータバッファ322)は、イネーブル(EN)端子に入力された、バッファ制御デコーダ323からのラッチイネーブル信号EN2に応じて、データ(D)端子に入力された、セレクタ324からのセレクトデータS_DATAを一旦ラッチする。フリップフロップ322は、ラッチしたセレクトデータS_DATAを、アービタライトデータA_WDATAとして、アービタ1に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のフリップフロップ322が備えられている。
【0147】
タイミング調整部320では、フリップフロップ321と、セレクタ324と、フリップフロップ322との構成によって、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAを順次ラッチして出力する2段のFIFO(First In,First Out)メモリの機能を実現している。これにより、ライトバスマスタ3から4バーストで入力されるバスマスタライトデータB_WDATAの内、2つ分のバスマスタライトデータB_WDATAを、保持することができる。以下の説明においては、フリップフロップ321と、セレクタ324と、フリップフロップ322とを併せて、FIFOメモリともいう。
【0148】
アービタライトデータA_WDATAは、FIFOメモリの常に同じラッチ領域、すなわち、フリップフロップ322から出力される。これは、アービタライトデータA_WDATAが出力されるタイミングを、クロックサイクルのタイミングに整えるためである。ただし、バスマスタライトデータB_WDATAを入力するFIFOメモリのラッチ領域は、常に同じラッチ領域ではなく、FIFOメモリ内の空き領域の状態や、アービタライトデータA_WDATAを出力するタイミングに応じて変更される。すなわち、バスマスタライトデータB_WDATAをラッチする際には、フリップフロップ321またはフリップフロップ322のいずれか一方が選択され、選択されたフリップフロップにバスマスタライトデータB_WDATAをラッチする構成となっている。バスマスタライトデータB_WDATAをFIFOメモリにラッチする際の制御は、バッファ制御デコーダ323によって行われる。
【0149】
なお、FIFOメモリの構成は、上述した構成に限定されるものではない。例えば、アービタライトデータA_WDATAを出力するラッチ領域を選択するセレクタの遅延時間が少なく、アービタライトデータA_WDATAを出力するタイミングを、クロックサイクルのタイミングに整えることができる場合には、バスマスタライトデータB_WDATAを交互にラッチし、アービタライトデータA_WDATAを出力する際に、ラッチ領域を選択する構成としたFIFOメモリであってもよい。
【0150】
バッファ制御デコーダ323は、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAを、タイミング調整部320に備えたFIFOメモリにラッチする際のラッチ領域の選択制御と、FIFOメモリにラッチされたバスマスタライトデータB_WDATAを、アービタライトデータA_WDATAとしてアービタ1に出力する際の出力制御とを行う。より具体的には、バッファ制御デコーダ323は、カウンタ316からカウント(CNT)端子に入力されたラッチ領域カウント値と、ANDロジック318からライトイネーブル(WE)端子に入力されたライトバスマスタデータイネーブル信号B_WDENと、アービタ1からリードイネーブル(RE)端子に入力されたアービタデータライトイネーブル信号A_WDENとに基づいて、FIFOメモリを制御する。
【0151】
バッファ制御デコーダ323は、FIFOメモリを制御するためのラッチイネーブル信号EN1をフリップフロップ321のイネーブル(EN)端子に、ラッチイネーブル信号EN2をフリップフロップ322のイネーブル(EN)端子に、セレクト信号SELをセレクタ324に、それぞれ出力する。
【0152】
バッファ制御デコーダ323による、FIFOメモリの制御は、図8に示した真理値表に基づいて行われる。図8は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30が、DRAMに書き込むデータをラッチする際の制御方法を説明する真理値表である。なお、図8に示した真理値表において、「×」で表した状態は、ライトデータ転送モジュール30の論理上発生しない状態を示している。
【0153】
図8に示したように、バッファ制御デコーダ323は、カウント(CNT)端子と、ライトイネーブル(WE)端子と、リードイネーブル(RE)端子の状態に応じて、FIFOメモリの制御を行う。なお、図8に示した真理値表においては、カウント(CNT)の数値が、ラッチ領域カウント値、すなわち、FIFOメモリの空き領域の数を表している。また、ライトイネーブル(WE)の“1”が、ライトバスマスタデータイネーブル信号B_WDENが“High”レベル、すなわち、バスマスタライトデータB_WDATAが入力される状態を表している。また、リードイネーブル(RE)の“1”が、アービタデータライトイネーブル信号A_WDENが“High”レベル、すなわち、アービタライトデータA_WDATAを出力する状態を表している。
【0154】
また、図8に示した真理値表においては、イネーブル(EN1)の“1”が、フリップフロップ321に、バスマスタライトデータB_WDATAを一旦ラッチさせる状態のラッチイネーブル信号EN1(例えば、“High”レベル)を出力することを表している。また、イネーブル(EN2)の“1”が、フリップフロップ322に、セレクトデータS_DATAを一旦ラッチさせる状態のラッチイネーブル信号EN2(例えば、“High”レベル)を出力することを表している。また、セレクト(SEL)の“0”が、フリップフロップ322に出力するセレクトデータS_DATAとしてバスマスタライトデータB_WDATAを選択するセレクト信号SEL(例えば、“Low”レベル)を出力し、セレクト(SEL)の“1”が、セレクトデータS_DATAとしてラッチデータL_DATAを選択するセレクト信号SEL(例えば、“High”レベル)を出力することを表している。
【0155】
図8に示したように、例えば、カウント(CNT)=“1”,ライトイネーブル(WE)=“1”,リードイネーブル(RE)=“0”のときには、ラッチイネーブル信号EN1=“1”,ラッチイネーブル信号EN2=“0”,セレクト信号SEL=“0”として、フリップフロップ321に、バスマスタライトデータB_WDATAを一旦ラッチさせる。
【0156】
また、例えば、カウント(CNT)=“2”,ライトイネーブル(WE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“0”として、フリップフロップ322に、バスマスタライトデータB_WDATAを一旦ラッチさせる。そして、フリップフロップ322にラッチされたバスマスタライトデータB_WDATAは、アービタライトデータA_WDATAとしてのアービタ1に出力される。
【0157】
また、例えば、カウント(CNT)=“0”,リードイネーブル(RE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“1”として、フリップフロップ322に、ラッチデータL_DATAを一旦ラッチさせる。これにより、フリップフロップ321が前回ラッチしたバスマスタライトデータB_WDATAが、フリップフロップ322に転送される。そして、フリップフロップ322に転送されたラッチデータL_DATAは、アービタライトデータA_WDATAとしてのアービタ1に出力される。
【0158】
また、例えば、カウント(CNT)=“1”,ライトイネーブル(WE)=“1”,リードイネーブル(RE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“0”として、フリップフロップ322に、バスマスタライトデータB_WDATAを一旦ラッチさせると共に、アービタライトデータA_WDATAとしてのアービタ1に出力させる。
【0159】
ここで、図7に示したライトデータ転送モジュール30の動作について説明する。図9は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30のタイミングの一例を示したタイミングチャートである。なお、以下の説明においては、バスマスタアクノリッジ信号B_AENが“High”レベルで、DRAMへのアクセス要求を許可する状態とし、ライトバスマスタデータイネーブル信号B_WDENおよびアービタデータライトイネーブル信号A_WDENが“High”レベルで、DRAMへのデータの書き込みが有効である状態として説明を行う。
【0160】
まず、ライトデータ転送モジュール30の初期の状態で、カウンタ311のアクノリッジカウント値は“0”である。また、カウンタ316のラッチ領域カウント値は“2”(空き領域2つあり)である。
【0161】
その後、タイミングt1において、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力すると、次のクロックサイクルであるタイミングt2において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“1”にする。これにより、デコーダ312のデコード信号が“High”レベルになる。このとき、ラッチ領域カウント値は“2”(空き領域2つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3に、事前にライトバスマスタデータイネーブル信号B_WDENが出力される。
【0162】
その後、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルになったことにより、次のクロックサイクルであるタイミングt3において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、アービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0163】
また、タイミングt3において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“1”(空き領域1つあり)にする。
【0164】
その後、次のクロックサイクルであるタイミングt4において、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。
【0165】
また、タイミングt4において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分のバスマスタライトデータB_WDATAが保持される。
【0166】
その後、タイミングt5において、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力すると、次のクロックサイクルであるタイミングt6において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“2”にする。
【0167】
その後、タイミングt7において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt8において、バッファ制御デコーダ323は、フリップフロップ321にラッチしたバスマスタライトデータB_WDATA(D1)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、アービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0168】
また、タイミングt8において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3に、残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0169】
その後、次のクロックサイクルであるタイミングt9において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、アービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0170】
また、タイミングt9においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0171】
その後、次のクロックサイクルであるタイミングt10において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、アービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0172】
また、タイミングt10においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0173】
なお、タイミングt10は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。図9に示したタイミングチャートの一例においては、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルを、ライトバスマスタデータイネーブル信号B_WDEN内に、「★」で示している。
【0174】
このため、カウンタ313は、タイミングt10において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“1”にする。これにより、ライトバスマスタ3による1回目のDRAMへのアクセスが終了する。
【0175】
しかし、タイミングt10においては、デコーダ312のデコード信号は“High”レベルのままである。すなわち、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っていることを表している。また、ラッチ領域カウント値は“1”(空き領域1つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318からは、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続してライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による2回目のDRAMアクセスに応じたライトバスマスタデータイネーブル信号B_WDENが、連続して出力される。
【0176】
そして、タイミングt10において、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続されたことにより、次のクロックサイクルであるタイミングt11において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0177】
また、タイミングt11においては、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが、継続して入力されている。このため、タイミングt11においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0178】
また、タイミングt11においては、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力している、このため、次のクロックサイクルであるタイミングt12において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“2”にする。
【0179】
また、タイミングt12において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0180】
また、タイミングt12においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0181】
その後、次のクロックサイクルであるタイミングt13において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0182】
また、タイミングt13においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0183】
その後、次のクロックサイクルであるタイミングt14において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0184】
また、タイミングt14においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0185】
なお、タイミングt14は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。このため、カウンタ313は、タイミングt14において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“1”にする。これにより、ライトバスマスタ3による2回目のDRAMへのアクセスが終了する。
【0186】
しかし、タイミングt14においては、デコーダ312のデコード信号は“High”レベルのままであり、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っている。また、ラッチ領域カウント値は“1”(空き領域1つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318からは、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続してライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じたライトバスマスタデータイネーブル信号B_WDENが、連続して出力される。
【0187】
そして、タイミングt14において、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続されたことにより、次のクロックサイクルであるタイミングt15において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、3回目のDRAMアクセスのアービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0188】
また、タイミングt15においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0189】
そして、タイミングt15において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0190】
その後、次のクロックサイクルであるタイミングt16においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。
【0191】
また、タイミングt16において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D0およびD1)のバスマスタライトデータB_WDATAが保持される。
【0192】
そして、タイミングt16において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt17において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0193】
また、タイミングt17において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じた残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0194】
そして、タイミングt17において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0195】
その後、次のクロックサイクルであるタイミングt18においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。
【0196】
また、タイミングt18において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D1およびD2)のバスマスタライトデータB_WDATAが保持される。
【0197】
そして、タイミングt18において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt19において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0198】
また、タイミングt19において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じた残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0199】
そして、タイミングt19において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0200】
その後、次のクロックサイクルであるタイミングt20においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。
【0201】
また、タイミングt20において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D2およびD3)のバスマスタライトデータB_WDATAが保持される。
【0202】
なお、タイミングt20は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。このため、カウンタ313は、タイミングt20において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“0”にする。これにより、ライトバスマスタ3による3回目のDRAMへのアクセスが終了する。
【0203】
また、タイミングt20においては、デコーダ312のデコード信号が“Low”レベルになる。すなわち、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っていない。このため、再び制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力するまでは、ラッチ領域カウント値の値に係わらず、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENは、“Low”レベルになる。
【0204】
そして、タイミングt20において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt21において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0205】
また、タイミングt21において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。
【0206】
そして、タイミングt21において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。その後、アービタ1は、タイミングt22において、“High”レベルのアービタデータライトイネーブル信号A_WDENを出力し、フリップフロップ322から出力されている3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D3)をDRAMに書き込む。その後、タイミングt23において、アービタデータライトイネーブル信号A_WDENが“Low”レベルにし、アービタ1における3回目のDRAMへのアクセスが終了する。
【0207】
このようにして、ライトバスマスタ3によるDRAMへのアクセスが終了する。なお、ライトバスマスタ3が再度DRAMにアクセスする際には、再び、DRAMへの最初のアクセス要求を発行する。これにより、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力する。これにより、ライトデータ転送モジュール30による、アービタ1からライトバスマスタ3に発行される(出力される)データイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力されるライトデータ(WDATA)との中継の動作が、再度行われる。
【0208】
このようにして、アービタ1からアービタデータライトイネーブル信号A_WDENが入力されていない状態でも、ライトデータ転送モジュール30が先行して、ライトバスマスタ3にライトバスマスタデータイネーブル信号B_WDENを出力することができる。これにより、ライトデータ転送モジュール30は、事前にバスマスタライトデータB_WDATAを保持し、アービタ1からアービタデータライトイネーブル信号A_WDENが入力されたあとすぐに、アービタライトデータA_WDATAを出力することができる。なお、ライトバスマスタ3から再度DRAMへのアクセス要求が行われ、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力した場合には、図9のタイミングt23以降に示したように、入力された“High”レベルのバスマスタアクノリッジ信号B_AENに応じて、ライトデータ転送モジュール30が再度動作する。図9のタイミングt23以降に示したライトデータ転送モジュール30の動作は、図9のタイミングt1〜タイミングt23において説明した動作と同様であるため、タイミングの詳細な説明は省略する。
【0209】
上記に述べたとおり、ライトデータ転送モジュール30では、アービタ1からライトバスマスタ3に出力されるアービタデータライトイネーブル信号A_WDENよりも前のタイミングで、ライトバスマスタ3にライトバスマスタデータイネーブル信号B_WDENを出力する。また、ライトデータ転送モジュール30では、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAのタイミングを整えて、アービタ1に出力する。これらにより、ライトデータ転送モジュール30では、アービタ1とライトバスマスタ3との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、ライトデータ転送モジュール30とアービタ1、およびライトバスマスタ3とライトデータ転送モジュール30との間では、予め定められているプロトコルをそれぞれ守った状態とした上で、アービタ1とライトバスマスタ3との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、ライトデータ転送モジュール30は、システムLSI内のアービタ1の配置位置とライトバスマスタ3の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0210】
上記に述べたとおり、本発明を実施するための形態によれば、信号転送回路を、バスマスタとアービタのとの間に挿入することによって、アービタとバスマスタとの間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。また、信号転送回路とアービタ、およびバスマスタと信号転送回路との間では、アービタとバスマスタとの間で予め定められているプロトコルをそれぞれ守った状態とした上で、信号転送回路とアービタとの間の信号のタイミング、およびバスマスタと信号転送回路との間の信号のタイミングを整え、例えば、フリップフロップを挿入したのと同様の状態にすることができる。これにより、バスマスタやアービタを変更することなく、信号転送回路とアービタとの間の信号、およびバスマスタと信号転送回路との間の信号のタイミングを、改善することができる。このことにより、システムLSIに内蔵するバスマスタの数を増やしたことなどによって、システムLSI内のアービタの配置位置とバスマスタの配置位置とが離れていることや、システムLSIの動作クロックを高速化したことなどによって、クロックサイクルが短くなってしまったことによる、信号の遅延時間の制約を緩和することができる。これにより、より広帯域のバスシステムを構築した、システムLSIを実現することができる。
【0211】
なお、信号転送回路をバスマスタとアービタのとの間に挿入する場合には、バスマスタとアービタのとの間の経路の適切な位置(例えば、中間の位置など)に、信号転送回路を配置することが望ましい。
【0212】
なお、本実施形態においては、アービタとバスマスタとの間に、1つの信号転送回路(制御信号転送モジュール10とリードデータ転送モジュール20との組、または制御信号転送モジュール10とライトデータ転送モジュール30との組)を挿入した場合について説明したが、アービタとバスマスタとの間に挿入する信号転送回路の数は、本発明を実施するための形態に限定されるものではない。例えば、1つの信号転送回路を挿入しても、依然としてアービタとバスマスタとの間の信号がタイミング的に厳しい場合には、複数の信号転送回路(制御信号転送モジュール10とリードデータ転送モジュール20との組、または制御信号転送モジュール10とライトデータ転送モジュール30との組)を数珠つなぎにして挿入することによって、信号のタイミングを改善することもできる。この場合には、例えば、バスマスタとアービタのとの間の経路が等間隔となるような位置に、それぞれの信号転送回路を配置することが望ましい。
【0213】
また、本実施形態においては、タイミング調整部320内のフリップフロップ321と、セレクタ324と、フリップフロップ322とによって、2段のFIFOメモリの機能を実現し、事前に2つ分のバスマスタライトデータB_WDATAを保持する構成について説明した。しかし、ライトバスマスタ3から出力されるバスマスタライトデータB_WDATAを保持する構成は、本発明を実施するための形態に限定されるものではない。例えば、4バーストのバスマスタライトデータB_WDATAを全て保持するメモリ領域をタイミング調整部320に備え、事前に全てのバスマスタライトデータB_WDATAを保持する構成とすることもできる。また、例えば、4バーストのバスマスタライトデータB_WDATAを全て保持するメモリ領域を、タイミング調整部320に2つ備え、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAの保持と、アービタ1へのアービタライトデータA_WDATAの出力とを、交互に着替える構成とすることもできる。
【0214】
また、本実施形態においては、リードバスマスタ2またはライトバスマスタ3と、アービタ1との間に、制御信号転送モジュール10とリードデータ転送モジュール20との組の信号転送回路、または制御信号転送モジュール10とライトデータ転送モジュール30との組の信号転送回路を挿入した場合について説明したが、信号転送回路における転送モジュールの構成は、本発明を実施するための形態に限定されるものではない。例えば、バスマスタが、DRAMからのデータの読み出しと、DRAMへのデータの書き込みとの両方を行う双方向バスマスタである場合には、制御信号転送モジュール10と、リードデータ転送モジュール20と、ライトデータ転送モジュール30とを1つの組とした信号転送回路を、双方向バスマスタとアービタとの間に挿入することによって、同様に、信号のタイミングを改善することができる。
【0215】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0216】
1・・・アービタ
2・・・リードバスマスタ(バスマスタ)
3・・・ライトバスマスタ(バスマスタ)
10・・・制御信号転送モジュール(信号転送回路,制御信号転送部)
110・・・タイミング調整部(アクセス要求タイミング調整部)
111・・・リクエストタイミング調整部(アクセス要求タイミング調整部)
1111・・・フリップフロップ(アクセス要求タイミング調整部)
1112・・・判定ロジック(アクセス要求タイミング調整部)
1113・・・判定ロジック(アクセス要求タイミング調整部)
112・・・アドレスタイミング調整部,フリップフロップ(アドレスタイミング調整部)
120・・・タイミング調整部,アクノリッジタイミング調整部,フリップフロップ(アクセス許可タイミング調整部)
20・・・リードデータ転送モジュール(信号転送回路,データ信号転送部)
210・・・タイミング調整部(リードデータ有効期間タイミング調整部,リードデータタイミング調整部)
211・・・データイネーブルタイミング調整部,フリップフロップ(リードデータ有効期間タイミング調整部)
212・・・リードデータタイミング調整部,フリップフロップ(リードデータタイミング調整部)
30・・・ライトデータ転送モジュール(信号転送回路,データ信号転送部)
310・・・タイミング調整部(ライトデータ有効期間タイミング調整部)
311・・・アクノリッジ計測部,カウンタ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
312・・・データイネーブル調整部,デコーダ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
313・・・カウンタ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
314・・・デコーダ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
315・・・ANDロジック(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
316・・・カウンタ(ライトデータ有効期間タイミング調整部、データ計測部)
317・・・デコーダ(ライトデータ有効期間タイミング調整部,データ計測部)
318・・・ANDロジック(ライトデータ有効期間タイミング調整部)
320・・・タイミング調整部(ライトデータタイミング調整部)
321・・・ライトデータバッファ(ライトデータタイミング調整部,データ保持部,第1のデータ保持部)
322・・・ライトデータバッファ(ライトデータタイミング調整部,データ保持部,第2のデータ保持部)
323・・・バッファ制御デコーダ,フリップフロップ(ライトデータタイミング調整部,データ保持制御部)
324・・・セレクタ,フリップフロップ(ライトデータタイミング調整部,データ保持部)
90・・・DRAM(メモリ)
91・・・アービタ
911・・・調停回路(アービタ)
92,93,94・・・バスマスタ
921,931・・・リクエスト生成回路(バスマスタ)
922,924,932,934・・・フリップフロップ(バスマスタ)
925,926・・・フリップフロップ
923・・・データ制御回路(バスマスタ)
933・・・データラッチ制御回路(バスマスタ)
【技術分野】
【0001】
本発明は、信号転送回路に関する。
【背景技術】
【0002】
静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの画像処理装置に搭載されるシステムLSIなど、多くのシステムLSIでは、接続された1つのDRAM(Dynamic Random Access Memory)を、内蔵する複数の処理ブロック(以下、「バスマスタ」という)が共有している。このようなシステムLSIにおいては、内蔵している複数のバスマスタのそれぞれが、DMA(Direct Memory Access)によってDRAMへのアクセスを行う。また、システムLSIには、内蔵している複数のバスマスタのそれぞれから発せられるDRAMへのアクセス要求を調停するアービタを備えている。アービタは、それぞれのバスマスタから発せられるDRAMへのアクセス要求を適切に調停しながら、実際のDRAMへのアクセスを制御している。
【0003】
このようなシステムLSIにおいては、アービタとバスマスタとの間で入出力される信号のタイミングに関する規則(プロトコル)が、予め定められている。このプロトコルには、バスマスタからアービタに出力されるDRAMへのアクセス要求や、アービタからバスマスタに出力されるDRAMへのアクセス許可などの、アービタとバスマスタとの間の制御信号のタイミングが定められている。また、このプロトコルには、バスマスタからアービタに出力されるDRAMに書き込むデータや、アービタからバスマスタに出力されるDRAMから読み出したデータなどの、アービタとバスマスタとの間のデータのタイミングが定められている。
【0004】
図10は、従来のシステムLSIにおけるアービタとバスマスタとの構成および制御タイミングの一例を説明する図である。図10(a)には、従来のシステムLSIにおけるアービタとバスマスタとの接続の一例を示している。従来のシステムLSIでは、例えば、図10(a)に示したように、アービタ91に複数のバスマスタ92〜94が接続され、1つのDRAM90を共有している。なお、図10(a)では、アービタ91とバスマスタ92との接続のみ複数の信号線を示しているが、アービタ91とバスマスタ93および94との接続も同様に複数の信号線で接続されている。
【0005】
図10(b)には、従来のシステムLSIにおけるプロトコルに従ったタイミングチャートの一例を示している。図10(b)には、バスマスタからDRAMにデータを書き込む際のそれぞれの信号のタイミングチャートを示している。なお、以下の説明においては、バスマスタ92がDRAM90にデータの書き込みを行う場合について説明する。
【0006】
図10(a)に示したバスマスタ92〜94のそれぞれからアービタ91に対してDRAM90へのアクセス要求を表すリクエスト(REQ)信号を発行(出力)すると、アービタ91は、予め定められた調停アルゴリズムに従って1つのバスマスタ(例えば、バスマスタ92)を選択する。そして、アービタ91は、選択したバスマスタ(例えば、バスマスタ92)にアクセス要求を受け付けた、すなわち、アクセス要求を許可することを表すアクノリッジ(AEN)信号を返す(出力する)。
【0007】
アクセス要求が受け付けられた、すなわち、アクノリッジ(AEN)信号が入力されたバスマスタ92は、次に連続してDRAM90へのアクセス要求を発行しない場合には、同じクロックサイクルでリクエスト(REQ)信号の発行を停止する。
【0008】
また、アービタ91は、DRAM90のデータアクセスが可能なタイミングで、アクセス要求を受け付けたバスマスタ92に、DRAM90へのデータの書き込みが有効な期間を表すデータイネーブル(DEN)信号を発行(出力)する。バスマスタ92は、データイネーブル(DEN)信号が入力されると、同じクロックサイクルから、DRAM90に書き込むデータであるライトデータ(WDATA)を順次出力する。図10(b)には、4バーストのライトデータ(WDATA)を順次出力する場合を示している。
【0009】
なお、バスマスタがDRAMからデータを読み出す場合には、図10(b)に示したライトデータ(WDATA)と同じタイミングでアービタから出力される、DRAMから読み出したデータであるリードデータ(RDATA)を取り込む。
【0010】
このように、アービタとバスマスタとの間で予め定められたプロトコルのタイミングでアクセスすることによって、それぞれのバスマスタは、アービタを介してDRAMにアクセス(DRAMへのデータの書き込み、またはDRAMからのデータの読み出し)を行う。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2006−39672号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかしながら、上述したようなプロトコルにおいては、アービタとバスマスタとの間で入出力される信号に、タイミング的に厳しい経路が存在する。図11は、従来のシステムLSIにおいて、タイミング的に厳しい経路の一例を説明する図である。図11(a)には、バスマスタからDRAMにデータを書き込む場合における、タイミング的に厳しい制御タイミングの一例を示し、図11(b)には、従来のシステムLSIにおけるアービタとバスマスタとの接続の一例において、タイミング的に厳しい信号線の経路を示している。なお、図11(b)においては、バスマスタ92を、DRAM90にデータを書き込むバスマスタとし、バスマスタ93を、DRAM90からデータを読み出すバスマスタとしている場合を示している。
【0013】
図11(a)に示したように、バスマスタが連続してDRAM90へのアクセス要求を発行する場合、バスマスタは、アービタ91から入力されたアクノリッジ(AEN)信号に応じたリクエスト(REQ)信号の発行停止および再発行を、1クロックサイクル内で行う(制御する)必要がある(図11(a)のタイミングA参照)。また、それぞれのバスマスタが、アービタ91から入力されたデータイネーブル(DEN)信号に応じたライトデータ(WDATA)を出力する場合や、データイネーブル(DEN)信号と共に入力されたリードデータ(RDATA)の取り込み行う場合にも、それぞれのデータのアクセスを1クロックサイクル内で行う必要がある(図11(a)のタイミングB参照)。
【0014】
このような場合には、図11(b)に太線で示したような経路が、タイミング的に厳しい経路となる。より具体的には、バスマスタ92が連続してDRAM90へのアクセス要求を発行する場合、アービタ91内の調停回路911から入力されたアクノリッジ(AEN)信号は、まず、リクエスト生成回路921(バスマスタ93においては、リクエスト生成回路931)に入力される。リクエスト生成回路921(またはリクエスト生成回路931)は、アクノリッジ(AEN)信号が入力されると、リクエスト(REQ)信号の発行を停止するか、連続してリクエスト(REQ)信号を発行するかを判断する。そして、リクエスト(REQ)信号の発行を停止すると判断した場合には、リクエスト生成回路921(またはリクエスト生成回路931)は、フリップフロップ922(バスマスタ93においては、フリップフロップ932)を初期化(リセット)する。また、連続してリクエスト(REQ)信号を発行すると判断した場合には、リクエスト生成回路921(またはリクエスト生成回路931)は、リクエスト(REQ)信号をフリップフロップ922(またはフリップフロップ932)に入力する。このリクエスト生成回路921(またはリクエスト生成回路931)による判断と、フリップフロップ922(またはフリップフロップ932)に対する制御は、アクノリッジ(AEN)信号が入力されたクロックサイクル中に行う、すなわち、次のクロックサイクルで判定した結果を反映させる必要があるため、タイミング的に厳しくなる。
【0015】
また、バスマスタ92がライトデータ(WDATA)を出力する場合、アービタ91内の調停回路911から入力されたデータイネーブル(DEN)信号は、まず、データ制御回路923に入力される。データ制御回路923は、入力されたデータイネーブル(DEN)信号に基づいて、最初にアービタ91に出力するライトデータ(WDATA)を、フリップフロップ924に出力する。データ制御回路923は、フリップフロップ924への最初のライトデータ(WDATA)の出力を、フリップフロップ924の次のクロックサイクルまでに行う必要がある。以降、データ制御回路923は、クロックサイクル毎に、次のライトデータ(WDATA)を順次フリップフロップ924に出力する。図11(a)には、4バーストのライトデータ(WDATA)を、2回連続で出力する場合を示している。
【0016】
また、バスマスタ93がリードデータ(RDATA)の取り込み行う場合、アービタ91内の調停回路911から入力されたデータイネーブル(DEN)信号は、まず、データラッチ制御回路933に入力される。データラッチ制御回路933は、入力されたデータイネーブル(DEN)信号に基づいて、最初にアービタ91から出力されたリードデータ(RDATA)を取り込むためのデータラッチ信号を、フリップフロップ934に出力する。データラッチ制御回路933は、フリップフロップ934への最初のデータラッチ信号の出力を、フリップフロップ934の次のクロックサイクルまでに行う必要がある。以降、データラッチ制御回路933は、クロックサイクル毎に、次のリードデータ(RDATA)を取り込むためのデータラッチ信号を、順次フリップフロップ934に出力する。
【0017】
このように、従来のシステムLSIでは、プロトコルの制約によって、タイミング的に厳しい経路が存在する。このタイミング的に厳しい経路のタイミングは、システムLSI内でアービタ91が配置される位置と、それぞれのバスマスタが配置される位置との距離が離れると、さらに厳しくなる。このため、従来のシステムLSIでは、システムLSIを高性能にするために、内蔵するバスマスタの数を増やすことが困難である。これは、システムLSIに内蔵するバスマスタの数を増やすことによって、システムLSI内でアービタ91が配置される位置と、それぞれのバスマスタが配置される位置との距離が、さらに離れてしまう可能性があるからである。
【0018】
アービタとバスマスタとの配置位置が離れると、アービタとバスマスタとの間で入出力される信号の配線長が長くなり、配線の遅延時間が増えてしまう。配線の遅延時間が増えると、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号が、それぞれのバスマスタに入力されるまでの時間が遅くなってしまう。これにより、バスマスタ内で次のクロックサイクルまでに行う必要がある制御やデータの出力に使用することができる時間が短くなり、次のクロックサイクルまでに終了しない、すなわち、プロトコルを守れない、という問題となってしまう。
【0019】
また、システムLSIに内蔵するバスマスタの数を増やすことにより、アービタ91内の調停回路911の回路規模も増大する。これにより、それぞれの信号が通過する回路の段数(論理段数)も増えてしまう。このため、アクノリッジ(AEN)信号やデータイネーブル(DEN)信号の調停回路911からの出力も遅くなってしまうことも考えられる。
【0020】
また、従来のシステムLSIでは、システムLSIを高性能にするために、動作クロックを高速化することも困難である。これは、システムLSIの動作クロックを高速化することによって1クロックサイクルの期間が短くなってしまうからである。
【0021】
1クロックサイクルの期間が短くなると、バスマスタ内で次のクロックサイクルまでに行う必要がある制御やデータの出力に使用することができる時間も短くなる。このため、リクエスト生成回路921(またはリクエスト生成回路931)、データ制御回路923、またはデータラッチ制御回路933の論理段数による信号の遅延時間を考慮すると、プロトコルを守るためには、ある程度以上に動作クロックを高速化することができない、という問題となってしまう。
【0022】
そこで、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号も、一旦フリップフロップでラッチすることによって、1クロックサイクル以内に行う必要がある制御やデータの出力に使用することができる時間を確保することが考えられる。
【0023】
図12は、従来のシステムLSIにおいて、アービタから出力される信号をラッチするバスマスタの構成および制御タイミングの一例を説明する図である。図12(a)には、従来のシステムLSIにおけるアービタと、アービタから出力される信号をラッチするバスマスタとの接続の一例を示している。なお、図12(a)には、図11(b)に示したバスマスタ92に、アービタ91内の調停回路911から出力されたアクノリッジ(AEN)信号をラッチするフリップフロップ925と、アービタ91内の調停回路911から出力されたデータイネーブル(DEN)信号をラッチするフリップフロップ926とを追加したバスマスタの構成を示している。
【0024】
図12(b)には、従来のシステムLSIにおけるプロトコルに従ったタイミングチャートの一例を示している。図12(b)には、図12(a)に示したバスマスタ92からDRAMにデータを書き込む際のそれぞれの信号のタイミングチャートを示している。なお、以下の説明においては、バスマスタ92がDRAM90にデータの書き込みを行う場合において、次に連続してDRAM90へのアクセス要求を発行しない場合について説明する。
【0025】
図12(a)に示したバスマスタ92からアービタ91に対してDRAM90へのアクセス要求を表すリクエスト(REQ)信号を発行(出力)すると、アービタ91は、予め定められた調停アルゴリズムに従ってバスマスタ92を選択し、アクノリッジ(AEN)信号を返す(出力する)。バスマスタ92は、入力されたアクノリッジ(AEN)信号を一旦フリップフロップ925でラッチし、ラッチしたアクノリッジ(AEN_d)信号を、リクエスト生成回路921に出力する。リクエスト生成回路921では、フリップフロップ925が一旦ラッチしたアクノリッジ(AEN_d)信号に基づいて、フリップフロップ922を初期化してリクエスト(REQ)信号の発行を停止する。
【0026】
これにより、図12(b)に示したように、アービタ91に入力されているリクエスト(REQ)信号が停止する。しかし、リクエスト(REQ)信号の発行停止は、フリップフロップ925が一旦ラッチしたアクノリッジ(AEN_d)信号に基づいて行われるため、図12(b)の期間Cだけ遅れたタイミングとなってしまう。このため、アービタ91は、期間Cの間にバスマスタ92から連続してDRAM90へのアクセス要求が発行されたものと誤認識してしまうことになる。
【0027】
また、アービタ91は、DRAM90のデータアクセスが可能なタイミングで、バスマスタ92に、データイネーブル(DEN)信号を発行(出力)する。バスマスタ92は、入力されたデータイネーブル(DEN)信号を一旦フリップフロップ926でラッチし、ラッチしたデータイネーブル(DEN_d)信号を、データ制御回路923に出力する。データ制御回路923では、フリップフロップ926が一旦ラッチしたデータイネーブル(DEN_d)信号に基づいて、最初にアービタ91に出力するライトデータ(WDATA)を、フリップフロップ924に出力する。なお、データ制御回路923は、フリップフロップ924への最初のライトデータ(WDATA)の出力を、フリップフロップ924の次のクロックサイクルまでに行う。
【0028】
これにより、図12(b)に示したように、バスマスタ92からライトデータ(WDATA)が、アービタ91に入力される。しかし、ライトデータ(WDATA)のアービタ91への出力は、フリップフロップ926が一旦ラッチしたデータイネーブル(DEN_d)信号に基づいて行われるため、図12(b)の期間Dのように、アービタ91が出力したデータイネーブル(DEN)信号に対して遅れたタイミングとなってしまう。このため、アービタ91は、期間Dの最初に、バスマスタ92から最初のライトデータ(WDATA)が入力される前のデータを、DRAM90に書き込んでしまうことになる。また、アービタ91は、期間Dの最後では、バスマスタ92から入力された最後(4つ目)のライトデータ(WDATA)を、DRAM90に書き込まないことになる。
【0029】
なお、バスマスタがDRAMからデータを読み出す場合には、図10(b)または図11(a)に示したライトデータ(WDATA)と同じタイミングで、リードデータ(RDATA)がバスマスタに入力される。このとき、フリップフロップが一旦ラッチしたデータイネーブル(DEN_d)信号に基づいたデータラッチ信号は、アービタ91が出力したデータイネーブル(DEN)信号に対して遅れたタイミングとなる。このため、リードデータ(RDATA)を取り込むバスマスタ(例えば、バスマスタ93)は、アービタ91から出力された最初のリードデータ(RDATA)を取り込むことができないことになる。また、バスマスタは、アービタ91から出力された最後のリードデータ(RDATA)よりも後のデータを取り込んでしまうことになる。
【0030】
このように、アービタから出力されたアクノリッジ(AEN)信号やデータイネーブル(DEN)信号を、単純に一旦フリップフロップでラッチすることによって、1クロックサイクル以内に行う必要がある制御やデータの出力に使用することができる時間を確保する方法では、アービタとバスマスタとの間で予め定められている、上述したようなプロトコルを守った状態でDRAMへのアクセスを行うことができない、という問題がある。
【0031】
本発明は、上記の課題認識に基づいてなされたものであり、プロトコルに従ってアクセスを行うアービタとバスマスタとの間の入出力信号のタイミングの制約を改善することができる信号転送回路を提供することを目的としている。
【課題を解決するための手段】
【0032】
上記の課題を解決するため、本発明の信号転送回路は、メモリへのアクセス要求を出力する複数のバスマスタのそれぞれと、前記メモリが接続され、前記バスマスタのそれぞれから入力された該メモリへの前記アクセス要求を調停し、許可した前記アクセス要求に応じて該メモリへのアクセスを制御するアービタとの間に挿入され、前記アービタと対応する前記バスマスタとの間のそれぞれの信号を中継する信号転送回路であって、当該信号転送回路は、対応する前記バスマスタから入力された前記メモリへのアクセス要求を前記アービタに中継する際に、該前記バスマスタから入力される、該アクセス要求におけるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を、前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求を許可することを表すアクセス許可入力信号に先行して、該アクセス要求を許可するアクセス許可出力信号を、該バスマスタに出力する制御信号転送部と、対応する前記バスマスタから入力された前記メモリへのアクセス要求における複数のデータを該バスマスタまたは前記アービタに中継する際に、前記アービタまたは該バスマスタから入力される、該アクセス要求におけるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、該バスマスタまたは前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求におけるそれぞれのデータが有効である期間を表すデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号を、該バスマスタに出力するデータ信号転送部と、を備える、ことを特徴とする。
【0033】
また、本発明の前記制御信号転送部は、前記アクセス要求入力信号と前記アクセス許可入力信号とに基づいて、前記アクセス要求出力信号を出力するか否かを決定し、該アクセス要求出力信号を出力すると決定したときに、該アクセス要求出力信号を出力することを表す出力タイミング信号を出力し、該出力タイミング信号を出力した次のタイミングから、該アクセス要求出力信号を出力するアクセス要求タイミング調整部と、前記出力タイミング信号が出力された次のタイミングから、前記メモリアドレス入力信号を、前記メモリアドレス出力信号として出力するアドレスタイミング調整部と、前記出力タイミング信号を、次のタイミングで、前記アクセス許可出力信号として出力するアクセス許可タイミング調整部と、を備え、前記アクセス要求タイミング調整部は、対応する前記バスマスタから、今回のアクセス要求に応じた前記アクセス要求入力信号が入力されたとき、該バスマスタによる前回のアクセス要求に応じた前記アクセス要求出力信号がすでに出力され、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されていないときには、今回のアクセス要求に応じた前記アクセス要求出力信号の出力を保留し、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されたときに、今回のアクセス要求に応じた前記アクセス要求出力信号を出力すると決定する、ことを特徴とする。
【0034】
また、本発明の信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリからデータを読み出すバスマスタである場合、前記データ信号転送部は、前記アービタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの前記データ出力信号として、前記バスマスタに出力するリードデータタイミング調整部と、前記アービタから入力された前記データ有効期間入力信号を、次のタイミングで、前記データ有効期間出力信号として、前記バスマスタに出力するリードデータ有効期間タイミング調整部と、を備える、ことを特徴とする。
【0035】
また、本発明の信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリにデータを書き込むバスマスタである場合、前記データ信号転送部は、前記アービタから入力される前記データ有効期間入力信号に先行して、前記データ有効期間出力信号を、前記バスマスタに出力するライトデータ有効期間タイミング調整部と、先行して出力された前記データ有効期間出力信号に応じて、前記バスマスタから入力される複数の前記データ入力信号の内、予め定めた数または全ての前記データ入力信号を保持する複数のデータ保持部を具備し、前記バスマスタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの該データ保持部に一旦保持し、前記アービタから前記データ有効期間入力信号が入力されたときに、保持したそれぞれの前記データ入力信号を、タイミングを整えたそれぞれの前記データ出力信号として、前記アービタに出力するライトデータタイミング調整部と、を備える、ことを特徴とする。
【0036】
また、本発明の前記ライトデータ有効期間タイミング調整部は、前記アクセス許可出力信号と前記データ有効期間出力信号とに基づいて、前記アクセス要求に応じた全ての前記データ出力信号の前記アービタへの出力が終了していない許可したアクセス要求の数を計測し、該計測した結果に基づいて生成した、対応する前記バスマスタによる前記アクセス要求をすでに許可しているが、全ての前記データ出力信号の前記アービタへの出力が終了していない許可済みのアクセス要求があるか否かを表す残許可アクセス信号を出力する許可アクセス計測部と、前記データ有効期間入力信号と前記データ有効期間出力信号とに基づいて、前記データ入力信号を保持することができる前記データ保持部の数を計測し、該計測した結果である保持可能データ数と、該計測した結果に基づいて生成した、前記データ入力信号を保持することができる前記データ保持部があるか否か表す保持可否信号と、を出力するデータ計測部と、を備え、前記残許可アクセス信号と前記保持可否信号とに基づいて生成した信号を、前記データ有効期間出力信号として出力し、前記ライトデータタイミング調整部は、前記保持可能データ数と、前記データ有効期間出力信号と、前記データ有効期間入力信号とに基づいて、前記バスマスタから入力されたそれぞれの前記データ入力信号を、複数の前記データ保持部の内、いずれのデータ保持部に保持させるかを制御するデータ保持制御部、を備える、ことを特徴とする。
【0037】
また、本発明の前記ライトデータタイミング調整部は、前記バスマスタから入力された2つの前記データ入力信号を、次のタイミングで、それぞれの保持する第1のデータ保持部と第2のデータ保持部とを具備し、前記第2のデータ保持部が保持した前記データ入力信号を、前記データ出力信号として前記アービタに出力し、前記データ保持制御部は、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が無効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第1のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が2つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数がないことを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記第1のデータ保持部に保持している前記データ入力信号を、前記第2のデータ保持部に保持させ、前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させるように、前記第1のデータ保持部と前記第2のデータ保持部とを制御する、ことを特徴とする。
【0038】
また、本発明の信号転送回路における、前記次のタイミングは、当該信号転送回路と、前記アービタと、前記バスマスタとが動作する共通のクロックサイクルのタイミングである、ことを特徴とする。
【発明の効果】
【0039】
本発明によれば、プロトコルに従ってアクセスを行うアービタとバスマスタとの間の入出力信号のタイミングの制約を改善することができるという効果が得られる。
【図面の簡単な説明】
【0040】
【図1】本発明の実施形態における信号転送回路の基本構成を示したブロック図である。
【図2】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールの概略構成を示したブロック図である。
【図3】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールの構成の一例を示した回路図である。
【図4】本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュールのタイミングの一例を示したタイミングチャートである。
【図5】本実施形態の信号転送回路において、DRAMからデータを読み出すバスマスタに対応したリードデータ転送モジュールの概略構成を示したブロック図である。
【図6】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールの概略構成を示したブロック図である。
【図7】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールの構成の一例を示した回路図である。
【図8】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールが、DRAMに書き込むデータをラッチする際の制御方法を説明する真理値表である。
【図9】本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュールのタイミングの一例を示したタイミングチャートである。
【図10】従来のシステムLSIにおけるアービタとバスマスタとの構成および制御タイミングの一例を説明する図である。
【図11】従来のシステムLSIにおいて、タイミング的に厳しい経路の一例を説明する図である。
【図12】従来のシステムLSIにおいて、アービタから出力される信号をラッチするバスマスタの構成および制御タイミングの一例を説明する図である。
【発明を実施するための形態】
【0041】
以下、本発明の実施形態について、図面を参照して説明する。図1は、本実施形態における信号転送回路の基本構成を示したブロック図である。図1は、本実施形態における信号転送回路の基本的な概念を表している。図1に示したように、本実施形態の信号転送回路は、アービタとバスマスタとの間に挿入される。信号転送回路は、アービタとバスマスタとの間で入出力される信号を転送(中継)する回路である。このとき、信号転送回路とアービタ、およびバスマスタと信号転送回路は、アービタとバスマスタとの間で予め定められたプロトコルと同じプロトコルに従ったタイミングでアクセスされる。
【0042】
図1(a)には、DRAMからデータを読み出すバスマスタ(以下、「リードバスマスタ」という)2と、アービタ1のとの間に挿入される信号転送回路を示している。リードバスマスタ2とアービタ1との間に挿入される信号転送回路は、制御信号転送モジュール10とリードデータ転送モジュール20とから構成される。また、図1(b)には、DRAMにデータを書き込むバスマスタ(以下、「ライトバスマスタ」という)3と、アービタ1のとの間に挿入される信号転送回路を示している。ライトバスマスタ3とアービタ1との間に挿入される信号転送回路は、制御信号転送モジュール10とライトデータ転送モジュール30とから構成される。以下の説明においては、リードバスマスタ2またはライトバスマスタ3のいずれか一方を表すときには、単に、「バスマスタ」ともいう。
【0043】
なお、リードバスマスタ2、ライトバスマスタ3、およびアービタ1の動作は、従来のシステムLSIに内蔵されたバスマスタおよびアービタと同様である。より具体的には、アービタ1は、図10および図11に示したアービタ91と同様に、それぞれのバスマスタから発せられる図示しないDRAMへのアクセス要求を適切に調停しながら、実際のDRAMへのアクセスを制御している。また、リードバスマスタ2は、図11(b)に示したバスマスタ93と同様に、アービタ1に、図示しないDRAMからデータを読み出すためのアクセス要求を出力し、アービタ1からアクセス要求が許可されたあとに、アービタ1を介して入力される図示しないDRAMからのデータを取り込む。また、ライトバスマスタ3は、図11(b)に示したバスマスタ92と同様に、アービタ1に、図示しないDRAMにデータを書き込むためのアクセス要求を出力し、アービタ1からアクセス要求が許可されたあとに、アービタ1を介して図示しないDRAMに書き込むデータを出力する。従って、リードバスマスタ2、ライトバスマスタ3、およびアービタ1の動作に関する詳細な説明は、省略する。
【0044】
制御信号転送モジュール10は、リードバスマスタ2またはライトバスマスタ3からアービタ1に発行される(出力される)、DRAMへのアクセス要求を表すリクエスト(REQ)信号と、アクセスするDRAMのアドレスを表すアドレス(ADR)とを中継する。また、制御信号転送モジュール10は、アービタ1が選択したバスマスタに返される(出力される)、DRAMへのアクセス要求を受け付けた、すなわち、アクセス要求を許可することを表すアクノリッジ(AEN)信号を中継する。
【0045】
制御信号転送モジュール10は、タイミング調整部110が、リクエスト(REQ)信号およびアドレス(ADR)のタイミングを整えて、アービタ1に出力する。また、制御信号転送モジュール10は、タイミング調整部120が生成したアクノリッジ(AEN)信号を、アービタ1からアクノリッジ(AEN)信号が入力されるより前のタイミングで、リードバスマスタ2またはライトバスマスタ3に出力する。これにより、制御信号転送モジュール10は、システムLSI内のアービタ1の配置位置とバスマスタの配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、制御信号転送モジュール10に関する詳細な説明は、後述する。
【0046】
リードデータ転送モジュール20は、アービタ1が選択したリードバスマスタ2に出力される、DRAMから読み出したデータが有効である期間を表すデータイネーブル(DEN)信号と、DRAMから読み出したデータであるリードデータ(RDATA)とを中継する。リードバスマスタ2とアービタ1のとの間に挿入される信号転送回路は、制御信号転送モジュール10とリードデータ転送モジュール20とが組として使用される。
【0047】
リードデータ転送モジュール20は、タイミング調整部210が、データイネーブル(DEN)信号およびリードデータ(RDATA)のタイミングを整えて、リードバスマスタ2に出力する。これにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、リードデータ転送モジュール20に関する詳細な説明は、後述する。
【0048】
ライトデータ転送モジュール30は、アービタ1が選択したライトバスマスタ3に出力される、DRAMへのデータの書き込みが有効である期間を表すデータイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力される、DRAMに書き込むデータであるライトデータ(WDATA)を中継する。ライトバスマスタ3とアービタ1のとの間に挿入される信号転送回路は、制御信号転送モジュール10とライトデータ転送モジュール30とが組として使用される。
【0049】
ライトデータ転送モジュール30は、タイミング調整部310が生成したデータイネーブル(DEN)信号を、アービタ1からデータイネーブル(DEN)信号が入力されるより前のタイミング、すなわち、先行したタイミングで、ライトバスマスタ3に出力する。また、ライトデータ転送モジュール30は、タイミング調整部320が、ライトデータ(WDATA)のタイミングを整えて、アービタ1に出力する。これにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とライトバスマスタ3の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和する。なお、ライトデータ転送モジュール30に関する詳細な説明は、後述する。
【0050】
次に、制御信号転送モジュール10について説明する。図2は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10の概略構成を示したブロック図である。図2では、アービタ1とリードバスマスタ2との間に挿入される信号転送回路に含まれる制御信号転送モジュール10を示している。なお、アービタ1とライトバスマスタ3との間に挿入される信号転送回路に含まれる制御信号転送モジュール10も同様の構成である。
【0051】
制御信号転送モジュール10は、タイミング調整部110としてのリクエストタイミング調整部111およびアドレスタイミング調整部112と、タイミング調整部120と、を備えている。なお、以下の説明においては、タイミング調整部120を、アクノリッジタイミング調整部120ともいう。
【0052】
制御信号転送モジュール10は、リードバスマスタ2から入力されたリクエスト(REQ)信号を、リクエストタイミング調整部111でタイミングを整えて、アービタ1に出力する。リクエストタイミング調整部111は、例えば、リクエスト(REQ)信号を一旦ラッチしたのと同様のタイミングで、アービタ1に出力する。また、制御信号転送モジュール10は、リクエスト(REQ)信号と同時にリードバスマスタ2から入力されたアドレス(ADR)を、アドレスタイミング調整部112でタイミングを整えて、アービタ1に出力する。アドレスタイミング調整部112は、例えば、アドレス(ADR)を一旦ラッチしたのと同様のタイミングで、アービタ1に出力する。これにより、リードバスマスタ2から入力されたリクエスト(REQ)信号およびアドレス(ADR)は、制御信号転送モジュール10によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。
【0053】
以下の説明においては、リードバスマスタ2から入力されるリクエスト(REQ)信号およびアドレス(ADR)をそれぞれ、バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRという。また、アービタ1に出力するリクエスト(REQ)信号およびアドレス(ADR)をそれぞれ、アービタリクエスト信号A_REQおよびアービタアドレスA_ADRという。
【0054】
また、制御信号転送モジュール10は、タイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRがアービタ1に出力されるタイミング、すなわち、リクエストタイミング調整部111およびアドレスタイミング調整部112のそれぞれが、バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRを一旦ラッチしたのと同様のタイミングで、アクノリッジタイミング調整部120が生成したアクノリッジ(AEN)信号を、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、アービタ1がリードバスマスタ2を選択したときに返されるアクノリッジ(AEN)信号より前のタイミング、すなわち、先行したタイミングで、アクノリッジ(AEN)信号が入力される。
【0055】
以下の説明においては、アービタ1から入力されるアクノリッジ(AEN)信号を、アービタアクノリッジ信号A_AENという。また、リードバスマスタ2に出力するアクノリッジ(AEN)信号を、バスマスタアクノリッジ信号B_AENという。
【0056】
なお、制御信号転送モジュール10は、バスマスタアクノリッジ信号B_AENをリードバスマスタ2に返したことによって、リードバスマスタ2から再度バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRが入力された場合には、すぐにタイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRを、アービタ1に出力しない。
【0057】
再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応した、アービタリクエスト信号A_REQおよびアービタアドレスA_ADRは、制御信号転送モジュール10に、アービタ1からのアービタアクノリッジ信号A_AENが入力された後に、アービタ1に出力する。また、制御信号転送モジュール10は、リクエストタイミング調整部111およびアドレスタイミング調整部112のそれぞれから、タイミングが整えられたアービタリクエスト信号A_REQおよびアービタアドレスA_ADRがアービタ1に出力されるタイミングで、再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応してアクノリッジタイミング調整部120が生成したバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。
【0058】
以降、同様に、制御信号転送モジュール10は、アービタ1からアービタアクノリッジ信号A_AENが入力された後に、再度入力されたバスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRに対応したアービタリクエスト信号A_REQおよびアービタアドレスA_ADRのアービタ1への出力と、バスマスタアクノリッジ信号B_AENのリードバスマスタ2への出力とを繰り返す。
【0059】
このような動作によって、制御信号転送モジュール10は、バスマスタからアービタ1に発行される(出力される)リクエスト(REQ)信号およびアドレス(ADR)と、アービタ1からバスマスタに返される(出力される)アクノリッジ(AEN)信号とを中継する。これにより、制御信号転送モジュール10をアービタ1とバスマスタとの間に挿入することによって、制御信号転送モジュール10とアービタ1、およびバスマスタと制御信号転送モジュール10との間では、アービタ1とバスマスタとの間で予め定められているプロトコルを守った状態とした上で、アービタ1とバスマスタとの間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0060】
次に、制御信号転送モジュール10のより詳細な構成について説明する。図3は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10の構成の一例を示した回路図である。図3では、図2と同様に、アービタ1とリードバスマスタ2との間に挿入される制御信号転送モジュール10を示している。なお、アービタ1とライトバスマスタ3との間に挿入される制御信号転送モジュール10も同様の構成である。
【0061】
制御信号転送モジュール10では、リクエストタイミング調整部111が、フリップフロップ1111と、判定ロジック1112と、判定ロジック1113とで構成されている。また、アドレスタイミング調整部112およびアクノリッジタイミング調整部120は、それぞれフリップフロップで構成されている。以下の説明においては、アドレスタイミング調整部112をフリップフロップ112ともいい、アクノリッジタイミング調整部120をフリップフロップ120ともいう。
【0062】
判定ロジック1112は、アービタリクエスト信号A_REQのアービタ1への出力を開始するタイミングを表す、リクエストアサートタイミング信号を生成し、生成したリクエストアサートタイミング信号を、フリップフロップ1111のセット(SET)端子に出力する。また、リクエストアサートタイミング信号は、フリップフロップ112のイネーブル(EN)端子、およびフリップフロップ120のデータ(D)端子にも出力される。判定ロジック1112は、リードバスマスタ2から最初にバスマスタリクエスト信号B_REQが発行されたとき、もしくはリードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行された場合において、アービタ1からアービタアクノリッジ信号A_AENが入力されたときに、リクエストアサートタイミング信号を、アービタリクエスト信号A_REQをアービタ1に出力する状態(以下、「セット状態」という)にする。
【0063】
リクエストアサートタイミング信号は、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQと、アービタ1から入力されたアービタアクノリッジ信号A_AENと、フリップフロップ1111が出力するアービタリクエスト信号A_REQとに基づいて生成される。
【0064】
より具体的には、判定ロジック1112は、バスマスタリクエスト信号B_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタリクエスト信号A_REQがアクセス要求をしていない状態(例えば、“Low”レベル)のときに、リクエストアサートタイミング信号を、セット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から最初にバスマスタリクエスト信号B_REQが発行されたときに対応している。
【0065】
また、判定ロジック1112は、バスマスタリクエスト信号B_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタリクエスト信号A_REQがアクセス要求をしている状態(例えば、“High”レベル)で、アービタアクノリッジ信号A_AENがアクセス要求を許可する状態(例えば、“High”レベル)となったときに、リクエストアサートタイミング信号を、セット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行された場合において、アービタ1から前回のアービタリクエスト信号A_REQに応じたアービタアクノリッジ信号A_AENが入力されたときに対応している。
【0066】
上記2つの状態以外のときには、判定ロジック1112は、セット状態のリクエストアサートタイミング信号を出力しない。例えば、“Low”レベルにする。
【0067】
判定ロジック1113は、アービタリクエスト信号A_REQのアービタ1への出力を停止するタイミングを表す、リクエストクリアタイミング信号を生成し、生成したリクエストクリアタイミング信号を、フリップフロップ1111のクリア(CLR)端子に出力する。判定ロジック1113は、アービタ1からアービタアクノリッジ信号A_AENが入力されたときに、リクエストクリアタイミング信号を、アービタリクエスト信号A_REQのアービタ1への出力を停止する状態(以下、「リセット状態」という)にする。
【0068】
リクエストクリアタイミング信号は、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQと、アービタ1から入力されたアービタアクノリッジ信号A_AENとに基づいて生成される。
【0069】
より具体的には、判定ロジック1113は、バスマスタリクエスト信号B_REQがアクセス要求をしていない状態(例えば、“Low”レベル)で、アービタアクノリッジ信号A_AENがアクセス要求を許可する状態(例えば、“High”レベル)となったときに、リクエストクリアタイミング信号を、リセット状態(例えば、“High”レベル)にする。これは、リードバスマスタ2から再度バスマスタリクエスト信号B_REQが発行されていない状態で、最後のアービタリクエスト信号A_REQに応じたアービタアクノリッジ信号A_AENが入力されたときに対応している。
【0070】
上記の状態以外のときには、判定ロジック1113は、リセット状態のリクエストクリアタイミング信号を出力しない。例えば、“Low”レベルにする。
【0071】
フリップフロップ1111は、判定ロジック1112からセット(SET)端子に入力されたリクエストアサートタイミング信号と、判定ロジック1113からクリア(CLR)端子に入力されたリクエストクリアタイミング信号とに応じて生成したアービタリクエスト信号A_REQを、アービタ1に出力する。
【0072】
より具体的には、フリップフロップ1111は、セット状態のリクエストアサートタイミング信号が入力されると、次のクロックサイクルで、アービタリクエスト信号A_REQを、DRAMへのアクセスを要求する状態(例えば、“High”レベル)にする。また、フリップフロップ1111は、リセット状態のリクエストクリアタイミング信号が入力されると、次のクロックサイクルで、アービタリクエスト信号A_REQを、DRAMへのアクセスを要求しない、すなわち、DRAMへのアクセスを停止する状態(例えば、“High”レベル)にする。また、アービタリクエスト信号A_REQは、判定ロジック1112にも出力される。
【0073】
これにより、リードバスマスタ2から入力されたバスマスタリクエスト信号B_REQは、フリップフロップ1111によってクロックサイクルのタイミングに整えられて、アービタ1に出力されることになる。すなわち、アービタリクエスト信号A_REQは、フリップフロップ1111で一旦ラッチしたのと同様のタイミングで、アービタ1に出力されることになる。
【0074】
フリップフロップ112(アドレスタイミング調整部112)は、判定ロジック1112からイネーブル(EN)端子に入力されたリクエストアサートタイミング信号に応じて、リードバスマスタ2からデータ(D)端子に入力されたバスマスタアドレスB_ADRをラッチし、ラッチしたバスマスタアドレスB_ADRを、アービタアドレスA_ADRとしてアービタ1に出力する。なお、制御信号転送モジュール10には、バスマスタアドレスB_ADRのビット数分のフリップフロップ112が備えられている。
【0075】
これにより、バスマスタリクエスト信号B_REQと同時にリードバスマスタ2から入力されたバスマスタアドレスB_ADRは、フリップフロップ112によってクロックサイクルのタイミングに整えられて、アービタ1に出力されることになる。すなわち、バスマスタアドレスB_ADRは、フリップフロップ112で一旦ラッチしたバスマスタリクエスト信号B_REQと同様のタイミングで、アービタ1に出力されることになる。
【0076】
フリップフロップ120(アクノリッジタイミング調整部120)は、判定ロジック1112からデータ(D)端子に入力されたリクエストアサートタイミング信号をラッチし、ラッチしたリクエストアサートタイミング信号を、バスマスタアクノリッジ信号B_AENとして、リードバスマスタ2に出力する。
【0077】
これにより、バスマスタアクノリッジ信号B_AENは、アービタリクエスト信号A_REQとアービタアドレスA_ADRとをアービタ1に出力するタイミングと同じタイミングで、リードバスマスタ2に出力される。なお、このタイミングでは、今回アービタ1に出力したバスマスタリクエスト信号B_REQに対するアービタアクノリッジ信号A_AENは、アービタ1から入力されない。すなわち、このタイミングでリードバスマスタ2に出力されるバスマスタアクノリッジ信号B_AENは、アービタ1からアービタアクノリッジ信号A_AENが入力されるよりも先行したタイミングで出力されることになる。
【0078】
ここで、図3に示した制御信号転送モジュール10の動作について説明する。図4は、本実施形態の信号転送回路において、アービタとバスマスタと間の制御信号に対応した制御信号転送モジュール10のタイミングの一例を示したタイミングチャートである。なお、以下の説明においては、バスマスタリクエスト信号B_REQおよびアービタリクエスト信号A_REQが“High”レベルで、DRAMへのアクセス要求をしている状態であるものとし、アービタアクノリッジ信号A_AENおよびバスマスタアクノリッジ信号B_AENが“High”レベルで、DRAMへのアクセス要求を許可する状態であるものとして説明を行う。また、リクエストアサートタイミング信号が“High”レベルで、セット状態であるものとして説明を行う。
【0079】
まず、リードバスマスタ2は、DRAMへの最初のアクセス要求を発行する。これにより、タイミングt1において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。このとき、アービタリクエスト信号A_REQは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにする。
【0080】
その後、次のクロックサイクルであるタイミングt2において、フリップフロップ1111が、“High”レベルのアービタリクエスト信号A_REQを、アービタ1に出力する。また、同時に、フリップフロップ112が、アービタアドレスA_ADR(ADR1)を、アービタ1に出力する。これにより、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR1)とのタイミングが整えられて、アービタ1に中継される。
【0081】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt1で出力したDRAMへのアクセス要求が、事前に許可される。
【0082】
また、タイミングt2において、判定ロジック1112に、フリップフロップ1111から“High”レベルのアービタリクエスト信号A_REQが入力される。このとき、アービタアクノリッジ信号A_AENは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“Low”レベルにする。
【0083】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt3において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0084】
また、タイミングt2において、判定ロジック1112がリクエストアサートタイミング信号を“Low”レベルにしたことにより、タイミングt3において、フリップフロップ120から出力されているバスマスタアクノリッジ信号B_AENが“Low”レベルになる。
【0085】
その後、アービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt4において、アービタ1からの“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。これにより、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにする。
【0086】
その後、次のクロックサイクルであるタイミングt5において、フリップフロップ1111は、アービタリクエスト信号A_REQを、“Low”レベルにする。これにより、アービタ1は、アービタアクノリッジ信号A_AENを“Low”レベルにする。
【0087】
このようにして、リードバスマスタ2によるDRAMへの1回のアクセスが終了する。なお、リードバスマスタ2が再度DRAMにアクセスする際には、再び、DRAMへの最初のアクセス要求を発行する。これにより、タイミングt6において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。このとき、アービタリクエスト信号A_REQは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにする。
【0088】
その後、次のクロックサイクルであるタイミングt7において、フリップフロップ1111が、“High”レベルのアービタリクエスト信号A_REQを、アービタ1に出力する。また、同時に、フリップフロップ112が、アービタアドレスA_ADR(ADR2)を、アービタ1に出力する。これにより、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR2)とのタイミングが整えられて、アービタ1に中継される。
【0089】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt6で出力したDRAMへのアクセス要求が、事前に許可される。
【0090】
また、タイミングt7において、判定ロジック1112に、フリップフロップ1111から“High”レベルのアービタリクエスト信号A_REQが入力される。このとき、アービタアクノリッジ信号A_AENは“Low”レベルである。これにより、判定ロジック1112は、リクエストアサートタイミング信号を“Low”レベルにする。
【0091】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt8において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0092】
また、タイミングt7において、判定ロジック1112がリクエストアサートタイミング信号を“Low”レベルにしたことにより、タイミングt8において、フリップフロップ120から出力されているバスマスタアクノリッジ信号B_AENが“Low”レベルになる。
【0093】
その後、リードバスマスタ2がDRAMにアクセスする際には、再び、DRAMへのアクセス要求を発行する。これにより、タイミングt9において、“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。しかし、タイミングt9の時点では、リードバスマスタ2がタイミングt6で発行した最初のアクセス要求がアービタ1に受け付けられていない。すなわち、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力されていない。このため、アービタリクエスト信号A_REQは“High”レベルのままである。従って、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにしない。これにより、制御信号転送モジュール10は、リードバスマスタ2によってタイミングt6で発行されたバスマスタリクエスト信号B_REQに対応するDRAMへのアクセス要求の状態を継続する。
【0094】
その後、タイミングt7で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt10において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。このとき、タイミングt9で発行されたDRAMへのアクセス要求によって、バスマスタリクエスト信号B_REQは“High”レベルのままである。従って、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにしない。すなわち、アービタリクエスト信号A_REQをリセット状態にしない。
【0095】
また、判定ロジック1112は、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが入力されたことにより、リクエストアサートタイミング信号を“High”レベルにする。これは、タイミングt9でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応するものである。
【0096】
これにより、次のクロックサイクルであるタイミングt11において、フリップフロップ1111が出力するアービタリクエスト信号A_REQの“High”レベルが維持され、アービタ1に、連続したDRAMへのアクセス要求が出力される。
【0097】
また、タイミングt11では、リクエストアサートタイミング信号に応じて、フリップフロップ112によるアービタアドレスA_ADRの出力が、タイミングt9でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応したアービタアドレスA_ADR(ADR3)に切り替わる。これにより、タイミングt9において、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR3)とのタイミングが整えられて、アービタ1に中継される。
【0098】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt9で出力したDRAMへのアクセス要求が、事前に許可される。
【0099】
その後、次のクロックサイクルであるタイミングt12において、フリップフロップ120は、リクエストアサートタイミング信号の“Low”レベルに応じて、バスマスタアクノリッジ信号B_AENを、“Low”レベルにする。
【0100】
また、リードバスマスタ2に“High”レベルのバスマスタアクノリッジ信号B_AENが入力された後、リードバスマスタ2が連続してDRAMにアクセスする際には、DRAMへのアクセス要求の発行を停止せず、バスマスタリクエスト信号B_REQの“High”レベルを継続する。これにより、タイミングt12においても“High”レベルのバスマスタリクエスト信号B_REQが、制御信号転送モジュール10に入力される。しかし、タイミングt12の時点では、リードバスマスタ2がタイミングt9で発行した2回目のアクセス要求がアービタ1に受け付けられていない。すなわち、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力されていない。このため、アービタリクエスト信号A_REQは“High”レベルのままである。従って、判定ロジック1112は、リクエストアサートタイミング信号を“High”レベルにしない。これにより、制御信号転送モジュール10は、リードバスマスタ2によってタイミングt9で発行されたバスマスタリクエスト信号B_REQに対応するDRAMへのアクセス要求の状態を継続する。
【0101】
その後、タイミングt11で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt13において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。このとき、タイミングt12で発行されたDRAMへのアクセス要求によって、バスマスタリクエスト信号B_REQは“High”レベルのままである。従って、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにせず、アービタリクエスト信号A_REQをリセット状態にしない。
【0102】
また、判定ロジック1112は、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが入力されたことにより、リクエストアサートタイミング信号を“High”レベルにする。これは、タイミングt12でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応するものである。
【0103】
これにより、次のクロックサイクルであるタイミングt14において、フリップフロップ1111が出力するアービタリクエスト信号A_REQの“High”レベルが維持され、アービタ1に、連続したDRAMへのアクセス要求が出力される。
【0104】
また、タイミングt14では、リクエストアサートタイミング信号に応じて、フリップフロップ112によるアービタアドレスA_ADRの出力が、タイミングt12でリードバスマスタ2から発行されたDRAMへのアクセス要求に対応したアービタアドレスA_ADR(ADR4)に切り替わる。これにより、タイミングt12において、リードバスマスタ2から出力されたバスマスタリクエスト信号B_REQとバスマスタアドレスB_ADR(ADR4)とのタイミングが整えられて、アービタ1に中継される。
【0105】
また、同時に、フリップフロップ120は、“High”レベルのバスマスタアクノリッジ信号B_AENを、リードバスマスタ2に出力する。これにより、リードバスマスタ2には、タイミングt12で出力したDRAMへのアクセス要求が、事前に許可される。
【0106】
リードバスマスタ2が連続してDRAMにアクセスしない場合、リードバスマスタ2は、“High”レベルのバスマスタアクノリッジ信号B_AENが入力されると、DRAMへのアクセス要求の発行を停止する。これにより、タイミングt15において、制御信号転送モジュール10に入力されているバスマスタリクエスト信号B_REQが“Low”レベルになる。
【0107】
また、タイミングt15において、フリップフロップ120は、リクエストアサートタイミング信号の“Low”レベルに応じて、バスマスタアクノリッジ信号B_AENを、“Low”レベルにする。
【0108】
その後、タイミングt14で出力したアービタリクエスト信号A_REQのDRAMへのアクセス要求が受け付けられる(許可される)と、タイミングt16において、アービタ1から“High”レベルのアービタアクノリッジ信号A_AENが、制御信号転送モジュール10に入力される。これにより、判定ロジック1113は、リクエストクリアタイミング信号を“High”レベルにする。
【0109】
その後、次のクロックサイクルであるタイミングt17において、フリップフロップ1111は、アービタリクエスト信号A_REQを、“Low”レベルにする。これにより、アービタ1は、アービタアクノリッジ信号A_AENを“Low”レベルにする。
【0110】
このようにして、DRAMへのアクセス要求が許可されていない状態でも、リードバスマスタ2は、連続してDRAMへのアクセス要求を発行し、DRAMへのアクセスを行うことができる。なお、フリップフロップ1111がアービタリクエスト信号A_REQを、“Low”レベルにした後に、リードバスマスタ2から再度DRAMへのアクセス要求が発行された場合には、図4のタイミングt17以降に示したように、入力された“High”レベルのバスマスタリクエスト信号B_REQが、DRAMへの最初のアクセス要求であるもとして動作する。図4のタイミングt17以降に示した制御信号転送モジュール10の動作は、図4のタイミングt1〜タイミングt17において説明した動作と同様であるため、タイミングの詳細な説明は省略する。
【0111】
上記に述べたとおり、制御信号転送モジュール10では、リードバスマスタ2からアービタ1に発行される(出力される)バスマスタリクエスト信号B_REQおよびバスマスタアドレスB_ADRのタイミングを整えて、アービタ1に出力する。また、制御信号転送モジュール10では、アービタ1からリードバスマスタ2に返される(出力される)アービタアクノリッジ信号A_AENよりも前のタイミングで、リードバスマスタ2にDRAMへのアクセス要求を許可する。これらにより、制御信号転送モジュール10では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、制御信号転送モジュール10とアービタ1、およびバスマスタと制御信号転送モジュール10との間では、予め定められているプロトコルをそれぞれ守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、制御信号転送モジュール10は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0112】
次に、リードデータ転送モジュール20について説明する。図5は、本実施形態の信号転送回路において、DRAMからデータを読み出すバスマスタに対応したリードデータ転送モジュール20の概略構成を示したブロック図である。図5では、アービタ1とリードバスマスタ2との間に挿入されるリードデータ転送モジュール20を示している。
【0113】
リードデータ転送モジュール20は、タイミング調整部210として、データイネーブルタイミング調整部211と、リードデータタイミング調整部212と、を備えている。
【0114】
リードデータ転送モジュール20は、アービタ1から入力されたデータイネーブル(DEN)信号を、データイネーブルタイミング調整部211でタイミングを整えて、リードバスマスタ2に出力する。データイネーブルタイミング調整部211は、例えば、データイネーブル(DEN)信号を一旦ラッチし、ラッチしたデータイネーブル(DEN)信号をリードバスマスタ2に出力する。また、リードデータ転送モジュール20は、データイネーブル(DEN)信号と同時にアービタ1から入力されたリードデータ(RDATA)を、リードデータタイミング調整部212でタイミングを整えて、リードバスマスタ2に出力する。リードデータタイミング調整部212は、例えば、リードデータ(RDATA)を一旦ラッチし、ラッチしたリードデータ(RDATA)をリードバスマスタ2に出力する。
【0115】
このように、アービタ1から入力されたデータイネーブル(DEN)信号およびリードデータ(RDATA)は、リードデータ転送モジュール20によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。これにより、リードデータ転送モジュール20をアービタ1とリードバスマスタ2との間に挿入することによって、リードデータ転送モジュール20とアービタ1、およびリードバスマスタ2とリードデータ転送モジュール20との間では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0116】
以下の説明においては、アービタ1から入力されるデータイネーブル(DEN)信号およびリードデータ(RDATA)をそれぞれ、アービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAという。また、リードバスマスタ2に出力するデータイネーブル(DEN)信号およびリードデータ(RDATA)をそれぞれ、リードバスマスタデータイネーブル信号B_RDENおよびバスマスタリードデータB_RDATAという。
【0117】
リードデータ転送モジュール20では、データイネーブルタイミング調整部211およびリードデータタイミング調整部212は、それぞれフリップフロップで構成されている。以下の説明においては、データイネーブルタイミング調整部211をフリップフロップ211ともいい、リードデータタイミング調整部212をフリップフロップ212ともいう。
【0118】
フリップフロップ211(データイネーブルタイミング調整部211)は、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENをラッチし、ラッチしたアービタデータリードイネーブル信号A_RDENを、リードバスマスタデータイネーブル信号B_RDENとしてリードバスマスタ2に出力する。
【0119】
フリップフロップ212(リードデータタイミング調整部212)は、アービタ1から入力されたアービタリードデータA_RDATAをラッチし、ラッチしたアービタリードデータA_RDATAを、バスマスタリードデータB_RDATAとしてリードバスマスタ2に出力する。なお、リードデータ転送モジュール20には、アービタリードデータA_RDATAのビット数分のフリップフロップ212が備えられている。
【0120】
なお、図5に示したリードデータ転送モジュール20の動作は、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAを、フリップフロップ211およびフリップフロップ212のそれぞれで一旦ラッチして、リードバスマスタデータイネーブル信号B_RDENおよびバスマスタリードデータB_RDATAとして出力するのみであるため、タイミングの詳細な説明は省略する。
【0121】
上記に述べたとおり、リードデータ転送モジュール20では、アービタ1から入力されたアービタデータリードイネーブル信号A_RDENおよびアービタリードデータA_RDATAのタイミングを整えて、リードバスマスタ2に出力する。これにより、リードデータ転送モジュール20では、アービタ1とリードバスマスタ2との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、リードデータ転送モジュール20とアービタ1、およびリードバスマスタ2とリードデータ転送モジュール20との間では、予め定められているプロトコルを守った状態とした上で、アービタ1とリードバスマスタ2との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、リードデータ転送モジュール20は、システムLSI内のアービタ1の配置位置とリードバスマスタ2の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0122】
次に、ライトデータ転送モジュール30について説明する。図6は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30の概略構成を示したブロック図である。図6では、アービタ1とライトバスマスタ3との間に挿入されるライトデータ転送モジュール30を示している。なお、ライトデータ転送モジュール30では、制御信号転送モジュール10から出力されるバスマスタアクノリッジ信号B_AENも用いて動作するため、ライトデータ転送モジュール30に係わる制御信号転送モジュール10の一部(アクノリッジタイミング調整部120)も併せて示している。
【0123】
ライトデータ転送モジュール30は、タイミング調整部310としてのアクノリッジ計測部311およびデータイネーブル調整部312と、タイミング調整部320としてのライトデータバッファ321およびライトデータバッファ322と、を備えている。
【0124】
ライトデータ転送モジュール30は、制御信号転送モジュール10からバスマスタアクノリッジ信号B_AENが出力された次のクロックサイクルで、データイネーブル調整部312が生成したデータイネーブル(DEN)信号を、ライトバスマスタ3に出力する。これにより、ライトバスマスタ3には、アービタ1がデータイネーブル(DEN)信号を出力するより前のタイミング、すなわち、先行したタイミングで、データイネーブル(DEN)信号が入力される。なお、ライトデータ転送モジュール30から先行してライトバスマスタ3に出力するデータイネーブル(DEN)信号は、ライトデータ転送モジュール30内にラッチすることができるライトデータ(WDATA)数だけ出力され、その後、アービタ1からデータイネーブル(DEN)信号が出力されたときに、残りのデータイネーブル(DEN)信号が、ライトバスマスタ3に出力される。
【0125】
以下の説明においては、アービタ1から入力されるデータイネーブル(DEN)信号をアービタデータライトイネーブル信号A_WDENといい、ライトバスマスタ3に出力するデータイネーブル(DEN)信号をライトバスマスタデータイネーブル信号B_WDENという。
【0126】
また、ライトデータ転送モジュール30は、先行して出力したライトバスマスタデータイネーブル信号B_WDENに応じてライトバスマスタ3から入力されるライトデータ(WDATA)を、ライトデータバッファ321またはライトデータバッファ322に一旦ラッチし、アービタデータライトイネーブル信号A_WDENに合わせて、ラッチしたライトデータ(WDATA)を、アービタ1に出力する。また、アービタデータライトイネーブル信号A_WDENが入力されてからのタイミングで出力した、残りのライトバスマスタデータイネーブル信号B_WDENに応じてライトバスマスタ3から入力されるライトデータ(WDATA)も、ライトデータバッファ321またはライトデータバッファ322に一旦ラッチしてから、アービタデータライトイネーブル信号A_WDENに合わせて、アービタ1に出力される。これにより、ライトバスマスタ3から入力されたライトデータ(WDATA)は、ライトデータ転送モジュール30によってクロックサイクルのタイミングに整えられて、アービタ1に中継される。
【0127】
以下の説明においては、ライトバスマスタ3から入力されるライトデータ(WDATA)をバスマスタライトデータB_WDATAといい、アービタ1に出力するライトデータ(WDATA)をアービタライトデータA_WDATAという。
【0128】
このような動作によって、ライトデータ転送モジュール30は、アービタ1からライトバスマスタ3に発行される(出力される)データイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力されるライトデータ(WDATA)とを中継する。これにより、ライトデータ転送モジュール30をアービタ1とライトバスマスタ3との間に挿入することによって、ライトデータ転送モジュール30とアービタ1、およびライトバスマスタ3とライトデータ転送モジュール30との間では、アービタ1とライトバスマスタ3との間で予め定められているプロトコルを守った状態とした上で、アービタ1とライトバスマスタ3との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。
【0129】
次に、ライトデータ転送モジュール30のより詳細な構成について説明する。図7は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30の構成の一例を示した回路図である。図7では、図6と同様に、アービタ1とライトバスマスタ3との間に挿入されるライトデータ転送モジュール30と、ライトデータ転送モジュール30に係わる制御信号転送モジュール10の一部の回路(アクノリッジタイミング調整部120:フリップフロップ120)とを併せて示している。なお、以下の説明においては、ライトデータ転送モジュール30が、4バーストのライトデータ(WDATA)に対応している場合を説明する。
【0130】
ライトデータ転送モジュール30では、タイミング調整部310が、アクノリッジ計測部311と、データイネーブル調整部312と、カウンタ313と、デコーダ314と、ANDロジック315と、カウンタ316と、デコーダ317と、ANDロジック318と、で構成されている。また、タイミング調整部320が、ライトデータバッファ321と、ライトデータバッファ322と、バッファ制御デコーダ323と、セレクタ324と、で構成されている。なお、アクノリッジ計測部311およびデータイネーブル調整部312は、それぞれカウンタとデコーダで構成されている。以下の説明においては、アクノリッジ計測部311を、カウンタ311ともいい、データイネーブル調整部312を、デコーダ312ともいう。また、ライトデータバッファ321およびライトデータバッファ322は、それぞれフリップフロップで構成されている。以下の説明においては、ライトデータバッファ321をフリップフロップ321ともいい、ライトデータバッファ322をフリップフロップ322ともいう。
【0131】
カウンタ313は、イネーブル(EN)端子に入力された、ライトデータ転送モジュール30が出力するライトバスマスタデータイネーブル信号B_WDENを、クロックサイクル毎にカウントし、カウントした結果のカウント値をデコーダ314に出力する。より具体的には、ライトデータ転送モジュール30は、4バーストのライトデータ(WDATA)に対応しているため、カウンタ313は、“0”〜“3”のカウント値をデコーダ314に出力する。
【0132】
デコーダ314は、カウンタ313から入力されたライトバスマスタデータイネーブル信号B_WDENのカウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック315に出力する。より具体的には、デコーダ314は、カウント値が“3”であることを表すデコード信号(例えば、“High”レベル)を、ANDロジック315に出力する。これは、ライトデータ転送モジュール30が、4バーストのライトデータ(WDATA)に対応しているためであり、デコーダ314は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルをデコードする。
【0133】
ANDロジック315は、ライトバスマスタデータイネーブル信号B_WDENと、デコーダ314から入力されたデコード信号とを論理積した結果である第4データ信号をカウンタ311のカウントダウン(DOWN)端子に出力する。ここで、ANDロジック315から出力される第4データ信号は、ライトバスマスタデータイネーブル信号B_WDENが出力されているときの4つ目のクロックサイクル、すなわち、4バーストのバスマスタライトデータB_WDATAの内、4つ目のバスマスタライトデータB_WDATAが、ライトバスマスタ3から入力されていることを表す信号である。
【0134】
カウンタ311(アクノリッジ計測部311)は、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力しているが、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力していないアクセス要求の数をカウントし、カウントした結果であるアクノリッジカウント値をデコーダ312に出力する。すなわち、カウンタ311は、ライトバスマスタ3によるDRAMへのアクセス要求に応じた動作が完了していないアクセス要求の数をカウントし、デコーダ312に出力する。
【0135】
より具体的には、カウンタ311は、カウントアップ(UP)端子に入力された、制御信号転送モジュール10が出力するバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップし、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンする。すなわち、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENを出力したときにアクノリッジカウント値をカウントアップし、4つ目のバスマスタライトデータB_WDATAがライトデータ転送モジュール30に入力されたときにアクノリッジカウント値をカウントダウンする。このときのアクノリッジカウント値をが、DRAMへのアクセスが完了していないアクセス要求の数となる。
【0136】
なお、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENがカウントアップする状態であり、カウントダウン(DOWN)端子に入力された第4データ信号がカウントダウンする状態である場合には、カウンタ311は、現在のアクノリッジカウント値を保持する。
【0137】
デコーダ312(データイネーブル調整部312)は、カウンタ311から入力されたアクノリッジカウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック318に出力する。より具体的には、デコーダ314は、アクノリッジカウント値が“0”以外であることを表すデコード信号(例えば、“High”レベル)を、ANDロジック318に出力する。デコード信号が“High”レベルであるということは、すでにバスマスタアクノリッジ信号B_AENが制御信号転送モジュール10から出力されているアクセス要求があることを表している。これにより、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っているか否かを判断することができる。
【0138】
カウンタ316は、タイミング調整部320にラッチされているバスマスタライトデータB_WDATAの数をカウントし、カウントした結果であるラッチ領域カウント値をデコーダ317に出力する。ここで、カウンタ316から出力されるラッチ領域カウント値は、タイミング調整部320のラッチ領域にラッチすることができるバスマスタライトデータB_WDATAの数、すなわち、タイミング調整部320の空き領域の数を表すカウント値である。また、カウンタ316が出力するラッチ領域カウント値は、バッファ制御デコーダ323のカウント(CNT)端子にも出力される。
【0139】
より具体的には、カウンタ316は、カウントアップ(UP)端子に入力されたアービタデータライトイネーブル信号A_WDENに応じて、クロックサイクル毎にラッチ領域カウント値をカウントアップし、カウントダウン(DOWN)端子に入力されたライトバスマスタデータイネーブル信号B_WDENに応じて、クロックサイクル毎にラッチ領域カウント値をカウントダウンする。すなわち、カウンタ316は、ライトバスマスタデータイネーブル信号B_WDENに応じてバスマスタライトデータB_WDATAが入力され、タイミング調整部320のラッチ領域にラッチされると、タイミング調整部320の空き領域の数をカウントダウンする。また、アービタデータライトイネーブル信号A_WDENに応じてタイミング調整部320のラッチ領域にラッチされたバスマスタライトデータB_WDATAが、アービタライトデータA_WDATAとして出力されると、タイミング調整部320の空き領域の数をカウントアップする。
【0140】
なお、ライトデータ転送モジュール30では、タイミング調整部320に2つのラッチ領域(ライトデータバッファ321およびライトデータバッファ322)を備えている。このため、タイミング調整部320のラッチ領域にバスマスタライトデータB_WDATAがラッチされていないときの値、すなわち、カウンタ316が出力するラッチ領域カウント値の初期値は“2”である。そして、カウンタ316は、タイミング調整部320の空き領域の数に応じて、“0”(空き領域なし),“1”(空き領域1つあり),“2”(空き領域2つあり)のカウント値を、ラッチ領域カウント値としてデコーダ317およびバッファ制御デコーダ323に出力する。
【0141】
なお、カウントアップ(UP)端子に入力されたアービタデータライトイネーブル信号A_WDENがカウントアップする状態であり、カウントダウン(DOWN)端子に入力されたライトバスマスタデータイネーブル信号B_WDENがカウントダウンする状態である場合には、カウンタ316は、現在のラッチ領域カウント値を保持する。
【0142】
デコーダ317は、カウンタ316から入力されたラッチ領域カウント値から、予め定めたカウント値をデコードし、デコードした結果をANDロジック318に出力する。より具体的には、デコーダ317は、ラッチ領域カウント値が“0”(空き領域なし)以外、すなわち、タイミング調整部320に空き領域があることを表すデコード信号(例えば、“High”レベル)を、ANDロジック318に出力する。デコード信号が“High”レベルであるということは、タイミング調整部320に空き領域があることを表している。
【0143】
ANDロジック318は、デコーダ312から出力されたデコード信号と、デコーダ317から出力されたデコード信号とを論理積した結果を、ライトバスマスタデータイネーブル信号B_WDENとしてライトバスマスタ3に出力する。ANDロジック318から出力されるライトバスマスタデータイネーブル信号B_WDENは、ライトバスマスタ3にバスマスタアクノリッジ信号B_AENが出力されており、タイミング調整部320に空き領域があることを表している。また、上述したように、ANDロジック318が出力したライトバスマスタデータイネーブル信号B_WDENは、カウンタ313のイネーブル(EN)端子、ANDロジック315、およびカウンタ316のカウントダウン(DOWN)端子にも出力される。また、ライトバスマスタデータイネーブル信号B_WDENは、バッファ制御デコーダ323のライトイネーブル(WE)端子にも出力される。
【0144】
フリップフロップ321(ライトデータバッファ321)は、イネーブル(EN)端子に入力された、バッファ制御デコーダ323からのラッチイネーブル信号EN1に応じて、データ(D)端子に入力された、ライトバスマスタ3からのバスマスタライトデータB_WDATAを一旦ラッチする。フリップフロップ321は、ラッチしたバスマスタライトデータB_WDATA(以下、「ラッチデータL_DATA」という)を、セレクタ324に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のフリップフロップ321が備えられている。
【0145】
セレクタ324は、バッファ制御デコーダ323から入力されたセレクト信号SELに応じて、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA、またはフリップフロップ321から出力されたラッチデータL_DATAのいずれかのデータ(以下、「セレクトデータS_DATA」という)を、フリップフロップ322に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のセレクタ324が備えられている。
【0146】
フリップフロップ322(ライトデータバッファ322)は、イネーブル(EN)端子に入力された、バッファ制御デコーダ323からのラッチイネーブル信号EN2に応じて、データ(D)端子に入力された、セレクタ324からのセレクトデータS_DATAを一旦ラッチする。フリップフロップ322は、ラッチしたセレクトデータS_DATAを、アービタライトデータA_WDATAとして、アービタ1に出力する。なお、ライトデータ転送モジュール30には、バスマスタライトデータB_WDATAのビット数分のフリップフロップ322が備えられている。
【0147】
タイミング調整部320では、フリップフロップ321と、セレクタ324と、フリップフロップ322との構成によって、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAを順次ラッチして出力する2段のFIFO(First In,First Out)メモリの機能を実現している。これにより、ライトバスマスタ3から4バーストで入力されるバスマスタライトデータB_WDATAの内、2つ分のバスマスタライトデータB_WDATAを、保持することができる。以下の説明においては、フリップフロップ321と、セレクタ324と、フリップフロップ322とを併せて、FIFOメモリともいう。
【0148】
アービタライトデータA_WDATAは、FIFOメモリの常に同じラッチ領域、すなわち、フリップフロップ322から出力される。これは、アービタライトデータA_WDATAが出力されるタイミングを、クロックサイクルのタイミングに整えるためである。ただし、バスマスタライトデータB_WDATAを入力するFIFOメモリのラッチ領域は、常に同じラッチ領域ではなく、FIFOメモリ内の空き領域の状態や、アービタライトデータA_WDATAを出力するタイミングに応じて変更される。すなわち、バスマスタライトデータB_WDATAをラッチする際には、フリップフロップ321またはフリップフロップ322のいずれか一方が選択され、選択されたフリップフロップにバスマスタライトデータB_WDATAをラッチする構成となっている。バスマスタライトデータB_WDATAをFIFOメモリにラッチする際の制御は、バッファ制御デコーダ323によって行われる。
【0149】
なお、FIFOメモリの構成は、上述した構成に限定されるものではない。例えば、アービタライトデータA_WDATAを出力するラッチ領域を選択するセレクタの遅延時間が少なく、アービタライトデータA_WDATAを出力するタイミングを、クロックサイクルのタイミングに整えることができる場合には、バスマスタライトデータB_WDATAを交互にラッチし、アービタライトデータA_WDATAを出力する際に、ラッチ領域を選択する構成としたFIFOメモリであってもよい。
【0150】
バッファ制御デコーダ323は、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAを、タイミング調整部320に備えたFIFOメモリにラッチする際のラッチ領域の選択制御と、FIFOメモリにラッチされたバスマスタライトデータB_WDATAを、アービタライトデータA_WDATAとしてアービタ1に出力する際の出力制御とを行う。より具体的には、バッファ制御デコーダ323は、カウンタ316からカウント(CNT)端子に入力されたラッチ領域カウント値と、ANDロジック318からライトイネーブル(WE)端子に入力されたライトバスマスタデータイネーブル信号B_WDENと、アービタ1からリードイネーブル(RE)端子に入力されたアービタデータライトイネーブル信号A_WDENとに基づいて、FIFOメモリを制御する。
【0151】
バッファ制御デコーダ323は、FIFOメモリを制御するためのラッチイネーブル信号EN1をフリップフロップ321のイネーブル(EN)端子に、ラッチイネーブル信号EN2をフリップフロップ322のイネーブル(EN)端子に、セレクト信号SELをセレクタ324に、それぞれ出力する。
【0152】
バッファ制御デコーダ323による、FIFOメモリの制御は、図8に示した真理値表に基づいて行われる。図8は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30が、DRAMに書き込むデータをラッチする際の制御方法を説明する真理値表である。なお、図8に示した真理値表において、「×」で表した状態は、ライトデータ転送モジュール30の論理上発生しない状態を示している。
【0153】
図8に示したように、バッファ制御デコーダ323は、カウント(CNT)端子と、ライトイネーブル(WE)端子と、リードイネーブル(RE)端子の状態に応じて、FIFOメモリの制御を行う。なお、図8に示した真理値表においては、カウント(CNT)の数値が、ラッチ領域カウント値、すなわち、FIFOメモリの空き領域の数を表している。また、ライトイネーブル(WE)の“1”が、ライトバスマスタデータイネーブル信号B_WDENが“High”レベル、すなわち、バスマスタライトデータB_WDATAが入力される状態を表している。また、リードイネーブル(RE)の“1”が、アービタデータライトイネーブル信号A_WDENが“High”レベル、すなわち、アービタライトデータA_WDATAを出力する状態を表している。
【0154】
また、図8に示した真理値表においては、イネーブル(EN1)の“1”が、フリップフロップ321に、バスマスタライトデータB_WDATAを一旦ラッチさせる状態のラッチイネーブル信号EN1(例えば、“High”レベル)を出力することを表している。また、イネーブル(EN2)の“1”が、フリップフロップ322に、セレクトデータS_DATAを一旦ラッチさせる状態のラッチイネーブル信号EN2(例えば、“High”レベル)を出力することを表している。また、セレクト(SEL)の“0”が、フリップフロップ322に出力するセレクトデータS_DATAとしてバスマスタライトデータB_WDATAを選択するセレクト信号SEL(例えば、“Low”レベル)を出力し、セレクト(SEL)の“1”が、セレクトデータS_DATAとしてラッチデータL_DATAを選択するセレクト信号SEL(例えば、“High”レベル)を出力することを表している。
【0155】
図8に示したように、例えば、カウント(CNT)=“1”,ライトイネーブル(WE)=“1”,リードイネーブル(RE)=“0”のときには、ラッチイネーブル信号EN1=“1”,ラッチイネーブル信号EN2=“0”,セレクト信号SEL=“0”として、フリップフロップ321に、バスマスタライトデータB_WDATAを一旦ラッチさせる。
【0156】
また、例えば、カウント(CNT)=“2”,ライトイネーブル(WE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“0”として、フリップフロップ322に、バスマスタライトデータB_WDATAを一旦ラッチさせる。そして、フリップフロップ322にラッチされたバスマスタライトデータB_WDATAは、アービタライトデータA_WDATAとしてのアービタ1に出力される。
【0157】
また、例えば、カウント(CNT)=“0”,リードイネーブル(RE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“1”として、フリップフロップ322に、ラッチデータL_DATAを一旦ラッチさせる。これにより、フリップフロップ321が前回ラッチしたバスマスタライトデータB_WDATAが、フリップフロップ322に転送される。そして、フリップフロップ322に転送されたラッチデータL_DATAは、アービタライトデータA_WDATAとしてのアービタ1に出力される。
【0158】
また、例えば、カウント(CNT)=“1”,ライトイネーブル(WE)=“1”,リードイネーブル(RE)=“1”のときには、ラッチイネーブル信号EN1=“0”,ラッチイネーブル信号EN2=“1”,セレクト信号SEL=“0”として、フリップフロップ322に、バスマスタライトデータB_WDATAを一旦ラッチさせると共に、アービタライトデータA_WDATAとしてのアービタ1に出力させる。
【0159】
ここで、図7に示したライトデータ転送モジュール30の動作について説明する。図9は、本実施形態の信号転送回路において、DRAMにデータを書き込むバスマスタに対応したライトデータ転送モジュール30のタイミングの一例を示したタイミングチャートである。なお、以下の説明においては、バスマスタアクノリッジ信号B_AENが“High”レベルで、DRAMへのアクセス要求を許可する状態とし、ライトバスマスタデータイネーブル信号B_WDENおよびアービタデータライトイネーブル信号A_WDENが“High”レベルで、DRAMへのデータの書き込みが有効である状態として説明を行う。
【0160】
まず、ライトデータ転送モジュール30の初期の状態で、カウンタ311のアクノリッジカウント値は“0”である。また、カウンタ316のラッチ領域カウント値は“2”(空き領域2つあり)である。
【0161】
その後、タイミングt1において、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力すると、次のクロックサイクルであるタイミングt2において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“1”にする。これにより、デコーダ312のデコード信号が“High”レベルになる。このとき、ラッチ領域カウント値は“2”(空き領域2つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3に、事前にライトバスマスタデータイネーブル信号B_WDENが出力される。
【0162】
その後、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルになったことにより、次のクロックサイクルであるタイミングt3において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、アービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0163】
また、タイミングt3において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“1”(空き領域1つあり)にする。
【0164】
その後、次のクロックサイクルであるタイミングt4において、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。
【0165】
また、タイミングt4において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分のバスマスタライトデータB_WDATAが保持される。
【0166】
その後、タイミングt5において、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力すると、次のクロックサイクルであるタイミングt6において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“2”にする。
【0167】
その後、タイミングt7において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt8において、バッファ制御デコーダ323は、フリップフロップ321にラッチしたバスマスタライトデータB_WDATA(D1)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、アービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0168】
また、タイミングt8において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3に、残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0169】
その後、次のクロックサイクルであるタイミングt9において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、アービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0170】
また、タイミングt9においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0171】
その後、次のクロックサイクルであるタイミングt10において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、アービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0172】
また、タイミングt10においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0173】
なお、タイミングt10は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。図9に示したタイミングチャートの一例においては、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルを、ライトバスマスタデータイネーブル信号B_WDEN内に、「★」で示している。
【0174】
このため、カウンタ313は、タイミングt10において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“1”にする。これにより、ライトバスマスタ3による1回目のDRAMへのアクセスが終了する。
【0175】
しかし、タイミングt10においては、デコーダ312のデコード信号は“High”レベルのままである。すなわち、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っていることを表している。また、ラッチ領域カウント値は“1”(空き領域1つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318からは、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続してライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による2回目のDRAMアクセスに応じたライトバスマスタデータイネーブル信号B_WDENが、連続して出力される。
【0176】
そして、タイミングt10において、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続されたことにより、次のクロックサイクルであるタイミングt11において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0177】
また、タイミングt11においては、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが、継続して入力されている。このため、タイミングt11においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0178】
また、タイミングt11においては、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力している、このため、次のクロックサイクルであるタイミングt12において、カウンタ311は、カウントアップ(UP)端子に入力されたバスマスタアクノリッジ信号B_AENに応じてアクノリッジカウント値をカウントアップして“2”にする。
【0179】
また、タイミングt12において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0180】
また、タイミングt12においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0181】
その後、次のクロックサイクルであるタイミングt13において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0182】
また、タイミングt13においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0183】
その後、次のクロックサイクルであるタイミングt14において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された2回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、2回目のDRAMアクセスのアービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0184】
また、タイミングt14においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0185】
なお、タイミングt14は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。このため、カウンタ313は、タイミングt14において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“1”にする。これにより、ライトバスマスタ3による2回目のDRAMへのアクセスが終了する。
【0186】
しかし、タイミングt14においては、デコーダ312のデコード信号は“High”レベルのままであり、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っている。また、ラッチ領域カウント値は“1”(空き領域1つあり)であるため、デコーダ317のデコード信号も“High”レベルである。これにより、ANDロジック318からは、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続してライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じたライトバスマスタデータイネーブル信号B_WDENが、連続して出力される。
【0187】
そして、タイミングt14において、ライトバスマスタデータイネーブル信号B_WDENの“High”レベルが継続されたことにより、次のクロックサイクルであるタイミングt15において、バッファ制御デコーダ323は、フリップフロップ322に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D0)を、一旦ラッチさせる。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D0)が、3回目のDRAMアクセスのアービタライトデータA_WDATA(D0)として、アービタ1に出力される。
【0188】
また、タイミングt15においては、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“High”レベルである。このため、カウンタ316は、ラッチ領域カウント値を保持し、“1”(空き領域1つあり)のままにする。
【0189】
そして、タイミングt15において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0190】
その後、次のクロックサイクルであるタイミングt16においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、一旦ラッチさせる。
【0191】
また、タイミングt16において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D0およびD1)のバスマスタライトデータB_WDATAが保持される。
【0192】
そして、タイミングt16において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt17において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D1)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D1)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D1)として、アービタ1に出力される。
【0193】
また、タイミングt17において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じた残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0194】
そして、タイミングt17において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0195】
その後、次のクロックサイクルであるタイミングt18においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、一旦ラッチさせる。
【0196】
また、タイミングt18において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D1およびD2)のバスマスタライトデータB_WDATAが保持される。
【0197】
そして、タイミングt18において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt19において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D2)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D2)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D2)として、アービタ1に出力される。
【0198】
また、タイミングt19において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。これにより、デコーダ317のデコード信号が“High”レベルになり、ANDロジック318から、“High”レベルのライトバスマスタデータイネーブル信号B_WDENが、ライトバスマスタ3に出力される。すなわち、ライトバスマスタ3による3回目のDRAMアクセスに応じた残りのライトバスマスタデータイネーブル信号B_WDENが出力される。
【0199】
そして、タイミングt19において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。
【0200】
その後、次のクロックサイクルであるタイミングt20においては、アービタ1から出力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルとなっている。このため、バッファ制御デコーダ323は、フリップフロップ321に、ライトバスマスタ3から入力された3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、一旦ラッチさせる。
【0201】
また、タイミングt20において、ライトバスマスタデータイネーブル信号B_WDENが“High”レベルであり、アービタデータライトイネーブル信号A_WDENが“Low”レベルである。このため、カウンタ316は、ラッチ領域カウント値をカウントダウンし、“0”(空き領域なし)にする。これにより、デコーダ317のデコード信号が“Low”レベルになり、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENが、“Low”レベルになる。これにより、FIFOメモリに、2つ分(D2およびD3)のバスマスタライトデータB_WDATAが保持される。
【0202】
なお、タイミングt20は、ライトバスマスタデータイネーブル信号B_WDENの4つ目のクロックサイクルである。このため、カウンタ313は、タイミングt20において、ライトバスマスタデータイネーブル信号B_WDENのカウント値=“3”を出力する。これにより、デコーダ314のデコード信号が“High”レベルになり、ANDロジック315から、“High”レベルの第4データ信号が、カウンタ311のカウントダウン(DOWN)端子に入力される。これにより、カウンタ311は、カウントダウン(DOWN)端子に入力された第4データ信号に応じてアクノリッジカウント値をカウントダウンして“0”にする。これにより、ライトバスマスタ3による3回目のDRAMへのアクセスが終了する。
【0203】
また、タイミングt20においては、デコーダ312のデコード信号が“Low”レベルになる。すなわち、ライトデータ転送モジュール30がアービタライトデータA_WDATAを出力する必要があるアクセス要求が残っていない。このため、再び制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力するまでは、ラッチ領域カウント値の値に係わらず、ANDロジック318が出力するライトバスマスタデータイネーブル信号B_WDENは、“Low”レベルになる。
【0204】
そして、タイミングt20において、アービタ1から“High”レベルのアービタデータライトイネーブル信号A_WDENが入力されると、次のクロックサイクルであるタイミングt21において、バッファ制御デコーダ323は、フリップフロップ321にラッチした3回目のDRAMアクセスにおけるバスマスタライトデータB_WDATA(D3)を、フリップフロップ322に転送する。これにより、フリップフロップ322にラッチされたバスマスタライトデータB_WDATA(D3)が、3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D3)として、アービタ1に出力される。
【0205】
また、タイミングt21において、アービタデータライトイネーブル信号A_WDENが“High”レベルであるため、カウンタ316は、ラッチ領域カウント値をカウントアップし、“1”(空き領域1つあり)にする。
【0206】
そして、タイミングt21において、アービタ1から入力されているアービタデータライトイネーブル信号A_WDENが“Low”レベルになる。その後、アービタ1は、タイミングt22において、“High”レベルのアービタデータライトイネーブル信号A_WDENを出力し、フリップフロップ322から出力されている3回目のDRAMアクセスにおけるアービタライトデータA_WDATA(D3)をDRAMに書き込む。その後、タイミングt23において、アービタデータライトイネーブル信号A_WDENが“Low”レベルにし、アービタ1における3回目のDRAMへのアクセスが終了する。
【0207】
このようにして、ライトバスマスタ3によるDRAMへのアクセスが終了する。なお、ライトバスマスタ3が再度DRAMにアクセスする際には、再び、DRAMへの最初のアクセス要求を発行する。これにより、制御信号転送モジュール10が“High”レベルのバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力する。これにより、ライトデータ転送モジュール30による、アービタ1からライトバスマスタ3に発行される(出力される)データイネーブル(DEN)信号と、ライトバスマスタ3からアービタ1に出力されるライトデータ(WDATA)との中継の動作が、再度行われる。
【0208】
このようにして、アービタ1からアービタデータライトイネーブル信号A_WDENが入力されていない状態でも、ライトデータ転送モジュール30が先行して、ライトバスマスタ3にライトバスマスタデータイネーブル信号B_WDENを出力することができる。これにより、ライトデータ転送モジュール30は、事前にバスマスタライトデータB_WDATAを保持し、アービタ1からアービタデータライトイネーブル信号A_WDENが入力されたあとすぐに、アービタライトデータA_WDATAを出力することができる。なお、ライトバスマスタ3から再度DRAMへのアクセス要求が行われ、制御信号転送モジュール10がバスマスタアクノリッジ信号B_AENをライトバスマスタ3に出力した場合には、図9のタイミングt23以降に示したように、入力された“High”レベルのバスマスタアクノリッジ信号B_AENに応じて、ライトデータ転送モジュール30が再度動作する。図9のタイミングt23以降に示したライトデータ転送モジュール30の動作は、図9のタイミングt1〜タイミングt23において説明した動作と同様であるため、タイミングの詳細な説明は省略する。
【0209】
上記に述べたとおり、ライトデータ転送モジュール30では、アービタ1からライトバスマスタ3に出力されるアービタデータライトイネーブル信号A_WDENよりも前のタイミングで、ライトバスマスタ3にライトバスマスタデータイネーブル信号B_WDENを出力する。また、ライトデータ転送モジュール30では、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAのタイミングを整えて、アービタ1に出力する。これらにより、ライトデータ転送モジュール30では、アービタ1とライトバスマスタ3との間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。これにより、ライトデータ転送モジュール30とアービタ1、およびライトバスマスタ3とライトデータ転送モジュール30との間では、予め定められているプロトコルをそれぞれ守った状態とした上で、アービタ1とライトバスマスタ3との間の信号のタイミングを、例えば、フリップフロップを挿入したのと同様の状態にすることができる。このことにより、ライトデータ転送モジュール30は、システムLSI内のアービタ1の配置位置とライトバスマスタ3の配置位置とが離れていることや、システムLSIの動作クロックを高速化によってクロックサイクルが短くなることによる、信号の遅延時間の制約を緩和することができる。
【0210】
上記に述べたとおり、本発明を実施するための形態によれば、信号転送回路を、バスマスタとアービタのとの間に挿入することによって、アービタとバスマスタとの間で予め定められているプロトコルを守った状態で、それぞれの信号を中継することができる。また、信号転送回路とアービタ、およびバスマスタと信号転送回路との間では、アービタとバスマスタとの間で予め定められているプロトコルをそれぞれ守った状態とした上で、信号転送回路とアービタとの間の信号のタイミング、およびバスマスタと信号転送回路との間の信号のタイミングを整え、例えば、フリップフロップを挿入したのと同様の状態にすることができる。これにより、バスマスタやアービタを変更することなく、信号転送回路とアービタとの間の信号、およびバスマスタと信号転送回路との間の信号のタイミングを、改善することができる。このことにより、システムLSIに内蔵するバスマスタの数を増やしたことなどによって、システムLSI内のアービタの配置位置とバスマスタの配置位置とが離れていることや、システムLSIの動作クロックを高速化したことなどによって、クロックサイクルが短くなってしまったことによる、信号の遅延時間の制約を緩和することができる。これにより、より広帯域のバスシステムを構築した、システムLSIを実現することができる。
【0211】
なお、信号転送回路をバスマスタとアービタのとの間に挿入する場合には、バスマスタとアービタのとの間の経路の適切な位置(例えば、中間の位置など)に、信号転送回路を配置することが望ましい。
【0212】
なお、本実施形態においては、アービタとバスマスタとの間に、1つの信号転送回路(制御信号転送モジュール10とリードデータ転送モジュール20との組、または制御信号転送モジュール10とライトデータ転送モジュール30との組)を挿入した場合について説明したが、アービタとバスマスタとの間に挿入する信号転送回路の数は、本発明を実施するための形態に限定されるものではない。例えば、1つの信号転送回路を挿入しても、依然としてアービタとバスマスタとの間の信号がタイミング的に厳しい場合には、複数の信号転送回路(制御信号転送モジュール10とリードデータ転送モジュール20との組、または制御信号転送モジュール10とライトデータ転送モジュール30との組)を数珠つなぎにして挿入することによって、信号のタイミングを改善することもできる。この場合には、例えば、バスマスタとアービタのとの間の経路が等間隔となるような位置に、それぞれの信号転送回路を配置することが望ましい。
【0213】
また、本実施形態においては、タイミング調整部320内のフリップフロップ321と、セレクタ324と、フリップフロップ322とによって、2段のFIFOメモリの機能を実現し、事前に2つ分のバスマスタライトデータB_WDATAを保持する構成について説明した。しかし、ライトバスマスタ3から出力されるバスマスタライトデータB_WDATAを保持する構成は、本発明を実施するための形態に限定されるものではない。例えば、4バーストのバスマスタライトデータB_WDATAを全て保持するメモリ領域をタイミング調整部320に備え、事前に全てのバスマスタライトデータB_WDATAを保持する構成とすることもできる。また、例えば、4バーストのバスマスタライトデータB_WDATAを全て保持するメモリ領域を、タイミング調整部320に2つ備え、ライトバスマスタ3から入力されたバスマスタライトデータB_WDATAの保持と、アービタ1へのアービタライトデータA_WDATAの出力とを、交互に着替える構成とすることもできる。
【0214】
また、本実施形態においては、リードバスマスタ2またはライトバスマスタ3と、アービタ1との間に、制御信号転送モジュール10とリードデータ転送モジュール20との組の信号転送回路、または制御信号転送モジュール10とライトデータ転送モジュール30との組の信号転送回路を挿入した場合について説明したが、信号転送回路における転送モジュールの構成は、本発明を実施するための形態に限定されるものではない。例えば、バスマスタが、DRAMからのデータの読み出しと、DRAMへのデータの書き込みとの両方を行う双方向バスマスタである場合には、制御信号転送モジュール10と、リードデータ転送モジュール20と、ライトデータ転送モジュール30とを1つの組とした信号転送回路を、双方向バスマスタとアービタとの間に挿入することによって、同様に、信号のタイミングを改善することができる。
【0215】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【0216】
1・・・アービタ
2・・・リードバスマスタ(バスマスタ)
3・・・ライトバスマスタ(バスマスタ)
10・・・制御信号転送モジュール(信号転送回路,制御信号転送部)
110・・・タイミング調整部(アクセス要求タイミング調整部)
111・・・リクエストタイミング調整部(アクセス要求タイミング調整部)
1111・・・フリップフロップ(アクセス要求タイミング調整部)
1112・・・判定ロジック(アクセス要求タイミング調整部)
1113・・・判定ロジック(アクセス要求タイミング調整部)
112・・・アドレスタイミング調整部,フリップフロップ(アドレスタイミング調整部)
120・・・タイミング調整部,アクノリッジタイミング調整部,フリップフロップ(アクセス許可タイミング調整部)
20・・・リードデータ転送モジュール(信号転送回路,データ信号転送部)
210・・・タイミング調整部(リードデータ有効期間タイミング調整部,リードデータタイミング調整部)
211・・・データイネーブルタイミング調整部,フリップフロップ(リードデータ有効期間タイミング調整部)
212・・・リードデータタイミング調整部,フリップフロップ(リードデータタイミング調整部)
30・・・ライトデータ転送モジュール(信号転送回路,データ信号転送部)
310・・・タイミング調整部(ライトデータ有効期間タイミング調整部)
311・・・アクノリッジ計測部,カウンタ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
312・・・データイネーブル調整部,デコーダ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
313・・・カウンタ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
314・・・デコーダ(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
315・・・ANDロジック(ライトデータ有効期間タイミング調整部,許可アクセス計測部)
316・・・カウンタ(ライトデータ有効期間タイミング調整部、データ計測部)
317・・・デコーダ(ライトデータ有効期間タイミング調整部,データ計測部)
318・・・ANDロジック(ライトデータ有効期間タイミング調整部)
320・・・タイミング調整部(ライトデータタイミング調整部)
321・・・ライトデータバッファ(ライトデータタイミング調整部,データ保持部,第1のデータ保持部)
322・・・ライトデータバッファ(ライトデータタイミング調整部,データ保持部,第2のデータ保持部)
323・・・バッファ制御デコーダ,フリップフロップ(ライトデータタイミング調整部,データ保持制御部)
324・・・セレクタ,フリップフロップ(ライトデータタイミング調整部,データ保持部)
90・・・DRAM(メモリ)
91・・・アービタ
911・・・調停回路(アービタ)
92,93,94・・・バスマスタ
921,931・・・リクエスト生成回路(バスマスタ)
922,924,932,934・・・フリップフロップ(バスマスタ)
925,926・・・フリップフロップ
923・・・データ制御回路(バスマスタ)
933・・・データラッチ制御回路(バスマスタ)
【特許請求の範囲】
【請求項1】
メモリへのアクセス要求を出力する複数のバスマスタのそれぞれと、前記メモリが接続され、前記バスマスタのそれぞれから入力された該メモリへの前記アクセス要求を調停し、許可した前記アクセス要求に応じて該メモリへのアクセスを制御するアービタとの間に挿入され、前記アービタと対応する前記バスマスタとの間のそれぞれの信号を中継する信号転送回路であって、
当該信号転送回路は、
対応する前記バスマスタから入力された前記メモリへのアクセス要求を前記アービタに中継する際に、該前記バスマスタから入力される、該アクセス要求におけるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を、前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求を許可することを表すアクセス許可入力信号に先行して、該アクセス要求を許可するアクセス許可出力信号を、該バスマスタに出力する制御信号転送部と、
対応する前記バスマスタから入力された前記メモリへのアクセス要求における複数のデータを該バスマスタまたは前記アービタに中継する際に、前記アービタまたは該バスマスタから入力される、該アクセス要求におけるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、該バスマスタまたは前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求におけるそれぞれのデータが有効である期間を表すデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号を、該バスマスタに出力するデータ信号転送部と、
を備える、
ことを特徴とする信号転送回路。
【請求項2】
前記制御信号転送部は、
前記アクセス要求入力信号と前記アクセス許可入力信号とに基づいて、前記アクセス要求出力信号を出力するか否かを決定し、該アクセス要求出力信号を出力すると決定したときに、該アクセス要求出力信号を出力することを表す出力タイミング信号を出力し、該出力タイミング信号を出力した次のタイミングから、該アクセス要求出力信号を出力するアクセス要求タイミング調整部と、
前記出力タイミング信号が出力された次のタイミングから、前記メモリアドレス入力信号を、前記メモリアドレス出力信号として出力するアドレスタイミング調整部と、
前記出力タイミング信号を、次のタイミングで、前記アクセス許可出力信号として出力するアクセス許可タイミング調整部と、
を備え、
前記アクセス要求タイミング調整部は、
対応する前記バスマスタから、今回のアクセス要求に応じた前記アクセス要求入力信号が入力されたとき、該バスマスタによる前回のアクセス要求に応じた前記アクセス要求出力信号がすでに出力され、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されていないときには、今回のアクセス要求に応じた前記アクセス要求出力信号の出力を保留し、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されたときに、今回のアクセス要求に応じた前記アクセス要求出力信号を出力すると決定する、
ことを特徴とする請求項1に記載の信号転送回路。
【請求項3】
当該信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリからデータを読み出すバスマスタである場合、
前記データ信号転送部は、
前記アービタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの前記データ出力信号として、前記バスマスタに出力するリードデータタイミング調整部と、
前記アービタから入力された前記データ有効期間入力信号を、次のタイミングで、前記データ有効期間出力信号として、前記バスマスタに出力するリードデータ有効期間タイミング調整部と、
を備える、
ことを特徴とする請求項2に記載の信号転送回路。
【請求項4】
当該信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリにデータを書き込むバスマスタである場合、
前記データ信号転送部は、
前記アービタから入力される前記データ有効期間入力信号に先行して、前記データ有効期間出力信号を、前記バスマスタに出力するライトデータ有効期間タイミング調整部と、
先行して出力された前記データ有効期間出力信号に応じて、前記バスマスタから入力される複数の前記データ入力信号の内、予め定めた数または全ての前記データ入力信号を保持する複数のデータ保持部を具備し、前記バスマスタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの該データ保持部に一旦保持し、前記アービタから前記データ有効期間入力信号が入力されたときに、保持したそれぞれの前記データ入力信号を、タイミングを整えたそれぞれの前記データ出力信号として、前記アービタに出力するライトデータタイミング調整部と、
を備える、
ことを特徴とする請求項2に記載の信号転送回路。
【請求項5】
前記ライトデータ有効期間タイミング調整部は、
前記アクセス許可出力信号と前記データ有効期間出力信号とに基づいて、前記アクセス要求に応じた全ての前記データ出力信号の前記アービタへの出力が終了していない許可したアクセス要求の数を計測し、該計測した結果に基づいて生成した、対応する前記バスマスタによる前記アクセス要求をすでに許可しているが、全ての前記データ出力信号の前記アービタへの出力が終了していない許可済みのアクセス要求があるか否かを表す残許可アクセス信号を出力する許可アクセス計測部と、
前記データ有効期間入力信号と前記データ有効期間出力信号とに基づいて、前記データ入力信号を保持することができる前記データ保持部の数を計測し、該計測した結果である保持可能データ数と、該計測した結果に基づいて生成した、前記データ入力信号を保持することができる前記データ保持部があるか否か表す保持可否信号と、を出力するデータ計測部と、
を備え、
前記残許可アクセス信号と前記保持可否信号とに基づいて生成した信号を、前記データ有効期間出力信号として出力し、
前記ライトデータタイミング調整部は、
前記保持可能データ数と、前記データ有効期間出力信号と、前記データ有効期間入力信号とに基づいて、前記バスマスタから入力されたそれぞれの前記データ入力信号を、複数の前記データ保持部の内、いずれのデータ保持部に保持させるかを制御するデータ保持制御部、
を備える、
ことを特徴とする請求項4に記載の信号転送回路。
【請求項6】
前記ライトデータタイミング調整部は、
前記バスマスタから入力された2つの前記データ入力信号を、次のタイミングで、それぞれの保持する第1のデータ保持部と第2のデータ保持部とを具備し、前記第2のデータ保持部が保持した前記データ入力信号を、前記データ出力信号として前記アービタに出力し、
前記データ保持制御部は、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が無効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第1のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が2つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数がないことを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記第1のデータ保持部に保持している前記データ入力信号を、前記第2のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させるように、
前記第1のデータ保持部と前記第2のデータ保持部とを制御する、
ことを特徴とする請求項5に記載の信号転送回路。
【請求項7】
前記次のタイミングは、
当該信号転送回路と、前記アービタと、前記バスマスタとが動作する共通のクロックサイクルのタイミングである、
ことを特徴とする請求項2から請求項6のいずれか1の項に記載の信号転送回路。
【請求項1】
メモリへのアクセス要求を出力する複数のバスマスタのそれぞれと、前記メモリが接続され、前記バスマスタのそれぞれから入力された該メモリへの前記アクセス要求を調停し、許可した前記アクセス要求に応じて該メモリへのアクセスを制御するアービタとの間に挿入され、前記アービタと対応する前記バスマスタとの間のそれぞれの信号を中継する信号転送回路であって、
当該信号転送回路は、
対応する前記バスマスタから入力された前記メモリへのアクセス要求を前記アービタに中継する際に、該前記バスマスタから入力される、該アクセス要求におけるアクセス要求入力信号およびメモリアドレス入力信号のタイミングを整えたアクセス要求出力信号およびメモリアドレス出力信号を、前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求を許可することを表すアクセス許可入力信号に先行して、該アクセス要求を許可するアクセス許可出力信号を、該バスマスタに出力する制御信号転送部と、
対応する前記バスマスタから入力された前記メモリへのアクセス要求における複数のデータを該バスマスタまたは前記アービタに中継する際に、前記アービタまたは該バスマスタから入力される、該アクセス要求におけるそれぞれのデータ入力信号のタイミングを整えたそれぞれのデータ出力信号を、該バスマスタまたは前記アービタに出力すると共に、前記アービタから入力される、該アクセス要求におけるそれぞれのデータが有効である期間を表すデータ有効期間入力信号のタイミングを整えたデータ有効期間出力信号を、該バスマスタに出力するデータ信号転送部と、
を備える、
ことを特徴とする信号転送回路。
【請求項2】
前記制御信号転送部は、
前記アクセス要求入力信号と前記アクセス許可入力信号とに基づいて、前記アクセス要求出力信号を出力するか否かを決定し、該アクセス要求出力信号を出力すると決定したときに、該アクセス要求出力信号を出力することを表す出力タイミング信号を出力し、該出力タイミング信号を出力した次のタイミングから、該アクセス要求出力信号を出力するアクセス要求タイミング調整部と、
前記出力タイミング信号が出力された次のタイミングから、前記メモリアドレス入力信号を、前記メモリアドレス出力信号として出力するアドレスタイミング調整部と、
前記出力タイミング信号を、次のタイミングで、前記アクセス許可出力信号として出力するアクセス許可タイミング調整部と、
を備え、
前記アクセス要求タイミング調整部は、
対応する前記バスマスタから、今回のアクセス要求に応じた前記アクセス要求入力信号が入力されたとき、該バスマスタによる前回のアクセス要求に応じた前記アクセス要求出力信号がすでに出力され、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されていないときには、今回のアクセス要求に応じた前記アクセス要求出力信号の出力を保留し、前記アービタから前回のアクセス要求を許可する前記アクセス許可入力信号が入力されたときに、今回のアクセス要求に応じた前記アクセス要求出力信号を出力すると決定する、
ことを特徴とする請求項1に記載の信号転送回路。
【請求項3】
当該信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリからデータを読み出すバスマスタである場合、
前記データ信号転送部は、
前記アービタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの前記データ出力信号として、前記バスマスタに出力するリードデータタイミング調整部と、
前記アービタから入力された前記データ有効期間入力信号を、次のタイミングで、前記データ有効期間出力信号として、前記バスマスタに出力するリードデータ有効期間タイミング調整部と、
を備える、
ことを特徴とする請求項2に記載の信号転送回路。
【請求項4】
当該信号転送回路が対応する前記バスマスタが、前記アクセス要求によって、前記メモリにデータを書き込むバスマスタである場合、
前記データ信号転送部は、
前記アービタから入力される前記データ有効期間入力信号に先行して、前記データ有効期間出力信号を、前記バスマスタに出力するライトデータ有効期間タイミング調整部と、
先行して出力された前記データ有効期間出力信号に応じて、前記バスマスタから入力される複数の前記データ入力信号の内、予め定めた数または全ての前記データ入力信号を保持する複数のデータ保持部を具備し、前記バスマスタから入力されたそれぞれの前記データ入力信号を、次のタイミングで、それぞれの該データ保持部に一旦保持し、前記アービタから前記データ有効期間入力信号が入力されたときに、保持したそれぞれの前記データ入力信号を、タイミングを整えたそれぞれの前記データ出力信号として、前記アービタに出力するライトデータタイミング調整部と、
を備える、
ことを特徴とする請求項2に記載の信号転送回路。
【請求項5】
前記ライトデータ有効期間タイミング調整部は、
前記アクセス許可出力信号と前記データ有効期間出力信号とに基づいて、前記アクセス要求に応じた全ての前記データ出力信号の前記アービタへの出力が終了していない許可したアクセス要求の数を計測し、該計測した結果に基づいて生成した、対応する前記バスマスタによる前記アクセス要求をすでに許可しているが、全ての前記データ出力信号の前記アービタへの出力が終了していない許可済みのアクセス要求があるか否かを表す残許可アクセス信号を出力する許可アクセス計測部と、
前記データ有効期間入力信号と前記データ有効期間出力信号とに基づいて、前記データ入力信号を保持することができる前記データ保持部の数を計測し、該計測した結果である保持可能データ数と、該計測した結果に基づいて生成した、前記データ入力信号を保持することができる前記データ保持部があるか否か表す保持可否信号と、を出力するデータ計測部と、
を備え、
前記残許可アクセス信号と前記保持可否信号とに基づいて生成した信号を、前記データ有効期間出力信号として出力し、
前記ライトデータタイミング調整部は、
前記保持可能データ数と、前記データ有効期間出力信号と、前記データ有効期間入力信号とに基づいて、前記バスマスタから入力されたそれぞれの前記データ入力信号を、複数の前記データ保持部の内、いずれのデータ保持部に保持させるかを制御するデータ保持制御部、
を備える、
ことを特徴とする請求項4に記載の信号転送回路。
【請求項6】
前記ライトデータタイミング調整部は、
前記バスマスタから入力された2つの前記データ入力信号を、次のタイミングで、それぞれの保持する第1のデータ保持部と第2のデータ保持部とを具備し、前記第2のデータ保持部が保持した前記データ入力信号を、前記データ出力信号として前記アービタに出力し、
前記データ保持制御部は、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が無効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第1のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が2つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数がないことを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記第1のデータ保持部に保持している前記データ入力信号を、前記第2のデータ保持部に保持させ、
前記保持可能データ数が、前記データ入力信号を保持することができる前記データ保持部の数が1つであることを表し、前記データ有効期間出力信号が、前記データ入力信号が有効であることを表し、前記データ有効期間入力信号が、前記データ出力信号が有効であることを表しているときに、次のタイミングで、前記データ入力信号を前記第2のデータ保持部に保持させるように、
前記第1のデータ保持部と前記第2のデータ保持部とを制御する、
ことを特徴とする請求項5に記載の信号転送回路。
【請求項7】
前記次のタイミングは、
当該信号転送回路と、前記アービタと、前記バスマスタとが動作する共通のクロックサイクルのタイミングである、
ことを特徴とする請求項2から請求項6のいずれか1の項に記載の信号転送回路。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−105428(P2013−105428A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−250684(P2011−250684)
【出願日】平成23年11月16日(2011.11.16)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願日】平成23年11月16日(2011.11.16)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
[ Back to top ]