推 n052111089:感謝^^ 04/12 01:19
→ n052111089:所以 <= 是concurrent然後 =是sequential? 04/12 01:22
推 zxvc:我想這還是習慣的問題。我大學的時候的專題就是blocking一路 04/12 01:37
→ zxvc:用到底,最後還不是做出來了。 04/12 01:38
→ zxvc:(blocking assignment一路用到底) 04/12 01:39
推 zxvc:其中包括複雜的有限狀態機、sequential circuits。 04/12 01:41
→ zxvc:你舉的a=a+1...的例子。在我看來結果不一樣本來就是很正常的 04/12 01:43
→ sasako:nonono..只有在某些情況才會不一樣 04/12 01:55
→ sasako:你正常寫在always(*)底下 應該是會一樣的 這是verilog和 04/12 01:56
→ sasako:C語言最大的不同點 04/12 01:56
→ sasako:另外 你的習慣我不與置評 只是到了業界 習慣終究是會被學長 04/12 01:58
→ sasako:糾正的 04/12 01:58
→ sasako:verilog_blocking_nonblocking.html 04/12 02:17
→ sasako:1F自己連起來吧 google搜尋這種資訊很多啦... 04/12 02:18
推 zxvc:我說的不一樣就是指在某些sequential circuits下的情況。 04/12 03:26
→ zxvc:如果你的coding style就是跟業界一樣,我也許會follow。(不過 04/12 03:30
→ zxvc:我不一定會去業界) 04/12 03:31
推 zxvc:我老師是比較開明loop generate跟for loop只要你寫得出來她都 04/12 03:41
→ zxvc:接受。 04/12 03:42
→ zxvc:另外你給的連結第三點觀念錯誤。continuous assignment跟 04/12 03:44
→ zxvc:non-blocking、blocking assignments一點關係都沒有。 04/12 03:45
→ zxvc:它是另外一種assignment。non-blocking與blocking assignment 04/12 03:46
→ zxvc:是procedure assignment (IEEE 1364-2005 Sec 6)。 04/12 03:48
→ zxvc:procedure assignment是用在reg、integer等data types。 04/12 03:49
→ zxvc:continouse assignment是用在wire之類的data types上。 04/12 03:50
→ zxvc:它們update values的方式也不太一樣(IEEE 1364-2005 Sec. 9.2 04/12 03:51
→ zxvc:)。 04/12 03:51
推 zxvc:continuous assignment是等號右邊出現的inputs一變,就 04/12 04:14
→ zxvc:evaluate與update,這通常用在model combinational circuits 04/12 04:16
→ zxvc:。procedure assignment的evaluation/update則往往受到 04/12 04:18
→ zxvc:sensitivity list的影響,它不總是等號右邊的inputs一有變化 04/12 04:19
→ zxvc:就evaluation/update。但always(*)就可以達到跟continuous 04/12 04:21
→ zxvc:assignment一樣的效果,所以它也可以用來model combinational 04/12 04:22
→ zxvc:circuits。 04/12 04:22
推 zxvc:另外我老師也是待過業界的。她建議(沒有強制)只要用 04/12 04:42
→ zxvc:non-blocking assignment就好,包括用always model 04/12 04:43
→ zxvc:combinational circuits。 04/12 04:43
→ zxvc:其實我覺得non-blocking assignment一個好用的地方在於用 04/12 04:45
→ zxvc:always model shift registers。 04/12 04:45
推 zxvc:其實用non-blocking或blocking assignment與always model 04/12 04:51
→ zxvc:combinational circuits的結果似乎是一樣的(我沒證明過)。 04/12 04:51
→ zxvc:不過用blocking可以做到non-blocking做不到的事,例如我之前 04/12 04:53
→ zxvc:在板上po的priority encoder就是利用blocking update的特性。 04/12 04:54
推 zxvc:抱欺我上兩句話有錯。我把那個priority encoder改成 04/12 05:02
→ zxvc:non-blocking assignment,結果也合出一樣的priority encoder 04/12 05:03
→ zxvc:可能non-blocking與blocking在always(*)情況下是等價的。 04/12 05:04
→ zxvc:(我指的是合出來的電路是等價的) 04/12 05:05