FPGA加法器乘法器_第1頁
FPGA加法器乘法器_第2頁
FPGA加法器乘法器_第3頁
FPGA加法器乘法器_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

FPGA加法器設(shè)計(jì)加法作為一種基本運(yùn)算,大量運(yùn)用在數(shù)字信號處理和數(shù)字通信的各種算法中。由于加法器使用頻繁,因此其速度往往影響著整個(gè)系統(tǒng)的運(yùn)行速度。如果可以實(shí)現(xiàn)快速加法器的設(shè)計(jì)則可以提高整個(gè)系統(tǒng)的處理速度。加法運(yùn)算是最基本的算數(shù)運(yùn)算,在多數(shù)情況下,無論是乘法、除法還是減法以及FFT等運(yùn)算,最終都可以分解為加法運(yùn)算來實(shí)現(xiàn),因此對加法運(yùn)算的實(shí)現(xiàn)進(jìn)行一些研究是非常必要的實(shí)現(xiàn)加法運(yùn)算有如下一些方法:1)級連加法器;2)并行加法器;3)超前進(jìn)位加法器4)流水線加法器。1、級連加法器級連加法器是由1位全加器級連構(gòu)成的,本位的進(jìn)位輸出作為下一級的進(jìn)位輸入。級連加法器的結(jié)構(gòu)簡單,但N位級連加法運(yùn)算的延時(shí)是1為全加器的N倍,延時(shí)主要是由于進(jìn)位信號級連造成的。在需要高性能的設(shè)計(jì)中,這種結(jié)構(gòu)不宜采用。moduleadd_jl(sum,cout,a,b,cin);output[3:0]sum;outputcout;input[3:0]ina,inb;inputcin;wire[3:1]c;full_add1f0(ina[0],inb[0],cin,sum[0],c[1]);//級連描述full_add1f1(ina[1],inb[1],c[1],sum[1],c[2]);full_add1f2(ina[2],inb[2],c[2],sum[2],c[3]);full_add1f3(ina[3],inb[3],c[3],sum[3],cout);modulefull_add1(ina,inb,cin,sum,cout);//1位全加器inputina,inb,cin;outputsum,cout;wires1,m1,m2,m3;and(m1,ina,inb),(m2,inb,cin),(m3,ina,cin);xor(s1,a,b),(sum,s1,cin);or(cout,m1,m2,m3);endmodule2、并行加法器并行加法器可采用Verilog語言的加法運(yùn)算符直接描述,或稱為數(shù)據(jù)流描述方式,實(shí)現(xiàn)容易,其運(yùn)算速度快,但耗費(fèi)資源多,尤其是當(dāng)加法運(yùn)算的位數(shù)較寬時(shí),其耗用資源將會大大增加。moduleadd_bx(cout,sum,a,b,cin);output[7:0]sum;outputcout;input[3:0]a,b;inputcin;assign{cout,sum}=a+b+cin;endmodule3、超前進(jìn)位加法器級連加法器的延時(shí)主要是由于進(jìn)位的延時(shí)造成的,因此要加快加法器的運(yùn)算速度,就必須減小進(jìn)位延遲,超前進(jìn)位鏈能有效地減少進(jìn)位的延遲。這里以4位超前進(jìn)位鏈的推導(dǎo)為例介紹超前進(jìn)位的概率。首先對于1位全加器,其本位值與進(jìn)位輸出可表示如下:sum=a十b十cincout=(a?b)+(a?cin)+(b?cin)=ab+(a+b)cin從上面式子可以看出:如果a和b都為1,則進(jìn)位輸出為1;如a和b有一個(gè)為1,則進(jìn)位輸出等cin.另G=ab,P=a+b,則有:cout=ab+(a+b)cin=G+P?cin由此可以得出用G和P來寫出4位超前進(jìn)位鏈如下(設(shè)定4位被加數(shù)和加數(shù)位A和B,進(jìn)位輸入為Cin,進(jìn)位輸出為Cout,進(jìn)位產(chǎn)生Gi=AiBi,進(jìn)位傳輸Pi=Ai+Bi):C0=CinC1=G0+P0C0=G0+P0CinC2=G1+P1C1=G1+P1(G0+P0Cin)=G1+P1G0+P1P0CinC3=G2+P2C2=G2+P2(G1+P1C1)=G2+P2G1+P2P1G0+P2P1P0CinC4=G3+P3C3=G3+P3(G2+P2C2)=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0CinCout=C4由上面的超前進(jìn)位鏈可以看出:各個(gè)進(jìn)位彼此獨(dú)立產(chǎn)生,將進(jìn)位級連傳播給去掉了,因此減少了進(jìn)位產(chǎn)生的延遲時(shí)間。同樣,可推導(dǎo)出下面的式子:sum=A十B十Cin=(AB)十(A+B)十Cin=G十P十Cin4、流水線加法器以上實(shí)現(xiàn)的加法器雖然盡量減少了延時(shí),但還是不可避免地有多級門延時(shí)和布線延時(shí),隨著位數(shù)的增加,延遲還會增加。為了設(shè)計(jì)更快的加法器,可以采用流水線設(shè)計(jì)技術(shù)(Pipeline),以提高系統(tǒng)的運(yùn)行頻率。其基本設(shè)計(jì)思想是在邏輯電路中插入若干寄存器來暫存中間結(jié)果雖然多了一些寄存器資源,但減少了每一級組合的延時(shí),因?yàn)榭梢蕴岣哒麄€(gè)加法器的運(yùn)行頻率,是用于提高所設(shè)計(jì)系統(tǒng)運(yùn)行速度的一種有效方法。流水線操作的概念以下圖來說明,在圖中,假設(shè)某個(gè)復(fù)雜邏輯功能的實(shí)現(xiàn)需要較長時(shí)間我們可以將其分解為幾個(gè)步聚來實(shí)現(xiàn),每一步延時(shí)變?yōu)樵瓉淼?/3,并在各步之間加入寄存器,以暫存中間結(jié)果,這樣的話,整個(gè)系統(tǒng)的最高工作頻率得到很大的提高。FPGA中關(guān)于乘法器的設(shè)計(jì)更新于2010-10-2700:39:16文章出處:blogFPGA乘法器乘法算是基本運(yùn)算之一,廣泛應(yīng)用在數(shù)字信號處理中,濾波器中乘法運(yùn)算必不可少,實(shí)現(xiàn)乘法器的方法很多,各有各的優(yōu)缺點(diǎn),常見的有移位相加法,加法樹法,查表法,混合法……在我們用語言設(shè)計(jì)電路時(shí),初學(xué)時(shí)在實(shí)現(xiàn)乘法運(yùn)算時(shí)通常很簡單的用*號操作,但是這種方法談不上設(shè)計(jì)乘法器,其最終的硬件實(shí)現(xiàn)要根據(jù)綜合器綜合的結(jié)果,好的綜合器可以綜合出想要的結(jié)果,但是實(shí)際上這種粗放的設(shè)計(jì)通常得到的都是劣等的乘法運(yùn)算,無法滿足對乘法速率的要求,在濾波電路中要求數(shù)據(jù)串行進(jìn)入接著進(jìn)行大量的乘法運(yùn)算,當(dāng)所設(shè)計(jì)的乘法器其的速度小于數(shù)據(jù)進(jìn)入的速度的時(shí)候就會導(dǎo)致結(jié)果錯(cuò)……1,以為相加乘法器其,對兩個(gè)二進(jìn)制數(shù)進(jìn)行相乘運(yùn)算,運(yùn)用列式求法我們可以得知,乘法最終就是由加法和移位運(yùn)算構(gòu)成的,由此可以用高速度的加法和移位實(shí)現(xiàn)乘法操作,具體代碼如下:begindout=0;for(i=0;i<WIGTH;i=i+1)dout=dout+((din_a_buf[i]==l)?(din_b_bufvvi):0);//移位相加邏輯end2,上面的設(shè)計(jì)中,由于產(chǎn)生了大量的組合邏輯,這就帶來了大量的延遲從而使乘法器的速率受到限制,為了提高速度,可以采用流水線的方法,將組合邏輯分割成一個(gè)一個(gè)小的組合邏輯,中間加上觸發(fā)器用來鎖存數(shù)據(jù),這樣就可以大大提高頻率,引入觸發(fā)器僅僅是帶來了延遲而已,具體代碼實(shí)現(xiàn)如下begin//流水線實(shí)現(xiàn)din_a_buf<=din_a;din_b_buf<=din_b;buf0<=din_b_buf[0]?din_a_buf:0;bufl<=din_b_buf[l]?din_a_buf<<l:0;buf2<=din_b_buf[2]?din_a_buf<<2:0;buf3<=din_b_buf[3]?din_a_buf<<3:0;buf4<=din_b_buf[4]?din_a_buf<<4:0;buf5<=din_b_buf[5]?din_a_buf<<5:0;buf6<=din_b_buf[6]?din_a_buf<<6:0;buf7<=din_b_buf[7]?din_a_buf<<7:0;buf0l<=buf0+bufl;buf23<=buf2+buf3;buf45<=buf4+buf5;buf67<=buf6+buf7;buf02<=buf0l+buf23;buf46<=buf45+buf67;dout<=buf02+buf46;end此種乘法器叫做加法樹式乘法器,此方法被廣泛使用…

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論