发明内容
本发明所要解决的技术问题是提供一种APB总线系统及一种芯片,用以减少无意义的逻辑状态翻转,从而降低芯片系统的电源功耗。
为了解决上述问题,本发明公开了一种APB总线系统,包括:
一个APB桥;
多个APB从模块;
APB总线,与所述APB桥相连,其具有多个APB接口,用于在所述APB桥和多个APB从模块之间传递总线信号,其中,所述总线信号包括地址信号和针对每个APB从模块的选择信号;以及
地址控制电路,其一端与所述APB从模块相连,另一端与所述APB接口相连,用于基于输入的地址信号和选择信号进行逻辑与运算,并将所述逻辑运算结果输出给相应APB从模块的地址线。
优选的,所述总线信号还包括系统时钟信号;
所述地址控制电路包括:
一个D触发器,包括:
两个第一输入端,其中,所述两个第一输入端分别接收所述系统时钟信号和选择信号;以及
一个第一输出端;以及
一个与门电路,包括:
两个第二输入端,其中的一个与所述第一输出端相连,另一个接收所述地址信号;以及
一个第二输出端,与相应APB从模块的地址线相连。
优选的,所述APB从模块包括:
地址译码电路,与所在APB从模块的地址线相连,用于在该地址线上输出的地址处于未溢出状态时,对该地址进行译码计算。
本发明还公开了一种芯片,包括:
CPU,
与CPU相连的系统总线,
以及,与系统总线相连的APB总线系统;
其中,所述APB总线系统包括:
多个APB从模块;
一个APB桥,用于接收所述系统总线发出的读写操作命令,或者,向所述APB从模块发出读写操作命令;
APB总线,与所述APB桥相连,其具有多个APB接口,用于在所述APB桥和多个APB从模块之间传递总线信号,其中,所述总线信号包括地址信号和针对每个APB从模块的选择信号;以及
地址控制电路,其一端与所述APB从模块相连,另一端与所述APB接口相连,用于基于输入的地址信号和选择信号进行逻辑与运算,并将所述逻辑运算结果输出给相应APB从模块的地址线。
优选的,所述总线信号还包括系统时钟信号;
所述地址控制电路包括:
一个D触发器,包括:
两个第一输入端,其中,所述两个第一输入端分别接收所述系统时钟信号和选择信号;以及
一个第一输出端;以及
一个与门电路,包括:
两个第二输入端,其中的一个与所述第一输出端相连,另一个接收所述地址信号;以及
一个第二输出端,与相应APB从模块的地址线相连。
优选的,所述APB从模块包括:
地址译码电路,与所在APB从模块的地址线相连,用于在该地址线上输出的地址处于未溢出状态时,对该地址进行译码计算。
优选的,所述系统总线为AHB总线,或者,ASB总线。
与现有技术相比,本发明具有以下优点:
本发明在APB接口和APB从模块之间设置一个地址控制电路,该地址控制电路针对某个APB从模块,基于输入的地址信号PADDR和选择信号PSEL进行逻辑与运算,并将所述逻辑运算结果输出给所述APB从模块的地址线;由于PADDR=1,这样,在所述APB从模块被选中进行读写操作时,PSEL=1,所述APB从模块的地址线连接的组合逻辑会发生翻转;在不发生读写操作时,PSEL=0,故该APB从模块所连接的32位地址线不会发生变化,所述地址线连接的所有组合逻辑,包括多个32位地址译码器及相关逻辑都不会发生翻转;由于同一时刻只有一个APB从模块被选中进行读写操作,这样,同一时刻只有一个APB从模块的组合逻辑发生翻转,因而本发明可以避免读写操作中无意义的电子逻辑状态翻转;
再者,由于电子逻辑状态翻转时产生的动态功耗占数字电路系统总功耗的一大部分,这样,APB总线上接入的从模块越多,总线时钟越快,模块读写访问越频繁,本发明对系统动态总功耗的节省效果就越明显。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
当APB总线系统需要对某个APB从模块内的寄存器进行读写操作时,会对该从模块的输入信号进行如下设置:将其APB接口的PSEL信号置为1;将其它从模块的PSEL信号置为0;在地址信号PADDR的地址线上输出该从模块内的寄存器地址;设置PWRITE信号,其中,在PWRITE置为1时表示写操作,为0时表示读操作,相应地,PWDATA为需要写入的数据,PRDATA为需要读取的数据;将PEANBLE置为1,表示读取的数据有效。由于地址信号PADDR的地址线都接在同一组源上,无论从模块是否被选中,其地址译码电路都会进行地址译码的计算,从而产生一定的功耗。这样,如果能够控制APB总线系统中未被选中的从模块的地址译码电路不进行译码计算,则可以节省一定的功耗。
本专利发明人注意到了这一点,因此创造性地提出了本发明的核心构思之一,也即,在APB接口和APB从模块之间设置一个地址控制电路,该地址控制电路针对某个APB从模块,用该模块的PSEL信号对地址信号做开关逻辑,使得只有在发生读写操作时,该模块的地址线连接的组合逻辑才发生翻转;而在不发生读写操作时,该模块所连接的32位地址线不会发生变化,所述地址线连接的所有组合逻辑,包括多个32位地址译码器及相关逻辑都不会发生翻转,因而可以避免读写操作中无意义的电子逻辑状态翻转。
参考图4,示出了本发明一种APB总线系统实施例的结构图,具体可以包括:
一个APB桥401;
多个APB从模块402;
APB总线403,与所述APB桥401相连,其具有多个APB接口431,用于在所述APB桥401和多个APB从模块402之间传递总线信号,其中,所述总线信号包括地址信号和针对每个APB从模块的选择信号;以及
地址控制电路404,其一端与所述APB从模块402相连,另一端与所述APB接口431相连,用于基于输入的地址信号和选择信号进行逻辑与运算,并将所述逻辑运算结果输出给相应APB从模块402的地址线。
图中的APB从模块有n个,依次为APB从模块0,APB从模块1,...,APB从模块m,...,APB从模块n-2,APB从模块n-1,其中,m,n为自然数。
本发明的APB总线系统又称为外围总线系统,可以用于SoC(片上系统,System on Chip),主要用于连接UART(通用异步接收/发送装置,UniversalAsynchronous Receiver/Transmitter)、定时器Timer、PIO(过程输入输出,Process Input Output)和键盘Keyboard等低速设备。
在APB总线系统中,唯一的主模块就是APB桥,用于向所述APB从模块发出读写操作命令;而所述低速设备都是APB从模块,用于接收APB桥发出的读写操作命令。所述总线信号可以包括:
APB从模块的输入信号:时钟信号PCLK,地址信号PADDR,读写控制信号PWRITE,选择信号PSEL,使能信号PENABLE、写数据信号PWDATA;以及,
输出信号:读数据信号PRDATA。
APB总线系统的特性主要包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号,具有32位地址空间,最大32位数据总线,且读数据总线与写数据总线分开,其传输状态如下:
1)系统初始化为IDLE状态,此时没有传输操作,也没有选中任何从模块;
2)当有传输要进行时,设置PSELx=1,PENABLE=0,系统进入SETUP状态,并只会在SETUP状态停留一个周期。当PCLK的下一个上升沿时到来时,系统进入ENABLE状态;
3)系统进入ENABLE状态时,维持之前在SETUP状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。传输也只会在ENABLE状态维持一个周期,在经过SETUP与ENABLE状态之后就已完成。之后如果没有传输要进行,就进入IDLE状态等待;如果有连续的传输,则进入SETUP状态。
在具体实现中,可以直接用PSEL信号和PADDR信号做“与”逻辑,由于所有APB从模块的PADDR信号都接在同一组源上,故PADDR信号始终为高电平,也即,PADDR=1;这样,针对某个APB从模块,只有在其被选中发生读写操作,也即PSEl=1时,地址控制电路404的输出才为高电平,此时,该APB从模块的地址线连接的组合逻辑才发生翻转,从而达到本发明减小电子逻辑的无效翻转的目的。
进一步的,发明人也发现在某些特殊的情况下,选择信号PSEL从APB桥401的组合逻辑输出后会有一小段时间不太稳定,这种情况下,如果直接用PSEL信号和PADDR信号做“与”逻辑,可能导致地址控制电路404输出的有效地址也会有一段时间处于不稳态;而地址控制电路404是与相应APB从模块402的地址线相连的,因而,这种连锁反应会导致与该地址线连接的所有组合逻辑,包括多个32位地址译码电路及相关逻辑因为不稳态而全部产生无效翻转。
针对上述情形,在本发明的另一种优选实施例中,采用被系统时钟信号PCLK锁过一拍的PSEL信号来实现地址控制电路404的功能,
此时,所述地址控制电路404可以包括:
一个D触发器,具体可以包括:
两个第一输入端,其中,所述两个第一输入端分别接收所述系统时钟信号PCLK和选择信号PSEL;以及
一个第一输出端;以及
一个与门电路,具体可以包括:
两个第二输入端,其中的一个与所述第一输出端相连,另一个接收地址信号PADDR;以及
一个第二输出端,与相应APB从模块的地址线相连。
参考图5,示出了一种地址控制电路的电路实现。图中,D触发器501的输入端包括数据信号端D和时钟信号端CP,输出端包括Q端;其中,D端接收选择信号PSEL,CP端接收系统时钟信号PCLK;与门电路502的输入端分别接D触发器501的输出端Q和地址信号PADDR,输出端经相应APB从模块的地址线PS_PADDR接地址译码电路503。
D触发器的状态转移真值如下表所示,其中,Qn、Qn+1分别代表n时刻和n+1时刻的输出。
CP |
D |
Qn |
Qn+1 |
↑ |
0 |
1 |
0 |
↑ |
1 |
0 |
1 |
↑ |
1 |
1 |
1 |
这样,该地址控制电路的工作过程可以为:
A、在相应APB从模块未被选中时,PSEL=0,也即D=0;当CP端输入时钟脉冲信号上升沿(↑)到来之时,D触发器501翻转到与D端那一时刻电平相同的状态;当时钟信号处于下降沿(↓)时,D触发器501保持上一时钟脉冲信号上升沿到来之时所翻转的状态;由于此种情况下,D=0,因此,D触发器501的输出Q保持为0,从而,与门电路502的输出,也即地址译码电路503的输入一直为0,因而,其不会发生翻转;
B、在相应APB从模块被选中时,PSEL=1,也即D=1;同理,D触发器501的输出Q保持为1,从而,与门电路502的输出,也即地址译码电路503的输入一直为1,因而,其会通过翻转以进行地址译码计算。
参考图6所示的一种APB总线系统的结构图,在本发明的一种示例中,整个APB总线601上有5个APB从模块602,对于每个APB从模块602,其通过一个地址控制电路603与APB总线601的APB接口相连。
为便于SoC芯片的访问,每个APB从模块602中可以包括地址译码电路,该地址译码电路与所在APB从模块602的地址线相连,用于在该地址线上输出的地址处于未溢出状态(0x00000000)时,对该地址进行译码计算。
这样,当APB总线上某个APB从模块602(如APB从模块0)被选中时,其PSEL输入信号被置为1,其地址译码电路ADDR decoder的输入由0x00000000变为为PADDR上的地址Addr1,并且开始进行地址译码计算。而其它未被选中的APB从模块602(APB从模块1~APB从模块4),由于PSEL输入信号被置为0,其地址译码电路的输入仍保持为0x00000000,这样,地址译码电路不会进行地址译码计算,因而,本发明能够减少未被选中APB从模块的地址译码电路的功耗。
可以理解,上述减少地址译码电路功耗只是作为示例,在未被选中时,APB从模块的与所述地址线连接的其它组合逻辑,也不会发生翻转。
因此,本发明能够避免读写访问中无意义的电子逻辑状态翻转,从而,在保持原APB总线协议实现灵活的扩展性的同时,能够最优化的实现低功耗的APB总线。
此外,由于电子逻辑状态翻转时产生的动态功耗占数字电路系统总功耗的一大部分,这样,APB总线系统上接入的模块和设备越多,总线时钟越快,模块读写访问越频繁,本发明对系统动态总功耗的节省效果就越明显。
本发明的APB总线系统可以用于芯片中,在这种情况下,本发明的芯片可以包括:
CPU,
与CPU相连的系统总线,
以及,与系统总线相连的APB总线系统;
其中,所述APB总线系统具体可以包括:
多个APB从模块;
一个APB桥,用于接收所述系统总线发出的读写操作命令,或者,向所述APB从模块发出读写操作命令;
APB总线,与所述APB桥相连,其具有多个APB接口,用于在所述APB桥和多个APB从模块之间传递总线信号,其中,所述总线信号包括地址信号和针对每个APB从模块的选择信号;以及
地址控制电路,其一端与所述APB从模块相连,另一端与所述APB接口相连,用于基于输入的地址信号和选择信号进行逻辑与运算,并将所述逻辑运算结果输出给相应APB从模块的地址线。
在具体实现中,所述芯片可以为SOC芯片,其中的系统总线可以为AHB(Advanced High-performance Bus),也可以为ASB(Advanced System Bus),所述高性能系统总线(AHB或ASB)主要用以满足CPU和存储器之间的带宽要求,CPU、片内存储器和DMA设备等高速设备连接在其上,而系统的大部分低速外部设备则连接在低带宽总线APB上;系统总线和外设APB总线之间用一个桥接器(AHB/ASB-APB-Bridge)进行连接。因此,本发明的APB桥具有双重作用:既作为系统总线的从模块,接收所述系统总线发出的读写操作命令;又作为所有APB从模块的主模块,向所述APB从模块发出读写操作命令。
在实际中,AHB、ASB、APB都遵循AMBA协议。其中,AHB适用于高性能和高时钟频率的系统模块。它作为高性能系统的骨干总线,主要用于连接高性能和高吞吐量设备之间的连接,如CPU、片上存储器、DMA设备和DSP或其它协处理器等;ASB适用于高性能的系统模块。在不必要适用AHB的高速特性的场合,可选择ASB作为系统总线。它同样支持处理器、片上存储器和片外处理器接口与低功耗外部宏单元之间的连接。其主要特性与AHB类似,主要不同点是它读数据和写数据采用同一条双向数据总线。
在本发明的一种优选实施例中,采用被系统时钟信号PCLK锁过一拍的PSEL信号来实现所述地址控制电路的功能,
此时,所述地址控制电路可以包括:
一个D触发器,具体可以包括:
两个第一输入端,其中,所述两个第一输入端分别接收所述系统时钟信号和选择信号;以及
一个第一输出端;以及
一个与门电路,具体可以包括:
两个第二输入端,其中的一个与所述第一输出端相连,另一个接收所述地址信号;以及
一个第二输出端,与相应APB从模块的地址线相连。
为便于SoC芯片的访问,每个APB从模块中可以包括地址译码电路,该地址译码电路与所在APB从模块的地址线相连,用于在该地址线上输出的地址处于未溢出状态(0x00000000)时,对该地址进行译码计算。
这样,当APB总线上某个APB从模块未被选中时,由于其PSEL输入信号被置为0,其地址译码电路的输入为溢出状态0x00000000,这样,地址译码电路不会进行地址译码计算,因而,本发明能够减少未被选中APB从模块的地址译码电路的功耗。
由于电子逻辑状态翻转时产生的动态功耗占数字电路系统总功耗的一大部分,因而,本发明能够减少芯片的动态总功耗。
由于本实施例与图4所示的系统实施例基本相似,所以描述的比较简单,相关之处参见图4所示系统实施例的说明即可。
以上对本发明所提供的一种APB总线系统及一种芯片,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。