(57)【特許請求の範囲】
【請求項１】
第１のクロックに同期して入力ポートを介して入力したデータを、その入力順に第２のクロックに同期して出力ポートを介して出力する記憶装置において、
一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、
データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、上記シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、
上記シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備え、
上記入力ポートが上記シングルポートメモリに接続し、上記出力ポートが上記デュアルポートメモリに接続し、
上記制御手段は、入力ポートを介して入力したデータを第１のクロックに同期してシングルポートメモリに書きこみ、シングルポートメモリへ書き込みを行なわない期間において、第１のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこみ、また、外部装置からデュアルポートメモリへ読み出し要求があったときに、第２のクロックに同期してデュアルポートメモリからデータを読み出して出力ポートを介して出力するように、両メモリを制御する
ことを特徴とするＦＩＦＯ記憶装置。
【請求項２】
上記制御手段は、ＦＩＦＯ記憶装置に対する書き込み要求に基づいて、シングルポートメモリへ書き込みを行なわない期間において、第１のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこむことを特徴とする請求項１記載のＦＩＦＯ記憶装置。
【請求項３】
上記シングルポートメモリの動作周波数は、入力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しいことを特徴とする請求項２記載のＦＩＦＯ記憶装置。
【請求項４】
上記制御手段は、上記デュアルポートメモリがエンプティであるか否かを示すエンプティ信号を出力することを特徴とする請求項２記載のＦＩＦＯ記憶装置。
【請求項５】
上記制御手段は、上記デュアルポートメモリにおいて、次にデータの読み出しを開始するアドレスが、次にデータの書き込みを開始するアドレスに、その差が所定値以内になるように追いついたときに、上記デュアルポートメモリがエンプティであると判定することを特徴とする請求項４記載のＦＩＦＯ記憶装置。
【請求項６】
上記制御手段はデュアルポートメモリのエンプティを判定するための上記所定値を格納する格納手段を備え、該所定値は外部より変更可であることを特徴とする請求項５記載のＦＩＦＯ記憶装置。
【請求項７】
上記入力ポートに接続されるインタフェースは、ＩＥＥＥ１３９４インタフェースであることを特徴とする請求項２記載のＦＩＦＯ記憶装置。
【請求項８】
第１のクロックに同期して入力ポートを介して入力したデータを、その入力順に第２のクロックに同期して出力ポートを介して出力する記憶装置において、
一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、
データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、上記シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、
上記シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備え、
上記入力ポートが上記デュアルポートメモリに接続し、上記出力ポートが上記シングルポートメモリに接続し、
上記制御手段は、入力ポートを介して入力したデータを第１のクロックに同期してデュアルポートメモリに書きこみ、一方、外部装置からシングルポートメモリへ読み出し要求があったときに、第２のクロックに同期してシングルポートメモリからデータを読み出して出力ポートを介して出力し、シングルポートメモリからデータの読み出しを行なわない期間において、第１のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むように、両メモリを制御する
ことを特徴とする請求項１記載のＦＩＦＯ記憶装置。
【請求項９】
上記シングルポートメモリの動作周波数は、出力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しいことを特徴とする請求項８記載のＦＩＦＯ記憶装置。
【請求項１０】
上記制御手段は、上記デュアルポートメモリがフルであるか否かを示すフル信号を出力することを特徴とする請求項８記載のＦＩＦＯ記憶装置。
【請求項１１】
上記制御手段は、上記デュアルポートメモリにおいて、次にデータの書き込みを開始するアドレスが、次にデータの読み出しを開始するアドレスに、その差が所定値以内になるように追いついたときに、上記デュアルポートメモリがフルであると判定することを特徴とする請求項１０記載のＦＩＦＯ記憶装置。
【請求項１２】
上記制御手段はデュアルポートメモリのフルを判定するための上記所定値を格納する格納手段を備え、該所定値は外部より変更可であることを特徴とする請求項１１記載のＦＩＦＯ記憶装置。
【請求項１３】
上記出力ポートに接続されるインタフェースは、ＩＥＥＥ１３９４インタフェースであることを特徴とする請求項８記載のＦＩＦＯ記憶装置。
【請求項１４】
上記制御手段は、前記外部装置からの読み出し要求に基づいて、シングルポートメモリからデータの読み出しを行なわない期間において、第１のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むことを特徴とする請求項８記載のＦＩＦＯ記憶装置。
【請求項１５】
上記デュアルポートメモリの記憶容量を、上記シングルポートメモリの記憶容量よりも小さく設定することを特徴とする請求項１ないし請求項１４のいずれか１つに記載のＦＩＦＯ記憶装置。
【請求項１６】
上記シングルポートメモリの記憶容量と上記デュアルポートメモリの記憶容量との合計が、上記入力ポートに接続されるインタフェースにより規定されるパケットの最大サイズ以上に設定することを特徴とする請求項１５記載のＦＩＦＯ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータの記憶装置であって、特に、データの先入れ先出し（ＦＩＦＯ）機能を有するデータ記憶装置に関する。
【０００２】
【従来の技術】
一般に、画像データや音声データを処理する情報処理機器において、装置または回路ブロック間でのデータ転送時の動作タイミングを調整するために、入力側動作と出力側動作が非同期に実現できるＦＩＦＯ（First In First Out）型の記憶装置が使用されている。図１８は一般的なＦＩＦＯ型の記憶装置の構成を示した図である。図に示すように、ＦＩＦＯメモリ２は、データの入力（書き込み）と出力（読み出し）とが同時に（すなわち、互いに非同期に）行なえるデュアルポートメモリ２３を備えており、このデュアルポートメモリ２３に対するデータの入力、出力動作はそれぞれの制御部２４、２６により非同期に制御される。
【０００３】
【発明が解決しようとする課題】
しかし、一般にデュアルポートメモリは、シングルポートメモリに比べて回路規模が大きくまた高価であるため、ＦＩＦＯ型記憶装置の回路規模が大きくなり、製造コストも高くなる。このため、シングルポートメモリを用いたＦＩＦＯ型記憶装置がある。
【０００４】
シングルポートメモリを用いたＦＩＦＯ型記憶装置の一つとして特開平８−１３７７４１号公報に開示された発明がある。この従来の発明では、シングルポートメモリを用いてＦＩＦＯ型記憶装置を構成している。具体的には、外部から入力した書き込みパルス又は読み出しパルスより小さい幅の制御信号をそれぞれ生成し、それらの制御信号により、書きこみ／読み出し動作を制御するようにしている。しかし、この従来発明では、ＦＩＦＯ動作で連続したアクセスを行なうためには、入出力動作における速い方の動作周波数の更に２倍以上の周波数で動作可能なシングルポートメモリを用いる必要がある。そのために高価な高速メモリが必要になるか、または、アクセス速度の制限を低くしなければならないという問題がある。また、この従来発明では、速い動作周波数で動作させない場合であっても、バースト転送が不可能であるという問題を有している。
【０００５】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、回路規模を低く押さえかつ安価に構成できるＦＩＦＯ型記憶装置を提供することにある。
【０００６】
【課題を解決するための手段】
本発明に係るＦＩＦＯ装置は、第１のクロックに同期して入力ポートを介して入力したデータを、その入力順に第２のクロックに同期して出力ポートを介して出力する記憶装置である。そのＦＩＦＯ記憶装置は、一時にデータの書き込み又は読み出し動作のいずれかのみが可能なメモリ素子であって、入力したデータを出力のために保持するシングルポートメモリと、データの書き込み又は読み出し動作を非同期に実行可能なメモリ素子であって、シングルポートメモリ及び外部装置との間でデータを非同期に転送するデュアルポートメモリと、シングルポートメモリ及びデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備えた。
【０００７】
上記のＦＩＦＯ装置において、入力ポートがシングルポートメモリに接続され、出力ポートがデュアルポートメモリに接続されてもよい。このとき、制御手段は、入力ポートを介して入力したデータを第１のクロックに同期してシングルポートメモリに書きこみ、シングルポートメモリへ書き込みを行なわない期間においては、第１のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこむ。また、制御手段は、外部装置からデュアルポートメモリへ読み出し要求があったときに、第２のクロックに同期してデュアルポートメモリからデータを読み出して出力ポートを介して出力するように、両メモリを制御する。
【０００８】
上記のＦＩＦＯ装置において、シングルポートメモリの動作周波数は入力ポートに接続される外部装置の動作周波数に等しく、デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しくするようにしてもよい。
【０００９】
また、上記制御手段は、デュアルポートメモリがエンプティであるか否かを示すエンプティ信号を出力してもよい。このとき、制御手段は、デュアルポートメモリにおいて、次にデータの読み出しを開始するアドレスが、次にデータの書き込みを開始するアドレスに、その差が所定値以内になるように追いついたときに、デュアルポートメモリがエンプティであると判定するようにしてもよい。さらに、制御手段は、デュアルポートメモリのエンプティを判定するための所定値を格納する格納手段を備えてもよく、その所定値は外部より変更可とする。
【００１０】
また、上記のＦＩＦＯ装置において、入力ポートがデュアルポートメモリに接続され、出力ポートがシングルポートメモリに接続されてもよい。このとき、制御手段は、入力ポートを介して入力したデータを第１のクロックに同期してデュアルポートメモリに書きこみ、一方、外部装置からシングルポートメモリへ読み出し要求があったときに、第２のクロックに同期してシングルポートメモリからデータを読み出して出力ポートを介して出力し、シングルポートメモリからデータの読み出しを行なわない期間において、第１のクロックに同期してデュアルポートメモリに蓄えられたデータを読み出してシングルポートメモリに書き込むように、両メモリを制御する。
【００１１】
また、シングルポートメモリの動作周波数は、出力ポートに接続される外部装置の動作周波数に等しく、上記デュアルポートメモリの動作周波数は入力ポート及び出力ポートに接続される外部装置の動作周波数のうち速い方の動作周波数に等しくするようにしてもよい。
【００１２】
制御手段は、デュアルポートメモリがフルであるか否かを示すフル信号を出力するようにしてもよい。このとき、制御手段は、デュアルポートメモリにおいて、次にデータの書き込みを開始するアドレスが、次にデータの読み出しを開始するアドレスに、その差が所定値以内になるように追いついたときに、デュアルポートメモリがフルであると判定するようにしてもよい。また、制御手段はデュアルポートメモリのフルを判定するための所定値を格納する格納手段を備えてもよく、その所定値は外部より変更できるようにする。
【００１３】
ＦＩＦＯ装置において、入力ポート又は出力ポートに接続されるインタフェースは、例えば、ＩＥＥＥ１３９４インタフェースであってもよい。また、ＦＩＦＯ装置においては、デュアルポートメモリの記憶容量を、シングルポートメモリの記憶容量よりも小さく設定するのが好ましい。また、シングルポートメモリの記憶容量とデュアルポートメモリの記憶容量との合計が、入力ポートに接続されるインタフェースにより規定されるパケットの最大サイズ以上になるように設定するのが好ましい。
【００１４】
【発明の実施の形態】
以下、添付の図面を参照し、本発明に係るＦＩＦＯ型メモリの実施形態について詳細に説明する。
【００１５】
なお、以下に説明するＦＩＦＯ型メモリ（以下「ＦＩＦＯメモリ」という。）は、転送データを格納する記憶手段としてシングルポートメモリを有し、さらに、ＦＩＦＯメモリ全体としての非同期動作を実現するために、シングルポートメモリと、入力または出力ポートとの間のデータの非同期転送手段としてデュアルポートメモリを備える。したがって、シングルポートメモリの記憶容量は、ＦＩＦＯ型メモリ全体の記憶容量とほぼ同等の容量に設定し、デュアルポートメモリの記憶容量は、データの非同期転送に必要な最小限の容量に設定する。このように、シングルポートメモリとデュアルポートメモリを組み合わせ、かつ、デュアルポートメモリの容量を低く抑えることにより、回路規模、製造コストの増大を抑えたＦＩＦＯ型メモリを実現できる。以下にその詳細を説明する。
【００１６】
（第１の実施形態）
＜ＦＩＦＯメモリの構成＞
図１に本実施形態におけるＦＩＦＯメモリの構成を示す。図１に示すように、ＦＩＦＯメモリ１は入力ポートＡと出力ポートＢを有しており、さらに、一時に入力または出力動作のいずれかが可能なシングルポートメモリ（以下「１ポートメモリ」という。）１１と、同時にデータの入出力が可能な非同期デュアルポートメモリ（以下「２ポートメモリ」という。）１３と、ＦＩＦＯメモリ１へ入力したデータの書き込みを制御する入力制御部１４と、２ポートメモリ１３からのデータの出力を制御する出力制御部１６とを備える。１ポートメモリ１１の容量値は、ＦＩＦＯメモリ１全体で要求される容量とほぼ同等の値に設定し、２ポートメモリ１３の値は、２ポートメモリの回路規模を低減するために非同期転送において必要とされる最小限の容量値、したがって、１ポートメモリ１１の容量より大幅に少ない値に設定するのが好ましい。
【００１７】
図１に示すＦＩＦＯメモリ１は、ＩＥＥＥ１３９４のリンク層とそれ以上の層との間のインターフェースにおいて使用され、ＩＥＥＥ１３９４インタフェース側（以下「リンク側」という。）から、他のインタフェース側（以下「ＤＭＡ側」という）へデータを転送する際に使用可能なメモリである。図１に示すＦＩＦＯメモリは、このようにリンク側からのデータを受信するため受信型と呼ぶ。このため、図１の構成では、入力ポートＡ側に１ポートメモリ１１を、出力ポートＢ側に２ポートメモリ１３を配置している。
【００１８】
図２は、図１に示すＦＩＦＯメモリ１のさらに具体的な構成を示した図であり、ＦＩＦＯメモリ１に対する各種制御信号及びデータ等を詳細に示している。
【００１９】
図２において、１ポートメモリ１１は３３ビット×１０２４ワードのクロック同期式のシングルポートＲＡＭで構成される。但し、この１ポートＲＡＭ１１はデータの入力／出力のためのデータバスをそれぞれ別々に有している。２ポートメモリ１３は、３３ビット×３２ワードの非同期２ポートを持ったレジスタファイルで構成されている。また、図１に示す入力制御部１４は、図２においてはリンク側とＦＩＦＯメモリ間のデータをインターフェースする回路部であるＬコントローラ１５により構成される。また、図１に示す出力制御部１７は、図２においてはＤＭＡ側とＦＩＦＯメモリ１間のデータをインターフェースする回路ブロックであるＤコントローラ１７により構成される。さらに、ＦＩＦＯメモリ１はレジスタ１９を有しており、その値は外部から読み出し、書き込みが可能である。
【００２０】
＜ＦＩＦＯメモリの制御信号、データバス＞
図２に示すＦＩＦＯメモリに対する制御信号及びデータは以下のとおりである。なお、信号名の最後に付加される「Ｂ」の表記は、その信号がアクティブ・ローで動作することを意味する。また、説明の便宜上、信号名又はデータ名と、それを搬送する信号線名又はデータバス名は同じものを使用する。
ＬＣＬＫ：リンク側の制御クロック。
ＬＷＲＢ：リンク側からＦＩＦＯメモリ１へのデータの書き込み要求信号。
ＬＥＯＰ：書きこむパケットデータが最終のデータであることを示す信号。
ＬＤＴ［３１：０］：ＦＩＦＯメモリ１への書き込みデータ。３２ビット幅を持つ。
ＦＦＵＬ：ＦＩＦＯメモリ１の書き込みのための空き容量がなく、データの書き込みができない状態、すなわち、フル（ＦＵＬＬ）になったことを示す信号。したがって、ＦＦＵＬが“ＨＩＧＨ”の期間にリンク側はＦＩＦＯメモリへ新しいデータを書き込んではいけない。
ＤＣＬＫ：ＤＭＡ側の制御クロック。
ＦＲＲＥＱＢ：ＤＭＡ側からのＦＩＦＯメモリ１へのデータ読み出し要求信号。
ＦＲＡＣＫＢ：ＦＩＦＯメモリ１からＤＭＡ側への読み出し要求に対するアクノリッジ信号。
ＦＲＷＡＩＴ：ＤＭＡ側がデータ読み出し要求を出力している期間において、データの読み出しをストップさせたい期間を制御するための読み出し停止信号。
ＦＲＥＯＰ：パケットの最終データであることを示すパケット終了信号（以下「ＥＯＰ信号」という）。
ＦＲＤＴ［３１：０］：ＦＩＦＯメモリ１から読み出されたデータ。３２ビット幅を有する。
ＦＣＫ：１ポートメモリ１１を制御するためのクロック。
ＦＡＤ［９：０］：１ポートメモリ１１のアドレス。
ＦＩＤＴ［３２：０］：１ポートメモリ１１への入力データ。３２ビット目（ＦIＤＴ［３２］）には、そのデータがパケットの最終データであることを示すビット（ＥＯＰ）を含む。
ＦＷＥＢ：１ポートメモリ１１に対するデータの書き込み要求信号。
ＦＯＤＴ［３２：０］：１ポートメモリ１１からの出力データ。３２ビット目（ＦＯＤＴ［３２］）には、そのデータがパケットの最終データであることを示すビット（ＥＯＰ）を含む。
ＲＷＤＴ［３２：０］：２ポートメモリ１３へ入力される１ポートメモリ１１からの出力データ（ＦＯＤＴ［３２：０］）。
ＲＷＡＤ［４：０］：２ポートメモリ１３にデータを書き込む際の書き込みアドレス。
ＲＷＲＢ：２ポートメモリ１３への書き込み要求信号。
ＲＲＡＤ［４：０］：２ポートメモリ１３からデータを読み出す際の読み出しアドレス。バイナリコードで表現されている。
ＲＲＤＴ［３２：０］：２ポートメモリ１３から読み出したデータ。３２ビット目には、ＥＯＰを示すビットを含む。
ＲＲＡＧ［４：０］：読み出しアドレスＲＲＡＤ［４：０］のグレイコード値。Ｄコントローラ１７からＬコントローラ１５に入力される。
ＲＳＴＢ：ＤＭＡ側から読み出し要求があった時に、クロックＤＣＬＫに同期して１クロックの期間のみ「ＬＯＷ」になるスタート信号。
ＲＥＭＰ：２ポートメモリ１３に蓄えられたデータが、ある規則のもとで、メモリにて読み出されるデータがない状態すなわちエンプティ（ＥＭＰＴＹ）であることを示す信号。
【００２１】
＜ＦＩＦＯメモリの動作の概要＞
以上のように構成されるＦＩＦＯメモリ１は、一方のインタフェース（ＩＥＥＥ１３９４）側からのデータ入力と、他方のインタフェース（ＤＭＡ）側へ出力とを非同期に行うことを可能とする。つまり、ＩＥＥＥ１３９４側から入力ポートＡを介して入力されたデータは１ポートメモリ１１に書き込まれ、蓄えられる。この１ポートメモリ１１へのデータ書き込みが行なわれていない間、１ポートメモリに蓄えられたデータが順次読み出され、２ポートメモリ１３に書き込まれる。２ポートメモリ１３に書き込まれたデータは、ＤＭＡ側からの読み出し要求にしたがい読み出され、出力ポートＢを介して出力される。このとき、２ポートメモリ１３は非同期動作が可能なため、１ポートメモリ１１からのデータを書き込み動作中においてもデータの読み出しは可能である。かかる各メモリ１１、１３の動作はＬコントローラ１５、Ｄコントローラ１７により以下のように制御される。
【００２２】
すなわち、Ｌコントローラ１５は、ＩＥＥＥ１３９４側からデータ書き込み要求があれば、１ポートメモリ１１へデータを書き込み、１ポートメモリ１１へのデータを書き込みを行なわない期間において、１ポートメモリ１１から２ポートメモリへデータを転送するよう制御する。このとき、Ｌコントローラ１５は、１ポートメモリ１１及び２ポートメモリ１３のフル状態／エンプティ状態を確認しながら、書き込み／読み出し動作を制御する。すなわち、メモリ１１、１３がフルであれば書き込み動作を行なわず、エンプティであれば読み出し動作を行なわないように制御する。このように、Ｌコントローラ１５はＩＥＥＥ１３９４側からの書き込み要求を優先して行なうようにメモリ１１、１３を制御する。これによりＩＥＥＥ１３９４側からのバースト転送を可能にする。一方、Ｄコントローラ１７は、ＤＭＡ側からの読み出し要求にしたがい、２ポートメモリ１３からデータを読み出し、出力するようにメモリ１３を制御する。このとき、Ｄコントローラ１７は、Ｌコントローラ１５からのエンプティ信号ＲＥＭＰに基き２ポートメモリ１３のエンプティを判断しながら２ポートメモリ１３の読み出し動作を制御する。
【００２３】
以下、これらの動作を行うＬコントローラ１５、Ｄコントローラ１７について詳細に説明する。
【００２４】
＜Ｄコントローラの構成・動作＞
図３は、Ｄコントローラ１７の詳細な構成を示した図である。Ｄコントローラ１７は、制御部３１と、グレイコードで計数するグレイコードカウンタ３３と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器（Ｇ／Ｂ変換器）３５とを備える。さらに、Ｄコントローラ１７は、信号ＲＳＴＢを生成するためのＤフリップフロップ３７とＯＲゲート３８とを備える。グレイコードカウンタ３３はクロックＤＣＬＫに同期してカウントアップしていくことにより読み出しアドレスを生成する。また、グレイコードカウンタ３３は制御部３１からのイネーブル信号によりその停止／作動が制御される。このように、グレイコードカウンタを用いるのは、Ｌコントローラ１５においてアドレスの変化点においてアドレスが参照された場合であってもアドレスの誤差を最小に抑制するためである。
【００２５】
Ｄコントローラ１７の動作を説明する。
ＦＩＦＯメモリ１に対してＤＭＡ側からの読み出し要求があると、読み出し要求信号ＦＲＲＥＱＢが立下り、この立下りによりＤフリップフロップ３７とＯＲゲート３８により、ＤＣＬＫクロックで１パルス期間だけ“ＬＯＷ”となるスタート信号ＲＳＴＢが生成される。このＲＳＴＢ信号は制御部３１に入力され、制御部３１では読み出し要求信号ＦＲＲＥＱＢ、読み出し停止信号ＦＲＷＡＩＴ、読み出しデータＲＲＤＴ［３２：０］及びエンプティ信号ＲＥＭＰに基いて、読み出しデータＦＲＤＴ［３１：０］、アクノリッジ信号ＦＲＡＣＫＢ、パケット終了信号ＦＲＥＯＰ及びカウントアップイネーブル信号が生成される。ここで、カウントアップイネーブル信号とは、グレイ−バイナリ変換器３３のカウントアップ動作の作動／停止を制御する信号である。また、前述のようにデータＦＲＤＴ［３１：０］とデータＲＲＤＴ［３１：０］とは同じものである。パケット終了信号ＦＲＥＯＰの値は、データＲＲＤＴの最後のビット（３３番目のビット）の値（ＲＲＤＴ［３２］）である。また、アドレスＲＲＡＧ［４：０］はグレイ−バイナリカウンタ３５の出力であり、信号ＲＳＴＢによりリセットされる。そして、アドレスＲＲＡＤ［４：０］は、グレイコードで表されるＲＲＡＧ［４：０］の値をグレイ−バイナリカウンタ３５でバイナリコードに変換した値である。
【００２６】
＜Ｌコントローラの構成・動作＞
図４に、Ｌコントローラ１５の構成図を示す。Ｌコントローラ１５は、制御部４１と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器（Ｇ／Ｂ変換器）４３と、バイナリカウンタ４５と、Ｄフリップフロップ４７ｂ〜４７ｄと、ＯＲゲート４９とを備える。Ｄフリップフロップ４７ｂ〜４７ｄとＯＲゲート４９とは、スタート信号ＬＳＴＢを生成する。
【００２７】
Ｌコントローラ１５の動作を説明する。
Ｌコントローラ１５において、Ｄコントローラ１７から入力されるアドレスＲＲＡＧ［４：０］は、クロック信号ＬＣＬＫに同期してフリップフロップ４７ａでラッチされた後、グレイ−バイナリ変換器４３でグレイコードからバイナリコードに変換され、アドレスＬＲＡＤ［４：０］として制御部４１に入力される。同様に、Ｄコントローラ１７から入力されるスタート信号ＲＳＴＢをクロックＬＣＬＫで同期化した信号ＬＳＴＢも制御部４１に入力される。また、書き込み要求信号ＬＷＲＢ、パケット終了信号ＬＥＯＰ、データ信号ＬＤＴ［３１：０］、データ信号ＦＯＤＴ［３２］及びアドレス信号ＲＷＡＤ［４：０］も制御部４１に入力され、制御部４１はバイナリカウンタ４５のカウントアップ動作の作動／停止を制御するイネーブル信号、フル信号ＦＦＵＬ、クロックＦＣＫ、アドレス信号ＦＡＤ［９：０］、データ信号ＦＩＤＴ［３２：０］、書き込み要求信号ＦＷＥＢ、エンプティ信号ＲＥＭＰ及び書き込み要求信号ＲＷＲＢを出力する。ここで、データ信号ＦＩＤＴ［３２：０］は、データ信号ＬＤＴ［３１：０］のデータに、信号ＬＥＯＰのデータを付加したものである。また、アドレス信号ＲＷＡＤはバイナリカウンタ４５の出力であり、信号ＬＳＴＢによりリセットされる。
【００２８】
＜２ポートメモリのエンプティ状態の判断＞
Ｌコントローラ１５の制御部４１は、２ポートメモリ１３のエンプティ状態を示すエンプティ信号ＲＥＭＰを出力する。エンプティ状態であるか否かの判断は次のように行なう。すなわち、Ｌコントローラ１５の制御部４１は、２ポートメモリ１３において、次にデータの読み出しを開始するアドレスである読み出し開始アドレスと、次にデータの書き込みを開始するアドレスである書き込み開始アドレスとを比較し、書き込みアドレスが読み出しアドレスよりも大きく、かつ、それらのアドレスの差が所定値より小さくなったときに、すなわち、読み出しアドレスが書き込みアドレスに所定値以内に追いついてきたときに、エンプティであると判断する。
【００２９】
このように、読み出し開始アドレスと書き込み開始アドレスとの差分を用いてエンプティ状態を判断するようにしたのは、２ポートメモリ１３においては、読み出し動作と書き込み動作とが非同期に行なわれることから、エンプティ状態の判断動作中に読み出しアドレスが進行してしまうことがあり、エンプティ状態でないと判断されたにもかかわらず、実際の読み出し時にはエンプティ状態となってしまうことがある。そこで、エンプティ状態の判断動作中のアドレスの進行を考慮し、読み出しアドレスが書き込みアドレスに所定量以上近づいたときにエンプティであると判断するようにしている。
【００３０】
具体的には、本実施形態では、以下のような式で生成されるｗＲＥＭＰ信号をまず求め、その後、この信号ｗＲＥＭＰをクロックＬＣＬＫで同期化してエンプティ信号ＲＥＭＰを得る。なお、次式はＲＴＬ言語にしたがっている。
0003926524.tif 000002
ここで、「ＲＲＡＤ」は２ポートメモリ１３に対する読み出し開始アドレスであり、「ＲＷＡＤ」は２ポートメモリ１３に対する書き込み開始アドレスである。
【００３１】
また、「ＲＥＶＡＬ」はエンプティ状態の判断基準となる３ビットの可変値（ＲＥＶＡＬ［２：０］）であり、レジスタ１９に格納されている。この値は外部より変更できる。また、上式において、書き込み開始アドレス（RWAD）と読み出し開始アドレス（RRAD）とを最初に比較して場合分けを行なっているが、これは、書き込みアドレス（RWAD）が２ポートメモリのメモリ空間の最大アドレスを超えて先頭のアドレスに戻り、読み出し開始アドレス（RRAD）が書き込み開始アドレス（RWAD）よりも大きくなる場合があるので、このような場合でも、それらのアドレス間の差分を正しく求め、信号ｗＲＥＭＰを矛盾なく求められるようにする意図からである。
【００３２】
＜２ポートメモリのフル状態の判断＞
また、Ｌコントローラ１５の制御部４１は、２ポートメモリ１３のフル状態を示す信号ＲＦＵＬ（図示せず）を出力する。フル状態であるか否かの判断は、２ポートメモリ１３における読み出し側開始アドレスが書き込み側開始アドレスよりも大きく且つそれらの差が所定値よりも小さいときに、すなわち、読み出し側開始アドレスに書き込み側開始アドレスが所定値以内に追いついてきたときに、フル状態であると判断する。より具体的には、フル信号ＲＦＵＬは以下の式で生成される。
0003926524.tif 000003
【００３３】
＜１ポートメモリのフル状態、エンプティ状態の判断＞
Ｌコントローラ１５の制御部４１は、１ポートメモリ１１において次にデータの書き込みを開始するアドレスである書き込み側開始アドレス“ＷＲＳＡ［９：０］”と、次にデータの読み出しを開始するアドレスである読み出し側開始アドレス“ＲＤＳＡ［９：０］”とを管理している（図５参照）。これらのアドレスは、１ポートメモリ１１にデータを書き込んだとき、また、データを読み出したときにそれぞれインクリメントされるようになっている。制御部４１は、これらの書き込み側開始アドレス（ＷＲＳＡ）と読み出し側開始アドレス（ＲＤＳＡ）を比較して、１ポートメモリ１１がフル状態であることを示す信号ＦＦＵＬと、１ポートメモリ１１がエンプティ状態であることを示す信号ＦＥＭＰ（図示せず）とを制御する。
【００３４】
＜１ポートメモリにおけるデータ格納状態＞
図５は１ポートメモリ１１内にどのようにデータが蓄えられるかを示した図である。図５に示すようにＩＥＥＥ１３９４で規定されたさまざまな種類のパケットデータが１ポートメモリ１１に格納される。ところで、ＩＥＥＥ１３９４のデータは“クワドレット”という３２ビットデータで処理され、パケットの終わりにはパケットの切れ目を示す１ビットのＥＯＰ（End of Packet）コードが必要であるため、図５に示すように１ポートメモリ１１のデータ幅は３３（＝３２＋１）ビットとなる。また、２ポートメモリ１３も同様の理由により３３ビット幅である。
【００３５】
＜タイミングチャートによる動作説明＞
次に、前述のように構成されるＦＩＦＯメモリの具体的な動作を図６から図９のタイミングチャートを用いて説明する。なお、以下の具体例では、エンプティ状態を規定する所定値ＲＥＶＡＬの値は「２」としている。
【００３６】
ａ．格納データがあるときに読み出し要求があった場合のタイミングチャート
図６は、１ポートメモリ１１において、ある程度データが蓄えられている場合に、ＦＩＦＯメモリ１に対して、ＤＭＡ側からデータのリード要求が来たときのタイミングチャートである。
【００３７】
図６に示すように、ＤＭＡ側の制御クロックＤＣＬＫと、リンク側の制御クロックＬＣＬＫとは非同期である。すなわち、図６において、アドレス信号ＲＲＡＤから上の信号がクロックＤＣＬＫに同期し、アドレス信号ＬＲＡＧから下の信号がクロックＬＣＬＫに同期している。
【００３８】
まず、ＤＭＡ側のタイミングＴＤ２で、ＤＭＡ側からリード要求があると、信号ＦＲＲＥＱＢが“ＬＯＷ”に変化する。それにより、Ｄコントローラ１７内のフリップフロップ３７とＯＲゲート３８により、信号ＲＳＴＢはタイミングＴＤ２でクロックＤＣＬＫの１クロック期間の間、“ＬＯＷ”に制御される。それにともない、Ｄコントローラ１７内の全ての制御信号及びカウンタ等が初期化される。そのため、２ポートメモリ１３のリードアドレスの元になるグレイコード値を示す値ＲＲＡＧが“０”になり、また、それに伴い２ポートメモリ１３の読み出しアドレスＲＲＡＤが“０”になる。
【００３９】
一方、リンク側のタイミングＴＬ２では、信号ＲＳＴＢをクロックＬＣＬＫに同期させた信号ＬＳＴＢを生成する。信号ＬＳＴＢは、クロックＬＣＬＫの１クロックの間“ＬＯＷ”に制御され、Ｌコントローラ１５内の全ての制御信号及びカウンタ等が初期化される。そこで、２ポートメモリ１３の書き込みアドレスＲＷＡＤが“０”になる。そして、既に１ポートメモリ１１内には、ある程度データが蓄えられているため、リンク側からＦＩＦＯメモリ１への書き込み要求信号ＬＷＲＢの“ＬＯＷ”期間でないタイミングＴＬ３〜ＴＬ７、ＴＬ９、ＴＬ１１及びＴＬ１３において、１ポートメモリの読み出しアドレスＲＤＳＡ“ＲＳ０”からアドレス“ＲＳ１”、“ＲＳ２”…へデータが順に読み出されれて２ポートメモリ１３に順次書き込まれる。
【００４０】
タイミングＴＬ２からＴＬ５までの間、２ポートメモリ１３への書き込みアドレスＲＷＡＤと、読み出しアドレスＬＲＡＤとの差は、ＲＥＶＡＬ値（「２」）よりも小さいため、タイミングＴＬ３からＴＬ６までの間、信号ＲＥＭＰは「ＨＩＧＨ」に制御される。信号ＲＥＭＰは「ＨＩＧＨ」に制御されたときは、エンプティ状態であると判断し、２ポートメモリ１３からの読み出しは行なわれない。
【００４１】
その後、データの書き込みにしたがい、２ポートメモリ１３への書き込みアドレスＲＷＡＤがカウントアップされ、タイミングＴＬ６で、アドレスＲＷＡＤと、読み出しアドレスＬＲＡＤとの差（３＝３−０）が、ＲＥＶＡＬ値「２」より大きくなる。すると、タイミングＴＬ７で信号ＲＥＭＰが「ＬＯＷ」に制御される。そのため、Ｄコントローラ１７は、エンプティ状態ではなく、読み出しデータが存在すると判断し、タイミングＴＤ８から信号ＦＲＡＣＫＢを“ＬＯＷ”にすると同時に、順次２ポートメモリ１３の読み出しアドレスの元になるグレイコードカウンタ値（ＲＲＡＧ）をカウントアップし、それに伴って読み出しアドレスＲＲＡＤがインクリメントされていく。
【００４２】
その後、タイミングＴＬ１２で、２ポートメモリ１３への書き込みアドレスＲＷＡＤ「７」と、２ポートメモリ１３からの読み出しアドレスＬＲＡＤ「５」の差が２となり、ＲＥＶＡＬ値「２」以下になるため、タイミングＴＬ１３から信号ＲＥＭＰが「ＨＩＧＨ」に制御される。そのため、タイミングＴＤ１５で、アクノリッジ信号ＦＲＡＣＫＢは“ＨＩＧＨ”になり、２ポートメモリ１３の読み出し動作は停止する。
【００４３】
また、図６においては、タイミングＴＬ２で、リンク側の制御により書き込み信号ＬＷＲＢが「ＬＯＷ」に制御され、これにより、データバスＬＤＴにパケットＡの最終データ（「ＰＡＥ」）が出力され、リンク側からＦＩＦＯメモリ１へデータが書き込まれる。その後、タイミングＴＬ８、ＴＬ１０及びＴＬ１２で次のパケットＢがＦＩＦＯメモリ１に書き込まれる。その際、１ポートメモリ１１の書き込みアドレスＷＲＳＡは「ＷＳ０」から順次インクリメントされる。
【００４４】
ｂ．格納データがないときに読み出し要求があった場合のタイミングチャート
図７は、１ポートメモリ１１内にデータがまったく無い状態でＦＩＦＯメモリに対して、リンク側からデータの読み出し要求があった場合のタイミングチャートである。
【００４５】
図７において、ＤＭＡ側のタイミングＴＤ１以前からＦＩＦＯデータのリード要求があるため、タイミングＴＤ１の時点から既に、読み出し要求信号ＦＲＲＥＱＢは“ＬＯＷ”である。そして、既にアドレス信号ＲＲＡＧ、ＲＲＡＤ、ＬＲＡＧ、ＬＲＡＤ及びＲＷＡＤは全て初期化されて“０”である。そこで、リンク側のタイミングＴＬ２でリンク側からＦＩＦＯメモリ１に新しいパケットを書き込み始め、タイミングＴＬ４、ＴＬ６、ＴＬ８、ＴＬ１０及びＴＬ１２とデータが１ポートメモリ１１に書き込まれる。
【００４６】
そして、１ポートメモリ１１にデータが書き込まれるため、タイミングＴＬ３でＦＥＭＰ信号は“ＬＯＷ”になりエンプティ状態でなくなったと判断される。そのため、タイミングＴＬ３では１ポートメモリ１１からデータが読み出されて２ポートメモリ１３に書き込まれる（図中、「ＦＯＤＴ」、「ＲＷＤＴ」の値参照）。そのため、タイミングＴＬ４で、再び信号ＦＥＭＰが「ＨＩＧＨ」になる。タイミングＴＬ４及びＴＬ５、タイミングＴＬ６及びＴＬ７、タイミングＴＬ８及びＴＬ９、タイミングＴＬ１０及びＴＬ１１、タイミングＴＬ１２及びＴＬ１３と同様に１ポートメモリ１１に一つデータが書き込まれ、そして次のタイミングで１ポートメモリ１１から２ポートメモリ１３にデータが転送されるという動作が繰り返される。
【００４７】
そして、タイミングＴＬ８からＲＷＡＤとＬＲＡＤとの差がＲＥＶＡＬ値「２」より大きくなるため（例えば、タイミングＴＬ８では３（＝３−０））、タイミングＴＬ９から信号ＲＥＭＰが“ＬＯＷ”になる。それに伴い、ＤＭＡ側のタイミングＴＤ１０でＦＲＡＣＫＢが“ＬＯＷ”になり、タイミングＴＤ１０〜ＴＤ１３においてＤＭＡ側にＲＧＦのデータが出力される。そして、タイミングＴＬ１１からＲＷＡＤとＬＲＡＤの差がＲＥＶＡＬ値“２”以下になるため（例えば、タイミングＴＬ１１では２（＝４−２））、タイミングＴＬ１２から信号ＲＥＭＰが「ＨＩＧＨ」になる。そのため、タイミングＴＤ１４からアクノリッジ信号ＦＲＡＣＫＢが「ＨＩＧＨ」にされ、２ポートメモリ１３からのデータの読み出しは停止される。
【００４８】
ｃ．読み出しの中止要求があった場合、または、デュアルポートへの書き込みの停止要求があった場合のタイミングチャート
図８は、ＦＩＦＯメモリ１からデータを読み出し中にＤＭＡ側から読み出しの中止要求によりデータの読み出しが止められる場合、及び、２ポートメモリ１３内のデータがフル状態に近づいて１ポートメモリ１１から２ポートメモリ１３へのデータの書き込みがストップされるときのタイミングチャートである。ＤＭＡ側からの読み出しの中止要求は、読みこみ中止信号ＦＷＡＩＴにより行なわれる。
【００４９】
タイミングＴＬ２、ＴＬ４、ＴＬ６、ＴＬ８、ＴＬ１０及びＴＬ１２と順次パケットデータが１ポートメモリ１１へ書き込まれる。また、タイミングＴＤ３〜ＴＤ６の期間、読みこみ中止信号ＦＷＡＩＴが「ＨＩＧＨ」にされる。そのため、ＦＩＦＯメモリからのデータ読み出しはストップされ、アドレス信号であるＲＲＡＧ及びＲＲＡＤは変化しない。そして、タイミングＴＤ７及びＴＤ８で再びＦＩＦＯメモリ１からデータが読み出され、また、タイミングＴＤ９〜ＴＤ１１でＦＩＦＯメモリ１からのデータ読み出しがストップされる。そして、タイミングＴＤ１２から再びＦＩＦＯメモリ１でデータが読み出される。その時、タイミングＴＬ６及びＴＬ７で、読み出しアドレスＬＲＡＤと書き込みアドレスＲＷＡＤの差が１以下になるため、フル信号ＲＦＵＬが「ＨＩＧＨ」になる。それにより、タイミングＴＬ７での２ポートメモリ１３への書き込みが禁止される。
【００５０】
ｄ．パケットの読み出し終了時のタイミングチャート
図９は、ＦＩＦＯメモリ１からのデータの読み出しにおいて、一パケットの読み出しが終了する場合の動作のタイミングチャートである。なお、図９においては、タイミングＴＬ９において１ポートメモリ１１から読み出されるパケットデータＲ９が一連のデータの最後のデータであるとする。
【００５１】
図９において、タイミングＴＤ２〜ＴＤ４の期間、ＤＭＡ側から読み出し待機信号ＦＲＷＡＩＴが「ＨＩＧＨ」にされており、これにより、ＦＩＦＯメモリ１からの読み出しがストップする。そして、タイミングＴＬ３で、書き込みアドレスＲＷＡＤと、読み出しアドレスＬＲＡＤとの差がＲＥＶＡＬ値「２」以下になるため、タイミングＴＬ４ではエンプティ信号ＲＥＭＰが「ＨＩＧＨ」になる。そのためタイミングＴＤ４では、アクノリッジ信号ＦＲＡＣＫＢが「ＨＩＧＨ」になるが、既に停止信号ＦＲＷＡＩＴによってＦＩＦＯに対するデータ読み出しをストップされているため、動作としては影響がない。
【００５２】
そして、タイミングＴＬ７からアドレスＲＷＡＤとＬＲＡＤの差がＲＥＶＡＬ値「２」以下になるため、タイミングＴＬ８からエンプティ信号ＲＥＭＰが「ＨＩＧＨ」になる。これにより１ポートメモリ１１からの読み出しは停止する。ここで、タイミングＴＬ９において、１ポートメモリ１１からの読み出されるパケットデータＲＷＤＴの３３ビット目（ＲＷＤＴ［３２］）すなわちＥＯＰを参照し、それが最後のパケットであると判断する。それにより、それ以後の読み出すべきパケットのデータはないことが分かる。
【００５３】
そこで、ＦＩＦＯメモリ１からの読み出しをストップする制御信号の元となるエンプティ信号ＲＥＭＰは、タイミングＴＬ１０から強制的に「ＬＯＷ」に制御される。これにより、タイミングＴＤ９からアクノリッジ信号ＦＲＡＣＫＢが「ＨＩＧＨ」になりＦＩＦＯメモリ１の読み出しがストップしていたのが、タイミングＴＤ１１から再びアクノリッジ信号ＦＲＡＣＫＢが「ＬＯＷ」に制御され、ＦＩＦＯメモリ１からのデータ読み出しが再開される。そして、タイミングＴＤ１２においてＦＩＦＯメモリ１から読み出されたデータはパケットの最終データであることを示すＥＯＰ信号ＦＲＥＯＰが「ＨＩＧＨ」であるため、タイミングＴＤ１３からアクノリッジ信号ＦＲＡＣＫＢは「ＨＩＧＨ」に制御される。また、ＤＭＡ側は、ＥＯＰ信号ＦＲＥＯＰを参照してタイミングＴＤ１２でパケットの最終データを読み出したことを認識し、読み出し要求信号ＦＲＲＥＱＢを、タイミングＴＤ１３から「ＨＩＧＨ」に制御する。このようにして一つのパケットの読み出しが終了する。
【００５４】
また、図６〜図９のタイミングチャートにおいて、フル状態（フル信号ＦＦＵＬが「ＨＩＧＨ」）が発生した場合、つまり、１ポートメモリ１１内に全て有効なデータが蓄えられたときは、ＦＩＦＯメモリ１全体がフル状態であるということでリンク側はフル信号ＦＦＵＬが「ＬＯＷ」になるまではデータの書き込みを行わないように書き込み信号ＬＷＲＢを制御する。
【００５５】
（第２の実施形態）
＜ＦＩＦＯメモリの構成＞
本実施形態のＦＩＦＯメモリは、第１の実施形態のものと同様にＩＥＥＥ１３９４のリンク層とそれ以上の層との間のインターフェースに使用できるものである。その回路構成を図１０に示す。
【００５６】
図１０に示すように、本実施形態のＦＩＦＯメモリ１’は、第１の実施形態におけるＦＩＦＯメモリ１と同様に、１ポートメモリ１１と、２ポートメモリ１３と、入力制御部１４’と、出力制御部１６’とからなる。第１の実施形態のＦＩＦＯメモリ１では、１ポートメモリ１１を入力側に、２ポートメモリ１３を出力側に配置していたが、本実施形態のＦＩＦＯメモリ１’は１ポートメモリ１１を出力側に、２ポートメモリ１３を入力側に配置した構成としている。
【００５７】
図１１は、図１に示すＦＩＦＯメモリ１’のさらに詳細な構成を示した図である。ＦＩＦＯメモリ１’は、ＤＭＡ側からリンク側へ転送するデータを蓄えるＦＩＦＯ型メモリである。このようにリンク側へデータを送信するため、このＦＩＦＯメモリ１’を送信型と呼ぶ。
【００５８】
図１１において、１ポートメモリ１１、２ポートメモリ１３は第１の実施の形態の場合と同様である。入力制御部１４’（図１０参照）は、ＤＭＡ側とＦＩＦＯメモリ間のデータをインターフェースする回路部であるＤコントローラ１７’により構成され、出力制御部１６’は、リンク側とＦＩＦＯメモリ１’間のデータをインターフェースする回路ブロックであるＬコントローラ１５’により構成される。さらに、ＦＩＦＯメモリ１’は、外部から読み出し／書き込み可能な値を格納するレジスタ１９’を有している。
【００５９】
＜ＦＩＦＯメモリ（送信型）の制御信号、データ＞
以下に、本実施形態のＦＩＦＯメモリ１’に対する制御信号、データを説明する。なお、信号名の最後に付加される「Ｂ」の表記は、その信号がアクティブ・ローで動作することを意味する。また、説明の便宜上、信号名又はデータ名と、それを搬送する信号線名又はデータバス名は同じものを使用する。
【００６０】
ＬＣＬＫ：リンク側の制御クロック。
ＦＲＤＢ：リンク側からＦＩＦＯメモリ１’へのデータの読み出し要求信号。
ＦＥＯＰ：読み出されるデータがパケットデータの最終データかどうかを示す信号。
ＦＤＴ［３１：０］：ＦＩＦＯメモリ１’からの３２ビット幅の読み出しデータ。
ＦＥＭＰ：ＦＩＦＯメモリ１’がエンプティかどうかを示す信号。したがってＦＥＭＰが「ＬＯＷ」の期間にリンク側はＦＩＦＯメモリ１’から新しいデータの読み出しができる。
ＤＣＬＫ：ＤＭＡ側の制御クロック。
ＦＷＲＥＱＢ：ＤＭＡ側からのＦＩＦＯメモリ１’へのデータ書き込み要求信号。
ＦＷＡＣＫＢ：書き込み要求に対するアクノリッジ信号。
ＦＷＤＴＶＬ：ＤＭＡ側が書き込みを行うとしているデータが有効なデータであるかどうかを検証した結果を示す信号。
ＦＷＥＯＰ：パケットの最終データであることを示す制御信号。
ＦＷＤＴ［３１：０］：ＦＩＦＯメモリ１’の３２ビット幅の書き込みデータ。
ＦＣＫ：１ポートメモリ１１を制御するクロック。
ＦＡＤ［８：０］：１ポートメモリ１１のアドレス。
ＦＷＥＢ：１ポートメモリ１１に対する書き込み要求信号。
ＦＯＤＴ［３２：０］：１ポートメモリ１１から読み出されたデータ。３２ビット目（ＦＯＤＴ［３２］）には、そのデータがパケットの最終データであることを示すビット（ＥＯＰ）を含む。
ＦＩＤＴ［３２：０］：１ポートメモリ１１へ書きこまれるデータ。３２ビット目（ＦIＤＴ［３２］）には、そのデータがパケットの最終データであることを示すビット（ＥＯＰ）を含む。
ＲＲＤＴ［３２：０］：２ポートメモリ１３から読み出されたデータであり、ＦＩＤＴ［３２：０］と同じ。
ＲＲＡＤ［４：０］：２ポートメモリ１３からデータを読み出す際の読み出しアドレス。
ＲＷＲＢ：Ｄコントローラからの２ポートメモリ１３への書き込み要求信号。
ＲＷＡＤ［４：０］：２ポートメモリ１３の書き込みアドレス。バイナリコードで表現されている。
ＲＷＤＴ［３２：０］：２ポートメモリ１３への書き込みデータ。
ＲＷＡＧ［４：０］：アドレスＲＷＡＤ［４：０］のグレイコード値であり、Ｄコントローラ１７’からＬコントローラ１５’に入力される。
ＲＳＴＢ：ＤＭＡ側からの読み出し要求があった時に、クロックＤＣＬＫの１周期分のみ「ＬＯＷ」になるスタート信号。
ＲＦＵＬ：２ポートメモリ１３に蓄えられたデータが、ある規則のもとでフル状態であることを示す信号。
【００６１】
＜ＦＩＦＯメモリの動作の概要＞
以上のように構成されるＦＩＦＯメモリ１’は、一方のインタフェース（ＤＭＡ）側からのデータ入力と、他方のインタフェース（ＩＥＥＥ１３９４）側へ出力とを非同期に行うことを可能とする。つまり、ＤＭＡ側から入力ポートＡを介して入力されたデータは２ポートメモリ１１に書き込まれ、蓄えられる。この２ポートメモリ１１へ蓄えられたデータは、１ポートメモリ１３からデータが読み出されていない期間において、１ポートメモリ１３に書き込まれる。一方、１ポートメモリ１１においては、ＩＥＥＥ１３９４側からの読み出し要求にしたがい、蓄えられているデータが順次読み出され、出力ポートＢを介して出力される。これらの各メモリ１１、１３の動作はＬコントローラ１５’、Ｄコントローラ１７’により以下のように制御される。
【００６２】
すなわち、Ｌコントローラ１５’は、ＩＥＥＥ１３９４側からデータ読み出し要求があれば、１ポートメモリ１１からデータを読み出し、１ポートメモリ１１からデータを読み出さない期間において、２ポートメモリ１３から１ポートメモリへデータを転送するように制御する。このとき、Ｌコントローラ１５’は、１ポートメモリ１１及び２ポートメモリ１３のフル状態／エンプティ状態を確認しながら、書き込み／読み出し動作を制御する。Ｌコントローラ１５はＩＥＥＥ１３９４側からの読み出し要求を優先して行なうようにメモリ１１、１３を制御する。一方、Ｄコントローラ１７’は、ＤＭＡ側からの書き込み要求にしたがい、２ポートメモリ１３へデータを書き込むようにメモリ１３を制御する。このとき、Ｄコントローラ１７’は、Ｌコントローラ１５’からのフル信号ＲＦＵＬに基き２ポートメモリ１３のフルを判断しながら２ポートメモリ１３への書き込み動作を制御する。
【００６３】
以下、これらの動作を行うＬコントローラ１５’、Ｄコントローラ１７’について詳細に説明する。
【００６４】
＜Ｄコントローラの構成・動作＞
図１２にＤコントローラ１７’の構成を示す。Ｄコントローラ１７’は、第１の実施形態の場合と同様に、制御部３１と、グレイコードで計数するグレイコードカウンタ３３と、グレイコードをバイナリコードに変換するグレイ−バイナリ変換器（Ｇ／Ｂ変換器）３５とを備える。さらに、Ｄコントローラ１７は、ＲＳＴＢ信号を生成するためのＤフリップフロップ３７とＯＲゲート３８とを備える。グレイコードカウンタ３３はクロックＤＣＬＫに同期して２ポートメモリ１３に対する書き込みアドレスを生成する。
【００６５】
このように構成されるＤコントローラ１７’において、ＤＭＡ側からの書き込み要求があった時（信号ＦＷＲＥＱＢの立ち下がり時）に、フリップフロップ３７及びＯＲゲート３８により、クロックＤＣＬＫの１パルス分“ＬＯＷ”期間となるスタート信号ＲＳＴＢが生成される。この信号ＲＳＴＢは制御部３１に入力される。制御部３１は、書き込み要求信号ＦＷＲＥＱＢ、書き込みデータ検証信号ＦＷＤＴＶＬ、書き込みデータＦＷＤＴ［３１：０］、パケット終了信号ＦＷＥＯＰ及びフル信号ＲＦＵＬ信号から、書き込みデータＲＷＤＴ［３２：０］、書き込みアクノリッジ信号ＦＷＡＣＫＢ、書き込み要求信号ＲＷＲＢ及びカウントアップイネーブル信号を生成する。カウントアップイネーブル信号は、グレイコードカウンタ３３のカウントアップ動作の停止／作動を制御する制御信号である。ここで、２ポートメモリへ１３の書き込みデータＲＷＤＴ［３２：０］は、ＤＡＭ側からの入力データＦＷＤＴ［３１：０］に、パケット終了信号ＦＷＥＯＰの値を付加したものである。ＲＷＡＧ［４：０］はグレイコードカウンタ３３の出力であり、信号ＲＳＴＢでリセットされる。アドレスＲＷＡＤ［４：０］は、グレイコードで表現されるＲＷＡＧ［４：０］の値をバイナリコードに変換した値である。
【００６６】
＜Ｌコントローラの構成＞
図１３に、Ｌコントローラ１５’の回路構成を示す。Ｌコントローラ１５’は、第１の実施の形態の場合と同様に、制御部４１と、グレイ−バイナリ変換器（Ｇ／Ｂ変換器）４３と、バイナリカウンタ４５と、Ｄフリップフロップ４７ｂ〜４７ｄと、ＯＲゲート４９とを備える。
【００６７】
このように構成されるＬコントローラ１５’において、Ｄコントローラ１７’から入力されるアドレスＲＷＡＧ［４：０］は、クロックＬＣＬＫに同期してフリップフロップ４７ａでラッチされた後、グレイ−バイナリ変換器４３でバイナリコードに変換され、アドレスＬＷＡＤ［４：０］となり、制御部４１に入力される。同様に、Ｄコントローラ１７’から入力されるスタート信号ＲＳＴＢをクロックＬＣＬＫで同期化した信号ＬＳＴＢも制御部４１に入力される。また、読み出し要求信号ＦＲＤＢ、読み出しデータ信号ＦＯＤＴ［３２：０］及びアドレス信号ＲＲＡＤ［４：０］も、制御部４１に入力される。制御部４１は、バイナリカウンタ４５のカウント動作を制御するカウントアップイネーブル信号、データ信号ＦＤＴ［３１：０］、パケット終了信号ＦＥＯＰ、エンプティ信号ＦＥＭＰ、クロックＦＣＫ、アドレス信号ＦＡＤ［８：０］、書き込み要求信号ＦＷＥＢ及びフル信号ＲＦＵＬを出力する。ただし、データ信号ＦＤＴ［３１：０］はデータ信号ＦＯＤＴ［３１：０］と等しく、パケット終了信号ＦＥＯＰの値はＦＯＤＴ［３２］と等しい。また、アドレス信号ＲＲＡＤの値はバイナリカウンタ４５においてクロックＬＣＬＫに同期して得られる出力であり、信号ＬＳＴＢでリセットされる。
【００６８】
＜２ポートメモリのフル状態の判断＞
Ｌコントローラ１５’の制御部４１は、２ポートメモリ１３のフル状態を示すフル信号ＲＦＵＬを生成する。具体的には、フル信号ＲＦＵＬを、第１の実施形の場合と同様にして、所定の基準値「ＲＦＶＡＬ［２：０］」を用いて以下のような式で生成される信号ｗＲＦＵＬを求め、その信号ｗＲＦＵＬをクロックＬＣＬＫで同期化して生成する。
0003926524.tif 000004
ここで、ＲＲＡＤは２ポートメモリ１３における読み出し開始アドレスであり、ＲＷＡＤは書き込み開始アドレスである。基準値ＲＦＶＡＬの値はレジスタ１９’に格納され、レジスタ１９’の値は外部より変更可能である。
【００６９】
＜２ポートメモリのエンプティ状態の判断＞
また、Ｌコントローラ１５’の制御部４１は、その内部で使用する制御信号として、２ポートメモリ１３に蓄えられたデータがエンプティであるか否かを示す信号ＲＥＭＰ（図示せず）を管理している。２ポートメモリ１３がエンプティか否かの判断は次にように行なう。すなわち、２ポートメモリ１３に対する読み出し開始アドレスと書き込み開始アドレスとが等しくなったときにエンプティであると判断し、信号ＲＥＭＰを「ＨＩＧＨ」にする。具体的には、信号ＲＭＥＰは、読み出し開始アドレスＲＲＡＤと書き込み開始アドレスＲＷＡＤとから以下の式で生成される。
REMP = (RRAD == RWAD);
なお、本実施形態の例では、読み出し開始アドレス（RRAD）と書き込み開始アドレス（RWAD）とが等しいときに単純に２ポートメモリ１３がエンプティであると判断している。
【００７０】
＜１ポートメモリのフル状態、エンプティ状態の判断＞
また、Ｌコントローラ１５’の制御部４１は、１ポートメモリ１１の書き込み側のアドレス「ＷＲＳＡ［８：０］」、読み出し側のアドレス「ＲＤＳＡ［８：０］」をそれぞれ管理しており、１ポートメモリ１１にデータを書きこんだ時、データを読み出した時にそれぞれのアドレスをインクリメントする。これらのアドレスに基き、制御部４１は１ポートメモリ１１がエンプティであることを示す信号ＦＥＭＰと、１ポートメモリ１１がフルであることを示す信号ＦＦＵＬ（図示せず）を制御する。
【００７１】
＜１ポートメモリにおけるデータ格納状態＞
図１４は、本実施形態において１ポートメモリ１１内にどのようにデータが蓄えられるかを示した図である。図１４に示すように、１ポートメモリ１１は、ＩＥＥＥ１３９４で規定されたＡｓｙｎｃｈｒｏｎｏｕｓのパケットデータを格納することができる。また、第１の実施の形態の場合と同様、本実施形態における１ポートメモリ１１、２ポートメモリ１３のデータ幅は３３ビットである。
【００７２】
＜タイミングチャートによる動作説明＞
前述のＦＩＦＯメモリ１’のいくつかの動作におけるタイミングチャートを図１５、図１６及び図１７に示す。なお、これらのタイミングチャートでは、２ポートメモリ１３のフル状態の判断基準値ＲＦＶＡＬは「２」としている。
【００７３】
ａ．書き込み要求による書き込み後、すぐに読み出される場合のタイミングチャート
図１５は、ＤＭＡ側からＦＩＦＯデータへの書き込み要求があり、新しいパケットデータが蓄えられ、その後、そのデータがすぐにリンク側から読み出される場合のタイミングチャートである。
【００７４】
図１５に示すように、ＤＭＡ側の制御クロックＤＣＬＫとリンク側の制御クロックＬＣＬＫは非同期である。まず、ＤＭＡ側のタイミングＴＤ３で書き込み要求信号ＦＷＲＥＱＢが「ＬＯＷ」に変化して書き込み要求が発生する。そのタイミングＴＤ３において、スタート信号ＲＳＴＢがクロックＤＣＬＫの１クロック分“ＬＯＷ”になる。そのスタート信号ＲＳＴＢにより、Ｄコントローラ１７’内の全ての制御信号及びカウンタ等が初期化される。その初期化により、２ポートメモリ１３の書き込みアドレスの元になるグレイコード値のＲＷＡＧが「０」になり、また、それに伴い２ポートメモリ１３の書き込みアドレスＲＷＡＤが「０」になる。
【００７５】
また、リンク側クロックＬＣＬＫのタイミングＴＬ３では、スタート信号ＲＳＴＢをクロックＬＣＬＫに同期させた信号ＬＳＴＢにおいて１クロック分の「ＬＯＷ」期間が発生する。このスタート信号ＬＳＴＢにより、Ｌコントローラ１５’内の全ての制御信号及びカウンター等が初期化される。その初期化により、２ポートメモリ１３の読み出しアドレスＲＲＡＤが「０」になる。そして、タイミングＴＤ４〜ＴＤ７及びＴＤ９〜ＴＤ１４の間、書き込み要求信号ＦＷＲＥＱＢ、アクノリッジ信号ＦＷＡＣＫＢ及びフル信号ＲＦＵＬが「ＬＯＷ」であり、データ有効信号ＦＷＤＴＶＬが「ＨＩＧＨ」であるので、２ポートメモリ１３にデータ信号ＦＷＤＴ［３１：０］によるデータが書き込まれる。そして、タイミングＴＤ８ではデータ有効信号ＦＷＤＴＶＬが「ＬＯＷ」であるため、データ信号ＦＷＤＴ［３１：０］のデータが有効でないデータであると判断され、２ポートメモリ１３にはデータが書き込まれず、また、アドレスＲＷＡＧの値はカウントアップされない。このとき、Ｄコントローラ１７’はデータ有効信号ＦＷＤＴＶＬに基きデータが有効でないと判断し、グレイコードカウンタ３３がカウントアップを停止するようにカウントアップイネーブル信号を制御している。
【００７６】
また、タイミングＴＬ５から、２ポートメモリ１３に対する書き込みアドレスＬＷＡＤと読み出しアドレスＲＲＡＤとが等しくなくなるため、エンプティ信号ＲＥＭＰは「ＬＯＷ」になる。そこで、２ポートメモリ１３から順次データがリードされ１ポートメモリ１１に書きこまれる。それと同時に書き込み開始アドレスＷＲＳＡもインクリメントされる。しかし、タイミングＴＬ９では、書き込みアドレスＬＷＡＤと読み出しアドレスＲＲＡＤの値が等しくなるため、エンプティ信号ＲＥＭＰが「ＨＩＧＨ」になり２ポートメモリ１３がエンプティと判断され、これにより２ポートメモリ１３から１ポートメモリ１１への書き込みはストップされる。また、１ポートメモリ１１において、タイミングＴＬ１０から現在書き込み中の新しいパケットデータが読み出され始めるが、そのため、タイミングＴＬ１０及びＴＬ１２でも、２ポートメモリ１３から１ポートメモリ１１へのデータの書き込みは停止される。また、１ポートメモリ１１に対する読み出し開始アドレスＲＤＳＡ［８：０］は、リンク側からデータが読み出されると同時にインクリメントされる。
【００７７】
ｂ．２ポートメモリがフル状態に近づき、書き込みが停止される場合のタイミングチャート
図１６は、１ポートメモリ１１内のデータがフル状態になり、次に、２ポートメモリ１３内のデータがフル状態に近づいて２ポートメモリ１３から１ポートメモリ１１へのデータが書き込まれる場合、及び、ＤＭＡ側からの新しいデータの書き込みが停止される場合のタイミングチャートを示す。
【００７８】
図１６において、タイミングＴＬ１、ＴＬ５、ＴＬ９及びＴＬ１３でリンク側からＦＩＦＯメモリ１’に対して読み出し要求があり（信号ＦＲＤＢが「ＬＯＷ」）、且つ、書き込み開始アドレスＷＲＳＡと読み出し開始アドレスＲＤＳＡとはタイミングＴＬ４から等しくなり、１ポートメモリ１１のフル信号ＦＦＵＬが「ＨＩＧＨ」になるため、２ポートメモリ１３から１ポートメモリ１３へのデータの書き込みが停止される。
【００７９】
しかし、タイミングＴＬ５でリンク側からデータが読み出されてアドレスＲＤＳＡ［８：０］はインクリメントされるため、フル信号ＦＦＵＬが「ＬＯＷ」になり、再び、タイミングＴＬ６で、２ポートメモリ１３から１ポートメモリ１１へデータが書き込まれる。同様に、タイミングＴＬ７〜ＴＬ９及びＴＬ１１〜ＴＬ１３では、２ポートメモリ１３から１ポートメモリ１１へのデータの書き込みが停止され、タイミングＴＬ１０では２ポートメモリ１３から１ポートメモリ１１へデータが書き込まれる。
【００８０】
また、ＤＭＡ側から２ポートメモリ１３へのデータの書き込みにおいて、タイミングＴＬ２〜ＴＬ６で、読み出しアドレスＲＲＡＤと書き込みＬＷＡＤとの差が基準値ＲＦＶＡＬである「２」以下になるため、タイミングＴＬ３〜ＴＬ７でフル信号ＲＦＵＬが“ＨＩＧＨ”になる。それにより、タイミングＴＤ４〜ＴＤ８でアクノリッジ信号ＦＷＡＣＫＢが“ＨＩＧＨ”になりＤＭＡ側から２ポートメモリ１３への書き込みは停止される。しかし、タイミングＴＬ７〜ＴＬ９までは、再び、読み出しアドレスＲＲＡＤと書き込みアドレスＬＷＡＤとの差が所定値ＲＦＶＡＬである「２」より大きくなるため、タイミングＴＬ８〜ＴＬ１０ではフル信号ＲＦＵＬが“ＬＯＷ”になる。そのため、タイミングＴＤ９〜ＴＤ１１では、アクノリッジ信号ＦＷＡＣＫＢが“ＬＯＷ”になり、ＤＭＡ側から２ポートメモリ１３へ書き込みがなされる。そして、タイミングＴＤ１２〜ＴＤ１４においては、同様の理由によりアクノリッジ信号ＦＷＡＣＫＢが“ＨＩＧＨ”になり、ＤＭＡ側から２ポートメモリ１３へのデータの書き込みはストップされる。
【００８１】
ｃ．データ書き込みが終了する場合のタイミングチャート
図1７は、ＦＩＦＯメモリ１’へのパケットデータの書き込みを終了する場合のタイミングチャートである。
【００８２】
全体的な動作は前述の図１５及び図１６に示すタイミングチャートの場合と同様であるが、異なる点はタイミングＴＤ８でＤＭＡ側から２ポートメモリ１３へデータが書き込まれているが、その時のＥＯＰ信号ＦＷＥＯＰは「ＨＩＧＨ」であるため、このデータがこのパケットの最終データであることが分かる。そして、ＤＭＡ側は、最終データを書きこんだので、タイミングＴＤ９から書き込み要求信号ＦＷＲＥＱＢを「ＨＩＧＨ」にする。これにより、Ｄコントローラ１７’はアクノリッジ信号ＦＷＡＣＫＢをタイミングＴＤ１０から「ＨＩＧＨ」にする。しかし、２ポートメモリ１３から１ポートメモリ１１へのデータの書き込みは終了していないため、継続して動作しタイミングＴＬ１１から、書き込みアドレスＬＷＡＤと、読み出しアドレスＲＲＤＡとが同じ値になり、2ポートメモリ１１から１ポートメモリ１３へのデータの書き込みが終了する。
【００８３】
以上のように、上記第１及び第２の実施形態に示したＦＩＦＯメモリは、データを蓄える機能を回路規模の小さいシングルポートメモリで実現し、非同期に転送する機能を非同期デュアルポートメモリにより実現し、シングルポートメモリの記憶容量をＦＩＦＯメモリ全体で必要とされる容量に設定し、非同期デュアルポートメモリの記憶容量をデータの転送に必要な最小限のサイズに設定する。これにより、ＦＩＦＯメモリ全体の回路規模を低減することができる。例えば、０．３５μプロセスを用いた場合を考えると、３３ビット×１０２４ワードの非同期デュアルポートＲＡＭだけを用いた場合は約２．１６ｍｍ平方のサイズが必要であるが、第１の実施形態の例では、３３ビット×１０２４ワードのシングルポートＲＡＭは約１．２ｍｍ平方であり、３３ビット×３２ワードのデュアルポートメモリ（レジスタファイル）は約０．１４ｍｍ平方であるので、合計しても約１．３４ｍｍ平方のサイズで構成でき、回路規模を低減できる。
【００８４】
また、本実施形態のＦＩＦＯメモリでは、シングルポートメモリの動作周波数はそのシングルポートメモリに接続される外部の動作周波数と同じであり、非同期デュアルポートメモリの動作周波数は、非同期の入出力の高速側の動作周波数に設定できるので、従来の技術で示したような高速動作を要するメモリを必要とせず、より安価なメモリを用いることができる。
【００８５】
また、上記実施形態においては、所定値ＲＥＶＡＬやＲＦＶＡＬをレジスタに設定し、これらの値を外部から変更できるようにした。ＦＩＦＯメモリをパーソナルコンピュータのＰＣＩバスと接続して使用するような場合を考えると、ＰＣＩバス側の動作周波数は通常０〜３３Ｍｈｚで可変に使用できるため、入出力間の非同期タイミングの関係が変化する場合がある。その際、お互いの非同期なインタフェース間でやり取りする信号、例えば本実施形態での信号ＲＥＭＰや信号ＲＦＵＬのようなメモリのフル及びエンプティを知らせる信号は、非同期メモリの書き込みアドレスと読み出しアドレスの差分を考慮して生成されなければならない。しかし、実際のメモリのフル及びエンプティとなるアドレスを用いて計算すると、計算結果が求まった時点では、既にアドレスが進行してしまって誤動作するおそれがある。そこで、実際のフル及びエンプティとなるアドレスより所定数だけ手前のアドレスを用いて、フル及びエンプティを判断する。その際の所定数は、ＦＩＦＯメモリに対する入出力側の両インタフェースの周波数に応じて最適な値に設定するのが好ましい。そこで、上記のように、所定値ＲＥＶＡＬやＲＦＶＡＬをレジスタに設定し、これらの値を外部から可変にするようにした。これにより、これらの値を、接続するインタフェースの非同期の周波数に応じて変更できるようにし、メモリの効率的な使用を実現する。
【００８６】
（変形例）
なお、上記の実施形態では、非同期２ポートメモリとして非同期２ポートレジスタファイルの代わりに非同期２ポートＲＡＭを用いても同様の回路構成で実現できる。また、１ポートメモリは、入出力データバスが一つにまとめられた１ポートＲＡＭを用いても同様にして実現できる。
【００８７】
また、１ポートメモリの記憶容量と２ポートメモリの記憶容量との合計した値を、入力ポートに接続するインタフェースで規定される最大パケットサイズ以上に設定するのが好ましい。
【００８８】
これは次の理由からである。すなわち、ＩＥＥＥ１３９４におけるＡｓｙｎｃｈｒｏｎｏｕｓパケットの最大サイズは３２Ｂｙｔｅｓのヘッダー部と２０４８Ｂｙｔｅｓのデータ部とを合せた２０８０Ｂｙｔｅｓであるため、ＩＥＥＥ１３９４のシリアルバスに接続する機器にＦＩＦＯメモリを用いる場合に、Ａｓｙｎｃｈｒｏｎｏｕｓパケットに対して必要となるメモリサイズは２０８０Ｂｙｔｅｓである。また、Ｉｓｏｃｈｒｏｎｏｕｓパケットに対しては、１６Ｂｙｔｅｓのヘッダ部と４０９６Ｂｙｔｅｓのデータ部とを合せた４１１２Ｂｙｔｅｓが必要となる。ここで、メモリのサイズを考えると、一般にメモリサイズは通常２のべき乗の値である。そのため、従来技術で示したような一つのメモリ素子だけで構成する非同期ＦＩＦＯメモリでは、必要なメモリサイズはそれぞれ２０８０Ｂｙｔｅｓ及び４１１２Ｂｙｔｅｓで十分であるにもかかわらず、このメモリ容量を確保するためには、４０９６Ｂｙｔｅｓ及び８１９２Ｂｙｔｅｓの容量のメモリを使用する必要がある。このため、メモリサイズが大きくなりすぎ、かつ、無駄なメモリ領域が存在することになる。
【００８９】
しかしながら、本発明では、１ポートメモリと２ポートメモリとを合せたメモリ容量を利用できる。したがって、１ポートメモリの容量と２ポートメモリの容量との合計が、ＩＥＥＥ１３９４で規定される最大パケットサイズ以上であれば、１つ当りのメモリの容量を小さくすることができる。例えば、メモリ幅を３３ビットのところを３２ビットで考えると、第２の実施形態の場合では、２つのメモリの合計サイズは、２１７６（＝２０４８＋１２８）Ｂｙｔｅｓ、第１の実施形態の場合では、４２２４（＝４０９６＋１２８）Ｂｙｔｅｓとなり、前述のパケット最大サイズ（それぞれ、２０８０、４０９６Ｂｙｔｅｓ）をカバーする。これにより、シングルポートメモリの容量を一段上の大きなサイズに変更する必要がなく、回路規模の増大を抑えることができ、かつ、メモリの効率的な使用を実現できる。
【００９０】
【発明の効果】
本発明によれば、ＦＩＦＯ型記憶装置をデータ保持動作を回路規模の小さいシングルポートメモリで実現し、非同期動作をシングルポートメモリより記憶容量の小さい非同期２ポートメモリで構成することにより、ＦＩＦＯ型記憶装置全体の回路規模を小さくできる。
【００９１】
また、本発明によれば、シングルポートメモリやデュアルポートメモリ等のメモリ素子のフル及びエンプティを判断する際の判断基準値を外部から変更できるような構成としたため、使用環境に応じた最適な値に判断基準となる値に設定することができ、より効率的にメモリ素子を使用することができる。
【００９２】
また、本発明によれば、シングルポートメモリとデュアルポートメモリの双方の記憶容量を合計した容量をインタフェースで規定される最大パケットサイズ以上に設定する。したがって、双方のメモリ容量を合計した容量をＦＩＦＯ装置全体の容量として利用することができるため、シングルポートメモリの容量を増大させる必要がなく、メモリ素子を効率的に使用することができる。
【図面の簡単な説明】
【図１】  本発明に係る第１の実施形態におけるＦＩＦＯメモリ（受信型）の構成図。
【図２】  第１の実施形態におけるＦＩＦＯメモリの詳細な構成図。
【図３】  第１の実施形態におけるＤコントローラの構成図。
【図４】  第１の実施形態におけるＬコントローラの構成図。
【図５】  第１の実施形態における１ポートメモリ内のパケットデータの格納の様子を説明した図（図中、ハッチング部分がデータ格納部分）。
【図６】  第１の実施形態におけるタイミングチャートａ。（格納データがあるときに読み出し要求があった場合）
【図７】  第１の実施形態におけるタイミングチャートｂ。（格納データがないときに読み出し要求があった場合）
【図８】  第１の実施形態におけるタイミングチャートｃ。（読み出しの中止要求があった場合、または、デュアルポートへの書き込みの停止要求があった場合）
【図９】  第１の実施形態におけるタイミングチャートｄ。（パケットの読み出し終了時）
【図１０】  本発明に係る第２の実施形態におけるＦＩＦＯメモリ（送信型）の構成図。
【図１１】  第２の実施形態におけるＦＩＦＯメモリの詳細な構成図。
【図１２】  第２の実施形態におけるＤコントローラの構成図。
【図１３】  第２の実施形態におけるＬコントローラの構成図。
【図１４】  第２の実施形態における１ポートメモリ内のパケットデータの格納の様子を説明した図（図中、ハッチング部分がデータ格納部分）。
【図１５】  第２の実施形態におけるタイミングチャートａ。（書き込み要求による書き込み後、すぐに読み出される場合）
【図１６】  第２の実施形態におけるタイミングチャートｂ。（２ポートメモリがフル状態に近づき、書き込みが停止される場合）
【図１７】  第２の実施形態におけるタイミングチャートｃ。（データ書き込みが終了する場合）
【図１８】  従来の２ポートメモリのみを用いたＦＩＦＯメモリの構成図。
【符号の説明】
１，１’  ＦＩＦＯメモリ
１１  シングルポートメモリ
１３  デュアルポートメモリ
１４，１４’  入力制御部
１５，１５’  Ｄコントローラ
１６，１６’  出力制御部
１７，１７’  Ｌコントローラ
１９，１９’  レジスタ
４３  グレイ／バイナリ変換器
【図１】
0003926524.tif 000005
【図２】
0003926524.tif 000006
【図３】
0003926524.tif 000007
【図４】
0003926524.tif 000008
【図５】
0003926524.tif 000009
【図６】
0003926524.tif 000010
【図７】
0003926524.tif 000011
【図８】
0003926524.tif 000012
【図９】
0003926524.tif 000013
【図１０】
0003926524.tif 000014
【図１１】
0003926524.tif 000015
【図１２】
0003926524.tif 000016
【図１３】
0003926524.tif 000017
【図１４】
0003926524.tif 000018
【図１５】
0003926524.tif 000019
【図１６】
0003926524.tif 000020
【図１７】
0003926524.tif 000021
【図１８】
0003926524.tif 000022