16乘16乘法器電路_第1頁
16乘16乘法器電路_第2頁
16乘16乘法器電路_第3頁
16乘16乘法器電路_第4頁
16乘16乘法器電路_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 摘 要 隨著現(xiàn)代數(shù)字技術(shù)的高速發(fā)展,乘法器在高速實時信號處理中特別是在數(shù)字信號處理和數(shù)字圖像處理系統(tǒng)中起到了重要的作用。乘法器已經(jīng)是現(xiàn)代計算機中必不可少的一部分。隨著乘數(shù)和被乘數(shù)位數(shù)的增加,乘法器電路中的加法器位樹也要相應(yīng)的增加。通過研究CLA電路的特性,也可以在乘法器中開發(fā)出更快的加法陣列。純組合邏輯構(gòu)成的乘法器雖然工作速度比較快,但過于占用硬件資源,難以實現(xiàn)寬位乘法器。這里介紹由十六位加法器構(gòu)成的以時序邏輯方式設(shè)計的十六位乘法器,具有一定的實用價值,而且由FPGACPLD構(gòu)成實驗系統(tǒng)后,可以很容易的用ASIC大型集成芯片來完成,性價比高,可操作性強。其運算速度是決定邏輯運算單元(ALU)

2、工作頻率的關(guān)鍵,并在很大程度上決定了系統(tǒng)的性能。由于DSP芯片是串行執(zhí)行,速度慢、功耗大,所以現(xiàn)在高速實時信號處理中一般采用FPGACPLD來進(jìn)行并行處理。現(xiàn)在很多系統(tǒng)設(shè)計中,要求速度越來越快,功耗越來越小,因此研究高速低功率的乘法器相當(dāng)重要。在此次課設(shè)中我將在modelsim的環(huán)境下完成十六位的乘法器的設(shè)計。 關(guān)鍵詞 FPGA;加法器;Modelsim;鎖存器,;移位寄存器 目 錄引言11總體電路結(jié)構(gòu)設(shè)計2 1.1電路功能與性能2 1.2關(guān)鍵功能電路設(shè)計3 1.3電路接口3 1.4電路功能框圖5 1.5驗證方案62模塊的設(shè)計7 2.1 輸入信號處理模塊設(shè)計8 2.2 16位移位寄存器模塊9

3、2.3 16位計數(shù)器模塊9 2.4 輸出信號處理模塊103 設(shè)計仿真與測試11 3.1仿真與測試的功能列表11 3.2 仿真平臺構(gòu)建和仿真結(jié)果11 3.2.1 頂層仿真平臺與激勵11 3.2.2 電路功能仿真結(jié)果12 3.2.3 電路后仿真結(jié)果14 3.3 測試環(huán)境的搭建與測試結(jié)果15 3.3.1 測試環(huán)境模擬15 3.3.2 電路測試結(jié)果154 電路約束與綜合實現(xiàn)16 4.1 時序約束16 4.2 引腳鎖定約束17 4.3 電路綜合報告18 4.4 設(shè)計實現(xiàn)與下載19結(jié) 論20參考文獻(xiàn)21引言隨著數(shù)字電子技術(shù)的高速發(fā)展,EDA技術(shù)日益普及,可編程器件FPGACPLD也得到了廣泛的應(yīng)用。本次課

4、程設(shè)計要完成十六位乘法器的電路仿真。硬件乘法器,其基礎(chǔ)就是加法器結(jié)構(gòu),其模型就是基于“移位和相加”的算法。在該算法中,乘數(shù)與被乘數(shù)都是16位,所以輸出應(yīng)為一個32位的數(shù)。所需器件,乘法運算控制電路控制乘法運算;16位加法計數(shù)器的輸出值控制移位次數(shù);16位移位寄存器控制被乘數(shù)右移;32位加法器進(jìn)行乘數(shù)與鎖存器中的數(shù)相加。采用時序邏輯設(shè)計方法,電路將部分已經(jīng)得到的乘積結(jié)果右移,然后與乘積項相加并保存和值,反復(fù)迭代上述步驟直到計算出最終乘積。乘法運算控制電路的START信號的上升沿與高電平有兩個功能,即32位寄存器清零和將被乘數(shù)ain加載至移位寄存器中;它的低電平則作為乘法使能信號1。乘法時鐘信號從

