8位乘法器設(shè)計_第1頁
8位乘法器設(shè)計_第2頁
8位乘法器設(shè)計_第3頁
8位乘法器設(shè)計_第4頁
8位乘法器設(shè)計_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

EDA大作業(yè)基于VHDL的8位乘法器設(shè)計1.乘法器原理8位乘法器可用移位和加法來實現(xiàn),兩個8位數(shù)相乘,總共需要執(zhí)行8次加法運算和8次移位運算,由乘數(shù)的末位值確定被乘數(shù)是否與原部分積相加,從乘數(shù)的最低位開始,若乘數(shù)為1,加被乘數(shù),然后右移一位,形成新的部分積,乘數(shù)同時右移一位;若乘數(shù)為0,加上零值,然后右移一位,形成新的部分積,乘數(shù)同時右移一位,直到乘數(shù)的最高位為止,從而得出最終的乘積結(jié)果。實現(xiàn)原碼一位乘法的硬件邏輯結(jié)構(gòu)圖如下圖所示。用寄存器R0存放部分積;R0存放乘數(shù)Y,并且最低位Yn作判斷為;RO和R1都具有右移功能并且是連通的;寄存器R2存放被乘數(shù)X,加法器完成部分積與位積求和,計數(shù)器記錄相加移位的操作次數(shù)。8位乘法器的頂層設(shè)計主要分成四大功能模塊,并可根據(jù)分解的層次進(jìn)行設(shè)計,各個功能模塊作用介紹如下:右移寄存器模塊:是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移,本設(shè)計采用的一個8位寄存器,能存放8位二進(jìn)制代碼,需用8個觸發(fā)器來構(gòu)成,它可將乘法運算中的被乘數(shù)加載于其中,同時進(jìn)行乘法運算的移位操作。加法器:本設(shè)計用到一個8位加法器,主要進(jìn)行操作數(shù)的加法運算乘1模塊:主要實現(xiàn)8位與1位的乘法運算。鎖存器:它所實現(xiàn)的功能是把當(dāng)前的狀態(tài)鎖存起來,使CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時間鎖存后狀態(tài)不再發(fā)生變化,直到解除鎖定。本次設(shè)計采用16位鎖存器,同時也是一個右移寄存器,在時鐘信號作用下,進(jìn)行輸入值的移位與鎖存。2.乘法器設(shè)計流程本設(shè)計采用移位和加法來實現(xiàn)兩個8位二進(jìn)制數(shù)相乘。由乘數(shù)的末尾值來確定被乘數(shù)是否與原部分積相加,然后右移一位,形成新的部分積;同時,乘數(shù)也右移一位,由次低位作新的末位,空出最高位放部分積的最高位。例如被乘數(shù)為00000101,乘數(shù)為01101111,初始條件下,部分積為0,乘數(shù)最低位為1,加被乘數(shù),和為00000101,使其右移一位,形成新的部分積為00000010,乘數(shù)同時右移一位,原和最低位1被放到乘數(shù)的最高位,此時,乘數(shù)最低位為1,加00000101,和為00000111,使其右移一位,形成新的部分積為0000011,依次類推,循環(huán)8次,總共需要進(jìn)行8次相加和8次移位操作,最終得出乘積結(jié)果。其設(shè)計流程圖所如下所示:

