什么是數(shù)字電路?新手如何快速學(xué)習(xí)數(shù)字電路基礎(chǔ)?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
什么是數(shù)字電路
用數(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ù)字電路可以分為組合邏輯電路和時(shí)序邏輯電路兩大類。
學(xué)習(xí)數(shù)字電路的重要性
隨著社會(huì)的進(jìn)步和科學(xué)技術(shù)的發(fā)展,數(shù)字系統(tǒng)和數(shù)字設(shè)備已廣泛應(yīng)用于各個(gè)領(lǐng)域,大規(guī)模,超大規(guī)模集成電路技術(shù)的不斷完善使得數(shù)字電路在現(xiàn)代電子系統(tǒng)的比重越來越大,數(shù)字電路建立了根本是信號(hào)的數(shù)字處理,這門學(xué)科現(xiàn)在發(fā)展的很快,隨之,數(shù)字電路的設(shè)計(jì)理念也日新月異,可以說現(xiàn)在設(shè)備之間的競(jìng)爭(zhēng)很大程度上就是其數(shù)字處理能力的抗衡,是數(shù)電工程師在推動(dòng)系統(tǒng)的變遷,他們是系統(tǒng)的核心競(jìng)爭(zhēng)力量。
現(xiàn)在的超大規(guī)模集成芯片已經(jīng)向系統(tǒng)級(jí)芯片的方向發(fā)展,F(xiàn)PGA(Field Programmable Gate Array即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、PLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)) 已經(jīng)可以達(dá)到ASIC(ApplicaTIon Specific Intergrated Circuits即專用集成電路,是指應(yīng)特定用戶要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造的集成電路) 的水平(如XILINX的V2 pro),所以工程師們有了更大發(fā)揮空間。說句半玩笑的話,一旦實(shí)現(xiàn)軟件無線電,模電的工程師就可以下崗了。因而電子信息技術(shù)、計(jì)算機(jī)技術(shù)以及相關(guān)技術(shù)領(lǐng)域的工程師和技術(shù)人員必須掌握數(shù)字系統(tǒng)的基礎(chǔ)知識(shí)。挑戰(zhàn)和機(jī)遇并存,作為當(dāng)代大學(xué)生和有志青年,儲(chǔ)備知識(shí)、培養(yǎng)能力是當(dāng)務(wù)之急,因此學(xué)好數(shù)字電子技術(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ù)字電路的優(yōu)點(diǎn)
1、穩(wěn)定性好
數(shù)字電路不像模擬電路那樣易受噪聲的干擾。
2、可靠性高
數(shù)字電路中只需分辨出信號(hào)的有與無,故電路的組件參數(shù),可以允許有較大的變化(漂移)范圍。
3、可長(zhǎng)期存儲(chǔ)
數(shù)字信息可以利用某種媒介,如磁帶、磁盤、光盤等進(jìn)行長(zhǎng)時(shí)期的存儲(chǔ)。
4、便于計(jì)算機(jī)處理
數(shù)字信號(hào)的輸出除了具有直觀、準(zhǔn)確的優(yōu)點(diǎn)外,最主要的還是便于利用電子計(jì)算機(jī)來進(jìn)行信息的處理。
5、便于高度集成化
由于數(shù)字電路中基本單元電路的結(jié)構(gòu)比較簡(jiǎn)單,而且又允許組件有較大的分散性,這就使我們不僅可把眾多的基本單元做在同一塊硅片上,同時(shí)又能達(dá)到大批量生產(chǎn)所需要的良率。
數(shù)字電路的學(xué)習(xí)方法
數(shù)字電路所需的先修課程是電路分析基礎(chǔ)和模擬電路,后續(xù)課程是微機(jī)原理、微型計(jì)算機(jī)、接口技術(shù)等。
數(shù)字電路在研究的對(duì)象和方法上都跟模擬電路有很大的不同,表1把它們作了一個(gè)簡(jiǎn)單的對(duì)比。
顯然,模擬電路和數(shù)字電路的差異是很大的,初學(xué)者應(yīng)當(dāng)在學(xué)習(xí)方法上作一些改變,以適應(yīng)數(shù)字電路的特點(diǎn),才能取得良好的效果。
1、在數(shù)字電路中,所有的變量都?xì)w結(jié)為0和1兩個(gè)對(duì)立的狀態(tài)。通常,我們只需關(guān)心信號(hào)的有或無,電平的高或低,開關(guān)的通或斷,等等,而不必理會(huì)某個(gè)變量的詳細(xì)數(shù)值。比如電平幅值的微小變化就可能毫無意義。
2、數(shù)字電路的研究方法以邏輯代數(shù)(又稱布爾代數(shù))作為數(shù)學(xué)基礎(chǔ)。它主要研究輸入,輸出變量之間的邏輯關(guān)系,并建立了一套邏輯函數(shù)運(yùn)算及化簡(jiǎn)的方法。布爾代數(shù)又稱雙值代數(shù),由于其變量取值只有0和1兩種可能,比之模擬電路,數(shù)字電路中沒有復(fù)雜的計(jì)算問題。
3、由于數(shù)字集成電路技術(shù)的高度發(fā)展,數(shù)字電路更鮮明地體現(xiàn)了管路合一的特點(diǎn)。初學(xué)者應(yīng)充分注意這一特點(diǎn)。一般來說,學(xué)習(xí)電路結(jié)構(gòu)不是我們的目的,目的是掌握電路功能。
數(shù)字電路學(xué)習(xí)要點(diǎn)
1、數(shù)字電路基礎(chǔ)
要知道:數(shù)字信號(hào)中的1和0所表示的廣泛含義,十進(jìn)制數(shù)二進(jìn)制數(shù)十六進(jìn)制數(shù)的表示方法和相互之間的轉(zhuǎn)換方法;8421bcd碼的表示方法及其與十進(jìn)制數(shù)的轉(zhuǎn)換方法,邏輯函數(shù)邏輯變量邏輯狀態(tài)的含義,與或非所表示的邏輯事件邏輯函數(shù)真值表的含義及表示規(guī)律和方法。
會(huì)寫出:邏輯與、或、非、與非、或非、與或非、異或、同或等的邏輯表達(dá)式,真值表、邏輯符號(hào)及其規(guī)律;邏輯函數(shù)式、真值表及其邏輯圖三者之間的轉(zhuǎn)化,負(fù)邏輯符號(hào)的邏輯式。 會(huì)使用:邏輯代數(shù)化簡(jiǎn)邏輯函數(shù)式;最小項(xiàng)及其編號(hào)表示邏輯函數(shù)式,卡諾圖化簡(jiǎn)邏輯函數(shù)式。
2、集成邏輯門電路
要知道:邏輯電路高電平低電平與正負(fù)邏輯狀態(tài)的關(guān)系。cmos反相器閾值電壓uth的含義與所表示的性能。邏輯符號(hào)控制端符號(hào)上非號(hào)、小圓圈含義及其門電路上小圓圈符號(hào)含義的區(qū)別。三態(tài)門使能控制的作用及輸出高阻的含義。
會(huì)畫出:od門oc門傳輸門三態(tài)門的邏輯符號(hào)。與門、或門、非門、與非門、或非門輸入波形所對(duì)應(yīng)的輸出波形。
會(huì)使用:oc門od門傳輸門三態(tài)門的功能。 會(huì)處理:cmos集成邏輯電路的存放和焊接的措施,各種門電路空余的輸入端,各種門電路系列間的接口。
3、組合邏輯電路
要知道:組合邏輯電路的特點(diǎn),組合邏輯電路的分析步驟和設(shè)計(jì)步驟,編碼器譯碼器數(shù)據(jù)分配器和數(shù)據(jù)選擇器的含義。
會(huì)分析:用邏輯函數(shù)化簡(jiǎn)表達(dá)式、真值表描述的組合邏輯電路的邏輯功能。
會(huì)設(shè)計(jì):根據(jù)邏輯事件設(shè)定輸入和輸出變量及其邏輯狀態(tài)的含義,根據(jù)因果關(guān)系列出真值表,寫出邏輯函數(shù)式并進(jìn)行化簡(jiǎn)后的邏輯圖。
會(huì)使用:用功能表表示的各種中規(guī)模集成器件的編碼器、優(yōu)先編碼器、譯碼器、數(shù)碼顯示七段譯碼管、數(shù)據(jù)選擇器的引腳功能。
4、集成觸發(fā)器
要知道:觸發(fā)器的工作特點(diǎn)、基本rs觸發(fā)器功能、同步觸發(fā)器特點(diǎn)、脈沖邊沿觸發(fā)器工作的特點(diǎn),t和t’觸發(fā)器的功能。
會(huì)畫出:與非門、或非門組成基本rs觸發(fā)器的電路及邏輯符號(hào)圖,上升邊沿觸發(fā)的d觸發(fā)器、下邊沿觸發(fā)的jk觸發(fā)器和邏輯符號(hào)圖及其輸出波形圖,用jk和d觸發(fā)器構(gòu)成t’觸發(fā)器的連線圖。
會(huì)寫出:rs觸發(fā)器,d觸發(fā)器,jk觸發(fā)器的狀態(tài)方程式。
會(huì)背出:jk觸發(fā)器的輸出q的狀態(tài)在cp下降沿作用下與輸入jk狀態(tài)下的關(guān)系。
會(huì)使用:集成觸發(fā)器的直接置位,復(fù)位端sd、rd的狀態(tài)在各種情況下的設(shè)置方法。
5、時(shí)序邏輯電路
要知道:時(shí)序邏輯電路的工作特點(diǎn)、同步時(shí)序邏輯電路的分析方法, 寄存器和移位存儲(chǔ)器及計(jì)數(shù)器的功能,同步和異步的含義。
會(huì)使用:由功能表所反映的雙向移位寄存器、各種類型各種型號(hào)中規(guī)模集成設(shè)計(jì)器引腳功能、異步和同步清零或置數(shù)。
會(huì)畫出:用反饋清零、反饋置數(shù)方法在異步或同步情況下的n進(jìn)制計(jì)數(shù)器電路連線。
6、脈沖電路
要知道:微分積分電路功能;555定時(shí)器各引腳功能、閾值輸入端及輸出端電壓的邏輯規(guī)律;單穩(wěn)態(tài)觸發(fā)器、多諧振蕩器和施密特觸發(fā)器三種電路的基本功能。 會(huì)選用:實(shí)現(xiàn)脈寬定時(shí),延時(shí)控制脈沖,脈寬調(diào)制、波形變換、整形、聲響電源、時(shí)鐘脈沖、標(biāo)準(zhǔn)時(shí)基脈沖信號(hào)等功能的電路結(jié)構(gòu)類型。 會(huì)識(shí)別:各類結(jié)構(gòu)單穩(wěn)態(tài)觸發(fā)器對(duì)輸入觸發(fā)脈寬的要求和有效觸發(fā)的沿口類型。
會(huì)畫出:施密特觸發(fā)器的波形變換或整形的輸出波形。
會(huì)計(jì)算:各類結(jié)構(gòu)觸發(fā)器的輸出脈寬、各類結(jié)構(gòu)多諧振蕩器的振蕩頻率。
7、半導(dǎo)體存儲(chǔ)器
要知道:只讀存儲(chǔ)器(rom)和隨機(jī)存儲(chǔ)器(ram)的邏輯功能和兩者性能的區(qū)別,存儲(chǔ)器地址譯碼器的功能,地址輸入線與字線w下標(biāo)i數(shù)值的關(guān)系,字線位線存儲(chǔ)單元的區(qū)別。
prom的三種類型及其工作性能的區(qū)別,ram中兩類存儲(chǔ)單元結(jié)構(gòu)的區(qū)別。
會(huì)計(jì)算:半導(dǎo)體存儲(chǔ)器的存儲(chǔ)容量。
會(huì)畫出:ram存儲(chǔ)容量字?jǐn)U展和位擴(kuò)展的電路連線。
8、數(shù)/模和模/數(shù)轉(zhuǎn)換器
要知道:數(shù)/模和模/數(shù)轉(zhuǎn)換器的功能、r~2r倒t形電阻網(wǎng)路dac輸入數(shù)字量與輸出電壓關(guān)系式;數(shù)模轉(zhuǎn)換器的采樣保持量化和編碼含義、v~t型雙積分式和逐次逼近型兩種ad轉(zhuǎn)換器的基本工作原理和特點(diǎn)。
會(huì)計(jì)算:用電壓值表示不同位數(shù)的adc或dac的分辨率和允許最大誤差。
9、數(shù)字電路與模擬電路學(xué)習(xí)中的區(qū)別
數(shù)字電路所需的先修課程是電路分析基礎(chǔ)和模擬電路,后續(xù)課程是微機(jī)原理、微型計(jì)算機(jī)、接口技術(shù)等。
學(xué)習(xí)數(shù)字電路的注意事項(xiàng)
1、注重掌握基本概念、基本原理、基本分析和設(shè)計(jì)方法
數(shù)字電子技術(shù)發(fā)展很快,各種用途的電路千變?nèi)f化,但它們具有共同的特點(diǎn),所包含的基本原理和基本分析和設(shè)計(jì)方法是相通的。我們要學(xué)習(xí)的不是各種電路的簡(jiǎn)單羅列,不是死記硬背各種電路,而是要掌握它們的基本概念、基本原理、基本分析與設(shè)計(jì)方法。只有這樣才能對(duì)給出的任何一種電路進(jìn)行分析,或者根據(jù)要求設(shè)計(jì)出滿足實(shí)際需要的數(shù)字電路。
2、抓重點(diǎn),注重掌握功能部件的外特性
數(shù)字集成電路的種類很多,各種電路的內(nèi)部結(jié)構(gòu)及內(nèi)部工作過程千差萬別,特別是大規(guī)模集成電路的內(nèi)部結(jié)構(gòu)更為復(fù)雜。學(xué)習(xí)這些電路時(shí),不可能也沒有必要一一記住它們,主要是了解電路結(jié)構(gòu)特點(diǎn)及工作原理,重點(diǎn)掌握它們的外部特性(主要是輸入和輸出之間的邏輯功能)和使用方法,并能在此基礎(chǔ)上正確地利用各類電路完成滿足實(shí)際需要的邏輯設(shè)計(jì)。
3、注意歸納總結(jié)
數(shù)字集成電路的應(yīng)用廣泛,學(xué)好數(shù)字電子技術(shù)課程需要掌握一些典型電路,因?yàn)檫@些典型電路是構(gòu)成數(shù)字系統(tǒng)的部件。掌握它們包括了解它們的功能、結(jié)構(gòu)特點(diǎn)及應(yīng)用背景,并注意總結(jié)歸納,掌握其本質(zhì)。例如,譯碼器和數(shù)據(jù)選擇器都可以實(shí)現(xiàn)邏輯函數(shù),但兩者的區(qū)別是,一個(gè)n位二進(jìn)制輸入端的譯碼器,只能用于產(chǎn)生變量數(shù)不大于n的組合邏輯函數(shù),它可以附加門電路,實(shí)現(xiàn)多個(gè)輸出的組合邏輯電路二一個(gè)n個(gè)地址輸人端的數(shù)據(jù)選擇器,可以實(shí)現(xiàn)變量數(shù)為n+1的邏輯函數(shù)。由于數(shù)據(jù)選擇器只有一個(gè)輸出端,所以只能實(shí)現(xiàn)單個(gè)輸出的邏輯函數(shù)。
4、注意理論聯(lián)系實(shí)際
電子技術(shù)基礎(chǔ)課程學(xué)習(xí)的最終落腳點(diǎn)是對(duì)實(shí)際電路的分析和設(shè)計(jì)。經(jīng)過理論分析和計(jì)算得到 的設(shè)計(jì)結(jié)果還必須搭建實(shí)際電路進(jìn)行測(cè)試,以檢驗(yàn)是否滿足設(shè)計(jì)要求。由于電子器件的電氣特性具有分散性,理論設(shè)計(jì)出的電路在實(shí)際中也會(huì)出現(xiàn)意想不到的現(xiàn)象。例如用實(shí)驗(yàn)驗(yàn)證計(jì)數(shù)器74161和一些門構(gòu)成的六十進(jìn)制計(jì)數(shù)譯碼顯示電路。一些同學(xué)的理論設(shè)計(jì)和線路連接均沒有問題,但實(shí)驗(yàn)中出現(xiàn)了由競(jìng)爭(zhēng)冒險(xiǎn)產(chǎn)生的錯(cuò)誤計(jì)數(shù),此時(shí)只要在反饋門的輸出端與地之間接一個(gè)小電容。即可消除競(jìng)爭(zhēng)冒險(xiǎn)。
5、注意新技術(shù)的學(xué)習(xí)
電子技術(shù)的發(fā)展是以電子器件的發(fā)展為基礎(chǔ)的,新的器件層出不窮,舊的器件隨時(shí)被淘汰。因此教材中出現(xiàn)的集成電路芯片有可能已不生產(chǎn),要用發(fā)展的觀點(diǎn)使用教材。
真值表/卡諾圖
1.建立時(shí)間和保持時(shí)間
Setup time, Tsu 建立時(shí)間 在時(shí)鐘沿到來之前數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立的時(shí)間不滿足,那么數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被穩(wěn)定的打入觸發(fā)器
Hold time, Th 保持時(shí)間 時(shí)鐘沿到來之后數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果保持時(shí)間不滿足,那么數(shù)據(jù)同樣也不能被穩(wěn)定的打入觸發(fā)器
Clock-to-Output Delay,Tco 數(shù)據(jù)輸出延遲,輸出響應(yīng)時(shí)間 當(dāng)時(shí)鐘有效沿變化后,數(shù)據(jù)從輸入端到輸出端的最小時(shí)間間隔。
觸發(fā)器輸出的響應(yīng)時(shí)間,也就是觸發(fā)器的輸出在clk時(shí)鐘上升沿到來之后多長(zhǎng)的時(shí)間內(nèi)發(fā)生變化,也即觸發(fā)器的輸出延時(shí)。
數(shù)據(jù)到達(dá)時(shí)間Tda:
數(shù)據(jù)建立時(shí)間Tsu:
建立時(shí)間裕量(Setup Slack):
保持時(shí)間裕量(hold slack):
上述時(shí)序關(guān)系也解釋了為什么時(shí)鐘頻率過快或者數(shù)據(jù)延時(shí)太大,都會(huì)導(dǎo)致錯(cuò)誤的時(shí)序。(與STA靜態(tài)時(shí)序分析有關(guān))
2.施密特觸發(fā)器
當(dāng)輸入電壓高于正向閾值電壓,輸出為高;當(dāng)輸入電壓低于負(fù)向閾值電壓,輸出為低;當(dāng)輸入在正負(fù)向閾值電壓之間,輸出不改變。
這種雙閾值動(dòng)作被稱為遲滯現(xiàn)象,表明施密特觸發(fā)器有記憶性。
施密特觸發(fā)器有兩個(gè)穩(wěn)定狀態(tài),可以把邊沿變化緩慢的周期性信號(hào)變換為邊沿很陡的矩形脈沖信號(hào)。例如將三角波、正弦波等變成矩形波。
3.格雷碼
任意兩個(gè)相鄰的碼字只有一位二進(jìn)制數(shù)不同。
可以使裝置做數(shù)字步進(jìn)時(shí)只改動(dòng)最少的位元數(shù)以降低誤碼率。
4.鎖存器(latch)和觸發(fā)器(flip-flop)
都是時(shí)序邏輯(輸出不但與當(dāng)前輸入有關(guān)還和上一次的輸出有關(guān))
Latch是電平觸發(fā),輸出同所有輸入信號(hào)有關(guān),輸入信號(hào)變化,latch就變化;
Flip-flop受時(shí)鐘控制,只有在時(shí)鐘觸發(fā)時(shí)才采樣當(dāng)前輸入,產(chǎn)生輸出。
區(qū)別:latch沒有時(shí)鐘端,無法做到同步,輸出容易產(chǎn)生毛刺;如果用門電路來搭建,latch消耗的門資源比ff要少。
觸發(fā)器的電路圖由邏輯門組合而成,其結(jié)構(gòu)均由R-S鎖存器派生而來。
在R-S鎖存器的前面加一個(gè)由兩個(gè)與門和一個(gè)非門構(gòu)成的附加電路,則構(gòu)成D觸發(fā)器。
為什么需要觸發(fā)器:觸發(fā)器能保存數(shù)據(jù),保存電路狀態(tài);觸發(fā)器是在時(shí)鐘邊沿觸發(fā),用時(shí)鐘同步是讓整個(gè)電路能同步整齊劃一的工作;乘法器的計(jì)算部分是組合邏輯,不需要觸發(fā)器,計(jì)算后的結(jié)果可以用觸發(fā)器保存起來。
5.阻塞賦值(=)和非阻塞賦值(<=)
在同一個(gè)always塊中,阻塞賦值先計(jì)算RHS表達(dá)式,不允許其他verilog語句干擾,然后賦值給LHS,才允許其他賦值語句執(zhí)行。(其后的賦值語句是在前一句賦值語句結(jié)束后再開始賦值的)
非阻塞賦值開始時(shí)計(jì)算RHS的表達(dá)式,同時(shí)就更新LHS,賦值結(jié)束時(shí)停止更新。(也可以理解為一直在計(jì)算RHS,最后時(shí)刻更新LHS)這個(gè)過程中,其他verilog語句都能同時(shí)操作。
注意:
1.非阻塞賦值只能對(duì)寄存器變量賦值(reg),只能在initial和always塊中。
2.時(shí)序電路/鎖存器 建模——非阻塞賦值
用always塊建立組合邏輯電路——阻塞賦值
在同一個(gè)always塊建立時(shí)序和組合邏輯電路——非阻塞賦值
3.在一個(gè)always塊中不要既用阻塞由用非阻塞;不要在一個(gè)以上always塊中對(duì)同一個(gè)變量賦值
6.同步電路與異步電路
這里指的是時(shí)序電路。
組合邏輯電路:任意時(shí)刻的輸出僅僅取決于該時(shí)刻的輸入,與電路原來的狀態(tài)無關(guān)。
時(shí)序邏輯電路:任意時(shí)刻的輸出不僅取決于當(dāng)時(shí)的輸入,還取決于電路原來的狀態(tài)。(具有記憶功能)
根據(jù)各級(jí)觸發(fā)器時(shí)鐘端的連接方式可以將時(shí)序電路分為同步/異步。
同步時(shí)序電路所有操作都是在同一時(shí)鐘嚴(yán)格的控制下步調(diào)一致地完成的。
異步時(shí)序電路,不存在單一的主控時(shí)鐘,主要是用于產(chǎn)生地址譯碼器、FIFO和異步RAM的讀寫控制信號(hào)脈沖。
關(guān)于延時(shí):
異步電路的延時(shí):buffer或者兩級(jí)非門
同步電路的延時(shí):大的延時(shí):計(jì)數(shù)器;小的延時(shí):D觸發(fā)器打節(jié)拍
7.跨時(shí)鐘域數(shù)據(jù)交換
進(jìn)行同步處理。
單bit數(shù)據(jù):打兩拍(兩級(jí)并不能完全消除亞穩(wěn)態(tài)危害,但是大大減少其發(fā)生概率)
多bit數(shù)據(jù):異步FIFO(或雙口RAM)(以某個(gè)時(shí)鐘讀,在以某個(gè)時(shí)鐘寫,空/滿標(biāo)志是關(guān)鍵)
多位數(shù)據(jù)也可以采用保持寄存器加握手信號(hào)的方法(多數(shù)據(jù),控制信號(hào),地址信號(hào))
8.關(guān)于亞穩(wěn)態(tài)
原因:在FPGA系統(tǒng)中,如果數(shù)據(jù)傳輸中不滿足觸發(fā)器的Tsu和Th,或者復(fù)位過程中復(fù)位信號(hào)的釋放相對(duì)于有效時(shí)鐘沿的恢復(fù)時(shí)間(recovery time)不滿足,就可能產(chǎn)生亞穩(wěn)態(tài),此時(shí)觸發(fā)器輸出端Q在有效時(shí)鐘沿之后比較長(zhǎng)的一段時(shí)間處于不確定的狀態(tài),在這段時(shí)間里Q端在0和1之間處于振蕩狀態(tài),而不是等于數(shù)據(jù)輸入端D的值。這段時(shí)間稱為決斷時(shí)間(resolution time)。經(jīng)過resolution time之后Q端將穩(wěn)定到0或1上,但是穩(wěn)定到0或者1,是隨機(jī)的,與輸入沒有必然的關(guān)系。
只要系統(tǒng)中有異步元件,亞穩(wěn)態(tài)就無法避免
1.數(shù)據(jù)傳輸:數(shù)據(jù)在目的寄存器Tsu-Th時(shí)間窗口發(fā)生變化
2.異步復(fù)位:異步復(fù)位信號(hào)的撤銷時(shí)間在Trecovery(恢復(fù)時(shí)間)和Tremoval(移除時(shí)間)之內(nèi)
3.同步復(fù)位:輸入端Din為高電平,而且復(fù)位信號(hào)的撤銷時(shí)間在clk的Tsu和Th內(nèi)時(shí)候
常用FPGA器件的Tsu+Th約等于1ns,復(fù)位移除和恢復(fù)時(shí)間相加約等于1ns。
亞穩(wěn)態(tài)發(fā)生概率 = (建立時(shí)間 + 保持時(shí)間)/ 采集時(shí)鐘周期
——>
(1) 降低系統(tǒng)工作時(shí)鐘,增大系統(tǒng)周期,亞穩(wěn)態(tài)概率就會(huì)減小;
(2) 采用工藝更好的FPGA,也就是Tsu和Th時(shí)間較小的FPGA器件;
解決方法:
1.降低系統(tǒng)時(shí)鐘頻率
2.用反應(yīng)更快的FF(Tsu和Th時(shí)間較小)
3.對(duì)異步信號(hào)進(jìn)行同步處理:
多級(jí)D觸發(fā)器級(jí)聯(lián):大部分資料都說的是第一級(jí)寄存器產(chǎn)生亞穩(wěn)態(tài)后,第二級(jí)寄存器穩(wěn)定輸出概率為90%,第三極寄存器穩(wěn)定輸出的概率為99%(一般就搞個(gè)兩級(jí));
采用FIFO對(duì)跨時(shí)鐘域數(shù)據(jù)通信進(jìn)行緩沖;
4.對(duì)復(fù)位電路采用異步復(fù)位、同步釋放方式處理。
最終用sys_rst_n做系統(tǒng)的復(fù)位信號(hào)
5.改善時(shí)鐘質(zhì)量,用邊沿變化快速的時(shí)鐘信號(hào)
9.靜態(tài)功耗與動(dòng)態(tài)功耗
靜態(tài):晶體管狀態(tài)穩(wěn)定不變時(shí)的功耗(漏電流導(dǎo)致)
動(dòng)態(tài):晶體管開關(guān)狀態(tài)變化(電路翻轉(zhuǎn))產(chǎn)生的功耗(大頭 70%~90%)
10.同步復(fù)位和異步復(fù)位
也可能綜合出:
優(yōu)點(diǎn):保證信號(hào)同步;綜合為更小的觸發(fā)器;復(fù)位時(shí)時(shí)鐘可以過濾毛刺
使用同步復(fù)位可能使綜合工具無法分辨分辨復(fù)位信號(hào)和其他控制信號(hào),導(dǎo)致進(jìn)行復(fù)位的控制邏輯遠(yuǎn)離觸發(fā)器:
不好的:
優(yōu)點(diǎn):復(fù)位路徑上沒有延時(shí);綜合工具能自動(dòng)推斷出異步復(fù)位而不必加入任何綜合指令
異步復(fù)位的同步釋放:
11.補(bǔ)碼
在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示和存儲(chǔ)。原因在于,使用補(bǔ)碼,可以將符號(hào)位和數(shù)值域統(tǒng)一處理;同時(shí),加法和減法也可以統(tǒng)一處理。此外,補(bǔ)碼與原碼相互轉(zhuǎn)換,其運(yùn)算過程是相同的,不需要額外的硬件電路。
12.低功耗設(shè)計(jì)(系統(tǒng)問題)
設(shè)計(jì)層次越高,功耗改善的程度越大:
工藝級(jí)
版圖和晶體管級(jí)
PTL級(jí)和邏輯級(jí)
系統(tǒng)級(jí)
RTL級(jí):
時(shí)鐘是大頭:門控時(shí)鐘:無計(jì)算任務(wù)的部分時(shí)鐘停下
預(yù)計(jì)算技術(shù):在一定的輸入條件下,使所有或部分輸入寄存器的負(fù)載無效,從而降低功耗
邏輯優(yōu)化:減少信號(hào)的翻轉(zhuǎn)
組合邏輯優(yōu)化:提取重復(fù)出現(xiàn)表達(dá)式、表達(dá)式替換、選擇性消除節(jié)點(diǎn)
路徑平衡:幾個(gè)輸入通過不同的路徑到達(dá)同一個(gè)門,要想辦法使各個(gè)路徑差不多長(zhǎng)
系統(tǒng)級(jí):
軟硬件劃分
指令級(jí)優(yōu)化
電源管理
cache低功耗設(shè)計(jì)
總線低功耗設(shè)計(jì)
總線信號(hào)編碼,減少翻轉(zhuǎn) 例如格雷碼
算法的優(yōu)化,包括流水線設(shè)計(jì),并行設(shè)計(jì)
13.狀態(tài)機(jī)
以幾何圖形的方式描述時(shí)序邏輯的狀態(tài)轉(zhuǎn)移。
分類:
Moore:輸出(下一狀態(tài))只與當(dāng)前狀態(tài)有關(guān)
Mealy:輸出不僅與當(dāng)前狀態(tài)有關(guān),還與當(dāng)前輸入有關(guān)
狀態(tài)編碼:
二進(jìn)制編碼、 格雷碼 (Gray) 、獨(dú)熱碼 (one-hot) 、自定義編碼。
在小設(shè)計(jì)中可以考慮使用 Gray 碼或 one-hot。大設(shè)計(jì)中,不擔(dān)心邏輯資源不夠的話,可以考慮使用one-hot 編碼以提高速度。至于順序二進(jìn)制編碼,一般不予考慮。但是要達(dá)到最佳性能,需要使用更高級(jí)的編碼算法,針對(duì)給定的狀態(tài)機(jī)進(jìn)行分析。
描述方法:
兩段式:兩個(gè)always模塊,其中一個(gè)always模塊采用同步時(shí)序的方式描述狀態(tài)轉(zhuǎn)移,而另一個(gè)模塊采用組合邏輯的方式判斷狀態(tài)轉(zhuǎn)移條件、描述狀態(tài)轉(zhuǎn)移規(guī)律
三段式:
三個(gè) always 模塊,一個(gè) always 模塊采用同步時(shí)序的方式描述狀態(tài)轉(zhuǎn)移,一個(gè)采用組合邏輯的方式判斷狀態(tài)轉(zhuǎn)移條件、描述狀態(tài)轉(zhuǎn)換規(guī)律,第三個(gè) always模塊使用同步時(shí)序電路描述每個(gè)狀態(tài)的輸出
電梯:
當(dāng)前狀態(tài)current status——事件event——轉(zhuǎn)移狀態(tài)next status
自動(dòng)售貨機(jī)
14.FPGA內(nèi)部的資源
IOB:可編程輸入輸出單元,芯片與外界電路接口,完成不同電氣特性下對(duì)輸入輸出信號(hào)的驅(qū)動(dòng)與匹配要求
CLB:可編程邏輯快,多個(gè)Slice和附加邏輯構(gòu)成(Xilinx),可以實(shí)現(xiàn)組合邏輯、時(shí)序邏輯、配置成分布式RAM(LUT配置成)
BRAM:塊RAM,靈活,可以配置成單端口RAM,雙端口RAM,F(xiàn)IFO,CAM(內(nèi)容地址存儲(chǔ)器)等,可以根據(jù)需要改變位寬和長(zhǎng)度
DCM:數(shù)字時(shí)鐘管理模塊,
專用硬核:CPU,乘法器,DSP等
【 存儲(chǔ)資源:Block RAM(一些固定大小的存儲(chǔ)塊,要用就用一整塊,不占用邏輯資源,速度快);分布式RAM(靈活)】
【 可以實(shí)現(xiàn)RAM/ROM/CAM 的資源:block ram,flip-flop,LUT 】
15.FPGA開發(fā)流程
個(gè)人習(xí)慣:分析系統(tǒng)劃分模塊——個(gè)子模塊HDL實(shí)現(xiàn)——各子模塊前仿真——組成系統(tǒng)功能仿真——邏輯綜合——布局布線——靜態(tài)時(shí)序分析——后仿真——上板測(cè)試
盡量在底層模塊做邏輯,在高層盡量做例化,頂層模塊只做例化
前仿真:純粹的功能仿真,驗(yàn)證電路的功能是否符合設(shè)計(jì)要求,不考慮電路門延遲與線延遲。
后仿真:綜合后的功能仿真和布局布線后的時(shí)序仿真。是指電路已經(jīng)映射到特定的工藝環(huán)境下,綜合考慮電路的路徑延遲與門延遲的影響,驗(yàn)證電路是否在一定時(shí)序條件下滿足設(shè)計(jì)構(gòu)想的過程,是否存在時(shí)序違規(guī)。(必做)
16.FPGA——乘法器的設(shè)計(jì)
常見的有移位相加法,加法樹法,查表法,混合法……
1.移位相加
begin
dout=0;
for(i=0;i
dout=dout+((din_a_buf[i]==1)?(din_b_buf<
end
2.加法樹
上面的設(shè)計(jì)中,會(huì)產(chǎn)生大量組合邏輯,這就帶來了大量的延遲從而使乘法器的速率受到限制,為了提高速度,可以采用流水線的方法,將組合邏輯分割成一個(gè)一個(gè)小的組合邏輯,中間加上觸發(fā)器用來鎖存數(shù)據(jù),這樣就可以大大提高頻率,引入觸發(fā)器僅僅是帶來了延遲而已
begin//流水線實(shí)現(xiàn)
din_a_buf<=din_a;
din_b_buf<=din_b;
buf0<=din_b_buf[0]?din_a_buf:0;
buf1<=din_b_buf[1]?din_a_buf<<1:0;
buf2<=din_b_buf[2]?din_a_buf<<2:0;
buf3<=din_b_buf[3]?din_a_buf<<3:0;
buf4<=din_b_buf[4]?din_a_buf<<4:0;
buf5<=din_b_buf[5]?din_a_buf<<5:0;
buf6<=din_b_buf[6]?din_a_buf<<6:0;
buf7<=din_b_buf[7]?din_a_buf<<7:0;
buf01<=buf0+buf1;
buf23<=buf2+buf3;
buf45<=buf4+buf5;
buf67<=buf6+buf7;
buf02<=buf01+buf23;
buf46<=buf45+buf67;
dout<=buf02+buf46;
end
3.查找表
查表法,就是建一個(gè)表,里面存放了所有的乘法結(jié)果,乘數(shù)和被乘數(shù)用來作為地址去查找里面的乘積,此種方法可以大大提高乘法的速率,但是當(dāng)乘法位數(shù)很大時(shí)會(huì)要求產(chǎn)生很大的表格,所以此種方法適合位數(shù)較小的乘法,特別適合有一個(gè)乘數(shù)為固定的乘法,如濾波器中的乘法就可以采用此種方法設(shè)計(jì)
【查找表本質(zhì)上是一個(gè)RAM,例如4輸入的LUT可以看成有4位地址線的16x1的RAM,使用時(shí)輸入地址-查表-輸出】
17.FPGA——除法器的設(shè)計(jì)
對(duì)于2:長(zhǎng)除法: 比較 相減 移位(狀態(tài)機(jī)實(shí)現(xiàn))
16位 / 8位https://blog.csdn.net/stanary/article/details/77426697
首先被減數(shù)16位在前邊拼接7位0,拼接后不會(huì)改變被除數(shù)的大小,而且方便向下操作。拼接后將此23位數(shù)稱為mid。之后取mid的高8位與除數(shù)作比較,若大于除數(shù),則減去除數(shù),結(jié)果低位拼接一。若小于除數(shù),則驗(yàn)證最高位是不是0,若是則左移一位,結(jié)果拼接0.若不是則用高九位減去除數(shù),結(jié)果拼接兩個(gè)0.然后將差和后15位以及末尾一個(gè)0拼接,實(shí)現(xiàn)結(jié)果循環(huán)向前。在計(jì)算的同時(shí)用計(jì)數(shù)器計(jì)數(shù)來確定運(yùn)行到的位數(shù)。在進(jìn)行以上操作,最終得到結(jié)果。
8位 / 8位http://blog.chinaaet.com/justlxy/p/5100052068
將被除數(shù),擴(kuò)展成16位的數(shù)據(jù),低8位為被除數(shù)的值,高八位的值全為0。有開始信號(hào),對(duì)16位數(shù)據(jù)data賦值,然后開始運(yùn)算。比較data的高八位和除數(shù)的值,如果大于0,說明被除數(shù)大,將此時(shí)商置1,賦值給data的最低位,然后將被除數(shù)高八位減去除數(shù)。然后將data向左移位一位,繼續(xù)比較。最終計(jì)算8次后。Data的高8位數(shù)據(jù)就為所求的余數(shù),低八位就為所求的商。
或者把除法轉(zhuǎn)換成了查表、乘法和移位:
18.奇數(shù)分頻
19.靜態(tài)時(shí)序分析
STA,Static Timing Analysis
靜態(tài)時(shí)序分析(STA)告訴我們電路的實(shí)際表現(xiàn)如何,而提供約束(SDC文件,對(duì)時(shí)序的一些要求)來告訴分析工具我們希望電路的表現(xiàn)應(yīng)該是怎樣。
20.競(jìng)爭(zhēng)與冒險(xiǎn)
某一輸入變量經(jīng)過不同的傳播路徑,到達(dá)電路某個(gè)匯合點(diǎn)的時(shí)間有先有后,這種現(xiàn)象叫競(jìng)爭(zhēng);
由于競(jìng)爭(zhēng)使輸出發(fā)生瞬時(shí)錯(cuò)誤的現(xiàn)象叫冒險(xiǎn)。
判斷方法:代數(shù)法(布爾表達(dá)式中有相反的信號(hào));卡諾圖(有兩個(gè)相切的卡諾圈,并且相切處沒有被其他的卡諾圈包圍);實(shí)驗(yàn)法:示波器觀察
解決方法:加濾波電路,消除毛刺;加選通信號(hào),避開毛刺;增加冗余項(xiàng),消除邏輯冒險(xiǎn)