單周期實驗報告cpu v1.理解計算機5大組成部分的協(xié)調(diào)工作原理存儲程序自動執(zhí)行_第1頁
單周期實驗報告cpu v1.理解計算機5大組成部分的協(xié)調(diào)工作原理存儲程序自動執(zhí)行_第2頁
單周期實驗報告cpu v1.理解計算機5大組成部分的協(xié)調(diào)工作原理存儲程序自動執(zhí)行_第3頁
單周期實驗報告cpu v1.理解計算機5大組成部分的協(xié)調(diào)工作原理存儲程序自動執(zhí)行_第4頁
單周期實驗報告cpu v1.理解計算機5大組成部分的協(xié)調(diào)工作原理存儲程序自動執(zhí)行_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

理解計算機5大組成部分的協(xié)調(diào)工作原理,理 采用VerilogHDL在quartusⅡ中實現(xiàn)基本的具有20條MIPS指令的單周期CPU設(shè)I/O統(tǒng)一編址方式,即將輸入輸出的I/O地址空間,作為數(shù)據(jù)存取空間的一部分,實現(xiàn)CPU與外部設(shè)備的輸入輸出端口設(shè)計。實驗中可采用高端地址。I/O端口,通過lw指令,輸入DE2實驗板上的按鍵等輸入設(shè)備信息。即將外部設(shè)備狀態(tài),讀到CPU內(nèi)部寄存器。I/O端口,通過sw指令,輸出對DE2實驗板上的LED燈等輸出設(shè)備的控制信號(或數(shù)據(jù)信息)。即將對外部設(shè)備的控制數(shù)據(jù),從CPU內(nèi)部的寄存器,寫入CPU上,實現(xiàn)對板載輸入開關(guān)或按鍵的狀態(tài)輸入,并將判別或處理結(jié)果,利用板載LED燈或7段LED數(shù)碼管顯示出來。例如,將一路4bit二進(jìn)制輸入與另一路4bit二進(jìn)制輸入相加,利用兩組分別2個LEDMIPS20 -DE1-SOC實驗板套件1套,電腦1臺,quartusII軟件1套,遲鈍的腦子1哈佛結(jié)構(gòu)(圖源:網(wǎng)絡(luò) input output[31:0] output[31:0]output[31:0] //tocheckdata_memoutput[31:0]output[31:0] output[6:0] [31:0] sc_cpucpu(clock,resetn,inst,memout,pc,wmem,aluout,data); //CPUsc_instmemimem(pc,inst,clock,mem_clk,imem_clk); instructionmemory.sc_datamemdmemout_port0,out_port1,out_port2,in_port0,in_port1,mem_dataout,io_read_data);//datamemory.//這部分模塊定義sevensegsevenseg0(out_port0[7:4],hex1);//第一個結(jié)果輸出的下sevensegsevenseg1(out_port0[3:0],hex0);//低位下sevensegsevenseg2(out_port1[7:4],hex3);sevensegsevenseg3(out_port1[3:0],hex2);sevensegsevenseg4(out_port2[7:4],hex5);sevensegsevenseg5(out_port2[3:0],hex4);CPU設(shè)同樣參考老師給出的代碼,對照學(xué)習(xí)了如下圖所示的單周期CPU結(jié)構(gòu)單周期CPU(圖源:課件modulesc_cpuinput[31:0]inst,mem;inputclock,resetn;output[31:0]pc,alu,data;outputwmem;wire wire wire wire wire[31:0] sa={27'b0,inst[10:6]};//extendto32bitsfromsaforshiftinstruction e= t&inst[15]; //positiveornegativesignattsignalwire imm= //high16signwire[31:0] offset={imm[13:0],inst[15:0],1'b0,1'b0}; signextend)wire immediate={imm,inst[15:0]};//signextendtohighdff32ip ,clock,resetn,pc);//defineaD-registerforassignp4=pc+ //assignadr=p4+ //wire[31:0]jpc={p4[31:28],inst[25:0],1'b0,1'b0};//jsc_cucu mux2x32alu_b(data,immediate,aluimm,alub);mux2x32alu_a(ra,sa,shift,alua);mux2x32link(alu_mem,p4,jal,res);//寫回前的多選器mux2x5reg_wnassignwn=reg_dest|{5{jal}};//jal:r31<-- //31ormux4x32 regfilerf(inst[25:21],inst[20:16],res,wn,wreg,clock,resetn,ra,data);alual_unit(alua,alub,aluc,alu,zero);CU設(shè)CU組件根據(jù)op和func輸入產(chǎn)生控制信號,具體賦值則根據(jù)給出真值表進(jìn)行CU信號產(chǎn)生真值表(圖源modulesc_cu(op,func,z,wmem,wreg,regrt,m2reg,aluc,shift,aluimm,pcsource,jal, input[5:0] output[3:0]output[1:0]wirer_type=wirei_add=r_type&func[5]&~func[4]&~func[3]~func[2]&~func[1]& wirei_sub=r_type&func[5]&~func[4]&~func[3]~func[2]&func[1]& wirei_and=r_type&func[5]&~func[4]&~func[3]func[2]&~func[1]& wirei_or=r_type&func[5]&~func[4]&~func[3]func[2]&~func[1]& wirei_xor=r_type&func[5]&~func[4]&~func[3]func[2]&func[1]& wirei_sll=r_type&~func[5]&~func[4]&~func[3]~func[2]&~func[1]& wirei_srl=r_type&~func[5]&~func[4]&~func[3]~func[2]&func[1]& wirei_sra=r_type&~func[5]&~func[4]&~func[3]~func[2]&func[1]& wirei_jr=r_type&~func[5]&~func[4]&func[3]~func[2]&~func[1]& wirei_addi=~op[5]&~op[4]&op[3]&~op[2]&~op[1]&wirei_andi=~op[5]&~op[4]&op[3]&op[2]&~op[1]&=~op[5]&~op[4]&op[3]&op[2]&~op[1]&=~op[5]&~op[4]&op[3]&op[2]&op[1]&=op[5]&~op[4]&~op[3]&~op[2]&op[1]&=op[5]&~op[4]&op[3]&~op[2]&op[1]&=&&~op[3]&op[2]&&~op[0];=&&~op[3]&op[2]&&op[0];=&&op[3]&op[2]&op[1] =&&~op[3]&~op[2]&&~op[0];=&&~op[3]&~op[2]&&op[0];assignpcsource[1]=i_jr|i_j|assignpcsource[0]=(i_beq&z)|(i_bne&~z)|i_j|i_jalassignwreg=i_add|i_sub|i_and|i_or |i_xor|i_sll|i_srl|i_sra|i_addi|i_andi|i_ori|i_xori|i_lw|i_lui|i_jal;assignaluc[3]=assignaluc[2]=i_or|i_ori|i_lui|i_srl|i_sra|assignaluc[1]assignaluc[1]=i_xor|i_sll|i_srl|i_sra|i_xori|assignaluc[0]=i_and|i_or|i_srl|i_sll|i_sra|i_andi|assign =i_sll|i_srl|i_sraassign assignassignassignassign=i_addi|i_andi|i_ori|i_xori|i_lw|i_sw|=i_addi|i_lw|i_sw|i_beq|===i_addi|i_andi|i_ori|i_xori|i_lw|i_sw|=ALU設(shè)modulemodulealuinput[31:0]input[3:0]output[31:0] reg[31:0] always@(aorbor//4'b1111:s=$signed(b)>>> //1111SRA:rd<-(rt>>default:s=if(s==0)z=elsez= s=a+s=a-s=a&s=a|s=a^s=bLUI:imm<<s=bs=b內(nèi)存MEM和I/O端口時,采用相同的指令,區(qū)分是MEM還是I/O端口,由具體modulemoduleio_input_reginput[31:0] input[3:0]output[31:0]reg in_reg0;//inputreg in_reg1;//inputio_input_muxalways@(posedgein_reg0{28'b0,in_port0}輸入端口在io_clk上升沿時進(jìn)行數(shù)據(jù)鎖//moreprts可根據(jù)需要設(shè) 的輸入端口moduleinput[31:0]a0,a1;input[5:0]sel_addr;output[31:0]y;reg always@case(sel_addr)6'b110000:y=6'b110001:y=//mores可根據(jù)需要設(shè)的端口modulemoduleio_output_reginput[31:0] //resetsignal.ifnecessary,canusethissignaltoresettheoutputtooutput[31:0]out_port0,out_port1,out_port2;reg[31:0] out_port0;//outputport0reg[31:0] out_port1;//outputport1reg[31:0] out_port2;//outputport2always@(posedgeio_clkornegedgeif(clrn==begin//out_port0out_port1<=0;//resetalltheoutputporttoout_port2if(write_io_enable==case6'b10000

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論