徹底理解鎖存器,讓你不再為鎖存器頭疼!
鎖存器(latch):是電平觸發(fā)的存儲單元,數(shù)據(jù)存儲的動作(狀態(tài)轉(zhuǎn)換)取決于輸入時鐘(或者使能)信號的電平值,盡當(dāng)鎖存器處于使能狀態(tài)時,輸出才會隨著數(shù)據(jù)輸入發(fā)生變化。
分為普通鎖存器和門控鎖存器,普通鎖存器無控制信號,輸出狀態(tài)始終直接由輸入決定。在實際的數(shù)字系統(tǒng)中,為了協(xié)調(diào)各部分的工作,往往需要有一個特定的控制信號去控制鎖存器狀態(tài)轉(zhuǎn)換的時間,在控制信號無效時,輸出保持不變,不隨輸入變換;當(dāng)控制信號有效時,輸出由輸入決定,跟隨輸入變化。
①正是因為門控鎖存器在控制信號有效的期間內(nèi),都可以接收輸入信號, 所以,激勵信
號的任何變化, 都將直接引起鎖存器輸出狀態(tài)的改變。這時輸入信號若發(fā)生多次變化,輸出
狀態(tài)也可能發(fā)生多次變化,這一現(xiàn)象稱為鎖存器的空翻。
②其次,當(dāng)門控鎖存器的控制信號有效時,鎖存器就變成了一個組合電路,時序邏輯電
路的模型就等效為兩個各組合電路互為反饋的反饋系統(tǒng),因此,系統(tǒng)有可能會因為瞬態(tài)特性
不穩(wěn)定而產(chǎn)生振蕩現(xiàn)象。
觸發(fā)器(flip-flop)是邊沿敏感的存儲單元,數(shù)據(jù)存儲的動作(狀態(tài)轉(zhuǎn)換)由某一信號
的上升或者下降沿進行同步的(限制存儲單元狀態(tài)轉(zhuǎn)換在一個很短的時間內(nèi)) 。(鐘控 D 觸
發(fā)器其實就是 D 鎖存器,邊沿 D 觸發(fā)器才是真正的 D 觸發(fā)器)
觸發(fā)器分為兩種,一種是主從觸發(fā)器和邊沿觸發(fā)器。主從觸發(fā)器在時鐘有效期內(nèi) (主觸
發(fā)器) 接收數(shù)據(jù),在時鐘邊沿輸出狀態(tài)轉(zhuǎn)換。邊沿觸發(fā)器在時鐘邊沿期間, 觸發(fā)器才接收數(shù)
據(jù)并使輸出狀態(tài)轉(zhuǎn)換。
目前,主從觸發(fā)器基本上已經(jīng)很少見了,實際使用的大都是邊沿觸發(fā)器。
寄存器(register):用來暫時存放參與運算的數(shù)據(jù)和運算結(jié)果。在實際的數(shù)字系統(tǒng)中,
通常把能夠用來存儲一組二進制代碼的同步時序邏輯電路稱為寄存器。
區(qū)別與聯(lián)系:由于觸發(fā)器內(nèi)有記憶功能,因此利用觸發(fā)器可以方便地構(gòu)成寄存器。由于
一個觸發(fā)器能夠存儲一位二進制碼,所以把 n 個觸發(fā)器的時鐘端口連接起來就能構(gòu)成一個存
儲 n 位二進制碼的寄存器。
從寄存數(shù)據(jù)的角度來講,寄存器和鎖存器的功能是相同的;它們的區(qū)別在于寄存器是同
步時鐘控制,而鎖存器是電位信號控制。
一般的設(shè)計規(guī)則是:在絕大多數(shù)設(shè)計中避免產(chǎn)生鎖存器。它會讓您設(shè)計的時序完蛋,并
且它的隱蔽性很強,非老手不能查出。鎖存器最大的危害在于不能過濾毛刺 (使能信號有效
時,輸出狀態(tài)可能隨輸入多次變化,產(chǎn)生空翻) 。這對于下一級電路是極其危險的。所以,
只要能用 D 觸發(fā)器的地方,就不用鎖存器。
基本概念:
觸發(fā)器是指有時鐘邊沿觸發(fā)的存儲單元。鎖存器指一個由信號而不是時鐘控制的電平敏
感的設(shè)備。
鎖存器的工作原理:
鎖存器不同于觸發(fā)器,鎖存器在不鎖存數(shù)據(jù)時,輸出端的信號隨輸入信號變化,就像信
號通過一個緩存器一樣;一旦鎖存信號起鎖存作用,則數(shù)據(jù)被鎖住,輸入信號不起作用。因
此鎖存器也稱為透明鎖存器,值得是不鎖存是輸出對輸入是透明的。
鎖存器具備下列三個缺點:
(1)對毛刺敏感,不能異步復(fù)位,因此在上電后處于不確定的狀態(tài)。
(2)鎖存器會使靜態(tài)時序分析變得非常復(fù)雜,不具備可重用性。(首先, 鎖存器沒有時
鐘參與信號傳遞,無法做 STA;其次,綜合工具會將 latch 優(yōu)化掉,造成前后仿真結(jié)果不一
致)
(3)在 PLD 芯片中,基本的單元是由查找表和觸發(fā)器組成的,若生成鎖存器反而需要
更多的資源。根據(jù)鎖存器的特點可以看出,在電路設(shè)計中,要對鎖存器特別謹(jǐn)慎,如果設(shè)計
經(jīng)過綜合后產(chǎn)生出和設(shè)計意圖不一致的鎖存器,則將導(dǎo)致設(shè)計錯誤,包括仿真和綜合。因此,
在設(shè)計中需要避免產(chǎn)生意想不到的鎖存器。
如果組合邏輯的語句完全不使用 always 語句塊,就可以保證綜合器不會綜合出鎖存器,
例如:
assign a = din ? x : y;
上述語句不需要保持信號 a 的前一個狀態(tài),因此肯定不會產(chǎn)生鎖存器。
在基于 always 的組合邏輯描述語句中容易綜合出鎖存器的地方:1:if 語句的使用中缺
少 else 語句(前提是不是始終邊沿觸發(fā));2:case 語句中沒有給出全部的情況。
從上圖可以看出綜合出來的是鎖存器。
針對這種情路可以采用一些措施來防止生成鎖存器:給輸出變量幅初值;增加 else 語
句;將鎖存器改為帶使能的觸發(fā)器。如下:
此時綜合出來的就是選擇器。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7002瀏覽量
88943 -
電平
+關(guān)注
關(guān)注
5文章
360瀏覽量
39883 -
鎖存器
+關(guān)注
關(guān)注
8文章
906瀏覽量
41496
發(fā)布評論請先 登錄
相關(guān)推薦
評論