同济大学计算机组成原理大作业,实验报告模板

《实验报告模板》由会员分享,可在线阅读,更多相关《实验报告模板(37页珍藏版)》请在人人文库网上搜索。

1、同济大学计算机科学与技术系计算机组成原理课程实验报告学号1452312姓名冯凯专业计算机科学与技术授课老师 王力生学习帮手日 期 2016.06.18学习帮手实验目标1、熟悉 Verilog 语言的编写 。,计算机2、掌握计算机的每个部件的构成逻辑及工作原理 各部件之间的连接逻辑 ,计算机整机的工作原理3、掌握 CPU 功能 。4、设计 55 条单周期指令 CPU 下板成功2、.在自己的 CPU 上跑一个汇编程序二、总 体设计1. 作品功能设计及原理说明 module comp(input clock, input resetn, output 2:0 r, output 2:0 g, out。

2、put 1:0 b, output hs, output vs, );2. 硬件逻辑图学习帮手三、主要模块设计1.ALUmodule alu(input 31:0 a,input 31:0 b,input 3:0 aluc,output 31:0 r,output zero,/ 零标志output carry, / 进位标志位output negative, /负数标志位output overflow / 溢出标志位);wire 31:0 d_and = a&b;/0100wire 31:0 d_or = a|b;/0101学习帮手wire 31:0 d_xor = ab;/0110wire 。

3、31:0 d_nor = (a|b);/0111wire 31:0 d_lui = b15:0,16h0;/100xwire 31:0 d_slt = ab)|(a31&b31&a=0if(a31=0)z 0if(a31=0|a!=0)z = 1;elsez = 0;endcaseendendmodule8.imemmodule instmem(input 31:0 pc,output 31:0 inst);reg 31:0 a 0:255;initial begin$readmemh(1.txt,a);endassign inst = apc31:2;endmodule9.dmem/ 因 l。

4、h、lb 、sh、sb 等指令对 dmem 做了改动module ram(input clk,学习帮手input ram_ena,input 1:0 c,/0x lw/sw,10 lh/sh,11 lb/hbinput u,input 31:0 addr,input 31:0 data_in,output reg 31:0 data_out);reg 7:0 a 0:20470;always(posedge clk)beginif(ram_ena)case(c)2b00:beginaaddr31:2,2b00 = data_in7:0;aaddr31:2,2b00+1 = data_in15:。

5、8;aaddr31:2,2b00+2 = data_in23:16;aaddr31:2,2b00+3 = data_in31:24;end2b10:beginaaddr31:1,1b0 = data_in7:0;aaddr31:1,1b0+1 = data_in15:8;end2b11:begin学习帮手 aaddr = data_in7:0;enddefault: beginaaddr = 0;endendcaseendalways(*)begincase(c)2b00:begindata_out=aaddr31:2,2b00+3,aaddr31:2,2b00+2,aaddr31:2,2b0。

6、0+1,aaddr31:2, 2b00;end2b01:begindata_out=aaddr31:2,2b00+3,aaddr31:2,2b00+2,aaddr31:2,2b00+1,aaddr31:2, 2b00;end2b10:begindata_out=16u&aaddr31:1,1b0+17,aaddr31:1,1b0+1,aaddr31:1,1b0;学习帮手end2b11:begindata_out =24u&aaddr7,aaddr;endendcaseendendmodule四、应用程序八数码addi $10,$0,1addi $11,$0,2addi $12,$0,3addi。

7、 $13,$0,4addi $14,$0,5addi $15,$0,6addi $16,$0,7addi $17,$0,8addi $18,$0,0addiu $20,$0,65535add $21,$0,$0s1: addi $21,$21,1学习帮手bne $20,$21,s1 add $18,$0,$15addi $15,$0,0add $21,$0,$0s2:addi $21,$21,1bne $20,$21,s2add $15,$0,$14addi $14,$0,0add $21,$0,$0s3:addi $21,$21,1bne $20,$21,s3add $14,$0,$13ad。

8、di $13,$0,0add $21,$0,$0学习帮手s4: addi $21,$21,1bne $20,$21,s4add $13,$0,$16addi $16,$0,0add $21,$0,$0s5:addi $21,$21,1bne $20,$21,s5add $16,$0,$17addi $17,$0,0add $21,$0,$0s6:addi $21,$21,1bne $20,$21,s6add $17,$0,$18addi $18,$0,0学习帮手add $21,$0,$0 s7:addi $21,$21,1bne $20,$21,s7add $18,$0,$15addi $15。

9、,$0,0add $21,$0,$0s8:addi $21,$21,1bne $20,$21,s8add $15,$0,$12addi $12,$0,0add $21,$0,$0s9:addi $21,$21,1bne $20,$21,s9学习帮手add $12,$0,$11 addi $11,$0,0add $21,$0,$0s10:addi $21,$21,1bne $20,$21,s10add $11,$0,$14addi $14,$0,0add $21,$0,$0s11:addi $21,$21,1bne $20,$21,s11add $14,$0,$17addi $17,$0,0ad。

10、d $21,$0,$0s12:addi $21,$21,1学习帮手bne $20,$21,s12 add $17,$0,$16addi $16,$0,0add $21,$0,$0s13:addi $21,$21,1bne $20,$21,s13add $16,$0,$13addi $13,$0,0add $21,$0,$0s14:addi $21,$21,1bne $20,$21,s14add $13,$0,$14addi $14,$0,0add $21,$0,$0学习帮手s15: addi $21,$21,1bne $20,$21,s15add $14,$0,$15addi $15,$0,0。

11、add $21,$0,$0s16:addi $21,$21,1bne $20,$21,s16add $15,$0,$18addi $18,$0,0add $21,$0,$0s17:addi $21,$21,1bne $20,$21,s17add $18,$0,$17addi $17,$0,0学习帮手add $21,$0,$0 s18:addi $21,$21,1bne $20,$21,s18add $17,$0,$16addi $16,$0,0add $21,$0,$0s19:addi $21,$21,1bne $20,$21,s19add $16,$0,$13addi $13,$0,0add。

12、 $21,$0,$0s20:addi $21,$21,1bne $20,$21,s20学习帮手add $13,$0,$14 addi $14,$0,0add $21,$0,$0s21:addi $21,$21,1bne $20,$21,s21add $14,$0,$11addi $11,$0,0add $21,$0,$0s22:addi $21,$21,1bne $20,$21,s22add $11,$0,$10addi $10,$0,0add $21,$0,$0end:sll $0,$0,0学习帮手j end五、测试/ 调试过程先测试 CPU, 每一条指令放入指令寄存器 ,然后前仿真 。前仿。

13、真过了看后仿真 延迟,最后分频下板 。测试完 55 条之后,测试斐波那契数列 ,高斯数列 ,快速 排序等小应用 , 都成功通过 。之后经过大量时间编写汇编小程序 , 八数码问题一开始打算手动操作移动 ,但 因为键盘没有写好 ,用开关的违背了使用 CPU的规则而放弃 ,用 A*算法太难, 广度优先算法写好后才发现要开的空间太大 ,在开发板上跑不动 。 因此退而求 其次 ,让机器自己按路径跑出结果 。经过大量调试成功 。后连接外设 VGA,更 改显存。做出小程序 。六、实验结果分析七、结 论计算机进行信息处理的过程分为两个步骤, 首先将一部分数据和程序输入计算机主存储器学习帮手然后从 “程序入口 。

14、”开始执行该程序 ,得到所需要的结果后 , 结束运行 。“程序入口 ”指的是该 程序开始执行的第一条指令的地址 , 控制器的作用是协调并控制计算机的各个部件执行程 序的指令序列 。当刚执行时 ,假如不采取措施 ,那么随机存取储存器 (RAM )以及寄存器的状态将处 于随机状态 ,可能会执行一些不该执行的操作 。首先用 reset 信号清零 ,pc 在每个周期加 4, 后读取指令寄存器指令 。控制器分为1)程序计数器 (PC): 即指令地址寄存器 。用来存放当前正在执行的指令或即将要执行 的下一条指令地址 ; 而在有指令预取的计算机中 , 一般还需要增加一些程序计数器用来存 放要预取的指令地址 。

