跳转至

接口定义

1. 时钟接口

1.1 时钟树

时钟 频率 来源 描述
clk_cpu 500MHz PLL CPU 核心时钟
clk_axi 500MHz PLL AXI 总线时钟
clk_apb 125MHz 分频器 APB 外设时钟
clk_uart 115.2kHz 分频器 UART 波特率时钟

1.2 时钟门控

每个模块支持独立时钟门控以节省功耗。

2. 复位接口

2.1 复位类型

类型 描述
全局复位 系统上电复位
模块复位 单个模块复位
软件复位 通过寄存器触发

2.2 复位序列

  1. 全局复位 asserted
  2. PLL 锁定
  3. 释放全局复位
  4. 各模块依次初始化

3. AXI4 接口

3.1 写通道

interface axi_write #(
    parameter DATA_WIDTH = 32,
    parameter ADDR_WIDTH = 32,
    parameter ID_WIDTH   = 4
)();
    logic [ID_WIDTH-1:0]  awid;
    logic [ADDR_WIDTH-1:0] awaddr;
    logic [7:0]           awlen;
    logic [2:0]           awsize;
    logic [1:0]           awburst;
    logic                 awvalid;
    logic                 awready;
    logic [DATA_WIDTH-1:0] wdata;
    logic [DATA_WIDTH/8-1:0] wstrb;
    logic                 wlast;
    logic                 wvalid;
    logic                 wready;
    logic [ID_WIDTH-1:0]  bid;
    logic [1:0]           bresp;
    logic                 bvalid;
    logic                 bready;
endinterface

3.2 读通道

interface axi_read #(
    parameter DATA_WIDTH = 32,
    parameter ADDR_WIDTH = 32,
    parameter ID_WIDTH   = 4
)();
    logic [ID_WIDTH-1:0]  arid;
    logic [ADDR_WIDTH-1:0] araddr;
    logic [7:0]           arlen;
    logic [2:0]           arsize;
    logic [1:0]           arburst;
    logic                 arvalid;
    logic                 arready;
    logic [ID_WIDTH-1:0]  rid;
    logic [DATA_WIDTH-1:0] rdata;
    logic [1:0]           rresp;
    logic                 rlast;
    logic                 rvalid;
    logic                 rready;
endinterface

4. APB 接口

interface apb #(
    parameter ADDR_WIDTH = 32,
    parameter DATA_WIDTH = 32
)();
    logic                 pclk;
    logic                 presetn;
    logic [ADDR_WIDTH-1:0] paddr;
    logic [DATA_WIDTH-1:0] pwdata;
    logic                 psel;
    logic                 penable;
    logic                 pwrite;
    logic [DATA_WIDTH-1:0] prdata;
    logic                 pready;
    logic                 pslverr;
endinterface

5. 中断接口

1
2
3
4
5
6
7
8
interface interrupt #(
    parameter IRQ_WIDTH = 16
)();
    logic [IRQ_WIDTH-1:0] irq;      // 中断请求
    logic                 irq_ack;  // 中断应答
    logic [3:0]           irq_id;   // 中断 ID
    logic [1:0]           irq_pri;  // 中断优先级
endinterface

6. UART 接口

1
2
3
4
interface uart_if();
    logic uart_tx;    // 发送数据
    logic uart_rx;    // 接收数据
endinterface

7. GPIO 接口

1
2
3
4
5
6
7
8
interface gpio #(
    parameter WIDTH = 32
)();
    logic [WIDTH-1:0] gpio_in;      // 输入
    logic [WIDTH-1:0] gpio_out;     // 输出
    logic [WIDTH-1:0] gpio_dir;     // 方向
    logic [WIDTH-1:0] gpio_en;      // 使能
endinterface