實驗五處理器數(shù)據(jù)通路實驗_第1頁
實驗五處理器數(shù)據(jù)通路實驗_第2頁
實驗五處理器數(shù)據(jù)通路實驗_第3頁
實驗五處理器數(shù)據(jù)通路實驗_第4頁
實驗五處理器數(shù)據(jù)通路實驗_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗五 數(shù)據(jù)通路的設計和驗證一、 實驗目的1、 通過數(shù)據(jù)通路的的設計和驗證,掌握CPU數(shù)據(jù)通路的基本原理和控制信號的順序。2、 了解QUARTUS II硬件描述語言和原理圖混合輸入設計的過程。3、 掌握Simplest CPU的數(shù)據(jù)通路的控制方法,為控制器實驗奠定基礎。二、 實驗原理如圖1所示是本次實驗所設計的Simplest CPU的數(shù)據(jù)通路和存儲器部分的原理框圖,該處理器支持的指令集如表1所示,只有4條指令。該CPU的寄存器如表2所示,數(shù)據(jù)通路的控制信號如表2所示。表1 SimplestCPU的指令集名稱實現(xiàn)的操作功能LD addrAC MEMAR取存儲器地址addr的數(shù)據(jù)到累加器ACST

2、 addrMEMAR AC存累加器AC數(shù)據(jù)到地址addr的存儲器ADD addrAC (AC)+MEMAR累加器AC加上存儲器地址addr數(shù)據(jù)JZ addr若AC為0則PC addr,否則,順序執(zhí)行下條指令累加器為0則從地址addr取指令執(zhí)行該處理器的存儲器為64單元,編址063,通過地址總線Addr5.0進行選擇;每個單元數(shù)據(jù)寬度8位,分別通過Dout7.0和Din7.0進行數(shù)據(jù)的讀寫,存儲器的讀、寫控制信號分別為MRD和MWR。表2 寄存器介紹寄存器中文名稱寬度功能PC程序計數(shù)器6位存放CPU要執(zhí)行的下一條指令的存儲器地址AR地址寄存器6位存放存儲器的地址,為訪問存儲器提供地址信息DR數(shù)據(jù)

3、寄存器8位加法指令中提供第二個數(shù)據(jù)。IR指令寄存器2位存放取回的指令的2位操作碼AC累加器8位CPU的主要寄存器,存放源數(shù)據(jù)和結果圖1 實驗使用的數(shù)據(jù)通路和存儲器原理框圖表3 數(shù)據(jù)通路控制信號信號中文名稱寬度功能mrd存儲器讀信號1位mrd=1:存儲器在Dout7.0輸出數(shù)據(jù)mwr存儲器寫信號1位mwr=1:將Din7.0的數(shù)據(jù)寫入存儲器PCloadPC寫信號1位PCload=1:內部總線數(shù)據(jù)寫入PCPCincPC+1信號1位PCinc=1:PC寄存器的值自增1,即:PC<-(PC)+1PCbusPC讀信號1位PCbus=1:PC值輸出到內部總線,即:內部總線<-(PC)ARloa

4、dAR寫信號1位ARload=1:內部總線數(shù)據(jù)寫入ARARbusAR讀信號1位ARbus=1:AR值輸出到內部總線,即:內部總線<-(AR)DRloadDR寫信號1位DRload=1:內部總線數(shù)據(jù)寫入DRDRbusDR讀信號1位DRbus=1:DR值輸出到內部總線,即:內部總線<-(DR)IRloadIR寫信號1位IRload=1:內部總線數(shù)據(jù)寫入IRACloadAC寫信號1位ARload=1:內部總線數(shù)據(jù)寫入ACACbusAC讀信號1位ACbus=1:AC值輸出到內部總線,即:內部總線<-(AC)ALUselALU功能選擇1位ALUsel=0:內部總線數(shù)據(jù) -> AC

