ソフト S/PDIF トランスミッタ (4)

オーディオ・データに前回説明したような制御/情報ビットを加え、サブフレーム/フレーム/ブロック構造を実現した段階では、サンプリング周波数 fs の 2 ch オーディオ・データに対し 1 フレームあたり 64 ビットで構成されるので、ビット・レートとしては (64 × fs) となります。
これに BMC (Biphase Mark Code) と呼ばれる方式で変調 (符号化) し、最終的に光ファイバー同軸ケーブルへ送り出すための信号波形となります。
BMC では入力 1 ビットに出力 2 ビットを対応させますから、変調後の最終的なビット・レートは (128 × fs) となり、fs = 48 kHz に対しては
128 × 48 [kHz] = 6.144 [Mbps]
となります。
BMC (Biphase Mark Code) と 3 種のプリアンブルについての図を下に示します。

入力ビット列のビット・レートの逆数を「ビット・タイム」と呼び、「T」で表すことにします。 別の言い方をすれば、入力データの「1」や「0」が持続する (最短の) 時間ということです。
BMC では次のような規則にしたがってエンコードします。

  1. 入力ビット列のビット境界で必ず反転
  2. 入力データが「0」ならビット・タイム (1 T) の間そのまま (出力ビット列は '00' あるいは '11')
  3. 入力データが「1」ならビット・タイムの中央 (0.5 T) で反転 (出力ビット列は '10' あるいは '01')

上の BMC の図で垂直の破線で表しているのが入力データのビット境界です。 その上の 0/1 の数字は、変調後ではなく入力データの 0/1 を示しています。 出力データの変化を「波形」として表してあります。
出力波形を 2 種示してあるのは、出力データの「初期値」の 0/1 の違いによるもので、両者は互いに「論理反転」の関係にあり、この波形を復調してもとのデータを復号する場合に両者は全く同じ結果になり、等価なものです。
入力データとして「0」が連続すると、ビット境界で反転するだけなので、'00110011'... という出力ビット列となり、2 T で 1 周期、つまり 1 T 内で見れば半周期の波形となります。
入力データとして「1」が連続すると、ビット境界とビット・タイムの中央で反転するので、'01010101'... という出力ビット列となり、1 T 内で 1 周期の波形となります。
変調前の入力ビット列の「断片」のビット数が偶数でなおかつ偶数パリティ、つまり「0」の個数も「1」の個数も偶数の場合、出力ビット列は、

  • 「1 始まり」→「0 終わり」
  • 「0 始まり」→「1 終わり」

のどちらかになります。 BMC の図で例として上げたビット列もこのようになっています。
この条件を満たす出力ビット列は、単に複数個の「断片」を寄せ集めて単純に接続していくだけで、全体も BMC の規則に沿った偶数パリティのビット列となります。
また、その場合に出力ビット列内の「0」と「1」の個数が等しいので、ビット列内で信号の平均レベルを計算すると、その値は論理「0」の電圧レベルと論理「1」の電圧レベルとの相加平均となります。
それぞれの電圧レベルを -V と +V のように、絶対値が等しく、符号だけ異なる値に選べば、平均レベルはゼロ、つまり直流分がゼロとなります。
上の図の下側には 3 種のプリアンブルが示してあります。 前述のように、論理反転パターンとは等価なので、「1 始まり」パターンのみ示してあります。
0/1 の数字は、入力ビット列ではなく、出力ビット列の値です。
いずれも、BMC の「ビット境界では必ず反転」という規則を破って構成したビット・パターンとなっています。
その結果、1.5 T 幅の 3 連続「0」や 3 連続「1」というパターンが現れ、これは普通のデータを BMC 符号化したのでは決して出現しないパターンとなっています。
この「特徴」を検出して、受信側は「同期」を取ります。
いずれのプリアンブルでも、(「1 始まり」パターンでは) 一番最初に 1.5 T 幅の 3 連続「1」が出現しています。
プリアンブルはサブフレームの先頭に位置していますから、この 1.5 T 検出でサブフレームの開始位置が分かります。
右チャネルを表す 'W' では、通常とエッジ位置の違う 1 T 幅のパターンはありますが、1.5 T パターンは先頭のひとつのみです。
左チャネルを表す 'B' と 'M' では、もうひとつ、1.5 T 幅の 3 連続「0」パターンが含まれています。
ブロック先頭 (フレーム 0) を表す 'B' では間に '01' が挟まり、それ以外のフレームを表す 'M' では、ふたつの 1.5 T パターンが連続しています。
この 'M' のパターンは特徴的で目立つので、S/PDIF 信号をオシロで観測すると、すぐに見つけることができます。