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

下載本文檔

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

文檔簡介

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

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

3、標(biāo)設(shè)計一個16位算術(shù)邏輯單元,滿足以下要求。(1)16位算術(shù)邏輯單元能夠進行下列運算:加法、減法、加1、減1、與、或、非和傳送。用3位運算操作碼OP210進行運算,控制方式如表4.1所示:運算操作碼OP210運 算對標(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è)立兩個標(biāo)志位寄存器Z和C。當(dāng)復(fù)位信號reset為低電平時,將這兩個標(biāo)志寄存器清零。當(dāng)預(yù)算結(jié)束后,在時鐘CLK的上升沿改變標(biāo)志寄存器Z和C的值。運算結(jié)果改變標(biāo)志寄存器C、Z的情況下:加法、減法、加1、減1、運算改變Z、C;與、或、非運算改變Z,C保持不變;傳送操作保持Z、C不變。因此在運算結(jié)束時,Z、C需要兩個D觸發(fā)器保存。(3)為了保存操作數(shù)A和B。設(shè)計兩個16位寄存器A和B。當(dāng)寄存器選擇信號sel=0時。如果允許寫信號write=1,則在時鐘clk的上升沿將數(shù)據(jù)輸入dinput送入A寄存器;當(dāng)sel=1時,如果允許寫信號writ

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

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

7、A0)及Z、C指示燈;(7)重復(fù)實驗步驟(3)-(6)對以下4組數(shù)據(jù)進行表4.1的8種運算,把運算結(jié)果及標(biāo)志位填寫在表中:A、對第一組數(shù)據(jù)進行8種運算,A為0xAAAA,B為0x5555;B、對第一組數(shù)據(jù)進行8種運算,A為0xFFFF,B為0x0000;C、對第一組數(shù)據(jù)進行8種運算,A為0x0000,B為0xFFFF;D、對第一組數(shù)據(jù)進行8種運算,A為0x8950,B為0x9863;表 算術(shù)邏輯單元實驗運算數(shù)據(jù)運算類型操作碼OP運算結(jié)果result標(biāo)志位C標(biāo)志位Z運算前運算后運算前運算后第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è)立兩個標(biāo)志位寄存器Z和C。當(dāng)復(fù)位信號reset為低電平時,將這兩個標(biāo)志寄存器清零。當(dāng)預(yù)算結(jié)束后,在時鐘CLK的上升沿改變標(biāo)志寄存器Z和C的值。運算結(jié)果改變標(biāo)志寄存器C、Z的情況下:加法、減法、加1、減1、運算改變Z、C;與、或、非運算改變Z,C保持不變;傳送操作保持Z、C不變。六、實驗源碼:(加注釋)-算數(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ù)位信號,當(dāng)reset為低電平時,兩個標(biāo)志寄存器清零。clk為時鐘信號,clk為高電平,改變Z,C OP: in std_logic_vector(2 downto 0);-運算操作碼sel: in std_logic;-選擇信號,sel=0,若為寫信號,clk上升則存入A寄存器,若sel=1則存入

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

14、d_logic;-時鐘信號write:instd_logic;-寫信號sel:instd_logic;-選擇信號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,-對應(yīng)ALU的復(fù)位信號 D=>Dinput,對應(yīng)ALU的輸入信號 clo

15、ck=>clk,-對應(yīng)ALU的時鐘信號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ù)位信號則寄存器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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論