(57)【特許請求の範囲】
【請求項１】
データの書き込みと読み出しとを同じポートで行うシングルポートメモリと、
データをｎ（ｎは２以上の自然数）個単位でパッキングして前記シングルポートメモリへの書き込みと読み出しとを制御する制御手段と、
前記シングルポートメモリから読み出されたデータを外部へ出力する制御を行うバッファコントローラとを備えており、
前記制御手段は、前記データのｎ個が入力されるサイクルの間に前記ｎ個のデータの前記シングルポートメモリへの書き込みと読み出しを行うとともに、入力されるデータがｎ個の倍数でなく、前記シングルポートメモリがエンプティで、かつ前記バッファコントローラのバッファがエンプティの場合、ｎ個に満たない端数データを前記シングルポートメモリを介さず直接外部へ出力するよう制御を行う
ことを特徴とする記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シングルポートメモリを用いて外部機器に対する連続データ転送を実現する記憶装置に関する。
【０００２】
【従来の技術】
一般に、画像データや音声データを処理する情報処理機器において、回路ブロック間でのデータ転送時の動作タイミングを調整するために、入力側動作と出力側動作が非同期に実現できるＦＩＦＯ(First In First Out)型の記憶装置が使用されている。
【０００３】
ＦＩＦＯは、データの入力(書き込み)と出力(読み出し)とが同時に(すなわち、互いに非同期に)行えるデュアルポートメモリを備えており、このデュアルポートメモリに対するデータの入力、出力動作はそれぞれの制御部により非同期に制御される。しかし、一般にデュアルポートメモリは、シングルポートメモリに比べて回路規模が大きくまた高価であるため、ＦＩＦＯ型記憶装置の回路規模が大きくなり、製造コストも高くなる。
【０００４】
この問題点を解消する方法として、シングルポートメモリを用いたＦＩＦＯ型記憶装置が特開２００１−１３４４２１号公報に提案されている。この発明では、シングルポートメモリを用いてＦＩＦＯ型記憶装置を構成している。
【０００５】
上記公報に記載されるＦＩＦＯ型記憶装置は、一時にデータの書き込み又は読み出し動作のいずれかのみが可能なシングルポートメモリと、データの書き込み又は読み出し動作を非同期に実行可能なデュアルポートメモリと、シングルポートメモリおよびデュアルポートメモリに対するデータの書き込み及び読み出し動作を制御する制御手段とを備え、制御手段は、入力ポートを介して入力したデータを第１のクロックに同期してシングルポートメモリに書きこみ、シングルポートメモリへ書き込みを行わない期間においては、第１のクロックに同期してシングルポートメモリに蓄えられたデータを読み出してデュアルポートメモリに書きこむ。
【０００６】
また、制御手段は、外部装置からデュアルポートメモリへ読み出し要求があったときに、第２のクロックに同期してデュアルポートメモリからデータを読み出して出力ポートを介して出力するように、両メモリを制御する。
【０００７】
【発明が解決しようとする課題】
ここで、非同期ＦＩＦＯメモリは、通常書き込み/読み出しを非同期に実行可能なメモリであるため、書き込み可能な空き容量/書き込み済みのデータ容量がそれぞれ十分ある場合、1ワード/サイクルの連続的な書き込み/読み出しが可能でなければならない。しかしながら、特開２００１−１３４４２１号公報に開示される記憶装置では、連続的に書き込み処理が発生した場合に、シングルポートメモリが書き込み処理で占有されてしまうため、この間の読み出し処理が実行できなくなり、データが空で無いにも関わらず、読み出しが行えないという問題が発生する。
【０００８】
【課題を解決するための手段】
本発明は、このような課題を解決するために成されたものである。すなわち、本発明の記憶装置は、データの書き込みと読み出しとを同じポートで行うシングルポートメモリと、データをｎ（ｎは２以上の自然数）個単位でパッキングしてシングルポートメモリへの書き込みと読み出しとを制御する制御手段と、シングルポートメモリから読み出されたデータを外部へ出力する制御を行うバッファコントローラとを備えており、この制御手段によって、データのｎ個が入力されるサイクルの間にこのｎ個のデータのシングルポートメモリへの書き込みと読み出しとを行うとともに、入力されるデータがｎ個の倍数でなく、前記シングルポートメモリがエンプティで、かつ前記バッファコントローラのバッファがエンプティの場合、ｎ個に満たない端数データをシングルポートメモリを介さず直接外部へ出力するよう制御を行うものである。
【０００９】
このような本発明では、データをｎ個単位でパッキングし、データのｎ個が入力されるサイクルの間にシングルポートメモリへの書き込み、読み出しを行っていることから、書き込み処理が連続して発生してもｎ個のデータをパッキングしている間にシングルポートメモリへの書き込みおよび読み出しを行って、連続したデータを滞りなく転送できるようになる。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態について図に基づき説明する。図１は、本実施形態に係る記憶装置を説明する構成図である。すなわち、本実施形態の記憶装置は、主としてシングルポートメモリである１ｐｏｒｔＲＡＭ１と、この１ｐｏｒｔＲＡＭ１へのデータの書き込み、読み出しおよび外部のメモリ（例えば、ＦＩＦＯ１０）へのデータ出力を制御する制御部２とを備えている。
【００１１】
また、制御部２は、１ｐｏｒｔＲＡＭ１に対するデータの書き込み、読み出しを制御するＲＡＭコントローラ２１と、１ｐｏｒｔＲＡＭ１へのアドレス選択を行うセレクタ（ＳＥＬ）３１と、１ｐｏｒｔＲＡＭ１から読み出されたデータをＦＩＦＯ１０へ出力する制御を行うバッファコントローラ２２と、ＦＩＦＯ１０へ出力するデータのアドレスにおける上位ビット、下位ビットを選択するセレクタ（ＳＥＬ）３２とを備えている。
【００１２】
本実施形態の記憶装置では、１ｐｏｒｔＲＡＭ１のワード幅を、入力されるデータのｎ倍の幅で構成し、入力されたデータをＲＡＭコントローラ２１でｎ個パッキングした後、１ｐｏｒｔＲＡＭ１に書き込む。こうすることで、データの書き込み処理が連続して発生した場合でも、１ｐｏｒｔＲＡＭ１へはｎサイクルに1回の書き込み処理しか発生しないため、書き込み処理が行われていないサイクルに１ｐｏｒｔＲＡＭ１からの読み出し処理を実行することで、連続で書き込み処理が発生している場合でも、１ｐｏｒｔＲＡＭ１からの読み出し処理を実行することが可能になる。
【００１３】
つまり、このような構成により、１ｐｏｒｔＲＡＭ１を使用したＦＩＦＯ型の記憶装置で書き込み処理が連続して発生した場合でも、データを滞りなく書き込む処理を行うことができるようになる。
【００１４】
次に、本実施形態の記憶装置の動作を図２〜図４のタイミングチャートに基づき説明する。なお、以下の説明で図２〜図４の各図に示されない符号は図１を参照するものとする。図２は、１ｐｏｒｔＲＡＭへの書き込み処理のタイミングチャート、図３は、端数データの出力処理のタイミングチャート、図４は、１ｐｏｒｔＲＡＭからの読み出し処理のタイミングチャートである。
【００１５】
先ず、図２に基づき１ｐｏｒｔＲＡＭ１への書き込み処理を説明する。制御部２にはクロックWCLKが入力され、書き込み許可信号WEの入力に合わせてデータDI（ここでは８ビット幅）が順次入力される。
【００１６】
Wcountは書き込み許可信号WEを検出してインクリメントするカウンタであり、入力されるデータの個数をカウントしている。１ｐｏｒｔＲＡＭ１のアドレスビット幅＋２ビットのビット幅を持っている。
【００１７】
Waddrは１ｐｏｒｔＲＡＭ１の書き込みアドレスであり、１ｐｏｒｔＲＡＭ１への書き込み許可信号RAMWEを検出してインクリメントするカウンタである。WDataPtrはWcountの最下位ビットであり、入力データをパッキングする際に、”０”のときは上位ビットに、”１”のときは下位ビットにデータを取り込むことになる。
【００１８】
PackDoneは、データのパッキング終了を示す信号で、Wcountの立上がり／立下りを検出して２サイクルアサートする。これによって２個のデータがパッキングされることになる。
【００１９】
RAMWEは、１ｐｏｒｔＲＡＭ１への書き込み許可信号であり、PackDone＝１およびRwCycle＝１でアサートされる。RAMWDは、パッキング後の１ｐｏｒｔＲＡＭ１への書き込み用データである。本実施形態では２個づつデータがパッキングされ、Wcountの立上がり／立下りを検出して、PackDataが図示しないＦＦ（フリップフロップ）に取り込まれる。
【００２０】
RAMADは、１ｐｏｒｔＲＡＭ１のアドレスであり、RwCycle＝０のときはWaddrが、RwCycle＝１のときはRaddrがセレクトされて出力される。NFULL、FULLは、１ｐｏｒｔＲＡＭ１のニアフルフラグおよびフルフラグであり、FULLアサート時にWEがアサートされた場合は、書き込み処理を行わない。
【００２１】
BufWeは、バッファコントローラ２２内のバッファ（図示せず）への書き込み許可信号、すなわち１ｐｏｒｔＲＡＭ１からの読み出し許可信号である。１ｐｏｒｔＲＡＭ１からのデータ読み出し可能で、かつ出力段のデータバッファに書き込みが可能な場合にアサートされる。
【００２２】
Raddrは、１ｐｏｒｔＲＡＭ１の読み出しアドレスであり、BufWeアサートを検出してインクリメントされる。
【００２３】
このような各信号のタイミングによって、本実施形態では２個づつデータがパッキングされて１ｐｏｒｔＲＡＭ１へ書き込まれることになる（図２の矢印参照）。
【００２４】
次に、図３に基づき端数データの出力処理を説明する。すなわち、このタイミングチャートでは、データが奇数個の状態で入力が停止し、かつ１ｐｏｒｔＲＡＭ１のデータがエンプティで、かつバッファコントローラ２２のバッファがエンプティで、かつＦＩＦＯ１０がフルでない場合、最後に入力された１ワードのデータは、１ｐｏｒｔＲＡＭ１を経由することなくＦＩＦＯ１０へ書き込まれる。
【００２５】
つまり、１ｐｏｒｔＲＡＭ１がエンプティ（RamEmpty＝１）で、バッファがエンプティ（BufEmpty＝１）で、１ｐｏｒｔＲＡＭ１に書き込まれる前の入力データが1個（WDataPtr＝１）残っていて、かつＦＩＦＯ１０がフルで無い場合、残っている１個の入力データは、１ｐｏｒｔＲＡＭ１を経由せずにＦＩＦＯ１０に書き込まれることになる（図３の矢印参照）。
【００２６】
次に、図４に基づき１ｐｏｒｔＲＡＭ１からの読み出し処理を説明する。制御部２にはクロックWCLKが入力され、内部ではこのクロックWCLKの２クロックに１回の割合でRwcycleが発生する。
【００２７】
BufFullは、出力段のバッファフルフラグであり、バッファコントローラ２２内のバッファに１ｐｏｒｔＲＡＭ１のデータ1ワード分の空きが無い場合にアサートされる。
【００２８】
RamEmpは、１ｐｏｒｔＲＡＭ１のエンプティフラグである。また、BufWeは、バッファへの書き込み許可信号、すなわち１ｐｏｒｔＲＡＭ１からのデータ読み出し許可信号である。１ｐｏｒｔＲＡＭ１からのデータ読み出し可能（RamEmp＝０）で、かつ出力段のデータバッファに書き込みが可能（BufFull＝０）な場合にアサートされ、１ｐｏｒｔＲＡＭ１からバッファへパッキングされたデータが転送される（図４の矢印参照）。
【００２９】
RamRaddrは、１ｐｏｒｔＲＡＭ１の読み出しアドレスで、BufWeアサートを検出してインクリメントされる。RAMRDは、１ｐｏｒｔＲＡＭ１の読み出しデータである。
【００３０】
Buf1／Buf2は、出力段バッファのデータで、RamAddrの最下位ビットをポインタにして、交互にデータが書き込まれる。BufEmpは、バッファデータのエンプティフラグであり、ＦＩＦＯ１０へのデータ出力でバッファデータが空になった場合アサートし、BufWeでネゲートする。
【００３１】
FIFOWEは、ＦＩＦＯ１０への書き込み許可信号であり、バッファからの読み出し可能（BufEmp＝０）で、FIFOFULL＝０の場合にアサートされる。Rcountは、出力データ数をカウントするカウンタであり、FIFOWEのアサートを検出してインクリメントする。Rdptrは、バッファのデータセレクト用のリードポインタで、Rcountの下位２ビットである。
【００３２】
このような各信号のタイミングによって、本実施形態では１ｐｏｒｔＲＡＭ１から読み出された２個づつパッキングされたデータ（１６ビットデータ）を上位８ビット、下位８ビットにアンパッキングして、交互に出力できるようになる。
【００３３】
このような本実施形態では、たとえば、１Ｋワード×８ビットのＦＩＦＯ型メモリを構成する場合、データ幅が２倍の５１２ワード×１６ビットのシングルポートメモリを使用した場合と、１Ｋワード×８ビットのデュアルポートメモリを使用した場合とを比較すると、デュアルポートメモリ１１５０５２グリッド(NEC CB12ライブラリ)に対して、シングルポートメモリでは２８６２５グリッド(同左)、と約１／４にサイズ削減が可能となる。
【００３４】
なお、上記実施形態では、２個のデータをパッキングして１ｐｏｒｔＲＡＭ１へ書き込み、２個のデータをパッキングするサイクルで１ｐｏｒｔＲＡＭ１へのデータの書き込みと読み出しとを行う場合を例としたが、３個以上のデータをパッキングする場合であっても同様である。
【００３５】
【発明の効果】
以上説明したように、本発明によれば次のような効果がある。すなわち、回路サイズが小さいシングルポートメモリを使用してＦＩＦＯ型の記憶装置を実現できるので、ＡＳＩＣのチップサイズ削減によるコストダウンが可能である。さらに、連続ライトアクセス時のリードアクセスも可能となる。
【図面の簡単な説明】
【図１】  本実施形態の記憶装置を説明する構成図である。
【図２】  １ｐｏｒｔＲＡＭへの書き込み処理のタイミングチャートである。
【図３】  端数データの出力処理のタイミングチャートである。
【図４】  １ｐｏｒｔＲＡＭからの読み出し処理のタイミングチャートである。
【符号の説明】
１…１ｐｏｒｔＲＡＭ、２…制御部、１０…ＦＩＦＯ、２１…ＲＡＭコントローラ、２２…バッファコントローラ、３１…セレクタ、３２…セレクタ
【図１】
0004019757.tif 000002
【図２】
0004019757.tif 000003
【図３】
0004019757.tif 000004
【図４】
0004019757.tif 000005