verilog 怎么对 寄存器组 赋初值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 怎么对 寄存器组 赋初值相关的知识,希望对你有一定的参考价值。
用verilog定义一个寄存器组后,想对他赋值,该怎么办??
我写了如下程序
reg [7:0] mem [15:1];
assign lut[ 1 ] = 8'd52;
assign lut[ 2 ] = 8'd1;
assign lut[ 3 ] = -8'd29;
assign lut[ 4 ] = -8'd106;
assign lut[ 5 ] = -8'd45;
assign lut[ 6 ] = 8'd96;
assign lut[ 7 ] = 8'd77;
assign lut[ 8 ] = 8'd8;
assign lut[ 9 ] = -8'd13;
assign lut[ 10 ] = -8'd89;
assign lut[ 11 ] = -8'd82;
assign lut[ 12 ] = 8'd66;
assign lut[ 13 ] = 8'd98;
。。。。
编译后老是提示我错误:
Error (10673): SystemVerilog error at signal.v(5): assignments to unpacked arrays must be aggregate expressions
怎么回事?
always@(poesdge clk or negedge N_rst)
begin
if(!N_rst)
begin
lut[ 1 ]< = 8'd52;
lut[ 2 ] <= 8'd1;
……
end
else
……
end 参考技术A 有一个系统任务可以支持初始化一个寄存器阵列的.好像是$readmemb (寄存器组名,初始化文件名).这个系统任务本身的资料建议你去看一下夏宇文的书,而产生的效果则跟你用的芯片所对应的开发软件有关,比如说用于初始化的数据文件应该保存在什么地方,是否需要加后缀名等等. 参考技术B 你的定义和赋值冲突了,你既然定义了reg型,就不能用assign语句对其赋值,assign只能为wire型参数进行赋值 参考技术C 要是你准备按assign赋值,就把最上头的定义改成wire [7:0] mem [15:1];
要么就改下面的assign为always 参考技术D 放在ALWAYS里面赋值。REG型不能用ASSIGN。
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 怎么对 寄存器组 赋初值的主要内容,如果未能解决你的问题,请参考以下文章