当前位置: 首页 > news >正文

xilinx的高速接口构成原理和连接结构

本文来源:

  1. V3学院 尤老师的培训班笔记
  2. 【高速收发器】xilinx高速收发器学习记录
  3. Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟
  4. GT Transceiver的总体架构梳理

文章目录

    • 一、概述:
    • 二、高速收发器结构:
      • 2.1 QUAD
        • 2.1.1 时钟
        • 2.1.2 CHANNEL的内部结构:
          • 1)TX
          • 2)RX

一、概述:

Xilinx 的高速接口称之为 transceivers(高速收发器),这部分电路是专用电路,供电等都是独立的,管脚和通用管脚不通用。每个系列的高速接口略有不同,分别为:
1.A7 的GTP
2.V7的GTH
3.K7的GTX
4.少量V7的GTZ
在这里插入图片描述

它们之间的区别在于最高线速率不同,GTZ>GTH>GTX>GTP.,结构大致相同。

手上板子的芯片是xc7a100t系列的,因此需要参考的手册是ug482。

二、高速收发器结构:

在这里插入图片描述
在这里插入图片描述
上图可以看到:A7系列的高速收发器(GTP)是上下两侧分布的,而K7系列的高速收发器(GTX)则是单列放置。

2.1 QUAD

Xilinx 的高速接口是 QUAD 为单位的,意思是 4 对收发器(channel)组成一个 QUAD ,这是收发器的最小单元。
quad内部结构图如下:
在这里插入图片描述
在这里插入图片描述
可见一个quad包括:
1.4个channel,每个channel包含一对收发器
2.1个common(共享时钟资源),包含两个PLL。
3.两个REFCLK(参考时钟)。

注释:
1.GTREFFCLK0/1 是参考时钟,是给高速接口内的 PLL 提供的参考时钟用于产生 PLL 输出
时钟的。
2.GTGREFCLK 是用于测试高速接口的测试时钟,一般我们用户不需使用,比如 IBERT 这
种测试软件可以使用。
3.SouthCLK 是由相邻的上游 QUAD 提供的时钟或者给相邻下游 QUAD 提供时钟,上图是
一个独立的 QUAD。
4.NorthCLK 是由下游的 QUAD 提供时钟,或者给相邻上游的 QUAD 提供时钟。

2.1.1 时钟

因为每一个Quad有两个外部参考时钟,因此对于每一个Quad来说,可以选择两个不同的参考时钟,每一个CHANNEL的接收端和发送端都可以独立选择参考时钟,如下图所示:
在这里插入图片描述
此外,还可以使用其他Qua的参考时钟(south clk & north clk),
在这里插入图片描述

图上可以看到:REFCLK进来必须要经过一个IBUFDS_GTE,完成差分转单端。在这里插入图片描述
IBUFDS_GTE内部结构图:
在这里插入图片描述
注释:HROW是全局时钟放在水平方向还是垂直方向的节点,ODIV2是输出给用户逻辑用的,可以选二分频或者不分频或者直接拉低降低功耗。

注意CPLL和QPLL的区别:
1.QPLL,其中的Q含义就是QUAD,即一个GTX QUAD公用的PLL。
2.CPLL,即Channel PLL,含义是每一个Channel单独拥有的PLL。
3.两者支持的线速率不同CPLL的速率要小于QPLL。

2.1.2 CHANNEL的内部结构:

在这里插入图片描述

  • Transmitter的数据流大致为: FPGA用户逻辑的数据,进入FPGA TX接口,进入PCS,再经过PMA,转换为高速串行数据输出。

  • Receiver的数据流大致为:数据由PMA部分结构,转换为并行数据进入PCS,再经过RX接口输出给FPGA用户逻辑处理。

1)TX

在这里插入图片描述

其中: 用户的并行数据实际是64bit, PCS中会插入2bit数据让他变成66bit.(做64b/66b编码),但是PCSparallel clock 和PMA parallelclock之间的交互,它并不会一次将66位取走,比如他一次取走32位,两次才会取走64位。多余的两位就取不走了,怎么办?

答:一个周期剩余2bit数据,等到16个周期之后,就满32位了,此时TX Sync Gearbox缓存了32位了,就会告诉用户端,让他停一拍,此时TX Sync Gearbox就把积累的32位传递给PMA parallelclock这边了。

2)RX

在这里插入图片描述
其中比较重要的是:Rx-PMA中有CDR(时钟恢复模块),依赖refclk,从数据中将时钟恢复出来。

http://www.lryc.cn/news/324266.html

相关文章:

  • git 上传文件夹至远端仓库的方法
  • 【鸿蒙系统】 ---OpenHarmony加快本地编译(二)
  • centos配置natapp 自动配置
  • sell脚本多行合成一行
  • 部署prometheus 监控k8s集群
  • 两个基本功不足导致的bug
  • 【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置
  • Qt播放音乐代码示例
  • 多线程应用中的性能优化:创建合适的线程数
  • 本地运行环境工具UPUPWANK(win)和Navicat数据库管理工具
  • LeetCode 每日一题 2024/3/18-2024/3/24
  • Unity 鼠标拖拽3D物体跟随移动的方法
  • 数据分析-Pandas分类数据的类别排序和顺序
  • 利用 Claude 3 on Amazon Bedrock 和 Streamlit 的“终极组合”,开发智能对话体验
  • Golang基础 Label标签与goto跳转
  • 二进制王国(蓝桥杯备赛)【sort/cmp的灵活应用】
  • 活用C语言之宏定义应用大全
  • 【源码】I.MX6ULL移植OpenCV
  • pytorch深度学习——dataset(附数据集下载)
  • springboot+vue考试管理系统
  • 自动驾驶建图--道路边缘生成方案探讨
  • 图片编辑器中实现文件上传的三种方式和二进制流及文件头校验文件类型
  • 深度学习,CRNN+CTC和Attention OCR你更青睐哪一种?
  • 飞桨AI应用@riscv OpenKylin
  • 在MongoDB建模1对N关系的基本方法
  • C++基础之运算符重载(十一)
  • 初始Java篇(JavaSE基础语法)(2)(逻辑控制)
  • 家用路由器和企业路由器的区别?
  • Gin简介(Go web基础知识)
  • HBase的Bulk Load流程