以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
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数等を記載する。なお、フレームタイプとしては、このフレームがTLフレームであることを示すデータを記載する。また、ツインモードを許可しない場合、システム内の伝送経路は1つのみであるから、リング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を特殊な値に設定することにより記載できる。また、送信元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として、デジタル入出力、音源、レコーダ、エフェクタ等の、種々のカードモジュールを装着可能とすることが考えられる。
なお、上述のように、カードI/O210に装着されたカードは、共通のワードクロックに従って音響信号の処理を行うが、音響信号処理装置2がマスタノードである場合は、装着されたカードのうちの何れか1枚がネットワークI/Fカード215を含む他のカードへワードクロックを供給し、ネットワークI/Fカード215はマスタノードとしてサンプリング周期毎にTLフレームを送信する。音響信号処理装置2がスレーブノードである場合は、ネットワークI/Fカード215がTLフレームの受信タイミングに基づいてワードクロックを生成(再生)し、カードI/O210に装着された他のカードへワードクロックを供給する。
次に、図8に、ネットワークI/Fカード215の構成をより詳細に示す。
図8に示すように、ネットワークI/Fカード215は、フレームの送受信に使用する第1,第2の受信I/F31,33及び第1,第2の送信I/F34,32を備え、また、フレームを用いたデータ送受信に関する処理を行うフレーム処理部220と、音響信号処理装置2のうちネットワークI/Fカード215以外の部分とのインタフェースとなる上位層I/F70とを有する。
このうち、第1,第2の受信I/F31,33及び第1,第2の送信I/F34,32は、図1に示した2組の受信I/F及び送信I/Fと対応する通信手段であり、それぞれ通信ケーブルと接続するための所定のコネクタ(メス側)を備えている。通信ケーブルの接続に際しては、第1の受信I/F31と第1の送信I/F34とを1組とし、第2の送信I/F32と第2の受信I/F33とを1組とする。これらのI/Fは、上述した1サンプリング周期内のTLフレームの伝送に十分な能力を有していれば、どのような通信方式でデータ通信行うI/Fであってもよいが、ここでは1Gbpsのイーサネット方式のデータ転送を行うI/Fを採用している。
現在、1Gイーサネットには、通信ケーブルCBとしてRJ45コネクタ付きCAT5eケーブル(シールドされていないツイストペア)を使用する1000BASE−Tと、光ファイバやSTPケーブル(シールドされたツイストペア)を使用する1000BASE−Xの2種類があるが、本実施形態にはその何れを用いることもできる。また、1Gイーサネット以外の広帯域ネットワーク技術を用いても良い。例えば、FiberChannel、SDH(Synchronous Digital Hierarchy)/SONET(Synchronous Optical NETwork)などである。
受信I/Fは、通信ケーブルCBを伝播する電気信号や光信号からキャリアであるネットワーククロックを抽出し、抽出されたクロックに基づいて該電気信号や光信号からバイト単位(ないしワード単位)のデジタルデータのデータ列を復調して出力する。送信I/Fは、ネットワーククロックと送信すべきバイト単位(ないしワード単位)のデジタルデータ列を入力し、該ネットワーククロックをキャリアとして伝送用の電気信号や光信号に変調して通信ケーブルCBに出力する。
また、上位層I/F70は、図7に示したオーディオバス217及び制御バス218に対してデータを入出力するためのインタフェースである。
そして、ここでは5つのデータ入出力ポートを備えており、このうち2つのIP_Packetポートは、TLフレーム100のイーサネットフレーム領域106から読み出したイーサネットフレームに含まれるIPパケットや、イーサネットフレームを生成してイーサネットフレーム領域106に書き込んで送信するIPパケットの制御バス218を介した入出力を行うためのものである。
また、COMポートは、ネットワークI/Fカード215側の制御部40と、音響信号処理装置2本体側のCPU210との間で、制御バス218を介してコマンドやデータを送受信するためのポートである。
Audio_Inポート及びAudio_Outポートは、オーディオバス217を介して波形データを入出力するためのポートである。
一方、フレーム処理部200は、大別すると、第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の送信タイミングの基準としても用いるが、スレーブノードにおいては、ワードクロック生成部42は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は、第1の受信I/F31がキャリアとして抽出したネットワーククロックNC1の供給を受けて、それに同期して第1の受信I/F31からのデータの受け取りを行う。ただし、TLフレーム受信部11が第1の受信I/Fからのデータを受け取るのは、セレクタ35が第1の受信I/F側を選択している場合のみである。
第1の受信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は、第2の送信I/F32に接続されているノードに送信すべきITLフレーム110のデータを格納するバッファであり、制御部40が、その書き込みを行う。
そして、セレクタ36がITLフレーム送信部54側を選択している場合、ITLフレーム送信部54が、適当なタイミングでITLデータ送信バッファ53に格納されているITLフレーム110を読み出し、第2の送信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は、第2の送信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からの出力ラインを選択していれば、第2の送信I/F32から隣接ノードに対して出力される。このとき、第1のデータ入出力部10の動作クロックが、そのままネットワーククロックNC2として、第2の送信I/F32に供給され、第2の送信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フレーム送信部18からの音声伝送フレームの出力を独立して行うようになっていたが、その書き換えと出力を一度に行うようにしてもよい。すなわち、受信した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フレーム100全体の受信が完了してからTLフレーム100の更新を行うようになっており、TLフレーム100へのデータの書き込みのタイミングおよびTLフレーム100の送信開始のタイミングが、スレーブノードとは異なる。しかし、TLフレーム100中のデータの書き込み位置については、スレーブノードの場合と同様に定めることができる。また、TLフレーム100中の管理データ102の書き換えも行うが、この書き換えも、新たなTLフレームに記載すべきデータをTLデータ送信バッファ17に書き込んでおき、このデータをフレームバッファに蓄積されたTLフレームに上書きして行うことができる。
以上が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の出力を第2の送信I/F32に流す状態では、セレクタ37は第2の受信I/F33で受信したデータをTLフレーム受信部21に渡し、第2のI/F側に接続されている装置からTLフレームを受信可能な状態となる。
一方、セレクタ37を折り返しラインLB1側に切り替え、TLフレーム送信部18の出力をTLフレーム受信部21に渡す状態とすると、第1の受信I/F31が受信したTLフレーム100は、第1のデータ入出力部10→折り返しラインTL1→第2のデータ入出力部20を通って、第1の送信I/F34から出力されることになる(セレクタ38がTLフレーム送信部28側を選択していれば)。従って、受信したTLフレーム100をその送信元に対して折り返し送信することになる。
また、セレクタ36はセレクタ37の折り返しラインLB1側への切り替えに連動してITLフレーム送信部54側に切り替わり、第2のI/F側の装置に対しては、TLフレーム100ではなくITLフレーム110を送信する状態となる。一方、第2の受信I/F33がITLフレーム110を受信した場合には、このフレームはITLフレーム受信部61にて処理することができる。
従って、TLフレーム100を折り返す状態でも、TLフレーム100の送信を行わない側に接続されている装置との間で、ITLフレームを用いた通信を行う経路は確保される。
この経路による通信は、後述する接続検出コマンドや接続要求コマンド及びそれらに対する返答の送受信等、初期処理においてオーディオネットワークシステムを組み立てたり、システムの構成変更に係る処理を行ったりする際の通知やコマンドの送受信等に用いる。
また、ここではセレクタ36,37について説明したが、セレクタ38,35も、連動して動作することにより同様な機能を有する。そして、第2の受信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/F31,34に対応する処理と、第2の送受信I/F32,33に対応する処理とを行う。以後の説明において、単に送信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の説明で述べたように、マスタノードから見て、一巡する音声伝送フレームを最初に送信する側をフォワード側に統一する。
あるいは、第1の送受信I/Fがバックワード側、第2の送受信I/Fがフォワード側、というように向きを固定し、装置間でフォワード側同士やバックワード側同士が接続された場合には、エラーとするようにしてもよい。このようにすると、ユーザによる接続の自由度は低下するが、システムの制御は容易である。
図10の説明に戻ると、制御部40のCPUは、ステップS33の後、返答側装置との間で適宜ITLフレームを送受信して、返答側装置に対しトポロジーテーブルの内容を伝達する(S34)。具体的には、返答側装置と反対側に接続されている装置のデータを、接続順の情報も含めて送信し、その情報を、返答側装置のトポロジーテーブルに登録させる。
その後、返答側装置の情報を伝えるテーブル送信通知のITLフレームを生成し、AS応答を受信した側と反対側の送信I/Fから送信して(S35)、図10の処理を終了し、図9のステップS12の処理に進む。
なお、図示は省略したが、このテーブル送信通知を受け取った装置は、自機のノードテーブルに、通知された返答側装置のデータを登録する。また、テーブル送信通知を受信した側と反対側に装置が接続されていれば、その装置にも、返答側装置の情報を伝えるテーブル送信通知のITLフレームを送信する。このようにして、図10の処理を行った要求側装置から見て、返答側装置と反対側に接続されている装置全てにおいて、ノードテーブルに返答側装置のデータが登録される。
ただし、要求側動作自体は、ステップS35の送信が完了した時点で終了してよい。
また、ステップS32でタイムアウトした場合には、送信I/Fには装置が接続されていないか、又は接続されていても、オーディオネットワークシステム1を形成する能力のある装置ではないとわかるため、そのまま図10の処理を終了し、図9のステップS12の処理に進む。
なお、ステップ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の説明で述べた通り、マスタノードにおいてなされているモード設定によって決まる。
そこで、相手装置とネットワーク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フレームの送受信は行わないようにするとよい。
そして、各装置をシステムに参加させる際に、必ずこの距離計測を行って、隣接装置間の距離をトポロジーテーブル等に記録しておけば、それらを合計して、新たな装置を組み入れた場合のフレーム伝送経路の総距離を求めることができる。そして、この総距離が所定値以内に収まれば、問題なしとする。
ただし、システムがツインモードで動作中の場合、システムのどこかで接続の切断やノードの停止が起こると、その両側で伝送経路の折り返しが設定され、2つのリングが結合した1つのリング状の伝送経路が形成されて、シングルモードの動作に戻ることになる。この場合、一般に、ツインモードの時の伝送経路よりも、シングルモードに戻った後の伝送経路の方が長くなる。
そこで、ツインモードで動作中の場合、現に使用している伝送経路に相手装置を組み入れた場合についてだけでなく、どの部分で接続の切断やノードの停止が起こってシングルモードの動作に戻ったとしても、その戻った後の伝送経路の総距離が所定値以内に収まる場合に、問題なしとする。
そして、ノード数と総距離のどちらも問題なしの場合、ステップ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モードのシステム同士が接続されたとして相手装置をシステムから離脱させてよい場合)には(S80)、リセット指示コマンドのITLフレームを相手装置に送信する(S81)。そして、初めから処理をやり直して相手装置をシステムに組み入れるべく、物理接続確認処理に戻ることを決定し、図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フレームを送信する。この送信は、トポロジーテーブルを参照し、送信先の装置が存在している側に対して行う。
図15に、このOMコマンドを受信した場合に制御部40のCPUが実行する処理のフローチャートを示す。
この図に示すように、OMコマンドを受信した装置の制御部40のCPUは、まず、受信したコマンドが自装置宛か否か判断する(S111)。そして、自装置宛でなければ、受信したOMコマンドのITLフレームを、そのまま受信した側と反対側に送信して(S117)処理を終了する。OMコマンドが宛先の装置に届くまでは、途中の各装置がこのように順次ITLフレームの伝送を仲介する。この点は、他のコマンドの場合でも同様である。
一方、ステップS111で自装置宛であれば、OM応答のITLフレームを、OMコマンドの送信元装置を送信先として、その装置が存在する側に対して送信する(S112)。その後、図13のステップS71の場合と同様、自装置をリセットし、現在何らかのシステムに参加していれば、そのシステムを一旦離脱する(S113)。その後、自装置をマスタノードに設定する(S114)と共に、自装置にRTLモードの固有のネットワークIDを設定する(S115)。その後、両側にリセット指示コマンドのITLフレームを送信して(S116)、処理を終了する。
この後、両側の装置から始まって通信可能な範囲の装置が順次リセットされていく。そして、マスタノードとなった装置自体も、図9に示した処理を開始し、RTLモードのシステムに参加している装置として、両側に接続されている装置を、条件の許す限り順次システムに組み込んでいく。なお、図9に示した処理は、隣接ノードからのリセット応答の受信をトリガに開始するとよい。この時点であれば、隣接ノードはITLモードに戻っており、システムに組み入れることができると期待できるためである。
以上の処理により、音声伝送の可能なRTLモードのオーディオネットワークシステム1を、ユーザの指示に応じてマスタノードを設定して形成することができる。
なお、一度システムが形成された後でも、両端に新たな装置が接続された場合には、随時その装置をシステムに組み入れることができる。また、ユーザは、マスタノードや動作モードを変更したい場合、随時指示を行ってOMコマンドを発行することができる。
そして、オーディオネットワークシステム1がRTLモードで動作中であっても、いずれかのノードが自分宛のOMコマンドを受け取ると、そのノードが新たなマスタノードとなり、図15に示した処理によりシステム全体をリセットして再度オーディオネットワークシステム1の形成を行う。
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)。
また、装置Cについては、論理接続準備処理において、図12のステップS64の判断がYESとなり、その後の論理接続確立処理において、装置Cと装置Dが互いの間のループバックを解除することにより、フレーム伝送経路が、2つのリング状の経路に変化し、ツインモードの接続が確立される。
RTLモードで動作しているシステムにおいて、両端の装置がケーブルにより接続された場合、以上の処理により、ツインモードの動作に移行することができる。
2.4 伝送経路の切断時の動作
次に、RTLモード又はTTLモードで動作中のオーディオネットワークシステムにおいてノード間の接続の切断が発生した場合の動作について説明する。
RTLモード又はTTLモードで動作中のオーディオネットワークシステムにおいて、各ノードは、隣接ノードとの間の接続が切断されたことを検出した場合、切断を検出した側のセレクタを折り返しライン/ITLフレーム送信部側に切り替え、切断を検出した側にTLフレームの伝送経路のループバックを設定する。
隣接ノードとの間の接続が切断された状態でその隣接ノードに対してTLフレームを送信しても、そのTLフレームは単に失われるだけであるので、切断された接続より先のノードはシステムから除外し、残りのノードだけで新たな伝送経路を形成してTLフレームの循環を継続するためである。
なお、以下の図21及び図22では、RTLモードのシステムに切断が生じた場合の例を示しているが、TTLモードの場合にも、RTLをTTLと読み替えれば同様な動作となる。
図21に、接続切断時のシステム構成変更手順の例を示す。
この図は、装置A〜装置Fの6台の装置によりRTLモードのオーディオネットワークシステムが形成されている状態で、装置Dと装置Eとの間の結線が切断された場合の例を示している。なお、結線の切断には、通信ケーブル自体が物理的に切断された場合の他、通信ケーブルが装置から抜き取られた場合や何れか一方の装置において故障によりオーディオネットワークへの送信ないし受信ができなくなった場合も含む。また、図中の「M」は、マスタノード、「LB」は、ループバックが設定されている装置を示す。
そして、図21(a)に示すように結線に切断が発生すると、両方向の伝送路が切断された場合は切断箇所の両側の装置で、片方向の伝送路のみが切断された場合はその切断された伝送路の受信側の装置で、切断箇所のある側の隣接装置からのTLフレームの信号が途絶えたり、ネットワーククロックの抽出ができなくなったりする。
この場合、TLフレームの途中で信号が途切れたこと、あるいは、ネットワーククロックが抽出できなくなったことを検出した装置は、その側で切断が発生したと判断し、直ちに検出した側のセレクタを折り返しライン/ITLフレーム送信部側に切り替え、切断を検出した側にTLフレームの伝送経路のループバックを設定する。
例えば、図8に示した第2の受信I/F33が切断を検出した場合、セレクタ37を折り返しライン側に、セレクタ36をITLフレーム送信部54側に切り換える。
ただし、これだけでは、隣接装置の送信I/Fから自機の第2の受信I/F33に至る伝送経路が切断されたとわかるだけで、自機の第2の送信I/F32から隣接装置の受信I/Fに至る通信経路が切断されたか否か、さらには、隣接装置が切断を検出できているか否かは定かではない。
そこで、切断を検出した受信I/Fと対応する送信I/F(ここでは第2の送信I/F32)から、切断発生を通知する切断通知コマンドを隣接装置に対して送信する。このコマンドは、ITLフレーム送信部54が、ITLフレーム120の形式で生成して送信I/Fに供給する。そして、この切断通知コマンドにより、隣接装置に、切断が発生したことを確実に伝達できる。
なお、両方向の伝送路が切断されている場合には、隣接装置側でも切断を検出できているはずであるから、切断通知コマンドが届かなくても問題ない。また、切断通知コマンドの送信は、切断が解消するか、新たな装置が接続されて、切断の発生した側から接続検出(AS)コマンドを受信するまで、定期的に行う。
(b)は、切断点の両側の装置が、切断を検出した側にループバックを設定した状態を示す。図に示す例では、このことにより、装置Aから装置Dまでを循環する伝送経路と、装置Eと装置Fの間を循環する伝送経路とが形成される。
なお、切断が発生した場合、各装置はTLフレームの通過中にループバックを設定することも考えられる。そしてこの場合、送信中のTLフレームは破損する。しかし、この場合でも、後述のように、システム内の各ノードはTLフレームの破損を検出できるし、マスタノードも破損したフレームを廃棄して新たなフレームを作成できるため、大きな問題にはならない。従って、切断によって生じた2つの装置群のうち、マスタノードが存在する側は、切断箇所やタイミングによって0〜2のTLフレームに記載されていたデータを失うものの、RTLモードの動作を継続することができる。
一方、切断によりマスタノードと切り離されてしまった装置については、もはやマスタノードが送信したTLフレームが到達しないため、RTLモードでの動作はできない。各装置は、トポロジーテーブルを参照することにより、切断によりマスタノードと切り離されたか否かを判断できるので、マスタノードと切り離されたと判断した装置は、自身をリセットすると共に、切断側と反対側にも、リセット要求を送信する。
そして、図13に示した処理により、マスタノードと切り離されたノードは(c)に示すように全て一旦ITLモードに戻る。
ただし、その後は、適宜図9に示す処理を開始し、図16等を用いて説明したものと同様な手順で、(d)に示すように装置E及び装置FはTTLモードのシステムを自動的に形成することができる。そして、切断された結線が復旧されると、一旦切り離された装置E及び装置Fを、図18等を用いて説明したものと同様な手順で、RTLモードで動作中のシステムに組み入れることができる。
なお、切断を検出した装置は、ITLフレーム又はTLフレーム中の管理データにより、切断の発生を、切断箇所と反対側の装置に順次通知する。そして、切断の通知を受けた各装置は、切断箇所より先に接続されていた装置の情報を、トポロジーテーブルから削除する。
また、切断発生時点でTLフレームの先頭が装置E又は装置Fに位置していた場合、何も対応しないと、装置Eと装置Fの間をTLフレームが循環し続けることも考えられる。そこで、このような事態を防止するため、TLフレームの受信時にフレーム通し番号を確認し、2度同じ通し番号のTLフレームを受信した場合には、そのTLフレームを折り返さずに破棄するようにするとよい。
また、図22に、接続切断時のシステム構成変更手順の別の例を示す。
この図には、装置が停止した場合の例を示している。結線に変化がなくでも、急に電源が切断される等して装置が停止することも考えられる。そして、この場合にも、停止した装置の両側の装置は、隣接装置からのネットワーククロックが検出できなくなるため、このことをトリガに、図22(a)に示すように伝送経路の切断を検出することができる。停止した装置の隣の装置(D,F)では、装置の停止は、結線の切断と区別できないが、対処処理も同じなので特に問題はない。
すなわち、図22(b),(c)に示すように、図21の場合と同様、伝送経路の切断を検出した装置が、その切断を検出した側に折り返しを設定し、マスタノードが、切断発生時に壊れたTLフレームを破棄して新たなTLフレームの生成と送信を続行する。そして、このことにより、マスタノードが存在する側の伝送経路には、切断発生後もTLフレームが伝送され、伝送経路が維持できる範囲で、波形データやイーサネットフレーム等の伝送を継続することができる。
なお、各装置は、機能が全面的に停止しない場合でも、制御回路40がハングアップする等して、TLフレームに対してデータの読み書きを正常に行えなくなる場合がある。そして、この状態でTLフレームの伝送を継続すると、その内容の正確さが保証できなくなるため、ある装置がこの状態に陥った場合、その装置は機能が停止したとして、図22に示したような構成変更を行うことが好ましい。
3.TLフレームに対するデータの読み書きについて
次に、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フレームに基づいて生成するようにしている。
またこのため、マスタノードにおいては、図23に示すように、TLフレームの生成を行うデータ入出力部においては、TLフレーム送信部18に設けるTLフレームの加工用バッファを、複数のバッファで構成し、その各バッファに対し「送信バッファ(兼保存バッファ)」又は「受信バッファ」の機能を割り当てることができるようにしている。そして、TLフレーム送信部18内には、周期更新量kより1だけ多い(k+1)個のバッファが必要である。
ここで、図24に、マスタノードにおけるTLフレームの送受信及び生成のタイミング例を示す。この図において、Sは整数であり、ワードクロックの各周期が何番目の周期であるかを示す番号である。そして、このSは、そのS番目の周期にマスタノードが送信するTLフレームを示すフレーム番号としても使用する。
マスタノードは、図5及び図6を用いて説明したように、サンプリング周期毎に1つのTLフレームを送信する。また、この図に示すのは、周期更新量kが「2」の場合の例であり、この場合、送信したTLフレームの先頭は、約1サンプリング周期でシステムを循環する。そして、多くの場合、図24に示すように、S番目のTLフレームの全体の受信が完了する前に、S+1番目のTLフレームの送信を開始しなければならない。また、S+2番目のTLフレームの送信を開始するより、マスタノード内での新TLフレームの準備に係る時間である所定時間αだけ前のタイミングまでに、S番目のTLフレームの全体を受信する。図24には、この所定時間αを、符号Xで示している。
この場合、送信バッファに格納してあるS番目のTLフレームの送信と、受信したS−1番目のTLフレームの受信バッファへの格納とを並行して行っている。フレームバッファ16において、受信バッファは、現在の送信バッファの次のバッファとするとよい。また、マスタノードが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個とすることができる。
また、図25に、S番目以降の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フレームを生成する場合と同じ結果が得られる。
次に、マスタノードにおいて図24及び図25に示した動作を実現するための処理について説明する。
まず、図26に、マスタノードがS番目のTLフレームの受信開始を検出した場合に実行する処理のフローチャートを示す。
マスタノードにおける制御部40のCPUは、S番目のTLフレームの受信開始を検出した場合、図26に示す処理を開始する。そしてまず、受信したフレームに管理データとして記載されているリングID及びフレームIDを確認し(S121)、正しい値か否か判断する(S122)。フレームIDは、前のTLフレームと連続番号になっていれば正しい値である。リングIDは、フレームを受信した受信I/Fが属する伝送経路のIDであれば、正しい値である。
そして、フレームID及びリングIDが正しい値であれば、特に問題ないので図26の処理を終了してTLフレームの受信とバッファへの蓄積を継続する。しかし、これらの値に異常がある場合、フレームが欠落していたり、伝送経路の形状が変化していたりすることが考えられる。そこで、エラー処理(S123)において、フレームにエラーがあったことを記憶しておき、次の図27のステップS132において、エラーありと判断させるようにする。
次に、図27に、マスタノードがS番目のTLフレームの受信完了を検出した場合に実行する処理のフローチャートを示す。
マスタノードにおける制御部40のCPUは、S番目のTLフレームの受信完了を検出した場合、図27に示す処理を開始する。そしてまず、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フレームに、出力すべきデータが書き込まれた状態にする。
どのようなデータをフレームから読み出し、また書き込むかは、図8を用いて説明した通りである。また、ステップ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フレームのことを、「対象フレーム」と呼ぶことにする。
その後、対象フレームに対し、フリートークンを書き込む(S143)。このフリートークンは、TLフレーム100のイーサネットフレーム領域106が現在使用されておらず、イーサネットフレームの送信を希望するノードがイーサネットフレーム領域106にデータを書き込んでもよいことを示すデータである。そして、このフリートークンは、本実施形態では送信元IDの値(例えば「0」)として書き込むようにしている。
なお、ステップS143でフリートークンの書き込みを行うのは、イーサネットフレーム領域106については、対象フレームに記載されている、既に過去に送信したデータを同じデータを再度送信しても意味がないので、領域を解放するためである。なお、その後、マスタノード自身がイーサネットフレーム領域106に送信すべきイーサネットフレームのデータを書き込む場合はある。
また、CPUはその後、ステップS132でNOとなったことに伴うエラー処理を行う(S144)。この処理は、後で図29を用いて説明するスレーブノードにおける処理と同様、受信したTLフレームに記載されているデータが信頼できないことに伴う処理である。また、上位層にエラーを通知する等の処理を行ってもよい。
そして、ステップS144の後は、対象フレームに対し、新たなフレームIDを書き込んで新たなTLフレームとする(S145)と共に、波形データ,イーサネットフレーム,ITLフレーム,およびその他の情報の書き込みの処理を行い(S146〜S149)、S+2番目のTLフレームに、出力すべきデータが書き込まれた状態にする。ステップS146〜S149の処理が順不同であることはステップS135〜S138の場合と同様であるが、ここでは、対象フレームからデータを読み出す必要はない。
ステップS149の後は、ステップS139に進み、生成した新たなTLフレームを、エラーなしの場合と同様に送信開始して処理を終了する。
以上の処理を行うことにより、マスタノードは、伝送経路を正常に循環して戻ってきたことが確認できているTLフレームに基づいて新たなTLフレームを生成することができるため、常に正しいTLフレームを生成することができる。
なお、エラーフラグEDFの値が「1」であっても、受信したTLフレーム自体にエラーがない場合には、直前のノードが書き込んだデータは信用できるため、受信したTLフレームのデータのうち、ITLフレーム領域のデータのみは読み出して処理に利用するようにするとよい。
また、図24〜図27を用いて以上に説明した動作は、周期更新量kが「2」の場合のものであったが、周期更新量kが2より大きい値である場合には、「S番目のTLフレームを基にしてS+k番目のTLフレームを生成する」ことを正常時の基本動作として、周期更新量kが「2」の場合と同様の動作を行う。
すなわち、図24のタイミング図に相当する動作では、S番目のTLフレームを正常に受信完了すると、マスタノードは、そのTLフレームに基づいてS+k番目のTLフレームを生成し、S+k番目のワードクロックのタイミングで送信開始する。図25に相当する動作では、S番目のTLフレームが正常に受信できなかったとき、マスタノードは、S+k−1番目のTLフレームの送信完了を待って、そのTLフレームに含まれている「最後に正常受信されたTLフレームのデータ」に基づいてS+k番目のTLフレームを生成し、S+k番目のワードクロックのタイミングで送信開始する。
周期更新量kを大きくすることにより、オーディオネットワークシステムにおけるTLフレーム循環の上限時間を大きくすることができ、その分だけノード間の距離を長くしたり、システムに組み入れるノード数を増やしたりすることができる。しかしながら、周期更新量kを大きくした分だけ、オーディオネットワークにおける音響信号の伝達遅延が大きくなるというトレードオフがある。
3.3 スレーブノードにおけるデータの利用
図6及び図8等を用いて説明したように、オーディオネットワークシステム中で音声伝送モードで動作中の各ノードにおいては、TLフレームから自機が使用するデータを読み出し、他の装置に送信すべきデータをTLフレームに書き込む。
次に、スレーブノードにおけるTLフレームの送受信に関する処理について説明する。
まず、図28に、スレーブノードがS番目のTLフレームの受信開始を検出した場合に実行する処理のフローチャートを示す。
スレーブノードにおける制御部40のCPUは、S番目のTLフレームの受信開始を検出した場合、図28に示す処理を開始する。そしてまず、受信中のTLフレームに管理データとして記載されているリングID及びフレームIDを確認し(S161)、正しい値か否か判断する(S162)。この判断は、マスタノードにおける図26のステップS121,S122と同様なものであり、正しくない場合には、エラー処理(S171)として、受信したTLフレームをそのままスルーさせる。この場合、伝送経路上の以降のノードも同様にTLフレームをスルーさせ、マスタノードまで戻すことになる。また、FCSエラーの場合と同様、エラーフラグEDFを「1」にセットするようにしてもよい。
一方、ステップS162で問題なければ、受信したTLフレームに対し、波形データ,イーサネットフレーム,ITLフレーム,およびその他の情報の読み取り及び書き込みの処理を行う(S163〜S166)。
なお、図8の説明で述べた通り、スレーブノードは、TLフレームの受信完了を待たずに、受信したTLフレームに対するデータの読み書きを行い、次のノードへの送信も開始する。従って、これらの処理は、フレームの受信進行に応じて適当なタイミングで順次行うものであり、必ずしもフローチャートの記載順に従うとは限らない。また、どのようなデータをフレームから読み出し、また書き込むかは、図8を用いて説明した通りである。さらに、次のノードへの送信開始も、フレームの所定量のデータが蓄積されたタイミングで、図28の処理とは独立に開始及び進行させる。
このため、スレーブノードにおいては、TLフレームに対してデータを読み書きする時点では、そのフレームにおけるエラー有無を把握できないが、この点については、後述の図29,図31及び図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フレームに対して必要なデータの読み書きを行うことができる。
次に、図29に、スレーブノードがS番目のTLフレームの受信完了を検出した場合に実行する処理のフローチャートを示す。
この処理は、受信したTLフレームのエラーチェック結果に応じて、そのTLフレームから読み出したデータの採否を決定する処理である。そして、スレーブノードにおける制御部40のCPUは、S番目のTLフレームの受信開始を検出した場合、図29に示す処理を開始する。
そしてまず、FCSエラーあり又はエラーフラグEDFの値が「1」であった場合には(S181)、S番目のTLフレームから読み出した波形データは正確性が保証できないことがわかる。このため、そのデータを破棄し、前の周期の波形データをホールドして、読み出した波形データの代わりに第S周期のデータとする(S182)。図示は省略したが、ステップS181でYESの場合、ステップS166で読み出したその他の情報についても、破棄するようにするとよい。
また、FCSエラーありであった場合には(S183)、S番目のTLフレームのITLフレーム領域107から読み出したデータは正確性が保証できないことがわかる。このため、そのデータを含むITLフレームを廃棄する(S184)。ITLフレームを複数のブロックに分割してITLフレーム領域107に記載している場合、1つのブロックでも正確性が保証できないものがあると、ITLフレーム全体の正確性が保証できないためである。
以上で図29の処理を終了する。
以上の処理を実行することにより、スレーブノードは、受信したTLフレームのエラー有無を確認するまえにそのTLフレームに対してデータを読み書きしてしまっても、事後的にエラーデータを後段の処理から排除することができる。
なお、図29には、イーサネットフレーム領域のデータを排除する処理はないが、この処理については、次項で述べる。
また、FCSエラーがなければ、エラーフラグEDFの値が「1」であっても、ITLフレーム領域107のデータは正確性が保証できる。ITLフレーム領域107に自ノードが読み取るべき書かれている場合、そのデータを書き込んだのは直前のノードであり、そのノードから自ノードまでの間に伝送エラーが発生していないことは、FCSによって保証されるためである。
また、図28に示した処理の変形としてステップS170でFCSの付与をしないようにすることも考えられる。この場合、一旦エラーの生じたTLフレームは、そのエラーを有したまま伝送経路を循環してマスタノードに戻ることになる。このため、エラーフラグEDFによってエラーの発生を先のノードに伝えることは必要なくなるが、一旦エラーの生じたフレームは、ITLフレーム領域107も含めた全てのデータについて正確性が保証できなくなる。
3.4 イーサネットフレームデータの送受信
既に述べたように、オーディオネットワークシステム1においては、イーサネットフレームを、TLフレームに記載して任意のノード間で送受信できるようにしている。しかし、イーサネットフレームは、波形データと異なり、各ノードにおいて非同期に、随時送信の要求が生じるものである。このため、イーサネットフレームについては、波形データの場合とは異なる送受信制御の機能を設けている。
次に、この点について説明する。なお、以下に説明する処理及び動作は、マスタノードとスレーブノードに共通のものである。
まず、音響信号処理装置2において、送信するイーサネットフレームを生成し、また受信したイーサネットフレームを受け取るのは、ネットワークI/Fカード215のMAC処理部14である。そして、制御部40を始めとするネットワークI/Fカード215の各部は、その送受信を仲介するという位置づけになる。
ここで、イーサネットフレームの送受信は、送信側ではネットワーク内の全ての装置にフレームを送信し、受信側で、自装置宛でないイーサネットフレームを受信した場合には読み捨てる、という処理を行うことになるので、本実施形態の送受信制御もこれに沿ったものとしている。ただし、自装置宛でないフレームを読み捨てるのは、MAC処理部14が行う処理であり、ネットワークI/Fカード215の制御部40は、適切に送信されてきた全てのMAC処理部14に渡す。
すなわち、制御部40が行うのはイーサネットの物理層(PHY)に相当する処理であり、この項でいう「上位層」は、MAC層の処理を行うMAC処理部14を指す。本体側のCPU201は、さらに上位の層ということになる。
従って、MAC処理部14自体も、CPU201からのデータ(IPパケット等)送信要求に応じてそのデータを送信するためのイーサネットフレームを生成したり、自ノード宛のイーサネットフレームから必要なデータを取り出してCPU201に渡したりする処理を行う。
ここで、以上のようなイーサネットフレームの送受信を行うために制御部40のCPUが実行する処理について説明する。
まず、図30に、制御部40のCPUが上位層から送信すべきイーサネットフレームを受け取った場合に実行する処理のフローチャートを示す。
制御部40のCPUは、上位層である本体側のCPU201から送信すべきイーサネットフレームを受け取ると、図30に示す処理を開始する。そしてまず、受け取ったイーサネットフレームのデータをTLデータ送信バッファ17に書き込む(S191)。
その後、書き込んだバッファに最大フレームサイズ分の空き領域が残っていない場合には(S192)、これ以上イーサネットフレームを受け取ってしまうと適切に処理できないため、上位層に転送中断を指示して(S193)処理を終了する。空き領域があった場合には、そのまま処理を終了する。
以上の処理により、制御部40のCPUは、上位層から受け取ったイーサネットフレームを、送信待機状態にすることができる。なお、上位層に指示した転送中断は、TLデータ送信バッファ17の容量が十分確保できた時点で、適宜解除する。
次に、図31に、制御部40のCPUがTLフレームのイーサネットフレーム領域のデータを読み込んだ場合に実行する処理のフローチャートを示す。なお、ここではこの処理を制御部40のCPUが実行するとして説明するが、TLフレーム受信部11やTLフレーム送信部18のハードウェアに一部を分担させてもよい。
制御部40のCPUは、図27のステップS136又は図28のステップS164の処理においてTLフレーム100のイーサネットフレーム領域106のデータを読み出した場合、図31に示す処理を開始する。
そして、まず読み込んだデータに、送信元IDとして何が記載されているかを判別する(S201)。まずは、フリートークン,自ノードID,その他の区別ができればよい。
このうちフリートークンは、上述のように、TLフレーム100のイーサネットフレーム領域106が現在使用されておらず、イーサネットフレームの送信を希望するノードがイーサネットフレーム領域106にデータを書き込んでもよいことを示すデータである。そして、このフリートークンは、本実施形態では送信元IDの特定の値(例えば「0」)として書き込むようにしている。その他は、通常は他ノードのIDであるが、データの記載されていたTLフレームが破損していた場合には、全く意味のないデータとなっている場合もある。
そして、ステップS201でフリートークンであった場合、取り込んだデータはイーサネットフレームのデータではないため、取り込んだデータを廃棄する(S202)。また、自ノードにイーサネットフレームの送信権が渡されたことがわかるため、イーサネットフレームの送信に関するステップS203以下の処理に進む。
この処理においては、TLデータ送信バッファ17に送信すべきデータがあれば(S203)、自ノードを通過中のTLフレーム100のイーサネットフレーム領域106に対して送信すべきデータの書き込みを行う。また、イーサネットフレームの送信は、図2,図3を用いて説明した通り、フレームをブロックに分割して行い、1つのTLフレームに対しては1ブロック分のデータを書き込む。
より具体的には、イーサネットフレームを送信中(一部のブロックのみ送信した状態)であれば(S204)、送信中のフレームの次のブロックのデータを準備して(S205)、そのブロックのデータをイーサネットフレーム領域106に書き込む(S206)。なお、ブロックの準備とは、イーサネットフレームのデータのうち1ブロック分を切り取り、図3(b)に示したようにブロック数,ブロック番号等のデータを付して、イーサネットフレーム領域106に書き込む形式のデータを作成することを指す。
ステップS204で送信中でなければ(新しいイーサネットフレームの送信をこれから開始する状態であれば)、送信するフレームとその送信に要するブロック数を特定し(S207)、送信するフレームの第1ブロックを準備して(S208)、そのブロックのデータをイーサネットフレーム領域106に書き込む(S206)。
いずれの場合も、ステップS206の後、処理を終了する。
また、ステップS201で自ノードIDであった場合、取り込んだデータは、伝送経路を1周して戻ってきた、自ノードが前回書き込んで送信したデータであると考えられる。そこで、データのブロック番号や内容を参照し、このことが確認できた場合(S209)、取り込んだデータは他ノードから送信されてきたイーサネットフレームのデータではないため、取り込んだデータを廃棄する(S210)。またここでは、前回イーサネットフレーム領域106に書き込みを行ったノードは、イーサネットフレーム1つ分のデータの送信を完了するまで送信権を維持できるようにしているため、この場合も、イーサネットフレームの送信に関するステップS211以下の処理に進む。
この処理においては、送信中のイーサネットフレームにまだ送信していないブロックがあれば(S211)、送信中のフレームの次のブロックのデータを準備して(S212)、そのブロックのデータを、自ノードを通過中のTLフレーム100のイーサネットフレーム領域106に書き込み(S213)、処理を終了する。
また、全ブロックの送信が完了していれば、フリートークンをそのイーサネットフレーム領域106に書き込んで(S214)、送信権を他の装置に渡すと共に、上位層にフレームの送信完了を通知して(S215)、処理を終了する。
また、ステップS209でNOであった場合、イーサネットフレームの送信にエラーが生じたことが考えられる。そこで、エラー処理(S216)を行う。この処理としては、例えば、現在送信中のイーサネットフレームの送信を中止し、エラーの発生を上位層及びシステム内の全ノードに通知することが考えられる。この通知は、TLフレーム100のイーサネットフレーム領域106に、所定フォーマットの無効データを書き込んで送信することにより、行うことができる。
なお、エラーが発生した場合のイーサネットフレームの再送信は、ネットワークI/Fカード215の側で自動的には行わず、必要であれば上位層からネットワークI/Fカード215に要求する。
また、ステップS201でその他であった場合、処理は図32のステップS217に進む。この場合、取り込んだデータは、他ノードから送信されてきたイーサネットフレームのデータであると考えられるため、イーサネットフレームの受信に関する処理を行う。
そしてまず、取り込んだデータのブロック欠落有無を確認する(S217)。この処理は、送信元毎に、ブロックを番号順に受け取っていることを確認するものである。複数の送信元からのデータを交互に受け取ったとしても送信元毎に見たときに番号順になっていればよい。
そして、ブロックの欠落がなければ(S218)、取り込んだブロックのフレームデータをTLデータ受信バッファ13に書き込む(S219)。この時に書き込むのは、読み込んだイーサネットフレーム領域106のデータのうち、連結するとイーサネットフレームになるフレームデータの部分のみでよく、ブロック数やブロック番号等のデータは、欠落確認のために記憶しておけば、TLデータ受信バッファ13に書き込む必要はない。末尾に空き領域がある場合も、その部分のデータは蓄積不要である。なお、複数の送信元からのデータが混在する場合、データは送信元毎に分けて記憶させるものとする。
そして、ステップS219の書き込みにより、TLデータ受信バッファ13に1つのイーサネットフレームについて全ブロックのデータが揃った場合には(S220)、蓄積した各ブロックのデータを連結して得られるイーサネットフレームのデータを上位層に出力し(S221)、処理を終了する(図31参照)。揃っていない場合には、そのまま処理を終了する。
また、ステップS218で欠落があった場合には、データの送信に不具合があったとみなし、それまでにTLデータ受信バッファに蓄積したデータをクリアする(S222)。このとき、データの送信元が特定できるのであれば、その送信元からのデータのみクリアするようにしてもよい。また、取り込んだデータが、図31のステップS216で書き込まれた無効データであったり、取り込んだデータにつき、ノードIDがシステム内のノードのものでなかったり、データが全く意味不明なものであったりした場合にも、ステップS218でNOとし、そのデータをクリアする。
また、ステップS222の後、スレーブノードはそのまま処理を終了するが、マスタノードにおいては、エラー処理を行い(S223)、通信の状況を確認する。この処理は、例えば、テストデータをイーサネットフレーム領域106に書き込んで送信し、これが正常に戻ってくることを確認するものである。そして、正常に戻ってきた場合には、エラーは一時的なものであったと認識し、イーサネットフレーム領域106にフリートークンを書き込んで、再度イーサネットフレーム領域106の利用が可能な状態にする。
オーディオネットワークシステム1においては、各装置が以上の処理を実行することにより、イーサネットフレームの送信権を各装置間で適切に調停し、TLフレーム100のイーサネットフレーム領域106を用いたノード間のイーサネットフレーム送受信を行うことができる。
なお、図21,22を用いて説明した接続の切断等の理由により、イーサネットフレーム領域106にデータを書き込んだノードがシステムから除外されてしまうことも考えられる。そしてこの場合、図31のステップS201で、システム内に送信元IDが自ノードIDであると判断するノードがいないため、どのノードもイーサネットフレーム領域106の書き換えをしない状態になってしまう。
このような事態に対処するため、例えばマスタノードが、送信元IDをトポロジーテーブルの内容と照合し、送信元IDがシステム内のノードのMACアドレスでない場合、イーサネットフレーム領域106のデータを廃棄してフリートークンを書き込んでしまうようにしてもよい。このようにすれば、イーサネットフレーム領域106にデータを書き込んだノードがシステムから除外された場合に、速やかにイーサネットフレーム領域106を解放することができる。
ステップS223のエラー処理によってもイーサネットフレーム領域106の解放は可能であるが、この場合、同じデータを2度読み出したことを確認した上でテストデータの送受信確認を行うため、トポロジーテーブルを確認する場合に比べ、開放に時間がかかる。
また、図31の例では、各ノードは、一旦データの送信を開始すると、1フレーム分のデータの送信が完了するまで送信権を維持できるようにしていた。しかし、他の調停アルゴリズムを採用することも考えられる。例えば、1ブロック送信する毎にフリートークンを書き込んで次のノードに送信権を委譲したり、逆に、複数フレームであっても必要なデータを全て送信するまで送信権を維持できる等である。もちろん、その他にも種々のアルゴリズムが考えられる。
また、イーサネットフレーム領域を複数に分割し、領域毎に独立にフリートークンを用意して送信権を調停できるようにしてもよい。この場合、図31のステップS215における送信完了の通知は、全ての領域についてデータの送信完了が確認できた場合に行う。
また、受信してTLデータ受信バッファ13に書き込んだデータについて、所定時間内に全ブロックのデータが揃わなかった場合、通信エラーとみなして、それまでに受信したデータをクリアするようにしてもよい。
4.変形例
以上で実施形態の説明を終了するが、装置の構成、データの構成、具体的な処理内容等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、1サンプリング周期に1つのTLフレームを循環させることは必須ではなく、1サンプリング周期に複数のTLフレームを循環させたり、複数サンプリング周期につき1つのTLフレームを循環させ、そこに複数サンプリング周期分の波形データを記載することも考えられる。
また、1サンプリング周期に複数のTLフレームを循環させる場合において、フリートークンを用いたイーサネットフレーム領域への書き込み/読み出し制御は、サンプリング周期内の各TLフレームについて独立に行うようにするとよい。この場合、例えば、あるサンプリング周期の1番目のTLフレームと、2番目の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フレーム送信部、31,33…第1,第2の受信I/F、32,34…第2,第1の送信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…折り返しライン