【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】

本文主要是介绍【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux

😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言

文章目录

    • 一、课程设计目的
    • 二、课程设计内容
    • 三、课程设计步骤
    • 四、课程设计总结

一、课程设计目的

利用经典的单总线结构运行MIPS程序,可以设计传统三级时序硬布线控制器,也可以设计现代时序硬布线控制器和微程序控制器,可以为不同的时序系统增加中断处理机制。

二、课程设计内容

  1. 单总线CPU设计(定长指令周期3级时序)(HUST)
  2. MIPS指令译码器设计

1.1.实验目的
理解指令译码的基本概念,能将32位MIPS指令字译码成不同的指令译码信号。

  1. 定长指令周期—时序发生器FSM设计

2.1.实验目的
理解传统三级时序系统中时序发生器的基本原理,能设计定长指令周期的时序发生器状态机以及输出函数。

  1. 定长指令周期–时序发生器输出

3.1.实验目的
理解传统三级时序系统中时序发生器的基本原理,能设计定长指令周期的时序发生器状态机以及输出函数。

  1. 硬布线控制器组合逻辑单元

4.1. 实验目的
理解传统三级时序系统中硬布线控制器的设计原理,能设计硬布线控制器组合逻辑单元。

  1. 定长指令周期-硬布线控制器设计

5.1.实验目的
理解传统三级时序系统中硬布线控制器的设计原理。

  1. 定长指令周期–单总线CPU设计

6.1. 实验目的
理解单总线结构CPU基本原理,能设计定长指令周期的三级时序系统,是的MIPS程序能在单总线结构上运行,最终能运行简单的排序程序sort-5.hex。

  1. 单总线CPU设计(变长指令周期3级时序(HUST)
  2. MIPS指令译码器设计
    1. 实验目的

理解指令译码的基本概念,能将32位MIPS指令字译码成不同的指令译码信号。

  1. 变长指令周期–时序发生器FSM设计
    1. 实验目的

理解传统三级时序系统中时序发生器的基本原理,能设计变长指令周期的时序发生器状态机以及输出函数。

  1. 变长指令周期–时序发生器输出函数设计
    1. 实验目的

理解传统三级时序系统中时序发生器的基本原理,能设计变长指令周期的时序发生器状态机以及输出函数。

  1. 硬布线控制器组合逻辑单元
    1. 实验目的

理解传统三级时序系统中硬布线控制器的设计原理,能设计硬布线控制器组合逻辑单元。

  1. 变长指令周期-硬布线控制器设计
    1. 实验目的

理解传统三级时序系统中硬布线控制器的设计原理。

  1. 变长指令周期—单总线CPU设计
    1. 实验目的

理解单总线结构CPU基本原理,能设计定长指令周期的三级时序系统,使得MIPS程序能在单总线结构上运行,最终能运行简单的排序程序sort-5.hex。

  1. 单总线CPU设计(现代时序)HUST)
  2. MIPS指令译码器设计
    1. 实验目的

理解指令译码的基本概念,能将32位MIPS指令字译码成不同的指令译码信号

  1. 单总线CPU微程序入口查找逻辑
    1. 实验目的

理解传统三级时序系统中时序发生器的基本原理,学生能设计定长指令周期的时序发生器状态机以及输出函数

  1. 单总线CPU微程序条件判别测试逻辑
    1. 实验目的

理解传统三级时序系统中时序发生器的基本原理,学生能设计定长指令周期的时序发生器状态机以及输出函数

  1. 单总线CPU微程序控制器设计
    1. 实验目的

理解传统三级时序系统中硬布线控制器的设计原理,学生能设计硬布线控制器组合逻辑单元

  1. 采用微程序的单总线CPU设计
    1. 实验目的

理解传统三级时序系统中硬布线控制器的设计原理

  1. 现代时序硬布线控制器状态机设计
    1. 实验目的

理解单总线结构CPU基本原理,能设计定长指令周期的三级时序系统,是的MIPS程序能在单总线结构上运行,最终能运行简单的排序程序sort-5.hex

  1. 现代时序硬布线控制器设计
    1. 实验目的

理解现代时序系统中硬布线控制器的设计原理。

三、课程设计步骤

  1. 单总线CPU设计(定长指令周期3级时序)(HUST)
  2. MIPS指令译码器设计
    1. 原理

MIPS指令译码器的设计可以分为以下几个步骤:
确定指令格式:MIPS指令有三种格式,分别是R型、I型和J型,每种格式有不同的字段和位数,因此需要先确定指令的格式。

分析指令字段:根据指令格式,确定各个字段的含义和作用。例如,R型指令中包含操作码、源操作数寄存器编号、目的操作数寄存器编号、移位量等字段,需要分析这些字段的位数和作用。

实现指令译码逻辑:根据指令格式和字段信息,设计指令译码逻辑。这一步通常需要使用逻辑门、多路选择器、寄存器等组件来实现。

测试和验证:设计完指令译码器后,需要进行测试和验证,确保它能够正确地解析各种指令,并将指令字段正确地传递到后续的执行阶段。

格式如下:

此实验需要mips知道操作码op对应的值,下面给出实验中用到的mips指令的op码的值

