MIPS CPU设计(基于华中科技大学计组实验)

      

来都来了给我点个赞收藏一下再走呗~~~🌹🌹🌹🌹🌹

   本次实验要求我们掌握的是MIPS CPU设计,而此实验中关注的重点是在计算机中的cpu的运行模式,这个模式可以参考冯诺伊曼的计算机架构去理解,还需要知道的是指令格式和指令在计算机中是如何解析的。

本实验要求我们掌握MIPS指令的格式,MIPS指令的解析,微程序的概念,控制器是如何控制指令的,还需要知道PC程序计数器有哪两种计数模式,状态转化,单周期和多周期的指令在cpu中是怎么执行指令的。

做本实验之前要求掌握的前提知识:

1. 单周期和多周期CPU的区别以及执行流程

2.  MIPS指令格式

3. 微程序地址转移逻辑

4. 硬布线控制器状态转化控制

5. 多周期MIPS硬布线控制器CPU

        实验需知:在做此实验之前我们需要知道的是如何通过使用实验包中给出的execl表格来进行电路的自动生成,我们需要知道的前提是在logisim的自动生成电路中不可以使用到复杂的逻辑门和复用器。

       这个地方我举一个简单的例子,里面的execl表中的数据我就步在讲解只是告诉要如何使用到execl中生成的表达式在logisim中自动生成电路。

       首先我们需要直接填写的部分如下所示:

       如何我们就可以切换到自动生成表达式的表格中点击下面的自动生成:

       我们点击logisim中的项目à分析电路à表达式à填写表达式à填写完构建电路:

第1关:单周期MIPS CPU设计

首先mips指令是分为了三种,如图4.1所示:

  1. R型指令格式为:op rd, rs, rt,shamt,funct其中op为操作码,rd为目标寄存器,rs和rt为源寄存器。R型指令主要用于寄存器的操作,如加减乘除、逻辑运算等。
  2. I型指令格式为:op rt, rs, imm,其中op为操作码,rt为目标寄存器,rs为源寄存器,imm为立即数。I型指令主要用于立即数的操作,如加载。
  3. J型指令格式为:op rs, imm,其中op为操作码,rs为源寄存器,imm为跳转地址。J型指令用于跳转操作

图4.1:指令格式

        我们可以根据指令的操作码op传送到控制器中就可以知道,当前控制的需要进行的操作是那一个,然后就是需要把Rs,Rt,Rd送到寄存器中,让寄存器在输出两个值,当不是J指令的时候我们就让PC计数器的值加上4,如果是J指令的时候就直接让PC计数器的值等于我们要跳转的地址,这个地方的值需要用到一个数据选择器实现。

        具体的实现我们就可以直接找着实验中给出的数据通路进行电路图的设计了,实验给出的数据通路图如图4.2所示:

图4.2 数据通路示范

       具体单周期mips的数据通路图,如图4.3所示:

图4.3:单周期MIPS电路图

      

在写硬布线控制器的时候我们需要知道实验要求我们使用的八种mips指令所对应的op码对应是多少我们就可以更具op传入的值和对应的操作码进行比较来决定是什么指令,指令对应op操作码值的表格如下所示:

Mips指令

Op码

Add(两个寄存器的值相加,并将结果存储在目标寄存器中。)

000000

Slt(比较两个寄存器的值,并将结果(0 或 1)存储在目标寄存器中)第一个小于第二个置1

000000

ADDI(用于将一个立即数添加到目标寄存器的值中。)

001000

Lw(用于从内存中加载一个32位的字到目标寄存器中。)

100011

Sw(用于将一个32位的字从源寄存器存储到内存中。)

101011

Beq(比较两个寄存器的值,值相等,那么程序将跳转到指定的地址。)

000100

Bne(不相等跳转)

000101

Syscall(系统调用停机)

000000

单周期的硬布线控制器如图4.4-4.5所示:

图4.4单周期的硬布线控制器

图4.5单周期的硬布线控制器

 

第2关:微程序地址转移逻辑设计

       根据视频中给出的状态值对应的微指令地址,我们需要去填写execl表格,指令状态转化图如图4.6所示:

        

图4.6指令状态转化图

实现微程序地址转移逻辑的execl表如图4.7所示,我们只需要把地址逻辑自动生成的表达式放入logisim的自动生成中就可以得到微程序地址转移的电路图(部分)如图4.8所示:

图4.7 微程序地址转移逻辑的execl表

4.8微程序地址转移逻辑电路图(部分)

设计微程序控制器,把对应的八条控制指令的控制信号对应的有要这条控制信号的就把对应的信号设置为1,否则为0,控制信号的如图4.9所示:

图4.9:控制信号图

Execl表如图4.10所示:

图4.10 微指令功能微指令

现在就只需把上面的十六进制数复制到控制存储器中即可,结果如图4.11所示:

图4.11:控制寄存器数据

       指令译码逻辑和运算器控制逻辑的电路图如图4.12所示:

图4.12 指令译码和运算器控制逻辑电路

第3关:MIPS微程序CPU设计

也是可以根据视频中给出的多周期MIPS的数据通路的参考图就可以很容易的设计出,多周期MIPS的数据通路电路图如图4.13所示:

图4.13多周期MIPS的数据通路

第4关:硬布线控制器状态机设计

