EDA課程實(shí)驗(yàn)報(bào)告_第1頁
EDA課程實(shí)驗(yàn)報(bào)告_第2頁
EDA課程實(shí)驗(yàn)報(bào)告_第3頁
EDA課程實(shí)驗(yàn)報(bào)告_第4頁
EDA課程實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí) 驗(yàn) 報(bào) 告 ( 2011 2012 學(xué)年度 第 二 學(xué)期 )課程名稱 EDA技術(shù)實(shí)用教程實(shí)驗(yàn)名稱 D觸發(fā)器、八位二進(jìn)制補(bǔ)碼、雙二選一多路選擇器、一位全減器、八位二進(jìn)制乘法器姓名學(xué)號專業(yè)計(jì)算機(jī)班級地點(diǎn)教師實(shí)驗(yàn)一 D觸發(fā)器一、 實(shí)驗(yàn)?zāi)康?、熟悉Max+PlusII和GW48EDA開發(fā)系統(tǒng)的使用;2、掌握一位半減器具有上升沿觸發(fā)的D觸發(fā)器的VHDL設(shè)計(jì); 二、 實(shí)驗(yàn)原理數(shù)字電路的信號只有兩種狀態(tài):邏輯低或邏輯高,即通常所說的0狀態(tài)或1狀態(tài)、0電平或1電平。在各種復(fù)雜的數(shù)字電路中不但需要對二值(0,1)信號進(jìn)行算術(shù)運(yùn)算和邏輯適算(門電路),還經(jīng)常需要將這些信號和運(yùn)算結(jié)果保存起來

2、。為此,需要使用具有記憶功能的基本邏輯單元。能夠存儲l位二值信號的基本單元電路統(tǒng)稱觸發(fā)器。觸發(fā)器的特點(diǎn): 1、具有兩個能自行保持的穩(wěn)定狀態(tài),用來表示邏輯狀態(tài)的0和1,或二進(jìn)制數(shù)的0和1。 2、根據(jù)不同的輸入信號可以把輸出置成1或O狀態(tài)。原理圖: 3、當(dāng)輸入信號消失后,能保持其狀態(tài)不變(具有記憶功能)。三、 源程序HU.vhd的代碼如下:library ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HU ISPORT(CL:IN STD_LOGIC; -輸入選擇信號 CLK0:IN STD_LOGIC; -輸入信號 OUT1:OUT STD_LOGIC);-輸出

3、端END ;ARCHITECTURE ONE OF HU ISSIGNAL Q : STD_LOGIC;BEGINPR01: PROCESS(CLK0)BEGINIF CLK0 'EVENT AND CLK0='1'THEN Q<=NOT(CL OR Q);ELSEEND IF;END PROCESS;PR02: PROCESS(CLK0)BEGINOUT1<=Q;END PROCESS;END ONE;四、 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)二 八位二進(jìn)制補(bǔ)碼一實(shí)驗(yàn)?zāi)康?.熟悉Max+PlusII和GW48EDA開發(fā)系統(tǒng)的使用;2.掌握八位二進(jìn)制補(bǔ)碼的VHDL設(shè)計(jì);3.元件例化

4、語句的使用。二實(shí)驗(yàn)原理 若原碼為正,則補(bǔ)碼等于原碼;若原碼為負(fù),則補(bǔ)碼為(2+原碼)mod2。 三源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JACKAN IS PORT(rst:IN STD_LOGIC; din:IN STD_LOGIC_VECTOR(7 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY JACKAN; ARCHITECTURE HAIXIA OF JACKAN ISSIGNAL tm

5、p:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN PROCESS(din,rst) BEGIN IF rst='0' THEN dout <=(OTHERS=>'0'); ELSIF din(7) ='1' THEN FOR i IN 0 TO 6 LOOP tmp(i)<=NOT din(i); END LOOP; dout(6 DOWNTO 0) <= tmp+1; dout(7) <= din(7); ELSE dout <= din; END IF; END PROCESS;EN

6、D ARCHITECTURE HAIXIA;四實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)三 雙2選1多路選擇器一、 實(shí)驗(yàn)?zāi)康? 熟悉Max+PlusII和GW48EDA開發(fā)系統(tǒng)的使用;2 掌握雙2選1多路選擇器的VHDL設(shè)計(jì)二、 實(shí)驗(yàn)原理對于其中MUX21A,當(dāng)s='0'和'1'時(shí),分別有y<='a'和y<='b'。原理圖:三、 源程序mux221.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX221 ISPORT(s0,s1:IN STD_LOGIC_VECTOR(1 DOWNTO

7、0); -輸入信號 a1,a2,a3:IN STD_LOGIC; outy:OUT STD_LOGIC);-輸出端END;ARCHITECTURE ONE OF MUX221 ISSIGNAL tmp : STD_LOGIC;BEGINPR01:PROCESS(s0)BEGINIF s0="0" THEN tmp<=a2;ELSE tmp<=a3;END IF;END PROCESS;PR02:PROCESS(s1)BEGINIF s1="0" THEN outy<=a1;ELSE outy<=tmp;END IF;END PRO

