基于FPGA的SRIO核的使用
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核的使用相关推荐
- 基于FPGA的SRIO的相关介绍和实现
SRIO的相关介绍和实现 1.SRIO简介 SRIO是面向嵌入式系统开发提出的高可靠.高性能.基于包交换的新一代高速互联技术,已于2004年被国际标准化组织(ISO)和国际电工协会(IEC)批准为IS ...
- 基于FPGA的IP核RAM的设计和调用
介绍IP核: IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个"黑盒"或者可修改参数的模块,供设计者使用.IP核包 ...
- 【FPGA】SRIO IP核系统总览以及端口介绍(二)(I/O Port 含义介绍)
上篇博文:[FPGA]SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)根据数据手册PG007,介绍到了逻辑层接口的IO口,今天想研究下,这些端口如何使 ...
- 【FPGA】SRIO IP核的三层协议的作用?
SRIO这种高速串口复杂就复杂在它的协议上,三层协议:逻辑层,传输层以及物理层. 数据手册会说这三层协议是干什么的呢?也就是分工([FPGA]SRIO IP核系统总览以及端口介绍(一)(User In ...
- 【FPGA】SRIO IP核系统总览以及端口介绍(一)(User Interfaces 之 I/O Port)
系统总览 RapidIO标准分为三层:逻辑,传输和物理. 逻辑层定义整体协议和数据包格式. 这是端点启动和完成事务(transaction)所必需的信息. 传输层提供数据包从端点移动到端点所需的路由信 ...
- 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩
弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩 IP核:知识产权核,指某一方提供的.形式为逻辑单元的可重用模块.IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以 ...
- 【FPGA】SRIO例子程序仿真分析实践
当我们去看有关高速串行总线与并行总线相比较的优点,会发现有这么一条描述,说串行总线能实现分割式数据传输,所有的串行总线都使用包括包和分割式数据传输协议进行数据传输.串行总线有包的概念,包可以有包界定符 ...
- 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...
来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...
- 基于FPGA的以太网开发
基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...
- 基于FPGA的UART接口协议设计
一.PC终端概述 PC终端,Personal Computer 智能终端,通俗的讲,就是利用电脑GUI界面控制我们的外部硬件电路. 因此设计到了PC与外部硬件电路的通信接口.对于台式电脑.个人笔记本, ...
最新文章
- 日访问量百亿级的应用如何做缓存架构设计
- 如何提高分布式系统的可用性
- 用Excel画五线谱!
- 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片...
- shelve 序列化模块——day18
- 递归问题(代码、分析、汇编)
- 计算机网络英文面试题,计算机网络面试题整理
- Python模拟删除字符串两边的空白
- Linux下Reids的安装和使用
- devops开发运维一体化_进阶 | 中国电信系统集成公司:100% 应用 DevOps 理念,做好企业级行业应用...
- 探索webpack热更新对代码打包结果的影响(二)
- arm poky linux,opencv移植在4412和imx6(yocto 3.14.28 arm-poky-linux-gnueabi )上
- 用示波器对单片机I2C时序进行图形波形分析的试验小结
- 第十六讲:菜单 Android Menu(转)
- 【数学与算法】泰勒公式_线性化_雅各比矩阵_黑塞矩阵
- wind python接口手册_wind量化平台-用户手册(python).pdf
- oppoA37m rom固件刷机包下载 免费下载 解锁专用
- Unity Burst 用户指南
- CODEVS1296
- 《回炉重造 Java 基础》——集合(容器)