上一篇文章讲到Main-link链路服务就是用来传输音视频数据的,本篇文章将具体探究一个完整的Main-link传输服务具体需要做哪些工作。
在Main-link的同步传输服务中需要明确一下问题:
- Main-Link具体传输哪些数据,数据格式应该是怎样的?
- 以多少的速率和Lane数进行传输,应该如何确定?
- Main-Link没有时钟通道,时钟如何恢复?
- 还需要进行其他的什么操作?
0.首先来看协议中对Main-Link的介绍
The isochronous transport services of the Link Layer provide the following:
• Mapping of stream data to and from the Main-Link lanes
• Packing and unpacking
• Stuffing and unstuffing
• Framing and unframing
• Inter-lane skewing and de-skewing
• Stream clock regeneration
• Insertion of main stream attributes data
• Optional insertion Secondary-Data Packet (SDP) with ECC
• Audio_Stream SDP
• CEA-861-F INFOFRAME SDP
从图中可以看出,整个Main-Link通道分为三个部分,分别是音视频数据流时钟域(Native Stream CLK(s)Domain)、链路符号时钟域(LS_Clk Domain)以及Main-Link通道的PHY层。
- Native Stream CLK(s)Domain为用户需要发送的音视频流时钟域
- LS_Clk Domain是链路符号传输时候的时钟域,需要注意的是在LS_Clk时钟域下,所有的数据都是以Symbol的形式进行传输,一个symbol为8位宽
- Main-Link通道的PHY层主要是在Inter-lane skewing之后对数据进行加扰、编码和串行化,正确地将数据通过线缆发送到接收端。
1.Main-Link具体传输哪些数据,数据格式应该是怎样的
Main-Link通道上主要传输以下数据,分别是音视频流数据、控制数据(Control symbols)、视频流属性数据(Main Stream Attributes (MSA))以及一些填充数据和加密保护数据。
在LS_Clk时钟域下,数据均以symbol的形式进行传输和处理,因此数据可以直接分为Data symbols和Control symbols,其中Data symbols必须在Control symbols的控制下进行传输,具体Data symbols指哪些,我们只需要了解Control symbols有哪些,除了Control symbols,剩下的音视频流数据、视频流属性数据(Main Stream Attributes (MSA))以及一些填充数据和加密保护数据都属于Data symbols。
首先来看看Control symbols有哪些:
下图显示的是音视频流数据在Main-Link通道的整个过程:
通过上图的流程,可以看到,音视频数据进入Main-Link层后,首先会有一个Bus Steering,该过程像发扑克牌一样,会根据Link策略制定者的指示,将要发送的音视频数据分配到各个通道上(1、2or4lane),然后后面会有Framing, Packing, Stuffing的过程对数据进行一定格式的组织,具体数据组织方式在下文进行分析。
1.1首先来看Bus Steering是如何分配数据的
根据协议,根据link策略制定者的指示,1、2or4Lane的数据分配方式如下图所示:
当然,上面已经说到,所有的Data symbols必须在Control symbols的控制下进行传输,因此分配好的像素数据并不能直接进行传输,需要加入Control symbols,如下图所示:
可以看到,有效的像素数据全部包含在控制字符BE和BS之间。BS表示空白区域的开始,紧接着需要传输VB-ID、Mvid[7:0]、Maud[7:0]以及虚拟填充数据或者音频数据。
关于VB-ID、Mvid[7:0]以及Maud[7:0]的解释
VB-ID主要携带以下信息:
- 主视频流是处于垂直显示期间还是处于垂直消隐期间。
- 交错视频的主视频流是在奇数场还是偶数场。
- 主视频流是交错还是非交错(渐进式)。
- 是否在没有进行视频流传输的同时插入BS。没有视频流时,通过主链传输的符号如表所示
- 是否要静音音频。
Mvid[7:0]、Maud[7:0]的说明:
- Mvid[7:0]是Mvid的最低7位,在没有视频传输时,该值为00h,Mvid是用来恢复时钟的,和Nvid配合使用,关于Mvid,在后面时钟恢复章节会继续说明。
- Maud[7:0]和Mvid[7:0]类似,不过是用来指示音频的。
Note1:在没有视频传输时的数据组织形式如下图所示,在没有视频传输时,控制符号为BS,没有BE,每8192个link symbol需要插入一次BS、VB-ID、Mvid[7:0]以及Maud[7:0]。
Note2:无论main-link选择1、2还是4lane, VB-ID, Mvid7:0, and Maud7:0必须传输四次,如下图所示
1.2 传输单元打包和数据填充(Symbol Stuffing and Transfer Unit)
Bus Steering将视频流数据按照规则分配到不同的通道上之后也是不能直接发送的,需要根据传输规则进行Transfer Unit的打包以及根据速率进行Symbol Stuffing填充。下面具体来分析这两部分内容。
首先来看为什么需要Symbol Stuffing?当我们需要传输视频时,视频的速率带宽是一定的,但DP1.4协议只支持1.62Gbps、2.7Gbps.5.4Gbps以及8.1Gbps的传输速率,因此想要完整传输视频数据,选择的DP接口的速率就一定要大于等于视频传输速率,除非视频速率和DP接口速率相等,那么传输刚刚好,如果视频速率小于DP接口的速率,一帧图像很快传输完毕,岂不是有很多空闲带宽,这部分空闲带宽当然不能说停住不发送,还是要继续发送,那应该发送什么呢,发送Stuffing Symbols(其实就是一堆0),这就是为什么要Symbol Stuffing。
Note:在进行Symbol Stuffing时,在消隐周期(blanking period)和有效像素周期((active video period)的填充是不一样的
-
在有效像素周期(active video period):
在active video period阶段Symbol Stuffing是有规则的,并不是先全部发送完有效的像素数据,然后发0就行了。在DP协议中,数据流需要封装成为一个个的Transfer Unit(传输单元),每个Transfer Unit(传输单元)中都插入一些Stuffing Symbols(其实就是一堆0),因此一个Transfer Unit(传输单元)就长下面这个样子:
但每个传输单元有大小限制,即每个Transfer Unit的大小为32到64个sysmbols,同样遵循数据在控制符号的控制下进行传输,Stuffing Symbols必须以FS控制字符开始,以FE字符结尾。注意:
- 如果只需要填充一个sysmbol,则只填充FS,FE省略。
- 一行的最后一个TU单元不需要填充,没有FS和FE,大小也不必遵循32到64。
- 一行的最后一个TU必须以BS结束,且不能以FS/FE插入结束。
- FS和FE必须插入到同一LS_Clk周期中的所有车道中。
-
在消隐周期(blanking period):
消隐周期的第一个BS和活动视频周期的第一个BE之间的所有非控制符号都是虚拟填充数据符号(VB-ID、Mvid7:0和Maud7:0除外)。这些虚拟数据符号可以用sdp代替。
1.2.1 如何具体确定每个TU单元应该插入多少Stuffing Symbols?
以下是具体方法:
根据公式
valid data symbols per lane = packed data rate/link symbol rate * TU size
如何解读以上的公式,以一个例子来看就会很清楚:
比如一个10bits色深的RGB视频,像素时钟为80Mhz,即Stream: 30bpp, 80MHz,如果link的策略制定者决定使用4个lane,每个lane以2.7Gbps的速度进行传输。
那么首先是Bus Steering进行数据的分发,分发到4个lane上,每个lane将需要每秒传输的数据量为:
30*80/4/8 = 75M symbols/second/lane (symbol是以8位形式存在,所以除以8)
如果以2.7Gbps进行传输,也就是LS_CLK是在270M的速率下运行,即每秒钟每个lane传输270M symbols(由于8/10编码)
这样有效数据的的有效率就为:75M/270M
如果单个TU单元定义为64bit大小,则一个TU单元中有效数据应该为:75M/270M*64 = 17.8个,由于一行最后一个TU没有填充要求,因此,在传输该视频时,一个TU中有效数据可设置为18个sysmbols进行传输。
1.3 流属性数据MSA和次级数据包SDP的插入
在1.2节中主要讲述了针对要发送的视频流数据如何进行数据分配、数据单元的打包以及填充。但是在视频的消隐期间,DP发送系统也不是只发送填充的0,还有一些关于视频流属性的数据以及一些音频数据等次要信息需要在消隐期内进行发送,本小节主要探究如何将流属性数据MSA和次级数据包按照协议规则在消隐期期间插入数据流。
当然还是万变不离其宗,数据符号在控制符号的控制下进行传输,流属性数据MSA和次级数据包SDP由SS和SE两个控制字符进行管理。如下图所示:
Note:流属性数据MSA虽然也作为一种次级数据,但在发送时为了和SDP数据进行区分,MSA数据以两个SS控制符号进行引导。如下图所示:
文章来源:https://www.toymoban.com/news/detail-497270.html
在流属性数据MSA和次级数据包SDP的插入后,DPTX必须做车道间倾斜,如下图所示,所有的符号,包括在视频显示期间传输和在视频消隐期间传输的符号,相邻车道之间需要两个LS_Clk周期的倾斜。
文章来源地址https://www.toymoban.com/news/detail-497270.html
到了这里,关于DP1.4协议学习(三)Main-Link链路上的同步传输服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!