放心鐵子們,本文會(huì)從最基礎(chǔ)的講起,適合剛接觸電子的童鞋,就算躺在床上,認(rèn)真看完本文你將無痛地對數(shù)字電路有個(gè)全面的了解!數(shù)電是一塊硬骨頭,對于很基礎(chǔ)的概念我會(huì)細(xì)說,對于一些進(jìn)階的概念我會(huì)盡量用語言解釋,所以我會(huì)盡量把數(shù)字電路涉及的知識點(diǎn)都囊括到,旨在讓各位先見識數(shù)字電路的全貌,為以后的學(xué)習(xí)打基礎(chǔ)!
下圖是數(shù)字電路的知識框架,棕色的知識我會(huì)詳細(xì)說說,大家可以馬上掌握,藍(lán)色的知識我會(huì)盡量用語言講明白。希望對大家有幫助。
為什么要學(xué)數(shù)電?毫不夸張地說,數(shù)電帶來了信息化時(shí)代。大家身邊所有的電器,里面都會(huì)有一塊或多塊電路板,上面基本都會(huì)有若干個(gè)芯片,芯片內(nèi)部里面跑的全是數(shù)字信號0和1。
作為當(dāng)代人類最高智慧的結(jié)晶,芯片的重要性不言而喻,而芯片的最最基本原理,就是數(shù)字電路。各位想要為國家芯片事業(yè)做貢獻(xiàn)的有志少年,數(shù)電一定要學(xué)好。
OK,下面的內(nèi)容環(huán)環(huán)相扣,事不宜遲,我們開搞!
1數(shù)制與編碼
數(shù) 制
數(shù)電里面跑的全是0和1,所以科學(xué)家們引入了二進(jìn)制。十進(jìn)制我們熟悉,9之后就進(jìn)一位;二進(jìn)制就是1之后就進(jìn)一位。10這個(gè)數(shù)字,在二進(jìn)制里,就是十進(jìn)制的2,同理1010,在二進(jìn)制里,就是十進(jìn)制的 23 + 0 + 21 + 0 = 8 + 2 = 10
除了二進(jìn)制,為了方便表示多位二進(jìn)制,還有八進(jìn)制和十六進(jìn)制。當(dāng)然只是給一個(gè)10我們不知道它是十進(jìn)制還是二進(jìn)制,所以一般我們用括號括住數(shù)字,然后在右下角表上字母BODH,表示二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。這有個(gè)小技巧,BODH可以讀作“撥電話”,現(xiàn)在你肯定記住啦哈哈。對于這四個(gè)進(jìn)制,要懂得熟練地進(jìn)行相互轉(zhuǎn)換!
二進(jìn)制當(dāng)然也可以運(yùn)算,要引入原碼、反碼、補(bǔ)碼三個(gè)概念。反碼是除了符號位全部取反,補(bǔ)碼是反碼+1,對于正數(shù),原碼反碼補(bǔ)碼不變!負(fù)數(shù)就按照上面規(guī)則變換為補(bǔ)碼后正常加減,結(jié)果再轉(zhuǎn)為原碼就是答案,有個(gè)技巧是補(bǔ)碼取反再+1就是反碼。
編 碼
上面說的十進(jìn)制轉(zhuǎn)為二進(jìn)制就是一種編碼。在數(shù)電里有很多的編碼方式,都有其意義。這里列出個(gè)人覺得挺重要的兩個(gè)。
1、格雷碼:任意相鄰的兩位之間只相差一位!在正常工作電路中,輸入時(shí)常會(huì)變化,若輸入突然變化多個(gè)位,很容易導(dǎo)致輸出不穩(wěn)定,有毛刺。若把輸入編為格雷碼,會(huì)有不錯(cuò)的效果。格雷碼在后面講到的卡諾圖化簡中會(huì)有極大的用處。
2、獨(dú)熱碼:這是最簡單的一種編碼了,每個(gè)狀態(tài)只有一位是1其他都是0,簡單且暴力,在后面設(shè)計(jì)有限狀態(tài)機(jī)的狀態(tài)變量時(shí)常常使用。
2門電路
下面進(jìn)入門電路,這里會(huì)涉及模電的知識。數(shù)電是由模電發(fā)展而來的,他們之間的緊密關(guān)系,就在門電路這章里體現(xiàn)。
學(xué)過模電那肯定很熟悉MOSFET場效應(yīng)管。在數(shù)電中,1表示高電平,0表示低電平,晶體管都處于開關(guān)狀態(tài),即可以看成一個(gè)開關(guān)。用一個(gè)NMOS和一個(gè)PMOS,NMOS下拉,PMOS上拉,就形成一個(gè)CMOS,一個(gè)CMOS就是最簡單的一個(gè)非門!??!
咱們看,輸入的A為0時(shí),上拉的PMOS導(dǎo)通,輸出C為1。輸入為1時(shí),下拉的NMOS導(dǎo)通,輸出為1,所以這個(gè)電路實(shí)現(xiàn)輸出對輸入取反的邏輯功能,就叫其非門。
常用的邏輯門還有與門:有0出0;或門:有1出1;與非門:有0出1;或非門:有1出0;
下圖中左圖是與非門,右圖是或非門。(技巧:只看下拉的NMOS!串在一起,就是與非門,并在一起,就是或非門。)
在數(shù)電,邏輯門還有許多許多:
大家也要很熟悉右邊對應(yīng)的邏輯符號哦。所以至此,了解了邏輯門的內(nèi)部構(gòu)造后,我們可以把它封裝成一個(gè)個(gè)邏輯符號,就如同我們把集成運(yùn)放電路封裝成運(yùn)放符號一樣。接下來,我們就可以放下模電,進(jìn)入純邏輯的數(shù)字電路!
3邏輯代數(shù)
在數(shù)電里,我們描述一個(gè)電路的功能,有三種方式。邏輯表達(dá)式,真值表和邏輯電路圖。
這仨說的是一個(gè)事情!就如同西紅柿和番茄。
知道了其中任何一個(gè),其他兩個(gè)你就知道了。但其中最重要的,還是真值表,我們的關(guān)注點(diǎn)更多會(huì)落在它上面。真值表一寫出來,所有東西都明了了。
真值表的左邊,是變量的所有情況,如果兩個(gè)變量,那就是有 22=4 種狀態(tài),同理三個(gè)變量就 23=8種狀態(tài)。真值表的右邊,是不同狀態(tài)輸入電路之后的輸出。我們在輸出端一般只關(guān)注1,像上面的真值表,有三個(gè)1,則把他們對應(yīng)的狀態(tài)都相或,即寫成標(biāo)準(zhǔn)與或式(最小項(xiàng)之和),
Y?= A ′ B ′ + A ′ B + A B ′
經(jīng)過化簡,就是 Y = ( A B ) ′ Y = (AB)'Y=(AB)?′。
還有一個(gè)技巧,當(dāng)輸出很多1時(shí),我們可以只關(guān)注0,那么寫出來的就是 Y′的表達(dá)式,再取反一下就行!
化 簡
邏輯表達(dá)式很復(fù)雜時(shí),我們?nèi)绾位??常用的?strong>公式法和卡諾圖法。
公式法:有大名鼎鼎的摩根公式
還有下面這個(gè)公式也是用得非常非常多,推導(dǎo)的話由左往右推比較難,我們試試由右往左推,則會(huì)非常簡單。
A+BC=(A+B)(A+C)
其他公式:
卡諾圖化簡
學(xué)過數(shù)電的童鞋都會(huì)驚嘆卡諾圖的巧妙,它的本質(zhì)就是前面說的格雷碼的邏輯相鄰性,我們拿到一個(gè)真值表,就可以畫出一個(gè)卡諾圖。三變量的輸入有8個(gè)狀態(tài),然后在對應(yīng)的狀態(tài)框框中寫上它對應(yīng)的輸出,注意,卡諾圖中的變量時(shí)用格雷碼編碼,看下圖中的BC就能知道,只有這樣才能利用上它的邏輯相鄰性,這樣,一個(gè)卡諾圖就畫好了,但這只是開始。怎么利用它進(jìn)行化簡?
下圖中我給分別相鄰的兩個(gè)1畫了兩個(gè)圈圈,圈圈代表里面的狀態(tài)相或,因?yàn)檫壿嬒噜徯?,則兩個(gè)狀態(tài)只有一位不同,所以由公式法(A+A'=1)可以消去這一位!即現(xiàn)在這兩個(gè)3位的狀態(tài) A′BC′+ABC′可以由一個(gè)2位的狀態(tài)代替,即 BC′!
因?yàn)榍懊嬲f過整個(gè)輸出的邏輯表達(dá)式就是所有輸出為1的狀態(tài)相或,所以我們把所有1圈完,得到的BC'+AB'就是輸出!所以在卡諾圖上畫圈圈就可以把一個(gè)復(fù)雜的表達(dá)式化簡。
前面是最簡單的例子,要想正確使用卡諾圖化簡,要遵守兩個(gè)游戲規(guī)則:
1、把1圈完;
2、圈大且少。
第二個(gè)尤為重要,即我們畫圈圈時(shí),圈要盡量大,還要盡量少,這樣才能最好地化簡一個(gè)表達(dá)式。
比如下圖
這樣圈正確嗎?大大地錯(cuò)誤!沒圈完1。下面這樣呢?
還是不行!因?yàn)槿Σ粔虼蟆O旅娌艦檎_:兩個(gè)圈圈搞定,結(jié)果是 CD' + AB'
卡諾圖還有很多很多的技巧,這里說不完,推薦給大家一個(gè)很好的b站視頻:BV16E411s7TE4組合邏輯電路
終于!我們來到了數(shù)電的重頭戲之一,組合邏輯電路。其實(shí)下面我們才真正開始進(jìn)入數(shù)電。
在數(shù)電中,所有的電路,可以分為兩類,一類就是組合邏輯電路,還有一類是時(shí)序邏輯電路,這倆占了數(shù)電的大半江山。對于組合邏輯電路,定義為輸出只由輸入決定。你可能會(huì)問,那還會(huì)由什么決定?還會(huì)被狀態(tài)決定!這就是時(shí)序邏輯電路的特性,等下會(huì)講,先搞定這個(gè)組合邏輯電路。
小規(guī)模集成電路SSI
如上面這個(gè)圖,電路全是由基本邏輯門組成,我們稱其為小規(guī)模集成電路,集成就是邏輯門集成了若干個(gè)晶體管嘛,而晶體管是由N型半導(dǎo)體和P型半導(dǎo)體形成,這些半導(dǎo)體是由沙子提煉的硅SI摻雜而成,怎樣,模電數(shù)電就串起來了。
對于SSI,我們無非就搞兩件事情,分析和設(shè)計(jì)。
分析:就是給我一個(gè)電路圖,我對他一頓分析得出它的功能。圖→功能
設(shè)計(jì):就是我想實(shí)現(xiàn)一個(gè)功能,通過設(shè)計(jì)畫出一個(gè)對應(yīng)電路圖。功能→圖
先看分析:現(xiàn)在我有一個(gè)電路圖:
然后我可以輕松地將他的表達(dá)式寫出,最好再用上化簡知識化簡一下:
然后由表達(dá)式我再輕松列出真值表:
由真值表,我們就能分析出它的功能!這回事一個(gè)半加器電路(C為進(jìn)位,S為和),很重要的哦。
再看看設(shè)計(jì),現(xiàn)在我們拿到一個(gè)想要實(shí)現(xiàn)的功能:
由這個(gè)功能我們列出對應(yīng)的真值表,
由真值表輕松地寫出相應(yīng)的邏輯表達(dá)式:
對著表達(dá)式,我們就能畫出它的電路圖啦!
你看,組合邏輯電路的設(shè)計(jì)是分析的逆過程,就是這么程序化,送分的。
中規(guī)模集成電路MSI
一些邏輯門組合在一起能實(shí)現(xiàn)特定的功能,比如上面講的半加器,我們將其封裝起來,就成了MSI。
上圖就把所有常見的LSI列了出來,
編碼器:如第一根引腳輸入1,則輸出為00;第二根引腳輸入1,則輸出為01,依此類推;
譯碼器:如輸入為00,則第一根引腳輸出1;如輸入為01,則第二根引腳輸出1,依此類推;
選擇器:比較兩個(gè)輸入,如相等就在相等的引腳輸出1;
加法器:半加器前面講過,全加器就是輸入多了一位以前的進(jìn)位。
譯碼器和選擇器尤為重要,因?yàn)樗鼈兒艹S?,?strong>能實(shí)現(xiàn)任意的組合邏輯表達(dá)式。
高規(guī)模集成電路LSI
同理,就是一些MSI組合在一起能表示一個(gè)更全面的功能,就將其封裝在一起,變成LSI。
不如PLD(可編程邏輯器件)和 FPGA,這章不是重點(diǎn),但我想說一下FPGA,這個(gè)芯片是相對于單片機(jī)來說的另一大控制芯片,使用硬件描述語言(HDL)編程,并行執(zhí)行代碼且性能更強(qiáng)大,目前它的缺點(diǎn)就是太貴了,我相信以后隨著成本下來,它就逐漸進(jìn)入我們生活,帶來更加智能的世界。
5觸發(fā)器
正式講時(shí)序邏輯電路之前,要講講時(shí)序邏輯電路的單位模塊,觸發(fā)器。
在平靜祥和的日子里,兩個(gè)普普通通的或非門在路上走著,非常純真無邪,
但是突然,一個(gè)科學(xué)家對它們做了這樣的處理:哈哈哈別害怕
這一搞,整個(gè)時(shí)代向前推進(jìn)了一大步!因?yàn)檫@就是RS觸發(fā)器!
我們來看看它的真值表:
相信大家都能分析出來,先說說輸入為11時(shí)為什么不允許,因?yàn)?1會(huì)得到輸出00,如果這時(shí)輸入再從11變?yōu)?0,那問題就出現(xiàn)了,電路會(huì)處于不定的狀態(tài),這肯定不行,所以就禁止了輸入為11的情況。我們重點(diǎn)看看輸入為00時(shí),當(dāng)電路的狀態(tài)Q為0時(shí),輸出為0;當(dāng)電路的狀態(tài)Q為1時(shí),輸出為1!組合邏輯電路大為震驚,因?yàn)槊髅鬏斎胧且粯拥?0,為什么輸出會(huì)不同?因?yàn)殡娐返臓顟B(tài)不同,這就是觸發(fā)器的魅力,也是時(shí)序邏輯電路的基礎(chǔ),也是數(shù)電的超級重點(diǎn)!
RS是最初的觸發(fā)器,所以會(huì)有一些小問題,隨著時(shí)代進(jìn)步,觸發(fā)器也經(jīng)歷了許多迭代,好奇的童鞋可以從你們的書上了解這段歷史,這里我直接列出現(xiàn)在用的最多的兩款觸發(fā)器:D觸發(fā)器和JK觸發(fā)器。
這兩款觸發(fā)器都有一個(gè)時(shí)鐘端,用于輸入時(shí)鐘脈沖CLK,輸出會(huì)隨著時(shí)鐘CLK的變化而刷新,且他們的時(shí)鐘觸發(fā)方式是邊沿觸發(fā),即在CLK的上升沿或下降沿觸發(fā),非常的方便。
上圖中下面的公式為觸發(fā)器的輸出方程,對于時(shí)序邏輯電路來說就是狀態(tài)方程,是需要我們記住的,相當(dāng)于這款觸發(fā)器的說明書。我們著重關(guān)注D觸發(fā)器!因?yàn)樗匠套詈唵危亲钜讓W(xué)的。
6時(shí)序邏輯電路
Finally,我們來到了數(shù)電的重中之中,也是其魅力所在,時(shí)序邏輯電路。
關(guān)于它的意義我可以再舉一個(gè)例子,有一個(gè)機(jī)器我每按一下按鈕它會(huì)依次輸出12345,這對于組合邏輯電路來說是不可能的任務(wù),因?yàn)槊恳淮屋斎攵际窍嗤陌匆幌掳粹o,為什么輸出會(huì)不同,它不理解,而時(shí)序邏輯電路說我可以!因?yàn)樗苡涀‘?dāng)前的狀態(tài),從而知道下一步應(yīng)該怎么走。
觀察上圖能知道時(shí)序邏輯電路里面也有組合邏輯電路,是由發(fā)展而來,主要是下面的那個(gè)存儲(chǔ)電路,能把電路的現(xiàn)態(tài)(現(xiàn)在的狀態(tài))給記?。亩绊懘螒B(tài)(下一次觸發(fā)的狀態(tài))。
因?yàn)闀r(shí)序邏輯電路的主角是觸發(fā)器,也正是由于觸發(fā)器,它引入了時(shí)鐘和狀態(tài)這倆重要概念,使我們能通過電路實(shí)現(xiàn)的功能更加豐富。
FSM(有限狀態(tài)機(jī))
對于時(shí)序邏輯電路,它所有的狀態(tài)變換都可以畫出來,即狀態(tài)轉(zhuǎn)換圖,就如同真值表描述了整個(gè)組合邏輯電路的功能,狀態(tài)轉(zhuǎn)換圖描述了整個(gè)時(shí)序電路的功能。這樣在不同狀態(tài)之間跳來跳去的電路或機(jī)器,我們就叫它有限狀態(tài)機(jī)(Finite State Machine)。(所以FSM肯定是時(shí)序邏輯電路)
比如下面這個(gè)就是一只貓?jiān)谝惶炖锏臓顟B(tài)變化:
這是某人一天的狀態(tài)變化:
寫專業(yè)點(diǎn)(給狀態(tài)編碼),可以是下面這樣,先別害怕,很好分析的:
FSM的分析和設(shè)計(jì)
各位應(yīng)該還記得前面組合邏輯電路的分析和設(shè)計(jì)是多么的簡單,F(xiàn)SM的分析和設(shè)計(jì)與其概念一樣,分析就是圖→功能,設(shè)計(jì)就是功能→圖,但過程很不一樣,也是很簡單的!
先看分析,現(xiàn)在我拿到一個(gè)電路圖,由兩個(gè)D觸發(fā)器組成,所以我知道這個(gè)電路狀態(tài)變量為2,即有4個(gè)狀態(tài):
由這個(gè)電路圖我可以寫出三個(gè)方程,激勵(lì)方程(輸入方程)、狀態(tài)方程和輸出方程。
激勵(lì)方程就是觸發(fā)器的輸入端的方程,D1和D0由圖看很容易寫出表達(dá)式;
狀態(tài)方程就是我們之前背的觸發(fā)器的“說明書”,有激勵(lì)方程就能輕松寫出Q1n+1和Q0n+1;
輸出方程最簡單,看著輸出端Y,寫出它的表達(dá)式就行。
由狀態(tài)方程和輸出方程就可以列出真值表!
由真值表就可以畫出這個(gè)FSM的狀態(tài)轉(zhuǎn)換圖:( X/Y 表示 輸入/輸出 ,該電路沒有輸入所以X沒有)
看著這個(gè)狀態(tài)轉(zhuǎn)換圖,我們可以發(fā)現(xiàn)它的含義,啊,原來它是我的一天的狀態(tài)變化,吃飽了就玩,玩累了就睡,睡醒了就感到餓,餓時(shí)突然有吃的,我就會(huì)“歡呼”。(歡呼代表輸出為1)
現(xiàn)在來看看設(shè)計(jì)過程!我有一個(gè)功能(我的一天狀態(tài)變化),現(xiàn)在想畫出一個(gè)實(shí)現(xiàn)該功能的電路:
先經(jīng)過狀態(tài)編碼,將吃編碼為00,玩編碼為01,餓編碼為10,睡編碼為11,歡呼定義為輸出1,ok,現(xiàn)在就可以畫出整個(gè)功能的狀態(tài)轉(zhuǎn)換圖了!
有狀態(tài)轉(zhuǎn)換圖,我們畫出對應(yīng)的真值表,也叫狀態(tài)轉(zhuǎn)換真值表:
由真值表,我們細(xì)心地先看著Y項(xiàng)寫出輸出方程,再看著Q1n+1和Q0n+1寫出狀態(tài)表達(dá)式,再由我們背的觸發(fā)器“說明書”,寫出D1和D0的激勵(lì)方程,搞定!
三個(gè)方程有了,電路圖輕松畫出!
7進(jìn)階
至此整個(gè)數(shù)電最基礎(chǔ)的知識我都講到了,雖然很基礎(chǔ),但是越基礎(chǔ)的東西越重要,其實(shí)電路的分析和設(shè)計(jì)也可以搞得很難,上面那些只是便于大家理解最簡單的例子,想要深入掌握他們還得靠日積月累的做題和鞏固,這篇文章只是幫到大家形成知識框架。
74LS160、74LS194
之后大家會(huì)學(xué)到74LS160、74LS194這兩個(gè)芯片,非常非常的重要,一個(gè)是計(jì)數(shù)芯片,一個(gè)是移位芯片,就如譯碼器和選擇器能實(shí)現(xiàn)任意組合邏輯電路,它們能實(shí)現(xiàn)任意的時(shí)序邏輯電路,所以很多題目都會(huì)考到它們,讓你用這倆芯片之一設(shè)計(jì)一個(gè)現(xiàn)實(shí)生活中的功能。
施密特觸發(fā)電路、單穩(wěn)態(tài)電路、多諧振蕩電路
這三個(gè)電路會(huì)在波形的發(fā)送與轉(zhuǎn)換這一章學(xué)習(xí)到,三個(gè)電路都能用邏輯門手搭出來,實(shí)現(xiàn)的電路有多種,但波形就是下面這樣,分別是施密特觸發(fā)電路、單穩(wěn)態(tài)電路、多諧振蕩電路。
施密特觸發(fā)電路就是輸入增大到一個(gè)A值,輸出取反,但是輸入隨后減小到A值時(shí),輸出沒變化,要繼續(xù)減小到B值,輸出再取反,然后它也還是要增大到A值,輸出才變化,這就是這電路的規(guī)則,很有意思!
單穩(wěn)態(tài)指輸出的穩(wěn)定狀態(tài)只有一個(gè),輸入刺激以下輸出可能會(huì)變,但過一段時(shí)間它會(huì)自己回到穩(wěn)態(tài)。超市的門就是單穩(wěn)態(tài),你推開之后它會(huì)自動(dòng)回到關(guān)閉狀態(tài)。
555定時(shí)器的重要性就相當(dāng)于模電中的運(yùn)放,它每一年的銷量都處于芯片的前列,因?yàn)樗唵吻姨珜?shí)用了,上面說到的三個(gè)電路也可以通過555搭建出來。因?yàn)槠邢蓿?55的知識得靠各位從書中理解了。
以下分別是555實(shí)現(xiàn)施密特觸發(fā)電路、單穩(wěn)態(tài)電路、多諧振蕩電路的電路
AD/DA電路
AD:模擬到數(shù)字轉(zhuǎn)換
DA:數(shù)字到模擬轉(zhuǎn)換
這章你們會(huì)學(xué)到如何自己手搭一個(gè)AD和DA電路。
最后再看一下數(shù)電所有知識的知識框架,希望能幫助各位對數(shù)電形成大致的了解。