Edit online

总线时序与配置说明

3 Mar 2025
Read time: 7 minute(s)

PBUS 模块的时钟周期,均指内部 PBUS CLK 周期。PBUS CLK 从 HCLK 时钟分频得到,通过配置 CLK_DIV 字段可以从 HCLK 进行 2/ 4/ 8 分频,从而获得灵活的时钟配置选项,来适应不同的操作需求。

PBUS 每个信号含义如下所示:

1. PBUS 信号描述

信号名称

输入/输出

信号描述

CLK

O

外部总线时钟信号被访问外设不需要时钟信号,工作在异步模式;被访问外设需要时钟信号,则工作在同步模式。

NCS

O

外设片选信号,默认低电平有效

NADV

O

总线地址有效信号,默认低电平有效。电平为低时,指示 AD[15:0] 为地址。

NWE

O

总线读写控制信号,默认低电平为写,高电平为读。

NOE

O

外设输出使能信号,默认低电平有效。有效时允许外设往 AD[15:0] 输出读数据信号。

AD[15:0]

I/O

地址/ 数据总线

此总线 16-bit 位宽,地址与数据复用,并且可传输读写双向数据可访问地址空间为 64K,映射地址为 0x1080_0000~0x1080_ffff。

Adress[15:0] 地址总线

此总线 16 bits 宽,PBUS 模式可选地址/ 数据总线或者地址 + 数据总线

可访问地址空间为 64K,映射地址为 0x10800000~0x1080FFFF

信号相位配置

并行信号传输中,信号翻转前后拆解成多个相位,并分别可配置持续长度以及高低电平

NCS 信号配置
NCS 的相位由 IDLE,PRE,PHA,POST 组成:
  • 寄存器 0x10: 配置 PRE,PHA,POST 长度
  • 寄存器 0x30: 配置 IDLE,PRE,PHA,POST 高低电平控制信号翻转,1 代表高电平,0 代表低电平


1. NCS 信号配置
NADV 信号配置
NADV 的相位由 IDLE,PRE,PHA,POST 组成:
  • 寄存器 0x14: 配置 PRE,PHA,POST 长度
  • 寄存器 0x30: 配置 IDLE,PRE,PHA,POST 高低电平控制信号翻转,1 代表高电平,0 代表低电平


2. NADV 信号配置
NWE 信号配置
NWE 的相位由 IDLE,PRE,PHA0,WAIT,PHA1 组成:
  • 寄存器 0x18: 配置 PRE,PHA0,WAIT,PHA1 长度
  • 寄存器 0x30: 配置 IDLE,PRE,PHA0,WAIT,PHA1 高低电平控制信号翻转,1 代表高电平,0 代表低电平


3. NWE 信号配置
NOE 信号配置
NOE 的相位由 IDLE,PRE,PHA0,WAIT,PHA1 组成:
  • 寄存器 0x1C: 配置 PRE,PHA0,WAIT,PHA1 长度
  • 寄存器 0x30: 配置 IDLE,PRE,PHA0,WAIT,PHA1 高低电平控制信号翻转,1 代表高电平,0 代表低电平


4. NOE信号配置
DATA 信号配置
DATA 的相位由 IDLE,PRE,PHA0,WAIT,PHA1 组成:
  • 寄存器 0x20: 配置 PRE,PHA0,WAIT,PHA1 长度


5. DATA信号配置
ADDR 信号配置
ADDR 的相位由 IDLE,PRE,PHA0 组成:
  • 寄存器 0x24: 配置 PRE,PHA0 长度


6. ADDR 信号配置

并行接口组合配置

地址/ 数据总线写时序

调整以下参数,可灵活配置具体的输出时序。地址/数据总线写时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 2,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 1,WE_PHA0 = 6,WE_WAIT = 0,WE_PHA1 = 0
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0
  • ADDR_PRE = 1,ADDR_PHA0 = 2
  • DATA_PRE = 1,DATA_PHA0 = 2


7. 地址/数据总线写时序示例

地址/ 数据总线读时序

调整以下参数,可灵活配置具体的输出时序。地址/数据总线读时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 2,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • OE_PRE = 5,OE_PHA0 = 2,OE_WAIT = 0,OE_PHA1 = 0
  • OE_IDLE_VAL = 1,OE_PRE_VAL = 1,OE_PHA0_VAL = 0
  • ADDR_PRE = 1,ADDR_PHA0 = 3


