流水线实验报告_第1页
流水线实验报告_第2页
流水线实验报告_第3页
流水线实验报告_第4页
流水线实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TOC\o"1-2"\h\z\u实验总 心得体 I/ODE1-SOC实验板1Verilogquartus20MIPS5CPUI/OI/OCPU与外I/OlwDE2实验板上的按键等输入设备信息。即将外部设备状态,读到CPU内部寄存器。利用设计的I/O端口,通过sw指令,输出对DE2实验板上的LED灯等输出设备的控制信号(或数据信息CPU内部的寄存器,写入到外部设备的相应控制寄存器(或可利用自己编写的程序代码,在自己设计的CPU上,实现对板载输入开关或按键的状态输入,并将判别或处理结果,利用板载LED灯或7段LED数码管显示出来。例如,将一路4bit二进制输入与另一路4bit二进制输入相加,利用两组分别2个LED数码管以10进MIPS20pptCPU设计图(如下所示)Verilog语言完成每个阶段和每个流水线寄之后,再添加输入输出的I/O端口,使得CPU可以与外部设备交互,实现对板载输入开关或按键的状顶层文件 其中共设置了4个输入端口:resetn,clock,in_port0,in_port1。其中in_port0,in_port1均为5位外部输入,分别连接到FPGA板的5个开关上。resetn为复位信号连接到FPGA板的按钮KEY0上,clock为CPU的时钟信号,而器时钟信号mem_clock则由CPU时钟信号取反得到。设置6个输出端口:hex0-hex5均为7位输出信号,分别接到FPGA板上的6个7段数码管上。每两个数码管对应一个外部输出:out_port0,out_port1,out_port2,分别表示其十位和个位,使用之前实验中所用到的sevenseg.v进行转换。I/O共设置两个输入端口:in_port0,in_port1FPGAloadword指令读入一个5位二进制数,其对应的器地址第[7:2]位分别为:b110000和b110001。共设置三个输出端口:out_port0,out_port1,out_port2,分别对应FPGA板上的两个7段数码管,各可以使用storeword指令显示一个100以内的十进制数,其对应的器地址第[7:2]位分别为:b100000,b100001和b100010。BDF由于使用了顶层文件,BDF设计较为简单,仅仅使用了 Verilog55个流水线阶段的实例化,通过时钟信号同步,使得各阶段流水运作,信息可以在各阶段间传递。同时也实例化sevenseg.v模块用于在7段数码管上输出。puter(resetn,clock,_port,i_pt,hex0,hex1,hex2,hex3,hex4,hex5)resetn,clockinput[4:0]inp,ipotoutput[6:0]hex0,hex1,hex2,hex3,hex4,hex5wire[4:0]_pt,_ptwire[7:0]u_p0,u_pr1,u_p21234567 wire[31:0]i_e_da9wire[31:0]pc,inst,ealu,malu,walu,test模块用于仿真输出的观察信号。缺省为wirewireclock [31:0]bpc,jpc ,pc4,ins模块间互联传递数据或控制信息的信号线,均为32位宽信号。IF取指令阶段。 [31:0]dpc4,da,模块间互联传递数据或控制信息的信号线,均为32位宽信号。ID指令译码阶段。 [31:0]epc4,ea,eb模块间互联传递数据或控制信息的信号线,均为32位宽信号。EXE指令运算阶段。 [31:0]//模块间互联传递数据或控制信息的信号线,均为32位宽信号。MEM数据阶段。 [31:0]wmo,wdi模块间互联传递数据或控制信息的信号线,均为32位宽信号。WB回写寄存器阶段。模块间互联,通过流水线寄存器传递结果寄存器号的信号线,寄存器号(32个)为5bit [3:0模块间互联,通过流水线寄存器传递结果寄存器号的信号线,寄存器号(32个)为5bit [3:0 daluc,ealuc//ID阶段向EXE阶段通过流水线寄存器传递的aluc控制信号,4bit pcsource//CU模块向IF阶段模块传递的PC选择信号,2bit wpcir//CU模块发出的控制流水线停顿的控制信号,使PC和IF/ID流水线寄存器保持不变。 dwreg,dm2reg,dwmem,daluimm,dshift,djal;//id//ID阶段产生,需往后续流水级的信号 ewreg,em2reg,ewmem,ealuimm,eshift,ejal;//exe//来自于ID/EXE流水线寄存器,EXE阶段使用,或需要往后续流水级的信号 mwreg,mm2reg,mwmem;//mem//来自于EXE/MEM流水线寄存器,MEM阶段使用,或需要往后续流水级的信号 wwreg, //wb来自于MEM/WB流水线寄存器,WB阶段使用的信号。assignmm_cc=~clock t ,wpcir,clock,resetn,pc)程序计数器模块,是最前面一级IF流水段的输入。pipeifs (pcsource,pc,bpc,da,jpc ,pc4,ins,mmo);//IF//IF取指令模块,注意其中包含的指令同步ROM存储器的同步信号,//即留给信号半个节拍的传输时间。pipeiireg_ (pc4ins,wpcir,clock,resetndpc4inst); //IF/ID流水线寄存器//IF/ID流水线寄存器模块,起承接IF阶段和ID阶段的流水任务。 isa(mwreg,mrn,ern,ewreg,em2reg,mm2reg,dpc4,instwrn,wdi,ealu,malu,mmo,wwreg,clock,resetnbpc,jpc,pcsource,wpcir,dwreg,dm2reg,dwmem,dalucdaluimm,da,db,dimm,drn,dshift,djal,test)//ID//ID指令译码模块。注意其中包含控制器CU、寄存器堆、及多个多路器等。pipederegdre(dwreg,dm2reg,dwmem,daluc,daluimm,da,db,dimm,drn,dshiftdjal,dpc4,clock,resetn,ewreg,em2reg,ewmem,ealuc,ea,ebeimm,ern0,eshift,ejal,epc4); //ID/EXE流水线寄//ID/EXE流水线寄存器模块,起承接ID阶段和EXE阶段的流水任务。pipeexeexsag(ealuc,ealuimm,ea,eb,eimm,eshift,ern0,epc4,ejal,ern,ealu);//EXE//EXE运算模块。其中包含ALU及多个多路器等。pipeemregmrg(ewreg,em2reg,ewmem,ealu,eb,ern,clock,resetn////EXE/MEM流水线寄存器模块,起承接EXE阶段和MEM pipememmemsa(resetn,mwmem,malu,mb,clock,mm_lok,i_prt,iort,u_por,tpor,u_por,__a; //MEMstage//MEM//MEM数据存取模块。其中包含对数据同步RAM的读写访问。//注意mem_lokpipemwregmw(mwreg,mm2reg,mmo,malu,mrn,clock,resetnwwreg,wm2reg,wmo,walu,wrn)//MEM/WB流水线寄存器模块,起承接MEM阶段和WB阶段的流水任务。//MEM/WB流水线寄存器mux2x32_tae(walu,wmo,wm2reg,wdi)//WB//WB ihtpt[7:0]%100/10,hex1); ut2_w(tpt[7:0]%10,hex0); ihtpt[7:0]%100/10,hex3); ut1_w(tpt[7:0]%10,hex2); ihtpt[7:0]%100/10,hex5); ut0_w(tpt[7:0]%10,hex4);以下以ID/EXE123456789reg[3:0]ealucreg[31:0]ea,eb,eimm,epc4reg[4:0]ern0always@(posedgeclockornegedgeresetnif(resetn==ewreg<=0em2reg<=0eshift<=0ejal<=0ewreg<=dwregem2reg<=ealuimm<=eshift<=dshiftejal<=djalealuc<=dalucea<=eb<=epc4<=dpc4ern0<=drn阻塞通过一个ID阶段单独设计的模块bubblecontrol实现,需要判断ID阶段的指令需要的寄存器号与EXE阶段的指令之后写回的寄存器相同,同时判断上一条写回的数据是从器中的,以及当前指令需要使用该寄存器而不是立即数进行EXE阶段的运算。如果满足上述条件需要阻塞流水线。当阻塞发生时,wpcir信号被值为1,此时程序计数器寄存器和IF/ID寄存器将不再向下一阶段传递信息,即下一周期IF阶段和ID阶段将重复执行当前周期的指令。同时当前ID阶段所有的控制信号将被,modulemodulebubblecontrol(rs,rt,ewn,ewreg,em2reg,imme, ze);input[4:0]rs,rt,ewn;inputewreg,em2reg,imme; ze; zealwaysif((rs==ewn||(rt==ewn&&~imme))&&ewreg&&em2reg)ze=1;ze=023456789线而可以通过转发来解决。转发可以将EXE或MEM阶段产生的结果前推到ID阶段,主要有三种情况:将上一条指令的ALU运算结果从EXE阶段前推到当前指令ID阶段,对应fw=01ALUMEM阶段前推到当前指令IDfw=10MEMMEMIDfw=11。modulemoduleforwardunit(ir,er,mr,ewreg,em2reg,mwreg,mm2reg,fwd);input[4:0]ir,er,mr;inputewreg,mwreg,em2regoutput[1:0]fwd;reg[1:0]fwd;alwaysif((ewreg==1)&&(ir!=0)&&(ir==er)&&(em2reg==0))fwd=2’b01;if((mwreg==1)&&(mm2reg==0)&&(ir!=0)&&(ir==mr))fwd=2’b10;if((mwreg==1)&&(mm2reg==1)&&(ir!=0)&&(ir==mr))fwd=2’b11;fwd=2’b0023456789 I/Omoduleiin_r(addr,moduleiin_r(addr,ioc,i_ra_,i_pot,i_pot)iim _mu_muxx2_rg,_rg,addr[7:2],i_rdtaalways@(posedgei_clkire[31:5]<=27’b0ire[31:5]<=27’b0ire[4:0]<=ipt //输入端口在i_c上升沿时进行数据锁存ire[4:0]<=ipt //输入端口在i_c上升沿时进行数据锁存//moreports,可根据需要设 的输入端口moduletmx(a,a1,s_,y); [31:0]a0,a1;123addr4i_c5iport,nport6[4:0i_ada78ireg //input9ireg //input[5:0s_a[31:0[31:0always@case(r6’b110000:y=a06’b110001:y=a1//moreports,可根据需要设计的端口。io_output_reg.vout_port0,out_port1out_port2[7:2]位分别为b100000,b100001和b100010,根据输出的地址决定需要执行写操作的端口。 moduleo_uu_r(addr,datain,ii_ab,ioc,clrn,o_por,t_pr,utpor)2 [31:0 addr,datain ieoeb,ioc clrn //resetsignal.ifnecessary,canusethissignaltoresettheoutputto0 [7:0 u_po0,u_p1,u_ot7 [7:0 o_prt //output [7:0 o_prt //output [7:0 o_prtalways@(posedgei_cornegedgeclrnif(clrn== //uprtuprtuprt//resetalltheoutputportto0if(eonb==case(addr[7:2]6’b100000:u_pt<=datain//6’b100001:u_pt<=datain//6’b100010:u_pt<=datain////moreports,可根据需要设计的输出端口。 10:3c010000;%(00)lui$1,#addressofdata[0]21 ;%ori$4,$1,#addressofdata[0]32 ;%addi$5,$0,#counter430c000018;%(0calljal#callfunction54ac820000;%sw$2,0($1#storeresult658c890000;%lw$9,0($1#checksw76;%sub$8,$9,#sub:$8<−$9−$487;%(1addi$5,$0,#counter9820a5ffff;%loop2addi$5,$5,#counter−1934a8ffff;%ori$8,$5,0xfff#zero−extend:0000ffffA;%xori$8,$8,#zero−extend:0000aaaaB2009ffff;%(2addi$9,$0,#sign−extend:ffffffffC312affff;%andi$10,$9,0xfff#zero−extend:0000ffffD;%or$6,$10,#or:ffffffffE;%xor$8,$10,#xor:ffff0000F10a00002;%beq$5,$0,s#if$5=0,gotoshift10;%(3and$7,$10,#and:0000ffff11;%j#jumploop2122005ffff;%shiftaddi$5,$0,#$5=ffffffff13000543c0;%(4sll$8,$5,#<<15=fff

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论