有符號5位整數(shù)乘法器設(shè)計(jì)與制作_第1頁
有符號5位整數(shù)乘法器設(shè)計(jì)與制作_第2頁
有符號5位整數(shù)乘法器設(shè)計(jì)與制作_第3頁
有符號5位整數(shù)乘法器設(shè)計(jì)與制作_第4頁
有符號5位整數(shù)乘法器設(shè)計(jì)與制作_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、有符號5位整數(shù)乘法器設(shè)計(jì)與制作論文 指導(dǎo)老師 專業(yè):姓名: 學(xué)號:目錄摘要 3一設(shè)計(jì)方案與比較 3二系統(tǒng)整體設(shè)計(jì) 5(一)整體設(shè)計(jì) 5(二)模塊設(shè)計(jì) 61. 輸入模塊 62. 乘法模塊 73. 選擇模塊 74. 符號顯示模塊 95. 進(jìn)制轉(zhuǎn)換模塊 106. 顯示模塊 11三設(shè)計(jì)中遇到的問題及解決方法 14四設(shè)計(jì)心得及建議 14五參考文獻(xiàn) 14摘要本設(shè)計(jì)以altera公司開發(fā)的max+plus2軟件為平臺,以vhdl語言混合部分verilog hdl語言為開發(fā)語言,利用max+plus2軟件進(jìn)行可編程邏輯器件設(shè)計(jì),運(yùn)用移位相加的原理,完成有符號5位整數(shù)乘法器的邏輯仿真功能,并下載到實(shí)驗(yàn)箱進(jìn)行調(diào)試

2、和驗(yàn)證所設(shè)計(jì)的乘法器的功能。關(guān)鍵詞:有符號5位整數(shù)乘法器 移位相加 max+plus2 vhdl語言 一、方案設(shè)計(jì)與比較1. 開發(fā)語言的選擇 方案一:采用vhdl語言。vhdl語言具有較強(qiáng)的行為描述能力,對設(shè)計(jì)的描述具有相對獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。但vhdl在描述門電路的能力上卻不如veriologhdl語言。 方案二:采用veriloghdl語言 veriloghdl語言是一種廣泛的硬件描述語言,可用于從算法,門級到開關(guān)的多種抽象層次的數(shù)字系統(tǒng)設(shè)計(jì)。veriloghdl語言在高級描述方面不如vhdl。由于一直準(zhǔn)備的是vhdl語

3、言,所以主要選擇vhdl,但在設(shè)計(jì)數(shù)據(jù)轉(zhuǎn)換模塊的設(shè)計(jì)時(shí),選擇了veriloghdl語言,節(jié)省了空間。2. 乘法器實(shí)現(xiàn)方法的設(shè)計(jì)移位相加法 兩個(gè)二進(jìn)制數(shù)相乘如十進(jìn)制數(shù)相乘一樣。如圖1為四位數(shù)做徒手乘法運(yùn)算圖。首先由右至左一次檢查乘數(shù)位是否為1,如為1,將被乘數(shù)做適當(dāng)?shù)囊莆恢吝m當(dāng)?shù)奈恢?;如?,將0放置適當(dāng)位置。其次將所有移位被乘數(shù)求和就為所求子積。圖2為乘法器采用相似方法進(jìn)行計(jì)算時(shí)的情形,利用累加器來完成,即每一步中一個(gè)4位加法器可用來計(jì)算其新的部分乘積。 圖1 徒手乘法 圖2 乘法器三、系統(tǒng)整體設(shè)計(jì)基本要求:設(shè)計(jì)一個(gè)兩個(gè)5位數(shù)相乘的乘法器。用發(fā)光二極管顯示輸入數(shù)值,用7段顯示器顯示十進(jìn)制結(jié)果。

