MIPS单周期CPU设计2018版体会

合集下载

CPU设计实践教程6-Minisys-1单周期CPU控制器的设计

CPU设计实践教程6-Minisys-1单周期CPU控制器的设计

指令操作码 ori
addiu
lw
sw
beq jump
RegDst
0
0
0
000000 R-format
1
RegDST = R-format
wire R_format;
assign R_format = (Opcode==6'b000000)? 1'b1:1'b0; assign RegDST = R_format; //说明目标是rd,否则是rt
output Sftmd; output[1:0] ALUOp;
// 他I-类型指令 // 为1表明是移位指令 // 是R-类型或I_format=1时位1为1, beq、bne指令则 // 位0为1
2021/9/5 P.22
单周期控制器设计
RegDST的控制电路
op 001101 001001 100011 101011 000100 000010
output nBranch; // 为1表明是Bne指令
output Jmp;
// 为1表明是J指令
output Sftmd; // 为1表明是移位指令
2021/9/5 P.25
单周期控制器设计
练习2
请给出下列控制信号电路的Verilog描述
assign Sw = ????? assign ALUSrc = ????? assign Branch = ????? assign nBranch = ????? assign Jmp = ?????
2021/9/5 P.10
创建一个项目
在打开的Default Port对话框中选择的FPGA器件为 xc7a100tfgg484-1,如图所示,点击Next。

单周期CPU设计总结

单周期CPU设计总结

单周期CPU设计总结单周期CPU⼀、设计思路1、CPU的意义CPU是计算机的核⼼,因为它是计算机指令的处理单元。

计算机体系结构包含两个⽅⾯,⼀个⽅⾯是指令集,⼀个⽅⾯是硬件实现。

指令集是计算机被定义拥有的执⾏指令,计算机通过⽀持指令集的运⾏,来完成计算⼯作并为程序员编程服务。

硬件实现则是具体的硬件去实现指令集,这个硬件实现的核⼼就是CPU的设计。

这⾥写的CPU的设计是32位机器的CPU,指令和数据均为32位。

⽀持指令为简化mips指令集。

2、CPU的设计CPU的设计包含数据通路的设计和控制器的设计。

数据通路是执⾏指令必须的硬件(ALU、IM、DM、GRF等),控制器则是根据指令产⽣相应控制信号,来控制相应硬件以⽀持多条指令。

数据通路设计CPU的功能是⽀持指令集,因此硬件设计是为了执⾏指令。

设计CPU的结构的⽅法:先选择⼀条需要经过最多硬件的指令,来为它构建数据通路。

再依据其他指令在已有数据通路上添加硬件或线路,直到数据通路⽀持所有指令。

控制器设计在已有的数据通路基础上,针对每⼀条指令,列出其所需要的控制信号,每⼀组控制信号对应⼀种指令的全部执⾏。

将指令相应字段和部分计算结果作为控制器的输⼊,控制信号作为输出,依据上述映射关系(真值表)设计控制器。

⼆、实际操作0、设计说明CPU架构的设计是没有很多约束的,基本要求就是能够⽀持指令集,基于不同的考量可以有不同的设计。

举例来说:对于beq指令是否跳转的判断,可以借⽤ALU的减法计算,也可以直接增设CMP⽐较器得出,两种⽅式都可以,因为功能正确。

为了提⾼吞吐量,或者为了节省成本,会选择⼀些特别的设计,这⼀点在流⽔线CPU 的设计上可以明显地看出。

CPU具体设计的⽅法是我下⾯进⾏的⼏步:列出所需指令,写出功能模块,连接模块,构造控制器,全部连接起来。

这些表格对最终代码实现⼗分重要,因为代码量较⼤,先从表格检查起,再依据表格写码可以减少bug。

1、⽀持指令列出⽀持指令并将其分类:str ld cal_r cal_i lui b_type j jr jal jalr shamtsw lw addu ori beq sllsubu slti sraslt addiu srlsllvsravsrlv2、功能模块先按照lw指令列出所需功能模块(lw经过模块最多),再依次检查现有模块是否⽀持其余指令,若不能⽀持,则添加相应模块。

MIPS的指令的CPU(14条指令)logisim仿真软件编写

MIPS的指令的CPU(14条指令)logisim仿真软件编写

MIPS的指令的CPU(14条指令)logisim仿真软件编写⼀、课程设计题⽬基于FPGA(或者Logisim 软件仿真)实验平台,完成16位单周期CPU设计。

⼆、课程设计的⽬的与意义本课程设计综合利⽤计算机组成原理课程所学的理论知识,并结合其单元实验中所积累的计算机部件设计和调试⽅法,设计出⼀台具有⾃定义指令系统的简单计算机系统。

所设计的系统能在基于FPGA(或者Logisim)平台上运⾏⼀段⽤户程序,通过检查程序结果的正确性来判断所设计的计算机系统的正确性。

三、课程设计的内容设计模型机系统的指令系统、总体结构和时序信号。

要求所设计的整机系统能⽀持⾃动和单步运⾏⽅式,能正确地执⾏存放在主存中的⽤户程序,并且对主要的数据流和控制流通过适当⽅式显⽰;验证实验结果。

①该单周期CPU实现的指令如下:(从中⾄少选取10条指令,其余指令可以⾃⼰设计;⾄少要选择1条R-型指令、1条⽴即数运算指令、Load 指令(读)、Store指令(写)、1条分⽀指令和⽆条件转移指令;)表1选取指令及格式指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能1 or 0 rs rt rd 0 0 $rd = $rs | $rt2 and 0 rs rt rd 0 1 $rd = $rs & $rt3 add 0 rs rt rd 0 2 $rd = $rs + $rt4 sub 0 rs rt rd 0 3 $rd = $rs - $rt5 sllv 0 rs rt rd 0 4 $rd = $rs << $rt 逻辑左6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt 逻辑右7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算术右8 slt 0 rs rt rd 0 7 $rd = ($rs < $rt) ? 1 :010 lui 2 0 rt immediate-u $rt = imm << 811 ori 3 rs rt immediate-u $rt = $rs | imm12 andi 4 rs rt immediate-u $rt = $rs & imm13 addi 5 rs rt immediate-s $rt = $rs + imm14 lw 6 rs rt immediate-s $rt = MEM[$rs + imm]15 sw 7 rs rt immediate-s MEM[$rs+imm] = $rt16 beq 8 rs rt offset-s beq =?17 bne 9 rs rt offset-s bne != ?18 bgt 10 rs rt offset-s bgt >?(有符号⽐较)19 jump 11 jump address jump20 halt 12 0 halt (时钟暂停)②编写⼀段包含所有指令的测试程序,将测试程序的机器语⾔存⼊ROM,运⾏测试程序,并对运⾏结果与理论运算结果对⽐(⽤表格对⽐), 判断每⼀步对错。

MIPS指令单周期CPU设计

MIPS指令单周期CPU设计

Data memory
rd rs rt
Register File
PC
执行步骤(3/5)
instruction memory
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory 5. Register Write
– 将结果写入目的寄存器
需要保存的值
– PC、寄存器组、存储器
二、典型指令的数据通路
ADDU and SUBU – addu rd,rs,rt
31 op 6 bits 31 op 6 bits 26 rs 5 bits 26 rs 5 bits 21 rt 5 bits 21 rt 5 bits 16 immediate 16 bits 16 rd 5 bits 11 6 shamt 5 bits funct 6 bits 0 0
ALU
MUX
+4
imm 2. Decode/ Register Read
1. Instruction Fetch
3. Execute 4. Memory5. Register Write
Phase 1: Instruction Fetch (IF)
– Fetch 32-bit instruction from memory – Increment PC (PC = PC + 4)
Data memory
rd rs rt
Register File
PC
执行步骤(2/5)
instruction memory
ALU
MUX

MIPS单周期CPU实验报告

MIPS单周期CPU实验报告

MIPS单周期CPU实验报告一、实验目的本实验旨在设计一个基于MIPS指令集架构的单周期CPU,具体包括CPU的指令集设计、流水线的划分与控制信号设计等。

通过本实验,可以深入理解计算机组成原理中的CPU设计原理,加深对计算机体系结构的理解。

二、实验原理MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集(RISC)架构的处理器设计,大大简化了指令系统的复杂性,有利于提高执行效率。

MIPS指令集由R、I、J三种格式的指令组成,主要包括算术逻辑运算指令、存储器访问指令、分支跳转指令等。

在单周期CPU设计中,每个指令的执行时间相同,每个时钟周期只执行一个指令。

单周期CPU的主要部件包括指令内存(IM)、数据存储器(DM)、寄存器文件(RF)、运算单元(ALU)、控制器等。

指令执行过程主要分为取指、译码、执行、访存、写回等阶段。

三、实验步骤1.设计CPU指令集:根据MIPS指令集的格式和功能,设计符合需求的指令集,包括算术逻辑运算指令、存储器访问指令、分支跳转指令等。

2.划分CPU流水线:将CPU的执行过程划分为取指、译码、执行、访存、写回等阶段,确定每个阶段的功能和控制信号。

3.设计控制器:根据CPU的流水线划分和指令集设计,设计控制器实现各个阶段的控制信号生成和时序控制。

4.集成测试:进行集成测试,验证CPU的指令执行功能和正确性,调试并优化设计。

5.性能评估:通过性能评估指标,如CPI(平均时钟周期数)、吞吐量等,评估CPU的性能优劣,进一步优化设计。

四、实验结果在实验中,成功设计了一个基于MIPS指令集架构的单周期CPU。

通过集成测试,验证了CPU的指令执行功能和正确性,实现了取指、译码、执行、访存、写回等阶段的正常工作。

同时,通过性能评估指标的测量,得到了CPU的性能参数,如CPI、吞吐量等。

通过性能评估,发现了CPU的性能瓶颈,并进行了相应的优化,提高了CPU的性能表现。

mips运算器设计的实验报告

mips运算器设计的实验报告

mips运算器设计的实验报告
MIPS运算器设计的实验报告
MIPS运算器是一种使用MIPS指令集进行运算的微型计算机。

它是一个重要的数字逻辑电路设计实验,能够让我们深入了解计算机的内部结构、运算的实现原理和操作系统等重要的概念。

本文将简要介绍MIPS运算器的设计原理和实验过程。

首先,MIPS运算器的设计由以下六个部分组成:存储器、CPU、输入控制器、输出控制器、时钟和调试器。

存储器包括一个程序存储器和一个数据存储器,分别用于存储程序和数据。

CPU包括ALU和寄存器,用于处理运算。

输入控制器用于控制输入设备,输出控制器用于控制输出设备,时钟用于同步和计时,调试器用于调试程序。

其次,在设计MIPS运算器时,我们采用了门级逻辑的方法。

首先,我们先根据MIPS指令集定义CPU的指令格式和指令编码,然后使用Karnaugh图和布尔代数等方法进行逻辑门电路的设计和优化,最终实现电路的硬件描述语言(HDL)编写和模拟仿真。

最后,我们进行了一系列实验验证了MIPS运算器的正确性和性能。

我们通过加载不同的程序和数据,进行了各种不同的运算测试,包括加、减、乘、除、与、或、异或、移位等运算,同时还测试了运算器的运行速度和存储器的容量等性能
指标。

实验结果表明,MIPS运算器的设计符合MIPS指令集的规范,功能完备,性能稳定,能够满足各种不同的运算需求。

总之,MIPS运算器是一款非常实用且具有挑战性的数字逻辑电路设计实验,它可以让我们更好地理解计算机的原理和操作系统等重要的概念,同时也能够培养我们的动手能力和解决问题的能力。

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。

计算机组成原理实验报告-单周期CPU的设计与实现

计算机组成原理实验报告-单周期CPU的设计与实现

1个时钟周期 Clock 电子科技大学计算机科学与工程学院标 准 实 验 报 告(实验)课程名称: 计算机组成原理实验 电子科技大学教务处制表电 子 科 技 大 学 实 验 报 告学生姓名: 郫县尼克杨 学 号: 2014 指导教师:陈虹 实验地点: 主楼A2-411 实验时间:12周-15周一、 实验室名称:主楼A2-411二、 实验项目名称:单周期CPU 的设计与实现。

三、 实验学时:8学时四、 实验原理:(一) 概述单周期(Single Cycle )CPU 是指CPU 从取出1条指令到执行完该指令只需1个时钟周期。

一条指令的执行过程包括:取指令→分析指令→取操作数→执行指令→保存结果。

对于单周期CPU 来说,这些执行步骤均在一个时钟周期内完成。

(二) 单周期cpu 总体电路本实验所设计的单周期CPU 的总体电路结构如下。

(三) MIPS 指令格式化MIPS 指令系统结构有MIPS-32和MIPS-64两种。

本实验的MIPS 指令选用MIPS-32。

以下所说的MIPS 指令均指MIPS-32。

MIPS 的指令格式为32位。

下图给出MIPS 指令的3种格式。

本实验只选取了9条典型的MIPS 指令来描述CPU 逻辑电路的设计方法。

下图列出了本实验的所涉及到的9条MIPS 指令。

五、 实验目的1、掌握单周期CPU 的工作原理、实现方法及其组成部件的原理和设计方法,如控制器、运算器等。

?2、认识和掌握指令与CPU 的关系、指令的执行过程。

?3、熟练使用硬件描述语言Verilog 、EDA 工具软件进行软件设计与仿真,以培养学生的分析和设计CPU 的能力。

六、 实验内容(一)拟定本实验的指令系统,指令应包含R 型指令、I 型指令和J 型指令,指令数为9条。

(二)CPU 各功能模块的设计与实现。

(三)对设计的各个模块的仿真测试。

(四)整个CPU 的封装与测试。

七、 实验器材(设备、元器件):(一)安装了Xilinx ISE Design Suite 的PC 机一台(二)FPGA 开发板:Anvyl Spartan6/XC6SLX45(三)计算机与FPGA 开发板通过JTAG (Joint Test Action Group )接口连接,其连接方式如图所示。

Logisim完成MIPS单周期处理器开发实验报告

Logisim完成MIPS单周期处理器开发实验报告

Logisim完成MIPS单周期处理器开发实验报告Project3Logisim完成单周期处理器开发实验报告⼀.总体设计⼆.模块定义(1)IFU(2)GPR(3)ALU(4)EXT(5)DM(6)Controller四.控制器设计单周期真值表Func100000100010N/AOp000000000000001101100011000100001111add sub ori lw sw beq lui RegDst1100X X0 ALUSrc0011101 MemtoReg0001X X X RegWrite1111002 MemWrite0000100 nPC_sel0000010 ExtOp X X000X1ALUctr Add Subtract Or Add Add Subtract X五.测试要求16.测试程序lui$t0,0x0004#lui测试程序要实现:⽴即数0x0004加载⾄t0寄存器的⾼位lui$t1,0x0008#lui测试程序要实现:⽴即数0x0008加载⾄t1寄存器的⾼位ori$t3,$zero,0x00002000#ori测试程序要实现:zero寄存器中的内容与⽴即数0x00002000进⾏或运算,储存在t3寄存器中sw$t0,4($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量4,所指向的RAM中sw$t0,8($t3)#sw测试程序要实现:把t0寄存器中值(1Word),存储到t3的值再加上偏移量8,所指向的RAM中loop:add$t2,$t2,$t1#add测试程序要实现:t1寄存器中的值加上t2寄存器中的值后存到t2寄存器中lw$t4,4($t3)#lw测试程序要实现:把t3寄存器的值+4当作地址读取存储器中的值存⼊t4 lui$t5,0x0004#lui测试程序要实现:⽴即数0x0004加载⾄t5寄存器的⾼位sub$t7,$t6,$t5#sub测试程序要实现:t6寄存器中的值减去t5寄存器中的值后存到t7寄存器中add$t0,$t0,$t5#sub测试程序要实现:t0寄存器中的值减去t5寄存器中的值后存到t0寄存器中add$t6,$t6,$t0#add 测试程序要实现:t6寄存器中的值加上t0后存到t6寄存器中beq$t0,$t1,loop#beq测试程序要实现:判断t0的值和t1的值是否相等,相等转loopadd$t0,$t0,$t5#add测试程序要实现:t0寄存器中的值加上t5后存到t0寄存器中lui$v0,0x0001#lui测试程序要实现:⽴即数0x0001加载⾄v0寄存器的⾼位lui$v1,0x0002#lui测试程序要实现:⽴即数0x0002加载⾄v1寄存器的⾼位add$v0,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v0寄存器中add$v1,$v0,$v1#add测试程序要实现:v0寄存器中的值加上v1后存到v1寄存器中ori$a0,$v0,0xffff#ori测试程序要实现:v0寄存器中的内容与⽴即数0xffff进⾏或运算,储存在a0寄存器中sub$a1,$a0,0x0000ffff#sub测试程序要实现:a0寄存器中的值减去⽴即数0x0000ffff后存到a1寄存器中loop2:sub$a2,$v1,$v0#sub测试程序要实现:v1寄存器中的值减去v0中的值后存到a2寄存器中add$a1,$a2,$a1#add测试程序要实现:a2寄存器中的值加上a1后存到a1寄存器中beq$a1,$v1,loop2#beq测试程序要实现:判断a1的值和v1的值是否相等,相等转loop2机器码:3c0800043c090008340b2000ad680004014950208d6c00043c0d000401cd7822010d402001c870201109fff9010d40203c0200013c03000200431020004318203444ffff3c010*******ffff008128220062302200c52820 10a3fffdMARS模拟结果:Logism:GPR:DM:六、问答18.对于Figure5、Figure6中的与或阵列来说,1个3输⼊与门最终转化为2个2输⼊与门,1个4输⼊与门最终转化为3个2输⼊与门,依次类推。

mips单周期cpu课程设计

mips单周期cpu课程设计

mips单周期cpu课程设计一、课程目标知识目标:1. 掌握MIPS单周期CPU的基本结构和工作原理;2. 了解指令集、指令执行过程和指令周期;3. 学会分析并设计简单的MIPS指令;4. 理解CPU性能指标,如时钟频率、吞吐率等。

技能目标:1. 能够运用硬件描述语言(如Verilog)进行单周期CPU的设计与仿真;2. 能够独立编写简单的MIPS汇编程序,并在单周期CPU上运行;3. 能够分析单周期CPU的性能,并进行优化;4. 培养学生的团队合作能力和问题解决能力。

情感态度价值观目标:1. 培养学生对计算机组成原理和硬件设计的兴趣,激发学生的创新意识;2. 增强学生的工程素养,使其认识到工程实践在计算机科学领域的重要性;3. 培养学生严谨、细致、负责任的科学态度,提高学生的自主学习能力。

本课程针对高中年级学生,课程性质为实践性较强的硬件课程。

结合学生特点,课程目标注重理论与实践相结合,通过设计单周期CPU,使学生深入理解计算机硬件原理,提高实践能力。

在教学要求上,注重培养学生的团队合作精神,提高学生分析和解决问题的能力,为后续计算机组成原理及相关课程打下坚实基础。

通过本课程的学习,学生将能够独立完成单周期CPU的设计与仿真,具备一定的硬件编程能力。

二、教学内容1. 引言:介绍CPU在计算机系统中的作用,引出MIPS单周期CPU的概念及其重要性。

相关教材章节:第一章 计算机系统概述2. MIPS单周期CPU基本结构:讲解CPU的基本组成部分,包括寄存器组、控制单元、算术逻辑单元(ALU)、数据通路等。

相关教材章节:第二章 计算机组成原理3. 指令集与指令执行:分析MIPS指令集特点,讲解指令执行过程和指令周期。

相关教材章节:第三章 指令系统4. 硬件描述语言与单周期CPU设计:介绍Verilog硬件描述语言,通过实例讲解如何使用Verilog设计单周期CPU。

相关教材章节:第四章 硬件描述语言与数字电路设计5. 单周期CPU仿真与优化:指导学生进行单周期CPU的仿真,分析性能瓶颈,探讨优化方案。

【最新】CPU实验——单周期MIPS处理器设计

【最新】CPU实验——单周期MIPS处理器设计

单周期MIPS处理器设计实验报告完成人:笪腾飞2012011263一、实验目的1、设计一个32位的单周期MIPS处理器,具备定时器、数码管等外设;2、编写一个编译器,可以将mips代码编译为二进制机器码;3、编写一个计算两个整数的最大公约数的汇编程序。

二、设计方案根据理论课所学的单周期MIPS处理器数据通路的知识,结合本次试验的具体要求,最终设计方案如下:1、系统时钟为了综合后能够在开发板上正确运行程序,我们决定采取50MHz的CPU时钟,因此编写了一个时钟分频模块,对开发板提供的100MHz时钟进行二分频,从而得到50MHz时钟。

2、PC产生模块原理图如下:如上图左半部分所示,多路选择器由一个always语句中的if…else if…else语句实现。

其中,将ALU中的加减法部分提取出来实现一个加法器,用于产生PC+4和ConBA两个PC来源。

将I型指令中的16位立即数左移两位后再符号位j m扩展成32位地址,与PC+4相加得到分支地址ConBA 。

将跳转指令中的26位目标地址左移两位后,与当前PC的高四位拼接得到跳转地址JT。

将第一个操作数寄存器中的值取出作为PC的一个输入,这是为了实现jr和jalr指令,从$Xp和$Ra寄存器中读取跳转地址。

ILLOP和XADR分别是发生中断和异常时的跳转地址。

下一指令地址的选择由PCSrc决定,而PCSrc是译码后由控制信号模块根据每条指令的操作码(opcode)和函数码(funct)产生。

3、译码模块原理图如上图右半部分所示,将PC作为ROM模块的地址输入,输出即为PC所对应的指令。

分别取出指令中的某些片段,得到$Rs,$Rt,$Rd,shamt,funct,16位立即数和26位跳转地址。

4、控制模块控制模块即控制信号产生模块,六位操作码OpCode,六位函数码[5:0] Funct,定时器中断信号irq和PC最高位PC31作为输入,输出为以下控制信号:(1) R型指令指示信号IsR,值为1表示当前指令为R型指令,否则非R型指令;(2) PC产生的选择信号[2:0] PCSrc,取值0,1,2,3,4及其它,分别选择下一指令不同的PC;(3) 目的寄存器选择信号[1:0]RegDst,被写入的寄存器有四种选择:$Rd,$Rt,$Ra,$Xp,分别由RegDst不同取值完成选择;(4) 写寄存器使能信号RegWr,值为1表示允许对寄存器进行写操作;(5) ALU第一个操作数选择信号ALUSrc1,值为1表示选择将移位量shamt 进行0扩展后作为输入,值为0表示将$Rs寄存器中的值作为输入;(6) ALU第一个操作数选择信号ALUSrc1,值为1表示选择将扩展后的32位立即数作为输入,值为0表示将$Rt寄存器中的值作为输入;(7) ALU运算控制信号[5:0] ALUFunc,作为ALU的输入选择不同的运算操作;(8) 有无符号数指示信号Sign,值为1表示有符号数,值为0表示无符号数;(9) 写存储器使能信号MemWr,值为1表示允许对存储器进行写操作;(10) 读存储器使能信号MemRd,值为1表示允许对存储器进行读操作;(11) 写寄存器值的选择信号[1:0] MemToReg,选择ALU结果,存储器读取结果和PC+4其中之一作为写入目的寄存器的值;(12) 符号位扩展指示信号EXTOp,值为1表示对16位立即数进行符号位扩展,值为0表示0扩展;(13) 立即数高位取指令指示信号LUOp,值为1表示当前指令为lui指令,选择将立即数载入高16位低位填0的32位立即数作为ALU输入,值为0表示将正常扩展后的32位立即数作为ALU输入;控制信号的具体产生过程此处略去,在控制信号说明文件中进行详述。

MIPS单周期CPU实验报告

MIPS单周期CPU实验报告

MIPS单周期CPU实验报告一、实验目标本次实验的主要目标是设计并实现一个基于MIPS单周期CPU的计算机系统。

具体要求如下:1.能够识别并执行MIPS指令集中的常见指令,包括算术逻辑运算、分支跳转和存取指令等。

2.实现基本的流水线结构,包括指令译码阶段、执行阶段、访存阶段和写回阶段。

3.能够在基本结构的基础上添加异常处理和浮点数运算支持。

二、实验环境三、实验过程1.确定CPU的基本组成部分,包括指令存储器、数据存储器、寄存器、ALU和控制单元等,并进行电路设计。

2.编写MIPS汇编程序,并使用MARS进行仿真调试,验证指令的正确性和计算结果的准确性。

3.将MIPS汇编程序烧录到指令存储器中,并将数据存储器中的初始数据加载进去。

4.运行程序,观察CPU的工作状态,并进行时序仿真,验证CPU设计的正确性。

5.对CPU进行性能测试,包括执行时间、指令吞吐量和时钟周期等指标的测量。

四、实验结果经过实验和测试,我们成功地设计并实现了一个基于MIPS单周期CPU的计算机系统。

该系统能够正确执行MIPS指令集中的常见指令,并支持流水线结构、异常处理和浮点数运算。

1.指令执行的正确性:通过在MARS中进行调试和仿真,我们发现CPU能够正确地执行各种指令,包括算术逻辑运算、分支跳转和存取指令等。

并且,在时序仿真中,CPU的各个组件的信号波形也符合预期。

2.流水线结构的实现:我们根据MIPS指令的特点和处理流程,设计了基本的流水线结构,并在MARS中进行了时序仿真。

仿真结果表明,各个流水线级的操作都能够正确无误地进行,并且能够顺利地在一个时钟周期内完成。

3.异常处理和浮点数运算的支持:通过在MIPS汇编程序中加入异常处理和浮点数运算的指令,我们验证了CPU对这些功能的支持。

在异常处理时,CPU能够正确地转入异常处理程序,并根据异常类型进行相应的处理。

在浮点数运算时,CPU能够正确地进行浮点数的加减乘除等运算,并将结果正确地写回寄存器。

mips实验报告

mips实验报告

mips实验报告Title: MIPS实验报告Abstract:本实验报告旨在介绍MIPS(Microprocessor without Interlocked Pipeline Stages)架构及其在计算机体系结构课程中的应用。

通过实验,我们将了解MIPS指令集架构的基本原理和实现,以及如何使用MIPS模拟器进行程序设计和调试。

本报告将详细介绍MIPS架构的特点、指令集、寄存器组、内存模型等内容,并通过实验结果分析MIPS在计算机体系结构中的重要性和应用价值。

Introduction:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛应用于嵌入式系统和高性能计算领域。

在计算机体系结构课程中,学习MIPS架构可以帮助学生深入理解计算机的工作原理和指令级并行处理技术。

通过实验,学生可以通过模拟器编写和调试MIPS汇编程序,加深对计算机体系结构的理解。

MIPS Architecture:MIPS架构采用精简指令集(RISC)的设计理念,包括32位寄存器、固定长度的指令格式和简单的指令集。

MIPS架构的特点包括高性能、低功耗、易于实现和优化等优点,因此在嵌入式系统和高性能计算领域得到广泛应用。

MIPS指令集包括算术运算指令、逻辑运算指令、数据传输指令、控制流指令等,能够满足各种计算需求。

MIPS Simulator:为了方便学生学习和实验MIPS架构,通常会使用MIPS模拟器进行程序设计和调试。

MIPS模拟器可以模拟MIPS处理器的运行过程,包括指令执行、寄存器操作、内存访问等,帮助学生理解MIPS指令集的工作原理和实现过程。

通过MIPS模拟器,学生可以编写和调试MIPS汇编程序,加深对计算机体系结构的理解。

Experiment Results:通过实验,我们学习了MIPS架构的基本原理和实现,包括指令集、寄存器组、内存模型等内容。

单周期MIPS CPU实验(8条指令)

单周期MIPS CPU实验(8条指令)

单周期M I P S C P U设计实验目的⏹掌握硬布线控制器设计的基本原理⏹能利用相关原理在Logisim平台中设计实现MIPS单周期CPU⏹主要任务☐绘制MIPS CPU数据通路☐实现单周期硬布线控制器☐测试联调核心指令集(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add$rd,$rs,$rt R[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd] 2slt$rd,$rs,$rt R[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,imm R[$rt]←R[$rs]+SignExt(imm)溢出产生异常16b4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq$rs,$rt,imm if(R[$rs]=R[$rt])PC←PC+SignExt18b({imm,00})7bne$rs,$rt,imm if(R[$rs]!=R[$rt])PC←PC+SignExt18b({imm,00})8syscall系统调用,这里用于停机单周期MIPS 参考数据通路MemtoReg MemWrite Branch AluOP ALUSrc RegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0Sign ExtendSignImmR1#R2#W#WDWE 寄存器堆R1R2101011<<2+PCBranchSrcB SrcA EqualA L UALUResult WriteDataWERD A 数据存储器WD ReadData WriteBackData++BranchAddress31:26CLK CLKPC+4控制器FuncOp rsrtrd步骤1:构建MIPS主机通路⏹在MIPS单周期CPU子电路中,利用如下组件构建MIPS 单周期CPU数据通路☐PC、IMEM、RegFile、ALU、DMEM、Controller步骤2:设计单周期MIPS控制器⏹输入信号⏹指令字Opcode,Func字段(12位)⏹输出信号⏹多路选择器选择信号⏹内存访问控制信号⏹寄存器写使能信号⏹运算器控制信号、指令译码信号⏹纯组合逻辑电路、无时序逻辑控制信号功能说明(8条核心指令集)#控制信号信号说明产生条件1MemToReg写入寄存器的数据来自存储器lw指令2MemWrite写内存控制信号sw指令未单独设置MemRead信号3Beq Beq指令译码信号Beq指令4Bne Bne指令译码信号Bne指令5AluOP运算器操作控制符加法,比较两种运算6AluSrcB运算器第二输入选择Lw指令,sw指令,addi7RegWrite寄存器写使能控制信号寄存器写回信号8RegDst写入寄存器选择控制信号R型指令9Halt停机信号,取反后控制PC使能端syscall指令完善硬布线控制器内部逻辑⏹打开CPU.circ打开单周期硬布线控制器电路⏹实现指令译码、ALU控制逻辑完善控制信号逻辑⏹增加简单的组合逻辑⏹根据给出的指令译码信号,实现所有控制信号逻辑步骤3:CPU测试⏹在指令存储器中载入排序程序sort.hex⏹时钟自动仿真,Windows:Ctrl+k Mac: command+k运行程序⏹程序停机后,查看数据存储器中排序情况,有符号降序排列下节课再见…。

MIPS指令单周期CPU设计

MIPS指令单周期CPU设计
instruction memory
rd rs rt imm
sw rt rs imm Addr = R[rs] + SignExt(imm) MEM[Addr] = R[rt]
PC
Register File
ALU
+4
Data memory
4. MIPS指令——BEQ
比较指令BEQ
– beq rs rt imm
Phase 5: Register Write (WB for “write back”)
– Write the instruction result back into the Register File – Those that don’t (e.g. sw, j, beq) remain idle or skip this phase
– if R[rs] = R[rt] – then PC (PC +4)+ SignExt(imm) – Else PC PC+4
instruction memory rd rs rt imm MUX
PC
Register File
ALU
+4
Data memory
5. MIPS指令——Jump
Data memory
rd rs rt
Register File
PC
单周期CPU设计思路
指令的行
– 显然要设计一个时序逻辑电路 – 一条指令用一个CPU周期完成
执行步骤的实现
– 取指:从指令存储器中读指令(地址:PC)
– 读出一或两个源寄存器的值(寄存器组)
– 进行指令规定的运算(ALU) – 读/写数据存储器
– Zero extend imm16? – Pass imm16 to input of ALU? – Write result to rt?

mips 实验报告

mips 实验报告

mips 实验报告MIPS 实验报告摘要:本实验报告介绍了MIPS(Microprocessor without Interlocked Pipeline Stages)处理器的基本结构和工作原理,以及在实验中对MIPS处理器进行了仿真和验证的过程和结果。

通过本次实验,我们深入了解了MIPS处理器的指令集架构、流水线设计和性能特点,同时也对计算机体系结构有了更深入的认识。

1. 背景MIPS处理器是一种经典的RISC(Reduced Instruction Set Computer)架构的处理器,其设计简洁高效,广泛应用于嵌入式系统和高性能计算领域。

MIPS处理器采用了五级流水线结构,包括取指、译码、执行、访存和写回等阶段,能够实现指令级并行和流水线加速,提高了处理器的运行效率和性能。

2. 实验目的本次实验旨在通过对MIPS处理器的仿真和验证,加深对计算机体系结构和处理器设计的理解,掌握MIPS指令集架构的特点和流水线设计的原理,培养学生的计算机系统分析和设计能力。

3. 实验内容本次实验主要包括以下内容:(1)MIPS处理器的指令集架构和寄存器组设计;(2)MIPS处理器的流水线结构和控制信号设计;(3)使用Verilog HDL对MIPS处理器进行建模和仿真;(4)通过仿真验证MIPS处理器的正确性和性能。

4. 实验步骤(1)熟悉MIPS指令集架构和寄存器组设计;(2)设计MIPS处理器的流水线结构和控制信号;(3)使用Verilog HDL对MIPS处理器进行建模和仿真;(4)编写测试程序,对MIPS处理器进行功能验证和性能评估;(5)分析仿真结果,验证MIPS处理器的正确性和性能。

5. 实验结果通过对MIPS处理器的仿真和验证,我们得到了以下实验结果:(1)MIPS处理器能够正确执行各类指令,并能够实现指令级并行和流水线加速;(2)MIPS处理器的性能优秀,能够在较短的时钟周期内完成指令的执行;(3)MIPS处理器的流水线结构设计合理,能够有效提高处理器的运行效率和性能。

单周期RISC处理器KMIPS说明文档

单周期RISC处理器KMIPS说明文档

单周期RISC处理器KMIPS说明文档作者:老邹zbzou_xy@ KMIPS下载/s/1nt2zT3r这个设计参照了网络上的一些资料,修改了设计,现在已经能够正确执行lw、sw、and、or、add、sub、addi、beq和bne九条指令,如果需要扩充部分指令,修改controler和alu 设计就可以了,比较方便。

【适合CPU设计初学者】下面就介绍一下,这个工程的设计、仿真和验证方法。

工程目录说明如下:VHDL:设计的源文件ISE :ISE的工程文件、CoreGen产生的ROM和RAM、约束文件MIPS.ucfTB : 测试文件MSIM:ModelSim仿真要使用的文件DOC :项目说明文档CODE:测试汇编程序及相应的COE文件1.设计整个设计是按照下面的框图进行设计的:设计思想基本上是从《计算机组成与设计硬件/软件接口3版》第五章上来的,只是ALU控制部分放在了ALU里面,以后有时间再改个一样的。

每个模块对应一个设计文件,对应关系如下:2.仿真2.1说明1、仿真环境使用的是ModelSimSE 6.1f。

2、仿真使用的文件放在MSIM目录中,有三个文件:compile.do、sim.do和wave.do。

compile.do设置了要编译的文件,wave.do设置了要加入波形窗口的信号及显示方式,sim.do 设置了仿真需要的命令。

3、测试要使用的文件放在目录TB中,有MIPS.vhd(顶层文件,为了便于仿真,没有使用分频模块)、myeDmem.vhd(数据存储器,加了读使能信号)、ram.vhd(可以在ISE 下综合的ram)、myeImem.vhd(指令寄存器,要执行的指令都定义在此。

因为是16进制MIPS指令代码,很难看懂,所以要了解代码对应的程序,请看CODE目录下的all_instr.asm 文件)和test_kmips.vhd(testbench)。

2.2仿真步骤1、启动ModelSim后,改变工作目录(File Change Directory)到目录KMIPS_OK\MSIM 中,在命令窗口运行do compile.do(编译工程需要的设计文件),这样需要的设计文件就加入到库WORK中,如图所示:2、在命令窗口运行do sim.do,就开始仿真,并得到相应的仿真波形。

32位MIPS CPU 设计 实验报告详解

32位MIPS CPU 设计 实验报告详解

数字逻辑与处理器基础实验32位MIPS CPU设计综述:我们的最后验收结果时钟频率是84.9MHz。

本实验报告主要分为实验设计说明与实验收获总结两个部分。

附件中有CPU工程文档与模块代码。

第一部分实验设计一、ALU设计1、设计思路实现基本的算术、逻辑、关系、位与移位运算,尽量优化以达到最小的面积延时积。

结构图如下:主要设计思想:A. 加法运算实现可以采用逐次进位、超前进位等结构,减法可以通过加法实现(参见见面理论课讲义或者前面实验);同时输出Z(结果为零)、V(结果溢出)、N(结果为负)等标志位,注意有符号数和无符号数标志产生的不同。

B. 比较运算根据减法运算的结果(Z/V/N)产生,自行分析比较操作与算术运算之间的关系。

C. 移位运算可以考虑将移位操作拆分为16 位移位、8 位移位、4 位移位、2 位移位、1位移位等几个子运算的组合,然后级联形成最后的运算结果。

D. 逻辑运算可以根据要求直接产生。

功能表接口说明2、主要模块a)32bit加法器采用8个4bit超前进位加法器极连的方式,构成32bit加法器。

对于逸出位v的处理如下:由有符号数的性质可知,对最高位32和次高位31位取抑或,输出信号则为是否逸出。

对32位运算结果取反后,再对相邻两位反复取与,最终得到结果是否为零的输出z.如果是有符号数,则符号位=n。

由于这一方法部分程度上减弱了高位计算对低位计算的依赖程度,因此可以实现延时的降低。

同时,由于其超前进位网络的大量逻辑运算,较大程度上提升了电路的面积,造成最终的面积延时积特性恶化。

关键代码见附录1b)32bit减法器对加法器按位取反,再加一。

关键代码见附录1c)32bit 右移32bit 左移32bit 算术右移将移位操作拆分为16 位移位、8 位移位、4 位移位、2 位移位、1位移位等几个子运算的组合,然后级联得到最后的运算结果。