8、CESS;END ONE;四、 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)四 一位全減器一、 實(shí)驗(yàn)?zāi)康?. 熟悉Max+PlusII和GW48EDA開發(fā)系統(tǒng)的使用;2. 掌握一位半減器的VHDL設(shè)計(jì);3. 掌握一位半減器構(gòu)建一位全減器的方法;二、實(shí)驗(yàn)原理 由兩個半減器和一個或門構(gòu)成一個全減器。首先,一位半減器的邏輯表達(dá)式: 其次,一位全減器的邏輯表達(dá)式: 三、源程序半減器的VHDL的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity Jackan is port( x,y : in std_logic;

9、diff,s_out : out std_logic );end Jackan;architecture Haixia of Jackan isbeginprocess(x,y) begin diff<=x xor y; s_out<=(not x) and y;end process;end architecture Haixia;描述或門的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity haixia is port( x,y,sub_in : in

10、std_logic; diffr,sub_out : out std_logic );end entity haixia;architecture Yaty of haixia iscomponent Jackan port( x , y : in std_logic; diff,s_out : out std_logic );end component;signal t0,t1,t2:std_logic;beginu1:Jackan port map(x=>x,y=>y,diff=>t0,s_out=>t1);u2:Jackan port map(x=>t0,y

11、=>sub_in,diff=>diffr,s_out=>t2);sub_out<=t1 or t2;END ARCHITECTURE Yaty; 四實(shí)驗(yàn)結(jié)果 實(shí)驗(yàn)五 八位二進(jìn)制乘法器一:實(shí)驗(yàn)?zāi)康模?)熟悉isEXPERT/MAX+plusisEXPERT/MAX+plus II/Foudation Series 軟件的基本使用方法。(2)熟悉GW48-CK EDA實(shí)驗(yàn)開發(fā)系統(tǒng)的基本使用方法。(3)學(xué)習(xí)VHDL基本邏輯電路的綜合設(shè)計(jì)。二:實(shí)驗(yàn)原理八位二進(jìn)制乘法器是有由8位加法器構(gòu)成的以時(shí)序方式設(shè)計(jì)的8位乘法器,采用逐項(xiàng)移位相加的方法來實(shí)現(xiàn)相乘。用乘數(shù)的各位數(shù)碼,從低位開始

12、依次與被乘數(shù)相乘,每相乘一次得到的積稱為部分積,將第一次(由乘數(shù)最低位與被乘數(shù)相乘)得到的部分積右移一位并與第二次得到的部分積相加,將加得的和右移一位再與第三次得到的部分積相加,再將相加的結(jié)果右移一位與第四次得到的部分積相加。直到所有的部分積都被加過一次。層次模塊8位乘法器的層次結(jié)構(gòu),分為以下4個模塊:右移寄存器模塊:這是一個8位右移寄存器,可將乘法運(yùn)算中的被乘數(shù)加載于其中,同時(shí)進(jìn)行乘法運(yùn)算的移位操作。加法器模塊:這是一個8位加法器,進(jìn)行操作數(shù)的加法運(yùn)算。1位乘法器模塊:完成8位與1位的乘法運(yùn)算。鎖存器模塊:這是一個16位鎖存器,同時(shí)也是一個右移寄存器,在時(shí)鐘信號的控制下完成輸入數(shù)值的鎖存與移

13、位。簡單流程圖: 八位寄存器Haixia存放乘數(shù)a,從a的最低位開始,每次從Haixia中移出一位,送至1×8位乘法器Yaty中,同時(shí)將被乘數(shù)加至Yaty中,進(jìn)行乘法運(yùn)算,運(yùn)算的結(jié)果再送至8位加法器Quange中,同時(shí)取出16位移位寄存器Jackan的高8位與之進(jìn)行相加,相加后結(jié)果即部分積存入Jackan中,進(jìn)行移位后并保存。這樣經(jīng)過8次對乘數(shù)a的移位操作,所以的部分積已全加至Jackan中,此時(shí)鎖存器Jackan存放的值即所要求的積。流程圖如下: 開始開始信號到來,置newstart為1寄存器Jackan置0,時(shí)鐘上升沿到來,寄存器Haixia置乘數(shù)a時(shí)鐘下降沿,置newstart

