GT收发器64B66B设计(1)IP核配置和example design

文章目录

  • 前言
  • 一、IP核配置
    • 1.1、编码方式
    • 1.2、字节对齐和逗号码
  • 二、example design

前言

在前面我们基于GT收发器进行了PHY层设计,其中采用的编码方式为8B10B,为进一步提高传输效率,从本文开始,将采用基于GT高速收发器采用64B66B编码方式进行设计。

一、IP核配置

1.1、编码方式

在这里插入图片描述
前面的配置与8B10B一致,可以看前面的文章介绍。
第三页有所不同:
数据位宽我们选择64bit,当然32bit也可以。TX端在进行编码选择的时候,64B66B有俩种方式,分别为:
Ext Seq Ctr:数据流经过64B/66B的齿轮箱和混淆器。这里提到了外部序列计数器(External Sequence Counter),这可能是指序列计数器是在设计中实现的,而不是在收发器内部。
Int Seq Ctr:这里提到了GTX收发器,数据流同样经过64B/66B的齿轮箱和混淆器,但序列计数器是在收发器内部实现的。

这里需要先了解Gearbox,也就是齿轮箱是干嘛的,对于64B66B编码而言,数据输入是54bit,输出是2bit,所以这之间存在着2bit的带宽差,Gearbox 就是用来解决这种差异的,实现方式是:将66bit数据拿出来2bit先存入Gearbox,然后输出64bit,当发送32次后,用户这边暂停发送一帧,让Gearbox当中的64bit数据发送,这样就将输入输出带宽差异消除。而这里的计数器就是用来计数发了多少次数据了的。这个计数器可以是在GT内部实现,也可以在用户逻辑里实现,GTH以后就没有内部计数器了,为了减小电路复杂度,这里为了通用我们也选择外部计数器。

文档描述部分:
在这里插入图片描述

1.2、字节对齐和逗号码

在64B66B编码当中,我们需要自己去进行字节对齐,所以这里的都没办法选择。
在这里插入图片描述

二、example design

在这里插入图片描述
在示例工程里我们可以看到比8B10B工程多了三模块,分别是:块同步模块,该模块就是实现字节对齐的功能;和64B66B编码相关的加扰模块以及解扰模块。

这些模块可以直接被我们拿来使用,
我们重点关注块锁定模块:
参考xilinx文章ug476
在这里插入图片描述
状态机通过跟踪有效和无效的同步头来工作。在复位时,块锁定被取消,状态为LOCK_INIT。下一个状态是RESET_CNT,其中所有计数器都被归零。同步头在TEST_SH状态中进行分析。如果头部有效,则在VALID_SH状态中递增sh_cnt,否则在INVALID_SH状态中递增sh_count和sh_invalid_count。对于图中显示的块同步状态机,sh_cnt_max和sh_invalid_cnt_max都是常量,分别设置为64和16。从VALID_SH状态开始,如果sh_cnt小于sh_cnt_max且test_sh为高电平,则下一个状态是TEST_SH。如果sh_cnt等于sh_cnt_max且sh_invalid_cnt等于0,则下一个状态是GOOD_64,并且从那里开始断言block_lock。然后进程再次重复,并将计数器清零。为了实现块锁定,状态机必须连续接收sh_cnt_max个有效同步头,而不会收到无效同步头。但是,当块锁定达到sh_invalid_cnt_max-1时,可以在sh_cnt_max个有效同步头内接收到无效同步头。因此,一旦锁定,要破坏锁定就更加困难。
下图显示了由于在实现数据对齐之前多次收到无效同步头而导致的块同步状态机多次断言RXGEARBOXSLIP的波形。发出RXGEARBOXSLIP后,状态机在检查有效同步头之前等待32个RXUSRCLK2周期。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589557.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Erlang】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应,CentOS-7,选择Erlang 23.3.4,RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…

Leaflet使用多面(MultiPolygon)进行遥感影像掩膜报错解决之道

目录 前言 一、问题初诊断 1、山重水复 2、柳暗花明 3、庖丁解牛 4、问题定位 二、解决多面掩膜问题 1、尝试数据修复 2、实际修复 3、最终效果 三、总结 前言 之前一篇讲解遥感影像掩膜实现:基于SpringBoot和Leaflet的行政区划地图掩膜效果实战&#xff0…

C++输出格式控制

setprecision(n)可控制输出流显示浮点数的数字个数。C默认的流输出数值有效位是6,所以不管数据是多少,都只输出六位。如果setprecision(n)与setiosflags(ios::fixed)或者setiosflags(ios_base::fixed)合用,可以控制小数点右边的数字个数。set…

Java中线程详解

文章目录 相关概念多线程概念实现方式继承Thread类实现Runnable接口比较 常用方法线程安全产生的原因解决思想同步同步代码块同步方法Lock锁机制 死锁概念避免 状态线程间的通讯介绍方法 相关概念 并行:在同一时刻,有多个任务在多个CPU上同时执行并发&a…

阻塞队列(BlockingQueue)

何为阻塞队列 当阻塞队列是空时,从队列中获取元素的操作将被阻塞当阻塞队列是满时,往队列中添加元素将会被阻塞试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他线程往空的队列中插入新的元素试图往满的队列中,添加新的元素的线程也会被阻塞,直到其他线程从队列中移除…

百度地图 JavaScript API GL快速升级 和mapV的使用

一、百度地图 JavaScript API GL快速升级 JavaScript API GL升级指南 1、在原来的链接中添加type webgl 2、批量替换页面中的BMap直接替换为BMapGL 二、mapV的使用 MapVGL mapVGL的效率确实要快很多,一万个点基本实现秒现 1、加载mapvgl.min.js export const…

JAVAEE之Spring, Spring Boot 和Spring MVC的关系以及区别

1.Spring, Spring Boot 和Spring MVC的关系以及区别 Spring: 简单来说, Spring 是⼀个开发应⽤框架,什么样的框架呢,有这么⼏个标签:轻量级、⼀ 站式、模块化,其⽬的是⽤于简化企业级应⽤程序开发 Spring的主要功能: 管理对象&am…

Typecho自媒体博客Spimes主题 X7.2

主题介绍 spimes主题专为博客、自媒体、资讯类的网站设计开发,自适应兼容手机、平板设备。一款简约新闻自媒体类的 typecho 主题,设计上简约、干净、精致、响应式,后台设置更是强大而且实用的新闻自媒体类主题。 已经更新到7.2,删…

安装qrcode库的方法最终解答!

安装qrcode库,记录留痕。 安装qrcode库需要先安装PIL库,如果你是anaconda的话不需要再次下载。 显示successfully installed qrcode… 则表示安装成功 下面是 安装qrcode库操作,PIL库也是一样的。 第①种打开Anaconda-Prompt 输入命令&am…

蓝桥杯真题:货物摆放

import java.util.ArrayList;public class Main {public static void main(String args[]) {//常规思路/*long num 2021041820210418l;int count 0;for ( long i 1 ; i < num ; i ){for ( long j 1 ; j < num ; j ){for ( long k 1 ; k < num ; k ){if ( i * j *…

zIO: Accelerating IO-Intensive Applications with Transparent Zero-Copy IO——论文泛读

OSDI 2022 Paper 论文阅读笔记整理 问题 零拷贝IO一直是一个长期的性能目标。复制会引入内存和CPU开销&#xff0c;限制IO密集型应用程序的性能。IO数据复制在IO堆栈内、通过其应用程序编程接口&#xff08;API&#xff09;和应用程序内执行。现有工作的重点是开发零拷贝IO A…

[Python学习篇] Python创建项目

新建项目 打开开发工具 PyCharm 选择 New Project 目录结构如下 运行 hello world 选中项目&#xff0c;右键 New -> Python File 进行创建文件 运行项目