quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net "txd_cnt[3]")

出现这个错误的原因在于,在不同的always逻辑块中,对同一个reg变量进行了赋值。

在多个alwasy逻辑块同时并行工作的时候,会出现冲突。解决的办法就是,对于一个变量,只在一个always块中,进行赋值。

例如我的代码中,分别有2个always块,内部分别对同一个变量进行的赋值smp_cnt,txd_cnt,txd_state;

quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

在另外一个always中同样赋值

quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

在不同的always中对同一个变量赋值,会造成冲突,QUARTUS报错如下:quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

Error (10028): Can't resolve multiple constant drivers for net "smp_cnt[3]" at uart_transfer.v(76)

quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

修改后,保证每个变量只在一个always中赋值

quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net

之所以不用always@(posedge clk or negedge rst_n)是为了避免指定多重边界rst_n;

Error (10200): Verilog HDL Conditional Statement error at ……: cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
这是因为,你的“always@(posedge clk or negedge r_est)”表明在clk上升沿或r_est下降沿这两个敏感事件发生时always语句块得以触发;而always中的if条件语句必须至少有一个条件指向其中一个敏感事件(边界标识符);所以写成“if(r_est)...else...”就会出错。
 
  
Quartus II 综合器不能够将该条件用于在封闭的always结构的事件控制中对边界进行区分。当一个事件控制中包含多重边界,Quartus II 综合器通过分析always结构中的条件语句来对时钟和异步控制信号加以区分。……
Quartus II 综合器采用if条件来鉴别两个异步reset信号,并隐含地鉴别了clock信号。为了分类的需要,Quartus II 综合器需要有一个条件落入两个类别之一。它可以指向一个单独的边界标识符(以匹配posedge事件)或它的补语(以匹配negedge事件),例如, rst1, !rst1, rst1 == 1'b1, rst1 == 1'b0。它也可以是OR两个或更多的表达式,其中每一个指向一个单独的边界标识符或它的补语……
当你的条件测试发现错误极性,或者它测试变量的值,但该值在事件控制中并不是一个边界时,你会接到这个错误。例如,为了匹配一个posedge rst事件,条件必须是rst或rst = 1'b1。




quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net









你可能感兴趣的:(FPGA的Verilog,modelsim,10.1c,Verilog)