スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

シンク・アシンク

10/12/30初稿

 “USB-DDC(DAC)は「アシンクロナスモード」に限る”って意見は鉄板化しつつあるようですね。かくいう私もアシンクロナスモードの大ファン(笑)ですが、どうにも解せない部分もあります。
 だって「ア・シンクロ=非同期」なのです。DDCユニット側でPC側(USBホスト側)のクロックとは独立したクロックを持ち、精度を自分で高めるぞってことなんですが、非同期というか精度が微妙に違うということは送信(Auidoデータとしての)データレートと受信してAudio-dataとして更に送出する際のデータレートが不一致になるということで、サンプルの過不足が発生する可能性はどうなっちゃうんでしょう?


■どれがアシンクロナスモード?

 さて、まずは該当機器を見てみます。
 「アシンクロナスモード」を明示的に採用しているDDC(DAC)ユニットを、私は半年前くらいまでPhaseTech社の「HD-7A」とRATOC社の「RAL-2496」「RAL-24192」、Ayre社「QB-9」くらいしか知りませんでした。dCS社の「Debussy DAC」ってものそうらしい。
 ですが、10年秋冬から「USB Audio Class2」登場と共に続々登場ってカンジですかね。

http://www.phase-tech.com/digital/technicalreport_HD-7A.html
http://www.rexpccard.co.jp/products/subpage/ral2496ut1.html
http://www.ratocsystems.com/products/subpage/ral24192ut1.html
http://www.dynamicaudio.jp/file/090307/QB-9_USB.pdf
http://www.axiss.co.jp/Ayre/Ayre_Async_Tech.pdf(QB-9技術解説)

   

 以下はClass2対応。

   

 ちなみに、「USB Audio Class2」とは、2496止まりだったClass1を拡張する転送モードです。必要な転送レートが上がるので「USB2.0」が必須となり、Windowsでは標準対応していないためドライバが必要になります。念のためですが、「Class2」と「USB2.0」をごっちゃにしないようにご注意を。
 また、標準規格なのか独自方式なのかは不明ですが、Class1でもアシンクロナス対応している機器がありますので、アシンクロナスモードはClass2の専売特許というワケでもなさそうです。

 ちょっと悩ましい製品もあります。
 明示はしていないけど、ONKYO製「SE-U55SX」もUSBじゃない独自クロックと謳ってるから「アシンクロナスモード」じゃないかと思ってるんですけど… 実際44.1kHzの256倍=11.289MHz、48kHzの512倍=24.576MHzってふたつ水晶載せてるし。前身の55GXではF/WのUpdateしないとVista対応にならなかったところもアダプティブっぽくない。
 と思っていたら、ONKYO自身が「アシンクロナスモード」だと宣言?する記事(*)がでました。
 じゃあなんで少なくともSE-U55SX2ではそう謳わないのか若干疑問ですけど。

*:http://av.watch.impress.co.jp/docs/topic/20101227_417603.html

 それから、RATOC社の無線USB-DAC「REX-Link2EX」も「無線通信エラーしたら再送」「バッファ搭載」「独自に作成したクロック」とのことなので、少なくとも一般的に言うところの「アダプティブモード」じゃないハズ。

http://www.ratocsystems.com/products/subpage/audio/st_rexlink2ex.html
http://blog.ratocsystems.com/pcaudio/2007/10/29pcrexlink2exw_ad0d.html

      