5、ALUsel=1:(AC)+內部總線數(shù)據(jù) -> AC三、 實驗內容本實驗由多個設計文件構成,并且頂層設計采用原理圖輸入方式,如圖2所示是本次實驗的頂層設計原理圖。圖中的各個模塊采用verilog硬件描述語言設計,對應的模塊分別是時鐘分頻器ClockInput、數(shù)據(jù)通路datapath、存儲器mem、顯示輸出display和與PC機的輸入輸出調試接口PC_InOut,對應的設計文件分別是ClockInput.v、datapath.v、mem.v、display.v和PC_InOut.v,如表4所示。表4 本實驗所用的設計文件模塊文件功能頂層模塊EXP5.bdf原理圖設計的頂層模塊時鐘分頻器

6、ClockInput.v將外部輸入的1MHz的時鐘信號分頻為需要的1Hz時鐘信號數(shù)據(jù)通路datapath.vCPU的數(shù)據(jù)通路存儲器mem.v64字節(jié)的存儲器的設計顯示器display.v顯示數(shù)據(jù)通路輸出的數(shù)據(jù)PC調試輸入輸出PC_InOut.vPC端發(fā)出的控制信號和送到PC的數(shù)據(jù)通路輸出的數(shù)據(jù)圖2 本次實驗的頂層設計原理圖四、 實驗步驟(請參考實驗演示文檔)1、 打開QUARTUSII軟件,新建一個工程。2、 建完工程之后,新建一個原理圖文件,并保存為EXP5.bdf。3、 再新建一個Verilog File,打開編輯器。4、 按照實驗原理和自己的想法,在編輯窗口編寫Verilog代碼,請參考

7、實驗所提供的實驗代碼文件。5、 編寫完Verilog代碼后,保存起來。6、 對自己編寫的Verilog代碼生成符號文件“Create Symbol File from current file”,對程序的錯誤進行修改。7、 依次重復過程2、3、4、5依次完成表4所示的5個verilog文件的編寫和符號文件生成。8、 切換到原理圖文件,按圖2所示的原理圖選擇模塊并進行連接,并保存設計。9、 編譯設計無誤后,數(shù)碼管與FPGA的管腳連接參照表5進行引腳分配。分配完成后,再進行全編譯一次,以使管腳分配生效。表5 端口管腳分配表端口名使用模塊信號對應FPGA管腳說 明clk數(shù)字信號源J4時鐘為1MHzI

8、R1LED指示燈D1A9指令的操作碼字段IR0LED指示燈D2B9zeroLED指示燈D3A10結果0的標志位data_out7LED指示燈D5A11從存儲器讀取出的數(shù)據(jù)以二進制形式顯示在這8個指示燈上data_out6LED指示燈D6B11data_out5LED指示燈D7F7data_out4LED指示燈D8F6data_out3LED指示燈D9E10data_out2LED指示燈D10E8data_out1LED指示燈D11F12data_out0LED指示燈D12E11seg0數(shù)碼管A段H3以十六進制分別顯示PC、AR、DR和AC的值seg1數(shù)碼管B段H4seg2數(shù)碼管C段K5seg3

9、數(shù)碼管D段L5seg4數(shù)碼管E段K4seg5數(shù)碼管F段L3seg6數(shù)碼管G段L4seg7數(shù)碼管dp段M3sel0位選DEL0G4sel1位選DEL1G3sel2位選DEL2F410、 用下載電纜通過JTAG口將對應的sof文件加載到FPGA中。11、 在PC機打開“SimplestCPU數(shù)據(jù)通路控制面板”軟件,并連接實驗箱。圖3 實驗使用的控制面板軟件12、 在連接成功之后,通過操作控制面板上對應的控制信號,觀察實驗結果是否與自己的數(shù)據(jù)通路的控制思想一致。五、 實驗現(xiàn)象與結果該CPU的取指令和執(zhí)行指令的過程如圖4所示,以控制器從存儲器取指令(fetch)為例,取指令過程依次包含3個操作步驟,分