5、乘法運算控制電路的CLK輸入。與此同時一16位加法計數(shù)器的輸出值控制移位次數(shù)及何時將結(jié)果輸出。當(dāng)被乘數(shù)加載至16位右移寄存器后,隨著每個時鐘節(jié)拍,由低位至高位逐位移出。當(dāng)被乘數(shù)移出位為1時,與門打開16位乘數(shù)bin在同一節(jié)拍進(jìn)入16位加法器與上一次鎖存在32位的寄存器的高16位進(jìn)行相加,其和在下一時鐘節(jié)拍的上升沿向右移一位鎖進(jìn)此鎖存器中;當(dāng)被乘數(shù)移出位為0時,與門全零輸出,此時鎖存器中的值在下一時鐘節(jié)拍的上升沿向右移一位鎖進(jìn)此鎖存器中。如此往復(fù),直至16個時鐘脈沖后,由乘法運算控制電路控制乘法運算過程自動中止,乘法控制電路輸出高電平,點亮發(fā)光管,以示乘法結(jié)束。此時32位鎖存器中的輸出值即為最后

6、乘積。此乘法器的優(yōu)點是節(jié)省芯片資源,它的核心元件只有一個16位加法器,其運算速度取決于輸出時鐘頻率。 1總體電路結(jié)構(gòu)設(shè)計1.1電路功能與性能16位乘法器的功能主要體現(xiàn)7個部分進(jìn)行16*16的乘法計算但其設(shè)計原理可用來計算更多位的乘法計算。電路的具體功能可羅列如下:(1)乘法運算控制電路ARICTL輸入一信號START,與其同步時鐘。START信號的上升沿將32位鎖存器清零,其高電平與CLK上升沿將被乘數(shù)加載至16位移位寄存器中,低電平作為乘法運算的使能信號。(2)將START與CLK輸出信號接入16位移位寄存器的LOAD與CLK輸入接口,將乘數(shù)進(jìn)行從高位到低位依次移出,其輸出信號作為ANDAR

7、ITH的一信號輸入,控制把0還是乘數(shù)送入加法器。(3)ANDARITH電路控制將0還是被乘數(shù)送到加法器中,若乘數(shù)移出位為1,則其把被乘數(shù)送到加法器;若乘數(shù)移出位為0,則其把0送到加法器。(4)加法運算,在計數(shù)器計數(shù)值小于15時, 32位鎖存器的值的高16位就會送到加法器中,若此時ANDARITH送來被乘數(shù)則其與被乘數(shù)相加,若為0則其與0相加。(5)32位移位寄存器,把加法器送來的值向右移一位,左端添零補齊,并將移位后的結(jié)果送到32位鎖存器中。(6)將START與CLK輸出信號接入32位鎖存器的CLR片選接口與CLK時鐘輸入接口,其用來將32位移位寄存器送來的數(shù)據(jù)進(jìn)行鎖存,并控制是將其值的高16

8、位送進(jìn)加法器還是輸出運算結(jié)果:當(dāng)計數(shù)器計數(shù)值小于15時,則將其值的高16位送到加法器,若計數(shù)器計數(shù)值等于15,則輸出運算結(jié)果。(7)將CLK信號接入16位計數(shù)器的時鐘輸入接口,通過計數(shù)來控制移位寄存器的移位次數(shù),以及運算完成輸出指示:計數(shù)器計數(shù)值為16時,done輸出高電平,其接口LED燈將被點亮,即乘法運算結(jié)束;計數(shù)器計數(shù)值為15時,32位鎖存器的輸出值即為最后乘積;計數(shù)器計數(shù)值小于15時,32位鎖存器將其值高16位送到加法器中。1.2關(guān)鍵功能電路設(shè)計 本電路設(shè)計的主要難點在于如何將兩個16位的二進(jìn)制數(shù)相乘,經(jīng)過功能分析,決定采用加法器的方式來實現(xiàn)乘法運算。先將被乘數(shù)加載到移位寄存器中,鎖存

9、器清零。當(dāng)被乘數(shù)移出位為1時則ANDARITH打開將乘數(shù)加載到鎖存器,與鎖存器中值的高16位相加,并將結(jié)果向右移一位;當(dāng)被乘數(shù)移出位為0,則ANDARITH把0加載到鎖存器,即鎖存器中的數(shù)向右移一位,其高16位不與乘數(shù)相加,只是向右移一位,當(dāng)乘數(shù)最后一位移出后,最后鎖存器中的值即是乘積結(jié)果。當(dāng)輸入信號輸入時其相應(yīng)的狀態(tài)如表1.1表1.1各器件狀態(tài)控制表 輸入信號當(dāng)前狀態(tài)乘法控制器移位寄存器加法器鎖存器計數(shù)器rstn清零清零清零清零清零STARTSTART上升沿將鎖存器清零;高電平將乘數(shù)送到移位寄存器中;低電平作為乘法運算的使能端乘數(shù)加載到移位寄存器中清零清零清零,開始計數(shù)1.3電路接口 整個設(shè)

10、計接口可以分為4部分,分別是線路START信號時鐘,數(shù)據(jù)輸入數(shù)據(jù)和時鐘,接收使能與完成指示信號,數(shù)據(jù)顯示接口。需要注意的是這里所有的信號(所有的輸入,輸出,START信號,及完成指示信號2)都來自開關(guān)或按鍵。注意撥檔開關(guān)設(shè)定兩個輸入數(shù)據(jù),當(dāng)輸入第一個數(shù)據(jù)時,完成撥檔開關(guān)設(shè)定后,由一個控制信號控制完成設(shè)定值的輸入,該信號由按鍵完成。具體接口如下表1.2。表1.2接口功能表名稱IO屬性 描述備注clkin 輸入時鐘,2M頻率rstnin 異步清零信號,低電平清零,高電平進(jìn)行運算低電平有效STARTin上升沿將32位鎖存器清零;其高電平與CLK上升沿將被乘數(shù)加載至16位移位寄存器中;低電平作為乘法運

11、算的使能信號S0in為0輸入乘數(shù),為1輸入被乘數(shù)S1in與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位:若為00輸入ain3:0(或bin3:0),為01輸入ain7:4(或bin7:4),為10輸入ain11:8(或bin11:8),為11輸入ain15:12(或bin15:12)S2in同s1S3in在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)S4in在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)S5in在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)S6in在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)S7out控制輸出相乘結(jié)果是高位還是低位,s7為1輸出低位,s7為0輸出

12、高位doneout輸出乘法運算結(jié)束信號1.4電路功能框圖依照功能路分為7個功能模塊:加法器模塊ADD_16,用于乘數(shù)與鎖存器中值的高16位做加法;乘法運算控制模塊ARICTL,用于控制鎖存器清零,將被乘數(shù)送到移位寄存器;16位移位寄存器模塊Shift_16,用于被乘數(shù)向右移位輸出;16位計數(shù)器模塊Cnt_16,用于控制移位次數(shù)及何時將結(jié)果輸出;ANDARITH模塊,用于控制乘數(shù)是否與鎖存器值的高16位相加;32位鎖存器模塊Data_Latch,用于鎖存32位移位寄存器中的值;32位移位寄存器模塊Shift_32,用于將進(jìn)行加法后的值右移一位;最后乘法運算結(jié)束后輸出最后值。電路的功能框圖如下圖1

13、所示。圖1設(shè)計電路圖 在圖1中,模塊Shift_16用來將乘數(shù)移位移出,在START信號高電平與CLK上升沿將被乘數(shù)加載至16位移位寄存器中,并在每個CLK時鐘上升沿將乘數(shù)從高位到低位依次移出,并將移出位送至ANDARITH模塊。模塊ANDARITH用于控制乘數(shù)是否與鎖存器值的高16位相加,當(dāng)被乘數(shù)移出位為1時,ANDARITH電路打開16位乘數(shù)bin在同一節(jié)拍進(jìn)入加法器中,與32位的鎖存器送來其值的高16位進(jìn)行相加;當(dāng)被乘數(shù)移出位為0時,ANDARITH電路全零輸出,及此時鎖存器中的值與0相加,及在下一時鐘節(jié)拍的上升沿向右移一位鎖進(jìn)此鎖存器中。Data_Latch模塊用于鎖存32位移位寄存器

14、中的值,當(dāng)計數(shù)器計數(shù)小于16時,將上一次鎖存結(jié)果送到加法器中與乘數(shù)或者與0相加;當(dāng)計數(shù)器計數(shù)等于15時,將鎖存結(jié)果輸出,及最后的相加結(jié)果。ADD_16模塊用于乘數(shù)與鎖存器中值的高16位做加法,在時鐘上升沿將ANDARITH模塊送來的值與32位鎖存器模塊Data_Latch送來的值進(jìn)行相加,并將結(jié)果送到32位移位寄存器模塊Shift_32。Shift_32模塊用于將進(jìn)行加法后的值右移一位,在時鐘上升沿將ADD_16加法器模塊送來的值向右移一位,并將結(jié)果送到32位鎖存器模塊Data_Latch中。Cnt_16模塊用來進(jìn)行計數(shù)來控制16位移位寄存器的移位次數(shù)及32位鎖存器何時將結(jié)果輸出。當(dāng)計數(shù)值小于

