USER GUIDE / MEMORY / PSRAM / SYSTEM INTEGRATION
系统集成
适用内存类型
当前 XSY_PSRAM_CTRL 支持下列内存类型:
表 1 适用内存类型
| 生产厂家 | 内存类型 |
|---|---|
| AP Memory | APS3208K-OTx / APS3208K-OKUD |
| APS6408L-OBx / APS6408L-OBx9 /APS6408L-OBM / APS6408L-OBMx | |
| APS12808L-OBx | |
| APS128XXO-OBx9 / SCB18X 128XX0AF | |
| APS256XXN-OBRx / APS256yyN-OBx | |
| APS51208N-OBRx | |
| APS03208E-8OE9Nx | |
| Winbond | W955D8MKY |
| W956D8MBYA/ W956A8MBYAW956D8NKR | |
| W957D8NKR/ W957D6NKR/W957D8NBR | |
| W958D8NKY / W958D6NKY /W958D8NBY / W958D6NBY | |
| W959D8NFYA |
Verilog 参数/宏配置
宏定义文件中提供的 Verilog 宏需根据具体应用需求配置;带具体赋值的宏可替换默认值,注释定义行控制的宏可按需启用或禁用。
表 2 Verilog 参数/宏
| 名称 | 说明 |
|---|---|
| PSRAM_CTRL_BUS_DATA_WIDTH | AXI/AHB 总线数据位宽,有效值为 128, 64 and 32。 |
| PSRAM_CTRL_BUS_ADDR_WIDTH | AXI/AHB总线地址位宽,应大于PSRAM地址位宽。AXI/AHB地址直接映射到PSRAM地址。 |
| PSRAM_CTRL_AXI_ID_WIDTH | AXI ID 位宽。 |
| PSRAM_CTRL_OST_CMD_DEPTH | 命令缓存深度 对于AXI该参数可配。对于AHB该参数为1。 |
| PSRAM_CTRL_AXI_LEN_DEFINE | 定义AXI突发长度位宽。如果该宏被定义,AXI突发长度位宽为5,否则为4。 |
| PSRAM_CTRL_AXI_LEN_WIDTH | AXI突发长度位宽,有效值为4和5。 |
| PSRAM_DIGITAL_PHY | 定义该宏以使用内部数字物理层。 |
| DIGITAL_PHY_STAGE64DIGITAL_PHY_STAGE128DIGITAL_PHY_STAGE256 | 延迟链长度,有效长度如下:64阶、128阶和256阶。 |
| RTL_SIM | 用于RTL级仿真,不能用于门电路级仿真。 |
| PSRAM_CTRL_USE_AXI | 定义该宏以使用AXI接口。 |
| PSRAM_CTRL_USE_EXT_SRAM | 定义该宏以使用外部SRAM来存储总线接口数据,否则使用内部寄存器。 |
| DIGITAL_PHY_X16MODE | 定义该宏以使用x16模式。 |
| PSRAM_CTRL_FPGA | 用于FPGA仿真。 |
| PSRAM_CTRL_FPGA_SIM_SPEED_UP | 用于FPGA仿真。 |
| PSRAM_CTRL_A_SYNC | 1:使用ctrl_clk作为总线时钟。 0:不使用ctrl_clk作为总线时钟。 |
| PSRAM_CTRL_P_SYNC | 1:使用ctrl_clk作为APB时钟。 0:不使用ctrl_clk作为APB时钟。 |
| PSRAM_CTRL_INTR_COMB | 定义该宏以使接口中断合并为两个信号。 |
| PSRAM_CTRL_INTR_POL | 1:接口中断高有效。 0:接口中断低有效。 |
| PSRAM_CTRL_PER_IMP | 用于内部设置,必须用于AXI接口。 |
| PSRAM_CTRL_TOKEN_WIDTH | 用于内部命令执行。 |
| PSRAM_CTRL_DUAL_X8 | 用于双x8模式。 |
| PSRAM_CTRL_AHB_HLEN_INCR_USE | 用于AHB附带信号hlen_incr. |
| PSRAM_CTRL_AHB_RAM_USE_MAX | AHB外部SRAM使用,必须用于AHB外部SRAM。 |
| PSRAM_CTRL_CMD_FIFO_DEPTH | 内部AHB从机FIFO深度。 |
| PSRAM_CTRL_AHB_RAM_DEPTH | AHB外部SRAM深度。 |
| PSRAM_AP3_64MB | 未使用,不要开启。 |
| DPHY_CLK_800_SRC | 未使用,不要开启。 |
| PSRAM_CTRL_FPGA_DEBUG | 未使用,不要开启。 |
| USE_CNT_DIV | 未使用,不要开启。 |
| HIGH_SPEED_PSRAM | 未使用,不要开启。 |
| PSRAM_CTRL_AXI_REG_OUT | 未使用,不要开启。 |
信号描述
本节详述了控制器所有可能的 I/O 信号,按功能组别划分如下:
- APB 接口信号
- AHB 接口信号
- AXI 接口信号
- PSRAM 控制器接口信号
- 外部 SRAM 接口信号
- 中断接口信号
- 扫描接口信号
信号命名遵循以下约定规则:
- "W" 表示总线地址位宽 - 对应参数 "PSRAM_CTRL_BUS_ADDR_WIDTH"
- "D" 表示总线数据位宽 - 对应参数 "PSRAM_CTRL_BUS_DATA_WIDTH"
- "B" 表示 AXI ID 标识位宽 - 对应参数 "PSRAM_CTRL_AXI_ID_WIDTH"
- "L" 表示 AXI 突发传输长度位宽 - 对应参数 "PSRAM_CTRL_AXI_LEN_WIDTH"
- "RW" 表示 AXI 接口使用的外部 SRAM 地址位宽
- "RD" 表示 AXI 接口使用的外部 SRAM 数据位宽
- "ARW" 表示 AHB 接口使用的外部 SRAM 地址位宽
APB 接口信号
表 3 APB 接口信号
| 信号名称 | I/O | 说明 | 备注 |
|---|---|---|---|
| pclk | I | APB时钟 | |
| prst_n | I | APB复位 | 低有效 |
| psel | I | APB选择 | |
| penable | I | APB使能 | |
| pwrite | I | APB数据传输方向 | 0:读;1:写 |
| paddr[31:0] | I | APB地址 | |
| pwdata[31:0] | I | APB写数据 | |
| prdata[31:0] | O | APB 读数据 | |
| pready | O | APB从设备就绪 |
AHB 接口信号
表 4 AHB 接口信号
| 信号名称 | I/O | 说明 | 备注 |
|---|---|---|---|
| hclk | I | AHB时钟 | |
| hresetn | I | AHB复位 | 低有效 |
| haddr[W-1:0] | I | AHB地址 | |
| htrans[1:0] | I | AHB传输类型 | |
| hwrite | I | AHB传输方向 | 0:读;1:写 |
| hsize[2:0] | I | AHB传输尺寸 | |
| hburst[2:0] | I | AHB突发类型 | |
| hwdata[D-1:0] | I | AHB写数据 | |
| hsel | I | AHB选择 | |
| hprot[3:0] | I | AHB保护控制 | 未使用 |
| hlock | I | AHB 锁类型 | 未使用 |
| hmaster[3:0] | I | AHB 主机标识 | 未使用 |
| hmasterlock | I | AHB 锁定序列 | 未使用 |
| hrdata[D-1:0] | O | AHB 读数据 | |
| hready | O | AHB 就绪 | |
| hresp[1:0] | O | AHB 传输响应 | |
| hlen_incr | I | AHB附带信号 | 仅用于自定义AHB INCR功能 |
AXI 接口信号
表 5 AXI 接口信号
| 信号名称 | I/O | 说明 | 备注 |
|---|---|---|---|
| axi_clk | I | AXI时钟 | |
| axi_rst_n | I | AXI 复位 | 低有效 |
| awid[B-1:0] | I | AXI 写地址ID | |
| awaddr[31:0] | I | AXI 写地址 | |
| awlen[L-1:0] | I | AXI 写突发长度 | |
| awsize[2:0] | I | AXI 写突发尺寸 | |
| awburst[1:0] | I | AXI 写突发类型 | |
| awlock[1:0] | I | AXI 写锁定类型 | 未使用 |
| awcache[3:0] | I | AXI 写缓存类型 | 未使用 |
| awprot[2:0] | I | AXI 写保护类型 | 未使用 |
| awvalid | I | AXI 写地址有效 | |
| awready | O | AXI 写地址就绪 | |
| wid[B-1:0] | I | AXI 写ID标签 | |
| wdata[D-1:0] | I | AXI 写数据 | |
| wstrb[D/8-1:0] | I | AXI 写选通 | |
| wlast | I | AXI 写结束 | |
| wvalid | I | AXI 写有效 | |
| wready | O | AXI 写就绪 | |
| bid[B-1:0] | O | AXI 响应 ID | |
| bresp[1:0] | O | AXI 写响应 | |
| bvalid | O | AXI 写响应有效 | |
| bready | I | AXI 响应就绪 | |
| arid[B-1:0] | I | AXI 读地址 ID | |
| araddr[31:0] | I | AXI 读地址 | |
| arlen[L-1:0] | I | AXI 读突发长度 | |
| arsize[2:0] | I | AXI 读突发尺寸 | |
| arburst[1:0] | I | AXI 读突发类型 | |
| arlock[1:0] | I | AXI 读锁定类型 | 未使用 |
| arcache[3:0] | I | AXI 读缓存类型 | 未使用 |
| arprot[2:0] | I | AXI 读保护类型 | 未使用 |
| arvalid | I | AXI 读地址有效 | |
| arready | O | AXI 读地址就绪 | |
| rid[B-1:0] | O | AXI 读ID标签 | |
| rdata[D-1:0] | O | AXI 读数据 | |
| rresp[1:0] | O | AXI 读响应 | |
| rlast | O | AXI 读结束 | |
| rvalid | O | AXI 读有效 |
PSRAM 控制器接口信号
表 6 PSRAM 控制器接口信号
| 信号名称 | I/O | 说明 | 备注 |
|---|---|---|---|
| ctrl_clk | I | 主时钟 | |
| ctrl_rst_n | I | 复位 | 低有效 |
| dqs_i_0 | I | DQS0 , 来 自 PSRAM 的 输 入 , dq_i[7:0]的数据选通信号,连接到 DQS0引脚 | |
| dqs_i_1 | I | 来自PSRAM的输入,dq_i[15:8]的数 据选通信号,连接到DQS1引脚 | 仅用于x16模式 |
| dq_i[15:0] | I | 从PSRAM读取的数据,dqi[0]连接到 DQ0引脚,dqi[1]连接到DQ1引脚, 依此类推 | dq_i[15:8]仅用于x16模式 |
| ck_o | O | 时钟输出到 PSRAM,连接到 CK 引 脚 | |
| ck_n_o | O | cko 的反相信号,连接到 CKN 引脚 | 不用于APS6408L/APS12808L/ APS128XXO/APS256XXN/APS51208N |
| cs_n_o | O | PSRAM 选择信号,连接到 CSN 引 脚 | 低有效 |
| dq_o[15:0] | O | 写数据到 PSRAM。dqo[0] 连接到 DQ0 引脚,dqo[1] 连接到 DQ1 引 脚,依此类推 | dq_o[15:8]仅用于x16模式 |
| dm_o[1:0] | O | 数据掩码。输出到 PSRAM,连接到 DM 引脚 | 仅用于APS3208K |
| dm_oe | O | DM 引脚输出使能,连接到 DM 引脚 | 仅用于APS3208K |
| dqs_o[1:0] | O | DQS 输出到 PSRAM dqso[0] 连 接 到 DQS0 引 脚 , dqso[1] 连接到 DQS1 引脚。 | dqs_o[1]仅用于x16模式 |
| dqs_oe | O | DQS 引脚输出使能,连接到 DQS0 和 DQS1 引脚 | |
| dqs_adl_oe | O | DQS 额外输出使能 | 未使用 |
| dq_oe[15:0] | O | DQ 引脚输出使能。dq_oe[0] 连接到 | dq_oe[15:8] 仅用于x16模式 |
| DQ0 引脚,dq_oe[1] 连接到 DQ1 引脚,以此类推 | |||
| ck_adl_oe | O | CK 额外输出使能 | 未使用 |
| cs_n_adl_oe | O | CS_N 额外输出使能 | 未使用 |
| reset_o | O | 连接到 PSRAM 复位引脚 | 如果PSRAM没有复位引脚则不使用 |
外部 SRAM 接口信号
如果启用「PSRAM_CTRL_USE_EXT_SRAM」,则外部 SRAM 接口信号有效。注意:对于 AXI 使用,外部 SRAM 位于 ctrl_clk 域,而对于 AHB 使用,位于 hclk 域。
表 7 外部 SRAM 需求
| 类型 | 宽度 | 深度 |
|---|---|---|
| 写SRAM | AXI:36 AHB: PSRAM_CTRL_BUS_DATA_WIDTH+1 | AXI: (PSRAM_CTRL_BUS_DATA_WIDTH/4)* (2^PSRAM_CTRL_AXI_LEN_WIDTH) AHB:PSRAM_CTRL_AHB_RAM_DEPTH |
| 读 SRAM | AXI: PSRAM_CTRL_BUS_DATA_WIDTH AHB:notused | AXI: (2^PSRAM_CTRL_AXI_LEN_WIDTH)*8 AHB:notused |
表 8 外部 SRAM 接口信号
| 信号名称 | I/O | 说明 |
|---|---|---|
| SRAM forAXI | ||
| wdata_sram_wr_en | O | 写数据SRAM写使能 |
| wdata_sram_rd_en | O | 写数据SRAM读使能 |
| wdata_sram_wr_addr[RW-1:0] | O | 写数据SRAM写地址 |
| wdata_sram_rd_addr[RW-1:0] | O | 写数据SRAM读地址 |
| wdata_sram_wdata[RD-1:0] | O | 写数据SRAM写数据 |
| wdata_sram_rdata[RD-1:0] | I | 写数据SRAM读数据 |
| rdata_sram_wr_en | O | 读数据SRAM写使能 |
| rdata_sram_rd_en | O | 读数据SRAM读使能 |
| rdata_sram_wr_addr[RW-1:0] | O | 读数据SRAM写地址 |
| rdata_sram_rd_addr[RW-1:0] | O | 读数据SRAM读地址 |
| rdata_sram_wdata[D-1:0] | O | 读数据SRAM写数据 |
| rdata_sram_rdata[D-1:0] | I | 读数据SRAM读数据 |
| SRAM forAHB | ||
| data_sram_wr_en | O | SRAM写使能 |
| data_sram_rd_en | O | SRAM读使能 |
| data_sram_wr_addr[ARW-1:0] | O | SRAM写地址 |
| data_sram_rd_addr[ARW-1:0] | O | SRAM读地址 |
| data_sram_wdata[36-1:0] | O | SRAM写数据 |
| data_sram_rdata[36-1:0] | I | SRAM读数据 |
中断接口信号
表 9 中断接口信号
| 信号名称 | I/O | 说明 |
|---|---|---|
| 合并中断 | ||
| psram_ctrl_normal_irq | O | 正常中断 (psram_ctrl_ctrl_init_intr 或 psram_ctrl_memory_init_intr 或 psram_ctrl_phy_init_intr) |
| psram_ctrl_abnormal_irq | O | 异常中断 (psram_ctrl_memory_read_timeout_intr 或 psram_ctrl_mr_read_illegal_intr) |
| 独立中断 | ||
| psram_ctrl_memory_read_timeout_intr | O | 内存阵列读超时 |
| psram_ctrl_mr_read_illegal_intr | O | 内存模式寄存器读非法 |
| psram_ctrl_bus_read_done_intr | O | 总线读完成(目前不使用) |
| psram_ctrl_bus_write_done_intr | O | 总线写完成(目前不使用) |
| psram_ctrl_ctrl_init_intr | O | 控制器初始化完成 |
| psram_ctrl_memory_init_intr | O | 内存初始化完成 |
| psram_ctrl_phy_init_intr | O | PHY初始化完成 |
扫描接口信号
表 10 扫描接口信号
| 信号名称 | I/O | 说明 |
|---|---|---|
| scan_mode | I | 扫描模式 |
| scan_enable | I | 扫描使能 |
| scan_en_cg | I | 扫描使能时钟门控 |