发明内容
本发明的目的在于克服上述论述中的不足之处,应用低端的8051系列微处理器(8位微处理器)来实现高性能的芯片,提供一个基于AMBA总线(32位总线)的8051系列微处理器应用***。
为达到上述目的,本发明采用的技术方案是:一种基于AMBA总线的8051系列微处理器应用***,AMBA总线结构包含AHB总线和APB总线,AHB总线到APB总线设有第一桥接器;基于AMBA总线结构,以8051系列微处理器作为总线控制单元,进行如下改造:
(1)、将APB总线作为***总线,在8051系列微处理器的总线到APB总线间设置第二桥接器来完成8051系列微处理器信号到APB总线转换;所述第二桥接器包含:
a)寄存器组,该寄存器组包含三个基地址寄存器,用来进行8051系列微处理器地址到APB总线***的地址扩展;
b)模块选择逻辑,该逻辑根据应用***对每个模块地址空间大小和APB基地址的设置采用函数的方法对地址译码,而后给出APB总线模块的选择信号;
c)传输状态机,包括空闲、建立、使能、完成四个状态,根据8051系列微处理器外部数据存取和APB数据存取的时序特征,将8051系列微处理器外部12周期的数据存取转化为具有等待周期的APB数据存取,地址和其他转换过的控制信号将在传输状态机逻辑的控制下传输到APB总线;
d)传输控制逻辑,该逻辑根据8051系列微处理器总线和APB总线的控制信号和数据信号,对总线的访问进行控制;
(2)、在APB总线到第一桥接器和第二桥接器之间设置一个对APB总线访问的多路选择器,用于支持AHB总线桥接器和8051系列微处理器对APB总线的二选一访问,其中8051系列微处理器作为默认的APB总线主设备;
(3)、给挂接在AHB总线上的模块添加APB总线接口,使AHB总线上的模块在保持与AHB总线连接同时,通过APB总线接口连接在APB总线上,使8051系列微处理器能够通过APB总线配置和控制AHB总线上的模块,同时将8051系列微处理器到APB总线的访问与AHB总线上的高速数据传输相分离;
(4)、8051系列微处理器的地址映射方案如下:
a)8051系列微处理器的外部数据存储空间的一部分分配给APB***,用来和APB***以及AHB***交换数据;
b)外部数据存储空间到APB地址空间的扩展是通过第二桥接器中的三个基地址寄存器将8051系列微处理器分配给APB***的外部数据存储空间扩展到APB***的地址空间,
PADDR[31:0]={APBA2,APBA1,APBA0[7:8-N],RAMADDR[15-N:0]}
其中,PADDR[31:0]指APB总线的地址信号,APBA2,APBA1,APBA0三个寄存器分别代表第二桥接器中的三个8位的基地址寄存器的值,RAMADDR代表8051系列微处理器给出的外部数据地址,该方法可以将APB地址最大扩展为4G,N根据8051系列微处理器分配给APB***的空间大小变化,见下表;
Name |
Purpose |
Access |
APBA2 |
APB Adress[31:24] |
R/W |
APBA1 |
APB Adress[23:16] |
R/W |
APBA0 |
APB Adress[15:16-N] |
R/W |
c)32位的AHB***和8位宽的APB***有着独立的地址空间,***分配每个模块的空间大小和每个模块的基地址,这些地址空间是由可综合的参数化的逻辑实现的。
上述技术方案中的有关内容解释如下:
1、上述方案中,“AMBA”为先进微控制器总线体系结构;“AHB”为先进高性能总线;“APB”为先进外设总线。
2、上述方案中,AHB总线上的模块添加APB总线接口,用来实现模块的两个总线访问(即AHB总线和APB总线的访问),依据实际应用有下面三种情况:
a)对于具有32位APB接口的硬核模块,需要设置8到32位的APB接口模块;
b)对于只具有AHB接口的硬核模块,需要设置提供APB接口和仲裁两个总线的接口模块;
c)对于非硬核的AHB模块需要根据APB总线协议添加相应的APB接口。
3、上述方案中,需要设置程序存储管理逻辑,负责处理8051系列微处理器的1周期的内部数据读取、4周期的指令读取和12周期的外部数据访问,其中前面两种访问通过该逻辑直接和8051系列微处理器配备的专用存储器相连,而12周期的外部读写由其传送给第二桥接器完成。
4、上述方案中,为了处理AHB总线和APB总线同时访问一个模块的情况,上述8051系列微处理器的地址映射方案的内容还应该包括对具有APB接口的AHB总线上的模块设置地址访问的优先级,即AHB***和APB***两者同时对一个具有APB接口的AHB总线上的模块进行访问时,需要设置优先级。
本发明的设计原理是:参见附图1所示,一种基于AMBA总线的8051微处理器应用***设计框图,基于AMBA总线结构,通过在AMBA总线结构中添加一个专用的APB多路选择器MUX,并设置8位微处理器总线到AMBA的APB总线第二桥接器512APBBridge,使得8位微处理器集成到AMBA总线结构中的APB总线***中。
由图1可以看出,APB总线***不再是只通过AHB总线进行访问,***中原来的第一桥接器AHB2APBBridge的位置设置有一个专用的多路选择器MUX,来支持两个APB主控制设备对总线的访问。一个主控制设备是原来意义上的AHB总线到APB总线的第一桥接器AHB2APBBridge,另一个是低速的8051系列微处理器,该微处理器由一个其总线到APB总线的第二桥接器512APBBridge完成微处理器的信号到APB的转换。APB总线依旧遵循单主控制设备***,多路选择器MUX在同一时刻只允许一个总线主控制设备连接到APB总线上,可以根据需要定义两者的优先级。这样的结构显得更为灵活,不仅依旧可以通过AHB总线访问APB总线,更重要的是APB总线有了专门的主控制设备来控制总线的操作,可以完全独立于AHB***,使得AHB总线上的高速数据传输和APB总线上的低速数据传输能够并行进行。
AHB***仍然由总线主控制设备、总线从设备和控制部分组成。不同的是,总线中控制设备和总线从设备可以根据需要同时跟APB总线进行连接,由APB总线***负责这些模块的配置和控制,和AHB***中的高速数据传输相分离,并且各个模块之间可以很方便的进行直接的数据交换。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
1、本发明将低速的8051系列微处理器应用于32位的高速AMBA总线结构中构成一个应用***,在这样的应用***中,低速的8051系列微处理器已足够满足控制信息的传输,而8051系列微处理器,***模块和接口逻辑连接在一起,来实现该***的特性——支持高速的大流量数据传输,使芯片达到较高的性价比。
2、本发明打破了AMBA的AHB总线作为***总线的常规做法,通过设计第二桥接器,将8051系列微处理器应用到AMBA的APB总线***中,使得APB总线***独立于AHB总线***,成为芯片的***总线。
3、本发明将APB***独立,实现AHB总线***和APB总线***的并行工作,高速的数据传输的同时可以进行低速的数据传输,提高了总线的带宽。
4、本发明给AHB总线上的模块添加了APB总线接口,AHB总线***中的模块可以同时连接到APB总线***中,由APB总线***负责这些模块的配置和控制,和AHB***中的高速数据传输相分离。在高速数据传输进行的同时,配置好下一次数据传输所需要的信息,数据传输可以不间断地进行,提高了带宽和总线的灵活性。
5、本发明对AMBA的总线结构进行特别的改进和设计,发明了基于AMBA总线的8051系列微处理器应用***。该发明能够很好的实现上面分析的情况,将8051系列微处理器集成到采用AMBA总线的芯片中,并且实现数据传输和控制传输流水作业和高低速数据传输的并行工作,提高了***的性能和灵活性。并且这样的设计能够很方便的实现AHB***中各个模块之间数据的直接交换,满足了面向高速数据传输的SOC***的需要。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:参见附图2所示,是应用本发明所提出的一种基于AMBA总线的8051微处理器应用***设计的一款实施例芯片。该实施例采用8051系列的一款低速8位微处理器作为芯片的核,由AMBA总线作为整个芯片的总线,根据本发明的方法用专用的多路选择器MUX、第二桥接器512APBBridge将8051微处理器集成到AMBA总线结构中,与DMA(直接存储器存取)、SRAM(静态存储器)、USBC(通用串行总线控制器)、NFC(与非型闪存控制器)等AHB总线上的模块和GPIO(通用输入输出设备)、I2C(内部集成电路总线接口)、EIC(外部中断控制器)、SCM(***控制模块)等APB总线模块构成了该款实施例。
一.***总体设计:
附图2是该款实施例芯片的结构示意图。AHB总线***进行高速数据传输,DMA和TIC(Test Interface Controller)是该***中的两个总线主控制设备,USBC、SDDC、SDDC、NFC是该***的总线从设备,另外基于对芯片可扩展性的考虑,根据需要该AHB总线***可支持各16个总线主控制设备和总线从设备,并设计了虚拟的总线主控制设备和默认的总线从设备。在实施例芯片***正常运行的情况下,DMA模块作为AHB总线主控制设备,负责USBC、SDDC、NFC、SRAM之间的数据通路,以及它们之间大数据量的交换。AHB总线***中,数据传输通过DMA的控制,实现上述模块的数据和SRAM数据的传输,更实现了不需要由SRAM做媒介USBC/SDDC,USBC/NFC,SDDC/NFC之间数据的直接交换,使***成为一个高速高效的数据交换平台。根据本发明设计的方法AHB总线的模块USBC、SDDC、NFC、DMA、SRAM各模块都拥有AHB总线和APB总线接口APBGasket,可以通过AHB和APB两个总线访问,在AHB总线***中主要进行高速的数据传输。
APB总线***成为该实施例芯片的***总线,负责对***各个模块进行控制以及进行低速数据传输。采用了8051系列的微处理器通过第二桥接器512APBBridge作为APB的总线主控制设备,同时第一桥接器AHB2APBBridge的是APB的另外一个总线主控制设备,多路选择器MUX对两个总线主控制设备进行二选一的选择,使得在通常情况下8位的8051系列微处理器控制APB总线,只有在AHB的TIC模块作为总线主控制设备对整个实施例进行测试的时候,第一桥接器AHB2APBBridge才作为总线主控制设备接管APB的总线控制权,通过这种方式保证了同一时刻APB总线***只有一个总线主控制设备。I2C、GPIO、EIC、SCM等模块为APB总线***中的总线从设备,***控制模块给芯片提供时钟、复位以及不同的***控制功能,EIC模块协助8051系列微处理器采样处理芯片所有模块的中断信号。DMA,NFC,USBC等模块同样也是APB***中的总线从设备,8位微处理器在APB总线域中对他们进行寄存器的读写配置。
该款实施例芯片运用了本发明中提到的地址映射方法,AHB和APB两个***有着独立的地址空间,通过合理的设计实现了完全分离,8051系列微处理器通过对其外部地址空间实现对芯片***的访问。
该款实施例芯片AHB总线***中的DMA模块进行AHB的高速总线传输的同时,8051系列微处理器可以对两个总线***中的模块进行配置,从而APB***中的I2C、GPIO模块可以在AHB总线传输的同时进行配置和数据传输。AHB***中除了正在进行传输的模块,其他模块都可以同样在不打扰高速数据传输的同时进行配置和读写。下面描述与该发明相关的该实施例芯片的设计实现。
下面对该实施例芯片的地址映射方法、涉及本发明的APB总线单元和8051微处理器应用到***中的方法进行描述。
二.APB总线***:
APB总线***为该芯片的***总线,负责对***各个模块进行控制以及进行低速数据传输。APB总线主设备选择逻辑来选择通过第二桥接器512APBBridge连接的8051系列微处理器或是第一桥接器AHB2APBBridge作为当时唯一的APB***的总线主设备单元。8051系列微处理器外部设置一个专用的程序存储控制器负责8051系列微处理器的存储管理。DMA、NFC、USBC等模块同样也是APB***中的总线从设备,8位的8051系列微处理器在APB总线域中对他们进行寄存器的读写配置。
1、APB总线多路选择器MUX:该模块是非标准的APB器件,APB总线主设备选择逻辑对两个总线主控制设备进行选择,使得在通常情况下8位的8051系列微处理器控制APB总线,只有在AHB的TIC模块作为总线主控制设备对整个芯片进行测试的时候,第一桥接器AHB2APBBridge才作为总线主控制设备接管APB的总线控制权,通过这种方式保证了同一时刻APB总线***只有一个总线主控制设备。
2、第二桥接器512APBBridge:该桥接器起到连接APB总线***和8051系列微处理器的作用,由APB总线模块选择逻辑、传输控制逻辑和传输状态机组成,并且包含一组寄存器来完成APB域的基地址配置功能,图3是第二桥接器512APBBridge的设计框图。
a)APB总线模块选择逻辑:根据地址给出相应的选择信号。模块选择逻辑用来产生具体从设备的选择信号。在模块选择逻辑中有每一个从设备的基地址,当8051系列微处理器发起一次访问的时候,模块选择逻辑比较p_addr的LSB位(具体的LSB位是由***集成进来的时候定义好的)和每一个从设备的基地址。只要他们相匹配,就说明有一个APB的访问发起了。Apb_select和apb_module_select信号是模块选择逻辑输出给传输状态机的。Apb_select信号将在APB访问开始的时候有效,而apb_module_select信号将会指出哪一个从设备被选择。
b)传输控制逻辑:根据需要存储和产生相关的8051系列微处理器总线的地址和其他的总线信号。
c)传输状态机:第二桥接器512APBBridge中的状态机用来控制8051系列微处理器访问到APB总线访问,地址和其他转换过的控制信号将在该状态机的控制下传输到APB总线。传输状态机包括空闲IDLE,建立SETUP,使能ENABLE,完成DONE四个状态,状态转移情况如图4所示。当总线被复位或者总线上没有传输的时候,状态机处于空闲IDLE状态,当总线上面发生了一次针对某一个APB域,包括桥接器和APB模块的有效操作,此时内部信号满足((~rd|~wr)&apb_access)的条件,第二桥接器512APBBridge将会进入建立SETUP状态,否则将维持空闲IDLE状态;在建立SETUP状态中PSELx信号被置起,该状态只维持一个周期,而后进入使能ENABLE状态;同样一个周期后,状态机由ENABLE状态直接进入完成DONE状态;在完成DONE状态中,当满足(rd&wr)条件时,状态机进入空闲IDLE状态,否则维持完成DONE状态,其中,rd和wr信号就是8051系列微处理器中的读写信号。
d)基地址配置寄存器组:该寄存器组包含三个基地址寄存器APBA2、APBA1、APBA0,用来进行8051系列微处理器地址到APB总线***的地址扩展。第二桥接器512APBBridge是由可综合的参数化方法实现的,基地址配置寄存器组可以满足APB***的任何配置要求,支持一个虚拟的没有限制的APB总线从设备个数。APBA0寄存器可以配置为支持APB地址空间从512B到32K的大小。APB总线***的地址译码和从设备选择所需的32位地址是由第二桥接器的基地址配置寄存器组和8051系列微处理器外部数据存储器的地址组成。8051系列微处理器的外部数据地址空间扩展为APB地址空间是通过第二桥接器512APBBridge寄存器中的上述三个基地址配置寄存器来实现的。
PADDR[31:0]={APBA2,APBA1,APBA0[7:8-N],RAMADDR[15-N:0]}
其中,PADDR[31:0]是指APB总线的地址信号,APBA2、APBA1、APBA0三个寄存器分别代表第二桥接器512APBBridge中的三个8位的基地址寄存器的值,RAMADDR代表8051系列微处理器给出的外部数据地址,该方法可以将APB地址最大扩展为4G,N根据8051系列微处理器分配给APB***的空间大小变化,该实施例芯片中,将N设为“1”来支持32K大小的APB地址空间。该地址空间对于8051系列微处理器来说是其外部数据地址空间从0x8000到0xFFFF。
表1 基地址配置寄存器组
External DataMemory Address | Name | Purpose | Access |
ResetValue |
0x7FF3 to 0x7FFF |
- |
Reserved |
R |
0x00 |
0x7FF2 |
APBA2 |
APB Adress[31:24] |
R/W |
0x00 |
0x7FF1 |
APBA1 |
APB Adress[23:16] |
R/W |
0x00 |
0x7FF0 |
APBA0 |
APB Adress[15] |
R/W |
0x80 |
3、AHB模块的APB接口:除了标准的APB模块具有APB接口外,为了实现APB总线***对AHB总线上的模块进行控制,设置了AHB总线上模块的APB接口用于提供APB总线的访问。对于NFC、USBC、DMA模块都需要具有APB接口,APB总线通过该接口对这些模块进行配置。具体的设计需要根据情况来实现。
a)8到32位的APB Gasket:该接口逻辑提供给原本32位APB接口的AHB模块一个应用到发明中的8位APB总线的8位接口,即对于具有32位APB接口的硬核模块,需要设置8到32位的APB接口模块。该逻辑包含3个8位的寄存器,来储存要写入的数据的前三个字节,当第四个字节写入的时候,一起组成32位的数据传给模块原有的32位APB接口。例如:要写入0x33221100到DMA的地址为0x0000b000寄存器时,8051处理器需要先写数据0x33到地址0xb003,0x22到地址0xb002,0x11到地址0xb001,最后将数据0x00写入地址0xb000时该接口逻辑才会真正的将四个字节的数据写给DMA模块。
b)只具有AHB接口的硬核模块的APB Gasket:该接口逻辑要提供APB总线访问模块的接口,芯片中的该模块采用的是只具有AHB接口的硬核,因此首先APB Gasket需要提供AHB模块APB接口,其次需要仲裁两个总线访问同一模块的情况。由于这个模块的特殊性,当两个总线同时对其访问的时候,AHB总线具有优先权,此时APB总线需要进入等待状态,对于不同的模块优先级的高低可以不同。该款实施例芯片中USBC模块对应这种情况。
c)非硬核的AHB模块的APB接口:对于非硬核的AHB模块来讲,不必单独添加一个APB Gasket,由于模块逻辑可以修改,因此需要在该模块的内部增加针对APB总线的接口逻辑,该逻辑同时完成两个总线的访问进行仲裁或区分。该款芯片中NFC模块对应这种情况。
4、8051系列微处理器的程序存储控制器PMC(Program MemoryController):在实施例芯片中该模块负责处理芯片中的不同任务,连接程序存储器、内部数据存储器和外部数据存储器的接口。PMC允许程序存储器地址映射中的16块4K大小的块配置成为包含ROM或者SRAM。并且PMC允许程序存储空间映射的第一个256字节映射为物理存储器的地址是0x00或者0xff00。PMC在APB域中的空间大小为1K。PMC中设置了8个可访问的寄存器单元。
表2 PMC可访问的寄存器单元
Address Offset |
Name |
Purpose |
0x0 |
RAMAL |
Lower RAM Address Register |
0x1 |
RAMAU |
Upper RAM Address Register |
0x2 |
RAMEL |
Lower RAM Enable Register |
0x3 |
RAMEU |
Upper RAM Enable Register |
0x4 |
RAMDA |
RAM Data Access Register |
0x5 |
GENDR |
Generate D80530 Reset(Mask)Register |
0x6 |
TSWAP |
Vector Table Swap Register |
0x7 |
- |
Reserved |
a)RAM Address Register(RAMAU,RAMAL):RAMAU和RAMAL两个寄存器和在一起是16位的地址ADDR[15:0],该地址指向64K的SRAM空间中。当RAMDA寄存器被访问时,数据就会从该地址所指向的存储器空间写入或者读出数据。任何一次RAMDA寄存器的访问,都会使地址的值增加,当地址的值为0xffff时,再次的访问将会使该地址的溢出为0。
b)RAM Enable Register(RAMEU,RAMEL):该寄存器的每一位对应一个4K大小的SRAM存储块。当该位被设置有效的时候,地址映射中相应的存储块就与SRAM相连,如果该位被清除,从4K存储块来的指令将会从ROM中读取。如果SRAM或者ROM块没有物理实现,将会返回数据0。RAMEL[0]的值如果改变,8051微处理器将会被重新复位,这样8051微处理器将会从被选择的存储段开始引导,而这个复位不会影响到芯片的其他部分。
c)RAM Data Access Register(RAMDA):该寄存器为访问16个SRAM块的数据暂存空间,当该寄存器被写操作的时候,该数据将会被存储到RAM地址寄存器所对应的空间里;当该寄存器被读操作的时候,由RAM地址寄存器所指向空间的数据将会被读出。
d)Generate 8051 Reset(Mask)Register(GENDR):该寄存器可以屏蔽掉8051微处理器的复位操作,当GENDR为被置为有效的时候,RAMEL[0]的变化将引起8051微处理器的复位;当该位被清除的时候,RAMEL[0]的变化将不会引起8051微处理器的复位。
e)Vector Table Swap Register(TSWAP):该寄存器允许程序存储空间应设的第一个256B的空间可以重新映射到最后一个256B的空间上去。当Swap为有效的时候,从地址空间0x0000到0x00FF的指令读取将会被映射到0xFF00到0xFFFF空间去。
三.地址映射及其映射方法:
该款实施例芯片的地址区间被分为了五部分,64K大小的8051微处理器的程序存储器,256B大小的8051微处理器内部数据存储器,64K大小的8051微处理器的外部数据存储器,4G/32K的8位APB***区域,4G的32位AHB***区域。其中,APB和AHB域分别拥有理论上为4G的地址空间。
对于该款实施例芯片,APB域实际只用到了32K,访问这32K之外的空间是允许的,但是写操作将被忽略而读操作将会返回0x0数据。而AHB域的地址空间理论上可以扩展到整个4G大小,但该款实施例芯片的大部分AHB地址空间是空的,如果对这些地址空间进行访问将会返回AHB域的错误。
1、地址扩展方法:8051微处理器的外部数据地址空间扩展为APB地址空间是通过8051微处理器到APB的第二桥接器寄存器组的上述三个基地址配置寄存器来实现的。
PADDR[31:0]={APBA2,APBA1,APBA0[7:8-N],RAMADDR[15-N:0]}。这样可知,地址可扩展的最大空间是4G。N的变化是由8051微处理器分配给APB的外部存储空间大小决定的。该实施例芯片中,将N设为“1”来支持32K大小的APB地址空间。该地址空间对于8051微处理器来说是其外部数据地址空间从0x8000到0xFFFF。
2、8051系列微处理器程序存储器的地址映射:该程序存储器是8位宽,64KB深的存储器,支持8051微处理器的内部和外部的指令存取。该存储器由16个4KB大小的块组成,每一块都可以配置成为ROM和SRAM,会在下面的8051微处理器存储空间管理器里面详细描述。
3、8051系列微处理器的内部数据存储器地址映射:该处理器的内部数据存储器是8位宽,256B深,由256Byte组成的SRAM,仅仅对8051微处理器的控制器可见。
4、8051系列微处理器的外部数据存储器地址映射:该处理器的外部数据存储器是8位宽,64KB深,它的分配情况见表3。64K存储空间的第一个2K空间分配给SRAM,最上面的32K空间通过第二桥接器512APBBridge分配给APB域。
表3 微处理器的外部数据存储器地址映射表
Base Address |
Size |
Description |
0x8000 |
32K |
APB Bridge Access Window |
0x7FF0 |
16B |
APB Bridge Control Window |
0x0800 |
30K |
Reserved |
0x0000 |
2K |
SRAM |
5、APB总线域的地址映射:APB域的地址映射如表4所示,APB总线从设备的基地址的设法,是为了使APB总线从设备的地址映射正好跟32K的8051微处理器的外部地址空间相匹配。APB总线在该款实施例芯片中采用了8位宽。DMA和USBC模块的接口都是32位的,而APB总线为8位,因此该芯片设计了8位到32位数据的访问接口。
表4 APB总线域地址映射表
BaseAddress |
Size |
Description |
0x0001_0000 |
4G |
Reserved |
0x0000_F000 |
4K |
NAND Flash Controller(NFC) |
0x0000_E000 |
4K |
SD Device Controller(SDDC) |
0x0000_D000 |
4K |
USB Controller 2(USBOTG) |
0x0000_C000 |
4K |
USB Controller 1(USBOTG) |
0x0000_B800 |
2K |
DMA Controller(DMAC) |
0x0000_B400 |
1K |
I2C Controller 1(I2C)slave |
0x0000_B000 |
1K |
I2C Controller 1(I2C)master |
0x0000_AC00 |
1K |
Program Memory Controller(PMC) |
0x0000_A800 |
1K |
System Control Module(SCM) |
0x0000_A400 |
1K |
Interrupt Controller(EIC) |
0x0000_A000 |
1K |
GPIO |
0x0000_8000 |
8K |
SRAM |
0x0000_0000 |
32K |
Reserved |
6、AHB总线域的地址映射:AHB域的地址映射如表5所示,该款实施例芯片的AHB总线是32位宽并且支持字、半字和字节的读写操作。AHB总线域和APB总线域的某些地址分配是重叠的,当APB和AHB都对一地址进行访问时,通常情况下APB总线拥有优先权,但对于USBC模块来说,是AHB的优先级高。
模块SDDC、USBC、SRAM是APB和AHB总线都可以进行访问的,DMA模块是APB总线的总线从设备,但它又是AHB总线的总线主控制设备。NFC模块同样连接在两个总线当中,该模块在APB和AHB域中的地址相同,但是访问的内容却不同,APB总线访问NFC模块的寄存器,AHB接口来存取外部Flash传输的数据。
表5 AHB总线域的地址映射表
Base_Address |
Size |
Description |
0x00D6_0000 |
4G |
Reserved(Default Slave) |
0x00D2_0000 |
256K |
USB2 FIFO DMA Access Window |
0x00C6_0000 |
768K |
Reserved(Default Slave) |
0x00C2_0000 |
256K |
USBl FIFO DMA Access Window |
0x0021_0000 |
10M |
Reserved(Default Slave) |
0x0020_0000 |
32K |
APB Bridge Window |
0x0001_0000 |
2M |
Reserved(Default Slave) |
0x0000_F000 |
4K |
NAND Flash Controller(NFC) |
0x0000_E000 |
4K |
SD Device Controller(SDDC) |
0x0000_D000 |
4K |
USB Controller 2(USBOTG) |
0x0000_C000 |
4K |
USB Controller 1(USBOTG) |
0x0000_A000 |
8K |
Reserved(Default Slave) |
0x0000_8000 |
8K |
SRAM |
0x0000_0000 |
32K |
Reserved(Default Slave) |
AHB总线域中存在一个APB窗口,总线的主控制设备同样可以通过该窗口由第一桥接器AHB2APBBridge访问APB域。当第一桥接器AHB2APBBridge访问时,它将接管APB总线,此时8051微处理器没有对APB进行访问。由于芯片的APB总线是8位宽,因此对于AHB总线的半字和字访问,都将在高位缺省附为0。AHB总线域中的APB窗口地址和APB总线内部的地址映射除了多了一个偏移地址外是一致的。
7、上面的描述,可发现APB域的窗口和AHB域的地址区间是重叠的,但并不是说地址对于所有的设备都是一个或是相同的。例如:NFC模块是不同的,AHB访问的时候,是通过地址0x0000_f000来访问NFC的数据端口;APB访问的时候是8051微处理器通过地址0xf000访问NFC的控制寄存器。SRAM模块是相同的,AHB通过地址0x0000_8000,或者是APB通过地址0x8000访问,是一样的。当AHB和APB同时访问的时候,APB的优先级要高,这时AHB总线处于等待状态直到APB访问结束。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。