1.鎖存器的概念
鎖存器( latch)是電平觸發(fā)的存儲(chǔ)單元,數(shù)據(jù)存儲(chǔ)的動(dòng)作取決于輸入時(shí)鐘(或者使能)信號(hào)的電
平值,盡當(dāng)鎖存器處于使能狀態(tài)時(shí),輸出才會(huì)隨著數(shù)據(jù)輸入發(fā)生變化。
鎖存器不同于觸發(fā)器,鎖存器在不鎖存數(shù)據(jù)時(shí),輸出端的信號(hào)隨輸入信號(hào)變化,就像信號(hào)通過一
個(gè)緩存器一樣;一旦鎖存信號(hào)起鎖存作用,則數(shù)據(jù)被鎖住,輸入信號(hào)不起作用。因此鎖存器也稱為透明鎖存器, 指的是不鎖存時(shí)輸出對(duì)輸入是透明的。
2.鎖存器的結(jié)構(gòu)
下面用D鎖存器為例子來闡述這個(gè)鎖存器
?基本構(gòu)成是由四個(gè)與非門構(gòu)成,現(xiàn)在我們假設(shè) C==0,C取0當(dāng)作輸入時(shí)候,無論D取任何值 ,Rd和Sd的輸出端的輸出結(jié)果都會(huì)是 1,然后當(dāng)Rd與Sd的結(jié)果都為1作為輸入的時(shí)候,Q與~Q的狀態(tài)都保持不變。可以理解成起到了鎖存的作用,當(dāng)假設(shè) C==1 ,D==1 ,時(shí)根據(jù)邏輯電路圖可得 SD的狀態(tài)為0,Rd的狀態(tài)1,此時(shí)Q置1,~Q置數(shù)為0. 當(dāng)C==1 ,D==0,SD為1,RD為0,此時(shí)Q置數(shù)成1,~Q置數(shù)成為0;
? ? ? ?從這里看我們看出來,c==0時(shí)候,D鎖存器是起到鎖存的作用,c==1時(shí),此時(shí)輸出端Q的狀態(tài)隨著輸入D的變化而變化,此時(shí)D鎖存器和D觸發(fā)器的功能相似。
2.1鎖存器的特性表
注:Qn表示的是現(xiàn)態(tài),Qn+1表示的是次態(tài):
?可以很清楚的從表里看出C==0時(shí)刻,次態(tài)與現(xiàn)態(tài)保持一個(gè)狀態(tài),當(dāng)C==1,次態(tài)的狀態(tài)與D的輸入保持一致。
2.2鎖存器的時(shí)序波形圖
?可以看出當(dāng)處于鎖存狀態(tài)的時(shí)候,次態(tài)與上一個(gè)時(shí)刻現(xiàn)態(tài)的是一致的,高電平還處于高電平,低電平仍然處于低電平。當(dāng)C拉高時(shí)候,Q跟隨D;
2.3鎖存器在電路設(shè)計(jì)中產(chǎn)生的危害
1、時(shí)序電路設(shè)計(jì)時(shí)候會(huì)產(chǎn)生問題
2,不能過濾掉毛刺和影響電路中時(shí)序分析工具的運(yùn)用
3,進(jìn)行電路設(shè)計(jì)時(shí)應(yīng)該盡量避免鎖存器的運(yùn)用
3 具體設(shè)計(jì)例子(?if_else結(jié)構(gòu)為例)
//file name : latch.v
//file function : 設(shè)計(jì)一個(gè)鎖存器
//file version : 1.0 version
//file date : 2023/3/31
//Author :ZihangNie
//*************************************************
module latch_1 (
//輸入信號(hào)
input sys_clk ,
input a ,
input b ,
//輸出信號(hào)
output reg y
);
always @ (*) begin
if ( a == 1 ) //使能1
y = b ;
end
endmodule
注明.文件名和工程名不能直接設(shè)置成latch,因?yàn)檫@里可能會(huì)與QuartusII中的關(guān)鍵詞沖突,設(shè)置成
latch_1
QuartusII RTLviewer觀察圖
?
從RTL圖中可以產(chǎn)生了latch鎖存器,這在電路設(shè)計(jì)的時(shí)候是盡可能要避免的。
//file name latch_2.v
//file function : 消除鎖存器帶來的電路影響
//file version : 1.0version
//file date :2023\3\31
//Author :ZihangNie
//*********************************************
module latch_2 (
//input signal
input sys_clk,
input a,
input b,
//output signal
output reg y
);
always@(*) begin
if ( a == 1) begin
y = b ;
end
else begin
y = 0;
end
end
endmodule
QuartusII RTLviewer觀察圖
文章來源:http://www.zghlxwxcb.cn/news/detail-741070.html
?從RTL圖中可見latch鎖存器已經(jīng)消失了,if_else結(jié)構(gòu)中一定一定要記得設(shè)計(jì)else語句,同時(shí)case:語句中也要有default語句,這樣做可以很好的避免鎖存器的產(chǎn)生!文章來源地址http://www.zghlxwxcb.cn/news/detail-741070.html
到了這里,關(guān)于數(shù)字電路中有關(guān)latch鎖存器的心得的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!