用加法器构造能够实现连续加法的电路
文章目錄
- 1 構(gòu)造實(shí)現(xiàn)連續(xù)加法的電路
- 1.1 構(gòu)造實(shí)現(xiàn)連續(xù)加法的電路
- 1.2 對連續(xù)加法的電路進(jìn)行優(yōu)化
- 1.3 解決先后問題
有了前面搭建得各分立元器件,就可以開始組裝我們自己的CPU了!
1 構(gòu)造實(shí)現(xiàn)連續(xù)加法的電路
1.1 構(gòu)造實(shí)現(xiàn)連續(xù)加法的電路
我們先來看一下我們之前構(gòu)造的8位加法器:
如果我們現(xiàn)在要計(jì)算10+8+6+4的和,對于中間結(jié)果需要我們手動保存:
能不能讓加法器自己記住這個(gè)中間結(jié)果,并使其自動的參與和下一個(gè)加數(shù)的運(yùn)算呢?這樣的話,肯定需要將加法的結(jié)果與輸入相連,我們?yōu)榱藦耐豢偩€獲得兩個(gè)加數(shù),我們需要做出如下改進(jìn):
這樣的話兩個(gè)加數(shù)就可以依次輸入,輸入第一個(gè)加數(shù)時(shí),我們按一下KRA這樣第一個(gè)加數(shù)就被存儲到RA寄存器中,然后輸入第二個(gè)加數(shù),即可得到加法的結(jié)果。
我們將加法器的輸出反饋到加法器的加數(shù)輸入:
我們觀察上面的電路會發(fā)現(xiàn)存在兩個(gè)問題:
我們對電路做出如下改進(jìn):
我們增加了一個(gè)寄存器TR和兩個(gè)多路繼電器GA、GB。我們可以通過如下方式進(jìn)行計(jì)算10+8+6的值:
其實(shí)我們可以將上面的操作分解為如下3個(gè)基本動作:
- 加載:其實(shí)就是輸入第一個(gè)加數(shù)(KGA-KRA)。
- 相加:其實(shí)就是輸入下一個(gè)加數(shù),然后和上一個(gè)加數(shù)進(jìn)行相加,并將結(jié)果存儲起來(KGA-KTR)。
- 記憶:其實(shí)就是將中間結(jié)果鎖存在加法器上面的輸入端,以備參與下次的運(yùn)算(KGB-KRA)。
1.2 對連續(xù)加法的電路進(jìn)行優(yōu)化
優(yōu)化的電路如下:
對于上述電路分析如下:
對于加載來說,當(dāng)K加載為1、K1為1時(shí),GA和RA輸出1,但是我們需要保證GA先輸出1,然后RA再輸出1,這部分電路的搭建放到后面再進(jìn)行介紹。同樣,相加、記憶中也存在同樣的先后問題。
對于計(jì)算10+9+8+7+6+5我們需要進(jìn)行如下操作:
我們可以發(fā)現(xiàn)前兩個(gè)數(shù)的相加并沒有節(jié)省計(jì)算步驟,但是從第4步往后,我們只需要分別點(diǎn)擊K0、K1就可完成計(jì)算。
1.3 解決先后問題
改進(jìn)后的電路如下:
我們先大致看一下都有哪些改動,因?yàn)槲覀冏黾臃ㄟ\(yùn)算的大部分操作,就是不斷地點(diǎn)擊K0和K1。而這些操作,在本質(zhì)上就是1在它倆之間不斷地循環(huán)。這樣,我們就很容易想到,我們之前所學(xué)的循環(huán)移位寄存器。所以,我們使用了一個(gè)有兩個(gè)輸出的上升沿觸發(fā)的循環(huán)移位寄存器RR來代替K0和K1這兩個(gè)開關(guān),來給譯碼器提供輸入。并且,在初始狀態(tài)下,K0=1,K1=0。
我們每觸發(fā)一次RR,它們的值就會進(jìn)行一次交替,而觸發(fā)信號是由按鍵K來產(chǎn)生的,并且它們之間還加了一個(gè)非門。然后,譯碼器的每個(gè)和寄存器相連的輸出端都要和按鍵K的另一路輸出進(jìn)行與運(yùn)算。
現(xiàn)在,我們就來演示一下改造后的電路是如何工作的,它又是如何幫我們解決先后問題的:
首先在加數(shù)端口輸入第一個(gè)加數(shù)。然后,閉合K加載,這時(shí),由于K0=1,所以IGA=1、IRA=1,傳輸門GA打開,數(shù)據(jù)被傳送到了RA的門口,但是RA沒有被觸發(fā),因?yàn)镮RA要和K的另一路輸出進(jìn)行與運(yùn)算。我們可以發(fā)現(xiàn),我們只是閉合了K加載,傳輸門GA就被打開了。關(guān)鍵點(diǎn)在于,我們之前需要按下K0開關(guān)才能使K0的值=1,而現(xiàn)在,K0的值默認(rèn)就=1。所以,我們不再需要手動的去設(shè)置它的值,只要閉合K加載就可以了。
那為什么RA沒有被觸發(fā)呢?因?yàn)?#xff0c;雖然IRA=1,但是它需要和K的另一路輸出做與運(yùn)算。而我們并沒有按下按鍵K,只是閉合了K加載而已,所以它不會被觸發(fā)。
接下來,我們按下按鍵K,隨著K的接通,將同時(shí)產(chǎn)生兩路脈沖。第一路通過非門到達(dá)循環(huán)移位寄存器,但是非門將上升沿變成了下降沿,所以,循環(huán)移位寄存器并沒有被觸發(fā)。所以,譯碼器將保持原來的輸出,不會發(fā)生變化。與此同時(shí),另一路脈沖被送到了與IRA相連的與門,結(jié)果就是RA從0變成了1,產(chǎn)生了一個(gè)上升沿,寄存器RA被觸發(fā)第一個(gè)加數(shù)就被加載到了加法器中。
然后,當(dāng)我們松開K按鍵時(shí),會產(chǎn)生一個(gè)下降沿,而這個(gè)下降沿通過非門后變成了一個(gè)上升沿,RR被觸發(fā),這時(shí)K0變成了0、K1變成了1,這時(shí),譯碼器所有的輸出都=0。
我們通過閉合K加載,來打開傳輸門,通過按下K按鍵,來觸發(fā)寄存器。這樣,我們就解決了先后的問題。同時(shí)大家要注意RR循環(huán)移位寄存器被觸發(fā)的時(shí)間,它是在K按鍵被松開的時(shí)候觸發(fā)的。
盡管現(xiàn)在我們已經(jīng)完成了加載操作,但是我們需要再按一次按鍵K。按下的時(shí)候,第一路輸出不會觸發(fā)RR寄存器。第二路輸出,因?yàn)樽g碼器的輸出全部是0,所以也不會觸發(fā)任何一個(gè)寄存器。也就是說,在按下的時(shí)候,并不會產(chǎn)生任何作用。而松開的時(shí)候,會觸發(fā)RR,使得K0=1、K1=0,這也是我們的目的所在:使RR回到初始狀態(tài)。因?yàn)?#xff0c;我們的下一步是相加,而相加操作時(shí),K0的值為1。
總結(jié)來說加載操作是這樣的,閉合K加載,然后點(diǎn)兩下K。這樣不但完成了加載操作,同時(shí)還為下一步的相加操作做好了準(zhǔn)備。
接著,我們開始執(zhí)行相加操作。首先在加數(shù)端口輸入第二個(gè)加數(shù)。然后,斷開K加載,閉合K相加,這時(shí),由于K0=1,所以,IGA=1、ITR=1,傳輸門GA打開,數(shù)據(jù)進(jìn)入加法器并和第一個(gè)數(shù)進(jìn)行相加,并且結(jié)果被送到了TR門口。但是TR沒有被觸發(fā),因?yàn)镮TR還需要和按鍵K的另一路輸出進(jìn)行與運(yùn)算。現(xiàn)在,按下按鍵K,因?yàn)榉情T的存在,所以RR沒有被觸發(fā)。但是,按鍵K的另一路脈沖和ITR做與運(yùn)算,結(jié)果就是TR從0變成了1,產(chǎn)生一個(gè)上升沿,TR被觸發(fā),相加的結(jié)果被存儲在TR寄存器中。
接著,松開按鍵K,RR被觸發(fā),于是,K0=0、K1=1。這就為記憶的操作提前做好了準(zhǔn)備。
現(xiàn)在,我們開始執(zhí)行記憶操作。因?yàn)镵相加已經(jīng)是閉合狀態(tài),所以我們不需要再去改動它,而且K1已經(jīng)=1了。所以這時(shí),傳輸門GB打開,中間結(jié)果被傳送到了RA的門口。然后我們按下按鍵K,因?yàn)榉情T的存在,所以RR依然沒有被觸發(fā)。但是,RA被觸發(fā),因?yàn)榘存IK的第二路輸出和IRA做與運(yùn)算被觸發(fā)后,RA將中間結(jié)果存儲在了加法器中。然后松開按鍵K,RR被觸發(fā),使得K0=1、K1=0,RR又重新回到了最初始的狀態(tài),為下一次相加操作做好了準(zhǔn)備。
現(xiàn)在,我們的操作就變成了這樣。閉合K加載、點(diǎn)2下K,完成第一個(gè)加數(shù)的加載。斷開K加載、閉合K相加、點(diǎn)兩下K,完成第二個(gè)加數(shù)相加和記憶。
這時(shí),K相加是閉合的,所以,我們不再需要去操作它。直接點(diǎn)兩下K,就完成了第三個(gè)數(shù)的相加和記憶。再點(diǎn)兩下K,就完成了第四個(gè)數(shù)的相加和記憶。每點(diǎn)兩下K就完成了對一個(gè)數(shù)的運(yùn)算,直到加完最后一個(gè)數(shù)為止,而最終的結(jié)果存儲在RA寄存器中 。
我們來總結(jié)一下這個(gè)電路運(yùn)行的特點(diǎn):
第一個(gè)特點(diǎn):
閉合K加載或者K相加,就會直接打開某一個(gè)傳輸門。因?yàn)?#xff0c;K0和K1的值不需要我們手動的去設(shè)置。而且,與傳輸門相連的輸出端和傳輸門之間是直接連通的。
第二個(gè)特點(diǎn):
必須按下K按鍵,寄存器才會被觸發(fā)。因?yàn)?#xff0c;與寄存器相連的輸出端要和K的輸出進(jìn)行與運(yùn)算。所以,不按下K,寄存器是不會被觸發(fā)的。
現(xiàn)在,我們不但解決了先后的問題,而且進(jìn)一步簡化了操作。因?yàn)?#xff0c;K0、K1這兩個(gè)開關(guān)被K這一個(gè)開關(guān)取代了,之前,我們需要對K0和K1這兩個(gè)開關(guān)進(jìn)行操作,而現(xiàn)在,我們的大部分操作基本上就變成了不斷地輸入加數(shù),然后點(diǎn)擊按鍵K就可以了。
參考資料:
總結(jié)
以上是生活随笔為你收集整理的用加法器构造能够实现连续加法的电路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交强险到期了去哪交
- 下一篇: 用RAM存储器构造能够依次读取各存储单元