博客
关于我
山东大学软件学院计算机组成原理课程设计整机实验(2)
阅读量:733 次
发布时间:2019-03-21

本文共 1233 字,大约阅读时间需要 4 分钟。

文章目录

  • 实验时间
  • 实验任务
  • 对JO指令要求的理解
  • JO指令的实现方法
  • 实验中遇到的其他问题5.1 机器吞咽微指令的问题
  • 一、实验时间2021年5月6日星期四,第10周

    2021年5月14日星期四,第11周

    二、实验任务完成计组整机实验的拓展功能1:JO指令的实现

    (图片描述:关于JO指令的实现步骤图)

    三、对JO指令要求的理解

    开始时,我对拓展功能1的理解存在误区。我原本认为A4地址是通过相对寻址方式加法得来的,随后写入FF。但是真实情况是A4地址是固定的,不会通过相对寻址得到。
    后来向老师求教后,我得知以下正确理解:

  • 加法执行结束后,四个状态位将打入PSW寄存器,并显示在控制台的灯上
  • 如果加法不溢出,则顺序执行,不往A4地址中写数据(A4保持初始值)
  • 如果加法溢出,则根据相对偏移量跳转到STORE指令,并向A4地址中写FF
  • JO指令的第一个字长为操作码+0000,第二个字长为相对寻址的偏移量。老师要求我们根据偏移量寻找的是STORE FF A4指令,而不是操作数。

    STORE FF A4的地址通过相对寻址找到,即STORE的地址=当前PC值+偏移量

    注意:如果不溢出,内存不会改变,不能误认为不溢出要写00,溢出要写FF

    四、JO指令的实现方法

    关于JO指令的实现,有两种理解:

  • 我采用的方法是利用三条指令:
    • CMP指令:用于判断是否溢出,如果不溢出则顺序执行,如果溢出则跳转到JO指令
    • JO指令:当溢出时执行,取出JO第二字长的相对偏移量后,通过ALU作加法,将PC置为STORE指令的RAM地址
    • STORE FF A4指令:将FF存入A4,然后重置PC,跳转至乘法指令
  • 实现JO指令的关键在于条件判断:如何有溢出就跳转,不溢出就顺序执行。我的实现方法是:

    • 如果溢出,将PC置为跳转指令的RAM地址
    • 如果不溢出,则PC+1
    • 通过LOADPC微指令和溢出位V共同决定LD脚的输出
    • 只有LOADPC=1且V=1时,LD脚输出为0,此时PC置数模式
    • 其他情况下,PC+1模式

    另一种理解:

    • JO指令:用于判断溢出,如果溢出则根据相对寻址找到STORE指令并跳转
    • STORE FF A4:将FF存入A4地址中

    我认为这两种方法都可以,第二种实现更为简单。

    关于STORE FF A4指令:

    这是我自己设计的指令格式:

    • 第一字长:OP+低四位
    • 第二字长:A4
    • 第三字长:FF
    • 第四字长:执行后跳转的RAM地址

    五、实验中遇到的其他问题

    5.1 机器吞咽微指令的问题
    在初期微指令较少时,连续脉冲执行正常。但当加入乘法指令和JO后,单脉冲测试无异常,连续脉冲却会在乘法指令执行到一半时显示微指令全0,随后跳转至微指令取指阶段。
    后来向老师求教,老师称可能是机器老化或负载过大导致的。改用以下启动电路后,问题得到解决:

    (图片描述:改装后的二分频启动电路)

    这个问题并非 everyone 会遇到。如果你在单脉冲正常但连续脉冲出现问题时,可以考虑更换启动电路。

    转载地址:http://vpagz.baihongyu.com/

    你可能感兴趣的文章
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>