所有已推断的寄存器、SRL 和存储器的初始化 - 2023.2 简体中文

适用于 FPGA 和 SoC 的 UltraFast 设计方法指南 (UG949)

Document ID
UG949
Release Date
2023-11-29
Version
2023.2 简体中文

GSR 信号线会将所有寄存器初始化为 HDL 代码中指定的初始值。如果未提供初始值,综合工具可自行判断将初始状态赋值为 0 或 1。Vivado 综合通常默认设置为 0,但少数例外除外,如独热 (one-hot) 状态机编码。

对于任何已推断的 SRL、存储器或其他同步元件,同样可为其定义初始状态,并在配置时将其初始状态编程到关联的元件中。

AMD 强烈建议您对所有同步元件进行相应的初始化。寄存器初始化完全可由所有主要的器件综合工具进行推断。这样可消除单纯为初始化而添加复位的需求,并且使 RTL 代码与功能仿真中实现的设计更紧密匹配,因为所有同步元件配置后都会从器件中的已知值启动。

寄存器和锁存器初始状态 VHDL 编码示例 1:

signal reg1 : std_logic := '0'; -- specifying register1 to start as a zero
signal reg2 : std_logic := ‘1’; -- specifying register2 to start as a one
signal reg3 : std_logic_vector(3 downto 0):="1011"; -- specifying INIT value for 
4-bit register

寄存器和锁存器初始状态 Verilog 编码示例 2:

reg register1 = 1’b0; // specifying regsiter1 to start as a zero
reg register2 = 1’b1; // specifying register2 to start as a one
reg [3:0] register3 = 4’b1011; //specifying INIT value for 4-bit register

另外,在 Verilog 中还可使用 initial 语句:

reg [3:0] register3;
initial begin
  register3= 4’b1011;
end