前言
上面一篇文章我们介绍了基本的计算机组成原理,介绍了计算机的发展历史,并且带大家认识了一些基本组件。这一期我们开始仍然要先带大家介绍一些核心组件,然后接下来就是真正的去自己动手做一台计算机,相信通过本期的学习,大家可以稍微熟悉计算机一些简单的工作过程。话不多说,直接上干货!
八位寄存器(Reg8Bit)
首先我们要绘制出一个核心组件:八位寄存器。打开我们的仿真软件Digital,找到组件点击寄存器,将寄存器拖入到绘制区域,如下图:
然后需要设置输入Din、寄存器、驱动器、输出Dout为8位,绘制出如下仿真电路:
这个8位寄存器就是比较好用的寄存器了,输出data是为了仿真过程中便于我们观察数据设置的一个输出,驱动器的作用就是,当数据存储到寄存器中以后,我们按动OE,此时数据才会输出,否则不会输出。我们将这个电路命名为Reg8Bit,这个将是我们接下来学习的核心组件。
内存单元格(MEMCELL)
利用非常好用的8位寄存器,我们可以绘制一个内存单元格,首先内存单元格要知道自己在哪一行哪一列,我们要需要有row和colume,内存单元要有ld(load)读的控制、str(store)存的控制和数据的输入。我们先来看一下下面的原理图:
这里只不过是多了几个条件,首先行和列要被选中,然后存数据WE要被打开才可以进行存数据,所以这里加了两个与门来实现,对外输出OE也是一样,必须行和列都选中的时候才要对外输出,同样要加与门。输入的8位数据Din和时钟clock这里就不用过多解释了。总结一句:行和列都打开,str打开我们才可以存数据,行和列都打开,id打开,我们才可以输出数据。仿真效果图如下:
十六个地址的内存
绘制
我们绘制完内存单元后,就可以绘制内存了,这里我们画一个十六个地址的内存。前面我们有提到行和列是因为内存单元都是以矩阵的方式排布的,这样可以节约资源。在画的过程中,线比较多,为了便于观察和仿真,这里我们用到了组件中的隧道,顾名思义,隧道的作用就是,不使用导线实现组件连接,所有具有相同名称的隧道网络认为连接到一起。Ps:仅在当前电路有效,不能用于不同电路,没有名称的隧道组件被忽略。
绘制的十六个地址的内存如下:
这里值得注意的是,我们做嵌入式开发的,操作不当很可能会烧毁MCU,所以我们在实战中一定要谨慎操作,这里如果我们同时输出两个单元格的数据,就会出现错误,严重的就会发生短路,烧毁芯片。下面我将进行简单演示一下错误: