專(zhuān)利名稱(chēng):二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法及連加器電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)二進(jìn)制運(yùn)算方法,特別是涉及一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)方法。本發(fā)明還涉及一種二進(jìn)制連加運(yùn)算的連加器電路。
背景技術(shù):
目前計(jì)算機(jī)在做二進(jìn)制數(shù)連加運(yùn)算時(shí),一般采用的方法是逐級(jí)運(yùn)算,即兩個(gè)數(shù)相加得出結(jié)果后再與第三個(gè)數(shù)相加,或者是兩兩同時(shí)相加后再將結(jié)果兩兩相加,依此類(lèi)推,得出最終結(jié)果,其運(yùn)算是一個(gè)或幾個(gè)二進(jìn)制數(shù)加法器同時(shí)參與運(yùn)算來(lái)完成的。
至于可以轉(zhuǎn)化為連加運(yùn)算的乘法運(yùn)算,目前計(jì)算機(jī)大多采用陣列乘法器運(yùn)算電路。(見(jiàn)《計(jì)算機(jī)組成原理》白中英編著,科學(xué)出版社,2000年11月第三版,第39頁(yè))。這種運(yùn)算方法,以不帶符號(hào)的n位×n位二進(jìn)制數(shù)陣列乘法器為例,假定陣列最后一行使用行波進(jìn)位加法器,則需要n(n-1)個(gè)全加器和n2個(gè)與門(mén),雖然邏輯門(mén)數(shù)量較少,但運(yùn)算速度比較慢。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)方法;本發(fā)明的目的還在于提供一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)運(yùn)算連加器電路。采用本發(fā)明提供的方法與電路,能夠減少運(yùn)算時(shí)間,提高計(jì)算機(jī)的運(yùn)算速度。
為了達(dá)到上述目的,本發(fā)明一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)方法采用的技術(shù)方案是將所有相加的二進(jìn)制數(shù)中具有相同位權(quán)的數(shù)據(jù)組成列,通過(guò)同時(shí)對(duì)每一列欲加的數(shù)進(jìn)行相加運(yùn)算得到各自相加后的本位和對(duì)高位的進(jìn)位,將運(yùn)算結(jié)果轉(zhuǎn)換成由較少的幾個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算,再對(duì)所述連加運(yùn)算重復(fù)上述處理過(guò)程,將運(yùn)算結(jié)果轉(zhuǎn)換為由更少的幾個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算,繼續(xù)對(duì)新的運(yùn)算重復(fù)上述過(guò)程,一直到將運(yùn)算轉(zhuǎn)換為二個(gè)多位的二進(jìn)制數(shù)的相加運(yùn)算,每次化簡(jiǎn)前后連加的二進(jìn)制數(shù)的數(shù)量滿(mǎn)足如下的約束關(guān)系,n個(gè)二進(jìn)制數(shù)的連加運(yùn)算,若n滿(mǎn)足2k-1≤n<2k,化簡(jiǎn)后,可轉(zhuǎn)換成k個(gè)二進(jìn)制數(shù)的連加運(yùn)算;最后再用現(xiàn)有的計(jì)算二個(gè)多位二進(jìn)制相加運(yùn)算的加法器,算出最終結(jié)果。
現(xiàn)假定有n個(gè)不同的m位二進(jìn)制數(shù)相加,所有在相同的位的數(shù)組成列,例如所有個(gè)位組成一列,則共有m列數(shù)據(jù),每列均含有n個(gè)數(shù),對(duì)任一列數(shù),其n個(gè)數(shù)加合后的得數(shù)由本位和對(duì)高位的進(jìn)位組成,若n滿(mǎn)足2k-1≤n<2k則不難得知,這n個(gè)數(shù)相加后,其進(jìn)位最多可進(jìn)至其前第k-1位。換句話(huà)說(shuō),這n個(gè)數(shù)加合后,將向其高位進(jìn)位,最高可進(jìn)至該位前的第(k-1)位。其余各列數(shù)相加后情況也是如此。我們對(duì)上述的列的數(shù)據(jù)同時(shí)相加,分別得到相加后的本位和對(duì)高位的進(jìn)位。這樣,相加后得數(shù)的任意一位應(yīng)由以下幾個(gè)數(shù)加合而成與該位位數(shù)相同的n個(gè)數(shù)相加得出的本位,以及低于該位的各列數(shù)各自相加后對(duì)該位的進(jìn)位。易知,有可能向該位進(jìn)位的數(shù)列的位最低可至該位后k-1位,更低位的數(shù)列加合后向該位無(wú)進(jìn)位,或說(shuō)向該位的進(jìn)位恒為零。故該位數(shù)將由1個(gè)本位數(shù)和k-1個(gè)低位對(duì)該位的進(jìn)位數(shù)共k個(gè)數(shù)組成。因此,n個(gè)m位二進(jìn)制數(shù)的相加運(yùn)算就可以轉(zhuǎn)換為k個(gè)m+k-1位二進(jìn)制數(shù)的相加運(yùn)算。k<n。
同理,若k又滿(mǎn)足2l-1≤k<2l則我們可以把這k個(gè)m+k-1位二進(jìn)制數(shù)的相加運(yùn)算轉(zhuǎn)換成L個(gè)多位二進(jìn)制數(shù)的相加運(yùn)算,L<k。依此類(lèi)推,最終將之轉(zhuǎn)換為二個(gè)多位二進(jìn)制數(shù)的相加運(yùn)算。
從以上敘述可以知道,只要我們算出所有每列數(shù)據(jù)相加后的得數(shù),就可經(jīng)過(guò)若干步驟,將上述n個(gè)m位的二進(jìn)制數(shù)的相加運(yùn)算轉(zhuǎn)換成二個(gè)多位二進(jìn)制數(shù)的相加運(yùn)算。對(duì)任意一列數(shù)據(jù),當(dāng)n較小時(shí)我們可以列出真值表,運(yùn)用邏輯函數(shù)法直接得出相加后的二進(jìn)制數(shù)的得數(shù)。但當(dāng)n較大時(shí),用邏輯函數(shù)法將因?yàn)楸磉_(dá)式過(guò)于復(fù)雜而難以實(shí)現(xiàn)。我們注意到,對(duì)每一列數(shù)據(jù)的相加運(yùn)算的運(yùn)算結(jié)中果將取決于該列數(shù)中值為1的數(shù)的個(gè)數(shù),只要知道了值為1的數(shù)的數(shù)量,將可以決定該列數(shù)相加后所得的本位和對(duì)高位的進(jìn)位。如何知道某列數(shù)中值為1的數(shù)的數(shù)目呢?在此我們采用如下方法,以某一列有n個(gè)數(shù)為例先將這n個(gè)數(shù)置放于某n位寄存器中,然后對(duì)該寄存器的各個(gè)數(shù)進(jìn)行邏輯運(yùn)算,將其中值為1的數(shù)全部集中放在n個(gè)輸出端的低位,值為0的數(shù)全部放在n個(gè)輸出端的高位,且值為1的數(shù)的數(shù)量與n個(gè)輸入端所含的1的數(shù)量相同。然后對(duì)n個(gè)輸出端的所有相鄰位各自分別兩兩進(jìn)行異或運(yùn)算。最低位再和“1”異或。最高位和“0”異或。所有各個(gè)異或的輸出中必有也僅有一個(gè)輸出為“1”。根據(jù)該位輸出信號(hào)的位置就可知道n個(gè)數(shù)中值為“1”的數(shù)的數(shù)量。由此進(jìn)一步判斷出它們相加后所得的進(jìn)位和本位,并將它們送至適當(dāng)位置,以準(zhǔn)備下一輪的簡(jiǎn)化運(yùn)算。
本發(fā)明的化簡(jiǎn)運(yùn)算連加器電路的技術(shù)方案是一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)運(yùn)算連加器電路,包括若干級(jí)的化簡(jiǎn)電路和一個(gè)最終的加和電路,其中每一級(jí)的作用在于將數(shù)量較多的連加運(yùn)算轉(zhuǎn)換為數(shù)量較少的二進(jìn)制數(shù)的連加運(yùn)算,最終加和電路的作用多個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算經(jīng)過(guò)若干次化簡(jiǎn)后,轉(zhuǎn)換成兩個(gè)二進(jìn)制數(shù)的相加運(yùn)算,然后用現(xiàn)有的計(jì)算兩個(gè)二進(jìn)制數(shù)相加運(yùn)算的加法器,算出最終結(jié)果。
所述若干級(jí)的化簡(jiǎn)電路的作用是對(duì)所有各列數(shù)據(jù)同時(shí)分別進(jìn)行運(yùn)算,對(duì)任意一列而言,列中的所有數(shù)據(jù)相加得到本位及對(duì)高位的進(jìn)位,并把這些本位和進(jìn)位分別送到與它們位數(shù)相符合的下一級(jí)化簡(jiǎn)運(yùn)算電路的適宜的數(shù)據(jù)列中;每個(gè)列中的數(shù)的相加運(yùn)算電路至少包括列數(shù)據(jù)排列電路,每一列數(shù)中的“1”的數(shù)目的判斷電路,列中各數(shù)相加后的本位和進(jìn)位的判斷電路及將本位和各個(gè)進(jìn)位送到進(jìn)行下一次化簡(jiǎn)運(yùn)算時(shí)將要使用的適宜的數(shù)據(jù)列中的傳送電路。
所述數(shù)據(jù)排列電路,將列中值為“1”的數(shù)據(jù)排列到該列的低位段,該列數(shù)“1”的數(shù)量不發(fā)生改變;當(dāng)列中的數(shù)的數(shù)量較少時(shí),根據(jù)真值表設(shè)計(jì)電路,該電路能一次完成數(shù)據(jù)排列的工作,當(dāng)列中的數(shù)的數(shù)量較多時(shí),可將列中的數(shù)按從低位到高位的順序,分割成幾組,對(duì)各組的數(shù),分別同時(shí)進(jìn)行數(shù)據(jù)排列,將各組中的各自所有的“1”,分別排列到各組的低位段,然后依然是從低位到高位,每?jī)蓚€(gè)相鄰的數(shù)據(jù)小組構(gòu)成一個(gè)大組,對(duì)各大組的數(shù),分別同時(shí)進(jìn)行數(shù)據(jù)排列,將各大組中所有的“1”分別排列在各大組的低位段,然后依然是從低位到高位,每?jī)蓚€(gè)相鄰的大組構(gòu)成一個(gè)更大的數(shù)據(jù)組,對(duì)它們?cè)俅芜M(jìn)行排列,--------,一直到列中所有的“1”被排列在該列的低位段。
所述判斷電路對(duì)于已完成數(shù)據(jù)排列的各個(gè)列中所有兩兩相鄰的數(shù)據(jù)進(jìn)行異或運(yùn)算,且最低位還要和“1”進(jìn)行異或,最高位還要和“0”進(jìn)行異或,根據(jù)輸出為“1”的異或門(mén)的位置即得到列中“1”的數(shù)量及列中所有數(shù)相加后所得到的本位以及對(duì)高位的進(jìn)位。
所述傳送電路作用是將本次化簡(jiǎn)所得到的本位及對(duì)高位的進(jìn)位分別放在下一次化簡(jiǎn)運(yùn)算所使用的數(shù)據(jù)列中與其位權(quán)相符的數(shù)據(jù)列里,每一個(gè)新的數(shù)據(jù)列中的各個(gè)數(shù)據(jù)在新的連加運(yùn)算式中屬于相同位權(quán)的數(shù)據(jù)。
本發(fā)明的方法可用于所有可一次性轉(zhuǎn)換為二進(jìn)制連加運(yùn)算的運(yùn)算式的運(yùn)算;本發(fā)明的方法可實(shí)現(xiàn)通用的二進(jìn)制數(shù)連加加法器。
本發(fā)明的應(yīng)用范圍1、乘法我們知道二個(gè)二進(jìn)制數(shù)的乘法運(yùn)算可以轉(zhuǎn)換為多個(gè)二進(jìn)制數(shù)的相加運(yùn)算,故本法可以算二個(gè)二進(jìn)制數(shù)的相乘運(yùn)算。
2、多項(xiàng)式的代數(shù)和只要每一項(xiàng)中乘法運(yùn)算的次數(shù)不超過(guò)一次,則該多項(xiàng)式的代數(shù)和可直接由多個(gè)二進(jìn)制數(shù)的和表達(dá)出來(lái),故可用本法計(jì)算。
3、連乘運(yùn)算以m=x·y·z為例,先用本算法計(jì)算x·y,當(dāng)將x·y用本法化簡(jiǎn)成二個(gè)多位二進(jìn)制數(shù)相加運(yùn)算x·y=a+b時(shí),再與z相乘m=(x·y)·z=a·z+b·z這樣,又變成了多個(gè)二進(jìn)制數(shù)的相加運(yùn)算,再次運(yùn)用本算法可算出最終結(jié)果,以上運(yùn)算省了一次二個(gè)二進(jìn)制數(shù)的加合運(yùn)算,即未將a+b算出結(jié)果后再與z相乘,故節(jié)省了運(yùn)算時(shí)間。
4、n太大時(shí)的處理方法當(dāng)n太大時(shí),運(yùn)算電路將變得較為復(fù)雜,可將n分成兩部份或三部份,分別同時(shí)進(jìn)行一次化簡(jiǎn)運(yùn)算后,再把結(jié)果加在一起,以便進(jìn)行第二次化簡(jiǎn)。
以對(duì)存放任一列數(shù)的寄存器Ri的運(yùn)算電路為例圖1-1是16位寄存器低位數(shù)ri,3ri,2ri,1ri,0將“1”移位到該四位低位的邏輯電路圖;圖1-2是16位寄存器將數(shù)ri,7、ri,6、ri,5、ri,4中“1”移位到該四位低位的邏輯電路圖;圖1-3是16位寄存器將數(shù)ri,11、ri,10、ri,9、ri,8中“1”移位到該四位低位的邏輯電路圖;圖1-4是16位寄存器將數(shù)ri,15、11ri,14、ri,13、ri,12中“1”移位到該四位低位的邏輯電路圖;圖2-1是在圖1-1、1-2基礎(chǔ)上,ri,7、ri,6、ri,5、ri,4、ri,3ri,2ri,1ri,0中所有的“1”移位到該八位低位的邏輯電路圖;圖2-2是在圖1-3、1-4基礎(chǔ)上,ri,15、11ri,14、ri,13、ri,12、ri,11、ri,10、ri,9、ri,8中所有的“1”移位到該八位低位的邏輯電路圖;圖3-1與圖3-2是在圖2-1、圖2-2基礎(chǔ)上將Ri中16個(gè)數(shù)中所有的“1”排在該十六位低位的邏輯電路圖;圖4是在圖3-1與圖3-2基礎(chǔ)上,對(duì)Ri中含有“`1”的數(shù)量進(jìn)行判斷、進(jìn)而決定所有位上的數(shù)相加后所得本位和進(jìn)位、并送至各個(gè)五位的K寄存器相應(yīng)位的邏輯電路圖;圖5-1與圖5-2是對(duì)任一K寄存器KJ(j=0,1,2,3,4)中含有“1”的數(shù)量進(jìn)行判斷的邏輯電路圖;圖6是在圖5-1與圖5-2基礎(chǔ)上,對(duì)KJ寄存器中所有位上相同的數(shù)相加后所得的本位和進(jìn)位進(jìn)行判斷,并送至各個(gè)三位Q寄存器相應(yīng)位的邏輯電路圖;圖7是將任一Q寄存器Qm(m=0,1,2)中所有位相加后所得的本位和進(jìn)位進(jìn)行判斷,并送至S寄存器相應(yīng)位的邏輯電路圖;圖8是通用二進(jìn)制數(shù)連加器的設(shè)計(jì)框圖;圖9是n個(gè)多位二進(jìn)制數(shù)連加的化簡(jiǎn)框圖;圖10是n個(gè)多位二進(jìn)制數(shù)連加,在n較大時(shí)的化簡(jiǎn)框圖;具體實(shí)施方式
實(shí)施方式1參照?qǐng)D9,為更清楚地說(shuō)明本化簡(jiǎn)方法及連加器電路的設(shè)計(jì)方法,在這里取n為16,16個(gè)16位二進(jìn)制數(shù)的相加計(jì)算為例(所使用的寄存器都預(yù)先清零)。
我們將各列數(shù) 存放于16位寄存器Ri(i=0,1,2,……15)中,例如將a0,b0……p。16個(gè)數(shù)放于R0中。
第一次化簡(jiǎn);對(duì)所有列進(jìn)行并行邏輯運(yùn)算,因?yàn)閚=16,24=16<25,可將16個(gè)二進(jìn)制數(shù)相加運(yùn)算轉(zhuǎn)換為5個(gè)二進(jìn)制數(shù)的相加運(yùn)算,見(jiàn)圖1-1,1-2,1-3,1-4,2-1,2-2,3-1,3-2,及圖4所示。以任一列Ri為例,其各位記為ri,15,ri,14,……ri,0分別存放pi,oi,……bi,ai。
參見(jiàn)圖1-1~圖1-4,在圖1-1~圖1-4中,將Ri內(nèi)容分成4組,分別為ri,15,ri,14,ri,13,ri,12;ri,11,ri,10,ri,9,ri,8,;ri,7,ri,6,ri,5,ri,4;ri,3,ri,2,ri,1,ri,0。
圖1-1功能此圖輸入為A3(ri,3),A2(ri,2),A1(ri,1),A0(ri,0),輸出為B3,B2,B1,B0,4個(gè)輸出信號(hào)中值為“1”的被集中放在四個(gè)輸出的低位。“1”的數(shù)量與A3,A2,A1,A0中所含的“1”數(shù)量相同。
圖1-1對(duì)應(yīng)的真值表是表1。
由表1的真值表所得表達(dá)式如下B0=A3+A2+A1+A0B1=(A3+A2+A1)·(A3+A2+A0)·(A3+A1+A0)·(A2+A1+A0)B2=A3·A2·A1+A3·A2·A0+A3·A1·A0+A2·A1·A0B3=A3·A2·A1·A0圖1-2,圖1-3,圖1-4功能同圖1-1完全相同。
圖2-1功能輸入為B7,B6,B5,B4,B3,B2,B1,B0,輸出為C7,C6,C5,C4,C3,C2,C1,C0,8個(gè)輸出信號(hào)中值為“1”的被集中排在其低位上。“1”的個(gè)數(shù)與8個(gè)輸入信號(hào)中所含的“1”的數(shù)量相同。圖2-1是將高4位的數(shù)同時(shí)向低位移動(dòng),要移動(dòng)幾位是由低4位數(shù)中“1”的個(gè)數(shù)所決定。例如,已知低4位只有表1 與圖1-1對(duì)應(yīng)的真值表
一個(gè)“1”,B1B0=1,則高4位數(shù)均向低位移3位。
圖2-2功能輸入為B15,B14,B13,B12,B11,B10,B9,B8,輸出為C15,C14,C13,C12,C11,C10,C9,C8,功能與圖2-1完全相同。
圖3-1與圖3-2功能此二圖輸入為C15,C14,C13,C12,C11,C10,C9,C8,C7,C6,C5,C4,C3,C2,C1,C0,輸出為D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0,16個(gè)輸出信號(hào)中值為“1”的集中在低位,值為“1”的數(shù)的數(shù)量與16個(gè)輸入中值為“1”的數(shù)的個(gè)數(shù)相同,設(shè)計(jì)思路與圖2-1相同。
圖4功能輸入為D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0,將相鄰的輸入分別進(jìn)行異或運(yùn)算。并且最低位D0還要與“1”異或,最高位即D15還要與“0”信號(hào)異或,這樣共得到17個(gè)異或運(yùn)算的輸出。分別記為E16,E15,E14,E13,E12,E11,E10,E9,E8,E7,E6,E5,E4,E3,E2,E1,E0。其中有且僅有一個(gè)為1。例如,當(dāng)E7=1時(shí),表明D15,D14,D13,D12,D11,D10,D9,D8,D7,D6,D5,D4,D3,D2,D1,D0,這16個(gè)輸入中共總有7個(gè)“1”,這16個(gè)數(shù)相加后的值為00111,表明相加后,本位值為“1”(在此本位為第i位)。并且向其前一位(第i+1位),前兩位(第i+2位),分別有為“1”的進(jìn)位。向其前第3位,第4位的進(jìn)位均為0。電路中將其本位和進(jìn)位分別送至各個(gè)寄存器中合適的位置,見(jiàn)圖4所示,故第i列的16個(gè)數(shù)相加后進(jìn)位最多可進(jìn)至其前第4位。亦即相加后第i+1、i+2、i+3、i+4、均可能有其進(jìn)位。在圖4中,各個(gè)5位KJ(J=0,1,2,……19)寄存器存放第一次化簡(jiǎn)的結(jié)果。例如,ki,0是指Ki寄存器的最低位。ki,0中存放Ri中所有數(shù)據(jù)相加后所得的本位。Ki,1中存放Ri-1中所有數(shù)據(jù)相加后所得的對(duì)i-1前一位即第i位的進(jìn)位。
ki,2中存放Ri-2中所有數(shù)據(jù)相加后所得的對(duì)i-2位的前2位即第i位的進(jìn)位。
ki,3中存放Ri-3中所有數(shù)據(jù)相加后所得的對(duì)其(即第i-3位)前3位(即第i位)的進(jìn)位。
ki,4中存放Ri-4中所有數(shù)據(jù)相加后所得的對(duì)其前4位即第i位的進(jìn)位。
其它5位寄存器中存放數(shù)據(jù)的規(guī)律與Ki寄存器的相同。
總之,經(jīng)電路圖1、圖2、圖3、圖4的運(yùn)算,16個(gè)二進(jìn)制數(shù)據(jù)的相加運(yùn)算被轉(zhuǎn)化成了5個(gè)二進(jìn)制數(shù)的相加運(yùn)算。這5個(gè)二進(jìn)制數(shù)的所有位上的數(shù)據(jù)全部存在各個(gè)K寄存器中,位權(quán)相同的數(shù)組成列,被放在同一寄存器中。
第二次化簡(jiǎn)參見(jiàn)圖5,圖6將5個(gè)二進(jìn)制數(shù)據(jù)的相加運(yùn)算轉(zhuǎn)換為3個(gè)二進(jìn)制數(shù)的相加運(yùn)算。
圖5-1及5-2功能對(duì)任一K寄存器如KJ中的各位進(jìn)行相加運(yùn)算,電路的輸入信號(hào)記為G4、G3、G2、G1、G0。輸出為H5、H4、H3、H2、H1、H0,6個(gè)輸出信號(hào)中有且僅有一個(gè)為“1”。它反映了G4、G3、G2、G1、G05個(gè)輸入中值為1的數(shù)的數(shù)量。如H3=1,表明,5個(gè)輸入中3個(gè)為1,兩個(gè)為0。
圖5-1、5-2電路是直接用邏輯函數(shù)法設(shè)計(jì)出來(lái)的,當(dāng)然我們?nèi)匀豢梢允褂们笆鲈O(shè)計(jì)思路將KJ中值為1的數(shù)集中移到低位,用異或運(yùn)算判斷1的數(shù)量,然后將其對(duì)應(yīng)的本位和進(jìn)位送至Q寄存器中。
與圖5-1、5-2對(duì)應(yīng)的真值表是表2。
由表2的真值表所得出的邏輯表達(dá)式如下H0=G4+G3+G2+G1+G0H1=G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0H2=G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0H3=G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0H4=G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0+G4·G3·G2·G1·G0H5=G4·G3·G2·G1·G0圖6功能輸入為H5、H4、H3、H2、H1、H0,此圖是將相加后得的本位和進(jìn)位送至各個(gè)3位Q寄存器中。
第三次化簡(jiǎn),參見(jiàn)圖7將3個(gè)二進(jìn)制數(shù)的相加運(yùn)算轉(zhuǎn)換為2個(gè)二進(jìn)制數(shù)的相加運(yùn)算。
圖7功能化簡(jiǎn)方法與第二次化簡(jiǎn)一樣即先用邏輯函數(shù)法直接判斷1的個(gè)數(shù),然后將其對(duì)應(yīng)的本位和進(jìn)位送至2位S寄存器中。
與圖7對(duì)應(yīng)的真值表是表3。
表2 與圖5-1、圖5-2對(duì)應(yīng)的真值表
表3 與圖7對(duì)應(yīng)的真值表
由表3的真值表所得邏輯表達(dá)式如下L0=J2+J1+J0L1=J2·J1·J0+J2·J1·J0+J2·J1·J0L2=J2·J1·J0+J2·J1·J0+J2·J1·J0L3=J2·J1·J0在此我們也可以利用標(biāo)準(zhǔn)全加器電路來(lái)運(yùn)算。
實(shí)施方式2通用二進(jìn)制連加器的設(shè)計(jì)參見(jiàn)圖8為使連加器具備以下功能,即只要n在允許的范圍內(nèi),都可以進(jìn)行化簡(jiǎn)運(yùn)算,并得出結(jié)果,且當(dāng)n較小時(shí),所花的計(jì)算時(shí)間要比n較大時(shí)所花的時(shí)間少,我們可以按照?qǐng)D8所示的方案來(lái)設(shè)計(jì)能實(shí)現(xiàn)上述功能的通用二進(jìn)制連加器,(框圖中n的最大取值為63,實(shí)際設(shè)計(jì)時(shí)n的最大取值當(dāng)然不局限于此)為使連加器既可以化簡(jiǎn)當(dāng)n較大時(shí)的二進(jìn)制數(shù)的連加運(yùn)算,又可以在計(jì)算數(shù)量n較小時(shí)計(jì)算的速度更快一些。為此我們根據(jù)n的范圍把化簡(jiǎn)電路的輸入端數(shù)量進(jìn)行規(guī)定
① n=3情形下化簡(jiǎn)一次的電路例如三個(gè)相加的二進(jìn)制數(shù)每列的數(shù)都有三個(gè),它們被放在ri,3、ri,2、ri,1、ri,0中。當(dāng)然ri,3此時(shí)必定為“0”。我們對(duì)ri,3、ri,2、ri,1、ri,0中“1”的數(shù)量進(jìn)行判斷,然后確定其相加后的進(jìn)位、本位,并將本位、進(jìn)位送至相應(yīng)合適位置,從而將三個(gè)數(shù)相加轉(zhuǎn)換為二個(gè)數(shù)相加。
② 4≤n<8情形下化簡(jiǎn)一次的電路我們用寄存器中的低8位來(lái)存放在n個(gè)相加的二進(jìn)制相同位上的n個(gè)數(shù),判斷它們相加后的本位和進(jìn)位。從而相加運(yùn)算轉(zhuǎn)換成為三個(gè)數(shù)的相加運(yùn)算。
③ 8≤n<16情形下化簡(jiǎn)一次的電路我們用寄存器中的低16位來(lái)存放這n個(gè)數(shù),化簡(jiǎn)運(yùn)算后,轉(zhuǎn)化為4個(gè)數(shù)的相加運(yùn)算,屬4≤n<8情形。
④ 16≤n<32時(shí),依此類(lèi)推。
圖8為n個(gè)二進(jìn)制數(shù)相加的流程圖,假定此連加器最多可加63個(gè)數(shù),即n的范圍為2≤n<64。參照此圖,可進(jìn)行n較大,例如n多達(dá)63時(shí)的連加運(yùn)算,又可以在n較小時(shí)進(jìn)行連加運(yùn)算,速度能相對(duì)快一些。
實(shí)施方式3參見(jiàn)圖10當(dāng)多個(gè)二進(jìn)制數(shù)連乘時(shí),不算出中間的乘積結(jié)果,將兩個(gè)二進(jìn)制數(shù)的相乘化簡(jiǎn)為二個(gè)二進(jìn)制數(shù)的相加,不算出相加結(jié)果,直接與第三個(gè)數(shù)相乘,再應(yīng)用本算法將其化簡(jiǎn)為兩個(gè)二進(jìn)制數(shù)的相加運(yùn)算,--------,直到最后一次乘法運(yùn)算時(shí),再化為二個(gè)二進(jìn)制數(shù)相加運(yùn)算后,再進(jìn)一步算出最終結(jié)果。
盡管描述本發(fā)明的特定實(shí)施例介紹了本發(fā)明,但應(yīng)理解到,精精通本領(lǐng)域的人員,可以對(duì)本發(fā)明進(jìn)行形式上的和細(xì)節(jié)上的各種修改,而不脫離本發(fā)明的方案與范圍。
權(quán)利要求
1.一種二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法,其特征在于所有相加的二進(jìn)制數(shù)中具有相同位權(quán)的數(shù)據(jù)組成列,通過(guò)同時(shí)對(duì)每一列欲加的數(shù)進(jìn)行相加運(yùn)算得到各自相加后的本位和對(duì)高位的進(jìn)位,將運(yùn)算結(jié)果轉(zhuǎn)換成由較少的幾個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算,再對(duì)所述連加運(yùn)算重復(fù)上述處理過(guò)程,將運(yùn)算結(jié)果轉(zhuǎn)換為由更少的幾個(gè)多位二進(jìn)制的連加運(yùn)算,繼續(xù)對(duì)新的運(yùn)算重復(fù)上述過(guò)程,一直到將運(yùn)算轉(zhuǎn)換為二個(gè)多位的二進(jìn)制的相加運(yùn)算,每次化簡(jiǎn)前后連加的二進(jìn)制數(shù)的數(shù)量滿(mǎn)足如下的約束關(guān)系,n個(gè)二進(jìn)制數(shù)的連加運(yùn)算,若n滿(mǎn)足2k-1≤n<2k,化簡(jiǎn)后,可轉(zhuǎn)換成k個(gè)二進(jìn)制數(shù)的連加運(yùn)算;最后再用現(xiàn)有的計(jì)算二個(gè)多位二進(jìn)制相加運(yùn)算的加法器,算出最終結(jié)果。
2.根據(jù)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法,其特征在于當(dāng)多個(gè)二進(jìn)制數(shù)連乘時(shí),不算出中間的乘積結(jié)果,將兩個(gè)二進(jìn)制數(shù)的相乘化簡(jiǎn)為二個(gè)二進(jìn)制數(shù)的相加,不算出相加結(jié)果,直接與第三個(gè)數(shù)相乘,再應(yīng)用本算法將其化簡(jiǎn)為兩個(gè)二進(jìn)制數(shù)的相加運(yùn)算,--------,直到最后一次乘法運(yùn)算時(shí),再化為二個(gè)二進(jìn)制數(shù)相加運(yùn)算后,再進(jìn)一步算出最終結(jié)果。
3.一種實(shí)現(xiàn)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法的連加器電路,其特征在于該電路包括若干級(jí)的化簡(jiǎn)電路和一個(gè)最終的加和電路,其中每一級(jí)的作用在于將數(shù)量較多的連加運(yùn)算轉(zhuǎn)換為數(shù)量較少的二進(jìn)制數(shù)的連加運(yùn)算,最終加和電路的作用多個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算經(jīng)過(guò)若干次化簡(jiǎn)后,轉(zhuǎn)換成兩個(gè)二進(jìn)制數(shù)的相加運(yùn)算,然后用現(xiàn)有的計(jì)算兩個(gè)二進(jìn)制數(shù)相加運(yùn)算的加法器,算出最終結(jié)果。
4.根據(jù)權(quán)利要求3所述的一種實(shí)現(xiàn)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法的連加器電路,其特征在于所述若干級(jí)的化簡(jiǎn)電路的作用是對(duì)所有各列數(shù)據(jù)同時(shí)分別進(jìn)行運(yùn)算,對(duì)任意一列而言,列中的所有數(shù)據(jù)相加得到本位及對(duì)高位的進(jìn)位,并把這些本位和進(jìn)位分別送到與它們位權(quán)相符合的下一級(jí)化簡(jiǎn)運(yùn)算電路的適宜的數(shù)據(jù)列中;每個(gè)列中的數(shù)的相加運(yùn)算電路至少包括列數(shù)據(jù)排列電路,每一列數(shù)中的“1”的數(shù)目的判斷電路,列中各數(shù)相加后的本位和進(jìn)位的判斷電路及將本位和各個(gè)進(jìn)位送到進(jìn)行下一次化簡(jiǎn)運(yùn)算時(shí)將要使用的適宜的數(shù)據(jù)列中的傳送電路。
5.根據(jù)權(quán)利要求4所述的一種實(shí)現(xiàn)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法的連加器電路,其特征在于所數(shù)的述數(shù)據(jù)排列電路,將列中值為“1”的數(shù)據(jù)排列到該列的低位段,該列數(shù)“1”的數(shù)量不發(fā)生改變;當(dāng)列中的數(shù)的數(shù)量較少時(shí),根據(jù)真值表設(shè)計(jì)電路,該電路能一次完成數(shù)據(jù)排列的工作,當(dāng)列中的數(shù)的數(shù)量較多時(shí),可將列中的數(shù)按從低位到高位的順序,分割成幾組,對(duì)各組的數(shù),分別同時(shí)進(jìn)行數(shù)據(jù)排列,將各組中的各自所有的“1”,分別排列到各組的低位段,然后依然是從低位到高位,每?jī)蓚€(gè)相鄰的數(shù)據(jù)小組構(gòu)成一個(gè)大組,對(duì)各大組的數(shù),分別同時(shí)進(jìn)行數(shù)據(jù)排列,將各大組中所有的“1”分別排列在各大組的低位段,然后依然是從低位到高位,每?jī)蓚€(gè)相鄰的大組構(gòu)成一個(gè)更大的數(shù)據(jù)組,對(duì)它們?cè)俅芜M(jìn)行排列,--------,一直到列中所有的“1”被排列在該列的低位段。
6.根據(jù)權(quán)利要求4所述的一種實(shí)現(xiàn)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法的連加器電路,其特征在于所述判斷電路對(duì)于已完成數(shù)據(jù)排列的各個(gè)列中所有兩兩相鄰的數(shù)據(jù)進(jìn)行異或運(yùn)算,且最低位還要和“1”進(jìn)行異或,最高位還要和“0”進(jìn)行異或,根據(jù)輸出為“1”的異或門(mén)的位置即得到列中“1”的數(shù)量及列中所有數(shù)相加后所得到的本位以及對(duì)高位的進(jìn)位。
7.根據(jù)權(quán)利要求4所述的一種實(shí)現(xiàn)權(quán)利要求1所述的二進(jìn)制數(shù)并行連加運(yùn)算的化簡(jiǎn)方法的連加器電路,其特征在于所述傳送電路作用是將本次化簡(jiǎn)所得到的本位及對(duì)高位的進(jìn)位分別放在下一次化簡(jiǎn)運(yùn)算所使用的數(shù)據(jù)列中與其位權(quán)相符的數(shù)據(jù)列里,每一個(gè)新的數(shù)據(jù)列中的各個(gè)數(shù)據(jù)在新的連加運(yùn)算式中屬于相同位權(quán)的數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種計(jì)算機(jī)二進(jìn)制運(yùn)算方法,特別是涉及一種二進(jìn)制數(shù)連加運(yùn)算的化簡(jiǎn)方法。本發(fā)明還涉及一種二進(jìn)制連加運(yùn)算化簡(jiǎn)方法的連加器運(yùn)算電路。本發(fā)明將多個(gè)多位二進(jìn)制數(shù)的連加運(yùn)算通過(guò)邏輯運(yùn)算逐級(jí)減量,最終變換成二個(gè)多位二進(jìn)制數(shù)的相加運(yùn)算,而后,采用傳統(tǒng)算法將二個(gè)多位二進(jìn)制數(shù)加合,得出結(jié)果。本方法可用于所有可一次性轉(zhuǎn)換為二進(jìn)制連加運(yùn)算的運(yùn)算式的運(yùn)算;本方法可實(shí)現(xiàn)通用的二進(jìn)制數(shù)連加加法器。
文檔編號(hào)G06F7/40GK1567175SQ03145028
公開(kāi)日2005年1月19日 申請(qǐng)日期2003年6月19日 優(yōu)先權(quán)日2003年6月19日
發(fā)明者周育人 申請(qǐng)人:周育人