赞
踩
上一篇文章讲到Main-link链路服务就是用来传输音视频数据的,本篇文章将具体探究一个完整的Main-link传输服务具体需要做哪些工作。
在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层。
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的过程对数据进行一定格式的组织,具体数据组织方式在下文进行分析。
根据协议,根据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]的说明:
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必须传输四次,如下图所示

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字符结尾。注意:
在消隐周期(blanking period):
消隐周期的第一个BS和活动视频周期的第一个BE之间的所有非控制符号都是虚拟填充数据符号(VB-ID、Mvid7:0和Maud7:0除外)。这些虚拟数据符号可以用sdp代替。
以下是具体方法:
根据公式
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.2节中主要讲述了针对要发送的视频流数据如何进行数据分配、数据单元的打包以及填充。但是在视频的消隐期间,DP发送系统也不是只发送填充的0,还有一些关于视频流属性的数据以及一些音频数据等次要信息需要在消隐期内进行发送,本小节主要探究如何将流属性数据MSA和次级数据包按照协议规则在消隐期期间插入数据流。
当然还是万变不离其宗,数据符号在控制符号的控制下进行传输,流属性数据MSA和次级数据包SDP由SS和SE两个控制字符进行管理。如下图所示:

Note:流属性数据MSA虽然也作为一种次级数据,但在发送时为了和SDP数据进行区分,MSA数据以两个SS控制符号进行引导。如下图所示:

在流属性数据MSA和次级数据包SDP的插入后,DPTX必须做车道间倾斜,如下图所示,所有的符号,包括在视频显示期间传输和在视频消隐期间传输的符号,相邻车道之间需要两个LS_Clk周期的倾斜。

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。