4、乘數(shù)和被乘數(shù)分兩次輸入。擴(kuò)展部分:在輸入乘數(shù)和被乘數(shù)時(shí),要求顯示十進(jìn)制輸入數(shù)據(jù)。輸入顯示和計(jì)算結(jié)果顯示,采用分時(shí)顯示方式進(jìn)行,可參見計(jì)算器的顯示功能。(一)整體設(shè)計(jì)首先通過實(shí)驗(yàn)箱輸入5為二進(jìn)制數(shù),首位為符號位,通過輸入端使符號位與數(shù)值位分開,將數(shù)值輸入乘法器,并在脈沖上升沿進(jìn)行操作控制,設(shè)乘數(shù)為a(不包括符號位)由右至左依次檢查數(shù)位是否為1,如為1,將被乘數(shù)輸入乘法模塊進(jìn)行選擇輸出,并將乘數(shù)低位舍去;如為0,輸入choose模塊為0占位,每次輸入乘法塊的數(shù)結(jié)果都向左移一位。其次將所有移位數(shù)求和就為所求積,利用累加器來完成,通過二進(jìn)制轉(zhuǎn)化十進(jìn)制進(jìn)行輸出,輸入到顯示數(shù)碼管顯示。符號位利用一個(gè)或非門

5、實(shí)現(xiàn)兩數(shù)相乘時(shí)符號的變化并用數(shù)碼管顯示在輸出的高位。設(shè)計(jì)的思路框圖如下:整體模塊如下:仿真整體波形如下:(二)模塊設(shè)計(jì)1. 輸入模塊輸入模塊選擇了有八位d觸發(fā)器構(gòu)成的8dff,輸入模塊圖形及功能表如下: 2. 乘法模塊接收由輸入模塊傳進(jìn)來的數(shù)據(jù),定義5個(gè)變量r,t,h,s,q分別從低到高判斷乘數(shù)b每位是否為零,若不為零,將被乘數(shù)a賦值給變量r,t,h,s,若為零則賦值0,并且每位的首位遞增一位0,最后實(shí)現(xiàn)累加,由變量r輸出。乘法模塊圖形如下:仿真波形如下:乘法模塊源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_

