Quartus常见错误
1.Error (10028): Can't resolve multiple constant drivers for net ……
解析:不能在两个以上always内对同一变量赋值,这个细节一般看书看资料会看到,但是编程时,就是没想到。
2.Error (10158): Verilog HDL Module Declaration error at clkseg.v(1): port"XXXX" is not declared as port
解析:大意了,端口类型还没定义啊!
3.Error (10110): variable "en" has mixed blocking and nonblockingProcedural Assignments -- must be all blocking or all nonblocking assignments
解析:en在程序中有时用非阻塞赋值,有时用阻塞赋值,这是禁止的。在初学的时候,可能分得不是很清楚,所以在检查时,一定要一步步观察慢慢来。
4.Error (10161): Verilog HDL error at clkseg.v(36): object "count" is notdeclared
解析:这个错误应该很明显啦,只要能读得懂。
5.Error (10170): Verilog HDL syntax error at clkseg.v(37) near text"***"; expecting ";"
解析:意思应该也很简单,就是检查的时候要细心点。
6.Error (10171): Verilog HDL syntax error at ir_ctrl.v(149) near end of file ; expecting an identifier, or"endmodule", or a parallel statement
解析:最后上了endmodule。一般编程的程序长了,到最后也就容易忘记。
7.Error (10278): Verilog HDL Port Declaration error at ir_ctrl.v(11): input port"ir" cannot be declared with type "<a variable data type,e.g. reg>"
解析:在Altra官网中就有该解释
http://www.altera.com.cn/support/kdb/solutions/rd03102006_162.html 官网上有很多东西值得我们发现学习。
8.Error (10137): Verilog HDL Procedural Assignment error at test.v(24): object"check_9ms" on left-hand side of assignment must have a variable datatype
解析:在Altra官网中就有该解释
http://www.altera.com.cn/support/kdb/solutions/rd06232003_8783.html
9.Error (10219): Verilog HDL ContinuousAssignment error at clk_div.v(26): object "clkdiv_equ" on left-handside of assignment must have a net type
解析:看得懂英语就懂了。
10.Error (10200): Verilog HDL Conditional Statement error at clk_div.v(22): cannotmatch operand(s) in the condition to the corresponding edges in the enclosingevent control of the always construct
解析:看看官网的解释
http://www.altera.com.cn/support/kdb/solutions/rd06242003_6128.html
条件判断语句逻辑不匹配。always @ ()括号内的敏感信号,与begin end 块中的判断语句逻辑不匹配。
例如 always @ (negedge xxx)
begin
if(xxx)
....
end
敏感信号列表中判断的是xxx的下降沿,但是if语句判断的xxx是否为“1”,这样if语句将永远不可能执行,不符逻辑
解决方法:注意always @ 括号内的敏感信号列表,到底是上升沿还是下降沿,还是两个都要,根据不同场合选择合适的敏感信号
11.Error (10231): Verilog HDL error at LCD1602.v(40): value cannot be assigned toinput "lcd_en"
解析:端口设置出错
12.Error (10137): Verilog HDL Procedural Assignment error at LCD1602.v(49): object"lcd_rs" on left-hand side of assignment must have a variable datatype
解析:http://www.altera.com.cn/support/kdb/solutions/rd06232003_8783.html
13.Error (10170): Verilog HDL syntax error at test_vga.v(57) near text"<"; expecting"<=", or "="
即这里产生的错误。
解析:一个空格,不小心分开了,而且有人喜欢把<=分开来写,这个在QUANRUS是不允许的呃。。。
14.Error: Application nios2-terminal on 127.0.0.1 is using the target device
解析:这种情况出现在JTAG模式下,你在使用NIOS下的JTAG功能(比如利用BLASTER进行在线仿真),同时你又想下载*.sof文件(就是在JTAG模式下下载程序)。简单说就是你的JTAG已经被占用了。解决办法就是关闭你正在使用的JTAG功能,然后再下载*.sof文件。初学者经常会犯这样的错误,一定要注意。
这里有http://www.cnblogs.com/kingst/archive/2010/05/04/1727613.html
15.Error (10818): Can't infer register for "dis_data[0]" at key_down.v(56)because it does not hold its value outside the clock edge
原因:赋值语句的逻辑混乱,由于条件判断语句采用了非阻塞赋值,容易产生逻辑混乱。
解决方法:将非阻塞赋值“<=”改成阻塞赋值“=”,并不是任何情况下都是用非阻塞赋值好,阻塞和非阻塞适用于不同环境,根据环境要求选择赋值方式
16.Warning (10230): Verilog HDL assignment warning at SMG_1S.v(21): truncated valuewith size 32 to match size of target (8)
原因:赋值语句的等号两端数据的位宽不一致。例如:sec <=sec + 1; sec定义是8位的寄存器型,而表达式中的“1”,默认为32位的十进制数,等式右边是32位数据,等式左边是8位变量,所以赋值时会有警告。
解决方法:把 "sec <= sec + 1;" 规范化,改写成"sec <= sec + 1'd 1 " 。