JP3803246B2 - 非同期fifo回路 - Google Patents

非同期fifo回路 Download PDF

Info

Publication number
JP3803246B2
JP3803246B2 JP2000370543A JP2000370543A JP3803246B2 JP 3803246 B2 JP3803246 B2 JP 3803246B2 JP 2000370543 A JP2000370543 A JP 2000370543A JP 2000370543 A JP2000370543 A JP 2000370543A JP 3803246 B2 JP3803246 B2 JP 3803246B2
Authority
JP
Japan
Prior art keywords
read
memory
error
write
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000370543A
Other languages
English (en)
Other versions
JP2002175687A (ja
Inventor
宮本裕一郎
貴司 増野
剛毅 黒田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2000370543A priority Critical patent/JP3803246B2/ja
Priority to US10/006,860 priority patent/US6810468B2/en
Publication of JP2002175687A publication Critical patent/JP2002175687A/ja
Application granted granted Critical
Publication of JP3803246B2 publication Critical patent/JP3803246B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/10Indexing scheme relating to groups G06F5/10 - G06F5/14
    • G06F2205/102Avoiding metastability, i.e. preventing hazards, e.g. by using Gray code counters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、先入れ先出しメモリ回路、即ち、First In First Out回路(以下、FIFO回路と称す)に関し、特に、クロック信号を用いずに書き込み、読み出し動作を確実に行うことができる非同期FIFO回路に関するものである。
【0002】
【従来の技術】
従来より、データの書き込み側と読み出し側が異なるクロックで動作する、もしくはクロックを全く必要としない非同期FIFO回路が知られている。例えば、特願平11−360248号公報により公知となる非同期FIFO回路である。
【0003】
一方、調歩同期シリアル通信装置の業界標準である、米国ナショナルセミコンダクター社のPC16550Dは、送受信ともに16ワードの非同期FIFO回路を内蔵している。
【0004】
PC16550Dが受信用に内蔵する非同期FIFO回路(以下、受信FIFO)は、図9に示すように、8ビットの受信データとともに2ビットのエラーフラグを組み合わせて1ワードを構成したものを順次蓄積する。そして、受信FIFOの中にセットされているエラーフラグが1つでも存在するか否かが、LSR7ビットとして読み出せるようになっていることが、PC16550Dの大きな特徴である。
【0005】
エラーフラグは、それと組になる受信データと同時に受信FIFOに書き込まれ、読み出されるので、LSR7ビットは、受信データの書き込み・読み出しに応じて変化する。
【0006】
【発明が解決しようとする課題】
このLSR7ビットは、図10に示すように、受信FIFOを構成する各ワードのエラーフラグに相当するカラムすべての論理和として構成される。PC16550の場合は16ワードのエラーフラグ全ての論理和である。
【0007】
ここで、受信FIFOのワード数を増やすと、構成するのに著しい不都合が生じるようになる。なぜならば受信FIFOを構成するのに汎用のメモリマクロが使用できないからである。
【0008】
すなわち、受信FIFOのワード数を増やすと、LSR7ビットは、各ワードのエラーフラグに相当するカラム全ての論理和であるから、LSR7ビットの生成に関与するカラム数も同時に増える。このとき、受信FIFOを構成するメモリからは、各ワードのエラーフラグに相当するカラムのすべてから独立した出力を引き出さねばならないので、汎用のメモリマクロが使用できず、必要ゲート数もしくはチップ面積の増大を招く。
【0009】
こうした弊害は、ASIC(Application Specific Integrated Circuit)技術を用いて調歩同期シリアル通信装置を実現しようとする際に、より顕著になる。
【0010】
例えば、英国オックスフォードセミコンダクター社のOX16C950においては、PC16550Dとの互換性をうたいつつ、送受信ともに128ワードの非同期FIFO回路を内蔵している。
【0011】
しかしながら、実際、PC16550D互換をうたいながらFIFOのワード数を送受信ともに128ワードに拡張したOX16C950においては、LSR7ビットは受信FIFOに蓄積されたエラーフラグ全ての論理和になっておらず、受信エラーの発生によりセットされ、LSR7ビットを読み出すことにより即座にクリアされるだけである。したがって、LSR7ビットを読み出した時点で受信FIFOの中にセットされたエラーフラグが残っていても、LSR7ビットはクリアされてしまう。このため、PC16550Dとの互換性がくずれている。
【0012】
この事実は、PC16550D用に開発されたソフトウェアが、OX16C950においては必ずしも正しく動作しないことを意味し、OX16C950の工業的価値を損なっている。
【0013】
本発明は、上記の課題に鑑みてなされたものであり、業界標準であるPC16550Dとの互換性を保つ調歩同期シリアル通信装置が内蔵する受信FIFOのように、LSR7ビットを読み出して、特定カラムのビットがセットされたワードが1つでも存在するか否かが識別できるようなFIFO回路を、汎用のメモリマクロを用いて構成できるようにすることを目的とする。
【0014】
【課題を解決するための手段】
上記の目的を達成するために、第1の本発明(請求項1に対応)は、メモリと、
前記メモリに所定単位のデータの書き込みまたは読み出しを先入れ先出し手順で行う非同期読み出し/書き込み手段と、
前記メモリへ書き込まれる前記所定単位のデータにエラーが含まれている場合は1加算するエラー・ライト・カウンタと、
前記メモリから読み出される前記所定単位のデータにエラーが含まれている場合は1加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの保持する値と前記エラーリードカウンタの保持する値とを比較し、一致した場合は0を出力し、異なる場合は1を出力する比較手段とを備えたことを特徴とする非同期FIFO回路である。
【0015】
また、第2の本発明(請求項2に対応)は、2Nワード(N:整数)のアドレスを持つメモリと、
前記メモリが、データが全て書き込まれているフル状態でない場合、前記メモリへデータの書き込みが完了した時に1加算するライト・ポインタと、
前記メモリが、データが全て読み出されているエンプティ状態でない場合、前記メモリからデータの読み出しが完了した時に1加算するリード・ポインタと、前記メモリが前記エンプティ状態でない場合、前記メモリからデータの読み出しが完了したときに1加算し、常に前記リード・ポインタの値から1減算した値を出力するプリービアス・リード・ポインタと、
前記ライト・ポインタの値と前記リード・ポインタの値の一致により前記メモリの前記エンプティ状態を検出するエンプティ・フラグ作成回路と、
前記ライト・ポインタの値と前記プリービアス・リード・ポインタの値の一致により前記メモリの前記フル状態を検出するフル・フラグ作成回路と、
前記ライト・ポインタの値をデコードしたアドレスへのみデータの書き込みを許可するライト・ポインタ・デコーダと、
前記リード・ポインタの値をデコードしたアドレスからのデータを選択するデータ・セレクタと、
前記メモリへ書き込まれるデータの特定ビットの論理和を取るライト・フラグ論理和回路と、
前記メモリから読み出されるデータの特定ビットの論理和を取るリード・フラグ論理和回路と、
前記メモリにデータが書き込まれる時に、前記ライト・フラグ論理和回路の出力が真であれば1加算するエラー・ライト・カウンタと、
前記メモリからデータが読み出される時に、前記リード・フラグ論理和回路の出力が真であれば1加算するエラー・リード・カウンタと、
前記エラー・ライト・カウンタの値と前記エラー・リード・カウンタの値の一致を検出するエラー比較回路とを備えたことを特徴とする非同期FIFO回路である。
【0016】
また、第3の本発明(請求項3に対応)は、前記エラー・ライト・カウンタおよび前記エラー・リード・カウンタをグレイ・コード・カウンタにより構成したことを特徴とする請求項1または2に記載の非同期FIFO回路である。
【0017】
以上のような本発明によれば、汎用のメモリマクロを使用してメモリを構成しても、FIFOの中にセットされているエラーフラグが1つでも存在するか否かが正しく読み出せるという利点がある。
【0018】
また、FIFOの中にセットされているエラーフラグが1つでも存在するか否かの検出結果にグリッチが生じないという利点がある。
【0019】
【発明の実施の形態】
以下、本発明の実施の形態について、図1から図8を用いて説明する。
【0020】
(実施の形態1)
図1は本発明の非同期FIFO回路の一実施の形態を示す図である。
【0021】
図1において、22は後述するメモリ23からデータを読み出す際のアドレスを示すリード・ポインタであり、Nビットのカウンタから構成され、データの読み出しが完了すると、メモリ23がエンプティ状態(以下、単にエンプティと略記する)でない場合1加算する。(2N−1)から1加算する場合は、0に戻る。このため、リード・ポインタ22の値は常に次の読み出しアドレスを示している。
【0022】
また、28はプリービアス・リード・ポインタであり、リード・ポインタ22と同様、Nビットのカウンタから構成され、データの読み出しが完了すると、エンプティでない場合1加算する。(2N−1)から1加算する場合は、0に戻る。ただし初期状態において、リード・ポインタ22が0にリセットされるのに対し、プリービアス・リード・ポインタ28は(2N−1)にリセットされるので、プリービアス・リード・ポインタ28の値は常にリード・ポインタ22が示すアドレスの1つ手前のアドレスを示す。
【0023】
22bはリード・ポインタ・セレクタであり、後述するエンプティ・フラグ作成回路25aがEMPTY信号を出力したとき、すなわちエンプティの場合は、プリービアス・リード・ポインタ28の出力を選択し、エンプティでない場合はリード・ポインタ22の出力を選択する。22cはリード・ポインタ・デコーダであり、リード・ポインタ・セレクタ22bの出力をデコードして、メモリ23からデータを読み出す際の選択信号REN0〜REN7(以下、これらの信号を一括してRENと表記する)を出力する。
【0024】
次に、21はメモリ23へデータを書き込む際のアドレスを示すライト・ポインタであり、Nビットのカウンタから構成され、データの書き込みが完了すると、メモリ23がフル状態(以下、単にフルと略記する)でない場合1加算する。(2N−1)から1加算する場合は、0に戻る。このため、ライト・ポインタ21の値は常に次の書込みアドレスを示している。
【0025】
21cはライト・ポインタ・デコーダであり、ライト・ポインタ21の出力をデコードして書き込み許可信号WEN0〜WEN7(以下、これらの信号を一括してWENと表記する)を出力し、メモリ23の所定のアドレスにデータを書き込み可能とする。
【0026】
23は2Nワードのアドレスを有するメモリであり、本実施の形態では、8ワードのデータを記憶するメモリが示されている。8=23であるから、本実施の形態はN=3の場合である。
【0027】
24は8対1セレクタであり、メモリ23に記憶されたデータの内、リード・ポインタ・デコーダ22cが出力する選択信号RENにより特定のアドレスのデータを選択し、読み出しデータとして外部に出力する。
【0028】
25aはエンプティ・フラグ作成回路であり、ライト・ポインタ21の値とリード・ポインタ22の値を比較し両者一致した場合、すなわち書き込まれたが読まれていない(以下、未読と表記する)データが無い場合、EMPTY信号を出力する。これはエンプティを示す。
【0029】
25bはフル・フラグ作成回路であり、ライト・ポインタ21の値とプリービアス・リード・ポインタ28の値を比較し両者一致した場合、すなわち未読データが(2N−1)個存在する場合、FULL信号を出力する。これはフルを示す。
【0030】
また、61は書き込み信号WRをクロックとし、メモリ23にエラーフラグのいずれかがセットされたワードが書き込まれる時に1加算するエラー・ライト・カウンタであり、Nビットのカウンタから構成される。(2N−1)から1加算する場合は、0に戻る。このため、エラー・ライト・ポインタ61の値は、エラーフラグのいずれかがセットされたワードをメモリ23に書き込んだ累計を2Nで除した余りになる。ここでNは、メモリ23のワード数が2Nで示される数であり、本実施の形態はN=3の場合である。
【0031】
62は読み出し信号RDをクロックとし、メモリ23からエラーフラグのいずれかがセットされたワードが読み出される時に1加算するエラー・リード・カウンタであり、やはりNビットのカウンタから構成される。(2N−1)から1加算する場合は、0に戻る。このため、エラー・リード・カウンタ62の値は、エラーフラグのいずれかがセットされたワードをメモリ23から読み出した累計を2Nで除した余りになる。
【0032】
63は、本発明の比較手段に相当するエラー比較回路であり、エラー・ライト・カウンタ61の値とエラー・リード・カウンタ62の値とを比較し、両者が一致する場合は比較出力として0を、一致しない場合は比較出力として1を出力する。
【0033】
64aはライト・フラグ論理和回路、64bはリード・フラグ論理和回路であり、1ワードの中に占めるすべてのエラーフラグの論理和を生成して、それぞれエラー・ライト・カウンタ61、エラー・リード・カウンタ62に送る。ライト・フラグ論理和回路64aからの出力が真である時に書き込み信号WRが発生すると、エラー・ライト・カウンタ61は1加算する。リード・フラグ論理和回路64bからの出力が真である時に読み出し信号RDが発生すると、エラー・リード・カウンタ62は1加算する。
【0034】
図2は、エラー比較回路63を構成する一致検出回路の一例を示す回路図である。本実施の形態はN=3の場合であるから、3個のXNORゲート(630〜632)を持つ。A0〜A2にはエラー・ライト・カウンタ61を構成する3ビットを入力する。B0〜B2にはエラー・リード・カウンタ62を構成する3ビットを入力し、各ビットごとに一致検出を行った上でNANDゲート639で論理積の否定を取って、比較出力とする。
【0035】
図3はライト・フラグ論理和回路64a、リード・フラグ論理和回路64bの一例を示す回路図である。本実施の形態では、1ワードの中に占めるエラーフラグは図5のように2ビットであることを想定しており、従って2入力のORゲートにより構成されるが、一般に、1ワードの中に占めるエラーフラグがMビットである場合、M入力のORゲートにより構成される。
【0036】
以上のように構成された、本実施の形態によるFIFO回路の動作について、以下、説明を行う。
【0037】
はじめに、基本的なFIFO回路としての動作を説明する。書き込みデータWDATAとともに、外部から与えられる書き込み信号WRが入力されると、それらはメモリ23を構成する各ワードに共通して与えられる。
【0038】
ライト・ポインタ・デコーダ21cはライト・ポインタ21の出力をデコードして、書き込み許可信号WENをメモリ23に与える。これにより、書き込みデータWDATA はライト・ポインタ21が示すアドレスに書き込まれる。データの書き込みが完了すると、ライト・ポインタ21は、次のデータ書き込み位置を指示するため、フルでない限り、1加算する。
【0039】
ここで、フルの場合に書き込み信号WRが入力されたとしても、ライト・ポインタが示すアドレスはプリービアス・リード・ポインタ28が示すアドレスに等しく、既に読み出しを終えたアドレスであるから、未読データを破壊することがない。
【0040】
次に、外部から与えられる読み出し信号RDが入力されると、エンプティでない場合は、リード・ポインタ・セレクタ22bはリード・ポインタ22の出力を選択し、リード・ポインタ・デコーダ22cに出力する。
【0041】
リード・ポインタ・デコーダ22cは、リード・ポインタ・セレクタ22bに選択されたリード・ポインタ22の出力をデコードし、8対1セレクタ24に与える。その結果、8対1セレクタ24はリード・ポインタ22が示すアドレスのデータを選択し、読み出しデータRDATA として外部に出力する。データの読み出しが完了すると、リード・ポインタ22は、次のデータ読み出し位置を指示するため、1加算する。同時にプリービアス・リード・ポインタ28も1加算する。
【0042】
エンプティの場合に読み出し信号RDが入力されると、リード・ポインタ22の出力に代わってプリービアス・リード・ポインタ28の出力がデコードされるので、メモリ23の前回読み出されたアドレスが再び読み出される。エンプティの場合には、リード・ポインタ22もプリービアス・リード・ポインタ28も1加算されず、現在の値を維持する。
【0043】
一方、エンプティ・フラグ作成回路25aは常にライト・ポインタ21とリード・ポインタ22の一致検出を行っており、未読データが無くなると両ポインタの値が一致するので、EMPTY信号を出力する。リード・ポインタ22はEMPTY信号を読み出し信号RDによりラッチし、リード・ポインタ・セレクタ22bに与える。
【0044】
ところで、リード・ポインタ・セレクタ22bを配し、常にリード・ポインタ22の出力をリード・ポインタ・デコーダ22cに与えることで、エンプティの場合に読み出し信号RDが入力されると、未定義データが読み出しデータRDATAとして出力されるようにもできる。
【0045】
図4はエンプティ・フラグ作成回路25a、フル・フラグ作成回路25bを構成する一致検出回路の一例を示す回路図である。本実施の形態はN=3の場合であるから、3個のXNORゲート(30〜32)を持つ。A0〜A2にはライト・ポインタ21を構成する3ビットを入力する。B0〜B2には、エンプティ・フラグ作成回路25aにおいてはリード・ポインタ22を構成する3ビットを入力し、フル・フラグ作成回路25bにおいてはプリービアス・リード・ポインタ28を構成する3ビットを入力して、各ビットごとに一致検出を行った上でANDゲート39で論理積を取る。
【0046】
なお、図4に示す一致検出回路では、入力ビットのうち複数が同時に変化した時に出力にグリッチを生じる場合がある。このグリッチの発生を抑制するには、ライト・ポインタ21、リード・ポインタ22およびプリービアス・リード・ポインタ28をグレイ・コード・カウンタで構成すれば良い。
【0047】
次に、図5はライト・ポインタ21、リード・ポインタ22およびプリービアス・リード・ポインタ28の動作タイミングを示す図であり、同図(a)はライト・ポインタ21の動作タイミングを示す図、同図(b)はリード・ポインタ22およびプリービアス・リード・ポインタ28の動作タイミングを示す図である。本実施の形態のライト・ポインタ21は、同図(a)に示すように、書き込み信号WRの立ち上がりでフル・フラグ作成回路25bが出力するFULL信号をラッチし、そのラッチした値が0であれば、書き込み信号WRの立ち下がりで1加算する。
【0048】
同様に、リード・ポインタ22およびプリービアス・リード・ポインタ28は、同図(b)に示すように、読み出し信号RDの立ち上がりでエンプティ・フラグ作成回路25aが出力するEMPTY信号をラッチし、そのラッチした値が0であれば、読み出し信号RDの立ち下がりで1加算する。
【0049】
以上のように、FULL信号、EMPTY信号がラッチされた後に、データの書き込み、読み出しが行われ、データの書き込み、読み出しが終了した後に、ライト・ポインタ21、リード・ポインタ22およびプリービアス・リード・ポインタ28を1加算するので、書き込み動作中にライト・ポインタが動くことはなく、読み出し動作中にリード・ポインタもしくはプリービアス・リード・ポインタが動くこともないから、書き込み動作、読み出し動作を安定して行うことができる。また、書き込み中に読み出し、あるいは、読み出し中に書き込みがあっても、正常に書き込み、読み出しを行うことができる。
【0050】
次に、図6はメモリ23を構成する各ワード内の1ビット分の一例を示す図であり、同図において、51は2対1セレクタであり、書き込み許可信号WENが1の時には入力Aを選択し、0の時には入力Bを選択して出力する。
【0051】
52はDフリップフロップであり、メモリ23内のすべてのビットに共通の書き込み信号WRが入力されたとき入力Dに加わる信号が出力Qにセットされる。同図において、書き込みデータWDATAが入力されたとき、書き込み許可信号WENが1であれば、2対1セレクタ51はWDATAを選択してDフリップフロップ52のD入力に出力し、書き込み信号WRが入力されたタイミングで、書き込みデータWDATAがDフリップフロップ52の出力Qにセットされる。
【0052】
一方、書き込み許可信号WENが0のとき、2対1セレクタ51はDフリップフロップ52の出力Qを選択して入力Dに出力するので、書き込み信号WRが入力されたタイミングで、Dフリップフロップ52の出力Qに再び同じ値がセットされる。
【0053】
図7はメモリ23への書き込みタイミングを示す図である。書き込むアドレスを示すライト・ポインタ21は前回の書き込みの終了時に1加算された時点で確定しており、ライト・ポインタ・デコーダ21cを通ることによりWENに遅延が発生しても、書き込み信号WRが新たに立ち上がるまでにWENが確定し、次いで書き込み信号WRが立ち下がる時点で、メモリ23への書き込みが行われる。
【0054】
以上説明したように、本実施の形態においては、ライト・ポインタ21、リード・ポインタ22、プリービアス・リード・ポインタ28、および、それらの値の一致検出を行うことによりエンプティ、フルを検出するエンプティ・フラグ作成回路25a、フル・フラグ作成回路25bとを備えた非同期FIFO回路において、書き込みアドレスは前回の書き込みの終了時点で、読み出しアドレスは読み出し信号RDの前縁でそれぞれ確定し、書き込み動作中、読み出し動作中に変化することはないので、フルの場合、エンプティの場合、どちらでもない場合のいずれであっても、誤動作することなく確実に動作する。
【0055】
また、FULL信号、EMPTY信号を、それぞれ書き込み信号WRおよび読み出し信号RDの立ち上がりでラッチし、ライト・ポインタ21、リード・ポインタ22およびプリービアス・リード・ポインタ28の1加算は書き込み信号WRおよび読み出し信号RDの立ち下がりで行っているので、書き込み信号WRおよび読み出し信号RDの幅の分だけ、ラッチされた信号の確定時間を確保できるために、ライト・ポインタ21、リード・ポインタ22およびプリービアス・リード・ポインタ28の1加算動作は安定して行われる。
【0056】
次に、本発明の比較手段またはエラー比較回路によって生成された比較出力が、求めるLSR7ビット、すなわちFIFOの構成を有するメモリ23の中にセットされているエラーフラグが1つでも存在すれば1となり、1つも存在しなければ0となるビットと同値であることを証明する。
【0057】
まずFIFOの構成を有するメモリ23の中にセットされているエラーフラグが存在しない場合であるが、この場合は(エラーフラグのいずれかがセットされたワードをメモリ23に書き込んだ累計)と(エラーフラグのいずれかがセットされたワードをメモリ23から読み出した累計)とが一致することは自明であり、従って各々の剰余数も一致するので、エラー・ライト・カウンタ61の値とエラー・リード・カウンタ62の値が一致し、比較出力は0になる。
【0058】
次にFIFOの構成を有するメモリ23の中にセットされているエラーフラグが存在する場合は、(エラーフラグのいずれかがセットされたワードをメモリ23に書き込んだ累計)と(エラーフラグのいずれかがセットされたワードをメモリ23から読み出した累計)とが異なるが、上記に説明されているように、このFIFOには最大(2N−1)ワードしか蓄積されないので、両者の差は最大(2N−1)にとどまる。
【0059】
そうすると、両者を2Nで除した余りを比較しても、やはり異なるので、エラー・ライト・カウンタ61の値とエラー・リード・カウンタ62の値が異なり、比較出力は1になる。ゆえに上記のようにして生成された比較出力は、求めるLSR7ビットと同値である。
【0060】
なお、図2に示す一致検出回路では、入力ビットのうち複数が同時に変化した時に出力にグリッチを生じる場合がある。すなわちLSR7ビットにグリッチが発生する可能性がある。このグリッチの発生を抑制するには、エラー・ライト・カウンタ61およびエラー・リード・カウンタ62をグレイ・コード・カウンタで構成すれば良い。
【0061】
図8、は2進カウンタとグレイ・コード・カウンタの出力の差異を、N=3の場合について示す図であり、同図(a)は2進カウンタの出力を示す図、同図(b)はグレイ・コード・カウンタの出力を示す図である。1加算を繰り返し行っていく中で、2進カウンタの出力は2ビット同時に変化する場合があるが、グレイ・コード・カウンタの出力は常に1ビットしか変化しない。従って、エラー・ライト・カウンタ61およびエラー・リード・カウンタ62をグレイ・コード・カウンタで構成すれば、LSR7ビットにグリッチが生じることがなくなる。
【0062】
また、ライト・ポインタ21、リード・ポインタ22にグレイ・コード・カウンタを用いた場合でも、ライト・ポインタ・デコーダ21c、リード・ポインタ・デコーダ22cの構成は、ライト・ポインタ21、リード・ポインタ22に2進カウンタを用いた場合と同じ構成で構わない。こういうグレイ・コード・カウンタの構成方法に関しては、公知であるので説明を省略する。
【0063】
以上説明したように、本実施の形態においては、エラーフラグのいずれかがセットされたワードがFIFOの構成を有するメモリに書き込まれた回数をエラー・ライト・カウンタ61が計数し、該FIFOの構成を有するメモリから読み出された回数をエラー・リード・カウンタ62が計数し、エラー比較回路63が、それらの値の一致検出を行うことにより、FIFOの中にエラーフラグがセットされたワードが残っているか否かを知ることができる。そのためメモリ23は、特定のカラムから独立した出力を引き出す必要がなく、汎用のメモリマクロで構成できる。
【0064】
さらに、このようにして構成された非同期FIFOを受信FIFOとして用いた場合、上記エラー比較回路63の出力は、PC16550DのLSR7ビットと同値であり、従ってPC16550Dと互換の調歩同期シリアル通信装置に求められる受信FIFOが、汎用のメモリマクロを使って構成できる。さらに業界標準であるPC16550Dとの互換性を保った調歩同期シリアル通信装置が内蔵する受信FIFOのサイズを、汎用のメモリマクロを使用して容易に拡張できる。
【0065】
なお、上記の実施の形態においては、非同期FIFO回路として、ライトポインタ21,ライトポインタデコーダ21c、リードポインタ22,リードポインタセレクタ22b、リードポインタデコーダ22c、メモリ23,8対1セレクタ24,エンプティフラグ作成回路25a、フルフラグ作成回路25b、プリービアスリードポインタ28とを備えたものを用いたが、本発明の非同期FIFO回路はこの構成に限定されるものではなく、非同期かつFIFOにてメモリに対して、ワードすなわち、所定単位でデータの読み出し/書き込みを行うものであれば、他の構成を有するものでもよい。
【0066】
【発明の効果】
以上説明したことから明らかなように、本発明においては、上記のような構成としたので、次の効果を得ることができる。
【0067】
すなわち、汎用のメモリマクロを使用してメモリを構成しても、特定カラムのビットがセットされたワードが1つでも存在するか否かが識別できる非同期FIFO回路を構成できる。
【図面の簡単な説明】
【図1】本発明の一実施の形態である非同期FIFO回路の全体構成を示す図
【図2】エラー比較回路を構成する一致検出回路の一例を示す回路図
【図3】ライト・フラグ論理和回路、リード・フラグ論理和回路の一例を示す回路図
【図4】エンプティ・フラグ作成回路、フル・フラグ作成回路を構成する一致検出回路の一例を示す回路図
【図5】ライト・ポインタ、リード・ポインタ、プリービアス・リード・ポインタの動作タイミングを示す図
【図6】メモリを構成する各ワードの中の1ビット分の一例を示す図
【図7】メモリへの書き込みタイミングを示す図
【図8】2進カウンタとグレイ・コード・カウンタの出力の差異を示す図
【図9】受信データとエラーフラグが組み合わされて1ワードを構成することを示す図
【図10】FIFO内の全てのエラーフラグの論理和を取ることを示す図
【符号の説明】
21 ライト・ポインタ
21c ライト・ポインタ・デコーダ
22 リード・ポインタ
22b リード・ポインタ・セレクタ
22c リード・ポインタ・デコーダ
23 メモリ
24 8対1セレクタ
25a エンプティ・フラグ作成回路
25b フル・フラグ作成回路
28 プリービアス・リード・ポインタ
30 XNORゲート(1)
31 XNORゲート(2)
32 XNORゲート(3)
39 ANDゲート
61 エラー・ライト・カウンタ
62 エラー・リード・カウンタ
63 エラー比較回路
64a ライト・フラグ論理和回路
64b リード・フラグ論理和回路
630 XNORゲート(1)
631 XNORゲート(2)
632 XNORゲート(3)
639 NANDゲート
640 ORゲート

Claims (3)

  1. メモリと、
    前記メモリに所定単位のデータの書き込みまたは読み出しを先入れ先出し手順で行う非同期読み出し/書き込み手段と、
    前記メモリへ書き込まれる前記所定単位のデータにエラーが含まれている場合は1加算するエラー・ライト・カウンタと、
    前記メモリから読み出される前記所定単位のデータにエラーが含まれている場合は1加算するエラー・リード・カウンタと、
    前記エラー・ライト・カウンタの保持する値と前記エラーリードカウンタの保持する値とを比較し、一致した場合は0を出力し、異なる場合は1を出力する比較手段とを備えたことを特徴とする非同期FIFO回路。
  2. Nワード(N:整数)のアドレスを持つメモリと、
    前記メモリが、データが全て書き込まれているフル状態でない場合、前記メモリへデータの書き込みが完了した時に1加算するライト・ポインタと、
    前記メモリが、データが全て読み出されているエンプティ状態でない場合、前記メモリからデータの読み出しが完了した時に1加算するリード・ポインタと、前記メモリが前記エンプティ状態でない場合、前記メモリからデータの読み出しが完了したときに1加算し、常に前記リード・ポインタの値から1減算した値を出力するプリービアス・リード・ポインタと、
    前記ライト・ポインタの値と前記リード・ポインタの値の一致により前記メモリの前記エンプティ状態を検出するエンプティ・フラグ作成回路と、
    前記ライト・ポインタの値と前記プリービアス・リード・ポインタの値の一致により前記メモリの前記フル状態を検出するフル・フラグ作成回路と、
    前記ライト・ポインタの値をデコードしたアドレスへのみデータの書き込みを許可するライト・ポインタ・デコーダと、
    前記リード・ポインタの値をデコードしたアドレスからのデータを選択するデータ・セレクタと、
    前記メモリへ書き込まれるデータの特定ビットの論理和を取るライト・フラグ論理和回路と、
    前記メモリから読み出されるデータの特定ビットの論理和を取るリード・フラグ論理和回路と、
    前記メモリにデータが書き込まれる時に、前記ライト・フラグ論理和回路の出力が真であれば1加算するエラー・ライト・カウンタと、
    前記メモリからデータが読み出される時に、前記リード・フラグ論理和回路の出力が真であれば1加算するエラー・リード・カウンタと、
    前記エラー・ライト・カウンタの値と前記エラー・リード・カウンタの値の一致を検出するエラー比較回路とを備えたことを特徴とする非同期FIFO回路。
  3. 前記エラー・ライト・カウンタおよび前記エラー・リード・カウンタをグレイ・コード・カウンタにより構成したことを特徴とする請求項1または2に記載の非同期FIFO回路。
JP2000370543A 2000-12-05 2000-12-05 非同期fifo回路 Expired - Fee Related JP3803246B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2000370543A JP3803246B2 (ja) 2000-12-05 2000-12-05 非同期fifo回路
US10/006,860 US6810468B2 (en) 2000-12-05 2001-12-04 Asynchronous FIFO circuit and method of reading and writing data through asynchronous FIFO circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000370543A JP3803246B2 (ja) 2000-12-05 2000-12-05 非同期fifo回路

Publications (2)

Publication Number Publication Date
JP2002175687A JP2002175687A (ja) 2002-06-21
JP3803246B2 true JP3803246B2 (ja) 2006-08-02

Family

ID=18840418

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000370543A Expired - Fee Related JP3803246B2 (ja) 2000-12-05 2000-12-05 非同期fifo回路

Country Status (2)

Country Link
US (1) US6810468B2 (ja)
JP (1) JP3803246B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8274892B2 (en) * 2001-10-09 2012-09-25 Infinera Corporation Universal digital framer architecture for transport of client signals of any client payload and format type
US7286487B2 (en) * 2002-11-18 2007-10-23 Infinera Corporation Optical transmission network with asynchronous mapping and demapping and digital wrapper frame for the same
JP2003263884A (ja) * 2002-03-07 2003-09-19 Mitsubishi Electric Corp Fifo回路
JP2004062630A (ja) * 2002-07-30 2004-02-26 Fujitsu Ltd Fifoメモリ及び半導体装置
US7752506B1 (en) * 2003-09-16 2010-07-06 Cypress Semiconductor Corporation FIFO memory error circuit and method
US7668983B2 (en) * 2003-10-24 2010-02-23 Broadcom Corporation System for designing data structures
US7880499B2 (en) 2006-06-28 2011-02-01 Achronix Semiconductor Corporation Reconfigurable logic fabrics for integrated circuits and systems and methods for configuring reconfigurable logic fabrics
US20150378812A1 (en) * 2014-06-26 2015-12-31 Emulex Corporation System and Method for Error Recovery in an Asynchronous FIFO
US9275704B2 (en) * 2014-07-31 2016-03-01 Texas Instruments Incorporated Method and apparatus for asynchronous FIFO circuit
CN106445836B (zh) * 2016-09-20 2018-03-23 华南理工大学 异步数据读写方法、系统及装置
KR102342547B1 (ko) 2017-07-12 2021-12-23 삼성전자주식회사 버퍼 컨트롤러, 메모리 장치 및 집적회로 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006286A (en) * 1996-04-26 1999-12-21 Texas Instruments Incorporated System for controlling data packet transfers by associating plurality of data packet transfer control instructions in packet control list including plurality of related logical functions
US5884099A (en) * 1996-05-31 1999-03-16 Sun Microsystems, Inc. Control circuit for a buffer memory to transfer data between systems operating at different speeds
US6101329A (en) * 1997-02-18 2000-08-08 Lsi Logic Corporation System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data
US6550023B1 (en) * 1998-10-19 2003-04-15 Hewlett Packard Development Company, L.P. On-the-fly memory testing and automatic generation of bitmaps
US6609167B1 (en) * 1999-03-17 2003-08-19 Adaptec, Inc. Host and device serial communication protocols and communication packet formats
US6614798B1 (en) * 1999-03-30 2003-09-02 Integrated Device Technology, Inc. Asynchronous FIFO increment and decrement control for interfaces that operate at differing clock frequencies
CN1250294A (zh) * 1999-07-27 2000-04-12 邮电部武汉邮电科学研究院 以太网与同步数字体系或同步光网络融合的适配方法
JP2001176262A (ja) 1999-12-20 2001-06-29 Matsushita Electric Ind Co Ltd 非同期fifo回路
US6584584B1 (en) * 2000-04-10 2003-06-24 Opentv, Inc. Method and apparatus for detecting errors in a First-In-First-Out buffer

Also Published As

Publication number Publication date
US6810468B2 (en) 2004-10-26
US20020084807A1 (en) 2002-07-04
JP2002175687A (ja) 2002-06-21

Similar Documents

Publication Publication Date Title
US8612651B2 (en) FIFO buffer
US5088061A (en) Routing independent circuit components
US8510503B2 (en) Ring buffer circuit and control circuit for ring buffer circuit
JP3803246B2 (ja) 非同期fifo回路
US5495451A (en) Apparatus for detecting data input/output states of a plurality of first-in first-out memories
US5355113A (en) Serialized difference flag circuit
US20050256996A1 (en) Register read circuit using the remainders of modulo of a register number by the number of register sub-banks
US7383492B2 (en) First-in/first-out (FIFO) information protection and error detection method and apparatus
US6480912B1 (en) Method and apparatus for determining the number of empty memory locations in a FIFO memory device
US6510483B1 (en) Circuit, architecture and method for reading an address counter and/or matching a bus width through one or more synchronous ports
JP3013800B2 (ja) 非同期fifo回路
KR100301653B1 (ko) 고속 엠티 플래그 발생기
EP1160668B1 (en) Semiconductor integrated circuit and method of testing semiconductor integrated circuit
US6680990B1 (en) Elastic integrated circuit
JP2001176262A (ja) 非同期fifo回路
JP4189729B2 (ja) タイマーカウント値の非同期読み出し方法及びタイマー
US20050091470A1 (en) Calculation of gray codes using exhaustive combinations
US8238187B2 (en) Fast cyclic decoder circuit for FIFO/LIFO data buffer
KR100247062B1 (ko) 링구조를 갖는 선입선출 방식 및 회로
JP3471275B2 (ja) 同期化回路
RU2024966C1 (ru) Устройство для определения начала блока данных во внешней памяти
JPH0447351A (ja) シングルチップマイクロコンピュータ
JPS60220443A (ja) メモリ回路のエラ−チエツク方式
JPH08297979A (ja) ランダム・アクセス・メモリの読出しデータチェック回路
KR20000045376A (ko) 반도체 메모리 소자의 패리티 구현장치

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060329

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060502

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100512

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110512

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120512

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees