【头歌·计组·自己动手画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系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创