描述
鎖存器,Latch,是數字電路中的一產品種具有記憶功能的邏輯元件。鎖存,就是把信號暫存以維持某種電平狀態,在數字電路中則可以記錄二進制數位訊號“0”和“1”。
只有在有鎖存信號時輸入的狀態被保存到輸出,直到下一個鎖存信號。通常只有0和1兩個值。
邏輯結構與功能表
8位鎖存器74LS373的邏輯圖如圖所示。其中使能端G加入CP信號,D為數據信號。輸出控制信號為0時,鎖存器的數據通過三態門進行輸出。
累加Latch:
微處理器中運算器部分主要電路結構。
作用是防止算術邏輯單元(Arithmetic Logic Unit, ALU) 的輸出通過累加器(A)直接反饋到ALU的輸入端。
原理
CMOS反相器的功能是可以使輸出獲得跟輸入相反的邏輯值,那如果把兩個反相器的輸入跟輸出連線在一起會出現什麼情況呢?我們來看下圖,假設某個時刻反向器A的輸入是1,那么其輸出會是0;因為A的輸出連線到B的輸入端,即反相器B的輸入為0,那么其輸出會變為1;又因為B的輸出連線到A的輸入端,即B輸出的1反饋回A的輸入,對剛才假設的“A的輸入為1”進行了確認和加強。此時A的輸入確實為1,按A和B的輸入輸出連線關係,又走了一遍剛才的路程,如此循環,結果是反相器A的輸出穩定為0,反相器B的輸出穩定為1。這個結構的電路有兩個穩定的狀態,一般稱之為雙穩態電路。可見類似的雙穩態電路可以穩定地保持其節點中的值(數據),具有記憶功能,這就是鎖存器工作的原理。
從上面介紹可看出,首尾相接的兩個反相器構成了互相反饋耦合的形態,這就是鎖存器的基本電路結構。但是這裡是基於一個假設,假設反相器A的輸入為1,那么它的輸出為0,兩個反相器連在一起通過互相反饋加強,則能保持0和1兩個值。如果沒有這個假設,它能保存的值將是不確定的。這類似於“雞生蛋還是蛋生雞”的謎局,要將此電路當鎖存器使用,就必須打破這個“是輸入先有0,還是輸出先反饋回1”的僵局。於是給它加了兩個輸入端,由於反相器只有1個輸入,因此改用或非門來代替。電路結構如下圖,根據或非門“只要有一個輸入為1,其輸出就為0”的特性,當R為1時,雖然有反饋存在,也可以強制輸出Q=0;當S為1時,則強制輸出Q=1。這就是R-S鎖存器,R意為Reset,清零的意思;S意為Set,置1的意思。
R-S鎖存器的結構是最基本的鎖存結構,實際套用中一般會進行各種改造和擴展,至少會加一個輸入端作為控制信號,該信號有效時,鎖存器能持續地輸入、輸出數據。其控制信號一般為高電平,因此鎖存器是一種對脈衝電平敏感的存儲單元電路,可以在特定輸入脈衝電平作用下改變狀態。鎖存器的最主要作用是快取,除了特殊用途如異步電路或很簡單的邏輯,其他場合已經很少直接套用鎖存器,因為其結構簡單而且對電平敏感,不適合在主流的對時鐘敏感的積體電路中套用。一般都是使用以鎖存器為基礎的觸發器或暫存器。
套用場合
所謂鎖存器,就是輸出端的狀態不會隨輸入端的狀態變化而變化,僅在有鎖存信號時輸入的狀態才被保存到輸出,直到下一個鎖存信號到來時才改變。
鎖存器多用於積體電路中,在數字電路中作為時序電路的存儲元件,在某些運算器電路中有時採用鎖存器作為數據暫存器。
封裝為獨立的產品後也可以單獨套用,數據有效延遲於時鐘信號有效。這意味著時鐘信號先到,數據信號後到。
在某些套用中,單片機的I/O 口上需要外接鎖存器。例如,當單片機連線片外存儲器時,要接上鎖存器,這是為了實現地址的復用。假設,MCU連線埠其中的 8 路的 I/O 管腳既要用於地址信號又要用於數據信號,這時就可以用鎖存器先將地址鎖存起來。
8051訪問外部存儲器時P0口和P2口共同做為地址匯流排,P0口常接鎖存器再接存儲器。以防止匯流排間的衝突。而P2口直接接存儲器。因為單片機內部時序只能鎖住P2口的地址,如果用P0口傳輸數據時不用鎖存器的話,地址就改變了。
看看8051單片機匯流排操作的時序圖對我們很有幫助。由於數據匯流排、地址匯流排共用P0口,所以要分時復用。先送地址信息,由ALE使能鎖存器將地址信息鎖存在外設的地址端,然後送數據信息和讀寫使能信號,在指定的地址進行讀寫操作。
使用鎖存器來區分開單片機的地址和數據,8051系列的單片機用的比較多,也有一些單片機內部有地址鎖存功能,如8279就不用鎖存器了。