杭電計組實驗多功能ALU設計實驗_第1頁
杭電計組實驗多功能ALU設計實驗_第2頁
杭電計組實驗多功能ALU設計實驗_第3頁
杭電計組實驗多功能ALU設計實驗_第4頁
杭電計組實驗多功能ALU設計實驗_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、杭州電子科技大學計算機學院實驗報告實驗項目: 課程名稱:計算機組成原理與系統結構課程設計姓名: 學號: 同組姓名: 學號: 實驗位置(機號): 實驗日期: 指導教師: 實驗內容(算法、程序、步驟和方法)1、 實驗目的(1)學習多功能ALU的工作原理,掌握運算器的設計方法。(2)掌握運用Verilog HDL進行數據流描述與建模的技巧和方法,掌握運算器的設計方法。二、實驗儀器 ISE工具軟件三、步驟、方法(1)啟動Xilinx ISE軟件,選擇File->New Project,輸入工程名shiyan2,默認選擇后,點擊Next按鈕,確認工程信息后點擊Finish按鈕,創建一個完整的工程。

2、(2)在工程管理區的任意位置右擊,選擇New Source命令。彈出New Source Wizard對話框,選擇Verilog Module,并輸入Verilog文件名shiyan3,點擊Next按鈕進入下一步,點擊Finish完成創建。(3)編輯程序源代碼,然后編譯,綜合;選擇Synthesize-XST項中的Check Syntax右擊選擇Run命令,并查看RTL視圖;如果編譯出錯,則需要修改程序代碼,直至正確。(4)在工程管理區將View類型設置成Simulation,在任意位置右擊,選擇New Source命令,選擇Verilog Test Fixture選項,輸入實驗名shiyan

3、3_test。點擊Next,點擊Finish,完成。編寫激勵代碼,觀察仿真波形,如果驗證邏輯有誤,則修改代碼,重新編譯,仿真,直至正確。(5)由于實驗三并未鏈接實驗板,所以后面的鏈接實驗板的步驟此處沒有。操作過程及結果一,操作過程實驗過程和描述:module shiyan3(ALU_OP,AB_SW,OF,ZF,F);reg 31:0A,B;input 2:0ALU_OP;input 2:0AB_SW; wire OF; reg ZF;reg 31:0F;output OF;output ZF;output F;reg C32;always(*)begincase(AB_SW)3'b0

4、00: begin A=32'h0000_0000; B=32'h0000_0000; end3'b001: begin A=32'h0000_0003; B=32'h0000_0607; end3'b010: begin A=32'h8000_0000; B=32'h8000_0000; end3'b011: begin A=32'h7FFF_FFFF; B=32'h7FFF_FFFF; end3'b100: begin A=32'hFFFF_FFFF; B=32'hFFFF_FF

5、FF; end3'b101: begin A=32'h8000_0000; B=32'hFFFF_FFFF; end3'b110: begin A=32'hFFFF_FFFF; B=32'h8000_0000; end3'b111: begin A=32'h1234_5678; B=32'h3333_2222; enddefault: begin A=32'h9ABC_DEF0; B=32'h1111_2222; endendcaseendalways(*)begincase(ALU_OP)3'b0

6、00:F<=A&B;3'b001:F<=A|B;3'b010:F<=AB;3'b011:F<=AB;3'b100:C32,F<=A+B;3'b101:C32,F<=A-B;3'b110:begin if(A<B) F<=32'h0000_0001; else F<=32'h0000_0000; end3'b111:begin F<=B<<A; enddefault: F<=32'h0000_0000;endcaseendalway

7、s(*)beginif(F=32'h0000_0000)ZF<=1;elseZF<=0;endassign OF=C32F31A31B31;endmodule仿真代碼module shiyan3_test;/ Inputsreg 2:0 ALU_OP;reg 2:0 AB_SW;/ Outputswire OF;wire ZF;wire 31:0 F;/ Instantiate the Unit Under Test (UUT)shiyan3 uut (.ALU_OP(ALU_OP), .AB_SW(AB_SW), .OF(OF), .ZF(ZF), .F(F);initi

8、al begin/ Initialize InputsALU_OP = 0;AB_SW = 0;/ Wait 100 ns for global reset to finish#100; / Add stimulus here#100;ALU_OP = 001;AB_SW = 001;#100;ALU_OP = 010;AB_SW = 010;#100;ALU_OP = 011;AB_SW = 011;#100;ALU_OP = 100;AB_SW = 100;#100;ALU_OP = 101;AB_SW = 101;#100;ALU_OP = 110;AB_SW = 110;#100;AL

9、U_OP = 111;AB_SW = 111;end endmoduleRTL圖二、結果思考題:(2)經過分析,該ALU不能實現MIPS核心指令集的所有指令。它還需要:帶進位的加法運算、帶進位的減法運算、位清除指令、負數比較、位測試指令、比較指令、相等測試指令等。(3)通過本實驗,無法得出:slt操作中的“A<B”是對有符號數的比較還是無符號數的比較,這個結論。若A=32b0,B=32bFFFF_FFFF,則所得到的答案是F=0000_0001.這個問題應該再設置一個變量SIGctr信號,控制ALU是執行“帶符號整數比較小于置于1”還是“無符號數比較小于置1”功能,當SIGctr=0,則

10、執行“無符號數比較小于置1”,當SIGctr=1,則執行“帶符號整數比較小于置1”。 (6)在做這個實驗的時候,我遇到的問題是,F的輸出是決定著ZF的輸出,當F全零時,ZF輸出1,;否則ZF輸出0。解決方法:運用if.else.。根據F的假設值,對ZF進行賦值運算。以及八種運算的表示方法不太熟悉進行了查閱實驗指導書。 在這個多功能ALU設計實驗中,這個實驗做的時候忘記了不需要連實驗板,老師驗收的時候說不需要連接實驗板,所以臨時修改了代碼,取消了LED的設置。后來不知道怎么回事,怎么看都沒有錯誤,但是就是運行出錯。于是就剪切了代碼,重新生成了文件,粘貼后再次運行時結果出其醫療的成功了。總結一下估計是之前哪里的東西被我刪掉了才導致了錯誤。又再次設置了ZF與F以及OF的輸出。最后驗證了仿真波形,實驗

溫馨提示

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

評論

0/150

提交評論