Verilog學習筆記設計和驗證篇(四)...............狀態機的置位與復位


1)狀態機的異步置位和復位

 異步置位與復位是於時鍾無關的。當異步置位或復位信號來臨時,他們立即分別置觸發器的輸出為1或0,不需要等待時鍾沿的到來。要將他們列入always塊的事件控制信號內就能觸發always的執行。

沿關鍵詞包括posedge(信號上升沿)和negedge(下降沿觸發)的時鍾,信號可以按照任意順序列出。

1)異步高電平有效置位: @(posedge clk or posedge set)

2)異步低電平有效復位: @(posedge clk or negedge set)

2)異步。高電平置位 低電平有效復位: @(posedge clk or posedge set or negedge set)

帶異步高電平有效的置位/復位的D觸發器示例:

 1 module dff(data,set,reset,q,clk,qb);
 2   input data;
 3   input set,reset,clk;
 4   output q,qb;
 5   reg q,qb;
 6   always @(posedge clk or posedge reset or posedge set )
 7    begin
 8    if(reset) begin q<=0;qb<=1; end
 9    else if(set) begin q<=1;qb<=0;end
10    else begin q<=data; qb<=~data;end
11    end
12  endmodule

2)狀態機的同步置位和復位

同步置位與復位時鍾只有在時鍾的有效跳變沿時刻置位或復位,信號才能使觸發器置位或者復位。因此不能把set和reset信號名列入always塊中,因為他們的變化不能觸發always快執行。

1)同步正跳變沿觸發: @(posedge clk )

2)同步負跳變沿觸發: @(negedge clk)

具有同步高電平有效的置位/復位的D觸發器:

 1 module dff(data,set,reset,q,clk,qb);
 2   input data;
 3   input set,reset,clk;
 4   output q,qb;
 5   reg q,qb;
 6   always @(posedge clk )
 7    begin
 8    if(reset) begin q<=0;qb<=1; end
 9    else if(set) begin q<=1;qb<=0;end
10    else begin q<=data; qb<=~data;end
11    end
12  endmodule

可見同步D觸發器和異步D觸發器的區別僅僅差別在always塊的敏感列表是否包含置位信號。


免責聲明!

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



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