Skip to content

AkiyukiOkayasu/adat_rx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

151 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ADAT transceiver

Docs

ADAT光入力をデコードして24bit PCMを出力、または24bit PCMをADATフレームにエンコードして送信するVeryl RTL。
受信クロックは入力ADATから復元します(外部PLL不要)。

できること

  • ADAT受信と8ch 24bit PCMデコード
  • ADAT送信と8ch 24bit PCMエンコード
  • 44.1kHz / 48kHz 系での動作
  • 96kHz / 88.2kHz 入力(S/MUX有効)の受信テスト済み
  • UserBitに基づくS/MUX有効フラグ設定(送信)と検出(受信: o_smux_active
  • 外部フレームクロック入力による送信タイミング制御

導入前に知るべきこと

I/O要点

RX (Receiver)

  • 入力: i_clk(推奨50MHz), i_rst, i_adat
  • 出力: o_channels[8], o_valid, o_locked, o_frame_clk, o_smux_active
  • o_valid: 1フレーム分のPCMが揃ったタイミングで1サイクルだけアサート(o_channels[8]更新の目印)
  • o_locked: 有効なフレーム受信が継続していると判断できたときにアサート(同期の安定度の目安)
  • o_locked はフレーム受信が途切れると解除されます(目安: complete-frame未観測が約2フレーム分続く)

TX (Transmitter)

  • 入力: i_clk(50MHz), i_rst, i_frame_clk, i_channels[8], i_smux_active
  • 出力: o_adat

使用例

RX (Receiver)

inst rx: adat_rx (
    i_clk         : clk,
    i_rst         : rst,
    i_adat        : adat_in,
    o_channels    : channels_out,
    o_valid       : valid,
    o_locked      : locked,
    o_frame_clk   : frame_clk_rx,
    o_smux_active : smux_active,
);

TX (Transmitter)

import adat_pkg::AdatFamily;
inst tx: adat_tx #(
    ADAT_FAMILY: AdatFamily::F48K
) (
    i_clk         : clk,
    i_rst         : rst,
    i_frame_clk   : frame_clk_tx,
    i_channels    : channels_in,
    i_smux_active : smux_active,
    o_adat        : adat_out,
);

開発者向け(任意)

Verylには組み込みテスト実行機能があり、RTL変更時の回帰確認に使えます。

テスト実行

veryl test

波形確認

veryl test --wave
surfer src/tb_adat_rx.fst

ドキュメント

About

ADAT Receiver RTL

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors