首页 > 其他分享 >万兆网络中低延迟 PCSPMA 实现

万兆网络中低延迟 PCSPMA 实现

时间:2023-12-21 22:23:19浏览次数:37  
标签:状态 cnt TX 复位 RX 万兆 PCSPMA 时钟 延迟

概况

通过学习 GT Wizard 64b66b 万兆网的低延迟解包方案,以及 gearbox 的对齐技术使用

目的

学习 GT Wizard 64b66b 的 IP 基本构架,灵活使用 IP 完成高速数据传输

软件

Vivado 和 modelsim10.7

硬件

支持 10.3125g 的高速接口开发板

1. 软件基本介绍:

Vivado 是 xilinx 推出的集成开发工具主要针对于硬件设计工程师使用,并且集成了 SDK 开发工具,SDK 针对软件工程师开发使用。

Modelsim 10.7 可以支持和 vivado 联合仿真,当使用到 viado 的 IP 时需要使用 modelsim 仿真,应为 vivado sim 工具跑仿真比较慢,所以建议使用 Modelsim。

2. Xilinx kintex 7 系列的 trainsceivers 架构学习

以本课程示例板卡为例,bank 115 116 117 118 四个 bank 都是高速接口专用 bank,每个 bank 有一个 Quad 也就是 4 收 4 发的高速接口,每个 Quad 可以有 2 个参考时钟,这两个参考时钟也可以给上下的相邻的 quad 提供参考时钟。

Quad 在芯片中的位置

K7-325t 的 Quad 在右侧一列 4 个 Quad
image

Quad 的结构
image

image

参考时钟资源以及路由资源
image
image

image

QPLL 和 CPLL 的时钟架构
image
image
image

手动计算 PLL 参数例子:(此部分用于理解原理 xilinx 软件中会自动计算)示例万兆以太网

第一步:确定线速率为 10.3125gbps 线速率第二步:确定内部数据位宽 32bit

第三步:确定参考时钟频率 156.25Mhz第四步:计算 PLL 输出频率,设置 D=1,

Fpllclkout = flineRateD /2= 10.3125g1/2=5.15625g

第四步:根据 Fpllclkout 频率范围求得 VCO 输出频率,选择 QPLL 还是 CPLL Fvcoclkout=Fpllclkout*2;

QPLL VCO 频率范围是参考 UG476 P55

image

CPLL VCO 频率范围是 参考 UG476 P48
image

根据手册信息本案例只能选择 QPLL

第五步:先假设 M 等于最小值 1,推到出 N 值,这里是整数分频所以参考时钟选择和 N,M 值推到需要一些计算过程。如果不成立需要设置其他 N,M 值进行计算、

N=( Fpllclkout/Fclkin) (2M)=(5.15625g/156.25m)*(2))=66第六步:根据内部数据位宽计算并行时钟 parallel clock

内部位宽可以根据 IP 核选择 16 bit 32bit

如果选择 32bit 那么 4*8=32 所以 W 值选择 4(意思就是 8bit 需要 4 个串行时钟周期获得 DDR 每个沿获取 1bit)而随后的因子选择 1/4 因为再此基础上进行 4 分频得到 32bit 的数据采样时钟,4 个 8bit 数据组成 32bit。

如果内部数据位宽选择 40bit 请问 W 值和后续的分频因子怎么选择呢? 4*10bit=40bit 所以 W=5,分频因子选择 1/4;

如果内部数据位宽选择 20bit 请问 W 值和后续的分频因子怎么选择呢? 2*10bit=20bit 所以 W=5,分频因子选择 1/2;

3. 建立GTwizard 创建low latency PCSPMA

image

  1. FPGA TX Interface

  2. TX 8B/10B Encoder

  3. TX Gearbox

  4. TX Pattern Generator

  5. TX Buffer

  6. TX Polarity Control

  7. TX Parallel In Serial Out

  8. TX Pre- and Post-Emphasis

  9. TX Configurable Driver预加重的使用和调试方法:

预加重需要根据实际通信环境,选择不同的预加重值来进行测试误码率,来选择最优的预加重值。不能过度使用预加重导致信号失真。

码间串扰

image

预加重效果波形
image

  1. RX Configurable Equalization (CTLE Continuous Time Linear Equalizer)
  2. RX Configurable DFE (Decision Feedback Equalization GTX and GTH only)
  3. RX Clock and Data Recovery
  4. RX Serial In Parallel Out
  5. RX Polarity Control
  6. RX Pattern Checker
  7. RX Comma Detection and Alignment
  8. RX 8B/10B Decoder
  9. RX Elastic Buffer
  10. RX Gearbox
  11. RX Fabric Interface RX 链路中的模拟前端
    image

创建 gtwizard ip

搜索 gt wizard ip
image
image

设置线速率,quad 位置等配置信息(示例使用 117bank 的第四对,参考时钟选择 117bank 的 ref0)
image

image

image

设置 pcs 用户接口

image

PMA 优化部分选择默认即可

image
image

PCIE SATA PRBS 相关可以默认即可

总览报告
image
完成生成 IP
image

4. GT transceivers reset

l GT 的初始化分为两步:

image

第一步是初始化 TX RX 对应的 PLL

第二步是初始化 TX RX 对应的 PMA PCS复位的两种模式

  1. 顺序模式顺序完成各个组件的复位。
  2. 单一复位模式,使用组件的专用复位管脚进行独立复位。

image

l 发送端的初始化和复位

发送端只支持顺序模式,不支持单一复位模式。

复位流程:gttxreset 有效,进入 TXPMARESET 处理流程复位 PMA,然后进入 TXPCSRESET 处理流程复位 PCS,复位完成产生 TXRESETDONE 指示复位完成。

顺序复位流程中,如果 txpmareset 信号为高需要等待此信号为低触发 TXPMARESET 处理流程。

顺序复位流程中,如果 txpcsreset 信号为高需要等待此信号为低触发 TXPCSRESET 处理流程。

注: 在 FPGA 初始化配置完成之后此流程会自动进行, 即使不给出 soft_tx_reset_in,gttxreset_in 如 下 流 程 也 会 在 gtwizard_64666b_tx_startup_fsm.v 模块中自动驱动产生。

如果希望进行 TX 部分的复位,给出 soft_tx_reset_in 即可。复位 FSM 到 IDLE 状态完成整个复位流程。

image

复位所该函的模块组件

image

以可以参考 ug476 p61 复位和初始化章节。

l 接收端的初始化和复位

GT 收发器的接收端的复位状态机要相对 TX 复杂很多,并且支持顺序模式和单一组件复位模式。Rx 接收端具有很多组件组成。

顺序模式的复位流程:(下图复位状态机从上到下)

Gtrxreset 激活复位脉冲之后,就会触发自动状态机流程,会自复位初始化各个状态机对应的组件,该函整个 PMA 和 PCS。
imageimage

单一组件的复位流程:(下图从左到右)

RXPMARESET, RXDFELPMRESET, EYESCANRESET, RXPCSRESET, and RXBUFRESET
image
image

细节独立每个单独组件复位时序详细参考 UG476 P78对应复位使用的一些建议
image

5. Gearbox 的使用建立数据收发通路以及搜索同步头算法

建立数据通路框图

image

外部产生序列器的TX Gearbox 变速器的使用以及时序
image

变速率表

image

时序关系
image

外部产生序列器的RX Gearbox 变速器的使用以及时序

image
image

这里 SLIP 信号是用来去给 Gearbox 进行滑动搜索同步头的窗,每一次高脉冲会移动一次窗口,直到搜索到同步头。
image

那么此搜索过程,xilinx 推荐一个搜索状态机用于锁定同步

image

简化后的状态机:
image

搜索同步模块状态机:

优化后的状态机定义 5 个状态,分别为

LOCK_INIT:锁定初始化状态,初始化锁定标志 block_lock 为 false RESET_CNT****:计数器复位状态,复位头包计数器 sh_cnt 和无效头计数器 sh_invalid_cnt;

Sh_cnt:在 TEST_SH 状态下有一个头包计数器加 1(有效无效头包都加 1); Sh_invalid_cnt:在 TEST_SH 状态下有一个无效头包计数器加 1; TEST_SH****:监测同步头状态

此状态下当 sh_cnt == 64 并且 sh_invalid_cnt == 0 跳转到 64_GOOD 状态;

此状态下当 sh_cnt == 64 并且 sh_invalid_cnt > 0 跳转到 RESET_CNT 状态重新复位计数器检测头。

此状态下当 sh_invalid_cnt>=16 或者(block_lock0 && invalid_sh1)跳转到 SLIP 状态,

SLIP:产生移位搜索同步头脉冲状态,控制 gearbox 将搜索同步头的窗口进

行移动一拍。

此状态下产生一个时钟节拍的 slip_en 脉冲,并产生计数器 slip_wait_cnt计数 32 拍后跳转到 RESET_CNT 状态。

此状态下拉低 block_lock 信号; 64_GOOD****:稳定检测到同步头产生锁定标志