根据上面实验给出的状态转化图,可以填写出execl表,实现现态和次态的转化,execl的具体表格如图4.14所示:

图4.14 状态机状态转化execl表

       逻辑表达式自动生成表格如图4.15所示:

图4.15 表达式自动生成

当前我们只需要把逻辑表达式放入logisim的自动生成电路中就会自动的帮我们生成如图4.16所示的电路(部分):

图4.16 状态机FSM电路(部分)

指令译码逻辑和运算器控制逻辑和微指令多周期的MIPS控制器中的是一样的如图4.17所示:

图4.17 指令和运算器逻辑电路图

第5关:多周期MIPS硬布线控制器 CPU设计(排序程序)

       多周期的MIPSCPU就是在每一个的输出的时候都加一个寄存器用于寄存指令输出之类的,然后通过寄存器中的数据我们可以把单时钟信号变为多时钟信号,多时钟信号可以减小一个时钟周期的时间过长。

也是可以根据视频中给出的多周期MIPS(硬布线)的数据通路的参考图就可以很容易的设计出,多周期MIPS的数据通路电路图如图4.18所示:

图4.18 多周期MIPS硬布线控制器CPU设计电路图

多周期MIPS硬布线控制器CPU设计电路图清晰图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286132.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细教程 - 进阶版 鸿蒙harmonyOS应用 第十二节——鸿蒙操作系统中的动画效果封装:Java和TypeScript版

简介 动画效果是开发鸿蒙应用时的一个重要功能。在这篇文章中,我们将详细探讨如何在鸿蒙系统中使用Java和TypeScript实现动画效果的封装,并提供一些代码示例。 Java版动画效果的实现 在鸿蒙操作系统中,我们可以使用ohos.agp.animation.Anima…

全国县级行政区点位数据,Shp+excel格式

基本信息. 数据名称: 县级行政区点位 数据格式: Shpexcel 数据时间: 2021年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1xzqhdm_1省代码2xzqhmc_1省名称3xzqhdm_2市代码4xzqhmc_2市代…

ZKP Commitment (2)

MIT IAP 2023 Modern Zero Knowledge Cryptography课程笔记 Lecture 5: Commitment 2 (Ying Tong Lai) Polynomial Commitment f(x) a 0 a_0 a0​ a 1 x a_1x a1​x a 2 x 2 a_2x^2 a2​x2 … \dots … a n x n a_nx^n an​xn a i a_i ai​ is secret commit(f,…

基于 Flink 构建实时数据湖的实践

本文整理自火山引擎云原生计算研发工程师王正和闵中元在本次 CommunityOverCode Asia 2023 数据湖专场中的《基于 Flink 构建实时数据湖的实践》主题演讲。 实时数据湖是现代数据架构的核心组成部分,随着数据湖技术的发展,用户对其也有了更高的需求&…

t-SNE高维数据可视化实例

t-SNE:高维数据分布可视化 实例1:自动生成一个S形状的三维曲线 实例1结果: 实例1完整代码: import matplotlib.pyplot as plt from sklearn import manifold, datasets """对S型曲线数据的降维和可视化"&q…

JS考试家和会员注册(网页数据验证)

主代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><link rel"stylesheet" href"css/regist.css" /><link rel"stylesheet" href"css/common.css" /><link rel"sty…

WordPress主题 响应式个人博客主题Kratos源码

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

基于ssm大学学生成长系统论文

摘 要 随着互联网技术的发展&#xff0c;各类网站应运而生&#xff0c;网站具有新颖、展现全面的特点。因此&#xff0c;为了满足阜阳师范大学学生成长管理的需求&#xff0c;特开发了本阜阳师范大学学生成长系统。 本阜阳师范大学学生成长系统采用Java技术&#xff0c;基于SS…

Apollo开放平台9.0让自动驾驶开发者轻松上手

文章目录 平台架构&#xff1a;基础环境&#xff1a;开始使用&#xff1a;体验心得: 在自动驾驶技术飞速发展的今天&#xff0c;成为这个领域的一名开发者是一次挑战、一次冒险&#xff0c;更是一次心灵之旅。作为这个领域的先锋之一&#xff0c;Apollo开放平台9.0于12月19日发…

Python实战 | 如何抓取腾讯视频

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 爬虫: 作用: 批量采集数据 / 模拟用户行为 原理: 模拟成 客户端 向 服务器 发送网络请求 环境介绍: python 3.8 解释器 pycharm 编辑器 第三方模块: reques…

【网络安全】-Linux操作系统—CentOS安装、配置

文章目录 准备工作下载CentOS创建启动盘确保硬件兼容 安装CentOS启动安装程序分区硬盘网络和主机名设置开始安装完成安装 初次登录和配置更新系统安装额外的软件仓库安装网络工具配置防火墙设置SELinux安装文本编辑器配置SSH服务 总结 CentOS是一个基于Red Hat Enterprise Linu…

如何压缩视频到50m以内?几个步骤轻松搞定!

兴冲冲地想要在微信、qq上分享给朋友一个长视频&#xff0c;要么在点击发送的时候传输到最后一刻失败了&#xff0c;要么传输太慢等待中兴味消耗无几&#xff0c;实在让人头大…… 在直播会议、课程过程中&#xff0c;为了方便后续随时回放或编辑记录&#xff0c;录制了一个长…