■アシンクロナスモードって(いわゆる)フロー制御してるの? してないの?

 「アシンクロナスモード」の非同期動作によるオーディオデータの過不足発生について具体的に考えてみます。
 とりあえずClass1、1フレーム周期は1msとします。
 例えば、PCクロックジェネレータの精度が20ppm、DDC側クロックの精度も20ppmとしましょう。お互い±ですので、最悪40ppmのズレが発生することになります(ppmやPCクロックジェネレータについては当Blogのジッタ考察記事をご参照ください)。
 1ppmは1/1000,000(ひゃくまんぶんのいち)です。
 ですので、例えば100sec音声データを転送した時、40ppmズレは4msとなります。つまり、4フレーム分の過不足が発生する可能性があるということです。25secに1フレームの過不足、という書き方もできます。
 送受信デバイス間で「足りないからすぐよこせ」「早すぎるからちょっとまて」といった(いわゆる)フロー制御ができるなら過不足は回避できますが、「アダプティブモード」はその機能を持っていないと理解しています(というか、そもそも過不足を発生させないためにデータレートをアダプトしてるハズですから)。
 「アシンクロナスモード」はそれが可能なようです。何故って、上記QB-9の解説に以下のような記述があるからです。

アシンクロナス・モードではUSB DACボックス内にマスターオーディオクロックが置かれます。
DACボックス内のバッファーはPCから送られてくるオーディオデータをストアします。
そして、TAS1020Bコントロールチップは、再生中バッファーに空きがでると更にオーディオデータを送り込むようPCをコントロールします。
つまり、DACの高精度固定オーディオクロックに完全同期するようにデータを取り込むことを可能とするわけです。

出典:http://www.axiss.co.jp/Ayre/Ayre_Async_Tech.pdf(QB-9技術解説)

 RATOC社長は「マイコンのプログラミングに2年もかからん(*1)」と仰ってるようですけど(笑)。
 加えて、「アシンクロナスモードでフロー制御なんかしていない(*2)」とも仰ってます。
 実際、社長のBlog記事でもオーバーフローやアンダーフローは発生することになってるし。

*1:http://av.watch.impress.co.jp/docs/series/dal/20100215_349193.html
*2:http://www.phileweb.com/interview/article/201012/22/89.html

 あれ?

 しかし、PhaseTech社の技術解説にもそのまんま「データフローエンジン」という機能の解説として以下の記載が。

一方、アシンクロナス転送ではPCからやって来るデーター量を制御するために、本線のデーターパイプラインとは別に、「フィードバック」と呼ばれる逆方向のパイプ(エンドポイント)を用意します。
このラインを使って、デバイス側のメモリーバッファが常に適量に保たれるように、PCへフィードバック制御を行います。
バッファーにデーターが増加した場合はPCへ「減らせ」、減った場合は「増やせ」といったデーターを返して、バッファーを適量に保ちます。

出典:http://www.phase-tech.com/digital/technicalreport_HD-7A.html

 さて、どっち??? Ayra社が言ってることやPhaseTech社が言ってる「フィードバック制御」と、RATOC社が言ってる「フロー制御」は別のこと? 確かに技術用語としてはストリーミングにはフロー制御の概念は普通はありませんし、リアルタイム性が不要な通常のデータ転送では「ちょっと待て」しかしないのが、普通の「フロー制御」ではありますが…
 もし社長の仰る通り誤解が蔓延しているとすると、上記の通りAyre社とPhaseTech社のせいだよきっと。

 個人的にはアイソクロナス転送において「待った」はできても「もっと」はホスト側もキチンと対応しなきゃいけないので難しいような気がします。
 「待った」は1フレーム空にするとかパスするとか一応動作をイメージできます。が、「もっと」の方は、フレーム周期を速くするなんてできないと思いますから、1フレームで送ってくるサンプル数を増やしてもらうようデバイス(DDC)側からホスト(PC)側に働きかけてネゴらなければなりません。例えば、「次のフレームでは2回分まとめて88サンプル送って頂戴」「了解」ってなネゴシエーションです。それができてる気がしないんですよね…
 何故かと言うと、QB-9やHD-7AはOS標準のドライバで動くようですから(だってドライバ添付してない)、Windowsはもともとフローだかフィードバックだかを含めたアシンクロナスモードをサポートしていることになりますけど、個人的にはMSが「もっと」にマトモに対応できるドライバを“あらかじめ”準備してたとは思えないんですよねぇ。MacOSができてるClass2をWindows7では非サポートといったあたりを見ても。
 アシンクロナスモードの規格にはないけど既存の仕組みを利用して独自制御してるってこと? dCS社は特許だって言ってるし。


