CN107783922A - 一种数据编解码方法和装置 - Google Patents

一种数据编解码方法和装置 Download PDF

Info

Publication number
CN107783922A
CN107783922A CN201610793617.2A CN201610793617A CN107783922A CN 107783922 A CN107783922 A CN 107783922A CN 201610793617 A CN201610793617 A CN 201610793617A CN 107783922 A CN107783922 A CN 107783922A
Authority
CN
China
Prior art keywords
port
data
disparity values
coded data
disparity
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.)
Withdrawn
Application number
CN201610793617.2A
Other languages
English (en)
Inventor
吴雪松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201610793617.2A priority Critical patent/CN107783922A/zh
Priority to PCT/CN2017/095344 priority patent/WO2018040824A1/zh
Publication of CN107783922A publication Critical patent/CN107783922A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/423Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with synchronous protocol
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0004Parallel ports, e.g. centronics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0008High speed serial bus, e.g. Fiber channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3852Converter between protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Dc Digital Transmission (AREA)

Abstract

本发明实施例公开了一种数据编解码方法,包括:接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;确定所述4端口中各端口的不均等性disparity值;根据各端口的disparity值,分别对所述各端口待编码数据进行编码,并将所述各端口编码后数据进行并串转换处理。本发明实施例还同时公开了一种数据编解码装置。

Description

