跳转至

RTL 模块架构文档

由 SvDoc 自动生成

模块数:5

1. 项目概述

  • 文件数: 4
  • 模块数: 5
  • 模块类型: interface: 1, module: 4

2. 系统架构

2.1 顶层模块

  • axi_bus_if - AXI4 接口定义
  • axi_master_tb - 测试 AXI4 Master 接口的突发传输和地址对齐功能
  • test_class_module - Class 功能测试模块
  • test_svdoc_features - SvDoc 功能测试模块

2.2 模块依赖关系图

flowchart TD
    axi_bus_if["axi\_bus\_if"]:::topLevel
    axi_master_tb["axi\_master\_tb"]:::topLevel
    test_class_module["test\_class\_module"]:::topLevel
    test_svdoc_features["test\_svdoc\_features"]:::topLevel
    axi_master_tb --> axi_master

    classDef topLevel fill:#4CAF50,stroke:#2E7D32,color:#fff
    classDef default fill:#2196F3,stroke:#1565C0,color:#fff

2.3 依赖统计

模块 实例化子模块数 子模块列表
axi_master_tb 1 axi_master

3. 模块列表

序号 模块名 类型 文件 端口数 参数数 概要
1 axi_bus_if interface /home/admin/.openclaw/workspace/chip-project/rtl/test_svdoc_features.sv 2 3 AXI4 接口定义
2 axi_master module /home/admin/.openclaw/workspace/chip-project/rtl/axi_master.v 32 4 AXI4 Master Interface - Full-f...
3 axi_master_tb module /home/admin/.openclaw/workspace/chip-project/tb/axi_master_tb.v 0 4 测试 AXI4 Master 接口的突发传输和地址对齐功能
4 test_class_module module /home/admin/.openclaw/workspace/chip-project/rtl/test_class.sv 0 0 Class 功能测试模块
5 test_svdoc_features module /home/admin/.openclaw/workspace/chip-project/rtl/test_svdoc_features.sv 0 0 SvDoc 功能测试模块

4. 模块架构详情

axi_bus_if

AXI4 接口定义

包含写地址、写数据、写响应、读地址、读数据通道

内部信号:

名称 类型 位宽 说明
aw_addr logic [ADDR_WIDTH-1:0]
aw_id logic [ID_WIDTH-1:0]
aw_len logic [7:0]
aw_size logic [2:0]
aw_burst logic [1:0]
aw_valid logic -
aw_ready logic -
w_data logic [DATA_WIDTH-1:0]
w_strb logic [DATA_WIDTH/8-1:0]
w_last logic -
w_valid logic -
w_ready logic -
b_id logic [ID_WIDTH-1:0]
b_resp logic [1:0]
b_valid logic -
b_ready logic -
ar_addr logic [ADDR_WIDTH-1:0]
ar_id logic [ID_WIDTH-1:0]
ar_len logic [7:0]
ar_size logic [2:0]
ar_burst logic [1:0]
ar_valid logic -
ar_ready logic -
r_data logic [DATA_WIDTH-1:0]
r_id logic [ID_WIDTH-1:0]
r_resp logic [1:0]
r_last logic -
r_valid logic -
r_ready logic -

axi_master

AXI4 Master Interface - Full-featured AXI4 master controller

本模块实现完整的 AXI4 master 接口,支持以下特性: - 写/读事务支持 - 可配置长度的突发传输(1-16拍) - 地址对齐和字节选通生成 - 基于状态机的控制逻辑 - 可配置基地址用于动态事务启动

架构设计

模块使用 6 状态 FSM 管理 AXI4 事务: - IDLE: 等待配置使能 - AW: 写地址通道握手 - W: 写数据通道握手 - B: 写响应通道握手 - AR: 读地址通道握手 - R: 读数据通道握手

状态机转换图

stateDiagram-v2
[*] --> IDLE : 复位释放
IDLE --> AW_STATE : cfg_en=1
AW_STATE --> W_STATE : aw_valid && aw_ready
W_STATE --> B_STATE : w_valid && w_ready && w_last
B_STATE --> DONE_STATE : b_valid && b_ready
DONE_STATE --> IDLE : 事务完成
IDLE --> [*] : 系统关闭

写事务时序图

