(57)【要約】ＲＡＭベースのＦＩＦＯに用いられるグレイコード計数システムＡＰ１は、読み出しポインタ１０、書き込みポインタ２０および検出器３０を備える。読み出しポインタはグレイコードデコーダ１１、２進インクリメンタ１２、グレイコードデコーダ１３およびポインタ計数を保持するレジスタ１４を含む。２進インクリメンタは、入力が０１１０（１０進法で６）または１１１０（１０進法で１４）の場合（これらの場合には３だけ増分させる）を除いて、１だけ増分させる。その結果、１６個の可能な４ビット・グレイコード値のうち並進的かつ反射像的な双方向対称性を有するように分布した１２個の許可されたグレイコード値を有する４ビットモジュロ‐１２グレイコードのシーケンスとなる。書き込みポインタも同様である。並進的な対称性のために、２の乗数のモジュロ数を有するカウンタと共に動作する検出器は、“フル”および“エンプティ”の指示をもたらすように、対応する２の非乗数カウンタと共に動作する。読み出しおよび書き込みの計数が２つの最上位ビット位置においては異なるが、残るビット位置において等しい場合には、その検出器は、６計数ＦＩＦＯにとっての“フル”の指示を与える。グレイコードカウンタの設計は、４で割り切れるいかなる２の非乗数モジュロ数へも拡張することができる。【特許請求の範囲】
【請求項１】
少なくともあるモジュロ‐Ｍ個の２の非乗数グレイコードカウンタのセットを備え、
前記グレイコードカウンタの各々は、
それぞれの現時点のグレイコード計数を現時点の２進コード値へ変換するグレイから２進値へのデコーダと、
それぞれの継続の２進コード値を継続のグレイコード計数へコード化する２進値からグレイへのエンコーダと、
前記現時点の２進コード値を前記継続の２進値へ増分させるｎビット２進インクリメンタであって、各継続の２進コード値は、最も可能な現時点の２進コード値に関して、現時点の２進コード値のそれぞれよりも１大きく、該２進インクリメンタは、可能な継続２進コード値としてＭ＜Ｎ＝２＊＊ｎ個のｎビット２進コード値をもたらし、前記可能な継続２進コード値は選択的に可能なＮ個のｎビット２進値にわたって分布を有し、該分布は双方向の対称性を有し、該２進インクリメンタは前記現時点の２進コード値を受信するための前記グレイから２進値へのデコーダへ結合され、該２進インクリメンタは、前記２進値からグレイへのエンコーダに結合され、前記継続の２進コード値を該エンコーダへ供給するところのｎビット２進インクリメンタとを含むことを特徴とするシステム。
【請求項２】
前記双方向の対称性は並進的であることを特徴とする請求項１に記載のシステム。
【請求項３】
前記セットは、それぞれ第１および第２の現時点のグレイコード計数をもたらす２つのモジュロ‐２の非乗数グレイコードカウンタを含み、当該システムは、前記第１および第２の継続の現時点のグレイコード計数が２つの最上位ビット位置において異なりかつ残りのビット位置において同じである場合に指示を供給する検出器をさらに備えたことを特徴とする請求項２に記載のシステム。
【請求項４】
前記セットは、第１および第２の２進コード値の供給されるように、それぞれ第１および第２の現時点のグレイコード計数をもたらす２つのモジュロ‐２の非乗数グレイコードカウンタを含み、当該システムは、前記第１および第２の２進コード値の間の差がＭ／２に等しい場合に指示を供給する検出器をさらに備えたことを特徴とする請求項２に記載のシステム。
【請求項５】
前記分布は双方向反射像的対称性を有することを特徴とする請求項１に記載のシステム。
【請求項６】
前記ｎビットグレイコード値を現時点のｎビット２進コード値へ復号化するステップと、
前記現時点のｎビット２進コード値を増分させて、継続のｎビット２進コード値をもたらすステップと、
最も可能な現時点のモジュロ‐Ｍ個の２進コード値に対して、１モジュロ‐Ｎ（Ｎ＝２＊＊ｎ）だけ増分させるステップと、
正確にＭ（（１／２）Ｎ＜Ｍ＜Ｎ）個の可能な継続の２進コード値があるように、少なくとも１つの可能な現時点のｎビット２進コード値に対して、１モジュロＮよりも大きく増分させるステップであって、前記Ｍ個の可能な継続の２進コード値は分布を有し、該分布は双方向の対称性を有するステップと、
前記継続の２進コード値を継続のグレイコード値へコード化するステップとを具備する方法。
【請求項７】
前記双方向の対称性は並進的であることを特徴とする請求項６に記載の方法。
【請求項８】
前記復号化するステップ、増分させるステップ、およびコード化するステップは、第１および第２の継続のグレイコード計数をもたらし、当該方法は、前記第１および第２の継続のグレイコード計数がそれらの２つの最上位ビット位置において異なりかつ他のビット位置において同じである場合に指示するステップをさらに具備することを特徴とする請求項７に記載の方法。
【請求項９】
前記復号化するステップ、増分するステップ、およびコード化するステップは、第１および第２の継続のグレイコード計数をもたらし、当該方法は、前記第１の現時点の２進コード値と第２の２進コード値との間の差がＭ／２に等しい場合に指示するステップをさらに具備することを特徴とする請求項６に記載の方法。
【請求項１０】
前記分布は双方向反射像的対称性を有することを特徴とする請求項６に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の背景）
本発明はコンピュータに係り、特に、コンピュータ通信インタフェース装置に関する。本発明の主要な目的は、２の乗数（ｐｏｗｅｒ ｏｆ ｔｗｏ）でないモジュロ数（ｍｏｄｕｌｏ ｎｕｍｂｅｒｓ）を有する読み出しおよび書き込みポインタ（ｒｅａｄ ａｎｄ ｗｒｉｔｅ ｐｏｉｎｔｅｒｓ）を用いるときに、“フル（ｆｕｌｌ）”および“エンプティ（ｅｍｐｔｙ）”状態の簡単な検出を可能とするＦＩＦＯシステムを提供することである。
【０００２】
近年の発展の多くはコンピュータ技術の発達と関連する。コンピュータがより強力になってきたのに伴い、コンピュータは周辺機器や他のコンピュータと通信することが益々要求されるようになった。バッファリング（Ｂｕｆｆｅｒｉｎｇ）は、非同期通信を容易にすることができ、それによって、共通の時間ベース（ｃｏｍｍｏｎ ｔｉｍｅ ｂａｓｅ）を通信装置が共有する必要性を除去することができる。さらに、バッファリングによるコンピュータ通信は、通信セッションの間にホスト・コンピュータが時間多重原理（ａ ｔｉｍｅ−ｍｕｌｔｉｐｌｅｘｅｄ ｂａｓｉｓ）に基づく他の作業に従事することを可能にする。
【０００３】
バッファリングは、通常、ＲＡＭベースのＦＩＦＯ（先入れ先出し方式（ａ ｆｉｒｓｔ−ｉｎ−ｆｉｒｓｔ−ｏｕｔ）（ＦＩＦＯ））装置を用いて達成される。その装置内においては、通信されるデータがランダム・アクセス・メモリ（ＲＡＭ）内に一時的に記憶される。データの適切なユニット、例えば、バイトがＦＩＦＯによって受信されたときに、そのデータユニットは書き込みポインタ（ａ ｗｒｉｔｅ ｐｏｉｎｔｅｒ）によって示されるＦＩＦＯアドレスに記憶される。そのデータが記憶されると、その書き込みポインタは、受信されたデータのうち次のユニットが記憶される次のアドレスへ増分される（ｉｎｃｒｅｍｅｎｔｅｄ）。装置がＦＩＦＯから読み出そうとする場合、その装置は読み出しポインタによって示されるＦＩＦＯアドレスから読み出す。データが読み取られた後、読み出しポインタは、次の読み出しが次のＦＩＦＯアドレスから行われるように増分される。各ポインタは、基本的に、データの搬送を計数するカウンタである。そのカウンタは、最大計数に到達するときにゼロで完了する（ｗｒａｐ ｔｏ ｚｅｒｏ）モジュロ（ｍｏｄｕｌｏ）である。
【０００４】
典型的には、ＦＩＦＯからの読み出しはＦＩＦＯがエンプティのときに停止し、ＦＩＦＯへの書き込みはＦＩＦＯがフルのときに停止する。いくつかのＦＩＦＯシステムにおいて、読み出しおよび書き込みポインタはＦＩＦＯ深度（ＦＩＦＯ ｄｅｐｔｈ）の２倍のモジュロ数を有する。このような場合、“エンプティ”はポインタが等しいときを示し、“フル”は、ポインタ間の差がポインタモジュロ数の半分のＦＩＦＯ深度であるときを示す。２進カウンタが使用される場合には、最上位ビット以外の総てのビットが等しいときにＦＩＦＯはフルまたはエンプティのいずれかである（最上位ビットはフルとエンプティとの間を区別する）。次の３ビットモジュロ対‐８個の２進値（１０進等価値を付する）は４つの記憶位置で“フル”ＦＩＦＯを示す
：０００（０），１００（４）；００１（１），１０１（５）；０１０（２），１１０（６）；および０１１（３），１１１（７）。
【０００５】
従来の２進コードカウンタは、ＦＩＦＯポインタとして使用され得る。２進カウンタの設計は、（目標とするモジュロ数などの）いくつかの仕様が入力されると、コンピュータが適切なカウンタ設計をもたらすことができるという点で完成された。２進カウンタの欠点は、計数が計数遷移の間に読み出される場合に、相当のあいまいさ（ａｍｂｉｇｕｉｔｙ）が存在し得ることである。例えば、計数が０１１＝３から１００＝４へ増分させるときに、各ビット値は変化してしまう。しかしながら、その変化は、ビット位置にわたってわずかに異なる時点で起きる場合がある。
【０００６】
８個の可能な３ビット２進値のいずれも、この遷移の間に読み出され得る。このような極端なあいまいさを避けるように設計する試みは、カウンタを非常に複雑にし、若しくは、カウンタへ応答する回路要素を非常に複雑にしてしまう。
【０００７】
“グレイコード（ｇｒａｙ ｃｏｄｅ）”と呼ばれる代替的な２進コードは、ユニット・インクリメント（ｕｎｉｔ ｉｎｃｒｅｍｅｎｔ）という事象において、たった１つのビット位置における変化を要する。次のものは、３ビットのグレイコードのシーケンスである：０＝０００， １＝００１， ２＝０１１， ３＝０１０， ４＝１１０， ５＝１１１， ６＝１０１， ７＝１００。最後の値１００を増分させると、最初の値０００が生じる。１つだけのビット位置がユニット・インクリメントの間に変化するので、遷移の間に可能な１つの読み出しは、それから変化する値およびそれへ変化する値である。このような限定されたあいまいさを避けるように設計することは、２進のカウンタ読み出しに対してより広範にわたるあいまいさを回避するように設計することよりもずっと容易である。
【０００８】
グレイコードはいかなるビット長にも容易に構成され得る。１ビットグレイコードは１ビット２進コードと同様にし得る。そのシーケンスは０，１である。２ビットのグレイコードは、次の３ステップアルゴリズムによって１ビットのグレイコードから導出されることができる。第１に、そのシーケンスがコピーされて０，１；０，１を生ずる。第２に、その複製が反転されて０，１；１，０を生ずる。第３に、ゼロの導出（ｌｅａｄｉｎｇ ｚｅｒｏ）がもとの値に加えられ、１の導出（ｌｅａｄｉｎｇ ｏｎｅ）が反転された複製の反転された値に加えられ、００，０１，１１，１０を生じる。これは２ビットグレイコードである。３ステップアルゴリズムは、２ビットグレイコードに適用されることができ、それにより、上述した３ビットグレイコードを生成する。そのアルゴリズムにより、所望のビット長のグレイコードを繰り返し生成することができる。
【０００９】
代替的なエンコードの考えを数値で表現するが、グレイコードは、２の乗数カウンタモジュール区分（ｍｏｄｕｌｅ ａｐａｒｔ）の２分の１の計数が容易に決定されるという特徴を２進コードと共有する。２つの計数がそれらの２つの最上位ビットの両方のみにおいて異なる場合には、それらは、計数区分のカウンタモジュロ数の２分の１だけ離隔されている。例えば、２つの３ビットモジュロ‐８グレイコード計数は、それらが最下位ビットにおいて同じでありかつ２つの最上位ビットにおいて異なる場合に、４計数区分（ｆｏｕｒ ｃｏｕｎｔｓ ａｐａｒｔ）になる。“フル”のグレイコード対（１０進の等価値を付する）は、０００（０）， １１０（４）， ００１（１）， １１１（５）， ０１１（２）， １０１（６）， ０１０（３）， １００（７）である。従って、２の乗数のグレイコードカウンタに基づく読み出しおよび書き込みカウンタは、フルおよびエンプティのＦＩＦＯ状態の容易な検出を提供する。
【００１０】
多くのグレイコードカウンタの設計にともなう問題としては、それらのカウンタが複雑になりがちであり、容易にスケーリングできないことがある。これらの問題は、Ｗｉｎｇｅｎによって開示された米国特許Ｎｏ．５，７５４，６１４におけるグレイコード設計によって対処されている。Ｗｉｎｇｅｎのグレイコードカウンタは、グレイコード計数を記憶するための計数レジスタと、その記憶されたグレイコード計数をそれに対応する２進コード値へ変換するためのグレイコードデコーダと、その２進コード値を増分させるための２進値インクリメンタと、その増分された２進コード値をそれに対応するグレイコード計数へ変換するためのグレイコードエンコーダとを備える。
【００１１】
Ｗｉｎｇｅｎのグレイコードカウンタの欠点は、他のグレイコードカウンタ（例えば、Ｗｉｎｇｅｎ特許において参照されているもの）も同様に、ターゲットとするＦＩＦＯ深度（ＦＩＦＯ ｄｅｐｔｈ）が２の乗数でない場合に、そのＦＩＦＯ設計は過剰な容量を有することである。例えば、通信用途のみ７８のＦＩＦＯ深度を要する場合には、２の乗数の限定により、１２８アドレスのＦＩＦＯを使用することが要される。一方で、２進コードカウンタは、任意の正整数の深度用に設計されることができる。ターゲットとグレイコードを課した容量との間のくい違いは、より大きなＦＩＦＯに対して非常に大きくなり得る。過剰な容量は、他の機能に供しようとする集積回路の領域の観点において高価になり得る。組込み集積回路は、結果として機能性が低下し、より高価になり得る。
【００１２】
米国特許出願０９／４３４，２１８は、同様のモジュログレイコードカウンタでも２の非乗数のスケーリング可能な設計を開示することによって過剰容量に対処している。しかし、開示されたカウンタがそれらのグレイコードカウンタにおいてモジュロ区分の２分の１である場合には、一般に、グレイコード計数は、いずれの単純な方法においても異ならない。例えば、３ビットモジュロ‐６カウンタ（米国特許出願０９／４３４，２１８のＴａｂｌｅ１）において、３つのカウンタ区分である対は：０００（０）， ０１０（３）；００１ （１）， １１０（４）；および０１１（２）， １００（５）である。従って、２つのそのようなカウンタが読み出しおよび書き込みポインタとして使用される場合であっても、ＦＩＦＯがフルであるときを簡単には決定しない。必要とされるものは、２つの計数がカウンタモジュロ区分の半分である場合の簡単な決定を提供するスケーリング可能な２の非乗数のグレイコードカウンタの設計（ｄｅｓｉｇｎ）である。
【００１３】
（発明の概要）
本発明は、ｎビットモジュロ‐Ｍグレイコードカウンタであって、Ｎ＝２＊＊ｎ個の可能なｎビットグレイコードのうちＭ個グレイコードの分布が双方向の対称性を有するｎビットモジュロ−Ｍグレイコードカウンタを提供する。好ましくは、その対称性は並進的であるが、反射的またはその両方でもあり得る。このような２つのグレイコードカウンタを有するＦＩＦＯまたは他のシステムにおいて、計数がＭ／２個の計数区分である“フル”状態を検出することは、グレイコード計数または２進コード等価値のいずれかを用いて容易に達成できる。
【００１４】
適切なグレイコードは、次の方法において４で割り切れる選択されたモジュロ数のいずれに対しても構成され得る。２の乗数グレイコードで開始し、次に大きい２の乗数へ向かう。例えば、（１／２）Ｎ＜Ｍ＜Ｎである場合に、全ｎビットモジュロ−Ｎグレイコードを選択する。次に、モジュロ−Ｎグレイコードシーケンスの始めにおける（Ｎ−Ｍ）／４個のグレイコード、モジュロ−Ｎグレイコードシーケンスの中間における（Ｎ−Ｍ）／２個のグレイコード、および、モジュロ−Ｎグレイコードシーケンスの終わりにおける（Ｎ−Ｍ）／４個のグレイコードを省略する（スキップする）。その結果がモジュロ−Ｍグレイコードシーケンス（ａ ｍｏｄｕｌｏ−Ｍ ｇｒａｙ ｃｏｄｅ ｓｅｑｕｅｎｃｅ）である。
【００１５】
例えば、モジュロ‐１２グレイコードは、０１２３４５６７８９ＡＢＣＤＥＦと表せるように、モジュロ‐１６グレイコードから構成されることができ、ここで、そのグレイコードは１６進コード等価値（ｅｑｕｉｖａｌｅｎｔｓ）によって与えられ、含まれる１２コードは下線で示されている。６個下線を施されたモジュロ‐１２計数の区分である２つの下線モジュロ１２値は対応するモジュロ‐１６システムのうち下線のない２値を越えて正確に１スキップすることによって分離されていることに注意されたい。従って、モジュロ‐１２システムにおいて６計数によって分離されたいずれの２計数も、対応するモジュロ‐１６システムにおいて８計数によって分離されている。よって、モジュロ‐１２システムは、対応するモジュロ‐１６システムと同様の検出法を用い得る。より一般的には、双方向並進的対称性を伴う２の非乗数モジュロ‐Ｍシステムは、対応する２の乗数モジュロ‐Ｎシステムと同様に完全表示のための検出設計を用い得る。
【００１６】
前述の方法は４で割り切れるいずれかのターゲットモジュラス数（ｔａｒｇｅｔ ｍｏｄｕｌｕｓ ｎｕｍｂｅｒ）のためのグレイコードを生成し得るが、所望される対称性を有する代替的なグレイコードを生成し得る他の方法がある。例えば、Ｎ／４個のグレイコードからなるセットからＭ／４個の連続グレイコード値を選択する。グレイコードに拡張技術（０ｓおよび１ｓを複製、反転、付加すること）を２回施して、その結果、双方向並進的対称性および双方向反射像的対称性を有するモジュロ‐Ｍコードになる。その代わりに、Ｎ／２個のグレイコードよりなるセットから最初の（または最後の）Ｍ／２個の連続グレイコードを選択し、グレイコードに拡張技術を１回施して、双方向反射像的対称性を有するが、双方向並進的対称性を有しないグレイコードを得ることもできる。
【００１７】
グレイコードカウンタは、グレイコードデコーダ、２進インクリメンタ、グレイコードエンコーダおよび計数レジスタを含む。グレイコードデコーダは、現時点のグレイコード計数を取り出し、それらを“現時点の”２進コード値へ変更する。その２進インクリメンタは現時点の２進コード値を増分させて、継続する２進コード値を生成する。２進インクリメンタは、モジュロ‐Ｍグレイコードにおいて等価値を有しない“スキップオーバー（ｓｋｉｐ ｏｖｅｒ）”２進値へ設計される（ｄｅｓｉｇｎｅｄ）。
【００１８】
上記例の１６進表記において、インクリメンタは（７および８をスキップして）６から９へ増分し、並びに、（Ｆおよび０をスキップして）Ｅから１へ増分する。グレイコードカウンタは、連続２進コード値を連続グレイコード計数へ変換する。そのレジスタが次にクロックしたときには、連続グレイコード計数はその先行のものを上書きし、次の繰り返しのときの現時点のグレイコード計数になる。
【００１９】
ＦＩＦＯの“フル”検出は、読み出しおよび書き込みポインタが双方向並進的対称性の分布を有するカウンタである場合に容易に得られる。実際には、“フル”の状態を決定するための方法の選択がある。比較的簡単な“フル”の検出方法はグレイコード計数の比較を含む。この場合には、“フル”は、読み出しおよび書き込み計数が２つの最上位ビットにおいてのみ異なる場合を意味する。代替的な“フル”検出方法はＮ／２、即ち、対応する２の乗数カウンタのモジュロ数の半分である場合に、ＦＩＦＯはフルである。
【００２０】
従って、本発明は、ＦＩＦＯの“フル”状態の簡単な検出を伴うカウンタ設計による、スケーリング可能な２の非乗数グレイコードカウンタを提供する。上述の通り、本発明は “フル”の決定を行う少なくとも２つの利便な方法を提供する。本発明のこれらおよび他の特徴並びに利点は添付図面に関する以下の記載から明確になる。
【００２１】
（発明の詳細な説明）
本発明によれば、ＲＡＭベースのＦＩＦＯ（図示せず）に用いられるポインタシステムＡＰ１は、読み出しポインタ１０、書き込みポインタ２０およびフル／エンプティ検出器３０を含む。実際の使用においてより大きな容量が含まれ得るが、説明の目的のために、ＦＩＦＯは６つの記憶位置を有するものとし、並びに、ポインタ１０および２０はモジュロ１２であるとする。検出器３０は読み出しポインタ１０および書き込みポインタ２０を比較する。その計数が等しい場合には、検出器３０はＦＩＦＯがエンプティであることを示し、計数が６だけ異なる場合には、検出器３０はＦＩＦＯがフルであることを示す。
【００２２】
読み出しポインタ１０は、グレイコードデコーダ１１、２進インクリメンタ１２、グレイコードエンコーダ１３およびクロックドレジスタ１４を備える。２進インクリメンタ１２は比較器１５、“プラス１”インクリメンタ１６、“プラス３“インクリメンタ１７およびマルチプレクサ１８を含む。読み出しポインタ２０は本質的に同様であり、グレイコードデコーダ２１、２進インクリメンタ２２、グレイコードエンコーダ２３およびクロックドレジスタ２４を含む。２進インクリメンタ２２は、比較器２５、”プラス１“インクリメンタ２６、”プラス３“インクリメンタ２７およびマルチプレクサ２８を含む。検出器３０は、最上位ビット（ｍｏｓｔ−ｓｉｇｎｉｆｉｃａｎｔ−ｂｉｔ）比較器３１、２番目最上位ビット（２ｎｄ−ｍｏｓｔ−ｓｉｇｎｉｆｉｃａｎｔ−ｂｉｔ）比較器３２、最下位ビット（ｌｅａｓｔ−ｓｉｇｎｉｆｉｃａｎｔ−ｂｉｔ）比較器３３、インバータ３４および３５、”フル“ＡＮＤゲート３６および”エンプティ“ＡＮＤゲート３７を備える。
【００２３】
読み出しポインタ１０の動作の間に、グレイコードデコーダ１１は“現時点”のグレイコード計数をそれと等価の２進コード値Ｊへ変換する。２進インクリメンタ１２は現時点の２進コード値Ｊを増分させて、継続の（ｓｕｃｃｅｓｓｏｒ）２進コード値Ｋを生じる。グレイコードエンコーダ１３は、継続の２進コード値Ｋをそれに継続する等価のグレイコード計数へコード化する。その継続のグレイコード計数は、次にクロックされたとき（例えば、ＦＩＦＯからの読み出しに応答して）、４ビットレジスタ１４において現時点のグレイコード計数と置換する。次に、継続のグレイコードカウンタは次の現時点のグレイコード計数とみなされ、グレイコードデコーダ１１へフィードバックされ、次の計数の繰り返しが開始される。
【００２４】
最も採り得る（ｍｏｓｔ ｐｏｓｓｉｂｌｅ）現時点の２進コード値Ｊに対して、インクリメンタ１２は１だけ増分させる（Ｋ＝Ｊ＋１）。しかし、現時点の２進コード値が０１１０（６）またはＪ＝１１１０（１４）であるときに、インクリメンタ１２は３だけ増分させる（６＋３＝９または１４＋３＝１）。比較器１５はグレイコードデコーダ１１から現時点の２進コード値をモニタする。現時点の２進コード値が６または１４に等しくない場合には、比較器１５の出力はロウであり、マルチプレクサ１８の入力Ｎが選択される。入力Ｎはプラス１のインクリメンタ１６へ結合し、常にＪ＋１を出力する。入力Ｎが選択されている場合に、マルチプレクサ１８の出力（従って２進インクリメンタ１２の出力）はＫ＝Ｊ＋１である。現時点の２進コード値が６または１４である場合には、比較器１５はハイを出力し、マルチプレクサ１８の入力Ｙを選択する。マルチプレクサ１８の入力Ｙはプラス３のインクリメンタ１７へ結合し、それによって、Ｊ＝６のときＫ＝９であり、およびＪ＝１４のときＫ＝１である。
【００２５】
実際には、インクリメンタ１２は３入力マルチプレクサを用いて実行され、１つの入力はプラス１のインクリメンタへ結合され、１つの入力は１００１（９）の一定値に結合され、並びに、１つの入力は０００１（１）の一定値に結合される。１１１０（１４）が検出されたときには０００１（１）入力が選択され、０１１０（６）が検出されたときには１００１（９）入力が選択され、並びに、他の場合にはプラス１インクリメンタが選択される。次の表はインクリメンタ１２の関数（ｆｕｎｃｔｉｏｎ）を表示する。
【００２６】
【表１】
2004507824.tif 000002
インクリメンタ１２にとって、継続の２進コード値Ｋは、（囲みを伴う）現時点の２進コード値Ｊの上の括弧内にない最初の２進コード値である。従って、Ｊ＝０００１（１）である場合にはＫ＝００１０（２）である。Ｊ＝０１１０（６）に対してはＫ＝１００１（９）であり、Ｊ＝１１１０（１４）に対してはＫ＝０００１（１）である。
【００２７】
そのモジュロ１２関数に従い、インクリメンタ１２は１６個の可能な（ｐｏｓｓｉｂｌｅ）４ビット２進コード値のうちの１２個を用いる。１２個のモジュロ１２個の２進コード値は、１６個の可能な４ビット２進コード値のうち、双方向並進的対称性（ｂｉｌａｔｅｒａｌ ｔｒａｎｓｌａｔｉｏｎａｌ ｓｙｍｍｅｔｒｙ）を伴うように分布されることに注意されたい。１６進表示を用いた場合、その分布は０１２３４５６７８９ＡＢＣＤＥＦである。モジュロ１６進コードのうち２つの２分割部分、０１２３４５６７および８９ＡＢＣＤＥＦは、モジュロ１２数値の同じ分布を有する。より詳細には、１６数値８モジュロの各グループにおいて中間の６個がモジュロ１２数値として用いられる。カウンタ１０および２０も、分布０１２３４５６７がＦＥＤＣＢＡ９８に対して同じように、双方向反射像的対称性（ｂｉｌａｔｅｒａｌ ｒｅｆｌｅｃｔｉｖｅ ｓｙｍｍｅｔｒｙ）を有することに注意されたい。
【００２８】
グレイコードエンコーダ１３の関数は、中間の列における値Ｋから右列におけるグレイコード計数へ移動することによって表から決定される。従って、０１０１（５）は０１１１としてコード化され、一方、１０１０（１０）は１１１１としてコード化される。（そのシーケンスのグレイコード特性は２つのスキップ（ｓｋｉｐｓ）を除き維持される。）グレイコードデコーダ１１の関数は、表から２進コード値を右側の所与のグレイコード計数に選択することによって決定されることに注意されたい。上述のように、書き込みポインタ２０は本質的に読み出しポインタ１０に類似する。従って、前述のインクリメンタ１２の動作の記述はインクリメンタ２２へも適用できる。ポインタ１０、２０の両方は、それらの各レジスタ１４、２４内のモジュロ１２グレイコード計数を記憶する。可能（ｐｏｓｓｉｂｌｅ）計数は、表の右列における括弧内にないグレイコード計数である。勿論のこと、与えられたいずれの時点においても、ポインタ１０および２０の計数は同じになりまたは異なり得る。
【００２９】
検出器３０は、ＦＩＦＯがエンプティまたはフルである場合に表示する。このために、最上位ビット比較器３１（ＸＮＯＲ論理ゲートから成り得る）は読み出しポインタ計数の最上位ビットを書き込みポインタ計数の最上位ビットと比較する。２番目最上位ビット比較器３２（これもＸＮＯＲ論理ゲートから成り得る）は読み出しポインタ計数の２番目最上位ビットを書き込みポインタ計数の２番目最上位ビットと比較する。最下位ビット比較器３３はその計数の２つの最下位ビットを比較する。比較器３３は、ＡＮＤゲートを伴う２つの並列ＸＮＯＲゲートとして実施され得る。より幅広い計数として一般化すると、ｎビット幅の計数において、比較される最下位ビットの数値はｎ−２である。
【００３０】
読み出しおよび書き込みポインタ計数が等しい場合には、“エンプティ“ＡＮＤゲート３７への総ての３つの入力はハイであり、よって、その出力はハイであり、”エンプティ“の指示を与える。読み出しおよび書き込みポインタ計数が等しくないときには、ＡＮＤゲート３７への入力のうちの少なくとも１つがロウであり、よって、その出力はロウであり、ＦＩＦＯはエンプティでないことを示す。
【００３１】
“フル”ＡＮＤゲート３６は、ＬＳＢ比較器３３から“エンプティ”ＡＮＤゲート３７が受信するものと同じ入力を受信する。しかし、ＭＳＢ比較器３１および第２のＭＳＢ比較器３２から“フル”ＡＮＤゲート３６への入力は、（対応する“エンプティ”ＡＮＤゲート３７への入力に相対して）インバータ３４および３５によってそれぞれ反転される。それによって、“フル”ＡＮＤゲート３４の出力は、読み出しおよび書き込みポインタ計数のうちの２つの最下位ビットが等しいが２つの最上位ビットが異なる場合にのみハイになる。その表の考察によって、この状態は、グレイコード計数が６モジュロ１２計数区分である場合にのみ適合し、それはＦＩＦＯの６位置がフルの場合であるということが確認される。
【００３２】
前述のフル／エンプティ検出器の設計は、４で割り切れる２の非乗数モジュロ数へ容易にスケーリングされることができる。一般的な場合においては、読み出しおよび書き込み計数が等しい場合にＦＩＦＯがエンプティである。読み出しおよび書き込み計数がそれらの２つの最上位ビット位置において異なるが、他のビット位置において等しい場合には、ＦＩＦＯはフルである。デコーダ３０への代替として、減算器が、読み出しおよび書き込みポインタの現時点の２進コード値間の差をもたらすように、デコーダ出力へ結合されてもよい。その差が０である場合には、ＦＩＦＯはエンプティである。その差がＮ／２である場合には、ＦＩＦＯはフルである。それはグレイコードが複合化されるまで待機しなければならないので、この検出器の設計は、示された検出器の設計よりもわずかに遅い。さらに、減算器は、検出器３０のＸＯＲ論理よりも複雑である。しかし、減算器ベースの検出器は、選択された中間レベル（例えば、“ほとんどエンプティ”を示す１計数の差および“ほとんどフル”を示すＭ−１計数の差）を検出することを容易にしている。
【００３３】
フルは、２進値差がＮ／２である場合を示し、２進値差がＭ／２（計数の個数）であるの場合を示すものではないことに注意されたい。一般に、モジュロＭカウンタ（ａ ｍｏｄｕｌｅ−Ｍ ｃｏｕｎｔｅｒ）はＮ−Ｍ個のモジュロＮ計数（Ｎ−Ｍ ｍｏｄｕｌｏ−Ｎ ｃｏｕｎｔｓ）をスキップする。モジュロＭ計数が双方向並進的対称性（ｂｉｌａｔｅｒａｌ ｔｒａｎｓｌａｔｉｏｎａｌ ｓｙｍｍｅｔｒｙ）を有するように分布されている場合に、Ｍ／２個のモジュロＭ計数区分になっている任意の２つのモジュロＭ計数は、モジュロＮカウンタの（Ｎ−Ｍ）／２の計数をスキップする必要性がある。従って、（Ｎ−Ｍ）／２は、モジュロＭの差に加算され、それによって、対応するモジュロＮの差を得る。モジュロＭの差はＭ／２であり、よって、モジュロＮの差はＭ／２＋（Ｎ−Ｍ）／２、即ち、Ｎ／２である。図示されたモジュロ１２システムにおいて、２進値（１０進値）０００１（１）と１００１（９）とモジュロＭ（Ｍ＝１２）の差は、６計数（２，３，４，５，６，９）であるが、モジュロｎ（Ｎ＝１６）の差は、８計数（２，３，４，５，６，７，８，９）である。このことは、２の乗数グレイコードカウンタに適した検出器が双方向並進的対称性を有する２の非乗数カウンタに使用され得ることの理由である。同様の検出器は、ほとんどの他の２の非乗数グレイコードカウンタでは動作しない。
【００３４】
図２に、システムＡＰ１の内容において実施される本発明によるグレイコード計数方法Ｍ１のフローが描かれている。最初のステップＳ１において、現時点のグレイコード計数が複合化され、現時点での２進コード値を生じる。そのグレイコードは４で割り切れる２の非乗数モジュロ数である。
【００３５】
第２のステップＳ２において、現時点の２進コード値は増分され、継続の（ｓｕｃｃｅｓｓｏｒ）２進コード値を生ずる。可能な継続の２進コード値は、同じビット長の可能な２進コード値のうち双方向並進的対称性を有するように分布されている。最も可能な（ｍｏｓｔ ｐｏｓｓｉｂｌｅ）現時点の２進コード値にとって、その増分は“プラス１”である。しかし、可能な（ｐｏｓｓｉｂｌｅ）現時点の２進コード値の２つ（または他の偶数個）にとって、その増分はそれより大きい何らかの奇数である。
【００３６】
ステップＳ３において、継続の２進コード値は、コード化され、継続のグレイコード計数を生じる。計数レジスタへの次のクロック信号において、継続のグレイコード計数は現時点のグレイコード計数になり、方法Ｍ１はステップＳ１へ戻る。
【００３７】
その間に、エンプティおよびフルの検出がステップＳ４において実行される。読み出しおよび書き込み計数が各ビット位置において同じである場合には、計数は等しい。読み出しおよび書き込み計数が２つの最上位ビット位置の両方において異なる場合には、ＦＩＦＯはフルである。
【００３８】
本発明は、２の非乗数でありながら４で割り切れる任意のモジュロ数Ｍのためのグレイコードカウンタの簡単な設計を提供する。その設計方法は、所望されるグレイコードシーケンスよりも大きく、２の最小乗数グレイコードシーケンスで開始する。換言すると、Ｍがターゲットとするモジュロである場合には、（１／２）Ｎ＜Ｍ＜Ｎである。ここで、Ｎは２の乗数である（Ｎ＝２＊＊ｎ）。Ｎは必要に応じて１６またはそれよりも大きい。ＭおよびＮは両方共に４で割り切れるので、それらの差Ｎ−Ｍ＝Ｐも４で割り切れる。モジュロＭシーケンスを形成するために、モジュロＮシーケンスのうち最初のＰ／４、最後のＰ／４および中間のＰ／２をスキップする。
【００３９】
より一般的な設計方法は、１モジュロＮ／４グレイコードシーケンスからＭ／４個の連続したグレイコードを選択することで開始される。例えば、０１２３から下線の３つの計数を選択する。従来のグレイコードを拡張して（１ｓおよび０ｓを複製、反転、付加して）０１２３ ４５６７を生成する。モジュロＭ／２シーケンスの結果が反射像的対称性を有することに注意されたい。従来のグレイコードを２倍に拡張して、０１２３ ４５６７ ８９ＡＢ ＣＤＥＦを生成する。このシーケンスは、システムＡＰ１において用いられるものであり、反転のために反射像的対称性（ｒｅｆｌｅｃｔｉｖｅ ｓｙｍｍｅｔｒｙ）を有し、さらに、２回反転のために並進的対称性（ｔｒａｎｓｌａｔｉｏｎａｌ ｓｙｍｍｅｔｒｙ）をも有する。始点が、代わりに、０１２３である場合には、終りの結果（ｅｎｄ ｒｅｓｕｌｔ）は０１２３ ４５６７ ８９ＡＢ ＣＤＥＦであり、それは所望の特性を有する。
【００４０】
本発明は、１モジュロ‐Ｎ／２グレイコードの最初の（または最後の）Ｍ／２値のいずれかで開始する他の設計方法も提供する。例えば、Ｎ＝１６かつＭ＝１２の場合に、０１２３４５６７（または０１２３４５６７）が始点として与えられる。従来のグレイコード拡張技術は、０１２３４５６７８９ＡＢＣＤＥＦ（または０１２３４５６７８９ＡＢＣＤＥＦ）を生成するために用いられた。その結果、グレイコードシーケンスは、双方向反射像的対称性を有するものの、双方向並進的対称性を有しない。そのモジュロＭグレイコード値はモジュール的に（ｍｏｄｕｌａｒｌｙ）連続なモジュロＮ値であることに注意されたい。双方向反射像的対称性のみを有するカウンタの１つの利点は、そのカウンタのいくつかはたった１つのスキップを有し、それによりインクリメンタの設計が簡単になる。双方向並進的対称性を有する本発明の総てのカウンタは少なくとも２つのスキップを有する。さらに、そのモジュールは４で割り切れる必要がない。
【００４１】
本発明は、非同期型コンピュータ通信を含む技術分野およびＲＡＭベースのＦＩＦＯが用いられる他の分野において適用可能である。一般に、ＦＩＦＯのサイズは、上述したものよりも大きく、カウンタモジュロ数はそれの相当してより大きい。記載された実施の形態のこれらおよび他のバリエーションおよびその変形は本発明によってもたらされ、その範囲は特許請求の範囲によって規定される。
【図面の簡単な説明】
【図１】本発明に従った２モジュロ‐１２グレイコードカウンタを備えたシステムの論理回路図。
【図２】本発明に従った図１のシステムによって実行される方法のフローチャート。
【図１】
2004507824.tif 000003
【国際公開パンフレット】
2004507824.tif 000004
2004507824.tif 000005
2004507824.tif 000006
2004507824.tif 000007
2004507824.tif 000008
2004507824.tif 000009
2004507824.tif 000010
2004507824.tif 000011
2004507824.tif 000012
2004507824.tif 000013
2004507824.tif 000014
2004507824.tif 000015
2004507824.tif 000016
2004507824.tif 000017
2004507824.tif 000018
2004507824.tif 000019