算數(shù)邏輯單元_第1頁(yè)
算數(shù)邏輯單元_第2頁(yè)
算數(shù)邏輯單元_第3頁(yè)
算數(shù)邏輯單元_第4頁(yè)
算數(shù)邏輯單元_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1、 實(shí)驗(yàn)?zāi)康模?、掌握簡(jiǎn)單運(yùn)算器的數(shù)據(jù)傳送通路2、驗(yàn)證運(yùn)算器的組合功能二、實(shí)驗(yàn)原理: 算術(shù)邏輯部件的主要功能是對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行定點(diǎn)算術(shù)運(yùn)算、邏輯運(yùn)算和各種移位操作。算術(shù)運(yùn)算包括定點(diǎn)加減乘除運(yùn)算;邏輯運(yùn)算主要有邏輯與、邏輯或、邏輯異或和邏輯非操作。ALU通常有兩個(gè)數(shù)據(jù)輸入端A和B,一個(gè)數(shù)據(jù)輸出端Y以及標(biāo)志位等。74181是一種典型的4位ALU器件。圖是74181的電路圖。 20世紀(jì)80年代計(jì)算機(jī)中的算是邏輯單元有許多是用現(xiàn)成的算術(shù)邏輯器件連接起來(lái)構(gòu)成的。如上面提到的74181和Am2901等就是著名的算術(shù)邏輯器件。使用這些4位的算術(shù)邏輯器件,能夠構(gòu)成8位、16位等長(zhǎng)度的算術(shù)邏輯單元?,F(xiàn)在由于超

2、大規(guī)模器件的廣泛應(yīng)用,使用這種方法構(gòu)成算術(shù)邏輯單元已經(jīng)不多見(jiàn),代之以直接用硬件描述語(yǔ)言設(shè)計(jì)算術(shù)邏輯單元。CPU的算術(shù)邏輯單元就是一個(gè)簡(jiǎn)單的例子。圖 74181的電路圖三、實(shí)驗(yàn)步驟:(1)打開(kāi)Quartus,參照3.4節(jié),安裝ByteBlaster。(2)將子板上的JTAG端口和PC機(jī)的并行口用下載電纜連接。打開(kāi)試驗(yàn)臺(tái)電源。(3)執(zhí)行ToolsProgrammer命令,將adder8.sof下載到FPGA中,注意在執(zhí)行Programmer中,應(yīng)在program/configure下的方框中打鉤,然后下載。(4) 在試驗(yàn)臺(tái)上通過(guò)模式開(kāi)關(guān)選擇FPGA-CPU獨(dú)立的調(diào)試模式010.要求:1、實(shí)驗(yàn)設(shè)計(jì)目

3、標(biāo)設(shè)計(jì)一個(gè)16位算術(shù)邏輯單元,滿(mǎn)足以下要求。(1)16位算術(shù)邏輯單元能夠進(jìn)行下列運(yùn)算:加法、減法、加1、減1、與、或、非和傳送。用3位運(yùn)算操作碼OP210進(jìn)行運(yùn)算,控制方式如表4.1所示:運(yùn)算操作碼OP210運(yùn) 算對(duì)標(biāo)志位Z和C的影響000resultßA+B影響標(biāo)志位Z和C001resultßA+1影響標(biāo)志位Z和C010resultßA-B影響標(biāo)志位Z和C011resultßA-1影響標(biāo)志位Z和C100resultßA and B影響標(biāo)志位Z101resultßA or B影響標(biāo)志位Z110resultßnot B影響標(biāo)志

4、位Z111resultß B不影響標(biāo)志位Z和C(2)設(shè)立兩個(gè)標(biāo)志位寄存器Z和C。當(dāng)復(fù)位信號(hào)reset為低電平時(shí),將這兩個(gè)標(biāo)志寄存器清零。當(dāng)預(yù)算結(jié)束后,在時(shí)鐘CLK的上升沿改變標(biāo)志寄存器Z和C的值。運(yùn)算結(jié)果改變標(biāo)志寄存器C、Z的情況下:加法、減法、加1、減1、運(yùn)算改變Z、C;與、或、非運(yùn)算改變Z,C保持不變;傳送操作保持Z、C不變。因此在運(yùn)算結(jié)束時(shí),Z、C需要兩個(gè)D觸發(fā)器保存。(3)為了保存操作數(shù)A和B。設(shè)計(jì)兩個(gè)16位寄存器A和B。當(dāng)寄存器選擇信號(hào)sel=0時(shí)。如果允許寫(xiě)信號(hào)write=1,則在時(shí)鐘clk的上升沿將數(shù)據(jù)輸入dinput送入A寄存器;當(dāng)sel=1時(shí),如果允許寫(xiě)信號(hào)writ

