【头歌·计组·自己动手画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

相关文章

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p