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

E8—Aurora 64/66B ip实现GTX与GTY的40G通信2023-08-12

1. 场景

要在贴有K7系列FPGA芯片的板子和贴有KU系列FPGA芯片的板子之间通过光模块+光纤+QSFP+实现40G的高速通信。可以选择的方式有多种,但本质的方案就一种,即实现4路GTX与GTY之间的通信。可以选择8B/10B编码通过GT IP核实现,而不能通过Aurora 8/10BIP,因为KU系列中没有Aurora 8B/10B IP。由于8/10B编码方式要比64/66B编码方式传输效率低,所以这里选择64/66B编码方式。如果使用GT IP核实现64/66B编码的二者通信,打开example design会发现KU系列的例程只发送了PRBS序列进行验证,因此换成自己的数据做通信并不方便。此外GT IP核的侧重点是协议灵活,操作灵活,可以更多配置串行收发器“底层”的东西,而Aurora 64/66B对于没有太多特殊需求的用户显然是更友好的,将数据接口进行了封装,还可实现更高的传输效率,使用起来更为方便。由此最终选择Aurora 64/66BIP实现二者之间高达40G的传输。实际传输速度为10.3125Gbps*4=41.25Gbps。由于实现二者之间的通信并不太容易,因此此处构建一个简单的场景先进行原理验证,具体是是,在链路初始化完成之后,GTX向GTY发送0-1000的数字,GTY接收后检错并通过led表示;同时GTY也向GTX发送0-1000的数字,也是接收后检错并通过led表示。对应例程链接本次工程用到的是自己设计的板卡,连接方式如下图所示:

2.结构

其内部模块以及通道模型与Aurora基本一致。

 

3.IP配置

        Aurora 64/66B IP核的配置与Aurora 8B/10B IP的配置基本一致,请参考Aurora 8/10Bip核实现。需要说明,此处GTX与GTY的IP核应配置成一样的速率,并选择同样的接口形式,为了区别于Aurora 8B/10B,此处选择streaming接口,同样都勾选小端模式,符合习惯。具体配置如下:

 

4.注意事项

①该IP核对复位逻辑有着较为严格的要求,如果工程需要复位,需要查看手册并按照时序要求配置相关信号;如果没有太多要求,可直接使用example design中的复位逻辑。

②用户时钟的计算,每路带宽10.3125Gbps,一共思路,因此总带宽是10.3125G*4=41.25Gbps,结合编码方式应该乘64,除66,然每一个周期发送的数据位宽是256bit,因此user_clk_i=41.25Gbps*(64/66)/256bit=156.25Mhz。

③GTX和GTY生成的例程略有不同,还要注意约束文件的修改。

④提供的例程源码是对example design做了一定的整理,仅仅为了美观。 

5.部分源码设计

发送端源码设计