5、e=1,則在時(shí)鐘clk的上升沿將數(shù)據(jù)輸入dinput送入B。(4)算術(shù)邏輯單元用一個(gè)設(shè)計(jì)實(shí)體完成。2、頂層設(shè)計(jì)實(shí)體的引腳要求引腳要求對(duì)應(yīng)關(guān)系如下:clk對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的時(shí)鐘(單脈沖);reset對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的CPU復(fù)位信號(hào)CPU_RST;數(shù)據(jù)輸入dinput對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SD15SD0;允許寫(xiě)信號(hào)write對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SA5;OP210對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SA2SA0;寄存器選擇信號(hào)sel對(duì)應(yīng)實(shí)驗(yàn)臺(tái)開(kāi)關(guān)SA4;16位運(yùn)算結(jié)果result對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的指示燈A15A0;Z、C標(biāo)志位對(duì)應(yīng)實(shí)驗(yàn)臺(tái)上的Z、C指示燈。4、 實(shí)驗(yàn)現(xiàn)象及分析:(1)實(shí)驗(yàn)臺(tái)設(shè)置成FPGA-CPU獨(dú)立調(diào)試模塊;REGSEL=0,CLK

6、SEL=1,F(xiàn)DSEL=0.使用實(shí)驗(yàn)平臺(tái)上的單脈沖,即STEP_CLK短路子短接,短路子RUN_CLK斷開(kāi);(2)將設(shè)計(jì)在Quartus II 下輸入,在編譯后下載到TEC-CA上的FPGA中;(3)輸入A這個(gè)數(shù):Sel=0(SA4),write=1(SA5),A數(shù)(SD15SD0) ,按一下單脈沖按鈕(單脈沖按鈕),使之存入A寄存器;(4)輸入B這個(gè)數(shù):Sel=1(SA4),write=1(SA5),B數(shù)(SD15SD0),按一下單脈沖按鈕(單脈沖按鈕),使之存入B寄存器;(5)輸入功能碼OP210(SA2SA0),按一下單脈沖按鈕(單脈沖按鈕);(6)觀察16位運(yùn)算結(jié)果result(A15

7、A0)及Z、C指示燈;(7)重復(fù)實(shí)驗(yàn)步驟(3)-(6)對(duì)以下4組數(shù)據(jù)進(jìn)行表4.1的8種運(yùn)算,把運(yùn)算結(jié)果及標(biāo)志位填寫(xiě)在表中:A、對(duì)第一組數(shù)據(jù)進(jìn)行8種運(yùn)算,A為0xAAAA,B為0x5555;B、對(duì)第一組數(shù)據(jù)進(jìn)行8種運(yùn)算,A為0xFFFF,B為0x0000;C、對(duì)第一組數(shù)據(jù)進(jìn)行8種運(yùn)算,A為0x0000,B為0xFFFF;D、對(duì)第一組數(shù)據(jù)進(jìn)行8種運(yùn)算,A為0x8950,B為0x9863;表 算術(shù)邏輯單元實(shí)驗(yàn)運(yùn)算數(shù)據(jù)運(yùn)算類(lèi)型操作碼OP運(yùn)算結(jié)果result標(biāo)志位C標(biāo)志位Z運(yùn)算前運(yùn)算后運(yùn)算前運(yùn)算后第1組數(shù)據(jù)A=0xAAAAB=0x5555resultßA+B0000xFFFF0 0 0 0re

8、sultßA+10010xAAAB0 0 0 0resultßA-B0100x55550 0 0 0resultßA-10110xAAA90 0 0 0resultßA and B1000x00000 00 1resultßA or B1010xFFFF0 00 0resultßnot B1100xAAAA0 00 0resultß B1110x55550 00 0第2組數(shù)據(jù)A=0xFFFFB=0x0000resultßA+B0000xFFFF0 00 0resultßA+10010x00000 10 1

9、resultßA-B0100xFFFF1 01 0resultßA-10110xFFFE0 00 0resultßA and B1000x00001 11 1resultßA or B1010xFFFF0 00 0resultßnot B1100xFFFF0 01 0resultß B1110x00000 01 0第3組數(shù)據(jù)A=0x0000B=0xFFFFresultßA+B0000xFFFF0 01 0resultßA+10010x00010 00 0resultßA-B0100x00010 10 0r

10、esultßA-10110xFFFF0 10 0resultßA and B1000x00000 00 1resultßA or B1010xFFFF0 00 0resultßnot B1100x00000 00 1resultß B1110xFFFF1 10 0第4組數(shù)據(jù)A=0x8950B=0x9863resultßA+B0000x21B31 10 0resultßA+10010x89511 00 0resultßA-B0100xF0ED0 10 0resultßA-10110x894F1 00 0re

