【计算机组成原理课程设计】:实验0 ROM仿真、实验1 验证74L181运算和逻辑功能、实验2 运算器 2、实验 3 跑马灯、实验4 模拟微程序实现指令

下面文件都放在 gitee 中,大家可以自行选择拿取

course_design: 课程设计 - Gitee.comhttps://gitee.com/island0920/course_design/tree/master/%E8%AE%A1%E7%BB%84



前言 -- 如何使用 Multisim

1. 如何使用元器件

2. 常用元器件

VCC
接地
key = space

(正式使用的时候,如果方向不合适,可以 Ctrl + R 进行旋转)

其他元器件

其他要使用的元器件(7408N,74LS181、DCD_HEX、74LS244N、74LS273N、74LS374N)都可以进行搜索,步骤如下:

  1. 将组切换为所有组
  2. 然后在元器件上搜索对应名字

3. 其他部件及操作

字发生器
  • 在 右边的 一列里面选择对应的器件即可
设置层次块

然后设置层次块并且命名之后,就会出现子文件(相当于主函数和子函数的关系)

然后我们在子函数中就可以用到我们下面讲的连接器对其操作,如下:

连接器


实验 ROM仿真

一、 实验题目: 实验 ROM仿真

二、实验目的

(1)掌握ROM的工作原理;

(2)画出逻辑电路图及布出美观整齐的接线图;

(3)掌握ROM读出原理。

三、总体设计

实验原理

存储元由有否二极管组成,若有,由于二极管导通那么数据线上可以读出1;如果没有二极管,数据线上输出接地电平,读出0。

设计步骤
  1. 数据准备:将学号后四位(0509)转换为二进制数剧,分别是0000、0101、0000、1001,并存储到ROM中。
  2. 逻辑电路设计:根据ROM的工作原理,设计相应的逻辑电路图和接线图。
  3. 电路搭建与设计:按照设计好的电路图和接线图,在Multisim搭建实际电路,并进行测试;
简单的基本数字逻辑单元

数据读出与验证:通过观察测试结果,验证ROM的读出原理

四、详细设计

主要实现方法:

(1)U3号与门没有任何连线,使之断开,因为学号第一位是0,对应开关为11。

(2)U4号与门连接到数码显示管的第二个引脚,并连接一个正向的二极管。因为学号第二位是5(0010B),对应开关为10

(3)U5号与门连接到数码显示管的第二个引脚,并连接一个正向的二极管。因为学号第三位是0(0010B),对应开关为01

(4)U4号与门连接到数码显示管的第二个引脚和第一个引脚,都连接一个正向的二极管。因为学号第四位是9(0011B),对应开关为00

  • 大家如果自己想实现自己的学号的,就可以按照我下面所说的思路

  • 先把自己的学号后四位,转化为二进制表示

  • 然后从上到下的二极管 7408N,分别表示学号 1 - 4 位,然后 DCD_HEX 连接的四根线从左到右表示二进制,比如第二行,我连接了D1 和 D2 两个 1N4001 ,哪根线连上了,就表示1,那么我这里就可以表示为 0101(5),同样第四行表示 1001,第一行和第三行不连表示 0

五、实验结果与分析

数码管右侧为低位,左侧为高位,高电平输入有效。要输出数字只需将数字转换成对应的BCD码,并且BCD码中为1对应的位通过一个二极管连接高电平信号和LED灯的引脚。学号后四位依次为0509,通过两个开关控制LED灯即可显示学号的指定位。

1.开关设置为11,学号第一位0成功输出 2.开关设置为10,学号第二位5成功输出

3.开关设置为01,学号第三位0成功输出 4.开关设置为00,学号第四位9成功输出

六、小结与心得体会

因为对 Multisim不太熟悉,最开始连器件在哪都找不到,还得上网查找资料,在查找的过程还了解到DCD-HEX数码管的工作原理以及其他相关概念后,但是思路也并不是很清晰,因此先照着样例把电路图仿真出来,然后根据不同的输入值来进一步分析,观察数码管的变化,推敲出四个与门的输出端和二极管间联系, 根据自己学号后四位修改二极管的位置,实验才顺利解决。通过这个实验,自己对ROM的工作原理有了更深刻的了解。

注意:本题需了解LED灯显示方法并注意连在LED引脚和地线之间加下拉电阻,防止电路电流过大。



