[問題] verilog上的simulation問題

看板Electronics作者 (Tsk)時間11年前 (2014/06/23 19:01), 編輯推噓0(0010)
留言10則, 3人參與, 最新討論串1/1
小弟想不透,望請各位前輩幫我解答一下。 以下是我的module: module dac_write_data( CLK_IN, PLAY, IQDATA ); input CLK_IN; input PLAY; reg [13:0]REG_DATA; output [13:0]IQDATA; always@(negedge CLK_IN) begin if(!PLAY) begin REG_DATA <= 0; end else begin REG_DATA <= 14'h3fff; end end assign IQDATA = REG_DATA; endmodule ============================= 小弟的疑問是,假設我給他一個CLK,50MHz好了。 一開始的PLAY都是LOW-level的電位(0),在某一個時刻的CLK的pos edge的同時, PLAY也同時拉為HIGH-level(1)並且保持HIGH-level,可是為什麼在經過20ns之後IQDATA 的值就改為14'h3fff??? 為什麼不是經過60ns之後才改變為14'h3fff??? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.181.206 ※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1403521315.A.1AB.html

06/23 19:04, , 1F
我這裡先只用functional simulation而已
06/23 19:04, 1F

06/23 19:20, , 2F
functional模擬對有clock觸發電路結果會有問題吧??
06/23 19:20, 2F

06/23 20:13, , 3F
50MHz的話應該是半T=10ns之後IQDATA就會變成14'h3fff吧
06/23 20:13, 3F

06/23 20:24, , 4F
chester102大..對是10ns我打錯...
06/23 20:24, 4F

06/23 20:25, , 5F
我應該改問一下為什麼不是30ns才改值??
06/23 20:25, 5F

06/23 20:27, , 6F
這個module應該是在negedge觸發的那個瞬間啟動才對啊
06/23 20:27, 6F

06/23 20:36, , 7F
假設時間點t是clock跟play正緣,t+10就是clock負緣
06/23 20:36, 7F

06/23 20:37, , 8F
就會進到always,而且play=1所以IQDATA就變14'h3fff了
06/23 20:37, 8F

06/23 21:10, , 9F
我剛剛在做了一次,原來是我搞錯了性質..
06/23 21:10, 9F

06/23 21:12, , 10F
感謝chester102大..幫我找到盲點...感激不盡
06/23 21:12, 10F
文章代碼(AID): #1Jg0aZ6h (Electronics)