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 begin
        gt_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;
   
        #10
        reset = 1'b1;
        #100
        gt_reset = 1'b1;
        #1000
        gt_reset = 1'b0;
        #200
        reset = 1'b0;
    end

请添加图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

弧形导轨的精度等级

为符合工控自动化生产制造必须&#xff0c;弧形导轨在运输武器装备领域应时而生&#xff0c;并已在电子生产制造、手机上、半导体材料、动力锂电池等领域获得广泛运用。其中&#xff0c;弧形导轨的精度等级是评估其运动精度的重要指标&#xff0c;通常包括制造精度和运行精度两…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法&#xff0c;为中小企业实现数字化转型提供了机会。但是&#xff0c;对于一些刚开始触碰低代码平台的企业来说&#xff0c;了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力&#xff0c;并在挑选低代码平台以前为中小企…

【星环云课堂大数据实验】InceptorSQL使用方法

文章目录 一、InceptorSQL概述二、实验环境三、实验准备四、实验目的五、实验步骤5.1 使用Waterdrop连接Inceptor5.2、WordCount5.3、外部表与内部表5.4、普通ORC表5.5、创建ORC事务表5.6、创建ORC分区表5.7、创建ORC分区分桶表 一、InceptorSQL概述 InceptorSQL是一个**分布式…

数据结构-迷宫问题

文章目录 1、题目描述2、题目分析3、代码实现 1、题目描述 题目链接&#xff1a;迷宫问题 、 注意不能斜着走&#xff01; 2、题目分析 &#xff08;1&#xff09;0为可以走&#xff0c;1不能走且只有唯一一条通路 &#xff08;2&#xff09;我们可以通过判断上下左右来确定…

开酸奶店为何失败,5年创业者和你分享赚钱经验

我是张峻荣&#xff0c;开鲜奶吧已经有 5 年时间了&#xff0c;在自媒体创业板块也是小有名气&#xff0c;经常在网络上分享一些酸奶店的创业知识。今天我要和大家分享的是开酸奶店失败的原因&#xff0c;以及如何赚钱的经验。 5 年前&#xff0c;是我第一次创业失败&#xff…

activiti并行网关执行时每个关联表的变化

activiti并行网关执行时每个关联表的变化 文章目录 &#x1f50a;流程图&#x1f4c6; 通过请假节点&#x1f4d5;通过一个并行节点&#x1f5a5;️再通过一个并行节点&#x1f516;再通过校长任务&#x1f58a;️最后总结 &#x1f50a;流程图 &#x1f4c6; 通过请假节点 &l…

口袋参谋:新品上架,如何获取更多免费流量?

​新品上架 如何获得更多的免费流量&#xff1f; 我相信 这是99.999%的商家&#xff0c;都关心的问题&#xff01; 今天我就来和大家好好说道说道。 01 流量的组成 新品本身是没有权重的&#xff0c;买家搜不到我们。 如果想要获得更多的免费流量&#xff0c;我们就要知道…

千梦网创:逮住一闪而过的机会疯狂摩擦

我这个人平时想的就多&#xff0c;睡觉也在想事情&#xff0c;有时候睡觉里想的事情往往都是很纯粹的、很绝妙的&#xff0c;但是经常性一醒过来就忘了&#xff0c;再去回忆怎么也想不起来了。 灵感只在特定的环境下产生&#xff0c;这类环境是不可再生和模拟的。 机会只因特…

17. 常用类

1.String类 1).什么是字符串? 字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组. 2).String类的概述 String 类代表字符串。Java 程序中的所有字符串字面值&#xff08;如 “abc” &#xff09;都作为此类的实例实现。 字符串是常量&#xff1b;它们…

connect: Network is unreachable问题解决

第一步&#xff1a;查看ifcfg-ens33配置文件 cd /etc/sysconfig/network-scripts/ cat ifcfg-ens33 发现问题&#xff1a;GATEWAY写错成GATWAY 第二步&#xff1a;修改 vim ifcfg-ens33 第三步&#xff1a;检测是否成功 ping baidu.com 成功&#xff01;

【Unity动画】实现不同的肢体动作自由搭配播放Layer+Avatar Mask

这个教程教你学会使用Unity 动画层配合布偶遮罩&#xff08;AvaterMask&#xff09; 实现从2个动画身上只保留部分肢体动作&#xff0c;然后搭配播放 例如&#xff1a;一个正常跑的动画片段&#xff0c;我只保留腿部动作&#xff0c;形成一个层叫Run_leg 然后在从一个攻击动作…

Java-File类与IO流(2)

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

b-tree b+tree两种区别

Btree多了叶子节点&#xff0c;并可以看到多了个箭头&#xff0c;这样查询比如大于>2,Btree更容易。而b--tree则要返到第一层、第二层才可以最得所有>2的数据

【STL容器】详解vector的使用和模拟实现

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; STL函数专栏 &#x1f319;请不要相信胜利就像山坡上的蒲公英一…

自媒体新闻中心-后台管理端

0.本节内容说明 本节主要是一个功能概述&#xff0c;了解清楚这个这个后台管理端做的什么&#xff0c;以及实现的思路&#xff0c;具体的实现代码部分&#xff0c;后面讲解 1.后台功能概述 登陆: 账号密码登陆&#xff0c;或者是账号人脸进行登陆内容审核&#xff1a;对于用户…

LeetCode2961双模幂运算(相关话题:快速幂)

题目描述 给你一个下标从 0 开始的二维数组 variables &#xff0c;其中 variables[i] [ai, bi, ci, mi]&#xff0c;以及一个整数 target 。 如果满足以下公式&#xff0c;则下标 i 是 好下标&#xff1a; 返回一个由 好下标 组成的数组&#xff0c;顺序不限 。 示例 &…

分数约分-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第20讲。 分数约分&#xf…

大创项目推荐 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

4G无线工业级路由器在智能制造设备互联互通中的角色

随着工业技术的不断发展和进步&#xff0c;智能制造已经成为了现代制造业的重要趋势和发展方向。而在智能制造过程中&#xff0c;设备之间的互联互通是至关重要的一环。在这个过程中&#xff0c;4G无线工业级路由器扮演着重要的角色&#xff0c;它提供了稳定可靠的网络连接&…

【算法Hot100系列】两数相加

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…