[問題] verilog疑問

看板Electronics作者 (CSC)時間8年前 (2017/10/06 15:13), 8年前編輯推噓10(10018)
留言28則, 8人參與, 8年前最新討論串1/1
各位大大大家好~ 我在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

10/06 18:53, 8年前 , 1F
q2沒初值,q2[3]是x,if無法判定。
10/06 18:53, 1F

10/06 19:20, 8年前 , 2F
Q2沒initial value
10/06 19:20, 2F

10/06 22:04, 8年前 , 3F
到底是誰在教HDL都沒教要放初值的
10/06 22:04, 3F
抱歉沒有打清楚,我只擷取always的部分,我都有設定初值,但是同樣是計數功能,第一 段程式執行q2卻沒信號,但第三段卻有正常運作 ※ 編輯: cscin218 (180.217.187.191), 10/06/2017 22:28:40

10/06 23:46, 8年前 , 4F
第一段可能是combinational loop導致失敗吧,請問lattic
10/06 23:46, 4F

10/06 23:46, 8年前 , 5F
e的模擬是算真實電路模擬嗎,還是純rtl sim
10/06 23:46, 5F
我第一個是真實電路的時候沒波形出來,但是用modelsim模擬時卻有

10/07 00:18, 8年前 , 6F
不貼清楚很難抓藥
10/07 00:18, 6F
J大 其實我想問的是關於除頻器的寫法,為什麼網路上查都沒人用always@(clk)的寫法而是都 有加正緣觸發的,所以我就試了一下卻發現在真實電路上無法動作 ※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:08:10

10/07 01:14, 8年前 , 7F
沒給正負緣 想像一下會怎樣
10/07 01:14, 7F
沒給正負緣的話,每當clk改變值時就做一次always內的流程,應該是這樣子吧!? ※ 編輯: cscin218 (180.217.203.132), 10/07/2017 01:26:42

10/07 08:18, 8年前 , 8F
if(Q2[3]=1) or if(Q2[3]==1) ???
10/07 08:18, 8F

10/07 09:51, 8年前 , 9F
樓上 nice catch
10/07 09:51, 9F

10/07 10:45, 8年前 , 10F
lin大 正確
10/07 10:45, 10F
不好意思今天出門現在才看到 這個是筆誤,不是這個的問題… ※ 編輯: cscin218 (111.246.128.198), 10/07/2017 23:25:21 因為我用modelsim模擬時是正常的但是燒到電路中就不行,我想了解的是是不是燒到電路中有哪些用法是無法轉成電路,所以導致cpld無法正常運作,想看看有沒有人遇到跟我類似的事情嗎? ※ 編輯: cscin218 (111.246.128.198), 10/07/2017 23:35:48

10/07 23:44, 8年前 , 11F
所以你有合成嗎
10/07 23:44, 11F

10/07 23:44, 8年前 , 12F
沒寫正負緣這電路會變成組合邏輯,你第一個電路實際上不
10/07 23:44, 12F

10/07 23:44, 8年前 , 13F
知道會變成什麼東西。但不會是你想像的那樣跑。
10/07 23:44, 13F

10/07 23:47, 8年前 , 14F
依我對模擬器的印象也許模擬會正常,但合成後絕對不會如
10/07 23:47, 14F

10/07 23:47, 8年前 , 15F
你想的那樣跑。
10/07 23:47, 15F

10/08 07:29, 8年前 , 16F
樓上正解
10/08 07:29, 16F

10/08 07:32, 8年前 , 17F
想翻的人可以看IEEE STD1364 沒有edge就是組合羅輯
10/08 07:32, 17F

10/08 07:33, 8年前 , 18F
至於你模擬可能可以這樣跑是因為 edge除了01 還有xz
10/08 07:33, 18F

10/08 07:34, 8年前 , 19F
某些條件也許符合所以模擬跑得出來 具體理由我忘了
10/08 07:34, 19F

10/08 07:37, 8年前 , 20F
但可以得知道 你的態有可能進入了XZ 然後程式會補正
10/08 07:37, 20F

10/08 07:38, 8年前 , 21F
但一般這應該會有warning幾乎現代的simulator都有了
10/08 07:38, 21F

10/08 07:38, 8年前 , 22F
除非你使用的signal都是b 然後內部就會被強制改成b
10/08 07:38, 22F

10/08 07:39, 8年前 , 23F
但對於synthesis來說 他才不管 他轉成GATES之後就
10/08 07:39, 23F

10/08 07:40, 8年前 , 24F
不再考量clk (變組合羅輯了) 但simulator由於不是這
10/08 07:40, 24F

10/08 07:40, 8年前 , 25F
樣設計的 所以才造成你可能會有結果
10/08 07:40, 25F

10/08 07:40, 8年前 , 26F
如果你看不懂 就當我沒說 反正不重要 學到正確要
10/08 07:40, 26F

10/08 07:41, 8年前 , 27F
加edge就好 其他亂七八糟就不用看了
10/08 07:41, 27F

10/23 18:05, 8年前 , 28F
有glitch就死翹翹了
10/23 18:05, 28F
文章代碼(AID): #1ProqAU3 (Electronics)