E6—4路GTX实现40G光纤通信2023-05-17

news2024/11/27 10:24:59

1.场景

从发送端(一块硬件板卡)通过40G QSFP接光纤连接到接收端(另一块硬件板卡),实现从数据的发送与接收。连接如下,官方的example design即可实现这一功能,因此直接使用官方的代码即可。

2.硬件环境

1.使用两块板卡,一块是Alinx7k325t开发板,一块是自己的板卡,二者的FPGA芯片都是xc7k325tffg900-2

2.确认GTX收发器速度

截图出自《Kintex-7 FPGAs Data Sheet: DC and AC Switching Characteristics

3.参考时钟范围

 4.确认芯片GTX资源

截图出自《7 Series Product Selection Guide

5. 确认开发板GT连接情况及参考时钟

截图出自开发板使用手册

3 IP核配置

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

 

 ②K7的收发器为GTX,选择编码协议为aurora 64b66b。支持aurora 线速率选择在芯片支持范围内结合自身应用场景,此处选择10G;参考时钟的选择看具体的硬件设计,这里选择125; PLL不可选,只能是QPLL;X0Y14等代表收发器的位置,与原理图中的设计应该是一致的,这里使能四个收发器,总的速率为4*10G=40Gbps;Clock Source选择REFCLK1 Q3,这是与Quad3对应的。另外需要说明硬件板卡中GT连接在了Bank118就对应的是Quad3(结合硬件板卡的实际情况),Bank115对应Quad0。勾选这里的Use Common DRP,这样四个通道使用一个DRP接口。

③该页中主要关注以下配置,其余功能暂时不用,或默认或取消勾选。一是外部数据位宽,一是编码方式,还有DPR设置为100MHz(可直接连接外部时钟,也可以从时钟IP分频)。

 

④该页保持默认配置,由于64/66B编码采用的是加扰的方式处理数据,所以在默认情况下,comma选项即为不可选,这是与加扰不同的处理方式。此页以后的内容全部保持默认。

4源码简介

IP配置好之后,打开example design。可以清楚的看到40G光口通信与10G之间的区别便是40G就是10G x 4。各个通道并行运行,并且各控制信号全部独立工作,下面介绍example design的组成,便于基于此来传输自定义数据。

  1. gtwizard_0_support.v文件及其例化文件与其他基于GT串行收发器的应用一样,完成GT IP的例化,连接必要的用户接口信号包括发送端接口和接收端接口,选择各时钟来源,复位逻辑等。
  2. gtwizard_0_gt_frame_gen.v文件有四个,分别对应四个光纤收发通道,该文件根据TXDATAVALID_IN信号将ROM中递增的数据转移到发送信号上,并根据数据内容产生TXCTRL_OUT信号,用来指示同步字段的编码情况。
  3. gtwizard_0_scrambler.v文件用来依据DATA_VALID_IN信号将frame_gen文件生成的数据进行加扰处理,这是64B/66B编码方式要求的。加扰后的数据转发到support模块处理发送。
  4. gtwizard_0_block_sync_sm.v 64B/66B编码模式下特有的对齐模块。对接收的gt0_rxheader_i头进行查找,根据接收到的RXHEADER_IN信号生成RXGEARBOXSLIP_OUT进入IP核进行数据对齐。
  5. gtwizard_0_descrambler.v 根据block模块产生的BLOCKSYNC_OUT信号作为复位信号,将接收到的数据SCRAMBLED_DATA_IN依据数据有效信号DATA_VALID_IN进行解扰,生成的数据UNSCRAMBLED_DATA_OUT转发到check模块。
  6. gtwizard_0_gt_frame_check.v文件根据收到的解扰后的数据依据rom表中的数据进行查错。

将support和GT IP核看成一个整体。数据的发送流程,根据gt3_txgearboxready_i信号的指示,产生发送数据有效信号,frame_gen模块依据该信号遍历ROM表的数据,并根据数据中的ctrl指示产生TXCTRL_OUT信号指示同步字节编码是“01”还是“10”,送到support模块。与此同时,加扰模块也根据数据有效信号对数据进行加扰,将产生的数据送到support模块完成数据发送流程。

数据的接收流程是:Block模块一直根据接收到的gt0_rxheader_i信号产生gt0_rxgearboxslip_i信号用于数据对齐,与此同时,解扰模块根据接收到的gt0_rxdatavalid_i及gt0_rxdata_i对数据解扰成gt0_unscrambled_data_i在传递到check模块进行检查便完成了数据接收的流程。

5代码修改与效果

部分代码与硬件的组成有关,需要注意以下部分。①修改DRP_CLK_IN_P 来源,添加时钟生成IP,输入200差分,转成100单端,然后取消掉IBUFDS,只使用BUFG即可。②添加通道的ILA。③添加约束文件(数据发送端,开发板),修改Q3_CLK1_GTREFCLK_PAD_P_IN连接到C8, N连接到C7;修改DRP_CLK_IN_P连接到AE10 ,N连接到AF10。屏蔽掉信号 TRACK_DATA_OUT的输出。这个信号为高电平表示数据通道就绪,可以进行数据传输了。④数据接收端,自研板卡端,QSFP0_CLK_P –C8 QSFP0_CLK_N—C7 ;SYSCLK_P – AD12 SYSCLK_N—AD11 ;156.25MHz 参考时钟;GT也是用的Bank118的收发器。

效果如下图所示。 

 

 

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

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

相关文章

【Redis】聊一下RDB持久化机制

上一篇文章中,AOF虽然可以通过重写机制减少AOF文件的大小,但是AOF数据恢复的时候依然是一个很耗费时间的操作,那么也就是不能够快速的进行数据的恢复,RDB正好可以解决这个问题。 RDB RDB(Redis 数据库)&a…

