山东大学软件学院计组课设2021整机实验(补码加法+溢出跳转+原码一位乘)

本文主要是介绍山东大学软件学院计组课设2021整机实验(补码加法+溢出跳转+原码一位乘),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文目录

    • 前言
        • 致读者
        • 写作目的
    • 一、实验要求
        • 1.1 基本要求
        • 1.2 扩展要求(一)
        • 1.3 扩展要求(二)
        • 1.4 其它扩展
    • 二、概念剖析
        • 2.1
    • 三、思路设计
    • 四、电路图
    • 五、问题与解决
        • 5.1 总线输出接灯,程序运行中,灯没有亮
        • 5.2 JP不能跳转回00H
        • 5.3 QJP微操作执行后,总是会顺序多走一步微操作,再进行跳转
    • 六、收获感悟
    • 七、项目资源
    • 后话

前言

致读者

学子苦课设久矣——笔者在写下这句话时,叹息连连。

因为基础差,加上之前实验划水,初逢整机实验时那真是一脸懵逼,一筹莫展:做了3次实验,电路图都连不上一根线。概念、原理、要求都没有弄清的情况下冥思苦想,让我走了许多弯路…

幸好在弯路上,CSDN上校友的博客,同学的指导给了我启发,实验也渐渐有了进展。

现在,我正把路上的见闻整理成文字图表,希望能够给你哪怕一点点帮助,就像我当初从别人那里获得帮助一样。

疑义相与析,欢迎留言或私信探讨,Any problem will be OK!(๑•̀ㅂ•́)و✧

写作目的
  1. 以写作输出厘清思路,查缺补漏
  2. 记录自己的成果与收获
  3. 帮助苦于课设的你早日征服它

(陆续填坑ing…)

一、实验要求

1.1 基本要求

在这里插入图片描述
注意:

  1. LOAD取数指令采用双字长直接寻址
  2. STORE指令采用双字长寄存器间接寻址方式
  3. 取指微程序入口固定为控存的00H
  4. MDR:一端接内存数据线,另一端接内部数据线,实现MDR与内存数据的隔离
  5. 在保存运算结果的同时,也要保存结果的状态(C、V、N、Z)

C:进位, V:溢出, N:结果为负, Z:结果为零

在这里插入图片描述
其他要求:

今年,我们老师建议使用典型总线结构(与之相反的是非典型总线结构,即以ALU为中心
在这里插入图片描述

典型总线结构

在这里插入图片描述

非典型总线结构

同时还要求通用寄存器需要封装成一个寄存器组,统一管理。

这一部分建议大家尽早明确各自老师要求,以实际为准!!!

1.2 扩展要求(一)

在这里插入图片描述

1.3 扩展要求(二)

在这里插入图片描述

1.4 其它扩展

在这里插入图片描述

二、概念剖析

2.1

三、思路设计

四、电路图

五、问题与解决

5.1 总线输出接灯,程序运行中,灯没有亮

总线上的灯不亮,说明数据没有到总线。

造成这个问题有很多很多的原因,比如RAM压根没有读出数据、数据没有进入寄存器、寄存器的三态门没有打开、某元件本来就有问题…(太多了,根本例举不完)

Debug方法:

一定要多接指示灯!一定要多接指示灯!!一定要多接指示灯!!!

怀疑某个地方有问题,就在那里的输入端/输出端/两端都接上指示灯,观察运行时对应灯泡的变化。

怀疑某个元件本身就无法完成自身功能,就应该单独把它拿出来,输出接灯,手动给它输入和脉冲,观察是否正常。

Example:

我的项目中,取LOAD指令的取指周期中,执行MDR->BUS->IR时,总线灯不亮(我的LOAD指令二进制是0001 0001)

分析:
正常情况下,现在总线上的数据就是LOAD指令,总线灯应该就是0001 0001,但总线灯是0000 0000

于是我首先怀疑是MDR的问题,具体包括以下可能:

  1. MDR没有存入数据,所以无输出
  2. MDR有数据,但是与BUS间的三态门没有打开

所以我在MDR与三态门之间8条线都接上一个指示灯(如下图)
在这里插入图片描述
再次测试MDR->BUS->IR指令,

结果灯为0001 0001!

这说明 MDR有数据,但是与BUS间的三态门没有打开。

于是我沿着线找到了控制这个三态门的3-8译码器的Y3N输出端。
在这里插入图片描述
此时,我认为我对3-8译码器的控制逻辑是没有错误的,肯定是3-8译码器元件自身有问题,所以就把它取出来单独测试:
所有输入端绑定开关,所有输出端绑定灯泡

结果都是正常的(比如输入001,结果为0000 0001),证明3-8译码器自身没有问题

到这里,就不得不怀疑是我对3-8的控制逻辑有问题。

经过检查,发现3-8译码器的输入端弄反了:本来应该是ABC从低到高接,但是我按从高到低接了(笑哭)

最后,我把A和C所接的输入端交换了一下,问题终于解决

5.2 JP不能跳转回00H

我的电路图中,让μPC之前通过二选一选择器来选择QJP与JP跳转方式。
在这里插入图片描述

当选择BY为1时,将B0~B7传入μPC,而 B7 ~ B0依次接的是μIR23~μIR16。

经过检查,发现我设计的JP微指令中μIR23~μIR16并不为全零,自然无法跳转回00H

5.3 QJP微操作执行后,总是会顺序多走一步微操作,再进行跳转

时序问题

六、收获感悟

七、项目资源

后话

这篇关于山东大学软件学院计组课设2021整机实验(补码加法+溢出跳转+原码一位乘)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2