一种基于8B/10B编解码的串行传输方法及系统与流程

文档序号:12464396阅读:323来源:国知局
一种基于8B/10B编解码的串行传输方法及系统与流程

本发明属于通信技术领域,尤其涉及一种基于8B/10B编解码的串行传输方法及系统。



背景技术:

目前8B/10B编解码在串行数据传输上有较为普遍的应用,然而现有的FPGA内置硬核基本仅适用于常用的协议,如:以太网协议,不够灵活,无法满足特定领域的数据格式的要求,如:2711格式数据。目前,在FPGA上实现2711格式数据的串行传输的方式一般为:由FPGA提供较多数目管脚,通过多数目管脚连接针对2711格式数据的专用芯片,然后利用该专用芯片来实现2711格式数据的串行传输,这种方式不仅需要针对2711格式数据的字符开发专用芯片,成本较高,而且还需要在FPGA上设置较多数目管脚,使得FPGA的结构较为复杂。



技术实现要素:

本发明实施例的目的在于提供一种基于8B/10B编解码的串行传输方法及系统,旨在解决现有的在FPGA上实现2711格式数据的串行传输的方式需要针对2711格式数据的字符开发专用芯片,成本较高,而且还需要在FPGA上设置较多数目管脚,使得FPGA的结构较为复杂的问题。

本发明实施例是这样实现的,一种基于8B/10B编解码的串行传输方法,包括:

串行数据发送端将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据;

所述串行数据发送端将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端;

所述串行数据接收端接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据;

所述串行数据接收端对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据。

另一方面本发明实施例提供一种基于8B/10B编解码的串行传输系统,包括串行数据发送端和串行数据接收端,所述串行数据发送端包括8B/10B编码单元和串并发送单元,所述串行数据接收端包括8B/10B解码单元和串并接收单元,其中:

所述8B/10B编码单元,用于将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据;

所述串并发送单元,用于将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端;

所述串并接收单元,用于接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据;

所述8B/10B解码单元,用于对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据。

本发明实施例通过串行数据发送端将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据;所述串行数据发送端将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端;所述串行数据接收端接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据;所述串行数据接收端对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据,从而实现了2711格式数据字符的串行传输,弥补了现有的FPGA内置硬核不能满足2711格式数据的串行传输,需要针对2711格式数据开发专用芯片的缺陷,降低了串行传输的通信成本,并且无需在FPGA上设置多个用于连接专用芯片的通用管脚,简化了FPGA的结构。

附图说明

图1是本发明实施例提供的一种基于8B/10B编解码的串行传输方法的示意流程图;

图2是本发明实施例提供的一种基于8B/10B编解码的串行传输方法中将16bit并行数据编码成20bit并行数据原理的示意图;

图3是本发明实施例提供的一种基于8B/10B编解码的串行传输方法中RD值计算原理的示意图;

图4是本发明实施例提供的一种基于8B/10B编解码的串行传输方法中检测comma字符位置原理的示意图;

图5是本发明实施例提供的一种基于8B/10B编解码的串行传输方法中将20bit并行数据解码成16bit并行数据原理的示意图;

图6是本发明实施例提供的一种基于8B/10B编解码的串行传输系统的示意性框图;

图7是本发明实施例提供的一种基于8B/10B编解码的串行传输系统中8B/10B编码单元的示意性框图;

图8是本发明实施例提供的一种基于8B/10B编解码的串行传输系统中8B/10B解码单元的示意性框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1是本发明实施例提供的一种基于8B/10B编解码的串行传输方法的示意流程图。参见图1所示,本实施例提供的一种基于8B/10B编解码的串行传输方法可以包括以下步骤:

在S101中,串行数据发送端将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据。其中,所述特定格式为2711格式。

在本实施例中,步骤S101具体包括:

将所述16bit并行数据拆分为两个8bit并行数据,并将所述两个8bit并行数据均拆分为高3bit和低5bit两个部分;

对所述两个8bit并行数据的高3bit进行3B/4B编码、低5bit进行5B/6B编码得到两组10bit的有效编码数据,并将所述两组10bit的有效编码数据合成为所述20bit并行数据。

其中,所述对所述两个8bit的高3bit进行3B/4B编码、低5bit进行5B/6B编码得到两组10bit的有效编码数据,并将所述两组10bit的有效编码数据合成为所述20bit并行数据包括:

分别将所述高3bit和所述低5bit作为3B/4B编码的ROM表和4B/5B编码的ROM表的地址值进行查表;

将上一个周期20bit并行数据中最后一个数据子块的最终RD值作为本周期20bit并行数据中第一个数据子块的初始RD值;

根据查表结果和所述第一个数据子块的初始RD值获取两组10bit的有效编码数据;

