重要: 用户管理的内核无需下述控制寄存器和信号,但可在
s_axilite
接口中使用寄存器来实现控制结构,如 创建用户管理的 RTL 内核 中所述。如果您的 RTL 模块实现不同的控制结构,那么您可将其定义为 user_managed
内核,或者必须对其进行调整以使其符合 XRT 管理的要求。下表概括了 XRT 管理的内核所需的寄存器映射,这些内核将在 Vitis 工具和 XRT 中使用。指定 ap_ctrl_hs
和 ap_ctrl_chain
控制协议的内核需要控制寄存器,如 执行模式 中所述。实现 ap_ctrl_none
和 user_managed
控制协议的内核则不需要下述控制寄存器。
提示: 仅限实现中断的设计才需要中断相关的寄存器。
所有用户定义的寄存器必须从位置 0x10
开始;此位置以下的位置均为保留位置。这些寄存器包括用于内核实参的寄存器,例如传递给存储器映射接口的标量值和地址偏移。
偏移 | 名称 | 描述 |
---|---|---|
0x0 | Control | 控制并提供内核状态。 |
0x4 | Global Interrupt Enable | 用于启用对主机的中断。 |
0x8 | IP Interrupt Enable | 用于控制使用哪个 IP 生成的信号来生成中断。 |
0xC | IP Interrupt Status | 提供中断状态。 |
0x10 | Kernel arguments | 包含标量和全局存储器实参等。 |
下表显示了通过控制寄存器 (offset 0x0
) 访问的控制信号。控制寄存器及其信号由内核执行模式(ap_ctrl_hs
和 ap_ctrl_chain
)来确定。
可用信号供不同控制协议使用,如 XRT 文档中的受支持的内核执行模型中所述。例如,对于顺序执行模式 ap_ctrl_hs
,主机通常将 0x00000001
写入偏移 0 控制寄存器,这样即可设置位 0、清除位 1 和 2,并在读取 ap_done
信号时轮询,直至此信号为 1 为止。
位 | 名称 | 描述 |
---|---|---|
0 | ap_start | 当内核可以开始处理数据时,此信号断言有效。握手时清除此信号,同时 ap_done 断言有效。 |
1 | ap_done | 当内核已完成操作时,此信号断言有效。读取时清除此信号。 |
2 | ap_idle | 当内核处于空闲状态时,此信号断言有效。 |
3 | ap_ready | 当内核准备好接受新数据时,内核会将此信号断言有效 |
4 | ap_continue | 此信号由 XRT 断言有效以允许内核继续保持运行 |
7 | auto_restart | 此信号用于启用自动内核重启,如 使用自动重启内核 中所述。 |
31:5 | Reserved | 保留 |
仅当内核有中断时,才需要以下与中断相关的寄存器。
位 | 名称 | 描述 |
---|---|---|
0 | Global Interrupt Enable | 当此信号断言有效时,中断随 IP Interrupt Enable 位一起启用。 |
31:1 | Reserved | 保留 |
位 | 名称 | 描述 |
---|---|---|
0 | Interrupt Enable | 当此信号断言有效时,中断随 Global Interrupt Enable 位一起启用。 |
31:1 | Reserved | 保留 |
位 | 名称 | 描述 |
---|---|---|
0 | Interrupt Status | 写入时切换。 |
31:1 | Reserved | 保留 |