15、15時,16位移位寄存器依次輸出,32位鎖存器將值送到加法器中進(jìn)行加法計算;當(dāng)計數(shù)值等于15時,16位移位寄存器清零,32位鎖存器將結(jié)果輸出,且指示燈被點亮。其流程圖如下圖2所示。1.5驗證方案課程設(shè)計的驗證主要有兩個方面的內(nèi)容:一是在Modelsim環(huán)境下進(jìn)行運行:按照電路圖將其寫為EDA語言,需要注意的是沒有語法錯誤且將所有的功能編入相應(yīng)的代碼,并加入相應(yīng)的激勵;二是硬件驗證在電路箱上完成下載驗證。激勵的構(gòu)造:首先要對CLK時鐘及rstn置零信號進(jìn)行設(shè)計,CLK時鐘剛開始為0,以后每10個延時取反;rstn信號剛開始為0,把器件都清零,500個延時后取為1。然后對輸入乘數(shù)與被乘數(shù)進(jìn)行第一定

16、義,隨后500個延時后將START信號為0,于是進(jìn)行運算,再500個延時后,START信號變?yōu)?,及乘法運算結(jié)束;隨后在1000個延時后對乘數(shù)與被乘數(shù)進(jìn)行第二次定義,500個延時后將START信號為0,于是進(jìn)行運算,在500個延時后,START信號變?yōu)?,及乘法運算結(jié)束;在1000個延時后對乘數(shù)與被乘數(shù)進(jìn)行第三次定義,500個延時后將START信號為0,于是進(jìn)行運算,在500個延時后,START信號變?yōu)?,及乘法運算結(jié)束這樣循環(huán)就可以進(jìn)行多次乘法運算3。最后對激勵編譯結(jié)束。另一方面是硬件驗證在電路箱上完成下載驗證:將源代碼送入QuartusII軟件中運行,編譯正確后,對其進(jìn)行引腳的鎖定,將s0

17、-s6與實驗箱上的開關(guān)進(jìn)行鎖定,實現(xiàn)16位乘數(shù)與被乘數(shù)的輸入:s0為0輸入乘數(shù),為1輸入被乘數(shù),s1與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位:若為00輸入ain3:0(或bin3:0), 為01輸入ain7:4 (或bin7:4),為10輸入ain11:8(或bin11:8),為11輸入圖2設(shè)計流程圖ain15:12(或bin15:12);s3-s6在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)。s7控制輸出相乘結(jié)果是高位還是低位,s7為1輸出低位,s7為0輸出高位,并將輸出與LED燈連接,用來顯示成績結(jié)果,燈亮為0,燈滅為1。然后再編譯,編譯正確后運行;當(dāng)START信號為1時把乘數(shù)與被乘數(shù)

18、的相應(yīng)開關(guān)置到相應(yīng)的數(shù)值后,將START信號置為0進(jìn)行乘法運算,則LED燈就會兩次輸出相應(yīng)的結(jié)果。2模塊的設(shè)計設(shè)計共有4個功能模塊,分別是:數(shù)據(jù)輸入信號處理模塊,16位移位寄存器模塊,16位計數(shù)器模塊,輸出信號處理模塊。2.1 輸入信號處理模塊設(shè)計輸入接口如表2.1所示表2.1輸入信號接口名稱IO屬性 描述備注clkin 輸入時鐘,2M頻率rstnin 異步清零信號,低電平清零,高電平進(jìn)行運算低電平有效STARTin上升沿將32位鎖存器清零;其高電平與CLK上升沿將被乘數(shù)加載至16位移位寄存器中;低電平作為乘法運算的使能信號S0in為0輸入乘數(shù),為1輸入被乘數(shù)S1in與s2結(jié)合控制輸入乘數(shù)或被

19、乘數(shù)的哪位:若為00輸入ain3:0(或bin3:0),為01輸入ain7:4(或bin7:4),為10輸入ain11:8(或bin11:8),為11輸入ain15:12(或bin15:12)S2in同s1S3in在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)S4in同s3S5in同s3S6in同s3輸入信號處理模塊abc主要完成16位二進(jìn)制乘數(shù)與16位二進(jìn)制乘數(shù)的輸入,要用7個開關(guān)來完成其輸入:開關(guān)s0-s6s0為0輸入乘數(shù),為1輸入被乘數(shù);s1與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位; s6-s3在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)。例如s0為0(為1)時,在s1s2為0

