有关verilog truncated value with size 32 to match size of target警告的处理

在下面的一段verilog代码里,实现的是74ls164的计数功能,在quartusII编译的时候出现了下面的警告:warning:truncated value with size 32 to match size of target 找了一下提示说在  else if (ENT == 1 && ENP == 1) Q <= Q + 1'b1;里有问题,于是上网找了一下还真有:

因为没有指定位宽,所以系统提示默认为32位所以你将out <= out + 1 改为out <= out + 1'b1 就可以了。

module Vr74LS164(CLK,CLR_L, LD_L, ENP, ENT, D, Q, RCO);
 input CLK,CLR_L, LD_L, ENP, ENT;
 input [3:0] D;
 
 output [3:0] Q;
 output RCO;
 reg [3:0] Q;
 reg RCO;
 
 always @ (posedge CLK)  //Creat the counter f-f behavior
  if (CLR_L == 0)     Q <= 4'b0;
  else if (LD_L == 0)    Q <= D;
  else if (ENT == 1 && ENP == 1) Q <= Q + 1'b1;
  else        Q <= Q;
 always @ (Q or ENT)
  if ((ENT == 1) && (Q == 4'd15)) RCO = 1;
  else        RCO = 0;
endmodule

改了之后还真是好了!哈哈!于是乎来记录一下!


 

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007855.html