2012年11月9日 星期五

P6-10 序向邏輯的基礎 D Flip-Flop

 P6-10

組合邏輯電路並不會紀錄儲存以前發生過的狀況,而是直接反應輸入產生結果。
序向邏輯電路,它們會根據目前的輸出狀態決定下一次的輸出狀態


由基本邏輯閘組合而成之電路,當組合邏輯電路之輸入參數改變時,輸出參數會依據基本邏輯閘電路及輸入參數數值作立即適度之變化。



序向邏輯電路包含組合邏輯電路外還擁有記憶元件,其可分成四個部分:輸入參數、基本邏輯閘電路、輸出參數及記憶元件。由序向邏輯電路系統方塊圖得知輸出參數值是依據輸入參數、組合邏輯電路及記憶元件現在狀態值作適度的變化。



時序邏輯電路是指電路任何時刻的穩態輸出不僅取決於當前的輸入,還與前一時刻輸入形成的狀態有關。這跟組合邏輯電路相反,組合邏輯的輸出只會跟目前的輸入成一種函數關係。換句話說,時序邏輯擁有儲存元件(記憶體)來存儲信息,而組合邏輯則沒有。
從時序邏輯電路中,可以建出兩種形式的有限狀態機:
  • 摩爾型有限狀態機:輸出只跟內部的狀態有關。(因為內部的狀態只會在時脈觸發邊緣的時候改變,輸出的值只會在時脈邊緣有改變)
  • 米利型有限狀態機:輸出不只跟目前內部狀態有關,也跟現在的輸入有關係。
時序邏輯因此被用來建構某些形式的電腦記憶體,延遲跟儲存單元,以及有限狀態自動機。大部分現實的電腦電路都是混用組合邏輯跟時序邏輯。









module  D_flipflop (D,Clk,Q);
input D,Clk;
output reg Q;

always @ (posedge Clk)

     Q <= D;            // <= 非區塊指定  

endmodule






D Type Flip Flops:
Two things to note about inferring flip flops:
  • Non blocking signal assignment (<=) should always be used
  • The sensitivity list must have the keyword posedge or negedge. (also for resets)
D-type flip flopreg q;
always @ (posedge clk)
  q <= d;




D type flip flop with asynchronous resetreg q;
always @ (posedge clk or posedge reset)
  if (reset)
    q <= 1'b0;
  else
    q <= d;



  

D type flip flop with synchronous resetreg q;
always @ (posedge clk)
  if (reset)
    q <= 1'b0;
  else
    q <= d;



  

D type flip flop with gated clockreg q;
wire gtd_clk = enable && clk;
always @ (posedge gtd_clk)
  q <= d;



  

Data enbled D type flip flopreg q;
always @ (posedge clk)
  if (enable)
    q <= d;



  
  

Negative edge triggered D type flip flopreg q;
always @ (negedge clk)
  q <= d;

Latches

Latchreg q;
always @ (q or enable)
   if (enable)
      q = d;





沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...