深度学习用于医学预后-第二课第四周5-10节-为个体患者制定风险评估模型

文章目录 相对风险按风险对患者进行排序个体与基线风险吸烟者与不吸烟者年龄对风险的影响 在本课中,您将学习 Cox 比例风险模型(Cox Proportional Hazards Model)。您将了解 Cox 模型如何考虑患者变量来比较不同患者的风险,使用他们的患者概况。 但到目前…

“出圈”警博会,欧科云链推动链上合规监管进程

5月13日,在由公安部主办的第11届中国国际警用装备博览会(下简称“警博会”)上,欧科云链接受中国警察网邀请,展开了“链上天眼科技助警”成果分享会,分享欧科云链持续创新应用区块链技术助力智慧警务的成果。…

chatgpt赋能Python-pandas_错位相减

Pandas:错位相减的重要性 如果你使用pandas进行数据处理,在一些数据分析的场景中你必须要逐行遍历并做一些数学计算,譬如你想要计算数据集中的同一列中相邻行之间的差异或“错位相减”以获得新的数据列。这在分析股票价格、交易和其他时间序…

nodejs 框架选型express koa egg midwayjs nestjs 对比

最近要做个开源项目,又要写node 工程,之前用的是koa 框架,最近看到了nestjs egg midwayjs 等框架一时间难以抉择。 人工智能的答案 文心一言 midwayjs 还写错了,感觉的很少,最后总结等于白说各有千秋。 chatgpt 好…

【Linux】7. 进程概念

在进程的学习之前首先需要理解并掌握冯诺依曼体系结构及操作系统的相关概念 1. 冯诺依曼体系结构 最终我们得到的结论是: 在数据层面上 CPU不与外部设备进行交互,而是直接和内存交互所有的外部设备需要数据载入,只能载入到内存中。数据从内…

相见恨晚的Matlab编程小技巧(3)-程序运行太慢了咋解决——合理使用循环语句(1)

相信大家在使用matlab时候经常会收到程序运行太慢的困扰,当程序比较复杂时,常常需要很长时间等待。我有个朋友就是这样,每次debug都要很长时间,等着的时候就想耍会手机,结果耍完一抬头发现程序运行结束了,但…

利用废旧手机搭建一台属于自己的服务器

1. Termux —— 手机终端模拟器App 1.1 使用F-Droid应用商店安装Termux # F-Droid 下载地址:https://f-droid.org/packages/com.termux/ 1.2 使用Termux安装环境 在手机上打卡Termux软件(操作很不方便),后面介绍使用ssh服务通过…

基于ARIMA-LSTM组合模型的预测方法研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Vector - CAPL - CANoe DBC消息相关自动化_02

目录 GetMessageID -- 获取报文ID​编辑 代码示例 GetMessageName -- 获取报文名称 代码示例 getNextCANdbFilename -- 获取指定位置数据库文件命名 代码示例 getNextCANdbName -- 获取指定数据库的名称 代码示例 setSignalStartValues -- 设置目标信号初始值 代码示例…

计算机网络知识点大全

文章目录 1 计算机网络概述1.1.1 概念、组成、功能和分类1.1.2 标准化工作及相关组织1.1.3 速率相关的性能指标1.1.4 时延、时延带宽积、往返时间RTT、利用率1.2.1 分层结构、接口、协议、服务1.2.2 OSI参考模型1.2.4 TCP/IP与五层参考模型 第一章知识大纲2.物理层2.1 物理层基…

Docker实用篇

文章目录 Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker1.1.1.应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安…

vue3的push问题

今天在处理动态数据时,使用push方法像数组中添加数据,会导致数组中所有参数都发生变化,解决方法可以搜到很多,这里使用的是如下的方法: 需要注意的是, 在push的时候需要newVal_value才能获取到深拷贝的值

常见的两种通信方式

引言 随着后端服务的发展,业务难度增加;单体的后端服务逐渐满足不了快速迭代,敏捷开发的节奏,在这样的背景下,分布式系统架构思想逐渐发展,并流行起来;在微服务思想下,将原有复杂的…

【c语言】文件的基本操作

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

说说谷歌Chrome浏览器无痕浏览器窗口

当您启用无痕浏览后&#xff0c;设备的其他用户将不会看到您的历史记录。 Chrome 不会保存您的浏览记录或您在表单中填写的信息。当您浏览时&#xff0c;Chrome 会记住相应的 Cookie 和网站数据&#xff0c;但当您退出无痕模式时&#xff0c;Chrome 会删除这些数据。您可在打开…

qkeras量化模型-直接搭建模型的量化感知训练

量化框架qkeras: qkeras是谷歌的感知训练量化框架&#xff0c;具有一些功能&#xff1a; 1、支持导入keras模型到qkeras模型&#xff1b; 2、支持剪枝和量化&#xff0c;使用tensorflow lite一起配合&#xff0c;简直不要太好用&#xff1b; 3、支持指定量化函数&#xff0…

如何将百度等其他网页设置为谷歌浏览器的首页

原因&#xff1a; 谷歌浏览器默认是https://chrome.google.com/以该网址访问的 如果您想将百度网页设置为谷歌浏览器的首页&#xff0c;可以按照以下步骤进行操作&#xff1a; [ 1 ] 打开您的谷歌浏览器&#xff0c;点击右上角的“三个点”按钮&#xff0c;选择“设置”选项。[…

基于SpringBoot的财务管理系统的设计与实现

背景 财务管理系统能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的员工了解和熟知财务管理系统的便捷高效&#xff0c;为管理者和员工提供了服务&#xff0c;节省人力、物力和时间&#xff0c;提高工作效率。 系统设计 为了更好的去理清本系统整体思路&#…