首页> 中国专利> 64B/66B编解码装置及实现64B/66B编解码的方法

64B/66B编解码装置及实现64B/66B编解码的方法

摘要

本发明提供了一种64B/66B编解码装置及实现64B/66B编解码的方法,实现了根据媒体独立接口(XGMII)传输的8个8比特数据和1个8比特控制信号,进行各个字符的编码映射,产生有效载荷、同步域和块类型区域,并将三者并行输出,产生66比特数据输出的编码过程;以及对接收到的66比特数据进行解码,以获得符合XGMII接口的8个8位数据和1个8比特控制信号的解码过程。

著录项

  • 公开/公告号CN101610134A

    专利类型发明专利

  • 公开/公告日2009-12-23

    原文格式PDF

  • 申请/专利权人 中兴通讯股份有限公司;

    申请/专利号CN200910088762.0

  • 发明设计人 郭从尧;时立峰;

    申请日2009-07-10

  • 分类号H04L1/00;H03M13/00;

  • 代理机构北京派特恩知识产权代理事务所(普通合伙);

  • 代理人张颖玲

  • 地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

  • 入库时间 2023-12-17 23:10:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-06-05

    授权

    授权

  • 2010-02-17

    实质审查的生效

    实质审查的生效

  • 2009-12-23

    公开

    公开

说明书

技术领域

本发明涉及编解码技术,尤指一种64B/66B编解码装置及实现编解码的方法。

背景技术

万兆以太网(10Gigabit Ethernet,10GbE)技术是千兆以太网(GigabitEthernet)等已有以太网技术的延伸,万兆以太网在向下兼容的同时,其速度也得到了大幅度提升。

与以往以太网技术不同的是,万兆以太协议IEEE802.3ae在局域网功能的基础上,又增加了城域网和广域网功能,而且支持与SONET/SDH基础架构的无缝连接。针对不同的使用环境,万兆以太网的物理层(PHY层)使用了不同的编解码方式:10GBase-X采用的是与千兆以太网相同的8B/10B码;而10GBase-R和10GBase-W采用的则是64B/66B码。

64B/66B码与8B/10B码相比,具有以下优点:(1)不具有0、1高密度转换;(2)数据块和控制块的格式不同,数据块和控制块分别具有确定的格式;(3)开销小,网络带宽利用率明显得到了提高。

万兆以太网有两种不同的物理层:局域网物理层和广域网物理层,这两种物理层的数据率不一样。万兆以太网物理层从上至下包括物理编码子层(PCS,Physical coding Sublayer)、物理媒质连接子层(PMA)和物理媒质关联子层(PMD)。其中,PCS子层位于MAC层的协调子层(通过GMII)和PMA子层之间。PCS子层,用于将经过完善定义的以太网MAC功能映射到现存的编码和物理层信号系统的功能上去。PCS子层和上层RS/MAC的接口由媒体独立接口(XGMII)提供,与下层PMA接口使用PMA服务接口。

图1为现有PCS层收发电路的组成结构示意图,如图1所示,PCS层收发电路由PCS层发送电路和PCS层接收电路组成。按照协议IEEE 802.3ae标准,PCS层发送电路用于实现编码过程,大致应该包括64B/66B编码单元、变速箱/扰码单元、时钟域转换单元和数据宽度转换单元。PCS层接收电路用于实现解码过程,大致应该包括数据宽度转换单元、同步/解扰单元、时钟域转换单元和64B/66B解码单元。

其中,64B/66B编码单元,用于根据XGMII接口传输的8个8比特(8-bit)数据和1个8比特控制信号,进行各个字符的编码映射,产生有效载荷(BlockPayload)、同步域和块类型区域(Block Type field),并将三者按照某种格式并行输出,产生66比特(66-bit)块数据(Block)输出。66-bit数据中2位同步域传输至变速箱/扰码单元的变速箱,64位的有效载荷和块类型区域输出至变速箱/扰码单元的扰码电路。64B/66B编码单元的工作时钟为156.24MHz。变速箱/扰码单元工作在161MHz。时钟域转换单元主要用于实现64B/66B编码单元和变速箱/扰码单元间工作时钟的转换。数据宽度转换单元用于实现编码后的64-bit数据与符合PMA服务接口的16-bit数据间的转换。

