一种新弹性缓冲器结构及SKP添加方法与流程

文档序号:12176883阅读:685来源:国知局
一种新弹性缓冲器结构及SKP添加方法与流程

本发明属于缓冲器模块领域,特别是涉及到一种传输接口的弹性缓冲器模块及SKP的添加方法。



背景技术:

USB3.0规范(Universal Serial Bus 3.0 Specification)是intel、ENC等公司于2008年公布的最新的USB设计标准,它是高速、串行、源同步数据传输协议。相比较于早期版本USB,USB3.0采用一种新的物理层,用两个信道把数据传输和确认过程分离,因而提高了数据传输速率。采用USB3.0接口进行通信时,发送端采用差分对的方式发送串行信号,接收端采用时钟数据恢复电路从接收到的串行数据中恢复出时钟和数据。由于接收端和发送端均有各自独立的时钟源,所以接收端恢复出来的时钟和本地时钟可能存在一定的偏差。为了保证数据的正确传输,USB3.0采用弹性缓冲器来进行时钟频率补偿和相位同步。

为了完成时钟频率补偿和相位同步,弹性缓冲器通过插入或删除SKP对来实现。它的容量大小由时钟频率的偏差大小和特定符号的出现频率共同决定,因此可以稳定地同步一个时钟域的数据到另一个时钟。传统的弹性缓冲器在实现SKP的添加和删除的过程中涉及到异步的逻辑控制,可能带来时序错误,并且在SKP的添加过程中需要进行写指针跳跃和断点保存,需要用更多的逻辑单元和寄存器来完成。



技术实现要素:

本发明的目的是为了避免由异步控制可能带来的时序错误以及减少写指针跳跃和断点保存所带来的逻辑单元和寄存器的使用。

本发明的技术方案为:弹性缓冲的本质是一个读写同时受控的异步FIFO,工作在常半满(normal half full)状态。弹性缓冲器在工作开始后,首先会向FIFO中写入8个有效数据,使得弹性缓冲器维持在半满状态。当读写时钟不一致时,若读时钟频率大于写时钟频率,则弹性缓冲器中的有效数据个数将会小于8甚至会出现被读空的状态,若读时钟频率小于写时钟频率,则弹性缓冲器中的有效数据个数将会大于8甚至会出现写满的状态。为了维持弹性缓冲器在半满状态,需要向输入的数据中添加和删除SKP。本发明提出一种新弹性缓冲器结构及SKP添加方法,在读时钟大于写时钟情况下,当弹性缓冲中有效数据数量会小于添加阈值时,阈值监测单元就会发起SKP添加请求,此时若输出检查单元给出SKP添加窗口有效,则读控制单元会将读指针暂停,通过输出控制单元向输出的数据中添加SKP,而此时写指针正常工作,使得弹性缓冲器中的有效数据量增大到添加阈值以上,以此来完成读写时钟频率补偿的问题。在读时钟小于写时钟情况下,当弹性缓冲中有效数据数量会大于删除阈值时,阈值监测单元就会发起SKP删除请求,此时若输入检查单元给出SKP删除窗口有效,则写控制单元会将写指针暂停,通过写一个数据来覆盖当前的SKP以实现SKP的删除,而此时读指针正常工作,使得弹性缓冲器中的有效数据量降低到删除阈值以下,以此来补偿读时钟和写时钟之间的频率差异。

本发明具有以下的优点:

1 与传统的弹性缓冲器设计相比,本发明提供的新弹性缓冲器将SKP的添加和删除的过程进行了分离,分别在两个时钟域中独立进行,避免了由异步控制可能带来的时序错误。

2 与传统的弹性缓冲的设计相比,本发明的弹性缓冲器在进行SKP对的添加时,利用读指针暂停的方式来实现,无需写指针跳跃和断点保存,减少了逻辑单元和寄存器的使用。

附图说明

图1绘示本发明提供的一种新弹性缓冲器的结构框图。

图2绘示本发明提供的一种新SKP添加过程示意图。

图3绘示本发明中SKP删除过程示意图。

图4绘示本发明一实施例的弹性缓冲器设计流程图。

图5绘示本发明一实施例的SKP添加的实验结果图。

图6绘示本发明一实施例的SKP删除的实验结果图。

图7绘示本发明一实施例的下溢实验结果图。

图8绘示本发明一实施例的上溢实验结果图。

具体实施方式

