鎖存器(Latch)是數(shù)字邏輯電路中很重要的一種基本電路,常見的鎖存器包括三個端口:數(shù)據(jù)輸入口、數(shù)據(jù)輸出口、使能端。當(dāng)使能端為高電平時,輸入口的數(shù)據(jù)直接送到輸出口,此時輸入輸出口可以看成是直接連通的;當(dāng)使能端為低電平時,輸出口的數(shù)據(jù)保持之前的數(shù)據(jù)不變,無論輸入口的數(shù)據(jù)怎么變化,輸出都保持不變,就是把原來的狀態(tài)鎖存下來了(所以才叫鎖存器)。鎖存器與觸發(fā)器的區(qū)別在于:**鎖存器是電平觸發(fā),而觸發(fā)器是邊沿觸發(fā)。**鎖存器在不鎖存數(shù)據(jù)時,輸出隨輸入變化;但一旦數(shù)據(jù)鎖存時,輸入對輸出不產(chǎn)生任何影響。數(shù)字電路設(shè)計中,不規(guī)范的描述語言,往往會產(chǎn)生意想不到的鎖存器,導(dǎo)致綜合出的數(shù)字電路出現(xiàn)邏輯錯誤。在數(shù)字電路中,產(chǎn)生意外的鎖存器的情況一般有以下兩種:1、if…else…語句結(jié)構(gòu)中沒有else是不是在所有情況下,只要if后邊沒有else就會產(chǎn)生鎖存器呢?(1)缺少else時,先看時序電路代碼和RTL圖:(1)缺少else時,時序電路的RTL圖生成的是一個FDRE,即D型觸發(fā)器,沒有生成鎖存器。(2)缺少else時,組合邏輯電路的RTL圖中生成了一個LDCE,即帶異步復(fù)位的鎖存器 。(2) if…else…完整時,先看時序電路代碼和RTL圖:(1)if…else,結(jié)構(gòu)完整時,時序電路的RTL圖生成的還是一個FDRE,即D型觸發(fā)器,與沒有else時結(jié)果一樣。(2)if…else,結(jié)構(gòu)完整時,組合邏輯電路的RTL圖中生成了一個LUT2,即查找表,不再生成鎖存器了 。在時序電路中,if…else…結(jié)構(gòu)完整與否對是否生成鎖存器沒有關(guān)系在組合邏輯電路中,if…else…結(jié)構(gòu)完整與否,直接影響組合邏輯電路是否生成鎖存器。在組合邏輯電路中,if…else…結(jié)構(gòu)不完整時會導(dǎo)致電路生成不必要的鎖存器,可能會導(dǎo)致綜合出的組合邏輯電路的邏輯是錯誤的。2、case結(jié)構(gòu)中的分支沒有包含所有情況且沒有default語句、此種情況經(jīng)測試,與if…else…結(jié)構(gòu)是否完整的結(jié)果是一樣的。此處就省略去一萬個字了。因此,在設(shè)計組合邏輯電路時,要注意將 if…else… 結(jié)構(gòu)中的else寫完整,case結(jié)構(gòu)中一定要加上default語句,這樣可以減少綜合出鎖存器的可能性。
歡迎關(guān)注至芯科技
至芯官網(wǎng):www.zxopen.com
至芯科技技術(shù)論壇:www.fpgaw.com
至芯科技淘寶網(wǎng)址:
https://zxopen.taobao.com
至芯科技FPGA初級課程(B站):
https://space.bilibili.com/521850676
至芯科技FPGA在線課程(騰訊課堂):
https://zxopenbj.ke.qq.com/
至芯科技-FPGA 交流群(QQ):282124839
更多資料下載歡迎注冊http://www.fpgaw.com
掃碼加微信回復(fù)加群
邀請您加入FPGA學(xué)習(xí)交流群
歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
原文標(biāo)題:關(guān)于FPGA中鎖存器的生成:if語句和case語句的完整性影響
文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
原文標(biāo)題:關(guān)于FPGA中鎖存器的生成:if語句和case語句的完整性影響
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
相關(guān)推薦
D鎖存器(Data Latch)和SR鎖存器(Set-Reset Latch)是數(shù)字電路中常見的
發(fā)表于 08-28 09:16
?223次閱讀
電子發(fā)燒友網(wǎng)站提供《信號完整性與電源完整性-電源完整性分析.pdf》資料免費下載
發(fā)表于 08-12 14:31
?14次下載
鎖存器電路概述 定義與功能 鎖存器(Latch)是數(shù)字電路中
發(fā)表于 07-23 11:29
?220次閱讀
在現(xiàn)代電子通信和數(shù)據(jù)處理系統(tǒng)中,信號完整性(Signal Integrity, SI)是一個至關(guān)重要的概念。它涉及信號在傳輸過程中的質(zhì)量保持,對于確保系統(tǒng)性能和穩(wěn)定性具有決定性的影響。本文將從信號
發(fā)表于 05-28 14:30
?649次閱讀
的用法和功能。 一、Assign語句 Assign語句的定義和語法 Assign語句用于在HDL中連續(xù)賦值,它允許在設(shè)計中為信號或變量分配一
發(fā)表于 02-22 16:24
?1557次閱讀
單片機中的if語句是一種條件語句,用于根據(jù)不同的條件執(zhí)行不同的代碼塊。在程序執(zhí)行過程中,條件語句用來決定是否執(zhí)行特定的代碼段。在單片機編程
發(fā)表于 01-05 14:04
?1259次閱讀
單片機中的for語句是一種常見的循環(huán)控制結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼塊,可以簡化程序的編寫和減少代碼量。本文將詳細(xì)介紹單片機中for語句的運用。 一、for
發(fā)表于 01-05 14:02
?1523次閱讀
Oracle數(shù)據(jù)庫是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有強大的SQL查詢功能。Oracle執(zhí)行SQL查詢語句的步驟包括編寫SQL語句、解析SQL語句、生成執(zhí)行計劃、執(zhí)行SQL
發(fā)表于 12-06 10:49
?775次閱讀
expression的值與value2的值匹配時執(zhí)行的代碼塊 break ;... default : // 當(dāng)expression的值與所有case中的值都不匹配時執(zhí)行的代碼塊 } 以下是關(guān)于switch
發(fā)表于 11-30 16:05
?713次閱讀
在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據(jù)某個表達(dá)式的值來執(zhí)行不同的代碼塊。下面是關(guān)于switch
發(fā)表于 11-30 14:40
?1321次閱讀
是的,"case" 后面可以跟多個語句。在編程語言中,"case" 通常被用于 switch 語句中,用于檢查一個變量或表達(dá)式是否匹配某個特定的值。當(dāng)匹配成功時,可以執(zhí)行一個或多個
發(fā)表于 11-30 14:19
?4717次閱讀
,并按照順序進(jìn)行比較,匹配時就跳轉(zhuǎn)到滿足條件的語句執(zhí)行。所以,可以對case的值依照發(fā)生的可能性進(jìn)行排序,把最有可能的放在第一位,這樣可以提高性能。 此外,在case
發(fā)表于 11-20 18:16
?655次閱讀
SELECT語句是SQL(Structured Query Language,結(jié)構(gòu)化查詢語言)中的一種查詢語句,用于從數(shù)據(jù)庫中檢索數(shù)據(jù)。它是數(shù)據(jù)庫操作中最常用和基本的
發(fā)表于 11-17 16:23
?1361次閱讀
SELECT語句是SQL中最基本和最重要的語句之一。它被用于從數(shù)據(jù)庫中檢索數(shù)據(jù)。在本文中,我們將詳細(xì)介紹SELECT語句的基本格式和各個組成部分。 SELECT
發(fā)表于 11-17 15:10
?2359次閱讀
上學(xué)時,老師說判斷語句要把條件寫全, **不然會生成鎖存器,做項目時又說多比特寄存器信號的賦值一
發(fā)表于 11-09 12:28
?1398次閱讀
評論