-
鎖存器
鎖定
鎖存器描述
只有在有鎖存信號時輸入的狀態被保存到輸出,直到下一個鎖存信號。通常只有0和1兩個值。
累加Latch:
鎖存器原理
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使能鎖存器將地址信息鎖存在外設的地址端,然後送數據信息和讀寫使能信號,在指定的地址進行讀寫操作。
鎖存器注意事項
並不是一定要接鎖存器,要看其地址線和數據線的安排,只有數據和地址線複用的情況下才會需要鎖存器,其目的是防止在傳數據時,地址線被數據所影響。 這是由單片機數據與地址總線複用造成的,接 RAM 時加鎖存器是為了鎖存地址信號。
如果單片機的總線接口只作一種用途,不需要接鎖存器;如果單片機的總線接口要作兩種用途,就要用兩個鎖存器。例如:一個口要控制兩個 LED,對第一個 LED 送數據時,“打開”第一個鎖存器而“鎖住”第二個鎖存器,使第二個 LED 上的數據不變。對第二個 LED 送數據時,“打開”第二個鎖存器而“鎖住”第一個鎖存器,使第一個 LED 上的數據不變。如果單片機的一個口要做三種用途,則可用三個鎖存器,操作過程相似。然而在實際應用中,我們並不這樣做,只用一個鎖存器就可以了,並用一根 I/O 口線作為對鎖存器的控制之用(接 74373 的LE,而OE可恆接地)。所以,就這一種用法而言,可以把鎖存器視為單片機的 I/O 口的擴展器。