当前位置:首页 > 通信技术 > 通信技术
[导读] 1.引言  弹性缓冲由Maurice Karnaugh在电话网络中传输PCM信号中提出来的。随后人们在很多不同的应用中采用了弹性缓冲技术来同步数据,很多协议例如USB、PCIE、以太网等。  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的删除提供了窗口。阀值监测单元一直监测FIFO中有效数据的数量。如果数量大于删除阀值(FIFO中有10个有效数据),并且SKP窗口有效,那么弹性缓冲暂停指针,屏蔽SKP对,以此来达到删除SKP对的目的。但是USB3.0中的SKP都是成对出现的,因此删除SKP对的时候要注意奇偶性。

 

  所以采用状态机来设计USB3.0中SKP对的删除,如下图。当SKP窗口无效的时候,状态处于idle;当SKP窗口有效而且删除阀值触发时,状态进入了屏蔽状态;在SKP窗口 有效的情况,屏蔽状态持续到删除阀值标志无效;当SKP窗口无效,或者删除阀值标志无效而且被屏蔽SKP个数是偶数个,则状态返回到idle状态。

  指针屏蔽verilog代码如下。

  3.2 USB3.0中SKP添加

  SKP添加模块包括断点保存、写指针跳跃与握手、读指针生成与输出控制模块 SKP添加发生在读时钟快于写时钟的时候,在正常情况下,弹性缓冲的读操作与普通的FIFO没有任何区别。

图 9 SKP添加结构

  3.2.1 断点保存

  在常半满模式下,读写指针相差8个时钟。因此在写指针发生事件,要经过8个左右的 时钟才能传递到读指针。在出现SKP窗口的时候,如果添加阀值标志触发,则读指针要经过8个时钟才能添加SKP。

  对于添加SKP对,读指针如何才能知道要添加多少呢?因此读指针需要写指针去引导。在设计中,采用了断点保存和握手来解决。在SKP窗口出现和添加阀值标志有效时候,写指针在此时计算FIFO中的有效数据个数,根据FIFO中有效数据的个数与8的差距来决定wrptr_nxt所指向的下一个指针点,这就是写指针跳跃。并且在写时钟域把当前的写指针和下一个所指向的指针点保存起来。在弹性缓冲设计中,读指针永远落后于写指针。

图 10 写指针保存断点

  3.2.2 握手

  写指针在出现SKP窗口和SKP添加阀值触发的时候,发生了跳跃,并保存了断点,但这只是在写时钟域。由于读指针晚于写指针,因此采用握手来通知读时钟域何时添加SKP。如下图,当SKP窗口出现,并且添加阀值触发时,弹性缓冲保存了断点,并向读时钟域发起了请求(req),请求一直持续到读指针读到了断点的起始地址(start_rptr),此时,读指针读到了断点的起始地址,并向写时钟发送收到(ack)。当写时钟域收到读时钟域的ack信号,撤销req。读时钟域一旦读到了截止地址(end_ptr)自动撤销ack信号。在整个读时钟域的ack过程中,SKP对被添加。

图11 握手

  3.2.3 输出控制

  弹性缓冲FIFO读写控制的过程中,写先于读,首先根绝延迟要写到规定的要求,此时写有效读无效(定义为W1R0)。当达到规定的阀值之后,读写同时有效(W1R1)。等到写结束, 即一个包接收完毕,但是读不一定结束(W0R1),直至读到空,即所有数据已经同步到本地了(W0R0)表示此次任务结束。这种流程控制为了保持这个数据的完整性。

图 12 读写流程控制

  USB协议中明确规定SKP对为2个连续的SKP symbol。根据8b10b原则,2个连续的SKP对的游程是相反的,并且SKP对的添加要符合8b10b3的规则。

  中要求,在弹性缓冲下溢的时候,要添加一个EDB字符,并且显性的用下溢标志。如下图,在rx-g与rx-h之间,由于读快于写,导致了下溢。因此需要添加一个EDB字符,并使能一个时钟的下溢,并且置状态。

图 13 弹性缓冲下溢

  PIPE3.0中要求,在弹性缓冲上溢的时候,丢掉一个数据,并且置状态。如下图rx-f、rx-g与rx-h,由于溢出,rx-g被丢弃,并且置状态。

图 14 弹性缓冲上溢

  5.总结

  本文通过分析弹性缓冲的作用与机制,采用异步时钟FIFO来设计弹性缓冲。并且根据USB3.0协议要求,提出了断点保存、指针跳跃与握手、指针屏蔽等方法来设计弹性缓冲。本设计充分考虑了PIPE 3.0标准的要求与实际需要,并且应用于工程中,实现了弹性缓冲补偿时钟的目的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