E4--光纤接口通信测试应用2023-04-17

news2024/11/25 18:40:46

1.场景

使用两块开发板A和B,通过光纤接口将在A板上ROM中存储的图片数据转发到B板并显示在B板连接的显示屏上,实现光纤接口通信。 具体场景是,由于A735T片上资源有限,因此ROM IP存储了一张1024*600(LVDS屏幕)分辨率图像的1/16,在发送端添加按键,第一次按键按下,将发送这1/16的数据到接收端,第二次按下,发送的则是每个像素取反后的数据。接收端使用RAM IP作为数据缓存实时更新来自光口的数据,读出端则是根据LVDS驱动模块产生的数据请求信号读出,最后达到的效果是发送端按一次按键,接收端切换一张图片。以此例程学习GT收发器、aurora协议,验证光纤接口通信。下面介绍开发与调试步骤。下图为板卡连接图。        

 

 

2.基本概念

        涉及该场景的术语有,serdes接口、GT、Aurora协议,光模块,光纤收发器等。通常SerDes(Serializer-Deserializer)是串行器和解串器的简称,Xilinx公司的许多FPGA已经内置了一个或多个GT收发器,通常二者是等价的,都指的是使用xilinx器件的内部收发器实现通信。需要说明,不同xilinx器件上的GT收发器不同,所支持的最大最小速率也不同,例如7系列的芯片有GTP、GTX、GTZ。serdes接口显著特点有三个,一是较之传统的源同步接口,serdes属于自同步接口,不需要发送时钟;二是使用了较少的引脚,实现了更大速率的传输,很多高速通信协议都是基于此串行协议,是目前高速通信的主流方案;三是通过加重和均衡技术实现了远距离传输,如背板。Aurora 是xilinx提出的一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议,因此在本文的场景中,物理层使用serdes,链路层使用aurora协议实现两个板卡点对点的通信。光纤是光通信的传输介质,通常板卡要与外部设备通信,需要使用光纤收发器进行光电转换,所谓SFP、QSFP等就是光纤收发器的一种。光模块是插接到光纤收发器上的,用于连接光纤和光纤收发器,也有很多封装类型。上述每一个概念都涉及很多东西,后续会继续分享,现在只需将每一个概念和实际的器件对应,知道正在做的事情处于通信架构中什么位置即可。

3.确认硬件环境

①使用两块米联客MA703FA开发板,FPGA芯片是xc7a35tffg484-2。

 ②确认GTP收发器速度

 

截图出自《Artix‐7 FPGAs Data Sheet: DC and AC Switching Characteristics》

参考时钟范围

 ③确认FPGA芯片GTP资源

 

截图出自《7 Series Product Selection Guide》

④确认开发板GT连接情况

截图出自《米联客硬件手册说明、原理图》 

4.GT IP核配置

 ①图中share logic指共享逻辑是包含在内核本身还是示例设计( example design)中,把共享逻辑包含在内核本身的 IP 称为主核,内核中不包含共享逻辑的 IP 称为从核。从核与主核的区别是:我们可以在 Example Design 中修改共享逻辑。这里选择的是主核。此处共享逻辑指的是,IP涉及的多个时钟的来源都可以有几个地方,通过多路选择器选择,共享逻辑就包含了这些多路器的配置。

 

②线速率选择在芯片支持范围内结合自身应用场景,此处选择5G;参考时钟的选择看具体的硬件设计,这里选择125;发送端设计将Rx OFF打勾,接收端设计将Tx OFF打勾;PLL可选PLL0和PLL1,均可;X0Y0代表收发器的位置,与原理图中的设计应该是一致的;Clock Source选择REFCLK1,这是由硬件设计决定的。关于参考时钟GT内部的原理参看第六节。

③该页中数据位宽设计如下图所示,DPR设置为50MHz(与图不对应)。勾选Enable Tx Buffer。

TXDATA 的位宽可以配置成 16/20/32/40 位宽,通过 TX_DATA_WIDTH 、FPGA Interface Width、TX8B10BEN 三个属性设置可以配置成不同的位宽,具体属性如下图所示.