关键代码见附录1d)32bit 逻辑比较单元采用行为级语句直实现逻辑比较功能。

MIPS单周期CPU实验报告

MIPS单周期CPU实验报告

《计算机组成原理实验》实验报告(实验二)学院名称:专业(班级):学生姓名:学号:时间:2017 年11 月25 日成绩: 实验二:单周期CPU设计与实现一.实验目的(1) 掌握单周期CPU数据通路图的构成、原理及其设计方法;(2) 掌握单周期CPU的实现方法,代码实现方法;(3) 认识和掌握指令与CPU的关系;(4) 掌握测试单周期CPU的方法;(5) 掌握单周期CPU的实现方法。

二.实验内容设计一个单周期的MIPSCPU,使其能实现下列指令:==> 算术运算指令==> 逻辑运算指令功能:rd←rs | rt;逻辑或运算。

==>移位指令==>比较指令==> 存储器读/写指令将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。

即读取rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后保存到rt寄存器中。

==> 分支指令功能:if(rs=rt) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4特别说明:immediate是从PC+4地址开始和转移到的指令之间指令条数。

immediate 符号扩展之后左移2位再相加。

为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将immediate放进指令码中的时候,是右移了2位的,也就是以上说的“指令之间指令条数”。

12特别说明:与beq不同点是,不等时转移,相等时顺序执行。

