以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
1. この発明の実施形態のオーディオネットワークシステムの概要
1.1 全体構成
まず、図1に、この発明のネットワークシステムの実施形態であるオーディオネットワークシステムの概略を示す。
図1(a),(b)に示すように、このオーディオネットワークシステム1は、それぞれ単方向の通信を行う受信手段である受信インタフェース(I/F)と送信手段である送信I/Fの組を2組備えたノードA〜Cを、通信ケーブルCBで順次接続することにより構成したものである。ここでは3つのノードにより構成した例を示しているが、ノードの数は任意でよい。
ノードAにおいては、受信I/F_AR1と送信I/F_AT1が一組のI/Fで、受信I/F_AR2と送信I/F_AT2がもう一組のI/Fである。ノードB及びCについても、符号の先頭の文字「A」を「B」あるいは「C」に置き換えたI/Fが、同様な関係に当たる。
そして、ノード間の接続は、1組の受信I/F及び送信I/Fを、別のノードの1組の送信I/F及び受信I/Fとそれぞれ通信ケーブルCBで接続することにより行っている。例えば、ノードAとノードBとの間では、受信I/F_AR2と送信I/F_BT1とを接続すると共に、送信I/F_AT2と受信I/F_BR1とを接続している。また、ノードBとノードCとの間では、ノードBのもう1組のI/Fと、ノードCの1組のI/Fとを接続している。
なお、図1に示す各ノードは、アナログ入力,アナログ出力,デジタル入力,デジタル出力,ミキシング,エフェクト付与,録音再生,リモート制御,あるいはこれらの組み合わせ等の各種機能を有する音響信号処理装置である。ノード毎に機能が違っていても当然構わない。
ここで、(a)に示すように、各ノードを、端部を有する1本のラインのように接続した状態を、「カスケード接続」と呼ぶことにする。そしてこの場合、各ノード間を結ぶケーブルCBにより、破線で示すように1つのリング状のデータ伝送経路を形成することができ、各ノードは、この経路でフレームを一定周期で循環させるように伝送し、そのフレームに対して必要な情報を読み書きすることにより、経路上の任意のノードとの間でデータの送受信を行うことができる。このように、システム内に1つのリング状のデータ伝送経路が構築されている動作状態を、「シングルモード」と呼ぶことにする。
そして、オーディオネットワークシステム1内において、1つのノードがマスタノードとなり、音響信号を伝送するためのフレームを生成し、定期的に伝送経路を循環させたり、ネットワークの管理を行ったりする。このマスタノードが生成するフレームを、その他のフレームと区別して「TLフレーム」と呼ぶことにする。
また、(a)に示したカスケード接続に加え、両端のノードで使用していないI/F同士も通信ケーブルCBで接続すると、(b)に示すように、リング状のデータ伝送経路を2つ形成することができる。そして、各ノードは、これらの経路でそれぞれフレームを伝送し、その各フレームに対して必要な情報を読み書きすることにより、経路上の任意のノードとの間でデータの送受信を行うことができる。このようなノード間の接続状態を、「ループ接続」と呼ぶことにする。また、システム内に2つのリング状のデータ伝送経路が構築されている動作状態を、「ツインモード」と呼ぶことにする。
ただし、オーディオネットワークシステム1においては、シングルモードの動作が基本形であり、ツインモードの動作を許可するか否かは、マスタノードに設定され、マスタノードからシステムを構成する各ノードに伝達される。そして、ツインモードの動作を許可しない設定がなされている場合には、後述のように、ループ接続がなされた場合でもシングルモードの動作を継続する。従って、ノードの接続状態とシステムの動作状態とは、必ずしも対応しない。
また、図1ではケーブルを2本示しているが、1組の受信I/Fと送信I/Fとを近接してあるいは一体として設ければ、2本を束ねて1本にしたケーブルにより、1組のI/F同士の接続を行うことも可能である。
また、各ノードには、必要なI/Fを設ければ、(c)に示すように、外部機器Nを接続し、外部機器Nから受信したデータをTLフレームに書き込んで他のノードに送信したり、TLフレームから読み出したデータを外部機器Nに送信したりすることもできる。
このような外部機器Nとしては、例えば外付けのコンソールが考えられる。そして、コンソールがユーザから受け付けた操作に応じたコマンドをノードBに送信し、ノードBがこれをTLフレームに書き込んで他のノードに送信したり、他のノードがTLフレームに書き込んで送信してきた応答やレベルデータ等をノードBが読み出してコンソールに送信し、コンソールにおける操作子状態の表示やレベル表示に使用するといった動作を行わせることが考えられる。
1.2 TLフレームの構成
次に、図2に、上述した伝送経路で伝送されるTLフレームの構成例を示す。また、図3に、TLフレーム中の波形データ領域、イーサネットフレーム領域及びITLフレーム領域のより詳細な構成を示す。なお、これらの図に示した各領域の幅は必ずしもデータ量と対応しない。
図2に示すように、このTLフレーム100は、サイズが1282バイトであり、先頭から順に、プリアンブル101,管理データ102,波形データ(オーディオデータ)領域103,制御データ領域104,FCS(Frame Check Sequence)105の各領域からなる。各領域のサイズは、その領域に記載するデータ量に関わらずそれぞれ一定である。また、ここで示すFCS105以外の各領域のサイズは一例であり、適宜変更してよい。
そして、プリアンブル101は、計8バイトのデータであり、IEEE(Institute of Electrical and Electronic Engineers)802.3で規定されるプリアンブルとSFD(Start Frame Delimiter)とを記載する。
また、このオーディオネットワークシステム1においては、送信I/Fから送出されるフレームは、1本の接続ケーブルCBで接続された受信I/Fにしか届かないから、アドレスの記載はあまり意味がない。そこで、TLフレーム100には、宛先アドレスは記載する必要はなく、ここではその記載領域は設けていない。
また、管理データ102は、8バイトのデータであり、オーディオネットワークシステム1内の各ノードがTLフレームに含まれるデータの管理に利用するデータとして、フレームの種類を区別するためのフレームタイプ、システム内のどの伝送経路を循環させるフレームかを示すリングID、フレーム通し番号であるフレームID、波形データ103中の波形データのch数、後述のワードクロックのタイミング調整に用いる前方遅延Dfw、後方遅延Dbw、及びシステムの動作状態OS等を記載する。なお、ここで記載されるリングIDを、当該システム内の伝送経路を特定すると同時にシステム自体を特定するIDとしてもよい。
なお、フレームタイプとしては、このフレームがTLフレームであることを示すデータを記載する。また、ツインモードを許可しない場合、システム内の伝送経路は1つのみであるから、リングIDは固定の値となる。また、フレームIDとしては、TLフレームが何周期目のフレームであるかわかるような番号を付すと良い。そして、ループ接続の場合、2つの伝送経路に循環させる同じ周期のTLフレームには同じフレームIDを付し、同じ周期のフレームであることがわかるようにする。
そして、波形データ領域103としては1024バイトを確保し、音響信号のデータである1サンプル32ビットの波形データを256ch分記載できる。すなわち、本システムでは、音声伝送フレームとして1つのTLフレーム100を循環させることにより、256ch分の音響信号を伝送することができる。なお、256ch中の伝送に使われていないch(空きch)の領域については、そこに何が記載されているか気にしなくて良い。本実施形態では、伝送する波形データのビット数が32ビットでない例えば16ビットや24ビットなどの場合でも、各ch毎に32ビットの領域を用意しその領域内に記載するようになっている。しかし、波形データのビット数に応じて各chの領域のサイズを変更するようにしてもよい。その場合、16ビットの波形データは512ch分伝送可能であり、24ビットであれば340ch分伝送可能になる。
また、図3(a)に示すように、波形データ領域103においては、予めオーディオネットワークシステム1を構成する各ノードにchを割り当てておき、各ノードは、自身に割り当てられたchの位置に、出力波形データの書き込みを行う。このchの割り当ては、システム全体を制御するコントローラ(例えば、何れかのノードの制御CPUや図1(c)に示した外部機器)が行うものであり、システムの動作中に適宜変更可能である。また、ノード毎に連続した位置のchを割り当てる必要はないし、どのノードにも割り当てない空きchがあってもよい。
一方、制御データ領域104としては238バイトを確保し、ここには、イーサネットフレーム領域106、ITLフレーム領域107、および管理データ領域108設けている。
このうちイーサネットフレーム領域106には、IP(Internet Protocol)に基づくノード間通信用のパケットであるIPパケットをさらにフレーム化したIEEE(Institute of Electrical and Electronic Engineers)802.3形式のフレーム(イーサネットフレーム)を記載する。
また、記載すべきイーサネットフレームが用意したサイズ(ここでは178バイト)に収まらない場合には、フレームの送信側で必要な数のブロックに分割し、TLフレーム1つにつき、そのブロック1つを記載する。そして、フレームの受信側で複数のTLフレーム100からデータを取り出して結合し、分割前のフレームを復元することにより、通常のイーサネット(登録商標)での伝送と同様にイーサネットフレームをノード間で伝送することができる。
IEEE802.3形式のフレームの最大サイズは1526バイトであり、一方、分割・復元の制御用に数バイトの分割制御データを加えたとしても、1TLフレーム毎に約170バイトの送信ができるので、1つのイーサネットフレームの送信は、最大でも9フレームで完了する。
図3(b)に、このイーサネットフレーム領域106に記載するデータの詳細を示す。
このうち、ブロック数は、送信するフレームをいくつのブロックに分割したかを示す情報である。
ブロック番号は、該当ブロックが分割したブロックのうち何番目のブロックであるかを示す情報である。
送信元IDは、イーサネットフレーム領域106へデータを書き込んだノードを示す情報である。また、送信元IDは、装置のMACアドレスにより記載することができる。なお、オーディオネットワークシステム1のノードとなる各装置は、送信I/Fと受信I/Fを2つずつ備えているが、それぞれ別個のMACアドレスを持つのではなく、装置として1つのMACアドレスを持つ。
データサイズは、該当ブロックに記載したフレームデータのサイズを示す情報である。
フレームデータは、送信するイーサネットフレームのデータである。最終ブロックについては、末尾に空き領域ができるが、受信側で、データサイズの情報に従って、データのある領域のみ読み取るようにすれば問題ない。
また、ITLフレーム領域107には、隣接ノード間でのコマンド及びコマンドに対する応答の伝送に使用するフレームであるITLフレームのデータを記載する。このITLフレームは、後述のように、システム形成初期の情報伝達にも使用するし、システム形成後の情報伝達にも使用する。
またここでも、イーサネットフレーム領域106の場合と同様、記載すべきITLフレームが用意したサイズ(ここでは50バイト)に収まらない場合には、フレームの送信側で必要な数のブロックに分割して記載し、受信側でこれを結合して復元することができる。
図3(c)に、このITLフレーム領域107に記載するデータの詳細を示す。
この図に示したブロック数、ブロック番号、データサイズ、フレームデータ、空き領域は、上述のイーサネットフレーム領域106の場合と同趣旨である。
しかし、ITLフレームの場合は、基本的には隣接ノードへの情報の伝達に用いるものである。そして、離れたノードに伝達する場合でも、後述のように、途中のノードが一旦内容を参照した上で同じ内容のフレームを次のノードに送信する、という方式で伝送を行う。従って、ITLフレーム領域107にデータを書き込んだノードは、必ずその書き込んだノードの隣接ノード(TLフレームを入力した受信I/Fと直接接続されているノード)である。このため、ITLフレーム領域107には送信元ノードIDの記載は必要ない(ただし、後述のように、ITLフレーム自体には送信元ノード及び宛先ノードを示す情報としてそれらのノードのMACアドレスを記載する)。
管理データ領域108は、オーディオネットワークシステム1内の各ノードがTLフレームに含まれるデータの管理に利用するデータを記載する領域である。ここに記載するデータとしては、例えば、TLフレーム100が伝送中に切断されたことを示す切断検出フラグSDF,TLフレーム100の伝送にエラーが生じたことを示すエラーフラグEDF,レベル表示に使用するレベルデータ等が挙げられる。
なお、制御データ領域104内にITLフレームや管理データを記載する専用の領域(ここでは各10バイト)を設けたのは、それらのデータを定常的に伝達するためである。
また、FCS105は、IEEE802.3で規定される、フレームのエラーを検出するためのフィールドである。
次に、図4に、ITLフレームのデータ構成を示す。
ITLフレームの形式には2通りのものがあり、上述のITLフレーム領域107に書き込むのは、図4(a)に示す通常の形式のものである。(b)に示すのは、特殊な用途に用いるITLフレームの形式である。
このうち、(a)に示す通常のITLフレーム110は、プリアンブル111,フレームタイプ112,データサイズ113,送信元ID114,宛先ID115,送信元ポート116,コマンド種類117,パラメータ118,ダミーデータ118a,FCS119の各領域からなる。
そして、このうちプリアンブル111及びFCS119の形式は、図2に示したTLフレーム100の場合と同様である。
また、フレームタイプ112は、TLフレーム100に管理データ102として記載されているフレームタイプと同趣旨のデータである。ただし、ここでは、このフレームがITLフレームであることを示すデータを記載する。
TLフレーム100においてフレームタイプを管理データ102の先頭バイトに記載するとすると、TLフレーム100とITLフレーム110とでは、プリアンブル111、フレームタイプ112及びFCS119が、共通のフォーマットとなる。
また、データサイズ113としては、ダミーデータ118aを除くフレーム中のデータ量を示す情報を記載する。
送信元ID114及び宛先ID115としては、それぞれ送信元装置及び宛先装置のMACアドレスを記載する。
また、送信元ポート116としては、各ノードが複数備える送信I/Fのうち、どの送信I/Fから送信したかを示す情報を記載する。
コマンド種類117としては、このITLフレーム110がどのコマンド(又は応答)を伝達するものであるかを示すコマンドIDを記載する。コマンドの内容については後にいくつか例を挙げる。
パラメータ118としては、コマンド毎に異なるパラメータデータを記載する。
ダミーデータ118aは、フレーム長を一定にするための、特に意味を持たないデータである。
また、(b)に示す特殊なITLフレーム120は、プリアンブル111、フレームタイプ112及びFCS119のみからなる。これらのデータの形式は、ITLフレーム110の場合と同様である。そして、ITLフレーム120の場合、フレームタイプ112の情報として、フレームの用途を示す情報を記載する。
このような形式のITLフレーム120は、オーディオネットワークシステム1においては、後述するノード間の距離計測や切断通知のような、特殊な用途に用いる。そこで、以後、ITLフレームの符号として「110」を用いるが、特に断らない限り、ITLフレーム120についても同等な取扱いが可能である。
1.3 TLフレームの伝送方式
次に、図5に、図2に示したTLフレーム100の伝送タイミングを示す。
この図に示すように、オーディオネットワークシステム1においては、TLフレーム100を、96kHz(キロヘルツ)のサンプリング周期1周期である10.4μsec(マイクロ秒)毎に1つ、ノード間で循環させ、各ノードはTLフレームの所望のchへの音響信号の書き込みないし所望のchからの音響信号の読み出しを行うようになっている。従って、各サンプリング周期に、256の伝送chについて、それぞれ1サンプル分の波形データを、各ノード間で伝送できる。
1Gbps(ギガビット・パー・セカンド)のイーサネット(登録商標)方式のデータ転送を採用すれば、TLフレーム100の時間長は、1ナノ秒×8ビット×1282バイト=10.26μsecであり、1サンプリング周期内に伝送が完了する。
なお、1282バイトの場合、フレーム間の時間間隔を無視すれば、計算上は1sec/10.26μsec=97.47kHzのサンプリング周期まで対応可能であり、96kHzのサンプリング周期であれば、10.4μsec/8ビット/1ナノ秒=1300バイトのフレームサイズまで伝送可能である。しかし、フレーム間には所定時間以上の空きが必要であり、また、フレームの伝送タイミングが前後に揺れる可能性があるので、TLフレームのサイズ(時間長)はそれらを考慮した上で決定される。
次に、図6に、オーディオネットワークシステム1上での音響信号の伝送時(音声伝送モード)における、図2に示したTLフレームの伝送状況を示す。図6に示すのは、シングルモードの場合の例である。
ここでは、ノードAからノードDまでの4つのノードをカスケード接続したオーディオネットワークシステムを考える。そして、このシステム内の各ノードに図2に示したTLフレーム100を循環させる場合、いずれか1つのノードをマスタノードに定め、そのノードのみが新たなサンプリング周期のTLフレーム(通し番号の異なるTLフレーム)の生成を行い、サンプリング周期毎に生成されたTLフレームを次のノードへ送信する。マスタノード以外のノードはスレーブノードであり、それぞれ前のノードからTLフレームを受信し、次のノードへ送信する転送処理を行う。
そして、マスタノードBが最初に図で右向きに、伝送用ワードクロックのタイミングに合わせて、ノードCに向かってTLフレームを送信すると、そのTLフレームは、破線で示すように、ノードB→C→D→C→B→A→Bの順で伝送され、ノードBに戻ってくる。マスタノードから見て、一巡するTLフレームを最初に送信する側を「フォワード側」と呼び、2回目に送信する側を「バックワード側」と呼ぶ。また、この伝送の際、各ノードは、TLフレームを受信してから送信するまでに、他のノードから受信すべき波形データや制御データをTLフレームから読み取り、また他のノードに送信すべき波形データや制御データをTLフレームに書き込む。
そして、マスタノードは、TLフレームが伝送経路を1周して戻ってくると、そのTLフレームの管理データ102を書き換えて後のサンプル周期のTLフレームを生成し、適当なサンプル周期での送信に供する。またこのとき、マスタノードも他のノードと同様にTLフレームに対してデータの読み書きを行う。TLフレームの生成については後に詳述する。
以上を繰り返すことにより、1サンプリング周期につき1つのTLフレームに、(a)から(e)に時系列的に示すように、各ノードを循環させることができる。これらの図において、黒塗りの矢印はTLフレームの先頭を、黒丸はTLフレームの末端を示す。線の矢印は、TLフレームの切れ目を分かり易くするために記載したものである。
なお、各スレーブノードは、TLフレームの全てを受信してからデータの読み書きや次のノードへの送信を行う必要はなく、先頭から必要なバイト数だけ受信したら、データの読み書きや次のノードへの送信の処理を開始してしまってよい。そしてその後、TLフレームの末端まで、受信するのとほぼ同じ速さでデータの読み書きや送信を行って行けばよい。ただし、マスタノードについては、後述する通り、TLフレームの全てを受信してから、その内容に基づいて新たなTLフレームの生成を行うことが好ましい。
また、シングルモードの場合、両端のノード以外のノードは、1周のうちに2度TLフレームを通過させることになるが、このうちITLフレーム領域107以外のデータの読み書きを行うのは1度のみである。どちらでその読み書きを行うかは、最初にTLフレームを通過させる時、図で右向きにTLフレームを通過させる時等、任意に定めればよい。読み書きを行わない場合には、単に送信元アドレスと後述する存在確認情報だけ書き換えてTLフレームの残りの部分はスルーさせればよい。
ITLフレームについては、両方向の隣接ノードに伝達できることが好ましい。そこで、図で右向きにTLフレームを通過させる時には、右側の隣接ノード(又はその先にあるノード)に送信すべきITLフレームのデータをITLフレーム領域107に書き込み、図で左向きにTLフレームを通過させる時には、左側の隣接ノード(又はその先にあるノード)に送信すべきITLフレームのデータをITLフレーム領域107に書き込んで送信するようにするとよい。
また、各ノードにおいて、TLフレームのデータを書き換えるためや、受信側のネットワーククロック(送信元のノードの動作クロックに対応)と送信側のネットワーククロック(当該ノードの動作クロックに対応)の周波数やタイミングの差を吸収するために、TLフレームの受信時にバッファリングを行う必要があるので、TLフレームの受信開始から送信開始まで幾分かのタイムラグが生じる。
そして、ネットワークで伝送される音響信号の伝送遅延(サンプリング周期単位)を最小にしたい場合は、上記のタイムラグの量を考慮して、マスタノードがある伝送用ワードクロックのタイミングで送信開始したTLフレームを、次の次の伝送用ワードクロックより所定時間α(マスタノード内での新TLフレームの準備に係る時間に対応する)だけ前のタイミングに、マスタノードが受信完了できるようにすればよい。
後に詳述するが、この場合、例えばS番目のTLフレームに基づいて、2サンプリング周期先に送信するS+2番目のTLフレームを生成する。
しかし、2サンプリング周期先に送信するTLフレームを生成することは必須ではなく、kを2以上の自然数として、S番目のTLフレームに基づいて、kサンプリング周期先に送信するS+k番目のTLフレームを生成するようにすることも可能である。この場合のkを、「周期更新量k」と呼ぶことにする。
そして、一般に、kの値に応じて、マスタノードがある伝送用ワードクロックのタイミングで送信開始したTLフレームを、k周期先の伝送用ワードクロックより所定時間αだけ前のタイミングに、マスタノードが受信完了できるようにすれば、音響信号の伝送が可能である。従って、ノード数が増え、送信したTLフレームがマスタノードに戻ってくるまでの時間が増加した場合でも、kの値を増加させることにより、音響信号が伝送可能な状態を維持することができる。
この周期更新量kは、マスタノードが適宜設定し、その内容を、周期更新量kの設定を示すパラメータ設定フレームをブロードキャストする等により、システム中の全ノードに伝達すればよい。
ただし、本システムでは各ノードで受信する音響信号のタイミングを相互に合わせているので、kを大きくしてマスタノードにおけるTLフレームの受信完了タイミング遅れを許容できるようにする(許容量はワードクロック単位で定められる)と、その分だけ、伝送される音響信号にワードクロック単位で伝送遅延が生じる。
本システムにおいては、以上のような方式のデータ伝送を行うことにより、1サンプリング周期内にTLフレームを1周させることのできる程度のノード数であれば、ネットワーク内で常にTLフレームのサイズに応じた一定の伝送帯域幅を確保することができる。そして、この帯域幅は、特定のノード間でのデータ伝送量の多寡には影響されない。
なお、ツインモードの場合には、図1からわかるように、マスタノードBが生成して図で右向きに送信したTLフレームを、ノードB→C→D→A→Bの順で伝送する伝送経路と、マスタノードBが生成して図で左向きに送信したTLフレームを、ノードB→A→D→C→Bの順で伝送する伝送経路とができることになる。そして。この伝送の際、各ノードは、TLフレームを受信してから送信するまでに、他のノードから受信すべき波形データや制御データをTLフレームから読み取り、また他のノードに送信すべき波形データや制御データをTLフレームに書き込む。
また、ツインモードの場合、TLフレームが伝送経路を1周する間に全てのノードを1回ずつ通過することになるため、各ノードは、その通過の際にデータの読み書きを行う。
そして、オーディオネットワークシステム1の全体として、2つの伝送経路のフレームに同じデータを書き込んで循環させる二重化通信と、2つの伝送経路のフレームに別々のデータを書き込んで循環させる二倍化通信とを、選択的に行うことができる。
このうち、二重化通信の場合には、フレームは2つになっても同じデータを記載するため、1サンプリング周期当たりに伝送可能な情報量、すなわち通信の帯域幅は、カスケード接続の場合と同じである。しかし、1ヶ所で断線が生じても速やかにカスケード接続の伝送に移行し、同じ帯域幅でのデータ伝送を維持することができる。また、2つのフレームの内容を比較することにより、データが正確に伝送されているかどうかを確認することができる。
一方、二倍化通信の場合には、1サンプリング周期当たりにフレーム2つ分のデータを伝送可能であるから、通信の帯域幅を、カスケード接続の場合の2倍にすることができる。
このどちらを行うかは、マスタノードに設定しておけばよい。
1.4 システムを構成する各装置のハードウェア構成及び基本動作
次に、以上説明してきたようなTLフレームの伝送を行うためのハードウェア及びその動作について説明する。
まず、図7に、上述のオーディオネットワークシステム1を構成する各ノードとなる音響信号処理装置のハードウェア構成を示す。
図7に示すように、この音響信号処理装置2は、CPU201,フラッシュメモリ202,RAM203,外部機器I/F(インタフェース)204,表示器205,操作子206を備え、これらがシステムバス207により接続されている。また、外部機器I/F204とシステムバス207とに接続するカードI/O(入出力部)210も備えている。
そして、CPU201は、この音響信号処理装置2の動作を統括制御する制御手段であり、フラッシュメモリ202に記憶された所要の制御プログラムを実行することにより、表示器205における表示を制御したり、操作子206の操作を検出してその操作に従ってパラメータの値の設定/変更や各部の動作を制御したり、コマンドをカードI/O210を介して他の音響信号処理装置に送信したり、カードI/O210を介して他の音響信号処理装置から受信したコマンドに従った処理を行ったりする。
フラッシュメモリ202は、CPU201が実行する制御プログラムを始め、電源を切っても残しておくべきデータを記憶する書き換え可能な不揮発性記憶手段である。
RAM203は、一時的に記憶すべきデータを記憶したり、CPU201のワークメモリとして使用したりする記憶手段である。
外部機器I/F204は、種々の外部機器を接続し入出力を行うためのインタフェースであり、例えば外部のディスプレイ、マウス、文字入力用のキーボード、操作パネル、PC(パーソナルコンピュータ)等を接続するためのインタフェースが用意される。
外部機器I/F204は、カードI/O210のオーディオバス217にも接続しており、オーディオバス217を流れる波形データを外部装置に送信したり、外部装置から受信した波形データをオーディオバス217に入力したりすることができる。
表示器205は、CPU201による制御に従って種々の情報を表示する表示手段であり、例えば、液晶ディスプレイ(LCD)や発光ダイオード(LED)によって構成することができる。
操作子206は、音響信号処理装置2に対する操作を受け付けるためのものであり、種々のキー、ボタン、ダイヤル、スライダ等によって構成することができる。
また、カードI/O210は、オーディオバス217と制御バス218を備え、これらのバスに種々のカードモジュールを装着することにより、音響信号処理装置2に対する音響信号及び制御信号の入出力及びその処理を行うことができるようにするためのインタフェースである。ここに装着される各カードモジュールは、オーディオバス217を介して相互に波形データを送受信すると共に、制御バス218を介してCPU201との間で制御信号を送受信し、CPU201の制御を受ける。
オーディオバス217は、任意のカードから任意のカードへ、複数チャンネルの波形データをサンプリング周期に基づくタイミングで各1サンプルずつ時分割伝送する音響信号伝送用ローカルバスである。接続された複数カードの何れか1つがマスタとなり、当該カードが生成し供給する信号処理用ワードクロックに基づいてオーディオバス217の時分割伝送の基準タイミングを制御する。その他の各カードはスレーブとなり、その基準タイミングに基づいて各カードの信号処理用ワードクロックを生成する。
すなわち、各カードで生成される信号処理用ワードクロックは、マスタとなるカードの信号処理用ワードクロックに同期した共通のクロックとなり、ノード内の複数のカードは、共通のサンプリング周波数で波形データの処理を行う。さらに、各カードは、自身の信号処理用ワードクロックに基づいて処理した波形データ及び処理すべき波形データを、上記の基準タイミングに基づく時分割タイミングで、オーディオバス217を介して他のカードに送信し、また他のカードから受信する。
なお、ここでいう信号処理用ワードクロックは、意図しない誤差を別にすれば、ノード間でのフレーム伝送のタイミングを制御するための上述した伝送用ワードクロックと同周期で位相が異なるクロックである。これらのクロックの生成方法については、後に詳述する。
図7には、カードI/O210にDSP(デジタル・シグナル・プロセッサ)カード211,212,アナログ入力カード213,アナログ出力カード214,ネットワークI/Fカード215を装着した例を示している。
カードI/O210に装着される各種カードは、そのカードの機能に応じた波形データの処理を、それぞれ、信号処理用ワードクロック(波形データのサンプリング周期)に基づくタイミングで実行する。
このうち、DSPカード211,212は、オーディオバス217から取得した波形データに対し、信号処理用ワードクロックに基づくタイミングで、ミキシング、イコライジング、エフェクト付与を始めとする種々の処理を行う信号処理手段である。処理後のデータも、オーディオバス217に出力する。また、複数chの波形データの入力を受け付けて処理し、複数chの波形データを出力することができる。
アナログ入力カード213は、A/D(アナログ/デジタル)変換回路を備え、マイク等の音声入力装置から入力するアナログ音響信号を、デジタルの波形データに変換してオーディオバス217に供給する機能を有する。複数chの信号を並列して処理することも可能である。
アナログ出力カード214は、D/A(デジタル/アナログ)変換回路を備え、オーディオバス217から取得したデジタルの波形データをアナログの音響信号に変換して、スピーカ等の音声出力装置に出力する機能を有する。
ネットワークI/Fカード215は、送信I/Fと受信I/Fを2組備え、図1乃至図6を用いて説明したTLフレーム100及びITLフレーム110の伝送と、TLフレーム100に対する波形データや制御データ等の読み書きを行う機能とを有する。その詳細については後述する。また、カードI/O210には、ネットワークI/Fカードを複数枚装着することが可能であり、各ネットワークI/Fカード毎に別々のオーディオネットワークに接続することができる。その場合、音響信号処理装置2は、複数のオーディオネットワークを接続するブリッジとしての動作を行う。
また、ここで挙げたもの以外でも、その他カード216として、デジタル入出力、音源、レコーダ、エフェクタ等の、種々のカードモジュールを装着可能とすることが考えられる。
次に、図8に、ネットワークI/Fカード215の構成をより詳細に示す。
図8に示すように、ネットワークI/Fカード215は、フレームの送受信に使用する第1,第2の受信I/F33,31及び第1,第2の送信I/F32,34を備え、また、フレームを用いたデータ送受信に関する処理を行うフレーム処理部220と、音響信号処理装置2のうちネットワークI/Fカード215以外の部分とのインタフェースとなる上位層I/F70とを有する。
このうち、第1,第2の受信I/F33,31及び第1,第2の送信I/F32,34は、図1に示した2組の受信I/F及び送信I/Fと対応する通信手段であり、それぞれ通信ケーブルと接続するための所定のコネクタ(メス側)を備えている。
この通信手段はOSI参照モデルの物理層に相当し、送信I/Fは、供給されるフレームのシリアル信号を、伝送媒体(通信ケーブル)に適した電気信号や光信号に変換して送信し、受信I/Fは、伝送媒体(通信ケーブル)からの電気信号や光信号を、フレームのシリアル信号に逆変換して出力する。
通信ケーブルの接続に際しては、第1の送信I/F32と第1の受信I/F33とを1組とし、第2の送信I/F34と第2の受信I/F31とを1組とする。これらのI/Fは、上述した1サンプリング周期内のTLフレームの伝送に十分な能力を有していれば、どのような通信方式でデータ通信を行うI/Fであってもよいが、ここでは1Gbpsのイーサネット方式のデータ転送を行う物理層を採用している。
現在、1Gイーサネットには、通信ケーブルCBとしてRJ45コネクタ付きCAT5eケーブル(シールドされていないツイストペア)を使用する1000BASE−Tや、光ファイバやSTPケーブル(シールドされたツイストペア)を使用する1000BASE−LX、SXなどいろいろな種類の物理層があるが、本実施形態にはその何れを用いることもできる。また、より高速のイーサネット方式である10GBASE−LR、ER、LX4を用いたり、イーサネット用に調整される前の物理層を用いてもよい。例えば、FiberChannel、SDH(Synchronous Digital Hierarchy)/SONET(Synchronous Optical NETwork)などである。
受信I/Fは、通信ケーブルCBを伝播する電気信号や光信号からキャリアであるネットワーククロックを抽出し、抽出されたクロックに基づいて該電気信号や光信号からバイト単位(ないしワード単位)のデジタルデータのデータ列を復調して出力する。送信I/Fは、ネットワーククロックと送信すべきバイト単位(ないしワード単位)のデジタルデータ列を入力し、該ネットワーククロックをキャリアとして伝送用の電気信号や光信号に変調して通信ケーブルCBに出力する。
また、上位層I/F70は、OSI参照モデルのネットワーク層以上の上位層に対するインターフェースであり、具体的には、図7に示したオーディオバス217及び制御バス218に対してデータを入出力するためのインタフェースである。
そして、ここでは5つのデータ入出力ポートを備えており、このうち2つのIP_Packetポートは、TLフレーム100のイーサネットフレーム領域106から読み出したイーサネットフレームに含まれるIPパケットや、イーサネットフレームを生成してイーサネットフレーム領域106に書き込んで送信するIPパケットの制御バス218を介した入出力を行うためのものである。
また、COMポートは、ネットワークI/Fカード215側の制御部40と、音響信号処理装置2本体側のCPU201との間で、制御バス218を介してコマンドやデータを送受信するためのポートである。
Audio_Inポート及びAudio_Outポートは、オーディオバス217を介して波形データを入出力するためのポートである。
一方、OSI参照モデルのデータリンク層に対応するフレーム処理部220は、大別すると、第1及び第2のデータ入出力部10,20,セレクタ35〜38,制御部40,ワードクロック生成部41を有する。
このうち、制御部40は、CPU,ROM,RAM等を有し、ネットワークI/Fカード215の動作に関する全般的な制御及び、後述するような、ITLフレームを用いて伝達されたコマンドや応答に関する制御を行う。制御バス218を介して通信可能な本体側のCPU201から、ネットワークI/Fカード215の動作に必要な、音響信号処理装置2のMACアドレス、動作状態(マスタ/スレーブ,シングルモードのみ/ツインモード可等)等の設定情報を取得する機能も有する。
そして、制御部40は、ノードの接続順を示す後述するトポロジーテーブルの管理も行う。
また、ワードクロック生成部41は、オーディオバス217における波形データの転送タイミングの基準となる伝送用ワードクロックや、オーディオバス217に接続される各種カードモジュールにおける信号データ処理のタイミングの基準となる信号処理用ワードクロックを生成するクロック生成手段である。
マスタノードにおいては、ワードクロック生成部41は、ネットワークI/Fカード215独自のタイミング、ないし、オーディオバス217を介して供給される他のカードからのワードクロックに同期したタイミングで伝送用ワードクロックを生成し、そのクロックをTLフレーム100の送信タイミングの基準として用いるが、スレーブノードにおいては、TLフレームの受信タイミングを基準としてTLフレーム100の送信タイミングを決定する。
また、後に詳述するが、信号処理用ワードクロックについては、マスタノードにおいてはワードクロック生成部41が伝送用ワードクロックを所定の目標遅延時間だけ遅延させて生成し、スレーブノードにおいてはワードクロック生成部41がTLフレームの受信タイミング、マスタノードから通知された目標遅延時間、TLフレームに書き込まれている伝送時間等に基づいて生成する。
また、第1,第2のデータ入出力部10,20はそれぞれ、図示しない動作クロック発生部の発生する動作クロックに基づいて動作し、対応する受信I/Fが受信したTLフレーム100から所望のデータを読み出す読出手段及び、受信したTLフレーム100に対して所望のデータの書き込みを行う書込手段として機能する。また、TLフレーム100を循環させる伝送経路が確立されていないノードに対し、ITLフレーム110の送受信を直接(TLフレーム100に書き込まずに)行う機能も有する。そして、これらの、第1,第2のデータ入出力部10,20入出力部の機能は同等なものであるので、第1のデータ入出力部10について代表して説明する。
第1のデータ入出力部10は、TLフレーム受信部11,波形データ受信バッファ12,TLデータ受信バッファ13,MAC処理部14,ディレイバッファ15,波形データ送信バッファ16,TLデータ送信バッファ17,TLフレーム送信部18,ITLフレーム受信部51,ITLデータ受信バッファ52,ITLデータ送信バッファ53,ITLフレーム送信部54を備える。これらのうち各送受信部及び各バッファは、基本的には先に書き込まれたデータが先に読み出されるFIFO(ファーストイン・ファーストアウト)形式で動作するものである。
これらのうち、TLフレーム受信部11は、受信したTLフレーム100からのデータの読み出しを行うと共に、そのTLフレーム100をディレイバッファ15に格納する機能を有し、ITLフレーム受信部51は、受信したITLフレーム110からのデータの読み出しを行う機能を有する。
そして、TLフレーム受信部11及びITLフレーム受信部51は、第2の受信I/F31がキャリアとして抽出したネットワーククロックNC1の供給を受けて、それに同期して第2の受信I/F31からのデータの受け取りを行う。ただし、TLフレーム受信部11が第2の受信I/Fからのデータを受け取るのは、セレクタ35が第2の受信I/F側を選択している場合のみである。
第2の受信I/F31から受け取るデータがどのフレームに係るものであるかは、図2及び図4を用いて説明した各フレーム中のフレームタイプのデータを参照すればわかるため、TLフレーム受信部11及びITLフレーム受信部51は、自身が処理すべきフレーム以外は、読み捨てるようにすればよい。特に、ITLフレーム受信部51には、全てのフレームのデータを受け取ることになるが、ITLフレーム110,120以外のフレームは、特に処理せずに廃棄する。
ここで、ITLフレーム110の送受信に関する第1のデータ入出力部10の機能について先に説明する。
ITLフレーム受信部51は、ITLフレーム110を受信した場合、そのデータをITLデータ受信バッファ52に書き込む。そして、フレームにエラーがないことを確認して制御部40に出力し、制御部40はそのフレームに記載されたコマンドの内容に従った処理(自機宛でないコマンドを転送する処理も含む)を行う。
また、ITLデータ送信バッファ53は、第1の送信I/F32に接続されているノードに送信すべきITLフレーム110のデータを格納するバッファであり、制御部40が、その書き込みを行う。
そして、セレクタ36がITLフレーム送信部54側を選択している場合、ITLフレーム送信部54が、適当なタイミングでITLデータ送信バッファ53に格納されているITLフレーム110を読み出し、第1の送信I/F32に供給して接続先のノードに対して送信させる。セレクタ36がTLフレーム送信部18側を選択している場合には、ITLデータ送信バッファ53に格納されているITLフレーム110の送信はTLフレーム送信部18が行うため、ITLフレーム送信部54は特に何の動作もしない。
これらの、ITLフレーム受信部51及びITLフレーム送信部54によるITLフレーム110の送受信は、ブロックには分割せず、フレーム単位で行う。
以上の各部の機能により、ネットワークI/Fカード215は、ITLフレーム110を用いた隣接ノードとの通信を、図で右向きの伝送経路で行うことができる。図で左向きの伝送経路で通信を行う場合には、第2のデータ入出力部20を用いる。
次に、TLフレーム100の送受信に関する第1のデータ入出力部10の機能について説明する。
まず、TLフレーム受信部11は、TLフレーム100のデータを受け取ると、そのデータのうち、読み出すべき伝送chの波形データを波形データ受信バッファ12に書き込み、ITLフレーム領域107のデータをITLデータ受信バッファ52に書き込み、読み出すべきイーサネットフレーム領域106のデータ及び管理データを、TLデータ受信バッファ13に書き込む機能を有する。
データエラー等の検出があった場合には、これらの各バッファへのデータの書き込みを行わなかったり、一旦書き込んだデータを変更したりする場合もあるが、この点については後述する。
また、TLフレーム受信部11は、受け取ったTLフレーム100のデータ全てをそのままディレイバッファ15にも書き込む機能を有する。
そして、波形データ受信バッファ12に書き込まれた各伝送chの波形データは、上位層I/F70のAUDIO_Outポートに対し、信号処理用ワードクロックに同期して1サンプルずつ出力され、オーディオバス217を介して他のカードに伝送される。
また、ITLデータ受信バッファ52に書き込まれたデータは、ITLフレーム1つ分が揃った時点で、制御部40に出力され、制御部40はそのフレームに記載されたコマンドの内容に従った処理(自機宛でないコマンドを転送する処理も含む)を行う。
TLデータ受信バッファ13に書き込まれたデータは、イーサネットフレームのデータについては、イーサネットフレーム1つ分が揃った時点で、MAC処理部14に出力される。そして、MAC処理部14が自機宛てであることを確認したイーサネットフレームについては、MAC処理部14がそこからIPパケットを取り出して上位層I/F70のIP_Packetポートに対して出力し、制御バス218を介して本体側のCPU201に渡される。イーサネットフレーム以外のデータ、例えばメータデータ等は、MAC処理部14を介して制御部40に渡され、制御部40が上位層I/F70のCOMポートを介して必要に応じて本体側のCPU201に渡す。
なお、波形データについては、制御部40が、上位層からの指示に基づき、少なくともどの伝送chのデータを読み取るべきか把握しており、そのデータがTLフレーム100の何バイト目に記載されているかは計算で求められるため、制御部40がその位置をTLフレーム受信部11に指示し、その位置のデータのみを波形データ受信バッファ12に書き込ませるようにすればよい。
ITLフレーム領域107,イーサネットフレーム領域106,及び管理データについては、TLフレーム中の固定的な位置に記載されているから、一旦その位置からデータを読み出した上で、TLフレーム受信部11が制御部40又はMAC処理部14に出力すべきデータを適宜選別して、ITLデータ受信バッファ52やTLデータ受信バッファ13に書き込むようにすればよい。あるいは、TLフレーム受信部11は単純に該当領域のデータを全て受信バッファに書き込み、データの選別を制御部40が行うようにしてもよい。
一方、波形データ送信バッファ16は、TLフレーム100に記載して出力すべき波形データを格納するバッファであり、上位層I/F70は、オーディオバス217から供給される出力すべき波形データを、サンプリング周期毎に信号処理用ワードクロックに同期してAudio_INポートから出力し、波形データ送信バッファ16に書き込む。複数の伝送ch分の波形データを書き込むことも当然可能であり、TLフレームの先頭に近いバイトに書き込むデータを先に波形データ送信バッファ16に書き込んでおけばよい。なお、第2のデータ入出力部20も波形データの読み書きに使用する場合には、上位層I/F70は波形データ送信バッファ26にも出力すべき波形データの書き込みを行うが、波形データ送信バッファ16と波形データ送信バッファ26とで別々の波形データを書き込むことはもちろん可能である。
また、TLデータ送信バッファ17は、TLフレームに記載して出力すべきイーサネットフレームのデータ及び管理データを格納するバッファであり、MAC処理部14が、上位層I/F70のIP_Packetポートから出力される送信すべきIPパケットに基づいて生成したイーサネットフレーム及び、制御部40から供給される出力すべき制御データをTLデータ送信バッファ17に書き込む。
また、ITLフレーム110の送受信についての説明で述べた通り、制御部40は、第1の送信I/F32に接続されているノードに送信すべきITLフレーム110のデータを、ITLデータ送信バッファに書き込む。
そして、自機がスレーブノードである場合、ディレイバッファ15にTLフレーム100のデータが所定量(第1の所定量)蓄積されると、蓄積の進行に合わせて、TLフレーム送信部18がその蓄積されたTLフレーム100を先頭から順に読み出して自身が有するバッファに蓄積する。そして、蓄積の進行に合わせて、波形データ送信バッファ16,TLデータ送信バッファ17及びITLデータ送信バッファ53のデータを適当なアドレスに書き込んでTLフレーム100の内容を書き換える。この書き換えは、後述する送信タイミングに間に合うよう、フレームの先頭側から順に行うとよい。
TLフレーム100の何バイト目にどのデータを書き込めばよいかは、波形データについては、制御部40が書き込むべき伝送chに基づいて算出し、TLフレーム送信部18に指示する。その他、イーサネットフレームやITLフレーム等についても、図2に示した区分に従いデータの種類毎に自動的に決定される。
また、ディレイバッファ15への所定量の蓄積を検出してそれをTLフレーム送信部18による読み出し及び書き換えのトリガとする代わりに、TLフレーム100を取り込み開始してから所定時間の経過を検出して、それをトリガとするようにしてもよい。
そして、自機がスレーブノードである場合、TLフレーム送信部18のバッファにTLフレーム100のデータが第2の所定量だけ蓄積されると、TLフレーム送信部18は書き換え後のTLフレームの出力を開始し、TLフレーム送信部18による差し替え後のTLフレーム100は、セレクタ36がTLフレーム送信部18からの出力ラインを選択していれば、第1の送信I/F32から隣接ノードに対して出力される。このとき、第1のデータ入出力部10の動作クロックが、そのままネットワーククロックNC2として、第1の送信I/F32に供給され、第1の送信I/Fは、TLフレームのデータをネットワーククロックNC2をキャリアとして順次変調して通信ケーブルCBに出力する。
なお、第2の所定量の蓄積を検出してそれを送信のトリガとする代わりに、TLフレーム100を取り込み開始してから所定時間の経過を検出して、それをトリガとして送信を開始するようにしてもよい。
また、図2及び図3を用いて説明したように、イーサネットフレームやITLフレーム110をTLフレーム100に書き込んで送信する場合、これらのデータを複数の(1つの場合もある)ブロックに分割する。この分割と、ブロック毎のブロック番号等の生成は、TLフレーム送信部18が行い、TLフレーム100のデータ書き換えタイミングまでに、書き換えに使用するブロックのデータを用意しておく。
なお、本実施形態では、ディレイバッファ15に記憶されたTLフレーム100に対するTLフレーム送信部18による内容の書き換えと、出力とを同時に行うようになっていたが、先に書き換えを行ってから、書き換えの済んだ部分から順に出力するようにしてもよい。
また、本実施形態では、TLフレーム送信部18のバッファに記憶されたTLフレームへの内容の書き換えと、TLフレーム送信部18からのTLフレームの出力を独立して行うようになっていたが、その書き換えと出力を一度に行うようにしてもよい。すなわち、受信したTLフレーム100のディレイバッファ15への所定量の蓄積をトリガとしてTLフレーム送信部18によるそのTLフレーム100の読み出しを開始し、波形データ送信バッファ16,TLデータ送信バッファ17及びITLデータ送信バッファ53のデータにより内容を差し替えつつ出力するようにしてもよい。
また、データの差し替えは、TLフレーム100の各バイト(又はワード)のデータを出力する際に、ディレイバッファ15から読み出したデータと、波形データ送信バッファ16に格納されていたデータ、TLデータ送信バッファ17に格納されていたデータ、およびITLデータ送信バッファ53に格納されていたデータのうち適切なものを選択して送信するようにしてもよい。この場合、ディレイバッファ15から読み出したTLフレームのデータのうち、選択されなかったデータは破棄されることになる。そして、この処理によっても、TLフレーム送信部18は、実質的に、TLフレーム受信部11が受信したTLフレーム100の適当な領域に、出力すべきデータを上書きしたTLフレームを出力することができる。
また、上述のように、シングルモードの場合、マスタノードを含む各ノードは、TLフレームに伝送経路を1周させる間、ITLフレーム領域107以外のデータは、1回しか読み書きを行わない。従って、ITLフレーム領域107以外のデータは、第1,第2のデータ入出力部10,20のいずれか一方でしかデータの読み書きを行わない。そして、ITLフレーム領域107以外のデータの読み書きを行わない方のデータ入出力部では、ITLフレーム領域107以外の部分のデータは、単にスルーさせるのみとする。
また、ツインモードの場合でも、それが二重化のツインモードであれば、同様に、一方のデータ入出力部でTLフレームに対するデータの読み書きを行い、他方のデータ入出力部ではTLフレームをスルーするようにすることもできる。すなわち、このように実質的に波形データの伝送に一方の伝送経路を循環させるTLフレームのみを用いたとしても、断線が生じた場合の速やかなカスケード接続への移行は可能である。
また、マスタノードが、ある周期のTLフレームを受信し、その受信したTLフレームに基づいて新たな周期のTLフレームを形成して送信する際には、後述するように、TLフレーム100全体の受信が完了してからTLフレーム100の更新を行うようになっており、TLフレーム100へのデータの書き込みのタイミングおよびTLフレーム100の送信開始のタイミングが、スレーブノードとは異なる。しかし、TLフレーム100中のデータの書き込み位置については、スレーブノードの場合と同様に定めることができる。また、TLフレーム100中の管理データ102の書き換えも行うが、この書き換えも、新たなTLフレームに記載すべきデータをTLデータ送信バッファ17に書き込んでおき、このデータをフレームバッファに蓄積されたTLフレームに上書きして行うことができる。
なお、二重化のツインモードの動作では、バックワード側に送信するフレームの内容は、フォワード側に送信するフレームの内容と同じでもよく、その場合、ディレイバッファ15と25、TLフレーム送信部18と28は、共通のハードウェアで構成することもできる。
以上がTLフレーム100の送受信に関する第1のデータ入出力部10の機能である。
ところで、図1(a)等からわかるように、ある装置が受信したTLフレーム100のその装置からの送信先は、そのTLフレーム100の送信元と別の装置になる場合(図1(a)のノードB)と、送信元と同じ装置になる場合(同ノードA,C)とがある。そして、前者の場合、TLフレーム100の送信は、TLフレーム100を受信した受信I/Fと別の組の送信I/Fから行い、後者の場合、同じ組の送信I/Fから行う。
セレクタ35〜38は、このような送信先の切り替えを行うために設けたものである。
このうち、セレクタ35,37はそれぞれ、TLフレーム受信部11,21に入力するデータを、受信I/F31,33で受信したデータとするか、TLフレーム送信部28,18が出力したデータとするかを選択するセレクタである。
一方、セレクタ36,38はそれぞれ、送信I/F32,34から送信するデータを、TLフレーム送信部18,28が出力するTLフレームとするか、ITLフレーム送信部54,64が出力するITLフレームとするかを選択するセレクタである。
そして、これらのうちセレクタ36とセレクタ37とは連動して動作し、セレクタ36がTLフレーム送信部18の出力を第1の送信I/F32に流す状態では、セレクタ37は第1の受信I/F33で受信したデータをTLフレーム受信部21に渡し、第1のI/F側に接続されている装置からTLフレームを受信可能な状態となる。
一方、セレクタ37を折り返しラインLB1側に切り替え、TLフレーム送信部18の出力をTLフレーム受信部21に渡す状態とすると、第2の受信I/F31が受信したTLフレーム100は、第1のデータ入出力部10→折り返しラインLB1→第2のデータ入出力部20を通って、第2の送信I/F34から出力されることになる(セレクタ38がTLフレーム送信部28側を選択していれば)。従って、受信したTLフレーム100をその送信元に対して折り返し送信することになる。
また、セレクタ36はセレクタ37の折り返しラインLB1側への切り替えに連動してITLフレーム送信部54側に切り替わり、第1のI/F側の装置に対しては、TLフレーム100ではなくITLフレーム110を送信する状態となる。一方、第1の受信I/F33がITLフレーム110を受信した場合には、このフレームはITLフレーム受信部61にて処理することができる。
従って、TLフレーム100を折り返す状態でも、TLフレーム100の送信を行わない側に接続されている装置との間で、ITLフレームを用いた通信を行う経路は確保される。
この経路による通信は、後述する接続検出コマンドや接続要求コマンド及びそれらに対する返答の送受信等、初期処理においてオーディオネットワークシステムを組み立てたり、システムの構成変更に係る処理を行ったりする際の通知やコマンドの送受信等に用いる。
また、ここではセレクタ36,37について説明したが、セレクタ38,35も、連動して動作することにより同様な機能を有する。そして、第1の受信I/F33から受信したTLフレーム100に関し、折り返しを行うか否かを切り換えることができる。
以上をまとめると、音響信号処理装置2においては、所属するオーディオネットワークシステム中での各ノードの接続状態と、自機がマスタノードかスレーブノードかとに従い、図8に示したネットワークI/Fカード215のハードウェアが、上述した処理を行うことにより、図1乃至図6を用いて説明したようなTLフレーム及びデータの伝送に係る機能を実現することができる。
2.オーディオネットワークシステムの形成及びその構成変更について
2.1 各装置の通信モード
次に、図7に示した音響信号処理装置2において制御部40のCPUが実行する、オーディオネットワークシステムの構築や構成変更に関連する処理について説明する。
図7に示した音響信号処理装置2において、ネットワークI/Fカード215は、起動時には、セレクタ35,37の両方が折り返しライン側を選択した状態となっている。この状態では、ネットワークI/Fカード215はTLフレームを複数のノード間で循環させるオーディオネットワークシステムは形成しておらず、外部とはITLフレームにより通信を行う状態である(この状態を「初期通信(ITL)モード」と呼ぶ)。
そしてその後、送受信I/Fが、同様なネットワークI/Fカード215を有し、オーディオネットワークシステム1を形成可能な他の装置と接続されたことを検出すると、その接続された側のセレクタを受信I/F側に切り替え、接続された装置との間で、TLフレーム100を循環させるリング状の伝送経路を形成する。この時点で、リング状の伝送経路を形成している各装置が、一連のシステムとして機能を始めることになる。
ただし、この状態では、まだTLフレーム100に対して波形データの読み書きは行わないが、イーサネットフレーム、ITLフレーム、管理データ等、波形データ以外のデータは、TLフレーム100に記載して装置間で送受信できる(この状態を「臨時通信(TTL)モード」と呼ぶ)。このTTLモードでは、伝送経路の端に位置する装置のうち、フリーな送受信I/Fがある側に新たな装置が接続されると、その新たに接続された装置を伝送経路に組み込むことができる。
その後、いずれかの装置がマスタノードに指定されると、その時点で接続されている装置間で再度リング状の伝送経路の形成が行われ、波形データも含めた全てのデータをTLフレームに記載して各装置(ノード)間で伝送するオーディオネットワークシステム1が形成される(この状態を「音声伝送(RTL)モード」と呼ぶ)。このRTLモードでも、伝送経路の端に位置する装置のうち、フリーな送受信I/Fがある側に新たな装置が接続されると、その新たに接続された装置を伝送経路に組み込むことができる。
ネットワークI/Fカード215を備える装置は、これらのITLモード、TTLモード、RTLモードを流動的に遷移することにより、各装置の接続状態に応じてオーディオネットワークシステム1を構築したり、構成を変更したりすることができる。以下、このシステムの構成や構成変更のための処理について説明する。
2.2 システム形成段階の動作
次に、図7に示した音響信号処理装置2において制御部40のCPUが実行する、オーディオネットワークシステムの構築や構成変更に関連する処理について説明する。
図9は、制御部40のCPUが電源ON時及びリセット時に実行する、システムの構築に関する処理のフローチャートである。なお、この処理は、送受信I/Fの組毎に、独立して行うものである。例えば、図8に示したネットワークI/Fカード215の場合、制御部40のCPUは、第1の送受信I/F32,33に対応する処理と、第2の送受信I/F34,31に対応する処理とを行う。以後の説明において、単に送信I/F,受信I/Fと言った場合には、実行中の処理と対応するI/Fを指すものとする。
また、制御部40のCPUは、電源ON時には、この処理と別に、本体側のCPU201から自機のMACアドレスや後述する動作モードの設定に関する情報を取得する処理を行う。
制御部40のCPUは、電源ON時及びリセット時に、少なくとも自機のMACアドレスが取得できると、図9のフローチャートに示す処理を開始する。そして、まず図10に示す物理接続確認処理の要求側動作を実行し、送受信I/Fにオーディオネットワークシステム1を形成する能力を有する装置が物理的に接続されているか否かを確認する(S11)。
図10に、この物理接続確認処理のフローチャートを示す。
この図に示すように、図9のステップS11で実行する物理接続確認処理の要求側動作において、制御部40のCPUはまず、接続検出(AS)コマンドのITLフレームを、送信I/Fから出力する。このASコマンドは、送信I/Fに何らかの装置が接続されていれば、その装置が受信する。
そして、受信した装置もネットワークI/Fカード215を備えていれば、その制御部40のCPUは、図10の返答側動作のフローチャートに示す処理を開始する。
そして、この処理においては、返答側装置の制御部40のCPUは、受信したASコマンドに対する応答であるAS応答を生成し、応答のITLフレームとしてASコマンドの送信元装置に返す(S45)。この応答に記載する情報は、ステップS41〜S44で決定するが、自装置のMACアドレスを把握できていれば、そのMACアドレスを記載し(S41,S42)、自装置がTTLモード又はRTLモードのシステムに既に参加していれば、そのシステムのネットワークID及びシステム内での自機のノードIDも記載する(S43,S44)。
なお、ネットワークIDは、TTLモードの場合には「0」、RTLモードの場合にはシステムに固有な値である。また、システムに参加していない場合には、AS応答にネットワークIDとして「不定値」を示すコードを記載するとよい。また、ノードIDは、システム内で特定のノードを識別するためのIDであり、その値はシステム内でノード毎に固有な値である。
一方、ASコマンドの送信を行った装置は、AS応答の受信を監視しつつ待機する。そして、所定時間経過してタイムアウトする前にAS応答を受信すると(S32)、送受信I/Fにオーディオネットワークシステム1を形成する能力のある装置が接続されていることがわかる。そこで、受信したAS応答の内容に基づき、トポロジーテーブルの内容を更新する(S33)。トポロジーテーブルは、自機と直接に又は他の装置を介して間接に接続されている各装置の接続順を登録するテーブルである。
図11に、このトポロジーテーブルの例を示す。
この図に示すように、トポロジーテーブルには、自機のバックワード側とフォワード側にそれぞれどのような装置がどのような順で接続されているかを、ネットワークID,ノードID及びMACアドレスによって登録する。これらのうち、MACアドレスは装置固有であるが、ネットワークID及びノードIDは、システムへの参加状況に応じて可変である。また、トポロジーテーブルに、装置の機種IDや、後述する装置間のフレーム伝送遅延時間(又は装置間の距離)も登録するようにしてもよい。
また、トポロジーテーブルはここでは、バックワード側とフォワード側についてそれぞれ、図で一番上の欄が自機に直接接続されている装置の情報を示し、その次の欄が、一番上の欄に記載されている装置の1つ先に接続されている装置の情報を示し、という具合に記載する。
2組の送受信I/Fのうち、どちらに接続されている側がフォワード側であるかは、起動時には、I/FのID等により、任意に定めればよい。また、装置によって、異なる向きをフォワード側と認識していても、各装置の相対的な位置関係は把握できるので、特に問題はない。しかし、一旦TTLモード又はRTLモードに移行した場合、図4の説明で述べたように、マスタノードから見て、一巡するTLフレームを最初に送信する側をフォワード側に統一する。
あるいは、第1の送受信I/Fがフォワード側、第2の送受信I/Fがバックワード側、というように向きを固定し、装置間でフォワード側同士やバックワード側同士が接続された場合には、エラーとするようにしてもよい。このようにすると、ユーザによる接続の自由度は低下するが、システムの制御は容易である。
図10の説明に戻ると、制御部40のCPUは、ステップS33の後、返答側装置との間で適宜ITLフレームを送受信して、返答側装置に対しトポロジーテーブルの内容を伝達する(S34)。具体的には、返答側装置と反対側に接続されている装置のデータを、接続順の情報も含めて送信し、その情報を、返答側装置のトポロジーテーブルに登録させる。
その後、ステップS33でのトポロジーテーブルの変更内容(返答側装置が登録された旨)を伝えるテーブル送信通知のITLフレームを生成し、AS応答を受信した側と反対側の送信I/Fから送信して(S35)、図10の処理を終了し、図9のステップS12の処理に進む。
なお、図示は省略したが、このテーブル送信通知を受け取った装置は、自機のノードテーブルに、通知された返答側装置のデータを登録する。また、テーブル送信通知を受信した側と反対側に装置が接続されていれば、その装置にも、トポロジーテーブルの変更内容を伝えるテーブル送信通知のITLフレームを送信する。このようにして、図10の処理を行った要求側装置から見て、返答側装置と反対側に接続されている装置全てにおいて、ノードテーブルに返答側装置のデータが登録される。
ただし、要求側動作自体は、ステップS35の送信が完了した時点で終了してよい。
また、ステップS32でタイムアウトした場合には、送信I/Fには装置が接続されていないか、又は接続されていても、オーディオネットワークシステム1を形成する能力のある装置ではないとわかる。そこで、ASコマンドを送信した側にノードが接続されていないことをトポロジーテーブルに記載する(S36)。その後、ステップS35に進んで、ステップS36でのトポロジーテーブルの変更内容を伝えるテーブル送信通知のITLフレームを生成し、AS応答を受信した側と反対側の送信I/Fから送信して、図10の処理を終了し、図9のステップS12の処理に進む。
なお、この場合にも、ステップS32でYESの場合と同様、ASコマンドを送信した側と反対側に接続されている装置全てに対し、順次トポロジーテーブルの変更内容が伝達される。
また、ステップS31の時点で受信I/Fがネットワーククロックを検出できない等、送受信I/Fに装置が接続されていないことが明らかである場合には、ASコマンドの送信を行わずに、ステップS32の判断をNOとしてもよい。
図10の処理が終了すると、制御部40のCPUは、図9のステップS12において、物理接続確認処理において送受信I/Fにオーディオネットワークシステム1を形成する能力のある装置の接続が確認されたか否か(ステップS32のY/N)を判断する。
そして、接続が確認されていなければ、ステップS11に戻って再度物理接続確認処理を行う(所定時間待機した後でもよい)が、確認されていた場合には、図12に示す論理接続準備処理に進み、接続が確認された相手装置との間で、どのような形でTTLモード又はRTLモードのシステムを形成できるかを判断する(S13)。
この論理接続準備処理は、大まかに言えば、自装置と相手装置のネットワークIDを参照し、RTL>TTL>ITLの優先順位で、優先順位の低いモードの装置を、優先順位の高いモードの装置が参加しているシステムに組み込むことを決定する処理である。また、論理接続とは、装置間でTLフレームを循環させる共通の伝送経路を形成すること、又は既にある伝送経路に新たな装置を加えることを言う。
図12に、この論理接続準備処理のフローチャートを示す。
この図に示すように、論理接続準備処理においては、制御部40のCPUはまず、自装置のネットワークIDにより、自装置がRTL,TTL,ITLのうちどのモードであるかを判定する(S51)。
そして、ITLモード又はTTLモードの場合、次に、相手装置のネットワークIDを確認し、相手装置がRTL,TTL,ITLのうちどのモードであるかを判定する(S52)。ここでRTLモードの場合、自装置の方が優先順位の低いモードであることがわかるため、自装置を相手装置が参加しているRTLモードのシステムに組み込ませることを決定する。
そして、自装置がITLモードであれば、そのままシステムに組み込ませることができる状態であるので、図9のステップS19の論理接続確立処理において、RTLモード移行のため返答側動作を行うことを決定する。
また、自装置がTTLモードであれば、一旦リセットを受け、TTLモードのシステムから抜けてから相手装置が参加しているシステムに組み入れてもらうため、相手装置からのリセット命令を待つ状態に移行することを決定する。ここで一旦リセットを受けることを要求するのは、リング状の伝送経路が形成されている2つのシステムの端のノード同士をそのまま接続してしまうと、2つのリングが融合した伝送経路が形成され、接続時には伝送経路上に2つのTLフレームが存在してしまうことになり、フレーム伝送が正常に行えなくなってしまうためである。
そして、以上のように自装置の行うべき動作が決定すると、図12の処理を終了し、図9のステップS14の処理に進む。
また、ステップS52でITLモード又はTTLモードの場合、ステップS53に進む。
そして、自装置がITLモードであって(S53)、相手装置がTTLモードである場合(S54)、自装置の方が優先順位の低いモードであることがわかるため、自装置を相手装置が参加しているTTLモードのシステムに組み込ませることを決定する。そこで、図9のステップS19の論理接続確立処理において、TTLモード移行のため返答側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
また、自装置と相手装置が共にITLモードである場合、自装置と相手装置とでTTLモードのシステムを形成することを決定するが、この時、システム内でどちらが暫定マスタノードとなるかを決める必要がある。この決定アルゴリズムは、任意のものでよいが、ここでは、MACアドレスの大小で決定するようにしている。そこで、この場合、自装置のMACアドレスが相手装置のMACアドレスより大きいか否か判断する(S55)。そして、自装置が大きければ、自装置を暫定マスタに設定し(S56)、TTLモードへの移行を主導的に行うため、図9のステップS19の論理接続確立処理においてTTLモード移行のため要求側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
ステップS55で自装置が小さければ、相手装置が暫定マスタとなるため、相手装置によりシステムに組み込んでもらうため、TTLモード移行のため返答側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
なお、暫定マスタを決定するためのアルゴリズムとしては、MACアドレス大小の他、物理接続確認処理においてASコマンドを送った方を暫定マスタとする、電源ON又はリセットからの時間が長い方を暫定マスタとする、これらの条件の組み合わせ、等も考えられる。
次に、ステップS53で自装置がTTLモードであった場合、相手側装置と接続すると、ツインモードの伝送経路が形成されるか否か判断する(S57)。具体的には、相手装置が、自身が参加しているシステムの反対側の端に位置するノードであるか否か判断する。この判断は、トポロジーテーブルから、反対側の端のノードのMACアドレスを取得して行えばよい。
そして、この実施形態では、TTLモードはRTLモードに移行するまでの暫定的な通信モードであることに鑑み、TTLモードでは、ネットワークの基本構成であるシングルモードの動作しか許可しない。このため、ステップS57でYESの場合には、相手装置との間で論理接続を行わない。そこで、物理接続確認処理に戻ることを決定して、図12の処理を終了し、図9のステップS14の処理に進む。なお、この場合に相手装置と論理接続を行わないようにしたとしても、相手装置は少なくともTTLモードのシステムには参加しているため、TTLモードのシステムに参加できない装置が出る恐れはない。
また、この場合、装置間の接続状況が変わらなければ、再度の物理接続確認処理後の論理接続準備処理でも、ステップS57でYESとなるので、常にここまでの処理を繰り返すことになる。しかし、装置間の接続状況が変わった場合に、速やかに各装置を適当な通信モードに移行させられるよう、物理接続確認処理と論理接続準備処理とを定期的に行っておくことが好ましい。
また、ステップS57でNOである場合、相手装置がITLモードであれば(S58)、自装置の方が優先順位の高いモードであることがわかるため、相手装置を自装置が参加しているTTLモードのシステムに組み込むことを決定する。そこで、図9のステップS19の論理接続確立処理においてTTLモード移行のため要求側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
また、相手装置がTTLモードであれば(S58)、自装置と相手装置が別々のTTLモードのシステムに参加していることがわかる。この場合には、いずれか一方の装置を一旦システムから離脱させ、その装置を他方の装置が参加するシステムに組み入れる動作を行う(この場合、後述するように、装置を離脱させた側のシステムは、その後、解体されることになる)。
この場合に、どちらの装置を離脱させてもよいのであるが、ここでは、ステップS55の場合と同様、接続された装置同士のMACアドレスの大小により決定するようにしている(S59)。そこで、自装置のMACアドレスが相手装置のMACアドレスより大きい場合には、相手装置をシステムから離脱させるべく、リセット指示コマンドのITLフレームを相手装置に送信する(S60)。また、相手装置はリセットにより後述のようにITLモードに戻るため、再度物理接続確認処理から処理をやり直すことを決定して図12の処理を終了し、図9のステップS14の処理に進む。
この場合、装置間の接続状況が変わらなければ、再度の物理接続確認処理後の論理接続準備処理の際には、ステップS58で下側に進むことになる。
また、ステップS60で自装置が小さければ、相手装置に自装置が参加するシステムを解体させるため、相手装置からのリセット命令を待つことを決定して図12の処理を終了し、図9のステップS14の処理に進む。
なお、ステップS60の場合には、ステップS55の説明で例示したアルゴリズムに加え、システムを構成するノードが少ない方を解体する、といったアルゴリズムも採用可能である。
また、ステップS51で自装置がRTLモードであった場合、相手装置がITLモードであれば(S61)、自装置の方が優先順位の高いモードであることがわかるため、相手装置を自装置が参加しているRTLモードのシステムに組み込むことを決定する。そこで、図9のステップS19の論理接続確立処理においてRTLモード移行のため要求側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
また、ステップS61で相手装置がTTLモードである場合も、自装置の方が優先順位の高いモードであることがわかるため、相手装置を自装置が参加しているRTLモードのシステムに組み込むことを決定する。しかしこの場合、相手装置を一旦参加中のシステムから離脱させた上で組み込みを行う必要があるため、リセット指示コマンドのITLフレームを相手装置に送信する(S62)。また、相手装置はリセットにより後述のようにITLモードに戻るため、再度物理接続確認処理から処理をやり直すことを決定して図12の処理を終了し、図9のステップS14の処理に進む。この場合、装置間の接続状況が変わらなければ、再度の物理接続確認処理後の論理接続準備処理の際には、ステップS61で左側に進むことになる。
また、ステップS61で相手装置がRTLモードである場合には、基本的には、相手装置との間の論理接続は行わない。本実施形態においては、RTLモードは、オーディオネットワークシステム1を実際に音響信号処理に使用するモードであるとの位置づけであり、ユーザからの明示の意思なしにこのようなRTLモードのシステムを壊すことは好ましくないので、RTLモードのシステム同士を結合することは行わないようにしているためである(システムに装置を追加すること自体は差し支えない)。
しかし、自装置が、自装置の参加するシステムの反対側の端の装置と接続された場合には、接続形態がカスケード接続からリング接続に変化することになるので、動作状態をシングルモードからツインモードに移行させることが考えられる。RTLモードの場合、この移行を許可するか否かは、図1の説明で述べた通り、マスタノードにおいてなされている当該システムのモード設定によって決まる。すなわち、マスタノードにおけるモード設定は、予め、マスタノードからTLフレームの伝送経路の全ノードに通知されている。
そこで、相手装置とネットワークIDが一致し、かつツインモード許可(シングルモード限定以外)が設定されていた場合には(S63)、ツインモードへの移行を決定する。そして、この場合、自装置と相手装置のどちらが論理接続処理で主導権を持つかが問題となるが、ここでは、バックワード側に位置する装置に主導権を持たせることとしている。そこで、ステップS64での判断結果に応じて、図9のステップS19の論理接続確立処理においてツインのRTLモード移行のため要求側動作又は返答側動作を行うことを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
また、ステップS63でNOとなるのは、(a)相手装置とネットワークIDが異なる場合、すなわち別々のRTLモードのシステム同士が接続された場合、又は(b)ツインモードの動作が許可されていない場合である。これらのいずれの場合にも、相手装置との間で論理接続を行わないので、物理接続確認処理に戻ることを決定して、図12の処理を終了し、図9のステップS14の処理に進む。
また、この場合、装置間の接続状況が変わらなければ、再度の物理接続確認処理後の論理接続準備処理でも、ステップS63でNOとなるので、常にここまでの処理を繰り返すことになる。しかしここでも、ステップS57でYESの場合と同様、処理を定期的に行っておくことが好ましい。
再度図9の説明に戻る。
図12に示した論理接続準備処理が終了すると、次に実行すべき処理が、論理接続処理、リセット待ち、物理接続処理のいずれかに決まった状態で、図9のステップS14に進むことになる。
そして、その決まった処理が物理接続処理の場合、ステップS14及びS21でNOとなり、ステップS11に戻って処理を繰り返す。
また、リセット待ちの場合、ステップS21からS22に進み、所定時間待機して、相手装置からのリセット要求を待つ。ここで、相手装置の側でも、電源ON時又はリセット時には図9に示す処理を開始している。そして、論理接続準備処理において、自装置と相手装置との関係が「リセット待ち」となる関係であった場合、相手装置が実行する論理接続準備処理において、相手装置はステップS60又はS62でリセット指示コマンドのITLフレームを送信してくるはずである。
ここで、図13に、このリセット指示を受信した場合に制御部40のCPUが実行する処理のフローチャートを示す。この処理は、割り込みにより、他の処理とは独立して実行するものである。
そして、制御部40のCPUは、リセット指示を受信すると、まず自装置のリセットを行う(S71)。この処理には、両側のセレクタ35〜38を折り返しライン/ITLフレーム送信部側に切り替え、自身をITLモードに戻すと共に、トポロジーテーブル及びネットワークIDを初期化し、マスタ/スレーブの設定を「スレーブ」にする処理を含む。従って、リセットを行った装置は、以後別途設定変更があるまでスレーブノードとして機能することになる。なお、リセット時に、MACアドレスや、ツイン許可/不許可、二倍化/二重化の設定を消去する必要はない。
以上の後、リセット指示元にリセット完了を示すリセット応答のITLフレームを送信する(S72)と共に、リセット指示を受信した側と反対側の送信I/Fから隣接ノードに対してリセット指示コマンドのITLフレームを送信し(S73)、処理を終了する。
なお、制御部40のCPUは、ステップS71でのリセット時に、それまで行っていた図9の処理は、中止する。そして、リセットに応じて改めて図9に示した処理を開始する。ただし、他装置からリセット指示があった場合、続けて接続要求コマンド等を受信することも考えられるため、図9に示した処理を開始するまでに、所定時間待機するようにしてもよい。
逆に、相手装置にリセット指示コマンドを送信した装置は、次の物理接続確認処理は、相手装置からのリセット応答の受信をトリガに開始するとよい。この時点であれば、相手装置はITLモードに戻っており、システムに組み入れることができると期待できるためである。
また、図13のステップS73から明らかなように、あるシステムの端の装置がリセットされると、システムに参加していた全ての装置が順次リセットされ、ITLモードに戻り、別のシステムに参加可能な状態となる。TTLモードで動作中のシステム同士を結合させる場合や、RTLモードで動作中のシステムにTTLモードで動作中のシステムを吸収させる場合には、このように、リセットにより吸収される側のシステムに参加している装置を全て一旦ITLモードに戻すようにしている。
また、図示は省略したが、リセット応答を受け取った装置は、自装置のノードテーブルから、リセットを行った装置及びその先に接続されていた装置の情報を削除する。また、この削除を反対側に接続されている装置にも伝達し、リセットを行った装置及びその先に接続されていた装置の情報を順次削除させる。
再度図9の説明に戻る。
ステップS13の論理接続準備処理において、論理接続確立処理を実行することを決定した場合、処理はステップS14からS15に進む。そして、要求側として論理接続確立処理を実行する場合には、相手装置を自装置が参加しているシステムに組み入れてもTLフレームの伝送に支障がないか否かを判断する(S16〜S18)。ここでは、この判断は、ノード数及びフレーム伝送経路の総距離を基準に行う。
このうちノード数は、トポロジーテーブルを参照して容易に把握することができ、相手装置を組み入れても所定数以内に収まれば、問題なしとする。ただし、ツインモードへ移行する場合、接続は、既にシステムに参加しているノードとの間で行うため、接続によってノード数は増加しないことに注意する必要がある。
また、フレーム伝送経路の総距離については、まず、自装置と相手装置との間の距離を計測する。この計測は、相手装置に対し、距離計測用のITLフレーム(図4(b)に示した形式のもの)を送信してから、相手装置がその受信後直ちに返してくる応答のITLフレーム(こちらも図4(b)に示した形式のもの)を受信するまでの時間を計測することにより、行うことができる。相手装置が距離計測用のITLフレームを受信してから応答のITLフレームを送信するまでに要する時間は、ネットワークI/Fカード215の種類やバージョン毎に一定であると考えられるから、計測した時間から、その一定な時間を引いた時間が、装置間の距離に比例する時間となる。計測は何度か行い、そのうち安定とみなせる値の中の最大値を採用するとよい。また、この計測を行う間は、誤差を防止するため、ASコマンド等の他のITLフレームの送受信は行わないようにするとよい。
そして、各装置をシステムに参加させる際に、必ずこの距離計測を行って、隣接装置間の距離をトポロジーテーブル等に記録しておけば、それらを合計して、新たな装置を組み入れた場合のフレーム伝送経路の総距離を求めることができる。そして、この総距離が所定値以内に収まれば、問題なしとする。
そして、ノード数と総距離のどちらも問題なしの場合、ステップS18からS19に進み、論理接続確立処理を実行する。また、問題ありの場合、相手装置をシステムに組み入れることはできないため、ステップS18からステップS11に戻り、処理を繰り返す。このとき、組み入れ不可の通知を送信するようにしてもよい。
なお、ステップS16やS17の基準を設けた理由の1つは、ノード数が多かったり、伝送経路の総距離が長かったりすると、TLフレームに伝送経路を1周させるのに要する時間が長くなり、マスタノードから送信されたTLフレームを、後の周期のTLフレームの生成に必要なタイミングまでにマスタノードに戻せなくなってしまうためである。
従って、この点を考慮すると、
(周期更新量kに応じて決まるフレーム伝送遅延の許容時間)
−(1ノード当たりの伝送遅延時間)×(ノード数)
>(伝送経路の総距離に依存する伝送遅延時間)
であれば、ステップS18で問題ないと判断してよいとも考えられる。
また、周期更新量kに応じて決まるフレーム伝送遅延の許容時間は、kサンプリング周期より、マスタノード内での新TLフレームの準備に係る時間である所要時間αだけ短い時間である。従って、kを増加させれば、許容時間も増加させることができる。
そこで、ノード数や伝送経路の総距離が上記の条件を満たさない場合に、kを増加させることにより、条件を満足させることも考えられる。
次に、図14に、図9のステップS19で実行する論理接続確立処理のフローチャートを示す。
この処理は、要求側動作を行う装置が、返答側動作を行う装置を、自装置が参加しているシステムに組み入れ可能であることを最終的に確認し、この組み入れを実行する処理である。また、返答側動作は、基本的に受身の処理であり、要求側動作を行う装置から受信したコマンドに応じた処理を行うものである。また、論理接続準備処理において、自装置と相手装置との関係が「返答側動作」となる関係であった場合、相手装置が実行する論理接続準備処理において、相手装置は論理接続準備処理において「要求側動作」を行う決定をするはずである。
この論理接続処理において、要求側装置はまず、相手装置(返答側装置)がシステムに組み入れ可能な状態であることを最終的に確認するための接続要求(CQ)コマンドのITLフレームを、送信I/Fから出力する(S81)。なお、このCQコマンドに、相手装置をどのモードのシステム(RTL/TTL及びシングル/ツイン)に組み入れるかを示す情報を記載しておき、相手装置に、そのモードでの通信の準備をさせるようにするとよい。
そしてその相手装置は、CQコマンドを受信すると、制御部40のCPUが、自装置の状況に応じて、論理接続準備中,RTL動作中,TTL動作中,接続可のいずれかの状態を示すCQ応答のITLフレームを、CQコマンドの送信元に返してくる(S101)。
ここで、相手装置がシステムに組み入れ可能な状態であることは、論理接続準備処理において確認しているため、応答は基本的には「接続可」になるはずである。しかし、相手側装置から見て自装置と反対側にも他の装置が接続されている場合、自装置がステップS14〜S18の処理を行っている間に、反対側の装置からの要求により、そちら側のシステムに組み入れられてしまっていたり、組み入れ準備が進行してしまっていたりすることも考えられる。
上記の「接続可」以外の応答は、このような場合になされるものである。そして、「論理接続準備中」は、他の装置からCQコマンドを受信し、その後通信モード切替指示(TM)コマンドの受信を待っている状態であることを示す。「RTL動作中」及び「TTL動作中」は、既にRTLモードのシステム又はTTLモードのシステムに組み入れられたことを示す。
一方、CQコマンドの送信を行った装置は、CQ応答の受信を監視しつつ待機する。そしてここで、所定時間経過してタイムアウトするか、論理接続準備中を示すCQ応答を受信した場合(S82)、所定回数まではリトライする(S88,S89)。しかし、それでも内容が変わらなければ、今回はシステムへの組み入れはあきらめて物理接続確認処理に戻ることを決定し、図14の処理を終了する。なお、応答タイムアウトの場合にはステップS89で所定時間待機する必要はない。
また、RTL動作中を示すCQ応答を受信した場合(S83)、相手装置をシステムに組み入れることはできないため、やはり物理接続確認処理に戻ることを決定し、図14の処理を終了する。
また、TTL動作中を示すCQ応答を受信した場合には(S84)、自装置がRTLモードのシステムに参加しているか、又は自装置のMACアドレスが相手装置より大きい場合(TTLモードのシステム同士が接続されたとして相手装置をシステムから離脱させてよい場合)には(S90)、リセット指示コマンドのITLフレームを相手装置に送信する(S91)。そして、初めから処理をやり直して相手装置をシステムに組み入れるべく、物理接続確認処理に戻ることを決定し、図14の処理を終了する。また、ステップS90でNOの場合には、相手装置をシステムに組み入れることはできないため、単に物理接続確認処理に戻ることを決定し、図14の処理を終了する。
一方、接続可を示すCQ応答を受信した場合には、ステップS82〜S84の判断が全てNOとなる。そして、相手装置に対して最終的に動作状態の変更を要求する通信モード切替指示(TM)コマンドを、送信I/Fから送信する(S85)。なお、このTMコマンドには、相手装置をどのモード(RTL/TTL及びシングル/ツイン)に移行させるか、及び相手装置を組み入れるシステムのネットワークIDの情報を記載しておく。
そしてその相手装置は、TMコマンドを受信すると、制御部40のCPUが、まず移行了解を示すTM応答のITLフレームを、TMコマンドの送信元に送信する(S103)。そして、その後直ちに、TMコマンドを受信した側について、TLフレームのループバックを解除する(S104)。この解除は、解除する側の2つのセレクタを、それぞれ受信I/F側及びTLフレーム送信部側に切り替えればよい。
新たにシステムに組み入れられる装置は、まだTLフレームの送受信は行っていないため、どのタイミングでループバックの解除を行っても問題ない。また、どのモードに切り換える場合でも、ループバックの解除は同じように行う。ただし、ループバックを解除してしまうと、解除した側では、ITLフレームの直接送信ができなくなってしまう(ただし、TLフレームに書き込めば送信できる)ため、TM応答の送信は、ループバックの解除前に行っておく。
ステップS104の後は、CPUは、自機の動作状態及びネットワークIDを、TMコマンドの指定に従って変更する(S105)と共に、モード移行完了を上位層(本体側CPU)に通知して(S106)、処理を終了する。ステップS105の時点で、動作状態及びシステムの構成に応じて、第1,第2のデータ入出力部10,20のどちら(又は両方)を用いてTLフレームに対する波形データやイーサネットフレームの読み書きを行うかや、TLフレームに対する波形データの読み書きを行うか否か、等の設定を行う。
一方、要求側装置は、TMコマンドの送信後、相手装置からタイムアウト前にTM応答を受信すると(S86)、TLフレームの送受信をしていないタイミングでセレクタを切り替え、相手装置側のループバックを解除する(S87)。既にシステムに参加している装置では、TLフレームの送受信中にループバックを解除してしまうと、TLフレームを途中から別の送信先に送信してしまい、フレームを壊してしまうことになる。そこで、図5にあるような、フレームとフレームの合い間でループバックの解除を行うことが重要である。また、要求側装置が初めて他の装置と論理接続を行う場合には、ステップS87の段階ではまだTLフレームの循環を行っていない。そこで、ステップS87の後、マスタノード(TTLモードの場合は暫定)として、TLフレームの生成と送出を開始すればよい。
そして、以上で図14の論理接続処理を終了する。
また、ステップS86でタイムアウトした場合には、今回はシステムへの組み入れはあきらめて物理接続確認処理に戻ることを決定し、図14の処理を終了する。
また、返答側装置も、CQ応答の送信後所定時間内にTMコマンドの受信がなかった場合、タイムアウトと判断し(S102)、今回はシステムへの組み入れはあきらめて物理接続確認処理に戻ることを決定し、論理接続処理を終了する。返答側動作の開始後所定時間内にCQコマンドを受信しなかった場合も、同様とするとよい。
再度図9の説明に戻るが、図14に示した論理接続確立処理の終了後は、ステップS20に進む。そして、論理接続確立処理において接続が確立した(要求側動作のステップS87または返答側動作のステップS104を実行した)場合にはそのまま処理を終了する。一方、再度物理接続を行うことを決定した場合には、ステップS11に戻って処理を繰り返す。
そして、複数の音響信号処理装置2において、制御部40のCPUが図9乃至図14を用いて説明した処理を実行することにより、電源がONされ、ケーブルが接続された装置から順に、自動的に、TTLモードでTLフレームを循環させるネットワークシステムを形成することができる。
この状態では、まだ波形データの伝送は行われないものの、システムを構成するノードとなった各装置間では、イーサネットフレーム及びITLフレームを、TLフレームに書き込んで任意に送受信することができる。従って、ある装置のコンソールを操作し、その操作内容を他の装置に伝達してその装置におけるパラメータの値を編集するといった動作は、問題なく行うことができる。また、イーサネットフレームを用いたIPパケットの送受信により、複雑なアルゴリズムに従ったネゴシエーションも容易に行なうことができる。
なお、上述のように、図9に示した処理は、送受信I/Fの組毎に、独立して行うものである。また、複数の装置によりシステムが形成された後は、その両端の装置が、ループバックを行っている側の送受信I/Fについて、独立して行うものである。
従って、システムの両側で同時に新たな装置がシステムに組み入れられてしまい、それぞれ片方のみの組み入れではステップS16〜S18の条件を満たすのに、両側の組み入れがなされた状態ではこの条件を満たさなくなってしまうこともあり得る。
このような場合には、フォワード側でもバックワード側でも、予め定めておいた一方の側で組み入れられた装置を、マスタノードの判断により強制的にシステムから除外して、TLフレームの循環が可能な状態を保つようにするとよい。
ところで、ここまでに説明した処理には、RTLモードのシステムに新たな装置を組み込む処理は含まれているが、最初に装置をRTLモードに設定する処理は含まれていない。次に、この処理について説明する。
本実施形態においては、マスタノードを指定するためのコマンドとして、動作モード切替(OM)コマンドを用意しており、このコマンドを受け取った装置が、自身をマスタノードに設定して、最初にRTLモードに移行する。
また、OMコマンドは、何れかの装置がマスタノードを自動的に決定して発行することも妨げられないが、ユーザの指示に応じて発行することが好ましい。この場合、オーディオネットワークシステム1を構成させようとする装置の少なくとも1つには、ユーザからマスタノードの選択を受け付ける機能を設ける。この機能としては、トポロジーテーブルを参照して、通信可能な範囲の装置のリストをユーザに提示し、その中からマスタノードを選択させるものでよい。この時、同時に動作モード(ツイン許可/不許可,ツイン時二倍化/二重化等)の設定も受け付けるとよい。
なお、ITLフレームを用いれば、各装置の動作モードによらず、物理接続がなされている範囲の全ての装置と通信可能である。TTLモード(RTLモードでも)で動作中の装置間では、ITLフレームをTLフレームに記載して伝送し、TLフレームの伝送経路が途切れている部分は、ITLフレームをITLフレーム送信部からそのまま送信すればよい。
そして、ユーザによりマスタノードの選択がなされた場合、その選択を受け付けた装置は、マスタノードとして選択された装置を送信先として、パラメータとしてシステムの動作モードの設定を記載した、OMコマンドのITLフレームを送信する。この送信は、トポロジーテーブルを参照し、送信先の装置が存在している側に対して行う。また、ここで記載されるシステムの動作モードには、ツインモードを許可しない第1モード、二重化でのツインモードを許可する第2モード、二倍化でのツインモードを許可する第3モードがある。
図15に、このOMコマンドを受信した場合に制御部40のCPUが実行する処理のフローチャートを示す。
この図に示すように、OMコマンドを受信した装置の制御部40のCPUは、まず、受信したコマンドが自装置宛か否か判断する(S111)。そして、自装置宛でなければ、受信したOMコマンドのITLフレームを、そのまま受信した側と反対側に送信して(S118)処理を終了する。OMコマンドが宛先の装置に届くまでは、途中の各装置がこのように順次ITLフレームの伝送を仲介する。この点は、他のコマンドの場合でも同様である。
一方、ステップS111で自装置宛であれば、OM応答のITLフレームを、OMコマンドの送信元装置を送信先として、その装置が存在する側に対して送信する(S112)。その後、図13のステップS71の場合と同様、自装置をリセットし、現在何らかのシステムに参加していれば、そのシステムを一旦離脱する(S113)。その後、自装置をマスタノードに設定する(S114)と共に、自装置にRTLモードの固有のネットワークIDを設定する(S115)。
そして、OMコマンドに記載されたパラメータに従って動作モードの設定を行い(S116)、さらにその他必要な設定を行った後(S117)、両側にリセット指示コマンドのITLフレームを送信して(S118)、処理を終了する。
ステップS117で設定する内容は、例えば波形処理用ワードクロックの生成に使用する目標遅延Dt等であるが、この点については、「4.ワードクロックのタイミング調整について」において詳述する。
この後、両側の装置から始まって通信可能な範囲の装置が順次リセットされていく。そして、マスタノードとなった装置自体も、図9に示した処理を開始し、RTLモードのシステムに参加している装置として、両側に接続されている装置を、条件の許す限り順次システムに組み込んでいく。なお、図9に示した処理は、隣接ノードからのリセット応答の受信をトリガに開始するとよい。この時点であれば、隣接ノードはITLモードに戻っており、システムに組み入れることができると期待できるためである。
以上の処理により、音声伝送の可能なRTLモードのオーディオネットワークシステム1を、ユーザの指示に応じてマスタノードを設定して形成することができる。
なお、一度システムが形成された後でも、両端に新たな装置が接続された場合には、随時その装置をシステムに組み入れることができる。また、ユーザは、マスタノードや動作モードを変更したい場合、随時指示を行ってOMコマンドを発行することができる。
そして、オーディオネットワークシステム1がRTLモードで動作中であっても、いずれかのノードが自分宛のOMコマンドを受け取ると、そのノードが新たなマスタノードとなり、図15に示した処理によりシステム全体をリセットして再度オーディオネットワークシステム1の形成を行う。
また、本実施例では、マスタノードの選択とシステムの動作モードの設定とを1つのOMコマンドで行うようになっているが、マスタノードを選択するコマンドと、システムの動作モードを設定するコマンドとを別々にしてもよい。
また、ステップS118で送信するリセット指示や、そのリセット指示を受信した装置が図13のステップS73で送信するリセット指示に、それぞれ当該一連のリセット指示を特定するためのIDを付与し、各装置は、過去に受け取ったリセット指示と同じIDのリセット指示を受け取った場合には、そのリセット指示に応じた図13の処理によるリセットを実行しないようにするとよい。
ループ接続の場合、接続に端がないため、マスタノードから発せられたリセット指示に応じて各装置が単に図13の処理を実行してリセット指示を先の装置に伝達してしまうと、いつまでもリセット指示の伝達が続いてしまうことが考えられる。従って、上記のIDのように、適当な装置でリセット指示の伝達を止める手段を設けることが有効である。
この場合、マスタノードが両側から送信するリセット指示に同じIDを付すとすると、それらのリセット指示がそれぞれ反対方向から伝送されてきてぶつかる、ループの略反対側のノードで、リセット指示の伝達が停止することになる。
2.3 システム形成の具体例
次に、図16乃至図20を用いて、ここまでに説明してきた処理による、オーディオネットワークシステムの形成手順の具体例を説明する。
まず、図16及び図17には、装置A乃至装置Eの5台の装置が予め通信ケーブルで接続されており、装置Aから装置Eの電源を順次ONしていく場合の、システムの構成手順の例を示す。
まず、図16(a)に示すように装置A,Bの電源がONされると、これらの装置は、それぞれ図9に示した処理を開始し、図10に示した物理接続確認処理によりASコマンドとAS応答を交換することにより互いの存在を認識して情報を交換し、トポロジーテーブルに互いの情報を登録する(変更部分をハッチングで示した、以下同様)。そして、図12の論理接続準備処理において、双方がITLモードであることから、ステップS55,S56でいずれかの装置を暫定マスタノードとして、図14の論理接続処理により、装置Aと装置Bとで、TTLモードのシステムを構成することができる。
次に、(b)に示すように装置Cの電源がONされると、装置Bは物理接続確認処理により装置Cの存在を認識して装置Cと情報を交換し、トポロジーテーブルに互いの情報を登録する。
その後、(c)に示すように、装置Bは装置Cに反対側に既に接続されている装置Aの情報を通知し、装置Aには反対側に新たに接続された装置Cの情報を通知する。その結果装置A〜Cの全てに、電源ON済みの全ての装置の情報が揃うことになる。
また、装置BがTTLモードで、装置CがITLモードであるから、図14の論理接続処理により、装置Bが装置Cをシステムに組み入れる。
次に(d)に示すように装置Dの電源がONされた場合も、(b)の場合と同様、装置Cは物理接続確認処理により装置Dの存在を認識して装置Dと情報を交換し、トポロジーテーブルに互いの情報を登録する。
その後、図17(e)に示すように、装置Cは装置Dに反対側に既に接続されている装置B,Aの情報を通知し、装置Bには反対側に新たに接続された装置Dの情報を通知する。また、(f)に示すように、装置Bは装置Cから通知された装置Dの情報を、反対側に接続されている装置Aに通知する。以上の結果、装置A〜Dの全てに、電源ON済みの全ての装置の情報が揃うことになる。
また、装置CがTTLモードで、装置DがITLモードであるから、図14の論理接続処理により、装置Cが装置Dをシステムに組み入れる。
同様にして、(g)で装置Eの電源がONされた場合も、システムの端のノードである装置Dが新たに検出された装置Eとコンタクトし、システムに組み入れる。また、ノードテーブルの情報も、(h)に示すように、各装置が把握していない情報を順次通知することにより、装置A〜Eの全てに、電源ON済みの全ての装置の情報が揃うことになる。
以上の手順により、順次電源のONされた装置A〜Eにより、TTLモードでTLフレームを循環させるネットワークシステムを自動的に形成することができる。上記の例において、電源ONをケーブル接続に置き換えても同様な動作をすることは、もちろんである。
次に、図18に、TTLモードで動作中のシステム同士が接続された場合の動作例を示す。
この図には、装置A〜装置CがTTLモードのシステムを形成しており、装置D,装置Eが、これとは別のTTLモードのシステムを形成している状態で、装置Cと装置Dとが新たに通信ケーブルにより接続された場合の例を示している。
この場合、装置Cと装置Dは、定期的に図9のステップS11で物理接続確認処理を行っている状態であるから、この物理接続確認処理により、互いの存在を確認する(a)。
そして、ステップS13の論理接続準備に進むと、TTLモードの装置同士が接続されたため、MACアドレスの大きい装置Cが、図12のステップS60で、装置Dに対してリセット指示コマンドを送信する。その結果、装置Dはシステムを離脱してITLモードに戻る(b)。
また、装置Dは、リセット処理の一環として、装置Cの反対側の装置Eにもリセット指示コマンドを送信する。その結果、装置EもITLモードに戻る(c)。
一方、装置Cは、装置Dにリセット指示コマンドを送信した後、再度物理接続確認処理、論理接続準備処理、論理接続確立処理を順次行って、ITLモードとなった装置Dを、自身の参加しているシステムに組み入れる(d,e)。
また、装置Dは、システムに組み入れられた後、システムの端のノードとして物理接続確認処理、論理接続準備処理、論理接続確立処理を順次行って、ITLモードとなっている隣接の装置Eを、自身の参加しているシステムに組み入れる(e,f)。
TTLモードで動作中のシステム同士が接続された場合、以上の手順により、これらを結合した1つのシステムを自動的に形成することができる。
次に、図19に、TTLモードで動作中のシステムを構成する装置が動作モード切替(OM)コマンドを受信した場合の動作例を示す。
この図には、装置A〜装置EがTTLモードのシステムを形成しており、このうち装置BがOMコマンドを受信した場合の例を示している。
この場合、OMコマンドを受信した装置Bは、図15に示した処理により、自身をリセットして参加中のシステムから離脱すると共に、自身をマスタに設定し、RTLモードに移行する(a,b)。そしてさらに、両側の装置にリセット指示コマンドを送信し、両側の装置も参加中のシステムから離脱させ、ITLモードに戻す(c)。
このリセット指示コマンドは、(d)では装置Cから装置Dへ、(e)では装置Dから装置Eへの、接続されている全ての装置に順次伝達され、全ての装置が一旦ITLモードに戻される。
一方、装置Bは、装置A及び装置Cがリセットを完了してリセット応答を送信してくると、図9に示す処理を開始する。そして、物理接続確認処理、論理接続準備処理、論理接続確立処理を順次行って、ITLモードとなっている隣接の装置A,Cを、それぞれ自身をマスタとするRTLモードのシステムに組み入れる(d,e)。
また、その後、(e)の時点でシステムの端のノードとなっている装置Cが、物理接続確認処理、論理接続準備処理、論理接続確立処理を順次行って、ITLモードとなっている隣接の装置Dを、自身の参加しているシステムに組み入れる(f)。そして、装置Dも、同様に装置Eを自身の参加しているシステムに組み入れる(g)。
TTLモードで動作中のシステムを構成する装置がOMコマンドを受信した場合、以上の手順により、TTLモードのシステムをRTLモードのシステムに組み替えることができる。なお、RTLモードで動作中のシステムを構成する装置がOMコマンドを受信した場合でも、各装置の動作は同様なものである。
次に、図20に、シングルモードからツインモードへの移行動作例を示す。
この図には、装置D→E→A→B→Cの順で接続され、RTLモードで動作しているシステムにおいて、両端の装置Cと装置Dとがケーブルにより接続された場合の例を示している。ただし、ツインモードへの移行は許可されているとする。
この場合、装置Cと装置Dとは、定期的に図9のステップS11で物理接続確認処理を行っている状態であるから、ケーブルにより接続されると、この物理接続確認処理により、互いの存在を確認する(a,b)。また、トポロジーテーブルには、互いの情報が、反対側の端のノードの情報として登録されているが、これに加え、新たに接続された側のノードとしても登録する(b)。装置Cと装置Dは、この時点で、物理接続がリング状になされたことを把握できる。
また、装置Cと装置Dは、カスケード接続の場合には、新たに接続された装置の情報を、その装置と反対側に接続されている装置に通知する。しかし、リング接続の場合にこれを行うと、装置Cが発した通知と、装置Dが発した通知とが重複してしまうし、接続に端がないため、どこで通知をやめればよいかもはっきりしない。
そこで、リング接続の場合には、フォワード側の装置のみが、新たに接続された装置の情報を、その装置と反対側に接続されている装置に通知することとしている。また、この通知を受けた各装置は、自機が追加された旨の通知であると判断した場合には、それ以上先に通知を行わないこととしている。
図の例では、装置Dが、装置Cが追加された旨の通知を反対側の装置Eに対して行い、その通知が装置E→A→B→Cと順次伝わっていく。しかし、装置Cは、この通知を、自機が追加された旨の通知であると判断し、このことにより通知がシステムを1周したことがわかるため、ここで通知の伝達は終了する。
以上の処理により、各装置は、フォワード側の(形式的な)端とバックワード側の(形式的な)端が同じ装置であること、すなわち接続がリング状になったことを把握することができる(c)。
なお、リング接続の場合に、フォワード側の装置だけでなく、バックワード側の装置も、新たに接続された装置の情報を、その装置と反対側に接続されている装置に通知するようにしてもよい。その場合、自機が追加された旨の通知と判断した場合は、それ以上の通知を行わないようにするとともに、既にトポロジーテーブルに記載されている装置(既存の装置)について、さらに新たな接続が通知された場合、既存の装置の位置がカスケード接続の端部でなければ、トポロジーテーブルへの登録をしないようにすればよい。
さらに、図20(c)に見られるように、複数の装置がリング状に接続されている場合、ノードテーブル上では、その複数の装置の何れか1つがフォワード側の端部かつバックワード側の端部の装置となる。ここで、何れの装置を端部とするかは、任意であり、端部を別の装置に変更してもよい。例えば、装置Aのトポロジーテーブルでは、バックワード側がE、D、Cの順であり、フォワード側がB、Cの順であるが、Dを端部のノードとして、バックワード側をE、D、フォワード側をB、C、Dに変更できる。さらに、所定のルールに従って、例えば、マスタノードをその端部のノードになるよう変更したり、マスタノードが両端部から最も遠い中心のノードとなるよう変更したりしてもよい。
また、装置Cについては、論理接続準備処理において、図12のステップS64の判断がYESとなり、その後の論理接続確立処理において、装置Cと装置Dが互いの間のループバックを解除することにより、フレーム伝送経路が、2つのリング状の経路に変化し、ツインモードの接続が確立される。
RTLモードで動作しているシステムにおいて、両端の装置がケーブルにより接続された場合、以上の処理により、ツインモードの動作を行うための2つの伝送経路を形成することができる。実際にツインモードの動作へ移行し、2つの伝送経路でのTLフレームの循環を開始するための処理は別途行うが、この処理については後述する。
2.4 伝送経路の切断発生時の動作
次に、図7に示した音響信号処理装置2において制御部40のCPUが実行する、ノード間の接続切断に対応するための処理について説明する。
まず図21に、制御部40のCPUが実行する、ネットワーククロック消失検知時の処理のフローチャートを示す。
この処理は、RTLモード又はTTLモードで動作中のオーディオネットワークシステム1に属する各ノードにおいて、何れかの受信I/Fにおける他ノードとの接続が切断されたことが検知された場合に実行されるものである。なお、該切断はケーブルの断線、接続先ノードの異常などにより生じるものであるが、1から数サンプリング周期の極めて短い時間で検出される必要がある。切断の検出方法は、伝送媒体(接続ケーブル)や物理層(送信I/F及び受信I/F)の種類に応じて異なる。
受信I/F(受信側物理層)は、一般的に、ネットワーククロック検出部、リンク検出部、エラー検出部を備える。
このうちネットワーククロック検出部は、伝送媒体を介して入力する電気信号又は光信号からネットワーククロックを検出する。このネットワーククロックが検出されているということは、何らかのデータを受信していることを意味する。
また、リンク検出部は、当該物理層のメーカーが決めた所定の方法(非公開)で他の送信I/Fとの接続(リンク)を検出し、リンク検出信号を出力する。切断が生じたときは、リンク検出部から「接続なし」を示すリンク検出信号が出力されるが、切断の発生から「接続無し」信号の出力までに、数ミリ秒以上の遅延があるので、そのまま本発明の切断検出に用いることはできない。
エラー検出部は、伝送媒体を介して入力する電気信号又は光信号に、ネットワーククロック抽出異常、レベル不足、レベル不定、未定義コードなどの状態が生じた場合に「エラー有り」を示すエラー検出信号を出力する。
接続ケーブルが光ファイバである場合、受信I/Fのエラー検出部からは、その時点でデータを受信しているか否かに関わらず、切断が生じたら「エラー有り」を示すエラー検出信号が出力されるようになる。そのため、該エラー検出信号が「エラー有り」となる頻度に応じて、単位時間当たりの発生回数が所定値以上のとき、「他のノードとの接続が切断された」と判断するようにすればよい。
一方、接続ケーブルがメタルである場合、データを受信していないときに切断が生じても、「エラー有り」を示すエラー検出信号が出力されないので、代わりに、データ受信の有無に基づいて切断を検出すればよい。これには、送信側I/Fと受信側I/Fの両方での処理が必要になる。まず、送信I/Fでは、定期的にTLフレームを送信しているが、さらに、何のデータも送信しない期間が所定の確認時間以上になる毎に、接続確認用の信号を送信する。そして、受信側I/Fでは、ネットワーククロックの検出部でデータの受信が無いとされる期間が、確認信号の送信周期に比べて十分に長い(数倍以上)期間となったか否かを判断し、該期間以上となったとき、「他のノードとの接続が切断された」と判断する。
ここでは光ファイバとメタルの場合の切断の検出方法を示したが、これらは一例にすぎず、伝送媒体や物理層の特徴に応じて適宜の方法を採ることができる。ただし、何れの方法を採った場合でも、切断の検出はTLフレームの数送信周期以内に検出できなければならない。また、リンク検出部のリンク検出信号を用いていなかったが、安全サイドに設計するのであれば、上述した検出方法においても、リンク検出信号が「リンク無し」と判断している間は「接続無し」と判断するのがよい。
そして、制御部40のCPUは、適当な検出方法によりいずれかのI/Fに接続されているノードとの接続切断を検出すると、図21の処理を開始する。
そして、接続切断側にTLフレームを送信しないよう、接続切断側のセレクタ35又は37を折り返しラインLB1又はLB2側に切り替え、接続切断側にループバックを設定する(S201)と共に、これと対応するセレクタ38又は36をITLフレーム送信部64又は54側に切り替え、接続切断側のITLフレーム送信部を送信I/Fと接続する(S202)。
このことにより、接続が切断された部分を速やかにTLフレームの伝送経路から切り離し、通信が正常に行える部分のみでTLフレームの伝送経路を維持してオーディオネットワークシステム1を動作させることができる。オーディオネットワークシステム1においては、隣接ノードとの間の接続が切断された状態でその隣接ノードに対してTLフレームを送信しても、そのTLフレームは単に失われるだけであるので、切断された接続より先のノードはシステムから除外し、残りのノードだけで新たな伝送経路を形成してTLフレームの循環を継続するようにしている。
また、制御部40のCPUは、トポロジーテーブルの内容に、検出した接続切断を反映させる(S203)。具体的には、ノードがカスケード接続であった場合には、接続切断側に接続されていたノードは、その先のノードも含め、自ノードとの接続がなくなるため、それらのノードの情報をトポロジーテーブルから削除すればよい。
また、ノードがループ接続であった場合には、ノードの並び自体は変わらずに、自ノードが一端となるカスケード接続に変わるため、フォワード側とバックワード側に分けて記載されている各ノードの情報を、接続が維持されている側に記載し直せばよい。
例えば、図20(c)で装置Aと装置Bの間が切断された場合、装置Aではフォワード側をB、Cから無しに、バックワード側をE、D、CからE、D、C、Bに変更し、装置Bではフォワード側をCからC、D、E、Aに、バックワード側をA、E、D、Cから無しに変更し、装置Cではフォワード側をDからD、E、Aに、バックワード側をB、A、E、DからBに変更し、装置Dではフォワード側をE、A、B、CからE、Aに、バックワード側をCからC、Bに変更し、装置Eではフォワード側をA、B、CからAに、バックワード側をD、CからD、C、Bに変更する。
ステップS203の後、制御部40のCPUは、トポロジーテーブルの変更内容(特定のノードとの接続が切断されたこと)を接続切断側とは反対側に伝達する(S204)。この伝達は、図10のステップS35の場合と同様、ITLフレームにより行うことができるが、切断ポイントの両側のノードのうちマスタノードがある側のノードについては、接続切断側と反対側にTLフレームの伝送経路がつながっているはずであるから、ITLフレームの伝送はTLフレームに書き込んで行うことになる。また、ここで伝達される変更内容は、図10及び図17の説明で述べたトポロジーテーブルの内容伝達と同様に、順次先のノードに伝達され、システム内に残る全てのノードにおいて供給される。
なお、ループ接続の場合に、切断発生後のカスケード接続の反対側の端がどのノードになっているかは、ステップS203の時点では明らかではない(隣接ノードの機能が停止しており、その先のノードが端になっている場合もある)が、この点については、追って反対側の端になったノードからトポロジーテーブルの変更内容を通知された時点で把握でき、この時点で把握すれば特に問題ない。
次に、制御部40のCPUは、トポロジーテーブルを参照し、接続切断の発生により自機がマスタノードと切り離されたか否か判断する(S205)。そして、切り離されていた場合には、自装置をリセットする(S211)と共に、接続切断側の送信I/Fからリセット指示コマンドのITLフレームを送信する(S212)。これらの処理は、図13のステップS71及びS73の処理と同様なものであり、接続切断によりマスタノードから切り離されたノードを一旦ITLモードに戻すためのものである。そして、ステップS212の後、ステップS206に進む。
また、ステップS205で切り離されていなかった場合には、リセットは不要であるので、そのままステップS206に進む。
そして、制御部40のCPUは、接続切断側の送信I/Fから切断通知コマンドを送信する(S206)。
この切断通知コマンドは、送信I/Fに接続されているノードに対し、接続切断が発生したことを通知するためのコマンドである。
オーディオネットワークシステム1において、ノード間の結線は、図1に示したように2本のケーブルにより行われる。そして、これらの2本のケーブルによる伝送経路が同時に切断された場合には、切断箇所の両側の装置でネットワーククロックの消失が起こる。しかし、1本のケーブルにおいてのみ切断が起こった場合には、その切断された伝送経路の受信側のノードではネットワークケーブルの消失が起こるが、切断されていない伝送経路の受信側のノードでは、ネットワーククロックの消失が起こらず、ノード間の接続が正常に機能していないことが把握できない。送信側のノードから見ても、自装置から接続先の装置に至る伝送経路が切断されているか否か、また、接続先のノードが接続切断を把握できているか否かが把握できない。
接続切断コマンドは、このような状況に対応し、接続先のノードに、接続の発生を確実に伝達するために送信するものである。
そして、制御部40のCPUは、接続切断側の受信I/Fでネットワーククロックを検出するまで、所定時間毎に、この切断通知コマンドの送信を繰り返す(S206〜S208)。
接続先のノードがこのコマンドの受信時に行う処理については、後述する。また、2本のケーブルによる伝送経路が同時に切断された場合や、接続先のノードが停止していた場合には、このコマンドは接続先には届かないが、この点は特に問題とならない。
また、ケーブルが再度接続される、新しいものに交換される、停止した音響信号処理装置2の機能が回復する、新たな音響信号処理装置2が接続される、等により接続切断側の受信I/Fで再度ネットワーククロックが検出できるようになると(S208のYES)、新規に音響信号処理装置2の接続を検出した場合の図9のステップS11以下の処理と同様に、送受信I/Fに接続された装置を自装置が属するオーディオネットワークシステム1に組み込む処理を行う。
すなわち、図10に示した物理接続確認処理を行い(S209)、物理接続が確認された場合には(S210)、論理接続準備処理等、図9のステップS13以降の処理を行う。また、ステップS210で物理接続が確認できなかった場合には、ステップS207に戻って処理を繰り返す。なお、このループ処理を行っている間は、接続切断側の送受信I/Fについては、図9の処理を別途行う必要はない。
以上の処理により、オーディオネットワークシステム1を構成する各ノードは、システムの一部で通信に不具合が生じたことを検出した場合に、1サンプリング周期から数サンプリング周期(2、3サンプリング周期あるいは5、6サンプリング周期以内)という短時間でその部分をシステムから切り離し、システムの残りの部分が動作を継続できるようにすることができる。
なお、図21に示した処理のトリガは、ネットワーククロックの消失検知だけでなく、TLフレームの受信中のTLフレームの信号消失であってもよい。
次に、図22に、制御部40のCPUが実行する、切断通知コマンド受信時の処理のフローチャートを示す。
この処理は、RTLモード又はTTLモードで動作中のオーディオネットワークシステム1に属する各ノードにおいて、隣接ノードが図21のステップS206の処理で送信してくる切断通知コマンドを受信した場合に実行されるものである。
そして、この処理において、制御部40のCPUはまず、切断通知コマンドを受信した側にノードとの接続が切断されたと判断する(SA)。そして、以後、ネットワーククロックの消失を検出した場合と同様、接続切断側へのループバックの設定、トポロジーテーブルの更新等を行う。この部分の処理は、さらなる切断通知コマンドの送信(S206)は不要であるため行わない点を除けば、図21に示した処理と全く同じである。
以上の処理により、オーディオネットワークシステム1を構成する各ノードは、不具合の発生した送信ケーブルの送信側に当たるためネットワーククロックの消失を検知できない場合でも、通信の不具合を適切に検知し、直ちにその部分をシステムから切り離して、システムの残りの部分が動作を継続できるようにすることができる。
なお、以上の図21及び図22に示した処理は、マスタノードでもスレーブノードでも、同じように実行されるものである。
また、ツインモードで動作中のオーディオネットワークシステム1において図21及び図22に示す処理でループバックが設定されると、それまで2つあった伝送経路が、切断発生箇所を切り離した上で接続され、新たに1つの伝送経路が形成されることになる。従って、マスタノードはその後速やかにシングルモードの動作に移行する必要があるが、このための処理については後述する。
2.5 伝送経路切断の具体例
次に、RTLモード又はTTLモードで動作中のオーディオネットワークシステムにおいてノード間の接続の切断が発生した場合の動作の具体例について、図23乃至図25を用いて説明する。
なお、以下の図23乃至図25では、RTLモードのシステムに切断が生じた場合の例を示しているが、図23及び図24の動作については、TTLモードの場合にも、RTLをTTLと読み替えれば同様な動作となる。TTLモードにはツインモードはないため、図25の動作はTTLモードには当てはまらない。
図23に、切断発生時のシステム構成変更手順の第1の例を示す。
この図は、装置A〜装置Fの6台の装置によりシングルのRTLモードのオーディオネットワークシステムが形成されている状態で、装置Dと装置Eとの間の結線が切断された場合の例を示している。なお、結線の切断には、通信ケーブル自体が物理的に切断された場合の他、通信ケーブルが装置から抜き取られた場合や何れか一方の装置において故障によりオーディオネットワークへの送信ないし受信ができなくなった場合も含む。また、図中の「M」は、マスタノード、「LB」は、ループバックが設定されている装置を示す。
そして、図23(a)に示すように結線に切断が発生すると、その両側の装置では、ネットワーククロックの消失に応じた図21の処理、及び/又は図21の処理で送信される切断通知コマンドの受信に応じた図22の処理により、直ちに切断を検出した側のセレクタを折り返しライン/ITLフレーム送信部側に切り替え、切断を検出した側にTLフレームの伝送経路のループバックを設定する。
(b)は、切断点の両側の装置が、切断を検出した側にループバックを設定した状態を示す。図に示す例では、このことにより、装置Aから装置Dまでを循環する伝送経路と、装置Eと装置Fの間を循環する伝送経路とが形成される。
なお、切断が発生した場合、各装置はTLフレームの通過中にループバックを設定することも考えられる。そしてこの場合、送信中のTLフレームは破損する。しかし、この場合でも、後述のように、システム内の各ノードはTLフレームの破損を検出できるし、マスタノードも破損したフレームを廃棄して新たなフレームを作成できるため、大きな問題にはならない。従って、切断によって生じた2つの装置群のうち、マスタノードが存在する側は、切断箇所やタイミングによって0〜2のTLフレームに記載されていたデータを失うものの、RTLモードの動作を継続することができる。
一方、切断によりマスタノードと切り離されてしまった装置は、自身をリセットすると共に、切断側と反対側にも、リセット要求を送信する。
そして、図13に示した処理により、マスタノードと切り離されたノードは(c)に示すように全て一旦ITLモードに戻る。
ただし、その後は、接続の切断していない側の送受信I/Fについて適宜図9に示す処理を開始し、図16等を用いて説明したものと同様な手順で、(d)に示すように装置E及び装置FはTTLモードのシステムを自動的に形成することができる。そして、切断された結線が復旧されると、一旦切り離された装置E及び装置Fを、図21又は図22のステップS209以下の処理により、図18等を用いて説明したものと同様な手順で、RTLモードで動作中のシステムに組み入れることができる。
また、切断発生時点でTLフレームの先頭が装置E又は装置Fに位置していた場合、何も対応しないと、装置Eと装置Fの間をTLフレームが循環し続けることも考えられる。そこで、このような事態を防止するため、TLフレームの受信時にフレーム通し番号を確認し、2度同じ通し番号のTLフレームを受信した場合には、そのTLフレームを折り返さずに破棄するようにするとよい。
また、図24に、接続切断時のシステム構成変更手順の第2の例を示す。
この図には、装置が停止した場合の例を示している。結線に変化がなくでも、急に電源が切断される等して装置が停止することも考えられる。そして、この場合にも、停止した装置の両側の装置は、隣接装置からのネットワーククロックが検出できなくなるため、このことをトリガに、図24(a)に示すように伝送経路の切断を検出することができる。停止した装置の隣の装置(D,F)では、装置の停止は、結線の切断と区別できないが、対処処理も同じなので特に問題はない。
すなわち、図24(b),(c)に示すように、図23の場合と同様、伝送経路の切断を検出した装置が、その切断を検出した側にループバックを設定し、マスタノードが、切断発生時に壊れたTLフレームを破棄して新たなTLフレームの生成と送信を続行する。そして、このことにより、マスタノードが存在する側の伝送経路には、切断発生後もTLフレームが伝送され、伝送経路が維持できる範囲で、波形データやイーサネットフレーム等の伝送を継続することができる。
なお、各装置は、機能が全面的に停止しない場合でも、制御部40がハングアップする等して、TLフレームに対してデータの読み書きを正常に行えなくなる場合がある。そして、この状態でTLフレームの伝送を継続すると、その内容の正確さが保証できなくなるため、ある装置がこの状態に陥った場合、その装置は機能が停止したとして、図24に示したような構成変更を行うことが好ましい。
また、図25に、接続切断時のシステム構成変更手順の第3の例を示す。
この図には、ツインのRTLモードのオーディオネットワークシステムが形成されている状態で、装置Dと装置Eとの間の結線が切断された場合の例を示している。
この場合も、結線の切断発生に応じて、図25(a),(b)に示すように、図23の場合と同様、切断点の両側のノードが切断を検出した側にループバックを設定する。しかし、ツインモードで動作中の場合には、このループバックの設定により、それまで2つあった伝送経路が、切断発生箇所を切り離した上で接続され、新たに1つの伝送経路が形成されることになる。
一方、ループバックが設定されて伝送経路が変更されたことにより、マスタノードが図で上側の伝送経路(リングID=1とする)に対して送信したTLフレームは、途中で折り返されて図で下側の伝送経路(リングID=2とする)上をマスタノードに戻ることになる。逆に、マスタノードが図で下側の伝送経路に対して送信したTLフレームは、途中で折り返されて図で上側の伝送経路上をマスタノードに戻ることになる。
すなわち、ループバックが設定された場合、マスタノードは、各受信I/Fにおいて、通常と反対側の伝送経路のリングIDを有するTLフレームを受信することになる。リングID=1のTLフレームを受信するはずの受信I/FでリングID=2のTLフレームを受信する等である。
また、この内容を別の言い方で表現すると、以下のようになる。
まず、ツインモードで伝送経路が2つ形成されている場合には、フォワード側の送信I/Fで送信したTLフレームはバックワード側の受信I/Fで受信し、バックワード側の送信I/Fで送信したTLフレームはフォワード側の送信I/Fで受信することになる(図1(b)参照)。すなわち、TLフレームを、送信に用いた送信I/Fと異なる組の受信I/Fで受信することになる。
しかし、ループバックの設定により伝送経路が1つになった場合、フォワード側の送信I/Fで送信したTLフレームはフォワード側の受信I/Fで受信し、バックワード側の送信I/Fで送信したTLフレームはバックワード側の送信I/Fで受信することになる(図1(a)参照)。すなわち、TLフレームを、送信に用いた送信I/Fと同じ組の受信I/Fで受信することになる。
従って、ループバックが設定された場合、例えば、フォワード側の受信I/Fでは、それまでフォワード側の送信I/Fで送信したTLフレームを受信していたところ、ある時から、バックワード側の送信I/Fで送信したTLフレームを受信することになる。
なお、ループバック設定時に、伝送中のTLフレームの先頭がループバック設定位置を過ぎていた場合には、伝送中のTLフレームは後部の欠けた状態でそのままツインモードの伝送経路を進んでマスタノードに戻る。しかし、その次にマスタノードが送信したTLフレームは、1つに結合された伝送経路を辿り、ツインモードの場合と反対の受信I/Fに戻ることになる。
そこで、マスタノードは、このことをトリガに、いずれかのノード間に切断が発生して接続がカスケード状になったと判断し、(c)に示すようにシングルモードの動作に移行する。このためには、シングルモードで使用しない側のデータ入出力部によるTLフレームの生成を中止し、以後、そのデータ入出力部では、受信したTLフレームをスルーさせるようにすればよい(ITLフレーム領域に対するデータの読み書きは行ってよい)。
以上の動作により、ツインのRTLモードで動作中にシステム中のいずれかの箇所に切断が発生した場合でも、シングルのRTLモードにより可能な範囲で波形データやイーサネットフレーム等の伝送を継続することができる。いずれかのノードの機能が停止した場合も、図22の場合と同様にその両側でループバックを設定し、同様にシングルのRTLモードの動作へ移行することができる。
3.各ノードにおけるTLフレームの取り扱いについて
次に、オーディオネットワークシステム1を構成する各ノードにおけるTLフレームの取り扱いについて説明する。
なお、ここで説明する動作及び処理は、RTLモードに関するものである。しかし、TTLモードの場合も、TLフレームに対する波形データの読み書きを行わない点以外は、RTLモードの場合と全く同じ処理を採用可能である。
また、ここで説明する動作及び処理は、特に断らない限り、波形データやイーサネットフレームの読み書きを行うデータ入出力部にTLフレームのデータが入力される場合の処理である。波形データやイーサネットフレームの読み書きを行わないデータ入出力部にTLフレームのデータが入力される場合には、これらのデータの入出力に関する処理は行わない。またこの場合、マスタノードであっても、新たなTLフレームの生成は行わないため、スレーブノードの場合と同様な処理を行う。
また、説明の都合上、ネットワークI/Fカード215のデータ入出力部が備えるバッファや送受信部の符号には、第1のデータ入出力部10における符号を用いる。しかし、第2のデータ入出力部20を用いてデータの読み書きを行う場合に、第2のデータ入出力部20が備える各部が動作することは、もちろんである。
3.1 TLフレームの生成
まず、マスタノードにおけるTLフレーム100の生成について説明する。
既に述べたように、この実施形態のオーディオネットワークシステムにおいて、新たな(フレームIDの異なる)TLフレームを生成するのは、マスタノードのみである。そして、マスタノードは、自身が送信し、伝送経路を1周して戻ってきたTLフレームのデータを一部加工して、新たなTLフレームの生成を行う。
この加工の内容は、ヘッダや管理データ(フレームIDを含む)を更新すると共に、マスタノードが送信する波形データや制御データ等を書き込むものであり、他のノードが書き込んだ波形データや制御データは、そのまま新たなTLフレームに残るようにする。
しかし、このような生成方式を採る場合、戻ってきたTLフレームのエラーを確認せずに新たなTLフレームを生成すると、伝送される波形データに大きなノイズが発生してしまうおそれがある。そこで、この実施形態のマスタノードでは、伝送経路を1周して戻ってきたTLフレーム全体を一旦バッファに保存し、TLフレームの全体を正常に受信できたことを確認してから、そのTLフレームに基づいて新たなTLフレームを生成するようにしている。
また、マスタノードがTLフレームを受信できなかった場合、新たなTLフレームは、別のTLフレームに基づいて生成しなければならない。そこで、正常に受信できた、すなわちループ状の伝送経路を正常に循環したTLフレームのうち最新のものを、送受信用とは別に保存しておき、TLフレームが正常に受信できなかった場合には、そのTLフレームに基づいて生成する予定だったTLフレームを、保存しておいたTLフレームに基づいて生成するようにしている。
またこのため、マスタノードにおいては、図26に示すように、TLフレームの生成を行うデータ入出力部においては、TLフレーム送信部18に設けるTLフレームの加工用バッファを、複数のバッファで構成し、その各バッファに対し「送信バッファ(兼保存バッファ)」又は「受信バッファ」の機能を割り当てることができるようにしている。そして、TLフレーム送信部18内には、周期更新量kより1だけ多い(k+1)個のバッファが必要である。
ここで、図27に、マスタノードにおけるTLフレームの送受信及び生成のタイミング例を示す。この図において、Sは整数であり、ワードクロックの各周期が何番目の周期であるかを示す番号である。そして、このSは、そのS番目の周期にマスタノードが送信するTLフレームを示すフレームIDとしても使用する。
マスタノードは、図5及び図6を用いて説明したように、サンプリング周期毎に1つのTLフレームを送信する。また、この図に示すのは、周期更新量kが「2」の場合の例であり、この場合、送信したTLフレームの先頭は、約1サンプリング周期でシステムを循環する。そして、多くの場合、図27に示すように、S番目のTLフレームの全体の受信が完了する前に、S+1番目のTLフレームの送信を開始しなければならない。また、S+2番目のTLフレームの送信を開始するより、マスタノード内での新TLフレームの準備に係る時間である所定時間αだけ前のタイミングまでに、S番目のTLフレームの全体を受信する。図27には、この所定時間αを、符号Xで示している。
この場合、送信バッファに格納してあるS番目のTLフレームの送信と、受信したS−1番目のTLフレームの受信バッファへの格納とを並行して行っている。TLフレーム送信部18において、受信バッファは、現在の送信バッファの次のバッファとするとよい。また、マスタノードがTLフレームから読み取るべきデータは、受信バッファへの格納の際に読み取ってもよいし、格納してから読み取ってもよい。そして、S−1番目のTLフレームの受信が完了した時点で、受信したTLフレームのエラーチェックを行い、異常がなければその受信バッファを次の送信バッファとして指定するとともに、その指定された送信バッファ(現在の受信バッファ)の次のバッファを次の受信バッファとして指定する。そして、次の送信バッファに格納されているS−1番目のTLフレームを加工してS+1番目のTLフレームを生成する。
さらに、間もなくS番目のTLフレームも戻ってくるので、準備されている次のバッファを受信バッファに変更して、受信したS番目のTLフレームの格納を開始する。続いて、S番目のTLフレームの送信が完了した時点で、送信バッファを開放する。
そして、次の伝送用ワードクロックの開始タイミングで、準備されている次のバッファを送信バッファに変更するとともに、そこに格納されているS+1番目のTLフレームの送信を開始し、その後、S番目のTLフレームの受信が完了した時点で、受信したTLフレームのエラーチェックを行い、異常がなければそのTLフレームを格納した受信バッファを次の送信バッファとして指定するとともに、その指定された送信バッファ(現在の受信バッファ)の次のバッファを次の受信バッファとして指定する。そして、次の送信バッファに格納されているS番目のTLフレームを加工してS+2番目のTLフレームを生成する。
以上の手順を繰り返すことにより、常に、全体が正常であると判断できたTLフレームに基づいて、新たなTLフレームを生成することができる。
なお、1番目と2番目のTLフレームについては、基になるTLフレームがないため、所定の雛形に基づいて生成するようにするとよい。
また、フレームバッファ内でTLフレームを加工する代わりに、スレーブノードの場合と同様に、出力時に、バッファからTLフレームを読み出し、その読み出されたTLフレームのヘッダ及び内容を波形データ送信バッファ16,TLデータ送信バッファ17,ITLデータ送信バッファ53からのデータにより差し替えつつ出力するようにしてもよい。この場合、送信バッファに保存されているのが受信したままのTLフレームである点が異なるが、必要とされるバッファ数は同じく(k+1)個である。
また、各バッファの動作速度を倍にして、送信しながら受信できるように設計すれば、マスタノードにTLフレームが戻ってくるタイミングで、その時点の「送信バッファ」を同時に「受信バッファ」として使うことができるので、バッファの数を上述した実施例より1つ少ないk個とすることができる。
また、図28に、S番目以降のTLフレームが、ループ状の伝送経路を正常に循環できていない場合の、マスタノードにおけるTLフレームの送受信及び生成のタイミングを示す。ここで、正常にできていない場合とは、マスタノードがTLフレームを受信した時点のフレームに異常が検出された場合の他、他のノードにおいて異常が検出され、その旨がフレームに記録されている場合や、TLフレームが全く戻ってこない場合も含む。
この場合、マスタノードが、正常に循環しなかった(データが破壊されている恐れのある)S番目のTLフレームに基づいてS+2番目のTLフレームを生成すると、伝送される波形データが不連続となりノイズが発生するおそれがある。そこで、フレームが正常に循環しなかったことを検出したマスタノードは、受信バッファのTLフレームを破棄し、該バッファを次の受信バッファとして指定するとともに、その時点の送信バッファを次の送信バッファとして指定する。その時点で送信バッファはまだ送信中であり、新規のTLフレームの生成はその送信完了を待ってから行う。すなわち、S+1番目のTLフレームの送信完了時、マスタノードは、次の送信バッファに格納されているS+1番目のTLフレーム(伝送経路を正常に循環したことを確認済みの最新のTLフレームであるS−1番目のTLフレームのデータを含む)を加工してS+2番目のTLフレームを生成する。
また、S+1番目のTLフレームも正常に受信できなかった場合は、S+3番目のTLフレームを生成する際にも、送信バッファを再度次の送信バッファとして指定し、S+2番目のTLフレームの送信が完了後、格納されているS+2番目のTLフレームに基づいてS+3番目のTLフレームを生成する。以後も、TLフレームが正常に受信できるまでは、同じバッファを送信バッファとして繰り返し使用し、その送信バッファに格納されているTLフレーム(S−1番目のTLフレームのデータを含む)に基づいて新たなTLフレームの生成を行うことを続ける。
このようにしても、S−1番目のTLフレームに記載されていたデータのうち、マスタノードが上書きせずにそのまま次のノードに送信するデータは、S+2番目のTLフレームにも、S+3番目のTLフレームにも、その後のTLフレームにも、変わらずに残る。従って、S−1番目のTLフレームのデータを別途保存しておき、毎回その保存しておいたTLフレームに基づいて新たなTLフレームを生成する場合と同じ結果が得られる。
3.2 マスタノードにおけるTLフレームの取り扱い及び動作状態の切り替え
次に、マスタノードにおいて図27及び図28に示した動作を実現するための処理について説明する。また、RTLのシングルモードとツインモードとの間の動作状態の切り替えを行うための処理についても、合わせて説明する。
まず、図29に、マスタノードが、TLフレームの伝送経路の終端となる受信I/Fにおいて、S番目のTLフレームの先頭部からの受信を開始した場合に実行する処理のフローチャートを示す。
マスタノードにおける制御部40のCPUは、S番目のTLフレームの受信開始を検出した場合、図29に示す処理を開始する。そしてまず、受信したフレームに管理データとして記載されているリングID及びフレームIDを確認し(S121)、正しい値か否か判断する(S122)。
フレームIDは、前のTLフレームと連続番号になっていれば正しい値である。リングIDは、オーディオネットワークシステム1内に形成される1又は2の伝送経路のうち、フレームを受信した受信I/Fが属する伝送経路のIDであれば、正しい値である。なお、リングIDを、伝送経路と共にシステムを特定するIDとした場合には、上記の条件に加え、TLフレームに記載されているリングIDが、自ノードの属するシステムを特定している(他のシステムを特定していない)とき、正しい値と判断するようにするとよい。
そして、フレームID及びリングIDが正しい値であれば、特に問題ないので図29の処理を終了してTLフレームの受信とバッファへの蓄積を継続する。しかし、これらの値に異常がある場合、フレームが欠落していたり、伝送経路の形状が変化していたりすることが考えられる。
そこで、受信したTLフレームのリングIDが、フレームを受信した受信I/Fが属する伝送経路と反対側の伝送経路のIDであるか否か判断する(S123)。そして、これがYESであれば、第2のデータ入出力部20(シングルモードでは波形データの読み書きに使用しないデータ入出力部)によるTLフレームの生成と送信を停止し、システムの動作状態OSをシングルモードに変更して、シングルモードの動作に移行する(S124)。なお、第1のデータ入出力部10(シングルモードで波形データの読み書きに使用するデータ入出力部)によるTLフレームの生成と送信は、それまで通り継続する。
この処理は、図25で説明した動作状態の切り替えに対応する処理である。また、ステップS124の処理は、図29の処理を、どちらの受信I/FによるTLフレームの受信開始をトリガに開始した場合でも同じである。
また、マスタノードがシングルモードの動作に移行した場合、スレーブノードもこれを自動的に検知し、シングルモードの動作を開始するが、このための処理については「3.4 スレーブノードにおけるTLフレームの取り扱い」において述べる。
そして、以上の動作状態の変更を行った場合でも、そうでない場合でも、エラー処理(S125)を行い、フレームにエラーがあったことを記憶しておき、次の図30のステップS132において、エラーありと判断させるようにする。動作状態の変更を行った場合も、伝送経路の変更に伴ってTLフレームが破損している可能性があるから、エラーありと扱うことが好ましい。
次に、図30に、マスタノードがS番目のTLフレームの受信完了を検出した場合に実行する処理のフローチャートを示す。
マスタノードにおける制御部40のCPUは、S番目のTLフレームの受信完了を検出した場合、図30に示す処理を開始する。そしてまず、FCS105により、受信完了したTLフレームのエラー有無を検出する(S131)。そして、エラーがなく、かつ受信したTLフレームに記載されているエラーフラグEDFの値がエラー無しを示す「0」である場合(S132)、受信したTLフレームは伝送経路を正常に循環したと判断し、受信したS番目のTLフレームに基づいてS+2番目のTLフレームを生成することを決定する(S133)。なお、新たなTLフレーム生成のベースとするTLフレームのことを、「対象フレーム」と呼ぶことにする。
その後、対象フレームに対し、新たなフレームIDを書き込んで新たなTLフレームとする(S134)と共に、波形データ,イーサネットフレーム,ITLフレーム,およびその他の情報の読み取り及び書き込みの処理を行い(S135〜S138)、S+2番目のTLフレームに、出力すべきデータが書き込まれた状態にする。
ステップS135〜S137でどのようなデータをフレームから読み出し、また書き込むかは、図8を用いて説明した通りである。ステップS138で書き込むデータには、前方遅延時間Dfw、後方遅延時間Dbw及びシステムの動作状態OSを含む。また、ステップS135〜S138の処理は、順不同であり、読み取りのみ先に全て行ってから、書き込みを行うという処理順でもよい。
なお、ITLフレームについては、書き込むべきデータがない場合でも、その旨を示すデータをITLフレーム領域106に書き込む。このデータは、例えばブロック数「1」、ブロック番号「1」、データサイズ「0」のブロックのデータとして記載することができる。この点は、他のステップのITLフレーム書込処理でも同様である。
そして、ステップS138の後、対象フレームにFCSを付与してTLフレームとして完成させ(S139)、S+2番目の伝送用ワードクロックのタイミングまで待機して(S140)、伝送用ワードクロックのタイミングに合わせて、生成したS+2番目のTLフレームの送信を開始する(S141)。
一方、ステップS132で、エラーあり、又はエラーフラグEDFの値がエラーありを示す「1」であった場合には、受信したTLフレームは伝送経路を正常に循環していないと判断し、伝送経路を正常に循環したことを確認済みの最新のTLフレームに基づいてS+2番目のTLフレームを生成することを決定する(S142)。この場合にも、新たなTLフレーム生成のベースとするTLフレームのことを、「対象フレーム」と呼ぶことにする。
また、CPUはその後、ステップS132でNOとなったことに伴うエラー処理を行う(S143)。この処理は、後で図32を用いて説明するスレーブノードにおける処理と同様、受信したTLフレームに記載されているデータが信頼できないことに伴う処理である。また、上位層にエラーを通知する等の処理を行ってもよい。
そして、ステップS143の後は、対象フレームに対し、新たなフレームIDを書き込んで新たなTLフレームとする(S144)と共に、波形データ,イーサネットフレーム,ITLフレーム,およびその他の情報の書き込みの処理を行い(S145〜S148)、S+2番目のTLフレームに、出力すべきデータが書き込まれた状態にする。ステップS145〜S148の処理が順不同であることはステップS135〜S138の場合と同様であるが、ここでは、対象フレームからデータを読み出す必要はない。
ステップS148の後は、ステップS139に進み、生成した新たなTLフレームを、エラーなしの場合と同様に送信開始して処理を終了する。
以上の処理を行うことにより、マスタノードは、伝送経路を正常に循環して戻ってきたことが確認できているTLフレームに基づいて新たなTLフレームを生成することができるため、常に正しいTLフレームを生成することができる。
なお、エラーフラグEDFの値が「1」であっても、受信したTLフレーム自体にエラーがない場合には、直前のノードが書き込んだデータは信用できるため、受信したTLフレームのデータのうち、ITLフレーム領域のデータのみは読み出して処理に利用するようにするとよい。
また、図27〜図30を用いて以上に説明した動作は、周期更新量kが「2」の場合のものであったが、周期更新量kが2より大きい値である場合には、「S番目のTLフレームを基にしてS+k番目のTLフレームを生成する」ことを正常時の基本動作として、周期更新量kが「2」の場合と同様の動作を行う。
すなわち、図27のタイミング図に相当する動作では、S番目のTLフレームを正常に受信完了すると、マスタノードは、そのTLフレームに基づいてS+k番目のTLフレームを生成し、S+k番目の伝送用ワードクロックのタイミングで送信開始する。図28に相当する動作では、S番目のTLフレームが正常に受信できなかったとき、マスタノードは、S+k−1番目のTLフレームの送信完了を待って、そのTLフレームに含まれている「最後に正常受信されたTLフレームのデータ」に基づいてS+k番目のTLフレームを生成し、S+k番目の伝送用ワードクロックのタイミングで送信開始する。
周期更新量kを大きくすることにより、オーディオネットワークシステムにおけるTLフレーム循環の上限時間を大きくすることができ、その分だけノード間の距離を長くしたり、システムに組み入れるノード数を増やしたりすることができる。しかしながら、周期更新量kを大きくした分だけ、オーディオネットワークにおける音響信号の伝達遅延が大きくなるというトレードオフがある。
3.3 シングルモードからツインモードへの移行動作
次に、システムをシングルモードからツインモードへ移行させるための処理について説明する。
「2.2 システム形成段階の動作」及び「2.3 システム形成の具体例」の項で既に説明したように、ツインモードの動作を行うための2つの伝送経路の形成自体は、新たに接続されたカスケード接続の両端のノードにおける処理により実現できる(図20(b)及び(c)参照)。そして、マスタノードはトポロジーテーブルの変更通知によりその新たな接続を把握することも一応可能である。
しかし、新たな接続によって伝送経路の形状が大幅に変化すると、TLフレームの伝送自体が正常に行えなくなることも考えられる。そこで、オーディオネットワークシステム1においては、マスタノードが伝送経路の変更を把握する手段を、トポロジーテーブルの変更通知とは別に用意している。
図31に、マスタノードがツインモードへの移行監視のために行う処理のフローチャートを示す。
図15に示した処理によりマスタノードとなったノードにおいて、制御部40のCPUは、オーディオネットワークシステム1がシングルのRTLモードで動作している状態では、図31に示す処理を定期的に実行する。実行周期は、例えばサンプリング周期毎がよい。
そして、この処理において、制御部40のCPUはまず、各受信I/F31,33におけるTLフレームの受信タイミングをチェックする(S221)。
シングルモードの場合、マスタノードは、生成したTLフレームをまずフォワード側に送信し、そのTLフレームは、カスケード接続の端部のノードでループバックされ、フォワード側の受信I/Fに戻ってくる。その場合の、TLフレームをフォワード側に先頭から送信し始めてから戻ってくるTLフレームを先頭から受信し始めるまでの遅延時間は、TLフレームの送信ごとに大きくは変動しない。そこで、過去のTLフレームで計測されたフォワード側の遅延時間を、次のTLフレームのフォワード側の遅延時間の予想値とすることができる。
あるいは、トポロジーテーブルに登録されているノード間の距離に基づいて、TLフレームの遅延時間を予想することもできる(図9のステップS16〜S18及びその説明を参照)。遅延時間の予想方式としては、こちらの方がより好適である。
そして、これらの遅延時間の予想値に変化許容分βを加算した値を、フォワード側制限時間とすることができる。
あるいはまた、TLフレームがシステムを一巡する遅延時間は、何れにしても、遅延更新量kに応じて決定される制限時間(kが2の場合は、1サンプリング周期)内でなければならないので、そのシステムの制限時間からバックワード側で計測された遅延時間を減算した時間をフォワード側制限時間としてもよい。
そこで、制御部40のCPUは、フォワード側へのTLフレームの先頭からの送信開始からフォワード側制限時間内に、戻ってきたTLフレームの先頭からの受信が、フォワード側の受信I/Fで開始されるか否か判断する(S222)。そして、受信開始していれば、タイムアップなし(NO)であり、シングルモードの伝送経路が維持されていることがわかるので、そのまま処理を終了する。また、受信なし、すなわちタイムアップ(YES)の場合、次にバックワード側の判断に進む。
ここで、フォワード側でタイムアップが起こる場合としては、ツインモードの動作を行うための2つの伝送経路が形成された場合と、カスケード接続のいずれかの部分で接続に切断が生じた等の理由により、TLフレームの伝送が正常に行われなかった場合とが考えられる。
このうち前者の場合、送信したTLフレームは、新たに形成された伝送経路を辿り、送信した側と反対側の、バックワード側の受信I/Fに戻ってくる(図20(c)及び図1(b)参照)。そして、戻るのに要する時間は、遅延更新量kに応じて定まるシステムの制限時間内でなければならない。また、後者の場合、フォワード側に戻らない以上、送信したTLフレームは消滅し、マスタノードの受信I/Fに戻ってくることはない。
そこで、制御部40のCPUは、フォワード側へのTLフレームの先頭からの送信開始からシステムの制限時間内に、戻ってきた同TLフレームの先頭からの受信が、バックワード側の受信I/Fで開始されるか否か判断する(S223)。そして、受信していなければ、タイムアップ(YES)であり、TLフレームが消滅したと判断して(S228)、図30のステップS142以下の処理に進み、TLフレームを正常に受信できなかった場合と同様、伝送経路を正常に循環したことを確認済みの最新のTLフレームに基づいて次のTLフレームを生成する。しかし、この時点では伝送経路の状態は確定できないため、システムとしては、シングルモードの動作状態をそのまま継続する。
一方、ステップS223でタイムアップでない場合には、ツインモードの動作を行うための2つの伝送経路が形成されたと判断できる。そこで、まず自機の動作状態をツインモードに移行させるべく、動作モードの設定を確認する(S224)。
そして、二重化でのツインモードを許可する第2モードが設定されていた場合には、第2のデータ入出力部20によるTLフレームの生成と送信を開始し、システムの動作状態OSを二重化のツインモードに変更して二重化動作を開始する(S225)。
なお、二重化の場合、第2のデータ入出力部20が第1のデータ入出力部10と全く同じようにTLフレームに対する波形データの読み書きを行うようにしてももちろんよい。しかし、単に、リングの一部で接続切断が起きた場合でも速やかにシングルモードに移行してノード間の波形データの伝送を維持できるようにする、という目的の達成をするのみであれば、第2のデータ入出力部20は波形データの読み書きを行わず、TLフレームにはダミーの波形データを記載しておいてもよい。ただし、この場合でも、制御データ領域104についてはデータの読み書きを行い、イーサネットフレームやITLフレームの伝送に用いることが好ましい。
また、ステップS224で二倍化でのツインモードを許可する第3モードが設定されていた場合には、第2のデータ入出力部20によるTLフレームの生成と送信及びTLフレームに対する波形データの読み書きを開始し、システムの動作状態OSを二倍化のツインモードに変更して二倍化動作を開始する(S226)。
この場合、波形データの伝送ch数が2倍になるが、増加した分のchに関する波形データの読み書きが既に設定されているのであれば、それに従って第2のデータ入出力部20が動作を行えばよいし、まだ設定されていないのであれば、当面は第2のデータ入出力部20が生成するTLフレームにおいて、波形データ領域103にはダミーデータが記載されることになる。
また、ステップS224でツインモードを許可しない第1モードが設定されていた場合は、エラー処理を行う(S227)。シングルモードが設定されている場合、システムの動作が正常であれば、カスケード接続の両端のノードが物理接続されたとしても、図12のステップS63の処理でNOとなるので、論理接続は行われず、ツインモードのための2つの伝送経路も形成されないはずである。従って、このケースではシステムの動作に何らかの異常が発生したと考えられるため、ユーザにその旨の警告を行うとよい。
またこの場合、第1のデータ入出力部10のみがTLフレームの生成と送信を行う状態のままでも一応の動作の継続は可能であるので、ループ接続された複数のノードのうちのいずれかのノードにいずれかの側の論理接続を切断させる命令を送信し、システムの動作状態をシングルモードに戻すようにすればよい。そして、ステップS227への分岐が繰り返し起こる場合には、一旦システムをリセットし、論理接続を構築し直すことが好ましい。
オーディオネットワークシステム1においては、マスタノードが以上の処理を行うことにより、ノード間にツインモードのための2つの伝送経路が形成された場合に、新たな結線がされたノードからの通知を待つことなく、自動的かつ速やかに、1サンプリング周期から数サンプリング周期(2、3サンプリング周期あるいは5、6サンプリング周期以内)という短時間でツインモードの動作に移行することができる。
なお、マスタノードがツインモードの動作に移行した場合、スレーブノードもTLフレームに記載されるシステムの動作状態OSによりこれを自動的に検知し、ツインモードの動作を開始するが、このための処理については次項において述べる。
3.4 スレーブノードにおけるTLフレームの取り扱い
図6及び図8等を用いて説明したように、オーディオネットワークシステム中で音声伝送モードで動作中の各ノードにおいては、TLフレームから自機が使用するデータを読み出し、他の装置に送信すべきデータをTLフレームに書き込む。
次に、スレーブノードにおけるTLフレームの送受信に関する処理について説明する。この処理は、システムの動作状態がシングルモードないし二重化のツインモードの場合は、スレーブノードのいずれか一方の側の受信I/Fに関して実行され、二倍化のツインモードの場合は、両方の側の受信I/Fに関して実行される。
説明の簡単化のため、シングルモードないし二重化のツインモードでは、各ノードは、当該ノード内でバックワード側からフォワード側への方向に進行する(所定のリングIDの)TLフレームに対して、データの読み書きを行うものとする。このような構成は、シングルモードとツインモードの間のスムーズな移行を考慮した場合には、正常な動作を担保するために重要であるが、シングルモードのみの動作を考慮した場合には、このようにする必要はない。
まず、図32に、スレーブノードがS番目のTLフレームの受信開始を検出した場合に実行する処理のフローチャートを示す。
スレーブノードにおける制御部40のCPUは、S番目のTLフレームの受信開始を検出した場合、図32に示す処理を開始する。そしてまず、受信中のTLフレームに管理データとして記載されているリングID及びフレームIDを確認して記憶し(S161)、そのTLフレームが処理してよいTLフレームであるか否か判断する(S162)。
フレームIDは、前のTLフレームと連続番号になっていれば正常であり、当然ながら処理してよいTLフレームであると判断するが、切断等により1又は複数のTLフレームが欠落した後のTLフレームも受信すべきなので、前のTLフレームの番号より後の所定範囲内の番号であれば、処理してよいTLフレームと判断する。
リングIDは、システム内に形成される1又は2の伝送経路のうち、フレームを受信した受信I/Fが属する伝送経路のIDであれば、処理してよいTlフレームである。なお、リングIDを、伝送経路とともにシステムも特定するIDとした場合は、該条件に加えて、TLフレームに記載されているリングIDが、自ノードの属するシステムを特定している(他のシステムを特定していない)とき、正しい値と判断するようにするとよい。
そして、ここで処理してよいTLフレームと判断した場合には、受信したTLフレームに対し、波形データ,イーサネットフレーム,ITLフレーム,およびその他の情報の読み取り及び書き込みの処理を行う(S163〜S166)。
なお、図8の説明で述べた通り、スレーブノードは、TLフレームの受信完了を待たずに、受信したTLフレームに対するデータの読み書きを行い、次のノードへの送信も開始する。従って、これらの処理は、フレームの受信進行に応じて適当なタイミングで順次行うものであり、必ずしもフローチャートの記載順に従うとは限らない。また、どのようなデータをフレームから読み出し、また書き込むかは、図8を用いて説明した通りである。さらに、次のノードへの送信開始も、フレームの所定量のデータが蓄積されたタイミングで、図32の処理とは独立かつ平行して開始及び進行させる。
このため、スレーブノードにおいては、TLフレームに対してデータを読み書きする時点では、そのフレームにおけるエラー有無を把握できないが、この点については、後述の図32に示す処理により対処する。
また、ステップS166の後、TLフレームのFCSを受信できると、そのFCSにより、受信中のTLフレームのエラー有無を検出する(S167)。そして、エラーがあった場合には(S168)、受信中のTLフレームのエラーフラグEDFを、エラーありを示す「1」をセットする(S169)。ここでエラーがあった場合、受信したTLフレームに記載されていたデータは正確性が保証できないことがわかる。ただし、自身がTLフレームに書き込んで出力したデータは、元のデータに上書きしているため、正確性が保証できる。
また、ステップS167でエラーなしの場合には、エラーフラグEDFの値は変更せず、「1」がセットされていてもそのままとする。エラーフラグEDFは、TLフレームの循環中に1度でもエラーが発生したか否かを示すフラグだからである。
そしていずれの場合も、最後に、受信したTLフレームに正しいFCSを付与して(S170)、処理を終了する。このFCSを付与することにより、送信先のノードでは、このノードが出力したフレームはエラーなしと認識することになる。エラーフラグEDFの値が「1」であれば、マスタノードから自ノードまでの間のどこかでエラーが生じたことは認識できる。
以上の処理を実行することにより、スレーブノードは、受信したTLフレームを次のノードに送信するまでに、そのTLフレームに対して必要なデータの読み書きを行うことができる。
また、ステップS162で正しい値でなかった場合には、制御部40のCPUは、所定のエラー処理(S171)を行い、受信したTLフレームに対しては特に何もせず、そのままスルーする。従って、図32の処理はそのまま終了する。
なお、図示は省略したが、スレーブノードでは、受信したTLフレームに記載されているシステムの動作状態OSを読み取り、これが現在認識している動作状態と異なる場合には、自機の動作状態を、読み取ったシステムの動作状態OSに合わせて変更するようにしている。
例えば、シングルモードでの動作中に、二倍化のツインモードを示すOSを読み取った場合、シングルモードでは波形データの読み書きを行っていなかったデータ入出力部でも波形データの読み書きを行うようにし、後述するワードクロックのタイミング調整に用いる式をツインモード用のものに変更し、さらに、第1のデータ入出力部と第2のデータ入出力部が異なるリングIDの伝送経路に属するとしてステップS162の判断を行うようにする等、二倍化のツインモードでのフレーム伝送を行う状態に移行する。
二重化のツインモードを示すOSを読み取った場合も、概ね同様であるが、二重化の場合に1つのデータ入出力部でしか波形データの読み書きを行わないのであれば、データ入出力部の動作変更は不要である。
また逆に、二倍化又は二重化のツインモードでの動作中に、シングルモードを示すOSを読み取った場合には、シングルモードで波形データの読み書きを行わないデータ入出力部での波形データの読み書きを停止し、後述するワードクロックのタイミング調整に用いる式をシングルモード用のものに変更し、さらに、第1のデータ入出力部と第2のデータ入出力部が同じリングIDの伝送経路に属するとしてステップS162の判断を行うようにする等、シングルモードでのフレーム伝送を行う状態に移行する。
以上のモード移行のうち、二倍化のツインモードからシングルモードへ移行する際には、波形データの読み書き停止を速やかに行う必要がある。TLフレームの伝送をシングルモードで行っている状態で、本来使用しないはずのデータ入出力部でTLフレームにデータの書き込みを行ってしまうと、伝送すべきデータを上書き消去してしまうことになるためである。
従って、この移行のみは、専用のハードウェアにより、速やかに行えるようにすることが好ましい。制御部40のCPUとは別に、受信したTLフレーム中のシステムの動作状態OSをモニタして、二倍化のツインモードからシングルモードへの移行が必要になった場合に一方のデータ入出力部での波形データの読み書きを停止する回路を設ける等である。
その他の移行動作については、それほど高速化の要求が強くないため、制御部40のCPUが実行する処理によって行えばよい。
次に、図33に、スレーブノードがS番目のTLフレームの受信完了を検出した場合に実行する処理のフローチャートを示す。
この処理は、受信したTLフレームのエラーチェック結果に応じて、そのTLフレームから読み出したデータの採否を決定する処理である。そして、スレーブノードにおける制御部40のCPUは、S番目のTLフレームの受信完了を検出した場合、図33に示す処理を開始する。
そしてまず、FCSエラーあり又はエラーフラグEDFの値が「1」であった場合には(S181)、S番目のTLフレームから読み出した波形データ及びそのTLフレームのイーサネットフレーム領域から読み出したデータは正確性が保証できないことがわかる。このため、それらのデータを破棄し、第S周期の波形データとして出力されるデータを、それ以前の周期の波形データ(正確性が保証できる最新の波形データ)に基づくデータに変更する(S182)。
また、FCSエラーありであった場合には(S183)、S番目のTLフレームのITLフレーム領域107から読み出したデータは正確性が保証できないことがわかる。このため、そのデータを含むITLフレームを廃棄する(S184)。ITLフレームを複数のブロックに分割してITLフレーム領域107に記載している場合、1つのブロックでも正確性が保証できないものがあると、ITLフレーム全体の正確性が保証できないためである。
以上で図33の処理を終了する。
以上の処理を実行することにより、スレーブノードは、受信したTLフレームのエラー有無を確認する前にそのTLフレームに対してデータを読み書きしてしまっても、事後的にエラーデータを後段の処理から排除することができる。
また、FCSエラーがなければ、エラーフラグEDFの値が「1」であっても、ITLフレーム領域107のデータは正確性が保証できる。ITLフレーム領域107に自ノードが読み取るべきデータが書かれている場合、そのデータを書き込んだのは直前のノードであり、そのノードから自ノードまでの間に伝送エラーが発生していないことは、FCSによって保証されるためである。
4.ワードクロックのタイミング調整について
既に述べた通り、オーディオネットワークシステム1においては、マスタノードが伝送用ワードクロックを生成し、そのワードクロックによってTLフレームの送信タイミングを規定している。また、スレーブノードは、TLフレームの受信タイミングを基準としてワードクロックを生成することにより、マスタノードと同じ周期の伝送用ワードクロックを得られるようにしている。
しかし、この方式で生成する伝送用ワードクロックは、各ノード毎に位相が異なることになるし、ノードの追加や接続の切断等によりオーディオネットワークシステム1の構成が変化した場合には、各ノードにおけるTLフレームの受信タイミングがずれ、このことにより周期がゆらいでしまう。
そこで、オーディオネットワークシステム1においては、各ノードにおいてワードクロックの位相を揃え、また、システムの構成が変化してもクロックがゆらがないよう、ワードクロックのタイミングを調整する機能を設け、この調整後のワードクロックを、信号処理用ワードクロックとして、信号処理タイミングの基準として用いている。
ここで、図34及び図35に、オーディオネットワークシステムを構成する各ノードにおけるTLフレームの先頭の到達タイミングを示す。図34の(a)は、カスケード接続されたAからFまでの6つのノードにより構成され、そのうちノードBがマスタノードとなってシングルモードで動作するシステムの例、(b)は、その両端のノードAとノードFとが新たに接続され、ループ接続のツインモードの動作に移行した場合の例、図35の(c)は、そのうちノードDとノードEの間に断線が生じ、ノードDとノードEとを両端とするカスケード接続のシングルモードの動作に移行した場合の例を示す。
この図に破線矢印で示すのがTLフレームの到達タイミングであるが、図34(a)及び図35(c)から分かるように、シングルモードの場合、1サンプリング周期に1つのTLフレームが、両端のノードを除いては、時間差を置いて2回通過する。また、両端のノードについても、時間差(ほぼ)ゼロで2回通過すると考えることができる。このうち、スレーブノードが1回目にTLフレームを受信する時刻を第1受信時刻Tr1とし、2回目にTLフレームを受信する時刻を第2受信時刻Tr2とする。両端のノードについては、Tr1=Tr2と考えることができる。
また、前方遅延Dfwは、マスタノードがTLフレームを送信時刻Tsにフォワード側に送信してから、1度目にTLフレームがマスタノードに戻ってくるまでの時間である。後方遅延Dbwは、1度目にTLフレームがマスタノードに戻ってきてから、バックワード側に送信してから2度目にTLフレームがマスタノードに戻ってくるまでの時間である。従って、Dfw+Dbwが、TLフレームに伝送経路を1周させるのに要する時間である総遅延Drtである。なお、マスタノードがオーディオネットワークシステム1の端部にある場合には、DfwとDbwのうち一方(ノードが接続されていない側の遅延)がゼロになる場合もある。
一方、図34(b)からわかるように、ツインモードの場合、1サンプリング周期に2つのTLフレームが逆向きに1回ずつ、計2回スレーブノードを通過する。どちら向きのTLフレームが先に通過するかは、該当ノードとマスタノードとの位置関係に応じて異なる。しかしこの場合も、1サンプリング期間中に2回TLフレームを受信することはシングルモードの場合と同様であるので、スレーブノードが1回目にTLフレームを受信する時刻を第1受信時刻Tr1とし、2回目にTLフレームを受信する時刻を第2受信時刻Tr2とする。
また、マスタノードがTLフレームを送信してからそのTLフレームがマスタノードに戻るまでの時間は、フォワード側に送信した場合も、バックワード側に送信した場合も、同じ距離の通信ケーブルと同じ数のノードとを経由して戻ってくるのであるから、同じ時間のはずである。従って、シングルモードの場合と同様に、マスタノードがTLフレームを送信時刻Tsにフォワード側に送信してからそのTLフレームがマスタノードに戻ってくるまでの時間を前方遅延Dfw、同じくバックワード側に送信してからマスタノードに戻ってくるまでの時間を後方遅延Dbw、TLフレームに伝送経路を1周させるのに要する時間を総遅延Drtとすると、Drt=Dfw=Dbwとなる。
オーディオネットワークシステム1においては、シングルモードとツインモードでそれぞれ以上のようなTLフレームの伝送が行われることを前提として、全ノードで目標遅延Dtに応じた制御を行うことにより、信号処理に使用するワードクロックのタイミングを、目標時刻Ttに合わせるようにしている。
このようなワードクロックのタイミング調整は、ネットワークI/Fカード215のワードクロック生成部41が行う。
図36及び図37に、このワードクロック生成部41の構成を示す。図36はマスタノード、図37はスレーブノードにおける構成である。
マスタノードにおいては、図36に示すPLL(Phase Locked Loop)発振器302が、波形データのサンプリング周波数(サンプリング周期の逆数)と同じ周波数の伝送用ワードクロック(WC)を生成し、送信時刻Tsを示す信号として、データ入出力部301に供給する。このデータ入出力部301は、図8に示した第1,第2のデータ入出力部10,20を集合的に示したものである。なお、シングルモードの場合は、伝送用WCに同期してTLフレームの送信を行うのは各サンプリング周期のTLフレームを最初に送信する第1のデータ入出力部10のみであるので、伝送用WCはこちらのみに供給すればよい。
また、波形処理部320はオーディオバス217に接続された他のカードにおける信号処理部を示しており、その波形処理部320に供給されている信号処理用ワードクロックは、ネットワークI/Fカード215を含むそれら複数のカードに共通のワードクロックである。この波形処理部320は、図8の上位層I/F70に接続された上位層の一部に相当する。
ここで、図面中のDt遅延部303は、伝送用ワードクロックと信号処理用ワードクロックとの間に、数1に示す遅延量Dtに対応するタイミング差があることを示す。この遅延量Dtは、RTLモードのシステムを形成する際に図15の処理で予め設定され、マスタノードからシステムの全ノードに伝達される定数である。またこの伝達は、ITLフレームにより行うことができる。
なお、PLL発振器302による伝送用ワードクロックの生成は、ネットワークI/Fカード215がクロックマスタの場合には独自のタイミングに従い、他のカードがクロックマスタの場合はオーディオバス217を介して供給される他のカードからのワードクロックに同期するように、行うことができる。
そして、前者の場合、ワードクロック生成部41では、PLL発振器302の生成した伝送用ワードクロックをDt遅延部303でDtだけ遅延させ、信号処理用ワードクロックを生成する。また、後者の場合、PLL発振器302は信号処理用ワードクロックを生成することになるため、これを(サンプリング周期−遅延量Dt)だけ遅延させることにより、信号処理用ワードクロックより遅延量Dtだけ前の位相の伝送用ワードクロックを生成することができる。どちらの場合も、伝送用ワードクロックと信号処理用ワードクロックとの間には遅延量Dtに対応するタイミング差があることになる。
信号処理用ワードクロックは、本来は伝送用ワードクロックを遅延させたものであるはずであるが、逆に信号処理用ワードクロックを遅延させて伝送用ワードクロックとして良い理由は、これらのワードクロックの周波数の変動が極めてゆっくりであり、前の周期と次の周期とで周期長を比較しても両者に殆ど差がないためである。
また、遅延時間計測部304は、データ入出力部301におけるTLフレームの送受信タイミングに基づいて前方遅延Dfwと後方遅延Dbwを計測する第1の計測手段である。またこの遅延時間の情報は、信号処理用ワードクロックのタイミングの基準とするための基準情報として各サンプリング周期のTLフレームの管理データ領域102に記載して、システム内の他のノードに通知される。
ここで、図27を用いて説明した通り、マスタノードは、受信したS番目のTLフレームに基づいてS+2番目のTLフレームを生成する。しかし、遅延時間の情報については、TLフレームの先頭を基準に計測すれば、S+2番目のTLフレームの送信開始前にS+1番目のTLフレームの遅延時間の情報を取得できるはずであるから、該遅延時間の情報とその時点のシステムの動作状態OSとを送信待機中のS+2番目のTLフレームに書き込んで送信するようにするとよい。このようにすれば、スレーブノードに速やかに遅延時間の情報を伝達し、ワードクロックの追従をよくすることができる。
次に、図37に示すように、スレーブノードにおいては、基本的には、データ入出力部311で検出した、TLフレームの受信時に発生するタイミング信号を、PLL発振器314に入力して周期を安定させ、信号処理用ワードクロックを生成する。そしてこのとき、Dx遅延部313により、受信タイミング信号をTLフレームに記載された遅延時間の情報に応じた量だけ遅延することにより、オーディオネットワークシステムのノード数の増減やシングル/ツインの伝送経路の変更により当該スレーブノードにおけるTLフレームの受信タイミングが変化したとしても、タイミング信号のPLL発振器314への供給タイミング(目標時刻Tt)が変化しないようになっている。
このときの遅延量Dxは、Dx演算部312において、1つのサンプリング周期のTLフレームが伝送経路を循環する間の2回の受信時刻Tr1とTr2を計測し、これらの値と共に、TLフレームから読み出した前方遅延Dfwと後方遅延Dbwとシステムの動作状態OS、およびマスタノードから予め通知されている目標遅延Dt(調整遅延Dadjでもよい)を用いて、動作状態OS及びノードの位置に応じた数2乃至数4のいずれかを用いて求めることができる。なお、Tr1とTr2は、シングルモードにおいては1つのTLフレームの2回の受信時刻、ツインモードにおいては異なる伝送経路を伝送される2つのTLフレームの各1回ずつの受信時刻である。また、調整遅延Dadjは、数5により求めることができる。
なお、数2及び数3において、フォワード側ノードとは、TLフレームがマスタノードから送信されてから1回目にマスタノードに戻るまでに通るノード、バックワード側ノードとは、その後2回目にマスタノードに戻るまでに通るノードである。また、数4の場合も含め、遅延の基準としてDx遅延部313に供給する信号は、時刻Tr1で発生するタイミング信号でもよいし、時刻Tr2で発生するタイミング信号でもよい。
ここで、図38に、Dx演算部312がDxの設定のために実行する処理のフローチャートを示す。
図38の処理は、いずれかの受信I/FがTLフレームを受信した場合にDx演算部312が実行するものである。また、この処理は、受信したTLフレームに対しフレーム処理部220が波形データの読み書きを行うか否かとは無関係に実行するものである。
図38の処理において、Dx演算部312はまず、同じフレームID(同じサンプリング周期)の音声伝送フレームを既に受信しているか否か判断する(S301)。そして、受信していなければ、そのサンプリング周期内の1度目の受信であることがわかるので、第1受信時刻Tr1として現在時刻を記憶する(S302)と共に、受信した音声伝送フレームからDfw及びDbwを読み取って記憶し(S303)、受信した音声伝送フレームのフレームID及びリングIDを記憶して(S304)、処理を終了する。ステップS304で記憶した情報は、ステップS301の判断に利用する。
また、ステップS301で既に受信していた場合、今回の受信は、サンプリング周期内の2度目の受信であることがわかるので、第2受信時刻Tr2として現在時刻を記憶するする(S305)と共に、受信した音声伝送フレームからDfw及びDbwを読み取る(S306)。
そして、その値がステップS303で記憶した値と一致していない場合にはエラー処理を行うが(S307,S311)、一致していれば、Dxを決定すべくステップS308に進む。
そして、リングIDが1回目受信時にステップS304で記憶した値と一致するか否か判断する(S308)。ここで一致していれば、同じTLフレームが2度自ノードに到達したことがわかるので、現在のモードはシングルモードであると判断し、数2又は数3のシングルモード用の式に従って遅延量Dxを算出してDx遅延部313に設定して(S309)、処理を終了する。また、ステップS308で一致していなければ、2つの伝送経路のTLフレームがそれぞれ自ノードに到達したことがわかるので、現在のモードはツインモードであると判断し、数4のツインモード用の式に従って遅延量Dxを算出してDx遅延部313に設定して(S310)、処理を終了する。
そして、Dx遅延部313に供給されたタイミング信号は、設定された遅延量Dxだけ遅延されて、時刻TtのタイミングでDx遅延部313からPLL発振器314に供給される。PLL発振器314は、サンプリング周期毎にDx遅延部313から供給されるタイミング信号を参照信号として、そのタイミング信号とほぼ同じ周波数で、より安定しており、位相もほぼ同じであるような信号処理用ワードクロック(WC)を生成する。
このようにして、マスタノードとスレーブノードの何れにおいても、目標時刻Ttとほぼ同じタイミングで信号処理用WCが発生する。また、上述したように、スレーブノードでは、ネットワークI/Fカード215がオーディオバス217のマスタであるので、カードI/Oの他のカードは、それぞれ、この信号処理用ワードクロックに同期したワードクロックを発生している。
以上のタイミング調整は、信号処理の実行中に既存のノードが除外されたり、新たにノードが追加されたりしてシステムの構成が変化したり、システムの動作状態がシングルモードとツインモードの間で変化したりした場合にも、同じように行う。この場合、Dfw,Dbw,Tr1,Tr2といった個々の値はシステムの構成や動作状態に応じて変化するが、マスタノードが生成するワードクロックにゆらぎがなく、また目標遅延Dtが一定であれば、各スレーブノードにおいて、その時々の計測値を利用して遅延時間Dxの値の調整を行うことにより、全てのノードにおいて精度よく、マスタノードのTLフレーム転送用WCをDtだけ遅延したタイミングのワードクロックを得ることができる。従って、Dfw,Dbw,Tr1,Tr2が大きく変化した場合でも、ワードクロックのゆらぎを抑えることができるし、各ノードにおけるワードクロックの位相を揃えることができる。
なお、システムを正常に動作させるには、目標遅延Dtは、常に総遅延Drtより大きくなければならない。例えば、遅延更新量kを「2」として動作できている場合、総遅延Drtは、変化したとしてもほぼ1サンプリング周期以下になるので、目標遅延Dtはそれよりやや大きな値とするとよい。
また、目標遅延Dtをちょうどワードクロックの1周期とすれば、マスタノードにおいて、Dt遅延部303による遅延前の信号と遅延後の信号とは、位相が同じであるので、遅延を行わなくても、遅延を行った場合と実質的に同じ信号を波形処理部320に供給できる。従ってこの場合、Dt遅延部303は省略可能である。
また、ここではTLフレームの先頭を基準にして送受信タイミングを計測するようにしたが、他の位置を基準としてもよい。ただし、先頭を基準にする方が、位置が明確であるし、処理も単純化できるため、好ましい。
また、システムの動作状態が変化した場合、TLフレームの伝送が新たな動作状態に適した状態で適切に行われるようになるまで、2サンプリング期間程度は伝送周期が乱れる場合もある。従って、このような場合、Dxの値が安定的に計算できるようになるまで、スレーブノードのDx遅延部313の出力を止めて、信号処理用WCの周期がホールドされるようにしてもよい。あるいは、Dfw、Dbw、Tr1、Tr2等の値が揃わず、Dxを計算することができない場合に、スレーブノードのDx遅延部313の出力を止めるようにしてもよい。
また、Dx遅延部313とPLL発振器314の位置関係につき、TLフレームの受信タイミングを先にPLL発振器314に供給してクロック信号を発生させてから、これをDx遅延部313で遅延して信号処理用ワードクロックを生成するようにしてもよい。
また、PLL発振器302,314、Dt遅延部303、Dx遅延部313の配置につき、これらの各部を、ネットワークI/Fカード215の外部に設けることも考えられる。
また、ツインモードにおいて、マスタノードが第1及び第2のデータ入出力部10,20の双方でTLフレームに前方遅延Dfwや後方遅延Dbwを書き込むことは必須ではない。これらの情報をスレーブノードに伝達するだけであれば、いずれか一方で書き込みを行えば足りる。そして、この場合には、スレーブノードにおける図38のステップS306,S307の処理を省略すればよい。
4.変形例
以上で実施形態の説明を終了するが、装置の構成、データの構成、具体的な処理内容等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、1サンプリング周期に1つの伝送経路に1つのTLフレームを循環させることは必須ではなく、1サンプリング周期に複数のTLフレームを循環させたり、複数サンプリング周期につき1つのTLフレームを循環させ、そこに複数サンプリング周期分の波形データを記載することも考えられる。
また、上述の実施形態では、マスタノードとスレーブノードとで機能が異なるように説明を行なったが、どの装置がマスタノードになるかは、実際にオーディオネットワークシステムを形成するまでは、装置自身には認識できない。そこで、各装置は、マスタノードとスレーブの両方として機能できるように構成しておき、TTLモード移行時に自身が臨時マスタになると決定したり、OMコマンドによりRTLモードのマスタになる指定を受けたりしたか否かに応じて適切な機能を有効にするようにするとよい。ただし、マスタノードの機能を設けない装置もシステムに組み入れ可能とし、その装置は自動的には(暫定も含めて)マスタにならず、かつマスタとして指定できないようにしてもよい。このとき、これを理由にマスタが決定できない場合には、ITLモードからTTLモードに移行できないようにすればよい。
また、TLフレームの構成について、波形データと制御データの領域の比率を変更してもよいことは、もちろんである。いずれかの領域のサイズを0にしてもよい。
それ以外にも、上述の実施形態では、周期更新量kを可変値としていたが、固定値であってもよい。その場合、その周期更新量kに対応する上限時間も固定値となり、システムに追加できるノードの数はその上限時間により制限される。
TLフレームを含む各種フレームはIEEE802.3の形式に限らず、他の任意の形式であってよい。
上述の実施形態では、サンプリング周波数は96kHzであったが、88.2kHz、192kHz等任意の周波数で設計することができる。また、サンプリング周波数を切り換えられるようにしてもよい。
また、これらの変形及び実施形態の説明において述べた変形は、矛盾しない範囲で任意に組み合わせて適用可能である。また逆に、ネットワークシステム及び音響信号処理装置が実施形態の説明において述べた特徴を全て有している必要もない。
1…オーディオネットワークシステム、2…音響信号処理装置、10…第1のデータ入出力部、11,21…TLフレーム受信部、14,24…MAC処理部、15,25…ディレイバッファ、18,28…TLフレーム送信部、33,31…第1,第2の受信I/F、32,34…第1,第2の送信I/F、35〜38…セレクタ、40…制御部、41…ワードクロック生成部、51,61…ITLフレーム受信部、54,64…ITLフレーム送信部、70…上位層I/F、100…TLフレーム、110、120…ITLフレーム、215…ネットワークI/Fカード、220…フレーム処理部、NC1〜NC4…ネットワーククロック、LB1,LB2…折り返しライン