西安交通大学组成专题实验报告
更新时间:2024-07-04 05:14:01 阅读量: 综合文库 文档下载
- 西安交通大学计算机组成推荐度:
- 相关推荐
计算机组织与结构专题实验报告 MIPS单周期处理器的设计
学生姓名 赵荣建 专业班级 计算机45班 学 号 2140505119 指导教师 姜欣宁 完成日期 2017-05-09
一.实验目的
根据所学的CPU组成原理,自主设计一个MIPS32位的单周期处理器。
二.设计方案
参照计算机组成原理教材上的MIPS32位处理器的工作原理。 1.构建数据通路
取指令 指令译码 指令执行 存储器访问 结果写回
取指周期:
a.从指令寄存器PC输出端得到地址 b.送地址到指令存储器IM地址端A c.从指令存储器IM的数据端RD得到指令
d.计算下地址:通过运算器,PC+4形成下地址,送回到PC。
2. .MIPS 寄存器集:定义了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位立即数操作数,扩展后形成目的地址。
4.算逻单元ALU的设计
<<210Add<<2JumpMemToReg4Add01ControlMemReadMemWriteBranchALUopALUsrcRegWriteInstructionMemoryPC0R1Rdata132R21Register FileW1WdataALU32zeroResult32AddrRdata20132DataData0321Memory3Wdata{15~0}sign32extend2ALUcontrol6{5~0}ALU工作原理图
BA321zeroALU3232Result* 两级控制:通过系统控制器(Control)
3ALUoperFunc6ALUcontrol2ALUop 和运算器控制器(ALU Control)产生 ALU的控制信号:ALUoper
* ALU控制信号对照表:
ALUop Func(来自R型指令的func字段) 操作 ALUop1 ALUop2 F5 0 0 1 1 1 1 1 0 1 × × × × × × × × × × × × F4 × × × × × × × F3 × × 0 0 0 0 1 F2 × × 0 0 1 1 0 F1 × × 0 1 0 0 1 F0 × × 0 0 0 1 0 010:ADD 110:SUB 010:ADD 110:SUB 000:AND 001: OR 111:SLT 5.单周期数据通路的构建
1)构件:PC、指令存储器、寄存器文件RF和数据存储器; 2)取指令的过程:PC→IM: A/RD
3)取源操作数的过程: IM:RD→RF:A1/RD1。
4)立即数的符号扩展的过程:
IM:RD(Instr:15:0)→Sign Extend(15:0→Signimm31:0);
其中Signimm15:0=Instr15:0, Signimm31:16=Instr15
5)存储器地址计算:
6)向寄存器文件写入数据
RegWrite信号被置成1,写入过程在时钟周期最后的时钟上升沿完成。
7)形成PC的下地址 指令占4个字节,字编址。
6.单周期控制器的构建
控制单元基于指令中的opcode字段(31:26)、funct字段(5:0)产生控制信号;主译码的真值表。见下图:
7.完整的单周期MIPS处理器
三.设计过程
1.指令集设计 R型指令 指令序号 指令
译码结果(B)
存储指令
(H)
<0> <1> <2> <3> <4> <5> <6> <13> <14> <17> <18>
add
$s0,$s1,$s2 sub
$t0,$t1,$t2 and
$s3,$s4,$s5 or
$s0,$s6,$s7 xor
$t3,$t4,$t5 slt
$t7,$t5,$t6 nor
$t7,$t5,$t6 srl
$t0,$s1,$t5 sll
$t0,$s1,$t2 inc $t0,$t6 dec $t0,$t5
000000 10001 10010 10000 00000 100000
000000 01001 01010 01000 00000 100010
000000 10100 10101 10011 00000 100100
000000 10110 10111 10000 00000 100101
000000 01100 01101 01011 00000 100110
000000 01101 01110 01111 00000 101010
000000 01101 01110 01111 00000 100111
000000 10001 01101 01000 00000 000010
000000 10001 01010 01000 00000 000000
000000 01110 00000 01000 00000 000011
000000 01101 00000 01000 00000 000100
02328020 012a4022 02959824 02d78025 018d5826 01ae782a 01ae7827 022d4002 022a4000 01c04003 01a04004
I型指令 指令序号 <7> <8> <10>
指令
译码结果(B)
存储指令(H) 8d300001 ad290001 21280001
lw $s0,1($t1) 100011 01001 10000 00000000
00000001 sw $t1,1($t1) 101011 01001 01001 00000000
00000001 addi
$t0,$t1,1
001000 01001 01000 00000000 00000001
<11>
beq $t1,$t1,1 000100 01001 01001 00000000
00000001
11290001
J型指令 指令序号 <15> 指令
译码结果(B)
000010 0000000000000000000 0010001 存储指令(H) 08000011 J 17
2.MIPS 32位单周期处理器结构设计 CPU设计结构图如下:
信号说明:
a1:pc中的指令的地址送往IM去寻找指令 a2:pc产生的下一条指令的地址 a3:pc中指令的地址加4
a4:取pc中指令的地址加4后的高六位 b1:取J型指令的低26位 b2:操作码字段高六位
b3:第一个源操作数的寄存器地址,R型的21-25位,I型的21-25位
b4:第二个源操作数的寄存器地址,R型的16-20位,I型指令的目的寄存器地址,16-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启动时从<0>开始执行。
Rf:主寄存器,存放32个32位字,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
<0> 0 <8> 7 <16>
<1> 14 <9> 6 <17>
<2> 13 <10> 5 <18>
<3> 12 <11> 4 <19>
<4> 11 <12> 3 <20>
<5> 10 <13> 2 <21>
<6> 9 <14> 1 <22>
<7> 8 <15> 0 <23>
15 <24> 7 14 <25> 6 13 <26> 5 12 <27> 4 11 <28> 3 10 <29> 2 9 <30> 1 8 <31> 0 DM:数据存储器,存储情况见下表(十进制表示,单数行是地址序号,双数行是对应的存储值):
<0> 8 <8> 8 <16> 8 <24> 8
tRf:测试模块,用于输出指令执行结果以检验是否正确; IRf:测试模块,用于输出当前执行的指令,与tRf搭配使用。
<1> 7 <9> 7 <17> 7 <25> 7 <2> 6 <10> 6 <18> 6 <26> 6 <3> 5 <11> 5 <19> 5 <27> 5 <4> 4 <12> 4 <20> 4 <28> 4 <5> 3 <13> 3 <21> 3 <29> 3 <6> 2 <14> 2 <22> 2 <30> 2 <7> 1 <15> 1 <23> 1 <31> 1 四.代码分析
1. Add //完成分支指令的目标地址计算// library ieee;
use ieee.std_logic_1164.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 is begin
y<=a + b;-------将a和b相加赋给y
end Behavioral;
2. Add4 //完成PC+1(采用字寻址)的计算// library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity Add4 is
port(pcin:in std_logic_vector(31 downto 0);
pcout:out std_logic_vector(31 downto 0));
end Add4;
architecture behave of Add4 is begin
process(pcin) begin
pcout <= pcin + 1;---------pc值的修改
end process;
end behave;
3. ALU //主运算器// library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity alu is Port (
a1, b1 : in STD_LOGIC_vector(31 downto 0); alucontr: in STD_LOGIC_VECTOR (3 downto 0); result : buffer STD_LOGIC_VECTOR (31 downto 0); zero : out STD_LOGIC ); end alu;
architecture behave of alu is --signal d1: integer;
--signal c1,f1: bit_vector(31 downto 0); begin
process(a1,b1,alucontr) begin
case alucontr is
when \与操作 when \或操作 when \相加 when \异或 when \或非操作
when \conv_integer(b1)); ------Sll将a1向左移动b1数值位 when \减法 when \自增 when \自减
when \比较大小 if(a1 when \conv_integer(b1)); ------srl算术右移 when others=> 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 is port( a,b:in std_logic; c:out std_logic ); end and_gate; architecture dataflow of and_gate is begin c <= a and b;
正在阅读:
西安交通大学组成专题实验报告07-04
互通跨越 高速公路施工组织设计 - 图文01-26
育婴师高级理论知识试卷及答案312-02
语言学纲要 第六章12-28
理科女生报哪些专业合适?02-15
游戏风波作文500字07-09
一“网”情深作文700字07-15
fluent学习笔记 - 图文12-30
《原子结构与性质》单元测试题06-06
地藏七幸福婚姻修行次第(初稿清洁版)11-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 西安交通大学
- 组成
- 实验
- 专题
- 报告
- 《高层建筑结构设计》西南大学网络教育作业
- 3-吸收塔防腐施工安全专项方案-模板1脱硫
- 中考语文试题分项版解析汇编:(第02期)专题12 文言文阅读(课
- 《我善养吾浩然之气》教案2
- 毕业论文:浅论土地的开发利用与生态环境保护
- 第二单元 探秘水世界复习提纲
- 幼儿园小班、中班、大班智力游戏教案
- 火力发电站常用英语技术词汇
- 汽车构造期末考试知识点下归纳
- 2013年秋季新人教版九年级物理全册教案(13~22章) - 图文
- 《铝及其化合物》练习题1
- 说明书
- 第十七章 秘书的公关工作
- 1000句最常用英语口语(401-500)
- 管道工程的施工流程 - 图文
- 语文课堂教学改革方案
- 趣味运动会心得体会
- 汽车营销类外文文献翻译、英文翻译汽车行业渠道的转变
- 参数估计习题
- 2013年大学英语四级高频词汇