(57)【特許請求の範囲】
【請求項１】
第１のデジタルデータに対して多段階の演算処理を施すことにより第２のデジタルデータを生成するデジタル信号処理装置において、上記多段階の演算処理の流れを制御する分岐命令を記憶する第１のメモリと、上記多段階の演算処理の各段の動作を制御する演算命令を記憶する第２のメモリと、上記第１及び第２のメモリに対してそれぞれ一定の順序でアドレスを指定し、上記分岐命令及び上記演算命令を読み出す第１のメモリ制御回路と、上記第１のデジタルデータに対して、上記第１及び第２のメモリから読み出される上記分岐命令及び上記演算命令に従う演算処理を施す演算回路と、を備え、上記第１のメモリ制御回路は、上記分岐命令に応答して上記第２のメモリに対するアドレスを所定のアドレスへジャンプさせることを特徴とするデジタル信号処理装置。
【請求項２】
上記第１のメモリ制御回路は、上記第１のメモリから上記分岐命令を先読みして適数ステップ分を一時的に保持し、保持した順に上記分岐命令を出力するＦＩＦＯ方式のプログラムスタックを含むことを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項３】
上記第１のメモリ制御回路は、上記演算命令の上記第２のメモリからの読み出しアドレスに応答して、上記分岐命令の上記第１のメモリからの読み出しを待機させることを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項４】
上記演算回路に接続され、上記第１及び第２のデジタルデータと共に上記演算回路の処理過程の中間データを記憶する第３のメモリと、上記分岐命令及び上記演算命令に従って上記第３のメモリのアドレスを指定する第２のメモリ制御回路と、をさらに備えたことを特徴とする請求項１に記載のデジタル信号処理回路。
【請求項５】
上記第２のメモリ制御回路は、上記分岐命令に基づいて初期アドレスを指定すると共に、上記演算命令に基づいて初期アドレスを順次更新することを特徴とする請求項４に記載のデジタル信号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、演算処理能力を向上させたデジタル信号処理装置に関する。
【０００２】
【従来の技術】
デジタルオーディオ機器等においては、取り扱う信号に対して各種のフィルタリング処理を施すデジタルフィルタが用いられる。このようなデジタルフィルタは、一般的に、複数のレジスタに加算器及び乗算器を組み合わせたデジタル信号処理装置( DSP:Digital Signal Processor)により構成される。
【０００３】
図８は、一般的なデジタルフィルタの構成を示す回路図である。
【０００４】
デジタルフィルタは、加算器１、第１〜第３の乗算器２ａ〜２ｃ、第１及び第２のラッチ３ａ、３ｂにより構成される。第１の乗算器２ａは、入力されるデジタルデータＸ(n)に対して第１のフィルタ係数ｈ(a)を乗算する。第１のラッチ３ａは、入力されるデジタルデータＸ(n)をラッチし、１データ期間保持する。第２の乗算器２ｂは、第１のラッチ３ａに保持された１つ前のデジタルデータＸ(n- 1)に対して第２のフィルタ係数ｈbを乗算する。第２のラッチ３ｂは、加算器１から出力されるデジタルデータＹ(n)を保持し、１データ期間保持する。第３の乗算器２ｃは、第２のラッチ３ｂに保持された１つ前のデジタルデータＹ(n-1)に対して第３のフィルタ係数ｈcを乗算する。そして、加算器１は、第１〜第３の乗算器２ａ〜２ｃから出力される乗算結果をそれぞれ加算し、新たなデジタルデータＹ(n)として出力する。従って、入力デジタルデータＸ(n)に対し、
Ｙ(n)＝Ｘ(n)・ｈa＋Ｘ(n-1)・ｈb＋Ｙ(n-1)・ｈc
なる式によって出力デジタルデータＹ(n)が生成される。
【０００５】
図９は、一般的なデジタル信号処理装置の構成を示すブロック図である。
【０００６】
デジタル信号処理装置は、演算回路１１、ＲＡＭ１２、メモリ制御回路１３、ＲＯＭ１４、命令デコーダ１５により構成される。演算回路１１は、加算器及び乗算器を含み、命令デコーダ１５からの指示に応答して、入力されるデジタルデータＸ(n)及びＲＡＭ１２に記憶された中間データまたは各種係数データに対して各種の演算処理を施し、最終的に得られる演算結果をデジタルデータＹ(n)として出力する。ＲＡＭ１２は、演算回路１１に入力されるデジタルデータＸ(n)及び出力されるデジタルデータＹ(n)や、演算回路１１の演算過程で生成される中間データを一時的に記憶する。さらにＲＡＭ１２は、各種の係数データも記憶する。メモリ制御回路１３は、命令デコーダ１５からの指示に応答し、演算回路１１の演算動作に応じて、必要なデータをＲＡＭ１２から読み出し、演算回路１１へ供給する。
【０００７】
ＲＯＭ１４は、演算回路１１の演算手順を指示するプログラムを記憶し、各命令を一定周期のクロックに従って所定の順序で読み出して命令デコーダ１５に供給する。命令デコーダ１５は、ＲＯＭ１４から入力される命令を解読し、演算回路１１の演算動作を制御すると共に、メモリ制御回路１３の読み出し及び書き込み動作を制御する。
【０００８】
ここで、図８に示すデジタルフィルタを実現する場合、ＲＯＭ１４には、例えば、以下の演算手順を実行させるようなプログラムが格納される。ここで、ＲＡＭ１２には、１つ前のデータＸ(n-1)、Ｙ(n-1)及びフィルタ係数ｈa、ｈb、ｈcが格納されているものとする。
【０００９】
▲１▼：ＲＡＭ１２からフィルタ係数ｈaを読み出し、入力されるデータＸ(n)に乗算して、その積をＲＡＭ１２に記憶する。同時に、データＸ(n)をＲＡＭ１２に記憶する。
【００１０】
▲２▼：ＲＡＭ１２から１つ前のデータＸ(n-1)及びフィルタ係数ｈbを読み出し、互いに乗算して、その積をＲＡＭ１２に記憶する。
【００１１】
▲３▼：ＲＡＭ１２から▲１▼の処理で記憶された積及び第２ステップで記憶された積を読み出し、互いに加算して、その和をＲＡＭ１２に記憶する。
【００１２】
▲４▼：ＲＡＭ１２から１つ前のデータＹ(n-1)及びフィルタ係数ｈcを読み出し、互いに乗算して、その積をＲＡＭ１２に記憶する。
【００１３】
▲５▼：ＲＡＭ１２から▲３▼の処理で記憶された和及び▲４▼の処理で記憶された積を読み出し、互いに加算して、その和をデータＹ(n)として出力する。同時に、データＹ(n)をＲＡＭ１２に記憶する。
【００１４】
以上の演算動作においては、乗算処理及び加算処理が各ステップで１回ずつとなるため、演算回路１１で乗算器及び加算器を複数設ける必要がなく、回路構成が簡略化される。
【００１５】
【発明が解決しようとする課題】
ＲＯＭ１４に記憶される制御プログラムは、一般的に、演算の順序や各データ（係数）の読み出し順序を指示する分岐命令と、乗算や加算などの具体的な演算を実行させる演算命令とによって構成される。この分岐命令及び演算命令については、それぞれが混在して所定の順序でＲＯＭ１４に記憶されており、ＲＯＭ１４から所定の順序で読み出されて命令デコーダ１５へ供給されることになる。このため、信号処理が複雑化して演算手順が多くなると、制御プログラムも大きくなり、信号処理に要する時間は長くなる。
【００１６】
そこで本発明は、演算手順が多くなった場合でも、信号処理に要する時間が長くなるのを防止することを目的とする。
【００１７】
【課題を解決するための手段】
本発明は、上述の課題を解決するために成されたもので、その特徴とするところは、第１のデジタルデータに対して多段階の演算処理を施すことにより第２のデジタルデータを生成するデジタル信号処理装置において、上記多段階の演算処理の流れを制御する分岐命令を記憶する第１のメモリと、上記多段階の演算処理の各段の動作を制御する演算命令を記憶する第２のメモリと、上記第１及び第２のメモリに対してそれぞれ一定の順序でアドレスを指定し、上記分岐命令及び上記演算命令を読み出す第１のメモリ制御回路と、上記第１のデジタルデータに対して、上記第１及び第２のメモリから読み出される上記分岐命令及び上記演算命令に従う演算処理を施す演算回路と、を備え、上記第１のメモリ制御回路は、上記分岐命令に応答して上記第２のメモリに対するアドレスを所定のアドレスへジャンプさせることにある。
【００１８】
本発明によれば、分岐命令と演算命令とが並列に処理されるようになり、短時間で多くのステップを実行することができる。
【００１９】
【発明の実施の形態】
図１は、本発明のデジタル信号処理装置の構成を示すブロック図であり、図２は、その動作例のプログラムアドレスの変化を示すタイミング図である。
【００２０】
デジタル信号処理装置は、演算回路２１、ＲＡＭ２２、第１及び第２のメモリ制御回路２３、２４、第１及び第２の第１ＲＯＭ２５、２６、分岐命令デコーダ２７及び演算命令デコーダ２８により構成される。
【００２１】
演算回路２１は、加算器及び乗算器を含み、演算命令デコーダ２８からの指示に応答して、入力されるデジタルデータＸ(n)及びＲＡＭ２２に記憶された中間データに対して各種の演算処理を施す。この演算回路２１は、図９に示す演算回路１１と同等のものであり、最終的に得られる演算結果をデジタルデータＹ(n)として出力する。
【００２２】
ＲＡＭ２２は、演算回路２１に入力されるデジタルデータＸ(n)及び出力されるデジタルデータＹ(n)や、演算回路２１の演算過程で生成される中間データ、さらには、各種の係数データを記憶する。第２メモリ制御回路２４は、後述する分岐命令デコーダ２７からの指示に応答し、演算回路２１の演算動作において必要となるデータを指定するデータアドレスＤＡをＲＡＭ２２に供給する。これにより、演算回路２１の各演算処理においては、所望のデータがＲＡＭ２２から読み出されて取り込まれる。
【００２３】
第１ＲＯＭ２５は、演算手順を指示するプログラムの内、主に分岐命令を記憶し、第２ＲＯＭ２６は、演算手順を指示するプログラムの内、主に演算命令を記憶する。第１メモリ制御回路２３は、一定周期のクロック及び後述する分岐命令デコーダ２７からの指示に応答して、分岐命令プログラムを指定するプログラムアドレスＰＡ１を発生する。同時に、第１メモリ制御回路２３は、プログラムアドレスＰＡ１に同期して、演算命令プログラムを指定するプログラムアドレスＰＡ２を発生する。これらのプログラムアドレスＰＡ１、ＰＡ２については、それぞれ一定のクロックに応答して順次インクリメントされるものであり、その初期値が分岐命令デコーダ２７の指示に応答して設定される。
【００２４】
例えば、図２に示すように、プログラムアドレスＰＡ１を順次インクリメントする過程において、「５」に達した時点でＪＵＭＰ指示を発生し、プログラムアドレスＰＡ２のインクリメント動作を開始させる。また、プログラムアドレスＰＡ１は、プログラムアドレスＰＡ２とのタイミングの整合を得るため、「７」に達した時点で一旦インクリメントを停止し、プログラムアドレスＰＡ２が「４」に達してＳＴＡＲＴ指示が与えられるまで待機する。これにより、プログラムアドレスＰＡ１が「１０」に到達し、プログラムアドレスＰＡ２に対してＪＵＭＰ指示が与えられるとき、プログラムアドレスＰＡ２が「６」まで達しているように構成される。
【００２５】
分岐命令デコーダ２７は、第１ＲＯＭ２５から読み出される分岐命令ＯＣ１を解読し、第１メモリ制御回路２３に対して演算順序等を決定するための指示を与えると共に、第２メモリ制御回路２４に対して各演算処理に応じたデータを指定するための指示を与える。演算命令デコーダ２８は、第２ＲＯＭ２６から読み出される演算命令ＯＣ２を解読し、演算回路２１に対して、各種の演算を実行させるための指示を与える。
【００２６】
以上のデジタル信号処理装置においては、第１ＲＯＭ２５及び第２ＲＯＭ２６が分岐命令デコーダ２７及び演算命令デコーダ２８と共に並列に配置され、分岐命令と演算命令とが互いにタイミングの整合をとりながら並列に実行される。従って、単一のＲＯＭに分岐命令と演算命令とが混在して記憶された場合と比較して、単位時間あたりに処理できるステップ数をほぼ２倍にすることができる。
【００２７】
図３は、演算回路２１及びＲＡＭ２２の構成例を示すブロック図であり、図４は、第１メモリ制御回路２３及び第２メモリ制御回路２４の構成例を示すブロック図である。
【００２８】
演算回路２１は、第１〜第４のレジスタ３１〜３４、第１〜第３のセレクタ３５〜３７、乗算器３８及び加算器３９により構成される。また、ＲＡＭ２２は、第１ＲＡＭ４１及び第２ＲＡＭ４２を含む。
【００２９】
第１ＲＡＭ４１は、入力データＸ(n)及び出力データＹ(n)を記憶すると共に、演算回路２１の演算処理の過程で生じる中間データを記憶する。第２ＲＡＭ４２は、各種の係数データを記憶する。これらのＲＡＭ４１、４２は、第２メモリ制御回路２４から供給されるデータアドレスＤＡ１、ＤＡ２に応答して各データの読み出し及び書き込みを行う。
【００３０】
第１セレクタ３５は、第１ＲＡＭ４１及び外部入力に接続され、第１ＲＡＭ４１から読み出されるデータまたは外部からの入力データＸ(n)の何れか一方を選択して出力する。第１レジスタ３１は、第１セレクタ３５に接続され、第１セレクタ３５により選択されたデータを取り込んで保持する。第２レジスタ３２は、第２ＲＡＭ４２に接続され、第２ＲＡＭ４２から読み出されたデータを取り込んで保持する。乗算器３８は、第１レジスタ３１及び第２レジスタ３２に接続され、各レジスタ３１、３２に保持されたデータを互いに乗算し、乗算結果を出力する。第３レジスタ３３は、乗算器３８に接続され、乗算器３８から入力される乗算結果を取り込んで保持する。第２セレクタ３６は、第４レジスタ３４及びデータ「０」に接続され、第４レジスタ３４に保持されたデータまたは「０」の何れか一方を選択して出力する。加算器３９は、第３レジスタ３３及び第２セレクタ３６に接続され、第３レジスタ３３に保持されたデータと第２セレクタ３６で選択されたデータとを加算し、加算結果を出力する。第４レジスタ３４は、加算器３９に接続され、加算器３９から入力される加算結果を取り込んで保持する。第３セレクタ３７は、第１セレクタ３５及び第４レジスタ３４に接続され、第１セレクタ３５で選択されたデータまたは第４レジスタ３４に保持されたデータの何れか一方を選択して出力する。この第３セレクタ３７で選択されたデータは、第１ＲＡＭ４１に供給され、データアドレスＤＡ１によって指定されるアドレスに書き込まれる。
【００３１】
以上の演算回路２１において、各セレクタ３５〜３７の選択動作は、後述する演算命令デコーダ２８からの指示に従い、各レジスタ３１〜３４の取り込み動作は、一定周期の基準クロックに従うように制御される。
【００３２】
第１メモリ制御回路２３は、プログラムスタック５１及びプログラムポインタ５２を含む。プログラムスタック５１は、ＦＩＦＯ(First In First Out)方式のレジスタであり、分岐命令デコーダ２７から供給されるプログラムアドレスＰＡ１を２つ分記憶する２つの領域(1)、(2)を有する。ここで、第１領域(1)は、分岐命令デコーダ２７から供給されるプログラムアドレスＰＡ１を順次取り込み、所定のタイミングで第２領域(2)へ転送する。そして、第２領域(2)は、インクリメント機能を備えており、第１領域(1)から取り込んだプログラムアドレスＰＡ１を先頭アドレスとし、演算回路２１の各レジスタ３１〜３４の動作に同期するように、基準クロックに従う周期で「１」ずつ増加させて繰り返し出力する。プログラムポインタ５２は、インクリメント機能を有するレジスタによって構成される。プログラムポインタ５２は、分岐命令デコーダ２７から供給されるプログラムアドレスＰＡ２を記憶し、そのプログラムアドレスＰＡ２を先頭アドレスとし、プログラムスタック５１と同様に、基準クロックに従う周期で「１」ずつ増加させて繰り返し出力する。これにより、各ＲＯＭ２５、２６では、分岐命令デコーダ２７の指示に従い、分岐命令デコーダ２７から供給されるプログラムアドレスＰＡ１、ＰＡ２を先頭に、それぞれのアドレスに記憶されたプログラムが順次読み出されることになる。この第１メモリ制御回路２３において、プログラムスタック５１の第１領域(1)から第２領域(2)へのプログラムアドレスＰＡ１の転送、プログラムアドレスＰＡ１の更新は、分岐命令デコーダ２７の指示に従うタイミングで行われる。
【００３３】
第２メモリ制御回路２４は、第１データポインタ５３及び第２データポインタ５４を含む。第１データポインタ５３は、分岐命令デコーダ２７から供給されるデータアドレスＤＡ１を記憶し、第２データポインタ５４は、同じく分岐命令デコーダ２７から供給されるデータアドレスＤＡ２を記憶する。これらのデータポインタ５３、５４は、データアドレスＤＡ１、ＤＡ２をＲＡＭ２２へ供給した後、新たに分岐命令デコーダ２７から供給されるデータアドレスＤＡ１、ＤＡ２によって内容が更新される。この第２のメモリ制御回路２４において、データアドレスＤＡ１、ＤＡ２の更新は、第１メモリ制御回路２３と同様に、分岐命令デコーダ２７の指示に従うタイミングで行われる。
【００３４】
以上の構成によれば、第１ＲＯＭ２５から読み出される分岐命令が、第１メモリ制御回路２３及び第２メモリ制御回路２４に供給されると同時に、第２ＲＯＭ２６から読み出される演算命令が、演算回路２１に供給される。このため、分岐処理と演算処理とが並列して進み、演算効率が向上する。
【００３５】
図５は、本発明のデジタル信号処理装置を図８に示すようなデジタルフィルタとして動作させる場合の制御プログラムのリストであり、図６は、その制御プログラムに対応する中間データ及び係数データを記憶するＲＡＭ２２の内容を示すリストである。
【００３６】
第１ＲＯＭ２５は、プログラムアドレスＰＡ１として０番地〜１７番地を有し、各番地には、図５（ａ）に示すような分岐命令が記憶されている。これらの分岐命令は、それぞれ以下のような動作を指示するものである。
【００３７】
PS<=n：プログラムスタック５１にアドレス「ｎ」を設定
Start PA2>=n：プログラムアドレスＰＡ２が「ｎ」になったときにプログラムスタック５１からプログラムアドレスＰＡ１を取り込んで動作を開始
DA1=n：第１データポインタ５３にアドレス「ｎ」を設定
DA2=n：第２データポインタ５４にアドレス「ｎ」を設定
PA2=n：プログラムポインタ５２にアドレス「ｎ」を設定
第２ＲＯＭ２６は、プログラムアドレスＰＡ２として０番地〜１４番地を有し、各番地には、図５（ｂ）に示すような演算命令が記憶されている。これらの演算命令は、それぞれ以下のような動作を指示するものである。
【００３８】
R1=M1[DA1]：第１ＲＡＭ４１のＤＡ１番地からデータを読み出して第１レジスタ３１へ格納
R2=M2[DA2]：第２ＲＡＭ４２のＤＡ２番地からデータを読み出して第２レジスタ３２へ格納
R3=R1*R2：第１レジスタ３１のデータと第２レジスタ３２のデータとを乗算した積を第３レジスタ３３に格納
R1=X(n)：第１レジスタ３１に入力データＸ(n)を格納
R2=M2[++DA2]：ＤＡ２に「１」を加算して更新し、第２ＲＡＭ４２のＤＡ２番地からデータを読み出して第２レジスタ３２に格納
M1[DA1]=X(n)：第１ＲＡＭ４１のＤＡ１番地に入力データＸ(n)を書き込む
R4+=R3：第４レジスタ３４のデータに第３レジスタ３３のデータを加算して第４レジスタ３４に格納
R1=M1[++DA1]：ＤＡ１に「１」を加算して更新し、第１ＲＡＭ４１のＤＡ１番地からデータを読み出して第１レジスタ３１に格納
M1[DA1]=R4：第１ＲＡＭ４１のＤＡ１番地に第４レジスタ３４のデータを書き込む
ここで、演算回路２１において同時に実行可能な動作については、同一のアドレスに記憶されており、１ステップで全て実行される。
【００３９】
第１の第１ＲＡＭ４１は、データアドレスＤＡ１として０番地〜３番地を有し、各番地には、図６（ａ）に示すように、第１の中間データＡ１、Ｂ１及び第２の中間データＡ２、Ｂ２がそれぞれ記憶される。これらの中間データＡ１、Ｂ１、Ａ２、Ｂ２については、演算命令に従って順次書き換えられる。第２の第２ＲＡＭ４２は、データアドレスＤＡ２として０番地〜５番地を有し、各番地には、フィルタ係数ｈb1、ｈa1、ｈc1、ｈb2、ｈa2、ｈc2が格納される。これらのフィルタ係数については、演算命令によって書き換えられることはないが、デジタルフィルタの特性を変更するために書き換えが可能になっている。
【００４０】
以上の制御プログラムに従う本発明のデジタル信号処理装置の動作を、図７に従って説明する。この動作では、第１の特性のフィルタリング処理を施した後、異なる第２の特性のフィルタリング処理を施し、さらに、第１の特性のフィルタリング処理を再度施す場合を示している。
【００４１】
ステップ１では、プログラムアドレスＰＡ１及びプログラムアドレスＰＡ２がそれぞれ「０」となり、第１ＲＯＭ２５及び第２ＲＯＭ２６の０番地に記憶された分岐命令及び演算命令がそれぞれ実行される。これにより、プログラムスタック５１には、プログラムアドレスＰＡ１として「３」が設定される。このとき、プログラムアドレスＰＡ２は、「０」のまま維持される。ステップ２でプログラムアドレスＰＡ１が「１」となると、第１ＲＯＭ２５の１番地に記憶された分岐命令が実行され、プログラムスタック５１にプログラムアドレスＰＡ１として「８」が設定される。ステップ３でプログラムアドレスＰＡ１が「２」になると、第１ＲＯＭ２５の２番地に記憶された分岐命令が実行される。ここでは、プログラムアドレスＰＡ２が「０」のまま待機しているため、待つことなくプログラムスタック５１からプログラムアドレスＰＡ１として「３」が取り出され、プログラムアドレスＰＡ１を「３」として動作が開始される。このとき、プログラムスタック５１から「３」が読み出されると、第２領域(2)に格納されている「８」が第１領域(1)へ移される。
【００４２】
ステップ４〜ステップ６でプログラムアドレスＰＡ１が「３」〜「５」まで順に変化すると、第１ＲＯＭ２５の３番地〜５番地に記憶された分岐命令が順次実行される。これにより、第１データポインタ５３、５４及びプログラムポインタ５２にデータアドレスＤＡ１、ＤＡ２及びプログラムアドレスＰＡ２として「０」、「０」及び「１」が設定される。
【００４３】
ステップ７では、プログラムアドレスＰＡ１が「６」となり、第１ＲＯＭ２５の７番地に記憶された分岐命令が実行されてプログラムスタック５１にプログラムアドレスＰＡ１として「３」が設定される。このとき、ステップ６でプログラムポインタ５２に「１」が設定されているため、第２ＲＯＭ２６の１番地に記憶された演算命令が実行される。これにより、第１ＲＡＭ４１の０番地から読み出される中間データＡ１が第１レジスタ３１に格納され、第２ＲＡＭ４２の０番地から読み出されるフィルタ係数ｈb1が第２レジスタ３２に格納される。ここで、中間データＡ１は、１つ前に入力されている入力データＸ(n-1)である。
【００４４】
ステップ８でプログラムアドレスＰＡ１が「７」となると、第１ＲＯＭ２５の７番地に記憶された分岐命令が実行され、プログラムアドレスＰＡ２が「４」になるまで動作を停止する。このとき、プログラムアドレスＰＡ２は「２」となり、第２ＲＯＭ２６の２番地に記憶された演算命令が実行される。これにより、第１レジスタ３１に格納された中間データＡ１、即ち、１つ前の入力データＸ(n-1)と第２レジスタ３２に格納されたフィルタ係数ｈb1との積〔ｈb1・Ｘ(n-1)〕が第３レジスタ３３に格納される。そして、第１レジスタ３１には、入力データＸ(n)が格納され、第２レジスタ３２には、第２ＲＡＭ４２の１番地から読み出されるフィルタ係数ｈa1が格納される。さらに、第１ＲＡＭ４１の０番地には、次の演算処理に備えて、入力データＸ(n)が中間データＡ１として新たに書き込まれる。
【００４５】
ステップ９では、プログラムアドレスＰＡ１は停止したままであり、プログラムアドレスＰＡ２のみが更新されて「３」となり、第２ＲＯＭ２６の３番地に記憶された演算命令が実行される。これにより、第１レジスタ３１に格納されたデータＸ(n)と第２レジスタ３２に格納されたフィルタ係数ｈa1との積〔ｈa1・Ｘ(n)〕が第３レジスタ３３に格納される。また、それまで第３レジスタ３３に格納されていた積〔ｈb1・Ｘ(n-1)〕は、第４レジスタ３４に格納されていたデータと加算されて第４レジスタ３４に格納される。第４レジスタ３４には、最初「０」が格納されているため、ここでは、第３レジスタ３３に格納されていた積〔ｈb1・Ｘ(n-1)〕がそのまま第４レジスタ３４に格納される。そして、第１レジスタ３１に、第１ＲＡＭ４１の１番地から読み出される中間データＢ１が格納され、第２レジスタ３２に、第２ＲＡＭ４２の２番地から読み出されるフィルタ係数ｈc1が格納される。ここで、中間データＢ１は、１つ前に出力された出力データＹ(n-1)である。
【００４６】
ステップ１０では、プログラムアドレスＰＡ２が「４」となり、第２ＲＯＭ２６の４番地に格納された演算プログラムが実行される。これにより、第１レジスタ３１に格納された中間データＢ１、即ち、１つ前の出力データＹ(n-1)と第２レジスタ３２に格納されたフィルタ係数ｈc1との積〔ｈc1・Ｙ(n-1)〕が第３レジスタ３３に格納される。また、それまで第３レジスタ３３に格納されていた積〔ｈa1・Ｘ(n)〕は、第４レジスタ３４に格納されていた積〔ｈb1・Ｘ(n-1)〕と加算され、その和〔ｈa1・Ｘ(n)＋ｈb1・Ｘ(n-1)〕が第４レジスタ３４に新たに格納される。また、プログラムアドレスＰＡ２が「４」となっているため、プログラムスタック５１からプログラムアドレスＰＡ１として「８」が取り出され、プログラムアドレスＰＡ１を「８」として動作が開始される。これにより、第１ＲＯＭ２５の８番地に記憶された分岐命令が実行され、第１データポインタ５３にデータアドレスＤＡ１として「２」が設定される。
【００４７】
ステップ１１では、プログラムアドレスＰＡ１が「９」となり、第１ＲＯＭ２５の９番地に記憶された分岐命令が実行されると共に、プログラムアドレスＰＡ２が「５」となり、第２ＲＯＭ２６の５番地に記憶された演算命令が実行される。これにより、第２データポインタ５４にデータアドレスＤＡ２として「３」が設定されると共に、第３レジスタ３３に格納されていた積〔ｈc1・Ｙ(n-1)〕が、第４レジスタ３４に格納されていた和〔ｈa1・Ｘ(n)＋ｈb1・Ｘ(n-1)〕と加算され、その和〔ｈa1・Ｘ(n)＋ｈb1・Ｘ(n-1)＋ｈc1・Ｙ(n-1)〕が第４レジスタ３４に新たに格納される。
【００４８】
ステップ１２では、プログラムアドレスＰＡ１が「１０」となり、第１ＲＯＭ２５の１０番地に記憶された分岐命令が実行されると共に、プログラムアドレスＰＡ２が「６」となり、第２ＲＯＭ２６の６番地に記憶された演算命令が実行される。これにより、プログラムポインタ５２にプログラムアドレスＰＡ２として「１」が設定されると共に、第４レジスタ３４に格納されていた和〔ｈa1・Ｘ(n)＋ｈb1・Ｘ(n-1)＋ｈc1・Ｙ(n-1)〕が、次の演算処理に備えて第１ＲＡＭ４１の１番地に中間データＢ１として書き込まれる。尚、このステップ１２では、第１のデータポインタ５３に設定されたデータアドレスＤＡ１は用いず、ステップ９において中間データＢ１を読み出したときのデータアドレスＤＡ１となる「１」がそのまま用いられる。
【００４９】
ステップ１３では、プログラムアドレスＰＡ１が「１１」となり、第１ＲＯＭ２５の１１番地に記憶された分岐命令が実行される。これにより、プログラムスタック５１にプログラムアドレスＰＡ１として「１３」が設定される。このとき、プログラムアドレスＰＡ２は、ステップ１２で設定された「１」となり、第２ＲＯＭ２６の１番地に記憶された演算命令が実行される。この演算命令は、ステップ７の演算命令と同一であり、第１ＲＡＭ４１から読み出される中間データＡ２が第１レジスタ３１に格納され、第２ＲＡＭ４２から読み出されるフィルタ係数ｈb2が第２レジスタ３２に格納される。
【００５０】
以上のように、ステップ４〜ステップ８で与えられる分岐命令により設定した条件に基づいて、ステップ７〜ステップ１２で与えられる演算命令に従う演算処理が施される。この結果、
Ｙ(n)＝ｈa1・Ｘ(n)＋ｈb1・Ｘ(n-1)＋ｈc1・Ｙ(n-1)
なる式に従うフィルタリング処理が完了する。この式は、図８に示すデジタルフィルタによって達成される演算処理に一致する。
【００５１】
以後同様にして、ステップ１０〜ステップ１４で与えられる分岐処理により設定した条件に基づいて、ステップ１３〜ステップ１８で与えられる演算処理に従う演算処理が施される。この結果、
Ｙ(n)＝ｈa2・Ｘ(n)＋ｈb2・Ｘ(n-1)＋ｈc2・Ｙ(n-1)
なる式に従うフィルタリング処理が完了する。
【００５２】
さらに、ステップ１６〜ステップ２０で与えられる分岐命令により設定した条件に基づいて、ステップ１９〜ステップ２４における演算命令に従う演算処理が施される。この演算処理では、ステップ１２おいて完了する演算処理と同一条件のフィルタリング処理が達成される。
【００５３】
ステップ２２において、プログラムアドレスＰＡ２が「４」となると、プログラムスタック５１からプログラムアドレスＰＡ１として「１３」が取り込まれ、第１ＲＯＭ２５の１３番地に記憶された分岐命令が実行される。これにより、第１データポインタ５３にデータアドレスＤＡ１として「０」が設定される。ステップ２３において、プログラムアドレスＰＡ１が「１４」となり、第１ＲＯＭ２５の１４番地に記憶された分岐命令が実行されると、第２データポインタ５４にデータアドレスＤＡ２として「０」が設定される。ステップ２４において、プログラムアドレスＰＡ１が「１５」となり、第１ＲＯＭ２５の１５番地に記憶された分岐命令が実行されると、プログラムポインタ５２にプログラムアドレスＰＡ２として「８」が設定される。
【００５４】
ステップ２５において、プログラムアドレスＰＡ１が「１６」となり、第１ＲＯＭ２５の１６番地に記憶された分岐命令が実行されると、プログラムスタック５１にプログラムアドレスＰＡ１として「８」が設定される。このとき、プログラムアドレスＰＡ２は、ステップ２４で設定された「８」となるため、演算動作は行われない。
【００５５】
ステップ２６において、プログラムアドレスＰＡ１が「１７」となると、第１ＲＯＭ２５の１７番地の分岐命令が実行され、プログラムアドレスＰＡ２が「１１」となるまで動作が停止される。このとき、プログラムアドレスＰＡ２は、「９」となるが、演算動作は行われない。次にプログラムアドレスＰＡ２が「１１」となった時点（ステップ２８）で、プログラムスタック５１からプログラムアドレスＰＡ１として「３」が取り出され、第１ＲＯＭ２５の３番地に記憶された分岐命令が実行される。このステップ２８以降の動作は、ステップ４からの動作に一致する。従って、３段階のフィルタリング処理が繰り返されることになる。以上の実施形態においては、２種類のフィルタリング処理を３段階で施す場合を例示したが、分岐命令及び演算命令の制御プログラムを変更することにより、回路構成を変更することなく、さらに複雑なフィルタリング処理を施すことができる。この場合でも、分岐命令と演算命令とが並列に処理されるため、複雑なフィルタリング処理であっても効率よく処理を完了することができる。
【００５６】
【発明の効果】
本発明によれば、分岐命令と演算命令とをそれぞれ独立にメモりに記憶するようにしたことで、デジタル信号処理の分岐処理と演算処理とを並列に実行させることが可能になる。従って、演算回路を効率よく動作させて演算処理に要する時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明のデジタル信号処理装置の構成を示すブロック図である。
【図２】本発明のデジタル信号処理装置の動作の一例を示すタイミング図である。
【図３】演算回路及びＲＡＭの構成の一例を示すブロック図である。
【図４】メモリ制御回路の構成の一例を示すブロック図である。
【図５】分岐命令及び演算命令のプログラムリストである。
【図６】ＲＡＭの内容を示す図である。
【図７】図５のプログラムリストに従う演算処理を説明する図である。
【図８】デジタルフィルタの構成を示す回路図である。
【図９】従来のデジタル信号処理装置の構成を示すブロック図である。
【符号の説明】
１  加算器
２ａ、２ｂ、２ｃ  乗算器
３ａ、３ｂ  ラッチ
１１、２１  演算回路
１２、２２  ＲＡＭ
１３、２３、２４  メモリ制御回路
１４、２５、２６  ＲＯＭ
１５  命令デコーダ
２７  分岐命令デコーダ
２８  演算命令デコーダ
３１〜３４  レジスタ
３５〜３７  セレクタ
３８  乗算器
３９  加算器
４１、４２  ＲＡＭ
５１  プログラムスタック
５２  プログラムポインタ
５３、５４  アドレスポインタ
【図１】
0003738134.tif 000002
【図２】
0003738134.tif 000003
【図３】
0003738134.tif 000004
【図４】
0003738134.tif 000005
【図６】
0003738134.tif 000006
【図８】
0003738134.tif 000007
【図９】
0003738134.tif 000008
【図５】
0003738134.tif 000009
【図７】
0003738134.tif 000010