15、。2)指令寄存器 ( IR): 用以存放当前正在执行的指令 , 以便在指令执行过程中控制完成一 条指令的全部功能 。3)指令译码器 : 对指令寄存器中的操作码进行分析解释,产生相应的控制信号 。4)脉冲源及启停线路 : 脉冲源产生一定频率的脉冲作为整个机器的时钟脉冲 ,是机器周期 和工作脉冲的基准信号 ,在机器刚加电时 , 还应产生一个总清信号 。5)时序控制信号形成部件 :当机器启动后 ,在 CLK时钟作用下 ,根据当前正在执行的指令 的需要 , 产生相应的时序控制信号 , 并根据被控功能部件的反馈信号调整时序控制信号。八、心得体会及建议在 ALU 设计部分 ,关于加法器设计 ,我采用的主要。

16、优化策略为 采用了超前进位加法器 ,没有使用 1 位全加器进行级联 。一位全加学习帮手 器要是级联的话延时会很大 , 4 位超前进位加法器可以减少延时 , 再进行 8 个加法器级联的话设计较为方便 。若用 32 位的超前进位加 法器则逻辑复杂 ,且延时效果下降 。通过整个 ALU的构建过程 ,我更将清晰地明白了 ALU 的内部电 路原理 ,明白了如何根据指令使 ALU 完成不同的功能 。加深了对于 有符号数和无符号数的加减 、比较运算规则的理解 。由于本次 CPU设计时间较紧迫 ,我并没有能够对 ALU 进行太 多优化 ,将在以后的过程中优化 。 在这次 CPU 完成后 ,我们终于设 计出了一个具有一定功能的 CPU,并且使它通过了测试 。做整个大 作业的过程 ,我们收获了很多 ,对 CPU 有了较为深刻的理解 。我们 设计的 CPU 从最基本的单周期单指令的 CPU,到后来加入流水 ,多 周期等可以提高性能的电路 ,很大程度上加深了我对流水线的理解 在后期复杂的调试过程中 ,不但锻炼了我熟练使用仿真软件的能力 也磨练了我克服困难的的意志与面对复杂问题的耐性 。 我精确计划 时间和分工 , 按时完成了计划任务 ,并取得了较为良好的成绩 , 我即学会了沟通 , 也从别人学到了很多自己没有能够领悟透彻的知 识点。感谢助教和老师的指导与帮助 。学习帮手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值