SRIO IP v4.1 自定义事务仿真:3种典型事务(NWRITE/NWRITE_R/NREAD)的Verilog实现与波形解析

FPGASRIOVerilog高速互连
于 2026-07-07 10:04:04 修改
·本内容遵循CC 4.0 BY-SA版权协议

SRIO IP v4.1 自定义事务仿真:3种典型事务的Verilog实现与深度解析

在FPGA高速互连领域,Serial RapidIO(SRIO)凭借其低延迟、高带宽的特性成为处理器间通信的首选方案。本文将深入探讨Xilinx SRIO IP核v4.1版本中NWRITE、NWRITE_R和NREAD三种核心事务的Verilog实现细节,通过完整的代码示例和波形分析,揭示事务传输的全链路机制。

1. SRIO IP核架构与接口设计

SRIO IP核采用分层架构设计,包含物理层(PHY)、传输层(Transport)和逻辑层(LOGIC)。用户接口采用AXI4-Stream协议,支持HELLO(Header-Encoded Logical Layer Optimized)格式包封装,显著简化了用户逻辑设计复杂度。

关键接口信号组

VERILOG
// 请求接口(Initiator)
input wire ireq_clk, // 请求时钟
input wire ireq_rst, // 请求复位
output wire ireq_tready, // 目标设备准备信号
input wire ireq_tvalid, // 数据有效信号
input wire [63:0] ireq_tdata, // 传输数据
input wire ireq_tlast, // 包结束标志
input wire [31:0] ireq_tuser // 用户侧信息(Source/Dest ID)
 
// 响应接口(Target)
input wire tresp_clk, // 响应时钟
input wire tresp_rst, // 响应复位
output wire tresp_tready, // 响应准备信号
input wire tresp_tvalid, // 响应有效信号
input wire [63:0] tresp_tdata, // 响应数据
input wire tresp_tlast, // 响应结束标志

时钟域关系表

时钟信号 频率计算式 典型值(6.25Gbps x4)
gt_clk line_rate/20 312.5MHz
phy_clk (gt_clk*link_width)/4 312.5MHz
log_clk phy_clk 312.5MHz
cfg_clk phy_clk 312.5MHz

注意:当使用Unified Clock选项时,log_clk与phy_clk需保持同步,可减少跨时钟域带来的时序问题

2. HELLO格式包头解析与构造

HELLO格式将标准SRIO包头的关键字段重新组织为64位对齐结构,用户只需关注以下核心字段:

NWRITE包头结构