一种数据编解码方法和装置
技术领域
本发明涉及通信领域,尤其涉及一种数据编解码方法和装置。
背景技术
4串行千兆媒体独立接口(QSGMII,Quard Serial Gigabit Media IndependentInterface)使用更少的管脚将4个通道的端口速率为10/100/1000的物理层(PHY,PhysicalLayer)与媒体接入控制层(MAC,Media Access Contronl)互联,QSGMII接口为5G(5Gigabit)串行高速串行器/解串器(SERDES,SERializer/DESerializer)接口。
传统的QSGMII方案,发送端依次将4通道GMII 8bit数据,按0,1,2,3顺序进行8b/10b编码,其中,0通道的10bit控制码K28.5被替换为K28.1,以使接收端能在串行码流上,根据k28.1判断端口0的数据位置,然后将10bit编码数据转为串行码流发送给接收端,接收端的解码过程与发送端的编码过程相反。然而,当传输对4通道GMII的32bit数据时,对4通道GMII的32bit数据按0,1,2,3的端口号顺序进行8b/10b编码的方法,对于每个端口的处理频率较高,影响系统的稳定性和可靠性。
发明内容
有鉴于此,本发明实施例期望提供一种数据编解码方法和装置,降低了4通道GMII的32bit数据进行8b/10b编码时每个端口的处理频率,提高了系统的稳定性和可靠性。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种数据编码方法,包括:接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;确定所述4端口中各端口的不均等性disparity值;根据各端口的disparity值,分别对所述各端口待编码数据进行编码,并将所述各端口编码后数据进行并串转换处理。
在上述方案中,所述确定所述4端口中各端口的disparity值,包括:将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
在上述方案中,在接收来自QSGMII的4端口待编码数据之后,在确定所述4端口中各端口的disparity值之前,所述方法包括:将所述4端口中端口0的控制码由K28.5替换为K28.1。
第二方面,本发明实施例提供了一种数据解码方法,包括:接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至4串行千兆媒体独立接口QSGMII的4个端口;确定所述4端口中各端口的不均等性disparity值;根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据。
在上述方案中,所述确定所述4端口中各端口的disparity值,包括:将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
在上述方案中,在接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口之后,在确定所述4端口中各端口的disparity值之前,所述方法包括:所述各端口编码后数据中至少有一个不存在于预设的编码表中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口编码后数据均存在于所述预设的编码表中。
在上述方案中,在确定各端口的disparity值之后,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之前,所述方法包括:所述各端口的disparity值中至少有一个不存在于预设值中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口的disparity值均存在于所述预设值中。
在上述方案中,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之后,所述方法包括:将所述端口0的控制码由K28.1替换为K28.5;所述4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,所述各端口解码后数据中至少有一个不存在于预设的编码表中时,返回执行将所述各端口编码后数据朝着预设方向移动一位的步骤。
第三方面,本发明实施例提供了一种数据编码装置,包括:第一接收模块,用于接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;第一确定模块,用于确定所述4端口中各端口的不均等性disparity值;编码模块,用于根据各端口的disparity值,分别对所述各端口待编码数据进行编码,并将所述各端口编码后数据进行并串转换处理。
在上述方案中,所述第一确定模块,具体用于将与所述4端口中每个端口对应的上一端口的disparity值输出至所述各端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
在上述方案中,所述装置还包括:第一替换模块,用于在接收来自QSGMII的4端口待编码数据之后,在确定所述4端口中各端口的disparity值之前,将所述4端口中端口0的控制码由K28.5替换为K28.1。
第四方面,本发明实施例提供了一种数据解码装置,包括:第二接收模块,用于接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至4串行千兆媒体独立接口QSGMII的4个端口;第二确定模块,用于确定所述4端口中各端口的不均等性disparity值;解码模块,用于根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据。
在上述方案中,所述第二确定模块,具体用于将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
在上述方案中,所述装置还包括:第一移动模块,用于在接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口之后,在确定所述4端口中各端口的disparity值之前,在所述各端口编码后数据中至少有一个不存在于预设的编码表中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口编码后数据均存在于所述预设的编码表中。
在上述方案中,所述装置还包括:第二移动模块,用于在确定所述4端口中各端口的disparity值之后,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之前,在所述各端口的disparity值中至少有一个不存在于预设值中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口的disparity值均存在于所述预设值中。
在上述方案中,所述装置还包括:第二替换模块,用于在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之后,将所述端口0的控制码由K28.1替换为K28.5,并触发同步检测模块;所述同步检测模块,用于在受到触发后在所述4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,所述各端口解码后数据中至少有一个不存在于预设的编码表中时,触发所述第一移动模块执行将所述各端口编码后数据朝着预设方向移动一位。
本发明实施例所提供的数据编解码方法和装置,数据编码装置在接收到QSGMII的4端口待编码数据之后,首先,确定4端口中各端口的disparity值,在确定出各端口的disparity值之后,根据各端口的disparity值分别对各端口待编码数据进行编码,得到各端口编码后数据,也就是说,数据编码装置对接收到的4端口待编码数据,先计算出各端口的disparity值,这样,在知晓各端口的disparity值的情况下,利用各端口的disparity值可以同时对各端口的待编码数据进行编码,实现对4端口待编码数据并行编码的过程,降低了每个端口待编码数据进行编码的速度,那么,降低了4通道GMII的32bit数据每个端口进行8b/10b编码的处理频率,提高了编码效率,进而提高了系统的稳定性和可靠性。
附图说明
图1为本发明实施例中数据编码方法的流程示意图;
图2为本发明实施例中40bit数据进行编码的一种可选的流程框图;
图3为本发明实施例中数据解码方法的流程示意图;
图4为本发明实施例中40bit数据进行解码的一种可选的流程框图;
图5为本发明实施例中40bit数据进行编码和解码的一种可选的流程框图;
图6-a为本发明实施例中40bit数据进行编码的一种可选的流程示意图;
图6-b为本发明实施例中40bit数据进行解码的一种可选的流程示意图;
图7为本发明实施例中数据编码装置的一种可选的结构示意图;
图8为本发明实施例中数据解码装置的一种可选的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供一种数据编码方法,该方法可以应用于现场可编程门阵列(FPGA,Field Programmable Gate Array)和逻辑电路(IC,Logical Circuit)等逻辑器件,还可以应用于中央处理器(CPU,Central Processing Unit)和数字信号处理(DSP,DigitalSignal Processing)中,这里,本发明不做具体限定;
图1为本发明实施例中数据编码方法的流程示意图,如图1所示,该方法包括:
S101:接收来自QSGMII的4端口待编码数据;
其中,以FPGA为例,位于FPGA中的发送端上电重启时,发送配置码,空闲时发送idle码或lpidle码,GMII有数据时发送待编码数据;该待编码数据包括数据码和控制码,其中,当发送数据码时,key信号为0;当发送控制码时,key信号为1。需要说明的是,上述4端口中,端口0-3的控制码均为K28.5。
举例来说,图2为本发明实施例中40bit数据进行编码的一种可选的流程框图;如图2所示,port0为端口0,接收GMII的8bit数据TXD<7:0>,port1为端口1,接收GMII的8bit数据TXD<7:0>,port2为端口2,接收GMII的8bit数据TXD<7:0>,port3为端口3,接收GMII的8bit数据TXD<7:0>;且每个端口中的端口流量为125M字节;
为了对待编码数据进行定位,在一种可选的实施例中,S101之后,S102之前,该方法可以包括:
将4端口中端口0的控制码由K28.5替换为K28.1。
在图2中,发送端的各端口在接收到8bit的待编码数据之后,输入编码处理流程,将每个端口的8bit的待编码数据的第7位至第0位依次标记为HGFEDCBA,然后将端口0的控制码K28.5替换为K28.1,这样,在4端口中,端口0的控制码为K28.1,端口1-3的控制码为K28.5,那么,通过控制码可以找到端口0对应的数据。
S102:确定4端口中各端口的disparity值;
上述各端口的disparity值可以包括:+2,-2,0;每个disparity值对应有一个10bit的编码后数据,所以,为了得到10bit的编码后数据,必须先确定出各端口的disparity值;
为了确定出各端口的disparity值,在一种可选的实施例中,S102可以包括:
将与4端口中每个端口对应的上一端口的disparity值输出至每个端口;根据与每个端口对应的上一端口的disparity值,确定每个端口的disparity值。
具体来说,在4端口中,当32bit的待编码数据为首次编码的数据时,端口0的disparity值可以为+2或者0,将端口0的disparity值输出至端口1;
当32bit的待编码数据不是首次编码的数据时,端口0的对应的上一端口为端口3,将端口3中上一组待编码数据的disparity值输出至端口0;根据端口3的disparity值,来确定端口0的disparity值,将端口0的disparity值输出至端口1;
根据端口0的disparity值,来确定端口1的disparity值,将端口1的disparity值输出至端口2,根据端口1的disparity值,来确定端口2的disparity值,将端口2的disparity值输出至端口3,根据端口2的disparity值,来确定端口3的disparity值;例如,以端口1为例,端口0的disparity值为-2,那么为了达到直流平衡的目的,端口1的disparity值为在对应有+2,-2,0的情况下,确定出端口1的disparity值为+2,并将端口1的disparity值输出值端口2。
这样,便确定出了各端口的disparity值。
S103:根据各端口的disparity值,分别对各端口待编码数据进行编码,并将各端口编码后数据进行并串转换处理。
其中,在上述图2中,进行8b/10b编码的过程中,根据每个端口的disparity值,从预设的编码表中查找8bit的待编码数据,与该端口的disparity值对应的10bit的编码后数据在图2中表示为abcdeifghj,这样,就得到了每个端口的编码后数据,输出10bit的编码后数据,SERDES将40bit的并行编码后数据转换成串行数据,按照端口0、1、2、3的顺序通过数据物理媒体附体(PMA,Physical Medium Attachment)接口将5Gbps数据发送至接收端;至此,便完成了数据编码。
本发明实施例所提供的数据编码方法,数据编码装置在接收到QSGMII的4端口待编码数据之后,首先,确定4端口中各端口的disparity值,在确定出各端口的disparity值之后,根据各端口的disparity值分别对各端口待编码数据进行编码,得到各端口编码后数据,也就是说,数据编码装置对接收到的4端口待编码数据,先计算出各端口的disparity值,这样,在知晓各端口的disparity值的情况下,利用各端口的disparity值可以同时对各端口的待编码数据进行编码,实现对4端口待编码数据并行编码的过程,降低了每个端口待编码数据进行编码的速度,那么,降低了4通道GMII的32bit数据每个端口进行8b/10b编码的处理频率,提高了编码效率,进而提高了系统的稳定性和可靠性。
基于同一发明构思,本发明实施例还提供一种数据解码方法,图3为本发明实施例中数据解码方法的流程示意图,如图3所示,该方法包括:
S301:接收编码后数据,对编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口;
接收端接收到发送端的编码后数据,将串行的40bit的编码后数据进行串并转换得到4路并行数据分别发送至QSGMII的4个端口,其中,每个端口接收10bit的编码后数据;
举例来说,图4为本发明实施例中40bit数据进行解码的一种可选的流程框图,如图4所示,PMA接口接收5Gbps的编码后数据并发送至4端口,每个端口为10bit数据,其中,port0为端口0,接收GMII的10bit数据0 1 2 3 4 5 6 7 89,port1为端口1,接收GMII的10bit数据10 11 12 13 14 15 16 17 18 19,port2为端口2,接收GMII的10bit数据20 2122 23 24 25 26 27 28 29,port3为端口3,接收GMII的10bit数据30 31 32 33 34 35 3637 38 39;
为了将40bit的编码后数据与各端口对齐,在一种可选的实施例中,S301之后,S302之前,该方法可以包括:各端口编码后数据中至少有一个不存在于预设的编码表中时,将各端口编码后数据朝着预设方向移动一位,直至各端口编码后数据均存在于预设的编码表中。
在图4中,在各端口接收到10bit的编码后数据之后,在可能的位置进行对齐逗号序列,这里,检测各端口的10bit的编码后数据是否都存在于预设的编码表中,如果都存在,说明40bit的编码后数据的位置已经与各端口对齐,如果有至少一个10bit的编码后数据不存在于预设的编码表中时,说明40bit的编码后数据的位置与各端口没有对齐,此时将40bit的编码后数据朝着预设方向移动一位,然后继续检测各端口的10bit的编码后数据是否都存在于预设的编码表中,直至各端口编码后数据均存在于预设的编码表中;在确定出40bit的编码后数据的位置已经与各端口对齐的情况下,将10bit数据0 1 2 3 4 5 6 7 89与端口0对齐,将10bit数据10 11 12 13 14 15 16 17 18 19与端口1对齐,将10bit数据20 2122 23 24 25 26 27 28 29与端口2对齐,将10bit数据30 31 32 33 34 35 36 37 3839与端口3对齐。
其中,上述预设方向可以为朝左也可以朝右。
S302:确定4端口中各端口的disparity值;
接收端为了确定出各端口的disparity值,在一种可选的实施例中,S302可以包括:
将与4端口中每个端口对应的上一端口的disparity值输出至每个端口;根据与每个端口对应的上一端口的disparity值,确定每个端口的disparity值。
具体来说,在4端口中,当40bit的编码后数据为首次待解码数据时,端口0的disparity值可以为+2或者0,将端口0的disparity值输出至端口1;当40bit的待编码数据不是首次待解码数据时,端口0的对应的上一端口为端口3,将端口3中上一组解码后数据的disparity值输出至端口0;根据端口3的disparity值,来确定端口0的disparity值,将端口0的disparity值输出至端口1;根据端口0的disparity值,来确定端口1的disparity值,将端口1的disparity值输出至端口2,根据端口1的disparity值,来确定端口2的disparity值,将端口2的disparity值输出至端口3,根据端口2的disparity值,来确定端口3的disparity值;例如,仍然以端口1为例,端口0的disparity值为-2,那么为了达到直流平衡的目的,端口1的disparity值为在对应有+2,-2,0的情况下,确定出端口1的disparity值为+2,并将端口1的disparity值输出值端口2。
这样,便确定出了各端口的disparity值。
在确定出各端口的disparity值,为了进一步确定40bit的编码后数据的位置是否与各端口已经对齐,在一种可选的实施例中,S302之后,S303之前,该方法可以包括:各端口的disparity值中至少有一个不存在于预设值中时,将各端口编码后数据朝着预设方向移动一位,直至各端口的disparity值均存在于预设值中。
上述预设值可以包括:+2,-2,0;判断确定出的各端口的disparity值是否都在预设值中,当各端口的disparity值都存在于上述预设值中时,说明40bit的编码后数据的位置已经与各端口对齐,如果有至少一个端口的disparity值不存在于预设的编码表中时,说明40bit的编码后数据的位置与各端口没有对齐,那么,此时将40bit的编码后数据朝着预设方向移动一位,然后继续检测各端口的disparity值是否都存在于预设值中,直至各端口的disparity值都存在于预设值中;
在确定出40bit的编码后数据的位置已经与各端口对齐的情况下,将10bit数据01 2 3 4 5 6 7 8 9与端口0对齐,将10bit数据10 11 12 13 14 15 16 17 18 19与端口1对齐,将10bit数据20 21 22 23 24 25 26 27 28 29与端口2对齐,将10bit数据30 31 3233 34 35 36 37 38 39与端口3对齐。
S303:根据各端口的disparity值,分别对编码后数据进行解码,得到各端口解码后数据。
其中,在上述图4中,接收端的物理解码子层(PCS,Physical Coding Sublayer)进行10b/8b解码的过程中,根据每个端口的disparity值,从预设的编码表中查找10bit的编码后数据,与该端口的disparity值对应的8bit的解码后数据在图4中用HGFEDCBA来表示,这样,就得到了每个端口的解码后数据,并对8bit的解码后数据进行载波检测处理,得到8bit解码后数据+控制字+载波检测,并将得到的解码后数据(图4中的7 6 5 4 3 2 1 0)发送至GMII接口的port0、port1、port2、port3,使得GMII接口可以接收到4个RXD<7:0>。
在将解码后数据组成帧格式之前,需要确定解码后的8bit数据的正确性,为了确定解码后的8bit数据的正确性,对解码后数据继续进行同步检测,在一种可选的实施例中,S303之后,该方法可以包括:
将端口0的控制码由K28.1替换为K28.5;
4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,各端口解码后数据中至少有一个不存在于预设的编码表中时,返回执行将各端口编码后数据朝着预设方向移动一位的步骤。
在上述数据编码方法中,在确定各端口的disparity值之后,为了确定端口0的数据,将端口0的控制码由K28.1替换为K28.5,那么在解码的过程中,通过控制码可以找到端口0对应的10bit编码后数据后,对4个10bit编码后数据分别进行解码,解码完成之后,将端口0的控制码由K28.5替换为K28.1,然后对端口1-3进行检测,如果检测到端口1、2、3的控制码中至少有一个不为K28.1时,或者,检测到各端口解码后数据中至少有一个不存在于预设的编码表中时,说明解码错误,需要重新返回执行将各端口编码后数据朝着预设方向移动一位的步骤,重新将各端口的数据位进行对齐,然后再进行解码,从而保障数据解码的正确性。
本发明实施例所提供的数据解码方法,数据解码装置在接收到QSGMII的4端口编码后数据之后,首先,确定4端口中各端口的disparity值,在确定出各端口的disparity值之后,根据各端口的disparity值分别对各端口编码后数据进行解码,得到各端口解码后数据,也就是说,数据解码装置对接收到的4端口待编码数据,先计算出各端口的disparity值,这样,在知晓各端口的disparity值的情况下,利用各端口的disparity值可以同时对各端口的编码后数据进行解码,实现对4端口编码后数据并行解码的过程,降低了每个端口编码后数据进行解码的速度,那么,降低了4通道GMII的32bit数据每个端口进行8b/10b解码的处理频率,提高了解码效率,进而提高了系统的稳定性和可靠性。
下面举实例来对上述数据编解码方法中的一个或多个实施例进行说明;
图5为本发明实施例中40bit数据进行编码和解码的一种可选的流程框图;如图5所示,在发送端(send),将4个并行端口port0接收到的来自GMII的8bit待编码数据分发至编码器中的port0、port1、port2、port3,将编码得到4个10bit的编码后数据通过SERDES进行并串转换得到40bit的编码后数据,在发送至接收端之前,通过SERDES进行串并转换得到4个10bit的编码后数据,分发至解码器中的port0、port1、port2、port3。
图6-a为本发明实施例中40bit数据进行编码的一种可选的流程示意图,如图6-b所示,基于上述图5,上述数据编码方法可以包括:
S601:发送端上电重启时,发送配置码,空闲时发送idle码或lpidle码,GMII有数据时发送数据编码,当发送数据码时,key信号为0,当发送控制码是,key信号为1;
S602:发送端判断当前端口,如果是port0则到S603处理,当前如果是其它端口,则到S604处理;
S603:发送端将控制码k28.5替换为k28.1;
S604:发送端根据前一端口disparity值,计算本端口的disparity值,并将本端口的disparity值输出给下一端口,进行8b/10b编码;
S605:发送端将4端口的10bit的编码后数据组合成40bit的编码后数据;
S606:发送端将40bit编码通过并串转换成5G SERDES差分信号发送给接收端。
图6-b为本发明实施例中40bit数据进行解码的一种可选的流程示意图,如图6-b所示,基于上述图5,上述数据解码方法可以包括:
S607:接收端将5G SERDES线路收到差分信号,串并转换为40bit数据;
S608:接收端判读编码后数据是否为非法码流(编码后数据不存在于预设的编码表中即为非法码流),如果为是,则移动1位,如果为否,则转至S610;
S609:接收端将40bit的编码后数据右移1位。
S610:接收端将40bit数据按顺序将10bit分发给4个端口。
S611:接收端根据前一端口的disparity值,计算本端口的disparity值。并将计算出的disparity值发送给下一端口;Port0计算的disparity值发送给port1,Port1计算的disparity值发送给port2,Port2计算的disparity值发送给port3,Port3计算的disparity值发送给port0,进行8b/10b解码;
S612:接收端判读8bit码流是否非法,disparity值是否有错。如果码流非法或者disparity值有错,转至S608,否则,执行S613;
S613:接收端判断当前端口,如果是port0,则到S614处理,当前如果是其它端口,则到S615处理。
S614:接收端将控制码k28.1替换为k28.5;
S615:接收端进行同步状态检测,并将收到的数据组成帧格式。
S616:接收端判断如果当前未与发送端同步,或检测到控制码k28.1,则到S612处理。否则执行S617。
S617:将接收到的数据帧发送给GMII接口。
基于同一发明构思,本发明实施例提供了一种数据编码装置,图7为本发明实施例中数据编码装置的一种可选的结构示意图,如图7所示,该装置包括:第一接收模块71、第一确定模块72和编码模块73;
其中,第一接收模块71,用于接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;第一确定模块72,用于确定4端口中各端口的不均等性disparity值;编码模块73,用于根据各端口的disparity值,分别对各端口待编码数据进行编码,并将各端口编码后数据进行并串转换处理。
为了确定出各端口的disparity值,为了在一种可选的实施例中,上述第一确定模块71,具体用于将与4端口中每个端口对应的上一端口的disparity值输出至各端口;根据与每个端口对应的上一端口的disparity值,确定每个端口的disparity值。
为了对待编码的数据进行定位,在一种可选的实施例中,上述装置还包括:第一替换模块,用于在接收来自QSGMII的4端口待编码数据之后,在确定4端口中各端口的disparity值之前,将4端口中端口0的控制码由K28.5替换为K28.1。
在实际应用中,第一接收模块71、第一确定模块72和编码模块73均可由位于发送端的中央处理器(CPU,Central Processing Unit)、微处理器(MPU,MicroprocessorUnit)、专用集成电路(ASIC,Application Specific Integrated Circuit)或现场可编程门阵列(FPGA,Field-Programmable Gate Array)等实现。
基于同一发明构思,本发明实施例提供了一种数据解码装置,图8为本发明实施例中数据解码装置的一种可选的结构示意图,如图8所示,该装置包括:第二接收模块81、第二确定模块82和解码模块83;
其中,第二接收模块81,用于接收编码后数据,对编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至4串行千兆媒体独立接口QSGMII的4个端口;第二确定模块82,用于确定4端口中各端口的不均等性disparity值;解码模块83,用于根据各端口的disparity值,分别对编码后数据进行解码,得到各端口解码后数据。
接收端为了确定出各端口的disparity值,在一种可选的实施例中,上述第二确定模块82,具体用于将与4端口中每个端口对应的上一端口的disparity值输出至每个端口;根据与每个端口对应的上一端口的disparity值,确定每个端口的disparity值。
为了将40bit的编码后数据与各端口对齐,在一种可选的实施例中,上述装置还包括:第一移动模块,用于在接收编码后数据,对编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口之后,在确定4端口中各端口的disparity值之前,在各端口编码后数据中至少有一个不存在于预设的编码表中时,将各端口编码后数据朝着预设方向移动一位,直至各端口编码后数据均存在于预设的编码表中。
在确定出各端口的disparity值,为了进一步确定40bit的编码后数据的位置是否与各端口已经对齐,在一种可选的实施例中,上述装置还包括:第二移动模块,用于在确定4端口中各端口的disparity值之后,在根据各端口的disparity值,分别对编码后数据进行解码,得到各端口解码后数据之前,在各端口的disparity值中至少有一个不存在于预设值中时,将各端口编码后数据朝着预设方向移动一位,直至各端口的disparity值均存在于预设值中。
在将解码后数据组成帧格式之前,需要确定解码后的8bit数据的正确性,为了确定解码后的8bit数据的正确性,对解码后数据继续进行同步检测,在一种可选的实施例中,上述装置还包括:第二替换模块和同步检测模块;
其中,第二替换模块,用于在根据各端口的disparity值,分别对编码后数据进行解码,得到各端口解码后数据之后,将端口0的控制码由K28.5替换为K28.1,并触发同步检测模块;同步检测模块,用于在受到触发后在4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,各端口解码后数据中至少有一个不存在于预设的编码表中时,触发第一移动模块执行将各端口编码后数据朝着预设方向移动一位。
在实际应用中,第二接收模块81、第二确定模块82和解码模块83均可由位于接收端的CPU、MPU、ASIC或FPGA等实现。
本实施例记载一种计算机可读介质,可以为ROM(例如,只读存储器、FLASH存储器、转移装置等)、磁存储介质(例如,磁带、磁盘驱动器等)、光学存储介质(例如,CD-ROM、DVD-ROM、纸卡、纸带等)以及其他熟知类型的程序存储器;计算机可读介质中存储有计算机可执行指令,当执行指令时,引起至少一个处理器执行包括以下的操作:
接收来自QSGMII的4端口待编码数据;确定4端口中各端口的disparity值;根据各端口的disparity值,分别对各端口待编码数据进行编码,并将各端口编码后数据进行并串转换处理。
本发明实施例所提供的数据编码方法,数据编码装置在接收到QSGMII的4端口待编码数据之后,首先,确定4端口中各端口的disparity值,在确定出各端口的disparity值之后,根据各端口的disparity值分别对各端口待编码数据进行编码,得到各端口编码后数据,也就是说,数据编码装置对接收到的4端口待编码数据,先计算出各端口的disparity值,这样,在知晓各端口的disparity值的情况下,利用各端口的disparity值可以同时对各端口的待编码数据进行编码,实现对4端口待编码数据并行编码的过程,降低了每个端口待编码数据进行编码的速度,那么,降低了4通道GMII的32bit数据每个端口进行8b/10b编码的处理频率,提高了编码效率,进而提高了系统的稳定性和可靠性。
这里需要指出的是:以上装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果,因此不做赘述。对于本发明装置实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解,为节约篇幅,这里不再赘述。
这里需要指出的是:
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种数据编码方法,其特征在于,包括:
接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;
确定所述4端口中各端口的不均等性disparity值;
根据各端口的disparity值,分别对所述各端口待编码数据进行编码,并将所述各端口编码后数据进行并串转换处理。
2.根据权利要求1所述的方法,其特征在于,所述确定所述4端口中各端口的disparity值,包括:
将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;
根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
3.根据权利要求1所述的方法,其特征在于,在接收来自QSGMII的4端口待编码数据之后,在确定所述4端口中各端口的disparity值之前,所述方法包括:
将所述4端口中端口0的控制码由K28.5替换为K28.1。
4.一种数据解码方法,其特征在于,包括:
接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至4串行千兆媒体独立接口QSGMII的4个端口;
确定所述4端口中各端口的不均等性disparity值;
根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据。
5.根据权利要求4所述的方法,其特征在于,所述确定所述4端口中各端口的disparity值,包括:
将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;
根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
6.根据权利要求4所述的方法,其特征在于,在接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口之后,在确定所述4端口中各端口的disparity值之前,所述方法包括:
所述各端口编码后数据中至少有一个不存在于预设的编码表中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口编码后数据均存在于所述预设的编码表中。
7.根据权利要求4所述的方法,其特征在于,在确定所述4端口中各端口的disparity值之后,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之前,所述方法包括:
所述各端口的disparity值中至少有一个不存在于预设值中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口的disparity值均存在于所述预设值中。
8.根据权利要求6所述的方法,其特征在于,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之后,所述方法包括:
将所述端口0的控制码由K28.1替换为K28.5;
所述4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,所述各端口解码后数据中至少有一个不存在于预设的编码表中时,返回执行将所述各端口编码后数据朝着预设方向移动一位的步骤。
9.一种数据编码装置,其特征在于,包括:
第一接收模块,用于接收来自4串行千兆媒体独立接口QSGMII的4端口待编码数据;
第一确定模块,用于确定所述4端口中各端口的不均等性disparity值;
编码模块,用于根据各端口的disparity值,分别对所述各端口待编码数据进行编码,并将所述各端口编码后数据进行并串转换处理。
10.根据权利要求9所述的装置,其特征在于,所述第一确定模块,具体用于将与所述4端口中每个端口对应的上一端口的disparity值输出至所述各端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第一替换模块,用于在接收来自QSGMII的4端口待编码数据之后,在确定所述4端口中各端口的disparity值之前,将所述4端口中端口0的控制码由K28.5替换为K28.1。
12.一种数据解码装置,其特征在于,包括:
第二接收模块,用于接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至4串行千兆媒体独立接口QSGMII的4个端口;
第二确定模块,用于确定所述4端口中各端口的不均等性disparity值;
解码模块,用于根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据。
13.根据权利要求12所述的装置,其特征在于,所述第二确定模块,具体用于将与所述4端口中每个端口对应的上一端口的disparity值输出至所述每个端口;根据与所述每个端口对应的所述上一端口的disparity值,确定所述每个端口的disparity值。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第一移动模块,用于在接收编码后数据,对所述编码后数据进行串并转换,将串并转换后得出的4路并行数据分别发送至QSGMII的4个端口之后,在确定所述4端口中各端口的disparity值之前,在所述各端口编码后数据中至少有一个不存在于预设的编码表中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口编码后数据均存在于所述预设的编码表中。
15.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二移动模块,用于在确定所述各端口的disparity值之后,在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之前,在所述各端口的disparity值中至少有一个不存在于预设值中时,将所述各端口编码后数据朝着预设方向移动一位,直至所述各端口的disparity值均存在于所述预设值中。
16.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第二替换模块,用于在根据所述各端口的disparity值,分别对所述编码后数据进行解码,得到所述各端口解码后数据之后,将所述端口0的控制码由K28.1替换为K28.5,并触发同步检测模块;
所述同步检测模块,用于在受到触发后在所述4端口中端口1、2、3的控制码中至少有一个不为K28.1时,或者,所述各端口解码后数据中至少有一个不存在于预设的编码表中时,触发所述第一移动模块执行将所述各端口编码后数据朝着预设方向移动一位。
CN201610793617.2A 2016-08-31 2016-08-31 一种数据编解码方法和装置 Withdrawn CN107783922A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610793617.2A CN107783922A (zh) 2016-08-31 2016-08-31 一种数据编解码方法和装置
PCT/CN2017/095344 WO2018040824A1 (zh) 2016-08-31 2017-07-31 数据编码方法、数据解码方法和装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610793617.2A CN107783922A (zh) 2016-08-31 2016-08-31 一种数据编解码方法和装置

