在ModelSim Altera版本10.4中的Verilog初始构造与以前不同
从10.4版开始,初始块出现问题。像这样:在ModelSim Altera版本10.4中的Verilog初始构造与以前不同,verilog,system-verilog,modelsim,intel-fpga,quartus,Verilog,System Verilog,Modelsim,Intel Fpga,Quartus,从10.4版开始,初始块出现问题。像这样: reg [31:0] init_ram[15:0]; initial begin init_ram[0] = 32'h1234_5678; init_ram[1] = 32'h8765_4321; ... end always_ff @(posedge clk) init_ram[addr] <= data; reg[31:0]初始化内存[15:0]; 初始开始 初始ram[0]=32'h1234_5678; 初始r
reg [31:0] init_ram[15:0];
initial begin
init_ram[0] = 32'h1234_5678;
init_ram[1] = 32'h8765_4321;
...
end
always_ff @(posedge clk)
init_ram[addr] <= data;
reg[31:0]初始化内存[15:0];
初始开始
初始ram[0]=32'h1234_5678;
初始ram[1]=32'h8765_4321;
...
结束
始终_ff@(posedge clk)
init_ram[addr]解决问题的一个方法是添加一个reset
信号,并使用它初始化寄存器的值
嗯,可能是这个
这是给你的人字拖一个初始值的好方法
这应该是这样的:
reg [31:0] init_ram[15:0];
input reset;
always_ff @(posedge clk) begin
if (reset) begin
init_ram[0] <= 32'h1234_5678;
init_ram[1] <= 32'h8765_4321;
end
else begin
init_ram[addr] <= data;
reg[31:0]初始化内存[15:0];
输入复位;
始终_ff@(posedge clk)开始
如果(重置)开始
init_ram[0]关于always_ff
和always_comb
构造的问题之一是,它们应该在模拟过程中检查可合成性,只是没有可合成的标准。如果意图是初始
块仅用于模拟,则需要将始终_ff
更改为始终
或将初始
块改为使用强制/释放
。使用内存块重置这不是一个好主意。RAM不支持复位。对于输出信号,我只能使用异步复位来获得正确的加电状态,而不需要时钟。ModelSim支持-输出寄存器a=1'b1-但Quartus合成忽略它
reg [31:0] init_ram[15:0];
input reset;
always_ff @(posedge clk) begin
if (reset) begin
init_ram[0] <= 32'h1234_5678;
init_ram[1] <= 32'h8765_4321;
end
else begin
init_ram[addr] <= data;
module test(
input clk,
input reset,
...
output reg a
);
always @(posedge clk) begin
if (reset) begin
a <= 1'b1;
end
else begin
a <= ...;