我正在使用Quartus Prime Lite Edition,并且有一个case
语句:
S2: begin
dat[WID_DAT-1 :1] <= dat[WID_DAT-2 :0];
dat[0] <= 0;
crc[0] <= crc_temp[0];
integer i;
for (i = 1; i < WID_CRC; i = i+1) begin
crc[i] <= crc_temp[i] ^ crc[i-1];
end
if(count != 0) begin
r_ns <= S2;
count <= count -1;
end
else begin
r_ns <= S_DONE;
done <= 1;
end
end
当我启动Anlysis&细化:
错误(10170(:附近CRC_configable.v(62(处的Verilog HDL语法错误文本:";整数";;期望";结束";。
为什么会这样,我应该如何避免?
您不能在begin/end
块的中间声明integer
。您可以将integer
声明行移到always
块之外(在它之前(。
integer i;
always ...
...
S2: begin
dat[WID_DAT-1 :1] <= dat[WID_DAT-2 :0];
dat[0] <= 0;
crc[0] <= crc_temp[0];
for (i = 1; i < WID_CRC; i = i+1) begin
crc[i] <= crc_temp[i] ^ crc[i-1];
end
或者,如果您为开始块指定了一个名称,您应该能够在begin
行之后立即声明integer
。