Publications (1)

Publication Number Publication Date
CN107783922A true CN107783922A (zh) 2018-03-09

Family

ID=61301354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610793617.2A Withdrawn CN107783922A (zh) 2016-08-31 2016-08-31 一种数据编解码方法和装置

Country Status (2)

Country Link
CN (1) CN107783922A (zh)
WO (1) WO2018040824A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540489A (zh) * 2018-04-24 2018-09-14 天津芯海创科技有限公司 Pcs协议复用芯片和方法
CN108667824A (zh) * 2018-04-24 2018-10-16 天津芯海创科技有限公司 Pcs协议复用芯片和方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108965031B (zh) * 2018-08-21 2021-10-22 北京东土科技股份有限公司 交换机错包修复方法、装置、交换机及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120300792A1 (en) * 2011-05-24 2012-11-29 Cisco Technology, Inc. Octal Serial Gigabit Media-Independent Interface
CN104221290A (zh) * 2012-03-23 2014-12-17 高通股份有限公司 可配置的多模式介质独立接口

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004147041A (ja) * 2002-10-24 2004-05-20 Mitsubishi Electric Corp 検出回路及び復号回路
CN101674089B (zh) * 2009-10-19 2013-01-09 中国科学院声学研究所 一种高速8b/10b编码器和解码器及其对错误输入的处理方法
KR101695835B1 (ko) * 2012-03-23 2017-01-13 퀄컴 인코포레이티드 멀티-포트 직렬 미디어 독립 인터페이스
CN103138889A (zh) * 2012-12-05 2013-06-05 无锡华大国奇科技有限公司 高速8b/10b编码装置及编码器
CN104579583A (zh) * 2015-02-09 2015-04-29 浪潮电子信息产业股份有限公司 一种对8b/10b编码方式的改进方法
CN106656872A (zh) * 2015-07-17 2017-05-10 深圳市中兴微电子技术有限公司 混合物理编码子层以及数据发送、接收方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120300792A1 (en) * 2011-05-24 2012-11-29 Cisco Technology, Inc. Octal Serial Gigabit Media-Independent Interface
CN104221290A (zh) * 2012-03-23 2014-12-17 高通股份有限公司 可配置的多模式介质独立接口

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AKIN KOYUNCUOGLU: ""QSGMII Specification"", 《HTTPS://WWW.DOCIN.COM/P-1497646023.HTML》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108540489A (zh) * 2018-04-24 2018-09-14 天津芯海创科技有限公司 Pcs协议复用芯片和方法
CN108667824A (zh) * 2018-04-24 2018-10-16 天津芯海创科技有限公司 Pcs协议复用芯片和方法