64B/66B解码单元,用于对接收到的66-bit块数据进行解码,以获得符合XGMII接口的8个8比特数据和1个8比特控制信号。同步/解扰单元用于对64-bit的有效载荷和块类型区域进行同步和解扰处理后,向64B/66B解码单元输出包含有效载荷、同步域和块类型区域的66-bit块数据。

从图1可见,64B/66B编解码功能是万兆以太网PCS的关键组成部分,64B/66B编/解码单元与万兆以太网的XGMII接口连接。64B/66B编码功能,用于根据8个XGMII的控制信号(XGMII_TXC[7:0]),将64B的XGMII数据块或控制块(XGMII_TXD[63:0])编码成66B码,以便PCS子层其他组成部分使用;64B/66B解码功能,用于将PCS子层的66B码解码成64B的XGMII数据块或控制块(XGMII_RXD[63:0]),并产生8个控制信号(XGMII_RXC[7:0])提供给XGMII接口。

目前,相关协议中只是对64B/66B编解码功能进行功能性描述,并没有提供具体实现方案。

发明内容

有鉴于此,本发明的主要目的在于提供一种64/66B编码装置,能够实现64B/66B编码过程。

本发明的另一目的在于提供一种实现64/66B编码的方法,能够实现64B/66B编码过程。

本发明的又一目的在于提供一种64/66B解码装置,能够实现64B/66B解码过程。

本发明的再一目的在于提供一种实现64/66B解码的方法,能够实现64B/66B解码过程。

为达到上述目的,本发明的技术方案是这样实现的:

一种64B/66B编码装置,包括预编码模块、合成模块、编码模块和发送选择模块,其中,

预编码模块,用于将输入的64比特64-bit的媒体独立接口XGMII控制块XGMII_TXD分为8块,每一路预编码模块将其中一块XGMII的8-bit的控制字符转换为7-bit的物理编码子层PCS控制字符,并输出给合成模块;转换I字符、E字符、Reserve 0-5字符和Signal ordered_set字符;

合成模块,用于将每一路预编码模块的输出组合成56-bit的PCS控制码块;

编码模块,用于根据输入的8-bit的XGMII的控制信号XGMII_TXC,将具有相同的块格式的XGMII_TXD进行分组,对于每组数据,再根据相应字节控制字符的不同,分别将输入的符合XGMII格式的数据映射成PCS层的数据格式,对每个码块作类型标记,并添加同步域和类型域后生成编码向量,输出给发送选择模块;

发送选择模块,根据输入的XGMII_TXC,选择编码向量或XGMII_TXD输出。

还包括发送监测模块,用于实现对编码后的数据流进行监测,当发现有不合法的数据流时,输出块类型区域为0x1E且控制字符全为错误的码块,否则,输出编码后的码块。

所述编码模块包括块类型区域生成子模块、同步域生成子模块、发送块类型生成子模块和编码向量生成子模块,其中,

块类型区域生成子模块,输入为XGMII_TXC和PCS控制码块,用于实现块类型区域的生成。其输出为编码向量中的Coded_Vec[9:2];

同步域生成子模块,输入为XGMII_TXC,用于根据XGMII_TXC确定2-bit同步域;

发送块类型生成子模块,输入为XGMII_TXC和PCS控制码块,用于在输出编码数据时,同时输出用于表明该编码数据的类型的发送块类型指示;

编码向量生成子模块,输入为XGMII_TXC、XGMII_TXD和PCS控制码块,用于生成编码数据中除同步域和块类型区域之外的56-bit数据,输出为编码向量中的Coded_Vec[10:65]。

