电子科大-系统结构实验-补全流水线结构图(共7页).docx
精选优质文档-倾情为你奉上实验报告课程名称:计算机系统结构实验学院:计算机科学与工程学院专业:计算机科学与技术指导教师:好老师学生姓名:爱学习的小学生 66实验成绩:日期:2017年5月5日电子科技大学计算机学院实验中心 电 子 科 技 大 学实 验 报 告一、 实验项目名称:流水线代码分析二、 实验室名称:主楼A2-412 实验时间:2017年5月5日三、 实验目的1. 熟悉代码中的模块名和接口信号,并理解其作用;2. 通过补全流水线的模块图,进一步熟悉代码中各模块的连接细节,加强对流水线CPU工作原理的掌握。四、 实验原理(一) Verilog HDL知识回顾(1)5种抽象的级别:系统级、算法级、RTL级、门级、开关级(2)功能:1. 可描述顺序执行或并行执行的程序结构;2. 用延迟表达式或事件表达式来明确地控制过程的启动时间;3. 通过命名的事件来触发其他过程里的激活行为或停止行为。4. 提供了条件(如if_else,case等)循环程序结构;5. 提供了可带参数并且非零延续时间的任务(task)程序结构;6. 提供了可定义新的操作符的函数(function)结构;7. 提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。8. 提供了一套完整的组合型原语(Primitive);(二) Verilog HDL的基本语法(三) 流水线CPU原理图(四) ISE的使用(五) 流水线CPU工作原理五、 实验内容1. 列出代码中的模块名和接口信号,并写出他们的作用;2. 补全流水线的模块图: a)在现有图的基础上,在对应模块的输入输出接口处补全端口的名字; b)在现有图的基础上,补全未画出的模块和信号连线。3. 对补全的流水线模块图作必要的文字说明,解释其工作原理。六、 实验器材(设备、元器件)ISE Design Suite 14.7集成开发环境,编程语言:Verilog HDL硬件描述语言七、 实验步骤1.看懂老师给的CPU源代码;2.仔细对比各模块的形参,与最顶层模块中的实参,列出代码中的模块名和接口信号,并写出他们的作用;3.根据代码补充完善“流水线结构补充图”:a)在现有图的基础上,在对应模块的输入输出接口处补全端口的名字;b)在现有图的基础上,补全未画出的模块和信号连线。4. 对补全的流水线模块图作必要的文字说明,解释其工作原理。八、 实验数据及结果分析(一) 列出代码中的模块名和接口信号,并写出他们的作用:1. module pipelinedcpu(clock,resetn,pc,inst,ealu,malu,walu);模块名:pipelinedcpu接口信号: clock,resetn,pc,inst,ealu,malu,walu作用:规定统一的接口信号,连接各个模块,实现CPU总体结构2. module pipepc(npc,clk,clrn,pc);模块名:pipepc接口信号: npc,clk,clrn,pc作用:prog_cnt,实现程序计数器PC3. module pipeif(pcsource,pc,bpc,rpc,jpc,npc,pc4,ins);模块名:pipeif接口信号: pcsource,pc,bpc,rpc,jpc,npc,pc4,ins作用:if_stage,实现取指IF级4. module pipeir(pc4,ins,clk,clrn,dpc4,inst);模块名:pipeir接口信号: pc4,ins,clk,clrn,dpc4,inst作用:inst_reg,实现IF级与ID级之间的寄存器,即指令寄存器IR5. module pipeid(dpc4,inst,wrn, wdi,wwreg,clk,clrn,bpc,jpc,pcsource, wreg,m2reg,wmem,aluc,aluimm,a,b,imm,rn, shift,jal,rsrtequ);模块名:pipeid接口信号: dpc4,inst,wrn,wdi,wwreg,clk,clrn,bpc,jpc,pcsource,wreg,m2reg,wmem,aluc,aluimm,a,b,imm,rn, shift,jal,rsrtequ作用:id_stage,实现译码ID级6. module pipedereg(dwreg,dm2reg,dwmem,daluc,daluimm,da,db,dimm,drn, dshift,djal,dpc4,clk,clrn,ewreg,em2reg,ewmem, ealuc,ealuimm,ea,eb,eimm,ern,eshift,ejal,epc4);模块名:pipedereg接口信号:dwreg,dm2reg,dwmem,daluc,daluimm,da,db,dimm,drn,dshift,djal,dpc4,clk,clrn,ewreg,em2reg,ewmem, ealuc,ealuimm,ea,eb,eimm,ern,eshift,ejal,epc4作用:de_reg,实现ID级与EXE级之间的寄存器7. module pipeexe(ealuc,ealuimm,ea,eb,eimm,eshift,ern0,epc4,ejal,ern,ealu,z);模块名:pipeexe接口信号: ealuc,ealuimm,ea,eb,eimm,eshift,ern0,epc4,ejal,ern,ealu,z作用:exe_stage,实现指令执行EXE级8. module pipeemreg(ewreg,em2reg,ewmem,ealu,eb,ern,clk,clrn, mwreg,mm2reg,mwmem,malu,mb,mrn);模块名:pipeemreg接口信号:ewreg,em2reg,ewmem,ealu,eb,ern,clk,clrn,mwreg,mm2reg,mwmem,malu,mb,mrn作用:em_reg,实现EXE级与MEM级之间的寄存器9. module IP_RAM(we,addr,datain,clk,dataout);模块名:IP_RAM接口信号: we,addr,datain,clk,dataout作用:mem_stage,实现存储器访问MEM级10. module pipemwreg(mwreg,mm2reg,mmo,malu,mrn,clk,clrn, wwreg,wm2reg,wmo,walu,wrn);模块名:pipemwreg接口信号: mwreg,mm2reg,mmo,malu,mrn,clk,clrn,wwreg,wm2reg,wmo,walu,wrn作用:mw_reg,实现MEM级与WB级之间的寄存器11. module mux2x32(a0,a1,s,y);模块名:mux2x32接口信号:a0,a1,s,y作用:wb_stage,实现结果写回WB级,选择结果写回的来源是ALU还是数据存储器(二)补全流水线的模块图: a)在现有图的基础上,在对应模块的输入输出接口处补全端口的名字;b)在现有图的基础上,补全未画出的模块和信号连线。具体见下图:(三)对补全的流水线模块图作必要的文字说明,解释其工作原理:流水线处理机组成结构如后上图,把执行指令的过程分为5部分,使其能够按流水线方式执行指令:(1)IF(instruction fetch)取指令;(2) ID(instruction decode)指令译码并读寄存器操作数;(3)EXE(execution)执行;(4) MEM(memory access)存储器访问;(5)WB(write back)写回。指令执行从左移向右通过电路,但有两处从右向左的例外:(1)WB级:把运算结果写回寄存器堆中;(2)IF级:把经过计算的下一条指令的地址写入程序计数器PC中。流水线处理机的最大特点:每一个时钟周期取出一条指令来执行。所有的指令按取出的先后次序通过数据路径。依照指令类型的不同,每种指令在执行过程中可能会用到数据路径的不同的部分。九、 总结、改进建议及心得体会(一) 总结:经过努力,完成了对源代码各个模块和接口信号的分析,补全了流水线CPU的结构图,较好的完成了本次实验。(二) 改进建议:根据代码画流水线结构图难度不大,但是操作费时较久,可以考虑改为根据完整的流水线结构示意图补全代码,难度会更大。(三) 心得体会:1、通过列出代码中的模块名和接口信号、并分析他们的作用,我对流水线CPU的工作原理有了更好的理解,也进一步熟悉了使用Verilog HDL模拟流水线CPU的方法。2、通过补全流水线模块图,对Visio的操作水平有一定的提升。专心-专注-专业