作者gn00446610 (Tsk)
看板Electronics
標題[問題] verilog上的simulation問題
時間Mon Jun 23 19:01:53 2014
小弟想不透,望請各位前輩幫我解答一下。
以下是我的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