(57)【要約】【課題】２つのＦＩＦＯメモリを制御してデータ転送の効率を上げ、必要に応じて双方向のデータ転送にも利用可能なＦＩＦＯメモリ回路を提供する。【解決手段】第１と第２ＦＩＦＯメモリ１、２とを備えて、データ転送のバッファリングを行うＦＩＦＯメモリ回路１０は、さらに、切替信号ｆｉｆｏ＿ｓｅｌを受け、第１と第２ＦＩＦＯメモリ１、２のいずれか一方を選択して、書込み信号ｗｒｉｔｅの供給と入力データ信号Ｄａｔａ＿ｉｎとを中継する第１セレクタと、切替信号ｆｉｆｏ＿ｓｅｌを受け、第１と第２ＦＩＦＯメモリ１、２のいずれか一方を選択して、読出し信号ｒｅａｄの供給と出力データ信号Ｄａｔａ＿ｏｕｔとを中継する第２セレクタと、第１と第２ＦＩＦＯメモリ１、２それぞれのエンプティ状態とフル状態を検出することにより第１セレクタ３と第２セレクタ４に切替信号ｆｉｆｏ＿ｓｅｌを送出する状態検出回路５とを備える。【選択図】      図１
2004206487.tif 000002
【特許請求の範囲】
【請求項１】
入力されるデータが書込まれ、該データを読み出して出力する第１と第２ＦＩＦＯメモリとを備えて、データ転送のバッファリングを行うＦＩＦＯメモリ回路において、
切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して書込み信号と入力データ信号とを中継する第１セレクタと、前記切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して読出し信号と出力データ信号とを中継する第２セレクタと、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第１セレクタと第２セレクタに前記切替信号を送出する状態検出回路とを備えたことを特徴とするＦＩＦＯメモリ回路。
【請求項２】
前記状態検出回路は、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより、ＦＩＦＯメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力することを特徴とする請求項１に記載のＦＩＦＯメモリ回路。
【請求項３】
ＦＩＦＯメモリ回路へのデータ入力を第１系統から或いは第２系統からに切り替える外部からの系統切替信号により、第１系統からデータが入力される場合、前記書込み信号と入力データ信号は第１系統の書込み信号と入力データ信号に、前記読出し信号は第２系統の読出し信号にそれぞれ接続され、第２系統からデータが入力される場合、前記書込み信号と入力データ信号は第２系統の書込み信号と入力データ信号に、前記読出し信号は第１系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第１と第２系統の出力データ信号に接続されることを特徴とする請求項１または請求項２に記載のＦＩＦＯメモリ回路。
【請求項４】
前記第１セレクタの入力側には第３セレクタの出力側が接続され、該第３セレクタには第１と第２系統の入力データ信号とが入力され、前記第１セレクタの入力側には第４セレクタの出力側が接続され、該第３セレクタには第１と第２系統の書込み信号が入力され、前記第２セレクタの入力側には第５セレクタの出力側が接続され、該第５セレクタには第１と第２系統の読出し信号信号が入力され、前記出力データ信号は第１と第２系統の出力データ信号に接続され、第１と第２系統のいずれかを切り替える系統切替信号により、前記第３と第４と第５セレクタは、それぞれ第１系統の入力データ信号と書込み信号と読出し信号か、或いは第２系統の入力データ信号と書込み信号と読出し信号かを選択することを特徴とする請求項１または請求項２に記載のＦＩＦＯメモリ回路。
【請求項５】
前記第１系統からデータの入力が行われるときは前記第２系統に対してデータの出力が行われ、前記第２系統からデータの入力が行われるときは前記第１系統に対してデータの出力が行われることを特徴とする請求項３または請求項４のいずれかに記載のＦＩＦＯメモリ回路。
【請求項６】
前記第１と第２ＦＩＦＯメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数であることを特徴とする請求項１乃至請求項５のいずれかに記載のＦＩＦＯメモリ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データの転送時にバッファメモリとして動作するＦＩＦＯメモリ回路に関し、特に具体的には２つのＦＩＦＯメモリを有するＦＩＦＯメモリ回路に関する。
【０００２】
【従来の技術】
図７は、従来のＦＩＦＯメモリ回路と使用される信号を示す図である。図７のＦＩＦＯメモリ回路では、ＦＩＦＯメモリ回路１００に入力される入力データ信号Ｄａｔａ＿ｉｎとともに書込み信号ｗｒｉｔｅが転送元から入力され、ＦＩＦＯメモリ１０１にデータが順次格納される。ＦＩＦＯメモリがデータで満杯になると、ＦＩＦＯ＿Ｆｕｌｌ信号が出力されデータの入力が一旦停止する。同時に転送先から読出し信号ｒｅａｄが供給され、先にＦＩＦＯメモリ１０１に入力されたデータが、Ｄａｔａ＿ｏｕｔの信号として転送先に送出されて行く。データが送出されてＦＩＦＯメモリ１０１が空になると、ＦＩＦＯ＿Ｅｍｐｔｙ信号が転送元に出力されて、転送元からＦＩＦＯメモリ回路１００へのデータ入力が再開される。
【０００３】
通常、このような１つのＦＩＦＯメモリ１０１を有するＦＩＦＯメモリ回路１００を、内部バスと外部インターフェース間に挿入し、バッファメモリとして利用することで、内部バスと外部インタフェースの速度差を吸収することができる。
【０００４】
しかし、上記の説明のように、ＦＩＦＯメモリ１０１が満杯にならないとデータの読み取りは開始せず、また、ＦＩＦＯメモリ１０１が空にならないとＦＩＦＯメモリ回路１００へのデータ書込みが開始しないため、全体的なデータ転送の速度が書込みと読込みの時間の総和となり、転送効率が低下する問題があった。あるいは、一方向のデータの転送のみ可能で、１つのＦＩＦＯメモリ回路では双方向のデータ転送は行えないという問題があった。
【０００５】
特許文献１に、２つのＦＩＦＯメモリからなるＦＩＦＯメモリ回路が説明されている。このＦＩＦＯメモリ回路では、同一周期且つ非同期に２つのＦＩＦＯメモリに対して読み出しと書込みを行い、或いは、所定周期で２つのＦＩＦＯメモリに対して交互に読み出しと書込みをおこない、データ転送時の速度低下を防いでいる。
【０００６】
また、特許文献２は、内部メモリの２つの領域をそれぞれ入力用と出力用のＦＩＦＯメモリとして割り当てることにより、双方向のデータ転送を内部メモリに割り当てた２つのＦＩＦＯメモリ領域を介してそれぞれ行う技術を開示している。
【０００７】
【特許文献１】
特許第２９７８２３２号公報
【特許文献２】
特開平７−２３５９２６号公報
【０００８】
【発明が解決しようとする課題】
しかし、特許文献１にある２つのＦＩＦＯメモリを交互に使用して一方向のデータ転送効率を上げるＦＩＦＯメモリ回路は、周期が一定であったり、或いは確定しているものであるため、ＦＩＦＯメモリ回路の入力や出力の周期が一定でないデータや、転送速度が不定であるデータは取り扱うことが困難であり、予め入力側と出力側の転送周期が既知でありことが条件になっている。
【０００９】
また、上記特許文献２に説明されている技術は、他の制御に使用される内部メモリの一部領域を入力用と出力用とにそれぞれ割り当てて使用するため、独立したＦＩＦＯメモリ回路として、任意の装置や回路に利用することは困難であり、汎用性や融通性に欠ける問題がある。
【００１０】
さらに、上記の特許文献１は２つのＦＩＦＯメモリを一方向のデータ転送のみに使用するものであり、双方向のデータ転送は不可能である。特許文献２は一方向に１つのメモリ領域を、他方向にもう１つのメモリ領域を割り当て双方向のデータ転送を可能にしているが、１つの方向に２つのメモリ領域を利用して転送効率を上げるものではない。
【００１１】
本発明は、斯かる実状に鑑みなされたものであり、２つのＦＩＦＯメモリを制御して１つの方向のデータ転送の効率を上げ、必要に応じて双方向のデータ転送にも利用可能なＦＩＦＯメモリ回路を提供することを目的とするものである。
【００１２】
【課題を解決するための手段】
上記目的を達成するために、本発明では、入力されるデータが書込まれ、該データを読み出して出力する第１と第２ＦＩＦＯメモリとを備えて、データ転送のバッファリングを行うＦＩＦＯメモリ回路において、切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して書込み信号と入力データ信号とを中継する第１セレクタと、前記切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して読出し信号と出力データ信号とを中継する第２セレクタと、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第１セレクタと第２セレクタに前記切替信号を送出する状態検出回路とを備えた構成を取る。
【００１３】
また、前記状態検出回路は、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより、ＦＩＦＯメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力する。
【００１４】
さらに、ＦＩＦＯメモリ回路へのデータ入力を第１系統から或いは第２系統からに切り替える外部からの系統切替信号により、第１系統からデータが入力される場合、前記書込み信号と入力データ信号は第１系統の書込み信号と入力データ信号に、前記読出し信号は第２系統の読出し信号にそれぞれ接続され、第２系統からデータが入力される場合、前記書込み信号と入力データ信号は第２系統の書込み信号と入力データ信号に、前記読出し信号は第１系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第１と第２系統の出力データ信号に接続される。
【００１５】
また、本発明では、前記第１セレクタの入力側には第３セレクタの出力側が接続され、該第３セレクタには第１と第２系統の入力データ信号とが入力され、前記第１セレクタの入力側には第４セレクタの出力側が接続され、該第３セレクタには第１と第２系統の書込み信号が入力され、前記第２セレクタの入力側には第５セレクタの出力側が接続され、該第５セレクタには第１と第２系統の読出し信号信号が入力され、前記出力データ信号は第１と第２系統の出力データ信号に接続され、第１と第２系統のいずれかを切り替える系統切替信号により、前記第３と第４と第５セレクタは、それぞれ第１系統の入力データ信号と書込み信号と読出し信号か、或いは第２系統の入力データ信号と書込み信号と読出し信号かを選択する構成である。
【００１６】
前記第１系統からデータの入力が行われるときは前記第２系統に対してデータの出力が行われ、前記第２系統からデータの入力が行われるときは前記第１系統に対してデータの出力が行われる構成である。
【００１７】
さらに、前記第１と第２ＦＩＦＯメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数である。
【００１８】
【発明の実施の形態】
以下、本発明の詳細を添付図に基づいて説明する。図１は第１実施形態のＦＩＦＯメモリ回路のブロック図である。
【００１９】
図１において、装置内部にある内部バスなどを便宜的に第１系統と称し、外部インターフェース部などを第２系統と称する。ＦＩＦＯメモリ回路１０は、第１のＦＩＦＯメモリ１（ＦＩＦＯ１）と、第２のＦＩＦＯメモリ２（ＦＩＦＯ２）と、入力側セレクタ３と、出力側セレクタ４と、状態検出回路５とから構成される。また、状態／制御信号として、入力側のデータ信号Ｄａｔａ＿ｉｎと、入力側の書込み信号ｗｒｉｔｅと、出力側のデータ信号Ｄａｔａ＿ｏｕｔと、出力側データの読出し信号ｒｅａｄと、ＦＩＦＯメモリ回路１０の入力可能状態を表す信号ｉｎ＿ｏｋと、ＦＩＦＯメモリ回路１０の出力可能状態を表す信号ｏｕｔ＿ｏｋとが外部から利用できる信号である。
【００２０】
ＦＩＦＯメモリ回路１０の内部で参照される信号として、ＦＩＦＯ１が空の状態を表す信号ｆｉｆｏ１＿ｅｍｐｔｙと、ＦＩＦＯ１が満杯の状態を表す信号ｆｉｆｏ１＿ｆｕｌｌと、ＦＩＦＯ２が空の状態を表す信号ｆｉｆｏ２＿ｅｍｐｔｙと、ＦＩＦＯ２が満杯の状態を表す信号ｆｉｆｏ２＿ｆｕｌｌとがある。状態検出回路５は、これらの信号から、動作に必要なＦＩＦＯ１またはＦＩＦＯ２を選択する切替え信号ｆｉｆｏ＿ｓｅｌをセレクタ３、４に出力してＦＩＦＯメモリを切替える。さらに、状態検出回路５は、ＦＩＦＯ１とＦＩＦＯ２の空きと満杯の状態を判断して、ＦＩＦＯメモリ回路１０としての状態を表す前記ｉｎ＿ｏｋとｏｕｔ＿ｏｋのそれぞれの信号を出力する。
【００２１】
図２は、ＦＩＦＯメモリ回路１０の前記状態／制御信号に関する状態遷移図であり、（ａ）はＦＩＦＯメモリの切り替え状態を、（ｂ）はｉｎ＿ｏｋの状態を、（ｃ）はｏｕｔ＿ｏｋの状態を表している。図２（ａ）で、切替え信号ｆｉｆｏ＿ｓｅｌが０の場合、ＦＩＦＯ１が選択され、ＦＩＦＯ１が満杯でＦＩＦＯ２が空の場合は、切替え信号ｆｉｆｏ＿ｓｅｌが１になり、ＦＩＦＯ２が選択される。そして、ＦＩＦＯ２が満杯でＦＩＦＯ１が空になると、切替え信号ｆｉｆｏ＿ｓｅｌが再び０になり、ＦＩＦＯ１が選択される。
【００２２】
図２（ｂ）に示すように、ＦＩＦＯ１或いはＦＩＦＯ２またはその両方が空であり、ＦＩＦＯメモリ回路１０として入力が可能の場合、信号ｉｎ＿ｏｋが１になる。ＦＩＦＯメモリ回路１０が満杯になると、信号ｉｎ＿ｏｋが０になり、データの入力ができなくなる。その後、ＦＩＦＯ１或いはＦＩＦＯ２またはその両方が空になると、信号ｉｎ＿ｏｋが再び１になり、データの入力が可能な状態になる。
【００２３】
図２（ｃ）の場合は、ＦＩＦＯ１とＦＩＦＯ２が空であり、ＦＩＦＯメモリ回路１０として出力が不可能の場合、信号ｏｕｔ＿ｏｋが０になる。ＦＩＦＯ１或いはＦＩＦＯ２またはその両方が満杯になると、信号ｉｎ＿ｏｋが１になり、データの出力が可能になる。
【００２４】
以上の遷移状態のルールに基づき、図１に示した第１実施形態のＦＩＦＯメモリ回路１０の具体的な動作を図３のタイミングチャートに沿って説明する。図３は、ＦＩＦＯメモリ回路１０を一方向のデータ転送に使用する場合のタイミングチャートである。なお、図３においては、図１で図示していないシステムのタイミングをとるシステムクロック信号ｓｃｌｋが使用され、他の信号のタイミングが決定される。また、同様にリセット信号ｒｅｓｅｔにより、システム及びＦＩＦＯメモリ回路１０が初期状態にセットされる。その他の信号は、図１の同じ名前の信号にそれぞれ対応する。
【００２５】
まずｒｅｓｅｔ信号によりＦＩＦＯメモリ回路１０が初期化されると、ＦＩＦＯ１とＦＩＦＯ２とがそれぞれ空になり、ｆｉｆｏ１＿ｅｍｐｔｙとｆｉｆｏ２＿ｅｍｐｔｙ信号が出力され、状態検出回路５から図示しない第１系統にｉｎ＿ｏｋ信号が出力される。この時、ｏｕｔ＿ｏｋ信号は０である。また、ｆｉｆｏ＿ｓｅｌ信号は０であり、入力側のセレクタ３によりＦＩＦＯ１がデータ入力用ＦＩＦＯメモリとして選択される。
【００２６】
以上の初期化のあと、入力側の書込み信号ｗｒｉｔｅとデータ信号Ｄａｔａ＿ｉｎが入力される。データの入力開始後、ＦＩＦＯ１からのｆｉｆｏ１＿ｅｍｐｔｙ信号は解除される。その後、ＦＩＦＯ１が入力データにより満杯になると、ＦＩＦＯ１から状態検出回路５に対してｆｉｆｏ１＿ｆｕｌｌ信号が出力され、ＦＩＦＯ1へのデータの入力は終了する。しかし、ＦＩＦＯ２からｆｉｆｏ２＿ｅｍｐｔｙ信号が検出されているので、ｆｉｆｏ＿ｓｅｌ信号が０から１に変わり、セレクタ３がＦＩＦＯ２側に切り替わる。この場合、ＦＩＦＯ２はまだ空なので、状態検出回路５からのｉｎ＿ｏｋ信号は維持される。
【００２７】
引き続き入力される書込み信号ｗｒｉｔｅとデータ信号Ｄａｔａ＿ｉｎは、セレクタ３により切り替わったＦＩＦＯ２に入力される。この時、ＦＩＦＯ２から出力されているｆｉｆｏ２＿ｅｍｐｔｙ信号は解除されて０になる。その後、ＦＩＦＯ２が満杯になった場合、状態検出回路５へｆｉｆｏ２＿ｆｕｌｌ信号が出力され、ｉｎ＿ｏｋ信号が解除されて０になり、ＦＩＦＯメモリ回路１０への入力が禁止される。
【００２８】
ＦＩＦＯメモリを１つしか備えていない従来のＦＩＦＯメモリ回路であれば、ＦＩＦＯメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、ｆｉｆｏ１＿ｆｕｌｌ信号が検出された（ＦＩＦＯ１が満杯になった）時点で、状態検出回路５は出力可能なデータがあると判断でき、ｏｕｔ＿ｏｋ信号を出力する。この信号により、図示しない出力側回路からｒｅａｄ信号が入力され、セレクタ４がＦＩＦＯ１に切り替わり、Ｄａｔａ＿ｏｕｔ信号としてデータがＦＩＦＯ１から出力され始める。この時、状態検出回路５へのｆｉｆｏ１＿ｆｕｌｌ信号は解除される。その後、データが全て出力されてＦＩＦＯ１が空になると、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されて、ＦＩＦＯ１へのデータ入力が可能な状態になる。
【００２９】
前記の過程の途中で、つまり、ＦＩＦＯ１からデータの出力が行われている間に、第１系統からＦＩＦＯ２へのデータ入力が終了すると、ｗｒｉｔｅ信号が終了する。そうすると、ｆｉｆｏ２＿ｆｕｌｌ信号が状態検出回路５に出力され、状態検出回路５は、ＦＩＦＯ１とＦＩＦＯ２の両方にデータがあると判断してｉｎ＿ｏｋ信号を解除し、入力ができない状態になる。その後、前記のようにＦＩＦＯ１のデータ出力が完了し、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されると、状態検出回路５はｆｉｆｏ＿ｓｅｌ信号を０にすると同時に、データの入力が可能であると判断し、ｉｎ＿ｏｋ信号を第１系統に出力して、次のデータ待ちの状態になる。
【００３０】
また、図３のタイミングチャートで明らかなように、ＦＩＦＯメモリ回路１０に入力されるデータと出力されるデータの速度（周期）は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いＦＩＦＯメモリ回路１０へのデータの入出力が可能になる。
【００３１】
さらに、転送するデータのサイズが常に固定されている場合、ＦＩＦＯ１とＦＩＦＯ２の容量を同一とし、更にその合計容量をこのサイズの約数にすることにより、より効率の良い転送を実現できる。例えば、パソコンなどのハードディスクの場合、５１２バイトが１つの転送単位になる。そのため、ＦＩＦＯ１とＦＩＦＯ２の容量をそれぞれ８バイトや１６バイトにすると、転送完了時には、最後のデータがＦＩＦＯ２に入力されるとｆｉｆｏ１＿ｆｕｌｌ、ｆｉｆｏ２＿ｆｕｌｌとなり、また、最後のデータが取り出されるとｆｉｆｏ１＿ｅｍｐｔｙ、ｆｉｆｏ２＿ｅｍｐｔｙとなる。このため、転送終了時にＦＩＦＯメモリ回路１０にデータが残ることはなく、２つのＦＩＦＯメモリの切り替え回路の構成が容易になる。
【００３２】
次に、本発明の第２実施形態を図４を参照して説明する。第２実施形態では、第１実施形態に用いた用いたＦＩＦＯメモリ回路１０を２つ利用して、双方向のＦＩＦＯメモリ回路による転送を実現している。図４は、２つのＦＩＦＯメモリ回路１０で双方向のデータ転送を実現するブロック図である。装置内部にある内部バスなどを便宜的に第１系統と称し、外部インターフェース部などを第２系統と称する。ＦＩＦＯメモリ回路１０を含むＦＩＦＯメモリ回路１０ａは例えば第１系統から第２系統への転送に利用され、ＦＩＦＯメモリ回路１０を含むＦＩＦＯメモリ回路１０ｂは第２系統から第１系統への転送に利用される。
【００３３】
この場合、ＦＩＦＯメモリ回路１０ａと１０ｂは互いに相互作用を及ぼすことなく、それぞれ独立して動作するため、ＦＩＦＯメモリ回路１０ａの動作に関しては、前記第１実施形態に係わる説明が適用されるので、その動作説明は省略する。また、ＦＩＦＯメモリ回路１０ｂの動作に関しては、第２系統からの信号をそれぞれｄａｔａ＿ｉｎ、ｗｒｉｔｅ、ｉｎ＿ｏｋに接続し、第１系統からの信号をそれぞれｄａｔａ＿ｏｕｔ、ｒｅａｄ、ｏｕｔ＿ｏｋに接続すれば、第１実施形態に係わる説明が適用することができるので、その動作説明は省略する。
【００３４】
このように、双方向のデータ転送が同時に発生する場合、それぞれのデータ転送経路にＦＩＦＯメモリ回路１０を使用することで、それぞれの経路で、入力側と出力側の速度に依存しないデータの転送を効率よく行うことが可能になる。また、３つ以上の独立したデータ転送経路があり、同時にデータが転送される場合であっても、それぞれの経路にＦＩＦＯメモリ回路１０を使用することで同様なことが可能になる。
【００３５】
次に本発明の第３実施形態を、図５と図６を参照して説明する。第２実施形態では双方向のデータ転送に、２つのＦＩＦＯメモリ回路１０を使用することを説明したが、それぞれの方向のデータ転送が同時に発生しない場合が往々にしてある。例えば、ハードディスク装置などの記憶装置、或いは光ディスクを使用した書込み可能なＣＤやＤＶＤなどは、データ書込み時と読み取り時に双方向のデータ転送は発生するが、同時には起こりえない構造になっている。このような場合に、本発明のＦＩＦＯメモリ回路１０を使用することで、双方向のデータ転送を１つのＦＩＦＯメモリ回路１０で共用することが可能となる。
【００３６】
図５は、双方向のデータ転送にＦＩＦＯメモリ回路１０を使用したブロック図である。装置内部にある内部バスなどを便宜的に第１系統と称し、外部インターフェース部などを第２系統と称する。ＦＩＦＯメモリ回路１０が有する信号は第１の実施形態で説明したとおりなので、その詳しい説明は省略し、双方向として利用するための付加的な回路と、外部から接続される信号について最初に説明する。
【００３７】
図５において、セレクタ１１は、２つの系統からの信号Ｅｘｔ＿Ｄａｔａ＿ｉｎとＩｎｔ＿Ｄａｔａ＿ｉｎとを切り替えて、ＦＩＦＯメモリ回路１０の入力側のＤａｔａ＿ｉｎに接続する。また、セレクタ１２は、２つの系統からの信号Ｅｘｔ＿ｗｒｉｔｅとＩｎｔ＿ｗｒｉｔｅとを切り替えて、ＦＩＦＯメモリ回路１０の入力側のｗｒｉｔｅに接続する。セレクタ１３は、２つの系統からの信号Ｅｘｔ＿ｒｅａｄとＩｎｔ＿ｒｅａｄとを切り替えて、ＦＩＦＯメモリ回路１０の出力側のｒｅａｄに接続する。
【００３８】
また、セレクタ１１、１２、１３を、前記した２つの系統のいずれかの信号に切り替える方向切替信号ｒｗｎが図示しないシステムの制御部から供給される。第１系統からの信号として、第１系統のデータをＦＩＦＯメモリ回路１０送出するＩｎｔ＿Ｄａｔａ＿ｉｎと、そのデータの書込み信号Ｉｎｔ＿ｗｒｉｔｅと、ＦＩＦＯメモリ回路１０の状態信号ｉｎ＿ｏｋが第１系統に取り込まれる際のＩｎｔ＿ｉｎ＿ｏｋと、データが第１系統に取り込まれる際のＩｎｔ＿Ｄａｔａ＿ｏｕｔと、その場合の読出し信号Ｉｎｔ＿ｒｅａｄと、ＦＩＦＯメモリ回路１０の出力が可能な状態を示すｏｕｔ＿ｏｋを第１系統に取り込む際の信号Ｉｎｔ＿ｏｕｔ＿ｏｋとがある。
【００３９】
さらに、図外の第２系統の回路や装置が取り扱う信号として、第２系統からのデータを供給する信号Ｅｘｔ＿Ｄａｔａ＿ｉｎと、そのデータをＦＩＦＯメモリ回路１０に書込む信号Ｅｘｔ＿ｗｒｉｔｅと、ＦＩＦＯメモリ回路１０の状態信号ｉｎ＿ｏｋが第２系統に取り込まれる際のＩｎｔ＿ｉｎ＿ｏｋと、ＦＩＦＯメモリ回路１０からデータが第２系統に供給される信号Ｅｘｔ＿Ｄａｔａ＿ｏｕｔと、そのデータをＦＩＦＯメモリ回路１０から読み出すための信号Ｅｘｔ＿ｒｅａｄと、ＦＩＦＯメモリ回路１０の出力が可能な状態を示すｒｅａｄ＿ｏｋを外部装置に取り込む際の信号Ｅｘｔ＿ｒｅａｄ＿ｏｋとがある。
【００４０】
セレクタ１１は、ｒｗｎ信号によりＥｘｔ＿ｄａｔａ＿ｉｎまたはＩｎｔ＿ｄａｔａ＿ｉｎのいずれかを選択して、ＦＩＦＯメモリ回路１０のｄａｔａ＿ｉｎ信号に接続し、セレクタ１２は、ｒｗｎ信号によりＥｘｔ＿ｗｒｉｔｅまたはＩｎｔ＿ｗｒｉｔｅのいずれかを選択して、ＦＩＦＯメモリ回路１０のｗｒｉｔｅ信号に接続し、セレクタ１３は、ｒｗｎ信号によりＥｘｔ＿ｒｅａｄまたはＩｎｔ＿ｒｅａｄのいずれかを選択して、ＦＩＦＯメモリ回路１０のｒｅａｄ信号に接続する。
【００４１】
以上の説明に基づき、図５に示した第３実施形態のＦＩＦＯメモリ回路１０の具体的な動作を図１と、図６のタイミングチャートに沿って説明する。図６は、１つのＦＩＦＯメモリ回路１０を使用して双方向のデータ転送を行う場合のタイミングチャートである。なお、図６においては、図５で図示しないシステムのタイミングをとるシステムクロック信号ｓｃｌｋにより他の信号のタイミングが決定される。また、同様にシステムのリセット信号ｒｅｓｅｔにより、システム及びＦＩＦＯメモリ回路１０が初期状態にセットされる。その他の信号は、図１および図５の同じ名前の信号にそれぞれ対応する。
【００４２】
まずｒｅｓｅｔ信号によりシステムとＦＩＦＯメモリ回路１０が初期化されると、ｒｗｎ信号が０となり、セレクタ１１〜１３がそれぞれ、第１系統から第２系統へのデータ転送方向に切り替わる（図の左から右へのデータ転送）。そうすると、Ｉｎｔ＿ｄａｔａ＿ｉｎがｄａｔａ＿ｉｎに、Ｉｎｔ＿ｗｒｉｔｅがｗｒｉｔｅに、Ｅｘｔ＿ｒｅａｄがｒｅａｄにそれぞれ接続される。この時、ＦＩＦＯ１とＦＩＦＯ２とがそれぞれ空であるため、ｆｉｆｏ１＿ｅｍｐｔｙとｆｉｆｏ２＿ｅｍｐｔｙ信号が出力され、状態検出回路５からｉｎ＿ｏｋ信号がＩｎｔ＿ｉｎ＿ｏｋとして出力される。この時、ｏｕｔ＿ｏｋ、つまり、 Ｅｘｔ＿ｏｕｔ＿ｏｋ信号は０であり、ＦＩＦＯメモリ回路１０からの出力はできない。また、ｆｉｆｏ＿ｓｅｌ信号は０であり、入力側のセレクタ３によりＦＩＦＯ１が入力用ＦＩＦＯメモリとして選択される。
【００４３】
以上の初期化のあと、入力側の書込み信号Ｉｎ＿ｗｒｉｔｅとデータ信号Ｉｎ＿Ｄａｔａ＿ｉｎが入力される。データの入力開始後、ＦＩＦＯ１からのｆｉｆｏ１＿ｅｍｐｔｙ信号は解除される。その後、ＦＩＦＯ１が入力データにより満杯になると、ＦＩＦＯ１から状態検出回路５に対してｆｉｆｏ１＿ｆｕｌｌ信号が出力され、ＦＩＦＯ1へのデータの入力は終了する。しかし、ＦＩＦＯ２からｆｉｆｏ２＿ｅｍｐｔｙ信号が検出されているので、ｆｉｆｏ＿ｓｅｌ信号が０から１に変わり、セレクタ３がＦＩＦＯ２側に切り替わる。この場合、ＦＩＦＯ２はまだ空なので、状態検出回路５からのＩｎｔ＿ｉｎ＿ｏｋ信号は維持される。
【００４４】
引き続き入力される書込み信号Ｉｎｔ＿ｗｒｉｔｅとデータ信号Ｉｎｔ＿Ｄａｔａ＿ｉｎ入力は、セレクタ３により切り替わったＦＩＦＯ２に入力される。この時、ＦＩＦＯ２から出力されているｆｉｆｏ２＿ｅｍｐｔｙ信号は解除されて０になる。その後、ＦＩＦＯ２が満杯になった場合、状態検出回路５へｆｉｆｏ２＿ｆｕｌｌ信号が出力され、Ｉｎｔ＿ｉｎ＿ｏｋ信号が解除されて０になり、入力が禁止される。
【００４５】
ＦＩＦＯメモリを１つしか備えていない従来のＦＩＦＯメモリ回路であれば、ＦＩＦＯメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、ｆｉｆｏ１＿ｆｕｌｌ信号が検出された時点で、状態検出回路５は出力可能なデータがあると判断でき、Ｅｘｔ＿ｏｕｔ＿ｏｋ信号を出力する。この信号により、図示しない第２系統からＥｘｔ＿ｒｅａｄ信号が入力され、セレクタ４がＦＩＦＯ１に切り替わり、Ｅｘｔ＿Ｄａｔａ＿ｏｕｔ信号としてデータがＦＩＦＯ１から出力され始める。この時、状態検出回路５へのｆｉｆｏ１＿ｆｕｌｌ信号は解除される。その後、データが全て出力されてＦＩＦＯ１が空になると、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されるので、ＦＩＦＯ１へのデータ入力が可能な状態になる。
【００４６】
前記の過程の途中で、つまり、ＦＩＦＯ１からデータの出力が行われている間に、第１系統からＦＩＦＯ２へのデータ入力が終了すると、Ｉｎ＿ｗｒｉｔｅ信号が終了する。そうすると、ｆｉｆｏ２＿ｆｕｌｌ信号が状態検出回路５に出力され、状態検出回路５は、ＦＩＦＯ１とＦＩＦＯ２の両方にデータがあると判断してＩｎｔ＿ｉｎ＿ｏｋ信号を解除し、入力ができない状態になる。その後、前記のようにＦＩＦＯ１のデータ出力が完了し、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されると、状態検出回路５はｆｉｆｏ＿ｓｅｌ信号を０にすると同時に、データの入力が可能であると判断し、Ｉｎｔ＿ｉｎ＿ｏｋ信号を第１系統に出力して、次のデータ待ちの状態になる。
【００４７】
次に、データの転送方向が逆になった場合、すなわち、第２系統から第１系統へ（図の右から左へ）のデータ転送について説明する。この場合、前記したｒｗｎ信号が１になり、セレクタ１１〜１３がそれぞれ、第２系統から第１系統へのデータ転送方向に切り替わる。そうすると、Ｅｘｔ＿ｄａｔａ＿ｉｎがｄａｔａ＿ｉｎに、Ｅｘｔ＿ｗｒｉｔｅがｗｒｉｔｅに、Ｉｎ＿ｒｅａｄがｒｅａｄにそれぞれ接続される。この時、第１系統から第２系統へのデータ転送は既に完了しているので、ＦＩＦＯ１とＦＩＦＯ２とはそれぞれ空であるため、ｆｉｆｏ１＿ｅｍｐｔｙとｆｉｆｏ２＿ｅｍｐｔｙ信号が出力され、状態検出回路５からｉｎ＿ｏｋ信号がＥｘｔ＿ｉｎ＿ｏｋとして出力される。この時、Ｉｎ＿ｏｕｔ＿ｏｋ信号は０であり、ＦＩＦＯメモリ回路１０からの出力はできない。また、ｆｉｆｏ＿ｓｅｌ信号は０であり、入力側のセレクタ３によりＦＩＦＯ１が入力用ＦＩＦＯメモリとして選択される。
【００４８】
このあと、第２系統からの書込み信号Ｅｘｔ＿ｗｒｉｔｅとデータ信号Ｅｘｔ＿Ｄａｔａ＿ｉｎ入力される。データの入力開始後、ＦＩＦＯ１からのｆｉｆｏ１＿ｅｍｐｔｙ信号は解除される。その後、ＦＩＦＯ１が入力データにより満杯になると、ＦＩＦＯ１から状態検出回路５に対してｆｉｆｏ１＿ｆｕｌｌ信号が出力され、ＦＩＦＯ1へのデータの入力は終了する。しかし、ＦＩＦＯ２からｆｉｆｏ２＿ｅｍｐｔｙ信号が検出されているので、ｆｉｆｏ＿ｓｅｌ信号が０から１に変わり、セレクタ３がＦＩＦＯ２側に切り替わる。この場合、ＦＩＦＯ２はまだ空なので、状態検出回路５からのＥｘｔ＿ｉｎ＿ｏｋ信号は維持される。
【００４９】
引き続き入力される書込み信号Ｅｘｔ＿ｗｒｉｔｅとデータ信号Ｅｘｔ＿Ｄａｔａ＿ｉｎ入力は、セレクタ３により切り替わったＦＩＦＯ２に入力される。この時、ＦＩＦＯ２から出力されているｆｉｆｏ２＿ｅｍｐｔｙ信号は解除されて０になる。その後、ＦＩＦＯ２が満杯になった場合、状態検出回路５へｆｉｆｏ２＿ｆｕｌｌ信号が出力され、Ｅｘｔ＿ｉｎ＿ｏｋ信号が解除されて０になり、第２系統からの入力が禁止される。
【００５０】
ＦＩＦＯメモリを１つしか備えていない従来のＦＩＦＯメモリ回路であれば、ＦＩＦＯメモリ回路が満杯になった時点で初めてデータの出力が可能になる。しかし、本実施形態では、前記のプロセスの途中、すなわち、ｆｉｆｏ１＿ｆｕｌｌ信号が検出された時点で、状態検出回路５は出力可能なデータがあると判断でき、Ｉｎ＿ｏｕｔ＿ｏｋ信号を出力する。この信号により、第１系統からＩｎ＿ｒｅａｄ信号が入力され、セレクタ４がＦＩＦＯ１に切り替わり、Ｉｎ＿Ｄａｔａ＿ｏｕｔ信号としてデータがＦＩＦＯ１から出力され始める。この時、状態検出回路５へのｆｉｆｏ１＿ｆｕｌｌ信号は解除される。その後、データが全て出力されてＦＩＦＯ１が空になると、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されて、ＦＩＦＯ１へのデータ入力が可能な状態になる。
【００５１】
前記の過程の途中で、つまり、ＦＩＦＯ１からデータの出力が行われている間に、第２系統からのＦＩＦＯ２へのデータ入力が終了すると、Ｅｘｔ＿ｗｒｉｔｅ信号が終了する。そうすると、ｆｉｆｏ２＿ｆｕｌｌ信号が状態検出回路５に出力され、状態検出回路５は、ＦＩＦＯ１とＦＩＦＯ２の両方にデータがあると判断してＥｘｔ＿ｉｎ＿ｏｋ信号を解除し、第２系統からデータ入力ができない状態になる。その後、前記のようにＦＩＦＯ１のデータ出力が完了し、ｆｉｆｏ１＿ｅｍｐｔｙ信号が状態検出回路５に出力されると、状態検出回路５はｆｉｆｏ＿ｓｅｌ信号を０にすると同時に、データの入力が可能であると判断し、Ｉｎｔ＿ｉｎ＿ｏｋ信号を入力側回路に出力して、データ待ちの状態になる。
【００５２】
また、図６のタイミングチャートで明らかなように、ＦＩＦＯメモリ回路１０に入力されるデータと出力されるデータの速度（周期）は異なっている。この様な場合であっても、前記したように、状態信号の確認を行って動作をさせるため、効率の良いＦＩＦＯメモリ回路１０へのデータの入出力が可能になる。
【００５３】
【発明の効果】
本発明では、切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して、書込み信号の供給と入力データ信号とを中継する第１セレクタと、前記切替信号を受け、前記第１と第２ＦＩＦＯメモリのいずれか一方を選択して、読出し信号の供給と出力データ信号とを中継する第２セレクタと、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより前記第１セレクタと第２セレクタに切替信号を送出する状態検出回路とを備えているため、第１と第２ＦＩＦＯメモリの管理をＦＩＦＯメモリ回路自体で行うことができ、ＦＩＦＯメモリ回路が入力データで満杯になる前にデータを出力し、データ転送を効率よく行うことが可能になると同時に、入力されるデータと出力されるデータの速度や周期に差があってもその差異を吸収して確実にバッファリング動作を行うことが可能になる。
【００５４】
また、前記状態検出回路は、前記第１と第２ＦＩＦＯメモリそれぞれのエンプティ状態とフル状態を検出することにより、ＦＩＦＯメモリ回路が入力可能な状態であることを通知する入力可能通知信号と、出力可能な状態であることを通知する出力可能通知信号とを外部に出力するため、外部の回路は、第１と第２ＦＩＦＯメモリの管理に関与することなく、データの書込みと読出しの指示を行うことができ、外部の回路構成と制御方法を簡素化することに貢献する。
【００５５】
さらに、ＦＩＦＯメモリ回路へのデータ入力を第１系統から或いは第２系統からに切り替える外部からの系統切替信号により、第１系統からデータが入力される場合、前記書込み信号と入力データ信号は第１系統の書込み信号と入力データ信号に、前記読出し信号は第２系統の読出し信号にそれぞれ接続され、第２系統からデータが入力される場合、前記書込み信号と入力データ信号は第２系統の書込み信号と入力データ信号に、前記読出し信号は第１系統の読出し信号にそれぞれ接続され、前記出力データ信号は常に第１と第２系統の出力データ信号に接続されるため、系統切替信号を発生してデータの転送方向を逆にできるので、双方向のデータ転送が同時に発生しない場合は、１つのＦＩＦＯメモリ回路をそれぞれの方向のデータ転送に共用して、小さな回路規模でコストダウンを実現し、さらに効率の良いデータ転送を行えるという優れた効果を奏する。
【００５６】
さらに、前記第１と第２ＦＩＦＯメモリの記憶容量は同一であり、且つ前記データ転送の転送データ単位の約数になるように設定することにより、第１と第２ＦＩＦＯの制御と、ＦＩＦＯメモリ回路の内部回路構成を簡単にすることができる。
【図面の簡単な説明】
【図１】本第１実施形態のＦＩＦＯメモリ回路のブロック図である。
【図２】ＦＩＦＯメモリ回路１０の前記状態／制御信号に関する状態遷移図であり、（ａ）はＦＩＦＯメモリの切り替えを、（ｂ）はｉｎ＿ｏｋの状態を、（ｃ）はｏｕｔ＿ｏｋの状態を表している。
【図３】ＦＩＦＯメモリ回路１０を一方向のデータ転送に使用する場合のタイミングチャートである。
【図４】２つのＦＩＦＯメモリ回路で双方向のデータ転送を実現するブロック図である。
【図５】双方向のデータ転送にＦＩＦＯメモリ回路１０を使用したブロック図である。
【図６】１つのＦＩＦＯメモリ回路１０を使用して双方向のデータ転送を行う場合のタイミングチャートである。
【図７】従来のＦＩＦＯメモリ回路と使用される信号を示す図である。
【符号の説明】
３、４、１１、１２、１３  セレクタ
１、２、１０１  ＦＩＦＯメモリ
５    状態検出回路
１０、１０ａ、１０ｂ、１００  ＦＩＦＯメモリ回路
【図１】
2004206487.tif 000003
【図２】
2004206487.tif 000004
【図３】
2004206487.tif 000005
【図４】
2004206487.tif 000006
【図５】
2004206487.tif 000007
【図６】
2004206487.tif 000008
【図７】
2004206487.tif 000009