版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
八位乘法器的設(shè)計汪明2080130204信號與信息處理乘法是算術(shù)運算中經(jīng)常用到的一個運算單元,所以在算法實現(xiàn)中會經(jīng)常用到乘法。由于乘法器具有一定的復(fù)雜性,考慮到面積等因素,很多傳統(tǒng)的處理器中都不包含乘法器單元乘法則是通過算法換算成加法和移位在處理器中進行實現(xiàn),針對這些處理器編寫程序的時候應(yīng)盡量少的應(yīng)用乘法運算。隨著DSP技術(shù)的逐步發(fā)展,目前大多數(shù)高性能的處理器中都包含了乘法器運算單元,但仍有很多小型的控制型處理器不包含這一單元,所以設(shè)計面積小、速度快、性能穩(wěn)定的乘法器模塊仍然很有意義。本實驗的目的是選用一種設(shè)計方案設(shè)計一個八位乘法器,利用XINLINXISE軟件進行VHDL程序的編寫,然后對程序進行仿真驗證,并對所設(shè)計的乘法器進行評價。1原理分析與方案選擇乘法器的設(shè)計有多種方案,有模擬乘法器、數(shù)字乘法器兩種類型,前者主要是利用模擬器件對模擬信號進行乘法的設(shè)計,復(fù)雜度較高,后者則是通過數(shù)字器件來實現(xiàn)數(shù)字信號的乘法。本實驗利用FPGA設(shè)計數(shù)字乘法器件,根據(jù)數(shù)字信號的乘法運算準則,又有串行和并行兩種設(shè)計方法,串行設(shè)計時被乘數(shù)從低位到高位串行輸入,乘法結(jié)果從低位到高位串行輸出,其常用的結(jié)構(gòu)(四位乘法器)如下圖(1)所示;并行乘法器的輸入/輸出采用并行的方式,通常情況下計算性能比串行的好。圖1四位串行乘法器結(jié)構(gòu)本文采用并行輸入/輸出方式來進行乘法器的設(shè)計。下面以4位二進制數(shù)的乘法為例,對二進制乘法運算的過程(圖2示)進行說明。由圖2可知,如果對中間部分一行一行的處理,則乘法部分由一個個的2輸入與門與二輸入全加器組成,將這些結(jié)構(gòu)聯(lián)合在一起組成如圖3所示的結(jié)構(gòu)。b3b2b1b0TOC\o"1-5"\h\za3a2ala0 xa0?b3a0?b2a0?bla0?b0
al?b3al?b2al?blal?b0 +a2?b3a2?b2a2?bla2?b0 +a3?b3a3?b2a3?bla3?b0 +pro(7)pro(6)pro(5)pro(4)pro(3)pro(2)pro(l) pro(0)圖2四位二進制乘法過程
從圖3三個層結(jié)構(gòu)完全相同。在設(shè)計的時候,首先設(shè)計二位與門與二位全加器,然后構(gòu)成組成上述結(jié)構(gòu)的三種不同的模塊,進而構(gòu)造三種層的結(jié)構(gòu),用模塊設(shè)計的方法完成乘法器的設(shè)計。上圖指的是4位乘法器的結(jié)構(gòu)模型,根據(jù)乘法運算規(guī)則,很容易推廣到八位的情況。本實驗將采用這種方法來進行八位乘法器的設(shè)計。2模塊分析與VHDL程序的編寫本設(shè)計采用元件(component)的設(shè)計方法,將二輸入與門、二輸入全加器、圖3中三種不同的方框結(jié)構(gòu)以及三種不同的層結(jié)構(gòu)設(shè)計為元件,存儲在元件庫中,然后在設(shè)計乘法器的過程中直接調(diào)用這些模塊實現(xiàn)乘法的功能。二輸入與門與二輸入全加器從上面的結(jié)構(gòu)圖中可以看出,二輸入的與門是該結(jié)構(gòu)中用的最頻繁的一個元件之一,二輸入與門的VHDL語言非常簡單,其源代碼如圖4示。二輸入全加器full_adder即以帶進位的加法器,通過全加的準則,也很容易寫出全加器的VHDL代碼,代碼如圖5示。設(shè)置適當(dāng)?shù)牟ㄐ?,對這兩個模塊進行仿真驗證,很容易證明元件設(shè)計的正確性,由于這兩個元件都很簡單,故不再描述仿真結(jié)果。在完成仿真后,將這兩個元件添加進元件庫my_compopnents中,以便以后其它結(jié)構(gòu)進行調(diào)用。-coiTLponentat_Ld_2 project:8-bit-coiTLponentat_Ld_2 project:8-bitlibraryIEEE;useIEEE.STD_LOGIC_1164.libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_^:ITH.ALL:useIEEE.STD_LOGIC_UNSIGtIED.ALL;entit27:md_2isport(.ajb:instd_logic;y:outstd_logic);end日nd_2;architectureBehavioralof:di_Ld_2isbegin:mdb:endBel_Lavioral;圖4二輸入與門的VHDL代碼元件包libraryIEEE:useIEEE.STD_LOGIC_1164.ALL:useIEEE.STD_LOGIC_ARITH.ALL:useIEEE.STD_LOGIC_UNSIGNED.ALL::ent full_adderisporti:bjcin:instd_logic;Sjcout:outstd_logic);endfull_adder;architectureEehavioraloffull_adderisbegins<=azorbzorcin;cout<=(a:di_Ldb)or(a注門己cin)or(b^ndcin);endEehavioral;圖5二輸入全加器的VHDL代碼此次乘法器的設(shè)計采用的是component的方法,故像上面的兩個元件等要添加到元件包中,所以需要一個存放元件的元件包。在這里,我們通過設(shè)計package文件的方法將所有可能用到的元件放入元件包my_components中,其源代碼如圖6所示。從圖中可以看出,其包含二輸入與門、二輸入全加器、top_row、mid_row、low_row共5個元件。libraryIEEE;useIEEE.STD_L0GIC_1164.allpackagemy_componentsiscomponentand_2isport(Sjb:instd_logic;y:outstd_logic):endcomponent;componentfull_adderisport(ajbjcin:instd_logic;cout:outstd_logic)endcomponent;componenttop_rowisport(a:instd_logic:b:instd_logic_vector(7dournto0);soutjcout:outstd_logic_vector(6doimto0)p:outstd_logic);endcomponent;componentmid_rowisport(a:instd_logic:b:instd_logic_vector(7downto0):sin,cin:instd_logic_vector(6doimto0)soutjcout:outstd_logic_vector(6doimto0)p:outstd_logic);endcomponent;componentlow_rowisport(sirijcin:instd_logic_vector(6doimto0):
p:outstd_logic_vector(7doimto0));endcomponent;endmy_components;圖6元件包my_components頂層、中間層及底層模塊從結(jié)構(gòu)圖中可以看出,乘法器的結(jié)構(gòu)中包含三個大的模塊,即頂層結(jié)構(gòu)(top_row)、
中間層結(jié)構(gòu)(mid_row)和底層結(jié)構(gòu)(low_row)。在上一節(jié)的元件包中,已將這三種模塊
的接口寫進了元件包my_components。這三種模塊的結(jié)構(gòu)都不一樣,頂層圖中主要包含的是
二輸入與門、中間層中則二輸入與門和二輸入全加器、底層則只有全加器,對這三種結(jié)構(gòu)分
libraryIEEE;別進行VHDL程序的編寫(注意程序中需用到二輸入與門與二輸入全加器,故在頭文件庫中應(yīng)該添加語句:usework.my_components.ALL;),代碼如圖7、8、libraryIEEE;IEEE.STD_L0GIC_1164.ALL;IEEE.STD_LOGIC_ARITH.ALL;IEEE.STD_LOGIC_UNSIGNED.ALLwork.my_components.ALL;entitytop_rowisport(a:instd_logic:b:instd_logic_vector(7doimto0):soutcout:outstd_logic_vector(6doimto0):p:outstd_logic):endtop_row;architecturestructuralofegmU1:componentU2architecturestructuralofegmU1:componentU2:componentU3:componentU4:componentU5:componentU6:componentU7:componentU8:componentP
,0?
,0?,0?endstructural:cout⑹<cout⑸<cout⑷<cout⑶<cout(2)<cout(1)<cout(0)<IQIQIQIQIQIQIQIQttttttttrrrrrrrroooo_u_u_u_upppppppptop_rowismap(ajb(7)jsout⑹);map(a,b⑹,sout⑸);map(a,b⑸,sout⑷);mapb⑷,sout(3));map(a.jb⑶,sout⑵);mapb(2)jsout⑴);mapb(1)jsout(0));map(a,b(0)p);圖7頂層模塊的VHDL程序libraryIEEE;IEEE.STD_LOGIC_1164.ALL;IEEE.STD_LOGIC_ARITH.ALL;IEEE.STD_LOGIC_UNSIGNED.libraryIEEE;IEEE.STD_LOGIC_1164.ALL;IEEE.STD_LOGIC_ARITH.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;work.my_comporients.all;entitylow_rowisport(sin,cin:instd_logic_vector(6doimto0):p:outstd_logic_vector(7doimto0)):endlow_row;rchitecturestructuraloflow_rowissignallocal:std_logic_vector(6doimto0);eginlocal(0)<=JCT;U1:componentU2:componentU3:componentU4:componentU5:componentU6:componentU7:componentendstructural:fullfullfullfullfullfullfulladderadderadderadderadderadderadderportportportportportportportmap(sin(Cl)cin(0)local(0)p(0)local(1));map(sin(l)cin(l)local(1)p(1)local(2));map(sin(2)uiit⑵,local(2)p(2)local(3));map(sin(3)cin(3)j1dual⑷,p⑶,local(4));map(sin(4)cin(4)jlocal(4)p(4)local(5));map(sin(5)cin(5)jlocal(5)p(5)local(6));map(sin(6)3uin⑹』local(6)3p(6)3p(7));圖8底層模塊的VHDL程序libraryIEEE:useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;llseIEEE.STD_LOGIC_UNSIGNED.ALL;llsework.my_components.ALL;entitymid_rowisport(a:instd_logic;b:instd_logic_vector(7downto0);sirijcin:instd_logic_vector(6downto0):soutjcout:outstd_logic_vector(6downto0);p:outstd_logic);endmid_row;architecturestructuralofmid_rowisarchitecturestructuralofmid_rowisUl:componentand_2portU2:componentand_2portU3:componentand_2portU4:componentand_2portU5:componentand_2portU6:componentand_2portU7:componentand_2portU8:componentand2portU9:componentfull_adderU10:componentfulladderUli:componentfulladderU12:componentfulladderU13:componentfulladderU14:componentfulladderU15:componentfulladderendstructural:signaland_out:std_logiceginvector(6downto0):mapb(7)sout(6));map(a^b(6)3and_out⑹);map(3jb(5)3and_out⑸);map(3jb(4)3and_out(4)):mapb(3)3and_out⑶);mapb(2)and_ou-t⑵);mapb(1)and_ciut⑴);map(a^b(0)3and_out(0)):portmap(sin(6)cin(6)andportmap(sin(5)jcin(5)jandportmap(sin(4)juiri⑷,andportmap(sin(3)cin(3)andportmap(sin(2)cin(2)andportmap(sin(1)jcin(1)jandportmap(sin(0)cin(0)andout⑹ssout⑸』cout⑹);out(5)jsout(4)jcout⑸);out(4)sout(3)jcout⑷);out(3)sout(2)jcout(3));out(2)sout(1)jcout(2));out(1)3sout(0)jcout(1));out(0)Pjcout(0));圖9中間層模塊的VHDL程序乘法器的頂層設(shè)計設(shè)計好上面所有的元件后,便可以利用元件庫中的這些元件來進行乘法器的設(shè)計了,按照圖3所示的結(jié)構(gòu)來編寫乘法器的VHDL語言。同樣,由于利用到了自己設(shè)計的元件庫,故在程序的library區(qū),應(yīng)添加代碼:usework.my_components.ALL。編寫好的VHDL如下圖10所示。libraryIEEE;seseseseIEEE.STD_L0GIC_1164.ALL;IEEE.STD_LOGIC_ARITH.ALLlibraryIEEE;seseseseIEEE.STD_L0GIC_1164.ALL;IEEE.STD_LOGIC_ARITH.ALL;IEEE.STD_LOGIC_UNSIGNED.ALL;work.my_components.all;entitymac_8isportb:instd_logic_vector(7doimto0):prob:outstd_logic_vector(15downto0));endmac_8;architectureBehavioralofmac8isTYPEmatrisisarray(0tosignalSjcimatris;eginU1:componentU2:componentU3:componentU4:componentU5:componentU6:componentU7:componentU8:componentU9:componentndBehavioral;top.midmidmidmidmidmidmidlowrowrowrowrowrowrowrowrowrowportportportportportportportportport7jofstd_logic_vector(6doumto0);map(a(0)bjmap(a⑴,b,map(a⑵,b,map(a⑶,bjmap(a⑷,b,map(a⑸,bjmap(a⑹,b3map(a(7),bjmap(s(7),c(7)jprob(15downto8)):s9),c(0)prob(0));s(0)^c(0)s(1)^c(1)^prob(1));w⑴,c⑴,w⑵,u⑵,prciti⑵);s(.2),c⑵,w⑶,u⑶,prciti⑶);w⑶,c⑶,w⑷,u(4)prob⑷);m⑷,匚⑷,m⑸,匚(5)^prob⑸);s(5)3c⑸,m⑹,u(6)3prob⑹);s(6)c⑹,s(7),c(7),prob(7));圖10乘法器的頂層VHDL設(shè)計3仿真實現(xiàn)在上一節(jié),完成了各元件的VHDL設(shè)計與仿真驗證,并最終完成了乘法器的頂層VHDL設(shè)計?,F(xiàn)設(shè)計適當(dāng)?shù)牟ㄐ挝募?,對完成的乘法器進行仿真驗證,波形文件mac_88.tbw如圖
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版木門品牌授權(quán)與區(qū)域代理合同4篇
- 2025年模具設(shè)計軟件授權(quán)使用合同2篇
- 2025年度沿街商品房租賃與品牌孵化服務(wù)合同4篇
- 2025年度智能穿戴設(shè)備銷售與維護合同2篇
- 二零二五年度蜜蜂產(chǎn)業(yè)扶貧項目投資合同4篇
- 二零二五年度砂石市場預(yù)測與采購合同范本3篇
- 2025年度冷鏈食品加工基地1#生產(chǎn)線冷鏈物流配送服務(wù)合同4篇
- 2025版智能安防系統(tǒng)設(shè)計安裝合同4篇
- 二零二五版模具開模與快速原型制造合同3篇
- 2025年度個人意外傷害保險連帶責(zé)任保證合同3篇
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- 國家公務(wù)員考試(面試)試題及解答參考(2024年)
- 《阻燃材料與技術(shù)》課件 第6講 阻燃纖維及織物
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 人教版五年級上冊遞等式計算100道及答案
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 2024年新課標全國Ⅰ卷語文高考真題試卷(含答案)
- 湖南省退休人員節(jié)日慰問政策
- QB/T 5998-2024 寵物尿墊(褲)(正式版)
評論
0/150
提交評論