图1 显示的是本发明提供的一种新弹性缓冲器结构框图,包括存储单元、同步单元、阈值监测单元、输入检测单元、写指针控制单元、输出检测单元、输出控制单元以及读指针控制单元。输入检测单元和写指针控制单元位于恢复时钟域,协同存储单元、同步单元和阈值监测单元完成SKP的添加操作。输出控制单元以及读指针控制单元位于本地时钟域,协同存储单元、同步单元和阈值监测单元完成SKP的删除操作。输入检测单元检测输入的数据中是否包含SKP字符,并根据检测的情况判断出是否为SKP删除操作提供窗口。写指针控制单元用来产生写指针的二进制码和格雷码,其中二进制码是数据写入的存储单元的地址,格雷码是用于同步到本地时钟域同读指针进行比较,判断FIFO是否下溢。输出检测单元是检测输出的数据中是否包含SKP字符,为SKP的添加提供添加窗口。输出控制单元并根据SKP添加操作指令是否有效来添加SKP字符并输出数据,此外根据FIFO是否读空来判断是否要添加END字符。读指针控制单元产生读指针的二进制码和格雷码,其中二进制码是读出的数据在存储单元对应的地址,格雷码是用于同步到恢复时钟域同写指针做比较,判断FIFO是否上溢。储存器是整个弹性缓冲的基础,根据接收到的写指针存储出来自恢复时钟域的数据,同时会根据读指针输出存储的数据。同步单元的作用是将写指针的格雷码同步到读时钟域,并与读指针格雷码比较,以产生空标志。同样将读指针的格雷码同步到写时钟域,并与写指针格雷码比较,以产生满标志。同时还将同步后的读、写指针格雷码转换为二进制自然码输出。阈值监测单元的作用是监测FIFO中有效数据的数量,并根据其数量与8的差值决定是否产生SKP添加或删除请求标志。

图2 显示的是本发明提出的一种新的添加SKP字符的工作机理。在读时钟频率大于写时钟频率情况下,从存储器中读出的数据速度要比写入的速度快,经过一段时间后,弹性缓冲器中的有效数据个数小于添加阈值,此时阈值检测单元会发送SKP添加请求。在SKP添加请求命令有效的情况下,待到输出检测控制单元检测到输出数据为SKP时,SKP添加指令有效。有效的SKP添加指令会使得读指针控制单元发送暂停读指针指令暂停读指针,同样会触发输出检测控制单元将输出数据变为SKP,完成SKP的添加功能。在利用读指针暂停来实现SKP添加的过程中,同样会向存储单元中写入数据,增加存储单元中有效数据个数,使得弹性缓冲器维持在半满状态。

图3 显示的SKP删除的工作机理。在读时钟频率小于写时钟频率情况下,弹性缓冲器中的有效数据个数大于删除阈值,此时阈值检测单元会发送SKP删除请求。在SKP添加请求信号有效的情况下,待到输入检测单元检测到输入数据为SKP时,SKP删除指令有效。此时写指针控制单元发送暂停写指针指令使得写指针暂停,故在下一个时钟到来后,后一个数据会覆盖当前要删除的SKP,完成SKP删除功能。写指针暂停过程中,在存储单元中的数据会被读出,减小存储单元中有效数据个数,使得弹性缓冲器维持在半满状态。

图4绘示出本发明一实施例的弹性缓冲器设计流程图。在实施例中,当使能信号RxValid有效且复位信号rst无效时,若读写时钟同步,FIFO中的效数据将维持在8个,当写指针wrptr为4’b1111,则下个写时钟周期上升沿到来,wrptr将置零,否则每经过一个写时钟周期写指针加1;若读时钟慢于写时钟,当弹性缓冲中有效数据数量大于删除阈值,阈值监测单元则发起SKP删除请求,待输入检测单元检测到输入数据为SKP字符时,写指针将暂停,通过下一个数据的覆盖当前数据以屏蔽SKP,达到删除SKP的目的。在本实施例中,当FIFO中有效数据达到8时,读使能信号start有效,读操作开始。若读写时钟同步,FIFO中的效数据将维持在8个,当读指针rdptr为4’b1111,则下个读时钟周期上升沿到来,rdptr将置零,否则每经过一个读时钟周期读指针加1;若写时钟慢于读时钟,当弹性缓冲中有效数据数量小于添加阈值,阈值监测单元则发起SKP添加请求,待输入检测及控制单元检测到输出数据位SKP字符时,读指针将暂停以添加SKP,通过控制输出控制单元改变输出为SKP达到添加SKP的目的。

图5到图 8显示的是本实施例的不同情况下的仿真结果,图5是在读时钟快于写时钟的情况,弹性缓冲器完成SKP添加过程的仿真功能图,从图中可以看出,当实施例中添加SKP信号insert有效时,新的SKP字符会被添加到读出的SKP字符之后。图6是在写时钟快于读时钟情况下,弹性缓冲器完成SKP删除过程的功能仿真图,从图中可以看出,当实施例中删除SKP信号remove有效后,输入的SKP字符会被下一个输入的数据所覆盖,从实施例的仿真图中可以看出,输入SKP字符3’h0f9和3’h306会被后面的字符3’h0fa和3’h0fb所覆盖,完成SKP的删除。图7给出的是弹性缓冲器下溢的仿真图,当FIFO被读空时,同步单元会产生空标志,empty高电平有效,此时读时钟控制单元会暂停读指针同时输出检测控制单元会在输出端添加EDB字符3’h0f3。图8是弹性缓冲器的上溢仿真图,当FIFO中写满时,同步单元会产生满标志,full高电平有效,此时写控制单元会暂停写指针,删除一个有效数据,从仿真图中可以看出3’h24f被丢弃。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1