在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 22828|回复: 10

Can't resolve multiple constant drivers

[复制链接]
发表于 2008-5-19 20:47:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
大家好,我想请教一个问题,我在用Quartus II 仿真一个时钟程序的时候出现了一个问题,“Can't resolve multiple constant drivers  for net ....“ 请问这个是什么问题呢?但是用Modelsim仿真的时候就没有这个问题。请问一下这个程序有什么问题呢? 谢谢大家了 ,下面是我的一部分程序。
always @(negedge clk_1Hz)

if (!rst)

begin

sec<=0; min<=0; hour<=0; //初始化

end

else begin

if(sec==8'h59)

begin


sec<=0;

clk_min<=1;

end

else begin

if (sec[3:0]==4'b1001)

begin sec[3:0]<=0; sec[7:4]<=sec[7:4]+1;end

else sec[3:0]<=sec[3:0]+1; clk_min<=0;

end

end

decode47 M0(sec[3:0],a0,b0,c0,d0,e0,f0,g0);
decode47 M1(sec[7:4],a1,b1,c1,d1,e1,f1,g1);


/* minute*/
always @(posedge clk_min )

if(min==8'h59)

begin min<=0; clk_hour<=1;end

else begin

if (min[3:0]==4'b1001)

begin min[3:0]<=0; min[7:4]<=min[7:4]+1;end

else min[3:0]<=min[3:0]+1; clk_hour<=0;

end

decode47 M2(min[3:0],a2,b2,c2,d2,e2,f2,g2);
decode47 M3(min[7:4],a3,b3,c3,d3,e3,f3,g3);

/*hour*/
always @(posedge clk_hour )

if(hour==8'h23) hour<=0;

else if (hour[3:0]==9)

begin hour[7:4]<=hour[7:4]+1; hour[3:0]<=0; end

else hour[3:0]<=hour[3:0]+1;




decode47 M4(hour[3:0],a4,b4,c4,d4,e4,f4,g4);
decode47 M5(hour[7:4],a5,b5,c5,d5,e5,f5,g5);

 楼主| 发表于 2008-5-19 21:01:58 | 显示全部楼层

我查了一下是同一信号 不能在不同得进程中赋值

但是同样得程序在Modelsim 中仿真的时候就没有出现这个问题
请问我是为什么呢?
如果修改的话,怎么修改呢?
发表于 2008-5-20 20:42:22 | 显示全部楼层
“信号不能在多个并发进程中赋值”这是个代码的可综合方面的要求,也就是说一般综合工具会对此报错的,但从仿真角度上说是没有问题的,除非多个赋值造成冲突导致仿真无法继续,modelsim是纯粹的仿真工具,它不会关心代码是否可综合;据我所知,采用波形输入在quartus下进行时序仿真是需要先综合的,这样工具就会检查代码在可综合性方面的问题,因此会报你上述错误.只要将复位操作分开到每个寄存器描述进程中表达就行了.
 楼主| 发表于 2008-5-29 12:10:40 | 显示全部楼层

谢谢了 !


原帖由 karnizhu 于 2008-5-20 20:42 发表
“信号不能在多个并发进程中赋值”这是个代码的可综合方面的要求,也就是说一般综合工具会对此报错的,但从仿真角度上说是没有问题的,除非多个赋值造成冲突导致仿真无法继续,modelsim是纯粹的仿真工具,它不会关心 ...

发表于 2008-6-1 01:53:51 | 显示全部楼层
Looks like there is a problem:

min & hour are driven by more than 1 processes:

1) always @(negedge clk_1Hz)
   if (!rst) begin
      sec<=0; min<=0; hour<=0; //初始化
   end ...

2) always @(posedge clk_min )
   if(min==8'h59) begin

   min<=0; clk_hour<=1;end...
3) always @(posedge clk_hour )
   if(hour==8'h23) hour<=0; ...


This is not allowed. To fix use one single process.

发表于 2008-6-1 15:19:21 | 显示全部楼层
谢谢了,很好
发表于 2008-6-1 15:20:19 | 显示全部楼层
这个我以前也做过
 楼主| 发表于 2008-7-16 20:47:46 | 显示全部楼层

OK I know

Thank you


原帖由 rfvns 于 2008-6-1 01:53 发表
Looks like there is a problem:

min & hour are driven by more than 1 processes:

1) always @(negedge clk_1Hz)
   if (!rst) begin
      sec

发表于 2008-7-25 23:42:09 | 显示全部楼层
学习了。
发表于 2008-7-28 21:14:28 | 显示全部楼层
这个问题我最近也遇到,,它我让我知道在并行语句汇中不能对同一信号进行赋值,原来是可综合的要求。。。又学了点东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 12:23 , Processed in 0.031552 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表