verilog之簡單時鍾信號的編寫
1、數字時鍾信號
在數字電路中,時鍾信號是重要的一類信號,一般作為激勵源驅動時序電路。掌握時鍾信號的編寫,對於時序電路的仿真具有重要意義。所有的時序電路都需要設置時鍾信號來確認時序。這里先寫一個已知時間間隔的簡易時鍾信號。
2、基於begin-end的編寫
initial begin clk=1; #1 clk=0; #1 clk=1; #1 clk=0; end
這個編寫的邏輯非常簡單,就是根據時鍾信號的特點,一個時鍾周期變一次,根據所需的時間長度確認重復的次數。
3、基於fork-join的編寫
initial fork clk1=1; #1 clk1=0; #2 clk1=1; #3 clk1=0; #10 $stop(); join
這個代碼是使用同步進行的fork-join來實現的。這里可以看出延時時間是絕對的,不包含前面的延時。這里也可以看出每個語句之間是沒有優先級的。
4、小結
可以看到來個信號的結果是一致的。使用initial語句實現信號可以直接表示每個時間段的信號變化。對於其他測試向量來說,也可以使用這種精確的方法實現信號源的編寫。但是,在比較大的設計中,時鍾信號一般需要作用比較長的時間,使用initial會占用大量的空間。對於高度重復的信號源,可以使用always塊來實現。always塊可以一直循環執行,知道仿真結束。