作者e1090128 (肥龜)
看板Electronics
標題[請益] verilog if裡的敘述沒有全部執行
時間Mon Nov 20 22:28:04 2017
各位大大好 小弟最近寫到這段程式時有個小問題
以下是我這段程式碼
else if(BLK && (!DAin || (x == (colmax-1)))) begin
s<=s+length;--------------(1)
templen<=length;----------(2)
length<=11'b0;------------(3)
tempy<=y;-----------------(4)
BLK<=0;-------------------(5)
end
跑到這段時,我用模擬看到(1)、(3)、(5)都有實現到
但(2)和(4)卻沒有執行
請問這有可能是甚麼原因造成的,要如何解決? 謝謝各位大大
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.234.232
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1511188086.A.85D.html
1F:推 tkhan: 請2f幫忙擦屁股.. 11/20 22:40
2F:→ FTICR: 真的是把verilog當作程式了... 11/21 00:36
3F:→ BellCranell: 模擬是用哪個模擬的 11/21 01:15
4F:推 mmonkeyboyy: ............. 11/21 01:25
5F:→ Jielolz: 你的判斷式 11/21 01:49
6F:→ e1090128: 我是用quartus裡的vwf跑的,但跑完後發現只有上面那三個 11/21 09:22
7F:→ e1090128: 有顯示出來,其他兩個腳位還是XX,所以判斷式應該沒問題 11/21 09:22
8F:推 hsucheng: xx就是沒給初值 11/21 11:54
9F:→ htps0763: 如果第四行結果不對,那可能是y的問題了 11/21 12:35
10F:→ e1090128: 那在請問一下,如果顯示U代表甚麼意思? 11/21 14:24
11F:→ michael6172: 可以改個寫法嗎? 不要把硬體當軟體寫,要有電路的概 11/21 14:51
12F:→ michael6172: 念 11/21 14:51
13F:→ e1090128: michael有寫過verilog嗎?你知道RTL層級的寫法嗎?你知 11/21 15:08
14F:→ e1090128: 道if也是verilog裡的語法嗎? 11/21 15:08
15F:→ FTICR: 樓上原PO好嗆... 就算是RTL層級寫法也還是要有電路的概念 11/21 18:17
16F:→ FTICR: 這完全沒說錯啊 (知道寫出來的東西合成後會是什麼) 11/21 18:18
17F:→ FTICR: Verilog中if語法大家都知道有,但沒人像你會這樣用 11/21 18:19
18F:推 mmonkeyboyy: ................ 11/21 21:44
19F:推 mmonkeyboyy: 這位版友....要不要先念點書? 11/21 21:46
20F:推 mmonkeyboyy: U這個在書上就有寫了..... 11/21 21:53
21F:→ mmonkeyboyy: XX不是沒給初值...是還沒有產生東西前的狀態unknown 11/21 21:55
22F:→ mmonkeyboyy: U是uninitializd這才是沒給初值 11/21 21:57
23F:→ mmonkeyboyy: BTW 我只是個路過的verilog小廢材 大家都太高深了 11/21 21:59
24F:→ mmonkeyboyy: 以上資料我都是google來的' 11/21 22:01
25F:→ mmonkeyboyy: 呵呵 啾咪~ 11/21 22:01
26F:→ r901042004: 建議原PO把整個always block放上來,還有用到訊號的 11/21 23:45
27F:→ r901042004: 也放上來,大家比較好抓錯 11/21 23:45
28F:→ r901042004: ^宣告 11/21 23:46
29F:→ e1090128: 請問大大if沒有像我這樣用是甚麼意思,正常的寫法是如何 11/22 00:04
30F:推 mmonkeyboyy: 我建議啦 看看state machine等章節再來 11/22 00:55
31F:→ mmonkeyboyy: 硬體語言的問題是合出來什麼並不一定知道 11/22 00:56
32F:→ mmonkeyboyy: 再加上一堆人都很"聰明"的開各種opt下去... 11/22 00:56
33F:→ mmonkeyboyy: 也許是你的老師沒教 但很多情況可以從FSM下手處理 11/22 00:57
34F:推 nova06091: 為什麼會有人回那種不明所以的答案,好像自己沒當過初 11/22 01:21
35F:→ nova06091: 學者一樣 11/22 01:21
36F:推 mmonkeyboyy: 這個我想當一兩次初學者還好 當很多次就有點..嗯@@" 11/22 01:23
37F:→ bmt891: google一下可合成性啦 11/23 06:11
38F:→ htps0763: 原po可能是看書自學,因為有些觀念錯誤給老師一看就會 11/23 18:42
39F:→ htps0763: 直接糾正了吧 11/23 18:42
40F:推 bakerly: 我猜你的templen和tempy很有可能出現在其它的always bloc 11/23 20:18
41F:→ bakerly: k 裡然後訊號打架了。 11/23 20:18
42F:→ r901042004: 同意樓上 11/23 20:44
43F:推 BellCranell: 應該是說 可能在兩個always內賦予同個變數兩次 11/24 01:20
44F:推 hsucheng: 上面那個在compile階段就會說是multi drive了吧 11/26 20:38
45F:推 ViewMoon: 給正確方向的被原PO嗆... 哈哈 11/27 12:22
46F:→ bakerly: multi drive 在vcs或nc都只是warning而以。 11/27 21:05
47F:推 Jielolz: 多重賦值跑合成才會error 11/28 02:15
48F:推 luckyBF: 先用or,and 指令寫完基本code,再來叫我debug 11/28 13:14