实验 验证74LS181运算和逻辑功能

一、实验题目:实验 验证74LS181运算和逻辑功能

二、实验目的

(1)掌握算术逻辑单元(ALU)的工作原理;

(2)熟悉简单运算器的数据传送通路;

(3)画出逻辑电路图及布出美观整齐的接线图;

(4)验证4位运算功能发生器(74LS181)组合功能。

三、总体设计

背景知识

74LS181芯片是主要进行算术和逻辑运算的电路,可以作为处理器进行运算的核心部件。它对两个4位操作数进行逻辑或者算术运算等。74LS181的数据引脚:8个数据输入端(A0--A3,B0--B3),4个二进制输出端(F0,F1,F2,F3),CN端处理进入芯片前进位值,CN4记录运算后的仅为,GN先行进位产生端。PN先行进位传递函数。74LS181的控制引脚:4个控制端(S0,S1,S2,S3),控制两个四位输入数据的运算(加减与或),M引脚控制芯片的运算方式,包括算术运算和逻辑运算。

基本原

ALU能进行多种算术运算和逻辑运算。4位ALU-74LS181能进行16种算术运算和逻辑运算。功能表如下:

|------------------------------------------------------------------------|---------------------------------|-----------------------------------------------|----------------------------------------------------------------|
| 方式 | M= 1 逻辑运算 | M = 0算术运算 ||
| S 3 S2 S 1 S 0 | 逻辑运算 | CN =1 ( 无进位 ) | CN =0 ( 有进位 ) |
| 0 0 0 0 | F=/A | F=A | F=A 1 |
| 0 0 0 1 | F=/(A + B) | F=A + B | F=(A + B) 1 |
| 0 0 1 0 | F=(/A ) B | F=A + /B | F=( A + /B ) 1 |
| 0 0 1 1 | F=0 | F= 负1(补码形式) | F=0 |
| 0 1 0 0 | F=/(A B) | F=A A ( / B) | F=A A / B 1 |
| 0 1 0 1 | F=/B | F=(A + B) A / B | F=(A + B) A / B 1 |
| 0 1 1 0 | F=A Å B | F=A B 减1 | F=A B |
| 0 1 1 1 | F=A/B | F=A (/ B) 减1 | F=A (/ B) |
| 1 0 0 0 | F=/A +B | F=A A B | F=A A B 1 |
| 1 0 0 1 | F=/( A Å B) | F=A B | F=A B 1 |
| 1 0 1 0 | F=B | F=( A + /B ) A B | F=( A + /B ) A B 1 |
| 1 0 1 1 | F=AB | F=AB 减1 | F=AB |
| 1 1 0 0 | F=1 | F=A A | F=A A 1 |
| 1 1 0 1 | F=A + /B | F=(A + B) A | F=(A + B) A 1 |
| 1 1 1 0 | F=A + B | F=(A + / B) A | F=(A + / B) A 1 |
| 1 1 1 1 | F=A | F=A 减1 | F=A |

(上表中的" / "表示求反)

ALU-74LS181引脚说明:M=1 逻辑运算,M=0算术运算。

|-------------------------------------------------------|------------------------------------------------------------|
| 引 脚 | 说 明 |
| M 状态控制端 | M=1 逻辑运算;M=0算术运算。 |
| S 3 S 3 S 1 S 1运算选择控制 | S 3 S 3 S 1 S 1决定电路执行哪一种算术 |
| A 3 A 2 A 1 A 1 | 运算数1,引脚3为最高位 |
| B 3 B 2 B 1 B 0 | 运算数2,引脚3为最高位 |
| Cn 最低位进位输入 | Cn =0 有进位;Cn =1 无进位; |
| Cn+4本片产生的进位信号 | Cn+4 =0 有进位;Cn+4=1 无进位; |
| F3 F2 F1 F0 | F3 F2 F1 F0 运算结果,F3为最高位 |

设计步骤

了解74LS181芯片的工作原理及引脚功能-->了解实验需求-->计书案例电路图-->进行电路设计并仿真-->记录实验数据

四、详细设计

运算过程

