Hamzao › プローブ › Digital Audioの伝送について1(S/PDIF)


当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

2023年10月1日から始まる景品表示法第5条第3号の規定に基づく、「一般消費者が事業者の表示であることを判別することが困難な表示」に対する消費者庁の規制実地に伴う案内です。

当サイトにはステルスマーケティングに該当する記事は含まれていないと思います。ただし、消費者庁は世の中にはステルスマーケティング記事があふれており、判別が困難だから、広告主と利害関係がある全部の記事に広告とわかる表記をつけるようにと通達を出しました。

当サイトにも、商品紹介やサービスについて一部アフィリエイトプログラムを利用した記事が残っており、規制の対象になる記事が含まれています。

プローブとしては、当ブログサイト運営のモチベーションはすでに無く放置サイト状態が続いており、サイト閉鎖か個別対応の二択になっています、一部でまだアクセスされる記事もあり、個人的にも歴史を感じたりと、サイト閉鎖がもったいないかなと思い、そのまま残しています。

なお、プローブは掲載費用がかからないHamaZoブログサービス上で公開しています。ブログ内にHamaZo運営元による広告表示が含まれていますが、該当広告に対してプローブが出来ることは有料プランへの切替しかありません。

HamzaZoにより自動表示される、Google等による広告画像にはPRという表示が付いているので規制対応がされています。
記事を書いたプローブとは、無料でブログサイトを立ち上げる利害以外に受け取る物はないため記事の内容との利害関係はありませんが、間際らしいたいめ伝えることにしました。

なおこの告知は、過剰告知であり、「一般消費者が事業者の表示であることを判別することが困難な表示」では、「広告」「PR」および、「当サイトではアフィリエイトプログラムを利用して商品を紹介しています。」といった閲覧者が広告と認識できる表示を、記事を読む閲覧者の目に必ずとまる「ファーストビュー」等に表示するだけで良いことになっております。

お手数おかけしますが、怠け者のプローブに変わり、このブログに書かれている全ての記事は広告という認識で疑って閲覧する行動をよろしくお願いします。

告知日:2023年9月28日
プローブ運営管理者より

Digital Audioの伝送について1(S/PDIF)

2009年04月10日

S/PDIFのフォーマット

今回は、CDプレイヤーやパソコンなどについている光端子の信号フォーマットについて、ちょっと調べてみました。これを見れば、オーディオ光端子からの信号を作ったり解読できるようになるかもしれません。(わざわざやらなくても、専用の石使えば良いとは、言わないでください。今後パソコンのWaveデータを正確にS/PDIFに乗せ、CDプレイヤーと変わらない出力を出すおもちゃと作るための一環です。)

出張で東京に行きついでに、国立西洋美術館のルーブル美術館展に行ってきました。人が少なくゆっくり見ることが出来ました。行きたい方は今がチャンスかも。

光端子についての長々しいのは、追記に

 

はじめに

前に、測定器の校正に使う超正確なDACにCD-ROMから取出したWaveデータを再生して遊びました。パソコンの光端子からの信号フォーマットが分らなかったため、DACに合わせたWaveデータを直接DACのバッファに送りました。パソコンのオーディオ規格をみると、AC'97よりはマシだろうけど、HD Audioコーデックが、内部のミキサーなどでWaveデータを変えていそうなので。Waveデータを直接、一般的オーディオ端子で使われているS/PDIFに正確に乗せることが出来たら、普通のCDプレイヤーで再生したのと変わらなくなるのではと、期待はしています。

全体の流れとしては、パソコンのWaveデータをS/PDIFで出力するおもちゃと、本当にパソコンの光端子からのデータは、どこがおかしくなっているのかを検証しようかと思います。とりあえず、今回はその一環としてS/PDIFについて調べたことを書きます。例の如く、間違いも多いだろうと思え鵜呑みにせず『IEC 60958-3』の原書を参照してください。なにぶん、原書を買う気になれなかったので。書籍や色々なところの知識を総合して載せました。

S/PDIFの仕様書

信号フォーマットを調べていったところ、国際電気標準会議で決まっている事がわかりました。「S/PDIF」は、「Sony/Phillips Digital Interface」の頭文字だそうです。 『IEC 60958-3』に、民製と業務用のCDプレイヤー等から出力される信号の規格が定められています。厳密には、S/PDIFのプロトコルが記載されています。

また、DVDプレイヤーなどについている光出力も同じ規格だと思ったのですが、AC-3やDTSなど、圧縮音声データは『S/PDIF Codec Audio』として、別の『IEC 61937』に定められているそうです。

信号フォーマット

S/PDIFのフォーマット