20、0時s6,s5,s4,s3分別輸入ain3:0(或bin3:0); 在s1s2為01時s6,s5,s4,s3分別輸入ain7:4(或bin7:4);在s1s2為10時s6,s5,s4,s3分別輸入ain11:8(或bin11:8);在s1s2為11時s6,s5,s4,s3分別輸入ain15:12(或bin15:12)。輸入信號處理模塊abc的接口信號有clk,rstn,start,s0,s1,s2,s3,s4,s5,s6具體如上表2.1所示。2.2 16位移位寄存器模塊16位移位寄存器模塊用于被乘數(shù)向右移位,主要功能如下。在START信號低電平且CLK時鐘信號的上升沿被乘數(shù)將向右移一位輸出,左

21、端添零補齊。其波形如下圖3。圖3 16位移位寄存器波形圖2.3 16位計數(shù)器模塊計數(shù)器模塊用于計數(shù)從而控制16位移位寄存器的移位次數(shù)以及結(jié)束標(biāo)志的顯示。具體功能如下,其功能流程圖如圖4所示。(1)在START信號低電平的作用下且CLK時鐘信號處于上升沿時當(dāng)計數(shù)值小于15時進(jìn)行加1運算。(2)當(dāng)計數(shù)值小于15時每記一個數(shù)16位移位寄存器中的被乘數(shù)將會向右移一位輸出,從而來控制移位次數(shù)。(3)當(dāng)計數(shù)值等于16時則done將輸出低電平與其相連的LED燈就會被點亮,從而提醒乘法運算結(jié)束。Srstn?CLKKi=0STARTi=15i=0i=i+1i=0圖4 計數(shù)器的流程圖2.4 輸出信號處理模塊因為是

22、16位二進(jìn)制乘數(shù)與16位二進(jìn)制被乘數(shù)進(jìn)行乘法運算,所以輸出應(yīng)為32位。在電路板上用16個LED燈兩次顯示,一個開關(guān)控制:當(dāng)開關(guān)s7為0時輸出結(jié)果的低16位;當(dāng)開關(guān)s7為0時輸出結(jié)果的高16位。燈亮輸出為1,燈滅輸出為0 。當(dāng)乘法運算結(jié)束后,及當(dāng)計數(shù)器計數(shù)為16時輸出一個指示信號。其接口如下表5。表5輸出信號接口名稱IO屬性 描述備注S7out控制輸出相乘結(jié)果是高位還是低位,s7為1輸出低位,s7為0輸出高位doneout乘法運算完成指示信號,3 設(shè)計仿真與測試功能驗證分為兩部分,一部分是電路功能與時序的軟件仿真,采用Moldsim完成;另一部分是將配置文件下載后在開發(fā)板上對設(shè)計進(jìn)行測試,通過開

23、關(guān)、按鍵、LED燈等方式進(jìn)行。3.1仿真與測試的功能列表功能仿真與測試要針對每一條設(shè)計需要實現(xiàn)的功能進(jìn)行。設(shè)計中要求實現(xiàn)的、需要仿真與測試功能列表如下4:(1)置零功能當(dāng)rstn信號低有效時,電路應(yīng)處于置零狀態(tài):運行控制信號處于無效(低電平)、任何輸入沒有響應(yīng);當(dāng)置零信號變?yōu)楦唠娖綍r,電路正常工作。(2)時鐘信號當(dāng)有時鐘時電路正常工作;沒有時鐘信號時,除復(fù)位外所有的輸入沒有響應(yīng),所有的輸出沒有變化。(3)乘法運算控制功能信號STARTSTART信號的上升沿將32位寄存器清零;START信號高電平有兩個將被乘數(shù)ain加載至移位寄存器中;它的低電平則作為乘法使能信號。(4)s0-s6的鎖定s0為0

24、輸入乘數(shù),為1輸入被乘數(shù);s1與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位: s6-s3在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)。例如s0為0(為1)時,在s1s2為00時s6,s5,s4,s3分別輸入ain3:0(或bin3:0); 在s1s2為01時s6,s5,s4,s3分別輸入ain7:4(或bin7:4);在s1s2為10時s6,s5,s4,s3分別輸入ain11:8(或bin11:8);在s1s2為11時s6,s5,s4,s3分別輸入ain15:12(或bin15:12)。如若開關(guān)控制輸入乘數(shù)為89,16,15;控制被乘數(shù)輸入為33,16,20。(5)乘積輸出控制信號s7則s7控