sequenceDiagram
participant M as AXI Master
participant S as AXI Slave
Note over M,S: 写地址通道
M->>S: aw_addr, aw_len, aw_size, aw_burst
M->>S: aw_valid=1
S-->>M: aw_ready=1
Note over M,S: 写数据通道
M->>S: w_data[0], w_strb, w_last=0
M->>S: w_valid=1
S-->>M: w_ready=1
M->>S: w_data[1], w_strb, w_last=0
M->>S: w_valid=1
S-->>M: w_ready=1
M->>S: w_data[N], w_strb, w_last=1
M->>S: w_valid=1
S-->>M: w_ready=1
Note over M,S: 写响应通道
M->>S: b_ready=1
S-->>M: b_valid=1, b_resp=OKAY, b_id
Note over M: cfg_done=1

读事务时序图

sequenceDiagram
participant M as AXI Master
participant S as AXI Slave
Note over M,S: 读地址通道
M->>S: ar_addr, ar_len, ar_size, ar_burst
M->>S: ar_valid=1
S-->>M: ar_ready=1
Note over M,S: 读数据通道
S-->>M: r_data[0], r_id, r_last=0
S-->>M: r_valid=1
M->>S: r_ready=1
S-->>M: r_data[1], r_id, r_last=0
S-->>M: r_valid=1
M->>S: r_ready=1
S-->>M: r_data[N], r_id, r_last=1
S-->>M: r_valid=1
M->>S: r_ready=1
Note over M: cfg_done=1

端口分组

端口组 信号 方向 描述
时钟/复位 clk, rst_n input 系统时钟和异步复位
写地址 aw_addr, aw_id, aw_len, aw_size, aw_burst, aw_valid, aw_ready output/input AXI4 写地址通道
写数据 w_data, w_strb, w_last, w_valid, w_ready output/input AXI4 写数据通道
写响应 b_id, b_resp, b_valid, b_ready input/output AXI4 写响应通道
读地址 ar_addr, ar_id, ar_len, ar_size, ar_burst, ar_valid, ar_ready output/input AXI4 读地址通道
读数据 r_data, r_id, r_resp, r_last, r_valid, r_ready input/output AXI4 读数据通道
配置 cfg_base_addr, cfg_en, cfg_done input/output 配置接口

使用示例