6、unsigned.all;entity chengfa is port(a: in std_logic_vector(4 downto 1); b: in std_logic_vector(4 downto 1); q: out std_logic_vector(8 downto 1);end chengfa;architecture a of chengfa issignal r:std_logic_vector (4 downto 1);signal t:std_logic_vector (5 downto 1);signal h:std_logic_vector (6 downto 1)

7、;signal s:std_logic_vector (7 downto 1);beginr<=a when b(1)='1' else "0000"t<=a&'0' when b(2)='1' else "00000"h<=a&"00" when b(3)='1' else "000000"s<=a&"000" when b(4)='1' else "000

8、0000"q<=r+t+h+s;end a;3. 選擇模塊設(shè)計(jì)此模塊是用來對顯示數(shù)碼管上所顯示的數(shù)據(jù)進(jìn)行選擇顯示的,若當(dāng)前輸入端的端口控制變量s1和s2時(shí)顯示第一個(gè)數(shù)據(jù)前四位用0占位,若當(dāng)前輸入端的端口控制變量s1和s2為00時(shí)顯示第二個(gè)數(shù)據(jù)前四位用0占位,若當(dāng)前輸入端的端口控制變量s1和s2為01時(shí)顯示最終結(jié)果,qout為輸出端口。符號位用fin端口接收,fuhao端口輸出。選擇模塊圖形如下:仿真波形如下:選擇模塊源代碼如下:library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

9、entity chooser isport(loada,loadb,clk:in std_logic; rain:in std_logic_vector(4 downto 1); rbin:in std_logic_vector(4 downto 1); din:in std_logic_vector(8 downto 1); fa,fb,fin:in std_logic; qout:out std_logic_vector(8 downto 1); fu:out std_logic);end chooser;architecture art of chooser isbeginprocess

10、(loada,loadb,clk)beginif clk'event and clk='1' then if loada='1' and loadb='0' then qout<="0000"&rain;fu<=fa; elsif loada='0' and loadb='0' then qout<="0000"&rbin;fu<=fb; else qout<=din;fu<=fin; end if;end if;e

11、nd process;end art;4. 符號顯示模塊此模塊是對輸出符號進(jìn)行輸出判斷的,符號位對應(yīng)一數(shù)碼顯示管直接作為輸出端口輸出,當(dāng)其符號位為正時(shí)數(shù)碼顯示管全滅“11111111”,當(dāng)其符號位為負(fù)時(shí)數(shù)碼顯示管g亮“10111111”。為使小數(shù)點(diǎn)去除,使最高位dot位也為1。符號模塊圖形如下:仿真波形如下:符號模塊源代碼如下:library ieee; use ieee.std_logic_1164.all; entity fu is port(f:in std_logic; q4:out std_logic_vector(8 downto 1);end fu; architecture a

12、rt of fu is begin-process(f)-beginq4<="11111111" when f='0' else "10111111"-if(f='0') then q4<="11111111"-else q4<="10111111"-end if;-end process;end art;5. 進(jìn)制轉(zhuǎn)換進(jìn)制轉(zhuǎn)換模塊是用來對結(jié)果進(jìn)行二進(jìn)制到十進(jìn)制轉(zhuǎn)換的,便于在顯示數(shù)碼管上顯示。定義3個(gè)變量a1,a2,a3,并賦初值為0,從高到低判斷輸入的數(shù)據(jù)ldb的

13、個(gè)個(gè)位,首先是百位,若大于一百,則a3加1,ldb減去100;然后是十位,若大于十,則a2加1,ldb減去10;最后是個(gè)位,直接將ldb剩余值賦值給a1。依次將a1,a2,a3賦值給q1,q2,q3輸出。進(jìn)制轉(zhuǎn)換模塊圖形如下: 仿真波形如下:進(jìn)制轉(zhuǎn)換源代碼(veriloghdl語言)如下:module from2to10(db,clk,q1,q2,q3); input7:0 db;input clk;output 3:0 q1,q2,q3;reg 3:0 a1,a2,a3,q1,q2,q3;reg 8:0 ldb;reg 2:0 step;always(posedge clk)begincas

14、e(step) 0: begin ldb7:0<=db7:0; a1<=0; a2<=0; a3<=0; step<=1; end 1: begin if(ldb>=100) begin a3<=a3+1; ldb<=ldb-100; end else if(ldb>=10)&&(ldb<100) begin a2<=a2+1; ldb<=ldb-10; end else if(ldb>=1)&&(ldb<10) begin a1<=ldb; ldb<=0; end

15、else begin step<=2; end end2:beginq1<=a1;q2<=a2;q3<=a3;step<=0;enddefault:step<=0;endcaseendendmodule6. 顯示模塊此模塊是用來對最終結(jié)果對應(yīng)數(shù)碼顯示管進(jìn)行顯示操作的,其輸入端口若為0,1,2,3,4,5,6,7,8,9,對應(yīng)的輸出端q1,q2,q3"11000000" "11111001" "10100100" "10110000" "10011001" &q

16、uot;10010010" "10000010" "11011000" "10000000" "10010000" "11111111"并且此顯示管加入了去零功能,若百位為零且十位也為零,則不顯示十位和百位,若只有百位為零則只有百位不顯示,若都為零則只有個(gè)位顯示0。顯示模塊圖形如下:仿真波形如下:顯示模塊源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jixian

17、shi is port(q1,q2,q3:in std_logic_vector(4 downto 1); d1,d2,d3:out std_logic_vector(8 downto 1);end jixianshi; architecture art of jixianshi is beginprocess(q1,q2,q3)variable t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,tt:std_logic_vector(8 downto 1);begint0:="11000000"t1:="11111001"t2:="

18、10100100"t3:="10110000" t4:="10011001" t5:="10010010"t6:="10000010"t7:="11011000"t8:="10000000"t9:="10010000"tt:="11111111"case q1 is when"0000"=>d1<=t0; when"0001"=>d1<=t1; when"

19、;0010"=>d1<=t2; when"0011"=>d1<=t3; when"0100"=>d1<=t4; when"0101"=>d1<=t5; when"0110"=>d1<=t6; when"0111"=>d1<=t7; when"1000"=>d1<=t8; when"1001"=>d1<=t9; when others=>d1<

20、;=t0;end case;if (q3/="0000") thencase q2 is when"0000"=>d2<=t0; when"0001"=>d2<=t1; when"0010"=>d2<=t2; when"0011"=>d2<=t3; when"0100"=>d2<=t4; when"0101"=>d2<=t5; when"0110"=>d2&l

21、t;=t6; when"0111"=>d2<=t7; when"1000"=>d2<=t8; when"1001"=>d2<=t9; when others=>d2<=t0;end case;else case q2 is when"0000"=>d2<=tt; when"0001"=>d2<=t1; when"0010"=>d2<=t2; when"0011"=>d2<=t3; when"0100"=>d2<=t4; when"0101"=>d2<=t5; when"0110"=>d2<=t6; when"0111"=>d2<=t7; when"1000"=>d2<=t8; when"1001"=>d2<=t9; when others=>d2<=t0;

溫馨提示

  • 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

提交評論