在 Verilog 中初始化数组
Initializing arrays in Verilog
如何初始化数组Save_state?此语句在输出中给出 X 值:
reg [9:0] count
reg [9:0] Save_state [0: 1024];
always @ (posedge Clock )
Count <=count+1 ;
Save_state[count] <=count ;
您可以使用重置端口来初始化count
和save_state
,例如以下代码:
integer i;
reg [9:0] count;
reg [9:0] save_state [0:1024];
always @(posedge clock or posedge reset) begin
if (reset) begin
count <= 0;
for (i=0; i<=1024; i=i+1)
save_state[i] <= 0;
end
else begin
count <= count + 1;
save_state[count] <= count;
end
end
else
块中的两个语句在 always
块的末尾同时应用。
您也可以使用初始块。这在仿真中是允许的,并且在某些架构上是可综合的(Xilinx FPGA 和 CPLD 支持寄存器初始化)
reg [9:0] count
reg [9:0] Save_state [0: 1024];
integer i;
initial begin
count = 0;
for (i=0;i<=1024;i=i+1)
Save_state[i] = 0;
end
always @ (posedge Clock ) begin
count <= count + 1;
Save_state[count] <= count;
end
虽然对于这个特定示例,其中 Save_state 数组的元素将始终具有相同的值,但您可以这样做(可在 Xilinx 和 Altera 上综合,AFAIK):
reg [9:0] Save_state [0: 1024];
integer i;
initial begin
for (i=0;i<=1024;i=i+1)
Save_state[i] = i[9:0];
end
并且在您开始模拟时,Save_state 中已经存储了值 0,1,2,...,1023。
如何初始化数组Save_state?此语句在输出中给出 X 值:
reg [9:0] count
reg [9:0] Save_state [0: 1024];
always @ (posedge Clock )
Count <=count+1 ;
Save_state[count] <=count ;
您可以使用重置端口来初始化count
和save_state
,例如以下代码:
integer i;
reg [9:0] count;
reg [9:0] save_state [0:1024];
always @(posedge clock or posedge reset) begin
if (reset) begin
count <= 0;
for (i=0; i<=1024; i=i+1)
save_state[i] <= 0;
end
else begin
count <= count + 1;
save_state[count] <= count;
end
end
else
块中的两个语句在 always
块的末尾同时应用。
您也可以使用初始块。这在仿真中是允许的,并且在某些架构上是可综合的(Xilinx FPGA 和 CPLD 支持寄存器初始化)
reg [9:0] count
reg [9:0] Save_state [0: 1024];
integer i;
initial begin
count = 0;
for (i=0;i<=1024;i=i+1)
Save_state[i] = 0;
end
always @ (posedge Clock ) begin
count <= count + 1;
Save_state[count] <= count;
end
虽然对于这个特定示例,其中 Save_state 数组的元素将始终具有相同的值,但您可以这样做(可在 Xilinx 和 Altera 上综合,AFAIK):
reg [9:0] Save_state [0: 1024];
integer i;
initial begin
for (i=0;i<=1024;i=i+1)
Save_state[i] = i[9:0];
end
并且在您开始模拟时,Save_state 中已经存储了值 0,1,2,...,1023。