(57)【特許請求の範囲】
【請求項１】
メモリと、
前記メモリに所定単位のデータの書き込みまたは読み出しを先入れ先出し手順で行う非同期読み出し／書き込み手段と、
前記メモリへ書き込まれる前記所定単位のデータにエラーが含まれている場合は１加算するエラー・ライト・カウンタと、
前記メモリから読み出される前記所定単位のデータにエラーが含まれている場合は１加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの保持する値と前記エラーリードカウンタの保持する値とを比較し、一致した場合は０を出力し、異なる場合は１を出力する比較手段とを備えたことを特徴とする非同期ＦＩＦＯ回路。
【請求項２】
２Nワード（Ｎ：整数）のアドレスを持つメモリと、
前記メモリが、データが全て書き込まれているフル状態でない場合、前記メモリへデータの書き込みが完了した時に１加算するライト・ポインタと、
前記メモリが、データが全て読み出されているエンプティ状態でない場合、前記メモリからデータの読み出しが完了した時に１加算するリード・ポインタと、前記メモリが前記エンプティ状態でない場合、前記メモリからデータの読み出しが完了したときに１加算し、常に前記リード・ポインタの値から１減算した値を出力するプリービアス・リード・ポインタと、
前記ライト・ポインタの値と前記リード・ポインタの値の一致により前記メモリの前記エンプティ状態を検出するエンプティ・フラグ作成回路と、
前記ライト・ポインタの値と前記プリービアス・リード・ポインタの値の一致により前記メモリの前記フル状態を検出するフル・フラグ作成回路と、
前記ライト・ポインタの値をデコードしたアドレスへのみデータの書き込みを許可するライト・ポインタ・デコーダと、
前記リード・ポインタの値をデコードしたアドレスからのデータを選択するデータ・セレクタと、
前記メモリへ書き込まれるデータの特定ビットの論理和を取るライト・フラグ論理和回路と、
前記メモリから読み出されるデータの特定ビットの論理和を取るリード・フラグ論理和回路と、
前記メモリにデータが書き込まれる時に、前記ライト・フラグ論理和回路の出力が真であれば１加算するエラー・ライト・カウンタと、
前記メモリからデータが読み出される時に、前記リード・フラグ論理和回路の出力が真であれば１加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの値と前記エラー・リード・カウンタの値の一致を検出するエラー比較回路とを備えたことを特徴とする非同期ＦＩＦＯ回路。
【請求項３】
前記エラー・ライト・カウンタおよび前記エラー・リード・カウンタをグレイ・コード・カウンタにより構成したことを特徴とする請求項１または２に記載の非同期ＦＩＦＯ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、先入れ先出しメモリ回路、即ち、Ｆｉｒｓｔ Ｉｎ Ｆｉｒｓｔ Ｏｕｔ回路（以下、ＦＩＦＯ回路と称す）に関し、特に、クロック信号を用いずに書き込み、読み出し動作を確実に行うことができる非同期ＦＩＦＯ回路に関するものである。
【０００２】
【従来の技術】
従来より、データの書き込み側と読み出し側が異なるクロックで動作する、もしくはクロックを全く必要としない非同期ＦＩＦＯ回路が知られている。例えば、特願平１１−３６０２４８号公報により公知となる非同期ＦＩＦＯ回路である。
【０００３】
一方、調歩同期シリアル通信装置の業界標準である、米国ナショナルセミコンダクター社のＰＣ１６５５０Ｄは、送受信ともに１６ワードの非同期ＦＩＦＯ回路を内蔵している。
【０００４】
ＰＣ１６５５０Ｄが受信用に内蔵する非同期ＦＩＦＯ回路（以下、受信ＦＩＦＯ）は、図９に示すように、８ビットの受信データとともに２ビットのエラーフラグを組み合わせて１ワードを構成したものを順次蓄積する。そして、受信ＦＩＦＯの中にセットされているエラーフラグが１つでも存在するか否かが、ＬＳＲ７ビットとして読み出せるようになっていることが、ＰＣ１６５５０Ｄの大きな特徴である。
【０００５】
エラーフラグは、それと組になる受信データと同時に受信ＦＩＦＯに書き込まれ、読み出されるので、ＬＳＲ７ビットは、受信データの書き込み・読み出しに応じて変化する。
【０００６】
【発明が解決しようとする課題】
このＬＳＲ７ビットは、図１０に示すように、受信ＦＩＦＯを構成する各ワードのエラーフラグに相当するカラムすべての論理和として構成される。ＰＣ１６５５０の場合は１６ワードのエラーフラグ全ての論理和である。
【０００７】
ここで、受信ＦＩＦＯのワード数を増やすと、構成するのに著しい不都合が生じるようになる。なぜならば受信ＦＩＦＯを構成するのに汎用のメモリマクロが使用できないからである。
【０００８】
すなわち、受信ＦＩＦＯのワード数を増やすと、ＬＳＲ７ビットは、各ワードのエラーフラグに相当するカラム全ての論理和であるから、ＬＳＲ７ビットの生成に関与するカラム数も同時に増える。このとき、受信ＦＩＦＯを構成するメモリからは、各ワードのエラーフラグに相当するカラムのすべてから独立した出力を引き出さねばならないので、汎用のメモリマクロが使用できず、必要ゲート数もしくはチップ面積の増大を招く。
【０００９】
こうした弊害は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）技術を用いて調歩同期シリアル通信装置を実現しようとする際に、より顕著になる。
【００１０】
例えば、英国オックスフォードセミコンダクター社のＯＸ１６Ｃ９５０においては、ＰＣ１６５５０Ｄとの互換性をうたいつつ、送受信ともに１２８ワードの非同期ＦＩＦＯ回路を内蔵している。
【００１１】
しかしながら、実際、ＰＣ１６５５０Ｄ互換をうたいながらＦＩＦＯのワード数を送受信ともに１２８ワードに拡張したＯＸ１６Ｃ９５０においては、ＬＳＲ７ビットは受信ＦＩＦＯに蓄積されたエラーフラグ全ての論理和になっておらず、受信エラーの発生によりセットされ、ＬＳＲ７ビットを読み出すことにより即座にクリアされるだけである。したがって、ＬＳＲ７ビットを読み出した時点で受信ＦＩＦＯの中にセットされたエラーフラグが残っていても、ＬＳＲ７ビットはクリアされてしまう。このため、ＰＣ１６５５０Ｄとの互換性がくずれている。
【００１２】
この事実は、ＰＣ１６５５０Ｄ用に開発されたソフトウェアが、ＯＸ１６Ｃ９５０においては必ずしも正しく動作しないことを意味し、ＯＸ１６Ｃ９５０の工業的価値を損なっている。
【００１３】
本発明は、上記の課題に鑑みてなされたものであり、業界標準であるＰＣ１６５５０Ｄとの互換性を保つ調歩同期シリアル通信装置が内蔵する受信ＦＩＦＯのように、ＬＳＲ７ビットを読み出して、特定カラムのビットがセットされたワードが１つでも存在するか否かが識別できるようなＦＩＦＯ回路を、汎用のメモリマクロを用いて構成できるようにすることを目的とする。
【００１４】
【課題を解決するための手段】
上記の目的を達成するために、第１の本発明（請求項１に対応）は、メモリと、
前記メモリに所定単位のデータの書き込みまたは読み出しを先入れ先出し手順で行う非同期読み出し／書き込み手段と、
前記メモリへ書き込まれる前記所定単位のデータにエラーが含まれている場合は１加算するエラー・ライト・カウンタと、
前記メモリから読み出される前記所定単位のデータにエラーが含まれている場合は１加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの保持する値と前記エラーリードカウンタの保持する値とを比較し、一致した場合は０を出力し、異なる場合は１を出力する比較手段とを備えたことを特徴とする非同期ＦＩＦＯ回路である。
【００１５】
また、第２の本発明（請求項２に対応）は、２Nワード（Ｎ：整数）のアドレスを持つメモリと、
前記メモリが、データが全て書き込まれているフル状態でない場合、前記メモリへデータの書き込みが完了した時に１加算するライト・ポインタと、
前記メモリが、データが全て読み出されているエンプティ状態でない場合、前記メモリからデータの読み出しが完了した時に１加算するリード・ポインタと、前記メモリが前記エンプティ状態でない場合、前記メモリからデータの読み出しが完了したときに１加算し、常に前記リード・ポインタの値から１減算した値を出力するプリービアス・リード・ポインタと、
前記ライト・ポインタの値と前記リード・ポインタの値の一致により前記メモリの前記エンプティ状態を検出するエンプティ・フラグ作成回路と、
前記ライト・ポインタの値と前記プリービアス・リード・ポインタの値の一致により前記メモリの前記フル状態を検出するフル・フラグ作成回路と、
前記ライト・ポインタの値をデコードしたアドレスへのみデータの書き込みを許可するライト・ポインタ・デコーダと、
前記リード・ポインタの値をデコードしたアドレスからのデータを選択するデータ・セレクタと、
前記メモリへ書き込まれるデータの特定ビットの論理和を取るライト・フラグ論理和回路と、
前記メモリから読み出されるデータの特定ビットの論理和を取るリード・フラグ論理和回路と、
前記メモリにデータが書き込まれる時に、前記ライト・フラグ論理和回路の出力が真であれば１加算するエラー・ライト・カウンタと、
前記メモリからデータが読み出される時に、前記リード・フラグ論理和回路の出力が真であれば１加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの値と前記エラー・リード・カウンタの値の一致を検出するエラー比較回路とを備えたことを特徴とする非同期ＦＩＦＯ回路である。
【００１６】
また、第３の本発明（請求項３に対応）は、前記エラー・ライト・カウンタおよび前記エラー・リード・カウンタをグレイ・コード・カウンタにより構成したことを特徴とする請求項１または２に記載の非同期ＦＩＦＯ回路である。
【００１７】
以上のような本発明によれば、汎用のメモリマクロを使用してメモリを構成しても、ＦＩＦＯの中にセットされているエラーフラグが１つでも存在するか否かが正しく読み出せるという利点がある。
【００１８】
また、ＦＩＦＯの中にセットされているエラーフラグが１つでも存在するか否かの検出結果にグリッチが生じないという利点がある。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態について、図１から図８を用いて説明する。
【００２０】
（実施の形態１）
図１は本発明の非同期ＦＩＦＯ回路の一実施の形態を示す図である。
【００２１】
図１において、２２は後述するメモリ２３からデータを読み出す際のアドレスを示すリード・ポインタであり、Ｎビットのカウンタから構成され、データの読み出しが完了すると、メモリ２３がエンプティ状態（以下、単にエンプティと略記する）でない場合１加算する。（２N−１）から１加算する場合は、０に戻る。このため、リード・ポインタ２２の値は常に次の読み出しアドレスを示している。
【００２２】
また、２８はプリービアス・リード・ポインタであり、リード・ポインタ２２と同様、Ｎビットのカウンタから構成され、データの読み出しが完了すると、エンプティでない場合１加算する。（２N−１）から１加算する場合は、０に戻る。ただし初期状態において、リード・ポインタ２２が０にリセットされるのに対し、プリービアス・リード・ポインタ２８は（２N−１）にリセットされるので、プリービアス・リード・ポインタ２８の値は常にリード・ポインタ２２が示すアドレスの１つ手前のアドレスを示す。
【００２３】
２２ｂはリード・ポインタ・セレクタであり、後述するエンプティ・フラグ作成回路２５ａがＥＭＰＴＹ信号を出力したとき、すなわちエンプティの場合は、プリービアス・リード・ポインタ２８の出力を選択し、エンプティでない場合はリード・ポインタ２２の出力を選択する。２２ｃはリード・ポインタ・デコーダであり、リード・ポインタ・セレクタ２２ｂの出力をデコードして、メモリ２３からデータを読み出す際の選択信号ＲＥＮ０〜ＲＥＮ７（以下、これらの信号を一括してＲＥＮと表記する）を出力する。
【００２４】
次に、２１はメモリ２３へデータを書き込む際のアドレスを示すライト・ポインタであり、Ｎビットのカウンタから構成され、データの書き込みが完了すると、メモリ２３がフル状態（以下、単にフルと略記する）でない場合１加算する。（２N−１）から１加算する場合は、０に戻る。このため、ライト・ポインタ２１の値は常に次の書込みアドレスを示している。
【００２５】
２１ｃはライト・ポインタ・デコーダであり、ライト・ポインタ２１の出力をデコードして書き込み許可信号ＷＥＮ０〜ＷＥＮ７（以下、これらの信号を一括してＷＥＮと表記する）を出力し、メモリ２３の所定のアドレスにデータを書き込み可能とする。
【００２６】
２３は２Nワードのアドレスを有するメモリであり、本実施の形態では、８ワードのデータを記憶するメモリが示されている。８＝２3であるから、本実施の形態はＮ＝３の場合である。
【００２７】
２４は８対１セレクタであり、メモリ２３に記憶されたデータの内、リード・ポインタ・デコーダ２２ｃが出力する選択信号ＲＥＮにより特定のアドレスのデータを選択し、読み出しデータとして外部に出力する。
【００２８】
２５ａはエンプティ・フラグ作成回路であり、ライト・ポインタ２１の値とリード・ポインタ２２の値を比較し両者一致した場合、すなわち書き込まれたが読まれていない（以下、未読と表記する）データが無い場合、ＥＭＰＴＹ信号を出力する。これはエンプティを示す。
【００２９】
２５ｂはフル・フラグ作成回路であり、ライト・ポインタ２１の値とプリービアス・リード・ポインタ２８の値を比較し両者一致した場合、すなわち未読データが（２N−１）個存在する場合、ＦＵＬＬ信号を出力する。これはフルを示す。
【００３０】
また、６１は書き込み信号ＷＲをクロックとし、メモリ２３にエラーフラグのいずれかがセットされたワードが書き込まれる時に１加算するエラー・ライト・カウンタであり、Ｎビットのカウンタから構成される。（２N−１）から１加算する場合は、０に戻る。このため、エラー・ライト・ポインタ６１の値は、エラーフラグのいずれかがセットされたワードをメモリ２３に書き込んだ累計を２Nで除した余りになる。ここでＮは、メモリ２３のワード数が２Nで示される数であり、本実施の形態はＮ＝３の場合である。
【００３１】
６２は読み出し信号ＲＤをクロックとし、メモリ２３からエラーフラグのいずれかがセットされたワードが読み出される時に１加算するエラー・リード・カウンタであり、やはりＮビットのカウンタから構成される。（２N−１）から１加算する場合は、０に戻る。このため、エラー・リード・カウンタ６２の値は、エラーフラグのいずれかがセットされたワードをメモリ２３から読み出した累計を２Nで除した余りになる。
【００３２】
６３は、本発明の比較手段に相当するエラー比較回路であり、エラー・ライト・カウンタ６１の値とエラー・リード・カウンタ６２の値とを比較し、両者が一致する場合は比較出力として０を、一致しない場合は比較出力として１を出力する。
【００３３】
６４ａはライト・フラグ論理和回路、６４ｂはリード・フラグ論理和回路であり、１ワードの中に占めるすべてのエラーフラグの論理和を生成して、それぞれエラー・ライト・カウンタ６１、エラー・リード・カウンタ６２に送る。ライト・フラグ論理和回路６４ａからの出力が真である時に書き込み信号ＷＲが発生すると、エラー・ライト・カウンタ６１は１加算する。リード・フラグ論理和回路６４ｂからの出力が真である時に読み出し信号ＲＤが発生すると、エラー・リード・カウンタ６２は１加算する。
【００３４】
図２は、エラー比較回路６３を構成する一致検出回路の一例を示す回路図である。本実施の形態はＮ＝３の場合であるから、３個のＸＮＯＲゲート（６３０〜６３２）を持つ。Ａ０〜Ａ２にはエラー・ライト・カウンタ６１を構成する３ビットを入力する。Ｂ０〜Ｂ２にはエラー・リード・カウンタ６２を構成する３ビットを入力し、各ビットごとに一致検出を行った上でＮＡＮＤゲート６３９で論理積の否定を取って、比較出力とする。
【００３５】
図３はライト・フラグ論理和回路６４ａ、リード・フラグ論理和回路６４ｂの一例を示す回路図である。本実施の形態では、１ワードの中に占めるエラーフラグは図５のように２ビットであることを想定しており、従って２入力のＯＲゲートにより構成されるが、一般に、１ワードの中に占めるエラーフラグがＭビットである場合、Ｍ入力のＯＲゲートにより構成される。
【００３６】
以上のように構成された、本実施の形態によるＦＩＦＯ回路の動作について、以下、説明を行う。
【００３７】
はじめに、基本的なＦＩＦＯ回路としての動作を説明する。書き込みデータＷＤＡＴＡとともに、外部から与えられる書き込み信号ＷＲが入力されると、それらはメモリ２３を構成する各ワードに共通して与えられる。
【００３８】
ライト・ポインタ・デコーダ２１ｃはライト・ポインタ２１の出力をデコードして、書き込み許可信号ＷＥＮをメモリ２３に与える。これにより、書き込みデータＷＤＡＴＡ はライト・ポインタ２１が示すアドレスに書き込まれる。データの書き込みが完了すると、ライト・ポインタ２１は、次のデータ書き込み位置を指示するため、フルでない限り、１加算する。
【００３９】
ここで、フルの場合に書き込み信号ＷＲが入力されたとしても、ライト・ポインタが示すアドレスはプリービアス・リード・ポインタ２８が示すアドレスに等しく、既に読み出しを終えたアドレスであるから、未読データを破壊することがない。
【００４０】
次に、外部から与えられる読み出し信号ＲＤが入力されると、エンプティでない場合は、リード・ポインタ・セレクタ２２ｂはリード・ポインタ２２の出力を選択し、リード・ポインタ・デコーダ２２ｃに出力する。
【００４１】
リード・ポインタ・デコーダ２２ｃは、リード・ポインタ・セレクタ２２ｂに選択されたリード・ポインタ２２の出力をデコードし、８対１セレクタ２４に与える。その結果、８対１セレクタ２４はリード・ポインタ２２が示すアドレスのデータを選択し、読み出しデータＲＤＡＴＡ として外部に出力する。データの読み出しが完了すると、リード・ポインタ２２は、次のデータ読み出し位置を指示するため、１加算する。同時にプリービアス・リード・ポインタ２８も１加算する。
【００４２】
エンプティの場合に読み出し信号ＲＤが入力されると、リード・ポインタ２２の出力に代わってプリービアス・リード・ポインタ２８の出力がデコードされるので、メモリ２３の前回読み出されたアドレスが再び読み出される。エンプティの場合には、リード・ポインタ２２もプリービアス・リード・ポインタ２８も１加算されず、現在の値を維持する。
【００４３】
一方、エンプティ・フラグ作成回路２５ａは常にライト・ポインタ２１とリード・ポインタ２２の一致検出を行っており、未読データが無くなると両ポインタの値が一致するので、ＥＭＰＴＹ信号を出力する。リード・ポインタ２２はＥＭＰＴＹ信号を読み出し信号ＲＤによりラッチし、リード・ポインタ・セレクタ２２ｂに与える。
【００４４】
ところで、リード・ポインタ・セレクタ２２ｂを配し、常にリード・ポインタ２２の出力をリード・ポインタ・デコーダ２２ｃに与えることで、エンプティの場合に読み出し信号ＲＤが入力されると、未定義データが読み出しデータＲＤＡＴＡとして出力されるようにもできる。
【００４５】
図４はエンプティ・フラグ作成回路２５ａ、フル・フラグ作成回路２５ｂを構成する一致検出回路の一例を示す回路図である。本実施の形態はＮ＝３の場合であるから、３個のＸＮＯＲゲート（３０〜３２）を持つ。Ａ０〜Ａ２にはライト・ポインタ２１を構成する３ビットを入力する。Ｂ０〜Ｂ２には、エンプティ・フラグ作成回路２５ａにおいてはリード・ポインタ２２を構成する３ビットを入力し、フル・フラグ作成回路２５ｂにおいてはプリービアス・リード・ポインタ２８を構成する３ビットを入力して、各ビットごとに一致検出を行った上でＡＮＤゲート３９で論理積を取る。
【００４６】
なお、図４に示す一致検出回路では、入力ビットのうち複数が同時に変化した時に出力にグリッチを生じる場合がある。このグリッチの発生を抑制するには、ライト・ポインタ２１、リード・ポインタ２２およびプリービアス・リード・ポインタ２８をグレイ・コード・カウンタで構成すれば良い。
【００４７】
次に、図５はライト・ポインタ２１、リード・ポインタ２２およびプリービアス・リード・ポインタ２８の動作タイミングを示す図であり、同図（ａ）はライト・ポインタ２１の動作タイミングを示す図、同図（ｂ）はリード・ポインタ２２およびプリービアス・リード・ポインタ２８の動作タイミングを示す図である。本実施の形態のライト・ポインタ２１は、同図（ａ）に示すように、書き込み信号ＷＲの立ち上がりでフル・フラグ作成回路２５ｂが出力するＦＵＬＬ信号をラッチし、そのラッチした値が０であれば、書き込み信号ＷＲの立ち下がりで１加算する。
【００４８】
同様に、リード・ポインタ２２およびプリービアス・リード・ポインタ２８は、同図（ｂ）に示すように、読み出し信号ＲＤの立ち上がりでエンプティ・フラグ作成回路２５ａが出力するＥＭＰＴＹ信号をラッチし、そのラッチした値が０であれば、読み出し信号ＲＤの立ち下がりで１加算する。
【００４９】
以上のように、ＦＵＬＬ信号、ＥＭＰＴＹ信号がラッチされた後に、データの書き込み、読み出しが行われ、データの書き込み、読み出しが終了した後に、ライト・ポインタ２１、リード・ポインタ２２およびプリービアス・リード・ポインタ２８を１加算するので、書き込み動作中にライト・ポインタが動くことはなく、読み出し動作中にリード・ポインタもしくはプリービアス・リード・ポインタが動くこともないから、書き込み動作、読み出し動作を安定して行うことができる。また、書き込み中に読み出し、あるいは、読み出し中に書き込みがあっても、正常に書き込み、読み出しを行うことができる。
【００５０】
次に、図６はメモリ２３を構成する各ワード内の１ビット分の一例を示す図であり、同図において、５１は２対１セレクタであり、書き込み許可信号ＷＥＮが１の時には入力Ａを選択し、０の時には入力Ｂを選択して出力する。
【００５１】
５２はＤフリップフロップであり、メモリ２３内のすべてのビットに共通の書き込み信号ＷＲが入力されたとき入力Ｄに加わる信号が出力Ｑにセットされる。同図において、書き込みデータＷＤＡＴＡが入力されたとき、書き込み許可信号ＷＥＮが１であれば、２対１セレクタ５１はＷＤＡＴＡを選択してＤフリップフロップ５２のＤ入力に出力し、書き込み信号ＷＲが入力されたタイミングで、書き込みデータＷＤＡＴＡがＤフリップフロップ５２の出力Ｑにセットされる。
【００５２】
一方、書き込み許可信号ＷＥＮが０のとき、２対１セレクタ５１はＤフリップフロップ５２の出力Ｑを選択して入力Ｄに出力するので、書き込み信号ＷＲが入力されたタイミングで、Ｄフリップフロップ５２の出力Ｑに再び同じ値がセットされる。
【００５３】
図７はメモリ２３への書き込みタイミングを示す図である。書き込むアドレスを示すライト・ポインタ２１は前回の書き込みの終了時に１加算された時点で確定しており、ライト・ポインタ・デコーダ２１ｃを通ることによりＷＥＮに遅延が発生しても、書き込み信号ＷＲが新たに立ち上がるまでにＷＥＮが確定し、次いで書き込み信号ＷＲが立ち下がる時点で、メモリ２３への書き込みが行われる。
【００５４】
以上説明したように、本実施の形態においては、ライト・ポインタ２１、リード・ポインタ２２、プリービアス・リード・ポインタ２８、および、それらの値の一致検出を行うことによりエンプティ、フルを検出するエンプティ・フラグ作成回路２５ａ、フル・フラグ作成回路２５ｂとを備えた非同期ＦＩＦＯ回路において、書き込みアドレスは前回の書き込みの終了時点で、読み出しアドレスは読み出し信号ＲＤの前縁でそれぞれ確定し、書き込み動作中、読み出し動作中に変化することはないので、フルの場合、エンプティの場合、どちらでもない場合のいずれであっても、誤動作することなく確実に動作する。
【００５５】
また、ＦＵＬＬ信号、ＥＭＰＴＹ信号を、それぞれ書き込み信号ＷＲおよび読み出し信号ＲＤの立ち上がりでラッチし、ライト・ポインタ２１、リード・ポインタ２２およびプリービアス・リード・ポインタ２８の１加算は書き込み信号ＷＲおよび読み出し信号ＲＤの立ち下がりで行っているので、書き込み信号ＷＲおよび読み出し信号ＲＤの幅の分だけ、ラッチされた信号の確定時間を確保できるために、ライト・ポインタ２１、リード・ポインタ２２およびプリービアス・リード・ポインタ２８の１加算動作は安定して行われる。
【００５６】
次に、本発明の比較手段またはエラー比較回路によって生成された比較出力が、求めるＬＳＲ７ビット、すなわちＦＩＦＯの構成を有するメモリ２３の中にセットされているエラーフラグが１つでも存在すれば１となり、１つも存在しなければ０となるビットと同値であることを証明する。
【００５７】
まずＦＩＦＯの構成を有するメモリ２３の中にセットされているエラーフラグが存在しない場合であるが、この場合は（エラーフラグのいずれかがセットされたワードをメモリ２３に書き込んだ累計）と（エラーフラグのいずれかがセットされたワードをメモリ２３から読み出した累計）とが一致することは自明であり、従って各々の剰余数も一致するので、エラー・ライト・カウンタ６１の値とエラー・リード・カウンタ６２の値が一致し、比較出力は０になる。
【００５８】
次にＦＩＦＯの構成を有するメモリ２３の中にセットされているエラーフラグが存在する場合は、（エラーフラグのいずれかがセットされたワードをメモリ２３に書き込んだ累計）と（エラーフラグのいずれかがセットされたワードをメモリ２３から読み出した累計）とが異なるが、上記に説明されているように、このＦＩＦＯには最大（２N−１）ワードしか蓄積されないので、両者の差は最大（２N−１）にとどまる。
【００５９】
そうすると、両者を２Nで除した余りを比較しても、やはり異なるので、エラー・ライト・カウンタ６１の値とエラー・リード・カウンタ６２の値が異なり、比較出力は１になる。ゆえに上記のようにして生成された比較出力は、求めるＬＳＲ７ビットと同値である。
【００６０】
なお、図２に示す一致検出回路では、入力ビットのうち複数が同時に変化した時に出力にグリッチを生じる場合がある。すなわちＬＳＲ７ビットにグリッチが発生する可能性がある。このグリッチの発生を抑制するには、エラー・ライト・カウンタ６１およびエラー・リード・カウンタ６２をグレイ・コード・カウンタで構成すれば良い。
【００６１】
図８、は２進カウンタとグレイ・コード・カウンタの出力の差異を、Ｎ＝３の場合について示す図であり、同図（ａ）は２進カウンタの出力を示す図、同図（ｂ）はグレイ・コード・カウンタの出力を示す図である。１加算を繰り返し行っていく中で、２進カウンタの出力は２ビット同時に変化する場合があるが、グレイ・コード・カウンタの出力は常に１ビットしか変化しない。従って、エラー・ライト・カウンタ６１およびエラー・リード・カウンタ６２をグレイ・コード・カウンタで構成すれば、ＬＳＲ７ビットにグリッチが生じることがなくなる。
【００６２】
また、ライト・ポインタ２１、リード・ポインタ２２にグレイ・コード・カウンタを用いた場合でも、ライト・ポインタ・デコーダ２１ｃ、リード・ポインタ・デコーダ２２ｃの構成は、ライト・ポインタ２１、リード・ポインタ２２に２進カウンタを用いた場合と同じ構成で構わない。こういうグレイ・コード・カウンタの構成方法に関しては、公知であるので説明を省略する。
【００６３】
以上説明したように、本実施の形態においては、エラーフラグのいずれかがセットされたワードがＦＩＦＯの構成を有するメモリに書き込まれた回数をエラー・ライト・カウンタ６１が計数し、該ＦＩＦＯの構成を有するメモリから読み出された回数をエラー・リード・カウンタ６２が計数し、エラー比較回路６３が、それらの値の一致検出を行うことにより、ＦＩＦＯの中にエラーフラグがセットされたワードが残っているか否かを知ることができる。そのためメモリ２３は、特定のカラムから独立した出力を引き出す必要がなく、汎用のメモリマクロで構成できる。
【００６４】
さらに、このようにして構成された非同期ＦＩＦＯを受信ＦＩＦＯとして用いた場合、上記エラー比較回路６３の出力は、ＰＣ１６５５０ＤのＬＳＲ７ビットと同値であり、従ってＰＣ１６５５０Ｄと互換の調歩同期シリアル通信装置に求められる受信ＦＩＦＯが、汎用のメモリマクロを使って構成できる。さらに業界標準であるＰＣ１６５５０Ｄとの互換性を保った調歩同期シリアル通信装置が内蔵する受信ＦＩＦＯのサイズを、汎用のメモリマクロを使用して容易に拡張できる。
【００６５】
なお、上記の実施の形態においては、非同期ＦＩＦＯ回路として、ライトポインタ２１，ライトポインタデコーダ２１ｃ、リードポインタ２２，リードポインタセレクタ２２ｂ、リードポインタデコーダ２２ｃ、メモリ２３，８対１セレクタ２４，エンプティフラグ作成回路２５ａ、フルフラグ作成回路２５ｂ、プリービアスリードポインタ２８とを備えたものを用いたが、本発明の非同期ＦＩＦＯ回路はこの構成に限定されるものではなく、非同期かつＦＩＦＯにてメモリに対して、ワードすなわち、所定単位でデータの読み出し／書き込みを行うものであれば、他の構成を有するものでもよい。
【００６６】
【発明の効果】
以上説明したことから明らかなように、本発明においては、上記のような構成としたので、次の効果を得ることができる。
【００６７】
すなわち、汎用のメモリマクロを使用してメモリを構成しても、特定カラムのビットがセットされたワードが１つでも存在するか否かが識別できる非同期ＦＩＦＯ回路を構成できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態である非同期ＦＩＦＯ回路の全体構成を示す図
【図２】エラー比較回路を構成する一致検出回路の一例を示す回路図
【図３】ライト・フラグ論理和回路、リード・フラグ論理和回路の一例を示す回路図
【図４】エンプティ・フラグ作成回路、フル・フラグ作成回路を構成する一致検出回路の一例を示す回路図
【図５】ライト・ポインタ、リード・ポインタ、プリービアス・リード・ポインタの動作タイミングを示す図
【図６】メモリを構成する各ワードの中の１ビット分の一例を示す図
【図７】メモリへの書き込みタイミングを示す図
【図８】２進カウンタとグレイ・コード・カウンタの出力の差異を示す図
【図９】受信データとエラーフラグが組み合わされて１ワードを構成することを示す図
【図１０】ＦＩＦＯ内の全てのエラーフラグの論理和を取ることを示す図
【符号の説明】
２１    ライト・ポインタ
２１ｃ  ライト・ポインタ・デコーダ
２２    リード・ポインタ
２２ｂ  リード・ポインタ・セレクタ
２２ｃ  リード・ポインタ・デコーダ
２３    メモリ
２４    ８対１セレクタ
２５ａ  エンプティ・フラグ作成回路
２５ｂ  フル・フラグ作成回路
２８    プリービアス・リード・ポインタ
３０  ＸＮＯＲゲート（１）
３１  ＸＮＯＲゲート（２）
３２  ＸＮＯＲゲート（３）
３９  ＡＮＤゲート
６１    エラー・ライト・カウンタ
６２    エラー・リード・カウンタ
６３    エラー比較回路
６４ａ  ライト・フラグ論理和回路
６４ｂ  リード・フラグ論理和回路
６３０  ＸＮＯＲゲート（１）
６３１  ＸＮＯＲゲート（２）
６３２  ＸＮＯＲゲート（３）
６３９  ＮＡＮＤゲート
６４０  ＯＲゲート
【図１】
0003803246.tif 000002
【図２】
0003803246.tif 000003
【図３】
0003803246.tif 000004
【図４】
0003803246.tif 000005
【図５】
0003803246.tif 000006
【図６】
0003803246.tif 000007
【図７】
0003803246.tif 000008
【図８】
0003803246.tif 000009
【図９】
0003803246.tif 000010
【図１０】
0003803246.tif 000011