Verilog里面如何初始化数组才能被Quartus II综合?

Verilog里面如何初始化数组才能被Quartus II综合?
比如我有一个常数数组
reg [8:0] conval [15:0];
conval的值在系统运行中不变的,quartus不支持initial语句,那我如何对conval赋初值?

reg [7:0] conval[15:0]表示定义(或者叫声明)了一个名为conval的存储器,该存储器一共包含16个寄存器,每个寄存器可以存储一个8位的二进制数

在verilog中,每次只能对存储器中的某个寄存器赋值,不能一次性对整个存储器赋值。
例如你可以写conval[9]<=8'hff,但不能写conval[15:0]<=……
所以,楼主如果真要给存储器conval赋初值,也只能一个寄存器一个寄存器地赋了。

另外需要再说明的是:verilog不支持对存储器进行位访问(或者叫位寻址)。
例如你写Medied<=conval[9][3],是不对的。
——Medied.Lee
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-09
一般的综合如果不在意上电时的值,编译器会向着面积最小的方向综合,那样综合后信号的初始值是不确定的。
module test(
input wire rst_n // Reset, Active Low
,input wire clk
//
// Add other inputs and outputs here
//
);
integer k;
parameter n = 10; // set the value of n here
reg signed [20:0] e[0:n-1];
always @(posedge clk or negedge rst_n) begin
if(~rst_n) begin
for(k=0;k<n;k=k+1) e[k] <= 21'h0; // set initial value of matrix to all zero here
end
else begin
// change the value of e here normally
end
end

endmodule本回答被网友采纳
第2个回答  2010-07-30
always@(negedge rst)
begin

if(!rst)

conval=16'hXXXX;
..........

end
第3个回答  2010-07-29
用parameter进行初始化
第4个回答  2010-07-30
复位时候赋初值本回答被提问者采纳
相似回答