Aurora8B10B(二) 从手册和仿真学习Aurora8B10B

一. 简介

在上篇文章中,主要结合IP配置界面介绍了一下Aurora8B10B,这篇文章将结合文档来学习一下Aurora8B10B内部的一些细节 和 相关的时序吧。文档主要是参考的是这个 pg046-aurora-8b10b-en-us-11.1

二. Aurora8B10B内部细节

在手册上,对Aurora8B10B的内部并没有做非常信息的说明,所以我们也不用纠结的特别深入,大概的了解一下有效带宽延时大概是多少就可以了,重点还是放在如何使用上。

  1. 数据: 在用户发送每一帧数据的时候,Aurora8B10都会在数据的开始位置增加2byte的SCP和末尾增加2btye的EOF来表示数据帧的开始和结束标志(如果用户的数据btye数为奇数的话,会为其增加额外的一个PAD byte来使数据为偶数)。所以为了最大传输带宽,用户每次传输的数据byte数最好为偶数。
  2. 时钟补偿: 传输通道每10000 bytes需要进行一次时钟补偿,每次时钟补偿需要发送12 bytes的数据,需要消耗6个或者3个时钟周期,在这期间用户是不能进行数据传输的,有效带宽又进一步减少了。
  3. 传输延时:从发送端发送第一个数据开始,到接收端接收到第一个数据结束所消耗的时间,最小的延时为41个用户时钟周期,对时延有要求的话,这里需要着重注意。

需要注意的点,就以上三点,其它更细节的地方可以去研究官方文档。

微信公众号 : FPGA之旅 出品

三. Aurora8B10B 模块信号

这部分才是学习的重点,同样对于一些不重要的信号,或者这个信号很重要,但是在我使用的过程中,这个重要的信号我不care的,在下面的介绍中就一笔带过了,有对应需求的可以在官方文档里快速查找对应信号的功能(这样介绍起来,毕竟太费键盘了O(∩_∩)O)。

本次设计的IP配置如下(上篇文章中 已经对IP的配置进行了详细的讲解):

  1. 数据位宽4Btyes,线速率6.25,GT Refclk 125M,INT(DRP) CLk 50,数据模式双向,接口是Framing,其它都没有选
  2. GT 收发器选择一个Lane,Shared Logic选择 in core,其它的都不勾选。

最后得到的端口信号如下,接口信号挺多的,但是设计上使用到的却只有那么几个而已,和DDR MIG IP差不多,下面就按类别进行介绍。

请添加图片描述

  1. IO信号: 连接到对应bank的IO Pin上
// GT Serial I/O
.rxp                                (       aurora_rxp_pin_i            ),
.rxn                                (       aurora_rxn_pin_i            ),
.txp                                (       aurora_txp_pin_o            ),
.txn                                (       aurora_txn_pin_o            ),
  1. GT的参考时钟: 由外部差分时钟输入,引脚相对固定

    // GT Reference Clock Interface
    .gt_refclk1_p                       (       gt_refclk1_p_i              ),
    .gt_refclk1_n                       (       gt_refclk1_n_i              ),
    .gt_refclk1_out                     (       gt_refclk1_out              ),
    
  2. 错误标识信号: 当出现错误时,对应信号会拉高

 // Error Detection Interface
.frame_err                          (       aurora_error[0]             ),
.hard_err                           (       aurora_error[1]             ),
.soft_err                           (       aurora_error[2]             ),
  1. IP初始化成功信号: 当IP初始化成功,并且接收方与发送方握手成功后拉高,只需要对channel_up信号进行判断即可
 // Status
.lane_up                            (                                   ),
.channel_up                         (       channel_up                  ),
  1. 系统接口: 只需要操作gt复位和系统复位两个信号即可,初始化时钟自行输入即可,可以是单端信号(IP配置时勾选即可)。这个两个复位信号是在初始化时钟域下进行的。

​ loopback用来设置回环模式的,power_down设置0即可正常工作

复位说明:
请添加图片描述
请添加图片描述

    // System Interface
