文章目录
- V-BY-ONE 概述
- V-BY-ONE 收发器功能划分
- V-BY-ONE TX 模块分析
- V-BY-ONE 眼图规格
V-BY-ONE 概述
V-BY-ONE,即“Video by one”,意思是通过一根线来传输 LVDS 或 TTL 信号,它是由日本 THine 公司开发的一种替代 LVDS 的接口技术标准,专门面向图像传输。1.4 标准中,每个差分对信号的传输频率可以达到 4GHz,它具有以下优点:
- 相对其他内部互联协议(PCIE,SATA)等,V-BY-ONE 具有低功耗和易用性等特点;
- 单通道的传输速度达到 4Gbps,有效数据率为 3.2Gbps;
- 它通过数据加扰和数据时钟恢复电路(CDR)方式,减少了 EMI;
- 接收端通过 CDR 电路方式恢复时钟,而不用发送端发送时钟,所以解决了传统传输系统中时钟和数据之间的偏移问题。
因为采用了专门的编码方式和 CDR 结构,V-BY-ONE 技术可以通过一些差分对信号线在最少的外部元件基础上传多达 40bit 的视频信号和多达 24bit 的控制信号,同时传输 HSYNC,VSYNC,以及 DE。V-BY-ONE 收发器之间通过 HTPDN 和 LOCKN 两个信号进行交互。收发器之间的传输介质是微带线或电缆,其差分特性阻抗为 100Ω,另外 TX 端的电容是必须有的,而 RX 端则是可选。
HTPDN,LOCKN 信号
HTPDN,LOCKN 都是低电平有效。HTPDN 信号指示了发送器和接收器之间的连接关系。当接收器没有活动或者说两者没有连接时,发送器这边收到的 HTPDN 为高电平,此时发送器则可以进入下电模式。当接收器开始工作且和发送器连接时,HTPDN 将会置为低电平,从而发送器会马上启动并开始发送 CDR 测试向量来做通路测试。接收器的 HTPDN 信号是漏极开路状态,而发送器端的 HTPDN 则是连接一个上拉电阻。HTPDN 信号也可以忽略使用,这个时候发送器端的 HPTDN 信号一直拉低状态。
LOCKN 信号指示了接收器端是否通过 CDR PLL 锁频,即是否已经恢复出时钟信号。如果接收器没有工作或者处于 CDR PLL 测试模式状态,则发送器端的 LOCKN 信号通过一个上拉电阻拉高。当接收器完成 CDR 测试,即已经锁住时钟频点,则发送器端的 LOCKN 信号拉低,发送器进入正常工作模式。接收器端的 LOCKN 信号处于漏极开路状态,而发送器端则需要一个上拉电阻和 LOCKN 信号连接。
实测的HTPDN和LOCKN信号波形:
V-BY-ONE HS Link系统图
V-BY-ONE 传输速率计算
总比特率计算
其中 byte mode 指的是 V-BY-ONE 协议中根据色彩深度进行不同方式打包,有 3/4/5byte 三种模式。6/8bit 对应 3byte mode,10bit 对应 4byte mode,12bit 对应 5byte mode。
举例:3840*2160(60Hz)Pixel clock = 533.25MHz 10bit。
Encoded total bit-rates = 4 * 8 * 10 / 8 * 533.25 = 21.333 Gbps。
每通道编码比特率计算
[encoded bit-rate per lane] 可以计算为 [[total bit rate] 除以 [number of lanes],[number of lanes] 的选择应合理,使 [encoded bit-rate per lane] 在 600Mbps 以上,在 4Gbps 以下。
[number of lanes] 需要根据图像分辨率和刷新率做出适当选择:
V-BY-ONE 收发器功能划分
V-BY-ONE 收发器包括发送器和接收器。
发送器 TX 内部模块主要是 packer,scrambler,encoder,serializer 以及发送器链路监测模块。发送器一直检测 LOCKN 和 HTPDN 信号。如果 LOCKN 信号为高电平,发送器将会执行 CDR 测试,并发送 CDR 测试向量。当 CDR 锁住,即接收器端锁住时钟,发送器将会从 CDR 测试模式跳转到正常工作模式,即此时开始传输用户逻辑的数据。
接收器 RX 的内部模块分为:unpacker,de-scrambler,decoder,de-serializer 及接收端链路监测模块。接收器在接收到 CDR 测试向量时首先进行时钟的同步,即恢复出时钟。在从 CDR 测试模式进入正常工作状态后,接收端将会通过 ALN 测试来同步有效像素和 byte 位置。
一个 Link 的 V-BY-ONE 结构:
发送器 TX 端各模块之间配合关系是:首先,经过 CDR 测试后,TX 才开始发送编码后的像素数据:其中 packer 模块将多 bit 的像素数据(最高为 40bit,最小为 24bit)打包为 8bit 的数据;scrambler 模块采用伪随机序列方式对 8bit 的数据进行加扰处理;encoder 模块采用 8B/10B 编码方式,将加扰后的 8bit 数据编码为 10bit;最后编码后的数据通过 serializer 并串转换模块,转为 1bit 的差分信号输出。
V-BY-ONE TX 模块分析
V-BY-ONE fsm 模块
V-BY-ONE TX 状态机
V-BY-ONE TX 控制器的状态机一共有 6 种状态,分别是:Shut down,Stand-by,Acquisition,CDR training,ALN training,Normal 状态。
状态机转移过程及条件:
下表显示每个状态的详细信息:
State | Comment | Tx Output |
---|---|---|
Tx#0:Shut Down | Power off | * |
Tx#1:Stand by | Power on | ** |
Tx#2:Acquisition | Acquisition of the input pixel clock from user logic | ** |
Tx#3:Transmit CDR Training | Output CDR training pattern | CDR Training Pattern |
Tx#4:Transmit ALN Training | Output Alignment training pattern | ALN Training Pattern |
Tx#5:Transmit Normal | Output Normal Pattern | Normal Pattern |
*发送器在 Tx#0 状态下的输出根据具体情况而定。
**为了避免在发送器锁相环不稳定的情况下产生不期望的输出,应将发送器在 Tx#1,2 状态下的输出固定到某个电压水平。
Shut down 状态是发送器初始状态,此时发送器处于掉电状态;
Stand-by 状态是发送器从下电到上电后的状态,即准备状态,此时开始检测 HTPDN 信号,若 HTPDN 为低则跳转到下一状态;
Acquisition 状态时发送器确认链接好接收端后,开始检测发送端 PHY 的像素时钟是否锁定,若锁定则跳转到下一状态;
CDR training 状态时进行 CDR training 来使接收端的 CDR PLL 锁定链路时钟,随时检测接收端反馈的 LOCKN 信号是否为低,若为低说明 CDR PLL 锁定链路时钟,则跳转到下一状态;
ALN training 状态是为了接收端的像素和字节对齐,这个状态下发送端通过产生指定序列来实现,该序列包括时序信号 DE,VSYNC,HSYNC 以及像素数据,指定序列发送完成后,跳转到下一状态;
Normal 状态是正常传送视频数据的状态,数据经过整个链路处理后传给接收器。
V-BY-ONE RX 状态机
V-BY-ONE RX 控制器的状态机一共有 4 种状态,分别是:Shut down,CDR training,ALN training,Normal 状态。
状态机转移过程及条件:
下表显示每个状态的详细信息:
State | Comment | Rx Output | HTPDN | LOCKN |
---|---|---|---|---|
Rx#0:Shut Down | Shut down | invalid | High | High |
Rx#1:CDR training | CDR locking process | invalid | Low | High |
Rx#2: ALN Training | Training by alignment Logic | invalid | Low | Low |
Rx#3 :Normal | Normal operation | valid | Low | Low |
链路启动流程
链路失败流程
V-BY-ONE CDR training 模块
CDR training 的主要作用是让接收端恢复出像素时钟。为此,在 CDR training 期间,发送端须持续发送指定的测试序列直到 CDR PLL 获取到像素时钟频率。CDR training 进行的条件如下:
- 当检测到 HTPDN = 0,LOCK = 1 时,CDR training 开始执行。
- 重复发送序列 D10.2(0101010101),直到 CDR PLL 频率锁定,锁定后 LOCKN 置 0。
- 测试序列 D10.2 的频率是 V-BY-ONE 链路比特率的一半。
- 测试序列 D10.2 不用加扰处理。
- RX 通过将 LOCKN 置 1,标记 CDR PLL 失锁,LOCKN 置 0,标记 CDR PLL 锁定链路频率。
V-BY-ONE ALN training 模块
ALN training 测试的目的是将有效像素和字节对齐,因此,ALN 测试码流必须包含 BS,BE 等标记。ALN 测试条件如下:
- 当检测到 HTPDN = 0,LOCK = 0 时,ALN training 开始执行。
- 在进行 ALN training 期间,产生的 1 个 DE 周期包含 64 个像素周期,其中 32 个像素周期为高,32 个像素周期为低。
- DE 周期重复 16 次。
- DE 信号在第 16 个周期的最后个时钟置 1。
- VSYNC 信号除了倒数第四个时钟置 1 外,其余为 0。
- ALN 测试序列需要经过加扰模块的处理。
ALN training 产生数据如下图所示:
最后一个 ALN 训练周期有不同的模式,其中包括 BE_SR 字符用加扰器重置。总 ALN 训练周期是 64*16 像素每 lane。下图显示了 Packer 在 3byte 模式下输出的训练示例。
重新进入训练模式
当发送端改变数据速率时,发送端应首先停止输出信号,使接收端进入训练模式。接收端进入训练模式(LOCKN 变为高)后,发送端开始发送训练信号。当接收方由于某种原因(CDR 故障等)失去链路连接时,接收方通过将 LOCKN 设置为 High 向发送方表明情况。
V-BY-ONE map 模块
V-BY-ONE 协议可以适用于各种类型颜色空间和色彩深度的视频格式,包括 RGB,YCbCr444,YCbCr422,RGBW,RGBY 等颜色格式及 6/8/10/12bit 的色彩深度。本文设计的发送器支持 36bpp RGB/YCbCr444,30bpp RGB/YCbCr444,24bpp RGB/YCbCr444,18bpp RGB/YCbCr444,24bpp YCbCr422,20bpp YCbCr422,16bpp YCbCr422 等 7 种常见配置模式。关于颜色数据的映射关系可以参考 V-BY-ONE 协议具体规定。
V-BY-ONE协议颜色数据映射关系:
V-BY-ONE packer 模块
packer 模块的功能是将输入的 40bit 像素数据,24bit 控制数据及 3bit 时序数据按照 8bit 打包。每个包映射关系由输入像素像素数据字节数决定,一般有 3/4/5byte 三种。打包处理时通过 5 类数据标记来分隔不同类型数据:FSACTIVE,FSBS(blanking start),FSBP(blanking payload,如VBI等),FSBE(blanking end),FSBE_SR(blanking end and scrambler reset)。根据协议可知数据标记主要参考 DE 和 VSYNC 信号而产生,在 DE 信号上升之前的一个像素周期,也即 DE 信号低电平区间内的最后一个像素周期,对应的数据标记为 FSBE 标记信号,这个标记对应的传送数据是 K 码。DE 信号处于高电平期间时,对应的数据标记为 FSACTIVE 标记信号,在此期间,有效像素数据被传送,此标记对应的传送数据是 D 码。在 DE 信号下降沿后的第一个像素周期,也即 DE 信号低电平区间内的第一个像素周期,对应的数据标记为 FSBS 标记信号,这个标记对应的传送数据是 K 码。DE 为低电平区间,除了第一个和最后一个像素周期,其他时刻对应的是 FSBP 数据标记信号,在此期间时序信号 HSYNC,VSYNC 和 CTL 数据将会被传送,此标记对应的传送数据是 D 码。FSBE_SR 是一个比较特别的数据标记信号,用来复位加扰模块。将第 1 个 FSBE 和每个 512 个 FSBE 数据标记直接替换为 FSBE_SR。
FSACTIVE
像素数据在 DE 有效(DE = high)期间被打包。这段时间内的所有字节都是 D 码。“DE high active” 由极性定义。
FSBS(Blanking Start)
插入在最后一个有效像素之后。Vsync 和 Hsync 数据被打包成 Byte0 和 Byte1。这个 FSBS 中的所有字节都是 K 码。”
FSBP(Blanking Payload)
插入在 BS 和 BE 之间。Vsync 和 Hsync 数据被打包成 Byte0 和 Byte1,允许将 CTL 数据打包成 Byte2-4。这段时间内的所有字节都是 D 码。FSBP 持续时间计算公式为:[FSBP 持续时间] = [消隐周期持续时间] - 2 像素。
FSBE(Blanking End)
插入在第一个有效像素之前。Vsync, Hsync 数据和 BE 码被打包成 Byte0 和 Byte1。这个 FSBE 中的所有字节都是 K 码。
FSBE_SR(Blanking End and Scrambler Reset)
在 Vsync 有效周期之后的第一个 FSBE 和每个 512个 FSBE 被替换为 FSBE_SR,用于复位加扰器和解扰器的线性反馈移位寄存器(LFSR)。每次发送 FSBE_SR 时,FSBE 的计数都会被重置(见图5)。FSBE_SR 中的数据包含 K 码的 Vsync、Hsync 和 BE_SR 码。
发送数据和数据标记关系
localparam BE = 8'b01011100; //K28.2
localparam BE_SR = 8'b00011100; //K28.0
localparam BS = 8'b00111100; //K28.1
localparam SYNH = 8'b10111100; //K28.5
localparam SYNL = 8'b00111100; //K28.1
V-BY-ONE scrambler 模块
V-BY_ONE 通过对传输数据进行加扰处理,避免通道上相邻两个打包后码字相同,可以减少 EMI,每个数据通道通过一个 16bit 的线性反馈移位寄存器(LFSR)加扰,每加扰一个通道数据,LFSR 就移位 8 次。LFSR 处理对象是 packer 打包后的数据,其处理分为两个分支:对 BS,BE,BE_SR,SYNH,SYNL 等 K 码标记数据不进行加扰,但遇到 BE_SR 标记时,LFSR 复位到 16’hFFFF;对 FSBP 标记和 FSACTIVE 数据等 D 码数据进行加扰;另外,在 CDR 测试时,加扰模块需要旁路。V-BY-ONE 协议采用的 16bit LFSR 的生产表达式为:
G(x) = X^16 + X^5 + X^4 + X^3 + 1
加扰时,将 LFSR 生成的伪随机序列高 8bit 与输入的 8bit 打包数据进行异或运算,其结果就是加扰后数据。
注意:使用多 lane V-BY-ONE 传输数据时,需要将加扰模块级联处理。
V-BY-ONE encoder 模块
V-BY-ONE 采用 8B/10B 编码方式,该模块是将加扰后的 8bit 数据编码为 10bit,它的主要作用是保证一段时间内编码产生数据 1 和 0 的个数相当。这样可以达到直流平衡,另外编码后的数据流方便接收端通过 CDR 技术恢复链路时钟。对于 BS,BE,BE_SR,SYNH,SYNL 等组成的 K 码在 8B/10B 编码成特殊码字来标记数据边界,而 BP 和像素数据组成的 D 码按正常的码表进行编码。
V-BY-ONE 眼图规格
TX 端眼图
X[UI] | Y[mV] | |
---|---|---|
A | 0.15 | 0 |
B | 0.355 | 140 |
C | 0.5 | 175 |
D | 0.645 | 175 |
E | 0.85 | 0 |
F | 0.645 | -175 |
G | 0.5 | -175 |
H | 0.355 | -140 |
RX 端眼图
X[UI] | Y[mV] | |
---|---|---|
A | 0.25 | 0 |
B | 0.3 | 50 |
C | 0.7 | 50 |
D | 0.75 | 0 |
E | 0.7 | -50 |
F | 0.3 | -50 |