(57)【特許請求の範囲】
【請求項１】
可変長の入力データの最大データ長以上のデータ長を有するデータを保持する第１保持手段と、
前記最大データ長より短いデータ長を有するデータを保持する第２保持手段と、
前記第２保持手段に保持された前記データのデータ長および前記入力データのデータ長に応じて、前記入力データを前記第１保持手段および前記第２保持手段に選択的に入力する入力選択手段とを備え、
前記入力選択手段は、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超える場合、前記第１保持手段を前記最大データ長分シフトさせた後、前記第２保持手段に保持された前記データと前記入力データの合計から抽出された前記最大データ長のデータを前記第１保持手段に入力し、前記合計から前記抽出された前記最大データ長のデータを除いた残りのデータを前記第２保持手段に入力し、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超えない場合、前記第２保持手段に保持された前記データと前記入力データの合計を前記第２保持手段に入力することを特徴とする先入れ先出しメモリ装置。
【請求項２】
可変長の入力データの最大データ長以上のデータ長を有するデータを保持する第１保持手段と、
前記最大データ長より短いデータ長を有するデータを保持する第２保持手段と、
前記第２保持手段に保持された前記データのデータ長および前記入力データのデータ長に応じて、前記入力データを前記第１保持手段および前記第２保持手段に選択的に入力する入力選択手段とを備え、
前記入力選択手段は、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超える場合、前記第１保持手段を前記最大データ長分シフトさせた後、前記第２保持手段に保持された前記データと前記入力データの合計から抽出された前記最大データ長のデータを前記第１保持手段に入力し、前記入力データのうち前記第１保持手段に入力された部分以外の部分を前記第２保持手段に入力し、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超えない場合、前記第２保持手段に保持された前記データと前記入力データの合計を前記第２保持手段に保持することを特徴とする先入れ先出しメモリ装置。
【請求項３】
前記入力データがＮビットを基本データ単位とし、前記第１保持手段からＮビット単位の固定長のデータが読み出され、
前記先入れ先出しメモリ装置は、
他の装置から転送されるＮビット単位の可変長の前記入力データを前記第２保持手段または前記入力選択手段に転送する経路である書き込みデータバスと、
前記固定長のデータを他の装置へ転送する経路であるＭビット長の読み出しデータバスと、
前記第２保持手段に保持された前記データに保持されたＮビット単位のデータ長を保持する入力バッファポインタ手段とをさらに備え、
前記第１保持手段が、Ｎビット単位の前記入力データをＮの倍数であるＭビット単位でシフト動作し、
前記第２保持手段が、前記書き込みデータバスから送られた前記入力データにおけるＭビット長よりも短いＮビット単位の一部または全部を保持し、
前記入力選択手段は、Ｎビット単位で合計Ｍビットを選択して前記第１保持手段へ入力し、
前記入力選択手段は、前記入力バッファポインタ手段が保持するデータ長Ｉビットおよび前記入力データのデータ長Ｗビットに基づいて、前記入力データを前記第１保持手段および前記第２保持手段に選択的に入力する、請求項１または２に記載の先入れ先出しメモリ装置。
【請求項４】
前記入力選択手段は、前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超える場合、前記第２保持手段に保持された前記データを優先的に前記１保持手段に入力する、請求項１または２に記載の先入れ先出しメモリ装置。
【請求項５】
前記入力選択手段は、入力選択器と、シフトイン選択器と、制御部とを備えており、前記入力選択器は、前記入力データを前記シフトイン選択器および前記第２保持手段に選択的に入力し、前記シフトイン選択器は、前記入力データおよび前記第２保持手段に保持されている前記データを前記第１保持手段に選択的に入力し、前記制御部は、前記入力選択器と前記シフトイン選択器とを制御する、請求項１〜４のいずれかに記載の先入れ先出しメモリ装置。
【請求項６】
前記先入れ先出しメモリ装置は、前記第２保持手段によって保持されている前記データのデータ長を保持する第３保持手段をさらに備えている、請求項１または２に記載の先入れ先出しメモリ装置。
【請求項７】
可変長の入力データの最大データ長以上のデータ長を有するデータを保持する第１保持手段と、
前記最大データ長より短いデータ長を有するデータを保持する第２保持手段とを備えた先入れ先出しメモリ装置の入力データ制御方法であって、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超える場合、前記第１保持手段を前記最大データ長分シフトさせた後、前記第２保持手段に保持された前記データと前記入力データの合計から抽出された前記最大データ長のデータを前記第１保持手段に入力し、前記合計から前記抽出された前記最大データ長のデータを除いた残りのデータを前記第２保持手段に入力し、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超えない場合、前記第２保持手段に保持された前記データと前記入力データの合計を前記第２保持手段に入力することを特徴とする先入れ先出しメモリ装置の入力データ制御方法。
【請求項８】
可変長の入力データの最大データ長以上のデータ長を有するデータを保持する第１保持手段と、
前記最大データ長より短いデータ長を有するデータを保持する第２保持手段とを備えた先入れ先出しメモリ装置の入力データ制御方法であって、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超える場合、前記第１保持手段を前記最大データ長分シフトさせた後、前記第２保持手段に保持された前記データと前記入力データの合計から抽出された前記最大データ長のデータを前記第１保持手段に入力し、前記入力データのうち前記第１保持手段に入力された部分以外の部分を前記第２保持手段に入力し、
前記第２保持手段に保持された前記データと前記入力データの長さの和が前記最大データ長を超えない場合、前記第２保持手段に保持された前記データと前記入力データの合計を前記第２保持手段に保持することを特徴とする先入れ先出しメモリ装置の入力データ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置およびデータ転送装置において、転送データを一時蓄積する先入れ先出しメモリ装置に関する。
【０００２】
【従来の技術】
マイクロプロセッサやマイクロコンピュータ、ＤＳＰ、通信コントローラなどのデータ処理装置およびデータ転送装置においては、転送データを一時蓄積する先入れ先出し（ＦＩＦＯ）型のバッファメモリが用いられる。先入れ先出しメモリ装置（以下、「ＦＩＦＯ装置」とする。）の構成として、従来からいくつかのものが考案されている。ＦＩＦＯ装置に対する書き込みデータのデータ長が固定である場合には、書き込み単位のレジスタを連鎖させたシフトレジスタによる構成が一般的である。シフトレジスタによるＦＩＦＯ装置の回路構成および接続配線は単純である。一方、ＦＩＦＯ装置に対する書き込みデータのデータ長が可変である場合、ＦＩＦＯ装置の構成は複雑になる。この場合には、単位語長のデータに加え、単位語より長いデータをも一度に書き込む機能がＦＩＦＯ装置に要求される。
【０００３】
一般に、コンピュータなど多くのデジタルシステムにとって、複数語長のデータ転送のサポートは必須の機能とされる。ゆえに、デジタルシステムに用いられるＦＩＦＯ装置にも複数語長のデータ転送機能が要求されている。以下、複数語長のデータ転送機能を持つ従来のＦＩＦＯ装置について説明する。以下に説明する従来のＦＩＦＯ装置は、１バイト、２バイトおよび４バイトのデータ転送に対応している。ＦＩＦＯ装置に対する最小の書き込み単位は１バイトである。ＦＩＦＯ装置に接続される転送バスは、書き込みバスと読み出しバスに分離されている。書き込みバスは、ＦＩＦＯ装置に対する書き込みデータを転送するために使用されるバスである。読み出しバスは、ＦＩＦＯ装置からの読み出しデータを転送するために使用されるバスである。書き込みバスと読み出しバスの幅はそれぞれ４バイトである。表１に示されるように、転送バス上において、１バイト、２バイトおよび４バイトのデータは下位側に整列される。すなわち、第４バイトが最上位であり、第１バイトが最下位であるように整列される。
【０００４】
【表１】
0003976393.tif 000002
【０００５】
図３は、従来のＦＩＦＯ装置の第１の構成例を示す。ＦＩＦＯ装置２００は、シフトレジスタ２０３と、書き込み許可制御論理２０４と、シフトアウト選択器２０５と、オーバーフロー／アンダーフロー検出器２０６と、データトップポインタ２０７と、データトップポインタ増減器２０８とを備える。ＦＩＦＯ装置２００は、書き込みデータバス２０１および読み出しデータバス２０２に接続されている。以下、図３を参照して、ＦＩＦＯ装置２００の動作を説明する。
【０００６】
ＦＩＦＯ装置２００に１バイトデータを書き込む場合は、書き込みデータバス２０１の下位側を使用してシフトレジスタ２０３に１バイトデータを転送する。転送された１バイトデータは、シフトレジスタ２０３の１バイトレジスタ１に書き込まれる。１バイトデータが１バイトレジスタ１に書き込まれる前に、シフトレジスタ２０３全体は１バイト上にシフトされる。すなわち、書き込み許可制御論理２０４が中央の入力を選択することにより、シフトレジスタ２０３の各１バイトレジスタに１つ下の１バイトレジスタに格納されたデータが入力される。また、ＦＩＦＯ装置２００に１バイトデータが書き込まれると、データトップポインタ増分器２０８はデータトップポインタ２０７の値に１を加算する。
【０００７】
ＦＩＦＯ装置２００に２バイトデータを書き込む場合は、書き込みデータバス２０１の下位側を使用してシフトレジスタ２０３に２バイトデータを転送する。転送された２バイトデータは、シフトレジスタ２０３の１バイトレジスタ１、２に書き込まれる。２バイトデータが１バイトレジスタ１、２に書き込まれる前に、シフトレジスタ２０３全体は２バイト上にシフトされる。すなわち、書き込み許可制御論理２０４が左の入力を選択することにより、シフトレジスタ２０３の各１バイトレジスタに２つ下の１バイトレジスタに格納されたデータが入力される。また、ＦＩＦＯ装置２００に２バイトデータが書き込まれると、データトップポインタ増分器２０８はデータトップポインタ２０７の値に２を加算する。
【０００８】
ＦＩＦＯ装置２００に４バイトデータを書き込む場合は、書き込みデータバス２０１の全体を使用してシフトレジスタ２０３に４バイトデータを転送する。転送された４バイトデータは、シフトレジスタ２０３の１バイトレジスタ１、２、３、４に書き込まれる。４バイトデータが１バイトレジスタ１、２、３、４に書き込まれる前に、シフトレジスタ２０３全体は４バイト上にシフトされる。すなわち、書き込み許可制御論理２０４が右の入力を選択することにより、シフトレジスタ２０３の各１バイトレジスタに４つ下の１バイトレジスタに格納されたデータが入力される。また、ＦＩＦＯ装置２００に４バイトデータが書き込まれると、データトップポインタ増分器２０８はデータトップポインタ２０７の値に４を加算する。
【０００９】
ＦＩＦＯ装置２００からデータを読み出す場合は、読み出すバイト数に応じた１バイトレジスタがシフトアウト選択器２０５によって選択される。ＦＩＦＯ装置２００から読み出すデータのバイト数は１、２又は４である。シフトアウト選択器２０５が選択する１バイトレジスタは、データトップポインタ２０７が指す位置から低い方の１バイトレジスタである。選択された１バイトレジスタのデータは、読み出しデータバス２０２の下位側を使用して転送される。データトップポインタ２０７の値は、読み出すデータのバイト数に応じて１、２又は４減らされる。
【００１０】
ＦＩＦＯ装置２００にデータを書き込むことにより、データトップポインタ２０７の値が３２を超える場合は、オーバーフロー／アンダーフロー検出器２０６がＦＩＦＯオーバーフローを検出する。ＦＩＦＯ装置２００からデータを読み出すことにより、データトップポインタ２０７の値が負になる場合は、オーバーフロー／アンダーフロー検出器２０６がＦＩＦＯアンダーフローを検出する。ＦＩＦＯオーバーフロー／アンダーフロー検出時には、ＦＩＦＯ装置２００に対するデータの読み書きは制限される。
【００１１】
以上のように、ＦＩＦＯ装置２００に対する１、２又は４バイトのデータの読み書きが実行される。ＦＩＦＯ装置２００は、シフトレジスタ２０３に直接３種類の幅の異なるデータを書き込むため、３系統のシフトパスおよび３つのパスを選択する選択器をバイトレジスタごとに必要とする。ここでいう３系統のシフトパスとは、次のレジスタヘシフトするパスと、２つ先のレジスタヘシフトするパスと、４つ先のレジスタヘシフトするパスとである。ＦＩＦＯ装置２００をチップ上に実装する場合、バイトレジスタごとに３系統のシフトパスおよび選択器を用意する必要があるため、チップ上におけるＦＩＦＯ装置の回路面積が大きくなる。
【００１２】
図４は、従来のＦＩＦＯ装置の第２の構成例を示す。ＦＩＦＯ装置３００は、バイトレジスタ３０３と、書き込み選択器３０４と、読み出し選択器３０５と、オーバーフロー／アンダーフロー検出器３０６と、読み出しポインタ３０７と、読み出しポインタ増分器３０８と、書き込みポインタ３０９と、書き込みポインタ増分器３１０と、書き込み許可制御論理３１１とを備える。ＦＩＦＯ装置３００は、書き込みデータバス３０１および読み出しデータバス３０２に接続されている。以下、図４を参照して、ＦＩＦＯ装置３００の動作を説明する。
【００１３】
ＦＩＦＯ装置３００にデータを書き込む場合は、書き込みデータバス３０１を使用してデータを転送する。書き込みデータバス３０１により転送されたデータは、全ての書き込み選択器３０４に入力される。書き込み選択器３０４は、各１バイトレジスタに対応して設けられている。データが書き込まれる１バイトレジスタに対応する書き込み選択器３０４のみが、データ書き込み時に動作する。データが書き込まれない１バイトレジスタに対応する書き込み選択器３０４は、データ書き込み時には動作しなくてもよい。データが書き込まれる先頭の１バイトレジスタは、書き込みポインタ３０９が保持する値によって定められる。データが書き込まれる１バイトレジスタは、書き込まれるデータのバイト数分の１バイトレジスタである。データ書き込み時に動作する各書き込み選択器３０４は、入力された１、２又は４バイトのデータのうち、対応する１バイトレジスタに書き込むべき１バイトを選択する。書き込み許可制御論理３１１は、書き込まれる１つ、２つ又は４つの１バイトレジスタだけにデータの書き込みを許可する。その結果、データの書き込みが許可された１バイトレジスタだけにデータが書き込まれる。書き込みポインタ増分器３１０は、書き込みポインタ３０９の値に書き込んだデータのバイト数を加える。
【００１４】
ＦＩＦＯ装置３００からデータを読み出す場合、読み出し選択器３０５は各１バイトレジスタから入力されたデータのうち、読み出すバイト数分のデータを選択する。読み出し選択器３０５の選択する先頭の１バイトレジスタは、読み出しポインタ３０７が保持する値によって定められる。選択された各１バイトレジスタの値は、読み出しデータバス３０２を使用して転送される。読み出しポインタ増分器３０８は、読み出しポインタ３０７の値に読み出したデータのバイト数を加える。
【００１５】
バイトレジスタ３０３は、リングバッファの構造を有する。すなわち、１バイトレジスタ３１と１バイトレジスタ０は隣接するものとして扱われる。そのため、バイトレジスタ３０３には、終端位置である１バイトレジスタが存在しない。バイトレジスタ３０３上のデータ読み出し位置は読み出しポインタ３０７によって示される。同様に、データ書き込み位置は書き込みポインタ３０９によって示される。読み出しポインタ３０７と書き込みポインタ３０９の値は、３２を法として計算される。すなわち、読み出しポインタ３０７と書き込みポインタ３０９は０から３１までの値を取りうる。バイトレジスタ３０３に全くデータが蓄えられていない場合は、読み出しポインタ３０７と書き込みポインタ３０９の値は一致する。バイトレジスタ３０３にデータが蓄えられている場合は、読み出しポインタ３０７と書き込みポインタ３０９の値は異なる。
【００１６】
ＦＩＦＯ装置３００にデータを書き込むことにより、書き込みポインタ３０９の値が読み出しポインタ３０７の値を追い越すこととなる場合は、オーバーフロー／アンダーフロー検出器３０６がＦＩＦＯオーバーフローを検出する。ＦＩＦＯ装置３００からデータを読み出すことにより、読み出しポインタ３０７の値が書き込みポインタ３０９の値を追い越すこととなる場合は、オーバーフロー／アンダーフロー検出器３０６がＦＩＦＯアンダーフローを検出する。ＦＩＦＯオーバーフロー／アンダーフロー検出時には、ＦＩＦＯ装置３００に対するデータの読み書きは制限される。
【００１７】
以上のように、ＦＩＦＯ装置３００に対する１、２又は４バイトのデータの読み書きが実行される。ＦＩＦＯ装置３００は、書き込み選択器３０４を１バイトレジスタごとに必要とする。そのため、ＦＩＦＯ装置３００をチップ上に実装する場合も、チップ上におけるＦＩＦＯ装置の回路面積は大きくなる。
【００１８】
【発明が解決しようとする課題】
以上のように、複数語長のデータ転送機能を持つ従来のＦＩＦＯ装置は、最小書き込み単位のレジスタを連鎖させたシフトレジスタにより構成されるため、最小書き込み単位のレジスタごとの書き込み制御論理回路が必要とされていた。そのため、シフトレジスタの規模が大きくなるほど、必要な書き込み制御論理回路の規模が増大していた。その結果、ＦＩＦＯ装置全体の回路規模が増大し、ＦＩＦＯ装置をチップ上に実装する場合の回路面積も増大していた。さらに、回路面積の増大はシステムコストの増大をも招いていた。
【００１９】
本発明は以上の点に鑑み、書き込みデータの最大データ長に合わせた制御構造を有するＦＩＦＯ装置を提供することにより、ＦＩＦＯ装置における書き込み制御論理回路の構成を簡単にし、ＦＩＦＯ装置全体の回路規模を削減することを目的とする。
【００２０】
【課題を解決するための手段】
本発明による可変長データを入出力する先入れ先出しメモリ装置は、前記先入れ先出しメモリ装置に入力される入力データの最大データ長ＭＡＸを有するデータを保持する第１保持手段と、前記最大データ長より短いデータ長を有する剰余データを保持する第２保持手段と、前記剰余データのデータ長ＩＢＰおよび前記入力データのデータ長ＷＢに応じて、前記入力データを前記第１保持手段および前記第２保持手段に選択的に入力する入力選択手段とを備えており、これにより上記目的が達成される。
【００２１】
ＩＢＰ＋ＷＢ≧ＭＡＸである場合には、前記入力選択手段は、前記第１保持手段に入力されるデータのデータ長が前記最大データ長ＭＡＸに等しくなるように前記入力データより前記剰余データを優先的に前記第１保持手段に入力し、前記入力データのうち前記第１保持手段に入力されなかったデータを前記第２保持手段に入力し、ＩＢＰ＋ＷＢ＜ＭＡＸである場合には、前記入力選択手段は、前記入力データを前記第２保持手段に入力してもよい。
【００２２】
前記入力選択手段は、入力選択器と、シフトイン選択器と、制御部とを備えており、前記入力選択器は、前記入力データを前記シフトイン選択器および前記第２保持手段に選択的に入力し、前記シフトイン選択器は、前記入力データおよび前記第２保持手段に保持されている前記剰余データを前記第１保持手段に選択的に入力し、前記制御部は、前記入力選択器と前記シフトイン選択器とを制御してもよい。
【００２３】
前記先入れ先出しメモリ装置は、前記第２保持手段によって保持されている前記剰余データのデータ長を保持する第３保持手段をさらに備えていてもよい。
【００２４】
【発明の実施の形態】
図１は、本発明によるＦＩＦＯ装置１００の構成を示す。ＦＩＦＯ装置１００に対して一度に読み書きするデータのデータ長は可変である。
【００２５】
ＦＩＦＯ装置１００は、第１保持部１０３と、第２保持部１１１と、入力選択部１１５とを備えている。第１保持部１０３は、ＦＩＦＯ装置１００に入力される入力データの最大データ長を有するデータを保持する。第２保持部１１１は、ＦＩＦＯ装置１００に入力される入力データの最大データ長より短いデータ長を有する剰余データを保持する。入力選択部１１５は、剰余データのデータ長および入力データのデータ長に応じて、入力データを第１保持部１０３および第２保持部１１１に選択的に入力する。
【００２６】
ＦＩＦＯ装置１００は、状態管理部１１６をさらに備えている。状態管理部１１６は、入力データのデータ長および剰余データのデータ長を保持する。状態管理部１１６によって保持されるデータは、入力選択部１１５およびシフトアウト選択器１０５の動作のために参照される。
【００２７】
ＦＩＦＯ装置１００は、データ読み出しのための論理回路として、シフトアウト選択器１０５をさらに備えている。シフトアウト選択器１０５は、第１保持部１０３と第２保持部１１１から読み出すデータを選択する。
【００２８】
ＦＩＦＯ装置１００は、書き込みデータバス１０１および読み出しデータバス１０２に接続されている。書き込みデータバス１０１および読み出しデータバス１０２は、それぞれ入力データの最大データ長を有するバスである。書き込みデータバス１０１は、ＦＩＦＯ装置１００に書き込むデータを転送するために使用される。読み出しデータバス１０２は、ＦＩＦＯ装置１００から読み出すデータを転送するために使用される。
【００２９】
第１保持部１０３は、ＦＩＦＯ型のバッファメモリ本体である。第１保持部１０３は、８本のワードレジスタ０〜７を直列に接続したシフトレジスタである。各ワードレジスタの長さは、ＦＩＦＯ装置１００に書き込まれる最大のデータ長である。第１保持部１０３においては、データは最初にワードレジスタ０に入力される。ワードレジスタ０に入力されたデータは、第１保持部１０３のシフト動作により順次上にシフトされ、ワードレジスタ７までシフトされうる。
【００３０】
第２保持部１１１は、入力バッファ１１１ａ、１１１ｂ、１１１ｃを備えている。入力バッファ１１１ａ、１１１ｂ、１１１ｃの長さは、ＦＩＦＯ装置１００に書き込まれる最小のデータ長である。入力バッファ１１１ａ、１１１ｂ、１１１ｃは、第１保持部１０３に書き込まれる前の剰余データを一時的に保持する。
【００３１】
入力選択部１１５は、バッファ入力選択器１１２と、シフトイン選択器１０４と、書き込み制御部１１３とを備えている。バッファ入力選択器１１２は、書き込みデータを第２保持部１１１およびシフトイン選択器１０４に選択的に入力する。シフトイン選択器１０４は、第１保持部１０３に書き込むデータをＦＩＦＯ装置１００に書き込まれる最大のデータ長に揃える論理回路である。書き込み制御部１１３は、外部から入力される書き込み要求信号と書き込みデータ長と入力バッファポインタ１０９の値とに応じて、シフトイン選択器１０４と、バッファ入力選択器１１２の動作を制御する。
【００３２】
図２は、入力選択部１１５の詳細な回路構成例を示す。図２においては、ＦＩＦＯ装置１００に書き込まれるデータの最小単位は１バイトである。また、ＦＩＦＯ装置１００に一度に書き込まれるデータの最大データ長は４バイトである。図２により、書き込みデータバス１０１上の各バイトデータがどのレジスタに転送されうるかが示されている。
【００３３】
バッファ入力選択器１１２は、書き込み選択器１１２ａ、１１２ｂ、１１２ｃを備えている。書き込み選択器１１２ａは入力バッファ１１１ａに対応し、書き込み選択器１１２ｂは入力バッファ１１１ｂに対応し、書き込み選択器１１２ｃは入力バッファ１１１ｃに対応している。書き込み選択器１１２ａは、書き込み制御部１１３からの制御信号に応じて、入力されたデータから、対応する入力バッファ１１１ａに書き込むべきデータを選択する。同様に、書き込み選択器１１２ｂは、書き込み制御部１１３からの制御信号に応じて入力バッファ１１１ｂに書き込むべきデータを選択する。書き込み選択器１１２ｃは、書き込み制御部１１３からの制御信号に応じて入力バッファ１１１ｃに書き込むべきデータを選択する。
【００３４】
状態管理部１１６は、オーバーフロー／アンダーフロー検出器１０６と、データトップポインタ１０７と、データトップポインタ増減器１０８と、入力バッファポインタ１０９と、入力バッファポインタ増減器１１０とを備えている。オーバーフロー／アンダーフロー検出器１０６は、ＦＩＦＯオーバーフローとＦＩＦＯアンダーフローを検出する論理回路である。データトップポインタ１０７は、第１保持部１０３においてデータが格納されている先頭のレジスタを指すポインタである。データトップポインタ１０７の値は、第１保持部１０３に格納されているデータのバイト数に等しい。データトップポインタ増減器１０８は、データトップポインタ１０７の値を増減させる演算器である。入力バッファポインタ１０９は、第２保持部１１１に格納されているデータのバイト数を示すポインタである。入力バッファポインタ増減器１１０は、入力バッファポインタ１０９の値を増減させる演算器である。
【００３５】
以下、図１を参照して、ＦＩＦＯ装置１００の動作を説明する。以下の説明においては、ＦＩＦＯ装置に対して一度に読み書きするデータのデータ長は１、２又は４バイトであると仮定する。また、ＦＩＦＯ装置１００に対して読み書きされるデータの最小単位は１バイトであると仮定する。
【００３６】
表２は、ＦＩＦＯ装置１００に１、２又は４バイトデータを書き込む場合の動作を示す。表２に示された動作は、書き込み制御部１１３がシフトイン選択器１０４の動作と、バッファ入力選択器１１２の動作とを制御することによって実現される。表２において、ＩＢＰは入力バッファポインタ１０９の値（すなわち、第２保持部１１１に格納されているデータのバイト数）を示す。ＷＢはＦＩＦＯ装置１００に書き込まれるべき書き込みバイト数を示す。i0、i1、i2、i3は書き込みデータの各バイトを表す。同様に、b1、b2、b3は書き込み前に入力バッファ１１１ａ、１１１ｂ、１１１ｃがそれぞれ保持していた１バイトデータを表す。IB1、IB2、IB3は入力バッファ１１１ａ、１１１ｂ、１１１ｃがそれぞれ保持するデータを表す。{  }は一連のデータを表す。データ中の記号「−」は、該当するデータが存在しないことを表す。表２の左側は、書き込み前の入力バッファポインタ１０９の値（ＩＢＰ）と、書き込みデータのバイト数（ＷＢ）と、書き込みデータの内容を表す。{  }内の書き込みデータのうち、右側のデータが先に書き込まれるデータである。表２の右側は、書き込み後の入力バッファポインタ１０９の値（ＩＢＰ）と、入力バッファ１１１ａ、１１１ｂ、１１１ｃの内容と、ワードレジスタ０の内容と、書き込み時のシフトイン動作の有無とを表す。
【００３７】
【表２】
0003976393.tif 000003
【００３８】
ここで、第１保持部１０３のシフトイン動作とは、第１保持部１０３全体をシフトさせるとともに、データトップポインタ１０７の値に最大データ長（例えば、４）を加算する動作をいう。第１保持部１０３全体をシフトさせるとは、ワードレジスタの内容を全体に上にずらすことをいう。例えば、ワードレジスタ２にはワードレジスタ１の内容が入力され、ワードレジスタ１にはワードレジスタ０の内容が入力される。上述のように、データトップポインタ１０７の値に最大データ長を加算する動作は、データトップポインタ増分器１０８によって行われる。
【００３９】
表２の右側の各要素は、表２の左側の各要素に依存して決定される。具体的には、書き込みデータのバイト数と、入力バッファポインタ１０９が保持する値との和が書き込みデータの最大データ長である４以上である場合には、シフトイン動作が行われた後に、ワードレジスタ０にデータが書き込まれる。ワードレジスタ０に書き込まれるデータのデータ長が最大データ長に等しくなるように、第２保持部１１１が保持していたデータが書き込みデータに優先してワードレジスタ０に書き込まれる。ワードレジスタ０に書き込まれなかったデータは、第２保持部１１１に書き込まれる。
【００４０】
書き込みデータのバイト数と、入力バッファポインタ１０９が保持する値との和が４未満である場合には、書き込みデータは第２保持部１１１に書き込まれる。この場合、ワードレジスタ０にデータは書き込まれず、シフトイン動作は行われない。
【００４１】
ＦＩＦＯ装置１００に１、２又は４バイトデータを書き込む場合の動作を数式で表すと、以下のようになる。ここで、シフトイン論理をＳＩＬ、データトップポインタの値をＤＴＰ、入力バッファポインタの値をＩＢＰ、書き込みデータのバイト数をＷＢとする。かっこ内の条件式の値は、成立時を１、不成立時を０とする。ｍｏｄは剰余系を表す。シフトイン論理ＳＩＬは、
ＳＩＬ＝（ＩＢＰ＋ＷＢ≧４）・・・（式１）
によって表現される。書き込み後のデータトップポインタの値ＤＴＰは、書き込み前のＤＴＰを使って、
ＤＴＰ＝ＤＴＰ＋４×ＳＩＬ・・・（式２）
によって表現される。書き込み後の入力バッファポインタの値ＩＢＰは、書き込み前のＩＢＰを使って、
ＩＢＰ＝（ＩＢＰ＋ＷＢ）ｍｏｄ４・・・（式３）
によって表現される。
【００４２】
表２を参照して、ＦＩＦＯ装置１００に１、２又は４バイトデータを書き込む場合の動作例を説明する。例えば、書き込み前のＩＢＰが０、ＷＢが２、書き込みデータが{i1,i0}である場合を考える。この場合、ＩＢＰとＷＢの和は最大データ長（＝４）未満である。そのため、書き込みデータ{i1,i0}は第２保持部１１１に書き込まれる。また、シフトイン動作は行われず、ワードレジスタ０にデータは書き込まれない。書き込み後のＩＢＰは２、{IB1,IB2,IB3}={−,i0,i1}となり、ワードレジスタ０の内容は保持される。同様に、書き込み前のＩＢＰが２、ＷＢが４、書き込みデータが{i3,i2,i1,i0}である場合を考える。この場合、書き込みデータのバイト数と、第２保持部１１１が保持するデータのバイト数との和は最大データ長（＝４）以上である。そのため、シフトイン動作が行われ、ワードレジスタ０にデータが書き込まれる。ワードレジスタ０には、書き込みデータより、第２保持部１１１が保持するデータが優先的に書き込まれる。この場合は、第２保持部１１１がデータ{b2,b3}を保持しているため、書き込みデータ{i3,i2,i1,i0}に優先してデータ{b2,b3}がワードレジスタ０に書き込まれる。その結果、第２保持部１１１が保持していたデータ{b2,b3}と書き込みデータ{i3,i2,i1,i0}のうち上位{b2,b3,i0,i1}がワードレジスタ０に書き込まれることとなる。書き込みデータ{i3,i2,i1,i0}のうち、ワードレジスタ０に書き込まれなかったデータ{i2,i3}は、第２保持部１１１に書き込まれる。書き込み後のＩＢＰは２、{IB1,IB2,IB3}={−,i2,i3}となり、ワードレジスタ０の内容は{b2,b3,i0,i1}となる。
【００４３】
ＦＩＦＯ装置１００にデータを書き込むことにより、データトップポインタ１０７の値が３２を超える場合は、オーバーフロー／アンダーフロー検出器１０６がＦＩＦＯオーバーフローを検出する。オーバーフロー／アンダーフロー検出器１０６は、ＦＩＦＯオーバーフローを検出すると、ＦＩＦＯオーバーフロー信号を送出する。ＦＩＦＯオーバーフロー信号により、ＦＩＦＯオーバーフローの発生がＦＩＦＯ装置１００の外部に通知される。ＦＩＦＯオーバーフローが発生した場合、ＦＩＦＯ装置１００は、データが読み出されることにより第１保持部１０３に十分な数の空きレジスタが生ずるまで、ＦＩＦＯ装置１００に対する書き込みを待たせる。
【００４４】
次に、ＦＩＦＯ装置１００から１、２又は４バイトデータを読み出す場合の動作を説明する。ＦＩＦＯ装置１００からデータを読み出す場合は、読み出すバイト数に応じた１バイトレジスタがシフトアウト選択器１０５によって選択される。シフトアウト選択器１０５が選択するレジスタは、データトップポインタ１０７が指す位置から低い方のレジスタである。選択されたレジスタのデータは、読み出しデータバス１０２の下位側を使用して転送される。データトップポインタ１０７の値は、読み出すデータのバイト数に応じて１、２又は４減らされる。
【００４５】
ＦＩＦＯ装置１００からデータを読み出す際にデータトップポインタ１０７の値が負になっても、入力バッファポインタ１０９の値が負にならない限り、データが読み出される。すなわち、データトップポインタ１０７の値が負になっても、入力バッファポインタ１０９の値が負にならない限り、アンダーフローは発生しない。読み出し前のデータトップポインタ１０７の値が正であった場合、第１保持部１０３中にあるデータに続いて第２保持部１１１中にあるデータも読み出される。読み出し前に既にデータトップポインタ１０７の値が負であった場合は、第２保持部１１１からのみデータが読み出される。
【００４６】
ＦＩＦＯ装置１００からデータを読み出すことにより、データトップポインタ１０７の値および入力バッファポインタ１０９の値がともに負になる場合は、オーバーフロー／アンダーフロー検出器１０６がＦＩＦＯアンダーフローを検出する。オーバーフロー／アンダーフロー検出器１０６は、ＦＩＦＯアンダーフローを検出すると、ＦＩＦＯアンダーフロー信号を送出する。ＦＩＦＯアンダーフロー信号により、ＦＩＦＯアンダーフローの発生がＦＩＦＯ装置１００の外部に通知される。ＦＩＦＯアンダーフローが発生した場合、ＦＩＦＯ装置１００は、データが書き込まれることにより第１保持部１０３に十分な数のデータを保持するレジスタが生ずるまで、ＦＩＦＯ装置１００からの読み出しを待たせる。
【００４７】
表３は、ＦＩＦＯ装置１００からの読み出し論理を示す。表３の論理は、アンダーフロー論理も含んでいる。表３において、ＤＴＰはデータトップポインタの値を、ＲＢは読み出しバイト数を表す。
【００４８】
【表３】
0003976393.tif 000004
【００４９】
以上のように、ＦＩＦＯ装置１００に対する可変長のデータの読み書きが実行される。ＦＩＦＯ装置１００においては、従来のＦＩＦＯ装置２００におけるような１バイトレジスタごとの３系統のシフトパスおよび選択器は不要である。また、ＦＩＦＯ装置１００においては、従来のＦＩＦＯ装置３００におけるような１バイトレジスタごとの書き込み選択器３０３および書き込み許可制御論理３１１は不要である。そのため、ＦＩＦＯ装置１００においては、データ書き込み用の論理回路は従来のＦＩＦＯ装置と比較して単純である。
【００５０】
なお、本発明によるＦＩＦＯ装置１００の動作は上記の実施例には限定されない。例えば、書き込みデータのデータ長が最大データ長である場合には、書き込みデータがそのままワードレジスタ０に書き込まれるようにＦＩＦＯ装置１００を構成することも可能である。以下、この場合のＦＩＦＯ装置１００の動作を簡単に説明する。書き込みデータのデータ長が最大データ長でない場合のＦＩＦＯ装置１００の動作は、上述したＦＩＦＯ装置１００の動作と同様である。書き込みデータのデータ長が最大データ長であり、かつ、第２保持部１１１が保持するデータが存在する場合は、シフトイン動作を行い、第２保持部１１１が保持するデータをワードレジスタ０に書き込む。次に、もう一度シフトイン動作を行い、書き込みデータをワードレジスタ０に書き込む。その結果、書き込みデータがワードレジスタ０に書き込まれ、第２保持部１１１が保持するデータがワードレジスタ１に書き込まれる。そのため、ワードレジスタ１には、使われない部分が存在することとなる。書き込みデータのデータ長が最大データ長であり、かつ、第２保持部１１１が保持するデータが存在しない場合は、シフトイン動作を行い、書き込みデータをワードレジスタ０に書き込む。本ＦＩＦＯ装置１００においては、各ワードレジスタ０〜７には使われない部分が存在する場合がある。そのため、状態管理部１１６において、各ワードレジスタ０〜７に格納されているデータのデータ長を保持するレジスタを別途設けることにより、ワードレジスタ０〜７の使用状態を管理することができる。シフトアウト選択器１０５は、このレジスタを参照してデータの読み出し動作を行う。
【００５１】
上記の実施例においては、ＦＩＦＯ装置に対して一度に読み書きするデータのデータ長を１、２又は４バイトとして説明したが、本発明によれば、一度に３バイトのデータをも読み書きできるＦＩＦＯ装置の構成も可能であり、書き込み制御部の内容を変更し、配線を適合させればよい。また、上記の実施例においては、書き込みデータの最大データ長を４バイトとして説明したが、書き込みデータの最大長が４バイトを超える場合にも、本発明を適用することが可能である。書き込みデータの最大長が４バイトを超える場合には、シフトレジスタ内のワードレジスタ、入力選択部、入力バッファ、配線を適合させればよい。
【００５２】
【発明の効果】
本発明によれば、先入れ先出しメモリ装置に入力される入力データの最大データ長を有するデータを保持する第１保持手段と、前記最大データ長より短いデータ長を有する剰余データを保持する第２保持手段と、前記剰余データのデータ長および前記入力データのデータ長に応じて、前記入力データを前記第１保持手段および前記第２保持手段に選択的に入力する入力選択手段とを備えた可変長データを入出力する先入れ先出しメモリ装置が提供される。その結果、先入れ先出しメモリ装置における入力選択手段の構成が簡単になり、入力選択手段の回路規模が削減される。これにより、先入れ先出しメモリ装置全体の回路規模を削減して、先入れ先出しメモリ装置をチップ上に実装する場合の回路面積を削減することにより、システムコストを削減することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施例のＦＩＦＯ装置の構成を示す図である。
【図２】本発明によるＦＩＦＯ装置に含まれる入力選択部の詳細な回路構成例を示す図である。
【図３】従来のＦＩＦＯ装置の第１の構成例を示す図である。
【図４】従来のＦＩＦＯ装置の第２の構成例を示す図である。
【符号の説明】
１０１  書き込みデータバス
１０２  読み出しデータバス
１０３  第１保持部
１０４  シフトイン選択器
１０５  シフトアウト選択器
１０６  オーバーフロー／アンダーフロー検出器
１０７  データトップポインタ
１０８  データトップポインタ増減器
１０９  入力バッファポインタ
１１０  入力バッファポインタ増減器
１１１  第２保持部
１１２  バッファ入力選択部
１１３  書き込み制御部
１１５  入力選択部
１１６  状態管理部
【図１】
0003976393.tif 000005
【図２】
0003976393.tif 000006
【図３】
0003976393.tif 000007
【図４】
0003976393.tif 000008