版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
EDA課設(shè):選題名稱:八位二進制乘法電路(一)設(shè)計要求:分拍輸入兩個八位二進制數(shù)字,并四個數(shù)碼管顯示當(dāng)前輸入數(shù)字的十進制形式,通過使能端的控制,分拍輸出這兩位二進制數(shù)字的乘積并通過四個數(shù)碼管顯示成十進制。(二)基本算法:8位二進制乘法采用移位相加的方法。即用乘數(shù)的各位數(shù)碼,從低位開始依次與被乘數(shù)相乘,每相乘一次得到的積稱為部分積,將第一次(由乘數(shù)最低位與被乘數(shù)相乘)得到的部分積右移一位并與第二次得到的部分積相加,將加得的和右移一位再與第三次得到的部分積相加,再將相加的結(jié)果右移一位與第四次得到的部分積相加。直到所有的部分積都被加過一次。按照這種算法,可以得到下圖所示之框圖和簡單流程圖。圖中Y寄存器存放被乘數(shù)M,B寄存器存放乘數(shù)N,A累加器存放部分積。A和Y中的數(shù)據(jù)在加法器中相加后送入A中,而A和B相級聯(lián)又構(gòu)成了一個16bit的移位寄存器,當(dāng)它工作于移位模式時,可以實現(xiàn)數(shù)據(jù)的右移。由于乘數(shù)的每一位不是0就是1,對應(yīng)的部分積不是0就是被乘數(shù)本身,所以實際作部分積相加這一步時,只要根據(jù)乘數(shù)的對應(yīng)位判斷:如該位為1,則將累加器中的數(shù)據(jù)加上被乘數(shù)再移位;如該位為0時,就不加被乘數(shù)而直接移位。運算時首先將累加器A清零,并將被乘數(shù)M和乘數(shù)N分別存入寄存器Y和B,然后依據(jù)寄存器B中最右一位BO(數(shù)據(jù)NO)確定第一個部分積。將此部分積送入A累加器以后,將A連同寄存器B右移一位,部分積的最低位被移進寄存器B的最左位,乘數(shù)的最低位NO被移出寄存器B,而乘數(shù)的次低位N1被移至寄存器B的BO位。第二次仍然依據(jù)BO位的數(shù)據(jù)(N1)來確定第二個部分積,將部分積與累加器中的數(shù)據(jù)相加后右移一位,N1又被移出寄存器,數(shù)據(jù)N2被移到B0位置…?這樣,經(jīng)過8次部分積相加位的操作,完成1次乘法運算,乘數(shù)N恰好被移出寄存器B,寄存器B中保存的就是運算積的低8位數(shù)據(jù)。移位相加的次數(shù)應(yīng)用一個計數(shù)器來控制,每移位一次,計數(shù)器計一個數(shù)。當(dāng)計數(shù)器計得8個數(shù)時,發(fā)出一個信號,使電路停止操作,并輸出運算結(jié)果(流程圖是按減法計數(shù)器設(shè)計的,也可使用加法計數(shù)器)。
(三)設(shè)計方案:1、電路結(jié)構(gòu)。主要構(gòu)成如下使能控制端七乘數(shù)寄存器屮 被乘數(shù)寄存使能控制端七乘數(shù)寄存器屮 被乘數(shù)寄存數(shù)字輸入卩2、分模塊設(shè)計:A、輸入模塊:通過八個開關(guān)控制八位二進制數(shù)字輸入。使能控制輸入模塊:ifen='0'anden1='0'thenout2(15downto8)<=i1;elseifen='1'anden1='0'thenout2(7downto0)<=i1;elsenull;endif;endif;B、使能控制端模塊:通過兩個開關(guān)en、en1構(gòu)成使能控制模塊enen1功能00輸入乘數(shù)10輸入被乘數(shù)11計算并顯示結(jié)果第五位數(shù)01計算并顯示結(jié)果后四位數(shù)C、 移位加法器模塊:根據(jù)把位二進制乘法器原理,設(shè)計移位加法器VHDL程序:foriin7downto0loopif(sum2(i)='0')thenyou:="00000000";elseyou:="11111111";endif;caseiiswhen0=>sum:="00000000"&(sum1andyou)+sum;when1=>sum:="0000000"&(sum1andyou)&'0'+sum;when2=>sum:="000000"&(sum1andyou)&"00"+sum;when3=>sum:="00000"&(sum1andyou)&"000"+sum;when4=>sum:="0000"&(sum1andyou)&"0000"+sum;when5=>sum:="000"&(sum1andyou)&"00000"+sum;when6=>sum:="00"&(sum1andyou)&"000000"+sum;when7=>sum:='0'&(sum1andyou)&"0000000";whenothers=>NULL;endcase;endloop;D、 數(shù)字顯示模塊:將輸入和輸出的二進制數(shù)字轉(zhuǎn)換為十進制數(shù)并通過數(shù)碼管顯示,七段數(shù)碼管數(shù)字代碼為:十進制數(shù)七段數(shù)碼管代碼十進制數(shù)七段數(shù)碼管代碼01000000500100101111100160000011201001007111100030110000800000004001100190011000ma:=("1000000","1111001","0100100","0110000","0011001","0010010","0000011","1111000","0000000","0011000");ifen='1'anden1='1'thena9:=conv_integer(out3);elseifen='0'anden1='1'thena9:=conv_integer(out3)/10000;elsea9:=conv_integer(i1);endif;endif;foriin3downto0loopam(i):=a9rem10;a9:=a9/10;forjin9downto0loopifam(i)=jthencaseiiswhen3=>ott1<=ma(j);when2=>ott2<=ma(j);when1=>ott3<=ma(j);when0=>ott4<=ma(j);whenothers=>null;endcase;endif;endloop;endloop;3、整體程序VHDL程序代碼:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityaaisport(i1:instd_logic_vector(7downto0);en:instd_logic;en1:instd_logic;ott1:outstd_logic_vector(6downto0);ott2:outstd_logic_vector(6downto0);ott3:outstd_logic_vector(6downto0);ott4:outstd_logic_vector(6downto0);out4:outstd_logic_vector(7downto0));endaa;architecturebehaviorofaaistypenumbisarray(0to3)ofinteger;typenumpisarray(0to9)ofstd_logic_vector(6downto0);signalout2:std_logic_vector(15downto0);signalout3:std_logic_vector(15downto0);beginprocess(i1,en1)variableam:numb;variablema:nump;variablei:integer;variablej:integer;variablea9:integer;variableot1:std_logic_vector(6downto0);variableot2:std_logic_vector(6downto0);variableot3:std_logic_vector(6downto0);variableot4:std_logic_vector(6downto0);beginma:=("1000000","1111001","0100100","0110000","0011001","0010010","0000011","1111000","0000000","0011000");ifen='1'anden1='1'thena9:=conv_integer(out3);elseifen='0'anden1='1'thena9:=conv_integer(out3)/10000;elsea9:=conv_integer(i1);endif;endif;foriin3downto0loopam(i):=a9rem10;a9:=a9/10;forjin9downto0loopifam(i)=jthencaseiiswhen3=>ott1<=ma(j);when2=>ott2<=ma(j);when1=>ott3<=ma(j);when0=>ott4<=ma(j);whenothers=>null;endcase;endif;endloop;endloop;endprocess;process(en,en1)beginifen='0'anden1='0'thenout2(15downto8)<=i1;elseifen='1'anden1='0'thenout2(7downto0)<=i1;elsenull;endif;endif;endprocess;process(out2)variablesum:std_logic_vector(15downto0);variableyou:std_logic_vector(7downto0);variablei:integer;variablesum1:std_logic_vector(7downto0);variablesum2:std_logic_vector(7downto0);beginsum1:=out2(15downto8);sum2:=out2(7downto0);foriin7downto0loopif(sum2(i)='0')thenyou:="00000000";elseyou:="11111111";endif;caseiiswhen0=>sum:="00000000"&(sum1andyou)+sum;when1=>sum:="0000000"&(sum1andyou)&'0'+sum;when2=>sum:="000000"&(sum1andyou)&"00"+sum;when3=>sum:="00000"&(sum1andyou)&"000"+sum;when4=>sum:="0000"&(sum1andyou)&"0000"+sum;when5=>sum:="000"&(sum1andyou)&"00000"+sum;when6=>sum:="00"&(sum1andyou)&"000000"+sum;when7=>sum:='0'&(sum1andyou)&"0000000";whenothers=>NULL;endcase;out3<=sum;endloop;endprocess;endbehavior;仿真結(jié)果:注:En、en1為使能端;ott4、ott3、ott
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 原油進口合同范本
- 柜臺營業(yè)員勞動合同范本
- 幼兒園大班心理健康《讓快樂常在》課件
- 2024年無人超市行業(yè)現(xiàn)狀分析:無人超市未來以30%的復(fù)合年增長率增長
- 2024年粒度分析儀行業(yè)分析:全球粒度分析儀市場增長率為7.3%
- 國有商業(yè)土地出讓合同范本
- 地鐵圍擋合同范本
- 低空飛行旅游觀光項目可行性研究報告
- 生態(tài)農(nóng)業(yè)產(chǎn)業(yè)鏈地龍糞工廠化育苗項目可行性研究報告
- 圍墻施工方案(新兩篇)
- 【參考】華為騰訊職位管理0506
- 五年級英語上冊Unit1Getupontime!教案陜旅版
- 風(fēng)機安裝工程質(zhì)量通病及預(yù)防措施
- 三角形鋼管懸挑斜撐腳手架計算書
- 文件和文件夾的基本操作教案
- 剪紙教學(xué)課件53489.ppt
- 旅游業(yè)與公共關(guān)系PPT課件
- 勞動法講解PPT-定稿..完整版
- 彩色的翅膀_《彩色的翅膀》課堂實錄
- 假如你愛我的正譜
- 銅芯聚氯乙烯絕緣聚氯乙烯護套控制電纜檢測報告可修改
評論
0/150
提交評論