.sync_clk_out                       (                                   ),
.gt_reset                           (       gt_reset                    ),
.reset                              (       reset                       ),
.sys_reset_out                      (                                   ),
.gt_reset_out                       (                                   ),
.power_down                         (       'd0                         ),
.loopback                           (       'd0                         ),
.tx_lock                            (                                   ),
.init_clk_p                         (       init_clk_p_i                ),
.init_clk_n                         (       init_clk_n_i                ),
.init_clk_out                       (       init_clk_out                ),
.tx_resetdone_out                   (                                   ),
.rx_resetdone_out                   (                                   ),
.link_reset_out                     (                                   ),
  1. 动态配置信号,在IP运行过程中,可以对其进行动态配置,一般来说,用不到,可以不用管
//DRP Ports
.drpclk_in                          (   init_clk_out                    ),  
.drpaddr_in                         (   'd0                             ), 
.drpen_in                           (   'd0                             ), 
.drpdi_in                           (   'd0                             ), 
.drprdy_out                         (                                   ), 
.drpdo_out                          (                                   ), 
.drpwe_in                           (   1'b0                            ), 
  1. GT COMMON信号输出: 由于我们选择的是in core,所以在IP里面包含了这个模块,输出的信号可以给其他收发器使用。
//____________________________COMMON PORTS_______________________________{
.gt0_pll0refclklost_out             (                                   ),
.quad1_common_lock_out              (                                   ),
//----------------------- Channel - Ref Clock Ports ------------------------
.gt0_pll0outclk_out                 (                                   ),
.gt0_pll1outclk_out                 (                                   ),
.gt0_pll0outrefclk_out              (                                   ),
.gt0_pll1outrefclk_out              (                                   ),
//____________________________COMMON PORTS_______________________________}
.pll_not_locked_out                 (                                   )
  1. 用户接口: 最后就是我们的用户接口了,是一个非常简单的AXI stream接口 ,直接看时序图吧
.user_clk_out                           (   user_clk_out                    ),// AXI TX Interface
.s_axi_tx_tdata                         (   s_axi_tx_tdata                  ),
.s_axi_tx_tkeep                         (   s_axi_tx_tkeep                  ),
.s_axi_tx_tvalid                        (   s_axi_tx_tvalid                 ),
.s_axi_tx_tlast                         (   s_axi_tx_tlast                  ),
.s_axi_tx_tready                        (   s_axi_tx_tready                 ),// AXI RX Interface
.m_axi_rx_tdata                         (   m_axi_rx_tdata                  ),
.m_axi_rx_tkeep                         (   m_axi_rx_tkeep                  ),
.m_axi_rx_tvalid                        (   m_axi_rx_tvalid                 ),
.m_axi_rx_tlast                         (   m_axi_rx_tlast                  ),

请添加图片描述
请添加图片描述

其中tlast和tkeep两个信号需要注意一下,在发送接收一帧数据时,在最后一个数据需要tlast会拉高,同时tkeep会指示最后一个数据中有效的byte数是多少。

四. 仿真

仿真的时候,我们只需要给时钟和复位信号就可以了,主要观察到channel_up信号拉高了,就说名IP可以正常使用了, tb如下:

    reg gt_reset;reg reset;reg aurora_rst_n_i;reg gt_refclk1_p    ;reg gt_refclk1_n    ;reg init_clk_p      ;reg init_clk_n      ;wire aurora_rxp_pin  ;wire aurora_rxn_pin  ;wire aurora_txp_pin  ;wire aurora_txn_pin  ;assign aurora_rxp_pin = aurora_txp_pin;assign aurora_rxn_pin = aurora_txn_pin;always@(*) #2.5 gt_refclk1_p <= ~gt_refclk1_p;always@(*) gt_refclk1_n <= ~gt_refclk1_p;always@(*) #10 init_clk_p <= ~init_clk_p;always@(*) init_clk_n <= ~init_clk_p;initial begingt_refclk1_p = 1'b1;gt_refclk1_n = 1'b0;init_clk_p   = 1'b1;init_clk_n   = 1'b0;aurora_rst_n_i = 1'b1;gt_reset = 1'b0;reset    = 1'b0;#10reset = 1'b1;#100gt_reset = 1'b1;#1000gt_reset = 1'b0;#200reset = 1'b0;end

请添加图片描述

仿真到360us的时候,channel_up拉高了。就可以根据时序图正常进行读写操作了。到这里就结束了,可以根据自己需要进行读写设计了。

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

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

相关文章

VR全景是什么?普通人该如何看待VR全景创业?

如果你还没有开始了解VR&#xff0c;那么不妨驻足几分钟细致的了解一下&#xff0c;你就会对VR全景行业有不一样的看法。VR全景与普通的平面图片和视频相比&#xff0c;具有更加丰富的视觉体验和交互性&#xff0c;基于真实场景的全景图像的虚拟现实技术&#xff0c;制作流程简…

Maven仓库上传jar和mvn命令汇总

目录 导入远程仓库 命令结构 命令解释 项目pom 输入执行 本地仓库导入 命令格式 命令解释 Maven命令汇总 mvn 参数 mvn常用命令 web项目相关命令 导入远程仓库 命令结构 mvn deploy:deploy-file -Dfilejar包完整名称 -DgroupIdpom文件中引用的groupId名 -Dartifa…

Ubuntu 常用命令之 apt-get 命令用法介绍

apt-get是Ubuntu系统下的一个命令行工具&#xff0c;用于处理包。这个命令可以自动下载和安装软件包及其依赖项。它是Advanced Packaging Tool (APT)的一部分&#xff0c;APT是处理包的高级工具&#xff0c;可以处理复杂的包关系&#xff0c;如依赖关系等。 apt-get命令的常见…

一个真正的软件测试从业人员必备技能有哪些?

协同开发能力&#xff1a; 1. 项目管理&#xff08;SVN、Git&#xff09; 2. 数据分析能力&#xff08;Fiddler、Charles、浏览器F12&#xff09;。 接口测试&#xff1a; 1. 概念及接口测试原理概念&#xff08;概念、接口测试原理&#xff09; 2. 接口测试工具&#xff…

数据工作者最爱的AI功能,你知道吗~

在工作中难以避免的一项任务就是各种数据总结和汇报&#xff0c;怎么分析总结&#xff1f;以何种形式汇报&#xff1f;都是具有一定的难点&#xff0c;所以我要推荐的就是具有AI图表解析功能的可视化工具——Easyv数字孪生低代码可视化平台。可实现对数据的可视化展示&#xff…

软件测试项目测试报告总结

测试计划概念&#xff1a;就在软件测试工作实施之前明确测试对象&#xff0c;并且通过资源、时间、风险、测试范围和预算等方面的综合分析和规划&#xff0c;保证有效的实施软件测试。 需求挖掘的6个方面&#xff1a; 1、输入方面 2、处理方面 3、结果输出方面 4、性能需求…

linux 驱动——杂项设备驱动

杂项设备驱动 在 linux 中&#xff0c;将无法归类的设备定义为杂项设备。 相对于字符设备来说&#xff0c;杂项设备的主设备号固定为 10&#xff0c;而字符设备不管是动态分配还是静态分配设备号&#xff0c;都会消耗一个主设备号&#xff0c;比较浪费主设备号。 杂项设备会自…

uml用例图是什么?有哪些要素?

UML用例图是什么&#xff1f; UML用例图&#xff08;Unified Modeling Language Use Case Diagram&#xff09;是一种用于描述系统功能和用户之间交互的图形化建模工具。它是UML的一部分&#xff0c;主要用于识别和表示系统中的各个用例&#xff08;用户需求或功能点&#…

鸿蒙开发之压缩/解压缩

本次学习遗留一个问题&#xff1a;压缩/解压缩的路径怎么获取&#xff1f;&#xff1f;希望知道的小伙伴能给说一下&#xff0c;私聊评论皆可。 一、API使用 代码相对来说比较简单 //需要导入的头文件 import zlib from ohos.zlib//压缩函数 function zipFile() {let rawfil…

高通平台开发系列讲解(USB篇)adb应用adbd分析

沉淀、分享、成长,让自己和他人都能有所收获!😄 在apps_proc/system/core/adb/adb_main.cpp文件中main()函数会调用adb_main()函数,然后调用uab_init函数 在uab_init()函数中,会创建一个线程,在线程中会调用init_functionfs()函数,利用ep0控制节点,创建ep1、ep2输…

在区块链中看CHAT的独特见解

问CHAT&#xff1a;谈谈对区块链以及区块链金融的理解 CHAT回复&#xff1a;区块链是一种去中心化的分布式数据库技术&#xff0c;这种技术通过加密算法&#xff0c;使数据在网络中传输和存储的过程变得更加安全可靠。区块链的出现引领了存储、交易等形式的革命&#xff0c;改变…

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述&#xff1a; 在最近的一个项目中&#xff0c;有一个存在较久&#xff0c;并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用&#xff0c;该应用部署在Tomcat服务器上。起初&#xff0c;应用程序可以通过HTTP协议访问&#xff0c;一切运行都没…

FreeCodeCamp--数千免费编程入门教程,非盈利性网站,质量高且支持中文

在浏览话题“Github上获得Star最多的项目”时&#xff0c;看到了FreeCodeCamp&#xff0c;顾名思义--免费编程营地&#xff0c;于是就做了些调研&#xff0c;了解了下这是个什么项目 这是一个致力于推动编程教育的非营利性组织&#xff0c;团队由来自世界各地的杰出的技术开发…

java中常用的加密算法总结

目前在工作中常用到加密的一些场景&#xff0c;比如密码加密&#xff0c;数据加密&#xff0c;接口参数加密等&#xff0c;故通过本文总结以下常见的加密算法。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密。在Java中&#xff0c;常见的对称加密算法包括&…

机器人也能干的更好:RPA技术的优势和应用场景

RPA是什么&#xff1f; 机器人流程自动化RPA&#xff08;Robotic Process Automation&#xff09;是一种自动化技术&#xff0c;它使用软件机器人来高效完成重复且有逻辑性的工作。近年来&#xff0c;随着人工智能和自动化技术的不断发展和普及&#xff0c;RPA已经成为企业提高…

模拟信号和数字信号的区别

模拟和数字信号是携带信息的信号类型。两种信号之间的主要区别在于模拟信号具有连续电信号&#xff0c;而数字信号具有非连续电信号。 模拟信号和数字信号之间的差异可以通过不同类型波的例子来观察。 什么是模拟信号(Analog Signals)&#xff1f; 许多系统使用模拟信号来传输…

基于SpringBoot+Vue的小区物业管理系统

基于SpringBootVue的小区物业管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 房屋类型 论坛 登录界面 管理员界面 员工界面 摘要 小区物业管理系统是一个…

翻译: LLMs离通用人工智能AGI有多远 20个小时学会开车 Artificial General Intelligence

AGI&#xff0c;即人工通用智能&#xff0c;是一个令人兴奋的概念。我认为围绕它的一些混淆源于“通用”这个词的使用。正如您所知&#xff0c;人工智能是一种通用技术&#xff0c;意味着它对许多不同的事情都有用。大型语言模型的崛起导致了像ChatGPT这样的单一模型可以用于许…

鸿蒙(HarmonyOS)应用开发—— video组件实操

video 组件 harmonyOS 系统提供了基础的video。下面就直接上代码 原始video 新建项目 customVideo项目 本地视频 网络地址&#xff0c;就不用说明&#xff0c;只需要把地址换成网络地址即可 在resource 文件夹下的rawfile文件夹下 添加视频 在index.ets Video({src:$rawf…

自动化测试工具——Monkey

前言&#xff1a; 最近开始研究Android自动化测试方法&#xff0c;整理了一些工具、方法和框架&#xff0c;其中包括android测试框架&#xff0c;CTS、Monkey、Monkeyrunner、benchmark&#xff0c;以及其它test tool等等。 一、 什么是Monkey Monkey是Android中的一个命令行…