Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

adat_rx

ADATレシーバ トップモジュール

ADAT光入力から8チャンネル24ビットPCMをデコードする。 クロックはADAT信号から自動復元される(外部PLLは不要)。

対応サンプルレート

  • 48kHz: 8チャンネル
  • 96kHz: 4チャンネル (S/MUX2)
  • 192kHz: 2チャンネル (S/MUX4)

S/MUX時のチャンネルマッピング(利用側で実装)

本モジュールは o_channels[8] を物理スロットとして出力し、S/MUXの論理チャンネル再構成は行わない。

  • S/MUX2 (96kHz / 88.2kHz, 4ch)
    • Logical CH0 <= o_channels[0] + o_channels[1]
    • Logical CH1 <= o_channels[2] + o_channels[3]
    • Logical CH2 <= o_channels[4] + o_channels[5]
    • Logical CH3 <= o_channels[6] + o_channels[7]
  • S/MUX4 (192kHz / 176.4kHz, 2ch)
    • Logical CH0 <= o_channels[0] + o_channels[1] + o_channels[2] + o_channels[3]
    • Logical CH1 <= o_channels[4] + o_channels[5] + o_channels[6] + o_channels[7]

時間順は、各Logical CH内では添字の小さいスロットが先のサンプル。

ADATフレーム構造 (256 bits @ 48kHz = 20.83us)

5ビットニブル単位で構成。各ニブル: [4bit data][1bit separator=1]

シリアル伝送順とビット有意性の定義

  • シリアル伝送順: フレーム先頭から順方向(build_frame[255]build_frame[0])。
  • 5bitニブルの伝送順: D23..D20 のように data部は MSB-first。
  • PCM 24bit語のビット有意性: o_channels[x][23] がMSB、o_channels[x][0] がLSB。
  • したがって nibble 列 D23..D20, D19..D16, ... D3..D023:20, 19:16, ... 3:0 にそのまま対応する。

詳細構成(5ビットニブル単位)

ビット内容説明
0-100000000000 + 1SYNC: 10ビットの0(NRZIで無遷移) + separator=1
11-15U3-U0 + 1User nibble: User bits[3:0] + separator
16-20D23-D20 + 1CH0 nibble0: audio[23:20] + separator
21-25D19-D16 + 1CH0 nibble1: audio[19:16] + separator
26-30D15-D12 + 1CH0 nibble2: audio[15:12] + separator
31-35D11-D8 + 1CH0 nibble3: audio[11:8] + separator
36-40D7-D4 + 1CH0 nibble4: audio[7:4] + separator
41-45D3-D0 + 1CH0 nibble5: audio[3:0] + separator
46-75...CH1 (上記と同じ6 nibbles)
......CH2-CH7 (各30ビット)

セパレーターの役割

  • 各5ビットニブルの最後に「1」が配置される
  • これによりNRZIエンコーディングで必ず遷移が発生
  • 最大5ビット連続で無遷移になるのを防ぎ、同期を維持

使用例

inst adat: adat_rx (
    i_clk     : sys_clk_50mhz,
    i_rst     : reset,
    i_adat    : toslink_in,
    o_channels: audio_out,
    o_frame_clk: frame_clk,
);

タイミング

  • 推奨クロック: 50MHz
  • ADAT入力: TOSLINK光→電気変換済み信号

Ports


i_clk input clock システムクロック (50MHz推奨)
i_rst input reset
i_adat input logic ADAT入力 (光→電気変換済み)
o_frame_clk output logic ADATフレーム周期のクロック出力(sample rateではない) 通常は44.1/48kHz。 warning: S/MUX有効時でも44.1kHz/48kHzが出力されることに注意
o_smux_active output logic UserBit2に基づいて検出されたS/MUX有効状態 (1: enabled, 0: disabled) warning: S/MUX2とS/MUX4の判別は原理的に不可能なので、あくまでS/MUXが有効or無効のみを示す
o_channels output logic<24> [8] 8チャンネルPCMデータ出力(ADAT物理スロット) warning: S/MUX有効時の論理チャンネル再構成は利用側の実装が必要
o_valid output logic データ有効信号
o_locked output logic 同期ロック状態