1.Error: Top-level design entity "test" is undefined 原因:顶层模块的module名 没有和 工程名同名 解决方法:把顶层模块的 module名 改成 和工程名 同名
2.Error (10278): Verilog HDL Port Declaration error at test.v(4): input port "clk_in" cannot be declared with type "reg" 原因:输入变量不能定义成reg型,必须是wire型,我们做的一个芯片的输入引脚需要是实时采集输入数据的,所以必须是wire(导线),不能是寄存器型 解决方法:把输入信号定义成 线型 wire (原因2:输入端口 被错误的赋值了。 解决方法:去掉---
3.Error (10137): Verilog HDL Procedural Assignment error at test.v(12): object "led" on left-hand side of assignment must have a variable data type 原因:数据类型定义错误 或者 赋值类型错误 解决方法: 在always 过程块中被赋值的变量必须是 reg (寄存器型),用 assign 连续赋值的对象 必须定义成 wire(线型)
4.Error: Can't place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)
原因: PIN_108是一个多功能管脚,还有一个功能是nCEO,也是默认的功能。如果要用它当普通
IO,需要提前设置一下 解决方法:assignments>device>device and pin options>dual-purpose pins里面把nCEO设置成
use as regular i/o就可以了
5.Error (10028): Can't resolve multiple constant drivers for net "key_flag" at clock.v(33) 原因:一个变量不能同时被在两个 always 过程块中被赋值
解决方法:在两个always过程块中用两个不同的变量名,可以在module最后用 assign
把变量的值作最后的统一,但是注意wire型和reg型的变量类型定义
6.Warning (10230): Verilog HDL assignment warning at SMG_1S.v(21): truncated value with 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 " 。
7.Warning: Found 8 output pins without output pin load capacitance assignment
原因:负载电容警告。load capacitance和IO输出结构有关的设置,用来控制波形的上升下降沿的控制
,用于阻抗匹配防止产生过冲.低速电路一般不需要考虑。 解决方法:Assignments --> Assignment Editor 中的 Assignment Name 栏中
进行设置。一般可以忽略此警告...
8.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 原因:赋值语句的逻辑混乱,由于条件判断语句采用了非阻塞赋值,
容易产生逻辑混乱。 解决方法:将非阻塞赋值“<=”改成阻塞赋值“=”,并不是任何情况下都是用非阻塞赋值好,阻塞和非阻塞适用于不同环境,根据环境要求选择赋值方式
9.Error (10200): Verilog HDL Conditional Statement error at shumaguan.v(23): cannot match operand(s) in the condition to the corresponding edges in the enclosing
event control of the always
construct 原因:条件判断语句逻辑不匹配。always @ () 括号内的敏感信号,与
begin end
块中的判断语句逻辑不匹配。
例如 always @
(negedge xxx) begin if(xxx) ....
end 敏感信号列表中判断的是xxx的下降沿,但是if语句判断的xxx是否为“1”,这样if语句将永远不可能执行,不符逻辑
解决方法:注意always @
括号内的敏感信号列表,到底是上升沿还是下降沿,还是两个都要,根据不同场合选择合适的敏感信号 10.不能生成 .sof 文件,pof文件,无法下载程序到开发板 原因:licence没破解完全 解决方法:重新破解quartus2 或者 采用其他方式获得完全版的 license