MIPS 指令译码器设计
关于 MIPS 体系:
MIPS 体系结构 是20世纪80年代初发明的一款 RISC(精简指令系统计算机)体系架构。MIPS是一个双关语,它既是 Microcomputer without Interlocked Pipeline Stages 的缩写, 同时又是 Millions of Instructions Per Second 的缩写。相比 Intel x86 的 CISC (复杂指令系统计算机)架构, MIPS 是一种非常优雅,简洁,高效的 RISC 体系架构,非常适合于教学研究,我国的龙芯处理器就是基于MIPS指令系统的。最初MIPS是为32位系统设计的,后来又发展出了64位MIPS,但依然对32位模式向下兼容。
关于指令译码器:
指令译码器(Instruction Decoder,ID) 是控制器中的主要部件之一。计算机能且只能执行“指令”。指令由操作码和地址码组成。操作码表示要执行的操作性质,即执行什么操作,或做什么;地址码是操作码执行时的操作对象的地址。计算机执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能。这个分析工作由指令译码器来完成。
实验目的:
理解指令译码的基本概念,能将32位MIPS指令字译码成不同的指令译码信号。
实验内容:
利用比较器等功能模块将32位MIPS 指令字译码生成 LW、SW、BEQ、SLT、ADDI、OtherInstr信号:
信号 | 位宽 | 功能描述 |
---|---|---|
IR | 32 | MIPS指令字IR |
LW | 1 | 当前指令为lw指令时输出为1 |
SW | 1 | 当前指令为sw指令时输出为1 |
BEQ | 1 | 当前指令为beq指令时输出为1 |
ADD | 1 | 当前指令为addi指令时输出为1 |
SLT | 1 | 当前指令为slt指令时输出为1 |
OtherInstr | 1 | 当前指令为其他指令时输出为1 |
理解指令译码的基本概念,能将32位MIP指令字译码成不同的指令译码信号。
指令译码器是控制器核心功能部件,负责将指令字翻译成一根根的指令译码信号,每一根指令译码信号代表一条具体的指令,如上图中的 I1…Im 。
实验步骤
相关指令的规格通过参考MIPS英文指令手册进行查询。
查询MIPS英文指令手册可以得知,各指令的高六位分别为:
Sw:101011; 换算成16进制为:2B;
Lw:100011; 换算成16进制为:23;
Addi:001000; 换算成16进制为:08;
Beq:000100; 换算成16进制为:04;
SLT 指令需要和低六位 FUNCT 一起判断:
OP:000000; 换算成16进制为:00;
FUNCT:101010;换算成16进制为:2A;
最后用逻辑或非门总结到 OtherInstr:
电路完成图:
测试为:
预期输入:
Cnt IR LW SW BEQ ADDI SLT OtherI
0000 2010ffff 0 0 0 1 0 0
0001 20110000 0 0 0 1 0 0
0002 ae300200 0 1 0 0 0 0
0003 22100001 0 0 0 1 0 0
0004 22310004 0 0 0 1 0 0
0005 ae300200 0 1 0 0 0 0
0006 22100001 0 0 0 1 0 0
0007 22310004 0 0 0 1 0 0
0008 ae300200 0 1 0 0 0 0
0009 22100001 0 0 0 1 0 0
000a 22310004 0 0 0 1 0 0
000b ae300200 0 1 0 0 0 0
000c 22100001 0 0 0 1 0 0
000d 22310004 0 0 0 1 0 0
000e ae300200 0 1 0 0 0 0
000f 22100001 0 0 0 1 0 0
0010 22310004 0 0 0 1 0 0
0011 ae300200 0 1 0 0 0 0
0012 22100001 0 0 0 1 0 0
0013 22310004 0 0 0 1 0 0
0014 ae300200 0 1 0 0 0 0
0015 22100001 0 0 0 1 0 0
0016 22310004 0 0 0 1 0 0
0017 ae300200 0 1 0 0 0 0
0018 20100000 0 0 0 1 0 0
0019 2011001c 0 0 0 1 0 0
001a 8e130200 1 0 0 0 0 0
001b 8e340200 1 0 0 0 0 0
001c 0274402a 0 0 0 0 1 0
001d 11000002 0 0 1 0 0 0
001e ae330200 0 1 0 0 0 0
001f ae140200 0 1 0 0 0 0
0020 2231fffc 0 0 0 1 0 0
0021 12110001 0 0 1 0 0 0
0022 1000fff7 0 0 1 0 0 0
0023 22100004 0 0 0 1 0 0
0024 2011001c 0 0 0 1 0 0
0025 12110001 0 0 1 0 0 0
0026 1000fff3 0 0 1 0 0 0
0027 1000ffff 0 0 1 0 0 0
0028 00000000 0 0 0 0 0 1
实际输入:
Cnt IR LW SW BEQ ADDI SLT OtherI
0000 2010ffff 0 0 0 1 0 0
0001 20110000 0 0 0 1 0 0
0002 ae300200 0 1 0 0 0 0
0003 22100001 0 0 0 1 0 0
0004 22310004 0 0 0 1 0 0
0005 ae300200 0 1 0 0 0 0
0006 22100001 0 0 0 1 0 0
0007 22310004 0 0 0 1 0 0
0008 ae300200 0 1 0 0 0 0
0009 22100001 0 0 0 1 0 0
000a 22310004 0 0 0 1 0 0
000b ae300200 0 1 0 0 0 0
000c 22100001 0 0 0 1 0 0
000d 22310004 0 0 0 1 0 0
000e ae300200 0 1 0 0 0 0
000f 22100001 0 0 0 1 0 0
0010 22310004 0 0 0 1 0 0
0011 ae300200 0 1 0 0 0 0
0012 22100001 0 0 0 1 0 0
0013 22310004 0 0 0 1 0 0
0014 ae300200 0 1 0 0 0 0
0015 22100001 0 0 0 1 0 0
0016 22310004 0 0 0 1 0 0
0017 ae300200 0 1 0 0 0 0
0018 20100000 0 0 0 1 0 0
0019 2011001c 0 0 0 1 0 0
001a 8e130200 1 0 0 0 0 0
001b 8e340200 1 0 0 0 0 0
001c 0274402a 0 0 0 0 1 0
001d 11000002 0 0 1 0 0 0
001e ae330200 0 1 0 0 0 0
001f ae140200 0 1 0 0 0 0
0020 2231fffc 0 0 0 1 0 0
0021 12110001 0 0 1 0 0 0
0022 1000fff7 0 0 1 0 0 0
0023 22100004 0 0 0 1 0 0
0024 2011001c 0 0 0 1 0 0
0025 12110001 0 0 1 0 0 0
0026 1000fff3 0 0 1 0 0 0
0027 1000ffff 0 0 1 0 0 0
0028 00000000 0 0 0 0 0 1
MIPS 指令译码器设计相关推荐
- MIPS指令译码器设计
MIPS指令译码器设计 实验目的 帮助学生理解指令译码的基本概念,能将32位MIPS指令字译码成不同的指令译码信号. 实验内容 利用比较器等功能模块将32位MIPS 指令字译码生成LW.SW.BEQ. ...
- 头歌实践教学平台 MIPS CPU设计(HUST)
实验简介 本实训项目将帮助学生掌握 CPU 控制器设计的基本原理,能利用硬布线控制器的设计原理在 Logisim 平台中设计实现支持五条指令的 MIPS 单周期 CPU,该处理器能运行简单的内存冒泡排 ...
- MIPS CPU设计(HUST)
当你看到到这篇文章的时候,想必你已经被计算机组成原理实验折磨的不成样子了,没错我也是,经过我这几天的努力终于将这些实验一一完成. 我将源码放在压缩包里了,大家只需要复制代码,放进头歌里,满分过!,另外 ...
- 实验九 单周期MIPS CPU设计实验(基于Logisim)
一.实验目的 学生掌握控制器设计的基本原理,能利用硬布线控制器的设计原理在Logisim平台中设计实现MIPS单周期CPU. 二.实验内容 利用运算器实验,存储系统实验中构建的运算器.寄存器文件.存储 ...
- 单周期MIPS CPU设计
一.实验内容 实验过程 1.设计的24条指令 R型指令详细: I型指令详细: J型指令详细: 分析每条指令的控制信号 逻辑左移指令 SLL rd, Rt,shamt 通过指令译码器,解析出Func字段 ...
- 基于C++的Mips模拟器设计
Mips模拟器 1. 设计思路 利用C++模拟计算机CPU和内存,实现产品主要功能 集成汇编器进入模拟器,实现指令的汇编和反汇编 使用QT开发图形界面,方便用户操作 2. 原理证明 汇编器的证明已经在 ...
- MIPS RAM设计实验
实验目的 理解主存地址基本概念,理解存储位扩展基本思想,并能利用相关原理构建能同时支持字节.半字.字访问的存储子系统. 主要任务 Logisim\text{Logisim}Logisim 中 RAM\ ...
- Educoder头歌单总线CPU设计(定长指令周期3级时序)(HUST)谭志虎 华中科技大学计算机组成原理实验计算机硬件系统设计
.crci文件获取在下方 本实训项目帮助学生理解定长指令周期三级时序系统的设计,能利用该时序构造硬布线控制器,支持5条典型MIPS指令在单总线CPU上运行,最终CPU能运行内存冒泡排序. 定长指令周期 ...
- 单总线CPU设计(现代时序)(HUST)
前言 第1关 MIPS指令译码器设计 第2关 单总线CPU微程序入口查找逻辑 第3关 单总线CPU微程序条件判别测试逻辑 第4关 单总线CPU微程序控制器设计 第5关 采用微程序的单总线CPU设计 ...
最新文章
- 【转】每天一个linux命令(34):du 命令
- R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar)
- 数据库增长到一定程度后的瘦身,优化问题
- 卷积层和全连接层的区别_1*1的卷积核和全连接层有什么异同?
- real--复数的实数部分
- Qt Creator比较文件
- PHPStrom的快捷键突然失效解决方案
- subject.login(token)是如何确认账号密码的_教你如何删除、关闭、注销微信小程序...
- python程序调试题_关于python程序调试问题,一个文件计算的问题
- Django的rom
- Ubuntu ufw 取消 网关到 224.0.0.1 multicast 日志
- 个人作业六:单元测试
- flex项目学习包括什么内容
- 静态初始化--我的理解
- java调用vissim的com接口_VISSIM 高级应用COM接口开发初级入门
- 房地产项目成本管理系统包含的内容和价值!
- zblog添加html标题出错,ZBLOG模板修改的一些技巧小结
- Stellarium(虚拟天文馆)
- 【AnimeJs】——仿Animejs徒手实现SVG动画
- 如何使用stc12c5a60s2控制蜂鸣器