所述编码模块还包括校验子模块,

输入为所述合成模块输出的PCS控制码块,用于实现对PCS控制码块的8个7-bit控制字符的校验,并分别查看所述8个7-bit控制字符是否存在错误控制码,若校验通过且不存在错误控制码,通知块类型区域生成子模块、发送块类型生成子模块和编码向量生成子模块进行处理;否则,将编码后的编码向量中的Coded_Vec[65:10]用错误字符填充,编码向量中的块类型区域Coded_Vec[9:2]置为0x1E,并给出表示错误的发送块类型指示。

一种实现64B/66B编码的方法,该方法包括:

根据XGMII的控制信号XGMII_TXC获取所有符合条件的控制块格式,并找出所有符合XGMII_TXC条件的控制块格式;

根据具有相同XGMII_TXC的控制块的所有控制字符,确定其隶属于64B/66B块格式中的哪一个控制块格式;

根据XGMII_TXC确定2-bit同步域;

根据具有相同XGMII_TXC的控制块所属控制块格式,获取有效载荷中的8-bit块类型区域;

将有效载荷剩余的56-bit的控制字符部分用合成得到的PCS控制码块的相应字节填充,O、S、T码通过块类型域实现编码,有效载荷剩余的56-bit中的数据字节则用延迟两个时钟周期后的XGMII_TXD直接写入相应字节;

输出编码数据,同时输出相应的Tx_Type指示。

所述根据XGMII_TXC确定2-bit同步域之前,还包括:

校验所述控制码中是否存在非法控制码,如果存在,将编码后的数据用错误字符填充,相应的块类型区域设置为0x1E,并给出错误的发送块类型指示,结束本流程;

如果不存在,继续查看控制码中是否还存在错误控制码,如果还存在,将编码后的数据用错误字符填充,相应的块类型区域设置为0x1E,并给出错误的发送块类型指示,结束本流程;

如果查看控制码中不存在错误控制码,则继续执行所述获取有效载荷中的8-bit块类型区域的步骤。

所述获取符合条件的控制块格式的方法为:

查找802.3ae协议中给出的字符码字的转换格式表,获取所有符合条件的控制块格式。

所述根据XGMII_TXC确定2-bit同步域为:当XGMII_TXC为0x00时,同步域为2’b10,否则,同步域为2’b01。

一种64B/66B解码装置,包括预解码模块、XGMII码块生成模块、解码模块和接收选择模块,其中,

预解码模块,用于将输入的解扰后的RXD[65:0]中的RXD[65:10]数据分为8块,每一路预解码模块将解扰后的7-bit的控制字符转换为8-bit XGMII接口控制字符;转换I字符、E字符、Reserve 0-5字符和Signal ordered_set字符;

XGMII码块生成模块,用于将每一路预解码模块解码的输出,组合成64-bit的XGMII接口控制码块;

解码模块,用于根据解扰后的RXD[65:0]中的RXD[9:2]数据,找到待解扰码块的控制块格式,生成64-bit的解码数据和8-bit XGMII控制信号,并对每个码块作接收标记;

接收选择模块,根据RXD[1:0],选择解码向量Deode_vec[63:0]和RXD[65:2]输出。

还包括接收监测模块,用于完成对解码后的数据流的监测,当发现有不合法的数据流时,输出XGMII_RXC为0xFF且控制字符全为错误的码块。

所述解码模块包括XGMII控制信号生成子模块、接收类型生成子模块和解码向量生成子模块,

XGMII控制信号生成子模块,输入为RXD[9:2],根据RXD[9:2]生成XGMII_RXC;

接收类型生成子模块,输入为RXD[9:2]和RXD[65:10],用于在输出解码数据时,同时输出用于表明该解码数据的类型的接收块类型Rx_Type指示;

解码向量生成子模块,输入为RXD[9:2]、RXD[65:10]和XGMII接口控制码块,用于生成解码后的64-bit数据解码向量并输出。

