計(jì)算機(jī)對(duì)我來(lái)說(shuō)無(wú)非是一個(gè)類似于電視機(jī)的東西,厚重的顯示器顯示出字符圖畫(huà),對(duì)于我來(lái)說(shuō)和課外書(shū)上的故事和圖畫(huà)相差無(wú)幾。雖然有吸引力,但也僅僅是有些好奇罷了。
直到07年的時(shí)候,液晶顯示器開(kāi)始普及。一臺(tái)連接了互聯(lián)網(wǎng)的計(jì)算機(jī)出現(xiàn)在我面前,對(duì)我的吸引是致命的。從那時(shí)候起,建筑設(shè)計(jì)師的夢(mèng)想離我遠(yuǎn)去,計(jì)算機(jī)隨之替代。
也是從這時(shí)候起,我開(kāi)始使用計(jì)算機(jī)在互聯(lián)網(wǎng)中傲游。從最開(kāi)始的Flash小游戲中熟悉鍵盤(pán)鼠標(biāo)的基本操作;到在網(wǎng)絡(luò)游戲中尋找外掛時(shí)迷上黑客技術(shù)文化;最后在各種論壇社區(qū)中找尋學(xué)習(xí)計(jì)算機(jī)各種技術(shù)技巧。
差不多有十三四年的時(shí)間是在學(xué)習(xí)如何使用計(jì)算機(jī)。直到讀了《編碼》這本書(shū),為了更深入的理解計(jì)算機(jī),就想弄懂計(jì)算機(jī)的工作原理。有機(jī)會(huì)的話,嘗試制作一臺(tái)計(jì)算機(jī)。
至此使用計(jì)算機(jī)變成了制作計(jì)算機(jī)。
非科班出身的我自然有很大的知識(shí)漏洞缺陷。在第一次讀這本書(shū)時(shí),讀到了加法器就再也讀不下去了。關(guān)上書(shū)打基礎(chǔ),在學(xué)習(xí)了數(shù)字電路和模擬電路的一些基礎(chǔ)知識(shí)后,繼續(xù)嘗試接著讀,發(fā)現(xiàn)之前困擾問(wèn)題似乎也不在困難,二進(jìn)制和十六進(jìn)制開(kāi)起來(lái)也自然多了。
在我之前的一篇筆記《如何實(shí)現(xiàn)加法器》中,對(duì)于ALU的工作原理做了簡(jiǎn)單的了解。
數(shù)據(jù)雖然是保存硬盤(pán)中的,如果CPU每次運(yùn)算都要從硬盤(pán)中取數(shù)據(jù)的話就太慢了。CPU的運(yùn)算速度和IO的速度差異實(shí)在是太大了,所以需要把硬盤(pán)中的數(shù)據(jù)拷貝到內(nèi)存中,這樣CPU在需要數(shù)據(jù)的時(shí)候直接向內(nèi)存要。
所以寄存器的作用就是用來(lái)保存數(shù)據(jù),那么如何用電、邏輯門(mén)來(lái)保存數(shù)據(jù)呢?
異或門(mén)
回憶一下或非門(mén),其真值表如下:
RS鎖存器
現(xiàn)在把兩個(gè)或非門(mén)結(jié)合起來(lái),第一個(gè)門(mén)電路的輸出是第二個(gè)門(mén)電路的輸入,第二個(gè)門(mén)電路的輸出是第一個(gè)門(mén)電路的輸入。
可以看到這兩個(gè)門(mén)電路纏繞在一起,輸入既決定輸出,輸出也決定輸入。
真值表如下:
從或非門(mén)的真值表可知,只要其中有一個(gè)輸入為1,不管另一個(gè)是0還是1,輸出都是0。需要注意的是,當(dāng)兩個(gè)輸入都為0時(shí),兩個(gè)門(mén)電路都無(wú)法確定輸出,而兩個(gè)門(mén)電路都需要另一個(gè)的輸出當(dāng)作輸入,所以此時(shí)電路系統(tǒng)處于不確定的狀態(tài)。
只要其中一個(gè)輸入為1,那么該門(mén)電路的輸出就確定為0了(異或門(mén)決定),另一個(gè)的門(mén)電路的輸入也就確定為0,此時(shí)該電路系統(tǒng)就不會(huì)出現(xiàn)錯(cuò)誤。
神奇的地方來(lái)了,如下圖:
當(dāng)輸入2為1時(shí),改變上面的輸入時(shí),輸出隨之改變。(先暫時(shí)不考慮輸出2)
但是當(dāng)輸入2為0時(shí),改變上面的輸入時(shí),會(huì)發(fā)現(xiàn)輸出不變了。如下圖:
輸出1被輸入2鎖住了,因此這種電路叫做鎖存器。(當(dāng)然,反過(guò)來(lái)也是一樣的)
從上圖還可以得知,但輸入2為0時(shí),輸入1也是可以為0的,此時(shí)為什么不是Error呢?
因?yàn)橹爱?dāng)兩個(gè)都為0時(shí),他們的輸出是不確定的所以為Error,但是當(dāng)輸入1為1,輸入2為0時(shí),此時(shí)電路系統(tǒng)是確定的,改變輸入1,輸入2的輸出并沒(méi)有改變,依然確定輸出為1,那么輸入1的輸出也就是確定的了。因此不會(huì)發(fā)生錯(cuò)誤。
為了方便,把該電路的輸入輸出取一個(gè)名字,如下:
修改后的真值表如下:(注意輸入2和輸入1交換了位置。)
當(dāng)S和R都為0時(shí),現(xiàn)在的輸出就不是無(wú)法確定了。而是保持上一次的輸出,這很重要。正是因?yàn)橛辛嗽撎攸c(diǎn)。電路有了記憶功能,也就是說(shuō)電路可以保存數(shù)據(jù)了。
而當(dāng)S和R都為1時(shí),在這個(gè)系統(tǒng)中不需要用到,因此它被禁止了。因?yàn)楫?dāng)S和R都為1時(shí),那么輸出都為0,這和電路設(shè)計(jì)中Q和互反矛盾,所以要避免。
這里兩個(gè)輸出是相反的,真正需要的只要1個(gè)即可。
因?yàn)榭砂演敵鲦i起來(lái),兩個(gè)輸入端分別為Reset和Set,所以這個(gè)電路的名字叫做RS鎖存器。
D觸發(fā)器
繼續(xù)構(gòu)造電路,在原來(lái)的基礎(chǔ)上添加兩個(gè)或非門(mén)。
用一個(gè)把兩個(gè)輸入端用一個(gè)SCK鎖住。當(dāng)SCK為1時(shí),兩個(gè)輸入端都被鎖住,當(dāng)SCK為0時(shí),輸入端被激活。如下圖:
[gif error]這個(gè)電路和之前的電路并沒(méi)有什么區(qū)別,同理兩個(gè)輸入端不能同時(shí)為0(這里因?yàn)楫惢蜷T(mén)取反,所以不是同時(shí)為1,原理相同)。
數(shù)據(jù)端也只需要一個(gè)輸入就可以了,并且不能同時(shí)輸入0,繼續(xù)構(gòu)造電路。
把兩個(gè)輸入接在一起,并且其中一個(gè)取反?,F(xiàn)在就只有一個(gè)輸入端和一個(gè)保持端了。
當(dāng)CLK為1時(shí),數(shù)據(jù)輸出保持不變。當(dāng)CLK為0時(shí),輸出端取決于數(shù)據(jù)輸入端。
[gif error]并且還不用擔(dān)心兩個(gè)輸入端同時(shí)為0。真值表如下:
輸入端為Data端,這個(gè)電路的名字叫做 D觸發(fā)器 。
可以看到這個(gè)電路就可以保存1Bit的數(shù)據(jù)了。
把好多個(gè)串起來(lái),就可以保存多個(gè)Bit了。一般情況下,8Bit等于1Byte,寫(xiě)數(shù)據(jù)也是一個(gè)字節(jié)一個(gè)字節(jié)的寫(xiě),所以一把把8個(gè)觸發(fā)器連起來(lái),共用一根SLK線。所以也叫八位鎖存器。
這種觸發(fā)器的觸發(fā)方式為CLK為0時(shí),數(shù)據(jù)就可以輸入,當(dāng)CLK為1時(shí),數(shù)據(jù)就被鎖住不能修改了。
當(dāng)CLK為0時(shí)數(shù)據(jù)是可以修改的,如果在CLK為0期間,Data輸入數(shù)據(jù)完畢后,CLK還沒(méi)有鎖住時(shí),發(fā)送電磁干擾改變了Data的輸入,那么保存的數(shù)據(jù)也就保存錯(cuò)了。
邊沿觸發(fā)器
既然電平觸發(fā)可能由于時(shí)間太長(zhǎng)導(dǎo)致數(shù)據(jù)可能因干擾而改變,那么就減少觸發(fā)的時(shí)間,高低電平改變的瞬間時(shí)間很短,因此可以利用高低電平變化的瞬間來(lái)觸發(fā),把兩個(gè)D觸發(fā)器串在一起。為了進(jìn)行區(qū)分,兩個(gè)D觸發(fā)器分別取一個(gè)名字。
主觸發(fā)器從Data得到輸入,從觸發(fā)器的輸入來(lái)自主觸發(fā)器。主觸發(fā)器不會(huì)改變得到的輸入。如下圖:
[gif error]目前來(lái)說(shuō)這個(gè)觸發(fā)器和D觸發(fā)器完全關(guān)鍵來(lái)了,對(duì)兩個(gè)觸發(fā)器的CLK其中一個(gè)取反,如下圖:
這樣的話,CLK只有一個(gè)輸入,在同一時(shí)間,主觸發(fā)器和從觸發(fā)器只能有一個(gè)起作用。
[gif error]基本原理如下:
- 先把CLK置為0,此時(shí)主觸發(fā)器的CLK經(jīng)過(guò)取反現(xiàn)在為1,此時(shí)主觸發(fā)器就鎖住了。雖然從觸發(fā)器的CLK為0沒(méi)有被鎖住,但是從觸發(fā)器的輸入需要從主觸發(fā)器的輸出得到,主觸發(fā)器沒(méi)有改變,那么從觸發(fā)器也就不會(huì)改變。
- 現(xiàn)在把CLK置為1,此時(shí)主觸發(fā)器的CLK解鎖。可以修改輸出,但是從觸發(fā)器此時(shí)被鎖住。主觸發(fā)器的輸出還是無(wú)法改變從觸發(fā)器的輸出。
- 重點(diǎn)來(lái)了,此時(shí)雖然主觸發(fā)器的輸入無(wú)法改變,但是主觸發(fā)器的輸出已經(jīng)固定下來(lái)了。此時(shí)再把CLK置為0,那么從觸發(fā)器此時(shí)的輸入可以從被之前的主觸發(fā)器的輸出改變的,只是無(wú)法從觸發(fā)器的輸入改變而已。
完成流程如下:
- 先把CLK置為1,鎖從觸發(fā)器,現(xiàn)在可以把需要保存的數(shù)據(jù)輸入到主出觸發(fā)器中。
- 注意,現(xiàn)在保存的數(shù)據(jù)已經(jīng)在主觸發(fā)器中了?,F(xiàn)在把CLK置0,一瞬間,主觸發(fā)器鎖住,從觸發(fā)器打開(kāi),保存在主觸發(fā)器的數(shù)據(jù)已經(jīng)輸出到從觸發(fā)器中了。
[gif error]這樣子,一瞬間觸發(fā)的觸發(fā)器的名字叫做 邊沿觸發(fā)器 。
同理把多個(gè)邊沿觸發(fā)器連在一起,就能保存多個(gè)Bit的數(shù)據(jù)了。
這里把8個(gè)組合在一起,就可以保存一個(gè)Byte的數(shù)據(jù)了。
它的名字就是寄存器。
-
寄存器
+關(guān)注
關(guān)注
31文章
5377瀏覽量
121408 -
電磁干擾
+關(guān)注
關(guān)注
36文章
2338瀏覽量
105711 -
鎖存器
+關(guān)注
關(guān)注
8文章
916瀏覽量
41691 -
門(mén)電路
+關(guān)注
關(guān)注
7文章
199瀏覽量
40282 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
164瀏覽量
48073
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
鎖存器、觸發(fā)器、寄存器和緩沖器的區(qū)別
寄存器、鎖存器和觸發(fā)器的區(qū)別
觸發(fā)器、鎖存器、寄存器三者的區(qū)別
【轉(zhuǎn)】數(shù)字電路三劍客:鎖存器、觸發(fā)器和寄存器
什么是觸發(fā)器 觸發(fā)器的工作原理及作用
jk邊沿觸發(fā)器工作原理
![jk<b class='flag-5'>邊沿</b><b class='flag-5'>觸發(fā)器</b><b class='flag-5'>工作原理</b>](https://file.elecfans.com/web1/M00/45/90/pIYBAFpwO2SAHMJYAAA55lm3xP8486.jpg)
什么是邊沿觸發(fā)器_邊沿D觸發(fā)器介紹
![什么是<b class='flag-5'>邊沿</b><b class='flag-5'>觸發(fā)器</b>_<b class='flag-5'>邊沿</b><b class='flag-5'>D</b><b class='flag-5'>觸發(fā)器</b>介紹](https://file.elecfans.com/web1/M00/45/90/o4YBAFpxFbeARfHLAAN9rEw2X3o149.png)
評(píng)論