功能:if(rs>0) pc←pc + 4 + (sign-extend)immediate <<2 else pc ←pc + 4==>跳转指令==> 停机指令三.实验原理1.时间周期:单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。

多周期cpu 实验报告

多周期cpu 实验报告

多周期CPU实验报告1. 引言本实验旨在设计并实现一个多周期CPU,以加深对计算机体系结构和指令执行过程的理解。

本文将介绍实验的设计思路、实验步骤、实验结果和分析。

2. 设计思路在设计多周期CPU之前,我们需要先理解单周期CPU的执行过程。

单周期CPU包含一个时钟周期,每个指令在一个时钟周期内完成执行。

然而,单周期CPU的执行效率较低,因为每个指令的执行时间是固定的,无论指令复杂与否。

为了提高CPU的执行效率,多周期CPU将每条指令的执行过程分为若干个阶段,每个阶段对应一个时钟周期。

每个阶段执行的操作可以并行进行,从而实现多条指令的同时执行。

在设计多周期CPU时,我们需要确定所需的指令集、寄存器的位宽、指令格式和控制信号。

具体步骤如下:1.确定指令集:选择常用的指令集,如MIPS指令集。

2.确定寄存器位宽:根据指令集的要求,确定寄存器的位宽,一般为32位。

3.确定指令格式:根据指令集的要求,设计指令的格式,并确定每个字段的位数和含义。

