看穿单片机第三节:总线模型
扫描二维码
随时随地手机看文章
总线模型
如果把CPU看作“帝都”,存储器看作是“卫城”,它们之间要互通往来,就必然要修建道路,而这条道路又可以不断延伸分支,将很多城市串连起来。这样,城市两两之间便均可通行。这条“道路”就是总线!如图1.11所示。(这些被串连起来的“城市”就犹如振南后面要讲到的“CPU外设”)。
图1.11 总线的结构模型
好,现在CPU与存储器之间的这条通路有了。此时,CPU如果要读取存储器中地址为addr位置上的一个字节,该如何作呢?这个过程主要分三步:(是不是想起了“把大象装冰箱总共分几步?”)
CPU首先告诉存储器要读取的地址;
等待存储器将相应地址上的数据取出来;
CPU将数据取走。
更为形象地说明如图1.12所示。
图1.12 CPU访问存储器的主要过程
仔细想一下,这个过程的实现其实涉及几个问题:CPU如何将地址给存储器?CPU如何知道存储器已将数据准备好?CPU又如何将数据取走?……总结起来,主要是地址和数据的传输,以及它们之间的协调与控制。为了解决这一问题,我们提出了这一模型,请看图1.13。
图1.13 CPU与存储器之间的总线模型(读数据)
图中所看到的连线就是实实在在的用于传输二进制信号(0或1)的导线。CPU首先将地址输出到地址总线上(很显然地址线的数量决定了CPU可以寻址的空间范围),然后再将RD信号置为0(RD平时为1),告诉存储器地址已经给出,请准备好数据并将其输出到数据总线上(数据线的数量决定了CPU的数据吞吐量,这也是衡量CPU位数的标准,51单片机是8位单片机,则它每次只能读到一个字节的数据,ARM是32位的,所以它可以一次性读取一个字)。CPU对数据总线进行读取,再将RD信号置1,整个过程便完成了。
那CPU如何向存储器写入数据呢?其实道理是一样的,如图1.14所示。
图1.14 CPU与存储器之间的总线模型(写数据)
仍然是由CPU先给出地址,再向数据总线给出要写入的数据,然后将WR信号置0,告诉存储器地址与数据已经就绪,请予以处理。最后将WR信号置1即可。
综上所述,CPU中有三大总线:地址总线、数据总线与控制总线。这一模型最终如图1.15所示。
图1.15 CPU与存储器之间的总线模型
如果我们把CPU访存过程中,各总线信号上的电平随时间变化的示意图画出来的话,它将是这样的,如图1.16所示。
图1.16 CPU总线操作的时序图
上图就是CPU总线操作的时序图(Timing Digram)。它是描述接口时序与信号协议最为直观的形式。看懂时序图是我们学习电子和单片机技术,使用C语言正确编写底层驱动程序的根本基础。