8. 地址/数据总线读时序示例

地址 + 数据总线写时序

调整以下参数,可灵活配置具体的输出时序。地址 + 数据总线写时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 2,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 1,WE_PHA0 = 6,WE_WAIT = 0,WE_PHA1 = 0
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0
  • ADDR_PRE = 1,ADDR_PHA0 = 2
  • DATA_PRE = 1,DATA_PHA0 = 2


9. 地址 + 数据总线写时序示例

地址 + 数据总线读时序

调整以下参数,可灵活配置具体的输出时序。地址+数据总线读时序示例中给出了一组参数配置示例:

  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 2,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • OE_PRE = 5,OE_PHA0 = 2,OE_WAIT = 0,OE_PHA1 = 0
  • OE_IDLE_VAL = 1,OE_PRE_VAL = 1,OE_PHA0_VAL = 0
  • ADDR_PRE = 1,ADDR_PHA0 = 3


10. 地址+数据总线读时序示例

I8080 总线写时序

调整以下参数,可灵活配置具体的输出时序。I8080 总线写时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 9,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 3,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 1,WE_PHA0 = 2,WE_WAIT = 2,WE_PHA1 = 2
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0,WE_WAIT_VAL = 1,WE_PHA1_VAL = 0
  • ADDR_PRE = 1,ADDR_PHA0 = 3
  • DATA_PRE = 1,DATA_PHA0 = 3


11. I8080 总线写时序示例

I6800 总线写时序

调整以下参数,可灵活配置具体的输出时序。I6800 总线写时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 9,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 2,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 1,WE_PHA0 = 6,WE_WAIT = 0,WE_PHA1 = 0
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0
  • OE_PRE = 1,OE_PHA0 = 2,OE_WAIT = 2,OE_PHA1 = 2
  • OE_IDLE_VAL = 0,OE_PRE_VAL = 0,OE_PHA0_VAL = 1,OE_WAIT_VAL = 0,OE_PHA1_VAL = 1
  • ADDR_PRE = 1,ADDR_PHA0 = 3
  • DATA_PRE = 1,DATA_PHA0 = 3


12. I6800 总线写时序示例

I8080 总线读时序

调整以下参数,可灵活配置具体的输出时序。I8080 总线读时序示例中给出了一组参数配置示例:

  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 3,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 1,WE_PHA0 = 2,WE_WAIT = 0,WE_PHA1 = 0
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0,WE_WAIT_VAL = 1,WE_PHA1_VAL = 1
  • OE_PRE = 5,OE_PHA0 = 2,OE_WAIT = 0,OE_PHA1 = 0
  • WE_IDLE_VAL = 1,WE_PRE_VAL = 1,WE_PHA0_VAL = 0,WE_WAIT_VAL = 1,WE_PHA1_VAL = 1
  • ADDR_PRE = 1,ADDR_PHA0 = 3


13. I8080 总线读时序示例

I6800 总线读时序

调整以下参数,可灵活配置具体的输出时序。I6800 总线读时序示例中给出了一组参数配置示例:
  • CS_PRE = 0,CS_PHA0 = 8,CS_POST = 1
  • CS_IDLE_VAL = 1,CS_PRE_VAL = 1,CS_PHA0 = 0,CS_POST = 1
  • ADV_PRE = 1,ADV_PHA0 = 3,ADV_POST = 1
  • ADV_IDLE_VAL = 1,ADV_PRE_VAL = 1,ADV_PHA0 = 0,ADV_POST = 1
  • WE_PRE = 6,WE_PHA0 = 3,WE_WAIT = 0,WE_PHA1 = 0
  • WE_IDLE_VAL = 0,WE_PRE_VAL = 0,WE_PHA0_VAL = 1,WE_WAIT_VAL = 0,WE_PHA1_VAL = 0
  • OE_PRE = 1,OE_PHA0 = 2,OE_WAIT = 3,OE_PHA1 = 2
  • WE_IDLE_VAL = 0,WE_PRE_VAL = 0,WE_PHA0_VAL = 1,WE_WAIT_VAL = 0,WE_PHA1_VAL = 1
  • ADDR_PRE = 1,ADDR_PHA0 = 3


14. I6800 总线读时序示例