检测Comma字符的输入,并根据检测到的Comma字符生成相应的K码;

根据所述两组10bit的有效编码数据和所述K码生成20bit并行数据。

参见图2所示,在本实施例中,所述串行数据发送端包括两个3B/4B编码的ROM表和两个5B/6B编码的ROM表。其中,3B/4B编码的ROM表的结构为5×8,即深度为8,位宽为5。由于每一个3B值对应一个查找表的输出,因此深度为8.每一个输出值的位宽为5,其中bit3~bit0对应每一个3B值在RD为负的时候的4B编码值,bit4指示此3B值是否对应两个4B编码值,当bit4为“1”时,表示该3B值对应有两个反相的4B编码值,当bit4为“0”时,表示该3B值只对应有一个4B编码值。其中,5B/6B编码的ROM表的结构为7×32,即深度为32,位宽为7。每一个5B值对应一个查找表的输出,因此深度为32。每一个输出值的位宽为7,其中bit5~bit0对应每一个5B值在RD为负的时候的6B编码值,bit6指示此5B值是否对应有两个6B编码值,当bit6为“1”时表示该5B值对应有两个反相的6B编码值,当6bit为“0”时表示该5B值只对应有一个6B编码值。本实施例中,采用的上述两种结构的ROM表的形式,相对于现有技术中采用的每一个3B值或者5B值均对应两个映射的4B或5B值的查找表,可以节省40%左右的存储资源。

在本实施例中,当查找到每个3B值或5B值对应有两个4B编码值或者6B编码值时,可以进一步根据RD值来选择其中一个作为有效的编码值。具体的,如图3所示,在本实施例每个周期的20bit的编码分为四个子块31~34:两个4bit子块33、31和两个6bit子块34、32,按照从低位到高位的顺序排列。上一个周期的最终RD值rd_4b_2h经D型触发器35处理后作为第一个6bit子块的初始RD值rd_last_col,第一个6bit子块的结束RD值rd_6b_1h作为第二个4bit子块的初始RD值,第二个4bit子块的结束RD值rd_4b_1h作为第三个6bit子块的初始RD值,第三个6bit子块的结束RD值rd_6b_2h作为第四个4bit子块的初始RD值。

在本实施例中,通过将高、低位输入信号tk_msb、tk_lsb分别经反相器21处理后作为逻辑与门22的两个输入信号,然后根据逻辑与门22的输出信号d_code_valid_dly1来检测输入的数据是否为comma字符,进而根据检测到的comma字符生成相应的K码。进一步的,comma字符至少包括起始符、空闲符和结束符三种特殊字符,相应的K码值至少包括分别与所述起始符、空闲符和结束符相应的起始码、空闲码和结束码。

在本实施例中,在得到两组10bit的有效编码数据和K码后,即可根据所述两组10bit的有效编码数据和所述K码生成20bit并行数据。

在S102中,所述串行数据发送端将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端。

在S103中,所述串行数据接收端接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据。

在S104中,所述串行数据接收端对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据。

在本实施例中,步骤S104具体包括:

所述串行数据接收端检测出所述20bit并行数据中Comma字符的位置;

根据所述Comma字符的位置定位出所述20bit并行数据中两组10bit的有效编码数据,并将所述两组10bit的有效编码数据均拆分为高4bit和低6bit两个部分;

对所述两组10bit的有效编码数据的高4bit进行3B/4B解码,低6bit进行5B/6B解码得到两个8bit的解码数据,并将所述两组8bit的解码数据合成为所述特定格式的16bit并行数据。

参见图4所示,在本实施例中,经串转并后,一个20bit的Comma字符一般会横跨两个周期。将原始的接收数据延迟一拍和接下来的一拍新的接收数据组成一个40bit数据,在这40bit数据中从bit0开始逐位搜索Comma字符,当找到Comma字符后确定后续有效数据编码的位置。其中,图4中的41当前周期数据,42为延迟一拍数据。

其中,对所述两组10bit的有效编码数据的高4bit进行3B/4B解码,低6bit进行5B/6B解码得到两个8bit的解码数据,并将所述两组8bit的解码数据合成为所述特定格式的16bit并行数据具体包括:

分别将两组10bit的有效编码数据的所述高4bit和所述低6bit作为3B/4B解码的ROM表和4B/5B解码的ROM表的地址值进行查表得到两个8bit的解码数据;

根据所述两个8bit的解码数据生成所述特定格式的16bit并行数据。

