MAILBOX
1. 简介
邮箱(MAILBOX) IP 是内部系统与主机处理器之间的通信通道。主机处理器通过 AXI 从机接口与邮箱通信,邮箱通过系统总线与内部系统通信。所有主机 CPU 都可以访问外部可见的 16K 字节地址映射,包括邮箱存储器、邮箱状态和邮箱控制寄存器。访问邮箱由主机 ID 和每个邮箱的状态控制,而访问中断控制完全由主机 ID 管理。
2. 主要特性
MAILBOX 支持以下特性:
可配置邮箱数量
支持配置输入/输出邮箱大小
低延迟总线从机接口
3. 功能描述
邮箱框图
模块框图如图所示:
图 3.1: 邮箱框图
邮箱接口逻辑由以下组件组成:
用于主机总线连接的总线从机接口。
用于内部处理器连接的内部总线接口。
访问控制逻辑,用于门控对邮箱 RAM 和中断控制器的读/写访问。
邮箱控制和状态逻辑。
两个 SRAM 接口。
每个活动主机 CPU 的中断控制器(用户可配置)。以及一个连接到内部处理器的内部中断。
连接描述
主机读取 MBX_CSR 寄存器。如果 mbxn_available = 1,主机可以连接到 Mailboxn 并且 Mailboxn 中没有命令。否则,mbxn_available = 0 表示 Mailboxn 已连接到主机或 Mailboxn 中的命令正在处理中。 如果 mbxn_available = 1,则设置 MBX_CSR 中的 mbxn_link 以连接到 Mailboxn。对应的连接 ID 和保护访问位在 MAILBOX_LINKID 寄存器中设置。MAILBOX_CSR 寄存器中的 mbxn_link 位被设置为 1。
注意: 如果从 opt 寄存器读取的 prot_av 为 0,则表示不支持保护访问。那么 MAILBOX_LINKID 寄存器中的保护访问位为 0。
断开连接描述
MBX_CSR 寄存器的mbxn_alb_unlink 写 1 将邮箱 n 从该主机断开连接,并清除 MAILBOX_CSR 中的 mbxn_link 位。断开连接的同时写入 1b 到 mbxn_in_full 位也是可以的,表示命令可以被处理,另一个主机可以连接到输入邮箱 n。主主机也可以通过向 MAILBOX_RESET 寄存器的 mbxn_unlink 位写入 1b,将邮箱 n 从其当前主机取消连接。
注意: 如果 MAILBOX_LINKID 寄存器中对应邮箱的 mbx_prot_acc 位被设置,则取消连接操作必须通过保护写访问执行。如果从 opt 寄存器读取的 prot_av 为 0,则表示不支持保护访问。
存储空间
该邮箱具有寄存器文件和一个本地 SRAM。两者都可以直接从总线访问,并分配了存储器映射地址空间。它们具有专用的总线接口,因此具有独立的基地址。
寄存器空间
有关寄存器文件的空间,请参阅 “寄存器” 章节
SRAM空间
本地 SRAM 用于存储输入数据、中间数据和结果。它具有连接到系统总线的专用总线接口,其大小为字大小。分配给 SRAM 的存储空间见表 SRAM 地址空间。
字节地址 |
名称 |
读写属性 |
描述 |
|---|---|---|---|
0x2000 - 0x20FF |
MAILBOX0_IN |
W |
输入邮箱 0 |
0x2000 - 0x20FF |
MAILBOX0_OUT |
R |
输出邮箱 0 |
0x2100 - 0x23FF |
保留 |
/ |
用于邮箱 0 大小扩展到 1K 字节的空间 |
0x2400 - 0x24FF |
MAILBOX1_IN |
W |
输入邮箱 1 |
0x2400 - 0x24FF |
MAILBOX1_OUT |
R |
输出邮箱 1 |
0x2500 - 0x27FF |
保留 |
/ |
用于邮箱 1 大小扩展到 1K 字节的空间 |
0x2800 - 0x28FF |
MAILBOX2_IN |
W |
输入邮箱 2 |
0x2800 - 0x28FF |
MAILBOX2_OUT |
R |
输出邮箱 2 |
0x2900 - 0x2BFF |
保留 |
/ |
用于邮箱 2 大小扩展到 1K 字节的空间 |
0x2C00 - 0x2CFF |
MAILBOX3_IN |
W |
输入邮箱 3 |
0x2C00 - 0x2CFF |
MAILBOX3_OUT |
R |
输出邮箱 3 |
0x2D00 - 0x2FFF |
保留 |
/ |
用于邮箱 3 大小扩展到 1K 字节的空间 |
0x3000 - 0x3FFF |
保留 |
/ |
用于邮箱 4 ~ 7 的空间 |
注意:
输入邮箱: 主机只有在连接到该邮箱时才能写入输入邮箱存储器。如果 MAILBOX_LINKID 寄存器中对应 mbx_link_id 的 mbx_prot_acc 位被设置,则对该邮箱的所有访问必须是保护类型。此外,邮箱在 MBX_CSR 寄存器中不能已处于满状态。非法的写操作将被直接忽略。
输出邮箱: 主机只有在是存储在该输出邮箱中的结果的目标时才能读取输出邮箱存储器。此外,如果 MAILBOX_LINKID 寄存器中对应邮箱的 mbx_prot_acc 位被设置,读访问必须具有相同的保护类型(安全/非安全)。非法的读操作将直接返回零。
内部总线寄存器
偏移量 |
寄存器名称 |
读写属性 |
功能描述 |
|---|---|---|---|
0x0 |
IP_VER |
RO |
IP 版本号 |
0x4 |
GIT_VER |
RO |
GIT 版本号 |
0x8 |
CSR |
RW |
邮箱控制/状态寄存器 |
0xC |
RESET |
RO |
邮箱复位寄存器 |
0x10 |
LINKID0 |
RO |
邮箱连接 ID 寄存器 |
0x14 |
LINKID1 |
RO |
邮箱连接 ID 寄存器。如果邮箱数量小于或等于 4,此寄存器不存在 |
0x18 |
LOCKOUT0 |
RO |
邮箱锁定 0 寄存器。位图指示哪些主机被禁止访问邮箱 0,位n 为 1b 则阻止主机 cpu_id n |
0x1C |
LOCKOUT1 |
RO |
邮箱锁定 1 寄存器。位图指示哪些主机被禁止访问邮箱 1,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于2,此寄存器不存在。 |
0x20 |
LOCKOUT2 |
RO |
邮箱锁定 2 寄存器。位图指示哪些主机被禁止访问邮箱 2,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于3,此寄存器不存在。 |
0x24 |
LOCKOUT3 |
RO |
邮箱锁定 3 寄存器。位图指示哪些主机被禁止访问邮箱 3,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于4,此寄存器不存在。 |
0x28 |
LOCKOUT4 |
RO |
邮箱锁定 4 寄存器。位图指示哪些主机被禁止访问邮箱 4,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于5,此寄存器不存在。 |
0x2C |
LOCKOUT5 |
RO |
邮箱锁定 5 寄存器。位图指示哪些主机被禁止访问邮箱 5,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于6,此寄存器不存在。 |
0x30 |
LOCKOUT6 |
RO |
邮箱锁定 6 寄存器。位图指示哪些主机被禁止访问邮箱 6,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于7,此寄存器不存在。 |
0x34 |
LOCKOUT7 |
RO |
邮箱锁定 7 寄存器。位图指示哪些主机被禁止访问邮箱 7,位n 为 1b 则阻止主机 cpu_id n,如果邮箱数量小于8,此寄存器不存在。 |
0x38 |
INTEN1 |
RW |
|
0x3C |
INTST1 |
RW |
|
0x5C |
OPT |
RO |
邮箱内部配置选项,与 MAILBOX_RF 寄存器的 OPT 相同。 |
0x60 |
FROZE |
RW |
|
0x64 |
RID_VAL0 |
RW |
主机 id0 的 rid_val,当 host_bus_rid & rid_mask0 = rid_val0 & rid_mask0 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x68 |
RID_VAL1 |
RW |
主机 id1 的 rid_val,当 host_bus_rid & rid_mask1 = rid_val1 & rid_mask1 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x6C |
RID_VAL2 |
RW |
主机 id2 的 rid_val,当 host_bus_rid & rid_mask2 = rid_val2 & rid_mask2 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x70 |
RID_VAL3 |
RW |
主机 id3 的 rid_va3,当 host_bus_rid & rid_mask1 = rid_val3 & rid_mask3 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0xE4 |
RID_MASK0 |
RW |
主机 id0 的 rid_mask,当 host_bus_rid & rid_mask0 = rid_val0 & rid_mask0 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0xE8 |
RID_MASK1 |
RW |
主机 id1 的 rid_mask,当 host_bus_rid & rid_mask1 = rid_val1 & rid_mask1 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0xEC |
RID_MASK2 |
RW |
主机 id2 的 rid_mask,当 host_bus_rid & rid_mask2 = rid_val2 & rid_mask2 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0xF0 |
RID_MASK3 |
RW |
主机 id3 的 rid_mask,当 host_bus_rid & rid_mask3 = rid_val3 & rid_mask3 时,主机有 mailbox 的读访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x164 |
WID_VAL0 |
RW |
主机 id0 的 wid_val,当 host_bus_wid & wid_mask0 = wid_val0 & wid_mask0 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x168 |
WID_VAL1 |
RW |
主机 id1 的 wid_val,当 host_bus_wid & wid_mask1 = wid_val1 & wid_mask1 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x16C |
WID_VAL2 |
RW |
主机 id2 的 wid_val,当 host_bus_wid & wid_mask2 = wid_val2 & wid_mask2 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x170 |
WID_VAL3 |
RW |
主机 id3 的 wid_val,当 host_bus_wid & wid_mask3 = wid_val3 & wid_mask3 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x1E4 |
WID_MASK0 |
RW |
主机 id0 的 wid_mask,当 host_bus_wid & wid_mask0 = wid_val0 & wid_mask0 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x1E8 |
WID_MASK1 |
RW |
主机 id1 的 wid_mask,当 host_bus_wid & wid_mask1 = wid_val1 & wid_mask1 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x1EC |
WID_MASK2 |
RW |
主机 id2 的 wid_mask,当 host_bus_wid & wid_mask2 = wid_val2 & wid_mask2 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
0x1F0 |
WID_MASK3 |
RW |
主机 id3 的 wid_mask,当 host_bus_wid & wid_mask3 = wid_val3 & wid_mask3 时,主机有 mailbox 的写访问权限,由内部 CPU 设置,,主机无该寄存器 |
编程模型
连接步骤
主主机编程 LOCKOUT 寄存器以解锁邮箱
主机编程 INTEN 寄存器中的 mbx_linkable 位,然后读取 CSR 寄存器中的 mbx_alb_unlink 位,确认所要访问的邮箱处于可连接状态
主机编程 CSR 寄存器中的 mbx_link 位以连接对应的邮箱
主机读取 CSR 寄存器中的 mbx_link 位并读取 LINKID 寄存器中的 mbx_link_id,判断连接成功还是失败
如果连接成功,主机编程 INTEN 寄存器中的 mbx_ifre 和 mbx_done 位
主机写步骤
主机将数据编程到 MAILBOX_IN SRAM
主机编程 CSR 寄存器中的 mbx_in_full 位,表示写结束,等待内部 CPU 读取。
主机读步骤
主机读取 INTST 寄存器中的 mbx_done 位,直到 mbx_done 为 1
主机从 SRAM MAILBOX_OUT 读取数据
主机清除 INIST 寄存器中的 mbx_done 位
主机清除 CSR 寄存器中的 mbx_out_full 位
内部 CPU 初始化
内部 CPU 在 INTEN1 寄存器中编程中断使能
如果存在 ID_VAL 和 ID_MASK 寄存器,则需要配置 ID_VAL、ID_MASK 和 FROZE 寄存器
内部 CPU 读步骤
内部 CPU 读取 INTST 寄存器中的 mbx_in_full 位。直到 mbx_in_full 为 1
内部 CPU 从 SRAM MAILBOX_IN 读取数据
内部 CPU 清除 INTST 寄存器中的 mbx_in_full 位
内部 CPU 清除 CSR 寄存器中的 mbx_in_full 位
内部 CPU 写步骤
内部 CPU 将数据编程到 MAILBOX_OUT SRAM
内部 CPU 编程 CSR 寄存器中的 mbx_out_full 位
4. 中断
中断控制器的实现方式是每个活动主机都连接到自己的控制器,而所有中断控制器都位于存储映射中的相同地址。这是通过在寄存器访问期间考虑 cpu_id 和 prot 输入来实现的。 中断使能控制(INTEN)寄存器用于选择启用哪个中断源。中断状态(INTST)寄存器允许主机读取状态。
5. 寄存器
MAILBOX_RF 寄存器
MAILBOX_RF 中的寄存器及其对应的偏移量见表 MAILBOX_RF 中寄存器的偏移地址
偏移量 |
寄存器名称 |
功能描述 |
|---|---|---|
0x0 |
IP_VER |
IP 版本号 |
0x4 |
GIT_VER |
Git 版本号 |
0x8 |
CSR |
邮箱控制/状态寄存器 |
0xC |
RESET |
邮箱复位寄存器 |
0x10 |
LINKIDO |
邮箱连接 ID 0 寄存器 |
0x14 |
LINKID1 |
邮箱连接 ID 1 寄存器 |
0x18 |
LOCKOUTO |
邮箱锁定 0 寄存器 |
0x1C |
LOCKOUT1 |
邮箱锁定 1 寄存器 |
0x20 |
LOCKOUT2 |
邮箱锁定 2 寄存器 |
0x24 |
LOCKOUT3 |
邮箱锁定 3 寄存器 |
0x28 |
LOCKOUT4 |
邮箱锁定 4 寄存器 |
0x2C |
LOCKOUT5 |
邮箱锁定 5 寄存器 |
0x30 |
LOCKOUT6 |
邮箱锁定 6 寄存器 |
0x34 |
LOCKOUT7 |
邮箱锁定 7 寄存器 |
0x38 |
INTEN |
中断使能控制寄存器 |
0x3C |
INTST |
中断状态寄存器 |
0x5C |
OPT |
邮箱内部配置选项 |
IP 版本号寄存器
地址偏移:0x0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IP_VER |
23:0 |
RO |
0x020100 |
IP 版本号 |
Reserved |
31:24 |
/ |
0x0 |
/ |
GIT 版本号寄存器
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
GIT_VER |
31:0 |
RO |
0x0 |
Git 版本号 |
邮箱控制/状态寄存器
地址偏移:0x8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx0_in_full |
0 |
RW |
0x0 |
|
mbx0_out_full |
1 |
RW |
0x0 |
|
mbx0_link |
2 |
RW |
0x0 |
|
mbx0_alb_unlink |
3 |
RW |
0x1 |
|
mbx1_in_full |
4 |
RW |
0x0 |
|
mbx1_out_full |
5 |
RW |
0x0 |
|
mbx1_link |
6 |
RW |
0x0 |
|
mbx1_alb_unlink |
7 |
RW |
0x1 |
|
mbx2_in_full |
8 |
RW |
0x0 |
|
mbx2_out_full |
9 |
RW |
0x0 |
|
mbx2_link |
10 |
RW |
0x0 |
|
mbx2_alb_unlink |
11 |
RW |
0x1 |
|
mbx3_in_full |
12 |
RW |
0x0 |
|
mbx3_out_full |
13 |
RW |
0x0 |
|
mbx3_link |
14 |
RW |
0x0 |
|
mbx3_alb_unlink |
15 |
RW |
0x1 |
|
mbx4_in_full |
16 |
RW |
0x0 |
|
mbx4_out_full |
17 |
RW |
0x0 |
|
mbx4_link |
18 |
RW |
0x0 |
|
mbx4_alb_unlink |
19 |
RW |
0x1 |
|
mbx5_in_full |
20 |
RW |
0x0 |
|
mbx5_out_full |
21 |
RW |
0x0 |
|
mbx5_link |
22 |
RW |
0x0 |
|
mbx5_alb_unlink |
23 |
RW |
0x1 |
|
mbx6_in_full |
24 |
RW |
0x0 |
|
mbx6_out_full |
25 |
RW |
0x0 |
|
mbx6_link |
26 |
RW |
0x0 |
|
mbx6_alb_unlink |
27 |
RW |
0x1 |
|
mbx7_in_full |
28 |
RW |
0x0 |
|
mbx7_out_full |
29 |
RW |
0x0 |
|
mbx7_link |
30 |
RW |
0x0 |
|
mbx7_alb_unlink |
31 |
RW |
0x1 |
|
邮箱复位寄存器
地址偏移:0xC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
保留 |
0 |
/ |
0x0 |
/ |
mbx0_out_empty |
1 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx0_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
2 |
/ |
0x0 |
/ |
mbx0_unlink |
3 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx0_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
4 |
/ |
0x0 |
/ |
mbx1_out_empty |
5 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx1_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
6 |
/ |
0x0 |
/ |
mbx1_unlink |
7 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx1_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
8 |
/ |
0x0 |
/ |
mbx2_out_empty |
9 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx2_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
10 |
/ |
0x0 |
/ |
mbx2_unlink |
11 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx2_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
12 |
/ |
0x0 |
/ |
mbx3_out_empty |
13 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx3_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
14 |
/ |
0x0 |
/ |
mbx3_unlink |
15 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx3_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
16 |
/ |
0x0 |
/ |
mbx4_out_empty |
17 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx4_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
18 |
/ |
0x0 |
/ |
mbx4_unlink |
19 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx4_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
20 |
/ |
0x0 |
/ |
mbx5_out_empty |
21 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx5_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
22 |
/ |
0x0 |
/ |
mbx5_unlink |
23 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx5_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
24 |
/ |
0x0 |
/ |
mbx6_out_empty |
25 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx6_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
26 |
/ |
0x0 |
/ |
mbx6_unlink |
27 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx6_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
保留 |
28 |
/ |
0x0 |
/ |
mbx7_out_empty |
29 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 来清除 MBX_CSR 中的 mbx7_out_full 位。其他主机写入 1b 或任何主机写入 0b 无效 |
保留 |
30 |
/ |
0x0 |
/ |
mbx7_unlink |
31 |
W1C |
0x0 |
仅可设置:主主机可以通过在此写入 1b 将邮箱 0 从其当前主机取消连接,清除 MBX_CSR 中的 mbx7_linked 位。其他主机写入 1b 或任何主机写入 0b 无效。注意:主主机必须使用保护写访问;非保护访问无效。 |
邮箱连接 ID 0 寄存器
地址偏移:0x10
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx0_link_id |
1:0 |
RO |
0x0 |
指示连接到输入邮箱 0 的主机的 cpu_id |
保留 |
6:2 |
/ |
0x0 |
/ |
mbx0_prot_acc |
7 |
RO |
0x0 |
|
mbx1_link_id |
9:8 |
RO |
0x0 |
指示连接到输入邮箱 1 的主机的 cpu_id |
保留 |
14:10 |
/ |
0x0 |
/ |
mbx1_prot_acc |
15 |
RO |
0x0 |
|
mbx2_link_id |
17:16 |
RO |
0x0 |
指示连接到输入邮箱 2 的主机的 cpu_id |
保留 |
22:18 |
/ |
0x0 |
/ |
mbx2_prot_acc |
23 |
RO |
0x0 |
|
mbx3_link_id |
25:24 |
RO |
0x0 |
指示连接到输入邮箱 3 的主机的 cpu_id |
保留 |
30:26 |
/ |
0x0 |
/ |
mbx3_prot_acc |
31 |
RO |
0x0 |
|
邮箱连接 ID 1 寄存器
地址偏移:0x14
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx4_link_id |
1:0 |
RO |
0x0 |
指示连接到输入邮箱 4 的主机的 cpu_id |
保留 |
6:2 |
/ |
0x0 |
/ |
mbx4_prot_acc |
7 |
RO |
0x0 |
|
mbx5_link_id |
9:8 |
RO |
0x0 |
指示连接到输入邮箱 5 的主机的 cpu_id |
保留 |
14:10 |
/ |
0x0 |
/ |
mbx5_prot_acc |
15 |
RO |
0x0 |
|
mbx6_link_id |
17:16 |
RO |
0x0 |
指示连接到输入邮箱 6 的主机的 cpu_id |
保留 |
22:18 |
/ |
0x0 |
/ |
mbx6_prot_acc |
23 |
RO |
0x0 |
|
mbx7_link_id |
25:24 |
RO |
0x0 |
指示连接到输入邮箱 7 的主机的 cpu_id |
保留 |
30:26 |
/ |
0x0 |
/ |
mbx7_prot_acc |
31 |
RO |
0x0 |
|
邮箱锁定 0 寄存器
地址偏移:0x18
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx0 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 0,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 1 寄存器
地址偏移:0x1C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx1 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 1,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 2 寄存器
地址偏移:0x20
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx2 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 2,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 3 寄存器
地址偏移:0x24
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx3 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 3,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 4 寄存器
地址偏移:0x28
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx4 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 4,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 5 寄存器
地址偏移:0x2C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx5 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 5,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 6 寄存器
地址偏移:0x30
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx6 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 6,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱锁定 7 寄存器
地址偏移:0x34
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx7 |
3:0 |
RW |
0xE |
位图指示哪些主机被禁止访问邮箱 7,位 n 为 1b 则阻止主机 cpu_id n。 |
保留 |
31:4 |
/ |
0x0 |
/ |
邮箱中断使能寄存器
地址偏移:0x38
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx0_ifre |
0 |
RW |
0x0 |
该主机已连接到邮箱 0,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx0_done |
1 |
RW |
0x0 |
输出邮箱 0 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx1_ifre |
2 |
RW |
0x0 |
该主机已连接到邮箱 1,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx1_done |
3 |
RW |
0x0 |
输出邮箱 1 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx2_ifre |
4 |
RW |
0x0 |
该主机已连接到邮箱 2,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx2_done |
5 |
RW |
0x0 |
输出邮箱 2 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx3_ifre |
6 |
RW |
0x0 |
该主机已连接到邮箱 3,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx3_done |
7 |
RW |
0x0 |
输出邮箱 3 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx4_ifre |
8 |
RW |
0x0 |
该主机已连接到邮箱 4,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx4_done |
9 |
RW |
0x0 |
输出邮箱 4 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx5_ifre |
10 |
RW |
0x0 |
该主机已连接到邮箱 5,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx5_done |
11 |
RW |
0x0 |
输出邮箱 5 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx6_ifre |
12 |
RW |
0x0 |
该主机已连接到邮箱 6,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx6_done |
13 |
RW |
0x0 |
输出邮箱 6 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx7_ifre |
14 |
RW |
0x0 |
该主机已连接到邮箱 7,并且该邮箱当前未满 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx7_done |
15 |
RW |
0x0 |
输出邮箱 7 包含一个给该主机的邮箱数据 - 1’b0:中断禁用 - 1’b1:中断使能 |
mbx_linkable |
16 |
RW |
0x0 |
该中断信号表示至少还有一个邮箱可以被访问此寄存器的主机连接(存在一个未连接、空的输入邮箱,其锁定位对该主机为 0b) |
保留 |
31:17 |
/ |
0x0 |
/ |
邮箱中断状态寄存器
地址偏移:0x3C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx0_ifre |
0 |
RW |
0x0 |
该主机已连接到邮箱 0,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx0_done |
1 |
RW |
0x0 |
输出邮箱 0 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx1_ifre |
2 |
RW |
0x0 |
该主机已连接到邮箱 1,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx1_done |
3 |
RW |
0x0 |
输出邮箱 1 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx2_ifre |
4 |
RW |
0x0 |
该主机已连接到邮箱 2,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx2_done |
5 |
RW |
0x0 |
输出邮箱 2 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx3_ifre |
6 |
RW |
0x0 |
该主机已连接到邮箱 3,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx3_done |
7 |
RW |
0x0 |
输出邮箱 3 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx4_ifre |
8 |
RW |
0x0 |
该主机已连接到邮箱 4,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx4_done |
9 |
RW |
0x0 |
输出邮箱 4 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx5_ifre |
10 |
RW |
0x0 |
该主机已连接到邮箱 5,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx5_done |
11 |
RW |
0x0 |
输出邮箱 5 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx6_ifre |
12 |
RW |
0x0 |
该主机已连接到邮箱 6,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx6_done |
13 |
RW |
0x0 |
输出邮箱 6 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx7_ifre |
14 |
RW |
0x0 |
该主机已连接到邮箱 7,并且该邮箱当前未满 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx7_done |
15 |
RW |
0x0 |
输出邮箱 7 包含一个给该主机的邮箱数据 - 1’b0:不活动 - 1’b1:挂起,写入 1 清除状态位 |
mbx_linkable |
16 |
RW |
0x0 |
该中断状态表示至少还有一个邮箱可以被访问此寄存器的主机连接(存在一个未连接、空的输入邮箱,其锁定位对该主机为 0b) |
保留 |
31:17 |
/ |
0x0 |
/ |
邮箱内部配置选项
地址偏移:0x5C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
mbx_num |
3:0 |
RO |
0x4 |
直接指示存在的输入/输出邮箱对数量,范围 1 ~ 8(默认为 4) |
mbx_size |
5:4 |
RO |
0x1 |
指示每个输入/输出邮箱的实际实现大小 - 2’b00:128 字节 - 2’b01:256 字节 - 2’b10:512 字节 - 2’b11:1K 字节 |
active_host_n |
8:6 |
RO |
0x0 |
指示活动主机数量,范围 1~32 |
保留 |
11:9 |
/ |
0x0 |
/ |
master_id |
13:12 |
RO |
0x0 |
指示主主机的 cpu_id 值 |
保留 |
16:14 |
/ |
0x0 |
/ |
prot_av |
17 |
RO |
0x0 |
|
my_id |
19:18 |
RO |
0x0 |
实际读取此寄存器的主机 ID 代码,即读访问期间使用的 cpu_id 输入值。 |
保留 |
22:20 |
/ |
0x0 |
/ |
prot |
23 |
RO |
0x0 |
指示实际读取此寄存器的主机的当前保护位值 |