[爆卦]verilog條件運算子是什麼?優點缺點精華區懶人包

為什麼這篇verilog條件運算子鄉民發文收入到精華區:因為在verilog條件運算子這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者e1090128 (肥龜)看板Electronics標題[請益] verilog條件運算子問題請...


小弟最近給子電路寫output時有個小問題
以下是我的程式碼
output wire [9:0] oDATA
reg chg;
wire js=chg;
assign oDATA=(js == 1'b1) ? {sub[10:3],2'b0}:10'b0;

關於sub的部分都是我之間的運算式,之前都有確認是正常的
有問題的是我oDATA的部分像上面這樣寫會有問題,實際跑FPGA出來會不正常
但不用條件運算式直接寫
assign oDATA={sub[10:3],2'b0};
是可以正常執行的,請問各位大大這是甚麼原因造成的?有甚麼辦法解決嗎?
謝謝大家

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.234.232
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1507709013.A.CF3.html
hsucheng: 為什麼還要再宣告一個wire? 10/11 18:44
mmonkeyboyy: 為什麼要reg chg才對 10/11 20:19
mmonkeyboyy: 我想正確答案都不我和一樓講的那個 你只其實有一個不 10/11 20:24
mmonkeyboyy: 太合理的東西被你宣告了XD 10/11 20:25
mmonkeyboyy: 你可以再想想 拿掉一個東西我想電路就會正確了 10/11 20:26
mmonkeyboyy: 你可以查查assign if的用法 10/11 20:26
e1090128: wire oDATA是試驗時用的,應該可以不需要,chg寫reg 是 10/11 22:02
e1090128: 因為有寫在always 裡,但怕是判別式裡不能用reg 才有改 10/11 22:02
e1090128: 成wire 10/11 22:02
mmonkeyboyy: 所以你知道那裡有問題了嗎? 10/11 22:42
mmonkeyboyy: BTW 你那樣寫 態一樣會繼承 所以根本沒差 10/11 22:43
mmonkeyboyy: 那是硬體電路 不要用軟體想法去想 那是一條線 10/11 22:43
e1090128: 有問題的就是assign那條不能用條件運算子使用,會出錯, 10/11 23:06
e1090128: 想知到為什麼不能這樣使用,並想知到如何解決,因為我看 10/11 23:06
e1090128: 到的書都沒有寫到這部分,感謝 10/11 23:06
mmonkeyboyy: @_@ 你把 output "wire" 的wire拿掉看看 10/11 23:10
mmonkeyboyy: 一個小觀念 reg 不是一定指register 10/11 23:14
mmonkeyboyy: 它指的是一個會變化的信號 10/11 23:14
mmonkeyboyy: wire就一定是 wire了 是一條線連過去這樣 10/11 23:14
mmonkeyboyy: 我記得uc berkeley有一篇小文件講這個 講很仔細 10/11 23:21
mmonkeyboyy: 很多目前你synthesis不過 儲simulate會過都是這樣 10/11 23:22
Jielolz: wire js; 10/12 01:41
Jielolz: assign js = chg; 10/12 01:41
e1090128: J大的這方法試過了也不太行 10/12 16:32
BellCranell: 改成output reg [9:0] oDATA 10/12 20:15
amistad: 為什麼要用FPGA 看不懂的方式去寫?直接按範例方式去寫就 10/12 20:48
amistad: 好。一般複雜的combination logic 習慣用 always@(*) 方 10/12 20:49
amistad: 式去寫。FPGA 弄不出來,也沒有可能他根本搞不清楚你要 10/12 20:49
amistad: 要做什麼。 10/12 20:50
amistad: 與其花時間在探索語法問題上,除非你要寫FPGA compiler, 10/12 20:51
amistad: 不然建議專注在主要的問題上。 10/12 20:52
bakerly: 你有寫出來的部分都沒問題,問題一定出在沒寫出來的部分 10/12 21:33
bakerly: 。 10/12 21:33
tkhan: 屎拉一半就要別人幫忙擦屁股.. 10/12 22:52
mmonkeyboyy: output 不用改就是reg了 因為那個只有在有always才要 10/12 23:15
mmonkeyboyy: 我也同意樓上 最近一堆這種文@_@ 真的是老師沒教好 10/12 23:16
mmonkeyboyy: 然後都是丟上來請大家幫忙debug debug有沒有用都不知 10/12 23:16
mmonkeyboyy: 第一句有點 output不用改reg就是了 除非是always 10/12 23:17
BellCranell: 有點像是在隔空抓藥的感覺 ... 10/12 23:23
ericute: 問題應該是你沒寫出來的地方,其他部分補上來看看 10/12 23:27
ericute: 加油 10/12 23:28
BellCranell: 要不要貼chg的部分... 10/13 02:33
e1090128: 謝謝bakerly和ericute兩位大大的提醒,問題真的是出在al 10/13 16:54
e1090128: always裡,因為chg訊號不同步而出錯,現已修正好成功了 10/13 16:55
e1090128: 因為我是自己學,實驗室也沒有其他人會,在網路上也找 10/13 16:56
e1090128: 不太到相關的論壇可以問問題,如果有人知道相關的 10/13 16:58
e1090128: verilog請跟大家一起分享學習一下,謝謝 10/13 16:58
mmonkeyboyy: 網路上有好多相關教學文件 先看一下吧q_q 10/13 20:19
mmonkeyboyy: 結果你其實還沒有遇到跑不過的問題Q_Q 10/13 20:19
mmonkeyboyy: 那個FPGA COMPILER已經好聰明了orz 10/13 20:20
e1090128: 我是覺得編譯器不過的還有方向,但過了後有結果錯誤就很 10/13 21:36
e1090128: 麻煩了 10/13 21:36
mmonkeyboyy: a..我講的不是這件事 我講的是標準的問題 10/13 21:48
mmonkeyboyy: 不過反正很多人也不是很在乎這事就是了@_@ 10/13 21:48

你可能也想看看

搜尋相關網站