所述解码模块还包括校验子模块,输入为所述XGMII码块生成模块的输出的XGMII接口控制码块;

用于实现对XGMII接口控制码块的8个8-bit控制字符的校验,并查看这8个8-bit控制字符是否存在错误控制码,若校验通过且没有错误控制码,通知解码向量生成子模块进行处理;否则,将解码后的解码向量用错误字符填充,XGMII控制字节XGMII_RXC设置为0xFF,并给出错误的接收块类型Rx_Type指示。

一种实现64B/66B解码的方法,该方法包括:

根据解扰后的RXD[65:0]中的块类型区域RXD[9:2]确定当前码块的控制块格式,以确定XGMII控制字节XGMII_RXC;

根据解扰后的RXD[9:2]所确定的控制块格式,将解码后的64-bit数据的控制字符部分用XGMII接口控制码块的相应字节填充;根据块类型区域RXD[9:2]产生O、S、T字符并直接写入相关字节;解码后的64-bit数据的数据字节部分用延迟两个时钟周期后的所述解扰后的RXD直接写入相应字节;

输出解码数据,同时输出接收块类型指示。

还包括:

校验所述XGMII接口控制码块中是否存在非法控制码,如果存在,将解码后的数据用错误字符填充,XGMII控制信号XGMII_RXC设置为0xFF,并给出错误的接收块类型指示,结束本流程;

如果不存在,继续查看控制字符中是否还存在错误控制码,如果还存在,将解码后的数据用错误字符填充,XGMII控制信号XGMII_RXC设置为0xFF,并给出错误的接收块类型指示,结束本流程;

如果查看控制码中不存在错误控制码,则继续执行所述根据解扰后的RXD[9:2]所确定的控制块格式的步骤。

所述确定当前码块的控制块格式的方法为:通过802.3ae协议中给出的字符码字的转换格式表查表实现。

从上述本发明提供的技术方案可以看出,通过本发明方法,实现了根据XGMII接口传输的8个8比特数据和1个8比特控制信号,进行各个字符的编码映射,产生有效载荷、同步域和块类型区域,并将三者并行输出,产生66比特数据输出的编码过程;以及对接收到的66比特数据进行解码,以获得符合XGMII接口的8个8位数据和1个8比特控制信号的解码过程。

附图说明

图1为现有PCS层收发电路的组成结构示意图;

图2为本发明64B/66B编码单元的组成结构示意图;

图3为本发明实现64B/66B编码的方法的流程图;

图4为本发明64B/66B解码单元的组成结构示意图;

图5为本发明实现64B/66B解码的方法的流程图。

具体实施方式

图2为本发明64B/66B编码单元的组成结构示意图,如图2所示,64B/66B编码单元包括预编码模块、合成模块、编码模块、发送选择模块和发送监测模块,其中,

预编码模块,用于将输入的64-bit数据(XGMII_TXD)分为8块,每一个预编码模块将其中一块XGMII的8-bit的控制字符转换为7-bit的PCS层控制字符,并输出给合成模块。预编码模块根据表2将I字符、E字符、Reserve 0-5字符和Signalordered_set字符进行转换。

合成模块,用于将每一路预编码模块的输出组合成56-bit的PCS控制码块(PCS_Controls)。

编码模块,用于根据输入的8-bit控制信号(XGMII_TXC),将具有相同的块格式的XGMII_TXD进行分组,对于每组数据,再根据相应字节控制字符的不同,分别按照802.3ae协议中的字符码字的转换格式表(64B/66B Block Formats表),将输入的符合XGMII格式的数据映射成PCS层的数据格式,并对每个码块作类型标记,如S、T、C、E或D。数据直接放置到相应净荷区,控制字符位置则放置转换后的7比特控制字符,并添加同步域和类型域后生成编码向量Code_vec[65:0],输出给发送选择模块。

