湘潭大学计算机组成原理试卷,湘潭大学 计算机组成与原理 控制器实验 实验报告...

《湘潭大学 计算机组成与原理 控制器实验 实验报告》由会员分享,可在线阅读,更多相关《湘潭大学 计算机组成与原理 控制器实验 实验报告(10页珍藏版)》请在人人文库网上搜索。

1、湘 潭 大 学 实 验 报 告 课程名称 计算机原理与设计 实验名称 控制器实验 页数 专业 班级 同组者姓名 无 组别 学号 姓名 实验日期 一、 实验目的 1. 了解多周期 MIPS CPU 的控制部件的总体结构。 2. 掌握多周期 MIPS CPU 的控制部件的状态转移。 3. 掌握用 Verilog HDL 实现有限状态机的常用方法。 4. 验证实验台多周期 MIPS CPU 控制部件的控制信号产生功能。 二、 实验要求 1、做好实验预习:要求掌握周期 MIPS CPU 的控制部件的总体结构以及状态转 移,并熟悉本实验中所用的控制台开关的作用和使用方法。 2、记录实验结果,包括以下内容。

2、: 根据操作结果填好控制信号的真值表; 按理论分析值给出对应的仿真波形。 3、写出实验报告,包括以下内容: 列表比较实验数据的理论分析值与实验结果值;并对结果进行分析。实验结果 与理论 分析值比较,有没有不同?为什么? 通过本实验,你对周期 MIPS CPU 的控制部件的总体结构有何认识,有什么心 得体会? 三、 实验原理 多周期 MIPS CPU 的控制部件的总体结构如图 3-2-1 所示。 多周期 MIPS CPU 的控制部件的状态转移如图 3-2-2 所示。 本实验根据状态及指令直接对 控制信号赋值,使用中间变量 next_state,意为下一状态。 在当前状态中,根 据指令对 next。

3、_state 赋值,并在每个时钟上升沿把 next_state 打入状态寄 存 器, 这是用 Verilog HDL 实现有限状态机时常用的方法。 模块设计如图 3-2-3 所 示。 图 3-2-1 多周期 MIPS CPU 的控制部件的总体结构图 图 3-2-2 多周期 MIPS CPU 的控制部件的状态状态转移图 四、 实验内容 (1)设计元件 在 Quartus II 环境下,用文本输入编辑器 Text Editor 输入 mccu.v 单元文件,编译 Verilog HDL 文件,并将 mccu.v 单元文件制作成可调用的原理图元件。 (2)以原理图方式建立顶层文件工程 选择图形方式。。

4、根据图 3-2-3 输入实验 电路图,从 Quartus II 的基本元件库中将各元件调 入图形编辑窗口、连线,添 加输入输出引脚。 将所设计的图形文件保存到原先建立的文件夹中,将当前文 件设置成工程文件,以后的 操作就都是对当前工程文件进行的。 (3) 器件选择 选择 Cyclone 系列, 在 Devices 中选择器件 EP1C12QC240C8。 编译,引脚锁定,再编译。 引脚锁定后需要再次进行编译,才能将锁定信息确 定下来,同时生成芯片编程/配置所需要 的各种文件。 (4)芯片编程 Programming(可以直接选择光盘中的示例已完成的设计进行验 证实验)打开编程窗口。将配置文件 。

5、mccu.sof 下载进 GW48 系列现代计算机 组成原理系统中的 FPGA 中。 (5)选择实验系统的电路模式是 NO.0,验证控制部件的功能 设置 opfunc5.0、clk、op_func、z、clock、resetn 的值,验证控制部件的功能,记 录实 验数据。 五、 实验环境与设备 GW48CP+主系统、pc机 六、 实验代码设计(含符号说明) module mccu (op,func,z,clock,resetn,wpc,wir,wmem,wreg,iord,regrt,m2reg,aluc,shift ,alusrca,alusrcb,pcsource,jal,sext,sta。

6、te); input 5:0 op,func; input z,clock,resetn; output reg wpc,wir,wmem,wreg,iord,regrt,m2reg; output reg 3:0 aluc; output reg 1:0 alusrcb,pcsource; output reg shift,alusrca,jal,sext; output reg 2:0 state; reg 2:0 next_state; parameter 2:0 sif = 3b000, sid = 3b001, sexe = 3b010, smem = 3b011, swb = 3b。