■そもそも規格はどうなっているか

 え~、素人ですがちょっと見てみようかと。
 本家USB.orgのDocumentのリンクhttp://www.usb.org/developers/devclass_docs/audio10.pdfのP.19あたりにアイソクロナスの転送モードについて記載がありますが、「アシンクロナスモード」の説明は以下の通りです。

3.3.1 Asynchronous
Asynchronous isochronous audio endpoints produce or consume data at a rate that is locked either to a clock external to the USB or to a free-running internal clock.
These endpoints cannot be synchronized to a start of frame (SOF) or to any other clock in the USB domain.


 英語は全くダメですが、ざっと訳すと

アシンクロナスのエンドポイントは、USBへの外部クロックまたはFree-Runningする内部クロックにロックされるレートで、データを作り出すか消費します。エンドポイントは、フレームの始まり(SOF)、またはUSBドメインのいかなる他のクロックにも同期できません

ってところですかね。
 エンドポイントっていうのは論理デバイスみたいなカンジで見ておけばいいでしょうか。作り出すか消費するか、っていうのは前者が録音、後者が再生を意味するんだと思います。USBドメインって言うのは同時に接続されている他のUSB機器のことかなぁ。
 これだけじゃワカリマセンね(苦笑)。

 「アシンクロナスモード」以外の規格の記載ですが、

3.3.2 Synchronous
The clock system of synchronous isochronous audio endpoints can be controlled externally through SOF synchronization. Such an endpoint must do one of the following:
・ Slave its sample clock to the 1ms SOF tick.
・ Control the rate of USB SOF generation so that its data rate becomes automatically locked to SOF.


 ざっくり訳で

SOF同期でシンクロナスのエンドポイントのクロックシステムを外部的に制御できます。
そのようなエンドポイントは以下のうちのひとつに対応しなければなりません。
・そのサンプリングクロックを1msのSOFのスレーブに。
・そのデータレートが自動的にSOFにロックされるようになるように、USB SOF生成レートを制御。


てなカンジ? ほとんど語られることのない「シンクロナスモード」ですが、「SOF同期」ってことみたいですね。
 ちなみに、規格ではUSBデバイスは録音機器としても記述していますので読むとき注意です。

3.3.3 Adaptive
Adaptive isochronous audio endpoints are able to source or sink data at any rate within their operating range.
This implies that these endpoints must run an internal process that allows them to match their natural data rate to the data rate that is imposed at their interface.


 ざっくり訳:

アダプティブ方式のエンドポイントは、制御範囲内すべてのレートで、データ供給源(source)または吸収源(sink)になれます。
これは、これらのエンドポイントが、自己の自然なデータレートを、インタフェースで課されるデータレートに合わせることができる内部のプロセスを実行しなければならないことを含意します。


 「アダプティブ」はデータレートからクロック生成するモードみたいですねぇ。
 とすると、規格的に言うなら「アダプティブモード」を「1msのSOFやらフレームに同期」というふうに説明するのはやや不正確なのかも知れません。

 さらにこんな資料を発見。
http://www.usb.org/developers/presentations/pres0500/Knapen_IsoSynch.ppt
 USB2.0規格作る時に同期問題を解決するために「FeedBack」「FeedFowerd」を策定した、っていう内容のような…
 ちなみに「source」は供給源、「sink」は吸収源と読めばよいみたいです。

 ちなみにエンドポイントとかパイプとか。