4.确定控制信号:根据指令的格式和执行过程,确定每个阶段需要的控制信号,并分配给相应的控制单元。

3. 实验步骤本实验的实验步骤如下:步骤一:确定指令集根据实验要求,选择MIPS指令集作为多周期CPU的指令集。

步骤二:确定寄存器位宽根据MIPS指令集的要求,确定寄存器的位宽为32位。

步骤三:确定指令格式根据MIPS指令集的要求,设计指令的格式。

MIPS指令格式一般包括操作码、源操作数寄存器、目标操作数寄存器和立即数等字段。

步骤四:确定控制信号根据指令的格式和执行过程,确定每个阶段需要的控制信号,并分配给相应的控制单元。

常见的控制信号包括时钟、复位、使能信号等。

步骤五:实现多周期CPU根据以上设计思路,开始实现多周期CPU。

根据指令格式和控制信号,设计数据通路和控制单元,并进行仿真测试。

步骤六:调试和优化在实现过程中,可能会出现一些错误或不理想的情况。

通过调试和优化,解决这些问题,使多周期CPU能够正确地执行指令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11条MIPS指令单周期CPU设计
2018元月份,我按照袁春风老师的第三版教材,又重新设计了11条MIPS 指令的单周期CPU。

这次的设计与我2017年7月份的单周期CPU还是有些区别。

