Quartus 2 使用错误集锦 424 更新....
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
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 wit
h 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 capacitanceIO输出结构有关的设置,用来控制波形的上升下降沿的控制,用于阻抗匹配防止产生过冲.低速电路一般不需要考虑。
解决方法: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.construct用法不能生成 .sof 文件,pof文件,无法下载程序到开发板
原因:licence没破解完全
解决方法:重新破解quartus2 或者 采用其他方式获得完全版的 license

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。