3.8位乘法器的頂層設(shè)計8位移位相加乘法器的原理圖如下圖所示。在圖中,START信號的上升沿及其高電平有兩個功能,即16位寄存器清零和被乘數(shù)A[7??0]向移位寄存器SREG8B加載;它的低電平則作為乘法使能信號。CLK位乘法時鐘信號。當(dāng)被乘數(shù)被加載于8位右移寄存器SREG8B后,隨著每一時鐘節(jié)拍,最低位在前,由低位至高位逐位移出。當(dāng)為1時,1位乘法器ANDARTIH打開,8位乘數(shù)B[7…0]在同一節(jié)拍進(jìn)入8位加法器,與上一次鎖存在16位鎖存器中的高8位進(jìn)行相加,其和在下一時鐘節(jié)拍的上升沿被鎖進(jìn)此鎖存器。而當(dāng)被乘數(shù)的移出位為0時,與門全零輸出。如此反復(fù),直至8個時鐘脈沖后。最后乘積完整出現(xiàn)在REG16B端口。移位相加乘法器的原理圖如下:ANDARITHCLKARIENDSTARTANDARITHCLKARIENDSTARTCLKOUTRSTALLCINCOUT-0]B[7.0]根據(jù)上圖移位相加乘法器的原理圖,利用元例化的方法可得乘法器乘法器的頂層設(shè)計的VHDL的代碼如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYARICTLISPORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;ARIEND:OUTSTD_LOGIC;CLKOUT:OUTSTD_LOGIC;RSTALL:OUTSTD_LOGIC);ENDENTITYARICTL;ARCHITECTUREARTOFARICTLISSIGNALCNT4B:STD_LOGIC_VECTOR(3DOWNTO0);BEGINRSTALL<=START;PROCESS(CLK,START)ISBEGINIFSTART='1'THENCNT4B<="0000";ELSIFCLK'EVENTANDCLK='1'THENIFCNT4B<8THENCNT4B<=CNT4B+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CNT4B,START)ISBEGINIFSTART='0'THENIFCNT4B<8THENCLKOUT<=CLK;ARIEND<='0';ELSECLKOUT<='0';ARIEND<='1';ENDIF;ELSECLKOUT<=CLK;ARIEND<='0';ENDIF;ENDPROCESS;ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADDER4BISPORT(C4:INSTD_LOGIC;A4:INSTD_LOGIC_VECTOR(3DOWNTO0);B4:INSTD_LOGIC_VECTOR(3DOWNTO0);S4:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO4:OUTSTD_LOGIC);ENDENTITYADDER4B;ARCHITECTUREARTOFADDER4BISSIGNALS5:STD_LOGIC_VECTOR(4DOWNTO0);SIGNALA5,B5:STD_LOGIC_VECTOR(4DOWNTO0);BEGINA5<='0'&A4;B5<='0'&B4;S5<=A5+B5+C4;S4<=S5(3DOWNTO0);CO4<=S5(4);ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSREG8BISPORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDENTITYSREG8B;ARCHITECTUREARTOFSREG8BISSIGNALREG8B:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLK,LOAD)ISBEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8B<=DIN;ELSEREG8B(6downto0)<=REG8B(7DOWNTO1);ENDIF;ENDIF;ENDPROCESS;QB<=REG8B(0);ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYREG16BISPORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(8DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDENTITYREG16B;ARCHITECTUREARTOFREG16BISSIGNALR16S:STD_LOGIC_VECTOR(15DOWNTO0);BEGINPROCESS(CLK,CLR)ISBEGINIFCLR='1'THENR16S<="0000000000000000";ELSIFCLK'EVENTANDCLK='1'THENR16S(6DOWNTO0)<=R16S(7DOWNTO1);R16S(15DOWNTO7)<=D;ENDIF;ENDPROCESS;Q<=R16S;ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYADDER8BISPORT(CIN:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);COUT:OUTSTD_LOGIC);ENDENTITYADDER8B;ARCHITECTUREARTOFADDER8BISCOMPONENTADDER4BISPORT(C4:INSTD_LOGIC;A4:INSTD_LOGIC_VECTOR(3DOWNTO0);B4:INSTD_LOGIC_VECTOR(3DOWNTO0);S4:OUTSTD_LOGIC_VECTOR(3DOWNTO0);CO4:OUTSTD_LOGIC);ENDCOMPONENTADDER4B;SIGNALSC:STD_LOGIC;BEGINU1:ADDER4BPORTMAP(C4=>CIN,A4=>A(3DOWNTO0),B4=>B(3DOWNTO0),S4=>S(3DOWNTO0),CO4=>SC);U2:ADDER4BPORTMAP(C4=>SC,A4=>A(7DOWNTO4),B4=>B(7DOWNTO4),S4=>S(7DOWNTO4),CO4=>COUT);ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYANDARITHISPORT(ABIN:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);DOUT:OUTSTD_LOGIC_vector(7DOWNTO0));ENDENTITYANDARITH;ARCHITECTUREARTOFANDARITHISBEGINPROCESS(ABIN,DIN)ISBEGINFORIIN0TO7LOOPDOUT(I)<=DIN(I)ANDABIN;ENDLOOP;ENDPROCESS;ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMULTI8X8ISPORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);ARIEND:OUTSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDENTITYMULTI8X8;ARCHITECTUREARTOFMULTI8X8ISCOMPONENTARICTLISPORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;CLKOUT:OUTSTD_LOGIC;RSTALL:OUTSTD_LOGIC;ARIEND:OUTSTD_LOGIC);ENDCOMPONENTARICTL;COMPONENTANDARITHISPORT(ABIN:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);DOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENTANDARITH;COMPONENTADDER8BISPORT(CIN:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);S:OUTSTD_LOGIC_VECTOR(7DOWNTO0);COUT:OUTSTD_LOGIC);ENDCOMPONENTADDER8BCOMPONENTSREG8BISPORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDCOMPONENTSREG8B;COMPONENTREG16BISPORT(CLK:INSTD_LOGIC;CLR:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(8DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDCOMPONENTREG16B;SIGNALS1:STD_LOGIC;SIGNALS2:STD_LOGIC;SIGNALS3:STD_LOGIC;SIGNALS4:STD_LOGIC;SIGNALS5:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALS6:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALS7:STD_LOGIC_VECTOR(15DOWNTO0);BEGINDOUT<=S7;S1<='0';U1:ARICTLPORTMAP(CLK=>CLK,START=>START,CLKOUT=>S2,RSTALL=>S3,ARIEND=>ARIEND);U2:SREG8BPORTMAP(CLK=>S2,LOAD=>S3,DIN=>A,QB=>S4);

U3:ANDARITHPORTMAP(ABIN=>S4,DIN=>B,DOUT=>S5);U4:ADDER8BPORTMAP(CIN=>S1,A=>S7(15DOWNTO8),B=>S5,S=>S6(7DOWNTO0),COUT=>S6(8));U5:REG16BPORTMAP(CLK=>S2,CLR=>S3,D=>S6(8DOWNTO0),Q=>S7(15DOWNTO0));ENDARCHITECTUREART;4.乘法器仿真1)系統(tǒng)仿真情況輸入值A(chǔ)=OAH、B=OCH,結(jié)果D0UT=0078H;輸入值A(chǔ)=0CH、B=0AH,結(jié)果DOUT=0078H;輸入值A(chǔ)=02H、B=03H,結(jié)果DOUT=0006H;仿真圖如下:abcMULTI8X8.vhd |令CompilationReport-FlowSummary |也MULTI8X8.vwf* |令SimulationReport-SimulationWaveformsMasterTimeBar: 0ps <|

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論