1 定義
1.1 鎖存器(latch)
????鎖存器是一種由電平觸發(fā)的存儲單元,為異步電路,數(shù)據(jù)存儲的動作取決于輸入信號的電平值,只要輸入發(fā)生變化,輸出即隨之發(fā)生變化。
1.2 觸發(fā)器(flip-flop)
????觸發(fā)器是邊沿敏感的存儲單元,數(shù)據(jù)存儲的動作由某一信號的上升或者下降沿進(jìn)行同步的,即輸出數(shù)據(jù)只在信號的上升沿或者下降沿到來時被改變。
1.3 寄存器(register)
????1、寄存器用來存放數(shù)據(jù)的一些小型存儲區(qū)域,用來暫時存放參與運算的數(shù)據(jù)和運算結(jié)果,是一種常用的時序邏輯電路,但這種邏輯電路只包含存儲電路。
????2、寄存器的存儲電路是由鎖存器或觸發(fā)器構(gòu)成的,因為一個鎖存器或觸發(fā)器能存儲1位二進(jìn)制數(shù),所以由N個鎖存器或觸發(fā)器可以構(gòu)成N位寄存器。
2 比較
2.1 鎖存器(Latch)危害即產(chǎn)生原因
????1、危害:
- 鎖存器容易產(chǎn)生毛刺;
- 鎖存器的出現(xiàn)使得靜態(tài)時序分析變得更加復(fù)雜;
- 鎖存器在ASIC設(shè)計中應(yīng)該說比ff要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff來組成鎖存器,這樣就浪費了資源;
????2、產(chǎn)生原因:
- 不完整的if或者case語句;
- 不完整的敏感信號列表;
- 輸入信號沒有對應(yīng)的輸出;
????3,綜合來看,鎖存器的產(chǎn)生總是與電路的不完整有關(guān)系,因此在編寫verilog代碼時,最好對于if語句和case語句一定要做到完全描述,最常用的方法就是總是加上else和default。
2.2 寄存器和鎖存器的區(qū)別
????
- 寄存器受同步時鐘信號控制,而鎖存器受輸入信號控制,前者是邊緣敏感型電路,后者則是電平敏感型電路。
- 寄存器的輸出端平時不隨輸入端的變化而變化,只有在時鐘有效時才將輸入端的數(shù)據(jù)送輸出端(打入寄存器),而鎖存器的輸出端平時總隨輸入端變化而變化,只有當(dāng)鎖存器信號到達(dá)時,才將輸出端的狀態(tài)鎖存起來,使其不再隨輸入端的變化而變化。
2.3 鎖存器和觸發(fā)器的區(qū)別
- 鎖存器同所有的輸入信號相關(guān),當(dāng)輸入信號變化時鎖存器就變化,沒有時鐘端;觸發(fā)器受時鐘控制,只有在時鐘觸發(fā)時才采樣當(dāng)前的輸入,產(chǎn)生輸出。
- 鎖存器是電平觸發(fā),非同步控制。在使能信號有效時鎖存器相當(dāng)于通路,在使能信號無效時鎖存器保持輸出狀態(tài)。觸發(fā)器由時鐘沿觸發(fā),同步控制。
- 鎖存器對輸入電平敏感(輸出隨輸入的變化而變化),受布線延遲影響較大,很難保證輸出沒有毛刺產(chǎn)生;觸發(fā)器則不易產(chǎn)生毛刺。
3 結(jié)構(gòu)
3.1 鎖存器基本結(jié)構(gòu)
????1、鎖存器分為普通鎖存器和門控鎖存器,普通鎖存器無控制信號,輸出狀態(tài)始終直接由輸入決定。而在實際的數(shù)字系統(tǒng)中,為了協(xié)調(diào)各部分的工作,往往需要有一個特定的控制信號去控制鎖存器狀態(tài)轉(zhuǎn)換的時間,在控制信號無效時,輸出保持不變,不隨輸入變換;當(dāng)控制信號有效時,輸出由輸入決定,跟隨輸入變化。
3.2 觸發(fā)器基本結(jié)構(gòu)
????觸發(fā)器為邊緣敏感型,因此其分為上升沿觸發(fā)和下降沿觸發(fā)。文章來源:http://www.zghlxwxcb.cn/news/detail-663777.html
參考
????https://blog.csdn.net/h_kingone/article/details/56671517
????https://blog.csdn.net/Times_poem/article/details/85986055文章來源地址http://www.zghlxwxcb.cn/news/detail-663777.html
到了這里,關(guān)于FPGA中鎖存器(latch)、觸發(fā)器(flip-flop)以及寄存器(register)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!