10、別用fetch1、fetch2和fetch3來表示,如表6所示。在PC端的SimplestCPU數(shù)據(jù)通路控制面板軟件界面上,在發(fā)出步驟fetch1所示的控制信號后,可以在實驗箱和軟件界面上觀察到指示燈和AR寄存器的值是3DH。這是存放在程序存儲器地址0的指令LD 3DH所對應的指令的機器指令編碼。表6 取指令的操作順序和控制信號(說明:表格中綠底色的表示寄存器的寫控制,相繼的灰底色的表示該過程由軟件自動完成,不需要手動操作,PC端的軟件該信號對應的按鈕按下后延遲彈起,發(fā)出對應的控制信號)名稱實現(xiàn)的操作和功能操作順序控制信號fetch1AR PC1PC_bus =12AR_load =13AR_

11、load =04PC_bus =0fetch2IR MEMAR7:6DR MEMAR5mrd =16IR_load =17IR_load =08DR_load =19DR_load =010mrd =0Fetch3PC PC+1AR DR5:011PC_inc =112PC_inc =013DR_bus =114AR_load =115AR_load =016DR_bus =0六、 實驗報告1、 該處理器的指令集有4條指令的控制流程如圖4所示。請參考表6,寫出LD指令、ST指令和JZ指令的操作過程和控制信號的賦值,填入表7表10中。并依據(jù)表7表10通過PC端的實驗軟件進行驗證;圖4 Simpl

12、estCPU的指令流程圖復位AR<-(PC)DR<-MEM(AR)IR<-MEM(AR)7:6PC<-(PC)+1AR<-DR5:0AC<-MEM(AR)MEM(AR)<- AC DR<-MEM(AR)AC<-(AC)+(DR)PC<-(AR)IR=00LD指令IR=01ST指令IR=10ADD指令IR=00JZ指令zero=10zero=00取指令執(zhí)行指令Fetch1Fetch2Fetch3LD1ST1ADD1ADD2JZ1Reset表7 LD指令控制流程指令指令分解實現(xiàn)的操作和功能順序控制信號LD addrLD1AC MEMAR1

13、mrd = 12ACload = 13ACload = 04mrd = 0表8 ST指令控制流程指令指令分解實現(xiàn)的操作和功能順序控制信號ST addrST1MEMAR AC1ACbus = 12mwr = 13mwr = 04ACbus = 0表9 ADD指令控制流程指令指令分解實現(xiàn)的操作和功能順序控制信號ADD addrADD1DR MEMAR1mrd = 12DRload = 13Drload = 04mrd = 0ADD2AC (AC)+(DR)5DRbus = 16ALUsel = 17ACload = 18Acload = 09ALUsel = 010DRbus = 0表10 JZ指

14、令控制流程指令指令分解實現(xiàn)的操作和功能if(zero=1)順序控制信號JZ addrJZ1 if(AC=0) PC AR1ARbus=12PCload=13PCload=04ARbus=02、 請依次通過操作控制信號讀出存儲器地址09這個10個單元的內容。3、 實驗原理、設計過程、編譯和分析結果、硬件測試結果記錄下來。說明:本次實驗存儲器中存放了等差數(shù)列1+2+3+22的數(shù)據(jù)求和的程序,為方便實驗,將該程序列在下面。/計算1+2+.+22=?,存儲器的3c,3d,3e單元分別存放-1,22和結果result,3f單元存放結束標志0 RAM8'h00 <= 8'h3d; /

15、LD 3d 循環(huán)次數(shù)到-> AC RAM8'h01 <= 8'hc9 ; /JZ 09 為0則結束 RAM8'h02 <= 8'hbe; /ADD 3e result+ ? -> AC RAM8'h03 <= 8'h7e; /ST 3e AC -> ram3e RAM8'h04 <= 8'h3d; /LD 3d 循環(huán)次數(shù)->AC RAM8'h05 <= 8'hbc; /ADD 3c 循環(huán)次數(shù)-1->AC RAM8'h06 <= 8'h7d; /ST 3d AC -> ram3d保存循環(huán)次數(shù) RAM8'h07 <= 8'h3f; /LD 3f 0 -> AC RAM8'h08 <= 8'hc0; /JZ 00 loop RAM8'h09 <= 8'h3f; /LD 3f 3f -> AC,ie,0->AC RAM

溫馨提示

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

評論

0/150

提交評論