【博文连载】奔跑吧,SOC(二)——片上互联总线

之前说明了软件控制硬件的原理,本质上就是控制寄存器。但是软件也只能控制一个寄存器,那如果要控制多个寄存器了,那又该怎么办呢?这个时候,你就得了解片上总线互联技术了,为什么是片上了,因为这些都是在芯片里面实现的,所以就叫片上了。

下面假设有两个寄存器,软件要对这两个寄存器进行操作。那原理图就应该是下面这样的:

两个寄存器,就会有两个地址,这里设定A地址是0x77777777,寄存器B地址是0x66666666。因为只有两个寄存器,不是读寄存器A的值就是读寄存器B的值,所以使用寄存器A的使能信号判断读的数据是哪一个寄存器的值就可以了。

以上就是两个寄存器的情况,那如果现在要再加一个寄存器了,那就给这个寄存器设定一个地址,然后加一个判断地址是否使能的电路,再修改上面的读数据的部分。这样的话,当增加的寄存器多了,那要改的地方就多了,不利于扩展。

所以出现总线互联模块来解决上面的问题,CPU发出的地址和数据不直接连接到寄存器上,而是先连接到总线互联模块,再由总线互联模块决定地址和数据以及产生的使能连接到哪个寄存器上。示意图为以下:

将使能信号判断,放在了总线互联中。总线互联结构也比较简单,结构如下图所示:

有了上面总线互联,当要增加外部的寄存器的时候,就简单了,直接将寄存器的地址线接到总线互联的寄存器地址上,寄存器的写数据接到总线互联的寄存器写数据上,如果需要从寄存器读取数据,就将寄存器的读数据接到总线互联的寄存器X读数据上,再把总线互联的寄存器X使能接到寄存器的使能上。

这样,就简化了外部寄存器与CPU通信接口的设计,只要外部寄存器按照总线互联的接口设计,就能够直接挂接在总线互联上,这个时候只需简单更改下总线互联的电路,CPU就可以对新加入的寄存器进行操作了。

通过片上互联总线,只要地址允许,就可以挂接无线的寄存器供CPU进行操作。但是,新的问题又来了,我们知道CPU是在时钟的控制下,一个时钟一个时钟的执行指令,也就是CPU对寄存器的操作只能是在一个时钟内,因为在下一个时钟,执行新的指令,CPU发出的数据和地址就可能变化了,那问题来了,如果CPU对寄存器的操作在一个时钟内操作完成不了了,那又该怎么办了,了解CPU原理的都知道,这个时候,就要让CPU暂停流水线,一直执行操作寄存器的指令,知道操作寄存器完成后,再开启流水线,执行之后的指令,但是CPU怎么知道寄存器有没有操作完成了?这个时候,就要引入总线协议了。

CPU对寄存器操作,不只要有总线,还要有总线协议,这样才能准确无误的对寄存器进行操作。

 

(0)

相关推荐

  • 简单!代码原来是这样被CPU跑起来的

    CPU对我们来说既熟悉又陌生,熟悉的是我们知道代码是被CPU执行的,当我们的线上服务出现问题时可能首先会查看CPU负载情况.陌生的是我们并不知道CPU是如何执行代码的,它对我们的代码做了什么.本文意在 ...

  • 程序员应知系列 - CPU执行原理

    任何计算机系统的真正复杂性都存在于处理器中,但是您知道它是如何工作的吗? 我是说它到底是怎么运作的?您编写的代码如何变成可以完成某些工作的东西? 当您知道CPU如何工作时,就知道不是魔术了 - 而是& ...

  • 【博文连载】奔跑吧,SOC(三)——互联总线协议

    之前,说了片上互联总线,但是光有总线可是不行的,还需要片上总线协议支持才行,因为有了协议,才能对寄存器准确无误的进行操作. 说到片上总线协议,那可就多了,如ARM公司所用的AMBA总线,Silicor ...

  • 【博文连载】PCIe扫盲——一个典型的PCI总线周期

    PCI总线是一种地址和数据复用的总线,即地址和数据占用同一组信号线AD.PCI总线的所有信号都与时钟信号同步,及所有的信号的变化都发生在时钟的上升沿,或者在时钟上升沿进行采样. 如下图所示,除了时钟信 ...

  • 【博文连载】奔跑吧,SOC(一)——软件是怎么控制硬件的

    很多人肯定很疑惑,在嵌入式开发中,为什么写c代码,就能够控制硬件.这一切是怎么发生的了,下面我就给大家解剖一下,软件是怎么控制硬件的. 我们从控制8个led为例来说明: 从最简单的开始,如果使用硬件, ...

  • 炊烟有望 (长篇连载)二卷 上舞台

    县委大院背对着黄河,大门朝北,虽不依山却也傍水 .政府机关都在这个大院里,三列高大的卧砖到顶红砖红瓦的瓦房,文化局在县委大院中轴线的最南端. 肖承均随着肖承建肖建虎他俩,一起参加了县文化局会议室召开的 ...

  • 《江花》连载:第二十二章 包容儿告御状(上)

    王红旗曾经答应过王红义,胡三英倒了台,王红旗的支书当稳了,便把王家庄队长的位置让给他.王红旗正式当上了支书,可不提把队长让给王红义的事儿. 王红义急了,便去问王红旗.开始,王红旗说,现在局势还没有稳, ...

  • 【博文连载】ECP5/ECP5-5G SerDes硬件设计注意事项(二)

    ECP5/ECP5-5G SerDes支持100~1300mV可以配置的输出差分摆幅,在特定情况下,更高的输出差分摆幅往往可以提高SerDes信号的抗干扰能力.但是这并不意味着,提高输出差分摆幅一定是 ...

  • 【博文连载】cadence indago征程(二)如何产生indago database

    首先介绍下indago工具,也就是debug analyzer app. 在debug uvm验证环境时,我们一般是通过增加打印,然后仿真,根据仿真打印的log,来确定问题.如果打印加得不够,还得修改 ...

  • 【博文连载】一图读懂SoC设计与计算机网络

    上一篇博客讲了一下SoC设计,感觉没有怎么讲过瘾.这次准备拉开架势,好好讲一下SoC设计,准备把几个核心问题谈清楚. 要想讲清楚SoC,就需要找一个好的"教材"或者叫参考.但是很遗 ...

  • 【博文连载】ARM GIC(十二) 中断bypass

    在GICv2架构中,GIC与core之间,是直接通过irq,fiq管脚,传递中断信号.但是在GICv3架构中,GIC通过gic stream接口向cpu interface传递中断信息,然后由cpu ...