2017年7月份设计的CPU主要是参考《计算机组成与设计-硬件/软件接口David A.Patterson》。

设计中的几点体会如下:
一.基本流程
1.首先要分析清楚这11条指令的格式和特点。

按照MIPS指令的格式和特
点,完全掌握它们的功能和执行的过程。

2.这些指令执行过程中需要哪些硬件部件和控制信号,这些部件如何连接
构成数据通路。

3.对所有需要的控制信号进行归纳分析,列出真值表,设计相应的控制电
路。

二.具体设计过程
1.ALU的设计。

ALU的设计重点在于先设计出32位的加法器,减法运算是利用
加法的“变反加一”。

同时要产生各种运算结果的信号:溢出(OF)、进位(CF)、符号位(SF)、零符号位(Zero)。

OF=C n⊕C n-1;CF=C out⊕C in。

至于需要其它的运算指令,如逻辑运算、移位运算、乘除法运算,都可以直接调用logisim库中的器件,添加到ALU中,这些运算的结果可以同时产生,只是最后用多路选择器来选择那种指令的结果输出,用的控制信号是OPctr。

在ALU中需要设计一个控制信号生成部件,用于产生ALU内部需要的各种控制信号。

见袁春风老师教材P155。

(第一次实验:ALU部件的设计)(ALU设计中,现在的加法器只是串行的,可以让好的学生用先行进位加法器)
图1:ALU电路图
2.设计寄存器部件。