14、為零Haixia移出1位后與被乘數(shù)放入Yaty中進(jìn)行乘法運(yùn)算,結(jié)果送至QuangeJackan取出高8位送Quange中,與Yaty得到結(jié)果進(jìn)行加法運(yùn)算,結(jié)果送至Jackan右移后并進(jìn)行鎖存輸出每一步的運(yùn)算結(jié)果,即輸出Jackan的值,其中第八個值即為求得的積結(jié)果三、源程序 8位移位寄存器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity haixia is -實(shí)體描述port(haixia _clk, haixia _load

15、:in std_logic; haixia _in:in std_logic_vector(7 downto 0); haixia _out:out std_logic);end haixia;architecture arc_ haixia of haixia is -結(jié)構(gòu)體描述 signal xiaoxia:std_logic_vector(7 downto 0); -定義信號變量begin process(haixia _clk, haixia _load) begin if haixia _clk'event and haixia _clk='1' then -

16、時(shí)鐘上升沿到來 if haixia _load='1' then -鎖存新數(shù)據(jù) xiaoxia<=r8_in; else xiaoxia(6 downto 0)<=xiaoxia(7 downto 1); -數(shù)據(jù)右移 end if; end if; end process; haixia _out<=xiaoxia(0); -輸出最低位end arc_ haixia;8位加法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_

17、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 adder_4 is -結(jié)構(gòu)體描述 signal ss:std_logic_vector(4 downto 0); -定義信號變量 signal aa,bb:std_logic_vect

18、or(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;adder_8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_l

19、ogic_arith.all;entity adder_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 s

20、td_logic_vector(3 downto 0); a4_s:out std_logic_vector(3 downto 0); a4_out:out std_logic); end component; signal carry_out:std_logic; -定義信號變量begin u1:adder_4 -例化語句 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 down

21、to 4),a8_s(7 downto 4),a8_out);end arc_adder_8; 1位乘法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity yaty is -實(shí)體描述port(yaty _x:in std_logic; yaty _y:in std_logic_vector(7 downto 0); yaty _out:out std_logic_vector(7 downto 0);end yaty;arch

22、itecture arc_ yaty of yaty is -結(jié)構(gòu)體描述begin process(yaty _x, yaty _y) begin for i in 0 to 7 loop -循環(huán)完成8位與1位的乘法運(yùn)算 yaty _out(i)<= yaty _y(i)and yaty _x; end loop; end process;end arc_ yaty16位移位寄存器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;en

23、tity jackan is -實(shí)體描述port(jackan _clk, jackan _clr:in std_logic; jackan _in:in std_logic_vector(8 downto 0); jackan _out:out std_logic_vector(15 downto 0);end jackan;architecture arc_ jackan of jackan is -結(jié)構(gòu)體描述 signal yaty:std_logic_vector(15 downto 0); -定義信號變量 begin process(jackan _clk, jackan _clr)

24、 begin if jackan _clr='1' then -clr為高電平,清零 yaty<="0000000000000000" elsif jackan _clk'event and jackan _clk='1' then -時(shí)鐘上升沿到來 yaty(6 downto 0)<=yaty(7 downto 1); -右移,并鎖存低八位 yaty(15 downto 7)<= jackan _in; -將輸入鎖存到高8位 end if; end process; jackan _out<=yaty; -數(shù)

25、據(jù)輸出end arc_ jackan;8位乘法器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jackanandhaixia is -實(shí)體描述port(clk,start:in std_logic; jackan,haixia:in std_logic_vector(7 downto 0); result:out std_logic_vector(15 downto 0);end jackanandhaixia;archi

26、tecture arc_ jackanandhaixia of jackanandhaixia is -結(jié)構(gòu)體描述component yaty -調(diào)用1位乘法器聲明port(yaty_x:in std_logic; yaty_y:in std_logic_vector(7 downto 0); yaty_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);

27、 a8_s:out std_logic_vector(7 downto 0); a8_out:out std_logic);end component;component haixia -調(diào)用8位寄存器聲明port(haixia_clk,r8_load:in std_logic; haixia_in:in std_logic_vector(7 downto 0); haixia_out:out std_logic);end component;component jackan -調(diào)用16位寄存器聲明port(jackan _clk, jackan _clr:in std_logic; jackan _in:in std_logic_vector(8 downto 0); jackan _out:out std_logic_vector(15 downto 0);end component;signal gndint,newstart,qb:std_logic; -定義信號變量signal andsd:std_logic_vector(7 downto

溫馨提示

  • 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

提交評論