(57)【特許請求の範囲】
【請求項１】
ランダムアクセス可能な記憶手段のデータ入出力制御を行うデータ記憶装置において、
ランダムアクセス可能な記憶手段と、
前記記憶手段に対するデータの書き込み要求が生じると、所定の規則に従って書き込みアドレスを生成する書き込みアドレス生成手段と、
前記記憶手段に対するデータの読み出し要求が生じると、所定の規則に従って読み出しアドレスを生成する読み出しアドレス生成手段と、
所定の切替信号に従って、前記書き込みアドレス生成手段によって生成された書き込みアドレスと前記読み出しアドレス生成手段によって生成された読み出しアドレスとを選択的に切り替える切替手段と、
前記書き込み要求および前記読み出し要求の有無に応じて、前記切替手段への切替信号および前記記憶手段への書き込み／読み出し指示信号を生成する調整手段と
入力されるデータに前記記憶手段から出力されるデータを加算する演算手段とを具備し、
前記書き込み要求が生じると、まず、前記書き込みアドレス生成手段は、書き込み要求に応じて、書き込みアドレスを生成し、前記記憶手段は、該書き込みアドレスに記憶されているデータを読み出し、次いで、前記加算手段は、入力されるデータと前記記憶手段から読み出したデータとを加算した後、前記記憶手段は、該加算したデータを前記書き込みアドレスへ書き込む
ことを特徴とするデータ記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ランダムアクセス可能なメモリを共用してＦＩＦＯ（First In First Out）機能とアキュムレータ機能（より広義にはランダムアクセス機能）とを実現するデータ記憶装置に関する。
【０００２】
【従来の技術】
例えば音響信号を処理する音響処理装置では、図８に示すような処理を行うことがある。前段部分は、ＲＡＭ（Random Access Memory）で所定時間遅延した音響信号を後段のＦＩＦＯに出力するとともに入力される音響信号と適当な比率で加算してＲＡＭの同一エリアに再記憶する機能であり、音響信号に対してリバーブ、エコーのようなエフェクトを付与する場合に使われるアキュムレータ機能である。本願明細書ではＲＡＭの所定エリアから読み出したデータに対して所定の演算を施して同一エリアに再記憶する機能を便宜上アキュムレータ機能と言う。後段部分は、前段でエフェクトを付与された音響信号を例えば４８ｋＨｚの一定のレート（サンプリング周波数）で出力するＦＩＦＯ機能であり、ＲＡＭの書き込みと読み出しを制御することで実現される。このように後段のＦＩＦＯで一定レートに変換して出力することにより、前段部分は４８ｋＨｚに縛られない非同期かつ高速の動作周波数で動作するＤＳＰ、ＣＰＵ等を使用できる。
【０００３】
【発明が解決しようとする課題】
ところで、従来のこの種の信号処理では、アキュムレータとＦＩＦＯとが別々に構成されているため、回路サイズが増大するという問題があった。
【０００４】
この発明は上述した事情に鑑みてなされたもので、アキュムレータとＦＩＦＯとを共用のメモリを使用して一体とし、回路サイズを小さくできるデータ記憶装置を提供することを目的としている。
【０００９】
【課題を解決するための手段】
上述した問題点を解決するために、請求項１記載の発明では、ランダムアクセス可能な記憶手段のデータ入出力制御を行うデータ記憶装置において、ランダムアクセス可能な記憶手段と、前記記憶手段に対するデータの書き込み要求が生じると、所定の規則に従って書き込みアドレスを生成する書き込みアドレス生成手段と、前記記憶手段に対するデータの読み出し要求が生じると、所定の規則に従って読み出しアドレスを生成する読み出しアドレス生成手段と、所定の切替信号に従って、前記書き込みアドレス生成手段によって生成された書き込みアドレスと前記読み出しアドレス生成手段によって生成された読み出しアドレスとを選択的に切り替える切替手段と、前記書き込み要求および前記読み出し要求の有無に応じて、前記切替手段への切替信号および前記記憶手段への書き込み／読み出し指示信号を生成する調整手段と入力されるデータに前記記憶手段から出力されるデータを加算する演算手段とを具備し、前記書き込み要求が生じると、まず、前記書き込みアドレス生成手段は、書き込み要求に応じて、書き込みアドレスを生成し、前記記憶手段は、該書き込みアドレスに記憶されているデータを読み出し、次いで、前記加算手段は、入力されるデータと前記記憶手段から読み出したデータとを加算した後、前記記憶手段は、該加算したデータを前記書き込みアドレスへ書き込むことを特徴とする。
【００１０】
この発明によれば、記憶手段をＦＩＦＯとして用いる場合には、前記アドレス生成手段によってＦＩＦＯ用のアドレスを生成し、該アドレスを切替手段を介して記憶手段に供給し、ＰＵＳＨもしくはＰＯＰを行い、一方、アキュムレータとして用いる場合には、ランダムアクセス用のアドレスを切替手段を介して記憶手段に供給し、該アドレスでデータを読み出し、外部で演算した後、再び、同一アドレスに書き込むようにするようにしたので、アキュムレータとＦＩＦＯとを一体とすることが可能となり、回路サイズを小さくすることが可能となる。
【００１１】
【発明の実施の形態】
次に図面を参照してこの発明の実施形態について説明する。
【００１２】
Ａ．実施形態の構成
Ａ−１．実施形態の基本構成
図１は、本発明の実施形態の基本構成を示すブロック図である。図において、ポインタ１は、カウンタにより構成されており、ＰＵＳＨ信号によりカウンタ値を更新し、該カウンタ値を選択回路２に供給する。選択回路２は、後述するデュアルポートＲＡＭ５をアキュムレータとして用いる場合には、書き込みアドレスＷＡＤをデュアルポートＲＡＭ５に供給し、デュアルポートＲＡＭ５をＦＩＦＯとして用いる場合には、ポインタ１のカウンタ値をデュアルポートＲＡＭ５に供給する。
【００１３】
次に、ポインタ３は、カウンタにより構成されており、ＰＯＰ信号によりカウンタ値を更新し、該カウンタ値を選択回路４に供給する。選択回路４は、デュアルポートＲＡＭ５をアキュムレータとして用いる場合には、読み出しアドレスＲＡＤをデュアルポートＲＡＭ５に供給し、デュアルポートＲＡＭ５をＦＩＦＯとして用いる場合には、ポインタ３のカウンタ値をデュアルポートＲＡＭ５に供給するようになっている。
【００１４】
デュアルポートＲＡＭ５は、ライトアドレスとして供給されるアドレスに従って、入力されるデータを記憶し、リードアドレスとして供給されるアドレスに従って、記憶されているデータを出力する。なお、該ＲＡＭは、必ずしもデュアルポートＲＡＭである必要はない。
【００１５】
上述した構成では、上記デュアルポートＲＡＭ５をアキュムレータとして使用する場合には、直接、書き込みアドレスまたは読み出しアドレスを供給し、選択回路２、４で、上記書き込みアドレスまたは読み出しアドレスを選択する。デュアルポートＲＡＭ５では、上記書き込みアドレスまたは読み出しアドレスに従って、供給されるデータを記憶したり読み出したりする。一方、上記デュアルポートＲＡＭ５をＦＩＦＯとして使用する場合には、ＰＵＳＨまたはＰＯＰを供給し、ポインタ１または３で書き込みアドレスまたは読み出しアドレスを生成し、選択回路２、４で上記ポインタ１または３の書き込みアドレスまたは読み出しアドレスを選択する。デュアルポートＲＡＭ５では、上記書き込みアドレスまたは読み出しアドレスに従って、供給されるデータを記憶したり読み出したりする。
【００１６】
Ｂ．第１実施形態
Ｂ−１．第１実施形態の構成
次に、本発明の第１実施形態についてより具体的な構成を参照して説明する。本第１実施形態は、ＦＩＦＯ処理とアキュムレータ処理（またはランダムアクセス処理）をシングルポートＲＡＭで実現する際に、ＰＵＳＨリクエスト、ＰＯＰリクエスト、書き込みリクエストおよび読み出しリクエストの競合を調整する構成となっている。ここで、図２は、本第１実施形態の構成を示すブロック図である。図において、ラッチ回路１０は、後述する競合調整回路１６からの制御信号（※１）に従って、後述するシングルポートＲＡＭ１７をＦＩＦＯとして使用する場合に供給されるデータＤin１を保持し、選択回路１２の一方の入力端に供給する。
【００１７】
また、ラッチ回路１１は、後述する競合調整回路１６からの制御信号（※２）に従って、後述するシングルポートＲＡＭ１７をアキュムレータとして使用する場合に供給されるデータＤin２を保持し、選択回路１２の他方の入力端に供給する。次に、選択回路１２は、後述する競合調整回路１６からの制御信号（※５）に従って、上記データＤin１またはデータＤin２のいずれか一方を、シングルポートＲＡＭ１７の入力端Ｉに供給する。
【００１８】
次に、カウンタ１３は、ＰＵＳＨリクエストＰＵＳＨ-reqが供給されると、ＰＵＳＨアドレスを示すカウント値を更新するとともに、該カウント値を選択回路１５に供給する。また、カウンタ１４は、ＰＯＰリクエストＰＯＰ-reqが供給されると、ＰＯＰアドレスを示すカウント値を更新するとともに、該カウント値を選択回路１５に供給する。選択回路１５は、シングルポートＲＡＭ１７をランダムアクセスする際の書き込みアドレスＷ-add、同読み出しアドレスＲ-add、上記ＰＵＳＨリクエストＰＵＳＨ-reqに対するカウント値、または上記ＰＯＰリクエストＰＯＰ-reqに対するカウント値のいずれかを、後述する競合調整回路１６からの制御信号に従って選択し、シングルポートＲＡＭ１７のアドレス入力端Ａに供給する。
【００１９】
次に、競合調整回路１６は、シングルポートＲＡＭ１７をランダムアクセスする際の書き込みリクエストＷ-req、同読み出しリクエストＲ-req、上記ＰＵＳＨリクエストＰＵＳＨ-req、または上記ＰＯＰリクエストＰＯＰ-reqの発生に従って、ラッチ回路１０，１１、選択回路１２，１５、シングルポートＲＡＭ１７、後述するラッチ回路１８，１９に対する制御信号（選択信号やラッチタイミング信号、書き込みイネーブル信号等）を生成し、各部へ供給する。
【００２０】
シングルポートＲＡＭ１７は、書き込みイネーブルＷＥがアクティブのとき、アドレス入力端Ａに供給されるアドレスに従って、入力端Ｉに供給されるデータを記憶する一方、書き込みイネーブルＷＥが非アクティブのとき、アドレス入力端Ａに供給されるアドレスに記憶されているデータを読み出して出力端Ｏから出力し、ラッチ回路１８，１９に供給する。
【００２１】
ラッチ回路１８，１９は、シングルポートＲＡＭ１７から出力されるデータを、上記競合調整回路１６から供給される制御信号（※３，※４）に従って保持し、それぞれデータＤout1，Ｄout2として、所定タイミングで出力する。ラッチ回路１８は、シングルポートＲＡＭ１７をＦＩＦＯとして用いる場合のデータを保持するようになっており、該ラッチ回路１８から出力されるデータは、例えばＤ／Ａ変換器等へ供給される。また、ラッチ回路１９は、シングルポートＲＡＭ１７をアキュムレータとして用いる場合のデータを保持するようになっている。
【００２２】
Ｂ−２．第１実施形態の動作
次に、上述した第１実施形態による動作について説明する。
（ａ）ＦＩＦＯとして用いる場合（ＰＵＳＨ）
まず、ＰＵＳＨリクエストでは、ＰＵＳＨリクエストＰＵＳＨ-reqを供給するとともに、データＤin1を供給する。競合調整回路１６では、上記ＰＵＳＨリクエストＰＵＳＨ-reqの発生に従って、制御信号（※１，※５）、選択回路１５への制御信号（選択信号）、シングルポートＲＡＭ１７への書き込みイネーブル信号を、所定タイミングで発生し、各部へ供給する。
【００２３】
上記データＤin1は、競合調整回路１６からの制御信号（※１）に従って、ラッチ回路１０に保持される。次に、上記ラッチ回路１０に保持されたデータＤin1は、選択回路１２において、競合調整回路１６からの制御信号（※５）に従って選択され、シングルポートＲＡＭ１７の入力端子Ｉに供給される。
【００２４】
一方、カウンタ１３では、ＰＵＳＨリクエストＰＵＳＨ-reqが供給されると、カウント値を更新する。次に、更新されたカウント値は、選択回路１５において、競合調整回路１６からの制御信号（選択信号）に従って選択され、シングルポートＲＡＭ１７のアドレス入力端Ａに供給される。
【００２５】
シングルポートＲＡＭ１７では、上記アドレス入力端Ａに供給されたカウント値をアドレスとして、競合調整回路１６から書き込みイネーブル信号が供給されるタイミングで、上記入力端に供給されたデータＤin1を記憶（ＰＵＳＨ）する。
【００２６】
（ｂ）ＦＩＦＯとして用いる場合（ＰＯＰ）
次に、ＰＯＰリクエストでは、ＰＯＰリクエストＰＯＰ-reqを供給する。競合調整回路１６では、上記ＰＯＰリクエストＰＯＰ-reqの発生に従って、制御信号（※３）、選択回路１５への制御信号（選択信号）、シングルポートＲＡＭ１７への書き込みイネーブル信号を、所定タイミングで発生し、各部へ供給する。
【００２７】
カウンタ１４では、ＰＯＰリクエストＰＯＰ-reqが供給されると、カウント値を更新する。次に、選択回路１５では、競合調整回路１６からの制御信号（選択信号）に従って、更新されたカウント値が選択され、シングルポートＲＡＭ１７のアドレス入力端Ａに供給される。
【００２８】
シングルポートＲＡＭ１７では、競合調整回路１６からの書き込みイネーブルＷＥが非アクティブとなるタイミングで、上記アドレス入力端Ａに供給されたカウント値をアドレスとして、該アドレスに記憶されているデータを読み出して出力端Ｏから出力する。該データは、競合調整回路１６からの制御信号（※３）に従って、ラッチ回路１８に保持され、データＤout1として後段の回路に出力される。
【００２９】
（ｃ）ランダムアクセスメモリ（書き込み）
まず、ランダムアクセスメモリとしてデータを書き込む場合には、書き込みリクエストＷ-req、書き込みアドレスＷ-addを供給するとともに、データＤin2を供給する。競合調整回路１６では、上記書き込みリクエストＷ-reqの発生に従って、制御信号（※２，※５）、選択回路１５への制御信号（選択信号）、シングルポートＲＡＭ１７への書き込みイネーブル信号を、所定タイミングで発生し、各部へ供給する。
【００３０】
上記データＤin2は、競合調整回路１６からの制御信号（※２）に従って、ラッチ回路１１に保持される。次に、上記ラッチ回路１１に保持されたデータＤin2は、選択回路１２において、競合調整回路１６からの制御信号（※５）に従って選択され、シングルポートＲＡＭ１７の入力端子Ｉに供給される。
【００３１】
一方、選択回路１５では、競合調整回路１６からの制御信号（選択信号）に従って、書き込みアドレスＷ-addが選択され、シングルポートＲＡＭ１７のアドレス入力端Ａに供給される。
【００３２】
シングルポートＲＡＭ１７では、上記アドレス入力端Ａに供給された書き込みアドレスＷ-addに従って、競合調整回路１６から書き込みイネーブル信号が供給されるタイミングで、上記入力端に供給されたデータＤin2を記憶する。
【００３３】
（ｄ）ランダムアクセスメモリ（読み出し）
次に、ランダムアクセスメモリとしてデータを読み出す場合には、読み出しリクエストＲ-reqとともに、読み出しアドレスＲ-addを供給する。競合調整回路１６では、上記読み出しリクエストＲ-reqの発生に従って、制御信号（※４）、選択回路１５への制御信号（選択信号）、シングルポートＲＡＭ１７への書き込みイネーブル信号を、所定タイミングで発生し、各部へ供給する。
【００３４】
次に、選択回路１５では、競合調整回路１６からの制御信号（選択信号）に従って、読み出しアドレスＲ-addが選択され、シングルポートＲＡＭ１７のアドレス入力端Ａに供給される。
【００３５】
シングルポートＲＡＭ１７では、競合調整回路１６からの書き込みイネーブルＷＥが非アクティブとなるタイミングで、上記アドレス入力端Ａに供給された読み出しアドレスＲ-addに記憶されているデータを読み出して出力端Ｏから出力する。該データは、競合調整回路１６からの制御信号（※４）に従って、ラッチ回路１９に保持され、データＤout2として後段の回路に出力される。
【００３６】
（ｅ）アキュムレータ
上述した構成では、ＦＩＦＯとランダムアクセスメモリとしての使用しか説明していないが、アキュムレータとして用いる場合には、上述した読み出し手順で、読み出しリクエストＲ-req、読み出しアドレスＲ-addに従って、元になるデータを読み出した後、演算を施し、上述した書き込み手順で、同一アドレスに書き込むようにすればよい。
【００３７】
Ｃ．第２実施形態
Ｃ−１．第２実施形態の構成
上述した第１実施形態では、書き込み２系統、読み出し２系統と、シングルポートＲＡＭ１７への負担が大きいので、本第２実施形態では、書き込みと読み出しが独立しているデュアルポートＲＡＭを使用している。ここで、図３は、本発明の第２実施形態の構成を示すブロック図である。なお、図１、図２に対応する部分には同一の符号を付けて説明を省略する。図において、デュアルポートＲＡＭ２０は、書き込みおよび読み出しを並行して行うことができるので、データのＰＵＳＨおよび書き込み系と、データのＰＯＰおよび読み出し系とを、それぞれ独立して設けている。
【００３８】
選択回路１５ａは、図２に示す選択回路１５に相当し、デュアルポートＲＡＭ２０をランダムアクセスする際の書き込みアドレスＷ-addまたは上記ＰＵＳＨリクエストＰＵＳＨ-reqに対するカウント値のいずれかを、後述する競合調整回路１６ａからの制御信号に従って選択し、デュアルポートＲＡＭ２０の書き込みアドレス入力端ＷＡに供給する。また、選択回路１５ｂは、デュアルポートＲＡＭ２０をランダムアクセスする際の読み出しアドレスＲ-addまたはＰＯＰリクエストＰＯＰ-reqに対するカウント値のいずれかを、後述する競合調整回路１６ｂからの制御信号に従って選択し、デュアルポートＲＡＭ２０の読み出しアドレス入力端ＲＡに供給する。
【００３９】
次に、競合調整回路１６ａは、デュアルポートＲＡＭ２０をランダムアクセスする際の書き込みリクエストＷ-reqまたはＰＵＳＨリクエストＰＵＳＨ-reqの発生に従って、ラッチ回路１０，１１、選択回路１２，１５ａに対する制御信号（選択信号やラッチタイミング信号等）を生成し、各部へ供給する。また、競合調整回路１６ｂは、デュアルポートＲＡＭ２０をランダムアクセスする際の読み出しリクエストＲ-reqまたはＰＯＰリクエストＰＯＰ-reqの発生に従って、選択回路１５ｂ、後述するラッチ回路１８，１９に対する制御信号（選択信号やラッチタイミング信号等）を生成し、各部へ供給する。
【００４０】
この第１実施形態では、ＲＡＭとしてシングルポートのものを使用しているので、安価にＦＩＦＯ処理とアキュムレータ処理（またはランダムアクセス処理）を実現できる。
【００４１】
Ｃ−２．第２実施形態の動作
次に、上述した第２実施形態による動作について説明する。
（ａ）ＦＩＦＯとして用いる場合（ＰＵＳＨ）
まず、ＰＵＳＨリクエストでは、ＰＵＳＨリクエストＰＵＳＨ-reqを供給するとともに、データＤin1を供給する。競合調整回路１６ａでは、上記ＰＵＳＨリクエストＰＵＳＨ-reqの発生に従って、制御信号（※１〜※３）、選択回路１５ａへの制御信号（選択信号）を、所定タイミングで発生し、各部へ供給する。
【００４２】
上記データＤin1は、競合調整回路１６ａからの制御信号（※１）に従って、ラッチ回路１０に保持される。次に、上記ラッチ回路１０に保持されたデータＤin1は、選択回路１２において、競合調整回路１６ａからの制御信号（※３）に従って選択され、デュアルポートＲＡＭ２０の入力端子Ｉに供給される。
【００４３】
一方、カウンタ１３では、ＰＵＳＨリクエストＰＵＳＨ-reqが供給されると、カウント値を更新する。次に、更新されたカウント値は、選択回路１５ａにおいて、競合調整回路１６からの制御信号（選択信号）に従って選択され、デュアルポートＲＡＭ２０の書き込みアドレス入力端ＷＡに供給される。
【００４４】
デュアルポートＲＡＭ２０では、上記書き込みアドレス入力端ＷＡに供給されたカウント値をアドレスとして、上記入力端Ｉに供給されたデータＤin1を記憶（ＰＵＳＨ）する。
【００４５】
（ｂ）ＦＩＦＯとして用いる場合（ＰＯＰ）
次に、ＰＯＰリクエストでは、ＰＯＰリクエストＰＯＰ-reqを供給する。競合調整回路１６ｂでは、上記ＰＯＰリクエストＰＯＰ-reqの発生に従って、制御信号（※４）、選択回路１５ｂへの制御信号（選択信号）を、所定タイミングで発生し、各部へ供給する。
【００４６】
カウンタ１４では、ＰＯＰリクエストＰＯＰ-reqが供給されると、カウント値を更新する。次に、選択回路１５ｂでは、競合調整回路１６ｂからの制御信号（選択信号）に従って、更新されたカウント値が選択され、デュアルポートＲＡＭ２０の読み出しアドレス入力端ＲＡに供給される。
【００４７】
デュアルポートＲＡＭ２０では、上記読み出しアドレス入力端ＲＡに供給されたカウント値をアドレスとして、該アドレスに記憶されているデータを読み出して出力端Ｏから出力する。該データは、競合調整回路１６ｂからの制御信号（※４）に従って、ラッチ回路１８に保持され、データＤout1として後段の回路に出力される。
【００４８】
（ｃ）ランダムアクセスメモリ（書き込み）
まず、ランダムアクセスメモリとしてデータを書き込む場合には、書き込みリクエストＷ-req、書き込みアドレスＷ-addを供給するとともに、データＤin2を供給する。競合調整回路１６ａでは、上記書き込みリクエストＷ-reqの発生に従って、制御信号（※２，※３）、選択回路１５ａへの制御信号（選択信号）を、所定タイミングで発生し、各部へ供給する。
【００４９】
上記データＤin2は、競合調整回路１６ａからの制御信号（※２）に従って、ラッチ回路１１に保持される。次に、上記ラッチ回路１１に保持されたデータＤin2は、選択回路１２において、競合調整回路１６ａからの制御信号（※３）に従って選択され、デュアルポートＲＡＭ２０の入力端子Ｉに供給される。
【００５０】
一方、選択回路１５ａでは、競合調整回路１６ａからの制御信号（選択信号）に従って、書き込みアドレスＷ-addが選択され、デュアルポートＲＡＭ２０の書き込みアドレス入力端ＷＡに供給される。
【００５１】
デュアルポートＲＡＭ２０では、上記書き込みアドレス入力端ＷＡに供給された書き込みアドレスＷ-addに従って、記入力端Ｉに供給されたデータＤin2を記憶する。
【００５２】
（ｄ）ランダムアクセスメモリ（読み出し）
次に、ランダムアクセスメモリとしてデータを読み出す場合には、読み出しリクエストＲ-reqとともに、読み出しアドレスＲ-addを供給する。競合調整回路１６ｂでは、上記読み出しリクエストＲ-reqの発生に従って、制御信号（※５）、選択回路１５ｂへの制御信号（選択信号）を、所定タイミングで発生し、各部へ供給する。
【００５３】
次に、選択回路１５ｂでは、競合調整回路１６ｂからの制御信号（選択信号）に従って、読み出しアドレスＲ-addが選択され、デュアルポートＲＡＭ２０の読み出しアドレス入力端ＲＡに供給される。
【００５４】
デュアルポートＲＡＭ２０では、上記読み出しアドレス入力端ＲＡに供給された読み出しアドレスＲ-addに記憶されているデータを読み出して出力端Ｏから出力する。該データは、競合調整回路１６ｂからの制御信号（※５）に従って、ラッチ回路１９に保持され、データＤout2として後段の回路に出力される。
【００５５】
（ｅ）アキュムレータ
上述した構成では、第１実施形態と同様に、ＦＩＦＯとランダムアクセスメモリとしての使用しか説明していないが、アキュムレータとして用いる場合には、上述した読み出し手順で、読み出しリクエストＲ-req、読み出しアドレスＲ-addに従って、元になるデータを読み出した後、演算を施し、上述した書き込み手順で、同一アドレスに書き込むようにすればよい。また、動作クロック内で、読み出し→演算→書き込みの一連の処理が行えると仮定すると、読み出しアドレスＲ-addと書き込みアドレスＷ-addを同一にして、アキュムレート動作が行える。動作クロック内で一連の処理が間に合わなければ、一旦、演算用レジスタに保持し、次の動作同期で書き込むようにすればよい。
【００５６】
この第２実施形態では、ＲＡＭとしてデュアルポートのものを使用し、書き込み系と読み出し系とを分離しているので、競合の発生確立を低減でき、確実に動作する。
【００５７】
Ｄ．第３実施形態
上述した第１実施形態および第２実施形態では、ＦＩＦＯとランダムアクセス（またはアキュムレート）するデータの関係については特定していない。すなわち、ＦＩＦＯするデータとランダムアクセス（またはアキュムレート）するデータとが全く無関係な場合であっても本発明が適用できることを示している。この本第３実施形態では、ＦＩＦＯするデータとアキュムレートするデータとが密接に関連する場合について説明する。
【００５８】
Ｄ−１．基本構成
ここで、図４は、第３実施形態の基本構成を示すブロック図である。図において、加算器２２は、入力されるデータとＲＡＭ２３から読み出されたデータとに所定の係数を乗算した後に加算し、その加算したデータをＲＡＭ２３に書き込む。すなわち、書き込み要求（ＰＵＳＨリクエスト）に対しては、指示されるアドレスのデータを一旦読み出し、入力データとの間で所定の演算を行った後、同一のアドレスに書き込む動作を行う。一方、読み出し要求（ＰＯＰリクエスト）に対しては、指示されるアドレスからデータを読み出して出力する動作を行う。以下、このようにＦＩＦＯのＰＵＳＨに連動してアキュムレートを同時に行う処理（機能）を便宜上アキュムレータＦＩＦＯ処理（機能）と呼ぶことにする。
【００５９】
Ｄ−２．第３実施形態の具体的構成
次に、図５は、本第３実施形態の具体的な構成を示すブロック図である。なお、図１〜図４に対応する部分には同一の符号を付けて説明を省略する。図において、選択回路１５ｃは、シングルポートＲＡＭ１７をアキュムレータ、ＦＩＦＯとして用いる際のＰＵＳＨリクエストＰＵＳＨ-reqに対するカウント値、またはＰＯＰリクエストＰＯＰ-reqに対するカウント値のいずれかを、後述する競合調整回路１６ｃからの制御信号に従って選択し、シングルポートＲＡＭ１７のアドレス入力端Ａに供給する。
【００６０】
次に、競合調整回路１６ｃは、上記ＰＵＳＨリクエストＰＵＳＨ-reqまたは上記ＰＯＰリクエストＰＯＰ-reqの発生に従って、選択回路１５ｃ、シグルポートＲＡＭ１７、ラッチ回路１８，１９に対する制御信号（選択信号やラッチタイミング信号、書き込みイネーブル信号等）を生成し、各部へ供給する。また、ラッチ回路１８は、上記制御信号に従って、シングルポートＲＡＭ１７から出力されるデータを保持し、そのデータを加算器２５に供給する。加算器２５は、一方の入力端に供給されるデータＤinと、上記他方の入力端に供給されるラッチ回路１８からのデータとを適当に重み付けした後に加算し、シングルポートＲＡＭ１７の入力端Ｉに供給するようになっている。また、ラッチ回路１９は、上記制御信号に従って、シングルポートＲＡＭ１７から出力されるデータを保持し、データＤoutとして後段の回路へ出力する。
【００６１】
Ｄ−３．第３実施例の動作
（ａ）ＦＩＦＯとして用いる場合（ＰＵＳＨ）
まず、データＤinとともにＰＵＳＨリクエストＰＵＳＨ-reqが供給されると、競合調整回路１６ｃでは、上記ＰＵＳＨリクエストＰＵＳＨ-reqの発生に従って、選択回路１５ｃへの制御信号（選択信号）およびシングルポートＲＡＭ１７への書き込みイネーブルＷＥを、所定タイミングで発生し、各部へ供給する。具体的には、第１のタイミングで、選択回路１５ｃでカウンタ１３のカウント値を選択するとともに書き込みイネーブルＷＥを読み出しに設定することでカウンタ１３のカウント値に対応したアドレスのデータを読み出してラッチ回路１８でラッチする。そして、続く第２のタイミングで、書き込みイネーブルＷＥを書き込みに設定することで、第１のタイミングで読み出したデータと入力データＤinとの間の演算結果（加算器２５の出力）を同一のアドレスに書き込む。
【００６２】
（ｂ）アキュムレータＦＩＦＯ（ＰＯＰ）
次に、ＰＯＰリクエストでは、ＰＯＰリクエストＰＯＰ-reqを供給する。競合調整回路１６ｃでは、上記ＰＯＰリクエストＰＯＰ-reqの発生に従って、制御信号（※２）、選択回路１５ｃへの制御信号（選択信号）、およびシングルポートＲＡＭ１７への書き込みイネーブルＷＥを、所定タイミングで発生し、各部へ供給する。
【００６３】
カウンタ１４では、ＰＯＰリクエストＰＯＰ-reqが供給されると、カウント値を更新する。次に、選択回路１５ｃでは、競合調整回路１６ｃからの制御信号（選択信号）に従って、更新されたカウント値が選択され、シングルポートＲＡＭ１７のアドレス入力端Ａに供給される。
【００６４】
シングルポートＲＡＭ１７では、上記アドレス入力端Ａに供給されたカウント値をアドレスとして、該アドレスに記憶されているデータを読み出して出力端Ｏから出力する。該データは、競合調整回路１６ｃからの制御信号（※２）に従って、ラッチ回路１９に保持され、データＤoutとして後段の回路に出力される。
【００６５】
なお、この第３実施形態（図５の構成）でアキュムレートを伴わない通常のＦＩＦＯ処理を行うには、入力データＤinに乗算する係数を「１」にするとともに、競合調整回路１６ｃにより各部を適切に制御すればよい。また、この第３実施形態を第２実施形態（図３の構成）のようにデュアルポートＲＡＭで実現することも可能である。
【００６６】
Ｅ．第４実施形態
次に、本発明の第４実施形態について説明する。この第４実施形態では、第３実施形態と同様の処理（アキュムレータＦＩＦＯ諸Ｒい）を、シングルポートＲＡＭをダブルバッファ構成で使用して行っている。
Ｅ−１．第４実施形態の構成
ここで、図６は、第４実施形態の構成を示すブロック図である。なお、図１〜図５に対応する部分には同一の符号を付けて説明を省略する。図において、選択回路２８ａは、バッファ切替信号ＢuffＳＷに従って、カウンタ１３のカウンタ値またはカウンタ１４のカウンタ値のいずれか一方を選択し、シングルポートＲＡＭ１７ａのアドレス入力端Ａに供給する。具体的には、選択回路２８ａは、バッファ切替信号ＢuffＳＷが「１」のとき、カウンタ１３のカウンタ値をシングルポートＲＡＭ１７ａに供給し、バッファ切替信号ＢuffＳＷが「０」のとき、カウンタ１４のカウンタ値をシングルポートＲＡＭ１７ａに供給する。
また、選択回路２８ｂは、バッファ切替信号ＢuffＳＷに従って、カウンタ１４のカウンタ値またはカウンタ１３のカウンタ値のいずれか一方を選択し、シングルポートＲＡＭ１７ｂのアドレス入力端Ａに供給する。具体的には、選択回路２８ｂは、バッファ切替信号ＢuffＳＷが「１」のとき、カウンタ１４のカウンタ値をシングルポートＲＡＭ１７ｂに供給し、バッファ切替信号ＢuffＳＷが「０」のとき、カウンタ１３のカウンタ値をシングルポートＲＡＭ１７ｂに供給する。
【００６７】
遅延回路２９は、ＰＵＳＨリクエストＰＵＳＨ-reqを遅延させ、ＡＮＤ回路３０ａの一方の入力端、およびＡＮＤ回路３０ｂの一方の入力端に供給する。ＡＮＤ回路３０ａは、バッファ切替信号ＢuffＳＷが「１」のとき、遅延されたＰＵＳＨリクエストＰＵＳＨ-reqが「０」で、シングルポートＲＡＭ１７ａの書き込みイネーブルＷＥをアクティブとする。また、ＡＮＤ回路３０ｂは、バッファ切替信号ＢuffＳＷが「０」のとき、遅延されたＰＵＳＨリクエストＰＵＳＨ-reqが「０」で、シングルポートＲＡＭ１７ｂの書き込みイネーブルＷＥをアクティブとする。
【００６８】
次に、シングルポートＲＡＭ１７ａは、書き込みイネーブルＷＥがアクティブのとき、アドレス入力端に供給されるカウンタ値（カウンタ１３またはカウンタ１４）をアドレスとし、入力端Ｉに供給されるデータを記憶する。また、シングルポートＲＡＭ１７ａは書き込みイネーブルＷＥが非アクティブのとき、アドレス入力端に供給されるカウンタ値（カウンタ１３またはカウンタ１４）をアドレスとし、該アドレスに記憶されているデータを読み出し、出力端Ｏから出力する。一方、シングルポートＲＡＭ１７ｂは、書き込みイネーブルＷＥがアクティブのとき、アドレス入力端に供給されるカウンタ値（カウンタ１３またはカウンタ１４）をアドレスとし、入力端Ｉに供給されるデータを記憶する。また、シングルポートＲＡＭ１７ｂは書き込みイネーブルＷＥが非アクティブのとき、アドレス入力端に供給されるカウンタ値（カウンタ１３またはカウンタ１４）をアドレスとし、該アドレスに記憶されているデータを読み出し、出力端Ｏから出力する。
【００６９】
選択回路４０ａは、バッファ切替信号ＢuffＳＷに従って、シングルポートＲＡＭ１７ａの出力データまたはシングルポートＲＡＭ１７ｂの出力データのいずれか一方を選択し、演算器４２に供給する。具体的には、選択回路４０ａは、バッファ切替信号ＢuffＳＷが「１」のとき、シングルポートＲＡＭ１７ａの出力データを演算器４２に供給し、バッファ切替信号ＢuffＳＷが「０」のとき、シングルポートＲＡＭ１７ｂの出力データを演算器４２に供給する。また、選択回路４０ｂは、バッファ切替信号ＢuffＳＷに従って、シングルポートＲＡＭ１７ｂの出力データまたはシングルポートＲＡＭ１７ａの出力データのいずれか一方を選択し、データＤoutとして出力する。具体的には、選択回路４０ｂは、バッファ切替信号ＢuffＳＷが「１」のとき、シングルポートＲＡＭ１７ｂの出力データをデータＤoutとして出力し、バッファ切替信号ＢuffＳＷが「０」のとき、シングルポートＲＡＭ１７ａの出力データをデータＤoutとして出力する。
【００７０】
Ｅ−２．第４実施形態の動作
次に、上述した第４実施形態の動作について説明する。ここで、図７は、第４実施形態の動作を説明するためのタイミングチャートである。シングルポートＲＡＭ１７ａ，１７ｂへのＰＵＳＨまたはＰＯＰは、バッファ切替信号ＢuffＳＷを交互に切替ることにより行われる。バッファ切替信号ＢuffＳＷが「１」のときには、シングルポートＲＡＭ１７ａへＰＵＳＨ（データ書き込み）が行われ、シングルポートＲＡＭ１７ｂへＰＯＰ（データ読み出し）が行われる一方、バッファ切替信号ＢuffＳＷが「０」のときには、シングルポートＲＡＭ１７ａへＰＯＰ（データ読み出し）が行われ、シングルポートＲＡＭ１７ｂへＰＵＳＨ（データ書き込み）が行われる
【００７１】
また、アキュムレータＦＩＦＯとして動作する場合には、ＰＵＳＨリクエストＰＵＳＨ-reqを供給すると、まず、遅延されたＰＵＳＨリクエストＰＵＳＨ-reqが非アクティブのときに、カウンタ１３または１４のカウンタ値で示されるアドレスのデータがシングルポートＲＡＭ１７ａまたは１７ｂから読み出され、選択回路４０ａを介して演算器４２に供給される。演算器４２では、上記読み出されたデータと入力されたデータＤinとを演算する。該演算されたデータは、遅延されたＰＵＳＨリクエストＰＵＳＨ-reqがアクティブのときに、シングルポートＲＡＭ１７ｂの同一アドレスに記憶される。
【００７２】
この第４実施形態では、ＰＵＳＨとＰＯＰの競合を回避して、確実なアキュムレータＦＩＦＯ動作が行える。
【００７３】
【発明の効果】
以上、説明したように、この発明によれば、記憶手段をＦＩＦＯとして用いる場合には、前記アドレス生成手段によってＦＩＦＯ用のアドレスを生成し、該アドレスを切替手段を介して記憶手段に供給し、ＰＵＳＨもしくはＰＯＰを行い、一方、アキュムレータとして用いる場合には、ランダムアクセス用のアドレスを切替手段を介して記憶手段に供給し、該アドレスでデータを読み出し、外部で演算した後、再び、同一アドレスに書き込むようにするようにしたので、アキュムレータとＦＩＦＯとを一体とすることが可能となり、回路サイズを小さくすることができるという利点が得られる。
【図面の簡単な説明】
【図１】  本発明の実施形態の基本構成を示すブロック図である。
【図２】  第１実施形態の構成を示すブロック図である。
【図３】  第２実施形態の構成を示すブロック図である。
【図４】  本発明をアキュムレータＦＩＦＯとして用いる場合の基本構成を示すブロック図である。
【図５】  本発明をアキュムレータＦＩＦＯとして用いる場合の具体的な構成を示すブロック図である。
【図６】  第４実施形態の構成を示すブロック図である。
【図７】  第４実施形態の動作を説明するためのタイミングチャートである。
【図８】  従来のアキュムレータとＦＩＦＯの構成を示すブロック図である。
【符号の説明】
１，３  ポインタ（アドレス生成手段）
２，４  選択回路（切替手段）
５  デュアルポートＲＡＭ（記憶手段）
１０，１１  ラッチ回路
１２  選択回路
１３  カウンタ（アドレス生成手段、書き込みアドレス生成手段）
１４  カウンタ（アドレス生成手段、読み出しアドレス生成手段）
１５  選択回路（切替手段）
１５ａ  選択回路（書き込みアドレス切替手段）
１５ｂ  選択回路（読み出しアドレス切替手段）
１５ｃ  選択回路（切替手段）
１６  競合調整回路（調整手段）
１６ａ  競合調整回路（書き込み調整手段）
１６ｂ，１６ｃ  競合調整回路（読み出し調整手段）
１７，１７ａ，１７ｂ  シングルポートＲＡＭ（記憶手段）
１８，１９  ラッチ回路
２０  デュアルポートＲＡＭ（記憶手段）
２５  加算器
２９  遅延回路
３０ａ，３０ｂ  ＡＮＤ回路
４０ａ，４０ｂ  選択回路
【図１】
0003755249.tif 000002
【図２】
0003755249.tif 000003
【図３】
0003755249.tif 000004
【図４】
0003755249.tif 000005
【図５】
0003755249.tif 000006
【図６】
0003755249.tif 000007
【図７】
0003755249.tif 000008
【図８】
0003755249.tif 000009