[問題] VERILOG 時脈問題

看板Electronics作者 (mm)時間15年前 (2010/08/15 21:59), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/3 (看更多)
always@(posedge clk or negedge reset ) begin if(!reset) begin count=0; end else begin count1<=0; buffer<=bufin; count <=count+1; begin if(count==n) begin 判斷<=1; end end end end end always@(posedge clk ) begin if(判斷==0) begin bufout<= 1'bz; end else if(判斷==1) begin count <=0; bufout<= buffer; count1<=count1+1; begin if(count1==n) 判斷<=0; end end end endmodule 我這樣寫 實際的輸出結果會比我想要的輸出 "慢1個CLOCK" 請問是哪出問題? 也就是判斷==1 但bufout晚1個CLOCK出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.117.162.75 ※ 編輯: zx33571163 來自: 59.117.162.75 (08/15 21:59) ※ 編輯: zx33571163 來自: 59.117.162.75 (08/15 22:00)

08/15 22:51, , 1F
Combinational和Sequential絞在一起....
08/15 22:51, 1F

08/16 00:48, , 2F
先去看書分清楚sequential和combinational, 對自己比較好
08/16 00:48, 2F

08/16 08:23, , 3F
基本太差,多看點書,多看點別人的code..
08/16 08:23, 3F

08/16 10:31, , 4F
比較好奇 這樣子寫不曉得synthesis會不會過@@
08/16 10:31, 4F

08/16 10:37, , 5F
我想是你的bufout中間經過一個buffer(flip-flop)
08/16 10:37, 5F

08/16 10:38, , 6F
才讀到bufin的值 所以會晚一個CLK出現
08/16 10:38, 6F

08/16 10:40, , 7F
那個buffer感覺是多餘的 因為你的bufout本身就是flip-flop了
08/16 10:40, 7F

08/16 10:42, , 8F
還有如果要用flip-flop reset裡面都要寫完整吧
08/16 10:42, 8F
文章代碼(AID): #1CP_AeKj (Electronics)
文章代碼(AID): #1CP_AeKj (Electronics)