总线时序与配置说明
3 Mar 2025
Read time: 7 minute(s)
PBUS 模块的时钟周期,均指内部 PBUS CLK 周期。PBUS CLK 从 HCLK 时钟分频得到,通过配置 CLK_DIV 字段可以从 HCLK 进行 2/ 4/ 8 分频,从而获得灵活的时钟配置选项,来适应不同的操作需求。
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 代表低电平

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

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

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

DATA
的相位由 IDLE,PRE,PHA0,WAIT,PHA1 组成:
- 寄存器 0x20: 配置 PRE,PHA0,WAIT,PHA1 长度

ADDR 的相位由 IDLE,PRE,PHA0 组成:
- 寄存器 0x24: 配置 PRE,PHA0 长度

并行接口组合配置
地址/ 数据总线写时序
调整以下参数,可灵活配置具体的输出时序。地址/数据总线写时序示例中给出了一组参数配置示例:
- 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

地址/ 数据总线读时序
调整以下参数,可灵活配置具体的输出时序。地址/数据总线读时序示例中给出了一组参数配置示例:
- 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

地址 + 数据总线写时序
调整以下参数,可灵活配置具体的输出时序。地址 + 数据总线写时序示例中给出了一组参数配置示例:
- 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

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

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

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

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

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

图 14. 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
