Xilinx的JESD204B PHY层IP仿真及上板测试(JESD204B四)

news2024/11/16 11:26:27

  本文配置JESD204B PHY的参数,分析其示例工程,并且对该IP进行仿真,由于该IP只是物理层,并没有上层协议,因此与GTX/H其实没有太大区别。

1、配置IP

  如下图所示,在IP Catalog中搜索JESD204B的PHY,双击进入配置界面。

在这里插入图片描述

图1 搜索JESD20B PHY

  该IP只有两个配置界面,主要配置参数都在“Configuration”界面,如下图所示。

  1. Physical Resources:用于设置收发器数量,能够设置的最大数值与芯片包含的高速收发器个数有关;因为Zynq7030只有4路高速收发器,因此此处最大只能设置为4。本文设置两路GTXE2实现的高速收发器。

  2. Line Rate Switching:线速率设置,该IP可以设置固定的线速率和可变线速率。设置为固定线速率后可以关闭axi_lite配置接口,使用可变线速率时,必须使用axi_lite去改变线速率,同时需要设置最小和最大线速率。

  本文采用可变线速率,最小线速率为3.125Gb/s,最大线速率为6.25Gb/s,如下图所示。

在这里插入图片描述

图2 配置“Configuration”界面

  3、Transmitter:发送通道参数设置,因为7系列FPGA只能使用JESD204B协议,协议类选和编码方式均不能进行更改。

  可以设置该通道初始线速率,线速率数值必须处于2处设置的动态线速率范围内,后续在工程运行的过程中,可以通过修改前文提到的分频系数,对线速率进行修改。

  还可以设置参考时钟频率以及PLL的类型,此处线速率比较小,选择CPLL即可。

  由于该IP包含多个通道,因此还需要选择其中一个通道作为主通道,默认即可。

  4、Receiver:接收通道的参数设置,由于高速Serdes是全双工的,接收通道和发送通道可以独立工作,且QPLL和CPLL的输出时钟在发送通道和接收通道的PMA中均可进行不同的D分频,因此同一个收发器的接收通道和发送通道其实也能支持不同的线速率。

  5、配置DRP时钟,设为100MHz即可,该时钟信号可以来源于任何bank。

  6、axi_lite配置时钟,如果2处选用静态线速率,则此处可以屏蔽axi_lite配置接口,如果2处选用动态线速率,则此处的axi_lite接口必须使用,时钟频率设置为100MHz,与DRP使用同一时钟信号即可。

  7、调试端口信号,勾选后可以将收发器的一些调试信号输出,一般不会使用。

  然后在“Shared Logic”界面配置共享逻辑的位置,将共享逻辑放在内核外部或者内部都行。本文先将共享逻辑放在示例工程中,后面在正式使用时,很可能将共享逻辑放在内核中。

在这里插入图片描述

图3 配置“Shared Logic”界面

  点击OK生成IP即可,该IP配置其实比较简单,编码协议这些都是固定的,比GTX/H都简单很多。

2、分析示例工程

  鼠标选中前面生成的IP,然后右键点击“Open IP Example Design…”打开示例工程,如下图所示。

在这里插入图片描述

图4 打开示例工程

  然后需要指定示例工程存放路径,如下所示,可以保持默认。

在这里插入图片描述

图5 示例工程存放路径

  拿到示例工程之后,直接打开工程的RTL视图,查看工程内各个模块的信号流向,确定各个模块大致功能,如下图所示。

在这里插入图片描述

图6 打开示例工程RTL

  与多数高速IP一样,示例工程都包含时钟处理模块、测试数据生成模块、接收数据检测模块、JESD204B顶层模块,如下图所示。

在这里插入图片描述

图7 示例工程RTL视图

  时钟处理模块通过使用IBUFDS将差分时钟输入信号转换为单端时钟信号,其中高速收发器的参考时钟信号需要使用IBUFDS_GTE2进行转换,如下图所示。

在这里插入图片描述

图8 时钟处理模块

  打开JESD204B PHY顶层模块的RTL视图,如下所示,包含GT_COMMON和JESD204B PHY的IP。

在这里插入图片描述

图9 JESD204B PHY顶层RTL

  如果你将JESD204B PHY的RTL一层一层打开,最终会看见下图所示的界面,包含两个GT收发器,因此该IP就是在GTX/H的基础上封装得到的,将很多信号封装在AXI配置接口之中了。

在这里插入图片描述

图10 底层的GT收发器

  JESD204B PHY的IP内部还有一个AXI的配置模块,该模块相当于把底层的多路GT收发器的一些DRP配置参数、端口配置参数转换成了一个axi_lite接口,使得用户可以通过一个axi_lite接口配置多路收发器内部寄存器参数。

在这里插入图片描述

图11 axi_lite配置接口

  示例工程分析到此结束,其实并不需要去看代码,根据信号流向和模块名去判断其大致功能。然后通过仿真查看关键信号的时序即可,不需要去看测试数据生成模块和数据检测模块的代码。

3、示例工程仿真

  添加JESD204B顶层模块的信号,然后运行工程的仿真,得到如下所示结果。在取消复位后,会通过axi_lite接口配置IP内部的一些寄存器。

在这里插入图片描述

图12 复位及axi_lite配置时序

  将上述axi_lite写时序放大,如下图所示,包含对两个通道回环模块的设置,最终均设置为正常工作模式,没有使用回环模式。

在这里插入图片描述

图13 axi_lite配置时序

  注意在配置通道参数时,需要先配置地址为0x24的寄存器,然后才能配置对应通道的寄存器参数,否则后续所有参数都是对当前设置的通道进行配置的,这也是有的人配置线速率后,为什么只有一个通道线速率改变的原因。

在这里插入图片描述

图14 通道选择寄存器

  地址为0x41c的寄存器用户高速收发器的回环模式的设置,但是该寄存器数值为7并没有对应的回环模式,上述仿真最后也将回环模式设置为正常模式,所以没有影响。

在这里插入图片描述

图15 回环模式设置

  地址为0x1c的寄存器用于设置超时值,这个的作用不是很了解,后续遇到再说具体含义吧,手册中的描述如下所示。

在这里插入图片描述

图16 超时值设置

  示例工程只对上述三个寄存器进行了设置,用户想要配置其余寄存器,根据这个时序和手册的寄存器描述进行配置即可。

  复位不会清除配置寄存器的数据,因此要在复位完成之前对寄存器进行配置才会有用,配置完寄存器一段时间后完成复位,接收端需要先完成数据对齐,复位才会完成。

在这里插入图片描述

图17 复位时序

  由于本项目接收端和发送端都没有使用QPLL,因此上图中QPLL并没有锁定,不影响功能。

  之后查看两个通道发送数据和接收的数据,如下图所示,接收和发送的数据一致,其余前文GTX的8B10B编码模式的端口时序一致,不再赘述。

在这里插入图片描述

图18 通道收发数据

  仿真到此结束,后续上板测试需要将顶层axi_lite接口注释掉,并且将一些时钟信号进行更改。因此拿到后续提供的工程代码,是不能用来进行仿真的,自己生成示例工程进行仿真即可。

4、上板测试

  由于开发板并没有提供示例工程这些端口,需要把端口信号简化,如下所示,将axi_lite接口注释,时钟默认配置即可。然后将用户时钟信号和DRP时钟还有复位信号都注释掉。添加了光纤失能信号sfp_disable。

在这里插入图片描述

图19 更改端口信号

  将axi_lite接口的复位信号取反替换之前的另一个复位信号,如下所示。

在这里插入图片描述

图20 替换复位信号

  由于时钟相关的信号需要进行一些更改,因此直接注释掉之前的时钟处理模块,如下图所示。

在这里插入图片描述

图21 注释时钟处理模块

  使用下面这段代码替换上述模块,高速BANK的差分参考时钟频率为156.25MHz,经过IBUFDS_GTE2转换为单端时钟cpll_refclk。而用户端口时钟rx/tx_coreclk等于线速率3.125G/40=78.125Mhz,刚好是cpll_refclk的二分频,按理说可以直接从IBUFDS_GTE2的二分频端口输出,但是在布局布线的时候出错了,因此只能将cpll_refclk通过BUFG输入锁相环后进行分频。

  同时将光纤失能信号赋值为低电平。

