作者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/cn.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