发送选择模块,根据输入的XGMII_TXC,在编码向量Code_Vec[65:0]和XGMII_TXD[63:0]之中做二选一操作。即当XGMII_TXC为0x00时,表示XGMII_TXD的8个字节均为数据字节,选择XGMII_TXD即Code_Vec[65:0];当XGMII_TXC为其他值时,表示XGMII_TXD中含有控制字节,选择Code_Vec[63:0]。

发送监测模块(TX_FSM),用于实现对编码后的数据流进行监测,当发现有不合法的数据流时,输出块类型区域为0x1E且控制字符全为Error的码块,否则,输出编码后的码块(TXD_Encoded)。

其中,编码模块包括校验子模块、块类型区域生成(Block Type fieldGeneration)子模块、同步域生成(Sync_Field Generation)子模块、发送块类型生成(Tx_Type Generation)子模块和编码向量生成(Code Generation)子模块。

其中,校验子模块的输入为合成模块的输出的PCS_Controls,用于实现对PCS_Controls的8个7-bit控制字符的校验,并查看这8个7-bit控制字符是否存在错误(Error)控制码。若校验通过且没有Error控制码,则通知块类型区域生成子模块、发送块类型生成子模块和编码向量生成子模块进行处理,否则,将编码后的编码向量中的Coded_Vec[65:10]用Error字符填充,编码向量中的块类型区域Coded_Vec[9:2]置成0x1E(0x表示为十六进制数据),并给出Error的发送块类型(Tx_Type)指示。

块类型区域生成子模块的输入为XGMII_TXC和PCS_Controls,用于实现块类型区域(Block Type field Generation)的生成。其输出为编码向量中的Coded_Vec[9:2]。

同步域生成子模块,输入为XGMII_TXC,用于根据XGMII_TXC确定2-bit同步域。具体为:当XGMII_TXC为0x00时,同步域(Sync_Field)为2’b10,否则,Sync_Field为2’b01。该子模块的输出为编码向量中的Coded_Vec[1:0]。

发送块类型生成子模块的输入为XGMII_TXC和PCS_Controls,用于在输出编码数据时,相应的同时输出用于表明该编码数据的类型的Tx_Type指示,如C、S、T、D、E,以供后续的发送监测模块使用。该子模块的输出为Tx_Type。

编码向量生成子模块,输入为XGMII_TXC、XGMII_TXD和PCS_Controls,用于生成编码数据中除同步域和块类型区域之外的56-bit数据。该子模块输出为编码向量中的Coded_Vec[10:65]。

图3为本发明实现64B/66B编码的方法的流程图,下面结合图2详细描述本发明实现64B/66B编码的方法,如图2所示,编码模块实现四个功能:生成块类型区域、生成同步域、生成发送方向的发送块类型以及生成编码向量。编码过程可以看成两个过程:8个XGMII_TXD数据字符的格式变换以及每个8位字符的码字变换。编码过程可以抽象为两次查表映射的过程。64B/66B编码具体实现步骤如图3所示:

步骤300:根据XGMII_TXC查找64B/66B Block Formats表中所有符合条件的控制块格式。

对于同样的XGMII_TXC,可能有多种控制块格式与之对应,本步骤中还需要找出所有符合XGMII_TXC条件的控制块格式。

表1为802.3ae协议中给出的字符码字的转换格式表,表2为控制字节编码转换表,表1中左侧输入数据(Input Data)表示XGMII输入到PCS层的数据格式,表1中所列的格式都由XGMII_TXC[7:0]指示;表1中右侧是编码后的有效载荷(Block Payload);表1中中间是根据输入的是数据块还是控制块加上的两位同步域,表示为:Bit[1:0]=10时表示数据码块,Bit[1:0]=01时表示控制码块。

