(57)【要約】【課題】端数データの取り扱いを容易にすることが可能なデータ幅可変ＦＩＦＯメモリ、ＦＩＦＯメモリ及び記憶装置を提供する。【解決手段】本発明の一実施形態に係るデータ幅可変ＦＩＦＯメモリ１は、データの読み書きが行われるデータ保持部Ａと、該データ保持部Ａにデータが書き込まれたときに書込開始位置を示すライトポインタＷＰＴＲが移動し、該データ保持部Ａに書き込まれているデータが読み出されたときに読出開始位置を示すリードポインタＲＰＴＲが移動するように構成され、ライトポインタＷＰＴＲとリードポインタＲＰＴＲとの差分から求めた前記データ保持部Ａにおける有効バッファサイズＯＵＴ−ＶＳＩＺＥ及び空きバッファサイズＩＮ−ＲＳＩＺＥのうち少なくとも何れか一方を生成するバッファサイズ生成手段を有することを特徴とする。【選択図】図１
2008083827.tif 000002
【特許請求の範囲】
【請求項１】
データの読み書きが行われるデータ保持部と、該データ保持部にデータが書き込まれたときに書込開始位置を示すライトポインタが移動し、該データ保持部に書き込まれているデータが読み出されたときに読出開始位置を示すリードポインタが移動するように構成され、
前記ライトポインタと前記リードポインタとの差分から求めた前記データ保持部における有効バッファサイズ及び空きバッファサイズのうち少なくとも何れか一方を生成するバッファサイズ生成手段を有することを特徴とする、
データ幅可変ＦＩＦＯメモリ。
【請求項２】
前記データ保持部に対してデータの書き込みが終了したことを示す最終フラグをセットする最終フラグ生成手段と、
前記最終フラグがセットされ、且つ前記データ保持部に書き込まれている残データのサイズが決められた規定読出サイズよりも小さくなったときに、前記データ保持部に書き込まれているデータを読み出す読出サイズの設定情報を切り替えるための切替信号を生成する切替信号生成手段と、
前記切替信号に基づいて前記規定読出サイズから前記残データの読出サイズに前記設定情報を切り替える設定情報生成手段と、
を更に備える、請求項１に記載のデータ幅可変ＦＩＦＯメモリ。
【請求項３】
前記有効バッファサイズが前記読出サイズ以上であるときに読出許可信号を生成する読出許可信号生成手段と、
前記読出許可信号に応じて、読出処理を開始するための読出タイミング信号を生成する読出タイミング信号生成手段と、
を更に備え、
前記読出タイミング信号に基づいて、前記リードポインタが前記読出サイズ分移動するように構成されていることを特徴とする、
請求項２に記載のデータ幅可変ＦＩＦＯメモリ。
【請求項４】
前記空きバッファサイズが前記データ保持部にデータを書き込む書込サイズ以上であるときに書込許可信号を生成する書込許可信号生成手段と、
前記書込許可信号に応じて、書込処理を開始するための書込タイミング信号を生成する書込タイミング信号生成手段と、
を更に備え、
前記書込タイミング信号に基づいて、前記ライトポインタが前記書込サイズ分移動するように構成されていることを特徴とする、
請求項２又は３に記載のデータ幅可変ＦＩＦＯメモリ。
【請求項５】
読み書きされるデータのサイズが固定されているデータ幅固定ＦＩＦＯメモリと、
前記データ幅固定ＦＩＦＯメモリの入力側及び出力側の少なくとも出力側に設けられた請求項１〜４の何れか１項に記載のデータ幅可変ＦＩＦＯメモリと、
を備える、ＦＩＦＯメモリ。
【請求項６】
読み書きされるデータのサイズが固定されているデータ幅固定ＦＩＦＯメモリと、
前記データ幅固定ＦＩＦＯメモリの入力側及び出力側の少なくとも入力側に設けられた請求項１〜４の何れか１項に記載のデータ幅可変ＦＩＦＯメモリと、
と備える、ＦＩＦＯメモリ。
【請求項７】
請求項１〜４の何れか１項に記載のデータ幅可変ＦＩＦＯメモリと、
前記データ幅可変ＦＩＦＯメモリに接続されたバスマスタコントローラと、
を備える、記憶装置。
【請求項８】
請求項５又は６に記載のＦＩＦＯメモリと、
前記ＦＩＦＯメモリに接続されたバスマスタコントローラと、
を備える、記憶装置。
【請求項９】
前記バスマスタコントローラは、
転送アドレス、転送サイズ、転送方向及びバス制約により、トランザクション単位のアドレス、データ及びコマンドを生成すると共に、バスデータ単位のデータサイズを生成するトランザクション生成部を有し、
前記バスデータ単位のデータサイズに基づいて前記データ幅可変ＦＩＦＯメモリ又は前記ＦＩＦＯメモリとデータアクセスを行う、
請求項７又は８に記載の記憶装置。
【請求項１０】
前記トランザクション生成部は、
前記データ幅可変ＦＩＦＯメモリ又は前記ＦＩＦＯメモリへの書込アクセスのための書込用トランザクション生成部と、
前記データ幅可変ＦＩＦＯメモリ又は前記ＦＩＦＯメモリからの読出アクセスのための読出用トランザクション生成部と、
を含む、
請求項９に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ幅可変ＦＩＦＯメモリ、このデータ幅可変ＦＩＦＯメモリを備えたＦＩＦＯメモリ、及び、これらのデータ幅可変ＦＩＦＯメモリ又はＦＩＦＯメモリを備えた記憶装置に関するものである。
【背景技術】
【０００２】
例えば、コンピュータと記憶装置との間でデータ転送を行うためのインターフェースとして、ＡＴＡ（AT Attachment）が知られている。ＡＴＡでは、データが２バイト単位で転送される。このように、データを固定のデータサイズ単位で転送する記憶装置として、特許文献１には、データをバイト単位で入出力することが可能なＦＩＦＯメモリが記載されている。
【特許文献１】特開２００２−５０１７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一般に、ＦＩＦＯメモリでは、固定のデータサイズ単位（例えば、８バイト単位）でデータを入力及び出力することが想定されている。一方、ＡＴＡなどの実際の装置でデータを扱う場合は、ＡＴＡ側は固定データサイズ単位（２バイト）、コンピュータ内部側では（メモリや内部バスなどの内部構成に依存するが）任意のデータサイズ単位（例えば、１〜８バイト単位）でデータ転送が行われることが多く見受けられる。そのため、ＦＩＦＯメモリをコンピュータからＡＴＡへの転送の間に用いた場合、コンピュータ側からは任意のデータサイズ単位でＦＩＦＯメモリへデータが入力されるのに対して、ＡＴＡ側に対しては固定のデータサイズ単位でＦＩＦＯメモリからデータが出力されることとなる。その結果、残データが固定のデータサイズよりも小さいデータサイズの端数データとなると、残データを出力することができなくなり、ＦＩＦＯメモリの内部に残データが残留してしまう。
【０００４】
この点に関し、残データが固定のデータサイズとなるようにダミーデータを入力することが考えられる。しかしながら、従来のＦＩＦＯメモリでは、特許文献１に記載のＦＩＦＯメモリのように、内部のステータスを示す信号が、データが満杯であることを示すＦＵＬＬ信号とデータが空であることを示すＥＭＰＴＹ信号とであるので、残データのデータサイズを知ることができず、上記の課題を解決することができなかった。
【０００５】
そこで、本発明は上記問題点を解決するためになされたもので、端数データの取り扱いを容易にすることが可能なデータ幅可変ＦＩＦＯメモリ、ＦＩＦＯメモリ及び記憶装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明のデータ幅可変ＦＩＦＯメモリは、データの読み書きが行われるデータ保持部と、該データ保持部にデータが書き込まれたときに書込開始位置を示すライトポインタが移動し、該データ保持部に書き込まれているデータが読み出されたときに読出開始位置を示すリードポインタが移動するように構成され、ライトポインタとリードポインタとの差分から求めたデータ保持部における有効バッファサイズ及び空きバッファサイズのうち少なくとも何れか一方を生成するバッファサイズ生成手段を有することを特徴とする。
【０００７】
本発明のＦＩＦＯメモリは、読み書きされるデータのサイズが固定されているデータ幅固定ＦＩＦＯメモリと、データ幅固定ＦＩＦＯメモリの入力側、又は出力側、又は入力側と出力側とに設けられた上記のデータ幅可変ＦＩＦＯメモリとを備える。
【０００８】
本発明の記憶装置は、上記したデータ幅可変ＦＩＦＯメモリ又は上記したＦＩＦＯメモリと、バスマスタコントローラとを備える。
【発明の効果】
【０００９】
以上詳述したように、本発明によれば、端数データの取り扱いを容易にすることが可能なデータ幅可変ＦＩＦＯメモリ、ＦＩＦＯメモリ及び記憶装置が得られる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、各図面において同一又は相当の部分に対しては同一の符号を附すこととする。
［第１の実施形態］
【００１１】
図１は、本発明の第１の実施形態に係るデータ幅可変ＦＩＦＯメモリの機能を模式的に示す図である。図１に示すように、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１の内部は、リングバッファで構成されている。
【００１２】
データ幅可変ＦＩＦＯメモリ１では、データ保持部Ａがリング状に構成されており、ライトポインタＷＰＴＲ及びリードポインタＲＰＴＲの２つのポインタによりデータの管理が行われる。ライトポインタＷＰＴＲは、次のデータ書込開始位置を示しており、データが書き込まれると書き込まれたデータサイズだけポインタ位置を移動する（図１における矢印で示す時計回り（右回り）に移動）。同様に、リードポインタＲＰＴＲは、次のデータ読出開始位置を示しており、データが読み出されると読み出されたデータサイズだけポインタ位置を移動する。
【００１３】
データ保持部Ａにおいて、リードポインタＲＰＴＲから始まりライトポインタＷＰＴＲで終わるデータ領域Ａ１が、データが書き込まれている領域、すなわち有効データ領域である。また、データ保持部Ａにおいて、ライトポインタＷＰＴＲから始まりリードポインタＲＰＴＲで終わるデータ領域Ａ２が、データが書き込まれていない（空の）領域、すなわち空き（無効）データ領域である。
【００１４】
データ幅可変ＦＩＦＯメモリ１は、入力データポートｉｎ−ｄａｔａ、書込サイズポートｉｎ−ｓｉｚｅ、書込アクセスポートｉｎ−ｒｅｑ、書込許可ポートｉｎ−ｒｄｙ、空きバッファサイズポートｉｎ−ｒｓｉｚｅ、出力データポートｏｕｔ−ｄａｔａ、読出サイズポートｏｕｔ−ｓｉｚｅ、読出アクセスポートｏｕｔ−ｒｄｙ、読出許可ポートｏｕｔ−ｒｅｑ及び有効バッファサイズポートｏｕｔ−ｖｓｉｚｅを備えている。なお、以下では、各ポートに入出力される信号を各ポートに対応する大文字の符号にて表することとする。
【００１５】
データ幅可変ＦＩＦＯメモリ１には、１バイト〜８バイト（０ｘ１〜０ｘ８）の任意サイズの入力データＩＮ−ＤＡＴＡ［０：６３］を書き込むことが可能である。書込サイズ信号ＩＮ−ＳＩＺＥ［３：０］は書込サイズを示しており、書込サイズ信号ＩＮ−ＳＩＺＥとしては１バイト〜８バイトの任意の書込サイズが指定可能である。なお、本実施形態では、左詰データ（０ｂｉｔ側から順に詰めたデータ）を扱う場合を例示することとする。同様に、１バイト〜８バイトの任意サイズの出力データＯＵＴ−ＤＡＴＡ［０：６３］を読み出すことが可能である。読出サイズ信号ＯＵＴ−ＳＩＺＥ［３：０］は読出サイズを示しており、読出サイズ信号ＯＵＴ−ＳＩＺＥとしては１バイト〜８バイトの任意の出力データサイズが指定可能である。
【００１６】
また、データ幅可変ＦＩＦＯメモリ１には、一般的なＦＩＦＯメモリとは異なり、Ｗｒｉｔｅ信号の代わりに書込アクセス信号ＩＮ−ＲＥＱが用いられ、Ｒｅａｄ信号の代わりに読出アクセス信号ＯＵＴ−ＲＤＹが用いられる。
【００１７】
更に、データ幅可変ＦＩＦＯメモリ１は、一般的なＦＩＦＯメモリとは異なり、ＦＩＦＯメモリの内部状態を表すＦＵＬＬ信号及びＥＭＰＴＹ信号に代えて、それぞれ、書込許可信号ＩＮ−ＲＤＹ、読出許可信号ＯＵＴ−ＲＥＱを出力する。これらの書込許可信号ＩＮ−ＲＤＹ及び読出許可信号ＯＵＴ−ＲＥＱは、ＦＩＦＯメモリの内部状態と書込サイズ信号ＩＮ−ＳＩＺＥ及び読出サイズ信号ＯＵＴ−ＳＩＺＥとにより生成される。
【００１８】
すなわち、データ幅可変ＦＩＦＯメモリ１は、ＦＩＦＯメモリの内部状態に加えて書込サイズ及び読出サイズにより、ＦＩＦＯメモリがデータを入出力可能かどうか決める。この点において、データ幅可変ＦＩＦＯメモリ１は、一般的なＦＩＦＯメモリと異なっている。
【００１９】
また、データ幅可変ＦＩＦＯメモリ１は、ＦＩＦＯメモリのステータスとして、空きデータ領域Ａ２における空きバッファサイズを示す空きバッファサイズ信号ＩＮ−ＲＳＩＺＥ［５：０］と、有効データ領域Ａ１における有効バッファサイズを示す有効バッファサイズＯＵＴ−ＶＳＩＺＥ［５：０］とを生成して出力する。なお、これらの空きバッファサイズ及び有効バッファサイズが、上記したＦＩＦＯメモリの内部状態を表している。
【００２０】
次に、図２を参照して、データ幅可変ＦＩＦＯメモリ１を詳細に説明する。図２は、図１に示すデータ幅可変ＦＩＦＯメモリ１を実現するための具体的な回路構成の一例を示す図である。図２では、データ幅可変ＦＩＦＯメモリ１を理解し易くするため、主要部以外の構成を模式的に示している。
【００２１】
データ幅可変ＦＩＦＯメモリ１は、空きバッファサイズ信号生成部１０と、書込許可信号生成部１２と、書込タイミング信号生成部１４と、ライトポインタ移動部１６とを備えている。また、データ幅可変ＦＩＦＯメモリ１は、有効バッファサイズ信号生成部２０と、読出許可信号生成部２２と、読出タイミング信号生成部２４と、リードポインタ移動部２６とを備えている。なお、空きバッファサイズ信号生成部１０と有効バッファサイズ信号生成部２０とが、特許請求の範囲に記載のバッファサイズ生成手段として機能する。
【００２２】
空きバッファサイズ信号生成部１０は、ライトポインタＷＰＴＲの値とリードポインタＲＰＴＲの値との差分から空きバッファサイズを求め、この空きバッファサイズを示す空きバッファサイズ信号ＩＮ−ＲＳＩＺＥを生成し、書込許可信号生成部１２へ供給する。また、本実施形態では、空きバッファサイズ信号生成部１０は、空きバッファサイズ信号ＩＮ−ＲＳＩＺＥを空きバッファサイズポートｉｎ−ｒｓｉｚｅを介して出力する。なお、空きバッファサイズ信号生成部１０は、空きバッファサイズ信号ＩＮ−ＲＳＩＺＥを外部から取得可能に保持していてもよい。
【００２３】
書込許可信号生成部１２には、書込サイズポートｉｎ−ｓｉｚｅを介して書込サイズ信号ＩＮ−ＳＩＺＥが入力される。書込許可信号生成部１２は、空きバッファサイズが書込サイズ以上であるときに書込許可信号ＩＮ−ＲＤＹを書込許可ポートｉｎ−ｒｄｙを介して出力すると共に、書込タイミング信号生成部１４へ供給する。
【００２４】
書込タイミング信号生成部１４は、書込アクセスポートｉｎ−ｒｅｑを介して入力される書込アクセス信号ＩＮ−ＲＥＱと書込許可信号ＩＮ−ＲＤＹとが共に入力されているときに、書込処理を開始するための書込タイミング信号ＩＮ−ＳＴＡＲＴを内部回路とライトポインタ移動部１６とに出力する。例えば、書込タイミング信号生成部１４は、ＡＮＤ回路から構成される。
【００２５】
ライトポインタ移動部１６には、書込サイズポートｉｎ−ｓｉｚｅを介して書込サイズ信号ＩＮ−ＳＩＺＥが入力される。ライトポインタ移動部１６は、書込タイミング信号ＩＮ−ＳＴＡＲＴに基づいて、ライトポインタＷＰＴＲの値に書込サイズを加算することによってライトポインタＷＰＴＲの値を変更し、ライトポインタＷＰＴＲを次の書込開始位置へ移動する。
【００２６】
有効バッファサイズ信号生成部２０は、ライトポインタＷＰＴＲの値とリードポインタＲＰＴＲの値との差分から有効バッファサイズを求め、この有効バッファサイズを示す有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥを生成し、読出許可信号生成部２２へ供給する。また、本実施形態では、有効バッファサイズ信号生成部２０は、有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥを有効バッファサイズポートｏｕｔ−ｖｓｉｚｅを介して出力する。なお、有効バッファサイズ信号生成部２０は、有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥを外部から取得可能に保持していてもよい。
【００２７】
読出許可信号生成部２２には、読出サイズポートｏｕｔ−ｓｉｚｅを介して読出サイズ信号ＯＵＴ−ＳＩＺＥが入力される。読出許可信号生成部２２は、有効バッファサイズが読出サイズ以上であるときに読出許可信号ＯＵＴ−ＲＥＱを読出許可ポートｏｕｔ−ｒｅｑを介して出力すると共に、読出タイミング信号生成部２４へ供給する。
【００２８】
読出タイミング信号生成部２４は、読出アクセスポートｏｕｔ−ｒｄｙを介して入力される読出アクセス信号ＯＵＴ−ＲＤＹと読出許可信号ＯＵＴ−ＲＥＱとが共に入力されているときに、読出処理を開始するための読出タイミング信号ＯＵＴ−ＳＴＡＲＴをリードポインタ移動部２６へ供給する。例えば、読出タイミング信号生成部２４は、ＡＮＤ回路から構成される。
【００２９】
リードポインタ移動部２６には、読出サイズポートｏｕｔ−ｓｉｚｅを介して読出サイズ信号ＯＵＴ−ＳＩＺＥが入力される。リードポインタ移動部２６は、読出タイミング信号ＯＵＴ−ＳＴＡＲＴに基づいて、リードポインタＲＰＴＲの値に読出サイズを加算することによってリードポインタＲＰＴＲの値を変更し、リードポインタＲＰＴＲを次の読出開始位置へ移動する。
【００３０】
次に、以上のような構成を有するデータ幅可変ＦＩＦＯメモリ１の動作を説明する。入力データＩＮ−ＤＡＴＡが、書込アクセス信号ＩＮ−ＲＥＱと書込サイズ信号ＩＮ−ＳＩＺＥと共に入力されると、データ幅可変ＦＩＦＯメモリ１は、バイト単位（Ｉ０〜Ｉ７で記載）で内部処理を行う。バイト単位の入力データＩＮ−ＤＡＴＡはライトポインタＷＰＴＲの値により回転され、バッファへの書込データ（バイト単位：Ｗ０〜Ｗ７）が生成される。
【００３１】
一方、空きバッファサイズ信号生成部１０が、空きバッファサイズを求めて空きバッファサイズ信号ＩＮ−ＲＳＩＺＥを生成し、書込許可信号生成部１２が、空きバッファサイズ信号ＩＮ−ＲＳＩＺＥと書込サイズ信号ＩＮ−ＳＩＺＥとを比較して、空きバッファサイズが書込サイズ以上であるときに書込許可信号ＩＮ−ＲＤＹをアサートする。
【００３２】
すると、書込タイミング信号生成部１４によって書込タイミング信号ＩＮ−ＳＴＡＲＴがアサートされ、バッファへの書き込みが行われる。バッファへの書き込みデータは、書込サイズ信号ＩＮ−ＳＩＺＥで指定された書込サイズをバイトイネーブルにデコードし、ライトポインタＷＰＴＲで回転させた位置にのみ書き込まれる。
【００３３】
なお、書き込みが行われると、ライトポインタ移動部１６が、ライトポインタＷＰＴＲの値に書込サイズを加算してライトポインタＷＰＴＲを次の書込開始位置に移動する。
【００３４】
次に、読出アクセス信号ＯＵＴ−ＲＤＹと読出サイズ信号ＯＵＴ−ＳＩＺＥとが入力されると、有効バッファサイズ信号生成部２０が、有効バッファサイズを求めて有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥを生成し、読出許可信号生成部２２が、有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥと読出サイズ信号ＯＵＴ−ＳＩＺＥとを比較して、有効バッファサイズが読出サイズ以上であるときに読出許可信号ＯＵＴ−ＲＥＱをアサートする。
【００３５】
すると、読出タイミング信号生成部２４によって読出タイミング信号ＯＵＴ−ＳＴＡＲＴが生成され、バッファからの読み出しが行われる。バッファからの読み出しデータは、リードポインタＲＰＴＲで示される値により（ＲＰＴＲ指定位置が先頭になるように）回転され、出力データＯＵＴ−ＤＡＴＡとして読み出される。
【００３６】
なお、読み出しが行われると、リードポインタ移動部２６が、リードポインタＲＰＴＲの値に読出サイズを加算してリードポインタＲＰＴＲを次の読出開始位置に移動する。
【００３７】
また、このようなリングバッファ構成のＦＩＦＯは、ｃｌｒポートを介して入力されるクリア信号ＣＬＲによってライトポインタＷＰＴＲの値とリードポインタＲＰＴＲの値とを初期化し、データ幅可変ＦＩＦＯメモリ１をクリアすることができる。
【００３８】
図３は、図１に示すデータ幅可変ＦＩＦＯメモリに入出力されるデータ及び信号のタイミングチャートである。なお、図３には、書き込みは任意のデータサイズで行い、読み出しは最後のデータ以外を８バイトデータで行うと共に、最後のデータ（残データ）は残データのサイズで行う場合について示されている。また、最上部に記されている番号はタイミング番号である。
【００３９】
タイミング番号３のタイミングにおいて、書込アクセス信号ＩＮ−ＲＥＱがアサートされる。このとき、書込サイズが２バイト（書込サイズ信号ＩＮ−ＳＩＺＥ［３：０］＝２Ｂ）であるので、入力データＩＮ−ＤＡＴＡ［０：６３］として２バイトのデータ（［０：１６］が有効であり、［１６：６３］が無効であるデータ）が入力される。また、空きバッファサイズが３２バイト（空きバッファサイズ信号ＩＮ−ＲＳＩＺＥ［５：０］＝３２Ｂ）であり、書き込み可能であることを示しているので、書込許可信号ＩＮ−ＲＤＹが返信され、タイミング番号４のタイミングで入力データＩＮ−ＤＡＴＡが取り込まれる。また、タイミング番号４では、空きバッファサイズが３２バイトから３０バイトに変更される（空きバッファサイズ信号ＩＮ−ＲＳＩＺＥ＝３０Ｂ）。
【００４０】
タイミング番号７のタイミングにおいて、８バイトのデータを書き込もうとしているが、空きバッファサイズが６バイト（ＩＮ−ＲＳＩＺＥ＝６Ｂ）であるので、書込許可信号ＩＮ−ＲＤＹがディアサートされる。しかしながら、タイミング番号７のタイミングにおいて、入力データＩＮ−ＤＡＴＡが６バイト（ＩＮ−ＳＩＺＥ＝６Ｂ）であるならば書込可能なので、書込許可信号ＩＮ−ＲＤＹはアサートされることとなる。
【００４１】
タイミング番号８のタイミングにおいて、読出アクセス信号ＯＵＴ−ＲＤＹがアサートされる。このとき、読出サイズが８バイト（ＯＵＴ−ＳＩＺＥ［３：０］＝８Ｂ）であり、有効バッファサイズが２６バイト（ＯＵＴ−ＶＳＩＺＥ＝２６Ｂ）であるので、読出許可信号ＯＵＴ−ＲＥＱが返信され、タイミング番号９のタイミングで出力データＯＵＴ−ＤＡＴＡが出力される。また、タイミング番号９では、有効バッファ数が２６バイトから１８バイトに変更される（有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥ＝１８Ｂ）。
【００４２】
更に、タイミング９では、空きバッファサイズが６バイトから１４バイトに変更され（空きバッファサイズ信号ＩＮ−ＲＳＩＺＥ＝１４Ｂ）、書込許可信号ＩＮ−ＲＤＹが再度アサートされる。
【００４３】
タイミング番号１３のタイミングにおいて、８バイトのデータを書き込もうとしているが、有効バッファサイズが２バイト（ＯＵＴ−ＶＳＩＺＥ＝２Ｂ）であるので、読出許可信号ＯＵＴ−ＲＥＱがディアサートされる。
【００４４】
タイミング番号１７以降では有効バッファサイズが６バイト（ＯＵＴ−ＶＳＩＺＥ＝６Ｂ）である。
【００４５】
その後、タイミング番号２１のタイミングにおいて、読出バッファサイズが６バイト（ＯＵＴ−ＳＩＺＥ＝６Ｂ）となると、読み出し可能となるので、読出許可信号ＯＵＴ−ＲＥＱがアサートされ、タイミング番号２２のタイミングにおいて残ったデータ（ＯＵＴ−ＶＳＩＺＥの値を使用）が読み出される。
【００４６】
このように、最終データとして６バイトの端数データを扱う場合、有効バッファサイズを用いて読出バッファサイズを設定することが可能である。ここで、端数データとは、書込処理又は読出処理において１回に処理可能な最大データサイズ（本実施形態では８バイト）よりもサイズの小さいデータである。
【００４７】
また、空きバッファサイズを用いて２バイト分余計にダミーデータを書き込み、残データを８バイト単位にして、最大読出サイズ化することも可能である。
【００４８】
また、端数データを消去する場合、クリア信号ＣＬＲを使い初期化することもできる。
【００４９】
なお、内部バッファサイズが固定である場合、「空きバッファサイズ＋有効バッファサイズ＝総バッファサイズ（固定）」の関係が成り立つので、空きバッファサイズ及び有効バッファサイズの少なくとも何れか一方が求められれば、上記したように端数データの制御を行うことが可能である。
【００５０】
このように、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１は、空きバッファサイズ及び有効バッファサイズのうち少なくとも何れか一方をデータ幅可変ＦＩＦＯメモリ１のステータスとして出力することによって、端数データの取り扱いを容易にできるようになっている。
【００５１】
また、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１によれば、有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥに基づいて読出サイズ信号ＯＵＴ−ＳＩＺＥを設定することによって、すなわち有効バッファサイズが読出サイズ以上となるように読出サイズを設定することによって、端数データを読み出すことができる。したがって、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１によれば、端数データが残留することを防止することができる。
【００５２】
更に、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１によれば、空きバッファサイズ信号ＩＮ−ＲＳＩＺＥに基づいて書込サイズ信号ＩＮ−ＳＩＺＥを設定することによって、すなわち空きバッファサイズに基づいて書込サイズを設定することによって、端数データが残留しても、残留データを最大読出サイズに調整することができ、最大読出サイズで読み出し可能とすることができる。したがって、第１の実施形態のデータ幅可変ＦＩＦＯメモリ１によれば、端数データが残留することを防止することができる。
［第２の実施形態］
【００５３】
図４は、本発明の第２の実施形態に係るデータ幅可変ＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図４では、データ幅可変ＦＩＦＯメモリ１Ａを理解し易くするため、主要部以外の構成を模式的に示している。データ幅可変ＦＩＦＯメモリ１Ａは、データ幅可変ＦＩＦＯメモリ１に加えて、最終フラグ生成部３０と、切替信号生成部３２と、マルチプレクサ３４とを更に備えている。なお、マルチプレクサ３４は、特許請求の範囲に記載した設定情報生成手段として機能する。
【００５４】
データ幅可変ＦＩＦＯメモリ１Ａは、データ幅可変ＦＩＦＯメモリ１と同様に、入力データポートｉｎ−ｄａｔａ、書込サイズポートｉｎ−ｓｉｚｅ、書込アクセスポートｉｎ−ｒｅｑ、書込許可ポートｉｎ−ｒｄｙ及び空きバッファサイズポートｉｎ−ｒｓｉｚｅを備えており、各ポートには、第１の実施形態と共通する信号が入出力される。これらのポートは、それぞれ、データ幅可変ＦＩＦＯメモリ１の対応するポートに接続されている。更に、データ幅可変ＦＩＦＯメモリ１Ａは、最終ポートｉｎ−ｌａｓｔを備えている。
【００５５】
また、データ幅可変ＦＩＦＯメモリ１Ａは、データ幅可変ＦＩＦＯメモリ１において出力データポートｏｕｔ−ｄａｔａ、読出アクセスポートｏｕｔ−ｒｄｙ、読出許可ポートｏｕｔ−ｒｅｑ及び有効バッファサイズポートｏｕｔ−ｖｓｉｚｅに代えて、それぞれ、出力データポートｎ−ｄａｔａ、読出アクセスポートｎ−ｒｄｙ、読出許可ポートｎ−ｒｅｑ、設定情報ポートｎ−ｖｓｉｚｅを備えており、更に、選択ポートｎ−ｌａｓｔを備えている。
【００５６】
最終フラグ生成部３０は、最終ポートｉｎ−ｌａｓｔを介して入力される最終信号ＩＮ−ＬＡＳＴと、書込アクセス信号ＩＮ−ＲＥＱと、データ幅可変ＦＩＦＯメモリ１からの書込許可信号ＩＮ−ＲＤＹとが共に入力されたときに最終フラグをセットして切替信号生成部３２に出力する。なお、最終フラグ生成部３０は、マルチプレクサ３４からの切替信号ｃｌｒが入力されたときに、最終フラグをリセットする。ここで、最終信号ＩＮ−ＬＡＳＴは、最後のデータ書き込みが行われたとき、すなわちデータの書き込みが終了したときに入力されるので、最終フラグは、データ幅可変ＦＩＦＯメモリ１に対してデータの書き込みが終了したことを表すこととなる。
【００５７】
最終フラグ生成部３０は、例えば、ＡＮＤ回路とＳＲ−ＦＦとから構成される。ＡＮＤ回路は、最終信号ＩＮ−ＬＡＳＴ、書込アクセス信号ＩＮ−ＲＥＱ及び書込許可信号ＩＮ−ＲＤＹが共に入力されたときにハイレベルの信号を出力し、ＳＲ−ＦＦは、ＡＮＤ回路の出力信号に応じて最終フラグをセットする。なお、ＳＲ−ＦＦは、リセット端子に入力される切替信号Ｎ−ＬＡＳＴに応じて最終フラグをリセットする。
【００５８】
切替信号生成部３２は、出力条件が成立したときに、切替信号Ｎ−ＬＡＳＴを選択ポートｎ−ｌａｓｔを介して出力すると共に、マルチプレクサ３４に供給する。出力条件は、読出アクセスポートｎ−ｒｄｙを介して入力される読出アクセス信号Ｎ−ＲＤＹと、データ幅可変ＦＩＦＯメモリ１からの読出許可信号ＯＵＴ−ＲＥＱ（Ｎ−ＲＥＱ）とが共に入力され、更に最終フラグがセットされ、更にデータ幅可変ＦＩＦＯメモリ１の有効バッファサイズが決められた規定読出サイズ（本実施形態では、データ幅可変ＦＩＦＯメモリ１が読出処理可能な最大データサイズである固定値８バイト）よりも小さくなったときに成立する。
【００５９】
切替信号生成部３２は、例えば、有効バッファサイズモニタ部とＡＮＤ回路とから構成される。有効バッファサイズモニタ部は、有効バッファサイズが固定値８バイトより小さいときにハイレベルの信号を出力する。ＡＮＤ回路は、有効バッファサイズモニタ部からの出力信号、最終フラグ、読出アクセス信号ＯＵＴ−ＲＤＹ及び読出許可信号ＯＵＴ−ＲＥＱが共に入力されたときにハイレベルの出力信号を切替信号Ｎ−ＬＡＳＴとして出力する。
【００６０】
マルチプレクサ３４は、読出サイズを設定するための設定情報Ｎ−ＶＳＩＺＥを切替信号Ｎ−ＬＡＳＴに応じて切り替え、設定情報ポートｎ−ｖｓｉｚｅから出力する。マルチプレクサ３４は、この設定情報Ｎ−ＶＳＩＺＥとして、切替信号Ｎ−ＬＡＳＴがローレベルのときに規定読出サイズ８バイトを出力し、ハイレベルのときに有効バッファサイズ（残データの読出サイズ）を出力する。なお、マルチプレクサ３４は、生成した設定情報Ｎ−ＶＳＩＺＥを外部から取得可能に保持していてもよい。
【００６１】
また、マルチプレクサ３４は、設定情報Ｎ−ＶＳＩＺＥをデータ幅可変ＦＩＦＯメモリ１の読出サイズポートｏｕｔ−ｓｉｚｅへ出力する。
【００６２】
すなわち、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａは、自動で設定情報を読出サイズとして用いる。そのため、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａは、最後の読出処理以外のときには最大読出サイズである固定値８バイトにて読出処理を行い、最後の読出処理のときには残データが端数データとなったことを自動的に認識して、端数データ（有効バッファサイズ信号ＯＵＴ−ＶＳＩＺＥが示す指定サイズ分の残データ）を自動的に読み出すことができるようになっている。したがって、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａによれば、端数データが残留することを自動的に防止することができる。
【００６３】
また、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａは、読出サイズの設定情報を出力しているので、最後の読出処理時の端数データの取り扱いを容易にできるようになっている。したがって、データ幅可変ＦＩＦＯメモリ１の読出サイズポートｏｕｔ−ｓｉｚｅが、マルチプレクサ３４の出力端子に接続するのではなく読出サイズポートｎ−ｓｉｚｅに接続されている場合には、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａは、読出サイズを設定情報に設定することによって、最後の読出処理時に端数データを読み出すことができ、端数データが残留することを防止することができる。
【００６４】
また、上記したように、本実施形態のデータ幅可変ＦＩＦＯメモリ１Ａは、有効バッファサイズの代わりに、空きバッファサイズとデータ保持部に記憶される総バッファサイズとから残データの読出サイズ、すなわち最後の読出処理時の設定情報を求めてもよい。
［第３の実施形態］
【００６５】
図５は、本発明の第３の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図５に示すＦＩＦＯメモリ４０は、入力側にデータ幅固定ＦＩＦＯメモリ４１を備え、出力側に第１の実施形態のデータ幅可変ＦＩＦＯメモリ１を備えて、出力側をデータ幅可変としている。
【００６６】
データ幅固定ＦＩＦＯメモリ４１は、読み書きされるデータのサイズが固定されている。データ幅固定ＦＩＦＯメモリ４１の一方のｄａｔａポートには入力データＤＡＴＡが入力され、ｗｒｉｔｅポートには書込アクセス信号ＲＥＱが入力される。また、データ幅固定ＦＩＦＯメモリ４１のｆｕｌｌポートからは、ステータスを示す信号ＲＤＹが出力される。
【００６７】
一方、データ幅固定ＦＩＦＯメモリ４１の他方のｄａｔａポート及びｒｅａｄポートは、それぞれ、データ幅可変ＦＩＦＯメモリ１の入力データポートｉｎ−ｄａｔａ、書込許可ポートｉｎ−ｒｄｙに接続されており、データ幅固定ＦＩＦＯメモリ４１のｅｍｐｔｙポートは、インバータを介してデータ幅可変ＦＩＦＯメモリ１の書込アクセスポートｉｎ−ｒｅｑに接続されている。
【００６８】
データ幅可変ＦＩＦＯメモリ１の書込サイズポートｉｎ−ｓｉｚｅには、データ幅固定ＦＩＦＯメモリ４１の最大読出サイズ（固定値）が入力される。
【００６９】
データ幅可変ＦＩＦＯメモリ１の読出サイズポートｏｕｔ−ｓｉｚｅ及び読出アクセスポートｏｕｔ−ｒｄｙには、それぞれ、読出サイズＳＩＺＥ、読出アクセス信号ＲＤＹが入力され、出力データポートｏｕｔ−ｄａｔａ、読出許可ポートｏｕｔ−ｒｅｑ及び有効バッファサイズポートｏｕｔ−ｖｓｉｚｅからは、出力データＤＡＴＡ、読出許可信号ＲＥＱ、有効バッファサイズ信号ＳＩＺＥ−ＳＴＡＴＵＳが出力される。
【００７０】
このように、第３の実施形態のＦＩＦＯメモリ４０でも、出力側のデータ幅可変ＦＩＦＯメモリ１が、有効バッファサイズを出力するので、端数データの取り扱いを容易にできる。
【００７１】
また、第３の実施形態のＦＩＦＯメモリ４０でも、有効バッファサイズが読出サイズ以上となるように読出サイズを設定することによって、端数データを読み出すことができ、端数データが残留することを防止することができる。
【００７２】
一般に、データ幅固定ＦＩＦＯメモリは大容量化が可能であるので、第３の実施形態のＦＩＦＯメモリ４０によれば、大容量化が可能である。
［第４の実施形態］
【００７３】
図６は、本発明の第４の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図６に示すＦＩＦＯメモリ４０Ａは、入力側に第１の実施形態のデータ幅可変ＦＩＦＯメモリ１を備え、出力側にデータ幅固定ＦＩＦＯメモリ４１を備えて、入力側をデータ幅可変としている。
【００７４】
データ幅可変ＦＩＦＯメモリ１の入力データポートｉｎ−ｄａｔａ、書込サイズポートｉｎ−ｓｉｚｅ、書込アクセスポートｉｎ−ｒｅｑには、それぞれ、入力データＤＡＴＡ、書込サイズ信号ＳＩＺＥ、書込アクセス信号ＲＥＱが入力され、書込許可ポートｉｎ−ｒｄｙ及び空きバッファサイズポートｉｎ−ｒｓｉｚｅからは、それぞれ、書込許可信号ＲＤＹ、空きバッファサイズ信号ＳＩＺＥ−ＳＴＡＴＵＳが出力される。
【００７５】
一方、データ幅可変ＦＩＦＯメモリ１の出力データポートｏｕｔ−ｄａｔａ及び読出許可ポートｏｕｔ−ｒｅｑは、それぞれ、データ幅固定ＦＩＦＯメモリ４１の一方のｄａｔａポート、ｗｒｉｔｅポートに接続されており、データ幅可変ＦＩＦＯメモリ１の読出アクセスポートｏｕｔ−ｒｄｙは、インバータを介してデータ幅固定ＦＩＦＯメモリ４１のｆｕｌｌポートに接続されている。
【００７６】
また、データ幅可変ＦＩＦＯメモリ１の読出サイズポートｏｕｔ−ｓｉｚｅには、データ幅固定ＦＩＦＯメモリ４１の最大読出サイズ（固定値）が入力される。
【００７７】
データ幅固定ＦＩＦＯメモリ４１のｒｅａｄポートには読出アクセス信号ＲＤＹが入力され、他方のｄａｔａポート及びｅｍｐｔｙポートからは、それぞれ、出力データＤＡＴＡ、ステータスを示す信号ＲＥＱが出力される。
【００７８】
このように、第４の実施形態のＦＩＦＯメモリ４０でも、入力側のデータ幅可変ＦＩＦＯメモリ１が、空きバッファサイズを出力するので、端数データの取り扱いを容易にできる。
【００７９】
また、第４の実施形態のＦＩＦＯメモリ４０でも、空きバッファサイズに基づいて書込サイズを設定することによって、端数データが残データとなって残留しても、その残留している残データをデータ幅固定ＦＩＦＯメモリ４１の固定読出サイズに調整することができる。したがって、第４の実施形態のＦＩＦＯメモリ４０でも、最大読出サイズで読み出すことができ、端数データが残留することを防止することができる。
【００８０】
更に、第４の実施形態のＦＩＦＯメモリ４０でも、データ幅固定ＦＩＦＯメモリ４１を備えているので、大容量化が可能である。
［第５の実施形態］
【００８１】
図７は、本発明の第５の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図７に示すＦＩＦＯメモリ４０Ｂは、入力側及び出力側にそれぞれデータ幅可変ＦＩＦＯメモリ４２，４３を備え、これらのデータ幅可変ＦＩＦＯメモリ４２，４３の間にデータ幅固定ＦＩＦＯメモリ４１を備えている。データ幅可変ＦＩＦＯメモリ４２，４３は、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａと同一である。このＦＩＦＯメモリ４０Ｂでは、入力側を可変データとして扱え、出力側は最後のデータを端数データとして処理できるようにしている。
【００８２】
データ幅可変ＦＩＦＯメモリ４２の入力データポートｉｎ−ｄａｔａ、書込サイズポートｉｎ−ｓｉｚｅ、書込アクセスポートｉｎ−ｒｅｑ及び最終ポートｉｎ−ｌａｓｔには、それぞれ入力データ、書込サイズ信号、書込アクセス信号、最終信号が入力され、書込許可ポートｉｎ−ｒｅｑからは書込許可信号が出力される。
【００８３】
データ幅可変ＦＩＦＯメモリ４２の読出アクセスポートｎ−ｒｄｙはインバータを介してデータ幅固定ＦＩＦＯメモリ４１のｆｕｌｌポートに接続されており、読出許可ポートｎ−ｒｅｑはデータ幅固定ＦＩＦＯメモリ４１のｗｒｉｔｅポートに接続されている。データ幅可変ＦＩＦＯメモリ１Ａの出力データポートｎ−ｄａｔａ及び最終フラグポートｎ−ｌａｓｔｆはそれぞれ合成器４４の入力端子に接続され、合成器４４の出力端子はデータ幅固定ＦＩＦＯメモリ４１の入力データポートｄａｔａに接続されている。合成器４４は、データ幅可変ＦＩＦＯメモリ４２からの出力データと最終フラグとを合成して、データ幅固定ＦＩＦＯメモリ４１に出力する。
【００８４】
データ幅可変ＦＩＦＯメモリ１Ａの読出サイズポートｎ−ｓｉｚｅ及び選択ポートｎ−ｌａｓｔは、それぞれステータスサイズ４５の入力端子、セット端子に接続されており、セット端子に入力される切替信号Ｎ−ＬＡＳＴに応じて、入力端子に入力される読出サイズ信号Ｎ−ＳＩＺＥが示す出力データサイズをセット（ラッチ）し、マルチプレクサ４６の一方の入力端子に出力する。例えば、ステータスサイズ４５はラッチ回路である。
【００８５】
マルチプレクサ４６の他方の入力端子には、データ幅固定ＦＩＦＯメモリ４１の最大読出サイズ（固定値）が入力される。マルチプレクサ４６は、データ幅可変ＦＩＦＯメモリ４３の最終フラグ生成部３０におけるＡＮＤ回路の出力信号に基づいて、ステータスサイズ４５の出力信号及び最大読出サイズの何れか一方を、データ幅可変ＦＩＦＯメモリ４３の書込サイズポートｉｎ−ｓｉｚｅへ出力する。具体的には、マルチプレクサ４６は、データ幅可変ＦＩＦＯメモリ４２によって最後の残データ読み出しが行われ、且つ、データ幅固定ＦＩＦＯメモリ４１から最終フラグが入力されたときにステータスサイズ４５から出力される残データサイズを出力し、それ以外のときにはデータ幅固定ＦＩＦＯメモリ４１の固定値を出力する。
【００８６】
データ幅固定ＦＩＦＯメモリ４１のｒｅａｄポートはデータ幅可変ＦＩＦＯメモリ４３の書込許可ポートｉｎ−ｒｄｙに接続されており、ｅｍｐｔｙポートはインバータを介してデータ幅可変ＦＩＦＯメモリ４３の書込アクセスポートｉｎ−ｒｅｑに接続されている。データ幅固定ＦＩＦＯメモリ４１の他方のｄａｔａポートは分割器４７の入力端子に接続されている。分割器４７の一方の出力端子はデータ幅可変ＦＩＦＯメモリ４３の入力データポートｉｎ−ｄａｔａに接続されており、分割器４７の他方の出力端子はデータ幅可変ＦＩＦＯメモリ４３の最終ポートｉｎ−ｌａｓｔに接続されている。分割器４５は、データ幅固定ＦＩＦＯメモリ４１からの出力データを分割して、データ幅可変ＦＩＦＯメモリ４２からの出力データをデータ幅可変ＦＩＦＯメモリ４３の入力データポートｉｎ−ｄａｔａに出力し、最終フラグを最終ポートｉｎ−ｌａｓｔに出力する。
【００８７】
データ幅可変ＦＩＦＯメモリ４３の読出サイズポートｎ−ｓｉｚｅ及び読出アクセスポートｎ−ｒｄｙには、それぞれ外部から読出サイズ、読出アクセス信号が入力され、出力データポートｎ−ｄａｔａ、読出許可ポートｎ−ｒｅｑ、設定情報ポートｎ−ｖｓｉｚｅ及び選択ポートｎ−ｌａｓｔからは、それぞれ、出力データ、読出許可信号、設定情報、切替信号が出力される。
【００８８】
このように、第５の実施形態のＦＩＦＯメモリ４０Ｂによれば、入力側及び出力側にデータ幅可変ＦＩＦＯメモリ４２，４３、合成器４４、ステータスサイズ４５、マルチプレクサ４６及び分割器４７を備えている。そのため、最終信号ＩＮ−ＬＡＳＴにより最後の書込処理が通知されると、最後の読出処理時における端数データを自動認識することができ、最後の読出処理のときには自動的に端数データを読み出すことによって、その端数データが残留することを自動的に防止することができる。
【００８９】
また、第５の実施形態のＦＩＦＯメモリ４０Ｂでも、第１のデータ幅固定ＦＩＦＯメモリ４１を備えているので、大容量化が可能である。
［第６の実施形態］
【００９０】
図８は、本発明の第６の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図８に示すＦＩＦＯメモリ４０Ｃは、２対の入出力ポートを備えており、双方向にデータを入出力可能なＦＩＦＯメモリ、すなわち方向制御可能なＦＩＦＯメモリである。ＦＩＦＯメモリ４０Ｃは、データ幅可変ＦＩＦＯメモリ７１と、２つのデータ幅固定ＦＩＦＯメモリ７３，７４と、マルチプレクサ部８０，９０とを備えている。データ幅可変ＦＩＦＯメモリ７１は、第２の実施形態のデータ幅可変ＦＩＦＯメモリ１Ａと同一である。
【００９１】
データ幅固定ＦＩＦＯメモリ７３の入力側は第１の入力ポート５０Ａに接続されており、データ幅固定ＦＩＦＯメモリ７３は第１の入力データを受ける。データ幅固定ＦＩＦＯメモリ７３の出力側はマルチプレクサ部８０の入力側に接続されている。
【００９２】
マルチプレクサ部８０の入力側は第２の入力ポート５０Ｂにも接続されており、マルチプレクサ部８０は第２の入力データを受ける。マルチプレクサ部８０の出力側はデータ幅可変ＦＩＦＯメモリ７１の入力側に接続されている。マルチプレクサ部８０は、方向制御信号ＤＩＲに基づいて、第１の入力データ又は第２の入力データの何れか一方をデータ幅可変ＦＩＦＯメモリ７１へ出力する。
【００９３】
データ幅可変ＦＩＦＯメモリ７１の出力側は、第１の出力ポート６０Ａ及びデータ幅固定ＦＩＦＯメモリ７４の入力側に接続されており、データ幅固定ＦＩＦＯメモリ７４の出力側は第２の出力ポート６０Ｂに接続されている。ここで、第１の出力ポート６０Ａにおける制御系ポートｒｄｙ及びｒｅｑはマルチプレクサ部９０を介してデータ幅可変ＦＩＦＯメモリ７１の制御系ポートｎ−ｒｄｙ、ｎ−ｒｅｑに接続されており、データ幅固定ＦＩＦＯメモリ７４における制御系ポートｆｕｌｌ及びｗｒｉｔｅもマルチプレクサ部９０を介してデータ幅可変ＦＩＦＯメモリ７１の制御系ポートｎ−ｒｄｙ、ｎ−ｒｅｑに接続されている。
【００９４】
マルチプレクサ部９０は、方向制御信号ＤＩＲに基づいて、第１の出力ポート６０Ａにおける制御系ポート及びデータ幅固定ＦＩＦＯメモリ７４における制御系ポートの何れか一方をデータ幅可変ＦＩＦＯメモリ７１の制御系ポートに接続する。
【００９５】
このようにして、ＦＩＦＯメモリ４０Ｃは、マルチプレクサ部８０，９０によって、第１の入力ポート５０Ａから入力された第１の入力データを、データ幅固定ＦＩＦＯメモリ７３とデータ幅可変ＦＩＦＯメモリ７１を順に介して第１の出力ポート６０Ａへ出力する。また、ＦＩＦＯメモリ４０Ｃは、第２の入力ポート５０Ｂから入力された第２の入力データを、データ幅可変ＦＩＦＯメモリ７１とデータ幅固定ＦＩＦＯメモリ７４を順に介して第２の出力ポート６０Ｂへ出力する。
【００９６】
また、ＦＩＦＯメモリ４０Ｃは、データ幅可変ＦＩＦＯメモリ７１の読出サイズの設定情報Ｎ−ＶＳＩＺＥを第１の出力ポート６０Ａ及び第２の出力ポート６０Ｂに出力する。
【００９７】
マルチプレクサ部９０は、方向制御信号ＤＩＲに基づいて、第１の入力データが入力されたときには、第１の出力ポート６０Ａにおける読出サイズ信号ＳＩＺＥをデータ幅可変ＦＩＦＯメモリ７１の読出サイズポートｎ−ｓｉｚｅへ導き、第２の入力データが入力されたときには、データ幅可変ＦＩＦＯメモリ７１の読出サイズの設定情報Ｎ−ＶＳＩＺＥを読出サイズポートｎ−ｓｉｚｅへ導く。
【００９８】
このように、第６の実施形態のＦＩＦＯメモリ４０Ｃによれば、第１の入力データに対しては、入力側が第１のデータ幅固定ＦＩＦＯメモリ７３となるが、出力側が第２の実施形態のデータ幅可変ＦＩＦＯメモリ７１となって、読出サイズの設定情報が出力されるので、最後の読出処理時の端数データの取り扱いを容易にできるようになっている。また、読出サイズを設定情報に設定することによって、最後の読出処理時に端数データを読み出すことができ、端数データの残留を防止することができると共に、大容量化が可能である。
【００９９】
また、第２の入力データに対しては、出力側が第２のデータ幅固定ＦＩＦＯメモリ７４となるが、入力側が第２の実施形態のデータ幅可変ＦＩＦＯメモリ７１となって、読出サイズの設定情報が出力されるので、最後の読出処理時の端数データの取り扱いを容易にできるようになっている。また、最後の読出処理時の端数データを自動認識することができ、最後の読出処理のときには自動的に端数データを読み出すことができる。したがって、端数データが残留することを自動的に防止することができると共に、大容量化が可能である。
【０１００】
更に、第６の実施形態のＦＩＦＯメモリ４０Ｃによれば、２対の入出力ポート５０Ａ，５０Ｂ，６０Ａ，６０Ｂを用いて、双方向のデータ転送を行うことができる。更に、方向制御信号ＤＩＲを設定することによって、双方向のデータ転送の方向制御を行うことができる。
［第７の実施形態］
【０１０１】
図９は、本発明の第７の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。図９に示すＦＩＦＯメモリ４０Ｄは、ＦＩＦＯメモリ４０Ｃに加えて更にデータ幅可変ＦＩＦＯメモリ７２、マルチプレクサ部１００，１１０を備えている点で第６の実施形態と異なっている。データ幅可変ＦＩＦＯメモリ７２は、第２の実施形態のデータ幅可変ＦＩＦＯメモリと同一であり、マルチプレクサ部１００，１１０は、それぞれマルチプレクサ部８０，９０と同一である。
【０１０２】
マルチプレクサ部１００の入力側は第１の入力ポート５０Ａに接続されており、出力側はデータ幅可変ＦＩＦＯメモリ７２の入力側に接続されている。データ幅可変ＦＩＦＯメモリ７２の出力側は、第２の出力ポート６０Ｂ及びデータ幅固定ＦＩＦＯメモリ７３の入力側に接続されている。ここで、第２の出力ポート６０Ｂにおける制御系ポートｒｄｙ及びｒｅｑはマルチプレクサ部１１０を介してデータ幅可変ＦＩＦＯメモリ７２の制御系ポートｎ−ｒｄｙ、ｎ−ｒｅｑに接続されており、データ幅固定ＦＩＦＯメモリ７３における制御系ポートｆｕｌｌ及びｗｒｉｔｅもマルチプレクサ部１１０を介してデータ幅可変ＦＩＦＯメモリ７１の制御系ポートｎ−ｒｄｙ、ｎ−ｒｅｑに接続されている。
【０１０３】
マルチプレクサ部１１０は、方向制御信号ＤＩＲに基づいて、第２の出力ポート６０Ｂにおける制御系ポート及びデータ幅固定ＦＩＦＯメモリ７３における制御系ポートの何れか一方をデータ幅可変ＦＩＦＯメモリ７２の制御系ポートに接続する。
【０１０４】
このようにして、ＦＩＦＯメモリ４０Ｄは、方向制御信号ＤＩＲに基づくマルチプレクサ部８０，９０，１００，１１０によって、第１の入力ポート５０Ａから入力された第１の入力データを、データ幅可変ＦＩＦＯメモリ７２、データ幅固定ＦＩＦＯメモリ７３及びデータ幅可変ＦＩＦＯメモリ７１を順に介して第１の出力ポート６０Ａへ出力し、第２の入力ポート５０Ｂから入力された第２の入力データを、データ幅可変ＦＩＦＯメモリ７１、データ幅固定ＦＩＦＯメモリ７４及びデータ幅可変ＦＩＦＯメモリ７１を順に介して第２の出力ポート６０Ｂへ出力する。
【０１０５】
また、ＦＩＦＯメモリ４０Ｄは、データ幅可変ＦＩＦＯメモリ７１の読出サイズの設定情報Ｎ−ＶＳＩＺＥを第１の出力ポート６０Ａに出力するようになっており、データ幅可変ＦＩＦＯメモリ７２の読出サイズの設定情報Ｎ−ＶＳＩＺＥを第２の出力ポート６０Ｂに出力する。
【０１０６】
マルチプレクサ部１１０は、方向制御信号ＤＩＲに基づいて、第１の入力データが入力されたときには、第２の出力ポート６０Ｂにおける読出サイズ信号ＳＩＺＥをデータ幅可変ＦＩＦＯメモリ７２の読出サイズポートｎ−ｓｉｚｅへ導き、第２の入力データが入力されたときには、データ幅可変ＦＩＦＯメモリ７２の読出サイズの設定情報Ｎ−ＶＳＩＺＥを読出サイズポートｎ−ｓｉｚｅへ導く。
【０１０７】
このように、第７の実施形態のＦＩＦＯメモリ４０Ｄによれば、第１の入力データに対しては、入力側及び出力側にそれぞれ第２の実施形態のデータ幅可変ＦＩＦＯメモリ７２，７１を有すると共に、データ幅固定ＦＩＦＯメモリ７３を有しており、読出サイズの設定情報を出力しているので、最後の読出処理時の端数データの取り扱いを容易にできるようになっている。また、読出サイズを設定情報に設定することによって、最後の読出処理時に端数データを読み出すことができ、端数データの残留を防止することができると共に、大容量化が可能である。
【０１０８】
同様に、第２の入力データに対しても、入力側及び出力側にそれぞれ第２の実施形態のデータ幅可変ＦＩＦＯメモリ７１，７２を有すると共に、データ幅固定ＦＩＦＯメモリ７４を有しており、読出サイズの設定情報を出力しているので、最後の読出処理時の端数データの取り扱いを容易にできるようになっている。また、最後の読出処理時の端数データを自動認識することができ、最後の読出処理のときには自動的に端数データを読み出すことができる。したがって、端数データが残留することを自動的に防止することができると共に、大容量化が可能である。
【０１０９】
更に、第７の実施形態のＦＩＦＯメモリ４０Ｄでも、２対の入出力ポート５０Ａ，５０Ｂ，６０Ａ，６０Ｂを用いて、双方向のデータ転送を行うことができる。更に、方向制御信号ＤＩＲを設定することによって、双方向のデータ転送の方向制御を行うことができる。
【０１１０】
なお、第５の実施形態のように、データサイズを保持するステータスサイズ４５を用いることによって、ＦＩＦＯメモリ規模の低減を図ることができる。
［第８の実施形態］
【０１１１】
図１０は、本発明の第８の実施形態に係る記憶装置を示す図である。図１０に示す記憶装置１２０は、第６の実施形態のＦＩＦＯメモリ４０Ｃとバスマスタコントローラ１３０とを備えている。図１０には、記憶装置１２０と共に、バスＩ／Ｆ、第１のバス及び第２のバスが示されている。なお、第２のバスに代えてＩＯデバイスとデータアクセスを行う場合には、バスＩ／Ｆの代わりにＩＯデバイスＩ／Ｆが用いられる。この記憶装置１２０では、第２のバスに対しては固定幅データ、第１のバス側に対してはデータ幅可変のデータが扱えるようになっている。
【０１１２】
ＦＩＦＯメモリ４０Ｃの一方側には、バスマスタコントローラ１３０が設けられている。バスマスタコントローラ１３０は、ＦＩＦＯメモリ４０Ｃと第１のバスとの間のデータアクセスを制御する。ＦＩＦＯメモリ４０Ｃと第１のバスとの間では、データ幅可変（バイトイネーブル制御などによるバス幅可変）のデータアクセスが行われる。
【０１１３】
ＦＩＦＯメモリ４０Ｃの他方側には、バスＩ／Ｆが設けられている。バスＩ／Ｆを介して、ＦＩＦＯメモリ４０Ｃと第２のバスとの間では、データ幅固定のデータアクセスが行われる。
【０１１４】
次に、図１１を参照して、記憶装置１２０を詳細に説明する。図１１は、図１０に示す記憶装置１２０を実現するための具体的な回路構成の一例を示す図である。図１１では、説明の簡略化のために、読出最終情報に関する信号ＩＮ−ＬＡＳＴやＮ−ＬＡＳＴなど、すなわちＦＩＦＯメモリ４０Ｃにおける最終フラグ生成部３０、切替信号生成部３２及びマルチプレクサ３４を省略している。
【０１１５】
バスマスタコントローラ１３０は、転送制御部１３１と、書込用トランザクション生成部１３２と、読出用トランザクション生成部１３３と、ＢＵＳＩ／Ｆ部１３４とを有する。なお、書込用トランザクション生成部１３２と読出用トランザクション生成部１３３とは同一である。
【０１１６】
転送制御部１３１は、転送開始アドレスｔｏｐ−ａｄｒ、データサイズｔｏｐ−ｓｉｚｅ、転送方向ｔｏｐ−ｄｉｒ及び転送開始ｔｏｐ−ｇｏなどの情報を管理する。例えば、バスブリッジの場合には、転送開始アドレスｔｏｐ−ａｄｒ、データサイズｔｏｐ−ｓｉｚｅ及び転送方向ｔｏｐ−ｄｉｒは、もう一方の第２のバスから与えられた情報を元に生成される。また、ＤＭＡコントローラの場合、転送開始アドレスｔｏｐ−ａｄｒ、データサイズｔｏｐ−ｓｉｚｅ及び転送方向ｔｏｐ−ｄｉｒは、レジスタで指定されたり、メモリ上に配置されるディスクリプタ内に記述されていたりと形態は様々である。転送制御部１３１は、転送開始アドレスｔｏｐ−ａｄｒ、データサイズｔｏｐ−ｓｉｚｅ及び転送方向ｔｏｐ−ｄｉｒを書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３に出力する。
【０１１７】
書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、転送開始アドレスｔｏｐ−ａｄｒ、データサイズｔｏｐ−ｓｉｚｅ及び転送方向ｔｏｐ−ｄｉｒといった情報をバス特性に基づきトランザクションに分割して、トランザクション単位のアドレスａｄｄｒと、トランザクション単位のコマンドｃｍｄと、トランザクション単位のデータサイズｓｉｚｅと、バスデータ単位のデータサイズｓｉｚｅとを生成し、ＢＵＳＩ／Ｆ部１３４及びＦＩＦＯメモリに出力する。
【０１１８】
次に、図１２を参照して、書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３の処理内容を説明する。図１２は、書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３の処理内容を示す図である。書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、以下に例示するバス制約（ルール）に合ったトランザクションを生成する。バス制約とは、バス上に流してよいトランザクションに関する制約である。
（１）バスのデータ幅が８バイト。
（２）バイトイネーブルによりバイト単位のアクセスが可能。
（３）１つのトランザクションは、最長６４バイトで６４バイトのアドレスアラインをまたぐ事はできない。
（４）１つのトランザクションは、８バイトアドレスアラインから始まる８バイトの倍数か、任意のアドレスから開始できる８バイトのアドレスアラインをまたがないデータでなければいけない。
【０１１９】
例えば、上記した４つのバス制約に基づいて、転送開始アドレス0x00000004、転送データサイズ259バイトへ書き込みを行う場合、図１２に示すように、書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、最初に４バイトのトランザクション、２番目に５４バイトのトランザクション、３〜５番目に６４バイトのトランザクション、最後（６番目）に７バイトのトランザクションに分割する。
【０１２０】
更に、書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、それぞれのトランザクションをバスデータ単位でのデータサイズに分割する。例えば、書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、最初の４バイトのトランザクションを４バイトのバスデータ１つに、５４バイトのトランザクションを８バイトのバスデータ７つに分割する。このように、バスデータ単位のデータサイズが生成されることによって、バスマスタコントローラ１３０はデータ幅可変であるＦＩＦＯメモリ４０Ｃを効率よく使用することができる。
【０１２１】
図１３は、図１１に示す書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３を実現するための具体的な回路構成の一例を示す図であり、図１４は、図１３に示す書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３の入出力信号のタイミングチャートである。ここでは、上記した４つのバス制約がある場合が示されている。
【０１２２】
書込用トランザクション生成部１３２及び読出用トランザクション生成部１３３は、転送制御部１３１からのＴＯＰ−ＧＯ(パルス)がアサートされて、内部にＴＯＰ−ＡＤＲ（転送開始アドレス）、ＴＯＰ−ＳＩＺＥ（転送データサイズ）、ＴＯＰ−ＤＩＲ（転送方向：転送コマンド）を設定し、トランザクション情報として、トランザクションデータサイズＴＲ−ＳＩＺＥ、バスデータ単位のデータサイズＲＩＮＧ−ＳＩＺＥ、信号ＴＲ−ＬＡＳＴ、信号ＴＲ−ＳＴＡＲＴ、信号ＴＲ−ＥＮＤ、トランザクション毎のアドレスＴＲ−ＡＤＲ、コマンドＴＲ−ＣＭＤを生成する。
【０１２３】
図１４に示すように、信号ＴＲ−ＲＥＱと信号ＴＲ−ＲＤＹとでハンドシェイクがとられている。トランザクションデータサイズＴＲ−ＳＩＺＥは、データサイズやアドレスアラインなどのバス制約などにより、トランザクションのサイズを計算する部分である。信号ＴＲ−ＬＡＳＴは最終トランザクション期間中にアサートする信号であり、信号ＴＲ−ＳＴＡＲＴはトランザクションの最初にアサートする信号であり、信号ＴＲ−ＥＮＤはトランザクションの最後にアサートする信号である。
【０１２４】
なお、図１１において省略した読出最終情報に関する信号ＩＮ−ＬＡＳＴは、図１３に示す信号ＴＲ−ＬＡＳＴと信号ＴＲ−ＥＮＤとのＡＮＤで生成することができる。
【０１２５】
このように、バスマスタコントローラ１３０は、バスデータ単位のデータサイズＲＩＮＧ−ＳＩＺＥを用いてＦＩＦＯメモリ４０Ｃにアクセスすることによって、容易な構成で、任意のバスデータサイズのデータ転送を行うことができる。
【０１２６】
また、バスマスタコントローラ１３０は、書込用トランザクション生成部１３２と読出用トランザクション生成部１３３との２つのトランザクション生成部を備え、それぞれによってライトデータとリードデータとを処理するので、データ幅可変であるＦＩＦＯメモリ４０Ｃを効率よく使用することができる。
［第９の実施形態］
【０１２７】
図１５は、本発明の第９の実施形態に係る記憶装置を示す図である。図１５に示す記憶装置１２０Ａは、記憶装置１２０においてＦＩＦＯメモリ４０Ｃの代わりにＦＩＦＯメモリ４０Ｄを備える点で第８の実施形態と異なっている。
【０１２８】
第９の実施形態に係る記憶装置１２０Ａによれば、データ幅可変ＦＩＦＯメモリ７１，７２を第１のバス及び第２のバスの両方に接続することによって、バスサイジングと任意のバイトイネーブル信号の同時を容易に行うことができる。バスサイジングは、第１のバスのバスサイズと第２のバスのバスサイズとが異なるときに、データ幅可変ＦＩＦＯメモリ７１，７２とデータ幅固定ＦＩＦＯメモリ７３，７４との間ではデータ幅固定ＦＩＦＯメモリ７３，７４のデータサイズを用い、データ幅可変ＦＩＦＯメモリ７１，７２と第１のバス及び第２のバスとの間では第１のバス又は第２のバスのバスサイズをデータサイズとして用いればよい。
【０１２９】
なお、本発明は上記した本実施形態に限定されることなく種々の変形が可能である。
【０１３０】
第３の実施形態及び第４の実施形態では、それぞれ出力側、入力側にデータ幅可変ＦＩＦＯメモリ１を備えるＦＩＦＯメモリの構成を例示したが、ＦＩＦＯメモリは、出力側及び入力側の両方にデータ幅可変ＦＩＦＯメモリ１を備える構成であってもよい。
【０１３１】
また、第５の実施形態では、入力側及び出力側にデータ幅可変ＦＩＦＯメモリ１Ａを備えるＦＩＦＯメモリの構成を例示したが、ＦＩＦＯメモリは、入力側又は出力側にデータ幅可変ＦＩＦＯメモリ１Ａを備える構成であっても、同様の利点を得ることができる。
【図面の簡単な説明】
【０１３２】
【図１】本発明の第１の実施形態に係るデータ幅可変ＦＩＦＯメモリの機能を模式的に示す図である。
【図２】図１に示すデータ幅可変ＦＩＦＯメモリ１を実現するための具体的な回路構成の一例を示す図である。
【図３】図１に示すデータ幅可変ＦＩＦＯメモリに入出力されるデータ及び信号のタイミングチャートである。
【図４】本発明の第２の実施形態に係るデータ幅可変ＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図５】本発明の第３の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図６】本発明の第４の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図７】本発明の第５の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図８】本発明の第６の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図９】本発明の第７の実施形態に係るＦＩＦＯメモリを実現するための具体的な回路構成の一例を示す図である。
【図１０】本発明の第８の実施形態に係る記憶装置を示す図である。
【図１１】本発明の第８の実施形態に係る記憶装置を実現するための具体的な回路構成の一例を示す図である。
【図１２】トランザクション生成部の処理内容を示す図である。
【図１３】図１１に示すトランザクション生成部を実現するための具体的な回路構成の一例を示す図である。
【図１４】図１３に示すトランザクション生成部の入出力信号のタイミングチャートである。
【図１５】本発明の第９の実施形態に係る記憶装置を示す図である。
【符号の説明】
【０１３３】
１，１Ａ，１Ｂ…データ幅可変ＦＩＦＯメモリ、１０…空きバッファサイズ信号生成部（バッファサイズ生成手段）、１２…書込許可信号生成部、１４…書込タイミング信号生成部、１６…ライトポインタ移動部、２０…有効バッファサイズ信号生成部（バッファサイズ生成手段）、２２…読出許可信号生成部、２４…読出タイミング信号生成部、２６…リードポインタ移動部、３０…最終フラグ生成部、３２…切替信号生成部、３４…マルチプレクサ（設定情報生成手段）、４０，４０Ａ，４０Ｂ，４０Ｃ，４０Ｄ…ＦＩＦＯメモリ、１２０，１２０Ａ…記憶装置、１３０…バスマスタコントローラ、１３１…転送制御部、１３２…書込用トランザクション生成部、１３３…読出用トランザクション生成部、１３４…ＢＵＳＩ／Ｆ部、Ａ…データ保持部、ＲＰＴＲ…リードポインタ、ＷＰＴＲ…ライトポインタ。
【図１】
2008083827.tif 000003
【図２】
2008083827.tif 000004
【図３】
2008083827.tif 000005
【図４】
2008083827.tif 000006
【図５】
2008083827.tif 000007
【図６】
2008083827.tif 000008
【図７】
2008083827.tif 000009
【図８】
2008083827.tif 000010
【図９】
2008083827.tif 000011
【図１０】
2008083827.tif 000012
【図１１】
2008083827.tif 000013
【図１２】
2008083827.tif 000014
【図１３】
2008083827.tif 000015
【図１４】
2008083827.tif 000016
【図１５】
2008083827.tif 000017