看板 Electronics 關於我們 聯絡資訊
各位大大大家好~ 我在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://www.ptt.cc/bbs/Electronics/M.1507273994.A.783.html
bakerly: q2沒初值,q2[3]是x,if無法判定。10/06 18:53
BellCranell: Q2沒initial value10/06 19:20
mmonkeyboyy: 到底是誰在教HDL都沒教要放初值的10/06 22:04
抱歉沒有打清楚,我只擷取always的部分,我都有設定初值,但是同樣是計數功能,第一 段程式執行q2卻沒信號,但第三段卻有正常運作 ※ 編輯: cscin218 (180.217.187.191), 10/06/2017 22:28:40
ericute: 第一段可能是combinational loop導致失敗吧,請問lattic10/06 23:46
ericute: e的模擬是算真實電路模擬嗎,還是純rtl sim10/06 23:46
我第一個是真實電路的時候沒波形出來,但是用modelsim模擬時卻有
Jielolz: 不貼清楚很難抓藥10/07 00:18
J大 其實我想問的是關於除頻器的寫法,為什麼網路上查都沒人用always@(clk)的寫法而是都 有加正緣觸發的,所以我就試了一下卻發現在真實電路上無法動作 ※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:08:10
Jielolz: 沒給正負緣 想像一下會怎樣 10/07 01:14
沒給正負緣的話,每當clk改變值時就做一次always內的流程,應該是這樣子吧!? ※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:26:42
lin089170: if(Q2[3]=1) or if(Q2[3]==1) ???10/07 08:18
mmonkeyboyy: 樓上 nice catch 10/07 09:51
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
BellCranell: 所以你有合成嗎 10/07 23:44
bakerly: 沒寫正負緣這電路會變成組合邏輯,你第一個電路實際上不 10/07 23:44
bakerly: 知道會變成什麼東西。但不會是你想像的那樣跑。 10/07 23:44
bakerly: 依我對模擬器的印象也許模擬會正常,但合成後絕對不會如 10/07 23:47
bakerly: 你想的那樣跑。 10/07 23:47
mmonkeyboyy: 樓上正解 10/08 07:29
mmonkeyboyy: 想翻的人可以看IEEE STD1364 沒有edge就是組合羅輯 10/08 07:32
mmonkeyboyy: 至於你模擬可能可以這樣跑是因為 edge除了01 還有xz 10/08 07:33
mmonkeyboyy: 某些條件也許符合所以模擬跑得出來 具體理由我忘了 10/08 07:34
mmonkeyboyy: 但可以得知道 你的態有可能進入了XZ 然後程式會補正 10/08 07:37
mmonkeyboyy: 但一般這應該會有warning幾乎現代的simulator都有了 10/08 07:38
mmonkeyboyy: 除非你使用的signal都是b 然後內部就會被強制改成b 10/08 07:38
mmonkeyboyy: 但對於synthesis來說 他才不管 他轉成GATES之後就 10/08 07:39
mmonkeyboyy: 不再考量clk (變組合羅輯了) 但simulator由於不是這 10/08 07:40
mmonkeyboyy: 樣設計的 所以才造成你可能會有結果 10/08 07:40
mmonkeyboyy: 如果你看不懂 就當我沒說 反正不重要 學到正確要 10/08 07:40
mmonkeyboyy: 加edge就好 其他亂七八糟就不用看了 10/08 07:41
ahoyhoy: 有glitch就死翹翹了 10/23 18:05