GT收发器基础(一)
目录
1、什么是Serdes
2、基于GT收发器的Aurora ip核分层结构
3、对一个Aurora ip核的example工程进行简单分层说明
1)什么是Serdes
第一步解释一下Serdes:SERializer(串行器)/DESerializer(解串器);
第二步什么是SERializer(串行器):简单来说就是把并行数据转成串行数据,这么一想GT不就是需要把用户侧FPGA的并行数据转成串行数据以后才能发送吗?对了,GT就是应用了Serdes的这个特性。
第三步什么是DESerializer(解串器):发送端需要所谓的channel partner也就是对侧的GT发来的数据,这个数据刚过来的时候是串行的,那接收端要处理,就需要把数据并行化。当然这些过程中还有加扰解扰,8b/10b编解码以及64b/66b编解码等等操作,后续再展开,这里者在建立一个完整的GT拓扑图,不作深层次的技术说明。
2)基于GT收发器的Aurora ip核分层结构
这个部分个人认为才是GT收发器学习重中之重,从宏观上理解GT收发器,才能真正做到一览众山小。以下是从我个人的角度做出的分层。
a.用户层:该部分主要是处理时钟输入后的单端化,然后是时钟的分配;后面就是数据的打包以及校验处理了,因为GT传输的数据需要一个所谓的起始结束标志以及一些空闲码等等,关于起始结束标志很好理解,就像我们经常用的Uart就会有起始位和停止位一样。关于空闲码,就是在没有任何程序需要发送的数据时候插入空闲码让GT继续发送,但是为什么不能让GT通道停下来呢?我个人认为一个很重要的原因就是,空闲码可以维护线路状态,避免由于长时间没有数据传输而导致线路状态不稳定。所以一旦建立链路后就会一直发送数据,没有有效数据就发送IDLE空闲码。
b.链路层:所谓链路层就是要建立数据发送的路径,在Aurora协议中,链路层主要处理数据的打包,通道的绑定,数据的校验等等工作。
c.物理层:这里的物理层包含PCS和PMA,PCS是物理编码子层,顾名思义就是用来做编码的,大名鼎鼎的8b/10b编码就是在这里完成的,PMA就是物理媒介适配层,说白了就是在PCS和数据发送通道之间建立一个适配层,大名鼎鼎的Serdes特性就是在这里使用的。
3)对一个Aurora ip核的example工程进行简单分层说明
在Vivado中建立Aurora ip核的时候选择将逻辑分享到example project中的后生产ip核,生成完ip核后右键ip核就可以看到一个open example project的选项,点击这个选项便可以打开一个Vivado为初学者准备的一个demo,初学者可以在这个demo中学习到以下知识:1、官方人员写的高质量代码以及代码风格,提升自身编码能力。2、对照之前说的各种分层结构以及功能,学习各种模块并理解其作用。3、建立复杂通讯中分层传输的思想,学好Aurora ip核以后或许可以更好地理解以太网七层协议。
那在整个example工程中IP核以外主要处理几个问题:1、时钟与复位;2、用户数据接口;
在ip核以内主要完成:1、数据的编解码(8b/10b,64b/66b…)以及校验功能(CRC32);2、帧头帧尾空闲码生产,控制码生成;3、数据的加扰解绕。
//
//
//
//
后续再更:1、vivado中Aurora ip核的配置以及7 serial gtp ip核的配置,并对比说明;2、example工程中每一个.v文件的作用;3、ip核的时钟框架;4、数据的处理以及编码逻辑分析;5、国产紫光高速口HSST评测。