此状态下拉高 block_lock 标志并跳转到 RESET_CNT 状态进行下一次的检测。

实例项目:

产生 4 路 IQ 100M 采样率的载波信号 I 路 8bit Q 路 8bit,组成 64bit 数据使用高速接口进行传输。

image

标签:状态,cnt,TX,复位,RX,万兆,PCSPMA,时钟,延迟
From: https://www.cnblogs.com/LiamJacob/p/17920254.html

相关文章

  • Qt程序接收串口数据存在延迟解决办法
    问题在调试接收串口数据的Qt程序中发现,数据存在延迟和粘包现象。下位机发送数据包频率是100Hz,一包56字节,波特率115200,在打印port->readAll()的值的时候发现并不是每10ms读到一包数据,而是大概每50ms左右一次接收到5包数据,在其他电脑上调试,以及下载其他串口助手调试后发现存在同样......
  • RabbitMQの延迟消息
    目录1、什么是延时队列2、延时队列使用场景3、RabbitMQ中的TTL4、如果使用RabbitMQ来实现延时队列4.1、安装插件4.2、代码实现4.2.1、新建maven工程,pom.xml文件4.2.2、属性配置文件application.yml4.2.3、定义常量4.2.3、配置RabbitMQ4.2.4、定义重试时间枚举类型4.2.5、定义消息......
  • OCP接口万兆光卡转接PCIE使用心得
    最近在玩OCP万兆光卡,几十块的万兆卡,真的很香。 需要一个OCP到PCIE的转接卡,就可以在台式机上使用了。  转接卡有PCIEx8,PCIEx4,PCIEx1三种接口,参考PCIE接口规范目前常见PCIExpress版本是2.0,3.0,4.0,最新的AMD主板高端也开始支持5.0 OCP网卡单口10Gbps和双口......
  • 延迟IO 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/fb/deferred_io.html延迟IO延迟IO是一种延迟和重新分配IO的方法。它使用主机内存作为缓冲区,并使用MMU页错误作为执行设备IO的预触发器。以下示例可能是对这种设置如何工作的有用解释:用户空间应用程序(如Xfbdev)将帧缓冲区进行内存映射......
  • flink事件时间的水印延迟不会导致延迟数据在上一个窗口内
    设窗口为5,延迟为3。假如数据为:012567348则两个窗口为:window=TimeWindow{start=0,end=5}01234window=TimeWindow{start=5,end=10}5678即:567的数据不会包含在TimeWindow{start=0,end=5}里。验证程序:publicclassFlinkWindowExample{pu......
  • 八、延迟队列
    一、延迟队列的概念二、延迟队列使用场景三、RabbitMQ中的TTL1、消息设置TTL2、队列设置TTL3、两者的区别四、整合springboot1、创建项目2、添加依赖3、修改配置文件4、添加Swagger配置类五、队列TTL1、代码架构图2、配置文件类代码3、消息生......
  • RabbitMQ 延迟消息的实现——延迟消息插件
     步骤:1.把资料中的rabbitmq_delayed_message_exchange-3.9.0.ez 复制到docker的mq容器的插件目录2.执行命令 dockerexec-itmqrabbitmq-pluginsenablerabbitmq_delayed_message_exchange 在Java代码中配置延迟交换机:(图的左边是注解方式,右下角是@Bean的方式) 比......
  • 香港CN2优化线路带宽低延迟VPS服务器推荐
    原文:https://ichochy.com/posts/20231120.htmlCN2CN2,中国电信下一代承载网(ChinaNetNextCarryingNetwork)。CN2是一个多业务的承载网络,它能够支持数据、语音、视频多种业务融合的应用,为中国电信今后开展NGN业务打下了良好的基础。中国电信构建的CN2网络,力图奠定未来10-20年里中国......
  • setTimeout 函数在前端延迟搜索实现中的作用
    看这段代码:SmartFilterBar.prototype._regularTriggerSearch=function(iDelay){ if(this.getSuppressSelection()){ return; } this._clearDelayedSearch(); this._iDelayedSearchId=setTimeout(function(){ varaPromises=this._getVisibleControlsL......
  • 美国服务器延迟的原因及解决办法
    在国内用户使用美国服务器越来越多,许多用户也发现部分美国的服务器存在延迟的现象,这样就会导致网站在访问较慢,影响用户的体验。那么,美国服务器延迟的原因有哪些?出现这些原因该怎么解决。服务器延迟,通俗的来说先从客户端向服务器进行数据发送请求,在这来回消耗的时间就是所谓的......