表1

  Control Character  Notation  XGMII  Control Code  10GBASE-R Control Code  10GBASE-R  0Code  8B/10B  Code  idle  /I/  0x07  0x00  -  K28.0,K28.3,  or K28.5  start  /S/  0xFB  encoded by block type field  -  K27.7  terminate  /T/  0xFD  encoded by block type field  -  K29.7  error  /E/  0xFE  0x1E  -  K30.7  Sequence  ordered set  /Q/  0x9C  encoded by block type field  plus 0 mode  0x0  K28.4  reserved0  /R/  0x1C  0x2D  -  K28.0  reserved1  -  0x3C  0x33  -  K28.1  reserved2  /N/  0x7C  0x4B  -  K28.3  reserved3  /K/  0xBC  0x55  -  K28.5  reserved4  -  0xDC  0x66  -  K28.6  reserved5  -  0xF7  0x78  -  K23.7  Signal ordered set  /Fsig/  0x5C  encoded by block type field  plus 0 mode  0xF  K28.2

表2

如表1、表2所示,步骤300具体为:

经过预编码后控制码块的块类型区域与输入的控制块数据格式建立一一对应关系,但与XGMII_TXC[7:0]并非一一对应,比如:如表1中第8、9行的输入控制码格式O0D1D2D3O4D5D6D7和O0D1D2D3S4D5D6D7,虽然有同样的TXC[7:0],但是却有不同的编码,此时,是根据输入控制码块中的控制字符(如S,O或T)来确定编码后的格式的。

步骤301:根据具有相同XGMII_TXC的控制块的所有控制字符,确定其隶属于64B/66B块格式中的哪一个控制块格式。

本步骤根据XGMII_TXC判断XGMII_TXD相应字节对应控制字符的类型,以确定是I、O、S、T、E、Reserve0-5和Signal ordered_set字符的哪一个。从而确定当前块属于哪一个控制块格式。一旦确定出控制块格式,也就确定了相应的块类型区域。

步骤302:校验控制码中是否存在非法控制码,如果存在,进入步骤304;否则进入步骤303。

本步骤中,对合成模块合成的8个7-bit控制字符进行校验,校验的依据是每个7-bit控制字符每一位不能全为1。若每一位全为1,则视为无效控制字符。若为无效控制字符,进入步骤304。

步骤303:查看控制码中是否还存在Error控制码,如果还存在,进入步骤304,否则进入步骤305。

当XGMII_TXC为0xFF,即所有8个字节都为控制字符时,判断合成模块合成的8个7-bit控制字符是否存在Error字符,若存在,进入步骤304。具体实现包括:通过表2查看控制码中是否还存在Error控制码,即查看是否存在/E/,也就是是否存在数据0x1E。

步骤304:将编码后的数据用Error字符填充,相应的块类型区域(BlockType field)为0x1E,并给出Error的块类型指示。结束本流程。

步骤305:根据XGMII_TXC确定2-bit同步域。具体为:当XGMII_TXC为0x00时,同步域(Sync_Field)为2’b10(2’b表示为二进制数据),否则,Sync_Field为2’b01。

步骤306:根据具有相同XGMII_TXC的控制块所属控制块格式,获取BlockPayload中的8-bit块类型区域。本步骤在步骤301确定块格式之后随即确定。

步骤307:将Block Payload剩余的56-bit的控制字符部分用合成模块输出PCS控制码块的对应位置的相应字节填充,O、S、T码则通过块类型域实现编码(即块类型域的不同表示了编码之前不同的O、S和T码)。Block Payload剩余的56-bit中的数据字节则用延迟两个时钟周期后的XGMII_TXD直接写入相应字节。

这里,由于预编码模块和合成模块各需要一个时钟节拍完成数据转换,所以将XGMII_TXD延时两个时钟节拍再填充到对应数据字节。

步骤308:输出发送块类型指示Tx_Type,如S、T、C或D。在步骤307编码完成时,每个码块的类型已经确定,在输出编码数据时,相应的Tx_Type指示同时输出。这里C、S、T、D、E符合以下描述:

C类型:XGMII_TXD信号包含除了O、S、T、E控制字节外的8个有效控制字节,或1个有效的O控制字节和4个其他有效控制字节,或2个有效的O控制字节;

S类型:XGMII_TXD信号以S控制字节开始或在第5位,其前面的字节均为除了O、S、T外的有效控制字节或有效的O字节,而且其后的字节均为数据字节;

T类型:XGMII_TXD信号在任意位置包含1个T字节,其前面所有字节为数据字节,其后所有字节是除去O、S、T的有效控制字节;

D类型:XGMII_TXD信号包含8个数据字节;

E类型:除上述情况外的所有XGMII_TXD信号。

相应地,发送监测模块在发现以下情况数据流时,输出Block Type field为0x1E且控制字符全为Error的码块:

(1)当前码块类型为D,下一个码块类型为E/S/C;

(2)当前码块类型为C,下一个码块类型为E/D/T;

(3)当前码块类型为T,下一个码块类型为E/D/T;

(4)当前处在复位后初始状态,下一个码块类型为E/D/T。

图4为本发明64B/66B解码单元的组成结构示意图,如图4所示,64B/66B解码单元包括预解码模块、XGMII码块生成模块、解码模块、接收选择模块和接收监测模块,其中,

预解码模块,用于将输入的解扰后的RXD[65:0]中的RXD[65:10]即56bits数据分为8块,每一路预解码模块将解扰后的7-bit的控制字符转换为8-bit XGMII接口控制字符。预解码模块将I字符、E字符、Reserve 0-5字符和Signal ordered_set字符进行转换。

XGMII码块生成模块,用于将每一路预解码模块解码的输出,组合成64-bit的XGMII接口控制码块。

解码模块,用于根据解扰后的RXD[65:0]中的RXD[9:2]数据,找到待解扰码块对应于64B/66B Block Format表中的控制块格式,生成64-bit的解码数据和8-bit XGMII控制信号,并对每个码块作接收标记如S、T、C、E或D。

接收选择模块,根据RXD[1:0]在解码向量Deode_vec[63:0]和RXD[65:2]之中完成二选一操作。当RXD[1:0]为2’b10时,表示XGMII_TXD的8个字节均为数据字节,选择RXD[65:2];当RXD[1:0]为2’b01时,表示XGMII_TXD中含有控制字节,选择Deode_vec[63:0]。

接收监测模块,用于完成对解码后的数据流的监测,当发现有不合法的数据流时,输出XGMII_RXC为0xFF且控制字符全为Error的码块。

其中,解码模块包括校验子模块、XGMII控制信号生成(XGMII_RXCGeneration)子模块、接收类型生成(Rx_Type Generation)子模块和解码向量生成(Decode Generation)子模块。

其中,校验子模块的输入为XGMII码块生成模块的输出的XGMII接口控制码块(Decoded_Data),用于实现对Decoded_Data的8个8-bit控制字符的校验,并查看这8个8-bit控制字符是否存在Error控制码。若校验通过且没有Error控制码,则通知解码向量生成子模块进行处理。否则,将解码后的解码向量Decoded_Vec用0xFE即Error字符填充,XGMII控制字节XGMII_RXC为0xFF,并给出Error的接收块类型(Rx_Type)指示。

XGMII控制信号生成子模块的输入为RXD[9:2],根据RXD[9:2]查询表1生成XGMII_RXC。

接收类型生成子模块的输入为RXD[9:2]和RXD[65:10],用于在输出解码数据时,同时输出用于表明该解码数据的类型的Rx_Type指示,如C、S、T、D和E,以供后续的接收监测模块使用。该子模块的输出为Rx_Type指示。

解码向量生成子模块的输入为RXD[9:2]、RXD[65:10]和Decoded_Data,用于生成解码后的64-bit数据,该子模块的输出为Decoded_Vec。