まず、全体で見るとFrameが192個で1ブロックとなります。1つのFrameの時間は、サンプリング周波数と同じ時間です。つまり1フレームが、44.1kHzの時、約22.68μsとなります。一区切り全部で、4.35msの時間がかかります。最初に信号を受信してから、4.35ms後までは、受信機は何のデータを送られているのかが分りません。DACが正確な信号を再生するには、8.7msの時間がかかることになります。つまり、受信信号が安定するまで10msぐらいはデータを捨てなければ、いけません。(Audio信号のヘッダについて見ていない場合は関係ありません。)

1つのFrameには、Sub Frameが2つあります。CDなどからの信号では、左音声と右音声の各1サンプルが入っています。これで、同時にLとRの音を出すことができます。

Sub Frameは、プリアンプル(4bit)、予備(4bit)、オーディオデータ(20bit)、制御信号(4bit)の、合計32bitとなります。FrameはSub Frameが2つあるので64bitとなります。

ブロックはFrameが順番に192個集まっり、制御信号として192bit持ちます。

S/PDIFのbit配列ルール(BMCエンコード)

光端子からの赤い光を見たことがある人もいるかもしれません。音量を出してないのになぜ光っているのか疑問になったことはありませんか?そのわけが分ります。

BMC

S/PDIFでは、1bitを2bitで表すバイフェーズマーク方式を利用しています。BMC(Biphase Marck Code)と言います。BMCでは2bitで1つの意味になり、LやHが2回以上連続してはいけないと言うルールがあります。図の、縦が直前の状態がHigの場合とLowの場合で、横が示す値です。bitがGndレベル(消灯)の時Lowと言いLと表します。bitがHigレベル(点灯)の時Higと良いHと表します。

直前のbitがLの場合、1を示すとき2bit使いHLとなり、0を示すときHHとなります。

直前のbitがHの場合、1を示すとき2bit使いLHとなり、0を示すときLLとなります。

この変換方式によって、LとHを読み替えても(論理が反転しても)1と0を正確に見分けることが出来ます。また、3bit目にはLとHが必ず入れ替わるため、LやHが連続にならず断線やショートの判定も出来るメリットがあります。つまり、消灯しっぱなしになりません。細かく見ると点滅を繰り返し、人間が見ると点灯しっぱなしに見えます。

例では、BMCでの、HL HH LH LLを、NRZに戻したとき、H L H L で値が、1 0 1 0になることを表した波形です。

同期の取り方(Sync Code)

Frameの周期は、44.1kHzや48kHzなど同期しながら混ぜて使うことが出来ません。受信するためには、信号が44.1kHzで来るかその他なのかを判別するか設定して合わせた後、初めて同期を取ることが出来ます。周期を変えるときは、同期を一度外す必要があります。

ブロックの始めにある「Frame」の「SubFrame」は「B」から始まります。つまり、「B」がスタートビットとなっているのです。この、BやMやWの事をSync Code(プリアンプル)と言います。

BMW

Sync Codeだけは、BMCエンコードではないのです。ちなみに、BMCっぽく変換すると、Bは0110で、Mは0101で、Wは0110となりますが、BMCのルールを違反をしています。LかHが3回連続しているのです。

受信機は、同期を取るためにまず、3回LかHが繰り返される場所を探します。見つかったら、BかMかWを判定して、信号を変換し始めます。

まじめに作られた受信機は、MかWを見つけたら、Bが出てくるまでまち、Bを発見してから、192個のFrameを受信して、データの内容を確認します。その後データを処理し始めます。適当な受信機は、BかMの時はLeft、WはRightとして、信号の内容を確認せずDACにデータを渡します。

なぜブロックは、Frameが192個なのか

1ブロックは192個のFrameから成り立っています。最初が「B」で始まるFrame#0から順番にFrame#191まで、各Frameに1bitずつデータが入っており、192個集めると一つのデータになるよう決まっています。図はSubFrameの概要です。

SabForme

図の中のSyncは、前に説明した通りです。最初のBitをb0としてb31まで順番にbitに番号を振ってあります。とりあえず、Audio Sampleは飛ばして、制御信号となる「V,U,C,P」に着目します。

