8位二進(jìn)制乘法電路程序_第1頁
8位二進(jìn)制乘法電路程序_第2頁
8位二進(jìn)制乘法電路程序_第3頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、位二進(jìn)制乘法電路該乘法器是有由8位加法器構(gòu)成的以時(shí)序方式設(shè)計(jì)的8位乘法器,采用逐項(xiàng)移位相加的方法來實(shí)現(xiàn)相乘。用乘數(shù)的各位數(shù)碼,從低位開始依次與被乘數(shù)相乘,每相乘一次得到的積稱為部分積,將第一次(由乘數(shù)最低位與被乘數(shù)相乘)得到的部分積右移一位并與第二次得到的部分積相加,將加得的和右移一位再與第三次得到的部分積相加,再將相加的結(jié)果右移一位與第四次得到的部分積相加。直到所有的部分積都被加過一次。例如:被乘數(shù) (M7M6M5M4M3M2M1M0 )和乘數(shù)(N7N6N5N4N3N2N1N0 )分別為 11010101 和10010011,其計(jì)算過程如下:11010101X 100100111101010

2、1NO與被乘數(shù)相乘的部分積,部分積右移一位11010101N1與被乘數(shù)相乘的部分積十 1101010110011111111001111111兩個(gè)部分積之和,部分積之和右移一位:前簡單流程圖)0 0 00N2與被乘數(shù)相乘的部分積與前面部分積之和相加,部分積之和右移一- 0 00 0 00 0 0N4與被乘數(shù)相乘的部分積 N7與被乘數(shù)相乘的部分積-110 10 10 1與前面部分積之和相加 右移一位得到最后的積下面分解8位乘法器的層次結(jié)構(gòu),分為以下 右移寄存器模塊:這是 行乘法運(yùn)算的移位操作。 加法器模塊:這是一個(gè) 1位乘法器模塊:完成 鎖存器模塊:這是一個(gè) 輸入數(shù)值的鎖存與移位。按照上4個(gè)模塊

3、:個(gè)8位右移寄存器,可將乘法運(yùn)算中的被乘數(shù)加載于其中,同時(shí)進(jìn)8位加法器,進(jìn)行操作數(shù)的加法運(yùn)算。8位與1位的乘法運(yùn)算。16位鎖存器,同時(shí)也是一個(gè)右移寄存器,在時(shí)鐘信號的控制下完成圖中8位移位寄存器reg_8存放 數(shù)送至1 8位乘法器 multi_1中,同時(shí) 送至 8位加法器adder_8中,同時(shí)取reg_16 中,進(jìn)述算法流程圖??趇ll時(shí) 制信號乘數(shù)加 清出零或鎖存移位寄存送至reg_16右移后并進(jìn)行鎖進(jìn)行相加,Z再詁加后結(jié)果即部分積存入行移位后并保存。這樣經(jīng)過8次對乘數(shù)a的移位操作,所以的部分積已全加至reg_16中,此時(shí)鎖存器reg_16存放的值即所要求的積。(1) 8位移位寄存器reg_

