(57)【特許請求の範囲】
【請求項１】
記憶手段と、
入力クロックに同期した入力ポインタを生成する入力側用入力ポインタ生成回路と、
入力要求信号を出力クロックに同期させる出力側用クロック乗換回路と、
前記出力側用クロック乗換回路によって出力クロックに同期された入力要求信号によって出力側入力ポインタを生成する出力側入力ポインタ生成回路と、
出力クロックに同期した出力ポインタを生成する出力側出力ポインタ生成回路と、
前記出力側要求信号を入力クロックに同期させる入力側用クロック乗換回路と、
前記出力側用クロック乗換回路によって入力クロックに同期された出力要求信号によって入力側出力ポインタを生成する入力側出力ポインタ生成回路と、
前記入力クロックに同期した入力ポインタと前記入力クロックに同期する出力ポインタから入力クロック同期のＦＩＦＯ状態を生成する入力クロック同期ＦＩＦＯ状態生成回路と、
前記出力クロック同期の入力ポインタと前記出力クロック同期の出力ポインタとから前記出力クロックに同期したＦＩＦＯ状態を生成する出力クロック同期ＦＩＦＯ状態生成回路と、
前記入力クロック同期ＦＩＦＯ状態生成回路の指示に応じて前記記憶手段にデータを入力する入力部と、
前記出力クロック同期ＦＩＦＯ状態生成回路の指示に応じて前記記憶手段からデータを出力する出力部とを備えた、ＦＩＦＯ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はＦＩＦＯ（先入れ先出し）回路に関し、特に、入力側と出力側とのクロック信号が相互に同期していない場合に、データの入出力を効率よく行うＦＩＦＯ回路に関する。
【０００２】
【従来の技術】
パーソナルコンピュータと他の機器とを接続するとき、互いのクロック信号が同期している必要がある。もし、両者のクロック信号が同期していない場合には、データを転送することができない。このため、互いのクロック信号を同期させるためにＦＩＦＯ回路が用いられている。
【０００３】
そのようなＦＩＦＯ回路として、たとえば特開２００１−２２２４０７号公報に記載されている。図５はそのＦＩＦＯ回路のブロック図である。
【０００４】
図５において、ＦＩＦＯ回路２１０には入力制御回路２１１と出力制御回路２０２とが接続されている。入力データ端子１３１から入力されたデータはデュアルポートメモリ１１０に与えられ、出力データ端子１３２を介して出力制御回路２０２に出力される。入力制御回路２１１の入力要求端子１２１から入力要求信号と、入力クロック端子１０１から入力クロック信号とが入力ポインタ生成回路１４１に与えられる。
【０００５】
入力ポインタ生成回路１４１は入力要求信号に応じて、入力クロック信号に同期した入力ポインタを生成してデュアルポートメモリ１１０の入力ポインタ１８１に与えるとともに、クロック乗換回路１６２に与える。入力ポインタ１８１は入力クロックに同期してデュアルポートメモリ１１０のどこに格納するかを示している。クロック乗換回路１６２は入力ポインタ生成回路１４１で生成された入力ポインタを出力クロック信号に同期させて減算器１７２に与える。
【０００６】
一方、出力制御回路２０２の出力要求端子１２２から出力要求信号と、出力クロック端子１０２から出力クロック信号とが出力ポインタ生成回路１４２に与えられる。出力ポインタ生成回路１４２は出力要求信号に応じて、出力クロック信号に同期した出力ポインタ２２を生成してデュアルポートメモリ１１０の出力ポインタ１８２に与えるとともに、クロック乗換回路１６１に与える。出力ポインタ１８２は出力クロック信号に同期しかつ出力要求信号にしたがってデュアルポートメモリ１１０のどこからデータを出力するのかを示している。クロック乗換回路１６１は出力ポインタ生成回路１４２で生成された出力ポインタを出力クロック信号に同期させて減算器１７１に与える。
【０００７】
減算器１７２はクロック乗換回路１６２の出力の入力ポインタから出力ポインタ生成回路１４２の出力の出力ポインタを減算し、出力可能数を出力クロック同期端子１１２から出力制御回路２０２に出力する。また、減算器１７１はクロック乗換回路１６１の出力の出力ポインタから入力ポインタ生成回路１４１の出力の入力ポインタを減算し、そのうちのＭＳＢを１ビットインバータ１１８で反転し、入力可能数を入力クロック同期端子１１１から出力する。
【０００８】
このＦＩＦＯ回路は入力クロックから出力クロックへの乗換は、一般にビット幅の大きなデータではなく、ビット幅の小さなポインタを通して行なわれるため、より少ない回路規模でクロックの乗換が可能となるという特徴がある。
【０００９】
【発明が解決しようとする課題】
しかしながら、図５に示したＦＩＦＯ回路では、ポインタというビット幅の小さなクロック乗換となっているが、複数ビットであるため、各ビット分のクロック乗換回路が必要となるため、規模が大きくなるという欠点がある。
【００１０】
それゆえに、この発明の主たる目的は回路面積の縮小を図ったＦＩＦＯ回路を提供することである。
【００１１】
【課題を解決するための手段】
この発明は、記憶手段と、入力クロックに同期した入力ポインタを生成する入力側用入力ポインタ生成回路と、入力要求信号を出力クロックに同期させる出力側用クロック乗換回路と、出力側用クロック乗換回路によって出力クロックに同期された入力要求信号によって出力側入力ポインタを生成する出力側入力ポインタ生成回路と、出力クロックに同期した出力ポインタを生成する出力側出力ポインタ生成回路と、出力側要求信号を入力クロックに同期させる入力側用クロック乗換回路と、出力側用クロック乗換回路によって入力クロックに同期された出力要求信号によって入力側出力ポインタを生成する入力側出力ポインタ生成回路と、入力クロックに同期した入力ポインタと入力クロックに同期する出力ポインタから入力クロック同期のＦＩＦＯ状態を生成する入力クロック同期ＦＩＦＯ状態生成回路と、出力クロック同期の入力ポインタと出力クロック同期の出力ポインタとから出力クロックに同期したＦＩＦＯ状態を生成する出力クロック同期ＦＩＦＯ状態生成回路と、入力クロック同期ＦＩＦＯ状態生成回路の指示に応じて記憶手段にデータを入力する入力部と、出力クロック同期ＦＩＦＯ状態生成回路の指示に応じて記憶手段からデータを出力する出力部とを備えて構成される。
【００１２】
【発明の実施の形態】
図１はこの発明の一実施形態のＦＩＦＯ回路を示すブロック図である。図１において、図示しないがＦＩＦＯ回路の入力側には図５に示した入力制御回路２１１が接続されており、出力側には出力制御回路２０２が接続されている。
【００１３】
入力データ１はたとえばデュアルポートメモリなどのメモリ２に与えられ、メモリ２から出力データ３が出力される。入力クロック信号４はクロック乗換回路５と入力ポインタ生成回路６と出力ポインタ生成回路７とクロック乗換回路１７とに与えられる。クロック乗換回路５は出力要求信号１５を入力クロック信号４に同期させて出力する。
【００１４】
入力ポインタ生成回路６は入力クロック信号４に同期し、入力要求信号１０に応じてメモリ２のどの領域に入力データ１を格納するかを示すポインタである。出力ポインタ生成回路７は出力要求信号１５をクロック乗換回路５で入力クロック信号４に同期させた信号に応じて、入力クロック信号４に同期してメモリ２のどの領域から出力データ３を出力するかを示すポインタである。入力ポインタ生成回路６の出力と出力ポインタ生成回路７の出力は減算器８に与えられる。減算器８は出力ポインタ生成回路７の出力値から入力ポインタ生成回路６の出力値を減算して入力可能数を示す信号９を入力制御回路２１１に出力する。
【００１５】
出力制御回路２０２から与えられる出力クロック信号１６は出力ポインタ生成回路１１と入力ポインタ生成回路１２とクロック乗換回路５とクロック乗換回路１７とに与えられる。クロック乗換回路１７は入力要求信号１０を出力クロック信号１６に同期させて出力させる。出力ポインタ生成回路１１は出力クロック信号１６に同期し、出力要求信号１５に応じてメモリ２のどの領域からデータを出力するのかを示すポインタである。入力ポインタ生成回路１２は入力要求信号１０をクロック乗換回路１７で出力クロック信号１６に同期させた信号にしたがって、出力クロック信号１６に同期してメモリ２のどの領域へ入力データ１を格納するのかを示すポインタである。出力ポインタ生成回路１１の出力と入力ポインタ生成回路１２の出力は減算器１３に与えられる。減算器１３は入力ポインタ生成回路１２の出力から出力ポインタの出力を減算して出力可能数を示す信号１４を出力する。
【００１６】
次に、この発明の一実施形態の動作について説明する。
（初期状態）
初期状態において、入力ポインタ生成回路６と、出力ポインタ生成回路１１の出力値は共に０である。すなわち、入力クロック信号４に同期した入力ポインタおよび出力ポインタの値は共に０であるので、減算器８の出力の入力可能数は２ｎであり、減算器１３の出力の出力可能数は０である。
（ＦＩＦＯへのデータ入力）
入力側の減算器８の出力である入力可能数が０のときはメモリ２が一杯であるので外部からのＦＩＦＯへの入力は禁止される。次に、ＦＩＦＯ外部からの入力要求が禁止されていないときに、メモリ２への入力データ１が入力され、入力要求信号１０がアサートされたとする。次の入力クロック信号４が入力されると、入力ポインタ生成回路６の出力値として指定されたメモリ２内の領域に入力データ１が書込まれ、併せて入力ポインタ生成回路６が出力する入力ポインタの値がインクリメントされる。
【００１７】
一方、出力側のクロック乗換回路１７は、入力要求信号１０を出力クロック信号１６に同期させて、入力ポインタ生成回路１２に与える。入力ポインタ生成回路１２は出力クロック信号１６に同期して出力側の入力ポインタを生成する。
（ＦＩＦＯからのデータ出力）
出力可能数信号１４が０のときはメモリ２が空であるので、ＦＩＦＯ回路外部からの出力要求は禁止される。
【００１８】
次に、ＦＩＦＯ回路外部からの出力要求が禁止されていないときに、出力要求信号１５がアサートされたとする。次の出力クロック信号１６によって、出力ポインタ生成回路１１の出力値として指定されたメモリ２内のアドレスのメモリセルから出力データ３が出力され、併せて出力側の出力ポインタ生成回路１１が出力する出力ポインタの値がインクリメントされる。
【００１９】
また、入力側用のクロック乗換回路５は、出力要求信号１５を入力クロック信号４に同期させて、入力側の出力ポインタ生成回路７に与える。出力ポインタ生成回路７は入力クロック信号４に同期して入力側の出力ポインタを生成する。
【００２０】
なお、上述の説明では、説明の都合上初期状態における入力ポインタ生成回路６の出力値および出力ポインタ生成回路１１の出力値は０としたが、これは実装上任意に決定してもよい。
【００２１】
また、入力ポインタ生成回路６および出力ポインタ生成回路１１は、それぞれ入力要求および出力要求がアサートされたときにインクリメントされるものとしたが、デクリメントされるように実装してもよいのはもちろんである。
【００２２】
上述のごとく、この実施形態のＦＩＦＯ回路によれば、異なるクロック周期を有する機器間を接続するＦＩＦＯとしての動作を実現できる。そして、図示しない入力制御回路は入力ポインタのクロック乗換を待たずに入力クロック信号４ごとに入力要求を出し得るので、ＦＩＦＯ回路の転送性能は、入力クロック信号４と出力クロック信号１６のうち、周波数の低い方で律速される。これは従来のＦＩＦＯ回路の転送性能と比べて、２倍の転送性能となる。
【００２３】
なお、従来は２＾ｎ語のＦＩＦＯに対して、ｎビットのポインタを用いていたため、入力ポインタと出力ポインタとの一致検出のみによってＦＩＦＯの状態を生成することができなかった。これは、入力ポインタと出力ポインタとが一致する状況として、ＦＩＦＯが空きである場合と、ＦＩＦＯが一杯である場合の２通りの場合があり得るからである。
【００２４】
図２は図１に示したクロック乗換回路としてのプロテクテッド・ハンドシェイク回路を示す図である。図２において、ラッチ３１〜３４はハンドシェイク回路を構成しており、その詳細はたとえば「Ｄｅｓｉｇｉｎｇ  ＡＳＩＣＳ」  トライエックス刊の１３０頁（第５章）の図５．２、１３１頁の説明に記載されているものであり、ラッチ３１と３２との間にＤタイプラッチ３５が接続され、禁止ラインの途中にＤタイプラッチ３６が接続されている。そして、要求信号のクロック乗換回路としてこれを利用して同期システムの内部状態を保護することにより、相互に非同期入出力クロックに対しても全く安全にＦＩＦＯを機能させることができる。
【００２５】
図３は図１に示したクロック乗換回路としてのＴタイプ・サービス・ラッチを持つハンドシェイク回路を示す図である。
【００２６】
図３において、図２と同様にしてラッチ３１〜３４はハンドシェイク回路を構成しており、ラッチ３１と３２との間にＴタイプラッチ３７を接続したものである。これを用いることにより、データ転送後すぐにリクエストラッチを使用することが可能になり、転送スループットが向上する。
【００２７】
図４は図１に示した入力要求信号および出力要求信号のクロック乗換回路としてのジェントルマン・アグリーメント回路を示す図である。図４において、サービスラッチ３１と、リクエストラッチ３２と、ラッチ３３，３４によってハンドシェイク回路が構成され、サービスラッチ３１とリクエストラッチ３２との間にプロテクションラッチ３８が接続され、禁止ラインの途中にもプロテクションラッチ３９が接続されている。
【００２８】
これを用いることにより、ＦＩＦＯ全体を同期要素のみによって実現することが可能になる。また、データ有効は出力せず、さらにリクエスト要求入力と禁止ラインはインバータを介して接続されている。
【００２９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００３０】
【発明の効果】
以上のように、この発明によれば、送信側と受信側とで相互にクロック周波数が相違する機器、システムでの接続用に使用されるＦＩＦＯ回路において、データの転送の必要が生じた際には転送レートが高く、入力制御および出力制御に対してディップスティックを提供でき、しかも回路規模の小さい回路を実現できる。
【図面の簡単な説明】
【図１】  この発明の一実施形態におけるＦＩＦＯ回路のブロック図である。
【図２】  図１に示したクロック乗換回路としてのプロテクテッド・ハンドシェイク回路を示す図である。
【図３】  図１に示したクロック乗換回路としてのＴタイプ・サービス・ラッチを持つハンドシェイク回路を示す図である。
【図４】  図１に示したクロック乗換回路としてのジェントルマン・アグリーメント回路を示す図である。
【図５】  従来のＦＩＦＯ回路を示すブロック図である。
【符号の説明】
１  入力データ、２  メモリ、３  出力データ、４  入力クロック信号、５，１７  クロック乗換回路、６，１２  入力ポインタ生成回路、７，１１  出力ポインタ生成回路、８，１３  減算器、９  入力可能数信号、１０  入力要求信号、１４  出力可能数信号、１５  出力要求信号、１６  出力クロック信号。
【図１】
0003790158.tif 000002
【図２】
0003790158.tif 000003
【図３】
0003790158.tif 000004
【図４】
0003790158.tif 000005
【図５】
0003790158.tif 000006