很奇怪的问题。编译器不执行代码的逻辑,高手请进。
时间:10-02
整理:3721RD
点击:
代码如下:
counter:process(rst,clk.ena,sop)
begin
if(clk'event and clk='1')then --计数
if(ena='0' or sop='1')then --清零 //按照代码,应该在ena=0或sop=1时候,计数器cnt清零
//可是仿真波形显示的结果却是
//在ena=0时,cnt清零;而在sop=1时,计数器cnt没有清零
cnt<=(others=>'0');
end if;
if(ena='1')then
if(cnt=b"1111_1111")then
cnt<=(others=>'0');
else
cnt<=cnt+1;
end if;
end if;
end if;
end process counter;
----------------------
本人菜鸟,能否请高手具体说说为什么在sop=1时,cnt 没有清零
counter:process(rst,clk.ena,sop)
begin
if(clk'event and clk='1')then --计数
if(ena='0' or sop='1')then --清零 //按照代码,应该在ena=0或sop=1时候,计数器cnt清零
//可是仿真波形显示的结果却是
//在ena=0时,cnt清零;而在sop=1时,计数器cnt没有清零
cnt<=(others=>'0');
end if;
if(ena='1')then
if(cnt=b"1111_1111")then
cnt<=(others=>'0');
else
cnt<=cnt+1;
end if;
end if;
end if;
end process counter;
----------------------
本人菜鸟,能否请高手具体说说为什么在sop=1时,cnt 没有清零
没人说话阿
自己顶
把你的代码以及仿的图发上来一下。
这样很不好说。
设置一个优先级就OK了
吧清零信号的优先级拉高就可以了,就是:
IFENA='0' OR SOP='1'THEN
CNT <= (OTHRES=>'0');
ELSIF ENA='1' THEN
XXXXXXXXXXXXXXXXXXXXXXXX
这样看看如何~~