1,SRIO概述

Rapid IO分为并行Rapid IO标准和串行Rapid IO标准,串行RapidIO是指物理层采用串行差分模拟信号传输的RapidIO标准,又称SRIO。

Rapid IO协议由逻辑层、传输层、物理层构成。

逻辑层定义了所有协议和包格式。这是对终端进行初始化和完成传送的很有必要的信息。对外的用户接口;只要业务有:直接IO/DMA和消息传递;用户主要通过操作逻辑层对外的用户接口,实现通信。

传输层为数据包从一个终端到另一个终端通道的必要信息;基于包交换的互联技术,定义了包交换的路由和寻址机制;Rapid IO支持8bit/16bit器件ID。因此最多可容纳256或65536个器件;与以太网类似,支持广播,组播,单播;

物理层描述了设备之间接口协议,例如包传装置,流量控制,电特性及低级错误管理等,包括 1X/4X。

2,Xilnx SRIO IP

SRIO核核带宽支持x1, x2,x4 。速率支持1.25G 2.5G  3.125G 5G 6.25G。

2.1 SRIO系统架构图如下:

2.2 用户接口介绍

由图可知逻辑层对外的接口主要有:Use,Configuration Fabric

其中user端口主要包括IO port,Messaging Port,Maintenance Port,User-Defined Port。

其中Configuration端口主要为配置端口,可根据需要进行选择;

IO port :包括HELLO format 和SRIO stream;

Messaging Port :可选;message 可以通过IO prot传输;

Maintenance Port:可选;如果配置底层寄存器需要选择,否则可以不用;

User-Defined Port :可选;采用SRIO stream format,并拥有2个AXI4-Stream channels;

2.3 hello包解析:

在利用Xilinx的IP进行开发时,为了简化报文的解析和组包,SRIO Gen2 usesAXI4-Stream,Xilinx推出了一种简化的报文格式。

帧类型说明:

hello报头:

hello头解析:

2.4 时钟关系:

3 IP配置

1,LAN配置:4X,5G,参考时钟选择125MHZ;

2,设备ID:可选择8BIT或16BIT;可根据互联设备选择;然后配置。

3,数据流控制:发送控制器可发送也可接收,接收控制器只可接收;根据项目需求选择了发送;

所有事事务类型介绍见2.3所述hello帧解析;

1,源端口:模块作为源设备,支持事务配置;根据需要选择了Write和Doorbell两中类型的hello。即IP模块支持发送这两种数据报;

2,目的端口:如过IP作为目标设备,支持事务配置;根据需要选择了Write和Doorbell,Streaming-Writr三中类型的hello。即IP模块支持接收这两种数据报;

3,是否选择维护功能:配置否;

IO port选择:IO数据端口有两种,一种condensed IO,一种initiator/target 。

condensed I/O:接收,发送共用一个IO通道;

initiator/target :发送,接收使用独立的IO通道;

messaging/ Maintainance 配是否使用hello包的传输方式;

request reordering :使用该功能,利用IP核自动对数据报发送顺序排序。

3,IP例化

