0和1的故事-2
搞電源開發(fā)也有8年多了,有些厭倦,電源方面的知識點(diǎn)看了很多,懂一點(diǎn)電源,但是縱觀電子技術(shù)領(lǐng)域,僅僅懂一點(diǎn)電源技術(shù)其實(shí)是遠(yuǎn)遠(yuǎn)不夠的.于是有了搞數(shù)字電路的念頭.
之前也斷斷續(xù)續(xù)的寫了一些代碼,但總感覺是浮在表面上的功夫,對于數(shù)字電路的理解很膚淺,僅僅停留在各種邏輯門的層次.這段時(shí)間想了很多,感覺目前的自己更想學(xué)一點(diǎn)數(shù)字電路,更想把各類數(shù)字功能電路以及CPU的底層工作原理弄通,弄精.可能這又得花上八九年的時(shí)間了,那又如何呢?
活著不就是不斷地折騰嗎,是不是.
市面上鋪天蓋地的是各類功能芯片,做單片機(jī)開發(fā)的工程師應(yīng)該更有體會(huì).需要什么功能,只需要增加相應(yīng)的集成芯片就行了,至于說芯片的工作原理,也就僅僅局限在技術(shù)手冊層面的理解吧.
都知道數(shù)字電路其實(shí)就只有兩個(gè)狀態(tài),開和關(guān).但是幾乎所有的數(shù)字系統(tǒng)都是由開和關(guān)組成的,這就是數(shù)字電路的力量,也是它深深吸引我的地方.
我想把數(shù)字電路的學(xué)習(xí)研究當(dāng)作自己的業(yè)余愛好,慢慢地學(xué),慢慢地練,一點(diǎn)一點(diǎn)的積累自己的技術(shù),不急躁,不浮躁,打呆仗,打硬仗,這樣走下去總會(huì)有一點(diǎn)收獲吧.
和諸位有此志向的朋友們共勉.
先將準(zhǔn)備寫的知識點(diǎn)羅列出來吧,這一帖想接著<<【我是工程師第四季】0和1的故事>>繼續(xù)寫.先期準(zhǔn)備先寫一點(diǎn)通過三極管實(shí)現(xiàn)各類門電路,接著準(zhǔn)備通過各類邏輯門電路組建常規(guī)的功能電路,諸如計(jì)數(shù)器,加法器,鎖存器,觸發(fā)器,存儲(chǔ)器,譯碼器,移位寄存器,存儲(chǔ)器等數(shù)字電路,最終目的是想通過各類邏輯電路搭建出一個(gè)簡易的CPU出來.
工程量非常大,權(quán)當(dāng)自己的業(yè)余愛好,這樣沒有壓力,應(yīng)該可以長久的堅(jiān)持下來.
邏輯門電路搭建CPU,目前主流的方法是通過FPGA實(shí)現(xiàn),需要掌握VERLOG語言,直接用邏輯門電路制作CPU周期長,費(fèi)時(shí)費(fèi)力。不過我還是想先用邏輯門電路搭出來,這樣對于底層的原理會(huì)理解的更加透徹深刻。
先從最基本的邏輯門電路的實(shí)現(xiàn)開始吧,有興趣的朋友可以一起學(xué)習(xí)。越來越覺得把電子技術(shù)當(dāng)作愛好比當(dāng)作謀生的手段能夠走的更遠(yuǎn),走的更長。
歡迎大家一起討論學(xué)習(xí)數(shù)字電路的知識點(diǎn),以前我認(rèn)識的工程師給我灌輸?shù)挠^點(diǎn)是模擬電路難學(xué),數(shù)字電路簡單。其實(shí)真實(shí)的情況并不是如此,數(shù)字電路個(gè)人認(rèn)為非常的繁瑣,和模擬電路比較,有過之而無不及。簡簡單單的兩個(gè)狀態(tài)開和關(guān)或者說零和一就可以幾乎囊括了電子世界的大半個(gè)江山,這簡單嗎,很顯然不簡單。說數(shù)字電路簡單的朋友,其實(shí)大多數(shù)人對于數(shù)字電路的理解僅僅是門外漢都算不上的層次。
廣大的電源工程師其實(shí)很多人都不懂?dāng)?shù)字電路,至于底層驅(qū)動(dòng)的編程,CPU結(jié)構(gòu)的理解,RSIC架構(gòu)和CSIC架構(gòu)的區(qū)別,不同指令集的理解等等,其實(shí)幾乎都不懂,很多人連涉及的層次都達(dá)不到,僅僅是根據(jù)自己的理解就大言不慚的告訴新手們,數(shù)字電路簡單。個(gè)人覺得這是對廣大新手能力的扼殺,同時(shí)也是對剛?cè)腴T的新人的極大的不負(fù)責(zé)任。
接下來準(zhǔn)備寫點(diǎn)用邏輯門組成的時(shí)序邏輯和組合邏輯電路,常規(guī)的各類觸發(fā)器等等。慢慢寫,學(xué)習(xí)鴻哥好榜樣,用一輩子的時(shí)間去學(xué)習(xí),去寫帖子,寫高質(zhì)量的帖子,幫助更多的迷茫的新人們,同時(shí)也希望諸多老鳥們能一起加入進(jìn)來共同討論學(xué)習(xí),謝謝。
曾經(jīng)的我很迷茫,也理解新手們剛步入這個(gè)行業(yè)的痛楚,希望通過自己的努力能夠?qū)㈦娮蛹夹g(shù)寫的通俗大眾一點(diǎn),幫助更多的后來者掃清入門階段的障礙。限于自己的水平,我自己遇到很多問題,也是邊寫邊學(xué)邊練。我想只要勤奮,總能在電子技術(shù)有所收獲吧。
努力,和有志于電子技術(shù)行業(yè)的朋友們共勉。
首先將與門電路進(jìn)行了仿真測試,通過設(shè)定輸入時(shí)序邏輯來控制輸出端的狀態(tài),輸入和輸出的狀態(tài)關(guān)系表明與門電路一項(xiàng)重要的應(yīng)用功能,那就是使能功能,同時(shí)也表明了與門電路另一項(xiàng)功能,位與邏輯功能。
繼續(xù)更新。
最近一直在出差中,帖子的更新只能抽空進(jìn)行了。今天主要講的電路是非門電路。非門電路從邏輯控制的角度看就是輸入和輸出反相而已,實(shí)際工程應(yīng)用中,非門電路作用非常大。通過非門電路可以實(shí)現(xiàn)自激振蕩電路(方波時(shí)鐘信號),和與門以及或門組成與非門及或非門,用作緩沖器,使能控制端等等。
針對與,或,非門再進(jìn)行一些補(bǔ)充吧。
先說與門,之前帖子中提到與門有一項(xiàng)比較重要的作用就是作為使能端口的應(yīng)用。其實(shí)原理很簡單,最直觀的方法是觀察與門的真值表便可一目了然。
與門相當(dāng)于乘法運(yùn)算,有零即為零,全一才初一。作為雙輸入與門,如果其中一個(gè)門作為使能端,一直處于低電平狀態(tài),另一個(gè)輸入端口不管是何種狀態(tài),輸出固定為零。當(dāng)使能端口置一,另一輸入端口則可以將數(shù)據(jù)輸送至輸出端口。
繼續(xù)更新。今天講講譯碼器的原理。
譯碼器,顧名思義就是翻譯編碼的作用,說的專業(yè)點(diǎn),就是可以將n位輸入碼轉(zhuǎn)換為2^n的輸出碼,說的通俗點(diǎn)就是能夠用較少的信號位表示較多的信號碼。為什么這樣做呢,集成芯片中,我們知道可謂寸土寸金,通過譯碼器可以節(jié)省很多的信號走線,極大的節(jié)約了芯片內(nèi)的空間,是不是很有意思?
先給大家來個(gè)簡單一點(diǎn)的譯碼器,一二譯碼器。也就是說通過一個(gè)電信號可以表示兩個(gè)信號,原理很簡單,其實(shí)就是個(gè)非門而已。
通過上述我個(gè)人的理解描述以及電路時(shí)序圖,譯碼器的原理應(yīng)該說是比較明朗了,本質(zhì)思想就是想通過較少的電路信號表示相對較多的電信號,降低信號線的條數(shù),達(dá)到節(jié)省電路面積的作用,就這么簡單。
接下來考慮將使能電路和譯碼器電路結(jié)合起來。只有帶使能端口的譯碼器以及其他的功能數(shù)字電路才算是真正完整的數(shù)字電路。
繼續(xù)更新,上一帖講解了譯碼器,接著就得講講編碼器了。
編碼器的原理相當(dāng)于是譯碼器的逆過程,也就是將2^n的位碼轉(zhuǎn)換為n位的輸出碼。在信息的傳輸過程中,經(jīng)常涉及到編碼的過程。雖然原理很簡單,但是真正應(yīng)用都得時(shí)候,這是一門非常大的學(xué)問。比如在編碼的過程中實(shí)現(xiàn)加密,信息傳輸過程中為防止掉包現(xiàn)象,需要加入校驗(yàn)位等等操作,那是相當(dāng)?shù)姆爆崱?/strong>
我在這里僅僅講一點(diǎn)基本的編碼器的邏輯實(shí)現(xiàn)方式,方便大家理解CPU的編碼原理,先給大家來個(gè)簡單的編碼器,四二編碼器:
接下來講講八三編碼器,顧名思義就是將八位輸入碼轉(zhuǎn)換為3位輸出碼。八三編碼器,我這里采用了兩種邏輯電路實(shí)現(xiàn)方式,一種是或非門,另一種是非門和與非門組合實(shí)現(xiàn)。
下圖所示為或非門實(shí)現(xiàn)的八三編碼器:
今天抽時(shí)間講講多路復(fù)用器的工作原理吧。在CPU中,有三大總線,分別是數(shù)據(jù)總線,控制總線,地址總線。由于CPU內(nèi)部的控制部件很多,涉及到的數(shù)據(jù)的傳輸也非常復(fù)雜,為了節(jié)省資源,不可能每個(gè)功能模塊都配相應(yīng)的傳輸線路,怎么解決這個(gè)問題呢。兩種思路,第一就是通過三態(tài)門將不同的工作模塊與總線相連。哪個(gè)模塊需要傳輸數(shù)據(jù)時(shí),就相應(yīng)的將這一模塊通過三態(tài)門連接到傳輸總線上。第二種方法就是多路復(fù)用技術(shù),通過控制多路復(fù)用器的連接端口,在不同的時(shí)刻允許對應(yīng)的端口與傳輸總線連接,實(shí)現(xiàn)數(shù)據(jù)的傳輸。
三態(tài)門和多路復(fù)用器的區(qū)別是,三態(tài)門的傳輸方式可以實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出,也即是雙向傳輸,而多路復(fù)用器一般只可以用于單向的數(shù)據(jù)輸出。