大家好,我是小小的電子之路,這是我的第31篇原創(chuàng)文章,很高興與大家一起分享~
原文出自微信公眾號【小小的電子之路】
數(shù)字電路的結構雖然復雜多變,但是從本質(zhì)上來講,數(shù)字電路只有組合邏輯電路和時序邏輯電路兩大類。
組合邏輯電路不具備記憶功能,其輸出只取決于輸入,與電路所處的狀態(tài)無關;
時序邏輯電路具備記憶功能,其輸出不僅與輸入有關,而且還與電路所處的狀態(tài)有關。
在Verilog HDL語言中,組合邏輯電路與時序邏輯電路有著不同的描述方法。
組合邏輯的描述方法一般有兩種,分別是:
(1)always @(電平敏感信號)、always @(*)
(2)assign
時序邏輯的描述方法一般是:
(1)always @(邊沿敏感信號)
下面通過具體的代碼與仿真來演示一下Verilog HDL中組合邏輯與時序邏輯的描述。
1、Verilog HDL代碼
該代碼描述了一個時序邏輯電路和兩個組合邏輯電路,具體分別是:
(1)時序邏輯:敏感邊沿為clk的上升沿與rst的下降沿,只要其中任何一個邊沿出現(xiàn),就會執(zhí)行一次always過程塊。
(2)組合邏輯一:敏感信號為cnt,只要cnt發(fā)生變化,就會執(zhí)行一次always過程塊。
(3)組合邏輯二:連續(xù)賦值,賦值表達式始終處于執(zhí)行狀態(tài),輸出cnt_wire始終隨著cnt的變化而變化。
2、RTL電路
觀察該代碼對應的RTL電路,同樣的,電路包含了一個時序邏輯電路和兩個組合邏輯電路。
3、仿真結果
觀察仿真結果可以發(fā)現(xiàn),時序邏輯電路的輸出cnt_reg不僅與輸入信號cnt有關,而且還與clk信號與rst信號的邊沿有關,相比之下,組合邏輯電路一的輸出cnt_reg_1只取決于其輸入信號cnt和en,組合邏輯電路二的輸出cnt_wire只取決于其輸入信號cnt。