几个位宽之间的关系,总之Aurora 8b10b single lane 4byte选择这个协议并且,External Data width选择为32bit即为IP核的输出位宽。

 

 

 ④本页设置K28.5即可,其余及后面页按照默认配置即可。

5.修改源代码

生成ip核之后,右键选择open in example design,会打开一个新的工程,这是xilinx写好的代码用于光口回环测试与验证。基本的架构是support模块输入参考时钟,生成各个所需时钟,并完成GT ip核、COMMON等模块的例化,数据收发接口也在该模块。Frame_gen模块根据生成的发送端用户时钟和复位产生IP核接收的数据信号和gt0_txcharisk_i信号,用户发送可修改这几个信号即可完成用户数据的发送。本例工程源码

发送端光接口源代码修改,①在topdesign中要改的主要是,IP核生成的复位和时钟信号要供外部使用。②开发板SFP 屏蔽笼的 tx_disable 引脚都默认接了上拉电阻,当为低时代表光接口使能,要使能该信号,否则无法工作;③发送的数据以及k码有效指示,要从外部模块给过来,因此屏蔽掉自产生模块;④添加顶层模块,自己编码并将数据源打造成从rom中来;⑤还有一个时钟要从板卡的晶振上提供或者从时钟IP核提供,注意板卡晶振的信号是单端信号,修改为IBUF,DRPCLK_IN;⑥依据板卡原理图添加约束。

发送端其他代码,主要包含了添加按键检测,添加了ROM IP存储图片数据,可参考Qt生成COE文件,ROM IP的配置。添加了数据生成的逻辑,添加了LED灯用于指示用户时钟的周期以此判断ip核是否正确生成。

接收端光接口源代码修改,①修改drp时钟来源为ip生成的50MHz或者来自晶振的时钟,修改为IBUF的相关硬件描述;②添加关于tx_disable的描述,并使能该信号;③IP核生成的复位和时钟信号要供外部使用,留下接口;④接收的数据以及k码有效指示,也要给到外部模块;④修改check模块生成的几个信号  supprot调用ip核那一段,如下所示;