设计一个32个*32位的寄存器部件。

两路输入和两路输出,
可读写。

(第二次实验:寄存器部件的设计)
图2:寄存器电路图
3.数据通路的设计。

通路的设计不能急于求成,要一条指令一条指令来分析和
设计。

首先设计R-type中的add、sub、subu、slt、sltu等的通路。

要注意是否要判断溢出。

在此基础上,再分析I-type带立即数运算指令的数据通路,分析出需要添加哪些部件。

再分析sw、lw指令的数据通路,分支指
令的数据通路,无条件跳转指令的数据通路。

通过逐步添加部件,最后就实现了整个数据通路。

其实添加新部件的过程,就是不断添加多路选择器的过程。

4.控制器的设计。

分析设计完成了数据通路,就知道所需要的所有控制信号。

按照信号产生的条件,就可以写出真值表P166、P167,产生逻辑电路,即控制器。

其实控制器的设计过程,就是写真值表。

(第三次实验:单周期CPU 的设计)。

图3: 11条指令的单周期CPU电路图
三. Logisim的使用
同学们自己网上查找资料。

四. 编写测试程序(test_11.asm)
1.利用用Mars 4.5软件编写测试程序。

测试程序使用自己设计的11条MIPS指令来实现。

2.打开Mars 4.5软件,用Edit编辑汇编源代码,后缀是.asm
3.汇编源代码程序编写完成后,用Run菜单中的Assemble 进行汇编,得到机器代码。