分别输入两个四位二进制数(A3、A2、A1、A0)和(B3、B2、B1、B0),输入控制信号(S3、S2、S1、S0),假设控制信号实现的是算数运算(即M=0)加法,则运算过程如下:

  1. 首先,判断CN端是否有进位信号,有的话在运算最低位加一。
  2. 2.分别计算A0+B0、A1+B1、A2+B2、A3+B3,将结果通过F0、F1、F2、F3输出,并判断A3+B3是否有进位。若有进位,则令CN4为0,否则为1。

单刀双掷开关ABCDEFGH控制输入两个四位二进制运算数,单刀双掷开关123456控制输入其他引脚端口的值,通过开关闭合输入不同值,分别对两个运算数进行算术运算和逻辑运算,其中U1和U2两个数码管分别显示两个运算数的值,U3数码管显示运算后的结果。

五、实验结果与分析

由于篇幅限制,我们这里就用第一组数据来举例

(1)当S3 S2 S1 S0=0000,数据1=AH,数据2=5H,M=0,CN=1时的测试,此时无进位,且两数进行算术运算,F=A,可以看到U3数码管显示结果为AH,仿真结果如原理图1-2所示。

(2)数据同上,当CN=0有进位时

(3)数据同上,当M=1时:

验证74LS181型4位ALU的逻辑算术功能,填写下表:

|------------------------------------------------------------------------|------------|------------|-----------------------------------------------|-----------------------------------------------|-----------------------|
| S 3 S2 S 1 S 0 | 数据1 | 数据2 | 算术运算(M=0) || 逻辑运算(M=1) |
| S 3 S2 S 1 S 0 | 数据1 | 数据2 | CN =1 ( 无进位 ) | CN =0 ( 有进位 ) | 逻辑运算(M=1) |
| 0 0 0 0 | AH | 5H | F= AH | F= BH | F= 5H |
| 0 0 0 1 | AH | 5H | F= FH | F= 0H | F= 0H |
| 0 0 1 0 | AH | 5H | F= AH | F= BH | F= 5H |
| 0 0 1 1 | AH | 5H | F= FH | F= 0H | F= 0H |
| 0 1 0 0 | FH | 1H | F= DH | F= EH | F= EH |
| 0 1 0 1 | FH | 1H | F= DH | F= EH | F= EH |
| 0 1 1 0 | FH | 1H | F= DH | F= EH | F= EH |
| 0 1 1 1 | FH | 1H | F= DH | F= EH | F= EH |
| 1 0 0 0 | FH | FH | F= EH | F= FH | F= FH |
| 1 0 0 1 | FH | FH | F= EH | F= FH | F= FH |
| 1 0 1 0 | FH | FH | F= EH | F= FH | F= FH |
| 1 0 1 1 | FH | FH | F= EH | F= FH | F= FH |
| 1 1 0 0 | 5H | 5H | F= AH | F= BH | F= FH |
| 1 1 0 1 | 5H | 5H | F= AH | F= BH | F= FH |
| 1 1 1 0 | 5H | 5H | F= 4H | F= 5H | F= 5H |
| 1 1 1 1 | 5H | 5H | F= 4H | F= 5H | F= 5H |

与之前的 ALU 功能表对比验证可发现,上表结果无误

六、小结与心得体会

刚拿到这道题首先是顿时蛮懵的,然后去网上上了解了一些74LS181芯片的引脚功能,以及74181芯片如何对两个运算数进行逻辑运算和算术运算。

本实验使用单刀双掷开关作为两个运算数的输入使能端,可以很清晰地看出高低电平的输入。通过本实验,我对74LS181芯片的工作原理有了更深刻地了解,以及对ALU的运算和逻辑功能也有一定的认识。

  • 本实验使用单刀双掷开关作为两个运算数的输入使能端,其实完全可以用DSWPK_8来代替使用,可以使电路图更加清晰易懂,不过使用单刀双掷开关作为使能端,也可以很清晰地看出高低电平的输入。

用 DSWPK_8 设置如下:



实验二:运算器(2)

一、实验题目:实验 二 运算器(2)

二、实验目的

(1)熟练掌握算术逻辑单元(ALU)的应用方法;

(2)进一步熟悉简单运算器的数据传送原理;

(3)画出逻辑电路图及布出美观整齐的接线图;

(4)熟练掌握有关数字元件的功能和使用方法。

(5)熟练掌握子电路的创建及使用。

三、总体设计

