寄存器組設計實驗_第1頁
寄存器組設計實驗_第2頁
寄存器組設計實驗_第3頁
寄存器組設計實驗_第4頁
寄存器組設計實驗_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、熟悉并掌握MIPS32CPU掌握用VerilogHDLVHDL語言來設計一個MIPS32CPU組成的字長為 32 位的 ARM32 CPU 中所用的寄存器組。二實驗原理(背景知識 “, ).三實驗器材/環(huán)【硬件器材】電腦,Alter公司的DE2-70開發(fā)板CycloneII 系列EP2C70F896C6【環(huán)境】quartus 器組的設計,并在Quartus (MIPS寄存器的要求設計AlteraDE2-70 AlteraDE2-115 開發(fā)板實現。用Verilog HDL語言或VHDL語言編寫一個由37個寄存器組成的字長為32位的ARM32位中所用的寄存器組(Thumb寄存器暫不考慮并在Qua

2、rtus AlteraDE2-70或AlteraDE115加點,并將電纜與計算機相連VerilogHDLVHDL語言編寫一個MIPS32CPU MIPS32(inputinput 4:0 Rd_addr,input Clk,Rd_write_en, output 31:0Rs_out, reg/當Rd_write_en=1時,即可結束實驗 if(Rd_write_en = 0&Rd_addr!=0 ) if(Rd_Byte_w_en3 = 0)RRd_addr31:24=Rd_in31:24; if(Rd_Byte_w_en2 = 0)RRd_addr23:16=Rd_in23:16; if(

3、Rd_Byte_w_en1 = 0)RRd_addr15:8=Rd_in15:8; if(Rd_Byte_w_en0 = 0)RRd_addr7:0=/將寫入指定寄存器的數據出來: assignRs_out31:0RRs_addr31:0; assign Rt_out 31:0 = R Rt_addr 31:0; project_2( input input 3:0Rd_Byte_w_en, input 3:0 Rd_addr,input3:0output 3:0Rs_out, reg3:0Rif(Rd_write_en = 0 ) RRd_addr3=Rd_in3; if(Rd_Byte_w

4、_en2 = 0)RRd_addr2=Rd_in2; if(Rd_Byte_w_en1 = 0)RRd_addr1=Rd_in1; if(Rd_Byte_w_en0 = 0)RRd_addr0=0&Rn_w_addr=15) if(Rn_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rn_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rn_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rn_byte_w_en0=0) memRn_w_addr7:0=0&R

5、d_w_addr=15) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0=0&Rn_w_addr=7) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn

6、_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= 8 & Rn_w_addr = 15)if(Rd_byte_w_en3=0)mem_fiqRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_fiqRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_fiqRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) mem_

7、fiqRn_w_addr7:0= 13 & Rn_w_addr = 15)if(Rd_byte_w_en3=0)mem_fiqRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_fiqRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_fiqRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) mem_fiqRn_w_addr7:0=0&Rd_w_addr=7) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24;

8、 if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0= 8 & Rd_w_addr = 15)if(Rd_byte_w_en3=0)mem_fiqRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)mem_fiqRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_fiqRd_w_addr1

9、5:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_fiqRd_w_addr7:0= 13 & Rd_w_addr = 15)if(Rd_byte_w_en3=0)mem_fiqRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)mem_fiqRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_fiqRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_fiqRd_w_addr7:0=0&Rn_w_addr=12) if(Rd_b

10、yte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8 = Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0 = Rn_in7:0;if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_irqRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_irqR

11、n_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_irqRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) mem_irqRn_w_addr7:0=0&Rd_w_addr=12) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0

12、=0) memRd_w_addr7:0= Rd_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_irqRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)mem_irqRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_irqRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_irqRd_w_addr7:0=0&Rn_w_addr=7) if(Rd_byte_w_en3=0)memRn

13、_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_irqRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_irqRn_w_addr23:16=Rn_in

14、23:16; if (Rd_byte_w_en1=0) mem_irqRn_w_addr15:8 = Rn_in15:8; if (Rd_byte_w_en0=0) mem_irqRn_w_addr7:0 =0&Rd_w_addr=7) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7

15、:0= Rd_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_irqRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)mem_irqRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_irqRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_irqRd_w_addr7:0= Rd_in7:0; 5b10011: /SVC mode if (SPSR_write_en=0) SPSR_

16、svc=0&Rn_w_addr=12) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en1=0)mem_svcRn_w_addr15:8 =Rn_in15:8; if

17、(Rd_byte_w_en0=0) mem_svcRn_w_addr7:0=0&Rd_w_addr=12) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0= Rd_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en1=0)me

18、m_svcRd_w_addr15:8 =Rd_in15:8; if (Rd_byte_w_en0=0) mem_svcRd_w_addr7:0=0&Rn_w_addr=7) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn

19、_w_addr=14) if(Rd_byte_w_en1=0)mem_svcRn_w_addr15:8 =Rn_in15:8; if (Rd_byte_w_en0=0) mem_svcRn_w_addr7:0=0&Rd_w_addr=7) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8 = Rd_in15:8;if (Rd_byte_w_en0=0) memRd_w_add

20、r7:0if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en1=0)mem_svcRd_w_addr15:8 =Rd_in15:8; if (Rd_byte_w_en0=0) mem_svcRd_w_addr7:0= Rd_in7:0; 5b10111: /ABT mode if (SPSR_write_en=0) SPSR_abt=0&Rn_w_addr=12) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16;

