实现USB3.0物理层中弹性缓冲的设计方案
1.引言
弹性缓冲由Maurice Karnaugh在电话网络中传输PCM信号中提出来的。随后人们在很多不同的应用中采用了弹性缓冲技术来同步数据,很多协议例如USB、PCIE、以太网等。
USB3.0是一个高速,串行,源同步数据传输协议。但是数据经过传输线与原数据发生了很大的偏差。本文从USB3.0的角度分析了弹性缓冲机制,解释了与其他设计的不同,并采用指针控制与握手的设计方法实现。
2.弹性缓冲作用
2.1 USB3.0弹性缓冲作用域
在USB3.0中数据传输采用双单工,因此物理层设计为接收、发送2组差分对传输部分。传输线是承载数据传输的载体。因此如何从传输线正确接收数据,并把它同步到系统内部时钟域,变的十分关键。
USB3.0中规定的物理层接收部分结构图如下,它包括差分接收、时钟数据恢复、串并转换和8B10B译码。
图 1USB3.0物理层接收部分结构
整个数据流向自上而下,差分输入经过差分接收,从差分信号中提取出时钟,并用恢复出来的时钟来恢复出数据(CDR)。恢复出来的数据在接收时钟域进行串并转换为10bit位宽并行数据1,并检测USB3.0包起始标志符(K28.5)。一旦检测到起始标志符K28.5,使能符号有效(symbol lock),直至检测到结束符号,才结束符号有效。
弹性缓冲从串并转换接收数据,所有的接收数据与控制都工作在接收时钟域(receive clock)。因此弹性缓冲要把数据与控制同步到系统时钟域(system clock)。把数据向下传递给8B10B译码模块,而后传递给系统内部。
2.2 弹性缓冲容量
USB3.0中,协议规定允许的时钟精度为-5300ppm到300ppm。而符号时钟频率为2ns即2000ps,最坏情况下每178个symbol添加或者删除一个SKP,也就是每356个symbol添加或者删除一个SKP对(SKP Order Sets)。USB3.0中包最长为1052字节,所以最差情况下,最多可以添加或删除8个SKP或者4个SKP对,所以弹性缓冲至少要能缓冲8个SKP。USB3.0协议规定每个SKP order sets为2个连续的SKP symbol。因此在10B8B译码前,SKP order set的游程(running disparity)应该是互补的。
通过计算得知,弹性缓冲的缓冲容量为8。本文设计采用常半满2(normal half full)模式来设计弹性缓冲,所以弹性缓冲容量为16,在正常情况下里面应该有8个数据,剩下的8个为缓冲空间,因此叫常半满。常半满模式首先要向缓冲中写满8个symbol,达到半满,然后读使能才可以有效,因此大约有8个时钟的延迟。常半满模式只有在symbol队列中出现SKP对才能添加或者删除SKP对。下图为常半满输入输出时序图。
图 2 常半满输入输出时序
从上图可以看出,rx_valid_out有效要晚于rx_valid_in约8个时钟沿;而无效却晚于rx_valid_out约0至16个时钟沿(取决于时钟精度差)。因此常半满需要8个时钟延迟才能输出数据。
2.3 弹性缓冲机制
弹性缓冲本质上是读写同时受控的异步FIFO,常半满(normal half full)FIFO,其深度为16,首先要写满8个有效数据,并一直维持在半满的状态。因此在正常情况下,FIFO一直处于或接近半满状态,当读写时钟一样快慢的时候,FIFO中有8个有效数据。
图 3 常半满读写同等速率
当读时钟快于写时钟,读出的数据多于写入的数据,常半满模式可能导致FIFO中的数据数量少于8,甚至有可能被读空。如下图所示,在出现SKP窗口的时候,FIFO中的有效数据为4,比常态少4。所以此时,弹性缓冲应该添加4个SKP,使得FIFO维持半满,以此来调节时钟。此时读指针向前跳跃4个间隔,并且当读指针读到跳跃区间时,完成SKP添加。
图 4 常半满模式读快于写
当读时钟慢于写时钟,写入的数据多于读出的数据,常半满模式可能导致FIFO中的数据数量多于8,甚至有可能被写满。如下图所示,在出现SKP窗口的时候, FIFO中有效数据为10,比常态多2. 所以此时,弹性缓冲应该删除2个SKP,使得FIFO维持半满,以此来调节时钟。此时写指针应该暂停2个时钟周期,完成SKP删除。
图 5 常半满写快于读
3.弹性缓冲结构
常半满模式下弹性缓冲的结构设计,可以分为接收时钟域控制、系统时钟域控制、阀值检测与同步。接收时钟域控制包括,写控制与写指针控制。系统时钟域控制包括读控制与读指针控制。阀值检测与同步包括SKP添加删除阀值与时钟域之间的同步。
图 6 常半满模式弹性缓冲结构
3.1 USB3.0中SKP删除
当接收时钟域的symbol lock有效时,写使能才可能有效。一直可以写到FIFO处于半满状态,此时FIFO处于临界状态,读写速率的差别将导致不同阀值的触发。下图是SKP对的删除。
图 7 SKP对删除
检测单元用来检测进入FIFO的数据是否为SKP,起到标注SKP窗口的作用,为SKP的删除提供了窗口。阀
设计 方案 缓冲 弹性 USB3 0 物理 实现 相关文章:
- 直接变频接收机设计可实现多标准/多频带运行(10-11)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 无线通信网络设计与现场测试(10-10)
- WiMAX数据传输加密方案设计与实现(05-25)
- 高性能TD-SCDMA接收机的设计(03-15)
- 初步设计WiMAX射频系统(03-29)