[問題] MUX兩種Verilog寫法的差異

看板Electronics作者 (奶綠)時間13年前 (2012/09/29 19:29), 編輯推噓7(7033)
留言40則, 8人參與, 最新討論串1/2 (看更多)
最近找工作爬科技版 發現了下面這個題目 always@(*) if(en) a <= b ; else a <= c; 與 a = en ? b : c ; 有什麼不一樣 我用Design Compiler分別合成 兩者產生的電路都是一樣的 所以我覺得應該是問blocking 與 nonblocking的差異 但是我想不出有什麼差異@@ 麻煩大家指點迷津~ PS: 這題結束後的下一題就問 如果判斷式成立 a <= b a <= c 與 a = b a = c 有什麼差別? 這我就更疑惑了XD 先謝謝大家的幫忙^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.224.87.244

09/29 23:19, , 1F
一個是CLK來才改 一個是隨時改
09/29 23:19, 1F

09/29 23:19, , 2F
喔 抱歉沒看到*
09/29 23:19, 2F

09/29 23:23, , 3F
我覺得第一個是每個值改變都會跑一次 第二個是只看en
09/29 23:23, 3F

09/30 09:22, , 4F
可是用assign的寫法不就是combinational電路嗎?
09/30 09:22, 4F

09/30 09:22, , 5F
這樣怎麼會只看en值來改變? 不是要看所有input嗎?
09/30 09:22, 5F

09/30 09:23, , 6F
如果我說錯的部分麻煩糾正我~ 謝謝^^
09/30 09:23, 6F

09/30 15:12, , 7F
題目else裡面確定是b <= c不是a <= c嗎??
09/30 15:12, 7F

09/30 15:14, , 8F
還有下一題判斷是成立那兩行是甚麼意思啊??看不懂題目QQ
09/30 15:14, 8F
※ 編輯: simcityjerry 來自: 125.224.87.106 (09/30 15:37)

09/30 15:39, , 9F
謝謝lovepy糾正~ 我已經改過來了~
09/30 15:39, 9F

09/30 15:40, , 10F
至於下一題他就真的是這樣寫@@ 所以我也看不懂XD
09/30 15:40, 10F

09/30 15:44, , 11F
可以問一下原文在哪裡嗎??
09/30 15:44, 11F

09/30 15:45, , 12F
第一題若真的是我說那樣 只是用不同方式描述 電路應該一樣
09/30 15:45, 12F

09/30 19:11, , 13F
第一項用"*"是可以,可是裡面也用"=","<="是給sequential
09/30 19:11, 13F

09/30 19:14, , 14F
第二項容易用錯,systemverilog都用alway_comb形容combinati
09/30 19:14, 14F

09/30 19:14, , 15F
nal, 就個人經驗啦...
09/30 19:14, 15F

09/30 19:17, , 16F
抱歉阿 以為原PO想問這兩項表示combinational有何不同
09/30 19:17, 16F

09/30 19:18, , 17F
嗯 第一項要加clock才會成sequential電路,是nonblocking
09/30 19:18, 17F

09/30 19:26, , 18F
加clock一定要用<=,沒clock就是combinational,<=或=都可以
09/30 19:26, 18F

09/30 19:35, , 19F
第一項不是b或c有變動才看en? 第二項看en,就馬上傳b或c給a
09/30 19:35, 19F

09/30 21:04, , 20F
我剛剛去科技版搜原文竟然找不到了QQ...
09/30 21:04, 20F

09/30 21:05, , 21F
如果我沒記錯是原作者說是STEC公司考的題目~
09/30 21:05, 21F

09/30 21:44, , 22F
根據上面大家提供的意見 我自己寫test bench
09/30 21:44, 22F

09/30 21:45, , 23F
模擬結果 assign 寫法跟 always@(*) 是一樣的
09/30 21:45, 23F

09/30 21:45, , 24F
都是根據en, b, c三者變動 而變動
09/30 21:45, 24F

09/30 21:49, , 25F
應該說一句三者其一變動 而變動
09/30 21:49, 25F

09/30 21:49, , 26F
依據
09/30 21:49, 26F

10/01 22:02, , 27F
一個是有一個動就動 一個是只有動EN才動
10/01 22:02, 27F

10/01 22:03, , 28F
差別在要多用幾個DFF
10/01 22:03, 28F

10/01 22:04, , 29F
a<=b signal flow, a=b variable flow
10/01 22:04, 29F

10/01 22:05, , 30F
在verilog裡是不管的 但在VHDL裡有差
10/01 22:05, 30F

10/01 22:07, , 31F
<= real connection = register copy
10/01 22:07, 31F

10/03 22:05, , 32F
always@(*)不會產生DFF,請不要誤人,視情況會有latch
10/03 22:05, 32F

10/03 22:05, , 33F
但一定不會有DFF
10/03 22:05, 33F

10/03 22:42, , 34F
那我就想問了 LATCH電路在FPGA上 怎麼實現呢
10/03 22:42, 34F

10/03 22:44, , 35F
你講的是沒有錯 但前題是不能用LATCH
10/03 22:44, 35F

10/03 22:46, , 36F
alway could be combinational logic
10/03 22:46, 36F

10/03 22:50, , 37F
我這說的是不全正確沒錯
10/03 22:50, 37F

10/19 22:02, , 38F
合起來應該是沒差的~
10/19 22:02, 38F

08/13 19:31, , 39F
這樣怎麼會只看en值來 https://muxiv.com
08/13 19:31, 39F

09/17 23:25, , 40F
抱歉阿 以為原PO想問 https://daxiv.com
09/17 23:25, 40F
文章代碼(AID): #1GPjkMpE (Electronics)
文章代碼(AID): #1GPjkMpE (Electronics)