4、8的設(shè)計(jì)) 信號作用下,當(dāng)1時(shí),將 8 位r8_load=0時(shí),對數(shù)據(jù)進(jìn)行移位操作8-同時(shí)定義一個(gè)信號氐位oadr8_eu8(0)傳送給r8r8_i n7.Oreg_8reg8用來裝載 out輸出。8位移位寄存器是在時(shí)鐘(r8_clkeve nt and r8_clk=1 乘數(shù)加載進(jìn)入;而當(dāng)新數(shù)據(jù)及移位后的操作數(shù),完成這些操作后,寄存器的最低 元件實(shí)體原理圖如右圖:該模塊元件的程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;use ieee.std_logic_arith.all;

5、en tity reg_8 is-實(shí)體描述port(r8_clk,r8_load:i n std_logic;r8_in:in stdo gic_vector(7 dow nto 0);r8_out:out std_logic);end reg_8;architecture arc_reg_8 of reg_8 is-結(jié)構(gòu)體描述sig nal reg8:std_logic_vector(7 dow nto 0);-定義信號變量beginprocess(r8_clk,r8_load)beginif r8_clkeve nt and r8_clk=1 the n-時(shí)鐘上升沿到來if r8_load

6、=1 the n-鎖存新數(shù)據(jù)reg8=r8_i n;elsereg8(6 dow nto 0)=reg8(7 dow nto 1);-數(shù)據(jù)右移end if;end if;end process;r8_out=reg8(0);-輸出最低位end arc_reg_8;仿真波形圖如下:NapeD ps20.0 m40.0 m60.080.0 ns1D0. D in120.0 m140.iiiiiiD 20 ps0 PJ比0:r0_clkA 0TL rL TL nL_r_rL_n_rL_r_r-L_rL_rL_TLL_rLAlIH T8_inH 47F4F11r8_flutA 0Liii i(2) 8

7、位加法器adder_8的設(shè)計(jì)I)該加法器由兩個(gè)四位二進(jìn)制加法器組成。其中設(shè)計(jì)四位二進(jìn)制加法器時(shí),為了避免加法運(yùn) 算時(shí)產(chǎn)生溢出,故定義了三個(gè)信號量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_i na4_s3.0 a4_a3.0 a4_b3.0a4_outadder 4其程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic

8、_ un sig ned.all;use ieee.std_logic_arith.all;en tity adder_4 is-實(shí)體描述port(a4_in :in std_logic;a4_a,a4_b:i n std_logic_vector(3 dow nto 0); a4_s:out std_logic_vector(3 dow nto 0); a4_out:out std_logic);end adder_4;architecture arc_adder_4 of adder_4 is-結(jié)構(gòu)體描述sig nal ss:std_logic_vector(4 downto 0);-定義

9、信號變量sig nal aa,bb:std_logic_vector(4 dow nto 0);beginaa=0&a4_a;-為避免溢出,將 0與a4_a連接bb=0&a4_b;-將 0 與 a4_b 連接ss=aa+bb+a4_i n;-執(zhí)行加法運(yùn)算a4_s=ss(3 dow nto 0);-輸出結(jié)果a4_out28a8_tnilk D(3) 1位乘法器40. xis80.甲 he100.0 M1 j 10 X 11 jriFX 131516 jri)riaH 11 X 12】4 X 15 廠仃 X 18 廠帀 I: 1IT JCgOmulti_1的設(shè)計(jì)利用循環(huán)語句FOR-LOOP完成8位

