FPGA - GTX收发器-K码 以及 IBERT IP核使用

一,前言

在FPGA - Xilinx系列高速收发器---GTX中详细介绍了GTX的基础知识,以及IP核的调用,下面将补充一下GTX在使用中的高速串行数据流在接收和发送时的控制与对齐(K码),以及高速接口GTX,如果GTX建链建不起来,Vivado自带的调试工具误码率测试(Integrated Bit Error Ratio Tester,IBERT)核的使用。


二,Comma码(K码)

        高速串行数据流在接收端需要重新串并转换成多个字节的并行数据,如何有效的识别32bit数据边界?这就需要一个特殊的序列,即为Comma码(K码)。在任意数据组合中,Comma码只作为控制字符出现,在数据负荷部分不会出现,所以使用comma码字符只是帧的开始和结束标志,或者修正和数据流对齐的控制字符

        K码是一个集合,D码用来传数据字符,K码用来传控制字符,所有和数据本身无关的通道控制功能都是由K码来完成的。
        常见的 K 码为 K28.5,换成十六进制就是 0xBC。
        使用 GT 收发器时,K码主要起到两个作用:  ①K码对齐(comma alignment)  ②)帧对齐(word alignment)

        K码对齐(comma alignment)
        定义:接收端通过K码,将连续1bit 的数据串行数据分割成有效的字节数据,也就是将有效数据从连续的 0、1中间恢复出来。K 码对齐是 GT IP 核自动完成的

        看下面例子(aabbcc可以看作为帧头,bc为K码)

             

        但是在实际传输中可能出现了字节偏移,如下图:

             

        对于用户端就得设计帧对齐,即通过判断charisk的值,来判断是否发生了字节偏移 ,如果发生了偏移 就进行移位操作,如下图: 

                       


三,IBERT核

1,概述

        IBERT(集成误码率测试仪)是xilinx为7系列FPGA GTX收发器设计的,用于评估和监控GTX收发器。IBERT包括在FPGA逻辑中实现的模式生成器和检查器,以及对端口的访问和GTX收发器的动态重新配置端口属性,还包括通信逻辑,以允许设计在运行时通过JTAG进行访问。

        IBERT工具用于对Xilinx FPGA芯片的高速串行收发器进行板级硬件测试。通过IBERT可以获取误码率,观察眼图,调节串行收发器的参数,从而有助于判断可能存在的问题,便于验证硬件的稳定性和信号完整性。

2,测试原理

        IBERT中的BERT是Bit Error Ratio Test的缩写,指比特出错概率测试,简而言之就是误码率测试。Vivado中IBERT工具的测试原理是通过收发器由外部回环进行自收自发而实现。就是将同一组收发器的TX和RX进行短接,TX发送端通过发送某种特定序列的数据流,在RX接收端接收后,通过比对发送和接收的数据,从而得出接收端误码的统计值。

        GTX接收和发送方向均由PMAPCS两部分组成,PCS提供丰富的物理编码层特性,如8b10b编码、时钟校准等功能,PMA部分为模拟电路,提供高性能的串行接口特性,如预加重、均衡等功能。GTX同时还提供动态配置接口,用于动态的修改GTX的配置。

         IBERT 工具的环回模式有:

        近端PCS环回测试(路径①),数据流仅通过近端GTX的PCS部分,可用于验证近端GTX中PCS收发双向的设置;

        近端PMA环回测试(路径②),数据流通过近端GTX的PCS、PMA,可用于验证近端GTX收发双向的设置;

        远端PMA环回测试(路径③),数据流通过近端GTX的PCS和PMA,远端的GTX的PMA部分,通过两个GTX之间的物理连线,验证两个GTX之间物理联系的可靠性,以及验证两个GTX的PMA部分设置的正确性;

        远端PCS环回测试(路径④)验证近端收发器和远端收发器的通信状况;以及None无环回模式即通过外部连接发送和接收。

        远端PCS或PMA环回测试时板卡下载IBERT核生成的bit文件,通过两个通道上的Tx和Rx接口互相连接,其中一个通道上的模式设置为Far_End_PMAFar_End_PCS模式,另一个通道设置为默认的None模式并监测误码率

        Vivado中IBERT默认模式为None模式,收发器通过外部连线由外部环回进行自收自发而实现。可将同一组收发器的TX和RX进行短接,在RX接收端接收TX发送的数据后,通过比对发送和接收的数据,从而得出接收端误码的统计值。

