2024年5月30日发(作者:)
QuartusiiErrorWarning
QuartusII问题总结
使用Quattus会遇到许多Warning,硬件描述语言和C不同,有些
Warning是不允许存在的,有些可以忽略。做一下对QuartusII
Warnning的总结。
带编号的QuartusII Warnning:
1、Warning (10227): Verilog HDL Port Declaration warning
at v_led.v(4): data type declaration for "out" declares packed
dimensions but the port declaration declaration does not
原因:输入输出没有定义位宽。
解决方法:对输出定义位宽。有的教材书给的定义是output ...;
reg[7:0] ...;这种定义会引起这种警告。所以定义采用output
reg[7:0] ...;就不会有这中警告。
2、Warning (10230): Verilog HDL assignment warning at
v_led.v(13): truncated value with size 32 to match size of target
(8)
原因:Verilog默认的位宽是32位,你在编程是使用的类似
counter=counter+1;后边的1没有给出数据宽度就会产生这种错误。
解决方法:对数据进行位宽的定义,例如counter=counter+8'd1;
这种警告也可以忽略不管。3、W arning (10240):Verilog HDL
Always Construct warning at I2C_V_Config.v(153): inferring
latch(es) for variable "LUT_DATA", which holds its previous value
in one
or more paths through the always construct
原因:信号被综合成了latch,锁存器的EN和数据输入端口存在
一个竞争的问题
解决方法:将计数器从里面抽出来
4、Warning (10030): Net "_a" at
control_store_dp.v(34) has no driver or initial value, using a
default initial value '0'
原因:在同一时间对数据进行了赋值。同时对RAM或者ROM进
行读写,造成了时序错乱。解决方法:对程序的读写端口,进行检测,
不能让他们在同一时间段出现2个值。
5、.Warning (10268): Verilog HDL information at
lcd7106.v(63): Always Construct contains both blocking and non-
blocking assignments
原因:一个always模块中同时有阻塞和非阻塞的赋值
解决方法:在模块中的赋值方式只采用一种赋值方式。
6Warning(15400):WYSIWYGprimitive
"DE2_TV:inst1|Sdram_Control_4Port:u6|Sdram_WR_FIFO:writ
e_fifo2|dcfifo:dcfifo_componen
t|dcfifo_21m1:auto_generated|altsyncram_1l81:fifo_ram|altsyncr
am_drg1:altsyncram5|ram_bl ock6a15" has a port clk1 that is
stuck at GND
解释:这里是采用的SDRAM的读写方式为1入2出的模式,将
fifo2的输入信号给接GND 了
措施:不用理会。
不含编号的Warning
clock-sensitive change during active clock edge at
time on register ""
原因:vector source file中时钟敏感信号(如:数据,允许端,
清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能
在时钟边沿变化的。其后果为导致结果不正确。
措施:编辑vector source file
g HDL assignment warning at : truncated value with
size to match size of target (
原因:在HDL设计中对目标的位数进行了设定,如:reg[4:0] a;而默
认为32位,将位数裁定到合适的大小
措施:如果结果正确,无须加以修正,如果不想看到这个警告,可以改
发布评论