1. 背景知识
  • 74LS244N芯片介绍:74LS244N芯片是一种4路数据总线缓冲器,当门控信号G为低电平时,芯片工作,将A1--A4输入端的高低电平传输到Y1~Y4输出端;当门控信号G为高电平时,芯片成高阻态。
  • 74LS273N芯片介绍:74LS273芯片的作用是缓冲时钟和直接清除输入,数据独立输入到各触发器。其中1D--8D为数据输入端,1Q--8Q为数据输出端。CLR是复位脚,当CLR脚位低电平时,无论有无脉冲还是输入端是高或低电平,输出端始终位低电平;当且仅当CLR脚为高电平时,输入端1D~8D的数据在脉冲上升期间被传送到输出端1Q--8Q。
  • 74LS374N芯片介绍:74LS374芯片的输出端1Q--8Q可直接与总线相连。当三态允许控制端OC为低电平时,1D--8D为正常逻辑状态,可用来驱动负载或总线。当OC为高电平时,1D~8D成高阻态,即不驱动总线,也不为总线负载。
  • 74LS181N芯片介绍:74LS181N芯片是主要进行算术和逻辑运算的芯片,可以作为处理器进行运算的核心部件。它对两个4位操作数进行逻辑或者算术运算等,前文对74LS181N芯片引脚功能做过详细介绍,这里不再赘述。
2 . 基本原理

🔥 该实验需要自定义元器件层次块,本实验目的是仿真单总线结构的运算器,电路图中,上右下三方的8条线模拟8条数据总线;DSWPK_8 代替8开关输入层次块,74244_BLOCK层次块为三态门电路,将部件与总线连接或断开,两个74273层次块作为暂存工作寄存器DR1和DR2;两个74374层次块作为通用寄存器组;众多的开关作为控制电平或打入脉冲;众多的8段数码管显示相应位置的数据信息。核心为8位ALU层次块

3. 设计步骤

布线74LS244_BLOCK层次块-->布线74LS273_BLOCK层次块-->布线8_ALU_BLOCK层次块-->布线74LS374_BLOCK层次块-->布线总电路图-->测试仿真-->记录实验数据

四、详细设计

1、模块设计

(1)74244_BLOCK模块

此模块用于将两个普通的74LS244三态门芯片进行级联,两个芯片的G端统一连接,两个芯片的输入输出端分别负责低四位和高四位,实现控制八位总线通断。保证两片芯片在低电平有效时同时工作高电平时同时成高阻态,两片芯片工作时,可将8个输入端的数据传输到输出端

(2)74273_BLOCK模块

该模块块选取了一片74LS273N芯片,不同的是,在74LS273芯片CLR输入端接入了VCC高电平,这是为了保证该层次块只要有上升沿时钟脉冲传入就会将输入端值传入到输出端。

(3)74374_BLOCK模块

该层次块选取了一片74LS374N芯片,其实该层次块实现的就是74LS374芯片的功能,理解芯片作用后自然也会了解层次块

(4)8BIT_ALU_BLOCK模块

该模块选取了两篇74LS181N芯片,A0--A3,A4--2A7的8个输入端口是数据1的输入,B0--B3,B4--B7的8个输入是数据2的输入,由于输入的数据位限制,只能选用两片芯片并保证其同时以相同的计算方式工作,运算出结果以输出端1F0--1F3,2F0~2F3输出。相当于将普通的4位ALU级联为八位ALU,计算低位的ALU的进位CN4连到计算高位的ALU的低位进位端CN,两枚芯片的状态控制端统一连在输入端M,输出则低位ALU负责低位输出,高位ALU负责高位输出。

2、线路图设计如下:

设置好每个层次块,将任务指导书上的电路图进行布线仿真后,一步步推敲每个开关按键是什么作用,通过控制开关按键输入不同的值进行多次逻辑运算或算术运算,观察结果是否符合预期。

五、实验结果与分析

(1)说明整个电路工作原理

答:整个电路仿真单总线结构的运算器完成算术和逻辑运算。具体实现为总线为8位,用一个八路开关控制总线上的数据输入;

(2)说明74LS244N的功能及其在电路中作用,及输入信号G有何作用;

答:74LS244N是三态门,控制电平G=1时隔绝电路。控制电平G=0时,74LS244N元件开始工作,选通电路。

(3)说明74LS273N的功能及其在电路中作用,及输入信号CLK有何作用;

