day04 设计计算机硬件

本文介绍了在嵌入式系统中如何从零开始搭建计算机,包括添加控制器以简化指令控制信号,以及如何将数据RAM和指令RAM合并为一个RAM。详细讲述了控制器的工作原理、操作数和操作码的概念,以及合并内存后取指令和执行指令的双时钟周期过程。此外,还展示了电路实现的具体步骤和修改,如PC计数器和RAM的地址位调整。
摘要由CSDN通过智能技术生成

嵌入式学习-04_嵌入式技术之从零搭建计算机

1 添加控制器

指令的本质就是控制信号的开关。

当前我们的控制信号如图所示:

在这里插入图片描述

0、1:控制ALU的计算选择(加、减、与、或)。

2、3:ALU的A输入选择信号。

4、5:ALU的B输入选择信号。

6:寄存器A的写使能信号。

8: PC计数器的写使能信号。

9: je条件跳转控制信号。

10:jmp无条件跳转控制信号。

11:数据RAM写使能信号。

12:数据RAM读使能信号。

15:终止信号。

现在已经有11位的信号控制了,如果电路越来越复杂,控制信号会越来越多。每一个控制信号都需要一个2进制位来表示它,现代计算机的指令多达几百上千个,那我们指令占用的位就太多了,我们必须用一种方式简化指令占用的控制位。

一个二进制位表示2个数字,目前我们的系统一共有如下9条指令,那么只需要24=16,也即4个二进制位就可以表示。

在这里插入图片描述

为了后期进一步扩展完善系统,我们选择25,32条指令的空间留有扩展的余地。5个二进制位在这里我们称为操作码,英文缩写opcode。

假如我们把每一条指令和一个5位opcode按照如下方式映射起来:

在这里插入图片描述

也就是当opcode=00000时,表示指令halt,当opcode=00001时,表示指令ld_a,以此类推。

新建一个电路图,取名控制器,然后在电路图中添加查找表,如下图所示:

在这里插入图片描述

查找表设置输入位为5位(与opcode一致),数据位16位。

在这里插入图片描述

点击编辑,输入映射关系数据(查找表默认显示的16进制数据)。

在这里插入图片描述

完善控制器电路如图:

在这里插入图片描述

以上控制器电路,就实现了通过5位的opcode,映射出对应指令的控制信号。

有了控制器之后,我们的指令寄存器中存放的数据就修改为opcode即可。修改电路如下图:

在这里插入图片描述

指令寄存器中存放 opcode(11-15),通过ALU控制器中的查找表映射出控制信号。

我们来测试一下加入控制器后的电路,计算29+38-5-3,并将运算的结果存放到数据RAM的地址5的位置。

数据RAM和指令RAM的数据如下:

在这里插入图片描述

仿真执行后结果如图:

在这里插入图片描述

2 将两块内存合二为一

2.1 现有系统运行方式梳理

在合并改造之前,我们先回顾一下我们现在的系统。

(1)开始我们有一个PC程序计数器,程序计数器的输出是一个4位的地址。

(2)该4位的地址既是我们指令RAM的地址,用来获取指令RAM中存放的opcode,也是数据RAM的读取地址,用来读取数据RAM中存放的数据。

(3)接下来我们的opcode通过控制器中的查找表,会映射出整个电路的信号开关控制情况,进而

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路x飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值