RF寄存器堆:.DOC

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RF寄存器堆:.DOC

RF寄存器堆: Write reg的二位输入控制四个寄存器要选择哪个寄存器作为写寄存器,RegWrite的一位信号控制写信号的输入,触发器出发写信号,而两个读的二位输入确定要选择哪个寄存器进行读操作。 PC: 增加了一位控制的复位信号,当复位为1时,指令会跳转到第一条指令。 ALU: ALU控制的二位输入控制两个寄存器进行什么操作,而结果的各位的或运算得到的结果作为分支指令判别零和非零的条件 数据存储器 数据存储器本来是以上面的方法封装,但是在测试时候无论怎么向RAM单元压入数据,数据都无法在主单元中读出。所以只能在主单元中加入RAM单元。 ALU控制: 由于funct只有前两位实现了加、减、与、或功能,所以直接取funct后两位,而ALUOp是控制cpu进行何种类型的运算,当ALUOp为00时候根据书上197页表可知,进行的为lw或者sw操作,此时ALU进行加法运算则应选择10作为输出结果,由于addi也是做加法操作,则此时也可以为addi操作;当ALUOp为01时候为分支操作,ALU做减法运算则应选择11作为输出;当ALUOp为10时候为R型操作,则应根据funct输入位进行相应操作;当ALUOp为11时候,由于还有andi和ori没有实现,而只有一个端口可用,则需要增添一个控制为来区分两个操作,我加入的控制位是当控制位为1时进行andi操作。 控制:控制单元是本次单周期cpu设计的难点,我根据每条指令的功能设计真值表如下 由于要实现bne和andi操作,在课本原有控制指令基础上我增加了bne和andi两条控制指令,当指令有效时主单元会分别执行bne和addi操作。 main: main单元的连线是仿照课本的,仿照的原图和自己连线后的外观分别如下图所示。 16位单周期cpu的Jump,beq/bne的指令跳转的具体实现方式与32位的不大相同,此次试验jump连线图如下: 载入的汇编指令及其对应的结果:(初始时候所有寄存器的值为0,数据寄存器地址0000储存数据为0013,地址0001储存数据0009,地址0034储存数据0000) lw $r0, 0($r0); 执行后$r0的值为13 lw $r1, 1($r1); 执行后$r1的值为9 add $r2, $r0, $r1; 执行后$r2的值为1c sw $r2, 2($r3); 执行后MEM[2]的值为1c sub $r2, $r0, $r1; 执行后$r2的值为a sw $r2, 2($r3); 执行后MEM[2]的值为a and $r2, $r0, $r1; 执行后$r2的值为1 sw $r2, 2($r3); 执行后MEM[2]的值为1 or $r2, $r0, $r1; 执行后$r2的值为1b sw $r2, 2($r3); 执行后MEM[2]的值为1b ori $r2, $r0, 37; 执行后$r2的值为37 addi $r3, $r1, 20; 执行后$r3的值为1d andi $r1, $r2, 67; 执行后$r1的值为3 beq $r1, $r0, -2; $r1=3,$r0=13,不相等,则结果不跳转 bne $r3, $r2, 4; $r3=1d,$r2=37,不相等,指令转到第当前指令+1+4条指令 addi $r1, $r0, 85; 未执行 and $r1, $r0, $r2; 未执行 ori $r1, $r0, 68; 未执行 sub $r1, $r0, $r2; 未执行 addi $r1, $r1, 16; 执行后$r1=$r1+10 beq $r1, $r0, -2; 执行上一步操作后$r1=13=$r0则分支条件成立,转到上一部加法,执行后$r1=23!=$r0则分支条件不成立,执行下一条指令 lw $r0, 33($r0); 执行后 $r0=MEM[34]=0 lw $r1,17 ($r1); 执行后 $r1=MEM[34]=0 lw $r2, -3($r2); 执行后 $r2=MEM[34]=0 lw $r3, 26($r3); 执行后 $r3=MEM[35]=0 jump 32; 执行后跳转到第32条指令。

文档评论(0)

135****2685 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档