答:74LS273N为工作寄存器,输出直接接到ALU的输入端,CLK为接入的脉冲,CLK上升沿有效并且输出寄存的内容,下降沿锁存数据。

(4)说明74LS374N的功能及其在电路中作用,及CLK和OC有何作用;

答:74LS374N作为通用寄存器,同时具有三态门的作用。CLK上升沿有效,OC高电平为高阻态,逻辑操作不受影响,低电平工作。

(5)K8产生任意数据存入通用寄存器GR1。
  1. 多路开关产生数据,S1接低电平,74244三态门模块X2选通将数据投放总线。
  2. S6接低电平,74374芯片X10开始工作,把S7开关从低电平拨到高电平,数据存入GR1。同时保证74244模块X12的G端口置为高电平,避免投放总线。
  3. 将X2的G端口置为高电平,封锁。
(6)K8产生任意数据存入通用寄存器GR2,步骤和5、类似。
(7)完成GR1+GR2→GR1。
  1. 将X12的G端口置为低电平,使GR1寄存器的内容投放总线。
  2. 将X6的G端口置为低电平,并把X8的CLK时钟脉冲从低电平变成高电平,使总线数据存入寄存器DR1。
  3. 将X6和X12的G端口置为高电平。
  4. 同理将GR2的数据存入DR2。
  5. 将八位算术逻辑单元的运算选择控制端分别置为S0=1、S1=0、S2=0、S3=1,进位标志Cin置为1表示低位无进位,同时将M状态控制端置为0,选择算术运算。
  6. X7三态门的G端置为0,将运算结果投放总线。
  7. 将X10的OC端置为低电平,并且将CLK从低电平变为高电平,将总线的计算结果存入GR1。
  8. 关闭X7的G端口。

结果分析:29H+31H=59H,结果和GR1中存储的结果一致。

(8)完成GR1-GR2→GR2。

步骤与7、大致相似,不同之处在于算术逻辑单元的运算选择控制端分别置为S0=0、S1=1、S2=1、S3=0,进位标志Cin置为0。

结果分析:59H-31H=28H,结果和GR2中存储的结果一致。

(9)完成GR1∧GR2→GR1。

步骤与7、大致相似,不同之处在于算术逻辑单元的运算选择控制端分别置为S0=1、S1=1、S2=0、S3=1,同时将M状态控制端置为1,选择逻辑运算。

结果分析:59H=01011001B,28H=00101000B,59H∧28H=00001000B=08H,结果和GR1中存储的结果一致。

(10)完成GR1∨GR2→GR2。

步骤与7、大致相似,不同之处在于算术逻辑单元的运算选择控制端分别置为S0=0、S1=1、S2=1、S3=1,同时将M状态控制端置为1,选择逻辑运算。

结果分析:08H=00001000B,28H=00101000B,08H∨28H=00101001B=28H,结果和GR2中存储的结果一致。

(11)完成GR1⊕GR2→GR1。

步骤与7、大致相似,不同之处在于算术逻辑单元的运算选择控制端分别置为S0=0、S1=1、S2=1、S3=0,同时将M状态控制端置为1,选择逻辑运算。

结果分析:08H=00001000B,28H=00101000B,08H⊕28H=00100000B=20H,结果和GR1中存储的结果一致。

(12)~GR1→GR2。("~"表示逻辑非运算)
  1. 将X12的G端口置为低电平,使GR1寄存器的内容投放总线。
  2. 将X6的G端口置为低电平,并把X8的CLK时钟脉冲从低电平变成高电平,使总线数据存入寄存器DR1。
  3. 将X6和X12的G端口置为高电平。
  4. 将八位算术逻辑单元的运算选择控制端分别置为S0=0、S1=0、S2=0、S3=0,同时将M状态控制端置为1,选择逻辑运算。
  5. X7三态门的G端置为0,将运算结果投放总线。
  6. 将X9的OC端置为低电平,并且将CLK从低电平变为高电平,将总线的计算结果存入GR2。
  7. 关闭X7的G端口。

结果分析:20H=00100000B,~20H=11011111B=DFH,结果和GR2中存储的结果一致。

