控制初始化与复位行为 - 2023.2 简体中文

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

复位端口在器件中用于在应用复位信号时,立即将连接到复位端口的寄存器和块 RAM 还原为初始值。通常 RTL 配置中最重要的操作即选择复位行为。

注释: 对于复位行为,重要的是理解初始化与复位之间的差异。如需了解更多信息,请参阅 初始化行为

配置命令可用于控制 RTL 复位端口是否存在及其行为,如 RTL 配置 中所述,如下图所示。

图 1. RTL 配置

复位设置包含设置复位极性以及使用同步复位还是异步复位的功能,但更重要的是,它可通过reset选项来控制应用复位信号时要复位的寄存器。

重要: 当在设计上使用 AXI4 接口时,复位极性会自动更改为低电平有效,而与 config_rtl 配置中的设置无关。这符合 AXI4 标准的要求。

reset选项包含 4 项设置:

none
在设计中不添加复位。
control
这是默认设置,用于确保将所有控制寄存器复位。控制寄存器即状态机中使用的寄存器,用于生成 I/O 协议信号。此设置可确保设计可立即启动其操作状态。
state
该选项可为控制寄存器添加复位(与control设置相同),并且还可为衍生自 C/C++ 语言代码中的静态变量和全局变量的任意寄存器或存储器添加复位。此设置可确保应用复位后,C/C++ 语言代码中初始化的静态变量和全局变量均复位为其初始值。
all
此设置用于为设计中的所有寄存器和存储器添加复位。

通过 RESET 编译指示或指令可提供更精细的复位控制,如 syn.directive.reset 中所述。静态变量和全局变量均可通过 RESET 指令来添加复位。还可使用 RESET 指令的 off 选项从复位的变量中移除变量。

重要: 使用 stateall 复位选项时,考量其对于阵列复位的影响是至关重要的。