7、100; wire r_type,i_add,i_sub,i_and,i_or,i_xor,i_sll,i_srl,i_sra,i_jr; wire i_addi,i_andi,i_ori,i_xori,i_lw,i_sw,i_beq,i_bne,i_lui,i_j,i_jal; /and(r_type,op5,op4,op3,op2,op) and(r_type,op5,op4,op3,op2,op1,op0); and(i_add,r_type,func5,func4,func3,func2,func1,fun c0); and(i_sub,r_type,func5,func4,func3。

8、,func2,func1,func 0); and(i_and,r_type,func5,func4,func3,func2,func1,func 0); and(i_or,r_type,func5,func4,func3,func2,func1,func0 ); and(i_xor,r_type,func5,func4,func3,func2,func1,func 0); and(i_sll,r_type,func5,func4,func3,func2,func1,fu nc0); and(i_srl,r_type,func5,func4,func3,func2,func1,fun c0);。

9、 and(i_sra,r_type,func5,func4,func3,func2,func1,func 0); and(i_jr,r_type,func5,func4,func3,func2,func1,func 0); and(i_addi,op5,op4,op3,op2,op1,op0); and(i_andi,op5,op4,op3,op2,op1,op0); and(i_ori,op5,op4,op3,op2,op1,op0); and(i_xori,op5,op4,op3,op2,op1,op0); and(i_lw,op5,op4,op3,op2,op1,op0); and(i_。

10、sw,op5,op4,op3,op2,op1,op0); and(i_beq,op5,op4,op3,op2,op1,op0); and(i_bne,op5,op4,op3,op2,op1,op0); and(i_lui,op5,op4,op3,op2,op1,op0); and(i_j,op5,op4,op3,op2,op1,op0); and(i_jal,op5,op4,op3,op2,op1,op0); wire i_shift; or (i_shift,i_sll,i_srl,i_sra); always * begin wpc = 0; wir = 0; wmem = 0; wreg。

11、 = 0; iord = 0; aluc = 4bx000; alusrca = 0; alusrcb = 2h0; regrt = 0; m2reg = 0; shift = 0; pcsource = 2h0; jal = 0; sext = 1; case (state) sif:begin wpc = 1; wir = 1; alusrca = 1; alusrcb = 2h1; next_state = sid; end sid:begin if(i_j)begin pcsource = 2h3; wpc = 1; next_state = sif; end else if(i_ja。

12、l)begin pcsource = 2h3; wpc = 1; jal = 1; wreg = 1; next_state = sif; end else if(i_jr)begin pcsource = 2h2; wpc = 1; next_state = sif; end else begin aluc = 4bx000; alusrca = 1; alusrcb = 2h3; next_state = sexe; end end sexe:begin aluc3 = i_sra; aluc2 = i_sub | i_or | i_srl | i_sra | i_ori | i_lui;。

13、 aluc1 = i_xor | i_sll| i_srl | i_sra | i_xori| i_beq | i_bne | i_lui; aluc0 = i_and | i_or | i_sll | i_srl | i_sra | i_andi| i_ori; if(i_beq | i_bne) begin pcsource = 2h1; wpc = i_beq next_state = sif; end else begin if(i_lw | i_sw) begin alusrcb = 2h2; next_state = smem; end else begin if(i_shift)。

14、 shift = 1; if(i_addi | i_andi | i_ori | i_xori |i_lui) alusrcb = 2h2; if(i_andi | i_ori | i_xori) next_state = swb; end end end smem:begin iord = 1; if(i_lw) begin next_state = swb; end else begin wmem = 1; next_state = sif; end end swb:begin if(i_lw) m2reg = 1; if(i_lw | i_addi | i_andi | i_ori | 。

15、i_xori |i_lui) regrt = 1; wreg = 1; next_state = sif; end default:begin next_state = sif; end endcase end always (posedge clock or negedge resetn)begin if(resetn = 0) begin state = sif; end else begin state = next_state; end end endmodule 七、 实验检验与测试 仿真结果波形图: 引脚分配截图: 八、 测试数据 状态 Q2.0 inst z wpc Pcsour。

16、ce wir iord wmem aluc3.0 selpc shift alusrcb1.0 sext wreg m2reg regrt jal IF 000 x x 1 00 1 0 0 x000 1 x 01 x 0 x x x ID 001 j x 1 11 0 x 0 xxxx x x xx x 0 x x x jal x 1 11 0 x 0 xxxx x x xx x 1 x x 1 jr x 1 10 0 x 0 xxxx x x xx x 0 x x x JP x 0 xx 0 x 0 x000 1 x 11 1 0 x x x EXE 010 add x 0 xx 0 x 。

