西安交通大学组成专题实验报告.docx
《西安交通大学组成专题实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学组成专题实验报告.docx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机组织与结构专题实验报告MIPS单周期处理器的设计学生姓名 赵荣建 专业班级 计算机45班 学 号 指导教师 姜欣宁 完成日期 2017-05-09 一.实验目的根据所学的CPU组成原理,自主设计一个MIPS32位的单周期处理器。二.设计方案参照计算机组成原理教材上的MIPS32位处理器的工作原理。1.构建数据通路取指令IF指令译码ID指令执行EXE存储器访问MEM结果写回WB取指周期:a.从指令寄存器PC输出端得到地址b.送地址到指令存储器IM地址端Ac.从指令存储器IM的数据端RD得到指令d.计算下地址:通过运算器,PC+4形成下地址,送回到PC。2. .MI
2、PS 寄存器集:定义了32个32位的寄存器3.MIPS三种指令格式:R-类型、I-类型和J-类型R-类型格式:* 所有指令操作吗OP都是0;特定操作由funct决定。* 机器语言指令中,字段分配格式如上图;前两个寄存器rs、 rt 是源寄存器,rd是目的寄存器。而在汇编语言格式中,第一个 寄存器是目的寄存器。 如:add $t0,$s4,$s5 #rd=rs+rt,t0=s4+s5; I-类型格式:* 指令含4个字段;op, rs, rt 和 imm* 有两个寄存器操作数和一个16位立即数操作数,一些指令中,rt也可作为源寄存器。J-类型格式:* 有一个26位立即数操作数,扩展后形成目的地址。
3、 4.算逻单元ALU的设计ALU工作原理图* 两级控制:通过系统控制器(Control) 和运算器控制器(ALU Control)产生 ALU的控制信号:ALUoper* ALU控制信号对照表:ALUopFunc(来自R型指令的func字段)操作ALUop1ALUop2F5F4F3F2F1F000010:ADD01110:SUB10000010:ADD10010110:SUB10100000:AND10101001: OR11010111:SLT5.单周期数据通路的构建 1)构件:PC、指令存储器、寄存器文件RF和数据存储器; 2)取指令的过程:PCIM: A/RD 3)取源操作数的过程: I
4、M:RDRF:A1/RD1。 4)立即数的符号扩展的过程: IM:RD(Instr:15:0)Sign Extend(15:0Signimm31:0); 其中Signimm15:0=Instr15:0, Signimm31:16=Instr155)存储器地址计算: 6)向寄存器文件写入数据 RegWrite信号被置成1,写入过程在时钟周期最后的时钟上升沿完成。 7)形成PC的下地址 指令占4个字节,字编址。6.单周期控制器的构建 控制单元基于指令中的opcode字段(31:26)、funct字段(5:0)产生控制信号;主译码的真值表。见下图: 7.完整的单周期MIPS处理器三.设计过程1.指令
5、集设计R型指令指令序号指令译码结果(B)存储指令(H)add $s0,$s1,$s2 10001 10010 10000 00000 sub $t0,$t1,$t2 01001 01010 01000 00000 012a4022and $s3,$s4,$s5 10100 10101 10011 00000 or $s0,$s6,$s7 10110 10111 10000 00000 02d78025xor $t3,$t4,$t5 01100 01101 01011 00000 018d5826slt $t7,$t5,$t6 01101 01110 01111 00000 01ae782ano
6、r $t7,$t5,$t6 01101 01110 01111 00000 01ae7827srl $t0,$s1,$t5 10001 01101 01000 00000 022d4002sll $t0,$s1,$t2 10001 01010 01000 00000 022a4000inc $t0,$t6 01110 00000 01000 00000 01c04003dec $t0,$t5 01101 00000 01000 00000 01a04004I型指令指令序号指令译码结果(B)存储指令(H)lw $s0,1($t1) 01001 10000 8dsw $t1,1($t1) 0100
7、1 01001 adaddi $t0,$t1,1 01001 01000 beq $t1,$t1,1 01001 01001 J型指令指令序号指令译码结果(B)存储指令(H)J 17 2.MIPS 32位单周期处理器结构设计CPU设计结构图如下:信号说明:a1:pc中的指令的地址送往IM去寻找指令a2:pc产生的下一条指令的地址a3:pc中指令的地址加4a4:取pc中指令的地址加4后的高六位b1:取J型指令的低26位b2:操作码字段高六位b3:第一个源操作数的寄存器地址,R型的21-25位,I型的21-25位b4:第二个源操作数的寄存器地址,R型的16-20位,I型指令的目的寄存器地址,16-
8、20位b5:R型指令的目的寄存器地址,11-15位b6:I型指令的立即数,0-15位b7:R型指令的低六位,0-5位b8:b4和b5经二路选择器二选一b20:从IM中取出来的指令内容c1:I型指令将16位立即数扩展成32位c2:存入目的寄存器的内容c3:从源寄存器1中取出的内容c4:从源寄存器2中取出的内容c5:c1和c4二选一c6:ALU计算出的结果,也是读DM的地址c7:从DM中取出的内容c8、c9:针对不同类型的指令对进行pc值的修正的选择d1:功能选择信号e类信号:主操作控制信号,主要是各部件的读写控制信号核心模块说明:IM:按序号存放指令(共17条,其中lw指令执行了两次),在CPU
9、启动时从开始执行。Rf:主寄存器,存放32个32位字,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):0141312111098765432101514131211109876543210DM:数据存储器,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):87654321876543218765432187654321tRf:测试模块,用于输出指令执行结果以检验是否正确;IRf:测试模块,用于输出当前执行的指令,与tRf搭配使用。四.代码分析1. Add /完成分支指令的目标地址计算/library ieee;use ieee.std_logic_11
10、64.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add is Port ( a: in STD_LOGIC_VECTOR (31 downto 0); b : in STD_LOGIC_VECTOR (31 downto 0); y : out STD_LOGIC_VECTOR (31 downto 0);end add;architecture Behavioral of add isbeginy=a + b;-将a和b相加赋给yend Behavioral;2. Add4 /完成PC+1(
11、采用字寻址)的计算/library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity Add4 isport(pcin:in std_logic_vector(31 downto 0); pcout:out std_logic_vector(31 downto 0);end Add4;architecture behave of Add4 isbeginprocess(pcin)beginpcout result result result r
12、esult result result result result result -slt比较大小 if(a1b1)then result=x; else result result result=x;end case; if(a1=b1)then -beq 判断分支指令是否转移当a1=b1时进行转移 zero=1; else zero=0; end if; end process;end behave;4. and_gate /与门,完成分支指令的判定/library ieee;use ieee.std_logic_1164.all;entity and_gate isport(a,b:in
13、 std_logic;c:out std_logic);end and_gate;architecture dataflow of and_gate isbegin c = a and b;end dataflow;5. mux2_1 /5位二路选择器,由控制信号选择目的寄存器/library ieee;use ieee.std_logic_1164.all;entity mux2_1 is generic (width:integer:=5); Port ( d0,d1 : in STD_LOGIC_VECTOR (width-1 downto 0); s : in STD_LOGIC; y
14、 : out STD_LOGIC_VECTOR (width-1 downto 0);end mux2_1;architecture Behavioral of mux2_1 isbeginy=d0 when s=0 else d1;-s位0选择d0,若s为1选择d1end Behavioral;6. Rf /32个32位寄存器组成的主寄存器,有预存/library ieee;use ieee.std_logic_1164.all;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity re
15、gfile is Port ( clk : in STD_LOGIC; we3 : in STD_LOGIC;-写使能信号 ra1 : in STD_LOGIC_VECTOR (4 downto 0);-源寄存器1的地址 ra2 : in STD_LOGIC_VECTOR (4 downto 0);- 源寄存器2的地址 wa3 : in STD_LOGIC_VECTOR (4 downto 0);-目的寄存器地址 wd3 : in STD_LOGIC_VECTOR (31 downto 0);-写入目的寄存器的内容 rd1 : out STD_LOGIC_VECTOR (31 downto 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学 组成 专题 实验 报告
限制150内