25、制LED燈兩次輸出結(jié)果分別為2937,256,3003.2 仿真平臺構(gòu)建和仿真結(jié)果3.2.1 頂層仿真平臺與激勵START與CLK輸出信號接入16位移位寄存器的LOAD與CLK輸入接口,當(dāng)START信號為0時將計數(shù)器清零,其高電平時與CLK時鐘上升沿結(jié)合來控制計數(shù)。16位移位寄存器的輸出值作為其輸出信號作為ANDARITH的一信號輸入,當(dāng)其為0時,則ANDARITH把0送到加法器中;當(dāng)其為1時,則ANDARITH把被乘數(shù)送到加法器中。計數(shù)器的計數(shù)值作為32位鎖存器的一個控制信號,當(dāng)計數(shù)值小于15時,鎖存器將其值的高16位送到加法器中;當(dāng)計數(shù)值等于15時將鎖存的結(jié)果輸出。加法器把ANDARITH

26、送來的值與32位鎖存器送來的值進(jìn)行相加;當(dāng)計數(shù)器值為16時輸出乘法運算結(jié)束指示信號。輸入產(chǎn)生的方法:s0先置為0,對乘數(shù)進(jìn)行輸入,s1s2為00,輸入ain3:0;s1s2為01,輸入ain7:4; s1s2為10,輸入ain11:8; s1s2為11,輸入ain15:12,s6,s5,s4,s3在上述情況下依次輸入1111,0000,0000,0000. 再將s0置為1,對被乘數(shù)進(jìn)行輸入,s1s2為00,輸入bin3:0;s1s2為01,輸入bin7:4; s1s2為10,輸入bin11:8; s1s2為11,輸入bin15:12,s6,s5,s4,s3在上述情況下依次輸入0100,1000

27、,0000,0000.然后循環(huán)可輸入多組數(shù)據(jù)。3.2.2 電路功能仿真結(jié)果圖5輸出為2937的波形圖在仿真時輸入了3組16位二進(jìn)制乘數(shù)與被乘數(shù),輸出應(yīng)為32位,圖5 為乘數(shù)輸入為89,被乘數(shù)輸入為33時,輸出成績結(jié)果為2937的波形,其為輸出yout每位值的波形;圖6為乘數(shù)輸入為16與被乘數(shù)輸入為16,輸出成績結(jié)果為256時的波形,其為輸出yout每位值的波形;圖7為乘數(shù)輸入為15與被乘數(shù)輸入為20,輸出成績結(jié)果為300時的波形,其為輸出yout每位值的波形;Clk為時鐘信號每10個延時取反,rstn信號剛開始為0,把器件都清零,500個延時后取為1。START信號為高電平時運算,ain為乘數(shù)

28、輸入,bin為被乘數(shù)的輸入,yout為乘法結(jié)果的輸出,done在運算結(jié)束時輸出高電平,在運算時輸出低電平。如上圖輸入為三組數(shù)據(jù),則在每經(jīng)過1000個延時后輸出一個乘法結(jié)果。結(jié)果顯示為十進(jìn)制輸入,十進(jìn)制輸出。圖6輸出為256的波形圖3.2.3 電路后仿真結(jié)果圖8為三組乘數(shù)與被乘數(shù)輸出的仿真波形,仿真開始時CLK時鐘剛開始為0,以后每10個延時取反;rstn信號剛開始為0,把器件都清零,500個延時后取為1。然后對輸入乘數(shù)與被乘數(shù)進(jìn)行第一定義,隨后500個延時后將START信號為0,于是進(jìn)行運算,再500個延時后,START信號變?yōu)?,及乘法運算結(jié)束;隨后在1000個延時后對乘數(shù)與被乘數(shù)進(jìn)行第二次

29、定義,500個延時后將START信號為0,于是進(jìn)行運算,在500個延時后,START信號變?yōu)?,及乘法運算結(jié)束;在1000個延時后對乘數(shù)與被乘數(shù)進(jìn)行第三次定義,500個延時后將圖7輸出為300的波形圖START信號為0,于是進(jìn)行運算,在500個延時后,START信號變?yōu)?,及乘法運算結(jié)束這樣循環(huán)就可以進(jìn)行多次乘法運算。最后對激勵編譯結(jié)束。圖8 3組輸入仿真波形3.3 測試環(huán)境的搭建與測試結(jié)果3.3.1 測試環(huán)境模擬此次設(shè)計要輸入16位二進(jìn)制的乘數(shù)和16位二進(jìn)制的被乘數(shù),在乘數(shù)與被乘數(shù)相乘以后輸出一個32位的成績結(jié)果??梢杂?個開關(guān)來完成16位的乘數(shù)與被乘數(shù)的輸入,設(shè)定開關(guān)s0s6,s0控制乘數(shù)