srio_gen2_0 srio_gen2_0(.sys_clkp                       (REFCLK_SRIO0_P     ),.sys_clkn                       (REFCLK_SRIO0_N     ),.sys_rst                        (srio_reset         ),//sys_reset          ),//(1'b0),//.log_clk_out                    (SRIO_CLK           ),.phy_clk_out                    (),.gt_clk_out                     (),.gt_pcs_clk_out                 (),.drpclk_out                     (),.refclk_out                     (),.clk_lock_out                   (),.cfg_rst_out                    (),.log_rst_out                    (),.buf_rst_out                    (),.phy_rst_out                    (),.gt_pcs_rst_out                 (),.gt0_qpll_clk_out               (),.gt0_qpll_out_refclk_out        (),.srio_rxn0                      (SRIO_A_RX_N        [0]),.srio_rxp0                      (SRIO_A_RX_P        [0]),.srio_rxn1                      (SRIO_A_RX_N        [1]),.srio_rxp1                      (SRIO_A_RX_P        [1]),.srio_rxn2                      (SRIO_A_RX_N        [2]),.srio_rxp2                      (SRIO_A_RX_P        [2]),.srio_rxn3                      (SRIO_A_RX_N        [3]),.srio_rxp3                      (SRIO_A_RX_P        [3]),.srio_txn0                      (SRIO_A_TX_N        [0]),.srio_txp0                      (SRIO_A_TX_P        [0]),.srio_txn1                      (SRIO_A_TX_N        [1]),.srio_txp1                      (SRIO_A_TX_P        [1]),.srio_txn2                      (SRIO_A_TX_N        [2]),.srio_txp2                      (SRIO_A_TX_P        [2]),.srio_txn3                      (SRIO_A_TX_N        [3]),.srio_txp3                      (SRIO_A_TX_P        [3]),//主要端口.s_axis_ireq_tvalid             (AXIs_Sireq_tvalid  ),.s_axis_ireq_tready             (AXIs_Sireq_tready  ),.s_axis_ireq_tlast              (AXIs_Sireq_tlast   ),.s_axis_ireq_tdata              (AXIs_Sireq_tdata   ),//[63:0].s_axis_ireq_tkeep              (AXIs_Sireq_tkeep   ),//[7:0].s_axis_ireq_tuser              (AXIs_Sireq_tuser   ),//[31:0]//未使用.m_axis_iresp_tvalid            (),.m_axis_iresp_tready            (1'b1),.m_axis_iresp_tlast             (),.m_axis_iresp_tdata             (),//[63:0].m_axis_iresp_tkeep             (),//[7:0].m_axis_iresp_tuser             (),//[31:0]//下发命令.m_axis_treq_tvalid             (AXIs_Streq_tvalid  ),.m_axis_treq_tready             (AXIs_Streq_tready  ),.m_axis_treq_tlast              (AXIs_Streq_tlast   ),.m_axis_treq_tdata              (AXIs_Streq_tdata   ),//[63:0].m_axis_treq_tkeep              (AXIs_Streq_tkeep   ),//[7:0].m_axis_treq_tuser              (AXIs_Streq_tuser   ),//[31:0]//未使用.s_axis_tresp_tvalid            ('b0),.s_axis_tresp_tready            (),.s_axis_tresp_tlast             ('b0),.s_axis_tresp_tdata             ('b0),//[63:0].s_axis_tresp_tkeep             ('b0),//[7:0].s_axis_tresp_tuser             ('b0),//[31:0]//测试信号.sim_train_en                   ('b0),.force_reinit                   ('b0),.phy_mce                        ('b0),.phy_link_reset                 ('b0),.phy_rcvd_mce                   (),.phy_rcvd_link_reset            (),.phy_debug                      (),//[223:0].gtrx_disperr_or                (ot_gtrx_disperr_or),.gtrx_notintable_or             (ot_gtrx_notintable_or),.port_error                     (ot_port_error),.port_timeout                   (ot_port_timeout),//[23:0].srio_host                      (),.port_decode_error              (),.deviceid                       (SRIO_dev_ID        ),//[15:0].idle2_selected                 (),.phy_lcl_master_enable_out      (),.buf_lcl_response_only_out      (),.buf_lcl_tx_flow_control_out    (),.buf_lcl_phy_buf_stat_out       (),//[5:0].phy_lcl_phy_next_fm_out        (),//[5:0].phy_lcl_phy_last_ack_out       (),//[5:0].phy_lcl_phy_rewind_out         (),.phy_lcl_phy_rcvd_buf_stat_out  (),//[5:0].phy_lcl_maint_only_out         (),.port_initialized               (SRIO_state_port_init   ),.link_initialized               (SRIO_state_link_init   ),.idle_selected                  (),.mode_1x                        ());

基于FPGA的SRIO核的使用相关推荐

  1. 基于FPGA的SRIO的相关介绍和实现

    SRIO的相关介绍和实现 1.SRIO简介 SRIO是面向嵌入式系统开发提出的高可靠.高性能.基于包交换的新一代高速互联技术,已于2004年被国际标准化组织(ISO)和国际电工协会(IEC)批准为IS ...

  2. 基于FPGA的IP核RAM的设计和调用

    介绍IP核: IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个"黑盒"或者可修改参数的模块,供设计者使用.IP核包 ...

  3. 【FPGA】SRIO IP核系统总览以及端口介绍(二)(I/O Port 含义介绍)

    上篇博文:[FPGA]SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)根据数据手册PG007,介绍到了逻辑层接口的IO口,今天想研究下,这些端口如何使 ...

  4. 【FPGA】SRIO IP核的三层协议的作用?

    SRIO这种高速串口复杂就复杂在它的协议上,三层协议:逻辑层,传输层以及物理层. 数据手册会说这三层协议是干什么的呢?也就是分工([FPGA]SRIO IP核系统总览以及端口介绍(一)(User In ...

  5. 【FPGA】SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)

    系统总览 RapidIO标准分为三层:逻辑,传输和物理. 逻辑层定义整体协议和数据包格式. 这是端点启动和完成事务(transaction)所必需的信息. 传输层提供数据包从端点移动到端点所需的路由信 ...

  6. 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩

    弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩 IP核:知识产权核,指某一方提供的.形式为逻辑单元的可重用模块.IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以 ...

  7. 【FPGA】SRIO例子程序仿真分析实践

    当我们去看有关高速串行总线与并行总线相比较的优点,会发现有这么一条描述,说串行总线能实现分割式数据传输,所有的串行总线都使用包括包和分割式数据传输协议进行数据传输.串行总线有包的概念,包可以有包界定符 ...

  8. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  9. 基于FPGA的以太网开发

      基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...

  10. 基于FPGA的UART接口协议设计

    一.PC终端概述 PC终端,Personal Computer 智能终端,通俗的讲,就是利用电脑GUI界面控制我们的外部硬件电路. 因此设计到了PC与外部硬件电路的通信接口.对于台式电脑.个人笔记本, ...

最新文章

  1. 日访问量百亿级的应用如何做缓存架构设计
  2. 如何提高分布式系统的可用性
  3. 用Excel画五线谱!
  4. 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片...
  5. shelve 序列化模块——day18
  6. 递归问题(代码、分析、汇编)
  7. 计算机网络英文面试题,计算机网络面试题整理
  8. Python模拟删除字符串两边的空白
  9. Linux下Reids的安装和使用
  10. devops开发运维一体化_进阶 | 中国电信系统集成公司:100% 应用 DevOps 理念,做好企业级行业应用...
  11. 探索webpack热更新对代码打包结果的影响(二)
  12. arm poky linux,opencv移植在4412和imx6(yocto 3.14.28 arm-poky-linux-gnueabi )上
  13. 用示波器对单片机I2C时序进行图形波形分析的试验小结
  14. 第十六讲:菜单 Android Menu(转)
  15. 【数学与算法】泰勒公式_线性化_雅各比矩阵_黑塞矩阵
  16. wind python接口手册_wind量化平台-用户手册(python).pdf
  17. oppoA37m rom固件刷机包下载 免费下载 解锁专用
  18. Unity Burst 用户指南
  19. CODEVS1296
  20. 《回炉重造 Java 基础》——集合(容器)

热门文章

  1. VARCHART XGantt 甘特图中的日期和夏令时
  2. shapefile文件格式转inp文件格式
  3. 22021成都市高考成绩查询,四川大学本科教务系统登录
  4. WindowsServer2008R2安装中文语言包截图详细教程(附语言包下载资源)
  5. 使用layui实现表格制作
  6. Android半透明
  7. 中文版Excel 2007公式与函数应用宝典
  8. js 下载文件、音频、视频
  9. codeblock图形界面编程(十)文件操作
  10. STL 格式解析--文本以及二进制格式