17、0 x000 0 0 00 x 0 x x x sub x 0 0 0 0 0 0100 0 0 00 1 0 x x x and x 0 0 0 0 0 0001 0 0 00 1 0 x x x or x 0 0 0 0 0 0101 0 0 00 1 0 x x x xor x 0 0 0 0 0 0010 0 0 00 1 0 x x x sll x 0 xx 0 x 0 0011 0 1 00 x 0 x x x srl x 0 0 0 0 0 0111 0 1 00 1 0 x x x sra x 0 0 0 0 0 1111 0 1 00 1 0 x x x addi x 0 0。

18、 0 0 0 0000 0 0 10 1 0 x x x andi x 0 0 0 0 0 0001 0 0 10 1 0 x x x ori x 0 0 0 0 0 0101 0 0 10 1 0 x x x xori x 0 0 0 0 0 0010 0 0 10 1 0 x x x lui x 0 xx 0 x 0 x110 x x 10 x 0 x x x EXE 010 beq 0 0 01 0 x 0 x100 0 0 00 x 0 x x x 1 1 bne 0 1 01 0 x 0 x100 0 0 00 x 0 x x x 1 0 EXE 010 m_typex x 0 xx。

19、 0 x 0 x000 0 0 10 1 0 x x x MEM 011 i_lw x 0 xx 0 1 0 xxxx x x xx x 0 x x x MEM 011 i_sw x 0 xx 0 1 1 xxxx x x xx x 0 x x x WB 100 R_type x 0 xx 0 x 0 xxxx x x xx x 1 0 0 0 I_type x 0 xx 0 x 0 xxxx x x xx x 1 0 1 0 WB 100 i_lw x 0 xx 0 x 0 xxxx x x xx x 1 1 1 0 注:红色部分为实验记录的数据内容。 九、 实验过程中出现的问题及处理情况(。

20、包括实验现象、原因分析、排故障的 方法等) 1. 输入代码后, 编译程序出现编译错误: 反复对照课本, 核对代码后修正错误, 编译成功; 2. 将电脑连接 GW48CP 系统,下载程序时,出现不识别硬件的情况:百度了解 到可能是 pc 端缺少 usb 驱动控件,之后根据网上的教程,利用 Quarstus 工具 包中只带的驱动包进行驱动安装,安装成功后,硬件识别成功,顺利将源程序 下载到 GW48CP 系统中; 3. 由于本次实验涉及的测试数据众多,在波形仿真过程中遇到了不少问题,经 过老师和助教的悉心指点,才算顺利完成了操作。 4. 在 GW48CP 系统中,测试源程序实际运行情况的时候,也因为对实验原理不 够了解,操作上遇到了不少困难,但是通过反复阅读老师提供的实验指南,逐 步琢磨实验原理和步骤,实验得以完成。。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MIPS运算器设计是《计算机组成原理实验—运算器设计》课程的第11关,要求我们设计一个MIPS架构的运算器。 MIPS是一种精简指令集(Reduced Instruction Set Computing,RISC)的计算机体系结构,它的设计简洁高效,广泛应用于嵌入式系统和超级计算机等领域。 在MIPS运算器设计中,我们需要实现MIPS指令集中的各种运算指令,如加法、减法、乘法、除法等。为了完成这个任务,我们需要设计具有相应功能的算术逻辑单元(ALU)和控制电路。 首先,我们需要设计一个ALU,它能够执行MIPS指令集中的运算指令。ALU由多个功能模块组成,包括加法器、减法器、乘法器、除法器等。这些模块可以并行工作,从而提高运算速度。 其次,我们还需要设计一个控制电路,负责根据指令对ALU进行控制。控制电路会解析指令,并根据指令的操作码和操作数选择合适的功能模块进行计算。 在MIPS运算器设计中,还需要考虑数据的存储和传输。我们可以通过寄存器文件来存储数据,通过数据通路将数据传输到ALU进行运算。数据通路也可以连接其他部件,如存储器、输入输出设备等。 最后,为了验证我们的设计是否正确,我们需要进行功能仿真和时序仿真。通过仿真,我们可以验证MIPS运算器的正常工作和计算的准确性。 总的来说,MIPS运算器设计是一项复杂而具有挑战性的任务。在这个过程中,我们将学习到MIPS架构的特点,掌握ALU设计和控制电路设计的方法,提高我们的计算机组成原理实验能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值