国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

mygod22的個人空間 http://m.4huy16.com/space-uid-85252.html [收藏] [復制] [RSS]

博客

modulesim仿真clk周期與testbench程序設置不一致問題-并行塊與串行塊

已有 3067 次閱讀2013-9-5 20:23 |個人分類:FPGA| fork-jion, begin-end

問題:
請教:testbench的時鐘周期跟modelsim仿真的時鐘周期不一致問題。
我的tesbench是這樣寫的,

`timescale 10 ns/ 1 ns
module digital_led_test();
reg Rsetn;
reg clk;                                             
wire [7:0]  CODE;
wire [1:0]  L_EN;

digital_led i1 ( 
        .CODE(CODE),
        .L_EN(L_EN),
        .Rsetn(Rsetn),
        .clk(clk)
);
initial                                                
begin
clk=0;
Rsetn=0;                                                                                                                 
end
initial
begin
$display("\tclk,\tRsetn,\tCODE[7:0],");
$monitor("\t%b,\t%b,\t%d",clk,Rsetn,CODE[7:0]);
end

always                                                                   
begin
#5 clk=!clk; 
#10 Rsetn=1;                                              
end                                                    
endmodule

我的原意是是輸出每5個周期(5*10ns=50ns)翻轉一次,那么一個時鐘周期應該是100ns。
但是modelsim仿真出的clk的波形周期卻和我原意不一樣。
下面是用modelsim仿真的波形。
QQ圖片20130905115348.jpg 
modelsim仿真理論上不太可能出錯,那么就是我前面的計算方法有問題,可能是我理解的問題。
請各位大神指教我前面的計算方法哪里出錯了,新手,要是問的太低級還請見諒,不吝賜教!先謝過!

解答:
always                                                                   
begin
#5 clk=!clk; 
#10 Rsetn=1;                                              
end
begin-end是串行塊,串行塊中的語句順序執行,執行了5+10=15個周期以后clk的值才會更新,所以才會有300ns的clk周期出現。用fork-jion并行塊就沒問題了。
fork-jion并行塊是并行執行,
例:
begin
regb=rega;
regc=rega;
end
//執行結束rega=regb=regc;
//begin-end串行塊中的每條語句前面的延時都相當于前一條語句執行結束的時間。當第二條語句執行行,regb的值已經更新。
fork
regb=rega;
regc=regb
jion
//執行結束regb=rega,regc=regb原值。
//fork-jion并行塊,每條語句前面的延時都是相對于該并行塊的起始執行時間,第二條語句執行時regb的值仍然是fork-jion執行起始的值。



路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部