1、计算机组成原理实验报告电子科技大学计算机科学与工程学院标 准 实 验 报 告(实验)课程名称: 计算机组成原理综合实验课程 电子科技大学教务处制表电 子 科 技 大 学实 验 一 报 告学生姓名:ZYZ 学 号:* 指导教师:CAG实验地点:主楼A2-411 实验时间:2016年11月20日一、实验室名称:A2-411。二、实验项目名称:Verilog设计简介。三、实验学时:实验学时是3学时。四、实验原理:Verilog设计硬件电路需要创建工程,模块和约束文件。一位二选一多路器的实验原理图和真值表如下图1所示:二选一多路器的逻辑表达式为,根据逻辑表达式可得电路图如图2所示:五、实验目的通过本实
2、验,掌握用Verilog HDL硬件描述语言设计硬件电路的基本方法和FPGA开发板的基本使用。实现32位2选1多路选择器、5位2选1多路选择器、32位寄存器堆、ALU等部件的设计,掌握其基本方法和技能,加深对所学知识的理解。六、实验内容基本器件的设计:32位2选1多路选择器5位2选1多路选择器32位寄存器堆ALU七、实验器材(设备、元器件):1.安装了Xilinx ISE Design Suite 13.4的PC机一台2.FPGA开发板:Anvyl Spartan6/XC6SLX453.计算机与FPGA开发板通过JTAG(Joint Test Action Group)接口连接,其连接方式如图
3、3所示。图 3 PC计算机与FPGA开发板的连接八、实验步骤1.新建工程(New Project)启动ISE Design Suite 13.4软件,然后选择菜单FileNew Project,弹出New Project Wizard对话框,选择Verilog Module,并在对话框中输入工程名ALU,并指定工作路径D:ALU。2.基本功能器件的设计与实现(1)32位2选1多路选择器在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:MUX32_2_1,此时开发环境的工程管理区中将有一个MUX32_2_1(MUX32
4、_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:module MUX32_2_1(input 31:0 A,input 31:0 B, input Sel,output31:0 O );assign O = Sel? B : A;endmodule代码输入完成后,在工程管理区选中要检查的模块,检查Verilog HDL语法( Synthesize XST Check Syntax)。检查通过后,进行Verilog HDL代码综合。在工程管理区的View中选择Implementation,并选中MUX32_2_1模块,进行综合(Synthesize)。综合通过后,查看RT
5、L层电路(Synthesize XST View RTL Schematic),结果如图4所示。对模块MUX32_2_1进行仿真(Simulation),在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,在New Source Wizard对话框中选择Verilog Test Fixture,输入测试文件名:MUX_32_2_1_tb,单击Next按钮,进入下一个对话框,选择要测试的模块MUX_32_2_1,点击Next按钮,再点击Finish按钮,ISE会在源代码编辑区自动生成测试模块的代码。在模块MUX_32_2_1_tb中添加如下测试代码:module MUX
6、32_2_1_tb; reg 31:0 A; reg 31:0 B; reg Sel; wire 31:0 O; / Instantiate the Unit Under Test (UUT) MUX32_2_1 uut ( .A(A), .B(B), .Sel(Sel), .O(O) ); initial begin / Initialize Inputs A = 0; B = 0; Sel = 0; / Wait 100 ns for global reset to finish #100; / Add stimulus here A = 32000000000; B = 32h00000
7、000; Sel = 1b0; #100; A = 32000000000; B = 32h00000000; Sel = 1b1; #100; A = 32000000000; B = 32h00000001; Sel = 1b1; #100; end endmodule然后进行仿真,将工程管理区中View选项设置为Simulation,仿真参数设置完后,选中MUX32_2_1_tb模块,双击Simulate Behavioral Model,得到仿真结果,如图5所示:图 5模块MUX32_2_1的仿真结果(2)5位2选1多路选择器在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New
8、Source命令,创建一个Verilog Module模块,名称为:MUX5_2_1,此时开发环境的工程管理区中将有一个MUX5_2_1(MUX5_2_1.v)模块,双击该模块,然后在源代码编辑区编写实现该模块的代码:然后输入其实现代码:module MUX5_2_1(input 4:0 A,input 4:0 B, input Sel,output4:0 O );assign O = Sel? B : A;endmodule在ISE集成开发环境中,进行语法检查( Synthesize XST Check Syntax),检查通过后,对模块MUX5_2_1进行综合(Synthesize XST
9、 View RTL Schematic),得到RTL视图,结果如图6所示。图 6模块MUX5_2_1的综合(Synthesize)结果在ISE集成开发环境中,对模块MUX5_2_1进行仿真(Simulation)。首先输入如下测式代码: module MUX5_2_1_tb; reg 4:0 A; reg 4:0 B; reg Sel; wire 4:0 O; / Instantiate the Unit Under Test (UUT) MUX32_2_1 uut ( .A(A), .B(B), .Sel(Sel), .O(O) ); initial begin / Initialize I
10、nputs A = 0; B = 0; Sel = 0; / Wait 100 ns for global reset to finish #100; / Add stimulus here A = 500001; B = 500000; Sel = 1b0; #100; A = 500001; B = 500000; Sel = 1b1; #100; A = 500000; B = 500001; Sel = 1b1; #100; end endmodule然后进行仿真,仿真结果如图7所示。图 7模块MUX32_2_1的仿真结果(3)32位寄存器堆在工程管理区任意位置单击鼠标右键,在弹出的菜
11、单中选择New Source命令,创建一个Verilog Module模块,名称为:RegFile,输入其实现代码: module RegFile( input 4:0 Rn1, Rn2, Wn, input Write, input 31:0 Wd, output 31:0 A, B, input Clock ); reg 31:0 Register1:31; assign A = ( Rn1 = 0 )? 0: RegisterRn1; assign B = ( Rn2 = 0 )? 0: RegisterRn2; always ( posedge Clock) begin if (Wri
12、te) & ( Wn != 0) RegisterWn = Wd; end endmodule语法通过后,对模块RegFile进行综合(Synthesize XST View RTL Schematic),得到RTL视图,结果如图8所示。图 8模块RegFile的综合(Synthesize)结果进行语法检查( Synthesize XST Check Syntax),检查通过后,对模块RegFile进行仿真(Simulation),输入如下测式代码: module RegFile_tb; / Inputs reg 4:0 Rn1; reg 4:0 Rn2; reg 4:0 Wn; reg Wr
13、ite; reg 31:0 Wd; reg Clock; / Outputs wire 31:0 A; wire 31:0 B; / Instantiate the Unit Under Test (UUT) RegFiel uut ( .Rn1(Rn1), .Rn2(Rn2), .Wn(Wn), .Write(Write), .Wd(Wd), .A(A), .B(B), .Clock(Clock) ); initial begin / Initialize Inputs Rn1 = 0; Rn2 = 0; Wn = 0; Write = 0; Wd = 0; Clock = 0; / Wai
14、t 100 ns for global reset to finish #100; / Add stimulus here Rn1 = 0; Rn2 = 1; Wn = 1; Write = 1; Wd = 2; Clock = 1; / Wait 100 ns for global reset to finish #100; Rn1 = 0; Rn2 = 0; Wn = 2; Write = 1; Wd = 3; Clock = 1; / Wait 100 ns for global reset to finish #100; Rn1 = 1; Rn2 = 0; Wn = 0; Write = 0; Wd = 1; Clock = 1; / Wait 100 ns for
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1