VERILOG
{12'h000, 4'b0101, 4'b0100, 36'h0000_1000, 8'h1F}
// 分解说明:
// [63:52] - Reserved (12'b0)
// [51:48] - Ftype (4'b0101: NWRITE)
// [47:44] - Ttype (4'b0100: 单包事务)
// [43:8] - 目标地址(36位)
// [7:0] - 数据长度(size+1)

关键字段对照表

字段位域 名称 NWRITE NWRITE_R NREAD
[51:48] Ftype 4'b0101 4'b0101 4'b0010
[47:44] Ttype 4'b0100 4'b0101 4'b0100
[43:8] Address 目标地址 目标地址 源地址
[7:0] Size 数据量-1 数据量-1 请求数据量-1

3. 事务状态机设计与实现

3.1 NWRITE事务实现

NWRITE事务是最基础的写操作,不需要目标设备返回响应。以下为完整的Verilog实现:

VERILOG
module nwrite_transaction (
input wire clk,
input wire rst_n,
input wire [35:0] target_addr,
input wire [7:0] data_size,
input wire start,
output reg busy,
// SRIO接口
output reg ireq_tvalid,
output reg [63:0] ireq_tdata,
output reg ireq_tlast,
input wire ireq_tready
);
 
//
最低 0.47元/天 开通会员,解锁全文
left
成为会员后, 你将解锁
right
benefits 下载资源随意下
benefits 优质VIP博文免费学
benefits 优质文库回答免费看
benefits 付费资源9折优惠
SRIO】6、Xilinx RapidIO核仿真与包时序分析
本文深入剖析Xilinx RapidIO核的仿真与包时序分析,涵盖软件硬件平台介绍,例子工程结构,SRIO核原理及接口,各类事务如SWRITE、NWRITE_RNREAD的传输过程,以及维护事务、DOORBELLMESSAGE事务解析。同时,提供了在ZC706评估板上进行SRIO核回环测试的方法。
李锐博恩
13193
Quartus ii 与 Verilog入门教程(1)——Verilog实现8位计数器
本文介绍如何使用Quartus II与Verilog设计一个8位计数器,并通过Modelsim进行仿真验证。计数器在时钟的上升沿进行加1操作,复位信号有效时清零。文章详细描述了工程建立、代码编写、编译和仿真的全过程。
FPGA探索者
38180
XILINX SRIO IP核详解、FPGA实现仿真全流程(Serial RapidIO Gen2 Endpoint v4.1
本文深入解析Xilinx Serial RapidIO Gen2 Endpoint IP核的工作原理,涵盖四种接口模式、时钟架构、事务类型及时序要求。重点分析Initiator/TargetCondensed I/O模式差异,结合AXI4-Stream接口和HELLO格式说明数据包处理机制,并提供仿真流程工程实践指导,适用于FPGA间及FPGA-DSP高速互连场景。
太爱学习了
1478
解决调用rom ip核时modelsim仿真波形一直为零
本文围绕调用rom ip核时modelsim仿真波形一直为零的问题展开。指出几个容易出错的点,如rom ip核名称要和顶层模块例化名称一致、需在顶层文件仿真文件中例化.inst.v文件、mif文件应放在prj工程文件里等,还给出相关问题解决思路,最后提到解决波形为零后波形仍不对的情况。
今天画板子了没
4333
【高速接口-RapidIO】6、Xilinx RapidIO核仿真与包时序分析
本文深入剖析Xilinx RapidIO核的软件硬件平台,详细介绍RapidIO核的仿真及包时序分析,涵盖链路初始化、SWRITE、NWRITE_RNWRITENREAD等多种事务类型,以及维护事务和回环测试。
weixin_30629977
1408
基于vivado实现FFT/IFFT
本文详细介绍如何使用Vivado 2018.3配置DDS IP核和FFT/IFFT IP核,通过编写Verilog程序并进行仿真,展示正交信号处理的全过程。
可乐乐yy
12727
详解AXI4-Lite接口(2)--AXI4-Lite接口IP源码仿真及分析(Slave接口)
本文详细介绍了AXI4-Lite接口的Slave IP源码,包括调用IP的过程、Slave接口源码分析以及仿真波形的展示,通过实例展示了AXI4-Lite总线和从机IP的写读事务流程,帮助读者理解AXI4-Lite接口的工作原理。
孤独的单刀
8818
详解AXI4-Full接口(3)--AXI4-Full接口IP源码仿真及分析(Master接口)
本文详细介绍了AXI4-Full Master接口IP的创建、源码分析及仿真过程,包括调用IP、Master接口源码解析仿真波形展示,重点探讨了写地址、写数据、读地址和读数据通道的时序操作。
孤独的单刀
9077
详解AXI4-Lite接口(3)--AXI4-Lite接口IP源码仿真及分析(Master接口)
本文详细分析了AXI4-Lite_Master接口的IP源码,包括模块端口、状态机实现事务流程控制和仿真波形。通过Vivado仿真展示了4个写事务4个读事务的执行过程,验证了读写数据的匹配性,证明设计的正确性。
孤独的单刀
6362
VIVADO 工具与 Verilog 语言之IP核设计之多种基本门电路的IP
该博客围绕多种基本门电路的IP核展开实验。使用Verilog HDL语言设计1 - 32位数据宽度可变的基本门电路并封装成IP核,记录实验数据、分析结果。还分享了实验心得,如封装IP核可降低工作量,以及介绍了vivado软件开发流程等信息技术知识。
@小冯@
5432
SRIO 学习记录
本文围绕基于Vivado2020.2平台和axck060板卡的SRIO开发展开。涵盖读手册了解模块、时钟和复位知识,进行IP生成示例工程学习,编写sys_rst_gen、vio等工程模块,还介绍上板时license申请设置、问题解决及ila波形抓取等内容。
无心所欲为风
2656
仿真波形反推`timescale`一个Verilog调试中的逆向思维小技巧
本文介绍一种通过仿真波形图时间刻度和信号跳变点逆向推断Verilog中`timescale`声明的方法,用于解决因时间单位精度不一致引发的仿真偏差问题。重点涵盖时间单位识别、精度验证、多精度冲突检测,并结合IP核集成时序验证等实战案例,提出自动化检查脚本、工具链适配及精度-性能权衡等高级调试策略。
算法艺术家
976
Zynq 7000 自定义ip仿真
本文基于《Zynq 7000 自定义IP实验》和《AXI4 协议分析》,探讨自定义AXI4 IP仿真测试。通过创建testbench.v进行仿真,使用axi_write和axi_read任务进行读写操作,并提供了测试代码。仿真过程旨在排除设计中的bug,确保开发质量。文中还分享了实际测试的波形图。
leon_zeng0
2677
详解AXI4-Full接口(2)--AXI4-Full接口IP源码仿真及分析(Slave接口)
本文介绍了AXI4-Full接口的从机Slave接口IP的创建过程,源码分析及仿真波形。通过调用IP、源码解析仿真结果展示,阐述了AXI4-Full接口在FPGA中的应用,重点讨论了写地址、写数据、读地址和读数据通道的握手和RAM操作。
孤独的单刀
8391
Vivado工程VCS仿真避坑大全IP库编译到Verdi波形查看的5个关键技巧
本文聚焦Vivado工程对接VCS仿真的五大关键技术难点环境脚本化迁移、SecureIP库路径配置、IP Example文件分散定位、Makefilesynopsys_sim.setup协同配置、Verdi波形与RTL同步加载,以及环境变量工具版本兼容性排查。强调可移植脚本构建、按需编译IP仿真模型、FSDB波形生成及KDB知识库启用等实践要点,助力FPGA验证工程师高效完成全流程命令行仿真
701
Xilinx RapidIO核仿真实战从初始化到SWRITE事务解析
本文详述Xilinx RapidIO IP核在FPGA上的仿真全流程,涵盖Kintex-7平台环境搭建、关键初始化信号(port_initialized/link_initialized/clk_lock)行为解析、控制符号解码方法,以及SWRITE事务的调度机制、四通道(ireq/iresp/treq/tresp)时序交互和包头字段拆解。强调波形观测、时钟配置验证及数据流端到端追踪技巧,适用于高速串行互连协议开发调试。
UI设计华斌
150
VIVADO 工具与 Verilog 语言之IP核设计
本文详细介绍了如何使用VIVADO工具和Verilog语言设计一个可配置输入端口数和数据宽度的IP核,包括实验目的、内容(设计一个8输入的门并封装为IP),以及实验步骤,从创建项目、编写代码到综合和封装IP核的过程。
@小冯@
2602
Modelsim 仿真 DDR2 IP核 测试 和自定义仿真平台搭建 IP仿真
本文介绍了使用Modelsim对DDR2 IP核进行仿真测试及搭建自定义仿真平台的方法。第一部分运行QuartusII生成的DDR2 example仿真,包括新建工程、添加IP核、执行脚本文件等步骤;第二部分搭建自己的DDR2仿真平台,需复制文件、修改脚本,最后进行仿真
愚人在思考
2796
Quartus Prime 23.1 FIFO IP 仿真避坑 3解决 ModelSim 加载失败与波形异常
本文针对Quartus Prime 23.1中FIFO IP核在ModelSim仿真时常见的'Load Failed'错误与波形异常问题,系统梳理环境配置、IP参数设置、仿真文件准备、错误排查及调试优化等关键环节。重点涵盖ModelSim库加载失败原因、路径规范、HDL语言版本匹配、仿真模型生成、Testbench编写要点及自动化仿真脚本实践,为FPGA工程师提供可复用的IP仿真解决方案。
386