verilog之時鍾信號的編寫2


verilog之時鍾信號的編寫2

1、時鍾信號的特點

時鍾信號除了可以根據時序一個個變化列舉出來,還可以利用其循環的變化的特點,使用循環執行語句always來實現。這種方法實現的時鍾信號可以一直執行且不需要關注每個變化點的延時。

2、基於begin-end塊的時鍾信號

initial begin
    clk=0;
    clk1=0;
    clk2=0;
end
//way1
always #1 clk=~clk;
//way2
always begin
    #1 clk1=~clk1;
    #1 clk2=~clk2;
end

方法1是最方便的時鍾信號,只有一條執行語句,甚至不需要使用塊來封裝。

方法2則是使用begin-end來實現兩個時鍾信號clk1和clk2,可以簡單地分析出clk2的周期是clk1的兩倍。clk1是2系統周期,clk2是4系統周期。占空比就是50%,一條語句是無法實現其他占空比的時鍾信號的。

3、基於fork-join塊的時鍾信號

initial begin
    clk=1;
    clk1=1;
end
always fork
#1 clk=~clk;
#2 clk1=~clk1;
#3 ;
#50 ;
join

可以觀察到fork-join的時鍾信號的周期是最大延時的兩倍。每個時鍾信號的周期都是一致的。其他延時只會改變時鍾信號的相位。從這里也可以看出fork-join的塊的工作原理:先找到最大延時,其他延時執行語句在其子期間中顯示。使用fork-join可以仿真有時鍾延時的信號輸入。

4、小結

使用循環執行語句來實現時鍾信號是常用的方法。一般的時鍾信號的激勵也是利用循環執行來模擬的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM