作者eecheng87 (EEcheng)
看板Electronics
标题[问题] 同个变数出现在不同always block
时间Sun Mar 3 20:49:20 2019
各位好, 我最近看到有一句话: 同一个变数不能出现在不同always block
他给的理由是
always@(posedge clk)begin
if(reset) counter<=0;
end
always@(posedge clk)begin
if(c1==1)counter<=counter+1;
end
这样的话不知道要归零还是做累加
但是同一篇文章又出现以下程式码(用来实现累加)
always@(posedge clk)begin
if(reset)
counter<=0;
else
counter<=(counter==10)?counter:counter+1;
end
always@(posedge clk)begin
if(reset)
temp<=0;
else if(counter<10)
temp<=temp+counter;
end
虽然counter一边是在等号右边一边是在左边, 但是这不是也会回到同样的问题吗?
不知道哪个block有优先权.
另外还有问一下,标题这句话这样正确吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.236.123.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1551617363.A.786.html
1F:推 bookstar07: 你第二个always block又不会影响到counter的值 当然可 03/03 21:23
2F:→ bookstar07: 以用 03/03 21:23
3F:推 hsucheng: 两者逻辑是OK的,但是你可以把合出来的电路比较看看 03/03 21:43
4F:推 eamansf96xs: 设计的时候 我认为 通常一个讯号一个block 比较好 03/03 22:52
5F:→ eamansf96xs: 同一个变数 不能写在不同block 是正确的 03/03 22:55
6F:推 Archer55b6: 应该说同一个变数只能在一个block里被改动,在其他blo 03/04 16:23
7F:→ Archer55b6: ck拿来当input是可以的 03/04 16:23
8F:→ kyo547896321: 看完RTL後脑中要有电路啊,实际画一下不难吧 03/04 18:15
9F:→ kyo547896321: 你原先描述的叫multiple driver,代表用不同的block 03/04 18:18
10F:→ kyo547896321: 同时描述同一根讯号的行为,後面的例子里两个DFF的o 03/04 18:18
11F:→ kyo547896321: utput本身就不同 03/04 18:18