axi_master #(
.DATA_WIDTH(64),
.ADDR_WIDTH(32),
.ID_WIDTH(4),
.BURST_LEN(16)
) u_axi_master (
.clk(clk),
.rst_n(rst_n),
// ... 连接 AXI 信号
.cfg_base_addr(32'h1000_0000),
.cfg_en(1'b1),
.cfg_done(cfg_done)
);

📝 注意: 模块支持写和读事务,但按顺序处理。写事务优先级高于读事务。

⚠️ 警告: 确保突发长度不超过配置的 BURST_LEN 参数,以避免数据损坏。

@see AXI4 Specification, ARM IHI 0022E @see axi_master_tb.v 测试平台和验证环境

内部信号:

名称 类型 位宽 说明
current_state reg [2:0] AXI 事务状态机的当前状态 [2:0]
next_state reg [2:0] AXI 事务状态机的下一状态 [2:0]
addr_reg reg [ADDR_WIDTH-1:0] 地址寄存器,存储事务地址 [ADDR_WIDTH-1:0]
data_reg reg [DATA_WIDTH-1:0] 数据寄存器,存储写数据 [DATA_WIDTH-1:0]
burst_count reg [7:0] 突发计数器:跟踪已传输的拍数 [7:0]
transfer_active reg - 传输活动标志:指示正在进行的事务

axi_master_tb

测试 AXI4 Master 接口的突发传输和地址对齐功能

子模块实例化:

实例名 模块名
dut axi_master

内部信号:

名称 类型 位宽 说明
clk reg -
rst_n reg -
cfg_base_addr reg [ADDR_WIDTH-1:0]
cfg_en reg -
cfg_done wire -
aw_addr wire [ADDR_WIDTH-1:0]
aw_id wire [ID_WIDTH-1:0]
aw_len wire [7:0]
w_data wire [DATA_WIDTH-1:0]
w_strb wire [DATA_WIDTH/8-1:0]
w_last wire -
aw_valid wire -
aw_ready wire -
w_valid wire -
w_ready wire -
b_id wire [ID_WIDTH-1:0]
b_resp wire [1:0]
b_valid wire -
b_ready wire -

test_class_module

Class 功能测试模块

测试 axi_driver 类的各种功能

内部信号:

名称 类型 位宽 说明
clk logic -
rst_n logic -

test_svdoc_features

SvDoc 功能测试模块

本模块包含 function 和 task 定义,用于测试 SvDoc 解析

内部信号:

名称 类型 位宽 说明
clk logic -
rst_n logic -

5. 接口汇总

axi_bus_if

信号名 方向 类型 位宽 描述
clk input - - 系统时钟
rst_n input - - 异步复位

axi_master

信号名 方向 类型 位宽 描述
clk input wire - 系统时钟输入,上升沿有效
rst_n input wire - 低电平有效的异步复位
aw_addr output wire [ADDR_WIDTH-1:0] 写地址:突发传输中第一拍的地址 [ADDR_WIDTH-1:0]
aw_id output wire [ID_WIDTH-1:0] 写 ID:写地址通道的事务标识符 [ID_WIDTH-1:0]
aw_len output wire [7:0] 写突发长度:拍数减 1(1-16 拍对应 0-15)[7:0]
aw_size output wire [2:0] 写突发大小:每拍字节数(3'b011 = 8 字节)[2:0]
aw_burst output wire [1:0] 写突发类型:2'b01 = INCR(递增地址)[1:0]
aw_valid output wire - 写地址有效:当地址和控制信号有效时断言
aw_ready input wire - 写地址就绪:从机准备好接收地址时断言
w_data output wire [DATA_WIDTH-1:0] 写数据:要写入内存的数据 [DATA_WIDTH-1:0]
w_strb output wire [DATA_WIDTH/8-1:0] 写选通:指示哪些字节通道包含有效数据 [DATA_WIDTH/8-1:0]
w_last output wire - 写最后:在写突发最后一拍时断言
w_valid output wire - 写数据有效:当写数据有效时断言
w_ready input wire - 写数据就绪:从机准备好接收数据时断言
b_id input wire [ID_WIDTH-1:0] 响应 ID:与对应写地址的 ID 匹配 [ID_WIDTH-1:0]
b_valid input wire - 响应有效:当写响应有效时断言
b_ready output wire - 响应就绪:主机准备好接收响应时断言
ar_addr output wire [ADDR_WIDTH-1:0] 读地址:读突发中第一拍的地址 [ADDR_WIDTH-1:0]
ar_id output wire [ID_WIDTH-1:0] 读 ID:读地址通道的事务标识符 [ID_WIDTH-1:0]
ar_len output wire [7:0] 读突发长度:拍数减 1 [7:0]
ar_size output wire [2:0] 读突发大小:每拍字节数 [2:0]
ar_burst output wire [1:0] 读突发类型:2'b01 = INCR(递增地址)[1:0]
ar_valid output wire - 读地址有效:当读地址和控制信号有效时断言
ar_ready input wire - 读地址就绪:从机准备好接收地址时断言
r_data input wire [DATA_WIDTH-1:0] 读数据:从内存读取的数据 [DATA_WIDTH-1:0]
r_id input wire [ID_WIDTH-1:0] 读 ID:与对应读地址的 ID 匹配 [ID_WIDTH-1:0]
r_last input wire - 读最后:在读突发最后一拍时断言
r_valid input wire - 读数据有效:当读数据有效时断言
r_ready output wire - 读数据就绪:主机准备好接收数据时断言
cfg_base_addr input wire [ADDR_WIDTH-1:0] 配置基地址:事务的起始地址 [ADDR_WIDTH-1:0]
cfg_en input wire - 配置使能:启动新事务
cfg_done output wire - 配置完成:事务成功完成

6. 参数汇总

axi_bus_if

参数 类型 默认值 说明
DATA_WIDTH parameter 64 数据宽度
ADDR_WIDTH parameter 32 地址宽度
ID_WIDTH parameter 4 ID 宽度

axi_master

参数 类型 默认值 说明
DATA_WIDTH parameter 64 数据总线宽度(位)。必须是 2 的幂(32/64/128/256)
ADDR_WIDTH parameter 32 地址总线宽度(位)。通常为 32 或 64
ID_WIDTH parameter 4 ID 信号宽度,用于事务标识
BURST_LEN parameter 16 最大突发长度(每事务的拍数)

axi_master_tb

参数 类型 默认值 说明
CLK_PERIOD localparam 10
DATA_WIDTH localparam 64
ADDR_WIDTH localparam 32
ID_WIDTH localparam 4

7. 状态机汇总

axi_master

状态定义

状态 编码 描述
IDLE 00 IDLE 状态
ready 11 ready 状态
DONE 101 DONE 状态
done 1 done 状态
Current - AXI 事务状态机的当前状态 [2:0]
Next - AXI 事务状态机的下一状态 [2:0]

状态转移图

stateDiagram-v2
    IDLE --> ready: next
    ready --> DONE: next
    DONE --> done: next
    done --> Current: next
    Current --> Next: next
    Next --> IDLE: reset

📄 RTL 模块架构文档由 SvDoc 自动生成