GT收发器模块的一些使用记录

逗号检测(字节对齐):K28.5 ,在字节对齐的基础上,做包头检测,检测的包头可以用来做时钟修正处理,逗号检测做完之后,有标志拉高。串并转换之后,K码可能分布在两个字节上,因此,要进行字节对齐,把K码对齐到一个字节上,然后再去解析后面的数据。

不要忘记在encoding and clocking中,勾选TXPLLREFCLK,这个是参考时钟通过PLL产生TXOUTCLK时钟的。

参考时钟:156.25,得到的用户时钟 250M。
状态机复位状态完成标志才能收发数据,sys_clk与DRP一样

IBUFDS的CEB 0为使能信号。

主的GT收发器和从的GT收发器,复位信号使用1个就行。

数据有效gt0_data_valid_in与手动对齐的端口是配合使用的,8B10B自动对齐直接给1.

gt0_rxuserrdy_in:准备使用的时候给高电平,直接给1就行。

rxclkcorcnt时钟矫正计数
rxdata_out:差分数据接收之后,内部进行串并转换,解码,跨时钟域处理,然后把数据给到FPGA逻辑,数据位宽与FPGA logic时钟域下的数据位宽相同,然后FPGA进行字节对齐

gt0_rxdisperr_in不常用

gtxrxn与gtxrxp:gt bank进来的数据接收端口

字节对齐信号:gt0_rxbyterealign_in,可用来作为整个PHY层正常工作的指示信号

gt0_rxdfelpmreset_in:felp复位信号不常用,给0。

gt0_rxoutclkfabric_out: 接收时钟输出,保留,不输出。

gt0_gtrxreset_in:输入端口复位,用不用都行,

gt0_rx_charisk_out:K码指示信号:0数据,1K码

tx_userrdy : 1

gt0_txdiffctrl_in: 差分输入的幅值控制。

gt0_txdata_in:发送端口数据的输入,FPGA逻辑数据位宽相同

gtx_txp_out,gtx_txn_out:输出出去

空闲状态要发送空闲的K码或者LSFR(频谱接近白噪声),防止电磁干扰。

同步码有两个作用,一个是逗号检测进行字节对齐,一个是时钟矫正。假如使用K码BC(25.5)作为同步码,前导码为BC50BC50+界定符SPF(K27.7) + 数据 + 结束字符EOF(K29.7) + K23.7。

帧校验模块:字节校验,大小端转换。

发送模块上接上层逻辑,下接GT端口,发送模块与上层逻辑可以用AXI_STREAM数据流进行传输数据。AXI_stream数据流的流量控制,通过empty、FULL来去控制。AXI用last信号指示最后一字节,也就是有效数据结束标志。有效数据开始标志则是ready与valid的握手机制。

组帧的触发逻辑是FIFO不为空,上层数据来了,那么就要组帧发送了。
组帧的状态机在初始化状态时,也要发送K码空闲码,跳转到空闲状态时拉高状态机复位完成信号,依然要同步发送K码。空闲状态时拉高状态机复位完成信号的条件是GT触发器准备好了发送数据,也就是gt_tx_done要拉高。

组帧要记得随数据发送K码与普通数据标志。

组帧发送的时候,要注意大小端顺序,想好先发送高字节还是低字节。大小端是针对非单字节数据的存取。大端存储是将数据的高位存储在内存的低地址处,小端存储是将数据的低位存储在内存的低地址处。不论大小端,每个字节内的单bit,还是按照小端顺序来存,低位存储低比特,高位存储高bit。

GT收发器内部,先从低字节开始发送,先发送第0字节,在发送1字节…所以,要是想发送BC50BC50的顺序发送,那么发送时需要将BC放到低字节。大小端的本质还是要看模块处理数据的先后顺序,适配上就行。两个同步码可能会被丢掉一个,因此做识别的时候,可以识别出一个BC50就行。

在内部代码中,其实是大端数据存储,想要发送的顺序就是 BC–50–BC–50,存储也是BC50BC50。D0D1D2D3的顺序存储。最后32bit的数据,keep可能有4种情况:1000、1100、1110、1111.注意大端时候的keep为1 的标志顺序也在高字节上。最后一字节的发送逻辑要按照情况讨论,keep为0的相应字节数据不能发送。

SOF由于是一个字节数据,发送32bit数据的时候要拼接bit的数据,后面再发送数据的时候,就需要把了两个32bit的数据进行拆分并拼接了。拼接的时候也要考虑GT收发器发送的顺序与处理顺序。

32bit的数据打拍就能在同一时钟周期获得相邻32bit的数据,也就是64bit的数据,可以根据64比特中同步码可能出现的字节位置,来进行不同情况的判断和处理。

在进行同步码判断的时候,别忘记判断K码指示标志位,区分开正常数据。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值