(13)~GR2→GR1。
  1. 将X11的G端口置为低电平,使GR2寄存器的内容投放总线。
  2. 将X6的G端口置为低电平,并把X8的CLK时钟脉冲从低电平变成高电平,使总线数据存入寄存器DR1。
  3. 将X6和X12的G端口置为高电平。
  4. 将八位算术逻辑单元的运算选择控制端分别置为S0=0、S1=0、S2=0、S3=0,同时将M状态控制端置为1,选择逻辑运算。
  5. X7三态门的G端置为0,将运算结果投放总线。
  6. 将X10的OC端置为低电平,并且将CLK从低电平变为高电平,将总线的计算结果存入GR1。
  7. 关闭X7的G端口。

结果分析:20H=00100000B,~20H=11011111B=DFH,结果和GR1中存储的结果一致。

六、小结与心得体会

刚拿到这道题的时候,感觉这题看上去十分复杂。然后从逐字逐句地看任务指导书开始,认识了用户自定义层次块,74LS244N、74LS181N、74LS273N、74LS374等一些芯片的具体作用,然后开始仿真布线,在连接主电路图时还是遇到了很多问题,由于自己没有事先将电路图图纸布满全屏,所以之后位置就不够了,迫不得已只能重新连线,当把线连好后,其实也并不知道电路原理以及开关按键各自是什么作用,因此开始上午查找资料,向同学请教,在看了同学一遍演示之后,顿悟,然后自己开始仿真每一组数据,对利用单刀双掷开关打入时钟脉冲上升沿有了更深刻的了解,包括对ALU运算器有了更多的认识,总之,这次实验收获了很多。

  • 记忆深刻的是:在实验中由于粗心,在投放总线数据时没有将ALU结果封锁,导致总线上同时有ALU和八路开关的数据,总线上收到的数据出错。以后的实验中一定要注意单总线系统中总线上不能同时接受多个数据

实验 三 字发生器及跑马灯

一、实验题目:实验 三 字发生器及跑马灯

二、实验目的

了解字发生器的使用方法

三、总体设计

背景知识:

字信号发生器可以采用多种方式产生32位同位逻辑信号,用于对数字电路进行测试,是一个通用的数字输入编辑器。

字信号发生器引脚作用:

在字信号发生器的左右两侧各有16个端口,分别为015和1631的数字信号输出端,下面的R表示输出端,用以输出与字信号同步的时钟脉冲;T表示输入端,用来接外部触发信号。

在使用Multisim时,我们这里的话为了方便演示就自己输入数字信号了,另外,频率与实际效果可能有出入,可以调整频率达到理想效果(提示:为了避免每次临时设置,可以把字信号发生器将要输出的数字信号"保存save"为xxx.dp文件;运行时"载入load"该文件)

基本原理

设置好字信号发生器将要输出的32位同步逻辑信号,仿真开始通过给不同的指示灯输入高低电平,使得不同的指示灯按照已设置的频率间断发亮,形成走马灯效果

设计步骤

了解字信号发生器的引脚功能和工作原理-->查看指导书在软件当中如何放置使用字信号发生器-->设置好32位同步逻辑信号-->保存后缀名为.dp的文件-->设置仿真频率-->开始仿真

四、详细设计

放置字信号发生器后设置32位同步逻辑信号(也可以设置十六进制的8位同步逻辑信号),使高电平1从低位向高位移动并保持32位同步信号中只有1位为高电平,来保证在仿真过程中指示灯间断点亮,设置频率,初始频率1kHZ导致走马灯移动过快,调整合适的频率使得指示灯依次点亮时间间隔适中,开始仿真并观察过程记录结果。电路图设计如上。

五、实验结果与分析

设置好32位同步逻辑信号并,然后设置好频率,避免仿真时两指示灯点亮的时间间隔过短,调整频率适中后开始测试并记录结果,测试结果如 图3-2 所示。

分析:字发生器有32位同步逻辑信号,每一位分别对应0-31号引脚,当对应的位为高电平1时,对应的灯随即亮,通过依次0-15位对应的灯亮并且使字发生器循环输出逻辑信号实现了跑马灯的效果。

六、小结与心得体会

果然还是树形好看些,最开始连的图形歪七扭八的,甚至连那个灯泡在哪都不知道(找了好久,才在 Indicators/POWER 那里找到自己想要的灯泡)

这个实验相比于其他的实验是比较容易上手的,而且蛮有意思的。通过设置指示灯位置、32位同步逻辑信号以及仿真频率可以使得走马灯呈现心形等不同的效果