10、二進(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輸出全為零。元件實(shí)體原理圖如右圖:其程序如下:ml xlibrary ieee;use ieee.stdo gic_1164.all;use ieee.std_logic_ un sig ned.all;use ieee.std_logic_arith.all;en tity multi_1 is-實(shí)體描述port(m1_x:in std_logic;m1_y:in

11、std_logic_vector(7 dow nto 0);m1_out:out std_logic_vector(7 dow nto 0);end multi_1;architecture arc multi 1 of multi 1 is -結(jié)構(gòu)體描述beginprocess(m1_x,m1_y)m1_out7.0m1 y7m0ilti 1beginfor i in 0 to 7 loop-循環(huán)完成8位與1位的乘法運(yùn)算m1_out(i)=m1_y(i)a nd m1_x;end loop;end process;end arc_multi_1;其仿真電路圖如下:口當(dāng)清零信號(r16_clr

12、=1)到來時(shí),定義信號變 一reg16清零;否則在時(shí)鐘信號r16_clrr16_out15.0r16_i n8.Oreg_16r16 elk上升沿到來時(shí),將reg16的低8位進(jìn)行移位操作,同時(shí)將16_位的數(shù)據(jù)輸入r16_in鎖存到reg16的高 8位,最后賦值給r16_out輸出。元件實(shí)體原理圖如右圖:其程序如下:use ieee.std _lo gic_1164.all;use ieee.std_logic_ un sig ned.all;use ieee.std_logic_arith.all;en tity reg_16 is-實(shí)體描述port(r16_clk,r16_clr:in st

13、d_logic;r16_in:in std_logic_vector(8 dow nto 0); r16_out:out stdo gic_vector(15 dow nto 0);end reg_16;architecture arc_reg_16 of reg_16 is-結(jié)構(gòu)體描述sig nal reg16:stdo gic_vector(15 dow nto 0);-定義信號變量beginprocess(r16_clk,r16_clr)beginif r16_clr=1 then-clr 為高電平,清零reg16=0000000000000000;elsif r16_clkeve nt

14、 and r16_clk=1 the n-時(shí)鐘上升沿到來reg16(6 dow nto 0)=reg16(7 dow nto 1);-右移,并鎖存低八位reg16(15 dow nto 7)=r16_i n;-將輸入鎖存到高 8 位end if;end process;r16_out=reg16;-數(shù)據(jù)輸出end arc_reg_16;仿真電路圖如圖所示:(5) 8位乘法器的頂層設(shè)計(jì)元件實(shí)體原理圖如圖:RJLTI_8CLK 其頂層電路如圖:如上圖所示,當(dāng) STAR上升沿到來,將乘數(shù) a鎖存到REG_8中,同時(shí)將16位的移位寄 存器REG_16清零,然后隨著時(shí)鐘 CLK上升沿的到來,對REG_8

15、中的乘數(shù)進(jìn)行移位操作,最低位在前,由低到高逐位輸出。1位乘法器中進(jìn)行與 8位被乘數(shù)的相乘運(yùn)算,并與鎖存在16位寄存器reg_16中的高8位進(jìn)行相加,其和(包含進(jìn)位)在下一個(gè)時(shí)鐘的上升沿到來時(shí)鎖存 到16位寄存器中。如此進(jìn)行直到第八個(gè)時(shí)鐘上升沿到來時(shí),reg_16的輸出即為所求的乘積。其頂層程序如下:use ieee.std _lo gic_1164.all; use ieee.std_logic_ un sig ned.all;use ieee.std_logic_arith.all;en tity multi_8 is-實(shí)體描述port(clk,start:in std_logic;a,b:

16、i n std_logic_vector(7 dow nto 0);result:out std_logic_vector(15 dow nto 0); end multi_8;architecture arc_multi_8 of multi_8 is-結(jié)構(gòu)體描述compo nent multi_1-調(diào)用1位乘法器聲明port(m1_x:i n std_logic;m1_y:in std_logic_vector(7 dow nto 0);m1_out:out std_logic_vector(7 dow nto 0);end comp onent;component adder_8-調(diào)用8

17、位加法器聲明port(a8_ in :in std_logic;a8_a,a8_b:i n std_logic_vector(7 dow nto 0);a8_s:out std_logic_vector(7 dow nto 0); a8_out:out std_logic);end comp onent;component reg_8 -調(diào)用8位寄存器聲明 port(r8_clk,r8_load:i n std_logic;r8n:in std_logic_vector(7 dow nto 0);r8_out:out std_logic);end comp onent;component re

18、g_16 -調(diào)用16位寄存器聲明 port(r16_clk,r16_clr:in std_logic;r16_in:in std_logic_vector(8 dow nto 0); r16_out:out stdo gic_vector(15 dow nto 0);end comp onent;sig nal gndin t, newstart,qb:std_logic;-定義信號變量sig nal an dsd:std_logic_vector(7 dow nto 0);sig nal dtb in: std_logic_vector(8 dow nto 0);sig nal dtbout

19、:std_logic_vector(15 dow nto 0);beginresult=dtbout;gndin t=0;process(clk,start)beginif start=1 the n n ewstart=1;elsif clk=0 the n n ewstartincfime 呂 an:Q p$*J Poihler42 irtslinflervat42 西 nsJ pv20. f m40 f nxg m 9gp n0 P5 PS JelkA 01 1J 11 1 1 1 1 11 1 1 1_1_1 _L* 11 - :El *H 93r!93 bM B5rD5PH re-sultK 0000Loooo6ASD狀號FCT敝7E7S WfcX 3J3C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論