寄存器與鎖存器的區別


首先應該明確鎖存器和觸發器也是由與非門之類的東西構成。尤其是鎖存器,雖說數字電路定義含有鎖存器或觸發器的電路叫時序電路,但鎖存器有很多組合電路的特性。

組合電路就是一個真值表,一個函數,一組輸入對應一組輸出,當前什么輸入就根據函數得到什么輸出,實時跟蹤變化,這樣也就容易有冒險、競爭之類的問題產生毛刺。

鎖存器:電平敏感

always @ (enable)

??if (enable) ?q <= d;

 

那就是說,在enable有效的時間內,q完全跟蹤d的值,比如在這個時間內d變化了,q跟着變化,當enable失效的時候,q存儲d最后的值。

觸發器:我們把輸出只在時鍾某個時刻變化的玩意兒叫觸發器。邊沿敏感

always @ (posedge enable)

??if (enable) q <= d;

這個便是一個d觸發器。只在enable(一般大家都叫它clock)的上升沿q采樣d,而且在每個時鍾的上升沿都會采樣。

在fpga中一般避免用latch,因為在FPGA中觸發器資源豐富,不用白不用,latch由於是電平觸發的,相對觸發器來說容 易產生毛刺,電路不穩定.
latch的優點是完成同一個功能所需要的門較觸發器要少,所以在asic中用的較多

?

那最后再說寄存器,寄存器這個玩意兒是一個概念層次的東西,1個寄存器就是能存1bit數據的東西。既可以用觸發器實現也可以用鎖存器實現。以觸發器為例,由於觸發器每個時鍾上升沿都會采樣,所以觸發器會有一個反饋邏輯,當load有效的時候才會采樣d,否則保持不變。

always @ (posedge clk or negedge rst_n)

if (!rst_n)

q <= 0;

else if (load)

q <= d;

 

這便就是一個寄存器了。

 

 

1. 寄存器
 
  在實際的數字系統中,通常把能夠用來存儲一組二進制代碼的同步時序邏輯電路稱為寄存器.由於觸發器內有記憶功能,因此利用觸發器可以方便地構成寄存器。由於一個觸發器能夠存儲一位二進制碼,所以把n個觸發器的時鍾端口連接起來就能構成一個存儲n位二進制碼的寄存器。
 
2 .  鎖存器
 
       由若干個鍾控D觸發器構成的一次能存儲多位二進制代碼的時序邏輯電路。數據有效遲后於時鍾信號有效。這意味着時鍾信號先到,數據信號后到。在某些運算器電路中有時采用鎖存器作為數據暫存器。
 
3. 鎖存器與寄存器的區別:
(1)寄存器是同步時鍾控制,而鎖存器是電位信號控制。鎖存器一般由電平信號控制,屬於電平敏感型。寄存器一般由時鍾信號信號控制,屬於邊沿敏感型。

(2)寄存器的輸出端平時不隨輸入端的變化而變化,只有在時鍾有效時才將輸入端的數據送輸出端(打入寄存器),而鎖存器的輸出端平時總隨輸入端變化而變化,只有當鎖存器信號到達時,才將輸出端的狀態鎖存起來,使其不再隨輸入端的變化而變化

   可見,寄存器和鎖存器具有不同的應用場合,取決於控制方式以及控制信號 和數據之間的時間關系:若數據有效一定滯后於控制信號有效,則只能使用鎖存器;數據提前於控制信號而到達並且要求同步操作,則可用寄存器來存放數據。


免責聲明!

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



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