專利名稱:處理器及其運算方法以及數據處理器的制作方法
技術領域:
本發(fā)明涉及一種例如為用于執(zhí)行加法和乘法運算的半導體器件的處理器,用在該器件的運算方法以及其中使用該處理器數據處理器。
近些年來,由于半導體制造微型化技術和包括執(zhí)行算法的半導體電路技術的巨大發(fā)展,加法器和乘法器的運算速度明顯增加了。它們的運算處理適用于包括中央處理單元(CPU)或數字信號處理器(DSP)領域的每一種半導體器件。然而,該技術越發(fā)展,這種運算處理就越需要更高的性能,即更高的速度。
特別是在多媒體時代需要進行圖像處理的領域內,需要進行極力大量的計算例如矩陣運算和高速處理;更確切地說,加法器或乘法器的處理是用于確定其性能的最重要的處理,需要按更高的速度進行處理。
作為本運算方法中的加法器的一個實例,下面對于在“CMOS VLSI的設計”中介紹的加法器(由Sugano Takuo,Baifukan指導的)進行。
對于兩個二進制數字的相加,假設X和Y代表該二進制數字,S代表X和Y的和,C代表進位值,假如X和Y每一個具有一位,則有如下四種類型的計算當X=0和Y=0,則S=0和C=0。
當X=0和Y=1,則S=1和C=0。
當X=1和Y=0,則S=1和C=0。
當X=1和Y=1,則S=0和C=1。
假如考慮上述結果按照真值表利用邏輯表達式來表達“和”S進位值C,得到表達式S=X+Y,和C=X+Y。如圖41A所示,它們能夠在根據單一異或門OR和單一AND門的雙輸入雙輸出電路中實現。具有這種功能的電路稱為半加法器。
假如二進制數每個具有多位,換句話說,假如它們每個具有的位寬(bitwidth)為2或多位,則需要從較低位進行進位信號的處理。因而,進行該處理需要一個電路,其中對于一位可能進行將X1、Yi和Ci-1相加。這種三輸入雙輸出電路稱為全加器。圖41C表示代表這種運算的真價表和邏輯表達式。通過死置所需數量的全加器并將它們連接使較低位的加法器的進位信號輸入到較高位加法器,可以得到用于進行任何位數加法的電路。其被稱為逐位進位加法器,在圖41B中表示了構成一四位加法器的一個實例。盡管有各種各樣的用于單一位的全加器的電路,其正確地反映在圖41C中的真值表的作用,但有一設計難點,在沒有產生和信號時,但是希望盡可能快地傳輸由較低位向較高位輸入的進位信號的情況下,能夠實現高速運算。圖41D表示根據這種觀點設計的全加器的一個實例。
假如位數例如增加到16位,關于通過改進單個全加器實現加速則存在限制,必須利用整個16位加法器來實現加速。由于如上所述利用進位傳輸速度,可調節(jié)加法器的運算速度,假如無需等待來自較低位加法器的進位信號,就能確定加法器本身的進位信號,則可以實現加速。
僅由本位的輸入值和最低位的進位信號能夠產生對所有位的進位信號。這被稱為進位預作準備(CLA)。適用這種方法的一個電路的實例(CLA電路)表示在圖42A中。在圖42A中,HA代表在圖42B中的一個半加器,由虛線包圍的部分利用圖42C中的CMOS電路來實現。
在實際實現該電路時,考慮到硬件的數量或效率,對于所有位的進位信號主要不是在CLA中產生的,而是通過對于每個組件例如由四位構成的組件采用CLA來傳輸進位信號,以及通過利用在每個組件(CLA組件)內部的逐位進位來傳輸進位信號。在圖43中表示了在這種方法中采用的16位加法器的一個實例。
通過對一被減數增加一減數的2的補數利用加法器進行減法。
然而,還在上述方法中,由于元件的數量和運算時間兩者隨著運算的次數的增加而顯著增加,在運算增加的情況下不易實現進一步高速度的運算。
例如,當總共將63個數據塊相加時,為了高速運算可以實現在圖44中所示的并行6級的加法運算,但是需要62個全加器。另一方面,假如元件的數量降低,可以如圖45所示僅利用單一的全加器來進行這種運算,不過必須順序地進行62次加法。
下面按照在本運算方法中的一個乘法器的實例,簡要介紹一并行乘法器。
在(n×n)位的乘法中,按照下式得到部分乘積Σi=0n-12i+jPij(j=0,1,...,n-1)]]>
其中該部分乘積是順序的被乘數X=Σi=0n-12i×i]]>與一位的2jYj(J=0,1…n-1)的乘數Y相乘的結果。
由于在二進制數中,僅有0和1,當Yj為0時,Pij總為0。以及當Yj為1時,Pij的每位等于Xi的每位。因此,通過在被乘數的每位與乘數的每位之間采用AND運算就能得到該部分的乘積。通過根據乘數各位的權安排所產生的部分乘積的各個位并將它們彼此相加,可以得到如下的乘法運算結果Σj=0n-1Σi=0n-12i+jPij]]>通過配置用于產生上述部分乘積的硬件(AND門)和用于以數組(陣列)方式將各部分的乘積相加并將它們連系的電路,可以實現最基本的并行乘法器。8位×8位的并行乘法器的一個實例表示在圖46中。如圖所示,該并行乘法器包含一全加器301,半加器302和AND門303。
如在這一實例中所表示的,在對(n×n)位數字進行乘法時,在n2個AND門中可易于且高速計算各部分的乘積,以及用于將各部分的乘積相加的加法步驟控制了運算速度。因此,增加對各部分的乘積進行加法的步驟的運行速度是加速乘法器運算的關鍵。
作為改進的方法,有一種使用進位值存儲的加法器的方法,其中通過將一用于各部分乘積的加法級的進位信號傳輸到下一個加法級中的加法器,可以不必需要在本級中傳輸進位信號,即使用一種Wallace-free法(Wallace,C;關于電子計算機的IEEE學報EC-13.1,1964第14-17頁),該方法在同一位中以并行方式實施加法步驟,以及使用一種方法,其中采用Booth算法(Rubinifield,L;關于計算機的IEEE字報,(24,10,1975,第1014-1015頁)降低產生部分乘積的數目,增加運算速度。
然而,在上述方法制中,元件的數量和運算時間兩者隨位數增加而顯著增加,因而由于增加位數的趨勢不易進一步增加速度。相應地,近來報導有一種適用多值邏輯的乘法器(T.Hanyu等人,關于MVL的國際討論會的IEEE字報,第19-26頁(1994)5月,1993年11月)。然而在目前的條件還沒有投入實際使用。
本發(fā)明的一個目的是提供一種能夠利用較少元件進行高速運算的處理器及其運算處理方法,以及一種解決了上述技術難題的數據處理器。
本發(fā)明的另一個目的是降低在一處理器中所需元件的數量和降低消耗,以及提供一種增加運算速度的數據處理器。
本發(fā)明的再一個目的是通過在相加過程中消除進位信號的傳輸來增加運算速度。
本發(fā)明的再一個目的是通過重新安排數據降低所要相加數據的數量來增加運算速度和降低用于運算的所需元件的數目。
本發(fā)明的再一個目的是通過以并行方式進行運算來增加處理速度。
按照一個方面,實現這些目的的本發(fā)明涉及一種用于將若干多位數據相加的處理器,其包含第一加法裝置,用于在若干多位數據的各公用位上的數據加在一起;以及第二加法裝置,用于計算由第一加法裝置得到的相加結果的和。
按照另一方面,實現這些目的的本發(fā)明涉及一種用于將若干多位數據相乘的處理器,其包含部分乘積產生裝置,用于產生若干多位數據的各個(單一)位的部分乘積;第一加法裝置,用于將在由部分乘積產生裝置產生的若干部分乘積的公共位上的數據加在一起;以及第二加法裝置,用于計算由第一加法裝置得到的相加結果的和。
按照再一方面,實現這些目的的本發(fā)明涉及一種用于將若干多位數據相加的方法,其包含第一加法步驟,用于將各個位獨立地進行相加;以及第二加法步驟,用于計算由第一加法步驟得到的相加結果的和。
按照再一方面,實現這些目的的本發(fā)明涉及一種用于將若干多位數據相乘的運算方法,其包含部分乘積產生步驟,用于產生若干多位數據的各個(單一)位的部分乘積;第一加法步驟,用于將在由部分乘積產生步驟產生的若干部分乘積的各公共位上的數據加在一起;以及第二加法步驟,用于計算由第一加法步驟得到的相加結果的和。
按照再一方面,實現這些目的的本發(fā)明涉及一種用于輸入數據的輸入裝置。用于存儲數據的存儲裝置,用于按照專用的處理程序對存儲在存儲裝置中的數據以及由輸入裝置輸入的數據進行處理的處理裝置,以及用于輸出處理裝置的處理結果的輸出裝置;其中的處理裝置包括用于將若干多位數據的公共位上的數據加在一起的第一加法裝置和用于計算由第一加法裝置得到的相加結果的和以及將若干多位數據相加的第二加法裝置。
由如下對本發(fā)明的各優(yōu)選實施例的介紹,對于本技術領域的技術人員來說,除了上述的以外,其它的目的和優(yōu)點也將變得很明顯。在進行介紹時,參照附圖,這些附圖構成本發(fā)明的一部分,表示了本發(fā)明的實例。然而,這種實例并不是本發(fā)明的各種不同的實施例的完全的代表,因而更參閱接著說明書的權利要求書,其確定了本發(fā)明的保護范圍。
圖1是表示第一實施例的加法器的示意圖;圖2是表示第一實施例的多數邏輯電路的示意圖;圖3A和3B是表示一ND的示意圖;圖4是表示第二實施例的加法器的示意圖;圖5是表示用于執(zhí)行第二實施例的第二加法步驟的加法器的示意圖;圖6是表示第三實施例的加法器的示意圖;圖7是表示第三實施例的部分乘積產生電路的示意圖;圖8是表示第三實施例的乘法器的示意圖;圖9是表示第三實施例的加法器的示意圖;圖10是表示第三實施例的全加器通道級數量的示意圖;圖11是表示第三實施例的乘法運算處理程序的流程圖;圖12是表示第三實施例的乘法電路的示意圖;圖13是表示用在第三實施例中的ND的示意圖;圖14是表示用在第三實施例中的主要邏輯電路的示意圖;圖15是表示用在第三實施例中的主要邏輯電路的示意圖;圖16是用在第三實施例中的各信號的時間關系圖;圖17是表示用在第四實施例中的ND的示意圖;圖18是表示用在第四實施例中的主要邏輯電路的示意圖19是用在第四實施例中的的各信號的時間關系圖;圖20是表示用在第五實施例中的的主要邏輯電路的示意圖;圖21是表示第五實施例中的乘法器的示意圖;圖22是表示第六實施例中的乘法器的示意圖;圖23是表示第七實施例中的乘法器的示意圖;圖24是表示第八實施例的乘法器的示意圖;圖25是表示第九實施例的加法器的示意圖;圖26是表示第十實施例的加法器的示意圖;圖27是表示第十一實施例的加法器的示意圖;圖28是表示第十二實施例的2位加法器的示意圖;圖29是表示第十二實施例的加法器的示意圖;圖30是表示第十三實施例的加法器的示意圖;圖31是表示第十四實施例的乘法器的示意圖;圖32是表示第十四實施例的另一乘法器的示意圖;圖33是表示第十七實施例的加法器的示意圖;圖34是表示第十七實施例的另一加法器的示意圖;圖35是表示第十八實施例的加法器的示意圖;圖36是表示第二十實施例的乘法器的示意圖;圖37是表示第二十一實施例的DSP的示意圖;圖38是表示第二十一實施例的運算時間關系示意圖;圖39是表示第二十二實施例的接收電路的示意圖;圖40是表示第二十二實施例的卡式發(fā)射/接收單元的示意圖;圖41A到41D是用于解釋常規(guī)加法器的示意圖42A到42C是用于解釋常規(guī)CLA電路的示意圖;圖43是表示適用于組件CLA的常規(guī)加法器結構實例的示意圖;圖44是表示常規(guī)加法器的結構實例的示意圖;圖45是表示常規(guī)加法器的結構實例的示意圖;圖46表示常規(guī)乘法器的結構實例的示意圖;下面將利用附圖詳細介紹本發(fā)明。
〔第一實施例〕根據這一實施例,通過利用將7個8位數據序列相加的運算作為一個實例,來介紹若干多位數據的相加方法。
參閱表示這一實施例的圖1。在這一實施例中為了將7個8位數據序列相加。通過首先將在各個位上的7個8位數據序列加在一起,執(zhí)行第一加法步驟。下面詳細介紹這種加法的構成以及利用具有輸出功能的組件11進行計算,這種輸出功能即體現為在以二進制方式輸入n個輸入的過程中輸出多少高電平的數據(這種二進制在圖1中用S(pq)表示,p各位上的權,q在S位的權)。
在下文中,具有這種功能的組件11被稱為數字檢測器并縮寫為ND。在圖1中,一個ND11組件由一方框表示。在每個框中的數字分別在斜線(/)左側和右側表示的輸入數字(In)和輸出數字(Out)。輸出的數字是由輸入的數字確定的并且用Out=〔log2(In)〕來表示,其中〔a〕是小于a的最小整數Z。
根據這一實施例,根據用于以并行方式進行第一加法步驟的所有ND中的最慢一個ND的速度決定運算速度的。由于在這里運算速度總是相同的,它由一個ND的運算速度來決定。在這一實施例中,數據序列為8位并使用8個ND。由于對于將7個8位數據序列進行加法運算,故這里對ND最大形成7個輸入(點)。
由于在加法的一般運算中產生進位,由于進位值的傳送使運算速度被降低。然而,這一實施例具有特點是由于沒有以進位并行方式進行加法將各數據加在一起,使得其能夠增加運算速度。盡管這一實施例僅表示將7個8位數據序列相加的實例,應當理解,本發(fā)明并不局限于這一實例,在若干多位數據中各種不同倍數都是允許的。
在此之后,通過執(zhí)行將以二進制方式代表的8個所有相加結果進行相加的第二加法步驟,可以高速得到預期的相加結果Q。
下面介紹上面的ND。首先在圖2中表示了具有五輸入(A、B、C、D和E)的多數邏輯電路的電路示意圖。該五輸入多數邏輯電路具有的邏輯關系為,其中當在五個輸入中有三個或更多個輸入為高電平時,輸出為高電平。在Boolena Algebra符號表示法中,其可以用A(B+C)(D+E)+C(B+E)(A+D)+E(A+B)(C+D)來表示,并且其能夠易于由AND21和OR22構成的CMOS電路構成。盡管這里使用五個輸入,很明顯能夠擴展到總共n個輸入。
參閱圖3A,該圖表示一個通過利用若干5輸入多數邏輯電路31來判定在m位中是否實際有n位是成立的電路,其中輸出Fj(X1…X7)代表當輸入的數字等于或大于i時輸出為高電平。
圖3B表示用作一ND的電路,是通過將與圖3A中的電路相對應的陣列32的輸出連接到一用于將該輸出數據改變?yōu)?位的二進制數字的二進制代碼的電路33構成的。在這一實施例中,所示輸出實例是假設在七位中有五位是成立的。盡管在這里解釋的是包含一CMOS電路的一個ND作為ND的實例,但本發(fā)明并不局限于此,具有上述ND功能的電路都可以采用。
〔第二實施例〕在這一實施例中,提供的實例是通過增加第二加法步驟的速度來增加在第一實施例中的加法的運算速度。
參閱圖4,該圖表示這一實施例中的加法器的結構。如在這一圖中所示,利用在第一實施例中的的ND得到的3位輸出數據的非公共位上的相加結果可以被總和到一10位數據序列中。下面利用圖4中的實例將進行介紹。
在這一圖中,由橢圓框包圍的各位置處的3位輸出數據可以總和到10位數據序列A中,這是因為它們沒有公共位(當將3個相加結果總和時,存在一些位沒有數值,并且它們被設為0,在這一實例中,第一位被設為0)。重要的是,在該電路中進行處理時,在這種處理過程中僅利用線路不進行運算,盡管它被處理作為關于它的算法的一個步驟。
在這一步驟中,8個相加的結果可以被變換為3個10位數據序列。延遲時間是那樣小,以致與其它步驟相比可以被忽略。最后,通過將3個10位數據序列相加,可以得到最終的運算結果。由于在圖4的實例中使用了3個10位數據序列,借助如圖5所示的僅有兩級的全加器的通道可以得到最終的相加結果和可以高速將若干多位數據相加。
下面介紹用于進行通用計算的這一實施例,其中將m個數據塊最大n位的數據序列相加。由各ND輸出的相加結果具有最大〔Log2m〕位,因而能夠被變換為最大〔Log2m〕(n+〔Log2m〕)位的數據序列。最后通過將各〔Log2m〕(n+〔Log2m〕)位的數據序列相加,可以得到最終的運算結果。全加器通道級的數目可以由表達式〔Log2〔Log2m〕〕來表達,其中〔a〕是大于或等于a的最小整數。由上述表達式可看出,全加器通道級的數目可以保持很低,即使多位數據序列的數目變得較高的情況下。
〔第三實施例〕在這一實施例中,將解釋多位數據的乘法。盡管下面是通過—8×8位乘法器來進行介紹的,但能擴展為通用的m×n位乘法。
假設X×Y=Q,其中X(X7X6X5X4X3X2X1X0)是被乘數,Y(Y7Y6Y5Y4Y3Y2Y1Y0)是乘數。由于對于X和Y兩者十進制數中最大值是28-1,得到Q<(28-1)2<216-1的表達式,以及Q用最大16位來表示。對于最大位得到表達式Q<(2m-1)(2n-1)<2m+n-1,以及Q用最大m+n位來表示。
如圖6所示,首先產生一個部分乘積XiYj。盡管像一般的CMOS乘法器一樣,通過在被乘數X的每一位Xi和乘數Yi之間取AND邏輯可以計算一部分乘積,為了簡化解釋在這一實施例中如圖7所示,使用了具有公用柵極nMOS晶體管。此外,使用nMOS晶體管僅作為實例,很明顯可以采用其它傳輸門MOS晶體管。
最好,在起始狀態(tài)應將Xi設定為低電平(0),Yj設定為高電平(1),并且所有的輸出設為0。然后,在將Yj設定到低電平狀態(tài)之后,輸入Xi。在進行一次運算時,在這種狀態(tài)下,將高電平(1)或低電平(0)輸入。換句話說,當Yj被設定為高電平時,一高電平信號輸入到柵極,并且該nMOS晶體管被導通,產生如下8位數據序列XxYj=(X7Yj,X6Yj,X5Yj,X4Yj,X3Yj,X2Yj,X1Yj,X0Yj)=X(X7,X6,X5,X4,X3,X2,X1,X0)當Yj被設定為低電平(0)時,將低電平信號輸入到門電極,因此,nMOS晶體管被關斷,在起始狀態(tài)下產生8位數據序列(0,0,0,0,0,0,0,0)。這樣就使得能夠在一尺寸小于一般AND電路的電路中,形成用于X×Y的AND電路。然而,一般的AND電路可以用于此運算。
然后,關于圖6中的部分乘積的各個位上的數據利用每位的ND相加在一起。由于在這一步驟中以并行方式進行加法,適合于高速運算。在m×n乘法器電路中使用(m+n-1)個ND。輸入到各ND上的輸入最大的(點)數目為Min(m,n)。如圖6所示,在8位乘法器的實例中使用了15個單元的ND。形成最大8個輸入(進行X7Y0+X6Y1+X5Y2+X4Y3+X3Y4+X2Y5+X1Y6+X0Y7的運算)。
對于通過在一輸入一輸出配置中通過線路可以替換各ND的地點當使用ND時,適用相應數目的ND。假如忽略可被替換的ND,則使用(m+n-3)個ND。此外,假如僅對除去可以利用雙輸入雙輸出的HA(盡管HA是一種ND,其還是與ND被區(qū)分)取代ND的地點以外的三或更多個輸入使用ND,可以使用(m+n-5)個ND。
通常,對于3或更多的輸入而言,由于在這種狀態(tài)下特別可能產生的進位值的傳送,加法運算變得復雜和運算速度降低。由于這一實施例具有的特征是將數據加在一起時以沒有進位的方式進行運算,可以實現高速運算。圖8是圖6所示組件的方塊圖。為了簡化,略去了作為輸入單元的部分乘積形成單元。該部分乘積形成單元可以用AND電路替代。在這一附圖中,用方框表示ND。
通過執(zhí)行用于對以二進制方式表示的所有(m+n-1)個相加結果進行相加的第二加法步驟,在此之后,高速得到預期的乘法結果。
為了進一步降低加法運算的數字,以與第二實施例相同的方式引入下一運算方法。
換句話說,由(m+n-1)個ND輸出的相加結果具有最大值為〔Log2(Min(m,n))〕位,因此,每次在最終乘法結果的(m+n)位中僅使用各個位中的一部分。在圖6所示實例中,MD的輸出最大為4位,最終乘法結果為16位。因此,在由(m+n-1)ND輸出的相加結果中的沒有公共位的相加結果可以總和到一為(m+n)位的數據序列。
利用圖6中的實例解釋上述運算。由于在用橢圓包圍的各位上由ND輸出的各相加結果沒有公共位,它們總和到16位數據序列B中(假如在一個位上沒有數值,當由ND輸入4個相加結果時,將其設為0,在這一實例中,將2到4、8、12、15和16的各個位設定為0)。重要的是,在電路中進行處理時,在僅利用線路進行這種處理的過程中不執(zhí)行運算,盡管在其它的算法中被處理作為一個步驟。
在這一步驟中,Log2(Min(m,n))(m+n-1)的相加結果可以變換為〔Log2(Min(m,n))〕(m+n)位的數據序列。延遲時間是那樣短,以致與其它步驟相比可以被忽略。最后,通過將〔Log2(Min(m,n))〕(m+n)位的數據序列相加,可以得到最終的運算結果。
由于在圖6和8的實例中使用16位的數據序列,利用如圖9所示的僅為2級的全加器通道就可以得到最終的乘積結果。一般來說,利用與第二實施例的相同符號即利用〔Log2〔Log2(Min(m,n))〕〕就可以表達全加器通道級的數目。
參閱圖10,該圖是橫軸為Min(m+n),縱軸為全加器通道級的數目的曲線圖。如由這一曲線圖所示,即使m和n增加,由于全(加)法器通道級的數目的二次取Log(對數),使全加器通道級的數目可以保持很低。換句話說,即使位數增加,也可以保持高速運算。
圖11中表示了上述運算方法的流程圖。
在步驟S111,利用AND電路或開關產生一部分乘積XxYj。接著在步驟S112,利用ND將所產生的部分乘積XYj的各個位上的數據以并行方式加在一起。接著在步驟S113,將在步驟S112的相加結果中的非公共位的數據位總和到一個數據序列中。然而,如上所述,與這一步驟對應的器件沒有進行運算,正像在ND的輸出和加到后級中的全加器的輸入之間形成連接一樣。最后在步驟S114,利用全加器將由在步驟S113中總成的數據相加。
然后,對于用于執(zhí)行上述運算方法的實際乘法電路,例如參照圖12中在這一實施例中用的ND進行解釋。被乘數輸入單元71用于輸入一被乘數X。乘數輸入單元72用于輸入一乘數Y。部分乘積產生電路73是一如圖所示的AND電路或一開關,以便產生部分乘積。如上所述,利用其它結構的電路也可產生部分乘積。ND74用于將在若干多位數據(在這一實施例中為各個部分乘積)的相同位上數據以并行方式加在一起。
參閱圖13,該圖表示一示有七輸入的ND的典型結構圖。在這一實施例中使用的ND具有多數邏輯電路組件131-A、131-B、131-C和一反相器132,它們的結構與第一實施例中的對應部分不同。輸入到連接端134和135的信號與輸入到輸入端133的信號相同。連接端136、137和138用作輸入作為在前級中的多數邏輯電路組件的輸出信號的終端。在圖B中,2C和4C代表對應連接到輸入端136,137和138的電容器數值,假設C代表連接總輸入端的電容。在這一圖中,各信號輸入到多數邏輯電路組件131-A、131-B和131C上。
例如,當一信號輸入到七輸入的多數邏輯電路組件131-A上時,假如存在多數數據為HIGH LEVEL(高電平)或者假如在7個輸入中有4個或更多個輸入為HIGH LEVEL,則由組件131-A的輸出為HIGH LEVEL。以同樣的方式,例如在11輸入的多數邏輯電路組件中6個或更多的輸入是HIGH LEVEL,以及假如在13輸入的多數邏輯電路組件中7個或更多個輸入是HIGH LEVEL,則輸出是HIGH LEVEL。在表1中,S3代表7輸入的多數邏輯電路組件對于每個HIGH LEVEL輸入計數值的輸出值。
接著如在圖13中的所示,7輸入的多數邏輯電路組件131-A輸出利用一反相器被反相,并被輸入到多數邏輯電路組件131-B的加權輸入端136。多數邏輯電路組件131-B的電路結構表示在圖14中。在這一圖中,電容器212的電容值大約4倍于連接到另一輸入通道的電容202。假設C是連接到輸入端的通道的電容值,該電路是一結構為11輸入的多數邏輯電路,其中共同連接有11C,以及來自加權輸入端的信號輸入到它們之中的4個C上,與此相同的輸入到131-A組件上的信號還輸入到其它7個連接端。
例如,假若在7個輸入中有4個或更多個輸入為HIGHLEVEL,如上所述,LOW LEVEL輸入到加權的輸入端。假如在輸入到不同于加權的輸入端的輸入端上的信號中在7個輸入中6個或更多個輸入是HIGH LEVEL,則11輸入的多數邏輯電路確定做為總數中的多數并輸出HIGH LEVEL。假如在7輸入中有4或更多個以及5或較少個輸入為HIGH LEVEL,就不能確定一個多數并輸出LOW LEVEL。假如在7輸入中3或更少個輸入為HIGH LEVEL,則HIGH LEVEL輸入到加權的輸入端。假如在7輸入中有2或更多個以及3或更少個輸入是HIGH LEVEL,會有4加2或4加3即6或更多個輸入,因此,確定是一多數并輸出HIGH LEVEL。假如一個或更少個輸入為HIGH LEVEL,會有4加0或4加1即5或更多個輸入并輸出LOW LEVEL。
在表1中,S2代表對于每個HIGH LEVEL輸入計數值的多數邏輯電路組件131-B的輸出值。對于多數邏輯電路131-C,通過將對于多數邏輯電路131-A和131-B的輸出的反相信號在運算前輸入到具有4倍電容值和兩倍電容值的兩個加權輸入端,可以得到如在表1中S1表示的輸出。
根據這種電路結構,在表1中所示的兩個或更多個輸入中的HIGH LEVEL輸入的數目可以變換為,在要輸出的3位中的二進制數目。
在圖15中表示了多數邏輯電路組件的典型電路圖。這一多數邏輯電路組件包括復位開關201、電容器202、信號變換開關203,讀出放大器205、在讀出放大器中的反相器206、在讀出放大器中的第二反相器204,用于使反相器206復位的第二復位開關207、復位電源208、第二復位電源210、輸出端211、在共同連接的電容器202的端部處的附加電容209。在圖15中表示一種典型情況,而本發(fā)明并不限于這種結構。
圖16是圖15中的電路的運算時間關系圖。參閱這一圖,下面介紹運算過程。首先,利用脈沖ΦRES使在電容202的一端上的連接端復位。對于復位電壓,例如假若電源電壓為5伏系列,使用該電壓一半2.5伏復位。然而,復位電位并不限于此,而是可以使用其它電壓。幾乎同時,通過使復位開關207導通,將在讀出放大器中的反相器206的輸入端復位。這時,選擇一個數值作為復位電壓,其接近用于使反相器的輸出反相的邏輯反相電壓。假如復位脈沖ΦRES被隔開,電容202的兩端保持各自的復位電位。
接著,由于轉換脈沖ΦT的作用轉換開關203導通時,信號轉換到電容202的一端,以及在電容該端處的電位例如由2.5伏的復位電壓變到等同于一低電平的0伏或等同于一高電平的5伏。假設C代表電容202的電容量,Co代表附加電容的電容值,以及N個單元的電容器202并聯,共同連接到電容202的一端的各連接端作為一個輸入由一接近反相器的邏輯反相電壓的數值變化列因電容分別而形成的±〔2.5C/(Co+CN)〕×1V1的數值。
當反相器206的輸入端電壓由邏輯反相電壓變化時,反相器206的輸出端電壓按照它反相變化。當按照N個輸入(點)輸入各個信號時,N個電容分壓輸出的“和”輸入到反相器206的輸入端。假如在N個輸入(點)中輸入多數個HIGH LEVEL信號,反相器206的輸入端將邏輯反相電壓移到一較高的電位,并且HIGH LEVEL輸出到讀出放大器的輸出端211。假如輸入多數的LOW LEVEL信號、輸出LOW LEVEL。通過利用上述結構,圖15中的電路用作一多數邏輯電路,用以輸出以兩個或更多個輸入的多數決定的邏輯值。
盡管在圖13中表示7輸入的ND作為一個實例,應當理解,并不限于這種結構,而是可以很容易地擴展到多輸入的結構。此外,可以將一些鎖存電路靈活地連接在用于流水或處理的多數邏輯電路中,以便構成進一步提高運算速度的結構。
由ND所需的多數邏輯電路組件的數目由〔Log2n〕來表達。其中n是到各ND的輸入(端)的數目。對于到各ND的輸入(端)的數目,在一m×n的乘法器中適合的數值從1到Min(m,n),并且在這樣一個ND處乘法器的運算時間變得最長,這一ND的輸入計數值為最大輸入(點)的數目的Min(m,n)。這是因為多數邏輯電路極的數目隨輸入(點)的數目n按照〔Log2n〕增加。然而,很明顯,當位數增加時,由于級數的增加是按照Log函數方式,所以級數不會顯著增加。
由于運算以并行方式進行,其按照由具有最大輸入(點)數目Min(m,n)的各ND的運算速度運算終止于若干ND74。對于較早終止運算的ND,最好連接到一鎖存電路78,以便調節(jié)時間關系,盡管措施并不限于此。
這種ND結構由于并行運算故運算速度更高,以及由于所需元件較少,ND消耗功率較低,所以在上述實施例中的運算方法的特性可以明顯改進。
有一個步驟用于將由若干ND輸出的數據根據一個算法總和到一個數據序列中,但是如上所述在電路中并沒有進行處理,因此也就沒有與圖12中這一步驟相對應的電路。在圖6中所示的8×8位乘法的實例中,全加器75、76和77是16位或更少位的加法器。在圖12中,使用8×8位乘法器,因而,需要3個加法器并且將它們按兩級配置。盡管是將一般的預作準備進位(CLA)型全加器用作各加法器,但應理解,本發(fā)明并不限于此。
此外,將鎖存電路79連接在各加法器之間,在所謂的流水線法中的第二級內的加法器的運算過程中,利用第一加法器的運算,以便實現高的運算速度,盡管本發(fā)明并不限于這種方法。在這一8×8位乘法的實例中,運算結果輸出單元80以16位方式輸出運算結果。
由于具有少的數量的元件、低功率消耗和以并行方式運算,上述乘法器結構使得能夠形成一種高速的乘法器。
〔第四實施例〕下面介紹在ND部分的另外一種結構,用于以并行分批方式進行在第一到第三實施例中的加法運算。
圖17表示用于這一實施例的ND的典型結構圖,包括并行運算電路組件401和鎖存電路12。圖18表示并行運算電路組件401的電路圖。在這一圖中,連接端501、502和503分別是第一加權輸入端,第二加權輸入端和第三加權輸入端。每個輸入端具有一個連接到另一輸入端通道的且分別具有幾乎為一倍、二倍或三倍電容值的電容器。在圖19中表示了這一實施例的運算時間關系圖。并行運算電路組件401由脈沖ΦRES或ΦT控制。鎖存電路12由脈沖ΦRH控制。
首先參閱圖18,解釋基本運算。將一輸入信號鎖存在鎖存電路12-A中。這時,利用脈沖ΦSET將等同于一低電平的0伏施加到加權的連接端501和502以及將等同于高電平的S伏施加到加權的連接端503。接著利用復位脈沖ΦRES使電容202上的電壓復位到各自的復位電壓。
然后,當利用轉移脈沖ΦT使轉移開關203導通時,一個信號轉移到電容202的一端,在電容器的一端的電位例如變到一低電平或高電平。公共連接的電容202的一端的電壓按照對于一個輸入的電容分壓值變化。當反相器206的輸入端電壓由邏輯反相電壓變化時,反相器206的輸出端電壓對其響應產生反相變化。當每個信號響應于N于輸入而輸入時,電容分壓輸出的N個“和”輸入到反相器206的各輸入端。
在這一實施例中,各反極性信號輸入到具有3位電容值的加權連接端503以及具有1倍半和2倍電容值的加權連接端501和502上,因而,在公共連接的電容器2的一端處的電壓變化量彼此是偏離的,連接到與加權輸入端不同的各個輸入端的電容2具有幾乎相同的電容值。因此,假如在n個輸入中的多數高電平信號輸入時,反相器206的輸入端將邏輯反相電壓移到更高的電位,HIGH LEVEL輸出到讀出放大器的輸出端211。假如輸入多數的LOW LEVEL信號,輸出LOW LEVEL。
通過利用上述結構,圖18中的電路可以用作一多數邏輯電路,用以輸出兩個或更多個輸入中的多數輸入具有的邏輯值。圖17表示作為一實例的7輸入的ND。
在這一圖上,一些信號輸入到多數邏輯電平組件401。假設C是用于與輸入端通道相連的電容的數值,可以考慮按照13輸入的多數邏輯電路作為多數邏輯電路組件401,該電路具有的結構為其中將高電平信號由加權的輸入端輸入到在公共連接的13予C中的3個C上,將低電平信號由該加權輸入端輸入到另外的3個C上,以及將來自402的信號輸入到另外7個連接端上。
因此,當輸入一輸入值時,假如高電平信號的數目為多數,換句話說,在7個輸入中有4個或更多個HIGH LEVEL輸入,則由多數邏輯電路組件輸出HIGH LEVEL。在表1中,S3代表對于每個HIGH LEVEL輸入計數值的13輸入的多數邏輯電路組件的輸出值。接著利用脈沖ΦLAT1和ΦLAT2將輸出信號鎖存在鎖存電路12中。例如,假若在7個輸入中有4或更多個輸入為HIGHLEVEL,HIGH LEVEL輸入到加權的輸入端501以及LOWLEVEL輸入到加權輸入端502和503。
假如,在輸入到不同于加權輸入端的輸入端的信號中,7個輸入中有6個或更多個輸入是HIGH LEVEL,則13輸入的多數邏輯電路確定其為總數中的多數并輸出HIGH LEVEL。假如在7輸入中有4或更多個和5或更少個輸入為HIGH LEVEL,就不能確定什么作為多數,并輸出LOW LEVEL。按照同樣的方式,通過轉換輸入信號的極性載開關403改變輸入的加權連接端上的信號,可以得到表1的輸出。
根據這一電路結構,高電平輸入信號的數目可以在極小尺寸和低功耗的電路中變換為在表1所示的2或更多輸入之中的要以三位輸出的二進制數字。其它的介紹與對第三實施例的介紹相同。但是這種結構由于并行運算,使之可以進一步降低元件的數目,降低在小尺寸的電路中的功耗,以及構成調整制半導體器件。
〔第五實施例〕下面介紹用在第一到第四實施便中進行并行分批運算的ND部分中的其它結構。
這是一種運算方法,其中在第三實施例中的15個ND中將兩個或更多個ND進行總和。
在圖20中表示根據適用于于2×2乘法器的2×2多數邏輯電路的一個實例。換句話說,它是在第三實施例中如圖13所示的第一級中的一個多數邏輯電路。將關于第一位的數據(在20位上的X0Y0)輸入到單位電容C上。關于第二位的兩個數據塊(在21位上的X1Y0和X0Y1)輸入到每個具有2倍電容2C的連接端,以及因此一個輸入被看作為2個輸入。另外,將關于第三位的數據(在22位上的X1Y1)被加權成22,以及一個輸入被看作為4個輸入。
其它的介紹與對第一到第四實施例的介紹相同,并且在每個ND具有4輸入的情況下以二進制方式輸出高達7個的輸入。通過利用這種加權方法,可以更有效地利用該并行分批加法功能。
例如,在第三實施例中的8×8位乘法器中,將用于在其權為0、1、2和3的各位上的數據相加的ND總和到圖21所示的ND91中去,以及將其權為(4.5.6),(7.8.9),(10.11.12.13.14)的各位上區(qū)域總和到每個區(qū)域中(在圖21中的ND92到94)。
盡管輸入的數目和輸出的數目在圖21中利用ND的數目來表示,假如計數能夠高達56個輸入,就可以僅使用ND來表示。各個ND產生6位輸出0假設A、B、C和D是具有按增長次序排列的各位的6位數據序列,利用在第三實施例的圖11的流程圖的步驟S113即用于形成新的數據序列的步驟,可以將A和C總到數據序列D中,將B和D總和到數據序列2中。
因此,將僅進行一個附加的運算P+Q,換句話說,在這個實施例中,按照兩步執(zhí)行8×8位乘法;一個步驟是在ND中進行并行分批加法,一個步驟是僅一次進行16位加法。
其它的介紹與對第三和第四實施例的介紹相同,但是由于并行運算和較少的附加級,這種結構的乘法電路使得能夠進一步降低元件的數量、降低小尺寸電路中的功耗,以及構成高速的乘法器。
盡管在這一實施例中的總的進行加權處理的實例中,鄰近的各位被總和,但本發(fā)明并不限于這種方法,任何更有效的方法都可以靈活地采用,例如不連續(xù)的加權處理(例如,當在20位上和22位上的數據被總和輸入時)或者將一位上的數據劃分以對于不同ND具有不同權的方式將其輸入(例如,將28位上的數據劃分為兩類并將它們輸入到不同的ND)。
〔第六實施例〕盡管在第三到第五實施例中,有一些ND在用于以并行方式將各個的部分乘積相加的一個級中,以及有一些全加器在后一級中,各ND還可在ND之后進行連接。參閱圖22,通過提供一32×32位乘法器來進行解釋。該圖圍繞一32輸入的ND表示。在32輸入的ND中,形成7位輸出。對于較低的位,對于16-31輸入的ND形成6位輸出,并且這些輸出可以認為是各ND的運算結果的部分乘積。
因此,通過再次使用ND,可以形成3位輸出。在這種狀態(tài)下,按照數據順序,數據可以被分類為3個64位數據A、B和C以及僅在兩個全加器就能夠進行運算。這種方法對于具有很多位數的運算是特別有效的,盡管其要取決于加法器和ND的性能0此外,當這種方法制與在第五實施例中介紹的被加權的ND綜合使用時,不存在什么問題。
〔第七實施例〕在圖23表示了這一實施例的乘法器。在這一實施例中,對于首先由ND輸出的(S73、S72、S71、S70)和(S102、S101、S100)進行相加。特別是利用簡單的3位加法器,將S73加到S102、S101和S100上。
按照這一步驟的結果,在這一實施例中形成3個16位的數據序列A、B和C,而在第三實施例中形成4個16位的數據序列。因而與第三實施例相比,元件被減少了。
在第八實施例中介紹了將3個數據塊相乘的方法。雖然,利用2位數據作為簡單的實例能夠對其進行解釋,當在多位數據中的每個數據的位數不相同時,能夠以相同的方式實現該方法。數據塊的數量不應限制為3塊,它可以擴展到任選的很多的數據。
將乘法的數值設定為A(a1,a0),B(b1,b0)和C(c1,c0)。在計算(A×B×C)時,如圖24所示產生一部分乘積∑ajbjcx以及通過計算其和可以得到乘法結果。為了形成部分乘積∑ajbjcx,每個AND應當以與上述實施例相同的方式構成。即使對于3或更多數量的數據,部分乘積的運算速度也高,并且可以按并行處理方式形成部分乘積。
接著,對于在這種部分乘積的相同位上的數據進行分批相加。雖然,在圖24的實例中,每次是將相同位上的數據加在一起的,但是很明顯,像在上述實施例一樣介紹的,也可以采用加權和其它步驟。在圖24中,由橢圓框包圍的各個位上的分批相加輸出結果由于沒有公共位而被總和到一個數據序列中,導致產生3個7位數據序列,并將它們加在一起,以便得到3個3位數據的乘法結果。
更具體地說,在較低2位(20和21)上的數據不需要在7位數據序列中,并且S00和S10分別是由它們的輸出結果。因此,在作為第二步驟的附加步驟中,將3個5位的數據序列相加,使得運算速度更高。
由這些解釋可以明顯看出,在3或更多的數據序列的乘法中,本發(fā)明的運算方法也是有效的,使得利用少的元件數量、低的功耗可以進行高速乘法運算。
〔第九實施例〕
在這一實施例中,通過提供將63個7位數據序列相加,介紹對于至少包括一個負值的若干多位數據的相加方法。
負值用2的補數表示。換句話說,在7位中的最有效的位0代表一個符號,假如被設定為0則為正值,假如設定為1則為負值。一個數據序列X=(X6X5X4X3X2X1X0)用如下表達式表示X=(-1)·X626+Σn=0sXn·2n]]>圖25表示這一實施例。在這一實施例中,首先,對于7個8位數據列的各個位上的數據,對于這些數據進行分批相加。通過利用ND以與上述實施例相同的方式執(zhí)行第一加法。由于在這一實施例中,數據序列是包括一特征位的7位數據,故需要7個ND。
在這一加法步驟中以并行方式進行處理,因而運算速度由單一ND的速度確定。由于所有ND的運算速度是相同的,這一運算速度是由單一的ND的運算速度決定的。此外,在這一實施例中將63個7位數據序列相加,因而對于各ND的最大輸入(點)的數目為63。
由于在一般的加法中產生進位,由于進位值的傳送,運算速度下降。然而在這一實施例中,以并行方式執(zhí)行分批加法,包括特征位都沒有產生進位,所以附加的級可以減少,并實現高速運算。雖然在這一實施例中所表示的實例僅為63個7位數據序列,但本發(fā)明并不局限于此,在包含至少一個負值的若干多位數據中,可以為各種不同的位數。
接著,通過執(zhí)行用于將以二進制方式表示的所有8個相加結果相加的第二加法步驟,高速得到預期的加法結果Q。
下面介紹代表正號和負號的特征位。
假如將特征位設定為1,它代表以2的補數標志的(-1)·26。因而,假如在63個輸入中,用n表示1的數字,則-n·26代表該數值。當n等于63時,得到該最小值,并且在這種狀態(tài)下表達式-63·26=-(26-1)·26保持成立,絕對值沒有超過212。當將(SF5,SF4,SF3,SF2,SF1,SF0)設定為n的二進制表示方式,以及(BSF6,BSF5…BSF0)為它的“非”邏輯值時,通過利用這一負值作為2的輔數和第13位作為特征位,得到如下表達式F=-n·26=-26Σn=05SFn·2n]]>F-=26(26+Σn=05BSFn2n+1)]]>因此,由于如下表達式保持成立A-|F|=A+F(|F|+F=0,第13位設為0,由于1加1和第14位為零)F應當被相加。
在圖25中,利用ND將運算的特征位變換為二進制的符號表示SF5,并且通過取它們的“非”邏輯值產生BSF5。此外,通過對代表7位和第13位的負值的特征位數據的2的補數表示值加1可以產生F。
在其之后,通過執(zhí)行將二進制方式代表的7個相加結果全部相加的第二加法步驟,可以高速得到預期的加法結果Q。
如上所述,特征位可以像對代表數字的各位以相同的方式進行處理,包括至少一負值的63個7位的數據塊通過將其通到各ND被變換為7個6位數據塊。對于第7位的各數值1和用于特征位的2的補數變換的第13位沒有任何運算如圖25中(b)所示可以被合并,這是通過將每一個值加到Son或BSF數據序列實現的。
在這種方法中,第13位可以用作一個特征位Out=(-1)Q12·212+Σn=011Qn·2n]]>假設Xij代表第1個數據序列的第(j+1)位,上述計算可以以數字方式表達如下Out=Σi=163((-1X1626+Σn=05Xin·2n]]>=26(-26+Σn=05BSFn2n+1)+Σi=163(Σn=05Xin·2n))]]>因此,當輸出大于或等于0時,由上述的表達式可以得到如下的表達式Σi=163Σn=05Xin·2n+26Σn=05BSFn2n+1≥212]]>換句話說,將1加到要被設定為0的第13位上。
當輸出小于0時,Σi=163Σn=05Xin·2n+26Σn=05BSFn2n+1<212]]>因此,第13位維持為代表負值的1。
在一般的介紹中,第m位是一特征位,以及通過將第m+〔Log2n〕位設定為1和向用于2的補數表示的第m位加1,可以利用多個ND進行N次運算執(zhí)行加法(減法),這是由于該特征位可以作為與特征位不同的其它數字位等同的各個位一樣能夠被處理,使得運算更容易。
〔第十實施例〕下面通過一實例來解釋這一實施例,在該實例中提高了第二加法步驟的運算速度,使第九實施例中的加法以更高的運算速度實現。
圖26表示這一實施例的加法器的結構。該圖表示了將7個包括特征位的8位數據塊相加的一個實例,其中將由ND得到的3位輸出數據中的沒有公共位的加法結果總和到一個11位的數據序列中,利用圖26中的實例解釋這一運算。對于特征位,它們被認作為2的補數,像在第九實施例中所述的一樣,并且來自ND的輸出通過一反相器。另外,利用加法器將3位輸出數據和由0001代表的數據相加以便增1,然而本發(fā)明并不局限于此0由(Q)指示的MSB的1以與對第九實施例相同的方式出現。
在一圖中,在由橢圓框包圍的各個位上的3位或4位的輸出數據可以總和到11位數據序列A中,這是因為它們沒有公共位(當3個加法結果總和時,一些位沒有數值,它們被設定為0,在這一實全名,第一位被設定為0)。重要的是當在電路中處理時在僅利用線路的這一處理過程中沒有進行運算,盡管這種運算被處理作為關于它的算法的一個步驟。
在這個步驟中,8個加法結果可以變換為3個11位的數據序列。延遲時間是那樣短,以致與其它步驟比較可以被忽略。最后通過將3個11位的數據序列相加,可以得到最終的運算結果。由于在圖26的實例中使用3個11位的數據序列,利用僅以如圖5所示的兩級形式的全加器的通道就可以得到最終的加法結果,將若干多位數據以高的運算速度相加。
下面按照一般的運算介紹這一實施例,其中將m個數據塊的最大n位的數據序列相加。由n個ND輸出的加法結果具有最大為〔Log2m〕的位數,因而,其能夠被變換為最大為〔Log2m〕(n+〔Log2m〕-1)位的數據序列。最終,通過將〔Log2m〕(n+〔Log2m〕-1)位的數據序列相加,可以得到最終的運算結果。全法器通道級的數目可以由(Log2〔Log2m〕)來表示。由上述表達式可以看出,即使多位數據序列的數目變得很高,全加器通道級的數目也可以保持很低。
特征位通過各小的全加器。假如它們單級的形式配置,得到〔Log2〔Log2m〕〕+1。假如沒有將各全加器連接到該地點,而是特征位利用來指示,會有〔Log2m〕+1個數據序列,假設將其中僅有位為1的數據序列最后相加,全加器通道級的數目可以用〔Log2〔Log2m〕〕+1來表示。在任何情況下,即使位數增加,全加器通道級的數目也可以保持很低。
(第十一實施例)在這一實施例中,通過提供一個將63個7位數據序列相加的實例,下面介紹用于包括至少一個負值的若干多位數據的相加方法。
在這一實施例中利用1的補數表示一個負值。1的補數具有的優(yōu)點是由于僅對于一數字位應當進行反相,預處理可以易于簡化。
參閱圖27,該圖表示了這一實施例。在這一圖中,為了將63個7位數據序列相加,將各個位上的數據加在一起。利用63輸入6輸出的ND實行這種加法。
在這個實施例中以并行方式進行在加法步驟的處理,因而,運算速度由每個ND的運算速度決定。在這一實施例中,因為將7位數據序列相加,使用7個ND。此外,由于在這種運算中將63個7位數據相加,到各ND的輸入量的數目等于63。
由于在一般的加法中產生進位,由于進位值的傳送,運算速度降低。然而在這一實施例中,分批加法以并行方式進行沒有進位,所以加法級數可以降低,可以實現高速運算。雖然在這一實施例中,僅表示將63個7位數據相加的實例,但本發(fā)明并不局限于此,在包括至少一個負值的若干多位數據中可以有各種不同的位數。
順序地,通過執(zhí)行用于將所有以二進制方式表示的8個相加結果進行相加的第二加法步驟高速得到預期的加法結果Q。
雖然對特征位的介紹與第九實施例相同,但加法需求一定數量的特征位(負的數據序列的數目),以便將1的補數變換為2的補數。特征位的數目對應于由(SF5,SF4,SF3,SF2,SF1,SF0)表示的數據,這些數據在圖27中用(a)表示。它還是來自ND的輸出,并且利用反相器產生它的“非”邏輯值,以便產生數據序列BSFs。(b)指示1作為表示負號的特征位的1的站數的符號表示。對于它的ND,可以使用在圖13或圖17中所表示ND。
(第十二實施例)在這一實施例中,通過將在第十實施例中的8個ND總和到若干單元中進行運算。在圖28中,通過提供X(用X1X0表示)+Y(用Y1Y0表示)的2位加法器的實例,下面介紹一多數邏輯電路。
將第一位X0和Y0上的數據輸入到一單位電容上。將在第二位上的兩個數據塊輸入到每個具有2倍電容量2C的連接端,因此一個輸入看作為二的輸入。
例如,在第十實施例中,如圖29所示,用于將權為0、1和2的各個位上的數據相加的各ND可以總和到一個ND91中,以及按照同樣的方式在權為3、4和5的各個位上的區(qū)域總和到一ND92中。雖然,輸入(點)的數目和輸出(點)的數目在圖23中是用ND的數目來表示的,假如計數可以高達49個最大21個輸入的數據塊,就可以僅使用ND。各個ND產生6位輸出。在ND91中,將在位0上的數據輸入到單位電容C,將在第一位上的數據輸入到1C,將第2位上的數據輸入到(22=)4C。
此外,可以將特征位(第8位)和一數字化(第7位,MSB)(最重要的位)綜合。在圖29中,將特征位經過反相器輸入到ND93。雖然在上述實施例中,它通過在一經過ND的通道之后的用于形成“非”邏輯值的反相器,但任一種次序都能夠被使用。然而根據這一實施例,設定各ND的總容量為(2n-1)C(n是一整數)。
此外,將作為2的補數的(00010)加到要作為一個權輸入電容2C的特征位。數字位輸入到電容C。如圖29所示,在第11位上每個輸出被加到1作為2的補數,并且在一次中可以刪去2個數據序列,因而,僅有2個數據序列應被相加。通過利用加數,處理變得可采用更多的并行方式進行,這有助于增加運算速度、減少所需元件和功耗。
盡管在本實施例中,相鄰的各個位被總和到為了介紹一般的加權而提供的實例中,本發(fā)明并不局限于這種方法,可以靈活地采用各種更有效的方法,例如不連續(xù)的加權(例如,在20位上和22位上的數據被總和以便輸入時)或者將在一個位上的數據劃分,以將數據對不同的ND利用不同權輸入。
(第十三實施例)在這一實施例,通過提供一將7個8位的數據序列相加的實例來介紹用于若干多位數據的相加方法。
參閱圖30,圖中表示了這一實施例。在這一實施例中,首先,對于要進行相加的7個8位的數據序列的各個位上的數據進行分批相加。這種相加利用各ND。
按照像第二實施例一樣的方式,這一加法步驟的運算速度是由單個ND的運算速度決定的,需要用8個ND,對各ND的輸入(端)的最大數目等于7。此外,這一點也與上述實施例相同,即以并行方式執(zhí)行加法沒有進位,這使得能有更高的運算速度,若干多位數據可以為各種不同的位數。
通過順序執(zhí)行用于將以二進制方式表示的全部8個加法結果進行相加的第二加法步驟,高速得到預期的加法結果Q。
通過不是將所有的數據簡單地相加,而是在執(zhí)行這一加法步驟中通過若干數據總和為一個數據,可以更有效地進行處理。從這個觀點出發(fā),注意在圖30中的分批加法結果MSBS,對每一個結果得到一個表達式Si2(0≤i≤7),并且沒有公共數據,因此,對于該數據序列得到如下的表達式S12S62S52S42S32S22S12S02=22Σi=07Si2·2i]]>
在連續(xù)的位上和LSB(最低有效位)的各個數據,也可以以相同的方式用單一的數據序列來表示。對于產生這些數據序列的步驟,無需進行運算。
下面將一般介紹的方式解釋上述步驟。在第三位上的I4(I=T,U…Z)的分批加法產生3個數據塊S30、S31和S32,以及各自的位是3+0、3+1和3+2。對于第m位(m≤1)的分批加法產生在第(m+n)位的數據,〔Log2(IN)〕≥n≥o(IN數據計數值),2≥n≥o(IN=7))。對于第m’(m’≠m)位的分批加法以相同方式產生第<m’+n位的數據。由于m+n≠m’+n,在該數據中沒有公共位。因此它們可以無需任何運算綜合到一個數據中。與此相似,為使運算更有效,在圖30所示的實例中,各數據可以總和到3個數據A、B、C中,與第二實施例相同,即當在電路中進行處理時,在這一處理過程僅通過線路即可無需進行運算,盡管該運算作為在其算法的一個步驟被處理。
在這一步驟中,加法的8個結果可以被變換為3個8位數據序列。延遲時間是那樣短,以致和其它步驟相比可以被忽略。最終,通過將3個8位數據相加,可以得到最終的加法結果。由于在圖30的實例中使用3個8位數據序列,利用在圖5中表示的僅以兩級形式的全加器的一通道,可以得到最終的加法結果,以及可以將若干多位數據高速相加。
下面按照一般運算方式介紹這一實施例,其中將m個數據塊的最大n伏的數據序列相加。由n個ND輸出的加法結果具有最大為〔Log2m〕的位數,因此它能夠被變換為〔Log2m〕個數據序列。最終,通過將〔Log2m〕個數據序列相加,可以得到最終運算結果。全加器通道級的數目可以由〔Log2〔Log2m〕〕來表示。由上述表達式可以看出,即使多位數據序列的數目變得更高,全加器通道級的數目可以保持很低。很明顯,這種有效的方法可以適用于兩個或更多個數據塊。
(第十四實施例)在這一實施例中,通過提供在圖31中的實例來介紹在多位數據之間的乘法。通過提供一(8×8)位乘法器的實例下面進行介紹,并且它能擴展到一般的(m×n)位的乘法。
假設X×Y=Q,其中X(X7X6X5X4X3X2X1X0)是被乘法,Y(Y7Y6Y5Y4Y3Y2Y1Y0)是乘數。如圖3所示,Q用最大16位表示。Q具有最大m+n位,對應于m×n位的乘積。
如圖31所示,首先產生部分乘積。盡管是通過在被乘數X的每位Xi和乘數Yi之間取AND運算像一般的CMOS乘法器一樣計算出部分乘積,但其它方法例如在第三實施例中所述的方法也是可以利用的。
按續(xù)址,在一次當中利用各ND對于每一位將如圖31所示在各個位上的部分乘積之和相加。由于在這一加法步驟中以并行方式進行處理,適合于高速運算。在一(m×n)位的乘法電路中,需要(m+n-1)個ND單元。到各ND的輸入(點)的最大數目等于Min(m,n)。在圖31中所示的(8×8)位乘法器的實例中,需要15個ND。構成最大8個輸入(點)(用于運算X7Y0+X6Y1+X5Y2+X4Y3+X3Y4+X2Y5+X1Y6+X0Y7)。
當將各ND用于這樣一些地點時,即在該地點各ND可以用以單輸入單輸出配置通過線路被替換時,該ND的數目是適合的。假如略去可替換的各ND時,則使用(m+n-3)個ND。此外,假如各ND僅用于3或更多的輸入,除了這樣一些地點以外,即在這些地點各ND可以利用2輸入2輸出的HA替代(盡管HA是一種ND,但和HD區(qū)分開),可以使用(m+n-5)個ND。
一般對于3或更多的輸入,加法運算變得很復雜以及由于進位值的傳送使運算速度被降低,而在這種狀態(tài)下是特別可能產生進位的。由于這一實施例具有的特征是沒有進位將數據加在一起進行運算,實現了高速運算。
在其之后,通過執(zhí)行用于將以二進制方式表示的所有(m+n-1)個加法結果相加的第二加法步驟,高速得到預期的乘法結果。
為了進一步降低相加的(次)數,按照第十三實施例重新配置數據。利用圖32的實例來解釋。8位的部分乘積的和等于4(位)。由于相對于S73的其它分批加法的3位輸出,沒有數據滿足該條件。因此,它被認為是單一數據(A)。因為對于S72,第4到第12位的部分乘積是3位數據,并且對于S72有一些不具有公共位的數據。它對應于由Si2(3≤i≤11)表示的9位數據(B)。按照相同的方式,可以將各數據總和到一個例如Si1和Si0的數據序列中,并且最終可以將數據重新配置成4個數據塊(A,B,C,D)。如上所述,在電路中處理時,在這種處理過程中僅利用線路而沒有進行運算,盡管該運算已被處理作為關于其算法的一個步驟。
延遲時間是那樣短,使得與其它步驟相比可以被忽略。在這一步驟中,可以將加法結果的(m+n-1)個數據塊變換為〔Log2(Min(m,n))〕個數據(序列)塊。通過將〔Log2(Min(m,n))〕個數據(序列)塊相加作為最后處理,可以得到最終的運算結果。
由于在圖32的實例中使用了4個數據塊,利用如圖9所示的以僅為兩級形式的全加器通道可以得到最終的乘積。一般情況下,全加器通道級的數目可以按與第三實施例相同的方式用〔Log2〔Log2(Min(m,n))〕〕來表示。因此,即使m和n增加,按照圖10中的曲線,全加器通道級數可以保持很低。換句話說,即使相乘的位數增加,由于使用較少的元件和較低功耗可實現高速運算。此外,為了將S73和S72相加,由于對第11或更高位(S73+S112 S102 S92 S82)進行相加,可以使用4位(5位輸出,包括一進位)加法器。這種運算方法可以適用于具有圖12所示相同結構的乘法電路。即與用于第三實施例的相同的電路。
根據這一實施例,可以采用與圖13所示相同結構的ND。利用這種電路結構,可以將HIGH LEVEL,輸入的數目變換為在圖13表1中所示的若干輸入的,要按三位輸出的二進制數。在這一電路中,由各MSB輸出變換為二進制數的數值,并且按照幾乎相同的時間輸出各個的MBS。假如使用這些ND,可以將幾乎同時輸出的各MSB總和為一單一的數據,在上述運算中對于數據壓縮這一點列為有效。
通過利用上述乘法電路結構,由于以較少的元件和較低的功耗以并行運算的方式處理,可以構成一高速的乘法器。
(第十五實施例)按照與第四實施例相同的方式,圖17所示結構可以適用于一用以實行在上述第13和14實施例中所述的并行分批加法的ND部分。這使得能夠將在若干輸入中的高電平信號的輸入數目變換為要用三位輸出的二進制數,這種變換是在如圖17的表1中所示的低功耗的極小的電路中進行的。在這種電路中,被變換為二進制數的數值是由MSB輸出的。雖然,其它的介紹與對第13和14實施例相同,但是由于尺寸被降低,以更少的元件和更低的功耗按并行運算,這種結構使得能夠形成高速半導體器件。
(第十六實施例)在這種運算方法中,以與第五實施例相同的方式,將在第13實施例的15個ND中的若干ND進行總和。假設該ND具有如圖21所示的結構。
盡管在圖21中用ND的數目來表示輸入(點)的數目和輸出(點)的數目,假如計數可達56個輸入,就可以僅用ND。對于線路,高達21個輸入都是適合的。各個ND產生6位輸出。順序地,數據被整體重新配置,按照第13實施例的規(guī)則對與各MSB相對應的S105,S85,S45和S05進行處理。順序各位上的S104,S84。S44和S43可以被總和到單一的數據,并且它對于MSB數據序列沒有公共位,因此,它們也可以總和到一個數據序列。因此,最終數據可以總和為兩個數據序列。其它的介紹與第13和第14實施例相同,但是這種乘法電路的結構能夠使之進一步降低元件數量、降低在小尺寸電路中的功耗,以及構成高速乘法器,這是因為該電路以并行方式運算和具有較少的附加級。
盡管在這一實施例中,是將相鄰的各位結合到一般加權的實例中,但是本發(fā)明并不局限于這種方法,可以靈活地使用更有效的方法,例如不連續(xù)的加權法(例如,當將在20位上的和在22位上的數據被總和輸入時)或者將在一個位上的數據劃分,以便將數據輸入時,對于不同的ND具有不同的權(例如,將在28位上的數據劃分為兩類并將它們輸入到不同的ND中)。
(第十七實施例)下面通過提供一將63個7位數據序列相加的實例來介紹這一實施例。圖33是用于這一實施例的解釋性示意圖。首先,為了將63個7位數據序列相加,將各個位上的數據加在一起。在與用于第十四到第十六實施例的電路相同的電路中執(zhí)行這一加法。由于在這一實施例中使用7位數據序列,所以需要7個ND。各個ND的運算速度是相同的,因而由單個ND的運算速度決定了整體的運算速度。此外,在這種運算中將63個7伏數據序列相加,因而到各ND的輸入(點)數目等于63。按順序由一MSB起各ND產生6位輸出數據。由于利用ND以并行方式沒有進位執(zhí)行加法,實現了高速運算。盡管在這一實施例中僅表示一個將63個7位數據序列相加的實例,但本發(fā)明并不局限于此,在若干多位數據中,可以為各種不同的位數。
順序地,通過執(zhí)行用于將所有以二進制方式表示的8個加法結果相加的第二加法步驟,高速得到預期的加法結果Q。
下面介紹這一加法步驟。如上所述,依序來自一MSB的ND輸出數據以及來自所有ND的MSB和在順序各位上的數據按照相同的時間輸出。當對MSB介紹時,要指出對于第m位(m≥1)來自ND的MSB是在第(m+5)位上輸出的。換句話說,在1≤m≤7的條件下,對于第m位來自一ND的各MSB沒有任何公共位,并且無需任何運算,它們就能總和到單一的數據(在圖33中用框包圍的區(qū)域)。按照同樣的方式,在比MSB低-位上的輸出可以與在(m+4)位上的數據綜合在一起,在下一位上的數據和在第(m+3)位上的數據綜合,與此相似,安照輸出次序可以順序地將順序的數據總和。在圖33中,每個MSB可以用SiS(0≤i≤6)表示,順序的數據用Sik(0=≤i≤6)來表示,因而在(0≤k≤5)的條件下,可以順序地輸出6個數據塊。這些數據塊被加在一起。由于上述數據重新配置,輸出MSB數據Si5和順序的位Si4的數據,在每個ND計算Si3的同時則可以執(zhí)行對Si5+Si4的運算。按照相同的方式,在Si3和Si2輸出之后,在ND計算Si1的同時,可以執(zhí)行對Si3+si2的運算。因此,因此由起動第二加法步驟沒有等來自ND的所有輸出結果,就能實現高速運算。
作為一種極端情況的實例,假如在計算Si3的過程中,執(zhí)行對S5+Si4的運算,在計算Si2的過程中將Si3加到(S5+Si4)的結果上,然后像在圖34中所示一樣順序地執(zhí)行加法,則整體運算速度可以提高,元件可以減少,這是由僅需要一個加法器。在ND運算時間和第二加法步驟時間之間有一最佳數值。但是第二加法步驟可以與ND加法或者在公共位的數據的分批加法,以并行方式執(zhí)行,使之可以減少元件,因而降低功耗,以及高速運算。
(第十八實施例)通過提供將具有各種不同位數的若干數據序列相加的實例,下面解釋這一實施例。圖35是這一實施例的解釋性示意圖。這里是將每個n位(1≤n≤8)的數據序列相加。首先,對于每個n位的數據序列,將每位上的數據加在一起。利用各ND執(zhí)行第一加法。
在這一實施例中使用最大8位的數字序列,因此,使用8個ND(27代表一個數字,因此,需要7個ND。Y6+Z6代表二個輸入以及可以使用-HA,不過這里使用一個ND)。由于按照這一實施例在這一加法步驟中以并行方式進行處理,由最慢的一個ND的運算速度決定了整體的運算速度。由于在這一運算中將8個數據序列相加,故將最大8個輸入輸入到一ND。各個ND的運算速度不是相同的,利用一8輸入的ND來調節(jié)。
由于在一般的加法運算中要產生進位,由于進位值傳送會降低運算速度。然而,這一實施例具有的特點是以并行方式沒有進位將數據相加,所以實現高速運算。盡管這一實施例表示的實例是將具有從1到8伏彼此不同的各種位數的8個數據序列相加,應當理解,本發(fā)明并不局限于這一實例。
通過執(zhí)行用于將以二進制方式表示的所有8個加法結果順序相加的第二加法步驟,高速得到預期的加法結果Q。
由于在執(zhí)行這一加法步驟中不是簡單地將所有的數據相加,而是通過將若干數據總和為單一的數據,可以更有效地進行處理。由這一觀點出發(fā),對在圖35中的分批加法結果予以注意,例如S70、S51和S50的各位完全沒有重疊,它們無需任何運算就可總和到單一的數據中。與第二實施例相同,當在電路中進行處理時在這種處理過程中僅需利用線路而沒有進行運算,盡管這種運算被處理作它的算法的一個步驟,以及延遲時間是那樣短,以致與其它步驟相比可以被忽略。在圖35的實例保,利用這種有效的方法,可以將兩個數據塊總和為單一的數據。然而,假如僅有兩個或更多的數據塊,可以更有效地以相同的方式進行運算。
為了進一步增加運算速度,以并行方式執(zhí)行第一和第二加法步驟。在圖35中,作為由ND輸出的數據,在第8位上或S70(27)的數據最早輸出,然后輸出在第7位S61和S60的數據,再按第6、第5…各位的次序輸出順序的各數據。因而,在圖35所示的實例中,例如沒有等第一位上計算數據的完成,就執(zhí)行對S70、S51、S50+S61以及S60的計算。在其之后,將各順序的輸出結果S42、S41、S40、S12、S11和S10相加(實際上是將S42和S41相加)。以與對應于第二加法步驟的運算并行的方式可以執(zhí)行對應于第一加法步驟的ND運算,使得能高速運算。
(第十九實施例)在這一實施例中,通過提供在圖31所示的實例來解釋在多位數據之間的乘法。通過提供-(8×8)位的乘法器的實例,下面進行介紹,這種乘法可以擴展到一般的(m×n)位的乘法。
假設X×Y=Q,其中X(X7X6X5X4X3X2X1X0)是被乘數,Y(Y7Y6Y5Y4Y3Y2Y1Y0)是一乘數。如圖31所示,Q用最大16位數表示。Q對m×n位的乘積則有最大m+n位。
如圖31所示,首先產生部分乘積。雖然,是通過在被乘數X的每一位Xi和一乘數Yi之間取AND邏輯來計算部分乘積的,但是其它的方法例如在第三實施例中所述的方法也可以采用。
順序地,利用各ND在一次之中對于每一位將圖31中的各個位上的部分乘積的和相加。由于在這一加法步驟中以并行方式進行這種處理,故適合高速運算。在(m×n)位乘法電路中,采用(m+n-1)個ND單元。對各ND的最大輸入(點)數目等于Min(m.n)。在圖31所示的(8×8)位乘法器的實例中,使用了15個ND。構成最大8個輸入(用于運算X7Y0+X6Y1+X5Y2+X4Y3+X3Y4+X2Y5+X1Y6+X0Y7)。
當將ND用于這樣一些地點時,在這些地點可以按一輸入一輸出的配置通過線路可以替代各ND時,該數目的ND是適合的。假如略去可被替換的ND,使用(m+n-3)個ND。此外,假如,除了這樣一些地點之外,在這樣一些地點可以用二輸入二輸出的HA(盡管HA也是一種ND,還將它與ND區(qū)分開)來替換各ND,假如ND僅用于3或更多個輸入,則可使用(m+n-5)個ND。
一般地說,對于3或更多個輸入,由于在這樣狀態(tài)下可能特別易于產生進位值的傳送,加法運算變得很復雜,運算速度被降低。但由于這一實施例具有的特點是,在將數據加在一起時以沒有進位的方式執(zhí)行運算,實現了高速運算。
在此之后,通過執(zhí)行用于將所有以二進制方式表示的(m+n-1)個加法結果相加的第二加法步驟,高速得到預期的乘法結果Q。
為了進一步降低加法的次數,以與第18實施例相同的方式將數據總和,使4個數據塊(A,B,C,D)重新配置,如上所述,當在電路中處理時,在這個處理過程中僅利用了線路而沒有實行運算,盡管這種運算被處理作為它的算法的一個步驟。
延遲時間是那樣短,以致與其它步驟比較可以被忽略。在圖13和12中所示結構可以分別適用于ND和乘法電路。如在第三實施例中所述的,在圖13中可以執(zhí)行流水線處理方式。
ND所需多數邏輯電路組件的數目用〔Log2n〕來表示,其中n是到ND的輸入(點)的數量。對于到各ND的輸入(點)的數目,在一m×n的乘法器中從1到Min(m,n)的一個數值都是適合的,很明顯,在這樣一個ND處,它的運算時間變得最長,在該ND的輸入計數值為作為輸入(點)的最大數目的Min(m,n)。這是因為多數邏輯電路級的數目隨輸入(點)的數目N按〔Log2n〕增加。然而,很明顯,由于級數按照Log函數增加,當位數增加時,級數并不顯著增加。
由于運算以并行方式執(zhí)行,運算按照具有最大輸入(點)數目Min(m,n)的ND的運算速度,由若干ND74終止運算。在這種結構中,首先輸出S73(A)。接著,將其加到較早終止運算的B上,這時,其它的輸出并沒有完成。按照這種方式,在D完成輸出之前相加C。與此相似,由于并行處理,可以進行高速運算。
由于并行運算和因所需元件少而ND功耗低,這樣ND結構可具有更高的運算速度,使得可以明顯地改進以上實施例中的運算方法的特性。
關于算法存在一個用于將由若干ND輸出的數據總和為一個數序列的步驟,如上所述,在電路中并沒有執(zhí)行一運算處理,因此,沒有與在圖12中的這一步驟相對應的電路。
由于具有很少數量的元件、低的功耗以及并行運算,所以上述乘法器結構使得能夠構成一高速乘法器。因而,在圖17中所示的結構可適用于在第四實施例中所介紹的ND。
(第二十實施例)
根據這一實施例,將在第19實施例中所述在圖31的15個ND中的若干ND為了進行某一運算而被總和。盡管是通過提供一個將兩個(8×8)位的乘法結果相加的實例來解釋該運算方法的,但本發(fā)明并不局限于這一實例。
在圖20表示一根據適用于2×2乘法器的2×2多數邏輯電路的實例。換句話說,它是在第19實施例中在圖13表示的第一級中的一個多數邏輯電路。在第一位上(在209位上的X0Y0)的數據輸入到一單位電容O上。在第二位上的(在21位上的X1Y0和X0Y1)的兩個數據塊輸入到每個具有2倍電容量2C的連接端上。進而,在第三位上的數據(在22位上的X1Y1)被加權22以及一個輸入被計數為4。
其它的介紹與第19實施例相同,利用在每個ND中的4個輸入(點)將高達7個的輸入的二進制方式輸出。通過利用這種加權方法,可以更有效地利用該并行分批相加功能。
例如,在第19實施例中的8×8位乘法器中,用于將權為0、1、2和3的各個位上的數相加的各ND被總和到如圖36中所示的一個ND91中,以及將在權為(4,5,6),(7,8,9),(10,11,12,13,14)的各區(qū)域被總和到如圖21中的從ND92到ND94的每個區(qū)域中。
盡管在圖36中輸入(點)的數目和輸出的數目是由ND的數字表示的,假如其能夠計數高達56個輸入,則可以僅使用ND。對于線路,高達21個輸入是適合的。各個ND產生6位輸出。因此需要較少的ND以及元件可以顯著減少。在另外的(8×8)位乘法的結果Q’的相加過程中,輸出S105,以及在ND94計算S104的同時,可以將對于S105的S105’相加。它還能加到另外的數據S85和S45上,以及S104和S104’可以分別加到它們的和上。相同的計算可以適用于S103和S103’,以及通過一個ND運算和一并行運算可以產生局部的和S”。
在這一實施例中,僅有3個數據塊P、Q和R最后被相加。此外,假如來自ND92的S”46被單獨加到P上,P和Q可以被總和到一個數據序列中,因而只有兩個數據塊被相加。
因此,由于一加法器可以重復使用,可以實現高速運算,元件可以顯著減少。特別是,具有上述多數邏輯電路的ND的使用是有效的,這是由于它的時鐘控制特性。這種乘法電路的結構由于并行運算和較少的加法電路級,使得能夠進一步減少元件,降低小尺寸電路的功耗,并構成高速乘法器。
盡管在這一實施例中相鄰的各位被總和在一般加權的實例中,本發(fā)明并不局限于這種方法,可以靈活地采用最有效的方法,例如不連續(xù)的加權法(例如當在20位上和在22位上的數據被總和輸入時)或者將在一位上的數據劃分,以便將該數據對于不同的ND按照不同的權輸入(例如,將在28位上的數據分為2類并將它們輸入到不同的ND)。
(第二十一實施例)在這一實施例中,是通過提供一具有用于實行運算的半導體器件的數據處理器的實例,來介紹用于DSP的上述運算方法。
盡管在這一實施例中解釋的是用于定點運算的作為典型的DSP的DSP,應當理解,本發(fā)明并不局限于此,它可適用于其它類型的DSP和CPU。
在以上實施例中的處理器是具有很強兼容性的,這是由于它能夠通過一般的半導體MOS晶體管來構成。因此,先前的半導體器件能夠被用作它的具有輸入一輸出緩沖器輔助元件的替代物。
在圖37中表示了根據這一實施例的DSP的的結構。一乘法器和一累加器安裝在DSP上作為運算單元。乘法器用于將兩個16位的數據塊相乘以便得到31位的輸出。累加器包含一16位運算邏輯單元(ALU)和一用于存儲來自ALU的輸入出信號的寄存器。
有4種類型的下面要介紹的片裝存儲器。數據RAM用于存儲輸入信號,它的地址由一8位數據指針(DP)所指定。DP的下4位由4位上升一下降計數器處理,上4位由4位寄存器處理。數據ROM用于存儲加權因子。它的地址由10位下降計數器的ROM指針(RP)指定。16位暫存寄存器(RT)用于暫時存儲數據。指一ROM用于存儲指令,它的地址由指令計數器(PC)來指定。
利用DSP的外部區(qū)域經過1位串行輸出寄存器、1位串行輸入寄存器和一8位9并行輸入~輸出寄存器進行信號的接收或發(fā)送。當輸出控制信號(SOEN)或輸入控制信號(SIEN)分別為0伏時,以與串行輸入一輸出時鐘(SCK)同步的方式進行串行輸出或串行輸入。當讀/寫控制信號(CS)為0伏時,在將寫控制信號(WR)或讀控制信號(RD)設定為0伏之后,進行8位并行輸出或輸入,當8位要由一SO輸出的數據存儲在串行輸出寄存器時,輸出準備信號(SORQ)設定到5伏。
每個時鐘周期經過程序計數器(PC)的指定由ROM讀出各個指令。根據對每個讀指令的每一解碼結果,控制單元或存儲器工作。
假如提供一復位脈沖(RST),PC的指令位置被設定到0,DSP開始它的工作。假如順序提供一個中斷脈沖(INT),PC指針位置跳到地址256。利用在8位并行輸入一輸出寄存器中的16位狀態(tài)寄存器(SR)確定輸入一輸出方式(8位或16位)的選擇以及是否應當接收中斷的指令。時鐘驅動器根據來自外部區(qū)域的時鐘脈沖(CLK)產生2相時鐘T0和T2并且將它們提供到控制單元或存儲器。經過16位總線在輸入輸出寄存器、控制單元和存儲器之間傳送數據。
在這一實施例中,上述16位×16位高速乘法器形成在同一電路板上和像其它邏輯電路和存儲器一樣按相同的工藝構成。
下面通過提供一以12級流水線式進行乘和加運算的實例,來介紹這種DSP的實際控制的時間關系。圖38表示控制過程中的2相時鐘脈沖。讀出存儲在數據ROM或數據RAM中的讀輸入信號或加權因子,換句話說,當時鐘周期m的T0變?yōu)楦唠娖?5伏)(下文稱T0定時)向乘法器進行提供數據并順序地執(zhí)行乘法。在下一個時鐘周期(m+1)的T0定時點處,將乘法結果銷存到一寄存器。同時,在乘法器中以并行方式進行各順序的數據的乘法。
一般地說,隨著位數的增加運算速度下降,特別是乘法速度受其影響。然而在本實施例中通過采用高速乘法器,使運算速度可以增加,從而顯著改進了DSP的性能。此外,它具有的優(yōu)點在于可以構成一般的CMOS工藝。雖然,在這一實施例中該運算方法適合于作為一個乘法器的DSP,但本發(fā)明自然并不局限于這種DSP,很明顯它還能適用于包含對若干多位數據進行加法或乘法處理的各種不同的運算電路,當作為其它應用時,考慮它的通用性,要使輸入和輸出或者處理與一般的CMOS處理相同。本發(fā)明有很多效果,例如降低芯片面積和功耗以及提高運算速度。
(第二十二實施例)在這一實施例中,將上述處理器用于寬頻帶通信(SS通信)的接收電路中的相關控制單元。在圖39表示了這種接收電路的結構。如在圖39中所示,該接收電路包含接收天線1401、用于放大信號的放大單元單元1402、相關控制單元1403A和1402B、A/D變換單元1404、選擇器1405和檢測器1406。
在SS通信中,將各信號變換為稱為PN碼的多位代碼并發(fā)送該PN碼。在接收電路中,將先前存儲的相似PN碼與接收的信號比較,并檢測最高相關狀態(tài),以便對所發(fā)送的信號解調。
參閱圖39,由天線1401接收的信號最初由檢測器1406解調,并且一個被發(fā)送到相關控制單元1403A,另一個在A/D變換單元被變換為數字信號,然后輸入到相關控制單元1403B。將輸入的信號與先前存儲在接收電路中的PN碼比較,相關控制單元1403A按照兩個信號之間的相關程度產生一同步信號,相關控制單元1403B以與同步信號相同步的方式計算一相關分值。然后,根據用選擇器1405控制由相關控制單元1403B輸出的相關分值,該信號被解調。
盡管因為在信號被發(fā)送之前信號被變換為多位代碼,使SS通信具有優(yōu)異的特征,具有高性能的通話保密性和噪聲防護性能,但有一個問題,在有效信號處理過程中被加有很大的載荷。這是由于它需要在圖45中所示的加法電路中進行重復的加法,以便通過將接收的信號與PN碼相比較檢測高相關狀態(tài),從而增加了發(fā)送信息的數量造成的。
然而,在按照以上實施例的處理器中通過執(zhí)行這些加法,能夠形成具有較少元件、低功耗以及高速度的SS通信接收電路。因此,能夠制成一用于在SS通信系統(tǒng)中進行無線電通信的便攜式信息通信器件。
此外,可以形成如在圖40中所示緊湊卡式的接收/發(fā)送單元2001,由于具有較高的運算速度,使它能夠用較少的元件和低功耗進行大量信息的通信。因此,使得易于將SS通信應用到具有常規(guī)的個人計算機接口的PCMCIA卡。盡管在這一實例中使用的是PCMCIA卡,但本發(fā)明可易于應用到其它接口上。輸入和輸出是常用的CMOS可兼容的,因而,通過利用上述處理器,能夠易于實現小尺寸和低功耗。
盡管是通過提供一種用于SS通信的數據處理器的實例來進行介紹的,如上所述輸入一輸出接口是CMOS可兼容的,故本發(fā)明可適用于將若干多位數據特別是包括負值的數據相加的其它數據處理器,如上述的DSP或CPU或者是用于處理圖像或聲音的并行運算處理單元。此外,它還能用于為了得到平均值或標準偏差的統(tǒng)計處理和例如二乘法的數字運算。
此外,由于具有高運算速度、小尺寸和低功耗的優(yōu)點,它能有效地顯著地改進各種不同的系統(tǒng),例如無線LAN、I/O管理系統(tǒng)、會計統(tǒng)計系統(tǒng)以及電話會議系統(tǒng)。
根據上述實施例,可以高速將若干多位數據相加。
此外,可以高速將包含負值的若干多位數據相加。
再有,可以高速將若干多位數據相乘。
還有,用于高速運算若干多位數據的處理器可以通過使用低功耗的半導體器件在小的芯片面積上形成。
該處理器能夠適用于各種數據處理器,這是因為它能夠以一般的半導體工藝制成,使之能夠制成各種數據處理器,例如DSP、CPU和用于SS通信的接收/發(fā)送單元,這些器件都具有高運算速度、低功耗、小的芯片面積。
雖然,以本發(fā)明的帶有某種特殊性的優(yōu)選方式已經介紹了本發(fā)明,很明顯在不脫離本發(fā)明的構思和范圍的情況下,可以形成本發(fā)明的范圍廣泛的各種不同的實施例。應當理解,本發(fā)明并不局限于它的特定實施例,它是由所提出的權利要求限定的。
權利要求
1.一種處理器,用于將若干多位數據相加,包含第一加法裝置,用于將所述若干多位數據的公共位上的數據加在一起;以及第二加法裝置,用于計算由所述第一加法裝置得到的加法結果的和。
2.根據權利要求1所述的處理器,其中所述的第一加法裝置將所述若干多位數據的各個位上的數據單個地相加。
3.根據權利要求1所述的處理器,其中所述的第一加法裝置將所述若干多位數據的若干位上的數據相加。
4.根據權利要求1所述的處理器,其中所述的第二加法裝置將若干沒有公共位的加法結果總和到所述第一加法裝置在一次加法運算中得到的加法結果中的單一的數據中。
5.根據權利要求1所述的處理器,其中所述的第一加法裝置以并行方式輸入在所述若干多位數據的公共位上的數值,并且包括計數檢測裝置,用于檢測有數值1的的輸入數目并且輸出以二進制表示的該計數值。
6.根據權利要求5所述的處理器,其中將來自若干所述計數檢測裝置的輸出輸入到至少另一個計數檢測裝置。
7.根據權利要求5所述的處理器,其中所述的計數檢測裝置包括若干多數邏輯運算裝置。
8.根據權利要求7所述的處理器,其中至少一個所述若干多數邏輯運算裝置包括若干輸入端,若干經過若干輸入端和開關裝置連接的電容器裝置,以及一讀出放大器,所述若干電容器裝置公共連接到其上。
9.根據權利要求8所述的處理器,其中特定電容器裝置的容量等于在所述若干電容器裝置中的若干其它電容器裝置的容量。
10.根據權利要求8所述的處理器,其中來自所述讀出放大器的輸出被輸入到至少一個帶有反饋的所述若干輸入端。
11.根據權利要求8所述的處理器,其中來自所述讀出放大器的輸出經過鎖存裝置被連續(xù)到至少所述若干輸入端中的一個輸入端。
12.根據權利要求1所述的處理器,其中所述若干多位數據包括一代表一個符號的特征位,并且所述第一加法裝置將包括該特征位的所述若干多位數據各個位上的數據單個地相加。
13.根據權利要求12所述的處理器,其中所述的若干多位數據包括用2的補數表示的負值。
14.根據權利要求12所述的處理器,其中所述的若干多位數據包括用1的補數表示的負值。
15.根據權利要求1所述的處理器,其中所述的第二加法裝置在一次加法運算中將由所述第一加法裝置產生的具有不同位的加法結果中由每一位起計數的第n(n≥0)位上的數據總和到單一的數據中。
16.根據權利要求1所述的處理器,其中所述的第二加法裝置將由所述第一加法裝置產生的對每一位的加法結果中由每一位起計數的第n(n≥0)位上的數據進行總和。
17.根據權利要求15所述的處理器,其中所述的第n位對應于各個位的加法結果中的最有效的位。
18.根據權利要求17所述的處理器,其中所述的第一加法裝置由該最有效的位順序地輸出加法結果。
19.根據權利要求1所述的處理器,其中所述的第二加法裝置通過利用所述第一加法裝置對部分位已經完成相加的加法結果以并行相加的方式對由所述第一加法裝置完成相加的另外部分位進行相加。
20.根據權利要求19所述的處理器,其中所述的第二加法裝置將由第一加法裝置完成相加的加法結果彼此相加。
21.根據權利要求19所述的處理器,其中所述的第二加法裝置將由所述第一加法裝置完成相加的加法結果加到由所述第二加法裝置已經完成相加的加法結果。
22.一種處理器,用于將若干多位數據相乘,包含一部分乘積產生裝置,用于產生所述若干多位數據的部分乘積;一第一加法裝置,用于將由所述部分乘積產生裝置產生的若干部分乘積的公共位上的數據求總和,將各個位上的數據單個地相加;及第二加法裝置,用于計算由所述第一加法裝置產生的加法結果的和。
23.根據權利要求22所述的處理器,其中所述的部分乘積產生裝置同時產生第一多位數據的各個位與第二多位數據的一特定位的部分乘積。
24.根據權利要求22所述的處理器,其中所述的部分乘積產生裝置包含輸入裝置,用于以并行方式輸入所述第一多位數據的各個位;以及開關裝置,用于根據所述第二多位數據的每一位的數值將來自所述輸入裝置的輸入接通或切斷。
25.根據權利要求22所述的處理器,其中所述的部分乘積產生裝置包括若干柵極共同連接在一起的若干晶體管。
26.根據權利要求22所述的處理器,其中所述的部分乘積產生裝置包括若干AND電路。
27.根據權利要求22所述的處理器,其中所述的第二加法裝置在一次加法運算中將由所述第一加法裝置產生的具有不同位數的加法結果中由每一位起計數的第n(n≥0)位上的數據總和到單一的數據中。
28.根據權利要求22所述的處理器,其中所述的第二加法裝置通過利用由所述第一加法裝置對部分位已經完成相加的加法結果以并行相加的方式對由所述第一加法裝置完成相加的另外部分位進行相加。
29.一種將若干多位數據相加的運算方法,包含的步驟是第一加法步驟,將所述若干多位數據的公共位上的數據加在一起;以及第二加法步驟,計算由所述第一加法步驟產生的加法結果的和。
30.根據權利要求29所述的運算方法,其中將在若干沒有公共位的加法結果在進行相加之前在所述第二加法步驟被總和到所述第一加法步驟的加法結果中的單一的數據中。
31.根據權利要求29所述的運算方法,其中所述的若干多位數據包括一代表符號的特征位,以及在所述第一加法步驟中,將在包括特征位的所述若干多位數據的各個位上的數據單個地相加。
32.根據權利要求29所述的運算方法,其中在所述第二加法步驟中,將由所述第一加法步驟產生的具有不同位的加法結果中由每一位起計數的第n(n≥0)位上的數據在相加之前總和到單一的數據中。
33.根據權利要求29所述的運算方法,其中在第二加法步驟中的加法是通過利用在所述第一加法步驟中已經完成相加的對部分位的加法結果以并行相加的方式對由在所述第一加法步驟中完成相加的另外部分位進行相加而完成的。
34.一種將若干多位數據相乘的運算方法,包括部分乘積產生步驟,用于產生所述若干多位數據的部分乘積;第一加法步驟,用于對在所述部分乘積產生步驟中產生的若干部分乘積的在公用位上的數據加在一起;以及第二加法步驟,用于計算在所述第一加法步驟中產生的加法結果的和。
35.根據權利要求34所述的運算方法,其中在所述的第二加法步驟中,若干沒有公共位的加法結果在相加之前總和到由所述第一加法步驟中產生的加法結果當中的單一的數據中。
36.根據權利要求34所述的運算方法,其中在所述第二加法步驟中,將由所述第一加法步驟產生的具有不同位數的加法結果中由每一位起計算的第n(n≥0)位上的數據在相加之前總和到單一的數據中。
37.根據權利要求34所述的運算方法,其中在第二加法步驟中的加法是通過利用在所述第一加法步驟中已經對部分位完成相加的加法結果,以并行相加方式對在所述第一加法步驟完成相加的另外部分位進行相加而完成的。
38.一種數據處理器,包含用于輸入數據的輸入裝置;用于存儲數據的存儲裝置;處理裝置,用于按照指定的處理程序處理由所述存儲裝置存儲的數據和由所述輸入裝置輸入的數據;以及輸出裝置,用于輸出來自所述處理裝置的處理結果;其中所述處理裝置包含第一加法裝置,用于在一次中將在若干多位數據中公共位上的數據彼此相加;以及第二加法裝置,用于計算由所述第一加法裝置產生的加法結果的和。
39.根據權利要求38所述的數據處理器,所述處理裝置進一步包含用于產生若干多位數據的部分乘積的部分乘積產生裝置,其中利用所述第一和第二加法裝置將由所述部分乘積產生裝置產生的部分乘積相加。
40.根據權利要求38所述的數據處理器,其中所述輸入裝置輸入信號,所述存儲裝置存儲加權因子,以及所述處理裝置將輸入的信號與用于累加的各自的加權因子相乘。
41.根據權利要求38所述的數據處理器,其中所述輸入裝置輸入多位符號,所述存儲裝置預先存儲多位符號,所述處理裝置計算在輸入的多位符號和存儲的多位符號之間的相關量,并根據所計算的相關量對輸入的多位符號進行解調。
全文摘要
在一種用于進行包括若干多位數據的加法的運算的處理器中將若干多位數據的公共位上的數值以并行方式輸入到各個位的數字檢測器組中,以二進制的表示方式輸出在輸入的數值中的高(電平)信號的數目,以及將來自若干ND的輸出利用全加器相加,高速完成相加而沒有進位。此外,沒有公共位的數據在相加之前被總和到一單一數據中。
文檔編號G06F7/48GK1139777SQ9610287
公開日1997年1月8日 申請日期1996年4月11日 優(yōu)先權日1995年4月11日
發(fā)明者市川武史 申請人:佳能株式會社