Skip to content

Commit 8d95103

Browse files
refactor(tx): replace SAMPLE_RATE with ADAT_FAMILY enum
1 parent 8aaa544 commit 8d95103

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

src/adat_tx.veryl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/// - `i_frame_clk`立ち上がりをトリガに256bit ADATフレームを構築
88
/// 2. `tx_bit_serializer`
99
/// - 256bitフレームをMSB-firstでシリアル化
10-
/// - `SAMPLE_RATE`に応じて44.1kHz/48kHzのビット周期を選択
10+
/// - `ADAT_FAMILY`に応じて44.1kHz/48kHzのビット周期を選択
1111
/// 3. `tx_nrzi_encoder`
1212
/// - シリアルビットをNRZIへ変換して`o_adat`へ出力
1313
///
@@ -27,8 +27,8 @@
2727
pub module adat_tx #(
2828
/// システムクロック周波数 [Hz]
2929
param CLK_FREQ: u32 = 50_000_000,
30-
/// サンプルレート [Hz] (44.1kHz / 48kHz)
31-
param SAMPLE_RATE: u32 = 48000,
30+
/// ADATビットレートファミリー (0=F44K1, 1=F48K)
31+
param ADAT_FAMILY: logic<1> = 1'b1,
3232
) (
3333
/// システムクロック (50MHz)
3434
i_clk: input clock,
@@ -41,13 +41,13 @@ pub module adat_tx #(
4141
/// User bits入力(S/MUXフラグ含む)
4242
i_user_bits: input logic<4>,
4343
/// ADAT NRZI出力
44-
o_adat: output logic,
44+
o_adat: output logic,
4545
) {
46-
/// ADATビットレートファミリー
46+
/// ADATビットレートファミリー (ドキュメンテーション用)
4747
///
4848
/// 物理ビットレートは2種類のみ:
49-
/// - F44K1: 44.1kHz × 256 = 11,289,600 bps
50-
/// - F48K: 48kHz × 256 = 12,288,000 bps
49+
/// - 0 (F44K1): 44.1kHz × 256 = 11,289,600 bps
50+
/// - 1 (F48K): 48kHz × 256 = 12,288,000 bps
5151
enum AdatFamily: logic {
5252
F44K1 = 1'b0,
5353
F48K = 1'b1,
@@ -93,7 +93,7 @@ pub module adat_tx #(
9393
i_rst : i_rst ,
9494
i_frame_data : frame_data ,
9595
i_load : frame_ready ,
96-
i_sample_rate: SAMPLE_RATE ,
96+
i_family : ADAT_FAMILY ,
9797
o_bit : serial_bit ,
9898
o_bit_valid : serial_bit_valid ,
9999
o_frame_done : serial_frame_done,

src/tx_bit_serializer.veryl

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/// TXビットシリアライザ
22
///
33
/// 256bitフレームをMSB-first(bit 255 → bit 0)でシリアル出力する。
4-
/// ビットタイミングは`SAMPLE_RATE * 256`に基づく分数補間を使用
4+
/// ビットタイミングは`ADAT_FAMILY`に基づいて44.1kHz/48kHzの周期を選択
55
/// 48kHzで約4.07 clk/bit, 44.1kHzで約4.46 clk/bit。
66
///
77
/// ## Usage
@@ -20,15 +20,24 @@ module tx_bit_serializer #(
2020
i_frame_data: input logic<256>,
2121
/// フレームロード要求
2222
i_load: input logic,
23-
/// サンプルレート (44.1kHz / 48kHz)
24-
i_sample_rate: input logic<32>,
23+
/// ADATビットレートファミリー (0=F44K1, 1=F48K)
24+
i_family: input logic<1>,
2525
/// シリアルビット出力
2626
o_bit: output logic,
2727
/// ビット出力有効ストローブ
2828
o_bit_valid: output logic,
2929
/// フレーム送信完了パルス
3030
o_frame_done: output logic,
3131
) {
32+
/// ADATビットレートファミリー (ドキュメンテーション用)
33+
///
34+
/// 物理ビットレートは2種類のみ:
35+
/// - 0 (F44K1): 44.1kHz × 256 = 11,289,600 bps
36+
/// - 1 (F48K): 48kHz × 256 = 12,288,000 bps
37+
enum AdatFamily: logic {
38+
F44K1 = 1'b0,
39+
F48K = 1'b1,
40+
}
3241
// ビットレート
3342
var bit_rate: logic<40>;
3443
// クロック周波数(演算用拡張幅)
@@ -56,15 +65,14 @@ module tx_bit_serializer #(
5665
assign o_bit_valid = r_bit_valid;
5766
assign o_frame_done = r_frame_done;
5867

59-
// サンプルレートに応じたビットレート選択
60-
// 物理ビットレートはS/MUX時でも変わらない:
61-
// - 44.1kHz系 (44.1k, 88.2k, 176.4k): 11,289,600 bps
62-
// - 48kHz系 (48k, 96k, 192k): 12,288,000 bps
68+
// ADATファミリーに応じたビットレート選択
69+
// 物理ビットレートは2種類のみ:
70+
// - F44K1 (0): 11,289,600 bps
71+
// - F48K (1): 12,288,000 bps
6372
always_comb {
64-
if i_sample_rate == 32'd44_100 || i_sample_rate == 32'd88_200 || i_sample_rate == 32'd176_400 {
73+
if i_family == 1'b0 {
6574
bit_rate = 40'd11_289_600;
6675
} else {
67-
// 48kHz系 (48k, 96k, 192k) およびデフォルト
6876
bit_rate = 40'd12_288_000;
6977
}
7078
clk_freq = CLK_FREQ;

0 commit comments

Comments
 (0)