图5为本发明实现64B/66B解码的方法的流程图,下面结合图4详细描述本发明实现64B/66B编码的方法,如图4所示,解码模块实现三个功能:生成XGMII接口控制信息,生成64-bit解码数据,生成接收方向的接收块类型。解码过程是编码的逆过程,可以看成两个过程:66位编码数据字符的格式变换以及每个7位字符的码字变换。802.3ae协议中给出了字符码字的转换格式表及控制字节编码转换表,分别如表1和表2所示。64B/66B解码的具体实现步骤如图5所示:

步骤500:根据解扰后的RXD[65:0]中的RXD[9:2]即块类型区域确定当前码块对应于64B/66B Block Formats表中的控制块格式。本步骤通过802.3ae协议中给出的字符码字的转换格式表查表实现,一旦确定了控制块格式,相应的XGMII_RXC就可以确定。

步骤501:校验控制字符中是否存在非法控制字符,如果存在,进入步骤503;否则进入步骤502。

本步骤中,将XGMII码块生成模块输出的8个8-bit控制字符进行校验,校验的依据是每个8-bit控制字符每一位不能全为1。若每一位全为1,则视为无效控制字符。若为无效控制字符,进入步骤503。

步骤502:查看控制字符中是否还存在Error控制字符,如果存在,进入步骤503,否则进入步骤504。

具体实现包括:当解扰后的RXD[65:0]中的RXD[9:2]为0x1E,即所有8个字节都为控制字符时,判断XGMII码块生成模块输出的8个8-bit控制字符是否存在Error字符,若存在,进入步骤503。则将解码后数据用0xFE即Error字符填充,XGMII控制字节XGMII_RXC为0xFF,并给出Error的接收块类型指示。

步骤503:将解码后数据用0xFE即Error字符填充,XGMII控制信号(XGMII_RXC)为0xFF,并给出Error的接收块类型指示。结束本流程。

步骤504:确定XGMII控制字节XGMII_RXC。本步骤在步骤500确定块格式之后随即确定。

步骤505:根据解扰后的RXD[9:2]所确定的控制块格式,将解码后的64-bit数据的控制字符部分用XGMII码块生成模块输出的相应字节填充;O、S、T字符需要根据RXD[9:2](Block Type field)产生并直接写入相关字节,O、S、T字符和Block Type field的对应关系如表1所示;解码后的64-bit数据的数据字节部分则用延迟两个时钟周期后的RXD直接写入相应字节。

这里,由于预解码模块和XGMII码块生成模块各需要一个时钟节拍完成数据转换,所以将XGMII_RXD延时两个时钟节拍再填充到对应数据字节。

步骤506:输出接收块类型指示Rx_Type,如S、T、C、D或E。在步骤505解码完成时,每个码块的类型已经确定,在输出解码数据时,相应的Rx_Type指示同时输出。这里C、S、T、D、E符合以下描述:

C类型:输入信号包含同步域2’b10以及下列之一:块类型区1e和除了E控制字节外的8个有效控制字节;块类型区2d或4b,以及1个有效的O控制字节和4个其他有效控制字节;块类型区55和2个有效的O控制字节;

S类型:输入信号包含同步域2’b10以及下列之一:块类型区33和四个有效控制字节;块类型区66和一个有效的O控制字节,块类型区78;

T类型:输入信号包含同步域2’b10,块类型区为87、99、aa、b4、cc、d2、e1或ff,并且所有控制字节均有效;

D类型:输入信号同步域为2’b 01;

E类型:除上述情况外的所有信号。

相应地,接收监测模块在发现以下情况数据流时,输出控制字符全为0xFE即Error字符的Error码块:

(1)上一个码块类型为D,当前码块类型为E/S/C,或当前码块类型为T与下一个码块类型为D/T/E;

(2)上一个码块类型为C,当前码块类型为E/D/T;

(3)当前处在复位后初始状态,下一个码块类型为E/D/T。

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号