3,IP核配置

(1)创建工程

打开vivado,新建工程后从IP Catalog找到IBERT并双击打开;

(2)第一页配置

IBERT测试协议选择Custom1,GTX参考时钟选择频率为125MHz,在配置的过程中,Refclk可选的频率是由LineRate决定,由于在板卡上Refclk已固定为125MHz,因此测试所选择的线速应支持125MHz的参考时钟。

(3) 第二页配置

(4) 第三页配置 

(5)第四页总结  

(6)打开例程

创建完成后打开官方例程

(7)生成比特流-烧录

(8)测试

在Serial I/O Links窗口创建连接,将同1个GTX中同一个通道的TX和RX建立link。(也可以选择auto-detectlinks)

进行近端环回

 选择        MGT_X0Y0/TX           MGT_X0Y0/RX

                MGT_X0Y1/TX           MGT_X0Y1/RX

在serial I/O link最右端的loopback mode选择近端PCS(或PMA)环回模式,在改变模式时可能会出现误码,需要点击reset重新监测

然后创建眼图:

可以看到蓝色表示正常,红色表示误码


远端环回

改变环回模式后记得复位一下

创建眼图


四、总结

        通过环回和开环方式进行误码率测试,可以识别问题测定板卡的实际支持速率。IBERT能够在运行时配置高速串行收发通道的各项参数,提供多种环回模式和测试激励源,并通过自动扫描测试确定收发的最佳参数。这能够满足硬件测试中对高速串行收发通道信号测试的大部分需求,也适用于故障定位等场合。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ApiHug - 闭门造车, 出门合辙

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

第18节 神级开源shellcode工具:donut

我做了一个关于shellcode入门和开发的专题👩🏻‍💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考。 我的…

python批量生成25位数字字母混合序列号(SN码)

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.分析 一.前言 SN码,即Serial Number的缩写,有时也被称为Serial No,是产品序列号的意思。它是一个独特的标识符,用于区分同一种类

家用充电桩远程监控安全管理系统解决方案

家用充电桩远程监控安全管理系统解决方案 在当今电动汽车日益普及的背景下,家用充电桩的安全管理成为了广大车主关注的重点问题。为了实现对充电桩的高效、精准、远程监控,一套完善的家用充电桩远程监控安全管理系统解决方案应运而生。本方案旨在通过先…

SAP_ABAP-思考篇

作为一个SAP十年左右的从业者,其实我很清楚,我自身的能力,确实是很多东西都会一点,但是没有一样是精通的。坦白来说,我的个人简介里,虽然也不算夸大,但我估计有些新手小白看着可能会觉得还挺厉害…

KNN算法项目实战之酒的分类

加载数据集 from sklearn.datasets import load_winewine_dataset load_wine()数据集有什么? data:数据 target:目标分类 target_names:目标分类名称 DESCR:数据描述 features_names:特征变量名称 查…

在k8s中搭建elasticsearch高可用集群,并对数据进行持久化存储

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Elasticsearch简介 2、k8s简介 二、环境准备 …

27- ESP32-S3 USB虚拟串口(USB-OTG 外设介绍)

ESP32-S3 USB虚拟串口详解 USB-OTG 外设介绍 USB-OTG: USB-OTG是一种USB规范,允许嵌入式系统(如手机、平板电脑、单片机系统等)在没有主机(如个人电脑)的情况下直接相互通信,同时也能够作为传…