// .gt0_rxmcommaalignen_in         (gt0_rxmcommaalignen_i),
// .gt0_rxpcommaalignen_in         (gt0_rxpcommaalignen_i),
   .gt0_rxmcommaalignen_in         (1'b1),
   .gt0_rxpcommaalignen_in         (1'b1),

 

 

 // .gt0_data_valid_in              (gt0_track_data_i),
    .gt0_data_valid_in              (1'b1),

 

 

接收端其他模块简介,u1_clk_ip模块产生lvds接口需要的时钟,以及DRP动态重配置时钟;u2_gt模块输入参考时钟接收数据通道以及光收发使能信号完成GT收发器数据及其指示信号的接收;u3_sfp_decode模块完成数据的对齐以及数据解码生成有效数据及其同步信号;u4_ram_ip模块作为数据缓存模块,接收来自光口的信号,并根据lvds屏幕的数据请求读出数据;u5_lvds模块是写好的屏幕驱动模块,可参考LVDS接口LCD驱动测试,将lcd_de信号发送到lvds线上的时间打一拍,保证RGB数据与lcd_de信号是同步的。这是因为等待ram数据两个周期的延迟。

其他重要信号说明,TXCHARISK用于指示TXDATA上的数据是K字符还是常规数据,看到很多资料上都说要发送comma,但是目前没看到应该至少t时间发送以此comma。RXCHARISK信号用于数据对齐,实现并不复杂可参考sfp_decode模块。Txuseclk Rate=line Rate/Internal Data Width,本例中Txuseclk Rate = 5G/20=250M.

6.GT原理简介

目的是为了对GT收发器有一个宏观的认识,清楚代码中的动作是在做哪里的配置,也清楚数据的流向。主要介绍内部结构下图所示为GTP内部的逻辑示意,由四个收发器通道GTPE2_CHANNEL和一个GTPE2_COMMON组成。每路 GTPE2_CHANNEL 有两个子层:PCS(物理编码子层)和 PMA(物理媒体连接子层)。PCS 子层包含 8B/10B 编解码、缓冲区、通道绑定和时钟修正等电路;PMA 层主要进行串并、并串转换、预加重、去加重、串行数据的发送和数据时钟的提取。

 

上图所示,红色框显示了GT参考时钟可以的来源由两个(实际参考时钟还可以来自相邻的GT,这在UG482都有详细),这也是IP和配置中选择REFCLK0还是REFCLK1的原因,这个具体要看原理图的连接情况。在example中,参考时钟经exdes、support在source模块中差分转单端,进入COMMON模块,COMMON模块就是图中绿色部分的原语,例化根据IP核的配置选择PLL0还是1,都可以选。此处需要注意,PLL的前级叫做PLL0_OUTREFCLK,后级叫做PLL0OUTCLK,后级PLL0OUTCLK后面的操作交给了GT IP核,ip核生成了TXOUTCLK和RXOUTCLK,然后example中source文件调用专用mmcm模块生成用户时钟txuseclk2_i(rxuseclk2_i)和GT逻辑时钟txuseclk_i(rxuseclk_i)。 

 7.效果

1/16图

 屏幕显示图

 

 

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

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

相关文章

【Linux】调试器---gdb的使用

文章目录一.背景知识二.安装gdb三.gdb的用法使用须知gdb的常用指令1.进入调试2.退出调试操作3.显示源代码4.设置断点breakPoint5.查看断点信息/禁用断点/开启断点/删除断点6.运行程序,开始调试run7.查看变量8.其它重要命令一.背景知识 程序的发布方式有两种&#x…

【并发】Volatile作用详解

volatile保证变量的可见性禁止指令重排不保证原子性如何保证原子性volatile volatile关键字可以保证变量的可见性。 被volatile修饰的变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。 无法保证原子性 保证变量的可见性 当多个线程访问同一个…

217页企业大数据能力平台建设技术方案(word可编辑)

1.1.1.1 建设方案架构 数据治理平台覆盖了从标准、设计、采集、开发到使用,再到交付的全数据治理流程,为组织提供了一站式数据治理运营平台,可满足数据共享交换、数据开发、数据运营多种应用场景,并通过构建数据工厂,实…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域数据分析能力与项目科研水平

目录 专题一、空间数据获取与制图 专题二、ArcGIS专题地图制作 专题三、空间数据采集与处理 专题四、遥感数据处理与应用 专题五、DEM数据处理与应用 专题六、采样数据处理与应用 专题七、土地利用处理与应用 专题八、土地利用景观格局分析 专题九、土壤数据处理与应用…

【音视频第12天】GCC论文阅读(3)

A Google Congestion Control Algorithm for Real-Time Communication draft-alvestrand-rmcat-congestion-03论文理解 看中文的GCC算法一脸懵。看一看英文版的,找一找感觉。 目录Abstract1. Introduction1.1 Mathematical notation conventions2. System model2.1 …

代码随想录第17天 | 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

654.最大二叉树 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {numbe…

2.docker-本地镜像发布

1.发布到阿里云 前往 容器镜像服务 (aliyun.com) 进入容器镜像服务 1.创建命名空间 2.创建镜像仓库 3.进入仓库管理页面获得脚本 # 需要输入密码,终端输出 Login Succeeded 则为登录成功 docker login --username用户名 registry.cn-hangzhou.aliyuncs.com# 标记 docker tag …

TCP 协议的相关特性

TCP 协议的相关特性🔎TCP协议的特点🔎TCP协议段格式🔎TCP协议的相关特性确认应答(ACK)超时重传三次握手四次挥手三次挥手与四次握手的注意事项🔎结尾TCP(Transmission Control Protocol) 传输控制协议 🔎TCP协议的特点…

Hbase伪分布安装配置

Hbase安装配置 文章目录Hbase安装配置Hbase安装前提下载Hbase压缩包软件版本兼容性Hadoop和HbaseHbase和JDK软件安装软件位置创建数据保存和日志保存文件夹修改配置文件修改hbase-site.xml文件修改hbase-env.sh文件修改~/.bashrc文件启动hbase并验证权限问题Permission denied修…

外源6-BA在缓解多花黄精种子出苗过程中的代谢及转录组学变化

文章标题:Transcriptomics and metabolomics changes triggered by exogenous 6-benzylaminopurine in relieving epicotyl dormancy of Polygonatum cyrtonema Hua seeds 发表期刊:Frontiers in Plant Science 影响因子:6.627 作者单位&a…

电镀废水中的三价铬去除效率

电镀废水中铬的主要存在形式为六价铬(绝大多数)和三价铬,二者在一定条件下可互相转换,且二者都可能具有致癌左右,有所区别的是六价铬的毒性大约是三价铬毒性的100倍。 目前电镀废水中对铬的处理工艺一般为先将毒性较大…

KD2684S绕组匝间故障检测仪

一、产品简介 KD2684S匝间冲击耐压试验仪适用于电机、变压器、电器线圈等这些由漆包线绕制的产品。因漆包线的绝缘涂敷层本身存在着质量问题,以及在绕线、嵌线、刮线、接头端部整形、绝缘浸漆、装配等工序工艺中不慎而引起绝缘层的损伤等,都会造成线圈层…

【高危】Apache Linkis <1.3.2 存在反序列化漏洞(CVE-2023-29216)

漏洞描述 Apache Linkis 是一个用于将上层应用与底层数据引擎解耦,提供标准化接口的中间件。 该项目受影响版本存在存在反序列化漏洞,由于SqlConnection.java中未对host、port、username,、password等参数进行充分过滤,当恶意用户完全控制应…

SpringSecurity之权限模块设计

目录 前言 实现思路 代码结构 使用说明 前言 前面我们了解了关于微服务权限设计方案以及J W T的相关介绍,今天我们来聊一下,如何避免自己重复的写相同的代码,一次代码实现,即可完美复制到任何项目中实现权限相关的功能。 实现…

进阶方案:仅主机+NAT实现真机与虚拟机实现真正的互联互通

序 昨天写了NAT模式下使用端口转发实现真机可以访问到虚拟机的方案,但是我觉得应该还可以更简单,不需要使用端口转发,然后今天花了一上午的时间终于解决了这个问题,总结一下 仅主机模式 仅主机模式可以让真机跟虚拟机之间形成一…

【数据结构】算法的时间复杂度和空间复杂度 (上)(附leetcode练习题)

☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C语言和数据结构 🌼博客专栏:数据结构 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪&…

智慧园区系统未来发展前景及应用趋势分析

完善的系统功能,强大的技术支持,使得智慧园区的应用趋势更加多元化,下面我们一起来了解一下智慧园区系统未来发展前景及应用趋势。 1、人工智能。人工智能技术是智慧园区未来发展的重要方向。人工智能可以帮助园区更好地解决实际问题&…

Docker笔记1 | Docker学习和简介

1 | Docker学习和简介1 学习来源2 官方学习资源3 Docker简介3.1 Docker是什么?3.2 Docker应用场景3.3 Docker架构3.3 Docker的优势3.3 与传统虚拟机的区别1 学习来源 本系列笔记学习主要参考书籍《Docker-从入门到实践》以及结合官网的教程,仅作为个人学…

电脑开机后进不了系统怎么办?

案例:我的电脑开机之后,进入不了系统怎么办? 【今天我打开电脑时,发现进入不了系统,以前从来没有出现过这种情况。有没有小伙伴有解决的办法?在线等,急!】 电脑开机后无法进入系统…

node 服务发布后无法访问

node 服务发布后无法访问问题描述:在本地环境访问ip3060端口能正常访问,部署到服务器后访问接口一直超时 解决方法: 看端口是否对外暴露 操作步骤 设置防火墙 点击Windows defender 防火墙 点击高级设置 点击入站规则 新建规则 将3060端口…