总的来说吧,我们也可以自己设计跑马灯亮的顺序,图案,也可以执行一次指令亮起多盏灯,都是可以实现的啦

当然我们也可以实现朴素版本的,如下:

实验四 模拟微程序实现指令

一、实验题目:实验四 模拟微程序实现指令

二、实验目的

模拟微程序实现指令

三、总体设计

实验原理

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

实验步骤
  1. 以实验三线路图为基础,除去所有的开关,用字发生器代替开关,实现输出信号的控制;
  2. 根据各种操作涉及到到的高低电平,设计每一步操作字发生器的字序列;
  3. 开始模拟,记录每一步操作LED灯的输出结果以及数据的变动。

四、详细设计

字发生器每一个引脚的功能
  1. 第1个:输入的数据1对应的74244三态门;第2个:输入的数据二对应的74244三态门;
  2. 第3个:DR1对应的74244三态门;第4个:DR1的时钟沿端CLK;
  3. 第5个:DR2对应的74244三态门;第6个:DR2的时钟沿端CLK;
  4. 第7个:GR1的OC端;第8个:GR1的CLK端;第9个:GR1对应的74244三态门;
  5. 第10个:GR2的OC端;第11个:GR2的CLK端;第12个:GR2对应的74244三态门;
  6. 第13个:8位ALU的S0端;第14个:8位ALU的S1端;第15个:8位ALU的S2端;第16个:8位ALU的S3端;
  7. 第17个:8位ALU的Cin进位端;第18个:8位ALU的M端;第19个:8位ALU对应的74244三态门;
设计的电路图如下:

五、实验结果与分析

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

GR1中存入数据3H

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

GR2中存入数据1H。

(3)完成GR1+GR2→GR1。

结果分析:GR1+GR2=3H+1H=(0000 0100B)=4H,与GR1中存储结果一致。

(4)完成GR1-GR2→GR2

结果分析:GR1-GR2=3H-1H=(0000 0010B)=2H,与GR2中存储结果一致。

(5)完成GR1∧GR2→GR1

结果分析:GR1∧GR2=3H∧1H=(0000 0001B)=1H,与GR1中存储结果一致。

(6)完成GR1∨GR2→GR2

结果分析:GR1∨GR2=3H∨1H=(0000 0011B)=3H,与GR2中存储结果一致。

(7)完成GR1⊕GR2→GR1

结果分析:GR1⊕GR2=3H⊕1H=(0000 0010B)=2H,与GR1中存储结果一致。

(8)~GR1→GR2。("~"表逻辑非运算)

结果分析:~GR1=~3H=(1111 1100)=FCH,与GR2中存储结果一致。

(9)~GR2→GR1

结果分析:~GR2=~1H=(1111 1110B)=FEH,与GR1中存储结果一致

六、小结与心得体会

1.产生的数据需要分时投放总线,并且所有操作都要自动完成,所以i用了两个八路开关来存储要投放的总线的数据。

2.字发生器的序列可以保存到.dp文件,避免每次运行时重新输入字序列,需要时可以读入.dp字序列配置文件,节省时间。



相关推荐
末世灯光24 分钟前
时间序列入门第一问:它和普通数据有什么不一样?(附 3 类典型案例)
人工智能·python·机器学习·时序数据
Gitpchy2 小时前
Day 20 奇异值SVD分解
python·机器学习
weixin_429630262 小时前
实验二-决策树-葡萄酒
算法·决策树·机器学习
吃饭睡觉发paper4 小时前
Learning Depth Estimation for Transparent and Mirror Surfaces
人工智能·机器学习·计算机视觉
Aaplloo6 小时前
机器学习作业七
人工智能·机器学习
Cathy Bryant6 小时前
矩阵乘以向量?向量乘以向量?
笔记·神经网络·考研·机器学习·数学建模
点灯小铭7 小时前
基于单片机的四沟道步进电机玉米补种机设计与实现
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
清风6666667 小时前
基于单片机的双机串口通信与数字串存储系统设计
数据库·单片机·mongodb·毕业设计·课程设计·期末大作业
小白狮ww7 小时前
LiveCC 首个视频解说大模型开源,比赛视频也能轻松拿捏!
人工智能·深度学习·机器学习
hhhdd_20257 小时前
5 款 PDF 翻译工具深度测评:从格式到免费权限全解析
人工智能·机器学习