计算机组成原理实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子科技大学计算机科学与工程学院标准实验报告(实验)课程名称:计算机组成原理综合实验课程电子科技大学教务处制表2电子科技大学实验一报告学生姓名:ZYZ学号:2014060103026指导教师:CAG实验地点:主楼A2-411实验时间:2016年11月20日一、实验室名称:A2-411。二、实验项目名称:Verilog设计简介。三、实验学时:实验学时是3学时。四、实验原理:Verilog设计硬件电路需要创建工程,模块和约束文件。一位二选一多路器的实验原理图和真值表如下图1所示:二选一多路器的逻辑表达式为c=sa+s̅b,根据逻辑表达式可得电路图如图2所示:图1一位二选一多路器原理图及真值表图2二选一多路器电路图3五、实验目的通过本实验,掌握用VerilogHDL硬件描述语言设计硬件电路的基本方法和FPGA开发板的基本使用。实现32位2选1多路选择器、5位2选1多路选择器、32位寄存器堆、ALU等部件的设计,掌握其基本方法和技能,加深对所学知识的理解。六、实验内容基本器件的设计:32位2选1多路选择器5位2选1多路选择器32位寄存器堆ALU七、实验器材(设备、元器件):1.安装了XilinxISEDesignSuite13.4的PC机一台2.FPGA开发板:AnvylSpartan6/XC6SLX453.计算机与FPGA开发板通过JTAG(JointTestActionGroup)接口连接,其连接方式如图3所示。图3PC计算机与FPGA开发板的连接八、实验步骤1.新建工程(NewProject)启动ISEDesignSuite13.4软件,然后选择菜单File→NewProject,弹出NewProjectWizard对话框,选择VerilogModule,并在对话框中输入工程名ALU,并指定工作路径D:\ALU。42.基本功能器件的设计与实现(1)32位2选1多路选择器在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:MUX32_2_1,此时开发环境的工程管理区中将有一个MUX32_2_1(MUX32_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:moduleMUX32_2_1(input[31:0]A,input[31:0]B,inputSel,output[31:0]O);assignO=Sel?B:A;endmodule代码输入完成后,在工程管理区选中要检查的模块,检查VerilogHDL语法(Synthesize→XST→CheckSyntax)。检查通过后,进行VerilogHDL代码综合。在工程管理区的View中选择Implementation,并选中MUX32_2_1模块,进行综合(Synthesize)。综合通过后,查看RTL层电路(Synthesize→XST→ViewRTLSchematic),结果如图4所示。对模块MUX32_2_1进行仿真(Simulation),在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,在NewSourceWizard对话框中选择VerilogTestFixture,输入测试文件名:MUX_32_2_1_tb,单击Next按钮,进入下一个对话框,选择要测试的模块MUX_32_2_1,点击Next按钮,再点击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。在模块MUX_32_2_1_tb中添加如下测试代码:moduleMUX32_2_1_tb;图4模块MUX32_2_1的综合(Synthesize)结果5reg[31:0]A;reg[31:0]B;regSel;wire[31:0]O;//InstantiatetheUnitUnderTest(UUT)MUX32_2_1uut(.A(A),.B(B),.Sel(Sel),.O(O));initialbegin//InitializeInputsA=0;B=0;Sel=0;//Wait100nsforglobalresettofinish#100;//AddstimulushereA=32'000000000;B=32'h00000000;Sel=1'b0;#100;A=32'000000000;B=32'h00000000;Sel=1'b1;#100;A=32'000000000;B=32'h00000001;Sel=1'b1;#100;endendmodule然后进行仿真,将工程管理区中View选项设置为Simulation,仿真参数设置完后,选中MUX32_2_1_tb模块,双击SimulateBehavioralModel,得到仿真结果,如图5所示:6图5模块MUX32_2_1的仿真结果(2)5位2选1多路选择器在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:MUX5_2_1,此时开发环境的工程管理区中将有一个MUX5_2_1(MUX5_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:然后输入其实现代码:moduleMUX5_2_1(input[4:0]A,input[4:0]B,inputSel,output[4:0]O);assignO=Sel?B:A;endmodule在ISE集成开发环境中,进行语法检查(Synthesize→XST→CheckSyntax),检查通过后,对模块MUX5_2_1进行综合(Synthesize→XST→ViewRTLSchematic),得到RTL视图,结果如图6所示。图6模块MUX5_2_1的综合(Synthesize)结果在ISE集成开发环境中,对模块MUX5_2_1进行仿真(Simulation)。首先输入如下测式代码:moduleMUX5_2_1_tb;reg[4:0]A;reg[4:0]B;regSel;7wire[4:0]O;//InstantiatetheUnitUnderTest(UUT)MUX32_2_1uut(.A(A),.B(B),.Sel(Sel),.O(O));initialbegin//InitializeInputsA=0;B=0;Sel=0;//Wait100nsforglobalresettofinish#100;//AddstimulushereA=5'00001;B=5'00000;Sel=1'b0;#100;A=5'00001;B=5'00000;Sel=1'b1;#100;A=5'00000;B=5'00001;Sel=1'b1;#100;endendmodule然后进行仿真,仿真结果如图7所示。图7模块MUX32_2_1的仿真结果8(3)32位寄存器堆在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:RegFile,输入其实现代码:moduleRegFile(input[4:0]Rn1,Rn2,Wn,inputWrite,input[31:0]Wd,output[31:0]A,B,inputClock);reg[31:0]Register[1:31];assignA=(Rn1==0)?0:Register[Rn1];assignB=(Rn2==0)?0:Register[Rn2];always@(posedgeClock)beginif((Write)&&(Wn!=0))Register[Wn]=Wd;endendmodule语法通过后,对模块RegFile进行综合(Synthesize→XST→ViewRTLSchematic),得到RTL视图,结果如图8所示。图8模块RegFile的综合(Synthesize)结果进行语法检查(Synthesize→XST→CheckSyntax),检查通过后,对模块RegFile进行仿真(Simulation),输入如下测式代码:moduleRegFile_tb;//Inputsreg[4:0]Rn1;9reg[4:0]Rn2;reg[4:0]Wn;regWrite;reg[31:0]Wd;regClock;//Outputswire[31:0]A;wire[31:0]B;//InstantiatetheUnitUnderTest(UUT)RegFieluut(.Rn1(Rn1),.Rn2(Rn2),.Wn(Wn),.Write(Write),.Wd(Wd),.A(A),.B(B),.Clock(Clock));initialbegin//InitializeInputsRn1=0;Rn2=0;Wn=0;Write=0;Wd=0;Clock=0;//Wait100nsforglobalresettofinish#100;//AddstimulushereRn1=0;Rn2=1;Wn=1;Write=1;Wd=2;Clock=1;//Wait100nsforglobalresettofinish#100;Rn1=0;Rn2=0;Wn=2;Write=1;Wd=3;10Clock=1;//Wait100nsforglobalresettofinish#100;Rn1=1;Rn2=0;Wn=0;Write=0;Wd=1;Clock=1;//Wait100nsforglobalresettofinish#100;Rn1=1;Rn2=1;Wn=1;Write=1;Wd=5;Clock=1;//Wait100nsforglobalresettofinish#100;Rn1=0;Rn2=0;Wn=0;Write=1;Wd=0;Clock=0;//Wait100nsforglobalresettofinish#100;endendmodule然后进行仿真,仿真结果如图9所示。图9模块RegFile的仿真结果11(4)ALU在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择NewSource命令,创建一个VerilogModule模块,名称为:ALU,输入其实现代码:moduleALU(input[31:0]A,B,input[2:0]ALU_operation,output[31:0]Result,outputZero);assignResult=(ALU_operation==3'b000)?A+B:(ALU_operation==3'b100)?A-B:(ALU_operation==3'b001)?A&B:(ALU_operation==3'b101)?A|B:(ALU_operation==3'b010)?A^B:(ALU_operation==3'b110)?{B[15:0],16'h0}:32'hxxxxxxxx;assignZero=~|Result;endmodule进行语法检查(Synthesize→XST→CheckSyntax),检查通过后,对模块ALU进行仿真(Simulation),输入如下测式代码:moduleALU_tb;//Inputsreg[31:0]A;reg[31:0]B;reg[2:0]ALU_operation;//Outputswire[31:0]Result;wireZero;//InstantiatetheUnitUnderTest(UUT)ALUuut(.A(A),.B(B),.ALU_operation(ALU_operation),.Result(Result),.Zero(Zero));initialbegin//InitializeInputsA=0;12B=0;ALU_operation=3'b000;//Wait100nsforglobalresettofinish#100;//AddstimulushereA=1;B=2;ALU_operation=3'b000;//Wait100nsforglobalresettofini

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功