4.需要设置mars界面中setting的Memory Configration,将内存模式设
置为下图的模式,这样数据段起始位置就是0开始的位置。

5.程序汇编后可以利用File菜单中的Dump Memory功能将代码段和数据段
导出,采用十六进制文本的方式导出到某个文本文件,然后在文件第一行加入“v2.0 raw”即可在logisim中加载到ROM或RAM。

6.将test_11文件加载到指令存储器,在数据存储器第1、2号单元中输入
指定的数据,执行测试程序,再查看运行结果,验证程序运行是否正确。

Add、sub是加减指令,判断溢出,如有溢出,则不保存运算结果;
Subu是减法指令,但不判断溢出;
Slt是有符号数比较大小、sltu是无符号数比较大小。

具体见教材P155,表5.2
用于测试的数据表如表1
可以用test_11程序和表1中的数据来验证学生设计的CPU是否能正确运行。

(只需要在数据存储器中的1#和2#单元输入测试数据,在第3#--7#号单元中查看运算结果是否正确)
表1:test_11程序测试表
说明:对于测试2中的测试数据(对两个都是负数的测试数据),slt指令的结果与分析的实际结果不同。

两次CPU设计之间的差别
主要差别有下列几点:
1.ALU的实现(alu-11)。

2017版是参考华科的实验。

可实现的算术运算、逻辑
运算、移位等指令条数较多。

加减溢出判断是自己采用真值表来实现的。

2018版是按照袁老师P155实现的。

第一个实验(11条指令的ALU设计)就准备让学生这样实现。

2.取指令部件的实现(fetch_IR)。

2017版中有BEQ指令,但没有实现JUMP指
令。

2018版都实现了。

实现的思想是基于袁老师的P161图5.20,但具体细节有修改。

把PC30位改为了32位,原因是所用的存储器字长为32位(4字节),一条MIPS指令就只占用一个存储单元,所以每次PC地址直接加“1”
即可,无需再去掉低两位。

a)JUMP跳转指令的高位就是PC<31:26>,而不是PC<31:28>。

3.控制器采用了主、辅控制器分开实现。

主控制器(OP_ctr)利用P166表5.4
和表5.5来实现的,直接用真值表生成电路。

但多增加了R-type信号。

辅助控制电路(func_ctr)用来产生R型指令的ALUctr信号。

4.位扩展部件(16-32extend),增加了ExtOp控制端,用于零扩展或者符号扩
展控制。

5.数据存储器是采用系统提供的器件。

Str引脚连接存储器写信号,ld引脚连
接存储器读信号。

6.编写测试程序(test_11.asm),含所有11条指令,测试通过。

相关文档
最新文档