module GTY_Xfer(input user_clk_i,input system_reset_i, //高电平复位input channel_up_i,input  tx_tready_i,output reg[255:0]tx_tdata_i,output reg tx_tvalid_i);wire local_rst;
assign local_rst = system_reset_i | !channel_up_i;
always @(posedge user_clk_i or posedge local_rst) beginif(local_rst == 1)begintx_tvalid_i <= 0;end else begintx_tvalid_i <= 1;end
end
always @(posedge user_clk_i or posedge local_rst) beginif(local_rst == 1)begintx_tdata_i <= 0;end else if(tx_tready_i)begintx_tdata_i <= tx_tdata_i + 1;if(tx_tdata_i == 1000)begintx_tdata_i <= 0;    end end
end
endmodule

接收check源码

module GTY_Recv(input user_clk_i,input system_reset_i, //高电平复位input channel_up_i, input [255:0] rx_tdata_i,input rx_tvalid_i,output reg  led4,output error );wire local_rst;
assign local_rst = system_reset_i | !channel_up_i;
reg [255:0]rd_cnt;
always @(posedge user_clk_i or posedge local_rst) beginif(local_rst == 1)beginrd_cnt <= 0;end else if(rx_tvalid_i)beginrd_cnt <= rd_cnt + 1;if(rd_cnt == 1000)beginrd_cnt <= 0;endend
end
assign error = rx_tvalid_i & (rd_cnt != rx_tdata_i);
always @(posedge user_clk_i or posedge local_rst) beginif(local_rst == 1)beginled4 <= 0;end else if(error)beginled4 <= 1;end
end 
endmodule

6.效果

在两端均可抓取到正确的数据信号,并且无error产生。

相关文章:

E8—Aurora 64/66B ip实现GTX与GTY的40G通信2023-08-12

1. 场景 要在贴有K7系列FPGA芯片的板子和贴有KU系列FPGA芯片的板子之间通过光模块光纤QSFP实现40G的高速通信。可以选择的方式有多种&#xff0c;但本质的方案就一种&#xff0c;即实现4路GTX与GTY之间的通信。可以选择8B/10B编码通过GT IP核实现&#xff0c;而不能通过Aurora…...

js下载后端返回的文件

文件流下载 后端返回文件流形式&#xff0c;前端下载 // res 为请求返回的数据对象const file_data res.data // 后端返回的文件流const blob new Blob([file_data]) const href window.URL.createObjectURL(blob) // 创建下载的链接 const file_name decodeURI(res.header…...

计组 | 并行操作

前言 记录一些计组相关联的题集与知识点&#xff0c;方便记忆与理解。 并行 什么是并行处理 广义地讲&#xff0c;并行性有两种含义&#xff1a;一是同时性&#xff0c;指两个或多个事件在同一时刻发生&#xff1b;二是并发性&#xff0c;指两个或多个事件在同一时间间隔内发生…...

rabbitmq容器启动后修改连接密码

1、进入容器 docker exec -it rabbitmq bash 2、查看当前用户列表 rabbitmqctl list_users 3、修改密码 rabbitmqctl change_password [username] ‘[NewPassword]’ 4、修改后退出容器 ctrlpq 5、退出容器后即可生效&#xff0c;不需要重启容器...

PHP中的curl详细解析和常见大坑

这篇文章主要介绍了 PHP 中使用 CURL 之 php curl 详细解析和常见大坑 &#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧。好啦&#xff0c;长话短说再长说&#xff0c;祭出今天的工具——CURL(Client URL Library)&#xff0c;当然今天以 PHP…...

[python] 使用Jieba工具中文分词及文本聚类概念

前面讲述了很多关于Python爬取本体Ontology、消息盒InfoBox、虎扑图片等例子&#xff0c;同时讲述了VSM向量空间模型的应用。但是由于InfoBox没有前后文和语义概念&#xff0c;所以效果不是很好&#xff0c;这篇文章主要是爬取百度5A景区摘要信息&#xff0c;再利用Jieba分词工…...

常见程序搜索关键字转码

个别搜索类的网站因为用户恶意搜索出现误拦截情况&#xff0c;这类网站本身没有非法信息&#xff0c;只是因为把搜索关键字显示在网页中&#xff08;如下图&#xff09;&#xff0c;可以参考下面方法对输出的关键字进行转码 DEDECMS程序 本文针对Dedecms程序进行搜索转码&…...

细谈商品详情API接口设计

一、引言 随着互联网技术的发展&#xff0c;商品详情信息的展示和交互变得越来越重要。为了提供更好的用户体验&#xff0c;我们需要设计一套高效、稳定且易于扩展的商品详情API接口。本文将详细探讨商品详情API接口的设计&#xff0c;包括接口的通用性、安全性和扩展性等方面…...

Go 1.21新增的内置函数(built-in functions)详解

Go 1.21新增的内置函数分别是 min、max 和 clear&#xff0c;接下来看下这几个函数的用途和使用示例。 在编程过程中&#xff0c;需要知道一组值中的最大或最小值的场景是很常见的&#xff0c;比如排序、统计等场景。之前都需要自己写代码来实现这个功能&#xff0c;现在 Go 1…...

【云原生,k8s】基于Helm管理Kubernetes应用

第四阶段 时 间&#xff1a;2023年8月18日 参加人&#xff1a;全班人员 内 容&#xff1a; 基于Helm管理Kubernetes应用 目录 一、Kubernetes部署方式 &#xff08;一&#xff09;minikube &#xff08;二&#xff09;二进制包 &#xff08;三&#xff09;Kubeadm …...

字符设备驱动分布注册

驱动文件&#xff1a; 脑图&#xff1a; 现象&#xff1a;...

在Gazebo中添加悬浮模型后,利用键盘控制其移动方法

前段时间写了文章&#xff0c;通过修改sdf、urdf模型的方法&#xff0c;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;在Gazebo中添加悬浮模型方法 / Gazebo中模型如何不因重力下落&#xff1a;修改sdf、urdf模型_sagima_sdu的博客-CSDN博客 今天讲…...

Java设计模式 (一) 模板方法设计模式

什么是模板方法设计模式? 模板方法设计模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;并将一些步骤的具体实现延迟到子类中。模板方法模式可以帮助确保在算法的不同部分中保持一致性&#xff0c;同时也允许子类根据需要进行具体实现。 模板方法模式…...

PHP在线客服系统推荐

在当今数字化时代&#xff0c;企业客户服务的重要性不容忽视。为了提供卓越的客户体验&#xff0c;许多企业正在寻找PHP在线客服系统。这种系统不仅可以满足客户的需求&#xff0c;还能提升企业的形象。本文将深入探讨PHP在线客服系统的一些有趣话题。 理解PHP在线客服系统 PHP…...

(三)行为型模式:3、解释器模式(Interpreter Pattern)(C++示例)

目录 1、解释器模式&#xff08;Interpreter Pattern&#xff09;含义 2、解释器模式的UML图学习 3、解释器模式的应用场景 4、解释器模式的优缺点 5、C实现解释器模式的实例 1、解释器模式&#xff08;Interpreter Pattern&#xff09;含义 解释器模式&#xff08;Interp…...

Zookeeper 启动闪退

常见的大概这两种情况 1.找不到zoo.cfg文件 在下载zookeeper后&#xff0c;在 %zookeeper安装目录%/conf 目录下有一个zoo.sample.cfg 文件&#xff0c;把 zoo.sample.cfg 文件改名为 zoo.cfg 再重启zkServer.cmd echo off REM Licensed to the Apache Software Foundation …...

jenkins 安装nodejs 14

参考&#xff1a; jenkins容器安装nodejs-前端问答-PHP中文网...

K8S核心组件etcd详解(上)

1 介绍 https://etcd.io/docs/v3.5/ etcd是一个高可用的分布式键值存储系统&#xff0c;是CoreOS&#xff08;现在隶属于Red Hat&#xff09;公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据&#xff0c;并使用Raft协议实现了分布式一致性。etcd广泛应用…...

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA

STM32存储左右互搏 I2C总线FATS读写EEPROM ZD24C1MA 在较低容量存储领域&#xff0c;EEPROM是常用的存储介质&#xff0c;可以通过直接或者文件操作方式进行读写。不同容量的EEPROM的地址对应位数不同&#xff0c;在发送字节的格式上有所区别。EEPROM是非快速访问存储&#xf…...

微服务—远程调用(RestTemplate)

在微服务的所有框架中&#xff0c;SpringCloud脱颖而出&#xff0c;它是目前国内使用的最广泛的微服务框架 &#xff08;官网地址&#xff09;&#xff0c;它集成了各种微服务功能组件&#xff0c;并基于SpringBoot实现了这些组件的自动装配&#xff0c;从而提供了良好的开箱…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...