以下、図面を用いてこの発明の実施の形態を説明する。
図1(a)は、この発明の一実施形態であるディジタルミキサ装置のメイン基板100上に形成された回路の全体構成を示すブロック図である。本発明は、プリント基板上に形成されるミキシング処理回路に関するものである。図1(a)のミキサ装置は、中央処理装置(CPU)141、フラッシュメモリ142、ランダムアクセスメモリ(RAM)143、タイマ144、パネル表示器145、操作子146、通信入出力インターフェース(I/O)147、信号処理部120、及び入出力部110を備える。141〜147の各部及び信号処理部120は、バスライン140に接続され、相互に各種のデータを転送できる。バスライン140は、コントロールバス、データバス、及びアドレスバスを総称したものである。
信号処理部120は、ワードクロック(WC)発振器121、及び、本実施形態で特徴とするところの集積回路(ディジタル信号処理装置)であるMLSI122−1〜122−n及び123−1〜123−3を備える。MLSI122−1〜122−n(MLSI I1〜MLSI In)は、それぞれが、入力側の処理(入力chの調整処理や混合(ミキシング)バス上での混合処理など)を行う1チップのDSPである。MLSI123−1〜123−3(MLSI O1〜MLSI O3)は、それぞれが、出力側の処理(出力chの調整処理など)を行う1チップのDSPである。入力側MLSI122−1〜122−nと出力側MLSI123−1〜123−3とは同じ集積回路を使用する。以下では、この集積回路を単にMLSIと呼ぶ。入出力部110は、入力側MLSI122−1〜122−nのそれぞれに外部からのディジタル音響信号を入力するインターフェースである入力部111−1〜111−n、及び、出力側MLSI123−1〜123−3のそれぞれから外部にディジタル音響信号を出力するインターフェースである出力部112−1〜112−3を備える。
CPU141は、このミキサ装置全体の動作を制御する処理装置である。フラッシュメモリ142は、CPU141が実行する各種のプログラムや各種のデータなどを格納した不揮発性メモリである。RAM143は、CPU141が実行するプログラムのロード領域やワーク領域に使用する揮発性メモリである。タイマ144は、CPU141に対してタイマ割り込みを発生させるときに使用するタイマである。パネル表示器145は、本ミキサ装置の操作パネル上に設けられた各種の情報を表示するためのディスプレイである。操作子146は、操作パネル上に設けられた、各種のスイッチ、つまみ、及びフェーダなどの操作子である。通信I/O147は、PCなどの外部機器と接続するためのインターフェースである。
信号処理部120中のWC発振器121は、ディジタル音響信号を処理する際の基準タイミング信号となるワードクロックWC(サンプリング周期のクロック信号)を発生する回路である。一般に、ディジタルミキサは、外部機器から与えられるワードクロックWCに同期して信号処理することができるようになっている。この実施形態のミキサ装置も同様である。WC発振器121にはPLL(Phase Locked Loop)回路が含まれており、外部から供給されるワードクロックに同期したワードクロックWCを安定的に発生し、MLSI122−1〜122−n,123−1〜123−3に供給できる。外部機器からワードクロックが供給されない場合は、WC発振器121単独でワードクロックWCを発生することもできる。131は同一のワードクロックWCを全MLSIへ供給する供給線を示す。なお、以下ではサンプリング周波数48kHzとして説明する。
入出力部110は、外部機器との間で、アナログないしディジタルの音響信号を入出力する回路である。各MLSI内部には、AD(アナログ/ディジタル)コンバータ用、DA(ディジタル/アナログ)コンバータ用、A(オーディオ)バス用、及びシリアルバス用の各インターフェースが内蔵されている。従って、各入力部111−1〜111−nにはADコンバータを設け、各出力部112−1〜112−3にはDAコンバータを設けるだけで、アナログ音響信号の入出力が可能である。各入力部111−1〜111−nや各出力部112−1〜112−3にはAバスI/Oが設けられており、MLSI122−1〜123−3との接続は、Aバスを介して行われている。
MLSIは複数のディジタル音響信号入力端子を備えている。例えば、MLSI I1の複数のディジタル音響信号入力端子には、入力部111−1から出力される複数系統のディジタル音響信号のライン(入力ポート)がそれぞれ接続される。他の入力側MLSIも同様である。またMLSIは複数のディジタル音響信号出力端子を備えている。例えば、MLSI O1の複数のディジタル音響信号出力端子には、出力部112−1の複数系統のディジタル音響信号の出力ポートがそれぞれ接続される。他の出力側MLSIも同様である。
MLSIについては後に詳しく説明するが、ここでMLSIの機能の概要を説明しておく。
MLSIは、内部に通常処理用のDSP(NDSP)とミキシング処理用のDSP(MDSP)を備える。NDSPは、1サンプリング周期中で3072ステップのマイクロプログラムの演算処理を実行し、これをサンプリング周期毎に繰り返す。CPU141は、各MLSIに該3072ステップ分のマイクロプログラムを設定して、入力側MLSIであれば複数の入力chの調整処理を行わせ、出力側MLSIであれば複数の出力chの調整処理を行わせる。MDSPは、1サンプリング周期中で3072ステップの積和演算処理を実行し、これをサンプリング周期毎に繰り返す。MDSPにはマイクロプログラムを設定する必要はなく、ハードウエアロジック回路で生成した制御信号で動作することにより上記積和演算を実行する。MDSPは、その3072ステップを使用して、当該MLSI中で調整処理した各chの音響信号を複数本の混合バスにミキシングする混合処理を行う。
MLSIは、内部にモードレジスタを備え、該モードレジスタに設定するモード値を変更することにより、該MLSIで処理する入力ch数と混合バス数とを変更することができる汎用性を持つ集積回路である。図1(b)に、MLSIにおけるモードとch数及び混合バス数との関係を示す。1台のミキサ装置の信号処理部120内の全てのMLSIには同じモードが設定されるものとする。例えば、図1(a)においてMLSI I1〜MLSI In及びMLSI O1〜MLSI O3には同じモードが設定される。いまこれらのMLSIにモード1が設定されていると仮定すると、1個の入力側MLSIで32ch分の音響信号を入力して調整処理できるから、n個のMLSI I1〜MLSI Inでは32ch×n個の入力を処理できる。同様に、モード2なら64ch×n個、モード3なら24ch×n個、モード4なら48ch×n個の入力をそれぞれ処理できる。
MLSIは、カスケード入力端子とカスケード出力端子を備える。図1(a)では、MLSI I1のカスケード出力端子を次段のMLSI I2のカスケード入力端子に接続し、MLSI I2のカスケード出力端子を次段のMLSI I3のカスケード入力端子に接続し、…というように、最終段のMLSI O3までカスケード接続している。矢印132は、MLSI I1からMLSI I2へのカスケード伝送のカスケード接続ラインを示している。他のMLSI間の矢印も同様である。このカスケード伝送により、複数本の混合バスの音響信号の伝送を実現する。例えば、モード1が設定されている場合は、図1(b)から混合バス数が96本になるから、図1(a)の各MLSI間のカスケード伝送では、1サンプリング周期で当該96本の混合バス(混合バス0〜混合バス95と呼ぶ)の音響信号を時分割で順次伝送することになる。
具体的な混合とカスケード伝送の方式は以下のようなものである。まず、(1)先頭のMLSI I1において、MDSPで、当該MLSI I1で調整処理した入力chの音響信号を用いて混合バス0に出力する信号の混合を行い、その結果を混合バス0の信号としてカスケード伝送でMLSI I2に送る。引き続き、MDSPで、当該MLSI I1で処理した入力chの音響信号を用いて混合バス1に出力する信号の混合を行い、その結果を混合バス1の信号としてカスケード伝送でMLSI I2に送る。以下、同様にして、混合バス95までの各混合バスの信号をカスケード伝送で順次MLSI I2に送る。MLSI I1は、サンプリング周期毎に、以上の混合バス0〜混合バス95のカスケード伝送を繰り返す。(2)次段のMLSI I2においては、MDSPで、当該MLSI I2で調整処理した入力chの音響信号を用いて混合バス0に出力する信号の混合を行い、その結果を、前記MLSI I1からカスケード伝送で送られてきた混合バス0の信号に混合し、その結果を混合バス0の信号としてカスケード伝送でMLSI I3に送る。引き続き、MDSPで、当該MLSI I2で処理した入力chの音響信号を用いて混合バス1に出力する信号の混合を行い、その結果を、前記MLSI I1からカスケード伝送で送られてきた混合バス1の信号に混合し、その結果を混合バス1の信号としてカスケード伝送でMLSI I3に送る。以下、同様にして、混合バス95までの各混合バスの信号をカスケード伝送で順次MLSI I3に送る。MLSI I2は、サンプリング周期毎に、以上の混合バス0〜混合バス95のカスケード伝送を繰り返す。(3)これ以降のMLSI I3〜In-1でも上記MLSI I2と同様の処理を行う。最終的に、入力側の最終段のMLSI Inから出力側MLSI O1にカスケード伝送されるのが、モードに応じた本数分の混合バスの混合結果の信号である。以上から分かるように、各MLSIをつなぐカスケード伝送ライン上に、モードに応じた混合バス数分の混合バスが設けられているように解釈できる。そこで、カスケード伝送ライン上の各混合バスの経路を混合バスchと呼ぶものとする。
出力側MLSI O1〜MLSI O3では、それぞれ、カスケード伝送されてきた各混合バスchの信号を取り出し、自MLSI内の出力chで調整処理を行い、それら各出力chの出力信号を出力部112−1〜112−3に出力する。なお、図1(b)に示したモードと入力ch数との関係は、あくまでも当該MLSIを入力側に使用したときの「入力ch」の数についての関係である。当該MLSIを出力側に使用したときの出力ch数は、この関係には縛られず、任意である。すなわち、NDSPで実行する3072ステップ分で処理できる出力ch数を設定することができる。図1(a)では、各入力側MLSIでモード1を仮定した場合には、出力側でも1個のMLSIで大体32ch分程度の出力chが実現できるとするのが妥当であることから、3個の出力側MLSIに96本の混合バスchの信号を32ch分ずつ割り当てて出力chの調整処理の後に出力する構成とした。
以上のように、本実施形態におけるMLSIは、設定するモードを変更することにより、該MLSIで処理する入力ch数と混合バス数とを変更することができる汎用性を持つ集積回路である。ミキサ装置を設計する場合、そのスペック(ミキサ装置の規模)に応じて入力ch数と混合バス数が決定されるが、任意の入力chの信号を任意の混合バスに混合できるようにしなければならない。本実施形態のMLSIでは、モードに応じて混合バス数が決められ、カスケード伝送のラインにはその混合バス数分の全混合バスの信号が流れる混合バスchが設定され、さらに、入力側の各MLSIでは、任意の入力chからカスケード伝送ライン上の任意の混合バスchに信号を混合できる。ミキサ装置全体の入力ch数は、入力側MLSIの個数、すなわちMLSI I1〜MLSI Inのnの値を変えることにより、任意の入力ch数が確保できる。従って、本実施形態のMLSIを使用することで、任意の規模のミキサ装置の設計を容易に行うことができる。
さらに、本実施形態の上記MLSIは、入力chや出力chの調整処理などについてはマイクロプログラムを用いて設計者が設計した所望の処理を実行し(図7で詳述する)、その一方で、混合処理については機械的な繰り返し処理をハードウエアロジック回路により実行する(図8で詳述する)ようにしているので、設計者は混合処理のマイクロプログラムをコーディングする必要がない。
図2は、図1(a)のディジタルミキサ装置の主として信号処理部120と入出力部110により実現するミキサ処理の機能構成例を示す。A入力201は、マイク入力やライン入力したアナログ音響信号のADコンバータによる入力を示す。D入力202は、AES/EBU(商標)、ADAT(商標)、CobraNet(商標)などの各種ディジタル通信ラインから入力したディジタル音響信号の入力を示す。A入力201及びD入力202は、図1(a)の入力部111−1〜111−nにより実現されるブロックである。入力ch204は、入力信号に対する調整処理(図3で詳述する)を行うブロックであり、図1(a)の入力側MLSI I1〜MLSI In内のNDSPにより実現されるブロックである。入力ch204のブロックに「32ch×n」と記載したのは、図1(a)の入力側MLSI I1〜MLSI Inにモード1を設定したとき、全体として入力ch数が32ch×nとなることを示している。入力パッチ203は、A入力201及びD入力202の各入力ポートと入力ch204の各入力chとの間の任意結線を行うブロックである。入力パッチ203は、図1(a)の入力部111−1〜111−nと入力側MLSI I1〜MLSI Inを接続するAバスおよび各AバスI/Oにより実現されるブロックである。
入力ch204の任意の入力chの信号を任意の混合バス(MIXバス206及びST(ステレオ)バス205)へ選択的に出力し、該混合バス上で混合処理する。この混合処理は、図1(a)の入力側MLSI I1〜MLSI InのMDSPによる混合処理及びカスケード伝送の機能により実現される。図1で説明した「混合バスch」がMIXバス206及びSTバス205に対応すると見ることもできる。ここではモード1が仮定されているので、92本(MIX1〜92)のMIXバス206と、ステレオAのL(左)、ステレオAのR(右)、ステレオBのL(左)、及びステレオBのR(右)の4本からなるSTバス205とを合わせて、96本の混合バスとしている。混合バス0〜91がMIX1〜92にそれぞれ対応し、混合バス92〜95がステレオAのL、ステレオAのR、ステレオBのL、及びステレオBのRに順に対応する。
各混合バスch206,205による混合結果は、対応するMIX出力ch208(92ch)及びST出力ch207(2×2ch)へ出力され、該出力ch207,208で出力側の調整処理が施される。これらの出力ch207,208の出力信号は、出力パッチ209を介して、A出力210及びD出力211の出力ポートに出力される。A出力210は、入力したディジタル音響信号をDAコンバータでアナログ音響信号に変換して出力するブロックである。D出力211は、AES/EBU(商標)、ADAT(商標)、CobraNet(商標)などの各種ディジタル通信ラインを介して、ディジタル音響信号のまま外部出力するブロックである。出力パッチ209は、各出力ch207,208とA出力210及びD出力211の各出力ポートとの間の任意結線を行うブロックである。出力ch207,208の出力側調整処理は、出力側MLSI O1〜MLSI O3により実現され、出力パッチ209は、出力側MLSI O1〜MLSI O3と出力部112−1〜112−3を接続するAバスおよび各AバスI/Oにより実現される。A出力210及びD出力211は、図1(a)の出力部112−1〜112−3により実現されるブロックである。
図3は、図2で説明した入力ch204の1ch分の機能構成例を示すブロック図である。入力ch300は、アッテネータ(ATT)301、イコライザ(EQ)302、コンプレッサ(Comp)303、ボリューム(Vol)304、chオンスイッチ(CH_ON)305、ステレオオンスイッチ(TO_ST)306、パンニング調節器(PAN)307、プリ/ポストスイッチ(PP)308、センドレベル調節器(SND_L)309、及びセンドオンスイッチ(SND_ON)310を備える。
ATT301は入力chの先頭部分でのレベル制御を行う。EQ302は周波数特性の調整処理を行う。Comp303は自動ゲイン調整処理を行う。Vol304は信号レベルを調整する処理を行う。CH_ON305は、当該chの信号出力のオン/オフを行うスイッチである。TO_ST306は、当該chの信号のSTバス205への出力のオン/オフを行うスイッチである。PAN307は、ステレオの左右のバランス調整を行う。PP308は、当該入力chの信号をMIXバス206の1つに出力するに際し、プリフェーダ(ch出力をVol304の前側から取出す)とポストフェーダ(ch出力をVol304の後側から取出す)とを切り換えるスイッチである。SND_L309は、各MIXバス206への送出レベルの調整を行う。SND_ON310は、各MIXバス206への信号送出のオン/オフを行うスイッチである。図3ではSTバス205のうちステレオAのみ図示したが、ステレオBについても同様の構成を有する。またMIXバス206についても、MIX1〜92の各バスについて同様の構成を有する。従って、1つの入力chの出力信号を任意の混合バスに出力可能である。なお、図3では入力chについて説明したが、出力chの機能構成も同様のものである。
上述の入力chの機能構成のうち、混合バス205,206で混合する直前の乗算を除く処理(図の301〜305)は、MLSI中のNDSPでマイクロプログラムを実行させて実現する。逆に言えば、NDSPで実行するマイクロプログラムを変更することにより、入力ch毎に、その機能構成を任意に設定できる。
また、混合バス205,206で混合する直前の乗算(図の306〜310)と各混合バス205,206への累算の処理は、MLSI中のMDSPで実現する。具体的には、入力側調整処理の結果を書き込む領域(図6などで後述するMram1中に確保する領域である)を予め各chに2つずつ割り当てておき(第1アドレスと第2アドレスと呼ぶ)、NDSPでは、Comp303の処理結果(プリフェーダの位置のデータ)を第1アドレスへ書き、CH_ON305の処理結果(ポストフェーダの位置のデータ)を第2アドレスへ書く。後に詳述するが、MDSPで行う混合処理では、各ステップ毎に指定された読み出しアドレス(図8で後述する読み出しアドレスメモリ803に設定された各ステップ毎の読み出しアドレス)で読み出した信号を混合するように構成されているから、各chの各バス毎のプリフェーダ/ポストフェーダの設定に従って当該chの読み出しアドレスを第1アドレス又は第2アドレスに設定することにより、PP308が実現される。混合バスのうちSTバス205については、MDSPで第2アドレスから信号を読み出せばよい。また、各MIXバス206についてのSND_L309及びSND_ON310の設定、並びに、各STバス205についてのTO_ST306及びPAN307の設定は、当該chの信号を各混合バスへ混合するときの係数(図8で後述する係数メモリ802に設定される係数である)に合成されるので、それぞれ、MDSPでの1回の係数乗算のみで上記の処理が完了する。
図4は、図1(a)の1つのMLSIの内部構造を示すブロック図である。MLSI400は、動作クロック発生部401、タイミング信号発生部402、制御レジスタ410、通常処理用DSP(NDSP)431、ミキシング処理用DSP(MDSP)432、カスケード入力部(CIN)433、カスケード出力部(COUT)434、入力部(IN)435、出力部(OUT)436、及びI/O RAM420を備える。制御レジスタ410は、Nレジスタ(Nreg)411、Mレジスタ(Mreg)412、CIレジスタ(CIreg)413、COレジスタ(COreg)414、Iレジスタ(Ireg)415、及びOレジスタ(Oreg)416を備える。I/O RAM420は、Nram421、Mram422、Cram423、及びOram424を備える。I/O RAM420は、各処理部431〜436の間のデータ転送に使用する記憶領域である(図6で詳述する)。特に、Cram423に書き込まれたデータがCOUT434により次段のMLSIにカスケード伝送されるので、Cram423は、カスケード伝送用の記憶領域である。また、Oram424に書き込まれたデータがOUT436により出力部112−1〜112−3に伝送されるので、Oram424は、データ出力用の記憶領域である。
各部について説明する。動作クロック発生部401は、このMLSI内でのローカルな動作クロック(周波数は166MHzとする)を発生する。タイミング信号発生部402は、ワードクロックWCと前記動作クロックに基づいて、このMLSI内の各ブロックが動作するために必要なタイミング信号を供給する。NDSP431、MDSP432、及びCOUT434を含む本MLSI内の各ブロックは、それぞれ、タイミング信号発生部402から供給されるタイミング信号に応じたタイミングで動作する。なお、図1(a)に図示した複数のMLSIは、それぞれ自MLSI内の動作クロック発生部401の動作クロックに応じて独立に動作するので、各MLSI間で動作クロックのタイミングがずれることはある。ただし、全MLSIに同一のワードクロックWCが供給され、各MLSI内のタイミング信号発生部402は、該ワードクロックWCのタイミングから1DAC周期(1サンプリング周期)が開始するようにタイミング調整を行ったタイミング信号を発生するので、1DAC周期の開始タイミングは全MLSIで一致することが保証されている。
NDSP431は、(図1で概要を説明したが)図2の入力ch204又は出力ch207,208における調整処理を実行するDSPである。Nreg411は、NDSP431でサンプリング周期毎に実行する3072ステップ分のマイクロプログラムやその実行時に使用する各ステップ毎の係数データを設定するレジスタである。当該MLSIを入力側に使用する場合、CPU141は、Nreg411に、図2の入力ch204の調整処理を行うマイクロプログラム及び係数データを設定する。当該MLSIを出力側に使用する場合、CPU141は、Nreg411に、図2の出力ch207,208の調整処理を行うマイクロプログラム及び係数データを設定する。NDSP431は、サンプリング周期毎に、前記係数データを読み出しながら3072ステップの前記マイクロプログラムを実行し、これを繰り返すことにより複数ch分の調整処理を行う。処理対象の音響信号(の各サンプルデータ)は、Nram421から読み出し、処理後の信号はNram421、Mram422、又はOram424に書き込む。
MDSP432は、(図1で概要を説明したが)図2の混合バス(STバス205及びMIXバス206)における混合処理を実行するDSPである。Mreg412は、MDSP432の動作時に利用する各ステップ毎の係数データや各ステップ毎のMram422の読み出しアドレスを設定するレジスタである。Mreg412は、図1(b)で説明したモード値を設定するモードレジスタを備える。Mreg412は、混合処理のためのマイクロプログラムを記憶しない。その代わりに、Mreg412内には、ハードウェアロジック回路で、前記モードレジスタに設定されたモードに応じた制御信号を1サンプリング周期で3072ステップ分発生する制御信号発生部が設けられている。MDSP432は、該制御信号発生部から出力される制御信号に基づいて、サンプリング周期毎に、前記3072ステップの積和演算処理を実行し、これを繰り返すことにより前記モードに応じた本数の各混合バスにおける混合処理を実現する。その混合処理の際には、Mreg412内の係数データを利用する。混合する音響信号はMram422から読み込む。また、混合先の各混合バスの信号はCIN433から入力する。混合処理の結果である各混合バス毎の信号は、Nram421、Cram423、及びOram424に書き込む。
なお、図1の説明では1個のMLSIをDSPと呼び、図4の説明では該MLSI内のNDSPやMDSPのブロックをそれぞれDSPと呼んでいるが、前者は1チップで信号処理を行う集積回路としての広義な捉え方で、後者は該集積回路の内部で演算を行うブロックとしての狭義な捉え方で、それぞれDSPと呼んでいる。
CIN433は、前段のMLSIからカスケード伝送されてくる信号を入力するインターフェースであるカスケード伝送信号入力回路である。このカスケード信号の入力動作は、前段のMLSIのCOUT434と協働して実現される。CIreg413は、CIN433の動作を規定する制御データを設定するレジスタである。CPU141は、CIreg413の制御データを適宜設定してCIN433の動作を制御する。図1で説明したように、カスケード伝送では、1サンプリング周期でモード(Mreg412内のモードレジスタから与えられる)に応じた数の混合バスの信号が順次伝送されてくる。CIN433は、順次伝送されてくる各混合バスの信号を当該CIN433内部に設けられているFIFO(First-In First-Out)レジスタに一旦ラッチし、その後、所定のタイミングでMDSP432に出力する(矢印441)。MDSP432では、当該MLSI内の複数の入力chの信号を積和演算して、各混合バス毎に混合すべき信号を順次生成しているので、それらの各混合バスに混合すべき信号が生成されたタイミングで、CIN433の前記FIFOから出力される当該混合バスの信号を入力し、それらを混合する。なお、CIN433は、入力したカスケード信号をそのままNram421又はCram423に書き込むこともできる(矢印442,443)。
COUT434は、Cram423のデータを読み出して後段のMLSIにカスケード信号として出力するインターフェースであるカスケード出力回路である。このカスケード信号の出力動作は、後段のMLSIのCIN433と協働して実現される。COreg414は、COUT434の動作を制御する制御データの設定レジスタである。CPU141は、COreg414の制御データを適宜設定してCOUT434の動作を制御する。
IN435は、ADコンバータ、Aバス、及び/又はシリアルバスから入力した音響信号を入力する入力インターフェース回路である。IN435で入力した音響信号は、Nram421、Mram422、又はOram424に書き込まれる。IN435の動作は、CPU141からIreg415に設定された制御データにより規定される。図2の入力パッチ203はIN435で実現される。すなわち、どの入力信号をNram421のどのアドレスに書き込むかが、入力パッチ203でどの入力ポートをどの入力chに結線するかに相当する。
OUT436は、Oram424のデータを読み出し、DAコンバータ、Aバス、及び/又はシリアルバスへの出力を行う出力インターフェース回路である。OUT436の動作は、CPU141からOreg416に設定された制御データにより規定される。図2の出力パッチ209はOUT436で実現される。すなわち、Oram424のどのアドレスの信号をどの出力ラインに出力するかが、出力パッチ209でどの出力chをどの出力ポートに結線するかに相当する。
図5は、本実施形態のMLSIにおける動作タイミング図を示す。横軸は時間であり、511〜514は、それぞれワードクロックWCのタイミングを示す。これらのWC間がサンプリング周期である。521〜523は、1サンプリング周期501内で、調整処理、混合処理、及びカスケード伝送の処理が実行される時間区間を示す。調整処理521及び混合処理522は、それぞれワードクロックWCのタイミングから前方ゆれマージン531+差分マージン532で規定される所定時間の後に開始される。調整処理521及び混合処理522が終わった後、さらに後方ゆれマージン533の後に、次のワードクロックWCが来るようになっている。カスケード伝送の処理523は、調整処理521及び混合処理522の開始タイミングから差分マージン532だけ早められて開始される。これは、混合処理522中で各混合バスに混合すべき信号が生成される各タイミングの時点で、既にカスケード伝送で該当する混合バスの信号が入出力されて混合に利用できるようにしておくためであるが、これについては後に詳しく説明する。
なお、本実施形態ではサンプリング周波数は48kHzであるから、1サンプリング周期は20.8μ秒である。調整処理521や混合処理522は、166MHzの動作クロックの元で1サンプリング周期当り3072ステップ分の処理を行うから、{1/(166×106)}×3072=18.5×10-6秒=18.5μ秒だけの時間があれば処理が完了する。従って、1サンプリング周期内で、3072ステップ分の調整処理521や混合処理522を行い、かつそれらの処理の前後にマージンを取ることが可能である。
図6は、図4のI/O RAM420の表裏の構成を示す。I/O RAM420は、表の記憶領域602と裏の記憶領域601とに二重化(すなわち、同じアドレスで表と裏の2つの領域が設けられている)されており、サンプリング周期毎に表と裏が入れ替わるようになっている。表側602は書き込み専用の領域であり、裏側601は読み出し専用の領域である。二重化されていることにより、I/O RAM420内のどのアドレスも同時に読み出しと書き込みが可能である。このとき読み出しているデータは、少なくとも1サンプリング周期前に書き込まれたデータとなる。
裏側601においてNDSP431の読み出し用領域となるNramは、Nram1〜4の4つの領域に分けられている。表側602において、Nram1はNDSP431の書き込み用領域、Nram2はMDSP432の書き込み用領域、Nram3はIN435の書き込み用領域、Nram4はCIN433の書き込み用領域となる。裏側601においてMDSP432の読み出し用領域となるMramは、Mram1,2の2つの領域に分けられている。表側602において、Mram1はNDSP431の書き込み用領域、Mram2はIN435の書き込み用領域となる。裏側601においてCOUT434の読み出し用領域となるCram1は、表側602ではMDSP432又はCIN433の書き込み用領域となる。裏側601においてOUT436の読み出し用領域となるOramは、Oram1〜3の3つの領域に分けられている。表側602において、Oram1はNDSP431の書き込み用領域、Oram2はMDSP432の書き込み用領域、Oram3はIN435の書き込み用領域となる。
NDSP431は、1サンプリング周期で3072ステップの演算処理が可能であるが、各ステップ毎に、Nram1〜4の任意のアドレスから音響信号を読み出し、調整処理を施し、その結果をNram1、Mram1、又はOram1の任意のアドレスに書き込むことができる。その読み出しアドレスと書き込みアドレスは、NDSP431で実行するマイクロプログラム内で任意に設定できる。Nram1に書き込むのは、NDSP431における途中結果のデータをNram1経由で再びNDSP431に入力し調整処理で利用する場合である。Mram1に書き込むのは、調整処理の結果をMDSP432の混合処理に渡すためである。Oram1に書き込むのは、調整処理の結果をそのままOUT436経由で出力する場合である。
MDSP432は、1サンプリング周期で3072ステップの演算処理が可能であるが、各ステップ毎に、Mram1,2の任意のアドレスから音響信号を読み出し積和演算して混合することができる。またMDSP432は、上記3072ステップ中の所定の位置で得られる混合結果を、矢印611(図4の441に対応)のようにCIN433から入力したカスケード信号(各混合バスの信号)と混合し、各混合バスにおける混合結果を、Nram2、Oram2、及びCram1の所定のアドレスに書き込むことができる。Mramの読み出しアドレスは、ステップ毎にMreg412で任意のアドレスを設定できる。CIN433からMDSP432へのカスケード信号の入力は、MDSP432において各混合バスに混合すべき信号が生成されるタイミングで当該混合バスの現時点での混合信号(カスケード信号)が既にCIN433からMDSP432に出力されて準備されているように、タイミングが調整されているが、これについては後述する。Nram2、Oram2、及びCram1への書き込みのアドレスは、各混合バスに応じたアドレスであり、機械的に決定されるものである。ここで、「機械的に」とは、そのアドレスが、各サンプリング周期の各ステップのクロックや、ステップ数に基づいてロジック回路で作成できるという意味であり、その場合、そのアドレスを記憶するためのアドレスレジスタは不要である。例えば、Nram2、Oram2、及びCram1を配列で表記した場合、混合バス0の混合結果はNram2[0]とOram2[0]とCram1[0]に書き込み、混合バス1の混合結果はNram2[1]とOram2[1]とCram1[1]に書き込み、…といった具合である。Nram2に書き込むのは、各混合バスの信号に対して再び調整処理を施す場合である。Oram2に書き込むのは、各混合バスの信号をそのままOUT436経由で出力する場合である。Cram1に書き込むのは、各混合バスの信号を次段のMLSIにカスケード伝送するためである。
CIN433からCram1への点線の矢印613(図4の443に対応)は、CIN433により入力したカスケード信号をそのままCram1に機械的に書き込むラインを示す。これは、カスケード伝送されてきた信号をそのまま次段のMLSIにカスケード伝送する場合である。例えば、図1(a)において、出力側MLSI123−1で混合バス0〜31の信号を出力部112−1に出力し、出力側MLSI123−2で混合バス32〜63の信号を出力部112−2に出力する場合、MLSI123−1では混合バス32〜63の信号をスルーしてそのままMLSI123−2にカスケード伝送する。
CIN433からNram4へ矢印612(図4の442に対応)のように書き込みラインを記載しているのは、このMLSIを出力側に用いる場合に、カスケード伝送されてきた信号をNram4を経由してNDSP431に渡し、NDSP431において出力側の調整処理を行わせるためである。その際の、Nram4への書き込みアドレスは、カスケード信号の各混合バスに対応したアドレスに機械的に書き込めばよい。例えば、Nram4を配列で表記した場合、混合バス0の混合結果はNram4[0]に書き込み、混合バス1の混合結果はNram4[1]に書き込み、…といった具合である。この場合、NDSP431は、出力ch0への入力信号をNram4[0]から読み出し、出力ch1への入力信号をNram4[1]から読み出し、…というように、各出力chの調整処理へ入力する信号を取得する。
COUT434は、Cram1から各混合バスの混合信号を機械的に読み出してカスケード伝送する処理を繰り返している。Cram1には、例えば上記の配列形式の例であれば、Cram1[0],Cram1[1],…にそれぞれ混合バス0,1,…の混合結果が格納されている。そこで、COUT434は、次段のMLSIのCIN433と協働して、所定のタイミングでCram1の各混合バスの信号を順次カスケード伝送する。
IN435は、ADC、Aバス、及び/又はシリアルバスから入力した音響信号を、Nram3、Mram2、又はOram3の任意のアドレスへ書き込む。その書き込みアドレスは、Ireg415により任意に指定できる。これにより図2の入力パッチの一部を実現している。なお、入力信号をNram3に書き込むのは、NDSP431の入力chの調整処理に渡すためである。Mram2に書き込むのは、入力信号をそのままMDSP432の混合処理に渡す場合である。Oram3に書き込むのは、入力信号をそのままOUT436経由で出力する場合である。
OUT436は、DAC、Aバス、及び/又はシリアルバスへの出力信号のラッチタイミングで、Oram1〜3の任意のアドレスの音響信号を読み出して出力する。その読み出しアドレスは、Oreg416により任意に設定できる。これにより図2の出力パッチの一部を実現している。なお、Oram1から取り出すのは、NDSP431の調整処理の出力信号を出力する場合である。Oram2から取り出すのは、図2の混合バス205,206から取り出した信号をそのまま出力する場合である。Oram3から取り出すのは、入力信号をそのまま図2の出力パッチ209に渡す場合である。
なお、図4や図6において、各部431〜436から表側602への書き込みを示す矢印で太線とした部分は、当該MLSIを入力側(図1(a)の122−1〜122−n)として使用した場合の典型的な使用態様例を示す。入力側での典型的な使用態様例とは、IN435で入力した信号をNram3経由でNDSP431に渡し、NDSP431での入力chの調整処理の結果をMram1経由でMDSP432に渡し、MDSP432の混合処理の結果をCram1経由で次段のMLSIにカスケード伝送する(あるいはOram2経由でそのまま出力する)、という信号処理を行う態様である。細線の矢印は、バリエーションとしての使用態様を示している。
図7は、NDSP431とNreg411の内部構成を示す。NDSP431は、I/O RAM711、テンポラリRAM712、YRAM713、セレクタ714,715,717、乗算器716、加算器718、内部バス719、及び外部RAMアクセス回路720を備える。なお、I/O RAM711は、NDSP431内部に記載したが、実際は図4や図6で説明したようにNDSP431の外部にある記憶領域であり、読み出し領域としてはNram1〜4がI/O RAM711に相当し、書き込み領域としてはNram1、Mram1、及びOram1がI/O RAM711に相当する。Nreg411は、補間機能付き係数供給部701、係数メモリ702、マイクロプログラムメモリ703、制御信号発生部704、外部RAMアドレスメモリ705、及び外部RAMアドレス供給部706を備える。
マイクロプログラムメモリ703は、CPU141がNDSP431に実行させたいマイクロプログラムを設定する記憶領域である。図4や図6で説明したように、このマイクロプログラムは、読み書きするI/O RAM711のアドレスを含む。制御信号発生部704は、上記マイクロプログラムに応じた制御信号を生成し、NDSP431内の各部に供給する。NDSP431では該制御信号に基づいて各サンプリング周期毎に3072ステップの処理を繰り返し実行し、これにより複数chの調整処理を行う。図1(b)に示したようにモードによって調整処理を行うch数が異なるから、例えば、モード3では1chに使えるステップ数を比較的大きくでき(上記3072ステップを配分して24ch分の調整処理を行えばよいから1ch当り128ステップ使える)、一方、モード2では1chに使えるステップ数が比較的小さくなる(上記3072ステップを配分して64ch分の調整処理を行うので1ch当り48ステップしか使えない)。1ch当りに使えるステップ数が大きい場合は、図3に示した1ch分の調整処理で、あるブロックの処理を複雑なものとしたり、機能を追加することができる。逆に、1ch当りに使えるステップ数が小さい場合は、図3に示した1ch分の調整処理で、あるブロックの処理を簡易なものとしたり省略しなければならないことがある。なお、1個のMLSI内において、処理する各chの全てで同じ調整処理を行う必要はないから、3072ステップ分の多くのステップ数を一部のchに割り当てて複雑な調整処理を行い、他のchについては残りのステップ数で簡単な調整処理を行う、ということも可能である。
係数メモリ702には、CPU141が各ステップ毎の係数データを設定する。供給部701は補間機能を備えており、補間された係数データがセレクタ715に入力される。この補間機能は、係数メモリ702に設定された係数データの値が変更されたとき(そのままだとその値の急激な変化が雑音になることがある)、該係数データの変化に応じて時間的に補間された係数データを供給するためのものである。外部RAM721は、NDSP431での処理において長時間遅延した信号が必要な場合に使用する遅延メモリである。外部RAMアドレスメモリ705には、該外部RAM721をアクセスする際のアドレスを設定する。供給部706は、外部RAMアドレスメモリ705に設定されているアドレスで外部RAMアクセス回路720が外部RAM721に読み書きできるように、所定のアクセス用制御信号を外部RAMアクセス回路720に供給する。
NDSP431の構成は、従来より知られている通常のDSPと同様のものである。乗算器716は、セレクタ714により選択されたI/O RAM711又はテンポラリRAM712のデータと、セレクタ715により選択された供給部701から供給される係数データ又はYRAM713のデータとを乗算し、乗算結果を加算器718に出力する。加算器718は、セレクタ717により選択された内部バス719、I/O RAM711、又はテンポラリRAM712のデータと、乗算器716から出力されたデータとを加算し、加算結果を内部バス719に出力する。内部バス719には外部RAMアクセス回路720が接続されており、内部バス719上のデータを外部RAM721に書き込み、又は外部RAM721内のデータを内部バス719に読み出すことができる。内部バス719上のデータは、I/O RAM711、テンポラリRAM712、又はYRAM713に書き込んだり、セレクタ717に入力させることができる。なお、上述の各部はパイプライン処理を行っており、1ステップ毎にI/O RAM711からデータを読み出し、1ステップ毎にI/O RAM711に処理後のデータを書き込むことができる。NDSP431では、これら各部がマイクロプログラムメモリ703に設定されたマイクロプログラムに応じて制御信号発生部704が発生する制御信号に基づいて動作することにより、複数ch分の調整処理(例えば図3)を行う。
図8は、MDSP432及びMreg412の内部構成を示す。MDSP432は、I/O RAM811、乗算器812、セレクタ813、加算器814、ゲート815、加算器816、及び内部バス817を備える。なお、I/O RAM811は、MDSP432内部に記載したが、実際は図4や図6で説明したようにMDSP432の外部にある記憶領域であり、読み出し領域としてはMram1,2がI/O RAM811に相当し、書き込み領域としてはNram2、Oram2、及びCram1がI/O RAM711に相当する。Mreg412は、補間機能付き係数データ供給部801、係数メモリ802、I/O RAM読み出しアドレスメモリ803、読み出しアドレス供給部804、モードレジスタ805、制御信号発生部806、及び混合結果出力タイミング信号発生部807を備える。
モードレジスタ805は、図1(b)で説明したモードを設定するレジスタである。制御信号発生部806は、設定されたモードに応じてMDSP432の各部の動作を制御するための制御信号を生成し各部に供給するハードウエアロジック回路である。MDSP432は、該制御信号に基づいて各サンプリング周期毎に3072ステップの処理を繰り返し実行し、これにより混合処理を行う。制御信号発生部806内には混合結果出力タイミング信号発生部807が設けられている。混合結果出力タイミング信号発生部807は、主としてセレクタ813の選択と加算器816の加算のタイミングを制御するためのタイミング信号(そのタイミングについては図9で説明する)を発生する。係数メモリ802は、各ステップ毎の係数データを設定する記憶手段である。供給部801は補間機能(図7の701と同様のもの)を備えており、補間された係数データが各ステップ毎に乗算器812に入力される。I/O RAM読み出しアドレスメモリ803は、各ステップ毎の読み出しアドレスを設定するレジスタである。供給部804は、各ステップ毎に、該メモリ803から読み出しアドレスを読み出し、I/O RAM811に供給する。
乗算器812は、各ステップ毎に、供給部804から供給される当該ステップの読み出しアドレスでI/O RAM811(Mram)から読み出したデータと、供給部801から供給される当該ステップの係数データとを乗算し、乗算結果を加算器814に出力する。セレクタ813は、混合結果出力タイミング信号発生部807から与えられる所定のタイミングでは“0”を選択出力し、それ以外のタイミングでは加算器814の加算結果を選択出力する。加算器814は、乗算器812の出力とセレクタ813の出力とを加算し、加算結果を出力する。なお、不図示であるが、加算器814の出力からセレクタ813の入力側に戻る経路中にはアキュムレータが設けられており、あるステップでの加算器814の加算結果は該アキュムレータに一旦格納され、次のステップでセレクタ813への入力となる。従って、セレクタ813に入力する加算結果は1ステップ前に加算器814で加算した結果である。加算器816は、混合結果出力タイミング信号発生部807から与えられる所定のタイミングで、加算器814の出力とゲート815を介して与えられるCIN433からのカスケード信号(混合バスの信号)とを加算し、加算結果を内部バス817経由でI/O RAM811に書き込む。図6でも説明したが、この書き込みは各混合バスの混合結果をNram2、Oram2、及びCram1の対応する位置へ機械的に書き込む処理である。その書き込みアドレスは、モードに応じて発生される制御信号に予め含まれている。上述の各部はパイプライン処理を行っており、1ステップ毎にI/O RAM811からデータを読み出し、1ステップ毎にI/O RAM811に処理後のデータを書き込むことができる。(なお、このゲート815を閉じると、そのMLSIでは、前段からカスケード入力された音響信号が足しこまれず、そのMLSIの混合バス処理の結果を出力すると、そこから新たなカスケードが始まる形となる。このような利用法により、例えば、図1(a)のような基板がある場合に、最初のx個と後のy個にグループ分けして、それぞれ独立したミキサとして動作させることができる。その場合、(x+1)番目のMLSIに、ゲート815を閉じた状態で入力側の処理を行わせ、そこでカスケードを分離すればよい。)
なお、MLSIを入力側として使用する場合、ゲート815は常に開けた状態とし、MDSP432が前段のMLSIからのカスケード信号を入力できるようにしておく。MLSIを出力側として使用する場合、典型的な使用態様例ではMDSP432は利用しないので、ゲート815は常に閉じた状態とする。出力側での典型的な使用態様例とは、入力側MLSIからカスケード伝送された各混合バスの信号のうち、自MLSIの出力chで調整処理を行う信号のみをCIN433からNram4経由でNDSP431に渡して調整処理を行い(それ以外の信号を含む全ての信号をCIN433からCram1経由で次段の出力側MLSIにスルーする)、NDSP431での出力chの調整処理の結果をOram1経由で出力する(図6参照)、というような信号処理を行う形態である。出力側の処理ではMDSPが全く使われていないので、MDSPへの動作クロックを供給しているラインにゲートを設け、出力側のMLSIではそのゲートを閉じて、動作クロックがMDSPに供給されないようにすれば、その分だけ消費電力を削減することができる。なお、バリエーションとして、NDSP431での出力側調整処理の結果をMram1経由でMDSP432に渡して混合処理を行わせることも可能であり、その場合はゲート815を開けてカスケード伝送されてきた信号との混合を行うようにすることもできる。
次に、図8のMDSP432における混合処理の詳細を説明する。図9は、各モードにおけるMDSP432の混合処理の動作を示すタイムチャートである。図9(a)の901は、時間経過に従ってサンプリング周期毎にワードクロックWCが903−1,903−2,…のように順次発生される様子を示す。902はワードクロックWC903−1と903−2と間の1サンプリング周期を拡大したものである。
図9(b)の910は、モード1の場合の、1サンプリング周期での、MDSP432による混合処理の流れを示すブロックである。これは図5で説明した混合処理522に相当するものであり、ワードクロックWCのタイミング903−1から前方ゆれマージン531+差分マージン532の後にブロック910の混合処理が開始され、その終了後には次のワードクロックWC903−2までに後方ゆれマージン533が確保されている。914はMDSP432が1ステップの動作を行う1動作クロックの周期を示す。「MLSI内部の動作クロック」の行911は、MDSP432が実行する3072の各ステップの番号(0〜3071)を順番に並べたものである。「入力ch」の行912は、どの入力chの信号をI/O RAM811から読み出すかを示す。「Bus」の行913は、どの混合バスへの混合処理を行うかを示す。
以下、図9(b)のモード1の場合の各ステップ毎の処理を順に説明する。
(1)ステップ0における処理を説明する。図8のMDSP432では、読み出しアドレスメモリ803からステップ0に対応するアドレスが読み出され、I/O RAM811(Mram)の該アドレスのデータ(このデータが、行912の、ステップ0の下に示されているi1に対応する。以下、chi1のデータと呼ぶ。)が乗算器812に入力される。Mramの当該アドレスには、前ステップまでにNDSP431による入力chの調整処理の結果やIN435により入力した信号(のサンプルデータ)が書き込まれている。また、ステップ0に対応する係数データが、供給部801から乗算器812に入力される。乗算器812は、Mramから読み出したデータと入力された係数データとを乗算し、その結果を加算器814に入力する。ステップ0では、セレクタ813が“0”を選択出力するように制御信号が与えられる。従って、加算器814は、“0”と上記乗算結果とを加算し、加算結果を出力する。その加算結果は、図8で説明したように、次のステップで使うために不図示のアキュムレータに記憶される。
(2)ステップ1における処理を説明する。MDSP432では、読み出しアドレスメモリ803からステップ1に対応するアドレスが読み出され、Mramの該アドレスのデータ(行912の、ステップ1の下に示されているchi2のデータ)が乗算器812に入力される。また、ステップ1に対応する係数データが、供給部801から乗算器812に入力される。乗算器812は、Mramから読み出したデータと入力された係数データとを乗算し、その結果を加算器814に入力する。ステップ1では、セレクタ813に対して、前ステップ0において不図示のアキュムレータに記憶された加算結果を選択出力するように制御信号が与えられる。従って、加算器814は、前回の加算結果と上記乗算結果とを加算し、加算結果を出力する。その加算結果は、次のステップで使うために不図示のアキュムレータに記憶される。以下、ステップ2〜31でも同様の処理を行う。いまモード1を仮定しているので、当該MLSIではNDSP431により32ch分の調整処理が行われ信号が生成されている。従って、それら32ch分の各信号をMramに書き込み、上記chi1〜chi32のデータとしてMramから読み出して上述したように係数を乗算して累算する積和演算を行えば、当該MLSI内で生成した全32ch分の信号の混合を行うことができる。その混合結果は、上記ステップ31の処理において加算器814から出力される。
(3)図9(b)の915−1に示すステップ31では、上記(2)の処理の後、さらに以下の処理を行う。当該MLSI内で生成した全ch分の信号の混合結果が加算器814から出力されるタイミングで、前段のMLSIからカスケード伝送された信号を図8のCIN433からゲート815経由で取り込み、前記加算器814から出力される結果と当該カスケード信号とを加算器816で加算する。なお、例えば図1(a)のMLSI122−1では前段からのカスケード信号は無い(カスケード入力端子には何も接続されていない)から、その場合は必然的にカスケード信号として常に“0”が入力したものと仮想され、従って加算器814は“0”に加算器814の出力を加算することになる。加算器816の加算結果は、I/O RAM811の所定のアドレスに書き込む。915−1のタイミングで前段のMLSIからカスケード伝送されるのは、混合バス0(MIX1)の信号である。また、上記chi1〜chi32のデータにそれぞれ乗算する係数データは任意に設定できるので、混合バス0に混合したくないchi*については、それに対応する係数メモリ802内の係数データを“0”に設定しておけば混合されないことになる。従って、上記加算器816の加算は、要するに、当該MLSIで生成した全ch分の信号のうち混合バス0に混合すべき信号を混合したもの(加算器814の出力)と、前段のMLSIから入力した混合バス0の信号(ゲート815の出力)とを、混合するという意味を持つ。加算器816の加算結果(混合バス0の混合結果)は、図6で説明したように、Nram2、Oram2、及びCram1のそれぞれの混合バス0に対応するアドレスに機械的に書き込まれる。
(4)ステップ32〜63では、上記ステップ0〜31と同様の動作を行う。ただし、混合バス0の代わりに混合バス1(MIX2)の混合を行う。以下、同様に、ステップ3040〜3071の混合バス95(ステレオBのR)の混合までの処理を行う。
以上により、当該MLSIで生成した32ch分のうちの任意の信号を、96本ある混合バスのうちの任意のバスに、混合できることが保証される。なお、上記の説明から分かるように、モード1では、ステップ31,63,…3039,3071のタイミング(図9(b)の915−1〜915−96)で、加算器816の加算とその加算結果(混合結果)のNram2、Oram2、及びCram1への書き込みが行われ、ステップ0,32,64,…,3040のタイミングで、セレクタ813が“0”を選択出力するように制御しているが、これらのタイミングは混合結果出力タイミング信号発生部807によって検出され、所定の制御信号がMDSP432の各部に供給されるようになっている(図10で詳述する)。
図9(b)は、モード1の場合であるが、他のモードの場合も同様である。図9(c)のモード2の場合は、入力ch数が64で混合バス数が48であるので、64ch分を1まとまりとして混合を行い、ステップ63,127,…,3071(図9(c)の925−1,…,925−48)で48本の各混合バスの信号との混合が行われる。図9(d)のモード3の場合は、入力ch数が24で混合バス数が128であるので、24ch分を1まとまりとして混合を行い、ステップ23,47,…,3071(図9(d)の935−1,…,935−128)で128本の各混合バスの信号との混合が行われる。図9(e)のモード4の場合は、入力ch数が48で混合バス数が64であるので、48ch分を1まとまりとして混合を行い、ステップ47,95,…,3071(図9(e)の945−1,…,945−64)で48本の各混合バスの信号との混合が行われる。
なお、図9では、どのモードの場合も、各混合バスに混合する入力chとしてchi1,chi2,…が記載されているが、例えば同じchi1であっても必ず同じ信号を利用するとは限らない。図8で説明したように、3072の各ステップ毎にMramの読み出しアドレスを読み出しアドレスメモリ803に設定できるからである。従って、例えばモード1のステップ0でMIX1に混合するchi1の信号は図3のプリフェーダの位置(Comp303の出力)から取り出し、ステップ32でMIX2に混合するchi1の信号は図3のポストフェーダの位置(CH_ON305の後)から取り出す、というように、任意の信号を入力して混合することができる。
以上のように、MLSIのMDSP432は、1サンプリング周期内で3072回の積和演算(乗算1回、加算1回)が可能なDSPであり、その3072回をモードに応じたch数×混合バス数で使用している。一般的には、図8のようにMDSP432を構成するとともに、下記(1)〜(3)のようにすればよい。
(1)MDSP432は、1サンプリング周期内で、H=J×K回(JとKは何れも2以上の整数)の積和演算を行うDSPとし、固定値Hに対するJとKの値の組み合わせとして、(J1,K1)、(J2,K2)、…などの複数の組み合わせがあるものとする。これらの組み合わせを、モード1,2,…に割り当て、モードm(m=1,2,…)のときch数がJmで混合バス数がKmとする。例えば、図1(b)の例では、H=3072で、モード1のときJ1=32,K1=96、モード2のときJ2=64,K2=48、モード3のときJ3=24,K3=128、モード4のときJ4=48,K4=64である。
(2)そして、制御信号発生部806で、設定されたモードに応じた制御信号を発生し、1サンプリング周期内で、
・h=0,Jm,2Jm,…,(Km−1)×Jmの各ステップhでは、セレクタ813が“0”を選択出力するようにし、乗算器812と加算器814で
データ[h]×係数[h]+“0”→アキュムレータ
の演算を行い、
・それ以外の各ステップhでは、セレクタ813が前ステップにおける加算器814の出力すなわち上述の不図示のアキュムレータの値を選択出力するようにし、乗算器812と加算器814で
データ[h]×係数[h]+アキュムレータ→アキュムレータ
の演算を行う。なお、データ[h]は読み出しアドレスメモリ803のステップhに対応する読み出しアドレスでMram中から読み出したデータであり、係数[h]は係数メモリ802から供給されるステップhに対応する係数値である。hは、0からH−1の整数をとるステップ番号である。
(3)さらに、h=Jm−1,2Jm−1,…,Km×Jm−1の各ステップhでは、加算器816で
アキュムレータ+カスケード信号→Nram2、Oram2、及びCram1
の演算を行う。これは、前段のMLSIからカスケード伝送された信号をCIN433からゲート815経由で取り込み、前記加算器814から出力される結果と当該カスケード信号とを加算器816で加算する処理である。この処理では、ステップJm−1で混合バス0の混合結果を、ステップ2Jm−1で混合バス1の混合結果を、…、ステップKm×Jm−1で混合バスKm−1の混合結果を、Nram2、Oram2、及びCram1の各混合バスに対応する位置に書き込む。
以上のように、一般化した形でMDSPを構成することができる。なお、JやKの値は2のべき乗が含まれる値とするのがDSPの構成上合理的である。例えば、J=a×2s,K=b×2tの形式の値とし、sとtの値の組み合わせを変えて複数のモードに割り当てるのがよい。
図10(a)は、図8の混合結果出力タイミング信号発生部807の詳細な構成を示す。混合結果出力タイミング信号発生部807は、検出部1001、6ビットカウンタ1002、及びタイミング信号発生部1003を備える。6ビットカウンタ1002は、ステップ0で“0”にリセットされ、その後は動作クロック毎すなわちステップ毎にカウントアップする。検出部1001は、モードに応じて、6ビットカウンタ1002が図10(b)に示す6ビットのパターンになったタイミングを検出する。要するに、モード1のときは図9(b)のステップ31,63,…3039,3071の各タイミングを検出し、モード2のときは図9(c)のステップ63,127,…,3071の各タイミングを検出し、モード3のときは図9(d)のステップ23,47,…,3071の各タイミングを検出し、モード4のときは図9(e)のステップ47,95,…,3071の各タイミングを検出する。検出したタイミングで、上述の加算器816の加算と該加算結果のNram2、Oram2、及びCram1への書き込みを行うように制御信号を発生する。なお、Nram2、Oram2、及びCram1への書き込みは図6で説明したように各混合バスに対応する領域に書き込むものであるから、混合結果出力タイミング信号発生部807は、1サンプリング周期中で何番目に発生した書き込みタイミングであるかをカウントする不図示のカウンタを備えているものであり、該カウンタの値に応じた位置に書き込みを行うような制御信号を発生するものである。検出部1001は、各モードにおいて図10(b)のパターンを検出したタイミングの次のステップ(例えば、モード1ならステップ32,64,…3040のタイミング)で、リセット信号を出力して6ビットカウンタ1002を“0”にリセットする。また、このタイミングで、タイミング信号発生部1003は、セレクタ813が“0”を選択出力するように制御する制御信号を発生する。
図11は、図1(a)のように接続した複数のMLSIで図7〜図10で説明した動作を実行した場合の信号の流れを示す概念図である。MLSI I1で示す太い点線の部分が、図1(a)のMLSI I1で行う演算を示している。以下、MLSI I2〜MLSI Inも同様である。MLSI I1では、1101−1に示すようにch数がjの各入力chの信号(図1(a)の入力部111−1からの信号)がライン1102−1〜1102−jにより入力される。このライン1102−1〜1102−jは、IN435により入力した信号をNram3を介してNDSP431に渡すことに相当する(図4、図6)。例えばモード1が設定されていたとすると、入力ch数が32であるからj=32である。EQ/Comp1103−1〜1103−jの各ブロックは、このMLSI I1のNDSP431で実行する各入力ch毎の調整処理(図3)を示している。各入力chの調整処理の出力は、それぞれライン1104−1〜1104−jを経由して点線で囲ったブロック1105−1に入力する。このブロック1105−1は、当該MLSI I1のMDSP432で実行する混合処理を示している。ライン1104−1〜1104−jは、NDSP431からMDSP432にMram1を介して信号を渡すことに相当する(図4、図6)。
各MLSIの混合処理1105−1〜1105−nを縦に横切るライン1106−1〜1106−kはk本の混合バスに相当する。例えばモード1が設定されていたとすると、混合バス数が96であるからk=96である。ライン1106−1〜1106−kが順に混合バス0,1,…,k−1を表すものとすると、例えば混合バス0に対応するライン1106−1と各入力chに対応するライン1104−1〜1104−jとの各交点は、MLSI I1内の各入力chの信号を混合バス0に混合することを示している。MLSI I2〜MLSI Inも同様である。ただし上述したように、実際の積和演算は、各MLSI内の入力chの信号をまず混合し、その結果をカスケード伝送されてきた混合バスの信号に混合し、次段のMLSIにカスケード伝送する、という手順を採っている。入力側の最終段のMLSI Inからカスケード伝送された各混合バスの信号は、出力側MLSIに入力する。ここではMLSI O1のみを示した。EQ/C1122はMLSI O1における出力側調整処理を示す。1120は図1(a)の出力部112−1へ送られる出力信号を示す。同様に、1121は出力部112−2,112−3へ送られる信号である。MLSIは、設定するモードを変更することにより、上記jとkの値の組み合わせを変更することができる。
図12は、カスケード伝送のタイミングチャートを示す。図12(a)はワードクロックWCのタイミング1201−1〜1201−5を示す。図12(b)は第1周期と第2周期における第1のMLSI(MLSI1と呼ぶ)の動作を示し、図12(c)は同サンプリング周期における第2のMLSI(MLSI2と呼ぶ)の動作を示す。MLSI1のカスケード伝送の出力端子がMLSI2のカスケード伝送の入力端子に接続されているものとする。いまモード1が設定されているとして、MLSI1からMLSI2へのカスケード伝送の処理手順を説明する。MLSI1は、カスケード伝送の流れの先頭のMLSIとする。
図12(b)及び(c)において、「CIN内FIFOへのラッチ」の区間1202−1,2及び1205−1,2は、各MLSIにおいて、各サンプリング周期中で前段のMLSIからカスケード伝送されてくる信号を受信してCIN433内のFIFOへ順次ラッチする受信側処理を行う区間を示す。「混合処理」の区間1203−1,2及び1206−1,2は、各MLSI内で調整処理した信号の各混合バスへの混合処理を行う区間を示す。「Cram1(書込)」は、時間的な流れを示すものではなく、図4や図6で説明したCram1に順次混合結果が格納されていく様子を示すものである。Cram1のMIX1,2,…は、それぞれ、混合バス0,1,…の混合結果を格納する領域を示す。「カスケード伝送」の区間1204−1,2及び1207−1,2は、当該MLSIから次段のMLSIへのカスケード伝送(送信側処理)を行う区間を示す。
MLSI1は、混合処理の区間1203−1で上記図9(b)で説明したブロック910のモード1の混合処理を行い、各混合バス0〜95の混合結果を、915−1〜915−96の各タイミングでCram1(及びNram2とOram2)に順次書き込む。詳しく言うと、まず図12(b)の区間1211は図9(b)のステップ0〜31の処理区間に対応し、区間1212は図9(b)のステップ32〜63の処理区間に対応する(以下省略するが、これ以降も同様)。従って、区間1211の終了タイミングAが図9(b)の915−1に対応し、区間1212の終了タイミングBが図9(b)の915−2に対応するから、タイミングAで混合バス0の混合結果(当該MLSI1で生成した全chの信号のうち混合バス0に混合すべき信号を混合したもの)をCram1(MIX1)に書き込み、タイミングBで混合バス1の混合結果をCram1(MIX2)に書き込み、以下同様にして、区間1203−1で混合バス95までの混合結果をCram1に書き込む。なお、図9で説明したように、各MLSIでCram1に書き込む混合結果は、当該MLSI1で調整処理を行った各chの信号を混合した結果に前段のMLSIからカスケード伝送された信号を加算した結果であるが、MLSI1の前段にはMLSIが存在しないから、ここで加算するカスケード信号は“0”となる。従って、区間1203−1の混合処理でCram1に書き込む混合結果は、当該MLSI1で調整処理を行った各chの信号を混合した結果となる。第2周期の区間1203−2で行う混合処理以降でも同様である。
第2周期のカスケード伝送1204−2の区間では、上記混合処理の区間1203−1で書き込んだCram1の混合バス0〜95の各データをMLSI2へカスケード伝送する。まず、タイミング(1)で混合バス0(MIX1)のデータをCram1から転送開始し、区間1221でその転送を実行し、タイミング(2)でその転送を終了する。次に、タイミング(2)で混合バス1(MIX2)のデータをCram1から転送開始し、区間1222でその転送を実行し、タイミング(4)でその転送を終了する。同様にして、Cram1の混合バス95のデータのカスケード伝送まで順次実行する。なお、モード1では1データ(32ビット)の転送は4転送クロック(32動作クロック)で行うが、転送クロックについては図13で詳述する。
一方、第1周期の区間1203−1の混合処理と同様にして、第2周期でも区間1203−2で混合処理が実行されている。すなわち、区間1213の終了タイミング(3)で混合バス0の混合結果をCram1(MIX1)に書き込み、区間1214の終了タイミング(5)で混合バス1の混合結果をCram1(MIX2)に書き込み、以下同様に混合バス95までの混合結果を書き込む。
上記のタイミング(1)〜(5)は時間的な順序を示している。すなわち、(1)でCram1の混合バス0のデータを転送開始し、(2)でその転送を終了したら、その少し後のタイミング(3)で次の混合バス0の混合結果をCram1に書き込むようにしている。従って、Cram1上の各混合バスの信号の記憶領域においては、カスケード伝送でデータを送出した後に次の混合結果を書き込むことになるので、データの競合は起こらない。これは、カスケード伝送の処理を混合処理より差分マージン分だけ早めて実行し、受信側では受信したデータを一旦FIFOにラッチし必要なタイミングで読み出して使用するようにしていることによる。なお、本実施形態では、図6で説明したようにCramは表裏に二重化されているから、書き込みと読み出しは同時に行っても問題はない。
区間1204−2でカスケード伝送された各混合バスのデータは、次段のMLSI2の区間1205−2の受信側処理で受信・ラッチされる。すなわち、まずタイミング(11)で、MLSI1からカスケード伝送された混合バス0(MIX1)のデータの受信、及び、CIN433内のFIFOへのラッチを開始する。区間1231(MLSI1の区間1221に対応している)で、その受信及びラッチを実行し、タイミング(12)でラッチを終了する。この時点で、混合バス0のデータがFIFOに書き込まれたことになる。同様にして、区間1232(MLSI1の区間1222に対応している)で、混合バス1のデータを受信しラッチする。以下同様に、MLSI1からカスケード伝送される各混合バスの信号を受信・ラッチする。
一方、区間1206−1,2では、(MLSI1の区間1203−1,2と同様にして)MLSI2での混合処理が実行される。区間1206−2で詳しく説明すると、区間1241が図9(b)のステップ0〜31の処理区間に対応し、その終了タイミング(13)が図9(b)の915−1に対応し、区間1242が図9(b)のステップ32〜63の処理区間に対応し、その終了タイミング(15)が図9(b)の915−2に対応する(これ以降も同様)。従って、区間1241で当該MLSI2において調整処理を行った各chの信号を混合した結果(混合バス0に混合すべき信号)を求め、その終了タイミング(13)で、その混合結果に、既にラッチしてあるカスケード伝送で受信した混合バス0のデータを加算し、その加算結果を混合バス0(MIX1)のデータとしてCram1に書き込む。また、区間1242で当該MLSI2において調整処理を行った各chの信号を混合した結果(混合バス1に混合すべき信号)を求め、その終了タイミング(15)で、その混合結果に、既にラッチしてあるカスケード伝送で受信した混合バス1のデータを加算し、その加算結果を混合バス1(MIX2)のデータとしてCram1に書き込む。以下同様にして、当該MLSI2において調整処理を行った信号を混合バス0〜95に反映させてCram1に書き込む。各サンプリング周期でCram1に書き込まれた混合バス0〜95のデータは、次のサンプリング周期のカスケード伝送の送信側処理(1207−1,2など)で次段のMLSIにカスケード伝送される。このとき、Cramの書き込みと読み出しが競合しないことは上述したとおりである。
これ以降のカスケード伝送の処理も同様である。以上から分かるように、本実施形態のMLSIでは、あるサンプリング周期で混合処理した結果は次のサンプリング周期で次段のMLSIにカスケード伝送される。従って、カスケード伝送による遅延は1サンプル分である。図1で言えば、各入力部111−1〜nから各MLSI I1〜Inに同時に入力したサンプルは、最終段のMLSI Inで混合バスに反映されるタイミングを基準にすると、入力部111−n-1から入力したサンプルは1サンプリング周期遅れ、入力部111−n-2から入力したサンプルは2サンプリング周期遅れ、…、入力部111−1から入力したサンプルはn-1サンプリング周期遅れて、それぞれ混合バスに反映されることになる。従来は、複数のDSPを接続した場合、少なくともDSP間の転送に1サンプリング周期かかりDSP内処理に1サンプリング周期かかるので、接続したDSP間で2サンプリング周期の遅延が生じていた。本実施形態のMLSIでは、その遅延を1サンプリング周期に抑えることができるので、サンプルずれに対する要求仕様が厳しい業務用の機器などに適用して好適である。
なお、図1のようにMLSIをカスケード接続する順序は予め分かっているから、各入力部111−1〜nに同じタイミングで入力したサンプルに対して、入力部111−1は遅れ無しでMLSI I1に入力させ、入力部111−2は1サンプリング周期遅れてMLSI I2に入力させ、…、入力部111−nはn−1サンプリング周期遅れてMLSI Inに入力させるようにすれば、混合バスに反映する時点でのサンプルずれを無くすことができる。
図13は、MLSI間のカスケード伝送における伝送ビットデータの詳細を示す。図1で説明したように、モード毎に、1サンプリング周期で伝送する混合バス数(データ数)が異なる。また、各MLSIの内部は166MHzの動作クロックで動作しているが、MLSI間のデータ伝送は、信頼性を確保するため上記動作クロックより遅いクロックで実施する必要がある。そこで、本実施形態のカスケード伝送では、モードに応じて伝送線の数と伝送に使用するクロックの周波数とを変更し、各モードにおいて1サンプリング周期中に必要なデータの伝送が行えるようにしている。
図13(a)は、モード1の場合である。モード1では、1サンプリング周期内で混合バス0〜95のデータ(1データは32ビットなので、全体で32×96ビット)を全て転送する必要がある。そのために、MLSI間の伝送線として8本のライン(それぞれはシリアル伝送を行うライン)を使用し、4転送クロックで1データ32ビットを伝送する。転送クロックは、動作クロックを1/8分周した信号を利用する。従って、1サンプリング周期では、3072動作クロック=384転送クロック分の転送を行うことができ、4転送クロック(32動作クロック)で1データ転送できるので、384/4=96個のデータを転送できる。これが各混合バス0〜95のデータに対応する。図13(a)の「混合バス0」と記載した部分が、混合バス0の信号の当該サンプリング周期における1データ(32ビット)を、8ライン使用して4転送クロックでカスケード伝送している様子を示している。以下、混合バス95まで同様である。図9(b)との対応を述べると、図13(a)の混合バス0の区間が図9(b)の動作クロック0〜31に対応し、図13(a)の混合バス1の区間が図9(b)の動作クロック32〜63に対応し、…、図13(a)の混合バス95の区間が図9(b)の動作クロック3040〜3071に対応している。ただし、図5などで説明したように、カスケード伝送の処理を差分マージン分だけ早めて実行している。
以上のようにしてモード1におけるカスケード伝送を行うことにより、図9や図12で説明したタイミングが保証される。すなわち、例えば図9(b)で言えば、915−1の時点で混合バス0のデータの受信・ラッチが済んでおり、915−2の時点で混合バス1のデータの受信・ラッチが済んでおり、以下同様にして当該MLSI内で各混合バスに加算するデータが生成される時点で前段のMLSIからの当該混合バスのデータの受信・ラッチが済んでいることが保証される。
図13(b)は、モード2の場合である。モード2では、1サンプリング周期内で混合バス0〜47のデータを全て転送する必要がある。そのために、MLSI間の伝送線として4本のラインを使用し、8転送クロックで1データ32ビットを伝送する。転送クロックは、動作クロックを1/8分周した信号を利用する。従って、1サンプリング周期では、3072動作クロック=384転送クロック分の転送を行うことができ、8転送クロックで1データ転送できるので、384/8=48個のデータを転送できる。これが各混合バス0〜47のデータに対応する。
図13(c)は、モード3の場合である。モード3では、1サンプリング周期内で混合バス0〜127のデータを全て転送する必要がある。そのために、MLSI間の伝送線として8本のラインを使用し、4転送クロックで1データ32ビットを伝送する。転送クロックは、動作クロックを1/6分周した信号を利用する。従って、1サンプリング周期では、3072動作クロック=512転送クロック分の転送を行うことができ、4転送クロックで1データ転送できるので、512/4=128個のデータを転送できる。これが各混合バス0〜127のデータに対応する。
図13(d)は、モード4の場合である。モード4では、1サンプリング周期内で混合バス0〜63のデータを全て転送する必要がある。そのために、MLSI間の伝送線として4本のラインを使用し、8転送クロックで1データ32ビットを伝送する。転送クロックは、動作クロックを1/6分周した信号を利用する。従って、1サンプリング周期では、3072動作クロック=512転送クロック分の転送を行うことができ、8転送クロックで1データ転送できるので、512/8=64個のデータを転送できる。これが各混合バス0〜63のデータに対応する。
なお、モードに応じてカスケード伝送に使用する伝送線の本数を変更しているが、これはMLSIの所定のピンの機能をモードに応じて変更できるようにしてあるということである。カスケード伝送に使用しないピンは通常の機能で使用できるようになっている。
また、カスケード伝送の各ラインのシリアル伝送は、データの送信側のMLSIが転送クロックを供給し、受信側のMLSIは該クロックに同期して受信を行うものとする。これにより、各MLSIが個別の動作クロックで動作している状況下でも、MLSI間のカスケード伝送が問題なく行える。
なお、本実施形態の図1(a)のミキサは、通信I/O147を介して接続された不図示のPCから、図1(b)のモードの指定、図2のミキサの機能構成、及び、図3の各chの機能構成などを設定できるユーザインターフェースを持つ。具体的には、PC上で所定のミキサ構成編集プログラムを実行し、モードを指定したり、画面上で図2や図3の構成を作成編集できる。作成編集したミキサ構成やch構成は、PC上でコンパイルして図1(a)のミキサで解釈できるデータ形式に変換され、変換後のデータが本実施形態のミキサに転送される。本ミキサのCPU141は、転送されたデータを解析して、指定された機能構成が実現されるように、各MLSIの制御レジスタを設定する。これにより所望のミキサ構成が実現される。ミキサとしての稼働時には、RAM143内にカレントメモリが確保され、該カレントメモリに、ミキサとしての現信号処理を制御する制御データが保持される。この制御データは、例えば操作子146の操作状態を示す値である。操作子146が操作されると、リアルタイムにカレントメモリ内の当該操作子に対応する制御データが操作に応じて変更される。制御データの変更は、MLSIの制御レジスタに反映される。例えば、(1)図3のVol304に対応するフェーダが操作されたとき、対応する係数メモリ702内の係数データの値を変更する、(2)図3のCH_ON305に対応するスイッチがオフされたとき、対応する係数メモリ702内の係数データの値を“0”に変更する、(3)図3のPPスイッチ308に対応するスイッチが操作されたとき、対応する読み出しアドレスメモリ803のアドレスを変更する、などである。
なお、上記実施形態では、各MLSIはそれぞれ独立した水晶発振器で動作クロックを発生する動作クロック発生部のクロックで動作するようになっているが、近接するMLSI同士であれば同一クロックで動作させることはそれほど難しくないので、相互に近接する一部のMLSIをグループ化し、そのグループ内のMLSIは同じクロックで動作させるようにしてもよい。
入力側に関して、従来の伝送方式(シリアル、Aバス、など)であれば、ある集積回路が前段の集積回路から音響信号を受け取り混合バス毎の加算を行い次段の集積回路へ送信するのに、2サンプリング周期の時間を要していた。本実施形態では、カスケード接続された入力側の2つのMLSI毎に、カスケードの受信側のMLSIにおける混合バスの加算処理を、カスケード伝送される信号のタイミングに合わせることにより、1個のMLSI当たりの遅延を1サンプリング周期、すなわち、従来の伝送方式に比べると半分にすることができた。しかしながら、この方式をさらに進めて、1個のMLSI当たりの遅延を1サンプリング周期以下にすることができる。具体的には、各MLSIにおいて、カスケードの受信処理の開始後、第1差分マージンだけ後に混合処理が開始され、さらに第2差分マージンだけ後にカスケードの送信処理が行われるようにする。そして、前段のMLSIのカスケード送信処理と後段のMLSIのカスケード受信処理とのタイミングが一致するように、カスケード接続された各MLSIのタイミングを調整する。ここで、第1差分マージンは、既に述べた差分マージンと同じ差分マージンであり、第2差分マージンは、各混合バスの処理が終わる時間長である。この場合、1個のMLSI当たりの遅延は、第1差分マージンと第2差分マージンの和程度まで短縮することができる。
なお、上記実施形態では、入力側の信号処理集積回路と出力側の信号処理集積回路は、同じものとして説明したが、異なる信号処理集積回路であってもよい。
110…入出力部、120…信号処理部、121…ワードクロック(WC)発振器、122−1〜122−n及び123−1〜123−3…MLSI、141…CPU、142…フラッシュメモリ、143…RAM、145…パネル表示器、146…操作子、147…通信入出力インターフェース(I/O)。