欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

乘加器的制作方法與工藝

文檔序號:12041440閱讀:210來源:國知局
乘加器的制作方法與工藝
本發(fā)明涉及一種乘加器,尤其涉及一種可以根據操作數的位寬配置資源的乘加器。

背景技術:
隨著FPGA芯片容量的提高和工藝的發(fā)展,很多FPGA都預先設計并內嵌了硬件乘加器(MACIP)。如果用戶需要實現多位二進制的乘法,加法或者累加操作,為了避免占用大量的可配置邏輯和路由資源(PLB),往往都通過調用此硬件乘加器模塊(MACIP)來實現。例如,若需要并行實現4個8*8bit的乘累加操作,用戶可在代碼中例化4個MACIP實現。這種方法很好,用戶不用擔心MACIP的實現功能是否準確,同時也節(jié)約了較多的可配置資源。但現有的FPGAMACIP在設計時,由于事先無法得知用戶的具體應用中操作數的位寬,往往都采用了較長的且固定位寬的設置(例如xilinxSpartan-3A中采用了18bit),這種MACIP的設計方案在輸入的操作位數寬數較少的情況下,同樣也占用了較多的IP資源,資源利用效率低。由于FPGA內嵌了硬件乘加器,所以FPGA在數字信號處理系統(tǒng)方面的成本和功耗性能已經接近專用的DSP處理器。在實現中,不同系列芯片中,FPGA內嵌的硬件乘加器特點略有不同,但為了覆蓋大部分的應用情況,從整體而言,往往將缺省的操作位數寬設置的比較長,即乘法器的規(guī)模比較大。如18*18bit,都能完全準確的輸出36bit結果,累加運算也可以擴展到40bit以上。圖1為現有的乘加器的示意圖,如圖所示:乘法功能:18*18bit乘法操作,具有完全準確的36bit輸出結果。預置數功能:當sload有效時,可將load[39:0]直接置位到輸出寄存器中,并輸出;加法功能:可實現最大40bit的加法操作,其中一個操作數來自于乘法器的輸出,另一個來自于輸入Z[39:0];累加功能:可將乘法器的輸出隨時鐘節(jié)拍進行內部累加,并在適當的節(jié)拍時輸出。這種模式可方便的應用于FIRFilter實現中;另外,一些MACIP也包含Pre-Adder功能?,F有技術的缺陷如下:資源利用效率低,對于一個乘法累加器,即乘加器資源,如果只使用了其少數的低位資源,則剩余的高位資源就不能再被使用了,資源利用效率低。運算速度慢。如果僅需要實現一個小位寬的操作,上述結構中,還是需要計算18bit與18bit的乘法,內部的累加還是必須進行40bit的累加,直到輸出結果。這極大的影響了小位寬輸出情況下的性能。乘加器是DSP的基礎器件,其性能的優(yōu)化是至關重要的。

