CN103885527A - 一种基于rrc编码的时钟偏差补偿装置 - Google Patents
一种基于rrc编码的时钟偏差补偿装置 Download PDFInfo
- Publication number
- CN103885527A CN103885527A CN201410151921.8A CN201410151921A CN103885527A CN 103885527 A CN103885527 A CN 103885527A CN 201410151921 A CN201410151921 A CN 201410151921A CN 103885527 A CN103885527 A CN 103885527A
- Authority
- CN
- China
- Prior art keywords
- circuit
- shift register
- clock
- phase shift
- reverse phase
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种基于RRC(李氏制约竞争计数)编码的时钟偏差补偿装置,通常涉及PCIE(PCI-Express,Peripheral Component Interconnect Express)领域,包括序列探测电路、基于RRC编码的写指针产生电路、同步电路、存储单元电路、水线设置电路、基于RRC编码的读指针产生电路,读出控制电路。本发明所设计的弹性缓存深度为16,能够适用于PCIE3.0,使得读写地址更加可靠,并简化读写地址的产生,并完成链路两端时钟偏差的去除。
Description
技术领域
本发明涉及PCIE领域,具体的说是适用于PCIE3.0的弹性缓存,具体涉及一种基于RRC编码的更为安全简便的时钟偏差补偿装置。
背景技术
PCIE是最新的总线和接口标准,是由Intel提出的新一代标准,是一种芯片之间的互连技术以及一种板卡扩展的接口技术。与传统PCI以及更早期的计算机总线的共享并行架构相比,PCIE采用设备间高速、高性能、双单工、串行、差分信号链路来对设备进行互连。PCIE将各类事务按照一定格式编制成包并在链路上进行拆分传输。由于PCIE采用串行差分信号对连接,所以能够轻松的将数据传输速度提高到一个很高的频率,总线带宽理论上可以无限扩展。由于PCIE传输速度高,时钟频率大,如果将高频率的时钟信号传递到对端设备,会在链路上产生很大的电磁干扰噪声,因此PCIE没有将时钟信号在链路上进行传输,而是将时钟信号嵌入到串行数据流中。当串行数据流由差动发送器通过差分信号对传递到对端的差分接收器时,串行数据流经过时钟数据恢复电路(CDR)恢复出接收数据的发送时钟,由数据恢复出的时钟与本地时钟具有相同的名义频率,但是由于一些原因会使恢复时钟域本地时钟之间产生偏差,如设备间频率振荡器的热偏移,又如发送端与接收端基频的不匹配等,所以恢复出的时钟会有偏差,即恢复时钟与本地时钟会有相位的偏差。由于时钟偏差在数据传输过程中会不断的传递,即恢复时钟和本地时钟之间没有固定的相位关系。异步时钟电路之间如果不能够在同步的条件下工作,可能会导致数据的丢失或者数据包传输错误。
弹性缓存可以解决上述出现的异步时钟之间的偏差问题。弹性缓存最初是在电话网络中传输脉冲编码调制信号提出来的,实质上是一个异步先进先出存储器,通过动态地调整写指针和读指针位置,即完成插入或者删除某一特殊的字符来实现时钟偏差的补偿工作,如此可以稳定的在两个时钟域之间同步数据的传输。
PCIE采用分层体系结构,从上到下分别为事务层、数据链路层、物理层,每一层可以分为发送端和接收端两部分,以实现双单工工作模式。其中物理层又可以分为媒体介入控制层(MAC)、物理编码子层(PCS)、物理媒体附属层(PMA)。MAC层和PCS层通过业界标准的接口-PIPE(Phy Interface for PCIE)接口进行互连,以将高速和低速的部分进行分离设计生产。物理层作为PCIE的最低层,负责与对端设备之间进行连接,弹性缓存位于PCS子层中,串行比特流经过串并转换之后输入弹性缓存,完成时钟偏差的补偿工作。
弹性缓存实质上是一个异步先入先出存储单元(异步FIFO),其写时钟为恢复时钟,读时钟为本地时钟。PCIE协议中规定按照一定的时间间隔定期的发送用于时钟偏差去除的特殊字符SKP。当写时钟快于读时钟时,经过一段时间的累积,可能出现写满的情况,如果不做处理,下一次写操作将会覆盖还未经读时钟读取的数据字符,造成数据丢失,弹性缓存可以将存储空间中存在的SKP删除,以防止出现写满的状态;当读时钟快于写时钟时,经过一段时间的累积,可能出现读空的情况,如果不做处理,可能会对已处理的数据进行二次处理,弹性缓存可以向存储空间中写入SKP字符,以防止出现读空的状态。因此,弹性缓存可以通过此方式动态的调整恢复时钟与本地时钟之间的偏差。
PCIE目前最新的协议标准为PCIE3.0,传输速度达到8GT/s。SKIP 有序集被用来补偿链路两端比特速率的偏差,PCIE协议中规定,物理层发送端必须按照固定的时间间隔定期发送SKIP有序集以完成时钟偏差的补偿。当设备运行在PCIE3.0时,链路采用基于通道的只包含扰码的块编码-128b/130b编码(分为数据块和有序集块,每个块的载荷长度为128比特,每个块在进行发送时会添加一个2比特长度的同步头标识),SKIP有序集长度为16个字节,前面12个字符为0xaa。对于采用128b/130b编码的SKIP有序集,发送间隔为370~375个块。协议中规定时钟偏差的容许值为-300ppm~+300ppm,在最坏的情况下,链路两端的时钟偏差为600ppm。由于数据包的发送不能被SKIP有序集打断,所以时钟偏差的最大值出现在发送长包时。PCIE数据包长度最大包为4KB,假设选取SKIP的发送间隔为1538,则在最差情况下,运行在PCIE3.0速度的设备需要容纳7个字符的时钟偏差。
弹性缓存在本质上是一个异步FIFO,写时钟是恢复时钟,读时钟是本地时钟。类似一个FIFO的结构,弹性缓存应该包含写逻辑电路、读逻辑电路、存储单元电路、满空产生电路。
弹性缓存的存储单元目前有两种不同的结构,一种是半满模式(Half-Full),一种是流控模式(Flow-Control)。半满模式是在正常工作情况下(链路两端时钟偏差近似为0),弹性缓存当中有效存储的字符数量应该为存储单元总容量的一半,当有效字符数量超过一半时,说明写时钟比读时钟操作快,如果存储单元中有SKIP有序集时,弹性缓存需要删除SKP字符来使存储单元中的有效字符保持一半;当有效字符数量低于一半时,说明读时钟较写时钟快,如果存储单元中有SKIP有序集,则弹性缓存应该向SKIP有序集当中添加SKP字符,使存储单元中的有效字符数量保持一半。流控模式与半满模式不同,当本地时钟频率较恢复时钟频率快时,流控模式采用与半满模式不同的机制来完成时钟偏差的去除。这种情况下,流控模式的弹性缓存不使用SKIP有序集进行时钟偏差的补偿,而是直接将传递给上游逻辑模块使用的时钟关闭,因此弹性缓存存储单元的大小只需要能够缓存最坏情况下出现的时钟偏差的字符数并单独使用一个存储入口点来产生流控控制信号。但是当恢复时钟频率较本地时钟频率快时,流控模式弹性缓存要使用与半满模式相同的算法,通过删除或者添加SKP字符来补偿时钟偏差。
为了使得弹性缓存能够从两个方向补偿时钟偏差,半满模式的弹性缓存容量必须为最差情况下需要缓存的字符数量的两倍,且在正常情况下当存储单元中存储的有效字节数量少于一半时,读指针不操作,因此会有弹性缓存容量大小一半的延迟。流控模式在存储容量大小上有一点优势,大小为最坏情况下需要缓存的字符的数量,外加一个产生流控控制信号的入口点,但是流控模式只有在读时钟频率较写时钟频率快时工作效果较好,并且流控模式的弹性缓存在使用时,需要仔细的考虑系统中其他逻辑电路的实现方式,实现较半满模式复杂。
基于上述分析,现有的弹性缓存实现大多采用半满模式的存储单元电路,本提案采用半满模式,因此在正常工作时,存储单元中应该含有8个字符,即水线设置为8。
数据由对端设备发送端将适合发送的数据结构由并串转换器将并行数据转换为串行数据,通过差动发送器将数据驱动到链路上,以差分信号的方式传递到本端差动接收器。CDR通过串行比特流恢复出接收数据的时钟信号,并以此恢复时钟将数据通过并串转换电路转换为并行数据,此时数据只是一些单纯的比特信息,在将数据发送到弹性缓存部分进行时钟偏差去除之前,必须确认哪些比特信息为有效信息,即对数据边界进行识别。这部分工作称为块对齐(PCIE3.0),这两部分会产生数据锁定信号,表明已经可以正确的识别数据信息。这部分工作认为在数据输入到PCS子层之前已经完成。
二进制编码可以方便的组成字节、字等现代信息技术的基础数据格式,适用于逻辑电路的计数、计算、存储和交换,但是二进制码的编码相邻码字之间可能会出现两位以上同时变化的现象,多位同时变化会产生竞争,对数据的可靠性产生影响,特别的,在将二进制计数码进行跨时钟域的传递时,由于多位同时变化增加了电路出现亚稳态的概率。现有技术中的格雷码是一种制约竞争码,约束了每次只允许一位发生变化,格雷码保证了数据的可靠性,以及适用于进行跨时钟域的传递,但是格雷码由于不是一种权重码,即没有固定的特征序列,无法用于计数。RRC编码综合了二进制码和格雷码的优点,可以直接用于产生计数码,并且相邻码字之间每次只有一位发生变化,保证了数据的可靠性,并同时适用于跨时钟域的传递。因此,在本方案中,读写指针地址的产生采用基于RRC编码的方案,经过跨时钟域传递之后,通过查找表的方式对读写地址进行减法运算,精确的判断时钟偏差的大小。
发明内容
本发明提供一种适用于PCIE3.0的时钟偏差补偿的弹性缓存装置,其使用基于RRC编码的读写指针产生电路,对深度为16的弹性缓存进行读写,并完成读写指针的跨时钟域传递,能够完成链路两端在高速下产生的时钟偏差,以及简化读写地址产生电路并提高读写地址在进行传递的可靠性。
本发明采用如下方案:本发明设计了一种能够适用于PCIE3.0的弹性缓存装置,包括序列探测电路、基于RRC编码的写指针产生电路、同步电路、存储单元电路、水线设置电路、基于RRC编码的读指针产生电路,读出控制电路。
所述序列探测电路能够正确的检测PCIE3.0 SKIP有序集。
所述写指针产生电路采用基于RRC编码的方案,产生4位写地址作为向存储单元电路写入的地址。
所述同步电路采用两级缓存的同步方式,对基于RRC编码的读写地址进行跨时钟域的同步,且第二级缓存采用下降沿驱动的方式,以更加快速的进行读写地址的传递。
所述存储单元电路深度为16。
所述水线设置电路将基于RRC编码的读写地址通过查找表的方式映射为二进制地址进行减法运算,精确监测存储单元中有效字符的数量,并产生相应控制信号控制读指针保持或者跳跃来完成时钟偏差的SKP字符的添加或者删除,进一步完成时钟偏差的补偿。
所述读指针产生电路采用基于RRC编码的方案,产生4位读地址作为读存储单元数据的地址,能够根据水线设置电路控制读指针的保持或者跳跃来完成SKP的添加或者删除。
所述读出控制电路输出数据及指示信号。
子电路之间相互配合,完成链路两端时钟偏差的补偿工作。时钟偏差的补偿工作完全由读时钟域根据水线设置电路产生的控制信号控制读指针的跳跃或者保持来完成删除或者添加SKP字符的工作。PCIE3.0协议规定,接收端可以对SKIP有序集中的SKP字符进行添加或者删除的操作,每次可以删除或者添加的字符个数为8个,且每次操作以4个字符为单位。
本发明采用以上技术方案,与现有方案相比具有以下优势:
1、本发明采用基于RRC编码的读写指针产生电路,可以更为快捷的产生读写地址指针,同时产生的RRC码地址指针将直接作为存储单元的读写地址。
2、本发明读写地址指针在进行跨时钟域传递以及跨时钟域之后水线设置电路在进行监测存储单元内部有效字节数时,减少码制转换的开销。
附图说明
图1 为本发明方案整体原理架构图
图2 为PCIE3.0 SKIP有序集结构图
图3 为本发明写指针产生电路原理图
图4 为本发明读指针产生电路原理图
图5 为本发明格雷码两级同步电路原理图
图6 为本发明水线设置电路原理图
具体实施方式
下面结合附图,对本发明提供的方案进行详细说明。
本方案所提出的方案如附图1所示。
所述序列探测电路主要负责检测输入数据内包含的SKIP有序集,如果检测到输入数据中包含有效的SKIP有序集,产生SKIP有序集收到指示信号,读时钟域根据水线设置电路和SKIP接收指示信号完成时钟偏差的补偿工作。PCIE3.0的SKIP有序集为一个有序集块,有效数据载荷为128比特,即SKP长度为16个字节。由于接受到的SKIP有序集会由对端设备经过128b/130b编码,所以每个块的开头会包含长度为2比特的同步头,因为SKIP有序集为有序集块,所以所包含的的有同步头根据协议规定为2’b01,此同步头标识在前述块对齐电路中已经从数据流当中取出,伴随数据流并行的发送到后续逻辑电路,并且此同步头标识每个块有且只有一个,因此在当前块的整个持续过程中,此同步头标识不发生改变。根据协议中所描述,PCIE3.0中SKIP有序集的结构如附图2所示。
本方案中PCIE3.0的SKIP检测电路,为了保证检测电路工作的正确性,且根据协议中所描述的,在后续操作中对SKIP有序集的识别中允许的SKIP最短长度为8个字符,因此SKIP有序集匹配的条件为:检测到有序集块的同步头2’b01,且伴随同步头的连续4个字符为SKP字符(0xaa),则可确认当前正在接收的数据位SKIP有序集,相应的SKIP接收指示信号有效;当检测到SKP_END字符(0xe1)时,相应的指示信号取消有效,SKP_END字符后面紧跟的3个字符虽然属于SKIP有序集,但是由于弹性缓存中不会对它们做任何处理,因此在SKIP检测电路中不做要求。
所述写指针产生电路负责产生基于RRC编码的计数码,此计数码将作为存储单元的读写地址,向存储单元中写入数据。在正常工作模式下,写时钟域处于长写模式,即基于RRC编码的计数码处于持续增加的状态,向弹性缓存存储单元中写入数据。写指针的产生采用基于RRC编码的方案,如附图3所示。
所述写指针产生电路采用基于RRC编码的方案,RRC编码是一种反相移位方式的制约竞争计数码电路,包含8位移位寄存器A1,8位移位寄存器B1,4位码输出寄存器C,初始化预置开关D,初始化预置开关E,反相器I1、I2、I3、I4。移位寄存器A1的最高位通过反相器I1与最低位相连,移位寄存器B1的最高位通过方向器I2与最低位相连。由于本方案中写指针在正常工作时处于长写模式,因此输入计数脉冲直接与移位寄存器A1、B1的时钟输入端相接。复位时,移位寄存器A1被初始化预置开关D预置为固定的特征序列1111_1110,而移位寄存器B1则被初始化预置开关B1预置为固定的特征序列0011_1000,。移位寄存器A1并行输出的由低到高的第4位与码输出寄存器C的d2位通过反相器I3相连,移位寄存器A1并行输出最低位与码输出寄存器C的d0位相连,移位寄存器B1并行输出的由低到高第4位与码输出寄存器C的d3位通过反相器I4相连,移位寄存器B1并行输出的最低位与码输出寄存器C的d1位相连。由码输出寄存器C的输出控制端连续输出由高位d3到低位d0的4位制约竞争计数码,对深度为16的存储单元进行读写。
所述读指针产生电路采用与写指针产生电路相同的方案,但是由于本提案中需要通过读指针的保持与跳跃完成SKP字符的删除或者添加工作,因此在读指针产生电路中添加了控制电路如附图4所示。反相移位寄存器A1的最高位通过反相器I1与最低位相连,反相移位寄存器B1最高位通过反相器I2与最低位相连。输入计数脉冲直接与反相移位寄存器A1和反相移位寄存器B1的时钟控制端相接。预置序列开关A0将反相移位寄存器A1预置为特殊序列0011_1000,预置序列开关B0将反相移位寄存器B1预置为特殊序列1111_1110。反相移位寄存器A1并行输出的由低到高的第4 位通过反相器I3连接码输出寄存器C 的数据输入位d2 ,反相移位寄存器B1并行输出的由低位到高位的第4 位通过反相器I4连接码输出寄存器C 的数据输入位d3,反相移位寄存器A1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d0连接,反相移位寄存器B1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d1 连接,由码输出寄存器C的并行输出由高位d3 到低位d0 的4 位制约竞争计数码。输入计数脉冲接与门H第一输入端,。水线设置电路产生的EN信号接与门H的第二输入端。输入计数脉冲和水线设置电路产生的EN信号经过与门H的计算,完成读指针的保持功能。跳跃序列FA1根据水线设置电路产生的控制信号将反相移位寄存器A1置为当前序列的第4个序列。跳跃序列FB1根据水线设置电路产生的控制信号将反相移位寄存器B1置为当前序列的第4个序列。跳跃序列FA1、FB1根据水线设置电路控制信号完成读指针的跳跃功能。
当需要读指针保持时,水线设置电路使EN信号无效,使输入时钟无效,码输出寄存器的值保持不变,读指针实现保持的功能;当需要读指针跳跃时,由于基于RRC编码的制约竞争计数码的产生使依靠移位寄存器将特定的序列进行移位产生不同的输出,因此产生跳跃的读地址必须依靠新的特征序列来实现,图中跳跃序列FA1和FB1根据产生当前读地址的特征序列移位产生。由于PCIE3.0中每次对SKIP进行处理以4个为基数,因此跳跃序列为当前特征序列移位4次的值;在正常情况下,读指针处于长读模式。
所述同步电路负责将读地址指针和写地址指针传递到相对时钟域,基于RRC编码的制约竞争计数码直接连接寄存器REG1的数据输入端,输入计数脉冲接寄存器REG1的时钟控制端。输入计数脉冲通过反相器I5与寄存器REG2的时钟控制端相连。由于需要时刻对存储单元中存储的有效字节的数量进行监测,因此需要将当前读地址指针和写地址指针进行比较,但是读地址指针和写地址指针分别工作在读时钟域和写时钟域,普通方案中采用二进制产生读写地址,读写指针每次发生变化可能有多位,所以直接对读写地址进行比较很容易产生错误比较结果,因此需要进行读写地址指针向相对时钟域进行同步。采用基于RRC编码产生的制约竞争计数码,相邻码字之间只有一位数据发生变化,从根本上消除了电路的竞争冒险现象。格雷码虽然每次只有一位发生变化,但是格雷码本身不是一种权重码,即缺少特征序列,因此无法用来计数。同步电路采用两级缓存同步的方式进行同步,且两级同步一般都使用相同的时钟边沿(上升沿或者下降沿),但是在PCIE中,由于写时钟和读时钟具有相同的名义频率,即频率相同,有所偏差的只是相位偏差,偏差最大为一个周期,因此本方案中使用两级同步的方式,且第一级采用读时钟上升沿,第二级采用读时钟下降沿。不会出现亚稳态,并且采用这种方式的同步方法可以更快速的在相对时钟域中监测地址指针的变化,因此可以更加精确的监测存储单元中存储的有效字节的数量,以更加快速准确的进行时钟偏差的补偿工作。如附图5所示
所述存储单元电路是弹性缓存中的存储空间,由写时钟域将数据写入,由读时钟域将数据读出。存储单元的位宽以及深度是由数据传输的协议以及时钟偏差补偿方案来确定的,根据PCIE协议,当设备运行在PCIE3.0时,最差情况下会产生7个字符的时钟偏差,弹性缓存中的存储空间电路需要能够存储最差情况下的需要移除的字符数量的字符,又本方案中决定采用半满模式,需要14个存储间隔,本方案中考虑提案中对偏差补偿的方法,将深度设置为16,水线设置为8。存储单元的宽度可以根据不同的应用来配置,为了防止在跨时钟域传输数据的时候由于偏差等原因出现数据信息与其他控制信息的不匹配,将数据信息与控制信息进行捆绑存储。特别的,本方案中,将SKIP接收指示信号与数据信息等一起捆绑写入存储单元电路中。
所述水线设置电路负责实时监测存储单元中存储的有效字节的数量,如附图6所示。所述查找表电路E将基于RRC编码的读写地址转换适合进行减法运算的二进制地址。所述减法电路G将新产生的读写地址进行减法运算,产生的结果接比较电路J的第一输入端。所述比较电路J接减法电路G的输出结果,同时连接水线K,将二者进行比较,产生补偿时钟偏差所使用的控制信号,分别连接本方案中其他模块。根据此数量值产生不同的控制信号,完成时钟偏差的补偿工作。水线设置电路将同步后的读写指针进行比较,判断存储单元中有效的字节数量为多少。由于基于RRC编码的制约竞争计数码,无法做减法,因此在水线设置电路中设置查找表,将对应的基于RRC编码的读写指针映射到二进制地址,查找表如表1所示。新产生的读写地址进行减法运算,产生的值为存储单元长有效的字节数量,将存储单元中有效字节数量记为sym_in_buf。
表1 BCD码与RRC码对照表
十六进制数 | BCD码 | RRC码 |
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 1001 |
3 | 0011 | 1011 |
4 | 0100 | 0011 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 1101 |
8 | 1000 | 1111 |
9 | 1001 | 1110 |
A | 1010 | 0110 |
B | 1011 | 0100 |
C | 1100 | 1100 |
D | 1101 | 1000 |
E | 1110 | 1010 |
F | 1111 | 0010 |
实施例1:控制信号的产生
对于运行在PCIE3.0的设备,当sym_in_buf<8时,表明读时钟较写时钟快,弹性缓存需要向存储单元中添加SKP字符来补偿时钟偏差。添加SKP字符的操作完全由读时钟域根据水线设置电路的控制信号控制读指针保持实现,由于每次只能对SKIP有序集进行以4为基数的添加操作,所以在读时钟域需要记录已经添加的SKP字符的数量,当添加的SKP字符数量已经达到预设时,不再根据水线设置电路继续添加SKP字符。由于PCIE3.0要求每次对SKIP有序集进行的SKP字符的添加或者删除必须以4为基数,所以当产生的偏差值小于2时,补偿时钟偏差会引入更大的时钟偏差,所以如果产生的偏差大于等于2,则执行时钟偏差的补偿工作,否则维持现状,写时钟较读时钟快时同理。如果产生的偏差大于等于6,则添加2组SKP字符,即此时读指针应该保持8个周期以完成SKP字符的插入。当sym_in_buf<2时,由读时钟域产生信号表明当前运行已经出现将要读空的状态,此时应产生即将读空的标志信号,但是由于两端时钟存在的偏差有限,所以在有限周期数内数据的读写仍是安全的。当sym_in_buf>7时,表明写时钟较读时钟快,弹性缓存需要删除SKP字符来进行时钟偏差的补偿,由读时钟域根据水线设置电路产生额控制信号控制读指针跳跃实现SKP字符的删除工作,此时同样需要对已删除的SKP字符数量进行计数。当sym_in_buf>13时,由读时钟域产生将要写满的状态。同样的,由于两端时钟偏差有限,在出现即将写满的状态时,在有限的周期内,数据的读写操作仍是安全的。另外值得注意的是,由于存在在即将写满或者读空的状态时,仍然有有限周期数的安全读写操作,且在出现最坏情况下的时钟偏差时,紧跟着必定是SKIP有序集,可以补偿已经出现的时钟偏差,所以本方案中电路不会由于产生的时钟偏差造成读写错误。水线设置电路需要准确的监测当前存储单元电路中存储的有效字节的数量,并且需要产生精确的控制信号来引导时钟偏差的补偿工作。
本方案中水线设置为8,当水线设置电路监测到存储单元内存储的有效字节的数据字节数量低于水线时,且读时钟域监测到存储单元中存储的字节数据有SKP字符时,读指针通过保持的方式来添加SKP字符,因为每次对SKP字符的添加以4个为基数,最多可以添加8个SKP字符,根据产生的偏差值判断需要添加的SKP字符的数量,控制EN信号有效或者无效,并同时需要记录已经添加的SKP字符的数量,当完成预定量的字符添加后,即使水线设置电路产生的低于水线的信号仍然有效也不再向存储单元中添加SKP字符。当水线设置电路监测到存储单元内存储的有效字节的数量超过水线时,且读时钟域监测到存储单元中存在SKIP有序集时,读指针通过跳跃的方式来完成SKP字符的删除,删除的数量每次以4个为基数,具体的删除数量同样需要由水线设置电路根据产生的偏差值来决定,控制跳跃序列FA1和FB1对移位寄存器A1和B1进行重载,并同样需要记录删除的SKP字符的数量,当预定量的SKP字符已经删除,则停止删除SKP字符的操作。
实施例2:初始化之后的读写操作。
本方案中,采用半满模式,即在正常情况下存储单元中有效的字符数量应为8,。复位后,读写地址都为0,因此有效的字节数量为0,此时读指针应还未启动增加,当有效字符数量达到水线时,触发读指针启动,开始向存储单元的数据读写操作。
实施例3:正常情况读写操作
正常情况下,读写指针处于长写模式,弹性空间处于半满模式,即存储单元中7个有效的字节。基于RRC编码的读写地址产生电路连续的产生制约竞争计数码,写逻辑电路依靠写地址连续的向存储单元中写入数据,读逻辑电路依靠读地址连续的从存储单元中读取数据。复位后,移位寄存器A1被预置开关预置为特定序列1111_1110,移位寄存器B1被预置开关预置为特定序列0011_1000,对应制约竞争计数码0000,在本方案中采用递增计数,移位寄存器经反相器循环左移,移位一次后,A1变为1111_1111,B1变为0011_1001,d0=1,d1=0,d2=!1=0,d3=!1=0,即输出码字为0001,对应计数值1,;经过5次循环移位后,A1变为1111_0000,B1变为1001_1100,d0=1,d1=1,d2=1,d3=0,即输出0111,对应计数值5。
实施例4:读时钟较写时钟快的操作
当读时钟较写时钟快时,一定时间内读出的字符数量较写入的字符数量多,经过一段时间的累积,存储空间内存余的有效字节的个数少于8,即低于水线,若在此工作频率下继续工作,经过一定的时间,可能会出现读空的状态,造成数据传输错误,因此弹性缓存必须完成两端设备时钟偏差的补偿工作。当存储单元中有效的字节数量少于水线时,假设出现SKIP有序集,则弹性缓存应向SKIP有序集添加SKP字符完成时钟偏差的去除,考虑PCIE3.0要求每次进行的删除或者添加SKP字符必须以4为基数,为了时钟偏差的补偿工作不会引入更大的时钟偏差,因此当时钟偏差值大于等于2时,才会执行偏差的补偿工作,水线设置电路检测SKIP接收指示信号,等待SKIP有序集。(假设当前产生偏差值为1,而下一次数据传输为最坏情况,即下一次会产生7个偏差,因此本方案中最多必须能补偿8个时钟周期的偏差值,因此存储单元的深度设置为16。)当偏差值大于2且接收到的数据中出现SKIP有序集时,弹性缓存向SKIP有序集添加SKP字符,假设偏差值小于6,则只需要添加一组SKP字符,即只需要添加4个SKP字符。水线设置电路使EN信号无效,读地址停止增加,码输出寄存器开始输出上周期产生的制约计数码,同时计数器启动,计数已经读地址已经保持的周期数,当已经保持了4个周期之后,水线设置电路释放EN信号,读地址重新开始递增,弹性缓存完成时钟偏差的补偿工作。
实施例5:读时钟较写时钟慢的操作
当读时钟较写时钟慢时,一定时间内读出的字符数量较写入的字符数量少,经过一段时间的累积,存储空间内存余的有效字节的个数多于8,即高于水线,若在此工作频率下继续工作,经过一定的时间,可能会出现写满的状态,造成数据传输错误,因此弹性缓存必须完成两端设备时钟偏差的补偿工作。当存储单元中有效的字节数量多于水线时,假设出现SKIP有序集,则弹性缓存应向SKIP有序集添加SKP字符完成时钟偏差的去除,考虑PCIE3.0要求每次进行的删除或者添加SKP字符必须以4为基数,为了时钟偏差的补偿工作不会引入更大的时钟偏差,因此当时钟偏差值大于等于2时,才会执行偏差的补偿工作,水线设置电路控制跳跃序列开始计算,并等待SKIP有序集。(假设当前产生偏差值为1,而下一次数据传输为最坏情况,即下一次会产生7个偏差,因此本方案中最多必须能补偿8个时钟周期的偏差值,因此存储单元的深度设置为16。)当偏差值大于2且接收到的数据中出现SKIP有序集时,弹性缓存从SKIP有序集删除SKP字符,假设偏差值小于6,则只需要删除一组SKP字符,即只需要删除4个SKP字符。水线设置电路使跳跃序列赋值给移位寄存器,此时读地址直接跳跃到当前地址之后的第4个地址,读指针的跳跃完成了SKP字符的删除工作,弹性缓存完成时钟偏差的补偿工作。
Claims (6)
1.一种基于李氏制约竞争计数RRC编码的时钟偏差补偿装置,其特征在于:包括序列探测电路、写指针产生电路、同步电路、存储单元电路、水线设置电路、读指针产生电路;
所述序列探测电路能够正确的检测PCIE3.0 SKIP有序集(PCIE物理层包);
所述写指针产生电路采用基于RRC编码的方案,产生4位写地址作为向存储单元电路写入的地址;
所述同步电路采用两级缓存的同步方式,对基于RRC编码的读写地址进行跨时钟域的同步,且第二级缓存采用下降沿驱动的方式,以更加快速的进行读写地址的传递;
所述存储单元电路深度为16;
所述水线设置电路将基于RRC编码的读写地址通过查找表的方式映射为二进制地址并执行减法运算,精确监测存储单元中有效字符的数量,并产生相应控制信号控制读指针保持或者跳跃来执行SKP(PCIE控制字符)字符的添加或者删除操作以补偿时钟偏差;
所述读指针产生电路采用基于RRC编码的方案,产生4位读地址作为读存储单元数据的地址,能够根据水线设置电路控制读指针的保持或者跳跃来完成SKP的添加或者删除操作。
2.根据权利要求1所述的时钟偏差补偿装置,其特征在于:所述序列检测电路根据接收到的连续4个SKP字符判断SKIP有序集的接收,并置相应指示信号有效;根据接收到SKP_END(PCIE控制字符)字符进一步判断SKIP有序集接收完毕,并置相应指示信号无效。
3.根据权利要求1所述的时钟偏差补偿装置,其特征在于:所述写指针产生电路包括反相移位寄存器A1、反相移位寄存器B1、码输出寄存器C、预置开关A0、预置开关B0、反相器I1、I2、I3、I4,其中:
反相移位寄存器A1的最高位通过反相器I1与最低位相连,反相移位寄存器B1最高位通过反相器I2与最低位相连;
输入计数脉冲直接与反相移位寄存器A1和反相移位寄存器B1的时钟控制端相接;
预置序列开关A0将反相移位寄存器A1预置为特殊序列1111_1110,预置序列开关B0将反相移位寄存器B1预置为特殊序列0011_1000;
反相移位寄存器A1并行输出的由低到高的第4 位通过反相器I3连接码输出寄存器C 的数据输入位d2 ,反相移位寄存器B1并行输出的由低位到高位的第4 位通过反相器I4连接码输出寄存器C 的数据输入位d3,反相移位寄存器A1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d0连接,反相移位寄存器B1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d1 连接,由码输出寄存器C的并行输出由高位d3 到低位d0 的4 位制约竞争计数码。
4.根据权利要求1所述的时钟偏差补偿装置,其特征在于:所述读指针产生电路包括反相移位寄存器A1,反相移位寄存器B1,码输出寄存器C,预置开关A0,预置开关B0,反相器I1、I2、I3、I4,与门H,跳跃序列FA1,跳跃序列FB1,其中:
反相移位寄存器A1的最高位通过反相器I1与最低位相连,反相移位寄存器B1最高位通过反相器I2与最低位相连;
输入计数脉冲直接与反相移位寄存器A1和反相移位寄存器B1的时钟控制端相接;
预置序列开关A0将反相移位寄存器A1预置为特殊序列1111_1110,预置序列开关B0将反相移位寄存器B1预置为特殊序列0011_1000;
反相移位寄存器A1并行输出的由低到高的第4 位通过反相器I3连接码输出寄存器C 的数据输入位d2 ,反相移位寄存器B1并行输出的由低位到高位的第4 位通过反相器I4连接码输出寄存器C 的数据输入位d3,反相移位寄存器A1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d0连接,反相移位寄存器B1并行输出的由低位到高位的第0 位和码输出寄存器C 的数据输入位d1 连接,由码输出寄存器C的并行输出由高位d3 到低位d0 的4 位制约竞争计数码;
输入计数脉冲接与门H第一输入端;
水线设置电路产生的EN信号接与门H的第二输入端;
输入计数脉冲和水线设置电路产生的EN信号经过与门H的计算,完成读指针的保持功能;
跳跃序列FA1根据水线设置电路产生的控制信号将反相移位寄存器A1置为当前序列的第4个序列;
跳跃序列FB1根据水线设置电路产生的控制信号将反相移位寄存器B1置为当前序列的第4个序列;
跳跃序列FA1、FB1根据水线设置电路控制信号完成读指针的跳跃功能。
5.根据权利要求1所述的时钟偏差补偿装置,其特征在于,所述同步电路包括寄存器REG1、寄存器REG2,反相器I5,采用两级缓存同步的方式进行基于RRC编码的读写地址的跨时钟域传递,其中寄存器REG2采用时钟下降沿触发,其中:
基于RRC编码的制约竞争计数码直接连接寄存器REG1的数据输入端,输入计数脉冲接寄存器REG1的时钟控制端;
输入计数脉冲通过反相器I5与寄存器REG2的时钟控制端相连。
6.根据权利要求1所述的时钟偏差补偿装置,其特征在于,所述的水线设置电路包括查找表电路E、水线K、减法电路G、比较电路J;
所述查找表电路E将基于RRC编码的读写地址转换适合进行减法运算的二进制地址;
所述减法电路G将新产生的读写地址进行减法运算,产生的结果接比较电路J的第一输入端;
所述比较电路J接减法电路G的输出结果,同时连接水线K,将二者进行比较,产生补偿时钟偏差所使用的控制信号,分别连接本方案中其他模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410151921.8A CN103885527A (zh) | 2014-04-15 | 2014-04-15 | 一种基于rrc编码的时钟偏差补偿装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410151921.8A CN103885527A (zh) | 2014-04-15 | 2014-04-15 | 一种基于rrc编码的时钟偏差补偿装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103885527A true CN103885527A (zh) | 2014-06-25 |
Family
ID=50954472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410151921.8A Pending CN103885527A (zh) | 2014-04-15 | 2014-04-15 | 一种基于rrc编码的时钟偏差补偿装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885527A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104297722A (zh) * | 2014-10-30 | 2015-01-21 | 东南大学 | 基于rrc的射频测距主、子处理装置、系统及其方法 |
CN104320142A (zh) * | 2014-10-20 | 2015-01-28 | 东南大学 | 一种易扩展制约竞争码的生成电路、扩展方法及扩展电路 |
CN106484631A (zh) * | 2015-08-25 | 2017-03-08 | 安徽大学 | 一种新弹性缓冲器结构及skp添加方法 |
CN109857693A (zh) * | 2019-02-28 | 2019-06-07 | 天津芯海创科技有限公司 | 一种自适应串行时钟序列检测装置及方法 |
CN110007713A (zh) * | 2019-04-16 | 2019-07-12 | 中国人民解放军国防科技大学 | 跨时钟域信号动态调整检查参数的时序检查方法及系统 |
CN110362278A (zh) * | 2019-07-23 | 2019-10-22 | 天津国芯科技有限公司 | 一种高速传输的弹性缓存装置 |
CN111324564A (zh) * | 2020-02-28 | 2020-06-23 | 西安微电子技术研究所 | 一种弹性缓存方法 |
CN114362910A (zh) * | 2021-12-17 | 2022-04-15 | 山东高云半导体科技有限公司 | 以太网时钟的调整方法及装置 |
US11777873B1 (en) * | 2020-11-12 | 2023-10-03 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method and apparatus for managing buffering of data packet of network card, terminal and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799410A (zh) * | 2012-06-19 | 2012-11-28 | 东南大学 | 基于李氏制约竞争计数编码的异步fifo地址转换电路 |
CN103227632A (zh) * | 2013-01-24 | 2013-07-31 | 东南大学 | 基于李氏制约竞争计数编码的16选1数据选择电路 |
CN103297063A (zh) * | 2013-01-24 | 2013-09-11 | 东南大学 | 格雷码转李氏制约竞争计数编码的码制转换电路 |
CN103713689A (zh) * | 2013-12-24 | 2014-04-09 | 江苏华丽网络工程有限公司 | 一种适用于pcie3.0的时钟偏差补偿的方法 |
-
2014
- 2014-04-15 CN CN201410151921.8A patent/CN103885527A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799410A (zh) * | 2012-06-19 | 2012-11-28 | 东南大学 | 基于李氏制约竞争计数编码的异步fifo地址转换电路 |
CN103227632A (zh) * | 2013-01-24 | 2013-07-31 | 东南大学 | 基于李氏制约竞争计数编码的16选1数据选择电路 |
CN103297063A (zh) * | 2013-01-24 | 2013-09-11 | 东南大学 | 格雷码转李氏制约竞争计数编码的码制转换电路 |
CN103713689A (zh) * | 2013-12-24 | 2014-04-09 | 江苏华丽网络工程有限公司 | 一种适用于pcie3.0的时钟偏差补偿的方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104320142A (zh) * | 2014-10-20 | 2015-01-28 | 东南大学 | 一种易扩展制约竞争码的生成电路、扩展方法及扩展电路 |
CN104297722B (zh) * | 2014-10-30 | 2017-04-05 | 东南大学 | 基于rrc的射频测距主、子处理装置、系统及其方法 |
CN104297722A (zh) * | 2014-10-30 | 2015-01-21 | 东南大学 | 基于rrc的射频测距主、子处理装置、系统及其方法 |
CN106484631A (zh) * | 2015-08-25 | 2017-03-08 | 安徽大学 | 一种新弹性缓冲器结构及skp添加方法 |
CN109857693A (zh) * | 2019-02-28 | 2019-06-07 | 天津芯海创科技有限公司 | 一种自适应串行时钟序列检测装置及方法 |
CN110007713B (zh) * | 2019-04-16 | 2020-07-31 | 中国人民解放军国防科技大学 | 跨时钟域信号动态调整检查参数的时序检查方法及系统 |
CN110007713A (zh) * | 2019-04-16 | 2019-07-12 | 中国人民解放军国防科技大学 | 跨时钟域信号动态调整检查参数的时序检查方法及系统 |
CN110362278A (zh) * | 2019-07-23 | 2019-10-22 | 天津国芯科技有限公司 | 一种高速传输的弹性缓存装置 |
CN111324564A (zh) * | 2020-02-28 | 2020-06-23 | 西安微电子技术研究所 | 一种弹性缓存方法 |
CN111324564B (zh) * | 2020-02-28 | 2021-08-24 | 西安微电子技术研究所 | 一种弹性缓存方法 |
US11777873B1 (en) * | 2020-11-12 | 2023-10-03 | Inspur Suzhou Intelligent Technology Co., Ltd. | Method and apparatus for managing buffering of data packet of network card, terminal and storage medium |
CN114362910A (zh) * | 2021-12-17 | 2022-04-15 | 山东高云半导体科技有限公司 | 以太网时钟的调整方法及装置 |
CN114362910B (zh) * | 2021-12-17 | 2024-05-03 | 山东高云半导体科技有限公司 | 以太网时钟的调整方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103885527A (zh) | 一种基于rrc编码的时钟偏差补偿装置 | |
US4692894A (en) | Overflow/Underflow detection for elastic buffer | |
CN102708086B (zh) | 一种应用于usb3.0的弹性缓冲结构及方法 | |
US7310396B1 (en) | Asynchronous FIFO buffer for synchronizing data transfers between clock domains | |
CN102916914B (zh) | 一种模拟前端的数据接收处理系统 | |
US20070177701A1 (en) | Receiver and method for synchronizing and aligning serial streams | |
CN101299647B (zh) | 一种实现sdh业务无损切换的装置和方法 | |
WO1998054645A1 (en) | Continuous byte-stream encoder/decoder using frequency increase and cyclic redundancy check | |
CN102340316A (zh) | 基于fpga的微型空间过采样直流平衡串行解串器 | |
CN103713689A (zh) | 一种适用于pcie3.0的时钟偏差补偿的方法 | |
CN104639410A (zh) | 一种现场总线光纤通信接口的设计方法 | |
CN107171728B (zh) | 1b4b与曼彻斯特编码的正向、反向传输方法及装置、系统 | |
CN101702639A (zh) | 循环冗余校验的校验值计算方法及装置 | |
CN109918332A (zh) | Spi从设备及spi设备 | |
CN202904568U (zh) | 一种应用于usb3.0的弹性缓冲结构 | |
CN106656399A (zh) | 一种基于fpga的光纤数字同步接口系统 | |
KR100617387B1 (ko) | 비동기식 이중선 버스를 이용한 데이터 전송 장치 및 그방법 | |
US20030112827A1 (en) | Method and apparatus for deskewing parallel serial data channels using asynchronous elastic buffers | |
CN114490488B (zh) | 一种低功耗uart串口系统 | |
CN103888211A (zh) | 一种交叉芯片间进行数据传输的方法及装置 | |
CN104009823A (zh) | 一种SerDes技术中的错位检测与纠错电路 | |
CN209765494U (zh) | 一种异步fifo装置 | |
CN204143430U (zh) | 弹性先进先出存储器 | |
CN108614798B (zh) | PCIe链路弹性缓冲区电路 | |
US3193801A (en) | Large gap data communication system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140625 |
|
WD01 | Invention patent application deemed withdrawn after publication |