看板 Electronics 關於我們 聯絡資訊
小弟想不透,望請各位前輩幫我解答一下。 以下是我的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
gn00446610:我這裡先只用functional simulation而已 06/23 19:04
lovepy:functional模擬對有clock觸發電路結果會有問題吧?? 06/23 19:20
chester102:50MHz的話應該是半T=10ns之後IQDATA就會變成14'h3fff吧 06/23 20:13
gn00446610:chester102大..對是10ns我打錯... 06/23 20:24
gn00446610:我應該改問一下為什麼不是30ns才改值?? 06/23 20:25
gn00446610:這個module應該是在negedge觸發的那個瞬間啟動才對啊 06/23 20:27
chester102:假設時間點t是clock跟play正緣,t+10就是clock負緣 06/23 20:36
chester102:就會進到always,而且play=1所以IQDATA就變14'h3fff了 06/23 20:37
gn00446610:我剛剛在做了一次,原來是我搞錯了性質.. 06/23 21:10
gn00446610:感謝chester102大..幫我找到盲點...感激不盡 06/23 21:12