




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、8位二進(jìn)制乘法電路 該乘法器是有由8位加法器構(gòu)成的以時(shí)序方式設(shè)計(jì)的8位乘法器,采用逐項(xiàng)移位相加的方法來(lái)實(shí)現(xiàn)相乘。用乘數(shù)的各位數(shù)碼,從低位開始依次與被乘數(shù)相乘,每相乘一次得到的積稱為部分積,將第一次(由乘數(shù)最低位與被乘數(shù)相乘)得到的部分積右移一位并與第二次得到的部分積相加,將加得的和右移一位再與第三次得到的部分積相加,再將相加的結(jié)果右移一位與第四次得到的部分積相加。直到所有的部分積都被加過一次。例如:被乘數(shù)(M7M6M5M4M3M2M1M0)和乘數(shù)(N7N6N5N4N3N2N1N0)分別為11010101和10010011,其計(jì)算過程如下: 下面分解8位乘法器的層次結(jié)構(gòu),分為以下4個(gè)模塊:右移寄
2、存器模塊:這是一個(gè)8位右移寄存器,可將乘法運(yùn)算中的被乘數(shù)加載于其中,同時(shí)進(jìn)行乘法運(yùn)算的移位操作。加法器模塊:這是一個(gè)8位加法器,進(jìn)行操作數(shù)的加法運(yùn)算。1位乘法器模塊:完成8位與1位的乘法運(yùn)算。鎖存器模塊:這是一個(gè)16位鎖存器,同時(shí)也是一個(gè)右移寄存器,在時(shí)鐘信號(hào)的控制下完成輸入數(shù)值的鎖存與移位。 按照上述算法,可以得到下圖所示之框圖和簡(jiǎn)單流程圖。圖中8位移位寄存器reg_8存放乘數(shù)a,從a的最低位開始,每次從reg_8中移出一位,送至1×8位乘法器multi_1中,同時(shí)將被乘數(shù)加至multi_1中,進(jìn)行乘法運(yùn)算,運(yùn)算的結(jié)果再送至8位加法器adder_8中,同時(shí)取出16位移位寄存器reg
3、_16的高8位與之進(jìn)行相加,相加后結(jié)果即部分積存入reg_16中,進(jìn)行移位后并保存。這樣經(jīng)過8次對(duì)乘數(shù)a的移位操作,所以的部分積已全加至reg_16中,此時(shí)鎖存器reg_16存放的值即所要求的積。(A)電路框圖 輸出結(jié)果16位移位寄存器reg_168位加法器adder_8時(shí)鐘、清零、移位控制信號(hào),控制移位、清零或鎖存被乘數(shù)b1×8位乘法器multi_18位移位寄存器reg_8 乘數(shù)a(B)簡(jiǎn)單流程圖開始開始信號(hào)到來(lái),置newstart為1寄存器reg_16置0時(shí)鐘上升沿到來(lái),寄存器reg_8置乘數(shù)a時(shí)鐘下降沿,置newstart為零reg_8移出1位后與被乘數(shù)放入multi_1中進(jìn)行
4、乘法運(yùn)算,結(jié)果送至adde_8reg_16取出高8位送adder_8中,與multi_1得到結(jié)果進(jìn)行加法運(yùn)算,結(jié)果送至reg_16右移后并進(jìn)行鎖存輸出每一步的運(yùn)算結(jié)果,即輸出reg_16的值,其中第八個(gè)值即為求得的積結(jié)束(1)8位移位寄存器reg_8的設(shè)計(jì)8位移位寄存器是在時(shí)鐘(r8_clk'event and r8_clk='1')信號(hào)作用下,當(dāng)r8_load='1'時(shí),將8位乘數(shù)加載進(jìn)入;而當(dāng)r8_load='0'時(shí),對(duì)數(shù)據(jù)進(jìn)行移位操作,同時(shí)定義一個(gè)信號(hào)reg8用來(lái)裝載新數(shù)據(jù)及移位后的操作數(shù),完成這些操作后,寄存器的最低位reg8(0
5、)傳送給r8_out輸出。r8_clkr8_load r8_outr8_in7.0元件實(shí)體原理圖如右圖:該模塊元件的程序如下:reg_8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity reg_8 is -實(shí)體描述port(r8_clk,r8_load:in std_logic; r8_in:in std_logic_vector(7 downto 0); r8_out:out std_logic);end reg_8;arch
6、itecture arc_reg_8 of reg_8 is -結(jié)構(gòu)體描述 signal reg8:std_logic_vector(7 downto 0); -定義信號(hào)變量begin process(r8_clk,r8_load) begin if r8_clk'event and r8_clk='1' then -時(shí)鐘上升沿到來(lái) if r8_load='1' then -鎖存新數(shù)據(jù) reg8<=r8_in; else reg8(6 downto 0)<=reg8(7 downto 1); -數(shù)據(jù)右移 end if; end if; end
7、 process; r8_out<=reg8(0); -輸出最低位end arc_reg_8;仿真波形圖如下:(2)8位加法器adder_8的設(shè)計(jì)I)該加法器由兩個(gè)四位二進(jìn)制加法器組成。其中設(shè)計(jì)四位二進(jìn)制加法器時(shí),為了避免加法運(yùn)算時(shí)產(chǎn)生溢出,故定義了三個(gè)信號(hào)量ss,aa,bb,將加數(shù)a4_a,a4_b分別與0連接后賦值給aa,bb,形成5位二進(jìn)制數(shù),然后aa,bb與進(jìn)位位a4_in相加賦值給ss,最后將ss的低四位賦值給和a4_s,同時(shí)將ss的最高位送給a4_out輸出。元件實(shí)體原理圖如右圖:a4_in a4_s3.0a4_a3.0 a4_b3.0 a4_out其程序如下:library
8、 ieee;use ieee.std_logic_1164.all;adder_4use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all; entity adder_4 is -實(shí)體描述 port(a4_in :in std_logic; a4_a,a4_b:in std_logic_vector(3 downto 0); a4_s:out std_logic_vector(3 downto 0); a4_out:out std_logic); end adder_4; architecture arc_adder_4 of a
9、dder_4 is -結(jié)構(gòu)體描述 signal ss:std_logic_vector(4 downto 0); -定義信號(hào)變量 signal aa,bb:std_logic_vector(4 downto 0); begin aa<='0'&a4_a; -為避免溢出,將0與a4_a連接 bb<='0'&a4_b; -將0與a4_b連接 ss<=aa+bb+a4_in; -執(zhí)行加法運(yùn)算 a4_s<=ss(3 downto 0); -輸出結(jié)果 a4_out<=ss(4); -進(jìn)位位 end arc_adder_4;II
10、)設(shè)計(jì)8位加法器時(shí),采用例化語(yǔ)句,定義信號(hào)量carry_out,將4位加法器U1的a4_out賦給carry_out,再將carry_out的值給4位加法器U2的進(jìn)位位a4_in,8位加法器的高四位和低四位分別來(lái)自四位加法器U1和U2。其連接電路圖如下a8_in a8_s7.0a8_a7.0 a8_b7.0 a8_out元件實(shí)體原理圖如右圖:其程序如下:adder_8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity adder_
11、8 is -實(shí)體描述port(a8_in :in std_logic; a8_a,a8_b:in std_logic_vector(7 downto 0); a8_s:out std_logic_vector(7 downto 0); a8_out:out std_logic);end adder_8;architecture arc_adder_8 of adder_8 is -結(jié)構(gòu)體描述 component adder_4 -元件例化,調(diào)用4位加法器聲明 port(a4_in :in std_logic; a4_a,a4_b:in std_logic_vector(3 downto 0);
12、 a4_s:out std_logic_vector(3 downto 0); a4_out:out std_logic); end component; signal carry_out:std_logic; -定義信號(hào)變量begin u1:adder_4 -例化語(yǔ)句 port map(a8_in,a8_a(3 downto 0),a8_b(3 downto 0),a8_s(3 downto 0),carry_out); u2:adder_4 port map(carry_out,a8_a(7 downto 4),a8_b(7 downto 4),a8_s(7 downto 4),a8_ou
13、t);end arc_adder_8; 仿真結(jié)果如圖所示:(3)1位乘法器multi_1的設(shè)計(jì) 利用循環(huán)語(yǔ)句FOR-LOOP完成8位二進(jìn)制數(shù)與1位二進(jìn)制的乘法運(yùn)算,將8位二進(jìn)制數(shù)m1_y從最低位到最高位與1位二進(jìn)制m1_x分別做與運(yùn)算,最后將結(jié)果依次送到m1_out輸出。即當(dāng)m1_x為1時(shí),m1_out輸出為m1_y;當(dāng)m1_x為0時(shí),m1_out輸出全為零。m1_x m1_out7.0 m1_y7.0 元件實(shí)體原理圖如右圖:其程序如下:multi_1library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all
14、;use ieee.std_logic_arith.all;entity multi_1 is -實(shí)體描述port(m1_x:in std_logic; m1_y:in std_logic_vector(7 downto 0); m1_out:out std_logic_vector(7 downto 0);end multi_1;architecture arc_multi_1 of multi_1 is -結(jié)構(gòu)體描述begin process(m1_x,m1_y) begin for i in 0 to 7 loop -循環(huán)完成8位與1位的乘法運(yùn)算 m1_out(i)<=m1_y(i
15、)and m1_x; end loop; end process;end arc_multi_1;其仿真電路圖如下:(4)16位移位寄存器reg_16的設(shè)計(jì) 當(dāng)清零信號(hào)(r16_clr='1')到來(lái)時(shí),定義信號(hào)變量reg16清零;否則在時(shí)鐘信號(hào)r16_clk上升沿到來(lái)時(shí),將reg16的低8位進(jìn)行移位操作,同時(shí)將8位的數(shù)據(jù)輸入r16_in鎖存到reg16的高8位,最后賦值給r16_out輸出。r16_clk r16_clr r16_out15.0 r16_in8.0 元件實(shí)體原理圖如右圖:其程序如下:reg_16use ieee.std_logic_1164.all;use ie
16、ee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity reg_16 is -實(shí)體描述port(r16_clk,r16_clr:in std_logic; r16_in:in std_logic_vector(8 downto 0); r16_out:out std_logic_vector(15 downto 0);end reg_16;architecture arc_reg_16 of reg_16 is -結(jié)構(gòu)體描述 signal reg16:std_logic_vector(15 downto 0); -定義信號(hào)變量
17、 begin process(r16_clk,r16_clr) begin if r16_clr='1' then -clr為高電平,清零 reg16<="0000000000000000" elsif r16_clk'event and r16_clk='1' then -時(shí)鐘上升沿到來(lái) reg16(6 downto 0)<=reg16(7 downto 1); -右移,并鎖存低八位 reg16(15 downto 7)<=r16_in; -將輸入鎖存到高8位 end if; end process; r16_ou
18、t<=reg16; -數(shù)據(jù)輸出end arc_reg_16;仿真電路圖如圖所示:(5)8位乘法器的頂層設(shè)計(jì)元件實(shí)體原理圖如圖:其頂層電路如圖: 如上圖所示,當(dāng)STAR上升沿到來(lái),將乘數(shù)a鎖存到REG_8中,同時(shí)將16位的移位寄存器REG_16清零,然后隨著時(shí)鐘CLK上升沿的到來(lái),對(duì)REG_8中的乘數(shù)進(jìn)行移位操作,最低位在前,由低到高逐位輸出。1位乘法器中進(jìn)行與8位被乘數(shù)的相乘運(yùn)算,并與鎖存在16位寄存器reg_16中的高8位進(jìn)行相加,其和(包含進(jìn)位)在下一個(gè)時(shí)鐘的上升沿到來(lái)時(shí)鎖存到16位寄存器中。如此進(jìn)行直到第八個(gè)時(shí)鐘上升沿到來(lái)時(shí),reg_16的輸出即為所求的乘積。其頂層程序如下:use
19、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity multi_8 is -實(shí)體描述port(clk,start:in std_logic; a,b:in std_logic_vector(7 downto 0); result:out std_logic_vector(15 downto 0);end multi_8;architecture arc_multi_8 of multi_8 is -結(jié)構(gòu)體描述component multi_1 -調(diào)用1位乘法器聲
20、明port(m1_x:in std_logic; m1_y:in std_logic_vector(7 downto 0); m1_out:out std_logic_vector(7 downto 0);end component;component adder_8 -調(diào)用8位加法器聲明port(a8_in :in std_logic; a8_a,a8_b:in std_logic_vector(7 downto 0); a8_s:out std_logic_vector(7 downto 0); a8_out:out std_logic);end component;component r
21、eg_8 -調(diào)用8位寄存器聲明port(r8_clk,r8_load:in std_logic; r8_in:in std_logic_vector(7 downto 0); r8_out:out std_logic);end component;component reg_16 -調(diào)用16位寄存器聲明port(r16_clk,r16_clr:in std_logic; r16_in:in std_logic_vector(8 downto 0); r16_out:out std_logic_vector(15 downto 0);end component;signal gndint,new
22、start,qb:std_logic; -定義信號(hào)變量signal andsd:std_logic_vector(7 downto 0);signal dtbin:std_logic_vector(8 downto 0);signal dtbout:std_logic_vector(15 downto 0);begin result<=dtbout; gndint<='0'process(clk,start) begin if start='1' then newstart<='1'elsif clk='0' then newstart<='0'end if;end process;u1:reg_8 -例化語(yǔ)句 port map(clk,newstart,a,qb);u2:multi_1 port map(qb,b,andsd);u3:adder_8 port map(gndint
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)男性護(hù)理液行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 中班美術(shù)活動(dòng)變臉
- 無(wú)創(chuàng)呼吸機(jī)應(yīng)用和護(hù)理
- 智慧教育發(fā)展
- 煤礦機(jī)電運(yùn)輸事故原因及控制對(duì)策探究
- 物業(yè)品質(zhì)管理與培訓(xùn)
- 車用尿素研發(fā)生產(chǎn)與銷售合作協(xié)議書
- 房地產(chǎn)租賃合同補(bǔ)充協(xié)議書
- 員工培訓(xùn)計(jì)劃表
- 知識(shí)產(chǎn)權(quán)侵權(quán)代理授權(quán)協(xié)議
- 陜西2025中考試題及答案
- 供應(yīng)風(fēng)險(xiǎn)管理制度
- 直播間貨盤管理制度
- 2025至2030中國(guó)心臟電生理標(biāo)測(cè)、導(dǎo)航和記錄設(shè)備行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025泰山護(hù)理職業(yè)學(xué)院教師招聘考試試題
- 2025年重慶市中考?xì)v史真題(原卷版)
- 吉林省國(guó)資委監(jiān)管企業(yè)招聘筆試真題2024
- 項(xiàng)目管理中的資源優(yōu)化配置
- 2025年重慶市中考道德與法治試卷真題(含標(biāo)準(zhǔn)答案)
- 2025年北京昌平區(qū)東小口鎮(zhèn)城市協(xié)管員招聘題庫(kù)帶答案分析
- 婦女兒童之家管理制度
評(píng)論
0/150
提交評(píng)論