(57)【要約】      （修正有）【課題】  プログラム等を記憶するＲＡＭとして小規模なシングルポート構成のＲＡＭが用いられており、かつ、ＲＡＭ内のデータを利用した信号処理の実行と並行してＲＡＭ内のデータの書き換えが可能なＤＳＰを提供する。【解決手段】  プログラムメモリ２は、各エリアの２個の命令を各々記憶する。読み出し制御部６およびセレクタ９は、プログラムメモリ２から２個の命令を読み出す制御を繰り返す。プログラムメモリ２からの２個の命令は、レジスタ４、セレクタ５からなる部分を介して信号処理部３に順次供給される。書き込み制御部８およびセレクタ９は、命令読み出しが行われない期間を利用して、プログラムメモリ２へデータを書き込む制御を行う。【選択図】図１
2008065718.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを各々記憶する複数のエリアを有するメモリと、
前記メモリから複数のデータを読み出す制御を繰り返し行う読み出し制御手段と、
前記メモリから読み出されたデータを使用した処理を行う処理手段と、
前記メモリからの複数のデータの読み出しが行われてから次に前記メモリからの複数のデータの読み出しが行われるまでの間に前記メモリから読み出された複数のデータの少なくとも一部を前記処理手段に順次供給するデータ供給制御手段と、
前記メモリからデータの読み出しが行われない期間を利用して、前記メモリへデータを書き込む制御を行う書き込み制御手段と
を具備することを特徴とするデジタル信号処理装置。
【請求項２】
前記メモリは、前記複数のエリアの各々に２個ずつデータを記憶するメモリであり、
前記データ供給制御手段は、前記メモリから読み出された２個のデータのうち一方のデータを記憶するレジスタと、前記メモリから読み出された２個のデータおよび前記レジスタに記憶されたデータの中から次に前記処理手段の使用対象となる１個のデータを選択して前記処理手段に供給するデータ選択手段とを具備することを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項３】
前記メモリは、エリア単位でデータの書き込みが可能な構成のメモリであり、
前記書き込み制御手段は、前記メモリの１つのエリア内の複数のデータのうち一部のデータの書き換えを行う場合に、当該エリアに記憶された複数のデータを読み出し、当該複数のデータのうち一部のデータを書き換え、この一部のデータの書き換え後の複数のデータを当該エリアに書き込む制御を行うことを特徴とする請求項１に記載のデジタル信号処理装置。
【請求項４】
前記メモリは、複数のエリアの各々に複数の命令を記憶するプログラムメモリであり、
前記処理手段は、前記プログラムメモリから読み出された命令を実行する命令実行手段であることを特徴とする請求項１〜３のいずれか１の請求項に記載のデジタル信号処理装置。
【請求項５】
前記命令実行手段は、前記データ供給制御手段によりジャンプ命令が与えられた場合、前記ジャンプ命令によりジャンプ先とされる命令を前記読み出し制御手段に通知し、前記読み出し制御手段は、前記ジャンプ命令によりジャンプ先とされる命令を含む複数の命令を記憶した前記プログラムメモリのエリアから当該複数の命令を読み出す制御を行うことを特徴とする請求項４に記載のデジタル信号処理装置。
【請求項６】
前記メモリは、複数のエリアの各々に信号処理のための複数の係数を記憶する係数メモリであり、
前記処理手段は、前記係数メモリから読み出された係数を使用した演算を行うことにより信号処理を行う演算手段であることを特徴とする請求項１〜３のいずれか１の請求項に記載のデジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オーディオ機器等に好適なデジタル信号処理装置に関する。
【背景技術】
【０００２】
周知の通り、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ；デジタル信号処理装置）は、所定時間長のサンプリング周期毎に、入力オーディオサンプル列に対して所定の係数列を畳み込むための積和演算等、各種の演算処理を繰り返し実行する機能を有しており、様々な音場効果を入力オーディオサンプル列に付与するエフェクタ等に利用されている。なお、この種のＤＳＰは、例えば特許文献１、２等に開示されている。最近、ＤＳＰは、携帯電話機等の小型の機器にも搭載されるようになってきている。このため、小規模であり、かつ、多彩な信号処理を実行することが可能なＤＳＰが求められている。そして、このような要求を満たすため、信号処理の制御のためのプログラムをＲＡＭに記憶し、このＲＡＭに記憶されたプログラムを実行しつつ、それと並行してＲＡＭ内のプログラムを外部から書き換えることが可能な構成のＤＳＰ、あるいは信号処理に用いる係数列をＲＡＭに記憶し、このＲＡＭに記憶された係数列を用いて信号処理を実行しつつ、それと並行してＲＡＭ内の係数列を外部から書き換えることが可能な構成のＤＳＰが提供されるに至った。この種のＤＳＰによれば、ＲＡＭ内のプログラムあるいは係数列を外部から書き換えることができるので、ＲＡＭの記憶容量が少ない場合でも、多彩な信号処理を実行させることができる。
【特許文献１】特開平８−２６３２９７号公報
【特許文献２】特開２００２−７３３４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、上述した従来のＤＳＰでは、信号処理の実行のためにＲＡＭからプログラムや係数列を読み出すことと並行してＲＡＭに記憶されたプログラムや係数列を書き換えることを可能にするため、プログラムや係数列を記憶するためのＲＡＭとしてデュアルポート構成のＲＡＭを用いていた。このため、ＤＳＰのチップ上においてＲＡＭの必要とする面積が広くなり、ＤＳＰをさらに小規模化、低コスト化する上での障害となっていた。
【０００４】
この発明は、以上説明した事情に鑑みてなされたものであり、プログラムや係数列を記憶するＲＡＭとして小規模なシングルポート構成のＲＡＭを用いることができ、かつ、ＲＡＭ内のデータ（プログラムや係数列）を利用した信号処理の実行と並行してＲＡＭ内のデータの書き換えが可能なＤＳＰを提供することを目的としている。
【課題を解決するための手段】
【０００５】
この発明は、複数のデータを各々記憶する複数のエリアを有するメモリと、前記メモリから複数のデータを読み出す制御を繰り返し行う読み出し制御手段と、前記メモリから読み出されたデータを使用した処理を行う処理手段と、前記メモリからの複数のデータの読み出しが行われてから次に前記メモリからの複数のデータの読み出しが行われるまでの間に前記メモリから読み出された複数のデータの少なくとも一部を前記処理手段に順次供給するデータ供給制御手段と、前記メモリからデータの読み出しが行われない期間を利用して、前記メモリへデータを書き込む制御を行う書き込み制御手段とを具備することを特徴とするデジタル信号処理装置を提供する。
かかる発明によれば、読み出し制御手段により、メモリから複数のデータを読み出す制御が繰り返され、データ供給制御手段により、メモリからの複数のデータの読み出しが行われてから次にメモリからの複数のデータの読み出しが行われるまでの間にメモリから読み出された複数のデータの少なくとも一部が処理手段に順次供給される。そして、書き込み制御手段により、メモリからデータの読み出しが行われない期間を利用して、メモリへデータを書き込む制御が行われる。従って、メモリとして小規模なシングルポートＲＡＭを使用した場合においても、メモリ内のデータ（プログラムや係数列）を利用した信号処理の実行と並行してメモリ内のデータの書き換えを行うことができる。
【発明を実施するための最良の形態】
【０００６】
以下、図面を参照し、この発明の実施の形態を説明する。
【０００７】
＜第１実施形態＞
図１はこの発明の第１実施形態であるＤＳＰの構成を示すブロック図である。
図１において、クロック発生部１は、所定周波数のクロックφを発生する回路である。このクロックφは、ＤＳＰの各部のタイミング制御に用いられる。プログラムメモリ２は、ＤＳＰが実行するプログラムの構成要素である一連の命令を記憶するメモリであり、１つのデータ入力ポートと、１つのデータ出力ポートと、１つのアドレスポートを有するシングルポートＲＡＭにより構成されている。
【０００８】
プログラムメモリ２は、各々２Ｎビット（Ｎは所定の複数）の記憶容量を有する複数のエリア（この例では１２８個のエリア）を有している。これらの各エリアは、各々固有のメモリアドレス（この例ではメモリアドレス「０」〜「１２７」）を有している。
【０００９】
プログラムメモリ２の各エリアには、Ｎビットの命令が２個ずつ記憶される。これらの各命令は各々固有の命令アドレスを有している。図示のように、メモリアドレスがｋ（ｋ＝０、１、２、…）であるエリアには、上位Ｎビットのデータとして、命令アドレス２ｋの命令＃２ｋ（ｋ＝０、１、２、…）が記憶され、下位Ｎビットのデータとして、命令アドレス２ｋ＋１の命令＃２ｋ＋１（ｋ＝０、１、２、…）が記憶される。
【００１０】
プログラムメモリ２からのデータ読み出しは、エリア単位（２Ｎビット単位）で実行可能である。すなわち、読み出し対象であるエリアのメモリアドレスを指定するメモリアドレスデータＡＤＲｃ（この例では７ビットのメモリアドレスデータ）がアドレスポートに与えられ、かつ、アクティブレベルの読み出し指令ＲＥが与えられたとき、プログラムメモリ２は、メモリアドレスデータＡＤＲｃにより指定されたメモリアドレスのエリア内の２Ｎビットのデータをデータ出力ポートから出力する。読み出し指令ＲＥは、クロックφに同期してアクティブレベルとされるが、ジャンプ命令の実行時等の例外的な場合を除き、クロックφが２回発生する毎に１回の割合でアクティブレベルとされる。
【００１１】
一方、プログラムメモリ２へのデータ書き込みは、命令単位（Ｎビット単位）で実行可能である。さらに詳述すると、プログラムメモリ２へのデータ書き込み時、メモリアドレスデータＡＤＲｃがプログラムメモリ２のアドレスポートに与えられ、Ｎビットの書き込みデータＷＤがプログラムメモリ２のデータ入力ポートに与えられ、さらにプログラムメモリ２には、アクティブレベルの書き込み指令ＷＥと、領域指定信号Ｕ／Ｌが与えられる。領域指定信号Ｕ／ＬがＬレベルである場合、書き込みデータＷＤは、メモリアドレスデータＡＤＲｃにより指定されたメモリアドレスのエリアの上位Ｎビットの領域に書き込まれ、領域指定信号Ｕ／ＬがＨレベルである場合、書き込みデータＷＤは、アドレスデータＡＤＲｃにより指定されたメモリアドレスのエリアの下位Ｎビットの領域に書き込まれる。書き込み指令ＷＥは、プログラムメモリ２に書き込むべきデータＷＤがあり、かつ、プログラムメモリ２からのデータ読み出しが行われないとき、クロックφに同期してアクティブレベルとされる。
【００１２】
信号処理部３は、順次与えられる命令に従って、外部から与えられる入力信号に対して効果付与等の信号処理を施し、この信号処理により得られた信号を外部に出力する回路である。周知のＤＳＰと同様、この信号処理部３は、効果付与等のためのフィルタ係数列を記憶した係数メモリ、入力信号に対するフィルタ係数列の畳み込み演算を行うための演算部、演算の途中結果を保持するためのＲＡＭ等を有している。この信号処理部３と、後述する読み出し制御部６内のアドレス設定部６２は、メモリ（本実施形態ではプログラムメモリ２）から読み出されたデータ（本実施形態の場合は命令）を使用した処理を行う処理手段、より具体的にはメモリから読み出された命令を実行する命令実行手段を構成している。
【００１３】
プログラムメモリ２のデータ出力ポートとこの信号処理部３との間には、図示のようにレジスタ４とデータ選択手段であるセレクタ５とが介在している。プログラムメモリ２のデータ出力ポートから読み出される命令は、このレジスタ４とセレクタ５とからなる部分を介することにより、実行対象命令ＯＰｅとして信号処理部３に供給される。
【００１４】
さらに詳述すると、プログラムメモリ２のデータ出力ポートから出力される２Ｎビットのデータのうち上位Ｎビットを占める命令ＯＰ０はセレクタ５に供給され、下位Ｎビットを占める命令ＯＰ１は、セレクタ５に供給されるとともに、レジスタ４に供給される。このレジスタ４には、クロックφが与えられる。レジスタ４は、このクロックφの立ち上がり時点における命令ＯＰ１を保持し、この保持した命令ＯＰ１を命令ＯＰ１ｄとしてセレクタ５に出力する。
【００１５】
セレクタ５には、選択制御部１０から２ビットからなる選択信号ＳＥＬ２が与えられる。セレクタ５は、選択信号ＳＥＬ２が「０」（＝００Ｂ）であるときにはプログラムメモリ２のデータ出力ポートから出力される命令ＯＰ０を、選択信号ＳＥＬ２が「１」（＝０１Ｂ）であるときにはレジスタ４から出力される命令ＯＰ１ｄを、選択信号ＳＥＬ２が「２」（＝１０Ｂ）であるときにはプログラムメモリ２のデータ出力ポートから出力される命令ＯＰ１を選択し、選択した命令を実行対象命令ＯＰｅとして出力する。
【００１６】
以上説明したレジスタ４およびセレクタ５と、選択制御部１０は、メモリ（本実施形態の場合はプログラムメモリ２）からの複数のデータ（本実施形態の場合は命令）の読み出しが行われてから次にメモリからの複数のデータの読み出しが行われるまでの間にメモリから読み出された複数のデータの少なくとも一部を処理手段（本実施形態の場合は信号処理部３およびアドレス設定部６２）に順次供給するデータ供給制御手段を構成している。
【００１７】
読み出し制御部６は、アドレスカウンタ６１と、アドレス設定部６２と、読み出し指令発生部６３とを有している。アドレスカウンタ６１は、カウント値のプリセットが可能な８ビットのアップカウンタであり、クロックφをカウントし、そのカウント値を読み出し命令アドレスＡＤＲａとして出力する。この読み出し命令アドレスＡＤＲａは、プログラムメモリ２から読み出すべき命令を特定する命令アドレスである。アドレス設定部６２は、命令実行手段の一部をなす回路であり、セレクタ５からジャンプ命令が出力されたとき、その次のクロックφの立ち上がりに同期して、このジャンプ命令に含まれるジャンプ先の命令アドレスをアドレスカウンタ６１にプリセットする回路である。
【００１８】
読み出し指令発生部６３は、上述した読み出し指令ＲＥを発生するとともに、読み出し指令ＲＥの発生しない期間を書き込み制御部８に知らせる書き込み許可信号ＥＮを発生する回路である。この読み出し指令発生部６３は、次のようにして読み出し指令ＲＥと書き込み許可信号ＥＮを発生する。
【００１９】
ａ．クロックφがＨレベルになったとき、読み出し命令アドレスＡＤＲａが奇数となり、かつ、そのときセレクタ５から出力されている命令がジャンプ命令でない場合
この場合、読み出し指令発生部６３は、次のクロックφが立ち上がって読み出し命令アドレスＡＤＲａが偶数になったとき、所定期間に亙って読み出し指令ＲＥをアクティブレベル（Ｈレベル）とし、また、クロックφの１周期相当の期間、書き込み許可信号ＥＮを非アクティブレベル（Ｌレベル）とする。
【００２０】
ｂ．クロックφがＨレベルになったとき、読み出し命令アドレスＡＤＲａが偶数となり、かつ、セレクタ５から出力されている命令がジャンプ命令でない場合
この場合、読み出し指令発生部６３は、次のクロックφが立ち上がって読み出し命令アドレスＡＤＲａが奇数になったとき、クロックφの１周期相当の期間、書き込み許可信号ＥＮをアクティブレベル（Ｈレベル）とする。
【００２１】
ｃ．クロックφがＨレベルになったとき、セレクタ５から出力されている命令がジャンプ命令である場合
この場合、読み出し指令発生部６３は、次にクロックφが立ち上がったとき、読み出し命令アドレスＡＤＲａが奇数になったか偶数になったかに拘わらず、所定期間に亙って、読み出し指令ＲＥをアクティブレベル（Ｈレベル）とし、また、クロックφの１周期相当の期間、書き込み許可信号ＥＮを非アクティブレベル（Ｌレベル）とする。
【００２２】
書き込みデータ受信部７は、プログラムメモリ２に書き込むべきデータ（すなわち、プログラムを構成する命令群）を、このＤＳＰを制御する外部ＣＰＵ（図示略）から受信する装置である。この書き込みデータ受信部７は、受信データを一時格納するＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）を内蔵している。書き込みデータ受信部７は、このＦＩＦＯに残存する受信データ量が減ってくると、データ要求を外部ＣＰＵに送り、外部ＣＰＵからデータを受信してＦＩＦＯに格納する。
【００２３】
書き込み制御部８は、外部ＣＰＵからプログラム書き換え要求を受け取ったとき、プログラムメモリ２に書き込むべきデータを書き込みデータ受信部７により受信し、プログラムメモリ２に書き込むための制御を行う回路である。ここで、プログラム書き換え要求は、プログラムメモリ２に書き込むべき命令群の中の先頭の命令の命令アドレスＡＤＲｓと、この命令群を構成する命令の個数Ｎｃｏｍを含んでいる。書き込み制御部８は、プログラム書き換え要求を受け取ると、命令アドレスＡＤＲｓと命令の個数Ｎｃｏｍを内蔵のレジスタに格納して、書き込みデータ受信部７に外部ＣＰＵからのデータの受信およびＦＩＦＯへの格納を開始させる。以後、書き込み制御部８は、書き込み許可信号ＥＮがアクティブレベル（Ｈレベル）となる毎に、書き込みデータ受信部７によって外部ＣＰＵから受信されたデータをプログラムメモリ２に書き込むための制御を行う。
【００２４】
さらに詳述すると、書き込み制御部８は、書き込み許可信号ＥＮがアクティブレベル（Ｈレベル）となる毎に、ＡＤＲｓから始まるＮｃｏｍ個の書き込み命令アドレスＡＤＲｂを１個ずつ順次発生するとともに、書き込みデータ受信部７のＦＩＦＯにリードクロックＲＤＣＫを送って同ＦＩＦＯ内の受信データを古いものから順に読み出し、書き込みデータＷＤとしてプログラムメモリ２のデータ入力ポートに供給する。ここで、書き込み命令アドレスＡＤＲｂは、８ビットのアドレスであり、そのＬＳＢは上述した領域指定信号Ｕ／Ｌとしてプログラムメモリ２に供給される。また、書き込み制御部８は、書き込み命令アドレスＡＤＲｂを発生し、かつ、書き込みデータＷＤをプログラムメモリ２のデータ入力ポートに供給するとき、クロックφに同期させて、書き込み指令ＷＥを所定期間に亙ってアクティブレベル（Ｈレベル）とする。また、書き込み制御部８は、書き込み命令アドレスＡＤＲｂを発生し、かつ、書き込みデータＷＤをプログラムメモリ２のデータ入力ポートに供給するときに限って、セレクタ９に与える選択信号ＳＥＬ１をＨレベルとし、それ以外の期間は選択信号ＳＥＬ１をＬレベルとする。
【００２５】
セレクタ９は、選択信号ＳＥＬ１がＬレベルであるときには、アドレスカウンタ６１から出力される読み出し命令アドレスＡＤＲａを選択し、選択信号ＳＥＬ１がＨレベルであるときには、書き込み制御部８から出力される書き込み命令アドレスＡＤＲｂを選択し、選択した８ビットの読み出し命令アドレスＡＤＲａまたは書き込み命令アドレスＡＤＲｂの上位７ビットをメモリアドレスデータＡＤＲｃとしてプログラムメモリ２に供給する回路である。
【００２６】
このセレクタ９と、上述した読み出し制御部６は、メモリ（本実施形態の場合はプログラムメモリ２）から複数のデータ（本実施形態の場合は命令）を読み出す制御を繰り返し行う読み出し制御手段を構成している。また、このセレクタ９と、上述した書き込み制御部８は、メモリ（本実施形態の場合はプログラムメモリ２）からデータ（本実施形態の場合は命令）の読み出しが行われない期間を利用して、同メモリへデータを書き込む制御を行う書き込み制御手段を構成している。
【００２７】
選択制御部１０は、読み出し命令アドレスＡＤＲａを監視し、監視結果に基づいてセレクタ５の切り換え制御を行う回路である。ジャンプ命令が実行される場合を除き、アドレスカウンタ６１が出力する読み出し命令アドレスＡＤＲａは、クロックφに同期して「１」ずつ増加する。この場合、選択制御部１０は、増加後の読み出し命令アドレスＡＤＲａが偶数であれば、選択信号ＳＥＬ２を「０」として、プログラムメモリ２のデータ出力ポートから出力される命令ＯＰ０をセレクタ５に選択させ、増加後の読み出し命令アドレスＡＤＲａが奇数であれば、選択信号ＳＥＬ２を「１」として、レジスタ４から出力される命令ＯＰ１ｄをセレクタ５に選択させる。また、ジャンプ命令が実行され、アドレス設定部６２によりジャンプ先の命令アドレスがアドレスカウンタ６１にプリセットされると、アドレスカウンタ６１が出力する読み出し命令アドレスＡＤＲａは「１」より大きな変化量だけ変化する。この場合、選択制御部１０は、変化後の読み出し命令アドレスＡＤＲａが偶数であれば、選択信号ＳＥＬ２を「０」として、プログラムメモリ２のデータ出力ポートから出力される命令ＯＰ０をセレクタ５に選択させ、変化後の読み出し命令アドレスＡＤＲａが奇数であれば、選択信号ＳＥＬ２を「２」として、プログラムメモリ２のデータ出力ポートから出力される命令ＯＰ１をセレクタ５に選択させる。
以上が本実施形態によるＤＳＰの構成の詳細である。
【００２８】
図２〜図５は本実施形態の動作例を示すタイムチャートである。各動作例では、プログラムメモリ２から命令が順次読み出されて実行されるのと並行し、命令アドレス「１２８」から始まる一連の命令の書き換えが行われている。また、各動作例では、ジャンプ命令が実行されている。
【００２９】
本実施形態では、例えば図２に示すように、読み出し指令発生部６３により、アドレスカウンタ６１から出力される読み出し命令アドレスＡＤＲａが偶数（図２の例では、ＡＤＲａ＝「９８」、「１００」、「１２」、「１４」、「１６」）になるときに、読み出し指令ＲＥがアクティブレベル（Ｈレベル）とされる。
【００３０】
ここで、読み出し指令ＲＥがアクティブレベル（Ｈレベル）となるときには書き込み許可信号ＥＮが非アクティブレベルとされるので、選択信号ＳＥＬ１は書き込み制御部８によりＬレベルとされ、セレクタ９は読み出し命令アドレスＡＤＲａの上位７ビットを選択し、メモリアドレスデータＡＤＲｃとして出力する。このため、読み出し命令アドレスＡＤＲａが偶数であるとき、この読み出し命令アドレスＡＤＲａの１／２であるメモリアドレスデータＡＤＲｃ（図２の例では、ＡＤＲｃ＝「４９」、「５０」、「６」、「７」、「８」）がセレクタ９からプログラムメモリ２に供給され、このメモリアドレスデータＡＤＲｃにより指定されたエリア内の２個の命令（図２の例では、命令＃９８および＃９９の組、命令＃１００および＃１０１の組、命令＃１２および＃１３の組、命令＃１４および＃１５の組、命令＃１６および＃１７の組）が命令ＯＰ０およびＯＰ１としてプログラムメモリ２から順次読み出される。
【００３１】
プログラムメモリ２から読み出された２個の命令ＯＰ０およびＯＰ１のうち、命令ＯＰ０は、プログラムメモリ２からの読み出し後、直ちにセレクタ５により選択され、実行対象命令ＯＰｅとして処理手段（より具体的には命令実行手段）たる信号処理部３およびアドレス設定部６２に供給される（図２の例では、ＯＰｅ＝＃９８、＃１００、＃１２、＃１４、＃１６）。一方、命令ＯＰ１は、プログラムメモリ２からの読み出し後、レジスタ４によって命令ＯＰ１ｄとして保持され、命令ＯＰ０よりもクロックφの１周期相当の時間だけ遅れてセレクタ５により選択され、実行対象命令ＯＰｅとして処理手段（より具体的には命令実行手段）たる信号処理部３およびアドレス設定部６２に供給される（図２の例では、ＯＰｅ＝＃９９、＃１０１、＃１３、＃１５、＃１７）。
【００３２】
ジャンプ命令が実行され、かつ、そのジャンプ先の命令の命令アドレスＡＤＲａが奇数であるような例外的な場合を除き、読み出し命令アドレスＡＤＲａが奇数（図２の例では、ＡＤＲａ＝「９９」、「１０１」、「１３」、「１５」、「１７」）となるときには、レジスタ４に保持された命令ＯＰ１ｄ（図２の例ではＯＰ１ｄ＝＃９９、＃１０１、＃１３、＃１５、＃１７）がセレクタ５により実行対象命令ＯＰｅとして選択され、信号処理部３およびアドレス設定部６２に供給される。この間、実行読み出し指令発生部６３によって読み出し指令ＲＥは非アクティブレベル（Ｌレベル）とされ、命令の読み出しは行われない。その一方、この命令の読み出しが行われない期間は、読み出し指令発生部６３により書き込み許可信号ＥＮがアクティブレベル（Ｈレベル）とされる。そして、プログラムメモリ２に書き込むべき命令が書き込みデータ受信部７のＦＩＦＯ内にある場合、書き込み制御部８は、書き込み許可信号ＥＮがアクティブレベルである期間を利用し、書き込みデータ受信部７のＦＩＦＯから命令を読み出してプログラムメモリ２に書き込むための制御を行う。
【００３３】
図２に示す動作例では、書き込み許可信号ＥＮがアクティブレベル（Ｈレベル）である期間を利用して、一連の命令＃１２８、＃１２９、＃１３０、＃１３１が書き込みデータ受信部７のＦＩＦＯから読み出され、書き込みデータＷＤとしてプログラムメモリ２に供給される。また、書き込み制御部８により、それらの命令の命令アドレスＡＤＲｂ＝「１２８」、「１２９」、「１３０」、「１３１」が発生され、その際に選択信号ＳＥＬ１がＨレベルとされることにより、命令アドレスＡＤＲｂの上位７ビットであるメモリアドレスデータＡＤＲｃ＝「６４」、「６４」、「６５」、「６５」がセレクタ９からプログラムメモリ２に与えられる。また、命令アドレスＡＤＲｂのＬＳＢが領域指定信号Ｕ／Ｌとしてプログラムメモリ２に与えられる。そして、書き込みデータＷＤ＝＃１２８、＃１２９、＃１３０、＃１３１がプログラムメモリ２に与えられる各期間に、書き込み指令ＷＥが一定時間に亙ってアクティブレベル（Ｈレベル）とされ、メモリアドレスデータＡＤＲｃ＝「６４」、「６４」、「６５」、「６５」および領域指定信号Ｕ／Ｌ＝“１”、“０”、“１”、“０”により各々指定されるプログラムメモリ２内の各領域に書き込みデータＷＤ＝＃１２８、＃１２９、＃１３０、＃１３１が書き込まれる。
【００３４】
仮にプログラムメモリ２から読み出される命令の中にジャンプ命令がない場合には、読み出し命令アドレスＡＤＲａが偶数と奇数を交互に繰り返し、命令アドレスＡＤＲａが偶数であるときに読み出し指令ＲＥがアクティブレベルとされる、という規則性が維持される。そして、図２に示す動作例のように、ジャンプ命令の命令アドレスＡＤＲａが奇数であり、ジャンプ先の命令の命令アドレスＡＤＲａが偶数である場合には、ジャンプ命令が実行されたとしても、ジャンプ命令が実行されない場合と同様な規則性が維持される。このため、クロックφに同期して、プログラムメモリ２からのデータ読み出しとプログラムメモリ２へのデータ書き込みとを交互に行うことができる。しかし、ジャンプ命令の命令アドレスとジャンプ先の命令の命令アドレスの組み合わせ如何によっては、ジャンプ命令の実行の影響により、上記の規則性が失われ、プログラムメモリ２へのデータの書き込みのタイミングは、図２の動作例とは異なったものとなる。
【００３５】
図３に示す動作例では、命令アドレスＡＤＲａが偶数「１０２」である命令から命令アドレスＡＤＲａが偶数「１２」である命令へのジャンプが行われている。この場合、命令アドレスＡＤＲａ＝「１０２」のジャンプ命令のプログラムメモリ２からの読み出しと、ジャンプ先である命令アドレスＡＤＲａ＝「１２」の命令のプログラムメモリ２からの読み出しが続けて行われるため、クロックφの２周期に亙って、書き込み許可信号ＥＮが非アクティブレベル（Ｌレベル）とされ、データ書き込みが行われない。
【００３６】
図４に示す動作例では、命令アドレスＡＤＲａが奇数「１０１」である命令から命令アドレスＡＤＲａが奇数「１３」である命令へのジャンプが行われている。この場合、奇数命令アドレス「１０１」のジャンプ命令として、レジスタ４に保持された命令ＯＰ１ｄ＝＃１０１がセレクタ５により実行対象命令ＯＰｅとして選択されて実行される。従って、この命令ＯＰ１ｄ＝＃１０１が実行される期間は、書き込み許可信号ＥＮがアクティブレベル（Ｈレベル）とされ、書き込みデータＷＤ（＝＃１２８）がプログラムメモリ２に書き込まれる。しかし、その後の奇数命令アドレス「１３」の命令＃１４は、ジャンプ先の命令であり、未だレジスタ４に保持されていないので、プログラムメモリ２から読み出す必要がある。さらにその次の命令は偶数命令アドレス「１４」の命令＃１４なので、これもプログラムメモリ２から読み出す必要がある。このため、命令＃１３のプログラムメモリ２からの読み出しと、命令＃１４のプログラムメモリ２からの読み出しが連続して行われ、クロックφの２周期に亙って、書き込み許可信号ＥＮが非アクティブレベル（Ｌレベル）とされ、データ書き込みが行われない。
【００３７】
図５に示す動作例では、命令アドレスＡＤＲａが偶数「１０２」である命令から命令アドレスＡＤＲａが奇数「１３」である命令へのジャンプが行われている。この場合、偶数命令アドレス「１０２」のジャンプ命令のプログラムメモリ２からの読み出しと、ジャンプ先である奇数命令アドレス「１３」の命令のプログラムメモリ２からの読み出しと、その次の偶数命令アドレス「１４」の命令のプログラムメモリ２からの読み出しが続けて行われるため、クロックφの３周期に亙って、書き込み許可信号ＥＮが非アクティブレベル（Ｌレベル）とされ、データ書き込みが行われない。
【００３８】
以上のように、ジャンプ命令が実行される場合には、クロックφの２周期または３周期に亙ってプログラムメモリ２へのデータ書き込みを行うことができない期間が生じることもある。しかし、ジャンプ命令が何回も連続して実行されることは一般的にありえないので、プログラムメモリ２内の命令の読み出しおよび実行と並行して、プログラムメモリ２内のプログラムの書き換えを支障なく行うことができる。
【００３９】
ジャンプ先の命令の実行時におけるセレクタ５の動作は、ジャンプ先の命令の命令アドレスが偶数であるか奇数であるかにより異なったものとなる。図２および図３に示す動作例では、ジャンプ先の命令の命令アドレスが偶数「１２」であるため、この命令を含む２個の命令の読み出し時に、選択信号ＳＥＬ２が「０」とされ、プログラムメモリ２から読み出される命令ＯＰ０（＝＃１２）が実行対象命令ＯＰｅとして選択される。また、図４および図５に示す動作例では、ジャンプ先の命令の命令アドレスが奇数「１３」であるため、この命令を含む２個の命令の読み出し時に、選択信号ＳＥＬ２が「２」とされ、プログラムメモリ２から読み出される命令ＯＰ１（＝＃１３）が実行対象命令ＯＰｅとして選択される。
【００４０】
以上のように、本実施形態によれば、プログラムメモリ２の各エリアに命令を２個ずつ格納し、プログラムメモリ２から１度に２個の命令を読み出し、読み出した２個の命令を順次実行するようにしたので、プログラムメモリ２がシングルポートＲＡＭにより構成されている場合であっても、プログラムメモリ２からの命令読み出しの行われない期間を利用して、プログラムメモリ２内の命令の書き換えを行うことができる。
【００４１】
＜第２実施形態＞
図６は、この発明の第２実施形態であるＤＳＰの構成を示すブロック図である。なお、この図において、上記第１実施形態（図１）の各部と対応する部分には同一の符号を付し、その説明を省略する。
【００４２】
上記第１実施形態では、プログラムメモリ２として、同一メモリアドレスのエリア内の２Ｎビットのデータを上位Ｎビットと下位Ｎビットに分け、Ｎビット単位で書き換えることができる構成のシングルポートＲＡＭを用いた。
【００４３】
これに対し、本実施形態において、プログラムメモリ２Ａは、メモリアドレスデータＡＤＲｃにより指定されるエリア単位（２Ｎビット単位）でのみデータ書き換えが可能な構成となっている。そして、このような構成のプログラメモリ２Ａを採用したことに伴い、上記第１実施形態における書き込み制御部８とは制御内容が一部異なった書き込み制御部８Ａが設けられ、さらにＯＲゲート２１が追加されている。
【００４４】
本実施形態と上記第１実施形態との相違は、プログラムメモリ２Ａに対するデータ書き込みの際の制御内容にある。本実施形態において、図７に示すように、奇数命令アドレスを持つ命令から偶数命令アドレスを持つ命令までの一連の命令の書き換えを行う場合、書き込み制御部８Ａは、次のようにしてプログラムメモリ２Ａ内の命令の書き換えを行う。
【００４５】
まず、書き込み制御部８Ａは、エリア内の上位Ｎビットと下位Ｎビットの両方が書き換え対象である各エリアについては、以下に述べる書き換え方法（１）によりプログラムメモリ２Ａ内の命令の書き換えを行う。すなわち、書き換え制御部８Ａは、書き込み許可信号ＥＮがアクティブレベルとなる期間を利用し、偶数命令アドレスの命令とこれに続く奇数命令アドレスの命令からなる２Ｎビットの書き込みデータＷＤをプログラムメモリ２Ａに供給し、偶数命令アドレスである命令アドレスＡＤＲｂをセレクタ９に供給し、選択信号ＳＥＬ１をＨレベルとし、さらに書き込み指令ＷＥを一定時間に亙ってアクティブレベルとする。これにより、プログラムメモリ２Ａ内においてメモリアドレスデータＡＤＲｃ＝ＡＤＲｂ／２に対応したエリアに２個の命令からなる２Ｎビットのデータが格納される。
【００４６】
そして、エリア内の下位Ｎビットのみが書き換え対象であるエリアおよびエリア内の上位Ｎビットのみが書き換え対象であるエリアについては、書き換え制御部８Ａは、以下に述べる書き換え方法（２）によりプログラムメモリ２Ａ内の命令の書き換えを行う。
【００４７】
図８は書き換え方法（２）の手順を示す図である。この書き換え方法（２）では、書き込み許可信号ＥＮがアクティブレベルとなる期間を２期間利用してプログラムメモリ２Ａ内の１つの命令の書き換えを行う。例えば命令アドレスが「１００」である命令＃１００または命令アドレスが「１０１」である命令＃１０１の書き換えを行う場合、書き込み制御部８Ａは、命令アドレスＡＤＲｂ＝「１００」を出力し、これをセレクタ９に選択させ、セレクタ９からプログラムメモリ２ＡにメモリアドレスデータＡＤＲｃ＝「５０」を供給させる。そして、書き込み制御部８Ａは、読み出し指令ＲＥ２をアクティブレベルとする。この読み出し指令ＲＥ２は、ＯＲゲート２１を介してプログラムメモリ２Ａに供給される。このＯＲゲート２１は、上記第１実施形態と同様に読み出し制御部６が発生する読み出し指令ＲＥに加えて、このようにして書き込み制御部８Ａが発生する読み出し指令ＲＥ２をプログラムメモリ２Ａに供給するために設けられたゲートである。
【００４８】
アクティブレベルの読み出し指令ＲＥ２の供給により、プログラムメモリ２Ａにおけるメモリアドレス「５０」のエリアから命令＃１００および１０１からなる２Ｎビットのデータが読み出されると、書き込み制御部８Ａは、この２Ｎビットのデータを内蔵のレジスタに取り込む。そして、書き換え対象が命令＃１００である場合には、このレジスタ内の２Ｎビットの上位Ｎビットを新たな命令＃１００に書き換え、書き換え対象が命令＃１０１である場合には、このレジスタ内の２Ｎビットの下位Ｎビットを新たな命令＃１０１に書き換える。
【００４９】
そして、書き込み制御部８Ａは、次に書き込み許可信号ＥＮがアクティブレベルとなる期間を利用し、書き換えを終えたレジスタ内の２Ｎビットのデータをプログラムメモリ２Ａ内のメモリアドレス「５０」に対応したエリアに書き込むための制御を行うのである。すなわち、書き込み制御部８Ａは、書き換えを終えたレジスタ内の２Ｎビットのデータを書き込みデータＷＤとしてプログラムメモリ２Ａに与え、命令アドレスＡＤＲｂ＝「１００」を出力してこれをセレクタ９に選択させ、書き込み指令ＷＥを一定期間に亙ってアクティブレベルとするのである。このようにしてプログラムメモリ２Ａ内の命令＃１００または＃１０１の一方が新たな内容に書き換えられる。
【００５０】
本実施形態の場合、奇数命令アドレスの命令のみ、あるいは偶数命令アドレスの命令のみを書き換える場合には、命令の書き換えを行うのに、書き込み許可信号ＥＮがアクティブレベルとなる期間を２期間必要とするので、第１実施形態と比べて効率が良くない。しかし、多数のエリアについて各エリア内の２Ｎビットのデータの書き換えを行うような場合には、書き込み許可信号ＥＮがアクティブレベルとなる期間に、１つのエリアの２Ｎビットのデータの書き換えを済ませることができるので、書き換えを効率的に行うことができる。
【００５１】
＜他の実施形態＞
以上、この発明の第１実施形態および第２実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
【００５２】
（１）上記第１および第２実施形態では、プログラムメモリ２または２Ａの各エリアに命令を２個ずつ記憶させたが、各エリアに３個以上の命令を記憶させ、エリア単位でそれらの命令の読み出しを行うようにしてもよい。この場合も、上記各実施形態と同様、プログラムメモリ２または２Ａからの複数の命令の読み出しが行われてから次にプログラムメモリ２または２Ａから複数のデータの読み出しが行われるまでの間に、プログラムメモリ２または２Ａから読み出された複数の命令が順次実行されるように制御し、プログラムメモリ２または２Ａから複数の命令の読み出しが行われない期間を利用して、プログラムメモリ２または２Ａに対する命令の書き込みを行うようにすればよい。
【００５３】
（２）上記第１および第２実施形態では、この発明をプログラムメモリ２または２Ａとその読み出し制御および書き込み制御を行う回路に適用した。しかし、この発明は、ＤＳＰ内のプログラムメモリ以外のＲＡＭとその読み出し制御および書き込み制御を行う回路にも適用可能である。例えば上記第１および第２実施形態において、信号処理部３は、フィルタ処理等の信号処理ための係数を記憶する係数メモリと、この係数メモリから読み出された係数を使用した演算を行うことにより信号処理を行う演算手段とを有している。ここで、ＤＳＰを小規模な構成とし、かつ、多彩なフィルタ処理等を実現するためには、信号処理のために係数メモリから係数の読み出しが行われるのと並行し、係数メモリ内の係数の書き換えを行う機能がＤＳＰに求められる。そこで、上記第１および第２実施形態と同様、係数メモリの各エリアに複数の係数を記憶させ、エリア単位で係数メモリから複数の係数を読み出すようにする。そして、係数メモリからの複数の係数の読み出しが行われてから次に係数メモリから複数の係数の読み出しが行われるまでの間に、係数メモリから読み出された複数の係数が信号処理のための演算に順次使用されるように制御し、係数メモリから複数の係数の読み出しが行われない期間を利用して、係数メモリに対する係数の書き込みを行うようにするのである。このようにすることにより、係数メモリとしてシングルポートのＲＡＭを使用する場合でも、係数メモリからの係数の読み出しと並行して係数メモリへの係数の書き込みを行うことが可能になり、ＤＳＰを小規模な構成とし、かつ、多彩なフィルタ処理等を実現することが可能になる。
【図面の簡単な説明】
【００５４】
【図１】この発明の第１実施形態であるＤＳＰの構成を示すブロック図である。
【図２】同実施形態の第１の動作例を示すタイムチャートである。
【図３】同実施形態の第２の動作例を示すタイムチャートである。
【図４】同実施形態の第３の動作例を示すタイムチャートである。
【図５】同実施形態の第４の動作例を示すタイムチャートである。
【図６】この発明の第２実施形態であるＤＳＰの構成を示すブロック図である。
【図７】同実施形態におけるプログラムメモリ２における命令の書き換えの態様を例示する図である。
【図８】同実施形態において行われるプログラムメモリ２内の命令の書き換え方法（２）の手順を説明する図である。
【符号の説明】
【００５５】
１……クロック発生部、２，２Ａ……プログラムメモリ、３……信号処理部、４……レジスタ、５，９……セレクタ、６……読み出し制御部、６１……アドレスカウンタ、６２……アドレス設定部、６３……読み出し指令発生部、７……書き込みデータ受信部、８，８Ａ……書き込み制御部、１０……選択制御部、２１……ＯＲゲート。
【図１】
2008065718.tif 000003
【図２】
2008065718.tif 000004
【図３】
2008065718.tif 000005
【図４】
2008065718.tif 000006
【図５】
2008065718.tif 000007
【図６】
2008065718.tif 000008
【図７】
2008065718.tif 000009
【図８】
2008065718.tif 000010