本发明涉及gtx解码领域,具体为一种通用gtx解码的方法。
背景技术:
1、在现代通信领域,随着数据通讯数据量的增多,数据通讯速率也越来越高,从开始的kbps,到后来的mbps,再到现在的gbps,通讯速率越来越高,而gtx作为近几年兴起来的高速通信也备受关注。
2、gtx通讯采用串行通讯的方式,只需要收发各一对信号,速率现在最高可以达到20gbps。现在很多器件,包括xilinx的fpga以及intel的cyclone系列fpga内部都集成了gtx,给开发者提供了很大的便利。但是gtx通讯由于速率达到gbps,相应的也还会带来很多的问题。一是不同厂家的兼容性上,在不同厂家的fpga器件进行通讯时,会面临大小端问题、编码格式不兼容等问题;二是,由于速率的提高,gtx在通讯的时候会面临数据前后字节的翻转,带来数据解析上的困难,甚至带来数据的误码,造成功能性的故障,大部分的应用场景,为了解决这个问题,开发者一般在应用层添加校验,当校验不通过时,舍弃当前拍的数据,在享受高速通讯的时候,不得不面临丢拍的问题。在某些非实时场合,这样还是可以接受的,但是在一些实时应用的场合,这样的结果显然是不可接受的,这也在某方面限制了gtx在某些场合的应用,目前还没有一个通用的解决办法。
技术实现思路
1、本发明的目的是针对现有技术的缺陷,提供一种通用gtx解码的方法,以解决上述背景技术提出的问题。
2、为实现上述目的,本发明提供如下技术方案:一种通用gtx解码的方法,具体方法如下:
3、s01:设置gtx通讯协议,设置空闲码为bc,并且设置前两个16位数据中插入空闲码bc,同时设置在有效数据的最后加入两个无意义的16位数据;
4、s02:等待数据到来,根据标识码charisk以及接收数据rxdata,判断是否需要进行接收字节颠倒,并设置字节颠倒标识inv_byte;
5、s03:根据接收到的标识码charisk,判断是否需要进行字节拼凑,并对字节拼凑标识rcv_dund进行置位,并设置等待机制,如果标识符charisk没有按照预期到来,则回到最s01;
6、s04:根据前面得到的字节颠倒标识inv_byte和字节拼凑标识rcv_dund进行原始数据的恢复,需要根据二者的情况决定数据数据恢复的高8位和低8位的数据来源;
7、s05:对数据进行接收,进入数据数据写fifo,等待标识码rxchrisk为11,回到s02。
8、作为本发明的一种优选技术方案,所述s01中在有效数据的最后加入两个无意义的16位数据,标识符charisk仍然定义为00。
9、作为本发明的一种优选技术方案,所述有效数据是当前拍数据和下一拍数据的组合,或者是当前拍数据的颠倒。
10、作为本发明的一种优选技术方案,所述s03中需要完成对字节颠倒顺序inv_byte和字节拼凑标识rcv_dund根据不同的情况,进行不同的设置,同时要把插入bc和丢掉bc的情况完全考虑在内,以防造成数据的丢失和误判。
11、作为本发明的一种优选技术方案,所述s05还设置了高位先写还是低位先写的使能位,并且设置了高16位和低16位数据颠倒的使能位;使用者根据使用的情况进行配置即可,兼容了市面上大小端不兼容的问题,同时兼容了先收低位还是先收高位的不同情况。
12、本发明的有益效果是:本方法以xilinx的artix7系列的fpga为依托,经过大量的试验和实际工程应用,实现了一种通用gtx解码的方法,使得gtx解码的成功率大大提高,大大缩短了系统开发的时间,降低了系统的复杂度,使用者只需要按照本发明实现的方法,就可以做到误码率基本降低到0,同时克服了不同厂家的兼容的问题,准确率高,通用性强,适应性强,可移植性强。
1.一种通用gtx解码的方法,其特征在于:具体方法如下:
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位数据颠倒的使能位;使用者根据使用的情况进行配置即可,兼容了市面上大小端不兼容的问题,同时兼容了先收低位还是先收高位的不同情况。