CN116054837A - 一种通用gtx解码的方法 - Google Patents
一种通用gtx解码的方法 Download PDFInfo
- Publication number
- CN116054837A CN116054837A CN202211605118.8A CN202211605118A CN116054837A CN 116054837 A CN116054837 A CN 116054837A CN 202211605118 A CN202211605118 A CN 202211605118A CN 116054837 A CN116054837 A CN 116054837A
- Authority
- CN
- China
- Prior art keywords
- data
- byte
- gtx
- setting
- decoding
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种通用GTX解码的方法,设置GTX通讯协议,设置空闲码为BC;等待数据到来;根据接收到的标识码charisk;根据前面得到的字节颠倒标识inv_byte和字节拼凑标识rcv_dund进行原始数据的恢复,需要根据二者的情况决定数据数据恢复的高8位和低8位的数据来源;对数据进行接收,进入数据数据写FIFO,等待标识码rxchrisk为11,本方法以XILINX的Artix7系列的FPGA为依托,经过大量的试验和实际工程应用,实现了一种通用GTX解码的方法,使得GTX解码的成功率大大提高,大大缩短了系统开发的时间,降低了系统的复杂度,使用者只需要按照本发明实现的方法,就可以做到误码率基本降低到0,同时克服了不同厂家的兼容的问题,准确率高,通用性强,适应性强,可移植性强。
Description
技术领域
本发明涉及GTX解码领域,具体为一种通用GTX解码的方法。
背景技术
在现代通信领域,随着数据通讯数据量的增多,数据通讯速率也越来越高,从开始的Kbps,到后来的Mbps,再到现在的Gbps,通讯速率越来越高,而GTX作为近几年兴起来的高速通信也备受关注。
GTX通讯采用串行通讯的方式,只需要收发各一对信号,速率现在最高可以达到20Gbps。现在很多器件,包括XILINX的FPGA以及Intel的Cyclone系列FPGA内部都集成了GTX,给开发者提供了很大的便利。但是GTX通讯由于速率达到Gbps,相应的也还会带来很多的问题。一是不同厂家的兼容性上,在不同厂家的FPGA器件进行通讯时,会面临大小端问题、编码格式不兼容等问题;二是,由于速率的提高,GTX在通讯的时候会面临数据前后字节的翻转,带来数据解析上的困难,甚至带来数据的误码,造成功能性的故障,大部分的应用场景,为了解决这个问题,开发者一般在应用层添加校验,当校验不通过时,舍弃当前拍的数据,在享受高速通讯的时候,不得不面临丢拍的问题。在某些非实时场合,这样还是可以接受的,但是在一些实时应用的场合,这样的结果显然是不可接受的,这也在某方面限制了GTX在某些场合的应用,目前还没有一个通用的解决办法。
发明内容
本发明的目的是针对现有技术的缺陷,提供一种通用GTX解码的方法,以解决上述背景技术提出的问题。
为实现上述目的,本发明提供如下技术方案:一种通用GTX解码的方法,具体方法如下:
S01:设置GTX通讯协议,设置空闲码为BC,并且设置前两个16位数据中插入空闲码BC,同时设置在有效数据的最后加入两个无意义的16位数据;
S02:等待数据到来,根据标识码charisk以及接收数据rxdata,判断是否需要进行接收字节颠倒,并设置字节颠倒标识inv_byte;
S03:根据接收到的标识码charisk,判断是否需要进行字节拼凑,并对字节拼凑标识rcv_dund进行置位,并设置等待机制,如果标识符charisk没有按照预期到来,则回到最S01;
S04:根据前面得到的字节颠倒标识inv_byte和字节拼凑标识rcv_dund进行原始数据的恢复,需要根据二者的情况决定数据数据恢复的高8位和低8位的数据来源;
S05:对数据进行接收,进入数据数据写FIFO,等待标识码rxchrisk为11,回到S02。
作为本发明的一种优选技术方案,所述S01中在有效数据的最后加入两个无意义的16位数据,标识符charisk仍然定义为00。
作为本发明的一种优选技术方案,所述有效数据是当前拍数据和下一拍数据的组合,或者是当前拍数据的颠倒。
作为本发明的一种优选技术方案,所述S03中需要完成对字节颠倒顺序inv_byte和字节拼凑标识rcv_dund根据不同的情况,进行不同的设置,同时要把插入BC和丢掉BC的情况完全考虑在内,以防造成数据的丢失和误判。
作为本发明的一种优选技术方案,所述S05还设置了高位先写还是低位先写的使能位,并且设置了高16位和低16位数据颠倒的使能位;使用者根据使用的情况进行配置即可,兼容了市面上大小端不兼容的问题,同时兼容了先收低位还是先收高位的不同情况。
本发明的有益效果是:本方法以XILINX的Artix7系列的FPGA为依托,经过大量的试验和实际工程应用,实现了一种通用GTX解码的方法,使得GTX解码的成功率大大提高,大大缩短了系统开发的时间,降低了系统的复杂度,使用者只需要按照本发明实现的方法,就可以做到误码率基本降低到0,同时克服了不同厂家的兼容的问题,准确率高,通用性强,适应性强,可移植性强。
附图说明
图1为本发明方法的流程图;
图2为本发明空闲状态下标识符charisk和接收数据示意图;
图3为本发明的完整数据包定义示意图;
图4为本发明的chrisk为10并且rxdata为BC5A示意图;
图5为本发明的chrisk为01并且rxdata为5ABC示意图;
图6为本发明的判断空闲码与有效数据流程图;
图7为本发明的数据正常接收情况示意图;
图8为本发明的高8位和低8位翻转的情况示意图;
图9为本发明的字节顺序正常且插入BC情况示意图;
图10为本发明的字节顺序颠倒且插入BC情况示意图;
图11为本发明的字节顺序正常且丢BC的情况示意图;
图12为本发明的字节顺序颠倒且丢BC的情况示意图;
图13为本发明的设置字节颠倒标识inv_byte和字节拼凑标识rcv_dund流程图;
图14为本发明的根据inv_byte和rcv_dund读取数据流图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易被本领域人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
请参阅图1,本发明提供一种技术方案:一种通用GTX解码的方法,具体方法如下:
S01:设置GTX通讯协议,设置空闲码为BC,并且设置前两个16位数据中插入空闲码BC,同时设置在有效数据的最后加入两个无意义的16位数据;
S02:等待数据到来,根据标识码charisk以及接收数据rxdata,判断是否需要进行接收字节颠倒,并设置字节颠倒标识inv_byte;
S03:根据接收到的标识码charisk,判断是否需要进行字节拼凑,并对字节拼凑标识rcv_dund进行置位,并设置等待机制,如果标识符charisk没有按照预期到来,则回到最S01;
S04:根据前面得到的字节颠倒标识inv_byte和字节拼凑标识rcv_dund进行原始数据的恢复,需要根据二者的情况决定数据数据恢复的高8位和低8位的数据来源;
S05:对数据进行接收,进入数据数据写FIFO,等待标识码rxchrisk为11,回到S02。
实施例:一种通用GTX解码的方法,第一是对GTX的设置上;如图2所示为空闲状态下GTX上标识符charisk和接收数据rxdata的对应关系;设置有效数据的第一个16位数据位BC5A,对应的charisk设置为10;第二个16位数据位ID+BC,对应的charisk位01,后面的开始是实际的应用数据,对应的charisk为00,为了减小数据包最后处理的麻烦,在应用层数据最后加上两个无用的16位数据位,完整的数据包定义如图3所示;
从图3中可以看出,本发明将在前两个16数据中,加入空闲码BC,就是为了更加后面步骤中更加有效的恢复有效数据,保证数据的准确率,在最后应用的数据的后面,加入了两个无效的16位数据,但是标识符charisk仍然定义为00,也是为了后面步骤中恢复数据用的。
第二是如何判断有效数据的到来;从图3中可以看出来,判断有效数据的到来,就是要准确的识别出包头。GTX之所以没有一个通用的解码方法,就是因为在空闲码和有效数据切换的时候,会存在很多不确定的情况,必须要把这些情况考虑全面,才能保证数据正确接收,不丢包。之所以选择第一个16位数据为BC5A,就是因为空闲码也是BC,这样就能保证5A一定是和BC同时出现的。因为在GTX中会存在高8位和低8位翻转的情况,所以需要考虑两种情况,第一种情况如图4所示。这种情况说明数据被正常接收,那么字节颠倒标识inv_byte设置为0,表示不需要进行高8位和低8位的颠倒。
第二种情况如图5所示;从图中可以看出,此时接收端没有按照正常情况下接收到BC5A,二是接收到5ABC,这种情况下,说明GTX链路发生了高8位和低8位的翻转,需要对后面所有数据进行翻转,那么字节颠倒标识inv_byte设置为1,表示后面的数据高8位和低8位都需要进行颠倒;具体流程如图6所示。
第三是根据下一拍的标识符判断是否需要进行字节拼凑。在上一步完成BC5A的识别以后,按照正常的道理,只要根据字节颠倒标识inv_byte进行数据的接收即可。但是如果真这样的话,就会造成很多情况下数据包的丢失,这也是现在很多数据处理系统没有处理好的地方,本发明的第二个突破点就是在识别第一个有效数据以后,后面再加了一包ID+BC的数据,对后面的数据进行判断。具体来说,第一种情况如图7所示。在这种情况下,收到BC5A以后,第二拍数据收到ID+BC,并且标识符charisk为01,这种情况就是最正常的情况,那么字节拼凑标识rcv_dund置0,表示不需要进行数据拼凑。
第二种情况如图8所示;这种情况下,接收到5ABC以后,第二拍接收到BC+ID,并且对应的标识符charisk为10,说明只有字节颠倒标识inv_byte为1,只是接收数据的高8位和低8位的数据颠倒位置,字节拼凑标识rcv_dund设置为0,表示不需要进行数据的拼凑。
第三种情况如图9所示;在收到BC5A以后,理论上下一拍应该是ID+BC,但是GTX的特点就是会丢空闲码或者插入空闲码,异常情况下,下一拍出现了BCBC,对应的标识符charisk为11,这说明GTX插入了BC。很多应用场合在碰到这种情况,可能就把这包数据丢掉了造成数据包的丢失,本发明的突破点就在于能考虑这种情况并进行识别,进而得到正确的数据包,这种情况下,对应的后面的数据就要进行拼凑,如图9中所示,那么字节拼凑标识rcv_dund需要置1。
第四种情况如图10所示;在收到5ABC以后,理论上下一拍应该是BC+ID,但是GTX同样的插入了BC,下一拍出现了BCBC,对应的标识符charisk为11,这说明GTX插入了BC。很多应用场合在碰到这种情况,可能就把这包数据丢掉了造成数据包的丢失,本发明的突破点就在于能考虑这种情况并进行识别,进而得到正确的数据包,这种情况下,除了字节颠倒标识inv_byte置1,对应的后面的数据也要进行拼凑,如图10中所示,那么字节拼凑标识rcv_dund需要置1。
第五种情况如图11所示;在收到BC5A以后,理论上下一拍应该是ID+BC,但是GTX发生了异常,丢掉了BC,下一拍直接就是ID+数据,对应的charisk为00,这种情况也是经常会出现的异常情况,如果考虑不全就会造成数据的丢失,这种情况下,对应的后面的数据就要进行拼凑,如图11中所示,那么字节拼凑标识rcv_dund需要置1。
第六种情况如图12所示;在收到5ABC以后,理论上下一拍应该是BC+ID,但是GTX发生了异常,丢掉了BC,下一拍直接就是数据+ID,对应的charisk为00,这种情况也是经常会出现的异常情况,如果考虑不全就会造成数据的丢失,这种情况下,除字节颠倒标识inv_bye置1,对应的后面的数据就要进行拼凑,如图12中所示,那么字节拼凑标识rcv_dund需要置1。
基于上面六种情况,本步骤需要完成对字节颠倒顺序inv_byte和字节拼凑标识rcv_dund根据不同的情况,进行不同的设置,同时要把插入BC和丢掉BC的情况完全考虑在内,才不会造成数据的丢失和误判,具体流程如图13所示。第一种情况为首先判断是否插入BC,也就是判断charisk是否为11,如果插入了BC,那么就需要再等一拍,查看下一拍的情况,如果下一拍为charisk为00,说明需要进行字节拼凑,rcv_dund置1,否则直接回到idle状态,等待下一次数据的到来;第二种情况为判断是否丢掉BC,也就是charisk是否为00,如果确实丢掉BC,那么就需要置位字节拼凑标识rcv_dund,进入工作状态;第三种情况,标识符charisk既不是11,也不是00,说明BC没有插入或者丢掉,那么就直接进入工作状态,字节拼凑标识rcv_dund不需要置位。
第四是根据字节颠倒标识inv_byte和字节颠倒标识rcv_dund进行数据的接收,情况如图7-图12所示,根据二者的状态,有效数据应该是当前拍数据和下一拍数据的组合,或者是当前拍数据的颠倒。具体流程如图14所示。流程基本是按照上述几种情况进行数据读取,当程序判断charisk出现11时,说明空闲码BC出现,那么就表示本帧数据传输完成,退回到idle状态,等待下一包数据的到来。
第五是根据第四步得到的数据,将数据写入FIFO中,供给后面的应用层数据使用。同时将程序退回到idle状态,等待下一包数据的到来。为了兼容是市面上的GTX,本步骤设置了高位先写还是低位先写的使能位,并且设置了高16位和低16位数据颠倒的使能位。使用者根据使用的情况进行配置即可,兼容了市面上大小端不兼容的问题,同时兼容了先收低位还是先收高位的不同情况。
综上,本发明实现了一种通用GTX解码的方法,兼容市面上各类GTX,同时按照本发明实现的解码方法,能正确的接收数据,适应性强,可移植性强,准确率高,误码率降低到0,并且经过大量的试验和工程验证,可以作为一种通用的GTX解码方法来使用。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (5)
1.一种通用GTX解码的方法,其特征在于:具体方法如下:
S01:设置GTX通讯协议,设置空闲码为BC,并且设置前两个16位数据中插入空闲码BC,同时设置在有效数据的最后加入两个无意义的16位数据;
S02:等待数据到来,根据标识码charisk以及接收数据rxdata,判断是否需要进行接收字节颠倒,并设置字节颠倒标识inv_byte;
S03:根据接收到的标识码charisk,判断是否需要进行字节拼凑,并对字节拼凑标识rcv_dund进行置位,并设置等待机制,如果标识符charisk没有按照预期到来,则回到最S01;
S04:根据前面得到的字节颠倒标识inv_byte和字节拼凑标识rcv_dund进行原始数据的恢复,需要根据二者的情况决定数据数据恢复的高8位和低8位的数据来源;
S05:对数据进行接收,进入数据数据写FIFO,等待标识码rxchrisk为11,回到S02。
2.根据权利要求1所述的一种通用GTX解码的方法,其特征在于:所述S01中在有效数据的最后加入两个无意义的16位数据,标识符charisk仍然定义为00。
3.根据权利要求2所述的一种通用GTX解码的方法,其特征在于:所述有效数据是当前拍数据和下一拍数据的组合,或者是当前拍数据的颠倒。
4.根据权利要求1所述的一种通用GTX解码的方法,其特征在于:所述S03中需要完成对字节颠倒顺序inv_byte和字节拼凑标识rcv_dund根据不同的情况,进行不同的设置,同时要把插入BC和丢掉BC的情况完全考虑在内,以防造成数据的丢失和误判。
5.根据权利要求1所述的一种通用GTX解码的方法,其特征在于:所述S05还设置了高位先写还是低位先写的使能位,并且设置了高16位和低16位数据颠倒的使能位;使用者根据使用的情况进行配置即可,兼容了市面上大小端不兼容的问题,同时兼容了先收低位还是先收高位的不同情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605118.8A CN116054837A (zh) | 2022-12-14 | 2022-12-14 | 一种通用gtx解码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211605118.8A CN116054837A (zh) | 2022-12-14 | 2022-12-14 | 一种通用gtx解码的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116054837A true CN116054837A (zh) | 2023-05-02 |
Family
ID=86119042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211605118.8A Pending CN116054837A (zh) | 2022-12-14 | 2022-12-14 | 一种通用gtx解码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116054837A (zh) |
-
2022
- 2022-12-14 CN CN202211605118.8A patent/CN116054837A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU595437B2 (en) | Universal protocol data receiver | |
US7619984B2 (en) | Mechanism for error handling of corrupted repeating primitives during frame reception | |
EP0274709B1 (en) | Packet switch network protocol | |
JP3857317B2 (ja) | 自動交渉の進捗モニタ | |
JPS63296540A (ja) | 単一集積回路マイクロ制御器におけるマルチプロトコル通信制御器 | |
CN108512785B (zh) | 一种数据传输协议方法 | |
CN110704356A (zh) | 一种通用的解析串口数据方法 | |
CN113032319B (zh) | 基于fpga的车载系统数据传输方法及同步高速串行总线结构 | |
CN111698271A (zh) | 一种hdlc协议ip核 | |
CN113392060A (zh) | 一种通用的串口数据接收处理方法 | |
CN106649165A (zh) | 建立嵌入式系统和pc主机通信连接的方法 | |
CN1322444C (zh) | 传输和处理命令与数据的方法 | |
CN109728879B (zh) | 串口突发接入应用层slip协议报文同步纠错方法 | |
CN111224837A (zh) | 自动识别车辆ecu的can通信波特率的方法及其系统 | |
CN112084137B (zh) | 一种SerDes高鲁棒收发电路 | |
CN116054837A (zh) | 一种通用gtx解码的方法 | |
US7363402B2 (en) | Data communications architecture employing parallel SERDES channels | |
WO2023098430A1 (zh) | 一种数据包的处理方法、通信装置及通信系统 | |
CN113259395B (zh) | 一种嵌入式环境下数据通讯装置及方法 | |
EP4152659A1 (en) | Communication device and communication system | |
CN114697158A (zh) | 一种车载多处理器间spi总线通信协议及其工作方法 | |
EP1305922B1 (en) | Ground level shift detection in can systems | |
CN109802727B (zh) | 一种用于通信设备间传输介质盲插拔的方法 | |
US20050154968A1 (en) | Detection of errors | |
CN114726482B (zh) | 一种spi数据传输方法 |
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 |