专利名称::64b/66b编解码装置及实现64b/66b编解码的方法
技术领域:
:本发明涉及编解码技术,尤指一种64B/66B编解码装置及实现编解码的方法。
背景技术:
:万兆以太网(10GigabitEthernet,10GbE)技术是千兆以太网(GigabitEthernet)等已有以太网技术的延伸,万兆以太网在向下兼容的同时,其速度也得到了大幅度提升。与以往以太网技术不同的是,万兆以太协议IEEE802.3ae在局域网功能的基础上,又增加了城域网和广域网功能,而且支持与SONET/SDHS础架构的无缝连接。针对不同的使用环境,万兆以太网的物理层(PHY层)使用了不同的编解码方式10GBase-X采用的是与千兆以太网相同的8B/10B码;而10GBase-R和10GBase-W采用的则是64B/66B码。64B/66B码与8B/10B码相比,具有以下优点(l)不具有O、l高密度转换;(2)数据块和控制块的格式不同,数据块和控制块分别具有确定的格式;(3)开销小,网络带宽利用率明显得到了提高。万兆以太网有两种不同的物理层局域网物理层和广域网物理层,这两种物理层的数据率不一样。万兆以太网物理层从上至下包括物理编码子层(PCS,PhysicalcodingSublayer)、物理媒质连接子层(PMA)和物理媒质关联子层(PMD)。其中,PCS子层位于MAC层的协调子层(通过GMII)和PMA子层之间。PCS子层,用于将经过完善定义的以太网MAC功能映射到现存的编码和物理层信号系统的功能上去。PCS子层和上层RS/MAC的接口由媒体独立接口(XGMII)提供,与下层PMA接口使用PMA^I良务接口。图l为现有PCS层4t^C电路的组成结构示意图,如图1所示,PCS层收发电路由PCS层发送电路和PCS层接收电路组成。按照协议IEEE802.3ae标准,PCS层发送电路用于实现编码过程,大致应该包括64B/66B编码单元、变速箱/扰码单元、时钟域转换单元和数据宽度转换单元。PCS层接收电路用于实现解码过程,大致应该包括数据宽度转换单元、同步/解扰单元、时钟域转换单元和64B/66B解码单元。其中,64B/66B编码单元,用于根据XGMII接口传输的8个8比特(8-bit)数据和1个8比特控制信号,进行各个字符的编码映射,产生有效载荷(BlockPayload)、同步域和块类型区域(BlockTypefield),并将三者按照某种格式并行输出,产生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的关4建组成部分,64B/66B编/解码单元与万兆以太网的XGMn接口连接。64B/66B编码功能,用于根据8个XGMII的控制信号(XGMI—TXC[7:0]),将64B的XGMII数据块或控制块(XGMII_TXD[63:0])编码成66B码,以《更PCS子层其他组成部分使用;64B/66B解码功能,用于将PCS子层的66B码解码成64B的XGMII数据块或控制块(XGMII—RXD[63:0]),并产生8个控制信号(XGMI—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控制块XGMHJTXD分为8块,每一路预编码模块将其中一块XGMII的8-bit的控制字符转换为7-bit的物理编码子层PCS控制字符,并输出给合成才莫块;转换I字符、E字符、Reserve0-5字符和SignalorderecLset字符;合成模块,用于将每一路预编码模块的输出组合成56-bit的PCS控制码块;编码才莫块,用于根据输入的8-bit的XGMII的控制信号XGMII—TXC,将具有相同的块格式的XGMII一TXD进行分组,对于每组数据,再根据相应字节控制字每个码块作类型标记,并添加同步域和类型域后生成编码向量,输出给发送选择模块;发送选4^才莫块,根据输入的XGMIIjrXC,选择编码向量或XGMII一TXD输出。还包括发送监测模块,用于实现对编码后的数据流进行监测,当发现有不合法的数据流时,输出块类型区域为OxlE且控制字符全为错误的码块,否贝寸,输出编码后的码块。所述编码模块包括块类型区域生成子模块、同步域生成子模块、发送块类型生成子才莫块和编码向量生成子模块,其中,块类型区域生成子才莫块,输入为XGMHJTXC和PCS控制码块,用于实现块类型区域的生成。其输出为编码向量中的Coded—Vec[9:2];同步域生成子模块,输入为XGMIIJDCC,用于根据XGMHJTXC确定2-bit同步域;发送块类型生成子模块,输入为XGMHJTXC和PCS控制码块,用于在输出编码数据时,同时输出用于表明该编码数据的类型的发送块类型指示;编码向量生成子才莫块,输入为XGMI—TXC、XGMII一TXD和PCS控制码块,用于生成编码数据中除同步域和块类型区域之外的56-bit数据,输出为编码向量中的Coded—Vec[10:65]。所述编码模块还包括校验子模块,输入为所述合成模块输出的PCS控制码块,用于实现对PCS控制码块的8个7-bit控制字符的校验,并分别查看所述8个7-bit控制字符是否存在错误控制码,若校验通过且不存在错误控制码,通知块类型区域生成子^i块、发送块类型生成子模块和编码向量生成子模块进行处理;否则,将编码后的编码向量中的CodecLVec[65:10]用错误字符填充,编码向量中的块类型区域Coded—Vec[9:2]置为0xlE,并给出表示错误的发送块类型指示。一种实现64B/66B编码的方法,该方法包才舌根据XGMII的控制信号XGMIIJTXC获取所有符合条件的控制块格式,并找出所有符合XGMII—TXC条件的控制块格式;根据具有相同XGMII_TXC的控制块的所有控制字符,确定其隶属于64B/66B块格式中的哪一个控制块格式;根据XGMII_TXC确定2-bit同步域;根据具有相同XGMI_TXC的控制块所属控制块格式,获取有效载荷中的8-bit块类型区域;将有效载荷剩余的56-bit的控制字符部分用合成得到的PCS控制码块的相应字节填充,O、S、T码通过块类型域实现编码,有效载荷剩余的56-bit中的数据字节则用延迟两个时钟周期后的XGMII—TXD直接写入相应字节;输出编码数据,同时输出相应的TxJType指示。所述根据XGMII_TXC确定2-bit同步域之前,还包括校验所述控制码中是否存在非法控制码,如果存在,将编码后的数据用错误字符填充,相应的块类型区域设置为0xlE,并给出错-误的发送块类型指示,结束本流程;如果不存在,继续查看控制码中是否还存在错误控制码,如果还存在,将编码后的数据用错误字符填充,相应的块类型区域设置为0xlE,并给出错误的发送块类型指示,结束本流程;如果查看控制码中不存在错误控制码,则继续执行所述获取有效载荷中的8-bit块类型区域的步骤。所述获M合条件的控制块格式的方法为查找802.3ae协议中给出的字符码字的转换格式表,获取所有符合条件的控制块格式。所述根据XGMIIJTXC确定2-bit同步域为当XGMII—TXC为0x00时,同步域为2,b10,否则,同步域为2,b01。一种64B/66B解码装置,包括预解码模块、XGMII码块生成模块、解码模块和接收选择模块,其中,预解码才莫块,用于将输入的解扰后的RXD[65:0]中的RXD[65:10]数据分为8块,每一路预解码模块将解扰后的7-bit的控制字符转换为8-bitXGMII接口控制字符;转换I字符、E字符、Reserve0-5字符和Signalordered—set字符;XGMI码块生成才莫块,用于将每一路预解码才莫块解码的输出,组合成64-bit的XGMII接口控制码块;解码模块,用于根据解扰后的RXD[65:0]中的RXD[9:2]数据,找到待解扰码块的控制块格式,生成64-bit的解码数据和8-bitXGMII控制信号,并对每个码块作接收标记;接收选择才莫块,根据RXD[l:O],选择解码向量Deode—vec[63:0]和RXD[65:2]输出。还包括接收监测模块,用于完成对解码后的数据流的监测,当发现有不合法的数据流时,输出XGMII一RXC为0xFF且控制字符全为错误的码块。所述解码模块包括XGMII控制信号生成子模块、接收类型生成子模块和解码向量生成子才莫块,XGMII控制信号生成子模块,输入为RXD[9:2],根据RXD[9:2]生成XGMI一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控制字节XGMI—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控制信号XGMn一RXC设置为0xFF,并给出4昔误的接收块类型指示,结束本流程;如果查看控制码中不存在错误控制码,则继续执行所述根据解扰后的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数据(XGMIIJTXD)分为8块,每一个预编码模块将其中一块XGMII的8-bit的控制字符转换为7-bit的PCS层控制字符,并输出给合成模块。预编码模块根据表2将I字符、E字符、Reserve0-5字符和Signalordered一set字符进行转换。合成模块,用于将每一路预编码模块的输出组合成56-bit的PCS控制码块(PCS—Controls)。编码模块,用于根据输入的8-bit控制信号(XGMII_TXC),将具有相同的块格式的XGMIIJTXD进行分组,对于每组数据,再根据相应字节控制字符的不同,分别按照802.3ae协议中的字符码字的转换格式表(64B/66BBlockFormats表),将输入的符合XGMII格式的数据映射成PCS层的数据格式,并对每个码块作类型标记,如S、T、C、E或D。数据直接放置到相应净荷区,控制字符位置则放置转换后的7比特控制字符,并添加同步域和类型域后生成编码向量Code—v5c[65:0〗,输出给发送选择模块。发送选择模块,根据输入的XGMIIjrXC,在编码向量Code—Vec[65:0]和XGMI—TXD[63:0]之中做二选一操作。即当XGMII—TXC为0x00时,表示XGMIIJTXD的8个字节均为数据字节,选择XGMII一TXD即Code—Vec[65:0];当XGMII—TXC为其他值时,表示XGMI1—TXD中含有控制字节,选择Code一Vec[63:0]。发送监测模块(TX—FSM),用于实现对编码后的数据流进行监测,当发现有不合法的数据流时,输出块类型区域为OxlE且控制字符全为Error的码块,否则,输出编码后的码块(TXD—Encoded)。其中,编码模块包括校验子模块、块类型区域生成(BlockTypefieldGeneration)子才莫块、同步域生成(Sync_FieldGeneration)子才莫块、发送块类型生成(Tx—TypeGeneration)子沖莫块和编码向量生成(CodeGeneration)子模块。其中,校验子模块的输入为合成模块的输出的PCS一Controls,用于实现对PCS—Controls的8个7-bit控制字符的校验,并查看这8个7-bit控制字符是否存在错误(Error)控制码。若校验通过且没有Error控制码,则通知块类型区域生成子模块、发送块类型生成子^f莫块和编码向量生成子才莫块进行处理,否则,将编码后的编码向量中的CodecLVec[65:10]用Error字符填充,编码向量中的块类型区域Coded一Vec[9:2]置成0xlE(Ox^示为十六进制数据),并给出Error的发送块类型(TxJType)指示。块类型区域生成子模块的输入为XGMII一TXC和PCSj:ontrols,用于实现块类型区域(BlockTypefieldGeneration)的生成。其输出为编码向量中的Coded—Vec[9:2]。同步域生成子模块,输入为XGMI1—TXC,用于根据XGMII一TXC确定2-bit同步域。具体为当XGMI1—TXC为0x00时,同步域(Sync—Field)为2,bl0,否贝'J,Sync—Field为2,b01。该子模块的输出为编码向量中的Coded—Vec[l:O]。发送块类型生成子模块的输入为XGMIIJTXC和PCS一Controls,用于在输出编码数据时,相应的同时输出用于表明该编码数据的类型的Tx一Type指示,如C、S、T、D、E,以供后续的发送监测模块使用。该子模块的输出为Tx—Type。编码向量生成子才莫块,输入为XGMIIjrXC、XGMII一TXD和PCS—Controls,用于生成编码数据中除同步域和块类型区域之外的56-bit数据。该子模块输出为编码向量中的CodedJVec[10:65]。图3为本发明实现64B/66B编码的方法的流程图,下面结合图2详细描述本发明实现64B/66B编码的方法,如图2所示,编码才莫块实现四个功能生成块类型区域、生成同步域、生成发送方向的发送块类型以及生成编码向量。编码过程可以看成两个过程8个XGMI1—TXD数据字符的格式变换以及每个8位字符的码字变换。编码过程可以抽象为两次查表映射的过程。64B/66B编码具体实现步骤如图3所示步骤300:根据XGMII_TXC查找64B/66BBlockFormats表中所有符合条件的控制块格式。15对于同样的XGMII_TXC,可能有多种控制块格式与之对应,本步骤中还需要找出所有符合XGMII—TXC条件的控制块格式。表1为802.3ae协议中给出的字符码字的转换格式表,表2为控制字节编码转换表,表1中左侧输入数据(InputData)表示XGMII输入到PCS层的数据格式,表1中所列的格式都由XGMII一TXC[7:0]指示;表1中右侧是编码后的有效载荷(BlockPayload);表l中中间是根据输入的是数据块还是控制块加上的两位同步域,表示为Bit[l:0]=10时表示数据码块,Bit[l:0]=01时表示控制码块。<table>tableseeoriginaldocumentpage16</column></row><table>如表l、表2所示,步骤300具体为经过预编码后控制码块的块类型区域与输入的控制块数据格式建立一一对应关系,但与XGMII—TXC[7:0]并非--对应,比如如表1中第8、9行的输入控制码格式0。D,D2D304D5D6D7和O0D2D3S4D5D6D7,虽然有同样的TXC[7:0],但是却有不同的编码,此时,是根据输入控制码块中的控制字符(如S,O或T)来确定编码后的格式的。步骤301:才艮据具有相同XGMII_TXC的控制块的所有控制字符,确定其隶属于64B/66B块格式中的哪一个控制块格式。本步骤根据XGMII_TXC判断XGMII—TXD相应字节对应控制字符的类型,以确定是I、O、S、T、E、ReserveO-5和Signalordered—set字符的哪一个。从而确定当前块属于哪一个控制块格式。一旦确定出控制块格式,也就确定了相应的块类型区域。步骤302:校验控制码中是否存在非法控制码,如果存在,进入步骤304;否则进入步骤303。本步骤中,对合成模块合成的8个7-bit控制字符进行校验,校验的依据是每个7-bit控制字符每一位不能全为1。若每一位全为1,则视为无效控制字符。若为无效控制字符,ii/v步骤304。步骤303:查看控制码中是否还存在Error控制码,如果还存在,进入步骤304,否则iiX步骤305。当XGMII—TXC为OxFF,即所有8个字节都为控制字符时,判断合成模块合成的8个7-bit控制字符是否存在Error字符,若存在,进入步骤304。具体实现包括通过表2查看控制码中是否还存在Error控制码,即查看是否存在/E/,也就是是否存在数据OxlE。步骤304:将编码后的数据用Error字符填充,相应的块类型区域(BlockTypefield)为0xlE,并给出Error的块类型指示。结束本流程。步骤305:根据XGMI1—TXC确定2-bit同步域。具体为当XGMI1—TXC为0x00时,同步域(Sync_Fidd)为2,bl0(2,b表示为二进制数据),否则,Sync—Field为2,b01。步骤306:根据具有相同XGMI—TXC的控制块所属控制块格式,获取BlockPayload中的8-bit块类型区域。本步骤在步骤301确定块格式之后随即确定。步骤307:将BlockPayload剩余的56-bit的控制字符部分用合成模块输出PCS控制码块的对应位置的相应字节填充,O、S、T码则通过块类型域实现编码(即块类型域的不同表示了编码之前不同的O、S和T码)。BlockPayload剩余的56-bit中的数据字节则用延迟两个时钟周期后的XGMII一TXD直接写入相应字节。这里,由于预编码模块和合成模块各需要一个时钟节拍完成数据转换,所以将XGMI1—TXD延时两个时钟节拍再填充到对应数据字节。步骤308:输出发送块类型指示TxJType,如S、T、C或D。在步骤307编码完成时,每个码块的类型已经确定,在输出编码数据时,相应的Tx一Type指示同时输出。这里C、S、T、D、E符合以下描述C类型XGMIIJTXD信号包含除了0、S、T、E控制字节外的8个有效控制字节,或1个有效的0控制字节和4个其他有效控制字节,或2个有效的0控制字节;S类型XGMHJTXD信号以S控制字节开始或在第5位,其前面的字节均为除了O、S、T外的有效控制字节或有效的O字节,而且其后的字节均为数据字节;T类型XGMII一TXD信号在任意位置包含1个T字节,其前面所有字节为数据字节,其后所有字节是除去O、S、T的有效控制字节;D类型XGMII—TXD信号包含8个数据字节;E类型除上述情况外的所有XGMI1—TXD信号。相应地,发送监测模块在发现以下情况数据流时,输出BlockTypefield为OxlE且控制字符全为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-bitXGMII接口控制字符。预解码模块将I字符、E字符、Reserve0-5字符和Signalordered_set字符进行转换。XGMI码块生成模块,用于将每一路预解码模块解码的输出,组合成64-bit的XGMII接口控制码块。解码模块,用于根据解扰后的RXD[65:0]中的RXD[9:2]数据,找到待解扰码块对应于64B/66BBlockFormat表中的控制块格式,生成64-bit的解码数据和8-bitXGMII控制信号,并对每个码块作接收标记如S、T、C、E或D。接收选择模块,根据RXD[1:0]在解码向fDeode_vec[63:0]和RXD[65:2]之中完成二选一操作。当RXD[l:0]为2,blO时,表示XGMHJTXD的8个字节均为数据字节,选择RXD[65:2];当RXD[l:0]为2,b01时,表示XGMI1—TXD中含有控制字节,选择Deode—vec[63:0]。接收监测模块,用于完成对解码后的数据流的监测,当发现有不合法的数据流时,输出XGMI—RXC为0xFF且控制字符全为Error的码块。其中,解码模块包括校验子模块、XGMII控制信号生成(XGMII一RXCGeneration)子模块、接收类型生成(Rx—TypeGeneration)子模块和解码向量生成(DecodeGeneration)子模块。其中,校验子模块的输入为XGMII码块生成模块的输出的XGMII接口控制码块(Decoded—Data),用于实现对Decoded—Data的8个8-bit控制字符的校验,并查看这8个8-bit控制字符是否存在Error控制码。若校验通过且没有Error控制码,则通知解码向量生成子^^块进行处理。否则,将解码后的解码向量19Decoded—Vec用OxFE即Error字符填充,XGMII控制字节XGMI1—RXC为0xFF,并给出Error的接收块类型(Rx_Type)指示。XGMII控制信号生成子模块的输入为RXD[9:2],根据RXD[9:2]查询表1生成XGMH一RXC。接收类型生成子模块的输入为RXD[9:2]和RXD[65:10],用于在输出解码数据时,同时输出用于表明该解码数据的类型的RxJType指示,如C、S、T、D和E,以供后续的接收监测模块使用。该子模块的输出为RxJType指示。解码向量生成子模块的输入为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/66BBlockFormats表中的控制块格式。本步骤通过802.3ae协议中给出的字符码字的转换格式表查表实现,一旦确定了控制块格式,相应的XGMII一RXC就可以确定。步骤501:校验控制字符中是否存在非法控制字符,如果存在,进入步骤503;否则进入步骤502。本步骤中,将XGMII码块生成模块输出的8个8-bit控制字符进行校验,校验的依据是每个8-bit控制字符每一位不能全为1。若每一位全为1,则视为无效控制字符。若为无效控制字符,进入步骤503。步骤502:查看控制字符中是否还存在Error控制字符,如果存在,i^步骤503,否则ii^步骤504。具体实现包括当解扰后的RXD[65:0]中的RXD[9:2]为0xlE,即所有8个字节都为控制字符时,判断XGMII码块生成模块输出的8个8-bit控制字符是否存在Error字符,若存在,进入步骤503。则将解码后数据用OxFE即Error字符填充,XGMII控制字节XGMI1—RXC为OxFF,并给出Error的接收块类型指示。步骤503:将解码后数据用OxFE即Error字符填充,XGMII控制信号(XGMII_RXC)为OxFF,并给出Error的接收块类型指示。结束本流程。步骤504:确定XGMH控制字节XGMII一RXC。本步骤在步骤500确定块格式之后随即确定。步骤505:根据解扰后的RXD[9:2]所确定的控制块格式,将解码后的64-bit数据的控制字符部分用XGMII码块生成模块输出的相应字节填充;0、S、T字符需要根据RXD[9:2](BlockTypefield)产生并直接写入相关字节,O、S、T字符和BlockTypefield的对应关系如表l所示;解码后的64-bit数据的数据字节部分则用延迟两个时钟周期后的RXD直接写入相应字节。这里,由于预解码模块和XGMII码块生成模块各需要一个时钟节拍完成数据转换,所以将XGMH—RXD延时两个时钟节拍再填充到对应数据字节。步骤506:输出接收块类型指示RxJType,如S、T、C、D或E。在步骤505解码完成时,每个码块的类型已经确定,在输出解码数据时,相应的Rx—Type指示同时输出。这里C、S、T、D、E符合以下描述C类型输入信号包含同步域2,M0以及下列之一块类型区le和除了E控制字节外的8个有效控制字节;块类型区2d或4b,以及1个有效的0控制字节和4个其他有效控制字节;块类型区55和2个有效的0控制字节;S类型输入信号包含同步域2,bl0以及下列之一块类型区33和四个有效控制字节;块类型区66和一个有效的0控制字节,块类型区78;T类型输入信号包含同步域2,b10,块类型区为87、99、aa、b4、cc、d2、el或ff,并且所有控制字节均有效;D类型输入信号同步域为2,b01;E类型除上述情况外的所有信号。相应地,接收监测模块在发现以下情况数据流时,输出控制字符全为OxFE21即Error字符的Error码块(1)上一个码块类型为D,当前码块类型为E/S/C,或当前码块类型为T与下一个码块类型为D/T/E;(2)上一个码块类型为C,当前码块类型为E/D/T;(3)当前处在复^f立后初始状态,下一个码块类型为E/D/T。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。权利要求1、一种64B/66B编码装置,其特征在于,包括预编码模块、合成模块、编码模块和发送选择模块,其中,预编码模块,用于将输入的64比特64-bit的媒体独立接口XGMII控制块XGMII_TXD分为8块,每一路预编码模块将其中一块XGMII的8-bit的控制字符转换为7-bit的物理编码子层PCS控制字符,并输出给合成模块;转换I字符、E字符、Reserve0-5字符和Signalordered_set字符;合成模块,用于将每一路预编码模块的输出组合成56-bit的PCS控制码块;编码模块,用于根据输入的8-bit的XGMII的控制信号XGMII_TXC,将具有相同的块格式的XGMII_TXD进行分组,对于每组数据,再根据相应字节控制字符的不同,分别将输入的符合XGMII格式的数据映射成PCS层的数据格式,对每个码块作类型标记,并添加同步域和类型域后生成编码向量,输出给发送选择模块;发送选择模块,根据输入的XGMII_TXC,选择编码向量或XGMII_TXD输出。2、根据权利要求1所述的64B/66B编码装置,其特征在于,还包括发送监测模块,用于实现对编码后的数据流进行监测,当发现有不合法的数据流时,输出块类型区域为0xlE且控制字符全为错误的码块,否则,输出编码后的码块。3、根据权利要求1或2所述的64B/66B编码装置,其特征在于,所述编码模块包括块类型区域生成子模块、同步域生成子模块、发送块类型生成子模块和编码向量生成子^f莫块,其中,块类型区域生成子模块,输入为XGMIIJTXC和PCS控制码块,用于实现块类型区域的生成。其输出为编码向量中的CodecLVec[9:2];同步域生成子模块,输入为XGMI1—TXC,用于根据XGMI1—TXC确定2-bit同步域;发送块类型生成子模块,输入为XGMI^TXC和PCS控制码块,用于在输出编码数据时,同时输出用于表明该编码数据的类型的发送块类型指示;编码向量生成子模块,输入为XGMII一TXC、XGMII_TXD和PCS控制码块,用于生成编码数据中除同步域和块类型区域之外的56-bit数据,输出为编码向量中的Coded—Vec[10:65]。4、根据权利要求3所述的64B/66B编码装置,其特征在于,所述编码模块还包括校验子模块,输入为所述合成模块输出的PCS控制码块,用于实现对PCS控制码块的8个7-bit控制字符的校验,并分别查看所述8个7-bit控制字符是否存在错误控制码,若校验通过且不存在错误控制码,通知块类型区域生成子模块、发送块类型生成子^^莫块和编码向量生成子才莫块进^f亍处理;否则,将编码后的编码向量中的Codec^Vec[65:10]用错误字符填充,编码向量中的块类型区域Coded—Vec[9:2]置为0xlE,并给出表示错误的发送块类型指示。5、一种实现64B/66B编码的方法,其特征在于,该方法包括根据XGMII的控制信号XGMII_TXC获取所有符合条件的控制块格式,并找出所有符合XGMII一TXC条件的控制块格式;根据具有相同XGMHJTXC的控制块的所有控制字符,确定其隶属于64B/66B块格式中的哪一个控制块格式;根据XGMIIJTXC确定2-bit同步域;根据具有相同XGMII_TXC的控制块所属控制块格式,获取有效载荷中的8-bit块类型区域;将有效栽荷剩余的56-bit的控制字符部分用合成得到的PCS控制码块的相应字节填充,O、S、T码通过块类型域实现编码,有效载荷剩余的56-bit中的数据字节则用延迟两个时钟周期后的XGMII—TXD直接写入相应字节;输出编码数据,同时输出相应的Tx_Type指示。6、根据权利要求5所述的方法,其特征在于,所述根据XGMII—TXC确定2-bit同步域之前,还包括校验所述控制码中是否存在非法控制码,如果存在,将编码后的数据用错误字符填充,相应的块类型区域设置为0xlE,并给出错-溪的发送块类型指示,结束本流程;如果不存在,继续查看控制码中是否还存在错;吴控制码,如果还存在,将编码后的数据用错误字符填充,相应的块类型区域设置为OxlE,并给出错误的发送块类型指示,结束本流程;如果查看控制码中不存在错误控制码,则继续执4亍所述获取有效载荷中的8-bit块类型区域的步骤。7、根据权利要求5或6所述的方法,其特征在于,所述获取符合条件的控制块格式的方法为查找802.3ae协议中给出的字符码字的转换格式表,获取所有符合条件的控制块格式。8、根据权利要求5或6所述的方法,其特征在于,所述根据XGMII一TXC确定2-bit同步域为当XGMII_TXC为0x00时,同步域为2'bl0,否则,同步域为2,b01。9、一种64B/66B解码装置,其特征在于,包括预解码模块、XGMII码块生成模块、解码模块和接收选择模块,其中,预解码模块,用于将输入的解扰后的RXD[65:0]中的RXD[65:10]数据分为8块,每一路预解码模块将解扰后的7-bit的控制字符转换为8-bitXGMII接口控制字符;转换I字符、E字符、Reserve0-5字符和Signalordered—set字符;XGMII码块生成模块,用于将每一路预解码模块解码的输出,组合成64-bit的XGMII接口控制码块;解码模块,用于根据解扰后的RXD[65:0]中的RXD[9:2]数据,找到待解扰码块的控制块格式,生成64-bit的解码数据和8-bitXGMII控制信号,并对每个码块作接收标记;接收选择模块,根据RXD[l:O],选择解码向量Deode—vec[63:0]和RXD[65:2]输出。10、根据权利要求9所述的64B/66B解码装置,其特征在于,还包括接收监测模块,用于完成对解码后的数据流的监测,当发现有不合法的数据流时,输出XGMII_RXC为OxFF且控制字符全为错误的码块。11、根据权利要求9或10所述的64B/66B解码装置,其特征在于,所述解码模块包括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数据解码向量并输出。12、根据权利要求11所述的64B/66B解码装置,其特征在于,所述解码模块还包括校验子模块,输入为所述XGMII码块生成模块的输出的XGMII接口控制码块;用于实现对XGMII接口控制码块的8个8-bit控制字符的校验,并查看这8个8-bit控制字符是否存在错误控制码,若校验通过且没有错误控制码,通知解码向量生成子模块进4亍处理;否则,将解码后的解码向量用4普误字符填充,XGMII控制字节XGMII一RXC设置为OxFF,并给出错误的接收块类型RxJype指示。13、一种实现64B/66B解码的方法,其特征在于,该方法包括根据解扰后的RXD[65:0]中的块类型区域RXD[9:2]确定当前码块的控制块格式,以确定XGMII控制字节XGMII_RXC;根据解扰后的RXD[9:2]所确定的控制块格式,将解码后的64-bit数据的控制字符部分用XGMII接口控制码块的相应字节填充;4艮据块类型区域RXD[9:2]产生O、S、T字符并直接写入相关字节;解码后的64-bit数据的数据字节部分用延迟两个时钟周期后的所述解扰后的RXD直接写入相应字节;输出解码数据,同时输出接收块类型指示。14、根据权利要求13所述的方法,其特征在于,还包括校验所迷XGMII接口控制码块中是否存在非法控制码,如果存在,将解码后的数据用错误字符填充,XGMII控制信号XGMII_RXC设置为0xFF,并给出错误的接收块类型指示,结束本流程;如果不存在,继续查看控制字符中是否还存在错误控制码,如果还存在,将解码后的数据用错误字符填充,XGMII控制信号XGMII—RXC设置为OxFF,并给出错误的接收块类型指示,结束本流程;如果查看控制码中不存在错误控制码,则继续执行所述根据解扰后的RXD[9:2]所确定的控制块格式的步骤。15、根据权利13或14所述的方法,其特征在于,所述确定当前码块的控制块格式的方法为通过802.3ae协议中给出的字符码字的转换格式表查表实现。全文摘要本发明提供了一种64B/66B编解码装置及实现64B/66B编解码的方法,实现了根据媒体独立接口(XGMII)传输的8个8比特数据和1个8比特控制信号,进行各个字符的编码映射,产生有效载荷、同步域和块类型区域,并将三者并行输出,产生66比特数据输出的编码过程;以及对接收到的66比特数据进行解码,以获得符合XGMII接口的8个8位数据和1个8比特控制信号的解码过程。文档编号H03M13/00GK101610134SQ20091008876公开日2009年12月23日申请日期2009年7月10日优先权日2009年7月10日发明者时立峰,郭从尧申请人:中兴通讯股份有限公司