Mips指令Op码
LW100011(23)
SW101011(2b)
ADDI001000(08)
BEQ000100(04)
[SLT](https://so.csdn.net/so/search?q=SLT&spm=1001.2101.3001.7020" \t "https://blog.csdn.net/qq_62325622/article/details/_blank)000000(00)
  1. 接线图image.png
  2. 定长指令周期—时序发生器FSM设计

2.1.原理
状态机负责现态与次态的转换,输出函数根据当前状态生成状态周期电位和节拍周期电位。

单总线结构中如果采用定长指令周期,所有MIPS指令都需要3个机器周期,每个机器周期4个时钟节拍,一共需要12个状态,状态图如下: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
按状态图填写相应的excel表,自动生成次态逻辑表达式后,即可在logisim中自动生成该电路。

2.2. 接线图image.png

  1. 定长指令周期–时序发生器输出

3.1.原理
根据状态转化图我们可以容易的填写输出函数的真值表,得到生成函数自动生成输出函数的逻辑电路。


3.2.接线图image.png

  1. 硬布线控制器组合逻辑单元

4.1. 原理
在硬布线控制器中,每个控制信号c都对应一个指令,并且硬布线控制器可以看作是存储组件和逻辑电路的结合体。因此,我们只需要了解每个操作控制信号所产生的调节作用,就能够得到它们的逻辑表达式。

通过对数据通路进行分析,我们可以得到五条不同的指令,并且在取指令周期、计算周期和执行周期的不同阶段,会产生不同的控制信号。这些控制信号的产生条件需要综合考虑下面两个图表。对于所有的控制信号,需要推导出其逻辑表达式,同时在设计 CPU 电路时对控制点的逻辑表达式进行化简。

可以列出所有微操作信号的产生条件,填写下面的excel表格,自动生成逻辑表达式,然后再Logisim中自动生成电路。

4.2. 接线图
image.png

  1. 定长指令周期-硬布线控制器设计

5.1. 原理
该实验是对前面的组装
5.2. 接线图image.png

  1. 定长指令周期–单总线CPU设计

6.1. 原理
该实验是对前面实验的全部封装
6.2. 接线图image.png

  1. 单总线CPU设计(变长指令周期3级时序(HUST))
  2. MIPS指令译码器设计
    1. 原理

MIPS指令译码器设计和定长是一样的。

  1. 接线图image.png
  2. 变长指令周期–时序发生器FSM设计
    1. 原理

变长的状态机和定长的状态机有区别,要根据变长的状态机的状态转化图,填写execl表格自动生成电路。

  1. 接线图image.png

  2. 变长指令周期–时序发生器输出函数

    1. 原理

    根据上面实验的状态转化图我们可以填写出execl表格。

    1. 接线图

image.png

  1. 硬布线控制器组合逻辑单元
    1. 原理

变长的控制器和变长的控制器是一样的,因此可以使用定长的硬布线控制器组合逻辑单元的execl表直接来生成函数,然后自动生成电路图。

  1. 接线图

image.png

  1. 变长指令周期-硬布线控制器设计
    1. 原理

对前面实验的组装

  1. 接线图

image.png

  1. 变长指令周期—单总线CPU设计
    1. 原理

对前面实验的封装与测试。

  1. 接线图

image.png

  1. 单总线CPU设计(现代时序)HUST)
  2. MIPS指令译码器设计

和前面的实验一样不再赘述。

  1. 单总线CPU微程序入口查找逻辑
    1. 原理

微程序的入口需要通过状态转化图来知道,并且需要我们把微程序入口的值填写到execl表中,采用自动生成逻辑表达式自动生成电路。

  1. 接线图

image.png

  1. 单总线CPU微程序条件判别测试逻辑
    1. 原理

和前面类似,使用EXCEL自动生成即可。

  1. 接线图

image.png

  1. 单总线CPU微程序控制器设计
    1. 原理

和前面类似,使用EXCEL自动生成即可。

  1. 接线图

image.png

  1. 采用微程序的单总线CPU设计
    1. 原理

对前面实验的测试

  1. 接线图

image.png

  1. 现代时序硬布线控制器状态机设计
    1. 原理

根据状态转换图填写EXCEL表

  1. 接线图(部分)

image.png

  1. 现代时序硬布线控制器设计
    1. 原理

依据前一个实验进行逻辑连接。

  1. 接线图

image.png

四、课程设计总结

通过本课程设计,我们深入了解了单总线结构运行MIPS程序的原理和设计过程,包括传统三级时序系统、变长指令周期系统以及现代时序系统。具体内容包括MIPS指令译码器设计、定长/变长指令周期的时序发生器设计、硬布线控制器的组合逻辑单元设计、单总线CPU的设计等。
在定长指令周期3级时序系统方面,我们学会了设计MIPS指令译码器、时序发生器FSM和输出函数、硬布线控制器组合逻辑单元等,最终实现了单总线CPU能在定长指令周期内运行MIPS程序的目标。
在变长指令周期3级时序系统方面,我们针对变长指令周期的特点,设计了相应的时序发生器和硬布线控制器,使得单总线CPU能够适应不同长度的指令周期。
在现代时序系统方面,我们学习了微程序控制器的设计原理,并将其应用在单总线CPU设计中,实现了采用微程序的单总线CPU设计以及现代时序硬布线控制器的状态机设计和硬布线控制器的设计。
通过这些实验,我们对计算机体系结构的实际设计有了更深入的理解,同时也提高了我们的设计能力和实践能力。这些知识和技能对我们今后在计算机体系结构领域的学习和工作都将大有裨益。

这篇关于【头歌·计组·自己动手画CPU】五、单总线CPU设计(理论版) 【计算机硬件系统设计】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719397

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方