在这里插入图片描述

图22 更改时钟信号

  锁相环输入配置为156.25MHz,即cpll_refclk的时钟频率。

在这里插入图片描述

图23 锁相环输入时钟配置

  然后将锁相环的输出频率设置为78.125MHz,如下图所示,取消锁相环的复位信号和锁定指示信号。

在这里插入图片描述

图24 锁相环输出时钟频率设置

  并且加入一个ILA观测两路收发器的输入信号和输出信号,还有复位完成指示信号和接收端对齐信号的状态,如下所示,ILA深度设置为2048。

在这里插入图片描述

图25 ILA例化

  将JESD204B PHY的顶层模块的axi_lite接口信号注释,并且做无效处理,然后用axi_lite的复位取代之前的复位。

在这里插入图片描述

图26 axi_lite接口信号处理

  代码更改到此结束,之后综合工程,然后根据光纤接口的原理图分配工程引脚。其中高速收发器相关差分信号,axi_lite的时钟和复位信号不能分配错误,其余状态输出信号可以随意分配,不用关心。

  生成比特流之后,使用光纤短接两个光口,如下图所示,然后烧入比特流文件。

在这里插入图片描述

图27 开发板

  将接收端复位完成作为ILA触发条件,然后按下开发板的复位按键,即可抓取对应波形数据。

在这里插入图片描述

图28 出发条件设置

  触发结果如下所示,在接收端复位完成后一段时间就成功对齐了。

在这里插入图片描述

图29 接收端复位完成

  2路发送通道的时序如下图所示。

在这里插入图片描述

图30 发送时序

  2路接收通道的时序如下所示,与上图发送通道起始发送的数据一致,证明两路收发器的均正常工作。

在这里插入图片描述

图31 接收时序

  到此,本文通过示例工程验证了该IP寄存器的配置方式,以及正常工作的接口时序,与GTX/H 8B10B接口时序基本一致。

  可以在公众号后台回复“JESD204B PHY示例工程”(不包含引号)获取修改后的示例工程。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产RISC-V案例分享,基于全志T113-i异构多核平台!

RISC-V核心优势 全志T113-i是一款双核Cortex-A7@1.2GHz国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Docker容器技术。 而其中的RISC-V属于超高能效副核心,主频高达1008MHz,标配内存管理单元,可运…

python 魔法方法简记

简单记录python中的魔法方法 一、构造与析构 __init__(self[,...]) 需要初始化时可重写__init__方法 __new__(cls[,...]) 以类为参数,返回实例化对象 __del__(self) 前两个为构造器,此为析构器,用于销毁对象 二、算术运算 1、算术运算…

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置? 方法一:使用7-Zip免费且强大的文件管理工具 7-Zip也是一…

MATLAB定位程序与讲解【专栏介绍】

AOA(到达角度)定位原理: 描述了基于到达角度进行定位的方法,适用于一维、二维或三维空间。 由动静压之比求马赫数的MATLAB函数: 提供了一个计算马赫数的函数,用于流体力学中速度的计算。 三边法定位与三点法…

【电子通识】案例:连接器接线顺序评估为什么新人总是评估不到位?

在一个IC卡切换的工装板(一切多)中,设计需求是一张PCB(充当活动卡片)插入读卡器,将卡片中的所有信号引出通过连接器连接到后级设备。 比如下图所示是一种IC卡压力测试设备,使用钢片卡片将压力信号通过连接器引入测试设备。 最后根据ISO/IEC 7816-2标准中我们看到…

hexo本地部署-图文教程

hexo本地部署-图文教程 最终效果前置条件安装使用配置主题创建页面标签页分类页友链页404页 个性化设置语言及网站信息设置导航栏,菜单目录头像及背景封面图美化特效 模板页的配置说明页面 Front-matter文章 Front-matter 最终效果 前置条件 你的电脑需要有git,node环境 安装使…

MySQL 中优化 COUNT()查询的实用指南

在 MySQL 数据库的使用中,我们经常会用到 COUNT()函数来统计行数或满足特定条件的行数。然而,在处理大规模数据时,COUNT()查询可能会变得非常缓慢,影响数据库的性能。那么,如何在 MySQL 中优化 COUNT()查询呢&#xff…

TRIZ理论在机器人性能优化中的应用

随着机器人应用场景的不断拓展,对机器人性能的要求也日益提高。如何在保证功能多样化的同时,提升机器人的性能稳定性、效率及智能化水平,成为了工程师和研发人员面临的重大挑战。TRIZ理论,即发明问题解决理论,以其系统…

Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学

🎯要点 统计观测值之间距离计算代谢组学和脂质组学分析相关距离矩阵计算卡方检验偏差校正快速计算距离协方差算法大规模生物系统分析距离矩阵相关性测试石油勘探统计学关系 Python距离矩阵 在数学、计算机科学,尤其是图论中,距离矩阵是一…

02-Mybatis基础操作

1. Mybatis基础操作 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询条件查询 新增更新删除 根…

FreeRTOS(四)FreeRTOS列表与列表项

目录 列表 列表项 迷你列表项 列表和列表项的关系 列表相关API函数 列表初始化 列表项初始化 列表项插入 列表项末尾插入 列表项删除 列表遍历 在 FreeRTOS 中,列表(List)和列表项(ListItem)是核心数据结构&…

如何防止订单重复

如何防止订单重复 在整个下单流程中,哪里重复操作影响最大?确认订单只是修改订单状态从未支付改为待支付而已,不会对我们的主要业务产生影响,而在支付的时候,主要由第三方平台,我们也可以不用管&#xff0c…

记一次Windows状态栏不显示问题

文章目录 🪟解决方案☁️单次处理☁️有效处理 🪟现象🪟尝试的操作⭐END🌟跋🌟交流方式 🪟解决方案 ☁️单次处理 重启explorer.exe 命令行操作 注意,使用命令行操作的时候,出现…

Cocos 3.8.3 实现外描边效果(逃课玩法)

本来想着用Cocos 的Shader Graph照搬Unity的思路来加外描边,发现不行,然后我就想弄两个物体不就行了吗,一个是放大的版本,再放大的版本上加一个材质,这个材质面剔除选择前面的面剔除就行了,果不其然还真行。…

字幕制作软件有哪些?整理了适合新手的5个方法,快速导出srt字幕文件!

字幕制作软件有哪些?平时创作视频作品时,大部分会用到字幕。毕竟字幕是视频中不可或缺的一部分,字幕文件在传达视频内容上达到了重要的作用。 常见的字幕文件有srt、ass和sub格式。市面上比较常用的是srt字幕格式,这种格式几乎适用…

滑动窗口 -- 限制窗口内某元素的数量/种类

目录 长度最小的数组 题解: 将x减到0的最小操作数 题解: 最大连续1的个数 题解: 无重复字符的最长子串(限制数量) 题解: 水果成篮(限制种类) 题解: 找到字符串中…

Skywalking告警配置

背景 skywalking 9.7.0,地址:Backend setup | Apache SkyWalking helm:skywalking-helm:4.5.0,地址:skywalking-helm/chart/skywalking/values.yaml at v4.5.0 首先来说一下为什么使用skywalking告警? …

[半导体检测-6]:为什么晶圆缺陷检测精度越高,所需要的光源的波长越短?

目录 前言: 1. 光束的聚焦能力 1.1 概述 1.2 光束的聚焦能力用什么指标来标识? 1. 光束质量因子(M因子) 2. 衍射极限倍数(β因子) 3. 斯特列尔比(Strehl Ratio) 4. 远场发散…

Spring6梳理13——依赖注入之引入集合Bean属性

以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 13 依赖注入之引入集合Bean属性 13.1 创建Lesson类,student类和teacher实体类…

【LeetCode:2535. 数组元素和与数字和的绝对差 + 模拟】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…