21、 if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_abtRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_abtRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_abtRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w

22、_en0=0) mem_abtRn_w_addr7:0=0&Rd_w_addr=12) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if(Rd_byte_w_en1=0)memRd_w_addr15:8 =Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0 = Rd_in7:0;if(Rn_w_addr=13|Rn_w_addr=14) if (Rd_byte_w_en1=0) mem_abtRd_w

23、_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_abtRd_w_addr7:0=0&Rn_w_addr=7) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14

24、) if (Rd_byte_w_en1=0) mem_abtRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) mem_abtRn_w_addr7:0=0&Rd_w_addr=7) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0= Rd_i

25、n7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en1=0)mem_abtRd_w_addr15:8 =Rd_in15:8; if (Rd_byte_w_en0=0) mem_abtRd_w_addr7:0 = Rd_in7:0;5b11011: /UND mode if (SPSR_write_en=0) SPSR_und=0&Rn_w_addr=12) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:1

26、6; if (Rd_byte_w_en1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_undRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_undRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_undRn_w_addr15:8=Rn_in15:8; if (Rd_byte

27、_w_en0=0) mem_undRn_w_addr7:0=0&Rd_w_addr=12) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0= Rd_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_undRd_

28、w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)mem_undRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_undRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_undRd_w_addr7:0=0&Rn_w_addr=7) if(Rd_byte_w_en3=0)memRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)memRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en

29、1=0) memRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) memRn_w_addr7:0= Rn_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_undRn_w_addr31:24=Rn_in31:24; if(Rd_byte_w_en2=0)mem_undRn_w_addr23:16=Rn_in23:16; if (Rd_byte_w_en1=0) mem_undRn_w_addr15:8=Rn_in15:8; if (Rd_byte_w_en0=0) mem_undRn

30、_w_addr7:0=0&Rd_w_addr=7) if(Rd_byte_w_en3=0)memRd_w_addr31:24=Rd_in31:24; if(Rd_byte_w_en2=0)memRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) memRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) memRd_w_addr7:0= Rd_in7:0; if(Rn_w_addr=13|Rn_w_addr=14) if(Rd_byte_w_en3=0)mem_undRd_w_addr31:24=Rd_in31:

31、24; if(Rd_byte_w_en2=0)mem_undRd_w_addr23:16=Rd_in23:16; if (Rd_byte_w_en1=0) mem_undRd_w_addr15:8=Rd_in15:8; if (Rd_byte_w_en0=0) mem_undRd_w_addr7:0= Rd_in7:0; CPSR_out=Mode_out=CPSR4:0; PC_out = mem15; case (CPSR_in4:0) Rn_out = memRn_r_addr; Rd_out = memRd_r_addr; Rs_out = memRs_r_addr;SPSR_out=

32、0&Rn_r_addr=7) Rn_out = 8 & Rn_r_addr = 14)Rn_out = 13 & Rn_r_addr = 14)Rn_out =0&Rd_r_addr=7) Rd_out = 8 & Rd_r_addr = 14)Rd_out = 13 & Rd_r_addr = 14)Rd_out =0&Rm_r_addr=7) Rm_out = 8 & Rm_r_addr = 14)Rm_out = 13 & Rm_r_addr = 14)Rm_out =0&Rs_r_addr=7) Rs_out = 8 & Rs_r_addr = 14)Rs_out = 13 & Rs_

33、r_addr = 14)Rs_out = mem_fiqRs_r_addr;SPSR_out=if(Rn_r_addr=13|Rn_r_addr=14) Rn_out = 0 & Rn_r_addr = 12)Rn_out = 0 & Rn_r_addr = 7)Rn_out = memRn_r_addr;if(Rd_r_addr=13|Rd_r_addr=14) Rd_out = 0 & Rd_r_addr = 12)Rd_out = 0 & Rd_r_addr = 7)Rd_out = memRd_r_addr;if(Rm_r_addr=13|Rm_r_addr=14) Rm_out =

34、0 & Rm_r_addr = 12)Rm_out = 0 & Rm_r_addr = 7)Rm_out = memRm_r_addr;if(Rs_r_addr=13|Rs_r_addr=14) Rs_out = 0 & Rs_r_addr = 12)Rs_out = 0 & Rs_r_addr = 7)Rs_out = memRs_r_addr;SPSR_out=if(Rn_r_addr=13|Rn_r_addr=14) Rn_out = 0 & Rn_r_addr = 12)Rn_out = 0 & Rn_r_addr = 7)Rn_out = memRn_r_addr;if(Rd_r_a

35、ddr=13|Rd_r_addr=14) Rd_out = 0 & Rd_r_addr = 12)Rd_out = 0 & Rd_r_addr = 7)Rd_out = memRd_r_addr;if(Rm_r_addr=13|Rm_r_addr=14) Rm_out = 0 & Rm_r_addr = 12)Rm_out = 0 & Rm_r_addr = 7)Rm_out = memRm_r_addr;if(Rs_r_addr=13|Rs_r_addr=14) Rs_out = 0 & Rs_r_addr = 12)Rs_out = 0 & Rs_r_addr = 7)Rs_out = memRs_r_addr;SPSR_out=if(Rn_r_addr=13|Rn_r_addr=14) Rn_out = 0 & Rn_r_addr = 12)Rn_out = 0 & Rn_r_addr = 7)Rn_out = memRn_r_addr;if(Rd_r_addr=13|Rd_r_addr=14) Rd_ou

溫馨提示

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

評論

0/150

提交評論