HDMI20协议解析_Audio_Clock_Regeneration
1.版本说明
日期 | 作者 | 版本说明 |
---|---|---|
20240918 | 风释雪 | 初始版本 |
2.概述
当通过HDMI传输音频信号时,Audio Clock Regeneration(ACR)是必须要传输的数据包之一;
HDMI传输过程中,音频采样时钟不再保留,通过TMDS时钟和音频采样时钟之间,建立关系,以此恢复音频时钟;
当音视频时钟同源时,由于具有固定的关系, 因此N/CTS会固定, 否则 N固定,CTS会小范围波动,以此平衡
音频和视频之间的波动;
强调:ACR数据包非常重要,传输异常,会导致部分专业显示器没有声音;
3.目标
FPGA 实现 HDMI2.0 TX/RX功能,生成或解析对应的Audio Clock Regeneration数据包,用于传输双通道立体声
4.协议解析
- 协议分类
- 协议格式
5.参数分析
-
整个ACR包只涉及两个参数,N和CTS;且N和CTS官方都有具体的推荐参数,但是推荐参数只能用于两种情况;第一:音视频同源;第二:音视频异步,但是前级模块增加音频采样率转换模块匹配采样速率;当音视频异步时,
HDMI协议也提供了一种标准做法,实时统计CTS的值,以一定的频率(大概每间隔CTS/次)传输; -
推荐参数如图:
-
音视频异步处理原理
-
核心公式:
128*fs = F_tmdsfreq * N / CTS
6.推荐
- 采用实时统计CTS取代固定CTS,但是N用官方参数;
- CTS传输频率要符合官方要求,重点!!
Nominally, Audio Clock Regeneration Packets with newly generated CTS values will be
transmitted at a rate of 128*fs/N. On average, the Source shall transmit CTS values at this rate
precisely. The Source shall transmit each CTS data value as close as possible to the nominal
transmission time for that value with the exception that priority must be given to Audio Sample
packets to ensure that Audio Sample Packet delivery requirements are met.
7.软件实现
reg [8 -1 : 0] HB0 = 8'h01;
reg [8 -1 : 0] HB1 = 8'h00;
reg [8 -1 : 0] HB2 = 8'h00;
reg [8 -1 : 0] PB0 = 0;
reg [8 -1 : 0] PB1 = 0;
reg [8 -1 : 0] PB2 = 0;
reg [8 -1 : 0] PB3 = 0;
reg [8 -1 : 0] PB4 = 0;
reg [8 -1 : 0] PB5 = 0;
reg [8 -1 : 0] PB6 = 0;
always @(posedge clk) begin
PB0 <= 0;
PB1 <= {4'b0000, acr_cts[19:16]};
PB2 <= acr_cts[15:8];
PB3 <= acr_cts[7:0];
PB4 <= {4'b0000, acr_n[19:16]};
PB5 <= acr_n[15:8];
PB6 <= acr_n[7:0];
end
8.参考文档
- EIA-CEA-861-D
- HDMI 1.4(1.4b/2.0)