Verilog里面如何初始化数组才能被Quartus II综合?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog里面如何初始化数组才能被Quartus II综合?相关的知识,希望对你有一定的参考价值。
Verilog里面如何初始化数组才能被Quartus II综合?
比如我有一个常数数组
reg [8:0] conval [15:0];
conval的值在系统运行中不变的,quartus不支持initial语句,那我如何对conval赋初值?
在verilog中,每次只能对存储器中的某个寄存器赋值,不能一次性对整个存储器赋值。
例如你可以写conval[9]<=8'hff,但不能写conval[15:0]<=……
所以,楼主如果真要给存储器conval赋初值,也只能一个寄存器一个寄存器地赋了。
另外需要再说明的是:verilog不支持对存储器进行位访问(或者叫位寻址)。
例如你写Medied<=conval[9][3],是不对的。
——Medied.Lee 参考技术A 一般的综合如果不在意上电时的值,编译器会向着面积最小的方向综合,那样综合后信号的初始值是不确定的。
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 参考技术B always@(negedge rst)
begin
if(!rst)
conval=16'hXXXX;
..........
end 参考技术C 用parameter进行初始化 参考技术D 复位时候赋初值本回答被提问者采纳
以上是关于Verilog里面如何初始化数组才能被Quartus II综合?的主要内容,如果未能解决你的问题,请参考以下文章