11、sultßA and B1000x88400 00 0resultßA or B1010x99731 10 0resultßnot B1100x679C1 10 0resultß B1110x98631 10 0五、實(shí)驗(yàn)過(guò)程中遇到問(wèn)題及解決方法: 設(shè)立兩個(gè)標(biāo)志位寄存器Z和C。當(dāng)復(fù)位信號(hào)reset為低電平時(shí),將這兩個(gè)標(biāo)志寄存器清零。當(dāng)預(yù)算結(jié)束后,在時(shí)鐘CLK的上升沿改變標(biāo)志寄存器Z和C的值。運(yùn)算結(jié)果改變標(biāo)志寄存器C、Z的情況下:加法、減法、加1、減1、運(yùn)算改變Z、C;與、或、非運(yùn)算改變Z,C保持不變;傳送操作保持Z、C不變。六、實(shí)驗(yàn)源碼:(加注釋?zhuān)?算數(shù)邏

12、輯單元libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entity ALU isport(reset,clk :in std_logic;-reset復(fù)位信號(hào),當(dāng)reset為低電平時(shí),兩個(gè)標(biāo)志寄存器清零。clk為時(shí)鐘信號(hào),clk為高電平,改變Z,C OP: in std_logic_vector(2 downto 0);-運(yùn)算操作碼sel: in std_logic;-選擇信號(hào),sel=0,若為寫(xiě)信號(hào),clk上升則存入A寄存器,若sel=1則存入

13、B寄存器 write:in std_logic;-寫(xiě)信號(hào) C,Z:out std_logic;-Z,C為標(biāo)志位Dinput: in std_logic_vector(15 downto 0);-輸入將寫(xiě)入的數(shù)據(jù)通過(guò)它存入A寄存器或B寄存器 result: out std_logic_vector(15 downto 0)-輸出結(jié)果);end ALU;architecturebehav of alu iscomponentreg isport(clr: instd_logic;-寄存器復(fù)位信號(hào)D:instd_logic_vector(15 downto 0);-寄存器輸入信號(hào)clock:inst

14、d_logic;-時(shí)鐘信號(hào)write:instd_logic;-寫(xiě)信號(hào)sel:instd_logic;-選擇信號(hào)Q:outstd_logic_vector(15 downto 0);end component;signalz_tmp :std_logic;signal A,B :std_logic_vector(15 downto 0);signalresult_t: std_logic_vector(16 downto 0);beginA_reg: reg port map-A寄存器(clr=> reset,-對(duì)應(yīng)ALU的復(fù)位信號(hào) D=>Dinput,對(duì)應(yīng)ALU的輸入信號(hào) clo

15、ck=>clk,-對(duì)應(yīng)ALU的時(shí)鐘信號(hào)write=> write,sel=> (not sel),-sel=0則表示選擇A寄存器 Q=> A);B_reg: reg port map-B寄存器(clr=> reset, D=>Dinput,clock=>clk, write=> write,-sel=1則表示選擇B寄存器sel=>sel, Q=> B);alu_proc:process(OP,A,B)begincase OP iswhen "000" =>result_t<= ('0'

16、& A) + ('0' & B);-A+Bwhen "001" =>result_t<= ('0' & A) + '1'-A+1when "010" =>result_t<= ('0' & A) - ('0' & B);-ABwhen "011" =>result_t<= ('0' & A) - '1'-A-1when "100&q

17、uot; =>result_t<= ('0' & A) and ('0' & B);-與when "101" =>result_t<= ('0' & A) or ('0' & B);-或when "110" =>result_t<= not ('0' & B);-非when "111" =>result_t<= ('0' & B);-傳遞end

18、case;end process;result <= result_t(15 downto 0);z_tmp<= (not result_t(15) and (not result_t(14) and(not result_t(13) and (not result_t(12) and(not result_t(11) and (not result_t(10) and(not result_t(9) and (not result_t(8) and(not result_t(7) and (not result_t(6) and(not result_t(5) and (not

19、result_t(4) and(not result_t(3) and (not result_t(2) and(not result_t(1) and (not result_t(0);c_proc: Process(reset,clk,result_t,OP)begin if reset = '0' then-若按下復(fù)位信號(hào)則寄存器C為0C <= '0'elsifclk'event and clk = '1' then-若clk為上升 if OP(2) = '0' thenC <= result_t(16);end if;end if;end process;z_proc: process(reset,clk,z_tmp,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論