xilinx vivado verilog srio源代码工程,包含维护包、读写和门铃等功能...
xilinx vivado verilog srio源代码工程,包含维护包、读写和门铃等功能,顶层封装为fifo,操作简单,简单修改即可应用到实际工程中,附含srio使用说明文档和license

作者: 资深软件开发工程师 & 技术文档作家

日期: 2025-10-22

xilinx vivado verilog srio源代码工程,包含维护包、读写和门铃等功能,顶层封装为fifo,操作简单,简单修改即可应用到实际工程中,附含srio使用说明文档和license

版本: v1.0

关键词: SRIO, RapidIO, FPGA, Verilog, CBB, 高速串行通信, FIFO, 数据包传输
一、概述
SRIO CBB(Serial RapidIO Common Building Block)是一个用于 FPGA 的高速串行通信模块,基于 Xilinx 的 sriov56 IP 核开发,实现了 Serial RapidIO 协议的用户侧封装。该模块提供了统一的数据收发接口,支持门铃(Doorbell)、数据写(NWRITE、NWRITE_R、SWRITE)等多种传输模式,适用于高性能嵌入式系统中 FPGA 与 DSP、PowerPC、其他 FPGA 之间的数据通信。
二、设计目标
- 封装
sriov56IP 核,简化用户接口 - 支持多种 RapidIO 数据包格式:Doorbell、NWRITE、NWRITE_R、SWRITE
- 提供基于 FIFO 的数据通道,支持异步时钟域
- 支持流控、状态反馈、错误检测
- 提供仿真与综合参考设计,便于快速集成
三、模块结构
SRIO CBB 的整体架构如下图所示:
+------------------+
| App Logic |
| (User FPGA Code) |
+--------+---------+
|
v
+------------------+
| SRIO CBB Core |
| - SRIO_SEG |
| - SRIO_TXP |
| - SRIO_RXP |
| - SRIO_TCFIFO |
| - SRIO_TXFIFO |
+--------+---------+
|
v
+------------------+
| srio_v5_6 IP |
| (Xilinx Core) |
+------------------+
3.1 子模块说明
| 模块名 | 功能描述 |
|---|---|
| SRIO_SEG | 数据包分段与协议控制字生成 |
| SRIO_TXP | 用户数据 → LocalLink → SRIO IP |
| SRIO_RXP | SRIO IP → LocalLink → 用户数据 |
| SRIO_TCFIFO | 控制字缓存(72位) |
| SRIO_TXFIFO | 数据缓存(64位) |
| SRIO_RXFIFO | 接收数据缓存(64位) |
四、接口定义
4.1 用户侧信号(App Logic)
| 信号名 | 方向 | 位宽 | 描述 |
|---|---|---|---|
user_synclk |
I | 1 | 用户逻辑时钟 |
user_synrst |
I | 1 | 用户逻辑复位 |
sriosetiden |
I | 1 | 设置 SRIO 设备 ID 使能 |
sriosetidnum |
I | 8 | 设置 SRIO 设备 ID |
sriotcfifowr |
I | 1 | 控制字 FIFO 写使能 |
sriotcfifowdata |
I | 72 | 控制字数据 |
sriotcfifoafull |
O | 1 | 控制字 FIFO 将满标志 |
sriotxfifowr |
I | 1 | 数据 FIFO 写使能 |
sriotxfifowdata |
I | 64 | 数据 |
sriotxfifoafull |
O | 1 | 数据 FIFO 将满标志 |
sriorxfifowr |
O | 1 | 接收 FIFO 写使能 |
sriorxfifowdata |
O | 64 | 接收数据 |
sriorxfifowaddr |
O | 32 | 接收数据地址 |
srio_status |
O | 32 | 状态寄存器 |
五、协议格式说明
5.1 控制字格式(TCFIFO)
控制字为 72 位,结构如下:
| 位段 | 含义 |
|---|---|
| [71:68] | 保留 |
| [67:36] | 目标地址(Dest Addr) |
| [35:28] | 目标设备 ID(Dest ID) |
| [27:12] | 数据长度(Length)或门铃信息(Doorbell Info) |
| [11:08] | 流控标志 |
| [07:00] | 包类型(0xA0: Doorbell, 0x54: NWRITE, 0x55: NWRITE_R, 0x60: SWRITE) |
5.2 数据格式(TXFIFO)
- 每个数据为 64 位(8 字节)
- 支持整包传输,长度由控制字指定
- 支持字节使能(Byte Enable)与地址对齐
六、传输流程
6.1 发送流程(以 NWRITE 为例)
- 用户设置目标地址、目标 ID、数据长度
- 构造控制字,写入
sriotcfifowdata - 拉高
sriotcfifowr,写入控制字 FIFO - 写入数据到
sriotxfifowdata,拉高sriotxfifowr - CBB 模块将数据封装为 RapidIO 包,通过 SRIO IP 发出
6.2 接收流程
- SRIO IP 接收到数据包
- CBB 模块解析数据包,提取数据与地址
- 数据写入
sriorxfifowdata,地址写入sriorxfifowaddr - 拉高
sriorxfifowr,通知用户读取
七、使用注意事项
- ID 设置:必须在
linktrdy有效前设置sriosetid_num - FIFO 空满:写入前需检查
afull标志,避免溢出 - 数据对齐:数据长度必须为 8 字节对齐(64 位)
- 时钟域:TCFIFO/TXFIFO 使用
usersynclk,RXFIFO 使用sriosynclk - 仿真支持:提供完整仿真脚本与测试用例,支持 ModelSim、Debussy
八、仿真与验证
8.1 仿真结构
Testbench
├── ep0 (SRIO CBB Instance)
├── ep1 (SRIO CBB Instance)
├── Generator & Checker
└── Transceiver Model
8.2 仿真流程
- 运行
collect_files.bat收集文件 - 执行
simulate.bat启动仿真 - 使用
start_debussy.bat打开波形查看器 - 测试用例包括:Doorbell、NWRITE、NWRITE_R、SWRITE、流模式
九、综合与实现
- 支持 Virtex-5、Virtex-6 系列 FPGA
- 使用 ISE 14.1 进行综合
- 提供完整 UCF 约束文件与时钟约束(TimeSpec)
- 支持 GTX 2.5Gbps、3.125Gbps、5.0Gbps 配置
十、总结
SRIO CBB 是一个高度封装、功能完整、接口友好的 RapidIO 通信模块,适用于 FPGA 与多处理器系统之间的高速数据交换。其模块化的设计、详尽的仿真支持、丰富的传输模式,使其成为嵌入式高速通信领域的理想选择。
附录
- 源码路径:
Src/ - 仿真路径:
Sim/ - 测试用例:
Test/test01_001/ - 文档路径:
Doc/ - IP 核版本:
sriov56,FIFO Generator 8.5
如需进一步定制(如添加 DMA、AXI 接口、中断支持),可在此基础上扩展开发。欢迎技术交流。

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)