http://www.picfun.com/picclub/dai12/usbtech.pdf
http://toragi.cqpub.co.jp/Portals/0/backnumber/2008/10/p136-137.pdf
http://www.kumikomi.net/archives/2004/01/02seri.php?page=15

 とりあえず現時点では謎ですね…(苦笑)


 11/10/10追記:「アシンクロナスモードはフィードバックパイプを使ってフィードバック制御している」というコメントいただいたことを付記しておきます。

 14/10/16追記:久々にRATOC社長の記事読んでたらハタと気がつきました。社長はおそらく「“フレーム”のフロー制御はしていない」と仰りたかったのですね。でも、記事で注目すべきは「非同期によるサンプルの過不足はどうなるのか」ですから、アシンクロナスモードでは「フレーム内に搭載するサンプル数をフィードバック制御で調整している」なら、そっちの説明をしていただきたかったところです。
 謎解けたぜ(笑)。



■(いわゆる)フロー制御しなくてどうする? というかどうなる?

 さて、もし「独自クロックを持つけれど(いわゆる)フロー制御をしていない」DDCが存在するなら、何らかの方法で自分のデータレートとUSBのデータレートを“マクロ的に”一致させる必要があります。
 一例として、TIのUSB-Audioコントローラ「TUSB3200」を使用した場合の動作を考えてみます。このチップには2KBのバッファが搭載されているようですので、CD音質のデータを約500サンプル分(ステレオなので4Byte/sample)バッファできることになります。1フレームには44か45個のサンプルが入ってきますので、11フレーム程度はバッファできる計算です。バッファから読み出している限りは、データレートが不一致でもサンプルの過不足を回避することができます。
 しかし、前述した4フレーム過不足は100secの場合ですから、300secなら過不足フレーム数は12となり、上記バッファ容量では限界を越える可能性があります。実際には「過」なのか「不足」なのかは転送開始してみないと判りませんので、バッファは両方に備えて半分くらいしか使えない計算です(適応的にインテリジェントな制御しない限りは)。バッファを多く取れば回避できる時間は長くなりますが、その分応答が鈍くなっていくハズです。

 以上より、条件が悪い場合(PC側のクロックジェネレータとDDC側のクロックの精度差が40ppm程度だった場合)、このコントローラを用いたDDCでは300sec程度の連続データ受信後にバッファが尽きてサンプルの過不足現象が発生し始める可能性がある=ppm精度は音質に影響を与える可能性がある、ということになります。もしかしたら発生しているのかも。
 しかし、これは音質的には25secごとに1ms分のサンプルが連続したり欠落したりする現象になるので、いわゆるジッタによる劣化とは全く違う話です。

 試しにバイナリエディタで40~50サンプル分(約1ms分)を「直前と同じデータに上書き」「ゼロに書き換え」と(マジでシミュレートするなら書き換えじゃなくて挿入しなきゃいけませんけど簡易的に)、「バッサリ削除」してみた音楽WAVファイルを作り、書き換えたあたりに注目(注耳?)して聴いてみました。

 …私の耳ではノイズなどは聴きとれませんでした。

 1/1000秒分のサンプル過不足って、“そんなもの”なのかも知れません。

 参考までに「ゼロに書き換え」た波形をEACのtoolで表示したものを貼っておきます。

ゼロ部分


■おまけ

 10/12/27追記
 WAVファイルをバイナリエディタで加工する場合のTipsです。
 書き換えはそのままでOKですが、カットして容量が減る場合はWAVファイルヘッダが示す容量値と実態が異なってしまいます。WaveCompareは、そういうファイルの処理しようとするとヘッダを書き換えてくれます。なんとスバラシイ!


メインメニューへ
スポンサーサイト

テーマ : オーディオ
ジャンル : 趣味・実用

ERIへようこそ

Author:らかせ
 「最新記事」または「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です
・一応、拍手にコメント(非公開)付けられるようにしてあります
・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください
・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください
・引用の考え方については「007:諸事」をご参照ください
・アフィリエイトはAmazonのみです
・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

最新記事
カテゴリ
検索フォーム
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。