我们在前面已经将计算机的运算控制,时序控制以及数据管理都设计好了,此时我们已经可以完成少部分数据量的运算了,但如果我们要运行多个/多种算式在不同时序输出到不同通道的任务时该怎么办?当然可以通过设计出满足要求的定制电路来实现,可是若要求稍微变动,总不能又设计电路吧,有这个时间,手算都完成了,所以此时我们需要设计一个通用的电路,能实现不同的要求。
首先,我们需要将我们的要求放到一个地方,需要这个要求就取出来,而不是到某个时间点我们还需要手动去输入;其次,我们运算复杂的式子时,需要将临时结果找个地方放置,基于以上两个需求,我们将设计一个东西来放置命令与数据,这就是内存。
1.储存1bit数据
还是从简单的开始,我们的命令与数据都是以1bit为单位的,所以我们要设计一个存1位数据的东西。无疑,逻辑门通过设计是可以储存数据的(锁存器),但我们有更好的选择---延时线,延时线可以暂时(1刻)存储1字节的数据。那么如何设计呢?
首先,我们需要两个输入,一个是待写入的数据,一个是控制写入的信号,当不准写入时,哪怕有数据,数据也不能输入到电路中,所以还需要一个开关,那么设计就可以如下:
乍一看没有问题,但其实这一电路只能存住一拍的数据,如何让数据一直存着呢?我们可以再设计一个存储器,在这一拍结束后,将这拍的数据写入到另一个存储器中,下一拍再重复操作,数据便能一直存贮了。
那么怎么加呢?直接加还需要一个控制写入的命令,但我们发现,第一个储存器写入数据时,第二个不能传给第一个,不然会导致数据冲突,同理,第二个写入时也是如此,因此我们便可以用一个输入来控制两个开关了:
2.储存1字节数据
既然1位数据没有问题,那么我们就可以设计8位(1字节)的存储器了:
我们约定一位存储器如下:
首先,1字节(8位)写入必然是靠一个信号控制的,所以我们先设计如下:
8位数据按位操作,但输入输出是一个8位数据线,所以还需要拆线与集线:
这样我们就实现了1字节数据的存储,但该电路的数据会一直不断的输出,既然写入能控制,那么输出(读取)也应该可以控制,我们再加入一位输入,以便对内存进行管理:
1字节内存,get!!!