數(shù)字電路簡(jiǎn)介:
用數(shù)字信號(hào)完成對(duì)數(shù)字量進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算的電路稱為數(shù)字電路,或數(shù)字系統(tǒng)。由于它具有邏輯運(yùn)算和邏輯處理功能,所以又稱數(shù)字邏輯電路?,F(xiàn)代的數(shù)字電路由半導(dǎo)體工藝制成的若干數(shù)字集成器件構(gòu)造而成。邏輯門是數(shù)字邏輯電路的基本單元。存儲(chǔ)器是用來存儲(chǔ)二進(jìn)制數(shù)據(jù)的數(shù)字電路。
數(shù)字電路特點(diǎn):
1、 同時(shí)具有算術(shù)運(yùn)算和邏輯運(yùn)算功能
數(shù)字電路是以二進(jìn)制邏輯代數(shù)為數(shù)學(xué)基礎(chǔ),使用二進(jìn)制數(shù)字信號(hào),既能進(jìn)行算術(shù)運(yùn)算又能方便地進(jìn)行邏輯運(yùn)算(與、或、非、判斷、比較、處理等),因此極其適合于運(yùn)算、比較、存儲(chǔ)、傳輸、控制、決策等應(yīng)用。
2、 實(shí)現(xiàn)簡(jiǎn)單,系統(tǒng)可靠
以二進(jìn)制作為基礎(chǔ)的數(shù)字邏輯電路,可靠性較強(qiáng)。電源電壓的小的波動(dòng)對(duì)其沒有影響,溫度和工藝偏差對(duì)其工作的可靠性影響也比模擬電路小得多。
3、 集成度高,功能實(shí)現(xiàn)容易
集成度高,體積小,功耗低是數(shù)字電路突出的優(yōu)點(diǎn)之一。電路的設(shè)計(jì)、維修、維護(hù)靈活方便,隨著集成電路技術(shù)的高速發(fā)展,數(shù)字邏輯電路的集成度越來越高,集成電路塊的功能隨著小規(guī)模集成電路(SSI)、中規(guī)模集成電路(MSI)、大規(guī)模集成電路(LSI)、超大規(guī)模集成電路(VLSI)的發(fā)展也從元件級(jí)、器件級(jí)、部件級(jí)、板卡級(jí)上升到系統(tǒng)級(jí)。電路的設(shè)計(jì)組成只需采用一些標(biāo)準(zhǔn)的集成電路塊單元連接而成。對(duì)于非標(biāo)準(zhǔn)的特殊電路還可以使用可編程序邏輯陣列電路,通過編程的方法實(shí)現(xiàn)任意的邏輯功能。
數(shù)字電路的劃分:
1.按功能分為組合邏輯電路和時(shí)序邏輯電路兩大類。
前者在任何時(shí)刻的輸出,僅取決于電路此刻的輸入狀態(tài),而與電路過去的狀態(tài)無關(guān),它們不具有記憶功能。常用的組合邏輯器件有加法器、譯碼器、數(shù)據(jù)選擇器等。后者在任何時(shí)候的輸出,不僅取決于電路此刻的輸入狀態(tài),而且與電路過去的狀態(tài)有關(guān),它們具有記憶功能。
2.按結(jié)構(gòu)分為分立元件電路和集成電路。
前者是將獨(dú)立的晶體管、電阻等元器件用導(dǎo)線連接起來的電路。后者將元器件及導(dǎo)線制作在半導(dǎo)體硅片上,封裝在一個(gè)殼體內(nèi),并焊出引線的電路。集成電路的集成度是不同的。
數(shù)字電路中如何避免產(chǎn)生不必要的鎖存器方法解析:
1. if……else……結(jié)構(gòu)中缺少else
先看一個(gè)實(shí)際的例子:
用quartus綜合一下這兩個(gè)電路,看看產(chǎn)生的RTL圖是怎樣的:
左邊的電路:
右邊的電路:
由RTL視圖可以直觀的看出,左邊的電路沒有生成鎖存器,而右邊的電路生成了一個(gè)我們不想要的鎖存器(q1$latch)。左邊的電路是時(shí)序邏輯,生成觸發(fā)器,而觸發(fā)器是有使能端(en)的,使能端無效時(shí)就可以保存數(shù)據(jù),無需鎖存器。右邊的電路是組合邏輯,在en為低電平時(shí),輸出q1要保持不變,而組合邏輯沒有存儲(chǔ)元件,只能生成鎖存器來保持?jǐn)?shù)據(jù)。所以在時(shí)序邏輯中,不完整的 if…else… 結(jié)構(gòu)并不會(huì)生成鎖存器,而組合邏輯中不完整的 if…else… 結(jié)構(gòu)就會(huì)生成鎖存器。為了避免我們?cè)O(shè)計(jì)的組合邏輯中出現(xiàn)不想要的鎖存器,在使用 if…else… 結(jié)構(gòu)時(shí)一定要寫完整。把剛才例子中右邊的電路寫完整,并查看其RTL視圖如下:
寫完整后,就沒有生成鎖存器,而是生成了一個(gè)二選一的選擇器,這正是我們想要設(shè)計(jì)的。
2. case結(jié)構(gòu)中的分支沒有包含所有情況且沒有default語句
case結(jié)構(gòu)中一般要加上default語句,以保證出現(xiàn)意外情況也可以作出相應(yīng)的反應(yīng)。如果沒有加default并且case分支不完整,當(dāng)出現(xiàn)case分支中沒有列出的情況時(shí),電路狀態(tài)保持原來的狀態(tài)不變,于是就會(huì)生成鎖存器來保存狀態(tài),如下圖的電路所示:
圖中case分支中只寫了(se=0)的情況,而(se=1)的情況未給出,且沒有寫default,于是當(dāng)(se=1)時(shí),q1保持原來的值不變,這樣就產(chǎn)生了鎖存器(q1$latch)。
如果將case分支補(bǔ)全,或者加上default語句,則如下圖所示:
補(bǔ)全case分支后,就不會(huì)生成鎖存器了。
同樣,只有在組合邏輯中的case結(jié)構(gòu)才有可能產(chǎn)生鎖存器,而在時(shí)序邏輯電路中,即使case結(jié)構(gòu)中的分支不完整,也不會(huì)產(chǎn)生鎖存器,如下圖所示:
實(shí)際上,在時(shí)序邏輯中,由于觸發(fā)器具有鎖存數(shù)據(jù)的功能,所以不會(huì)生成鎖存器,鎖存器只會(huì)在組合邏輯電路中產(chǎn)生。
因此,在設(shè)計(jì)組合邏輯電路時(shí),要注意將 if…else… 結(jié)構(gòu)中的else寫完整,case結(jié)構(gòu)中一定要加上default語句,這樣可以減少綜合出鎖存器的可能性。
評(píng)論
查看更多