30、還是被乘數(shù)的輸入,s0為0輸入乘數(shù),為1輸入被乘數(shù);s1與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位:若為00時s6s3輸入ain3:0(或bin3:0),為01時s6s3輸入ain7:4(或bin7:4),為10時s6s3輸入ain11:8(或bin11:8),為11時s6s3輸入ain15:12(或bin15:12);s6-s3在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)。輸出通過s7來控制,是高位輸出,還是低位輸出,并將其與LED燈連接,用來顯示輸出結(jié)果。當(dāng)s7為0時,LED燈輸出結(jié)果的低16位;當(dāng)s7為1時,LED燈輸出結(jié)果的低16位。當(dāng)乘法運算結(jié)束后,輸出指示信號。3.3.2 電路測

31、試結(jié)果輸入信號的輸入:(1)當(dāng)s0為0時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入1100,1010,0000,0000,把s0置為1時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入1000,0100,0000,0000;(2)當(dāng)s0為0時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入0000,1000,0000,0000,把s0置為1時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入0000,

32、1000,0000,0000;(3)當(dāng)s0為0時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入1111,0000,0000,0000,把s0置為1時在s1s2為00,s1s2為01,s1s2為10,s1s2為11,s6,s5,s4,s3依次輸入0100,1000,0000,0000;輸出信號的輸出:(1)s7為0時輸出11001,s7為1時輸出00000;(2)s7為0時輸出00000,s7為1時輸出00000;(3)s7為0時輸出01100,s7為1時輸出00000。4 電路約束與綜合實現(xiàn) FPGA/CPLD設(shè)計中的約束主要可以分為兩個方面,

33、一是時序約束,另一個是管腳約束,而一般不考慮面積約束、設(shè)計規(guī)則約束和工作環(huán)境約束。綜合工具直接采用ISE的XST進(jìn)行。4.1 時序約束時序約束主要分為輸入/輸出延時約束、時鐘約束以及異步時鐘數(shù)據(jù)間的約束等內(nèi)容。本設(shè)計中由于是同步設(shè)計,而且沒有純組合邏輯的輸入與輸出,時鐘約束變得簡單。設(shè)計中僅需要對輸入延時、輸出延時、觸發(fā)器間的延時進(jìn)行約束即可。根據(jù)實際的工作環(huán)境,設(shè)計電路工作時鐘設(shè)定為20ns就夠用了,實際上,這樣的時鐘約束相對于Virtex II的器件和XST默認(rèn)的工作頻率而言,是沒有必要添加的。但是實現(xiàn)中為了設(shè)計的完整性,添加了時鐘約束,與輸入約束。其時鐘約束,set input dela

34、y, set output delay,creat clk,以及時序約束語句分別如下圖圖時序約束,圖12clk的約束,圖13 set input delay,圖14 create clock,圖15時序語句。圖時序約束4.2 引腳鎖定約束由于開發(fā)板上的電源、時鐘、復(fù)位以及其它功能鍵等的連接已經(jīng)固定5,管腳約束所要完成的只要鎖定即可,要鎖定開關(guān)s0到s7,16個LED燈,具體管腳鎖定如圖16所示。 圖12clk的約束圖13set input delay圖14 create clock圖15時序語句4.3 電路綜合報告在電路板上用7個開關(guān)實現(xiàn)16位二進(jìn)制乘數(shù)與16位二進(jìn)制被乘數(shù)的輸入, s0為0輸

35、入乘數(shù),為1輸入被乘數(shù);s1與s2結(jié)合控制輸入乘數(shù)或被乘數(shù)的哪位:若為00時s6s3輸入ain3:0(或bin3:0),為01時s6s3輸入ain7:4(或bin7:4),為10時s6s3輸入ain11:8(或bin11:8),為11時s6s3輸入ain15:12(或bin15:12);s6-s3在s1,s2結(jié)合的情況下,輸入乘數(shù)與被乘數(shù)的相應(yīng)位數(shù)。用16個LED燈兩次輸出32位運算結(jié)果。輸出通過s7來控制,是高位輸出,還是低位輸出,并將其與LED燈連接,用來顯示輸出結(jié)果。LED燈亮則相應(yīng)位的值為1,LED燈滅則相應(yīng)位的值為0。圖16管腳鎖定圖4.4 設(shè)計實現(xiàn)與下載將程序加載到QuartusI