在本实施例中,所述串行数据接收端包括两个3B/4B解码的ROM表和两个5B/6B解码ROM表。其中,3B/4B解码的ROM表的结构为4×16,即深度为16,位宽为4。每一个4B编码制对应一个查找表的输出,因此深度为16。每一个输出值的位宽为4,其中bit2~bit0对应每一个4B编码值的解码输出值,bit3指示该4B编码值是否为非法值,当bit3为“1”时表示非法。其中,5B/6B解码的ROM表的结构为6×64,即深度为64,位宽为6。每一个6B值对应一个查找表的输出,因此深度为64。每一个输出值的位宽为6,其中bit4~bit0对应每一个6B编码值的解码输出值,bit5指示该6B编码值是否为非法值,当bit5为“1”时表示非法。其中,解码原理可参见图5所示。

以上可以看出,本实施例提供的一种基于8B/10B编解码的串行传输方法通过串行数据发送端将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据;所述串行数据发送端将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端;所述串行数据接收端接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据;所述串行数据接收端对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据,从而实现了2711格式数据字符的串行传输,弥补了现有的FPGA内置硬核不能满足2711格式数据的串行传输,需要针对2711格式数据开发专用芯片的缺陷,降低了串行传输的通信成本,并且无需在FPGA上设置多个用于连接专用芯片的通用管脚,简化了FPGA的结构。

图6是本发明实施例提供的一种基于8B/10B编解码的串行传输系统的示意性框图,该系统用于运行图1所示实施例提供的方法。为了便于说明仅仅示出了与本实施例相关的部分。

参见图6所示,本实施例提供的一种基于8B/10B编解码的串行传输系统,包括串行数据发送端61和串行数据接收端62,所述串行数据发送端61包括8B/10B编码单元611和串并发送单元612,所述串行数据接收端62包括8B/10B解码单元621和串并接收单元622,其中:

所述8B/10B编码单元611,用于将特定格式的16bit并行数据经两次8B/10B编码后转换为20bit并行数据;

所述串并发送单元612,用于将所述20bit并行数据转换为高速串行数据流后经外界线路传输至串行数据接收端;

所述串并接收单元621,用于接收所述高速串行数据流,并将所述高速串行数据流转换为20bit并行数据;

所述8B/10B解码单元622,用于对所述20bit并行数据进行两次8B/10B解码后得到所述特定格式的16bit并行数据。

可选的,所述8B/10B编码单元611包括:

拆分单元71,用于将所述16bit并行数据拆分为两个8bit并行数据,并将所述两个8bit并行数据均拆分为高3bit和低5bit两个部分;

编码单元72,用于对所述两个8bit并行数据的高3bit进行3B/4B编码、低5bit进行5B/6B编码得到两组10bit的有效编码数据,并将所述两组10bit的有效编码数据合成为所述20bit并行数据。

可选的,所述编码单元72包括:

第一查表单元721,用于分别将所述高3bit和所述低5bit作为3B/4B编码的ROM表和4B/5B编码的ROM表的地址值进行查表;

RD计算单元722,用于将上一个周期20bit并行数据中最后一个数据子块的最终RD值作为本周期20bit并行数据中第一个数据子块的初始RD值;

数据编码生成单元723,用于根据查表结果和所述第一个数据子块的初始RD值获取两组10bit的有效编码数据;

K码生成单元724,用于检测Comma字符的输入,并根据检测到的Comma字符生成相应的K码;

第一组合逻辑单元725,用于根据所述两组10bit的有效编码数据和所述K码生成20bit并行数据。

可选的,所述8B/10B解码单元622包括:

Comma字符检测单元81,用于检测出所述20bit并行数据中Comma字符的位置;

编码数据定位单元82,用于根据所述Comma字符的位置定位出所述20bit并行数据中两组10bit的有效编码数据,并将所述两组10bit的有效编码数据均拆分为高4bit和低6bit两个部分;

解码单元83,用于对所述两组10bit的有效编码数据的高4bit进行3B/4B解码,低6bit进行5B/6B解码得到两个8bit的解码数据,并将所述两组8bit的解码数据合成为所述特定格式的16bit并行数据。

可选的,所述解码单元83包括:

第二查表单元831,用于分别将两组10bit的有效编码数据的所述高4bit和所述低6bit作为3B/4B解码的ROM表和4B/5B解码的ROM表的地址值进行查表得到两个8bit的解码数据;

第二组合逻辑单元832,用于根据所述两个8bit的解码数据生成所述特定格式的16bit并行数据。

需要说明的是,本发明实施例提供的上述系统中各个单元,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

因此,可以看出,本实施例提供的一种基于8B/10B编解码的串行传输系统同样可以实现2711格式数据的串行传输,弥补了现有的FPGA内置硬核不能满足2711格式数据的串行传输,需要针对2711格式数据开发专用芯片的缺陷,降低了串行传输的通信成本,并且无需在FPGA上设置多个用于连接专用芯片的通用管脚,简化了FPGA的结构。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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