以下図面を参照して、本発明に係るデータ転送装置について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
図1は、データ転送装置の一例の回路ブロック図である。
データ転送装置1は、入力データクロック乗換回路10と、タイミング調整回路20と、バッファ30と、出力選択回路40と、出力データクロック乗換回路50と、制御回路60とを有する。
図2(a)は入力データクロック乗換回路10の内部回路ブロック図であり、図2(b)は入力データクロック乗換回路10のタイムチャートを示す図である。
入力データクロック乗換回路10は、第1ラッチ回路11と、第2ラッチ回路12と第3ラッチ回路13と、分周回路14とを有する。第1〜第3ラッチ回路11〜13はそれぞれ8byteのデータバス幅を有するデータをラッチし、入力されるクロック信号に応じてラッチしたデータを出力する。分周回路14は、入力データのクロック周期に応じた入力側クロック信号が入力され、入力されたクロック信号の周期の2倍の周期である出力側クロック信号として出力する。出力側クロック信号は、不図示の配線を介してタイミング調整回路20及び制御回路60に提供され、タイミング調整回路20及び制御回路60で基準クロックとして使用される。すなわち、タイミング調整回路20及び制御回路60で使用されるクロック信号の周期は、入力されたデータのクロックの2倍の周期となる。本明細書では、入力されたデータのクロックの2倍の周期を基準周期と称する。
第1ラッチ回路11は、入力側クロック信号で8byteのデータバス幅を有する入力データをラッチして、ラッチしたデータを入力側クロック信号に応じて出力する。第2ラッチ回路12は、第1ラッチ回路11から出力される8byteのデータバス幅を有するデータを、入力側クロック信号の2倍の周期である出力側クロック信号に応じて上位データUp_W_Dataとして出力する。第3ラッチ回路13は、8byteのデータバス幅を有する入力データを入力側クロック信号の2倍の周期を有する出力側クロック信号に応じて下位データLw_W_Dataとして出力する。
入力データクロック乗換回路10は、8byteのデータバス幅を有する入力データを16byteのデータバス幅を有する出力データとして入力データのデータレートの半分のデータレートで出力する。
図2(b)に示す例では、入力側クロックの偶数の周期でラッチされたデータは、上位データUp_W_Dataとして出力され、入力側クロックの奇数の周期でラッチされたデータは、下位データLw_W_Dataとして出力される。
第1データ群A1〜A5の先頭のデータA1は上位データUp_W_Dataとして出力され、第2のデータA2は下位データLw_W_Dataとして出力される。そして、第1データ群A1〜A5の末尾のデータA5は、上位データUp_W_Dataとして出力される。
一方、第2データ群B1〜B4及び第3データ群C1〜C3の先頭のデータB1及びC1はそれぞれ下位データLw_W_Dataとして出力され、第2のデータB2及びC2はそれぞれ上位データUp_W_Dataとして出力される。第1データ群の先頭のデータA1は偶数のサイクルであるサイクル0で到達するのに対し、第2データ群及び第3データ群の先頭のデータB1及びC1はそれぞれ奇数のサイクルであるサイクル7及び11で到達するためである。
入力データクロック乗換回路10は、データ周期で入力される2つのデータを、データ周期の2倍の基準周期ごとに結合して、上位データUp_W_Dataと下位データLw_W_Dataとを含む2倍長データとして出力する。
図3は、タイミング調整回路20の内部回路ブロック図である。
タイミング調整回路20は、第1遅延回路21と、第2遅延回路22と、第3遅延回路23と、遅延選択回路24とを有する。
第1遅延回路21は、入力される上位データUp_W_Dataを下位データLw_W_Dataとすると共に、入力される下位データLw_W_Dataを基準周期1サイクルに相当する時間遅延させて上位データUp_W_Dataとして出力する。第1遅延回路21から出力されるデータは、遅延選択回路24の第2入力端子Din1に第1遅延データとして入力される。第2遅延回路22は、入力される上位データUp_W_Data及び下位データLw_W_Dataをそれぞれ基準周期1サイクルに相当する時間遅延させて出力する。第2遅延回路22から出力されるデータは、遅延選択回路24の第3入力端子Din2に第2遅延データとして入力される。第3遅延回路23は、第1遅延回路21から出力される上位データUp_W_Data及び下位データLw_W_Dataをそれぞれ、基準周期1サイクルに相当する時間更に遅延させて出力する。第3遅延回路23から出力されるデータは、遅延選択回路24の第4入力端子Din3に第3遅延データとして入力される。第3遅延データの下位データLw_W_Dataは、入力される上位データUp_W_Dataを基準周期1サイクルに相当する時間に遅延させたデータである。第3遅延データの上位データUp_W_Dataは、入力される下位データLw_W_Dataを基準周期2サイクルに相当する時間遅延させたデータである。
遅延選択回路24の第1入力端子Din0には、入力データクロック乗換回路10から出力されるデータが入力される。遅延選択回路24の第2入力端子Din1には、第1遅延回路21から出力される第1遅延データが入力される。遅延選択回路24の第3入力端子Din2には、第2遅延回路22から出力される第2遅延データが入力される。遅延選択回路24の第4入力端子Din3には、第3遅延回路23から出力される第3遅延データが入力される。遅延選択回路24は、制御回路60から入力される遅延選択信号に基づいて、第1入力端子Din0、第2入力端子Din1、第3入力端子Din2又は第4入力端子Din3の入力されるデータの何れか1つのデータを出力端子Doutから出力する。
バッファ30は、第1バンク31と第2バンク32とを有する。第1バンク31は、第1バンク第1メモリ311と、第1バンク第2メモリ312とを有する。第2バンク32は、第2バンク第1メモリ321と、第2バンク第2メモリ322とを有する。
第1バンク第1メモリ311、第1バンク第2メモリ312、第2バンク第1メモリ321及び第2バンク第2メモリ322はそれぞれ、8byteのデータバス幅を有する入力データを記憶可能なRAMである。
第1バンク第1メモリ311は、書き込みイネーブル端子WEに書き込みイネーブル信号が入力されるときに、タイミング調整回路20から出力される上位データUp_W_Dataをアドレス入力端子Adrsで指定されるアドレスに書き込む。第1バンク第2メモリ312は、書き込みイネーブル端子WEに書き込みイネーブル信号が入力されるときに、タイミング調整回路20から出力される下位データLw_W_Dataをアドレス入力端子Adrsで指定されるアドレスに書き込む。第2バンク第1メモリ321は、書き込みイネーブル端子WEに書き込みイネーブル信号が入力されるときに、タイミング調整回路20から出力される上位データUp_W_Dataをアドレス入力端子Adrsで指定されるアドレスに書き込む。第2バンク第2メモリ322は、書き込みイネーブル端子WEに書き込みイネーブル信号が入力されるときに、タイミング調整回路20から出力される下位データLw_W_Dataをアドレス入力端子Adrsで指定されるアドレスに書き込む。
第1バンク第1メモリ311及び第1バンク第2メモリ312の書き込みイネーブル端子WEには、データ継続信号Data_Write_Enable_Up及びData_Write_Enable_Lwがそれぞれ入力される。第2バンク第1メモリ321及び第2バンク第2メモリ322の書き込みイネーブル端子WEには、第1バンク第1メモリ311及び第1バンク第2メモリ312の書き込みイネーブル端子WEに入力される信号の反転信号が入力される。第2バンク32に配置されるメモリの書き込みイネーブル端子WEに反転信号が入力されるので、第1バンク31に配置されるメモリへの書き込みがイネーブルのとき、第2バンク32に配置されるメモリへの書き込みはディセーブルである。また、第1バンク31に配置されるメモリへの書き込みがディセーブルのとき、第2バンク32に配置されるメモリへの書き込みはイネーブルである。
第1バンク第1メモリ311及び第2バンク第1メモリ321はそれぞれ、アドレス入力端子Adrsで指定されるアドレスに記憶されるデータを上位データUp_R_Dataとして読み出す。第1バンク第2メモリ312及び第2バンク第2メモリ322はそれぞれ、アドレス入力端子Adrsで指定されるアドレスにタイミング調整回路20に記憶されるデータを下位データLw_R_Dataとして読み出す。
第1バンク31は、基準周期で書き込み及び読み出しが行われる第1バンク第1メモリ311と第1バンク第2メモリ312とを有し、基準周期ごとに書き込み状態と読み出し状態とに交互に変化する。第2バンク32は、基準周期で書き込み及び読み出しが行われる第2バンク第1メモリ321と第2バンク第2メモリ322とを有し、第1バンク31と逆相で書き込み状態と読み出し状態とに交互に変化する。
出力選択回路40は、出力選択端子SELに入力される信号に基づいて、第1データ入力端子Din0に入力されるデータ又は第2データ入力端子Din1に入力されるデータの何れか一方のデータを出力する。第1データ入力端子Din0には、第1バンク第1メモリ311及び第1バンク第2メモリ312から出力されるデータが入力される。第2データ入力端子Din1には、第2バンク第1メモリ321及び第2バンク第2メモリ322から出力されるデータが入力される。
出力選択回路40の出力選択端子SELは、制御回路60の第1読み出しイネーブル端子RE1及び第2読み出しイネーブル端子RE2からの出力信号をバッファリングした信号が入力される。出力選択回路40は、第1バンク31に配置されるメモリが書き込みディセーブルのときに読み出されるデータを選択する。また、出力選択回路40は、第1バンク31に配置されるメモリが書き込みイネーブルのときに第2バンク32に配置されるメモリから読み出されるデータを選択する。第1バンク31に配置されるメモリが書き込みイネーブルのとき、第2バンク32に配置されるメモリは書き込みディセーブルである。したがって、出力選択回路40は、第2バンク32に配置されるメモリが書き込みディセーブルのときに読み出されるデータを選択する。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Up/Lwに基づいて、第1バンク第1メモリ311及び第1バンク第2メモリ312の双方又は何れか一方に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Up/Lwの双方が1であり且つ第1バンク31が選択されているとき、第1バンク第1メモリ311及び第1バンク第2メモリ312の双方に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Upのみが1であり且つ第1バンク31が選択されているとき、第1バンク第1メモリ311に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Lwのみが1であり且つ第1バンク31が選択されているとき、第1バンク第2メモリ312に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Up/Lwに基づいて、第2バンク第1メモリ321及び第2バンク第2メモリ322の一方のメモリの双方又は何れか一方に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Up/Lwの双方が1であり且つ第2バンク32が選択されているとき、第2バンク第1メモリ321及び第2バンク第2メモリ322の双方に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Upのみが1であり且つ第2バンク32が選択されているとき、第2バンク第1メモリ321に記憶されるデータを読み出す。出力選択回路40は、読み出しイネーブル信号Data_Read_Enable_Lwのみが1であり且つ第2バンク32がに配置されるメモリが書き込みイネーブルのとき、第2バンク第2メモリ322に記憶されるデータを読み出す。
図4は、出力データクロック乗換回路50の内部回路ブロック図である。
出力データクロック乗換回路50は、第1ラッチ回路51と、第2ラッチ回路52と第3ラッチ回路53と、分周回路54と、出力データ選択回路55とを有する。第1〜第3ラッチ回路51〜53はそれぞれ8byteのデータバス幅を有するデータをラッチし、入力されるクロック信号に応じてラッチしたデータを出力する。分周回路54は、入力データのクロック周期に応じた入力側クロック信号が入力され、入力されたクロック信号の周期の2倍の周期を有するクロック信号を出力側クロック信号として出力する。
第1ラッチ回路51は、出力選択回路40から出力される上位データUp_R_Dataを入力側クロック信号の2倍の周期を有する出力側クロック信号に応じてラッチして、出力データ選択回路55の第1データ入力端子Din0に出力する。第2ラッチ回路52は、出力選択回路40から出力される下位データLw_R_Dataを入力側クロック信号の2倍の周期を有する出力側クロック信号に応じてラッチして、第3ラッチ回路53に出力する。第3ラッチ回路53は、第2ラッチ回路52から下位データLw_R_Data出力されるデータを入力側クロック信号に応じてラッチして、出力データ選択回路55の第2データ入力端子Din1に出力する。
出力データ選択回路55は、選択信号端子SELに入力される入力側クロック信号に応じて第1データ入力端子及Din0及び第2データ入力端子及Din1に入力されるデータを入力側クロック信号1サイクルごとに交互に出力する。出力データ選択回路55は、第1バンク第1メモリ311、第1バンク第2メモリ312、第2バンク第1メモリ321及び第2バンク第2メモリ322に記憶されるデータを、基準周期の半分の周期で順次出力する。
出力データクロック乗換回路50は、第1バンク第1メモリ311、第1バンク第2メモリ312、第2バンク第1メモリ321及び第2バンク第2メモリ322に記憶された2倍長データを基準周期で読み出し、上位データ及び下位データに分けてデータ周期で出力する。
図5は、制御回路60の内部回路ブロック図である。
制御回路60は、書き込みバンク切替スイッチ61と、書き込み制御回路62と、読み出し制御回路63と、データ長保持FIFOキュー64と、書き込みポインタ65と、読み出しポインタ66とを有する。制御回路60は、第1バンクアドレス選択回路67と、第2バンクアドレス選択回路68とを更に有する。
書き込みバンク切替スイッチ61は、トグル動作して、基準周期1サイクルごとに0と1とを順次出力する。書き込みバンク切替スイッチ61が0を出力するサイクルでは、第1バンク31が書き込みバンクとして選択され、書き込みバンク切替スイッチ61が1を出力するサイクルでは、第2バンク32が書き込みバンクとして選択される。
書き込み制御回路62は、入力データクロック乗換回路10からのデータと、書き込みバンク切替スイッチ61からの信号が入力される。書き込み制御回路62は、入力データクロック乗換回路10からのデータに基づいて、入力されるデータ群のデータ長を決定して、データ長に対応するデータ長情報をデータ長保持FIFOキュー64に出力する。例えば、入力されるデータ群がIPパケットである場合には、書き込み制御回路62は、IPヘッダを読み込んで、データ長を決定する。
バッファ30にデータ群を書き込む間、書き込み制御回路62は、第2バンク第2メモリにデータが書き込まれたか否かを判定する。第2バンク第2メモリにデータが書き込まれたと判定したときに、書き込み制御回路62は、書き込みポインタ65にインクリメント信号を出力する。
書き込み制御回路62は、データ群の先頭のデータが書き込まれたバンク及びメモリ、並びに決定したデータ群のデータ長に基づいて、データ群の末尾のデータが書き込まれるバンク及びメモリを決定する。次いで、書き込み制御回路62は、次に到達するデータ群の先頭のデータを書き込むバンク及びメモリを決定する。
データ群の末尾のデータが第1バンク第1メモリ311に書き込まれると決定されるとき、次のデータ群の先頭のデータは第1バンク第2メモリ312に書き込まれると決定される。このとき、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクを示し、先頭データ書き込みメモリ信号Begin_W_Positionは第2メモリを示す。データ群の末尾のデータが第1バンク第2メモリ312に書き込まれると決定されるとき、次のデータ群の先頭のデータは第2バンク第1メモリ321に書き込まれると決定される。このとき、先頭データ書き込みバンク信号Begin_W_Bankは第2バンクを示し、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリを示す。
データ群の末尾のデータが第2バンク第1メモリ321に書き込まれると決定されるとき、次のデータ群の先頭のデータは第2バンク第2メモリ322に書き込まれると決定される。このとき、先頭データ書き込みバンク信号Begin_W_Bankは第2バンクを示し、先頭データ書き込みメモリ信号Begin_W_Positionは第2メモリを示す。データ群の末尾のデータが第2バンク第2メモリ322に書き込まれると決定されるとき、次のデータ群の先頭のデータは第1バンク第1メモリ311に書き込まれると決定される。このとき、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクを示し、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリを示す。
書き込み制御回路62は、次に到達するデータ群の先頭のデータを書き込むバンクが第1バンク又は第2バンクの何れかであるかを示す先頭データ書き込みバンク信号Begin_W_Bankを記憶する。また、書き込み制御回路62は、次に到達するデータ群の先頭のデータを書き込むメモリが第1メモリ又は第2メモリの何れかであるかを示す先頭データ書き込みメモリ信号Begin_W_Positionを記憶する。
書き込み制御回路62は、次に到達するデータ群の先頭のデータが入力されると、書き込みバンク切替スイッチ61の出力信号と、先頭データ書き込みバンク信号Begin_W_Bankとを比較する。書き込みバンク切替スイッチ61の出力信号選択するバンクと、先頭データ書き込みバンク信号Begin_W_Bankが示すバンクとが一致するとき、書き込み制御回路62は、バンク一致信号を生成し記憶する。書き込みバンク切替スイッチ61の出力信号選択するバンクと、先頭データ書き込みバンク信号Begin_W_Bankが示すバンクとが一致しないとき、書き込み制御回路62は、バンク不一致信号を生成し記憶する。
次いで、書き込み制御回路62は、入力データクロック乗換回路10が割り当てた先頭のデータのデータ位置と、先頭データ書き込みメモリ信号Begin_W_Positionとを比較する。書き込み制御回路62は、入力データクロック乗換回路10が割り当てた先頭のデータ位置が上位データであり、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリが第1メモリであるとき、両者は一致していると判定する。また、書き込み制御回路62は、入力データクロック乗換回路10が割り当てた先頭のデータ位置が下位データであり、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリが第2メモリであるとき、両者は一致していると判定する。一方、書き込み制御回路62は、入力データクロック乗換回路10が割り当てた先頭のデータ位置が上位データであり、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリが第2メモリであるとき、両者は一致していないと判定する。また、書き込み制御回路62は、入力データクロック乗換回路10が割り当てた先頭のデータ位置が下位データであり、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリが第1メモリであるとき、両者は一致していないと判定する。
入力データクロック乗換回路10が割り当てた先頭のデータのデータ位置と、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリとが一致するとき、書き込み制御回路62は、メモリ一致信号を生成し記憶する。入力データクロック乗換回路10が割り当てた先頭のデータのデータ位置と、先頭データ書き込みメモリ信号Begin_W_Positionが示すメモリとが一致しないとき、書き込み制御回路62は、メモリ不一致信号を生成し記憶する。
書き込み制御回路62は、タイミング調整回路20にタイミング選択信号を出力して、入力データクロック乗換回路10から出力されるデータに適当な遅延時間を付加する。書き込み制御回路62が入力データクロック乗換回路10から出力されるデータに適当な遅延時間を付加することによって、データ群の先頭のデータを書き込み可能なバンク及びメモリと一致するまで、入力されたデータ群は待機する。
書き込み制御回路62は、データ群のデータ長と書き込まれるデータ群の先頭のデータのデータ位置とから、入力されたデータ群を書き込む期間である書き込み期間を演算する。書き込まれるデータ群の先頭のデータが上位データUp_W_Dataに割り当てられ、データ群のデータ長が偶数である場合、書き込み期間は、データ長の半分に相当するサイクル数になる。また、書き込まれるデータ群の先頭のデータが下位データLw_W_Dataに割り当てられ、データ群のデータ長が偶数である場合、書き込み期間はデータ長の半分に1を加算した値に相当するサイクル数になる。また、データ群のデータ長が奇数である場合、データ群の先頭のデータが上位データUp_W_Data又は下位データLw_W_Dataに割り当てられるかにかかわらず、書き込み期間はデータ長の半分に1を加算した値に相当するサイクル数になる。例えば、書き込まれるデータ群の先頭のデータが上位データUp_W_Dataに割り当てられ、データ長が8である場合、書き込み期間は基準周期4サイクルに相当する期間となる。書き込まれるデータ群の先頭のデータが下位データLw_W_Dataに割り当てられ、データ長が8である場合、書き込み期間は基準周期5サイクルに相当する期間となる。データ長が11である場合、書き込み期間は基準周期6サイクルに相当する期間となる。
書き込み制御回路62がバンク一致信号及びメモリ一致信号を記憶しているとき、書き込み制御回路62は、タイミング調整回路20が第1入力端子に入力されるデータを出力するようにタイミング選択信号を書き込み期間の間、出力する。また、書き込み制御回路62は、演算した書き込み期間に相当する期間に亘って、データ継続信号Data_Write_Enable_Up/Lwを出力する。
書き込み制御回路62がバンク一致信号及びメモリ不一致信号を記憶しているとき、書き込み制御回路62は、タイミング調整回路20が第2入力端子に入力されるデータを出力するようにタイミング選択信号を書き込み期間の間、出力する。また、書き込み制御回路62は、演算した書き込み期間に相当する期間に亘って、データ継続信号Data_Write_Enable_Up/Lwを出力する。
書き込み制御回路62がバンク不一致信号及びメモリ一致信号を記憶しているとき、書き込み制御回路62は、基準周期1サイクルに相当する時間待機する。次いで、書き込み制御回路62は、タイミング調整回路20が第3入力端子に入力されるデータを出力するようにタイミング選択信号を書き込み期間の間、出力すると共に、データ継続信号Data_Write_Enable_Up/Lwを出力する。
書き込み制御回路62がバンク不一致信号及びメモリ不一致信号を記憶しているとき、書き込み制御回路62は、基準周期1サイクルに相当する時間待機する。次いで、書き込み制御回路62は、タイミング調整回路20が第4入力端子に入力されるデータを出力するようにタイミング選択信号を書き込み期間の間、出力すると共に、データ継続信号Data_Write_Enable_Up/Lwを出力する。
読み出し制御回路63は、データ長保持FIFOキュー64からデータ有信号が入力され且つ読み出しOK信号OKが読み出しイネーブル状態になったときに、読み出し制御を開始する。読み出しイネーブル信号REは、出力先がビジーのときにディセーブル状態を示す1が入力され、出力先がビジーでないときにイネーブル状態を示す0が入力される。
読み出し制御回路63は、直前に記憶されたデータ群の末尾のデータが記憶されるバンク及びメモリに基づいて、読み出すデータ群の先頭のデータのバンク、メモリ及びアドレスを決定する。直前に記憶されたデータ群の末尾のデータが第1バンク第1メモリ311に記憶されていた場合、読み出すデータ群の先頭のデータは、第1バンク第2メモリ312の同一アドレスに記憶されていると決定される。直前に記憶されたデータ群の末尾のデータが第1バンク第2メモリ312に記憶されていた場合、読み出すデータ群の先頭のデータは、第2バンク第1メモリ321の同一アドレスに記憶されていると決定される。直前に記憶されたデータ群の末尾のデータが第2バンク第1メモリ321に記憶されていた場合、読み出すデータ群の先頭のデータは、第2バンク第2メモリ322の同一アドレスに記憶されていると決定される。直前に記憶されたデータ群の末尾のデータが第2バンク第2メモリ322に記憶されていた場合、読み出すデータ群の先頭のデータは、第1バンク第1メモリ311の次のアドレスに記憶されていると決定される。
次いで、読み出し制御回路63は、書き込みバンク切替スイッチ61の出力信号に基づいて、読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されているか否かを判定する。読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されていると判定された場合、読み出し制御回路63は、基準周期1サイクルの間、待機した後に、読み出しを開始する。読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されていないと判定された場合、読み出し制御回路63は、読み出しを開始する。読み出しイネーブル信号Data_Read_Enable_Up/Lwが1であり且つ第2バンク32が書き込みバンクとして選択されているとき、第1読み出しイネーブル端子RE1から出力される信号が1になる。すなわち、読み出しイネーブル信号Data_Read_Enable_Upが1であり且つ第2バンク32が書き込みバンクとして選択されているとき、第1読み出しイネーブル端子RE1(Up)から出力される信号が1になる。また、読み出しイネーブル信号Data_Read_Enable_Lwが1であり且つ第2バンク32が書き込みバンクとして選択されているとき、第1読み出しイネーブル端子RE1(Lw)から出力される信号が1になる。読み出しイネーブル信号Data_Read_Enable_Up/Lwが1であり且つ第1バンク31が書き込みバンクとして選択されているとき、第2読み出しイネーブル端子RE2から出力される信号が1になる。すなわち、読み出しイネーブル信号Data_Read_Enable_Upが1であり且つ第1バンク31が書き込みバンクとして選択されているとき、第2読み出しイネーブル端子RE2(Up)から出力される信号が1になる。また、読み出しイネーブル信号Data_Read_Enable_Lwが1であり且つ第1バンク31が書き込みバンクとして選択されているとき、第2読み出しイネーブル端子RE2(Lw)から出力される信号が1になる。
バッファ30に記憶されるデータ群を読み出す間、読み出し制御回路63は、第2バンク第2メモリ322にデータが読み出されたか否かを判定する。第2バンク第2メモリ322にデータが読み出されたと判定したときに、書き込み制御回路62は、読み出しポインタ66にインクリメント信号を出力する。
読み出し制御回路63は、データ長保持FIFOキュー64に記憶されるデータ群のデータ長情報に基づいて、バッファ30に記憶されたデータ群を読み出す期間である読み出し期間を演算する。読み出し制御回路63は、読み出し期間が終了すると、読み出しを終了する。読み出し制御回路63は、読み出しが終了したとき、末尾のデータが記憶されていたバンク及びメモリを記憶する。
データ長保持FIFOキュー64は、書き込み制御回路62が決定したデータ群のデータ長を示すデータ長情報を順次記憶する。書き込みポインタ65は、書き込み制御回路62からインクリメント信号が入力されたときに、書き込みアドレスをインクリメントする。読み出しポインタ66は、読み出し制御回路63からインクリメント信号が入力されたときに、読み出しアドレスをインクリメントする。書き込みポインタ65及び読み出しポインタ66は書き込みアドレス及び読み出しアドレスが最大アドレスに達した後に、先頭のアドレスにラップアラウンドする。
第1バンクアドレス選択回路67は、書き込みバンク切替スイッチ61から出力される信号に基づいて、書き込みポインタ65から出力される書き込みアドレス、及び読み出しポインタ66から出力される読み出しアドレスの何れか一方を選択する。第1バンクアドレス選択回路67は、書き込みバンク切替スイッチ61が0を出力して、第1バンク31を書き込みバンクとして選択するとき、書き込みポインタ65から出力される書き込みアドレスを出力する。第1バンクアドレス選択回路67は、書き込みバンク切替スイッチ61が1を出力して、第2バンク32を書き込みバンクとして選択するとき、読み出しポインタ66から出力される読み出しアドレスを出力する。
第2バンクアドレス選択回路68は、書き込みバンク切替スイッチ61から出力される信号に基づいて、書き込みポインタ65から出力される書き込みアドレス、及び読み出しポインタ66から出力される読み出しアドレスの何れか一方を選択する。第2バンクアドレス選択回路68は、書き込みバンク切替スイッチ61が0を出力して、第1バンク31を書き込みバンクとして選択するとき、読み出しポインタ66から出力される読み出しアドレスを出力する。第2バンクアドレス選択回路68は、書き込みバンク切替スイッチ61が1を出力して、第2バンク32を書き込みバンクとして選択するとき、書き込みポインタ65から出力される書き込みアドレスを出力する。
制御回路60は、入力データクロック乗換回路10に入力されるデータ群を第1バンク31及び第2バンク32に順次記憶し、記憶したデータ群を順に読み出して出力データクロック乗換回路50から出力するように制御する。制御回路60は、第1バンク31及び第2バンク32において直前に記憶されたデータ群の末尾データの記憶位置に続けて順にデータ群を書き込む。
図6は、データ転送装置1のタイムチャートを示す図である。図6において、1サイクルは基準周期に対応し、「Up/Lw_Data」は入力データクロック乗換回路10から出力されるデータを示す。「0.5τWait」は第1遅延回路21から出力される第1遅延データを示し、「0.5τWait_Sel」の直線は第1遅延回路21から出力される第1遅延データが選択されることを示す信号がタイミング選択信号として出力されていることを示す。「1τWait」は第2遅延回路22から出力される第2遅延データを示し、「1τWait_Sel」の直線は第2遅延回路22から出力される第2遅延データが選択されることを示す信号がタイミング選択信号として出力されていることを示す。「1.5τWait」は第3遅延回路23から出力される第3遅延データを示し、「1.5τWait_Sel」の直線は第3遅延回路23から出力される第3遅延データが選択されることを示す信号がタイミング選択信号として出力されていることを示す。「W_Bank」は書き込みバンク切替スイッチ61から出力されるデータを示し、「Wp」は書き込みポインタ65から出力される書き込みアドレスデータを示す。「Up/Lw_W_Data」はバッファ30に書き込まれるデータを示し、「Begin_W_Bank」は書き込み制御回路62から出力される先頭データ書き込みバンク信号を示す。「Begin_W_Position」は書き込み制御回路62から出力される先頭データ書き込みメモリ信号を示す。
図7(a)〜7(d)はそれぞれ、図6に示すデータが書き込まれるバルク及びメモリを示す図である。図7(a)〜7(d)において、「Bank1」の「Up」及び「Lw」はそれぞれ、第1バンク第1メモリ311及び第1バンク第2メモリ312を示す。「Bank2」の「Up」及び「Lw」はそれぞれ、第2バンク第1メモリ321及び第2バンク第2メモリ322を示す。
図6に示すタイムチャートでは、データ転送装置1は、第1データ群A1〜A5と、第2データ群B1〜B7と、第3データ群C1〜C4と、第4データ群D1〜D3が入力される。
サイクル1において、第1データ群A1〜A5の先頭のデータA1及び第2のデータA2が入力データクロック乗換回路10から出力される。第1データ群A1〜A5の先頭のデータA1が入力されると、書き込み制御回路62は、先頭のデータA1に記憶される情報に基づいて、第1データ群A1〜A5のデータ長を5と決定する。
サイクル1では、データ転送装置はデータを全く記憶していない。このため、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクを示す0であり、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリを示す0である。サイクル1では、「W_Bank」は0であり、先頭データ書き込みバンク信号Begin_W_Bankと一致するので、書き込み制御回路62はバンク一致信号を生成し記憶する。また、先頭のデータA1のメモリ位置は第1メモリであり、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリを示すので、書き込み制御回路62はメモリ一致信号を生成し記憶する。書き込み制御回路62はバンク一致信号及びメモリ一致信号を記憶するので、タイミング調整回路20が第1入力端子Din0に入力されるデータを出力するようにタイミング選択信号を出力する。タイミング調整回路20が第1入力端子Din0に入力されるデータを出力するようにタイミング選択信号を出力するので、入力データクロック乗換回路10から出力されるデータが書き込まれる。書き込み制御回路62は、書き込み期間を3サイクルと演算する。
図7(a)に示すように、第1データ群A1〜A5の先頭のデータA1は第1バンク31の第1バンク第1メモリ311のアドレス0に書き込まれ、第2のデータA2は第1バンク31の第1バンク第2メモリ312のアドレス0に書き込まれる。第1データ群A1〜A5の第3のデータA3は第2バンク32の第2バンク第1メモリ321のアドレス0に書き込まれ、第4のデータA4は第2バンク32の第2バンク第2メモリ322のアドレス0に書き込まれる。第1データ群A1〜A5の末尾のデータA5は第1バンク31の第1バンク第1メモリ311のアドレス1に書き込まれる。
サイクル5において、第2データ群B1〜B7の先頭のデータB1及び第2のデータB2が入力データクロック乗換回路10から出力される。第2データ群B1〜B7の先頭のデータB1が入力されると、書き込み制御回路62は、先頭のデータB1に記憶される情報に基づいて、第2データ群B1〜B7のデータ長を7と決定する。
第1データ群A1〜A5の末尾のデータA5は第1バンク31の第1バンク第1メモリ311のアドレス1に記憶されるので、第2データ群B1〜B7の先頭のデータは、第1バンク31の第1バンク第2メモリ312のアドレス1に書き込まれることになる。したがって、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクに対応する0を示し、先頭データ書き込みメモリ信号Begin_W_Positionは第2メモリに対応する1を示す。サイクル5では「W_Bank」は0であり、先頭データ書き込みバンク信号Begin_W_Bankと一致するので、書き込み制御回路62はバンク一致信号を生成し記憶する。先頭のデータB1のメモリ位置は第1メモリであるが、先頭データ書き込みメモリ信号Begin_W_Positionは第2メモリを示すので、書き込み制御回路62はメモリ不一致信号を生成し記憶する。書き込み制御回路62はバンク一致信号及びメモリ不一致信号を記憶するので、タイミング調整回路20が第2入力端子Din1に入力されるデータを出力するようにタイミング選択信号を出力する。タイミング調整回路20が第2入力端子Din1に入力されるデータを出力するようにタイミング選択信号を出力するので、バッファ30には「0.5τWait」で示される第1遅延データが書き込まれる。書き込み制御回路62は、書き込み期間を4サイクルと演算する。
図7(b)に示すように、第2データ群B1〜B7の先頭のデータB1は第1バンク31の第1バンク第2メモリ312のアドレス1に書き込まれ、第2のデータB2は第2バンク32の第2バンク第1メモリ321のアドレス1に書き込まれる。第2データ群B1〜B7の末尾のデータB7は第2バンク32の第2バンク第2メモリ322のアドレス2に書き込まれる。
サイクル12において、第3データ群C1〜C4の先頭のデータC1及び第2のデータC2がデータ転送装置1から出力される。第3データ群C1〜C4の先頭のデータC1が入力されると、書き込み制御回路62は、先頭のデータC1に記憶される情報に基づいて、第3データ群C1〜C4のデータ長を4と決定する。
第2データ群B1〜B7の末尾のデータB7は第2バンク32の第2バンク第2メモリ322のアドレス2に記憶されるので、第3データ群C1〜C4の先頭のデータは、第1バンク31の第1バンク第1メモリ311のアドレス3に記憶されることになる。したがって、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクに対応する0を示し、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリに対応する0を示す。サイクル12では「W_Bank」は1であり、先頭データ書き込みバンク信号Begin_W_Bankと一致しないので、書き込み制御回路62はバンク不一致信号を生成し記憶する。先頭のデータC1のメモリ位置は第1メモリであり、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリであるので、書き込み制御回路62はメモリ一致信号を生成し記憶する。書き込み制御回路62はバンク不一致信号及びメモリ一致信号を記憶するので、タイミング調整回路20が第3入力端子Din2に入力されるデータを出力するようにタイミング選択信号を出力する。タイミング調整回路20が第3入力端子Din2に入力されるデータを出力するようにタイミング選択信号を出力するので、バッファ30には「1τWait」で示される第2遅延データが書き込まれる。書き込み制御回路62は、書き込み期間を2サイクルと演算する。
図7(c)に示すように、第3データ群C1〜C4の先頭のデータC1は第1バンク31の第1バンク第1メモリ311のアドレス3に書き込まれ、第2のデータC2は第1バンク31の第1バンク第2メモリ312のアドレス3に書き込まれる。第3データ群C1〜C4の末尾のデータC4は第2バンク32の第2バンク第2メモリ322のアドレス3に書き込まれる。
サイクル17において、第4データ群D1〜D3の先頭のデータD1がデータ転送装置1から出力される。第4データ群D1〜D3の先頭のデータD1が入力されると、書き込み制御回路62は、先頭のデータD1に記憶される情報に基づいて、第4データ群D1〜D3のデータ長を3と決定する。
第3データ群C1〜C4の末尾のデータC4は第2バンク32の第2バンク第2メモリ322のアドレス3に記憶されるので、第4データ群D1〜D3の先頭のデータは、第1バンク31の第1バンク第1メモリ311のアドレス4に書き込まれることになる。したがって、先頭データ書き込みバンク信号Begin_W_Bankは第1バンクに対応する0を示し、先頭データ書き込みメモリ信号Begin_W_Positionは第2メモリに対応する1を示す。サイクル17では「W_Bank」は1であり、先頭データ書き込みバンク信号Begin_W_Bankと一致しないので、書き込み制御回路62はバンク不一致信号を生成し記憶する。先頭のデータC1のメモリ位置は第2メモリであり、先頭データ書き込みメモリ信号Begin_W_Positionは第1メモリを示す0なので、書き込み制御回路62はメモリ不一致信号を生成し記憶する。書き込み制御回路62はバンク不一致信号及びメモリ一致信号を記憶するので、タイミング調整回路20が第4入力端子Din3に入力されるデータを出力するようにタイミング選択信号を出力する。タイミング調整回路20が第4入力端子Din3に入力されるデータを出力するようにタイミング選択信号を出力するので、バッファ30には「1.5τWait」で示される第3遅延データが書き込まれる。書き込み制御回路62は、書き込み期間を2サイクルと演算する。
図7(d)に示すように、第4データ群D1〜D3の先頭のデータD1は第1バンク31の第1バンク第1メモリ311のアドレス4に書き込まれ、第2のデータD2は第1バンク31の第1バンク第2メモリ312のアドレス4に書き込まれる。第4データ群D1〜D3の末尾のデータD3は第2バンク32の第2バンク第1メモリ321のアドレス4に書き込まれる。
データ転送装置1では、第1バンク第1メモリ311、第1バンク第2メモリ312、第2バンク第1メモリ321及び第2バンク第2メモリ322の順にアドレスごとに、入力されるデータを順次バッファ内部のメモリに記憶していく。データ転送装置1は、4つのメモリの全てのメモリにデータを記憶した後に次のアドレスに移るため、メモリ領域を有効に活用できる。
データ転送装置1では、書き込み制御回路62が、入力データクロック乗換回路10から出力されるデータと、バッファ30に次に書き込まれるバッファ及びメモリとを比較して、タイミング調整回路20を介してデータを適宜遅延させる。このため、データ転送装置1では、入力データクロック乗換回路10から出力されるデータが遅延されることがあるため、レイテンシ性能が低下するという問題がある。
次いで、データ転送装置1におけるレイテンシ性能の低下という問題が生じないデータ転送装置について説明する。
図8は、データ転送装置の他の例の回路ブロック図である。
データ転送装置2は、入力データクロック乗換回路10がタイミング調整回路20を介さずにバッファ30に接続されることが、データ転送装置1と相違する。また、データ転送装置2は、制御回路60の代わりに制御回路70が配置されることが、データ転送装置1と相違する。
図9は、制御回路70の内部回路ブロック図である。
制御回路70は、書き込みバンク切替スイッチ71と、書き込み制御回路72と、読み出し制御回路73と、データ情報FIFOキュー群74と、書き込みポインタ75と、読み出しポインタ76とを有する。制御回路70は、第1バンクアドレス選択回路77と、第2バンクアドレス選択回路78とを更に有する。
書き込みバンク切替スイッチ71、第1バンクアドレス選択回路77及び第2バンクアドレス選択回路78はそれぞれ、書き込みバンク切替スイッチ61、第1バンクアドレス選択回路67及び第2バンクアドレス選択回路68と同一の構成及び機能を有する。
書き込み制御回路72は、入力データクロック乗換回路10からのデータが入力される。書き込み制御回路72は、決定したデータ群のデータ長から、入力されたデータ群を書き込む期間である書き込み期間を演算する。入力されるデータ群の先頭のデータが上位データUp_W_Dataに割り当てられ、データ群のデータ長が偶数である場合、書き込み期間は、データ長の半分に相当するサイクル数になる。また、入力されるデータ群の先頭のデータが下位データLw_W_Dataに割り当てられ、データ群のデータ長が偶数である場合、書き込み期間はデータ長の半分に1を加算した値に相当するサイクル数になる。また、データ群のデータ長が奇数である場合、データ群の先頭のデータが上位データUp_W_Data又は下位データLw_W_Dataに割り当てられるかにかかわらず、書き込み期間はデータ長の半分に1を加算した値に相当するサイクル数になる。書き込み制御回路72は、演算した書き込み期間に相当する期間に亘って、データ継続信号Data_Write_Enableを出力する。
バッファ30にデータ群を書き込む間、書き込み制御回路72は、第1バンク第2メモリ312又は第2バンク第2メモリ322にデータが書き込まれたか否かを判定する。データ群の先頭のデータが第1バンク31に書き込まれたときに第2バンク第2メモリ322にデータが書き込まれたと判定したときに、書き込み制御回路72は、書き込みポインタ75にインクリメント信号を出力する。また、データ群の先頭のデータが第1バンク32に書き込まれたときに第1バンク第2メモリ312にデータが書き込まれたと判定したときに、書き込み制御回路72は、書き込みポインタ75にインクリメント信号を出力する。
書き込み制御回路72は、入力データクロック乗換回路10からデータが入力されると、書き込み開始信号Queue_Writeを基準周期1サイクルに亘ってデータ情報FIFOキュー群74に出力する。
書き込み制御回路72は、データ群の末尾のデータを書き込むときに、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれるか否かを判定する。書き込み制御回路72は、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれていないと判定したときに、書き込みポインタ75にインクリメント信号を出力する。
書き込み制御回路72は、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれていると判定したときに、データ群の末尾のデータに連続して次のデータ群の先頭のデータがあるか否かを判定する。書き込み制御回路72は、データ群の末尾のデータに連続して次のデータ群の先頭のデータがないと判定したときに、書き込みポインタ75にインクリメント信号を出力する。
書き込み制御回路72は、データ群の末尾のデータに連続して次のデータ群の先頭のデータがあると判定したときに、書き込みポインタ75に第2メモリインクリメント選択信号Lw_WP+1_selを出力する。同時に、書き込み制御回路72は、書き込みポインタ75にインクリメント信号を出力する。
読み出し制御回路73は、データ情報FIFOキュー群74からデータ有信号が入力され且つ読み出しOK信号OKがイネーブル状態になったときに、読み出し制御を開始する。まず、読み出し制御回路73は、読み出しキュー信号Read_Queueをデータ情報FIFOキュー群74に出力する。
次いで、読み出し制御回路73は、データ長情報、バンク内開始位置情報及び開始バンク位置情報がデータ情報FIFOキュー群74から入力される。データ長情報は読み出すデータ群のデータ長に対応し、バンク内開始位置情報は読み出すデータ群の先頭のデータが記憶されるメモリに対応し、開始バンク位置情報は読み出すデータ群の先頭のデータが記憶されるバンクに対応する。読み出し制御回路73は、データ情報FIFOキュー群74から入力されるデータ長情報に基づいて、バッファ30に記憶されたデータ群を読み出す期間である読み出し期間を演算する。
次いで、読み出し制御回路73は、読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されているか否かを判定する。このとき、読み出し制御回路73は、書き込みバンク切替スイッチ71の出力信号、及びデータ情報FIFOキュー群74から入力される開始バンク位置情報に基づいて判定する。読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されていると判定された場合、読み出し制御回路73は、基準周期1サイクルの間待機した後に、読み出しを開始する。読み出すデータ群の先頭のデータが記憶されるバンクが書き込みバンクとして選択されていないと判定された場合、読み出し制御回路73は読み出しを開始する。読み出しイネーブル信号Data_Read_Enableが1であり且つ第2バンク32が書き込みバンクとして選択されているとき、第1読み出しイネーブル端子RE1から出力される信号が1になる。読み出しイネーブル信号Data_Read_Enableが1であり且つ第1バンク31が書き込みバンクとして選択されているとき、第2読み出しイネーブル端子RE2から出力される信号が1になる。
バッファ30に記憶されるデータ群を読み出す間、読み出し制御回路73は、第1バンク第2メモリ312又は第2バンク第2メモリ322に記憶されたデータが読み出されたか否かを判定する。データ群の先頭のデータが第1バンク31から読み出したときに第2バンク第2メモリ322に記憶されたデータが読み出されたと判定したときに、読み出し制御回路73は、読み出しポインタにインクリメント信号を出力する。また、データ群の先頭のデータが第2バンク32から読み出したときに第1バンク第2メモリ312に記憶されたデータが読み出されたと判定したときに、読み出し制御回路73は、読み出しポインタにインクリメント信号を出力する。
読み出し制御回路73は、データ群の末尾のデータを読み出すときに、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれているか否かを判定する。読み出し制御回路73は、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれていないと判定したときに、読み出しポインタ76にインクリメント信号を出力する。
読み出し制御回路73は、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれていると判定したときに、次のデータ群の先頭のデータが記憶されるメモリを判定する。ここで、読み出し制御回路73は、次のデータ群の先頭のデータが先のデータ群の末尾のデータが記憶されていたバンクの第2メモリに記憶されている否かを判定する。すなわち、読み出し制御回路73は、データ群の末尾のデータが第1バンク第1メモリ311に書き込まれていると判定したときに、次のデータ群の先頭のデータが第1バンク第2メモリ312に記憶されている否かを判定する。また、読み出し制御回路73は、データ群の末尾のデータが第2バンク第1メモリ321に書き込まれていると判定したときに、次のデータ群の先頭のデータが第2バンク第2メモリ322に記憶されている否かを判定する。読み出し制御回路73は、次のデータ群の先頭のデータがデータ群の末尾のデータが記憶されていたバンクの第2メモリに記憶されていないと判定したときに、読み出しポインタ76にインクリメント信号を出力する。
読み出し制御回路73は、次のデータ群の先頭のデータがデータ群の末尾のデータが記憶されていたバンクの第2メモリに記憶されていると判定したときに、読み出しポインタ76に第2メモリインクリメント選択信号Lw_RP+1_selを出力する。同時に、読み出し制御回路73は、読み出しポインタ76にインクリメント信号を出力する。
図10(a)は、データ情報FIFOキュー群74の内部回路ブロック図であり、図10(b)はデータ情報FIFOキュー群74に記憶されるデータの一例を示す図である。
データ情報FIFOキュー群74は、データ長保持レジスタアレイ741と、バンク内データ書き込み開始位置保持アレイ742と、データ書き込み開始バンク保持アレイ743とを有する。データ情報FIFOキュー群74は、キュー書き込み制御部744と、キュー書き込みポインタ745と、キュー読み出し制御部746と、キュー読み出しポインタ747と、データ群有無検出部748とを更に有する。
データ長保持レジスタアレイ741は、データ転送装置2に入力されるデータ群それぞれのデータ長に対応するデータ長情報を記憶する。バンク内データ書き込み開始位置保持アレイ742は、データ転送装置2に入力されるデータ群それぞれの先頭のデータが書き込まれるメモリに対応するバンク内書き込み開始位置情報を記憶する。データ書き込み開始バンク保持アレイ743は、データ転送装置2に入力されるデータ群それぞれの先頭のデータが書き込まれるバンクに対応する開始バンク位置情報を記憶する。
キュー書き込み制御部744は、データ長保持レジスタアレイ741、バンク内データ書き込み開始位置保持アレイ742及びデータ書き込み開始バンク保持アレイ743への情報の書き込みを制御する。キュー書き込み制御部744は、キュー書き込み信号Queue_Writeがデータ書き込み制御回路72から入力されると、各アレイでの書き込みを開始する。
キュー書き込み制御部744は、入力データクロック乗換回路10からのデータに基づいて、入力されるデータ群のデータ長を決定して、データ長に対応するデータ長情報をデータ長保持レジスタアレイ741に出力する。
キュー書き込み制御部744は、入力データクロック乗換回路10からのデータに基づいて、データ群の先頭のデータが上位データUp_W_Data又は下位データLw_W_Dataの何れのデータとして入力されているかを判定する。次いで、キュー書き込み制御部744は、判定結果に基づいて、データ群の先頭のデータが書き込まれるメモリに対応するバンク内開始位置情報をバンク内データ書き込み開始位置保持アレイ742に出力する。
キュー書き込み制御部744は、書き込みバンク切替スイッチ61からの信号に基づいて、データ群の先頭のデータが第1バンク31又は第2バンク32の何れのバンクに記憶されるかを判定する。キュー書き込み制御部744は、判定結果に基づいて、データ群の先頭のデータが書き込まれるバンクに対応する開始バンク位置情報をデータ書き込み開始バンク保持アレイ743に出力する。
キュー書き込み制御部744は、各アレイへの書き込み処理を終了すると、インクリメント信号をキュー書き込みポインタ745に出力する。
キュー書き込みポインタ745は、キュー書き込み制御部744から入力されるインクリメント信号に基づいて、各アレイのキュー書き込みアドレスをインクリメントする。なお、各アレイのアドレス数は、データ転送装置2が記憶可能なデータ群の数に対応する。
キュー読み出し制御部746は、データ長保持レジスタアレイ741、バンク内データ書き込み開始位置保持アレイ742及びデータ書き込み開始バンク保持アレイ743への情報からの読み出しを制御する。キュー読み出し制御部746は、キュー読み出し信号Queue_Readがデータ読み出し制御回路73から入力されると、所定のアドレスに記憶されるデータ長情報、バンク内開始位置情報及び開始バンク位置情報を読み出し制御回路73に出力する。
データ長情報、バンク内開始位置情報及び開始バンク位置情報を読み出し制御回路73に出力すると、キュー読み出し制御部746は、インクリメント信号をキュー読み出しポインタ747に出力する。キュー読み出しポインタ747は、キュー読み出し制御部746から入力されるインクリメント信号に基づいて、各アレイのキュー読み出しアドレスをインクリメントする。
データ群有無検出部748は、キュー書き込み制御部744から入力されるキュー書き込みアドレスと、キュー読み出し制御部746から入力されるキュー読み出しアドレスとに基づいて、読み出すデータ群があるか否かを判定する。キュー書き込みアドレスとキュー読み出しアドレスとが一致する場合、データ群有無検出部748は、読み出すデータ群がないと判定する。一方、キュー書き込みアドレスとキュー読み出しアドレスとが一致しない場合、データ群有無検出部748は、読み出すデータ群があると判定して、データ有信号を読み出し制御回路73に出力する。
図11は、書き込みポインタ75の内部回路ブロック図である。
書き込みポインタ75は、第1インクリメント部751と、第1選択部752と、ラッチ部753と、第2インクリメント部754と、第2選択部755とを有する。
第1インクリメント部751は、書き込みアドレスをインクリメントしたアドレスを第1選択部752に出力する。第1選択部752は、インクリメントされていないアドレスと、インクリメントされたアドレスとを、インクリメント信号に基づいて選択する。インクリメント信号が入力されないとき、第1選択部752は、インクリメントされていないアドレスを選択して、ラッチ部753に出力する。インクリメント信号を入力されるとき、第1選択部752は、第1インクリメント部751でインクリメントされたアドレスを選択して、ラッチ部753に出力する。ラッチ部753が入力されたアドレスを基準周期1サイクルごとに書き込みアドレスとして出力する。ラッチ部753から出力される書き込みアドレスは、上位データ書き込みアドレス信号WP_Upとして、第1バンク第1メモリ311及び第2バンク第1メモリ321に出力される。
第2インクリメント部754は、書き込みアドレスをインクリメントしたアドレスを第2選択部755に出力する。第2選択部755は、インクリメントされていないアドレスと、インクリメントされたアドレスとを、第2メモリインクリメント選択信号Lw_WP+1_selに基づいて選択する。第2メモリインクリメント選択信号Lw_WP+1_selが入力されないとき、第2選択部755は、インクリメントされていないアドレスを選択する。第2メモリインクリメント選択信号Lw_WP+1_selを入力されるとき、第2選択部755は、第1インクリメント部751でインクリメントされたアドレスを選択する。第2選択部755から出力される書き込みアドレスは、下位データ書き込みアドレス信号WP_Lwとして、第1バンク第2メモリ312及び第2バンク第2メモリ322に出力される。
図12は、読み出しポインタ76の内部回路ブロック図である。
読み出しポインタ76は、第1インクリメント部761と、第1選択部762と、ラッチ部763と、第2インクリメント部764と、第2選択部765とを有する。
第1インクリメント部761は、読み出しアドレスをインクリメントしたアドレスを第1選択部762に出力する。第1選択部762は、インクリメントされていないアドレスと、インクリメントされたアドレスとを、インクリメント信号に基づいて選択する。インクリメント信号が入力されないとき、第1選択部762は、インクリメントされていないアドレスを選択して、ラッチ部763に出力する。インクリメント信号を入力されるとき、第1選択部762は、第1インクリメント部761でインクリメントされたアドレスを選択して、ラッチ部763に出力する。ラッチ部763が入力されたアドレスを基準周期1サイクルごとに読み出しアドレスとして出力する。ラッチ部763から出力される読み出しアドレスは、上位データ読み出しアドレス信号RP_Upとして、第1バンク第1メモリ311及び第2バンク第1メモリ321に出力される。
第2インクリメント部764は、読み出しアドレスをインクリメントしたアドレスを第2選択部765に出力する。第2選択部765は、インクリメントされていないアドレスと、インクリメントされたアドレスとを、第2メモリインクリメント選択信号Lw_RP+1_selに基づいて選択する。第2メモリインクリメント選択信号Lw_RP+1_selが入力されないとき、第2選択部765は、インクリメントされていないアドレスを選択する。第2メモリインクリメント選択信号Lw_WP+1_selを入力されるとき、第2選択部765は、第2インクリメント部764でインクリメントされたアドレスを選択する。第2選択部765から出力される読み出しアドレスは、下位データ読み出しアドレス信号RP_Lwとして、第1バンク第2メモリ312及び第2バンク第2メモリ322に出力される。
制御回路70は、入力データクロック乗換回路10に入力されるデータ群を第1バンク31及び第2バンク32に順次記憶し、記憶したデータ群を順に読み出して出力データクロック乗換回路50から出力するように制御する。制御回路70は、第1バンク31及び第2バンク32において直前に記憶されたデータ群の末尾データが記憶されるアドレス位置よりも後のアドレス位置で、入力データクロック乗換回路10から出力される2倍長データを書き込む。制御回路70は、入力データクロック乗換回路10から出力される2倍長データを書き込むとき、書き込みバンク切替スイッチ71から出力される信号に基づいて、書き込み可能な第1バンク31又は第2バンク32から順にデータ群を記憶する。
図13(a)は、データ転送装置2のタイムチャートを示す図であり、図13(b)〜13(e)はそれぞれ、図13(a)に示すデータが書き込まれるバルク及びメモリを示す図である。図13(a)において、1サイクルは基準周期に対応し、「Up/Lw_Data」は入力データクロック乗換回路10から出力されるデータを示す。「W_Bank」は書き込みバンク切替スイッチ61から出力されるデータを示し、「Wp_Up/Lw」は書き込みポインタ75から出力される第1メモリと第2メモリの書き込みアドレスデータを示す。図13(b)〜13(e)において、「Bank1」の「Up」及び「Lw」はそれぞれ、第1バンク第1メモリ311及び第1バンク第2メモリ312を示す。「Bank2」の「Up」及び「Lw」はそれぞれ、第2バンク第1メモリ321及び第2バンク第2メモリ322を示す。
図13(a)に示すタイムチャートでは、データ転送装置2は、第1データ群A1〜A5と、第2データ群B1〜B7と、第3データ群C1〜C4と、第4データ群D1〜D3が入力される。
データ転送装置2では、データ群がそれぞれ書き込まれた後に、書き込みアドレスがインクリメントされるので、直前に記憶されたデータの末尾のデータが書き込まれたバンク及びメモリにかかわらず、書き込みイネーブルのバンクのメモリに書き込みできる。データ転送装置2では、書き込みイネーブルのバンクのメモリに書き込みできるので、レイテンシ性能の低下という問題が生じない。
図14(a)はデータ転送装置2に入力されるデータ群の一例を示す図である。図14(b)は図14(a)に示すデータ群が第1バンク31から記憶される例を示す図であり、図14(c)は図14(a)に示すデータ群が第2バンク32から記憶される例を示す図である。図14(d)はデータ転送装置2に入力されるデータ群の他の例を示す図である。図14(e)は図14(d)に示すデータ群が第1バンク31から記憶される例を示す図であり、図14(f)は図14(d)に示すデータ群が第2バンク32から記憶される例を示す図である。
図14(b)及び14(c)に示すように、奇数のデータを含むデータ群を記憶するとき、データ転送装置2は、バンクに含まれる一方のメモリのみにデータを記憶して、他方のメモリは空き状態になる。また、図14(b)及び14(c)に示す例では、書き込み期間のサイクル数は奇数であるので、一方のバンクのメモリのみにデータを記憶し、他方のバンクのメモリは空き状態となる。
図14(d)では、データ群の末尾のデータが第1バンク第1メモリ311又は第2バンク第1メモリ321に書き込まれ且つデータ群の末尾のデータに連続して次のデータ群の先頭のデータがある例が示される。
図14(e)に示す例では、第1データ群A1〜A5の末尾のデータA5は、第1バンク第1メモリ311のアドレス1に書き込まれ、第2データ群B1〜B9の先頭のデータB1は、第1バンク第2メモリ312のアドレス2に書き込まれる。すなわち、第2データ群B1〜B9の先頭のデータB1が書き込まれるアドレスは、第1データ群A1〜A5の末尾のデータA5が書き込まれたアドレス1の次のアドレスであるアドレス2である。
図14(f)に示す例では、第1データ群A1〜A5の末尾のデータA5は、第2バンク第1メモリ321のアドレス1に書き込まれ、第2データ群B1〜B9の先頭のデータB1は、第2バンク第2メモリ322のアドレス2に書き込まれる。すなわち、第2データ群B1〜B9の先頭のデータB1が書き込まれるアドレスは、第1データ群A1〜A5の末尾のデータA5が書き込まれたアドレス1の次のアドレスであるアドレス2である。
図15A及び15Bは、第1データA1〜A9の末尾のデータA9と第2データB1〜B5の先頭のデータとが連続していない場合のタイムチャートを示す図である。図16A及び16Bは、第1データA1〜A9の末尾のデータA9と第2データB1〜B5の先頭のデータとが連続している場合のタイムチャートを示す図である。
図15A及び15Bに示すタイムチャートでは、第1データA1〜A9の末尾のデータA9が第1バンク第1メモリ311に記憶されるものの、第1データA1〜A9の末尾のデータA9と第2データB1〜B5の先頭のデータB1とが連続していない。この場合、書き込み制御回路72は、書き込みポインタ75に第2メモリインクリメント選択信号Lw_WP+1_selを出力しないので、第2データB1〜B5の先頭のデータB1は第2バンク第2メモリ322に書き込まれる。
一方、図16A及び16Bに示すタイムチャートでは、第1データA1〜A9の末尾のデータA9が第1バンク第1メモリ311に記憶され、且つ第1データA1〜A9の末尾のデータA9と第2データB1〜B5の先頭のデータB1とが連続している。この場合、書き込み制御回路72は、書き込みポインタ75に第2メモリインクリメント選択信号Lw_WP+1_selを出力して、第2データB1〜B5の先頭のデータB1は第1バンク第2メモリ312に書き込まれる。
図15A及び15Bに示すタイムチャートでは、第1データA1〜A9の末尾のデータA9は第1バンク第1メモリ311のアドレス2に記憶され、第2データB1〜B5の先頭のデータB1は第2バンク第2メモリ322のアドレス3に記憶される。この場合、読み出し制御回路73は、読み出しポインタ76に第2メモリインクリメント選択信号Lw_RP+1_selを出力しない。読み出し制御回路73が第2メモリインクリメント選択信号Lw_RP+1_selを出力しないので、データ転送装置2は、第1データA1〜A9の末尾のデータA9を読み出した次のサイクルで、第2データB1〜B5の先頭のデータB1を読み出す。
図16A及び16Bに示すタイムチャートでは、第1データA1〜A9の末尾のデータA9は第1バンク第1メモリ311のアドレス2に記憶され、第2データB1〜B5の先頭のデータB1は第1バンク第2メモリ312のアドレス3に記憶される。この場合、読み出し制御回路73は、読み出しポインタ76に第2メモリインクリメント選択信号Lw_RP+1_selを出力する。読み出し制御回路73が第2メモリインクリメント選択信号Lw_RP+1_selを出力するので、データ転送装置2は、第1データA1〜A9の末尾のデータA9を読み出したサイクルで、第2データB1〜B5の先頭のデータB1を読み出す。
データ転送装置1及び2は、入力データクロック乗換回路10と、バッファ30とを有する。入力データクロック乗換回路10は、入力されるデータ群に含まれるデータを上位データ及び下位データに順次に割り当てることによりデータ幅を2倍にして、入力されるデータの2倍の周期である基準周期1サイクルごとに上位データ及び下位データを出力する。バッファは、第1メモリ311、321及び第2メモリ312、322をそれぞれ有する第1バンク及び第2バンクを有する。データ転送装置1及び2は、上位データ及び下位データを第1メモリ311、321及び第2メモリ312、322にそれぞれ書き込むので、第1バンク及び第2バンクのメモリの書き込み時間の2倍のクロック周期を有するデータを書き込むことができる。
また、データ転送装置1及び2では、第1バンク31が書き込み状態であるときに第2バンク32は読み出し状態になり、第2バンク32が書き込み状態であるときに第1バンク31は読み出し状態になる。データ転送装置では、何れか一方のメモリが書き込み状態のとき他方のメモリは読み出し状態になるので、データ転送装置は書き込みと読み出しが同時に実行できる。
データ転送装置1及び2は、データを記憶するバッファリング回路として使用してもよい。