PG Vacuum 空间管理工具与pg_freespacemap使用

1.什么是Vacuum: PG pageinspect使用与块空间清理学习-CSDN博客 之前说过PG块更新的特点:先删除后插入,但老元组并不会真正删除,只是把老元组标记为删除状态,这就导致了PG中会有大量的垃圾数据,update所造成的资源消…

train_gpt2_fp32.cu - main

llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) 源码 // ---------------------------------------------------------------------------- // main training loop int main(int argc, char *argv[]) {// read in the (optional) command line argumentsco…

API数据对接:本地缓存与日志记录的重要性

关键词:数据治理项目、API接口、数据中心、第三方系统、数据异常、本地缓存、日志记录、数据整合、多源异构数据、数据处理效率 阅读建议: 对于数据治理、API接口和系统集成领域的专业人士,本文深入剖析了本地缓存和日志记录在确保系统稳定性…

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现 OLS,GWR,GTWR回归模型均可以揭示解释变量对被解释变量的影响且可以进行预测。Ordinary Least Squares (OLS)是最小二乘法,Geographically Weighted Regression (GWR)是地理加权回归,Geographically and T…

pytorch-8 单层神经网络及激活函数

一、单层回归网络:线性回归 1. tensor手动实现单层回归神经网络的正向传播 # tensor手动实现单层回归神经网络的正向传播 import torch from torch.nn import functional as FX = torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype = torch.float32) # 特征张量 w =…

青少年CTF练习平台Crypto题解

四重加密 下载附件后,得到一个rar文件,发现被加密,无法解压 使用Bandizip打开 注释中有段编码OFZW4Y3UMY CyberChef base64解码得到第一层压缩包密码 qsnctf 打开后有一个文本文档 内容如下 NCR,HTML解码 得到一串密…

基于Vue和uni-app的增强型单选ccRadioView组件开发

标题:基于Vue和uni-app的增强单选组件ccRadioView的设计与实现 摘要:本文将详细介绍如何使用Vue和uni-app构建一个简单、好用且通用的单选框组件ccRadioView。该组件提供了单选列表的功能,并支持反向传值,方便开发者快速实现单选…

Qwen学习笔记3:Qwen模型调用外部API实现模型增强(openai的形式)

前言 本文记录了使用本地部署的Qwen模型,调用外部API实现模型的功能增强,非常的易用,大家用于开发自己的应用,只需要作简单的修改就可以进行使用了。 本文的代码来源视频教程: Qwen大模型变强了,通过API…

JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理

目录 List集合 特点、特有方法 实例演示 List集合支持的遍历方式 ArrayList集合的底层原理 List集合 我们要了解List集合三点: 有什么特点?是否有特有功能?适合什么业务场景? 特点、特有方法 List系列集合特点&#xff1a…

互联网上的IP地址定位的应用及意义

在当今高度互联的数字时代,IP地址定位技术发挥着重要作用,帮助企业、机构和个人在多种应用场景中提高效率、保障安全和优化服务。IP数据云将深入探讨IP地址定位技术的具体应用及其实际意义。 什么是IP地址定位? IP地址定位IP数据云 - 免费IP…

vue+elementui地址选择器-三级联选择器+详细地址实现国内地址选择

在页面的显示情况 前端拼接实现存储 具体实现步骤 1.安装中国全省市区的数据 在命令提示符窗口使用管理员身份进入对应vue项目的文件夹,在窗口安装 npm install element-china-area-data -S2.在script内引入安装的数据 import {regionData,codeToText } from…

android绘制多个黑竖线条

本文实例为大家分享了android绘制多个黑竖线条展示的具体代码,供大家参考,具体内容如下 1.写一个LinearLayout的布局,将宽度写成5dp将高度写成match_parent. 2.在写一个类继承LinearLayout,用LayoutInflater实现子布局的在这个L…