1. 实验目的

模拟微程序实现机器语言指令


2. 实验原理

       字发生器的一行输出数据可以作为一条微指令,一条机器语言指令由若干条微指令组成。用字发生器的输出取代图2-3中开关,模拟微指令自动执行实现一条机器语言指令。


3. 实验内容

在Multisim画出电路图并仿真,完成如下操作。

(1)产生任意数据存入通用寄存器GR1。

(2)产生任意数据存入通用寄存器GR2。

(3)完成GR1+GR2→GR1。

(4)完成GR1-GR2→GR2。

(5)完成GR1∧GR2→GR1。

(6)完成GR1∨GR2→GR2。

(7)完成GR1⊕GR2→GR1。

(8)~GR1→GR2。(“~”表示逻辑非运算)

(9)~GR2→GR1。


4. 实验要求

  1. 根据实验内容,认真完成实验操作,并做好记录。
  2. 实验报告。

5. 实验内容 

 基本原理

字发生器的一行输出数据可以作为一条微指令,一条机器语言指令由若干条微指令组成。用字发生器的输出取代开关,模拟微指令自动执行实现一条机器语言指令。


 模块介绍

  数据输入模块

  数据输入控制模块

控制模块封装外观

封装内部电路

  1. 三态门数据输出控制(模块图片与实验3相同)
  2. 门电路控制组(模块图片与实验3相同)
  3. 缓存单元(模块图片与实验3相同)
  4. 锁存单元(模块图片与实验3相同)
  5. 8 BIT ALU

设计步骤 

  • 前面步骤与实验3相同。
  • 增加字发生器,并写入字发生器数据。
  • 运行调试结果。

流程图

 设计图


 微代码(这个只能用于上面的电路)

00000000010000000000100000011110  //加载数字1

00000000010000000000100010011110  //存入数字1

00000000010000000000100000011110  //关闭端口

00000000010000000000000000011110 //加载数字2

00000000010000000000000100011110 //存入数字2

00000000010000000000000000011110 //关闭端口

00000000010000000000000000011111 //存入缓存1,关闭输入

00000000010000000000000000010111 //打开锁存器1

00000000010000000000000000110111 //输入缓存1

00000000010000000000000000011111 //关闭缓存1,关闭锁存器1

00000000010000000000000000011111 //存入缓存2,关闭输入

00000000010000000000000000001111 //打开锁存器2

00000000010000000000000001001111 //输入缓存2

00000000010000000000000000011111 //关闭缓存2,关闭锁存器2

00000000010000000000000000011001 //输出缓存器1,2   

10000000000110010000000000011001 //计算A+B

10000000100110010000000010011001 //输出A+B

10000000100110010000000000011001 //输出A+B

00000000010000000000000000011001 //输出缓存器1,2   

01000000000001100000000000011001 //计算A-B

01000001000001100000000100011001 //输出A-B

01000001000001100000000000011001 //输出A-B

00000000010000000000000000011001 //输出缓存器1,2   

00100000001010110000000000011001 //计算A^B

00100000101010110000000010011001 //输出A^B

00100000101010110000000000011001 //输出A^B

00000000010000000000000000011001 //输出缓存器1,2   

00010000001011100000000000011001 //计算AvB

00010001001011100000000100011001 //输出AvB

00010001001011100000000000011001 //输出AvB

00000000010000000000000000011001 //输出缓存器1,2   

00001000001010010000000000011001 //计算A⊕B

00001000101010010000000010011001 //输出A⊕B

00001000101010010000000000011001 //输出A⊕B

00000000010000000000000000011001 //输出缓存器1,2   

00000100001000000000000000011001 //计算~A

00000101001000000000000100011001 //输出~A

00000101001000000000000000011001 //输出~A

00000000010000000000000000011001 //输出缓存器1,2  

00000010001001010000000000011001 //计算~B

00000010101001010000000010011001 //输出~B

00000010101001010000000000011001 //输出~B

11111110010000000000000000011001 //结束

实验结果与分析

如 计算数字01,11


6.小结与心得体会

   该题目是所以题目中最难的,是前面几个题目的综合运用,对于知识的要求较高,调试的难度也是非常大的,电路简单,字发生器的代码开放困难,接口有32个,很难分清楚接口1与接口2的功能,因为字发生器编辑器不像文本编辑器一样方便,没有接口定义提示,不能直接删除、插入行代码,同时它不能同时增加多条指定代码,只能一条一条的添加,所以刚开始我打算用编程语言编写一个简单的编译程序,直接输出机器语言,方便编写自己的电路代码,不过由于时间的问题,这个需要耐心开放,我是一个一个编写功能的,不断完善它,简单来说这个题目难度还是比较大的。


7.下载电路文件(Github)

MGJ520/IHNUST_PrinciplesofComputerComposition: 湖南科技大学计算机组成原理课程设计题目/Hunan University of Science and Technology Computer Composition Principles Course Design Topics (github.com)


8.其他实验 

我是芒果酱点一个关注吧 ( ´∀`)つt

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