gndless_iec60958
IEC 60958, S/PDIF, and AES3 codec and link cores for Veryl.
| Version | 0.1.0 |
|---|---|
| Repository | https://github.com/AkiyukiOkayasu/gndless-iec60958-veryl |
| License | MIT OR Apache-2.0 |
Modules
| Aes3Receiver | AES3 professional receiver |
|---|---|
| Aes3Transmitter | AES3 professional transmitter |
| SpdifReceiver | S/PDIF consumer receiver |
| SpdifTransmitter | S/PDIF consumer transmitter |
Packages
| Aes3 | AES3固有のpreambleとchannel status生成 |
|---|---|
| Spdif | S/PDIF固有の型とchannel statusコードを定義する。 |
| Types | IEC 60958共通の型とpreamble変換 |
Modules
| Aes3Receiver | AES3 professional receiver |
|---|---|
| Aes3Transmitter | AES3 professional transmitter |
| SpdifReceiver | S/PDIF consumer receiver |
| SpdifTransmitter | S/PDIF consumer transmitter |
Aes3Receiver
AES3 professional receiver
共通stereo receiverをAES3向けの公開APIとして提供する薄いラッパー
A/B subframeの組み立てとoutput backpressureの契約はSpdifReceiverのIEC60958 stereo RX timingと同じ。
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| rst | input | reset | リセット |
| cell_tick | input | logic | BMC cell進行パルス |
| line_bit | input | logic | BMC line入力 |
| line_valid | input | logic | line_bit有効 |
| sample_valid | output | logic | stereo sample出力有効 |
| sample_ready | input | logic | stereo sample受理可能 |
| left_audio | output | AudioSample | 左チャンネルPCM |
| right_audio | output | AudioSample | 右チャンネルPCM |
| left_invalid | output | bbool | 左チャンネルinvalid flag |
| right_invalid | output | bbool | 右チャンネルinvalid flag |
| left_user | output | logic | 左subframeのU bit |
| right_user | output | logic | 右subframeのU bit |
| left_status | output | logic | 左subframeのC bit |
| right_status | output | logic | 右subframeのC bit |
| block_start | output | logic | block開始パルス |
| error | output | bbool | 受信エラーフラグ |
Aes3Transmitter
AES3 professional transmitter
status mapperとblock CRCを内蔵し、AES3のC bitを自動生成する。
stereo sampleの受理、A/B subframe送信、busyの契約はSpdifTransmitterのIEC60958 stereo TX timingと同じ。
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| rst | input | reset | リセット |
| cell_tick | input | logic | BMC cell進行パルス |
| sample_valid | input | logic | stereo sample有効 |
| sample_ready | output | logic | stereo sample受理可能 |
| left_audio | input | AudioSample | 左チャンネルPCM |
| right_audio | input | AudioSample | 右チャンネルPCM |
| left_invalid | input | bbool | 左チャンネルinvalid flag |
| right_invalid | input | bbool | 右チャンネルinvalid flag |
| sample_rate | input | Types SampleRate | サンプルレート |
| channel_mode | input | Aes3 ChannelMode | AES3 channel mode |
| line_bit | output | logic | BMC line出力 |
| line_valid | output | logic | line_bit有効 |
| busy | output | logic | 送信中フラグ |
SpdifReceiver
S/PDIF consumer receiver
共通stereo receiverをS/PDIF向けの公開APIとして提供する薄いラッパー
A subframeを保持し、続くB subframeと組み合わせてstereo sampleを出力する。
sample_valid && !sample_readyの間はPCM、invalid、user、statusを保持し、line側にもbackpressureを伝えて次の完成subframeを受理しない。
block_startとerrorはイベントを示す1クロックpulseであり、stall中は保持しない。
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| rst | input | reset | リセット |
| cell_tick | input | logic | BMC cell進行パルス |
| line_bit | input | logic | BMC line入力 |
| line_valid | input | logic | line_bit有効 |
| sample_valid | output | logic | stereo sample出力有効 |
| sample_ready | input | logic | stereo sample受理可能 |
| left_audio | output | AudioSample | 左チャンネルPCM |
| right_audio | output | AudioSample | 右チャンネルPCM |
| left_invalid | output | bbool | 左チャンネルinvalid flag |
| right_invalid | output | bbool | 右チャンネルinvalid flag |
| left_user | output | logic | 左subframeのU bit |
| right_user | output | logic | 右subframeのU bit |
| left_status | output | logic | 左subframeのC bit |
| right_status | output | logic | 右subframeのC bit |
| block_start | output | logic | block開始パルス |
| error | output | bbool | 受信エラーフラグ |
SpdifTransmitter
S/PDIF consumer transmitter
PCM stereo sampleを受け取り、channel statusを自動生成してBMC lineへ出す。 channel statusの詳細設定を明示的に受け取るため、用途に応じて固定値を上位で管理できる。
sample_valid && sample_readyでstereo sampleを受理し、payloadを内部保持してA(left)、B(right)の順にsubframeを送る。B subframeを受理するまではsample_readyがLowとなり、busyはBMC送信完了までHighを含み得る。
64cellの詳細は省略し、line_valid区間として示す。
Ports
| clk | input | clock | システムクロック |
|---|---|---|---|
| rst | input | reset | リセット |
| cell_tick | input | logic | BMC cell進行パルス |
| sample_valid | input | logic | stereo sample有効 |
| sample_ready | output | logic | stereo sample受理可能 |
| left_audio | input | AudioSample | 左チャンネルPCM |
| right_audio | input | AudioSample | 右チャンネルPCM |
| left_invalid | input | bbool | 左チャンネルinvalid flag |
| right_invalid | input | bbool | 右チャンネルinvalid flag |
| left_user | input | logic | 左subframeのU bit |
| right_user | input | logic | 右subframeのU bit |
| sample_rate | input | SampleRate | 現在のサンプルレート |
| original_sample_rate | input | SampleRate | 元のサンプルレート |
| category_code | input | logic<7> | channel status category code |
| source_number | input | logic<4> | channel status source number |
| left_channel_number | input | logic<4> | 左チャンネル番号 |
| right_channel_number | input | logic<4> | 右チャンネル番号 |
| copy_permitted | input | bbool | コピー許可フラグ |
| non_audio | input | bbool | non-audioフラグ |
| emphasis | input | logic<2> | emphasis code |
| mode | input | logic<2> | channel status mode |
| clock_accuracy | input | logic<2> | クロック精度コード |
| original | input | bbool | オリジナル音源フラグ |
| line_bit | output | logic | BMC line出力 |
| line_valid | output | logic | line_bit有効 |
| busy | output | logic | 送信中フラグ |
Module Prototypes
Interfaces
Packages
| Aes3 | AES3固有のpreambleとchannel status生成 |
|---|---|
| Spdif | S/PDIF固有の型とchannel statusコードを定義する。 |
| Types | IEC 60958共通の型とpreamble変換 |
Aes3
AES3固有のpreambleとchannel status生成
Spdif
S/PDIF固有の型とchannel statusコードを定義する。 TODO: S/PDIF固有の公開APIとchannel status対応範囲を拡張する。
Types
IEC 60958共通の型とpreamble変換