作者cscin218 (CSC)
看板Electronics
標題[問題] verilog疑問
時間Fri Oct 6 15:13:12 2017
各位大大大家好~
我在LATTICE上的CPLD測試程式卻發現下列問題
首先
always @(CLK)
begin
if(Q2[3]=1)
begin
Q2 =0 ;
end
else
begin
Q2 = Q2+1;
end
end
發現連波型都沒有,所以想說是不是一定要加posedge,就在測試下面程式。
always @(CLK)
begin
if(CLK)
begin
Q2 =0 ;
end
else
begin
Q2 = 1;
end
end
測試完卻有波型,所以就懷疑是不是計數功能出了問題,所以就加了posedge測試。
always @(posedge CLK)
begin
if(Q2[3]=1)
begin
Q2 =0 ;
end
else
begin
Q2 = Q2+1;
end
end
測完發現功能正常
最後推斷:
一開始是以為沒加posedge所以無法動作,但測試了下一個程式就知道並非沒posedge的關
係,最後發現好像沒加posedge中的計數功能都會失效,不知道什麼原因所以上來問問各
位大大
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.110.129
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1507273994.A.783.html
1F:推 bakerly: q2沒初值,q2[3]是x,if無法判定。10/06 18:53
2F:→ BellCranell: Q2沒initial value10/06 19:20
3F:推 mmonkeyboyy: 到底是誰在教HDL都沒教要放初值的10/06 22:04
抱歉沒有打清楚,我只擷取always的部分,我都有設定初值,但是同樣是計數功能,第一
段程式執行q2卻沒信號,但第三段卻有正常運作
※ 編輯: cscin218 (180.217.187.191), 10/06/2017 22:28:40
4F:推 ericute: 第一段可能是combinational loop導致失敗吧,請問lattic10/06 23:46
5F:→ ericute: e的模擬是算真實電路模擬嗎,還是純rtl sim10/06 23:46
我第一個是真實電路的時候沒波形出來,但是用modelsim模擬時卻有
6F:→ Jielolz: 不貼清楚很難抓藥10/07 00:18
J大
其實我想問的是關於除頻器的寫法,為什麼網路上查都沒人用always@(clk)的寫法而是都
有加正緣觸發的,所以我就試了一下卻發現在真實電路上無法動作
※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:08:10
7F:推 Jielolz: 沒給正負緣 想像一下會怎樣 10/07 01:14
沒給正負緣的話,每當clk改變值時就做一次always內的流程,應該是這樣子吧!?
※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:26:42
8F:推 lin089170: if(Q2[3]=1) or if(Q2[3]==1) ???10/07 08:18
9F:推 mmonkeyboyy: 樓上 nice catch 10/07 09:51
10F:推 eamansf96xs: lin大 正確10/07 10:45
不好意思今天出門現在才看到
這個是筆誤,不是這個的問題…
※ 編輯: cscin218 (111.246.128.198), 10/07/2017 23:25:21
因為我用modelsim模擬時是正常的但是燒到電路中就不行,我想了解的是是不是燒到電路中有哪些用法是無法轉成電路,所以導致cpld無法正常運作,想看看有沒有人遇到跟我類似的事情嗎?
※ 編輯: cscin218 (111.246.128.198), 10/07/2017 23:35:48
11F:→ BellCranell: 所以你有合成嗎 10/07 23:44
12F:推 bakerly: 沒寫正負緣這電路會變成組合邏輯,你第一個電路實際上不 10/07 23:44
13F:→ bakerly: 知道會變成什麼東西。但不會是你想像的那樣跑。 10/07 23:44
14F:→ bakerly: 依我對模擬器的印象也許模擬會正常,但合成後絕對不會如 10/07 23:47
15F:→ bakerly: 你想的那樣跑。 10/07 23:47
16F:推 mmonkeyboyy: 樓上正解 10/08 07:29
17F:→ mmonkeyboyy: 想翻的人可以看IEEE STD1364 沒有edge就是組合羅輯 10/08 07:32
18F:→ mmonkeyboyy: 至於你模擬可能可以這樣跑是因為 edge除了01 還有xz 10/08 07:33
19F:→ mmonkeyboyy: 某些條件也許符合所以模擬跑得出來 具體理由我忘了 10/08 07:34
20F:推 mmonkeyboyy: 但可以得知道 你的態有可能進入了XZ 然後程式會補正 10/08 07:37
21F:→ mmonkeyboyy: 但一般這應該會有warning幾乎現代的simulator都有了 10/08 07:38
22F:→ mmonkeyboyy: 除非你使用的signal都是b 然後內部就會被強制改成b 10/08 07:38
23F:→ mmonkeyboyy: 但對於synthesis來說 他才不管 他轉成GATES之後就 10/08 07:39
24F:→ mmonkeyboyy: 不再考量clk (變組合羅輯了) 但simulator由於不是這 10/08 07:40
25F:→ mmonkeyboyy: 樣設計的 所以才造成你可能會有結果 10/08 07:40
26F:→ mmonkeyboyy: 如果你看不懂 就當我沒說 反正不重要 學到正確要 10/08 07:40
27F:→ mmonkeyboyy: 加edge就好 其他亂七八糟就不用看了 10/08 07:41
28F:→ ahoyhoy: 有glitch就死翹翹了 10/23 18:05