(57)【要約】 【目的】  簡単な構成でメモリ容量を効率よく使用可能なバッファメモリ及びそのアクセス方法を提供する。【構成】  それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、外部入力の読出アドレスに従って対応する記憶素子の記憶データを外部に読み出すと共に、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、を備えた。【選択図】  図１
2008210425.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、
前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、
外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、
外部入力の読出アドレスに従って対応する記憶素子の記憶データを外部に読み出すと共に、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、
を備えたことを特徴とするバッファメモリ。
【請求項２】
前記アドレスカウンタは外部入力の書込イネーブル信号に従ってカウントアップし、かつ外部入力の読出イネーブル信号に従ってカウントダウンすることを特徴とする請求項１記載のバッファメモリ。
【請求項３】
前記アドレスカウンタは前記外部入力の書込イネーブル信号と読出イネーブル信号とが同時に入力した場合はカウントしないことを特徴とする請求項２記載のバッファメモリ。
【請求項４】
前記アドレスカウンタのカウント値が所定閾値を超えたことによりバッファフル信号を出力するバッファフル検出手段を備えたことを特徴とする請求項３記載のバッファメモリ。
【請求項５】
前記アドレスカウンタのカウント値が前記外部入力の読出アドレス以下となったことによりバッファエンプティ−信号を出力するバッファエンプティ−検出手段を備えたことを特徴とする請求項３記載のバッファメモリ。
【請求項６】
前記アドレスカウンタのカウント値を外部設定可能に構成したことを特徴とする請求項３記載のバッファメモリ。
【請求項７】
それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、
前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、
外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、
外部入力の読出イネーブル信号に従って前記複数の記憶素子の記憶データを外部に読み出すと共に、外部入力の読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、
を備えたことを特徴とするバッファメモリ。
【請求項８】
それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、外部入力の読出アドレスに従って対応する記憶素子の記憶データを外部に読み出すと共に、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、を備えたバッファメモリのアクセス方法において、
データ書込側より前記アドレスカウンタに所定の書込アドレスを設定して後、複数の書込データを書き込み、データ読出側では、前記バッファメモリに一定の読出アドレスを加えることで、該一定の読出アドレスより複数のデータを読み出すこと
を特徴とするバッファメモリのアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はバッファメモリ及びそのアクセス方法に関し、ＡＴＭセル等の固定長データやイーサフレーム等の可変長データのバッファリングに適用して好適なるバッファメモリ及びそのアクセス方法に関する。
【背景技術】
【０００２】
従来より、ＡＴＭセル等の固定長データやイーサフレーム等の可変長データのバッファリングにはＦＩＦＯバッファが用いられる。固定長データのバッファアリングについては格納番地が予め分かっているため比較的容易に管理できるが、可変長データの場合は実際の格納番地で管理するか、あるいは可変長データを５３／６４ｏｃｔ等の一定サイズで細分化してこれらをシェアドバッファに記憶し、該シェアドバッファの使用／未使用エリアを管理する空きアドレス管理部と、細分化データがどのエリアに、どの順番で格納されているかを管理する個別のアドレス管理部とを設けて管理することが行われる。
【０００３】
図８，図９は従来技術を説明する図（１），（２）で、図８はシェアドバッファを使用してＡＴＭセル等の固定長データをバッファリング制御する場合を時系列に示している。時刻ｔ１において、シェアドバッファのアドレス０，１にはチャネルＢのセルデータＢ１，Ｂ２、アドレス２，６にはチャネルＤのセルデータＤ１，Ｄ２、そして、アドレス３〜５にはチャネルＡのセルデータＡ１〜Ａ３が順に記憶されており、それぞれの格納場所はチャネル（ＣＨ）Ａ，Ｂ，Ｄの各アドレス管理部に記憶されている。また、アドレス７は空いており、該アドレス７は空きアドレス管理部により管理されている。
【０００４】
今、時刻ｔ１でセルデータＡ１を読み出すと、時刻ｔ２ではアドレス３が空きに登録される。また、時刻ｔ２でセルデータＢ３の書込要求があると、時刻ｔ３では該セルデータＢ３が空きアドレス７に書き込まれ、該アドレス７はチャネルＢのアドレス管理部に登録される。以下、同様である。
【０００５】
図９にイーサフレーム等の可変長データを扱う場合を示す。可変長データの場合は、これを一定サイズで細分化すると共に、同サイズの細分化エリアを複数使用して格納している。管理のし易さを考えると、フレーム毎に連続したエリアを確保することが好ましいが、イーサフレームでは、フレーム長が細分化エリアの倍数とは限らないため、ほとんどの場合で無駄な領域が生じる。この点、エリアサイズを小さくすれば、無駄は減少するが、代わりに管理メモリが増えてしまい、管理処理も煩雑になる。
【０００６】
更に、細分化データＢ１〜Ｂ３からなる可変長フレームＢを読み出して未使用エリアが確保できても、次に格納するフレームＡのフレーム長（Ａ１〜Ａ４）の方が大きい場合には、そのエリアをそのまま利用できない。利用する場合は連続していないエリアを管理するか、あるいは他の格納が可能なエリアをサーチする必要があり、回路が複雑で且つ規模も増大する。
【０００７】
また、ほとんどのイーサフレームの場合は、正常に受信しないとフレーム長を判断（確定）できないプロトコルであるため、事前に必要な格納エリアを判断できないばかりか、最終のＦＣＳ検査がエラーとなった場合は、既に書き込んだエリアを開放する手段が必要になる。
【０００８】
なお、特許文献１にはデータ書込アドレスカウンタとデータ読出アドレスカウンタとを備える典型的なＦＩＦＯメモリが示されている。
【特許文献１】特開平９−１２８９５９
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このように、従来のＦｉＦｏメモリや、シェアドメモリを使用したバッファ制御では、特に可変長データのバッファリングが煩雑化し、アクセス制御回路の複雑化や大規模化を招いていた。
【００１０】
本発明は上記従来技術の問題点に鑑みなされたもので、その目的は、簡単な構成でメモリ容量を効率よく使用可能なバッファメモリ及びそのアクセス方法を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によるバッファメモリは、それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、外部入力の読出アドレスに従って対応する記憶素子の記憶データを外部に読み出すと共に、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、を備えたものである。
【００１２】
なお、上記それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子としては、それぞれが１ビットデータを記憶可能な複数のフリップフロップ素子や、それぞれが複数ビット（２ビット，８ビット等）のデータを記憶可能な複数のレジスタ素子等が考えられる。
【００１３】
本発明によれば、外部入力の読出アドレスからデータを読み出して後、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する構成により、任意アドレスからデータを読み出してもその上位アドレスの各データが下位アドレスに詰まった形で保存されるため、上位側には常に連続したデータ書込領域を確保でき、メモリを無駄なく使用できる。また、複数チャネル分のバーストデータを異なる領域にバッファリングする場合でも、所望チャネルの先頭アドレスのデータを連続して読み出すことで、当該バーストデータを容易に読み出せる。更に、データ読み出しアドレスを管理するためのリードアドレスカウンタを省略でき、回路を小型化できる。
【００１４】
本発明の第２の態様では、前記アドレスカウンタは外部入力の書込イネーブル信号に従ってカウントアップし、かつ外部入力の読出イネーブル信号に従ってカウントダウンするものである。
【００１５】
従って、このアドレスカウンタは、前回の書込データに続き、常に次のデータを隙間無く書き込むための書込アドレスを指すように自動的に管理され、よってメモリを無駄なく効率よく使用できる。また、このアドレスカウンタの指すアドレス以降が常に空き領域となるため、管理し易いバッファメモリを構成できる。また、入力のバーストデータをブロック分割する、又はしないに関わらず、該入力のバーストデータ分をバッファメモリの連続領域に保存することになるため、バーストデータの分割管理や格納アドレスのリンク管理等を行う必要がない。
【００１６】
本発明の第３の態様では、前記アドレスカウンタは前記外部入力の書込イネーブル信号と読出イネーブル信号とが同時に入力した場合はカウントしない。従って、データ読出中
にデータ書込要求が発生しても、該書込データを隙間無く、能率良くバッファリングできる。
【００１７】
本発明の第４の態様では、前記アドレスカウンタのカウント値が所定閾値を超えたことによりバッファフル信号を出力するバッファフル検出手段を備えた。従って、データ書き込みの際のバッファオーバフローを容易に回避できる。
【００１８】
本発明の第５の態様では、前記アドレスカウンタのカウント値が前記外部入力の読出アドレス以下となったことによりバッファエンプティ−信号を出力するバッファエンプティ−検出手段を備えた。
【００１９】
従って、バッファメモリの全記憶データを読み出した場合はもとより、複数チャネル分のバーストデータを異なる領域にバッファリングする場合でも、データ書込アドレスカウンタのカウント値が所望チャネルのバーストデータの先頭アドレス（読出アドレス）と等しくなった時点でバッファエンプティ−を検出できる。
【００２０】
本発明の第６の態様では、前記アドレスカウンタのカウント値を外部設定可能に構成したものである。これにより、データ書込後のバーストデータ（ブロックデータ）を廃棄するような場合には、アドレスカウンタのカウント値のみをその書込開始アドレスに再設定すれば良い。
【００２１】
本発明の第７の態様によるバッファメモリは、それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、外部入力の読出イネーブル信号に従って前記複数の記憶素子の記憶データを外部に読み出すと共に、外部入力の読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、を備えたものである。
【００２２】
本発明のバッファメモリは、その内部では上記第１の態様によるバッファメモリと同様に動作すると共に、外部より複数の記憶素子の記憶データを一斉に読み出し可能であるため、バッファメモリ内におけるデータの記憶態様を容易に把握可能となる。従って、上記第１の態様によるバッファメモリの記憶態様を管理するメモリとして利用できる。
【００２３】
本発明の第８の態様によるバッファメモリのアクセス方法は、それぞれが所定ビット数からなるデータを記憶可能な複数の記憶素子と、前記複数の記憶素子に対するデータの書込アドレスを管理するアドレスカウンタと、外部入力の書込データを前記アドレスカウンタの書込アドレスに対応する記憶素子に記憶して後、該アドレスカウンタをカウントアップする書込制御部と、外部入力の読出アドレスに従って対応する記憶素子の記憶データを外部に読み出すと共に、該読出アドレスよりも上位の各アドレスの記憶データをそれぞれの下位のアドレスの記憶素子にシフトさせて記憶する読出制御部と、を備えたバッファメモリのアクセス方法において、データ書込側より前記アドレスカウンタに所定の書込アドレスを設定して後、複数の書込データを書き込み、データ読出側では、前記バッファメモリに一定の読出アドレスを加えることで、該一定の読出アドレスより複数のデータを読み出すものである。従って、バッファメモリに対する外部からの簡単な読み書き制御によりバーストデータの効率よいバッファリングを行える。
【発明の効果】
【００２４】
以上述べた如く本発明によれば、簡単な構成でメモリ容量を効率よく使用可能となり、
特にＦＰＧＡやＡＳＩＣ等に内蔵するバッファメモリの小型化、高効率化に寄与するところが極めて大きい。
【発明を実施するための最良の形態】
【００２５】
以下、添付図面に従って本発明に好適なる実施の形態を詳細に説明する。なお、全図を通して同一符号は同一又は相当部分を示すものとする。
【００２６】
図１は実施の形態によるバッファメモリのブロック図で、例えば最大４ビット分のデータをバッファリングする場合を示している。図において、データ書込アドレスを管理するアップ／ダウンカウンタＣＴＲには、予めロードパルスＬＰによって任意のデータ書込アドレスＷＡＤ（例えば「０」）がセットされ、その後は、書込イネーブル信号ＷＥ＝１（論理１レベル）の入力によりクロック信号ＣＫの立ち上がりでカウントアップされ、又は読出イネーブル信号ＲＥ＝１の入力によりクロック信号ＣＫの立ち上がりでカウントダウンされる。但し、書込イネーブル信号ＷＥと読出イネーブル信号ＲＥとが同時に論理１レベルの場合はカウントアップもカウントダウンもしない。
【００２７】
デコーダＤＥＣ１はアドレスカウンタＣＴＲのカウント出力Ｑ＝「４」（ＭＡＸ）の場合はバッファフル信号ＢＦ＝１を出力する。一方、コンパレータＣＭＰ２は、アドレスカウンタＣＴＲの出力のデータ書込アドレスＷＡと外部入力のデータ読出アドレスＲＡとを比較し、ＷＡ≦ＲＡの場合は、データ書込アドレスＷＡがデータ読出アドレスＲＡと等しいか、又は下回ったことにより、バッファエンプティー信号ＢＥ＝１（論理１レベル）を出力する。
【００２８】
アドレスデコーダＡＤＥＣは、外部入力の書込イネーブル信号ＷＥ＝１のタイミングにカウンタＣＴＲのカウント出力Ｑ（即ち、データ書込アドレスＷＡ）をデコードして書込イネーブル信号ＷＥ０〜ＷＥ４の何れか一つを論理１レベルにする。１ビットデータの記憶素子であるフリップフロップＦＦ０〜ＦＦ３はＯＲゲート回路Ｏ０〜Ｏ３の出力が論理１レベルのタイミングに、セレクタＳＬ０〜ＳＬ３の各出力信号をクロック信号ＣＫの立ち上がりでセットする。
【００２９】
データマルチプレクサＤＭＸは外部入力の読出イネーブル信号ＲＥ＝１のタイミングに外部入力の読出アドレス信号ＲＡをデコードしてフリップフロップＦＦ０〜ＦＦ３の出力信号Ｑの何れか一つを選択し、読出データＲＤとして出力する。
【００３０】
更に、コンパレータＣＭＰ１は読出イネーブル信号ＲＥ＝１のタイミングに外部入力の読出アドレス信号ＲＡと各入力端子の設定値「０」〜「３」とを比較し、比較結果の信号Ｓ０〜Ｓ３を出力する。即ち、読出アドレスＲＡ＝「０」の場合は出力端子Ｓ０（０≧ＲＡ）〜Ｓ３（３≧ＲＡ）の各信号が論理１レベルとなり、また読出アドレスＲＡ＝「１」の場合は、出力端子Ｓ０（０≧ＲＡ）の信号のみが論理０レベルになると共に、出力端子Ｓ１（１≧ＲＡ）〜Ｓ３（３≧ＲＡ）の各信号が論理１レベルとなる。同様にして、読出アドレスＲＡ＝「２」の場合は出力端子Ｓ２，Ｓ３の各信号が論理１レベルとなり、また読出アドレスＲＡ＝「３」の場合は出力端子Ｓ３の信号のみが論理１レベルとなる。
【００３１】
セレクタＳＬ０はコンパレータＣＭＰ１の出力信号Ｓ０が論理０レベルの場合は外部からの書込データＷＤを選択して出力し、また論理１レベルの場合は上位のフリップフロップＦＦ１の出力データＱを選択して出力する。他のセレクタＳＬ１〜ＳＬ３についても同様である。
【００３２】
なお、ＡＮＤゲート回路Ａ５を設け、外部からアドレス読出イネーブル信号ＡＲＥを加えることで、アドレスカウンタＣＴＲの現時点のデータ書込アドレスＷＡを外部に読み出
せるようになっている。これにより、データ読出側では適宜のタイミングにデータ書込アドレスＷＡを外部に読み出すことで、自己のデータ読出アドレスＲＡと比較し、バッファから読み出すべき残りのデータがどれだけあるのかを容易に計算できる。その他の構成については以下の説明により一層明らかとなる。
【００３３】
図２，図３は実施の形態によるバッファメモリの動作タイミングチャート（１），（２）で、図２（Ａ）は一連の書込データ「ａ」〜「ｄ」と共に書込イネーブル信号ＷＥ＝１が入力した場合を示している。この時、読出イネーブル信号ＲＥ＝０により、コンパレータＣＭＰ１の全出力Ｓ０〜Ｓ３＝０（論理０レベル）であり、かつデータマルチプレクサＤＭＸの出力の読出データＲＤ＝０である。
【００３４】
今、アドレスカウンタＣＴＲの初期書込アドレスＷＡ＝「０」とすると、アドレスデコーダＡＤＥＣの出力の書込イネーブル信号ＷＥ０＝１により、最初の書込データ「ａ」はその後のクロック信号ＣＫの立ち上がでフリップフロップＦＦ０にセットされ、かつカウンタＣＴＲのカウント値Ｑ＝「１」となる。２番目の書込データ「ｂ」は、アドレスデコーダＡＤＥＣの出力の書込イネーブル信号ＷＥ１＝１により、クロック信号ＣＫの立ち上がりでＦＦ１にセットされ、かつカウンタＣＴＲのカウント値Ｑ＝「２」となる。以下、同様にして、３番目の書込データ「ｃ」はＦＦ２にセットされ、また４番目の書込データ「ｄ」はＦＦ３にセットされる。この時点でカウンタＣＴＲのカウント値Ｑ＝「４」（最大）となると共に、これによりバッファフル信号＝１となり、それ以上の書込データは入力されない。こうして、入力のバーストデータ「ａ」〜「ｄ」は連続する記憶領域ＦＦ０〜ＦＦ３に記憶される。
【００３５】
なお、この例では、書込データ「ａ」〜「ｄ」と書込イネーブル信号ＷＥ＝１とが連続して入力したが、これに限らない。これらは間欠的（飛び飛びのタイミング）に入力しても良い。
【００３６】
図２（Ｂ）はバッファメモリから一連のデータを読み出す場合を示している。この時、書込イネーブル信号ＷＥ＝０により、アドレスデコーダＡＤＥＣの出力信号ＷＥ０〜ＷＥ４＝０である。この状態で、外部入力の読出アドレスＲＡ＝「１」（一定）と共に、読出イネーブル信号ＲＥ＝１が入力すると、データマルチプレクサＤＭＸはフリップフロップＦＦ１の出力Ｑ＝「ｂ」を選択して読出データＲＤ＝「ｂ」を出力する。
【００３７】
一方、コンパレータＣＭＰ１はＡＮＤゲート回路Ａ４の出力の読出アドレスＲＡ＝「１」を端子Ｂに入力し、この値「１」と各所定値「０」〜「３」と比較することで、各比較結果のシフトイネーブル信号Ｓ０〜Ｓ３を出力する。この例では、読出アドレスＲＡ＝「１」により、比較結果のシフトイネーブル信号Ｓ０＝０で、かつその上位のシフトイネーブル信号Ｓ１〜Ｓ３＝１となる。これにより、続くクロック信号ＣＫの立ち上がりでは、ＦＦ２，ＦＦ１にそれぞれ上位のＦＦ３，ＦＦ２の各出力信号「ｄ」，「ｃ」がセット（シフト）され、かつ最上位のＦＦ３には信号「０」がセット（シフトイン）される。一方、シフトイネーブル信号Ｓ０＝０によりフリップフロップＦＦ０にはいかなる信号もセットされず、よってその出力信号Ｑ＝「ａ」を保持する。
【００３８】
同様にして、次の読出サイクルではＦＦ１の出力信号Ｑ＝「ｃ」が読み出されると共に、続くクロック信号ＣＫの立ち上がりにより、ＦＦ２，ＦＦ１には上位ＦＦ３，ＦＦ２の各出力信号「０」，「ｄ」がセット（シフト）され、かつ最上位のＦＦ３には「０」がセットされる。更に、次の読出サイクルではＦＦ１からデータ「ｄ」が読み出され、かつ続くクロック信号ＣＫの立ち上がりにより、ＦＦ２，ＦＦ１には上位ＦＦ３，ＦＦ２の各出力信号「０」，「０」がセット（シフト）され、かつ最上位のＦＦ３には「０」がセットされる。こうして、バッファメモリの一部の記憶データ「ｂ」〜「ｄ」は連続する記憶領
域ＦＦ１〜ＦＦ３より連続して読み出された。また、この時点ではアドレスカウンタＣＴＲの書込アドレスＷＡと外部入力の読出アドレスＲＡとが等しくなったことによりバッファエンプティー信号ＢＥ＝１となる。
【００３９】
なお、この例では、読出イネーブル信号ＲＥ＝１が連続して入力したが、これに限らない。これらは間欠的（飛び飛びのタイミング）に入力しても良い。
【００４０】
図３はデータの読み出しと同時にデータの書き込みを行う場合を示している。この例では、予めフリップフロップＦＦ０〜ＦＦ３にはデータ「ａ」〜「ｄ」が書き込まれており、かつ次のデータの書込アドレスＷＡ＝「４」であったとする。この状態で、まず、バッファメモリの読出アドレスＲＡ＝「１」（一定）から上記同様にして一連のデータ「ｂ」〜「ｄ」を読み出す。最初の時点は、外部入力の書込イネーブル信号ＷＥ＝０によりアドレスデコーダＡＤＥＣの出力信号ＷＥ０〜ＷＥ４＝０である。
【００４１】
この状態で、外部より読出アドレス＝「１」と共に、読出イネーブル信号ＲＥ＝１が入力すると、データマルチプレクサＤＭＸはフリップフロップＦＦ１の出力Ｑ＝「ｂ」を選択して読出データＲＤ＝「ｂ」を出力する。更に、コンパレータＣＭＰ１はＡＮＤゲート回路Ａ４の出力の読出アドレスＲＡ＝「１」と各所定値「０」〜「３」とを比較して、比較結果のシフトイネーブル信号Ｓ０＝０と、シフトイネーブル信号Ｓ１〜Ｓ３＝１とを出力し、これにより、続くクロック信号ＣＫの立ち上がりでは、フリップフロップＦＦ３，ＦＦ２の各出力信号「ｄ」．「ｃ」がそれぞれ一つ下位のフリップフロップＦＦ２，ＦＦ１にシフトされ、かつ最上位のＦＦ３には信号「０」がセットされる。一方、最下位のＦＦ０にはいかなる信号もセットされず、よってその出力信号Ｑ＝「ａ」を保持する。また、この場合のアドレスカウンタＣＴＲは読出イネーブル信号ＲＥ＝１により続くクロック信号ＣＫの立ち上がりでカウントダウンされ、次の書込アドレスＷＡ＝「３」となる。以上は上記図２（Ｂ）についての読み出し動作と同様である。
【００４２】
次に、外部より書込データＷＤ＝「Ｅ」と共に、書込イネーブル信号ＷＥ＝１が入力すると、上記のデータ読出動作に重ねて、データの書込動作が並行して行われる。即ち、アドレスデコーダＡＤＥＣはその時点の書込アドレスＷＡ＝「３」により書込イネーブル信号ＷＥ３＝１を出力する。但し、この書込イネーブル信号ＷＥ３＝１は、バッファメモリからのデータ読出には影響を与えないから、データマルチプレクサＤＭＸからはＦＦ１の出力データＱ＝「ｃ」が読み出される。
【００４３】
一方、コンパレータＣＭＰ１は、上記同様にして比較結果のシフトイネーブル信号Ｓ０＝０と、シフトイネーブル信号Ｓ１〜Ｓ３＝１とを出力するが、このうちのシフトイネーブル信号Ｓ２＝１についてはＡＮＤゲート回路Ａ２の入力において上位の書込イネーブル信号ＷＥ３＝１の反転信号によって阻止されるため、その出力は０レベルとなり、このためセレクタＳＬ２では、上位のＦＦ３の出力信号「０」を選択する代わりに、入力の書込データＷＤ＝「Ｅ」を選択・出力する。
【００４４】
一方、セレクタＳＬ１では上位ＦＦ２の出力信号Ｑ＝「ｄ」を選択し、また最上位のセレクタＳＬ３では設定信号「０」を選択する。その結果、続くクロック信号の立ち上がりでは、ＦＦ３〜ＦＦ１に各信号「０」，「Ｅ」，「ｄ」がセット（シフト）される。また、この時点では書込イネーブル信号ＷＥ＝１で、かつ読出イネーブル信号ＲＥ＝１であることによりカウンタＣＴＲのカウント出力Ｑ（書込アドレスＷＡ）に変化は無く、よって次回のデータ書込アドレスＷＡ＝「３」である。
【００４５】
同様にして、次のバッファサイクルではバッファメモリから読出データＲＤ＝「ｄ」が読み出され、その後のクロック信号ＣＫの立ち上がりで、フリップフロップＦＦ３〜ＦＦ
１はそれぞれ信号「０」，「Ｆ」，「Ｅ」を保持する。また、次回のデータ書込アドレスＷＡ＝「３」のままである。
【００４６】
更に、次のバッファサイクルでは読出イネーブル信号ＲＥ＝０によりバッファメモリからのデータ読み出しは行われない、一方、書込イネーブル信号ＷＥ＝１により最上位のＦＦ３にはデータ「Ｆ」が書き込まれ、かつカウタＣＴＲのカウント値Ｑ＝「４」になる。以上の基本的動作を基に、以下に本発明のバッファメモリ（シフトメモリ）を使用した幾つかのバッファメモリシステムの動作例を説明する。
【００４７】
図４は実施の形態によるバッファメモリの動作説明図で、本発明による１６ビット分のシフトメモリを使用したバッファシステムの幾つかの典型的な動作例を示している。図４（Ａ）は複数チャネル分の各可変長データ（イーサフレーム等）をバッファリングする動作を時系列に示しており、時刻ｔ１において、バッファメモリにはチャネルＡ〜Ｃについての各フレームデータがそれぞれ連続した領域に記憶されている。
【００４８】
このようなデータの書込は、図示しないが、予めアドレスカウンタＣＴＲに初期アドレス＝「０」を設定して後、チャネルＡ〜Ｃの各フレームデータをフレーム発生順（フレーム受信順等）に書き込むことで自動的に行われる。即ち、最初にチャネルＡの各書込データ「Ａ１」〜「Ａ５」をアドレス「０」〜「４」に格納し、次にチャネルＢの各書込データ「Ｂ１」〜「Ｂ３」を引き続きアドレス「５」〜「７」に格納し、更にチャネルＣの各書込データ「Ｃ１」〜「Ｃ４」をアドレス「８」〜「１１」に格納する。この時点で、書込アドレスＷＡ＝「１２」を指している。
【００４９】
なお、ＡＴＭセル等の固定長データを扱う場合には、セルＡ〜Ｃの各固定長データを例えば「５３」番地置きの飛び飛び書込開始番地から書き始めることが可能である。
【００５０】
今、チャネルＢの一連の記憶データを読み出したい場合には、先頭の読出アドレスＲＡ＝「５」（一定）として読出イネーブル信号ＲＥを３サイクル分入力する。これにより、時刻ｔ１では先頭のデータ「Ｂ１」を読み出すと共に、その上位アドレス「６」〜「１５」の各記憶データを下位アドレスにシフトする。同様にして、時刻ｔ２では同一のアドレス「５」から２番目のデータ「Ｂ２」を読み出すと共に、その上位アドレス「６」〜「１５」の各記憶データを下位アドレスにシフトする。更に、時刻ｔ３では同一のアドレス「５」から３番目のデータ「Ｂ３」を読み出すと共に、その上位アドレス「６」〜「１５」の各記憶データを下位アドレスにシフトする。こうして、３サイクル分のデータ読み出し、処理を終了する。これにより、時刻ｔ４では、チャネルＢのフレームデータが全て読み出されたと共に、その上位アドレスにはチャネルＣのデータがアドレスを詰めて格納されている。従って、単一のバッファ（シフト）メモリにより複数チャネル分のＦｉＦｏバッファを効率よく構成できる。
【００５１】
なお、この場合は、予めデータ書込側から各フレームＡ〜Ｃの書込先頭アドレス（及び必要な場合は書込データ数）の情報を別途受信側に知らせておく。書込データ数については、他にも、データ書込側で最後のチャネルデータに所定の識別符号（ＥＯＰ等）を付加し、これをデータ読出側で認識する方法、又はデータ読出側で読出フレームのＦＣＳ検査を行い、検査ＯＫとなったタイミングでフレーム終了と判断し、データ読出を終了する方法、等を利用できる。また、最近のメモリはパリティーを含む９ビット単位でのデータ格納が主流なので、そのビットをＥＮＢ＝「１」に置き換えて最終データ（ＥＯＰP）の場所はＥＮＢ＝「０」とする方法もある。この時パリティーとしての利用が出来なくなるが、イーサフレームはＦＣＳでデータの保証ができるので、読み出し側で検査する方法で代用することも可能である。
【００５２】
上記何れの方法にしても、各チャネルデータについての必要最小限の格納情報を受信側に知らせることで、チャネルＢについての次回の受信フレームデータＢ４〜Ｂ７（不図示）等は、その時点の書込開始アドレスＷＡ（例えば、チャネルデータＣ４の次の書込アドレス）から書き込み開始され、その後、該書込開始アドレスから読み出される。
【００５３】
このように、本実施の形態によれば、別段の煩雑なアドレス管理を行わなくても、単一のバッファメモリ（シフトメモリ）を複数のチャネル（ユーザ等）によりＦｉＦｏバッファとして効率よくシェア可能である。
【００５４】
図４（Ｂ）はチャネルデータの書き込みと読み出しとが時間的にオーバラップする場合を示している。時刻ｔ１において、カウンタＣＴＲのデータ書込アドレスＷＡはアドレス「１１」へのデータ書込終了後に＋１されてアドレス「１２」を指しているものとする。この状態で、アドレス「５」からチャネルＢの先頭データ「Ｂ１」を読み出すと共に、その上位アドレス「６」〜「１５」の各記憶データを下位アドレスにシフトしようとするが、アドレスデコーダＡＤＥＣの書込イネーブル信号ＷＥ１２＝１により一つ下位のセレクタＳＬｌ１では、上位ＦＦ１２の出力データＱに代えて、外部入力の書込データＷＤ＝「Ｄ１」の方を選択・出力するため、書込アドレスＷＡ＝「１１」には書込データ「Ｄ１」が書き込まれる。
【００５５】
同様にして、時刻ｔ２では読出アドレス「５」から２番目のチャネルデータ「Ｂ２」が読み出されると共に、続くクロック信号ＣＫの立ち上がりで外部入力の書込データ「Ｄ２」がアドレス「１１」に書き込まれる。更に、時刻ｔ３では読出アドレス「５」から３番目のチャネルデータ「Ｂ３」が読み出されると共に、続くクロック信号ＣＫの立ち上がりで外部入力の書込データ「Ｄ３」がアドレス「１１」に書き込まれる。こうして、有限な容量のシフトメモリが、その空き領域が少なくなったような状態でも、複数チャネルのデータによって効率よく利用される。
【００５６】
図５は実施の形態によるシェアドメモリの動作説明図である。時刻ｔ１において、シェアドバッファのアドレス０，１にはチャネルＢのデータＢ１，Ｂ２、アドレス２，６にはチャネルＤのデータＤ１，Ｄ２、そして、アドレス３〜５にはチャネルＡのデータＡ１〜Ａ３が順に記憶されており、それぞれの格納場所はチャネル（ＣＨ）Ａ，Ｂ，Ｄの各アドレス管理部に記憶されている。また、アドレス７は空いており、該アドレス７は空きアドレス管理部により管理されている。
【００５７】
なお、上記チャネルデータＡ１〜Ａ３等は、それぞれが固定長の独立したセルデータＡ１〜Ａ３であっても良いし、又はチャネルＡの可変長フレームデータＡを細分化した各ブロックデータＡ１〜Ａ３であっても良い。
【００５８】
今、時刻ｔ１でアドレス「３」のデータＡ１を読み出すと、続くクロック信号ＣＫの立ち上がりではアドレス「４」〜「７」のデータをそれぞれ一つ下位アドレス「３」〜「６」にシフトすると共に、時刻ｔ２では、各チャネルＡ〜Ｄの各アドレス管理部において、前記データＡ１の読出アドレス「３」を境にして、変更が必要となる格納アドレスの更新を行う。即ち、チャネルＡアドレス管理部から格納アドレス「５」を削除し、チャネルＤアドレス管理部の格納アドレス「６」を「５」に更新し、そして、書込アドレス管理部の書込開始アドレス（即ち、空き領域の先頭アドレス）を［７］から「６」に更新する。
【００５９】
また、時刻ｔ３でアドレス「０」のデータＢ１を読み出すと同時に、新たなデータＢ３の書込要求があると、続くクロック信号ＣＫの立ち上がりではアドレス「１」〜「７」のデータをそれぞれ一つ下位アドレス「０」〜「６」にシフトすると共に、時刻ｔ４では、各チャネルＡ〜Ｄの各アドレス管理部において、前記データＢ１の読出アドレス「０」を
基準にして、変更が必要となる格納アドレスの更新を行う。即ち、チャネルＡアドレス管理部の格納アドレス「３」，「４」を「２」，「３」に更新し、またチャネルＢアドレス管理部の格納アドレス「０」を削除すると共に、格納アドレス「１」を「０」に更新し、新たに格納アドレス「５」を書き加える。更に、チャネルＤアドレス管理部の格納アドレス「２」，「５」を「１」，「４」に更新する。一方、空きアドレス管理部についてはチャネルデータの書き込みと読み出しとが同時に発生したため、変更が無い。
【００６０】
ところで、上記図５のチャネルアドレス管理部として本発明のシフトメモリを用いると、シェアドメモリの記憶管理が大幅に簡単になる。図６にこの用途に適した他の実施の形態によるバッファメモリのブロック図を示す。図６のバッファメモリは、上記図１のバッファメモリからデータマルチプレクサＤＭＸを削除した形になっており、代わりに、外部入力の読出イネーブル信号ＲＥによりＦＦ０〜ＦＦ３の記憶データを外部に読み出し可能となっている。なお、ＡＮＤゲート回路Ａ６〜Ａ９は省略しても良い。また、デーコーダＤＥＣ１やコンパレータＣＭＰ２等の付属回路も省略可能である。本実施の形態によるバッファメモリは基本的には上記図１のバッファメモリと同様に動作するため、該図１のバッファメモリにおけるデータの記憶態様をモニタし及び管理する用途に使用して好適である。
【００６１】
図７に他の実施の形態によるシェアドメモリの動作説明図を示す。図において、上記図１のタイプのバッファメモリを１０、図６のタイプのバッファメモリを２１，２２とする。また、バッファメモリ１０におけるの各チャネルデータの記憶動作については上記図５で述べたものと同様である。一方、チャネルＡ，Ｂについての記憶データのアドレス管理をバッファメモリ（シフトメモリ）２１，２２を用いて行う。図示しないが、チャネルＤのデータのアドレス管理についても同様に行える。
【００６２】
係る構成により、バッファメモリ１０にチャネルＡのデータＡ１〜Ａ３を書き込むのに同期（連動）して、アドレス管理メモリ２１にはビット「１」を書き込む。その結果、アドレス管理メモリ２１では、バッファメモリ１０におけるチャネルＡの記憶データＡ１〜Ａ３と同じアドレスにビット「１」が書き込まれる。同様にして、アドレス管理メモリ２２では、バッファメモリ１０におけるチャネルＢの記憶データＢ１，Ｂ２と同じアドレスにビット「１」が書き込まれる。
【００６３】
これらのアドレス管理様ビット「１」は、その後のバッファメモリ１０に対するチャネルデータの読み出し動作に同期（連動）して下位アドレスにシフトされる。従って、アドレス管理メモリ２１，２２の記憶データを適宜のタイミングに外部より読み出すことで、バッファメモリ１０におけるチャネルデータＡ，Ｂの記憶態様を容易に把握できる。例えば、読み出しデータを若番からみて始めにビット「１」が立っているアドレスが、チャネルデータの先頭格納アドレスとして容易に認識できる。しかも、アドレス管理メモリ２１，２２における記憶データ「１」の更新は各メモリ内で自動的に行われるため、外部の管理装置の処理負担が大幅に簡略化される。
【００６４】
なお、アドレス管理メモリ２１の記憶素子として複数ビットを記憶可能なレジスタを用いても良い。こすれば、バッファメモリ１０における各チャネルデータＡ〜Ｄの記憶管理を単一のアドレス管理メモリ２１によりチャネルＡ〜Ｄ対応の異なる符号ビット（ａ〜ｄ等）を用いて管理できる。この場合は、他のアドレス管理メモリ２２等を省略できる。
【００６５】
また、上記実施の形態では記憶素子として単一ビットを記憶可能なフリップフロップを使用したが、これに限らない。複数ビットを記憶可能なレジスタを使用しても良い。
【００６６】
また、上記本発明に好適なる実施の形態を述べたが、本発明思想を逸脱しない範囲内で
各部の構成、制御、処理及びこれらの組合せの様々な変更が行えることは言うまでも無い。
【図面の簡単な説明】
【００６７】
【図１】実施の形態によるバッファメモリのブロック図である。
【図２】実施の形態によるバッファメモリの動作タイミングチャート（１）である。
【図３】実施の形態によるバッファメモリの動作タイミングチャート（２）である。
【図４】実施の形態によるバッファメモリの動作説明図である。
【図５】実施の形態によるシェアドメモリの動作説明図である。
【図６】他の実施の形態によるバッファメモリのブロック図である。
【図７】他の実施の形態によるシェアドメモリの動作説明図である。
【図８】従来技術を説明する図（１）である。
【図９】従来技術を説明する図（２）である。
【符号の説明】
【００６８】
ＡＤＥＣ  アドレスデコーダ
ＣＴＲ  アップ／ダウンカウンタ
ＣＭＰ１，ＣＭＰ２  コンパレータ
ＤＥＣ１  デコーダ
ＤＭＸ  データマルチプレクサ
ＦＦ０〜ＦＦ３  フリップフロップ
ＳＬ０〜ＳＬ３  セレクタ
【図１】
2008210425.tif 000003
【図２】
2008210425.tif 000004
【図３】
2008210425.tif 000005
【図４】
2008210425.tif 000006
【図５】
2008210425.tif 000007
【図６】
2008210425.tif 000008
【図７】
2008210425.tif 000009
【図８】
2008210425.tif 000010
【図９】
2008210425.tif 000011