Also Published As

Publication number Publication date
WO2018040824A1 (zh) 2018-03-08

Similar Documents

Publication Publication Date Title
US8661313B2 (en) Device communication techniques
US10374782B2 (en) Full duplex transmission method for high speed backplane system
US7746883B2 (en) Multi-drop ethernet
US6385208B1 (en) Serial media independent interface
CN101309258B (zh) 高速以太网介质无关接口码块的分发和接收方法及装置
US8370716B2 (en) USB device and correction method thereof
CN103931146A (zh) 数据处理的方法和装置
US6911922B2 (en) Method to overlay a secondary communication channel onto an encoded primary communication channel
CN107783922A (zh) 一种数据编解码方法和装置
EP2701334B1 (en) Data reception apparatus and marker information extraction method
KR20150096495A (ko) Mdio를 sgmii 송신들로 인코딩하기 위한 장치 및 방법
EP2127145B1 (en) Mechanism for channel synchronization
US7787502B1 (en) Port multiplexing apparatus and methods
EP1700224B1 (en) Receiver corporation
WO2015165206A1 (zh) 基于芯片的数据传输方法、装置及系统、计算机存储介质
EP2006777A1 (en) Bus inverting code generating apparatus and method of generating bus inverting code using the same
CN101473611B (zh) 一种处理数据段的方法和装置以及一种通信系统
US20040196076A1 (en) Apparatus and method for transmitting differential signal
EP1424871B1 (en) Method and apparatus capable of transferring very high data rates across a midplane or backplane
CN100375421C (zh) 异步数据传输的传输/接收单元
EP3345356B1 (en) Register read and write operations over auto negotiation next pages
US20090257451A1 (en) Method and apparatus to align and standardize packet based parallel interfaces
US9106460B1 (en) Running disparity computation predictor
CN201042016Y (zh) 多速率多协议比特流处理器
US20220043767A1 (en) Multi-port mac with flexible data-path width

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
WW01 Invention patent application withdrawn after publication

Application publication date: 20180309

WW01 Invention patent application withdrawn after publication