技術實現要素:
本發(fā)明的目的是針對現有技術的缺陷,提供了一種乘加器,可以在節(jié)約資源的情況下,快速的完成處理操作。為實現上述目的,本發(fā)明提供了一種乘加器,所述乘加器包括兩個子乘加器,每個所述子乘加器具體包括:部分積產生器,用于對小于第一位數閾值的乘數和小于第一位數閾值的被乘數相乘,獲得部分積數據;部分積壓縮器,用于對所述部分積數據進行壓縮處理,獲得部分積壓縮數據;累加壓縮器,用于對所述部分積壓縮數據,以及加法數據做累加處理,獲得求和數據。本發(fā)明的乘加器可以實現1個18*18bit(或以下)或2個并行9*9bit(或以下)的乘加處理,資源利用率高;在操作數較大位寬時提高了運算速度;在操作數較小位寬時,提高了資源的利用率。附圖說明圖1為現有的乘加器的示意圖;圖2為本發(fā)明乘加器的示意圖。具體實施方式下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。本發(fā)明的乘加器(MACIP),在占用資源相同的情況下,通過靈巧的配置輸入操作數的位置,可實現一個第一位數閾值(第一位數),如18*18bit(含以下)且?guī)?0bit累加的操作,也可實現2個并行的第二位數閾值(第二位數),如9*9bit(含以下)且?guī)?0bit累加的操作,支持有符號數或無符號數。在MACIP中,為了節(jié)約面積和提高運算速度,采用了ModifiedRadix-4boothMultipliers算法,同時在部分積(PartialProduct)累加時,充分利用了算法中的壓縮技巧,將壓縮任務分配給兩個壓縮器并行實現,提高了運算速度。另外,在相同的IP資源上,實現了1個18*18bit或兩個9*9bit的MACIP,提高了資源利用率。本發(fā)明包括兩個子乘加器,子乘加器具體包括:部分積產生器、部分積壓縮器和累加壓縮器。部分積產生器用于對小于第一位數閾值的乘數和小于第一位數閾值的被乘數相乘,獲得部分積數據;部分積壓縮器用于對所述部分積數據進行壓縮處理,獲得部分積壓縮數據;累加壓縮器用于對所述部分積壓縮數據,以及加法數據做累加處理,獲得求和數據。圖2為本發(fā)明乘加器的示意圖,如圖所示,本實施例的乘加器具體包括兩個子乘加器,即第一子乘加器11和第二子乘加器12。第一子乘加器11具有第一部分積產生器111(PartialProductorgenerator)、第一部分積壓縮器112(PPSumCompressor)和第一累加壓縮器113(AccumulatorCompressor);第二子乘加器12具有第二部分積產生器121、第二部分積壓縮器122和第二累加壓縮器123。本發(fā)明的乘加器可以實現兩個第一位數,例如9*9bit的運算,OUTA[19:0]=XA[8:0]*YA[8:0]+ZA[19:0]和OUTB[19:0]=XB[8:0]*YB[8:0]+ZB[19:0],并有overflow指示;也可以實現一個第二位數,如18*18bit的運算,如OUT[39:0]=X[17:0]*Y[17:0]+Z[39:0]。為了兼容有符號數或無符號數的運算,對于乘加器中的每一個子乘加器處理的任意一個操作數,進行符號位擴展。具體符號位擴展方式是:對于有符號數,在其最高位前面擴展符號位;對于無符號數,在其最高位前面補零即可;以下敘述中,涉及到符號位擴展,原則都是相同的。第一子乘加器MultA11和第二子乘加器MultB12可以共同支持1個18*18bit,或者第一子乘加器MultA11和第二子乘加器MultB12可以單獨并行9*9bit,并且兩個子乘加器是20bit*10bit的有符號數乘法器,采用了ModifiedRadix-4booth算法實現。下面詳細說明第一子乘加器MultA和第二子乘加器MultB如何具體處理過程。1、第一子乘加器MultA和第二子乘加器MultB分別單獨處理第一位數閾值,如9*9bit;當乘加器處理的位數均小于第一位數閾值,例如9*9bit,則加法器可以利用第一子加法器和第二子加法器實現2個并行9*9bit的模式,即實現第一子乘加器輸出OUTA[19:0]=XA[8:0]*YA[8:0]+ZA[19:0]和第二子乘加器輸出OUTB[19:0]=XB[8:0]*YB[8:0]+ZB[19:0]。在第一子加法器的第一部分積產生器中,用于乘數{sign,YA[8:0]}和被乘數{sign,sign,XA[8:0],0,0,0,0,0,0,0,0,0}相乘,獲得部分積數據并輸出;第一部分積壓縮器對部分積數據進行壓縮處理,獲得部分積壓縮數據;第一累加壓縮器對部分積壓縮數據,以及加法數據ZA[19:0]做累加處理,獲得求和數據。輸入操作數配置如下:對于MultA:被乘數為{sign,sign,XA[8:0],0,0,0,0,0,0,0,0,0};乘數為{sign,YA[8:0]};加法輸入為ZA[19:0];輸出求和數據OUTA[19:0]為MultA_out[19:0]在第二子加法器的第二部分積產生器中,用于乘數{sign,YB[8:0]}和被乘數{sign,sign,XB[8:0],0,0,0,0,0,0,0,0,0}相乘,獲得部分積數據并輸出;第二部分積壓縮器對部分積數據進行壓縮處理,獲得部分積壓縮數據;第二累加壓縮器對部分積壓縮數據,以及加法數據ZB[19:0]做累加處理,獲得求和數據。輸入操作數配置如下:對于MultB:被乘數為{sign,sign,XB[8:0],0,0,0,0,0,0,0,0,0};乘數為{sign,YB[8:0]};加法輸入為ZB[19:0];輸出求和數據OUTB[19:0]為MultB_out[19:0]在2個子乘加器并行9*9bit(及以下)的模式下,第一子乘加器MultA或第二子乘加器MultB獨立運算,將各自所有的部分積(PartialProduct,共5個)壓縮并求和,產生OUTA或OUTB,結果可分別通過MultA_out[19:0]或MultB_out[19:0]輸出。2、第一子乘加器MultA和第二子乘加器MultB同時處理第二位數閾值,如18*18bit;當乘加器處理的位數大于第一位數閾值,例如9*9bit,但是小于第二位數閾值,例如18*18bit,則加法器可以利用第一子加法器和第二子加法器共同實現18*18bit的模式,即實現乘加器輸出數據0UT[39:0]=X[17:0]*Y[17:0]+Z[39:0]時:第一子乘加器的第一部分積產生器用于乘數高位Y[9:0]和被乘數{sign,sign,X[17:0]}相乘,獲得第一部分積數據;第二子乘加器的第二部分積產生器用于乘數{sign,sign,Y[17:9]}低位和被乘數{sign,sign,X[17:0]}相乘,獲得第二部分積數據。然后由第一累加壓縮器或第二累加壓縮器對第一部分積數據、第二部分積數據以及加法數據Z[39:0]做累加處理,獲得求和數據。輸入操作數配置如下:對于MultA:被乘數為{sign,sign,X[17:0]};乘數為Y[9:0];加法輸入為Z[39:0];對于MultB:被乘數為{sign,sign,X[17:0]};乘數為{sign,sign,Y[17:9]};加法輸入為24’d0;輸出求和數據0UT[39:0]為{MultB_out[19:0],MultA_out[19:0]}當乘加器在處理1個18*18bit(及以下)的模式下,由于將乘數分割成了高9bit和低9bit兩部分,故首先第一子乘加器MultA和第二子乘加器MultB各自完成一半的部分積壓縮,即5個部分積在各自的乘法器內完成了壓縮,然后第二子乘加器MultB將壓縮好的中間結果(第二壓縮部分積數據)傳遞到第一子乘加器MultA的第一累加壓縮器AccumulatorCompressorA-2,與第一子乘加器MultA的中間結果(第一壓縮部分積數據)和加法數據一起,完成全部壓縮并求和,最終結果通過組合{MultB_out[19:0],multA_out[19:0]}輸出。根據應用情況,通過安排輸入操作數的具體位置,可以實現1個18*18bit和2個9*9bit的乘加運算共享部分邏輯。從實現結構可以看出,在18*18bit模式下,部分和的壓縮任務分成了兩塊,由MultB和MultA并行完成,最后由MultA將兩個結果相加,輸出最終結果。這樣的實現也提高了較長位寬時的計算速度,且MultB的部分和壓縮邏輯實現了不同模式下的資源共享。用戶可通過MACIPUserWizard,根據具體操作數的位寬情況,靈活配置內置的MACIP輸入。例如,可將一個18*18bit的MACIP,配置成兩個獨立的9*9bit的子乘加器使用。如現有技術的4個8*8bit的MACIP,此時只需要調用兩個18*18bit的MACIP即可實現。這在芯片資源有限且操作位數寬較少的情況下,提高了乘加器的利用效率約一倍。同時在操作位數寬較多的情況下,運算速度也有提高。本發(fā)明的乘加器實現了1個18*18bit或2個并行9*9bit的MACIP,部分資源共享,資源利用率提高;根據操作數的寬度,選擇并設置硬件乘加器的操作數,使用合理的結構,在較大位寬時提高了運算速度,在較小位寬時提高了資源的利用率。專業(yè)人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發(fā)明的范圍。結合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宾阳县| 邵东县| 安西县| 荆州市| 大石桥市| 商水县| 越西县| 德惠市| 五河县| 平舆县| 邵武市| 武安市| 东宁县| 东乌| 双牌县| 辽阳县| 行唐县| 久治县| 年辖:市辖区| 民丰县| 榆树市| 修水县| 呈贡县| 岚皋县| 金堂县| 德保县| 丹东市| 文化| 汶川县| 青浦区| 资兴市| 翁牛特旗| 龙岩市| 芦山县| 博客| 晋宁县| 鄂托克旗| 巴东县| 道孚县| 成都市| 五家渠市|