36、I中,編譯正確后將相應(yīng)的管腳鎖定,再編譯一次,正確后,把電路箱與計算機相連,接通電源,在電路板上用7個開關(guān)實現(xiàn)16位二進(jìn)制乘數(shù)與16位二進(jìn)制被乘數(shù)的輸入,用16個LED燈兩次輸出32位運算結(jié)果。則16個LED燈會通過亮滅兩次來實現(xiàn)32位運算結(jié)果的輸出,當(dāng)s7為0時輸出結(jié)果的低16位,當(dāng)s7為1時輸出結(jié)果的高16位。 結(jié) 論這次課程設(shè)計應(yīng)該是上大學(xué)以來做的所有課設(shè)里學(xué)到東西最多的一次。雖然過程有點小糾結(jié),但還是學(xué)到了很多有關(guān)EDA的知識,心里還是非常高興。這次課設(shè)與期末考試距離很近,這樣在做課設(shè)的過程中學(xué)到的知識也對期末復(fù)習(xí)有很大的幫助。在本次課程設(shè)計的過程中,在前幾次課里的電路圖的設(shè)計,及代碼

37、的描述的方面進(jìn)行的比較順利。再查閱資料后,通過比較還是移位相加算乘法最容易理解,電路連接雖然有點繁瑣,但是代碼描述比較清楚。在課設(shè)過程中,由于沒有對電路實驗箱深入了解,以導(dǎo)致在最后下載驗證時出了問題。在實驗開始,老師推薦我們用鍵盤輸入來實現(xiàn)16位乘數(shù),被乘數(shù)的輸入,用數(shù)碼管來顯示最后32結(jié)果的輸出。但是通過實驗以及代碼的修改,對用鍵盤輸入乘數(shù),被乘數(shù),乘號以及等于號的定義,對各段數(shù)碼管各個管顯示的約束,沒有辦法實現(xiàn)。由于在課上對鍵盤輸入及數(shù)碼管的定義 花費了大量的時間以至于距離最后驗收沒有時間再進(jìn)行修改。在通過詢問老師后,決定利用開關(guān)來完成乘數(shù)與被乘數(shù)的輸入,用LED顯示燈來實現(xiàn)最后結(jié)果的實現(xiàn)

38、。但是仍沒有在指定的時間內(nèi)完成最后的驗證。對此心里有點慚愧。通過此次課設(shè)學(xué)到了很多東西,對代碼的編寫的技巧有了更深刻的認(rèn)識,編寫代碼更加熟練;學(xué)會了電路的設(shè)計,以前設(shè)計電路沒有思路,在此課設(shè)過程中對電路的設(shè)計以及各個電路器件有了更深的認(rèn)識,對其更能有了更深的了解;以前不會寫激勵,在課設(shè)的過程中學(xué)會了激勵的編寫,以前做作業(yè)的時候?qū)Υa的仿真也不是很熟練,通過這次課設(shè)對代碼的仿真更加熟練由于沒有對電路的下載驗證深刻理解,以及對Quaturs軟件功能的完全的認(rèn)識,導(dǎo)致沒有在規(guī)定的時間內(nèi)完成最后的驗收。以后會吸取教訓(xùn)在課設(shè)前做好充足的準(zhǔn)備,做好課設(shè)。在這次課設(shè)過程中,同學(xué)們互相幫助,共同進(jìn)步,老師也給

39、予了很大的幫助和知道,使我們都有了不小的收獲。以后會更加努力,爭取做的更好。參考文獻(xiàn) 1 Mivheal .D.cihette,Advanced Digital With the Verilog HDL M. 電子工業(yè)出版社 2004.72高福祥 接口技術(shù) 東北大學(xué)出版社 1999.123 杜慧敏 基于Verilog的FPGA設(shè)計基礎(chǔ) 西安電子科技大學(xué)出版社,2006,24夏宇聞 Verilog HDL數(shù)字系統(tǒng)設(shè)計教程 北京航空航天大學(xué)出版社,2003.75 G. David Ripley.DVI-A Digital Multimedia Technology. Communication o

40、f the 附錄A 設(shè)計源代碼module mux_16(clk,rstn,start,s0,s1,s2,s3,s4,s5,s6,s7,lout,done);input clk,rstn,start;input s0,s1,s2,s3,s4,s5,s6,s7;output 15:0lout;reg31:0yout;reg15:0lout;output done;reg15:0ain,bin;reg15:0areg,breg;reg31:0yreg;reg done_r;reg4:0i;wire s0,s1,s2,s3,s4,s5,s6; always(posedge clk or negedge rstn)if(!rstn)i=5d0;else if (start & i5d17)i=i+1b1;else if(!start) i=5d0;always(posedge clk or negedge rstn)if(!rstn)done_r=1d0;else if(i=5d16)done_r=1b1;else if(i=5d0)done_r=1b0;assign done=done_r;always(posedge clk ) if(!s0)begin if (s1=

溫馨提示

  • 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

提交評論