V (Validity)b28
SubFrameのAudioSampleが有効(0:L)か無効(1:H)を表します。CDなどの読み取りエラーなどで、最初からこれ間違っていますから無視してと宣言するためのbit
U (User Data)b29
ユーザーが自由に使用できます。CDプレイヤーに中には、Sub-Qデータ(CDに記録された先頭からの時間情報、曲内での時間情報など)で使われています。CDの中では1/75秒の精度で計られています。
C (Channel Status)b30
AudioSampleデータやFrameに関する、データ情報や著作権情報など色々な情報が載せられています。1ブロックの192bitすべてが使われているわけではなく、先頭から41bitまでの、各bitの意味が決められ使われています。残りの151bitは0でパディングされています。今後の拡張のため取ってあります(昔は30bitしか使われていませんでした)。
P (Even parity)b31
SubFrameのSyncCodeを除く、パリティー(偶数)の計算値が入っています。ここで言うパリティとは、4から31までのbitを足して2で割ったとき、0になるような値をにするためのbitです。計算で偶数になったら正確にデータが送られたと判定するために使います。もし奇数になった場合は、何処かでbitが変わったため、エラーと言うことになります。伝送中のエラー検出用のbit

1ブロックで一つの意味になるのはUとCのbitで、VとPは各SubFrameのエラーについて意味を持ちます。UとCはそれぞれ、Frameに2つあるから384bitづつあるのではないかと、思われると思いますが、一つのFrame内にある2つのSubFrameのUとCは全く同じデータが入っています。(Cについては次回説明します)

AudioSampleについて

SabForme

最初、SONYの開発者は、業務用の20bitが扱え予備で4bitつけて、24bitのデータを送れるように作りました。現在は24bitのデータを送信する機械もあります。これらの、AudioSampleの量子化量はなどは『C』に書き込まれています。CDプレイヤー専用のDACなどでは「C」ステータスは見ないものもあります。サンプリングのbit数によって、データは右詰で並び、データの開始位置が変わります。

図で見ての通り、16bitの場合、b4~b11に「0」を詰め、LSB(データの先頭)がb12から始まりb27でMSB(データ終端)となります。また、b4~b7までの4bitに、補助情報としてAUXを入れることができます(対応していない場合は受信機に無視されるだけです)。

24bitの場合は、b4からLSBが始まり~b27でMSBとなり、24bitすべてが入ります。

Cコードについて

長いので次回にします。

その他

それにしても、何でS/PDIFの情報がほとんどネットにないのだろうか、みんな専用の石使って信号フォーマットなんて無関心なんだろうか。オーディオから電子回路に興味を抱いた子供たちがちょっとかわいそう、自作のオーディオ作れないじゃん。デジタルはアナログと違ってフォーマットが分らなければ手出しが出来ないのだから。もしかして、特許の絡みなどで非公開なのだろうか。



タグ :メモ

 
Posted by プローブ at 04:46Comments(4)

この記事へのコメント

FPGAでDAIを作ろうと思ったのですがネットに全然SPDIFの情報が無くて困っていたので、非常に助かりました。
Posted by 通りすがり at 2009年10月28日 22:21
WikipediaのS/PDIFの説明の中に「データ転送時にエラーが起きた場合、誤り訂正はされるが再送は行われない。」と書かれているのですが,エラー検出はできてもエラー訂正は出来ないですよね?

確かにS/PDIFはほとんど情報がないですね。
Posted by 通りすがりその2 at 2014年08月08日 08:30
通りすがりその2さん、コメントありがとうございます。

コメントの通り民間のAudioCD等での伝送ではエラー訂正はできないと思います。
Wikipediaの「誤り訂正」については、たぶん何かの間違えか、S/PDIFは物理伝送規格とみると、IEC 60958関係のコーデックのどこかには、誤り検出訂正(ECC)を含んだデータフォーマットがあるのかもしれません。
帯域いっぱいのストリームかつ一方通行だから再送する余裕も必要性も無いという事を伝えたいのかなと感じました。

以前DolbyDigital関係の委託開発をしたとき、S/PDIFで伝送するDolbyやDTSなどは、開発ライセンスが無いと情報どころか復号回路が入ったICを入手することも難しくて大変でした。復号回路を通った後は、I2S方式でIC間の伝送をするので、コーデックなどは気にできない状態かなと思います。

古い、SPDIFが関係するICのデータシートにフォーマットが掲載されている物を見たことがあります。。。SPDIF等はFAXより複雑でギリギリ手が出せるいい教材だと思うんですがねぇ。。。
Posted by プローブプローブ at 2014年08月18日 00:14
通りすがりその2です。ご回答いただきまして有り難うございます。その昔、エラー訂正出来ないことに対して何も思わなかったのですが、一般的なパケット通信などでは普通にエラー訂正符号が付けられるので、よく見ると脆弱なシステムだなと思います。

ただ,扱っている周波数帯域がせいぜい数100kHzなので、ちゃんと作れば普通は大丈夫なんでしょうね。

DolbyやDTSは米国企業なのでまず契約ですからね...
Posted by 通りすがりその2 at 2014年08月25日 19:43
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。
 


 
削除
Digital Audioの伝送について1(S/PDIF)
    コメント(4)