CN114416626B - 一种基于8b/10b编码的异步串行数据恢复方法 - Google Patents
一种基于8b/10b编码的异步串行数据恢复方法 Download PDFInfo
- Publication number
- CN114416626B CN114416626B CN202111388497.5A CN202111388497A CN114416626B CN 114416626 B CN114416626 B CN 114416626B CN 202111388497 A CN202111388497 A CN 202111388497A CN 114416626 B CN114416626 B CN 114416626B
- Authority
- CN
- China
- Prior art keywords
- data
- 10bit
- bit
- shift register
- transmission frame
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000011084 recovery Methods 0.000 title claims abstract description 29
- 230000005540 biological transmission Effects 0.000 claims abstract description 77
- 230000001360 synchronised effect Effects 0.000 claims abstract description 63
- 238000005070 sampling Methods 0.000 claims abstract description 37
- 238000013461 design Methods 0.000 claims abstract description 11
- 238000009432 framing Methods 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 9
- 208000036448 RPGR-related retinopathy Diseases 0.000 claims description 7
- 201000000467 X-linked cone-rod dystrophy 1 Diseases 0.000 claims description 7
- 230000009191 jumping Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims description 3
- 238000011895 specific detection Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 201000000465 X-linked cone-rod dystrophy 2 Diseases 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种基于8b10b编码的异步串行数据恢复方法,其主要实现步骤为:1、发送端对需要发送的数据进行组帧,组帧后的一帧数据为同步码+有效数据结构;2、发送端对一帧数据的每字节8bit数据按照8B/10B编码规则进行10bit编码后以本地时钟作为串行输出时钟,并按串行方式输出行成10bit数据流;3、接收端对10bit串行数据流以本地采样时钟进行bit位采样,每采样到一个bit位,就将其存入10位的移位寄存器;4、在存入移位寄存器中的串行数据流中检测同步码,以确定字符边界完成当前传输帧的10bit字节对齐;5、将对齐后的10bit数据经8B/10B解码后恢复成原始8bit数据,就完成了当前传输帧的数据恢复。本发明仅通过简单的逻辑代码设计即可实现数据恢复,大大降低了成本。
Description
技术领域
本发明属于通信技术领域,具体涉及一种基于8B/10B编码的异步串行数据恢复方法。
背景技术
随着集成电路技术的发展,通信系统对数据传输速率的要求越来越高,早期的并行传输模式由于速率的提升逐渐暴露出I/O一致性问题,成为提升系统传输速率的瓶颈。因此,串行传输系统备受设计者青睐,串行通信在发送端通过数据编码技术把时钟信号嵌入到数据信号中,在接收端使用时钟恢复技术,从数据中提取同步时钟信号来恢复数据,消除了传输线延迟导致的时序问题对速率的约束,另外串行通信使用点对点连接方式,避免了并行总线的共享机制造成的总线利用率低的问题,通信链路利用率达到100%。
8B/10B作为一种常用的编解码技术,因其直流平衡性好,并且有足够密集的跳变沿,非常有利于接收端的时钟恢复,从而被广泛应用到高速串行通信中。8B/10B编码将待发送的8位数据转换成10位代码组,8bit数据有256种,加上12种控制字符,总共有268种。10bit数据有1024种,可以从中选择出一部分表示8bit数据,所选的码型中0和1的个数应尽量相等。8B/10B编码中常将K28.1、K28.5和K28.7作为K码的控制字符,称为“comma”。在任意数据组合中,comma只作为控制字符出现,而在数据负荷部分不会出现,因此可以用comma字符指示帧的开始和结束标志,或始终修正和数据流对齐的控制字符。
在8B/10B编码的高速串行通信中,接收端的串行数据恢复是关键一环,目前常用的方法包括采用专用解码芯片、多相位时钟采样、FPGASelectIO等数据恢复方法,这些方法或使用额外的硬件资源,或设计复杂且可靠性低,或需要高性能FPGA器件,成本较高。
发明内容
为了解决采用专用解码芯片、多相位时钟采样、FPGASelectIO等方法对接收端的串行数据进行恢复时需要额外的硬件资源,或设计复杂且可靠性低,或需要高性能FPGA器件,成本较高的问题,本发明提供一种基于8B/10B编码的异步串行数据恢复方法。
本发明采用的技术方案如下:
一种基于8B/10B编码的异步串行数据恢复方法,包括以下实施步骤:
步骤1:发送端对需要发送的数据进行组帧,组帧后的一帧数据为同步码+有效数据结构;其中,同步码由M个字节组成,M≥6,且为8B/10B编码中的K码控制字符;有效数据由N个字节组成,N≤2048;
步骤2:发送端将步骤1中一帧数据的每字节8bit数据按照8B/10B编码规则进行10bit编码后以本地时钟作为串行输出时钟,按串行方式输出形成10bit数据流;
步骤3:接收端对10bit数据流以本地采样时钟进行bit位采样,接收端本地采样时钟频率为发送端串行输出时钟频率的k倍,选取(K-1)/2时刻点为bit位最佳采样位置,每采样到一个bit位,就将其存入10位的移位寄存器;
步骤4:在存入移位寄存器中的串行数据流中检测同步码,以确定字符边界完成当前传输帧的10bit字节对齐;
步骤4.1:每向移位寄存器中新存入一个bit位后,将当前移位寄存器中的10bit数据与所述步骤1中同步码的10bit编码进行对比;若一致,将此bit位记为该10bit数据结束边界,开始执行步骤4.2:
步骤4.2:继续向移位寄存器中存入新的bit位,当移位寄存器将步骤4.1中的10bit数据的结束边界bit位移出,即移位寄存器存入全新的10个bit位后,将该10bit数据与同步码的10bit编码进行对比,若一致,再继续向移位寄存器中存入新的bit位,当移位寄存器再次存入全新的10个bit位后,再将该10bit数据与同步码的10bit编码进行对比;
步骤4.3:按照步骤4.2的原则,当连续采集到的多个10bit数据均为同步码的10bit编码后,则确定完成了当前传输帧的10bit字节对齐,否则回到步骤4.1重新开始寻找字符边界;
步骤5:将步骤4.3中对齐后的10bit数据经8B/10B解码后恢复成原始8bit数据,就完成了当前传输帧的数据恢复;
进一步地,在步骤4.3完成了当前传输帧10bit字节对齐后以及步骤5进行解码的过程中,还需继续检测当前传输状态,以便处理下一传输帧开始传输、当前传输帧解码错误、发送端停止发送数据这三种情况;
情况1:下一传输帧开始传输的检测及处理过程为:
完成当前传输帧10bit字节对齐后,将移位寄存器中的10bit数据继续与同步码的10bit编码进行对比,当连续采集到的多个10bit数据均不为同步码的10bit编码后,认为当前传输帧正在传输有效数据,继续检测,当连续采集到多个10bit数据重新变为同步码的10bit编码,认为当前传输帧传输结束,开始下一帧传输,重新回到步骤4.1进行下一传输帧的10bit字节对齐;
情况2:当前传输帧解码错误的检测及处理过程为:
当检测到步骤5中8B/10B解码出现错误时,认为当前传输帧10bit对齐失效,解码后数据为错误数据,重新回到步骤4.1等待下一传输帧到来,进行开始新一轮10bit字节对齐;
情况3:发送端停止发送数据的处理过程为:
当检测到链路上没有信号跳变,即发送端停止发送数据,重新回到步骤4.1等待发送端重新发送数据,进行新一轮10bit字节对齐。
进一步地,上述K的取值根据需求进行设定,K倍采样时钟CLK_KX不得高于FPGA的最高工作频率,K值越大,采样准确度越高。
进一步地,上述步骤3采样的具体过程为:
设计数器Cnt_Ena为0-K循环计数器,当Cnt_Ena=(K-1)/2时,对接收的串行数据进行采样,采样后的数据记为DATA_SAMPLE,同时产生一个采样有效脉冲,设为Bit_Vld;如检测到串行数据跳变沿,将Cnt_Ena重新置为0;
将采样到的数据DATA_SAMPLE依次打入10位的移位寄存器Rx_Data[9:0]中,设Cnt_Val为0-9循环计数器,每打入一位数据,Cnt_Val累加一次。
进一步地,上述步骤4由状态机完成:
所述步骤4.1的具体过程为:
状态机以K_CODE1为初始态,在K_CODE1状态中,移位寄存器Rx_Data[9:0]每存入一位数据,检测一次同步码的10bit正编码,当搜寻到同步码的10bit正编码时,此时认为已经找到第一个同步码,进入下一个状态K_CODE2;
所述步骤4.2和步骤4.3的具体过程为:
在状态K_CODE2中,移位寄存器Rx_Data[9:0]每存入一位数据计数一次,计数达到9时,即移位寄存器Rx_Data[9:0]存入下一个10bit数据时,若移位寄存器Rx_Data[9:0]等于同步码的10bit负编码,此时认为已经连续找到第二个同步码,进入下一个状态,否则跳回状态K_CODE1重新搜索;
在下面的多个状态中,均重复执行状态K_CODE2中的计数策略,若连续多个状态均能找到同步码,也就是找到了正确的字符边界,完成了当前传输帧的10bit字节对齐;将此刻将Cnt_Val的值存入寄存器Win_Opt作为10bit字节对齐确定的对齐位置,同时将对齐有效标志Aligned拉高,进入下一个状态DATA_DET。
进一步地,上述步骤5的具体过程如下:
步骤5.1:以CLK_KX为时钟,每个Bit_Vld采样脉冲有效时,以对齐有效标志Aligned拉高为开始,当Cnt_Val等于Win_Opt情况,输出一个对齐后的10bit数据,产生一个字有效脉冲Word_Vld。
步骤5.2:对齐后的10bit数据在字有效脉冲Word_Vld有效时经8B/10B解码后恢复原始8bit数据,同时产生K_Comma指示符作为当前传输帧的帧有效信号。
进一步地,上述情况1在状态机进行具体检测及处理过程如下:
A1:进入状态DATA_DET,以CLK_KX为时钟,当Bit_Vld有效,同时Cnt_Val等于寄存器Win_Opt时,设计数器Cnt_Data为0-J循环计数器,若移位寄存器Rx_Data[9:0]与同步码的10bit正负编码均不相同,Cnt_Data累加一次,当累加到J时,跳入下一个状态DATA_END1,否则,停留在状态DATA_DET;J的取值不能大于当前传输帧中的有效数据个数;
A2:进入状态DATA_END1,以CLK_KX为时钟,当Bit_Vld有效,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码相同时,跳入下一个状态DATA_END2,否则,停留在状态DATA_END1;
A3:进入状态DATA_END2,设计数器Cnt_End为0-L循环计数器,以CLK_KX为时钟,当Bit_Vld有效,Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码或者负编码相同,Cnt_End累加一次,当累加到L时,表示当前传输帧传输结束,下一帧传输开始,状态机跳回到初始态K_CODE1,开始下一传输帧的10bit字节对齐,否则,停留在状态DATA_END2;其中,L的取值不能大于M-5。
进一步地,上述接收端和发送端均为FPGA。
本发明所具有的积极效果:
1、本发明原理简单,易于在FPGA中实现,且无需借助额外的解码芯片或者使用FPGA的SelectIO高级资源,仅通过简单的逻辑代码设计即可实现,大大降低了设计成本。
2、本发明采用倍频采样方式,占用FPGA专用时钟资源和逻辑资源少,在低成本的FPGA或者CPLD器件上即可实现。
3、本发明在检测到连续多个正负交替的同步码10bit编码均正确后才认为可靠确认字符边界,大大减少误对齐造成数据恢复错误的几率。
4、本发明安全可靠,在每帧数据传输前、发送端断开后以及当前传输帧出现错误的情况下,都重新进行同步对齐,消除了一次同步对齐之后,因为长时间异步串行通信线路上的频率偏移和累计误差带来的丢失同步造成数据恢复错误的问题,大大提高了高速串行传输可靠性。
5、本发明通用性强,适用范围广,可实现几十Mbps到几百Mbps的可靠串行通信,可应用于设备间、处理器间等等不同的通信场景中。
6、本发明可以封装为FPGAIP核,形成独立的串行数据恢复模块,开发人员直接调用IP核可避免重复劳动,大大降低工程师的开发时间。
7、本发明设计逻辑可进一步优化,从而作为相应专用ASIC的设计参考,实现更高性能的高速串行数据恢复。
附图说明
图1本发明的原理图。
图2为本发明状态机工作的工作原理图
具体实施方式
下面结合附图和实施例对本发明的实现原理和具体实施过程进行详细说明。
如图1所示,本发明提供的一种基于8b10b编码的异步串行数据恢复方法,其基本实现原理为:
S1:发送端对需要发送的数据进行组帧,组帧后的一帧数据为同步码+有效数据结构;
S2:发送端对一帧数据的每字节8bit数据按照8B/10B编码规则进行10bit编码后以本地时钟作为串行输出时钟,并按串行方式输出行成10bit数据流;
S3:接收端对10bit串行数据流以本地采样时钟进行bit位采样,每采样到一个bit位,就将其存入10位的移位寄存器。其中,接收端本地采样时钟频率是发送端串行输出时钟频率的k倍;
S4:在存入移位寄存器中的串行数据流中检测同步码,以确定字符边界完成当前传输帧的10bit字节对齐;
S5:将对齐后的10bit数据经8B/10B解码后恢复成原始8bit数据,就完成了当前传输帧的数据恢复。
基于以上对本发明的原理描述,现对本发明的具体实施过程进行详细的介绍:该具体实施过程中:接收端和发送端均为FPGA(但不仅限于FPGA,其他有数字能力的处理芯片均可运行以下程序):
步骤1:发送端对需要发送的数据进行组帧,组帧后的一帧数据为M字节同步码+N字节有效数据结构;
M字节同步码为8B/10B编码中的K码控制字符,称为“comma”,只作为控制字符出现,而在有效数据部分不会出现,用来修正和数据流对齐;M的取值根据需求进行设定,M值越大,接收端字节对齐越可靠,M≥6;
N的取值根据需求进行设定,N值越大,一帧传输数据越多,传输时间越长,异步传输带来的频率偏移和累计误差越大,N≤2048;
步骤2:发送端对一帧数据的每字节8bit数据按照8B/10B编码规则进行10bit编码后,以本地时钟CLK_1X作为串行输出时钟,按串行方式输出,形成10bit数据流;
步骤3:接收端对10bit数据流通过本地采样时钟CLK_KX进行bit位采样,该采样时钟频率为发送端串行输出时钟CLK_1X的K倍;每采样到一个bit位,就将其存入10位的移位寄存器;
其中,K的取值根据需求进行设定,一般为奇数,K倍采样时钟CLK_KX不得高于FPGA最高工作频率,K值越大,采样准确度越高。
该具体采样过程为:设计数器Cnt_Ena为0-K循环计数器,以CLK_KX为时钟,当Cnt_Ena=(K-1)/2时,以CLK_KX对接收的串行数据进行采样,采样后的数据记为DATA_SAMPLE,同时产生一个采样有效脉冲,设为Bit_Vld。如检测到串行数据跳变沿,将Cnt_Ena重新置为0;将采样到的数据DATA_SAMPLE依次存入10位的移位寄存器Rx_Data[9:0];Cnt_Val为0-9循环计数器,每打入一位数据,Cnt_Val累加一次。
步骤4:如图2所示状态机用来在存入移位寄存器中的串行数据流中检测同步码,以确定字符边界完成10bit字节对齐,并检测当前传输状态,处理异常情况;采用移位寄存器Rx_Data[9:0]连续正负正负为交替四次同步码的10bit编码即认为对齐的方式,也可增加或减少确认次数,减少次数对齐越不可靠,增加次数对齐越可靠但对齐时间越长,效率降低;
步骤4.1:状态机以K_CODE1为初始态,在K_CODE1状态中,移位寄存器Rx_Data[9:0]每存入一位数据,检测一次同步字符的10bit正编码,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码相同时,此时认为已经找到第一个同步字符,状态机跳入K_CODE2,否则停留在K_CODE1继续寻找。
步骤4.2:状态机进入K_CODE2,设Bit_Cnt为0-9循环计数器,以CLK_KX为时钟,当Bit_Vld有效,Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit负编码相同,状态机跳入K_CODE3,否则,状态机跳回K_CODE1。
步骤4.3:状态机进入K_CODE3,以CLK_KX为时钟,当Bit_Vld有效,Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码相同,状态机跳入K_CODE4,否则,状态机跳回K_CODE1。
步骤4.4:状态机进入K_CODE4,以CLK_KX为时钟,当Bit_Vld有效,Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit负编码相同,则确定完成了当前传输帧的10bit字节对齐;状态机跳入DATA_DET,并将此时步骤3中Cnt_Val的值存入Win_Opt寄存器作为10bit字节对齐确定的对齐位置,同时将对齐有效标志Aligned拉高,否则,状态机跳回K_CODE1;
步骤5:在对齐有效标志Aligned拉高后,以CLK_KX为时钟,每个Bit_Vld有效,且Cnt_Val等于Win_Opt时,将移位寄存器Rx_Data[9:0]存入对齐后的10bit数据寄存器Rx_Data_Aligned[9:0]中,同时产生一个字对齐脉冲Word_Vld,在每一个字对齐脉冲Word_Vld有效时,将对齐后的10bit数据寄存器Rx_Data_Aligned[9:0]经8B/10B解码产生8bit数据Rx_Data_Decode[7:0],同时产生区分同步字符和有效数据的K_Comma指示符,那么Rx_Data_Decode[7:0]即为恢复出来的8bit原始数据,K_Comma指示符为当前传输帧的帧有效信号,至此完成了当前传输帧的串行数据完整恢复流程。
此处还需要说明的是:当步骤4.4完成了当前传输帧10bit字节对齐后,状态机跳入DATA_DET,进行当前帧传输状态的检测,其具体实施过程为:
A1:状态机进入DATA_DET(检测有效数据状态),以CLK_KX为时钟,当Bit_Vld有效,同时Cnt_Val等于寄存器Win_Opt时,设计数器Cnt_Data为0-J循环计数器,若移位寄存器Rx_Data[9:0]与同步码的10bit正负编码均不相同,Cnt_Data累加一次,当累加到J时,状态机跳入DATA_END1,否则,状态机停留在DATA_DET;J的取值根据需求进行设定,不能大于当前传输帧中的有效数据个数;
A2:状态机进入DATA_END1,以CLK_KX为时钟,当Bit_Vld有效,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码相同时,状态机跳入DATA_END2,否则,状态机停留在DATA_END1;
A3::状态机进入DATA_END2,设计数器Cnt_End为0-L循环计数器,以CLK_KX为时钟,当Bit_Vld有效,Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码或者负编码相同,Cnt_End累加一次,当累加到L时,表示当前传输帧传输结束,下一帧传输开始,状态机跳回到初始态K_CODE1,开始准备进行下一传输帧的同步对齐,否则,状态机停留在DATA_END2。其中,L的取值根据需求进行设定,不能大于M-5;
前述步骤A1-A3中,在状态机处于DATA_DET、DATA_END1、DATA_END2中时,当检测到发送端停止发送数据,即信号电平连续不变时,需要重新回到初始态K_CODE1(即步骤4.1)等待发送端重新发送数据,进行新一轮10bit字节对齐;
或者当检测到对齐后的10bit数据经解码后出现错误数据时,将对齐有效标志Aligned拉低,重新回到初始态K_CODE1(即步骤4.1),等待下一传输帧到来,进行新一轮10bit字节对齐。
总而言之,本发明可以实现基于8b10b编码的异步串行数据恢复,逻辑设计简单,数据恢复安全可靠。
本领域技术人员在本发明的基础上进行的通常变化和替换包含在本发明的保护范围之内。
Claims (7)
1.一种基于8B/10B编码的异步串行数据恢复方法,其特征在于,包括以下步骤:
步骤1:发送端对需要发送的数据进行组帧,组帧后的一帧数据为同步码+有效数据结构;其中,同步码由M个字节组成,M≥6,且为8B/10B编码中的K码控制字符;有效数据由N个字节组成,N≤2048;
步骤2:发送端将步骤1中一帧数据的每字节8bit数据按照8B/10B编码规则进行10bit编码后以本地时钟作为串行输出时钟,按串行方式输出形成10bit数据流;
步骤3:接收端对10bit数据流以本地采样时钟进行bit位采样,接收端本地采样时钟频率为发送端串行输出时钟频率的k倍,选取(K-1)/2时刻点为bit位最佳采样位置,每采样到一个bit位,就将其存入10位的移位寄存器;
步骤4:使用状态机在存入移位寄存器中的串行数据流中检测同步码,以确定字符边界完成当前传输帧的10bit字节对齐;
步骤4.1:每向移位寄存器中新存入一个bit位后,将当前移位寄存器中的10bit数据与所述步骤1中同步码的10bit编码进行对比;若一致,将此bit位记为该10bit数据结束边界,开始执行步骤4.2;具体为:
状态机以K_CODE1为初始态,在K_CODE1状态中,移位寄存器Rx_Data[9:0]每存入一位数据,检测一次同步码的10bit正编码,当搜寻到同步码的10bit正编码时,此时认为已经找到第一个同步码,进入下一个状态K_CODE2;
步骤4.2:继续向移位寄存器中存入新的bit位,当移位寄存器将步骤4.1中的10bit数据的结束边界bit位移出,即移位寄存器存入全新的10个bit位后,将该10bit数据与同步码的10bit编码进行对比,若一致,再继续向移位寄存器中存入新的bit位,当移位寄存器再次存入全新的10个bit位后,再将该10bit数据与同步码的10bit编码进行对比;重复以上步骤,当连续采集到的多个10bit数据均为同步码的10bit编码后,则确定完成了当前传输帧的10bit字节对齐,否则回到步骤4.1重新开始寻找字符边界;具体为:
在状态K_CODE2中,移位寄存器Rx_Data[9:0]每存入一位数据计数一次,计数达到9时,即移位寄存器Rx_Data[9:0]存入下一个10bit数据时,若移位寄存器Rx_Data[9:0]等于同步码的10bit负编码,此时认为已经连续找到第二个同步码,进入下一个状态,否则跳回状态K_CODE1重新搜索;
在下面的多个状态中,均重复执行状态K_CODE2中的计数策略,若连续多个状态均能找到同步码,也就是找到了正确的字符边界,完成了当前传输帧的10bit字节对齐;将此刻将Cnt_Val的值存入寄存器Win_Opt作为10bit字节对齐确定的对齐位置,同时将对齐有效标志Aligned拉高,进入下一个状态DATA_DET;
步骤5:将步骤4.2中对齐后的10bit数据经8B/10B解码后恢复成原始8bit数据,就完成了当前传输帧的数据恢复。
2.根据权利要求1所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:在步骤4.2完成了当前传输帧10bit字节对齐后以及步骤5进行解码的过程中,还需继续检测当前传输状态,以便处理下一传输帧开始传输、当前传输帧解码错误、发送端停止发送数据这三种情况;
情况1:下一传输帧开始传输的检测及处理过程为:
完成当前传输帧10bit字节对齐后,将移位寄存器中的10bit数据继续与同步码的10bit编码进行对比,当连续采集到的多个10bit数据均不为同步码的10bit编码后,认为当前传输帧正在传输有效数据,继续检测,当连续采集到多个10bit数据重新变为同步码的10bit编码,认为当前传输帧传输结束,开始下一帧传输,重新回到步骤4.1进行下一传输帧的10bit字节对齐;
情况2:当前传输帧解码错误的检测及处理过程为:
当检测到步骤5中8B/10B解码出现错误时,认为当前传输帧10bit对齐失效,解码后数据为错误数据,重新回到步骤4.1等待下一传输帧到来,进行开始新一轮10bit字节对齐;
情况3:发送端停止发送数据的处理过程为:
当检测到链路上没有信号跳变,即发送端停止发送数据,重新回到步骤4.1等待发送端重新发送数据,进行新一轮10bit字节对齐。
3.根据权利要求2所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:所述K的取值根据需求进行设定,K倍采样时钟CLK_KX不得高于FPGA的最高工作频率,K值越大,采样准确度越高。
4.根据权利要求3所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:所述步骤3采样的具体过程为:
设计数器Cnt_Ena为0-K循环计数器,当Cnt_Ena=(K-1)/2时,对接收的串行数据进行采样,采样后的数据记为DATA_SAMPLE,同时产生一个采样有效脉冲,设为Bit_Vld;如检测到串行数据跳变沿,将Cnt_Ena重新置为0;
将采样到的数据DATA_SAMPLE依次打入10位的移位寄存器Rx_Data[9:0]中,设Cnt_Val为0-9循环计数器,每打入一位数据,Cnt_Val累加一次。
5.根据权利要求4所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:所述步骤5的具体过程如下:
步骤5.1:以CLK_KX为时钟,每个Bit_Vld采样脉冲有效时,以对齐有效标志Aligned拉高为开始,当Cnt_Val等于Win_Opt情况,输出一个对齐后的10bit数据,产生一个字有效脉冲Word_Vld;
步骤5.2:对齐后的10bit数据在字有效脉冲Word_Vld有效时经8B/10B解码后恢复原始8bit数据,同时产生K_Comma指示符作为当前传输帧的帧有效信号。
6.根据权利要求5所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:情况1在状态机进行具体检测及处理过程如下:
A1:进入状态DATA_DET,以CLK_KX为时钟,当Bit_Vld有效, 同时Cnt_Val等于寄存器Win_Opt时,设计数器Cnt_Data为0-J循环计数器,若移位寄存器Rx_Data[9:0]与同步码的10bit正负编码均不相同,Cnt_Data累加一次,当累加到J时,跳入下一个状态DATA_END1,否则,停留在状态DATA_DET;J的取值不能大于当前传输帧中的有效数据个数;
A2:进入状态DATA_END1,以CLK_KX为时钟,当Bit_Vld有效,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码相同时,跳入下一个状态DATA_END2,否则,停留在状态DATA_END1;
A3:进入状态DATA_END2,设计数器Cnt_End为0-L循环计数器,以CLK_KX为时钟,当Bit_Vld有效, Bit_Cnt累加一次,当Bit_Cnt等于9时,若移位寄存器Rx_Data[9:0]与同步码的10bit正编码或者负编码相同,Cnt_End累加一次,当累加到L时,表示当前传输帧传输结束,下一帧传输开始,状态机跳回到初始态K_CODE1,开始下一传输帧的10bit字节对齐,否则,停留在状态DATA_END2;其中,L的取值不能大于M-5。
7.根据权利要求1-6任一权利要求所述的基于8B/10B编码的异步串行数据恢复方法,其特征在于:接收端和发送端均为FPGA。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111388497.5A CN114416626B (zh) | 2021-11-22 | 2021-11-22 | 一种基于8b/10b编码的异步串行数据恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111388497.5A CN114416626B (zh) | 2021-11-22 | 2021-11-22 | 一种基于8b/10b编码的异步串行数据恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416626A CN114416626A (zh) | 2022-04-29 |
CN114416626B true CN114416626B (zh) | 2024-04-12 |
Family
ID=81265691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111388497.5A Active CN114416626B (zh) | 2021-11-22 | 2021-11-22 | 一种基于8b/10b编码的异步串行数据恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416626B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361064B (zh) * | 2022-07-27 | 2023-09-01 | 中国船舶集团有限公司第七二四研究所 | 一种多路光纤数据传输的同步信号自动对准方法 |
CN115664622B (zh) * | 2022-10-18 | 2023-07-04 | 安徽共芯光子科技有限公司 | 一种曼彻斯特解码方法 |
CN116015550B (zh) * | 2022-11-17 | 2024-07-02 | 飞腾信息技术有限公司 | 一种k码检测电路、k码检测方法及相关设备 |
CN116015543A (zh) * | 2022-12-08 | 2023-04-25 | 天津津航计算技术研究所 | 一种基于总线型fc网络数据快速恢复的方法 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN87102265A (zh) * | 1986-03-26 | 1987-10-07 | 北方电信有限公司 | 冗余编码二进制数据的信道化串行传输方法和设备 |
JPH04167738A (ja) * | 1990-10-31 | 1992-06-15 | Nec Corp | 調歩同期通信速度検出装置 |
JP2004312782A (ja) * | 1996-09-02 | 2004-11-04 | Toshiba Corp | 情報伝送方法 |
RU2272360C1 (ru) * | 2004-08-31 | 2006-03-20 | Сергей Маратович Сухман | Устройство для передачи данных |
CN101459815A (zh) * | 2008-12-31 | 2009-06-17 | 瑞斯康达科技发展股份有限公司 | 视频光端机数据传输方法和视频接收机解码方法 |
US8599841B1 (en) * | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
CN104639410A (zh) * | 2013-11-13 | 2015-05-20 | 沈阳高精数控技术有限公司 | 一种现场总线光纤通信接口的设计方法 |
WO2018117005A1 (ja) * | 2016-12-19 | 2018-06-28 | Hoya株式会社 | データ処理装置 |
CN108449567A (zh) * | 2018-03-23 | 2018-08-24 | 广州市奥威亚电子科技有限公司 | 一种用于传输数字视频的方法及装置 |
CN108809618A (zh) * | 2018-05-18 | 2018-11-13 | 国电南瑞科技股份有限公司 | 一种8b10b编码串行数据的时钟恢复方法 |
CN109450610A (zh) * | 2018-12-26 | 2019-03-08 | 成都九芯微科技有限公司 | 一种通道相位对齐电路及方法 |
CN110034915A (zh) * | 2019-04-19 | 2019-07-19 | 哈尔滨工业大学 | 一种应用于阵列式探地雷达的高速异步串行数据传输方法 |
CN110851390A (zh) * | 2019-09-29 | 2020-02-28 | 北京航天长征飞行器研究所 | 一种基于fpga实现4m 1553b总线协议的方法及系统 |
-
2021
- 2021-11-22 CN CN202111388497.5A patent/CN114416626B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN87102265A (zh) * | 1986-03-26 | 1987-10-07 | 北方电信有限公司 | 冗余编码二进制数据的信道化串行传输方法和设备 |
JPH04167738A (ja) * | 1990-10-31 | 1992-06-15 | Nec Corp | 調歩同期通信速度検出装置 |
JP2004312782A (ja) * | 1996-09-02 | 2004-11-04 | Toshiba Corp | 情報伝送方法 |
RU2272360C1 (ru) * | 2004-08-31 | 2006-03-20 | Сергей Маратович Сухман | Устройство для передачи данных |
US8599841B1 (en) * | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
CN101459815A (zh) * | 2008-12-31 | 2009-06-17 | 瑞斯康达科技发展股份有限公司 | 视频光端机数据传输方法和视频接收机解码方法 |
CN104639410A (zh) * | 2013-11-13 | 2015-05-20 | 沈阳高精数控技术有限公司 | 一种现场总线光纤通信接口的设计方法 |
WO2018117005A1 (ja) * | 2016-12-19 | 2018-06-28 | Hoya株式会社 | データ処理装置 |
CN108449567A (zh) * | 2018-03-23 | 2018-08-24 | 广州市奥威亚电子科技有限公司 | 一种用于传输数字视频的方法及装置 |
CN108809618A (zh) * | 2018-05-18 | 2018-11-13 | 国电南瑞科技股份有限公司 | 一种8b10b编码串行数据的时钟恢复方法 |
CN109450610A (zh) * | 2018-12-26 | 2019-03-08 | 成都九芯微科技有限公司 | 一种通道相位对齐电路及方法 |
CN110034915A (zh) * | 2019-04-19 | 2019-07-19 | 哈尔滨工业大学 | 一种应用于阵列式探地雷达的高速异步串行数据传输方法 |
CN110851390A (zh) * | 2019-09-29 | 2020-02-28 | 北京航天长征飞行器研究所 | 一种基于fpga实现4m 1553b总线协议的方法及系统 |
Non-Patent Citations (1)
Title |
---|
基于FPGA的高速串行码流接收器;袁建富;颜晗;华波;蒋佳佳;段发阶;李彦超;薛俊;袁文澹;;纳米技术与精密工程;20160515(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114416626A (zh) | 2022-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114416626B (zh) | 一种基于8b/10b编码的异步串行数据恢复方法 | |
CN104008078B (zh) | 一种基于fpga的数据传输板之间进行高速传输的方法 | |
CN109756303B (zh) | 一种单工异步曼彻斯特码接收解码方法 | |
CN105406937B (zh) | 定帧方法及装置 | |
JP5230367B2 (ja) | パラレル光伝送装置及び方法 | |
JP2007267392A (ja) | 集積回路間のポイントツーポイント通信のための物理インタフェースでのエラー検出 | |
CN112187789B (zh) | 一种数据链路协议转换系统 | |
US20060193343A1 (en) | Apparatus and method for recognizing Frame Check Sequence in Generic Framing Procedure encapsulation mode | |
CN114221657A (zh) | 一种管脚优化的多通道adc数据传输装置 | |
US7194008B2 (en) | Method and apparatus for parsing data streams | |
US8145973B2 (en) | Data processing apparatus and method, and program | |
EP0430050A2 (en) | Asynchronous priority select logic | |
CN112749119B (zh) | 一种基于fpga资源实现asi接口功能的ip核 | |
CN102256118B (zh) | 一种ts码流同步电路及方法 | |
CN116015324A (zh) | 一种强化抗干扰的uart数据接收装置及其接收方法 | |
CN113810071B (zh) | 一种自适应线序调整方法、装置、设备、系统及存储介质 | |
CN113726693B (zh) | 一种fpga片间低速并行异步通信方法及通信系统 | |
CN104009823A (zh) | 一种SerDes技术中的错位检测与纠错电路 | |
CN102737208B (zh) | 一种超高频电子标签译码mmc型数据的方法 | |
US7928884B2 (en) | Analog-to-digital converter with a balanced output | |
JP2710525B2 (ja) | ジッタ抑制回路 | |
US8218701B2 (en) | Communication system | |
US10306027B2 (en) | Frame delineation method for a generic framing procedure | |
CN116318528A (zh) | 曼彻斯特解码方法和装置以及应用其的电池管理系统 | |
JPH03235441A (ja) | セル同期回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |