一种AHB/APB扩展总线接口、片上系统
技术领域
本申请涉及总线接口技术领域,特别是涉及一种AHB/APB扩展总线接口、片上系统。
背景技术
AHB(Advanced High Performance Bus)总线和APB(Advanced Peripheral Bus)总线,是AMBA(Advanced Microcontroller Bus Architecture,高级微控制器总线架构)的一种,是一种标准的基于微控制单元(Microcontroller Unit,MCU)的片上总线结构。
AHB总线主要用于高速高性能模块之间的连接,包括单个时钟边沿操作,非三态实现方式,支持突发传输,支持分段传输,支持多个主控制器,支持字节、半字节和字的传输等特性。APB总线,主要用于低带宽的周边外部设备之间的连接,包括两个时钟周期传输,无限等待周期和响应信号,控制逻辑简单等特性。
传统基于微控制单元的单片机,是专用集成电路设计的处理器芯片,AHB/APB总线接口及外部设备集成于芯片内部,不具备AHB/APB总线接口和外部设备的可扩展性,越来越难以满足不同外部设备应用场景的需求。
发明内容
为解决上述问题,本申请提供了一种AHB/APB扩展总线接口、片上系统,能够使MCU内核扩展更多外部设备,提高MCU的易用性和易扩展性。
本申请采用的一个技术方案是:提供一种AHB/APB扩展总线接口,该扩展总线接口由现场可编程门阵列逻辑资源实现,并用于连接微控制单元与外部设备,扩展总线接口包括:多个总线连接器,用于分别连接对应的外部设备,且包括外部设备控制器和至少一组寄存器;地址译码器,用于连接微控制单元的AHB/APB总线和多个总线连接器,并将微控制单元通过AHB/APB总线发送的外设地址信号映射成对应的总线连接器的寄存器地址信号,进一步发送至对应的总线连接器;多路选择器,用于连接AHB/APB总线和多个总线连接器,并根据微控制单元通过AHB/APB总线发送的片选信号在AHB/APB总线与片选信号所选中的总线连接器之间建立连接,以进行数据信号的传输。
其中,地址译码器进一步连接多路选择器,地址译码器在将外设地址信号成功映射成寄存器地址信号之后进一步产生读写使能信号,并发送至多路选择器,进而由多路选择器转发至选中的总线连接器。
其中,地址译码器根据所连接的总线连接器的寄存器的地址深度对微控制单元的外部设备地址空间进行地址分段,并在地址分段与寄存器的寄存器地址之间形成映射关系,地址译码器进一步通过多路选择器将映射关系发送至微控制单元,以使得微控制单元能够根据映射关系产生外设地址信号。
其中,外部设备控制器根据寄存器地址信号和读写使能信号对寄存器进行相应的读写操作。
其中,外部设备控制器进一步用于实现寄存器与外部设备的功能之间的映射。
其中,寄存器包括数据寄存器、控制寄存器和状态寄存器中的至少一个或组合。
其中,多路选择器进一步将片选信号发送至选中的总线连接器,外部设备控制器进一步根据所接收到片选信号对其所在的总线连接器是否被选中进行校验。
其中,外部设备控制器进一步根据所接收到片选信号和寄存器地址信号对其所在的总线连接器是否被选中进行双重校验。
其中,外部设备同样由现场可编程门阵列逻辑资源实现。
本申请采用的另一个技术方案是:提供一种片上系统,其特征在于,片上系统包括如上述的扩展总线接口以及通过AHB/APB总线与扩展总线接口连接的微控制单元。
本申请提供的AHB/APB扩展总线接口由FPGA逻辑资源实现,并用于连接微控制单元与外部设备,扩展总线接口包括:多个总线连接器,用于分别连接对应的外部设备,且包括外部设备控制器和至少一组寄存器;地址译码器,用于连接微控制单元的AHB/APB总线和多个总线连接器,并将微控制单元通过AHB/APB总线发送的外设地址信号映射成对应的总线连接器的寄存器地址信号,进一步发送至对应的总线连接器;多路选择器,用于连接AHB/APB总线和多个总线连接器,并根据微控制单元通过AHB/APB总线发送的片选信号在AHB/APB总线与片选信号所选中的总线连接器之间建立连接,以进行数据信号的传输。通过上述方式,MCU内核可以扩展更多低速外部设备和高速外部设备,丰富MCU内核功能,提高MCU的易用性和易扩展性,能够满足更多不同外部设备的应用场景需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请实施例提供的片上系统的结构示意图;
图2是本申请实施例提供的片上系统的另一结构示意图;
图3是本申请实施例提供的AHB/APB扩展总线接口的结构示意图;
图4是本申请实施例提供的总线连接器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参阅图1,图1是本申请实施例提供的片上系统的结构示意图,该片上系统10包括微控制单元11、现场可编程门阵列(Field-Programmable Gate Array,FPGA)12以及连接微控制单元11和现场可编程门阵列12的AHB/APB总线13。
可选地,在本实施例中,利用现场可编程门阵列12的逻辑资源实现AHB/APB扩展总线接口20和多个外部设备30。其中,AHB/APB扩展总线接口20通过AHB/APB总线13连接微控制单元11,并连接多个外部设备30。
参阅图2,图2是本申请实施例提供的片上系统的另一结构示意图,该片上系统10包括微控制单元11、现场可编程门阵列12以及连接微控制单元11和现场可编程门阵列12的AHB/APB总线13。
可选地,在本实施例中,利用现场可编程门阵列12的逻辑资源实现AHB/APB扩展总线接口20。其中,AHB/APB扩展总线接口20为AHB/APB总线的扩展总线接口,其通过AHB/APB总线13连接微控制单元11,并连接多个外部设备30。
如图3和图4所示,图3是本申请实施例提供的AHB/APB扩展总线接口的结构示意图,图4是本申请实施例提供的总线连接器的结构示意图,该AHB/APB扩展总线接口20包括地址译码器21、多路选择器22以及多个总线连接器23。
其中,多个总线连接器23分别连接对应的外部设备(图3未示出),且包括外部设备控制器231和至少一组寄存器232;地址译码器21连接微控制单元11的AHB/APB总线13和多个总线连接器23,并将微控制单元11通过AHB/APB总线13发送的外设地址信号映射成对应的总线连接器23的寄存器地址信号,进一步发送至对应的总线连接器23;多路选择器22连接AHB/APB总线13和多个总线连接器23,并根据微控制单元11通过AHB/APB总线13发送的片选信号在AHB/APB总线13与片选信号所选中的总线连接器23之间建立连接,以进行数据信号的传输。
其中,上述的寄存器可以是控制寄存器、状态寄存器、数据寄存器(包括读数据寄存器和写数据寄存器)、地址选择寄存器、使能寄存器中的至少一种。
可选地,在一实施例中,地址译码器21进一步连接多路选择器22,地址译码器21在将外设地址信号成功映射成寄存器地址信号之后进一步产生读写使能信号,并发送至多路选择器22,进而由多路选择器22转发至选中的总线连接器23。
其中,地址译码器21中存储有外设地址信号和寄存器地址信号之间的映射关系。具体地,地址译码器21根据所连接的总线连接器23的寄存器的地址深度对微控制单元11的外部设备地址空间进行地址分段,并在地址分段与寄存器的寄存器地址之间形成映射关系,地址译码器21进一步通过多路选择器22将映射关系发送至微控制单元,以使得微控制单元11能够根据映射关系产生外设地址信号。
具体地,总线连接器23的数量为12个,每个总线连接器23包括四个寄存器,那么,地址译码器21基于该12*4个寄存器的地址深度,对微控制单元11的外部设备地址空间进行地址分段,并在地址分段与寄存器的寄存器地址之间形成映射关系。
例如,AHB/APB总线13分为四条总线,根据外设速度的不同,不同总线挂载着不同的外设,APB1挂载低速外设,APB2和AHB挂载高速外设。相应总线的最低地址称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。APB1总线的地址最低,因此外设就从这这个地址开始,也称外设基地址。
假设将微控制单元11中的地址空间分为4大块,每块都有一个起始地址,这个起始地址就是基地址,然后到下一块起始地址的时候就会和前一块地址出现偏差,这个差值就是偏移量,即相对基地址的偏移量。
如下表所示:
总线名称 |
总线基地址 |
相对外设基地址的偏移 |
APB1 |
0x4000 0000 |
0x0 |
APB2 |
0x4001 0000 |
0x0001 0000 |
AHB |
0x4001 8000 |
0x0001 8000 |
从上表可以看出,APB1总线基地址是0x4000 0000,相对外设基地址的偏移量是0,所以此总线也是外设的基地址。
每条总线上都会挂接着很多的外设,这些外设也会有自己的地址范围,XXX外设的首个地址即最低地址就是XXX外设的基地址,也称作XXX边界地址。这里以GPIO(General-purpose input/output)外设为例,GPIO外设基地址如下表所示:
外设名称 |
外设基地址 |
相对APB2总线的地址偏移 |
GPIOA |
0x4001 0800 |
0x0000 0800 |
GPIOB |
0x4001 0C00 |
0x0000 0C00 |
GPIOC |
0x4001 1000 |
0x0000 1000 |
GPIOD |
0x4001 1400 |
0x0000 1400 |
GPIOE |
0x4001 1800 |
0x0000 1800 |
GPIOF |
0x4001 1C00 |
0x0000 1C00 |
GPIOG |
0x4001 2000 |
0x0000 2000 |
从上表可以看出,外设GPIOx都是挂接在APB2总线上,属于高速的外设,而APB2总线的基地址是0x4001 0000,故GPIOA的相对APB2总线的地址偏移是800。
XXX外设的寄存器就分布在其对应的外设地址范围内。这里以GPIO外设为例,可以通过软件来控制其输入和输出。GPIO有很多个寄存器,每一个都有特定的功能。每个寄存器为32bit,占四个字节,这些寄存器都是按顺序依次排列在外设的基地址上。寄存器的位置都以相对该外设基地址的偏移地址来描述。这里我们以GPIOC端口为例,如下表所示:
寄存器名称 |
寄存器地址 |
相对GPIO基地址的偏移 |
GPIOC_CRL |
0x4001 1000 |
0x00 |
GPIOC_CRH |
0x4001 1004 |
0x04 |
GPIOC_IDR |
0x4001 1008 |
0x08 |
GPIOC_ODR |
0x4001 100C |
0x0C |
GPIOC_BSRR |
0x4001 1010 |
0x10 |
GPIOC_BRR |
0x4001 1014 |
0x14 |
GPIOC_LCKR |
0x4001 1018 |
0x18 |
可以理解地,上述仅仅是对MCU中的外部设备地址空间分段与寄存器地址之间的映射进行举例,并不是限制本实施例的范围。
进一步,地址译码器21进一步通过多路选择器22将映射关系发送至微控制单元11,以使得微控制单元11能够根据映射关系产生外设地址信号。
可选地,在另一实施例中,多路选择器22进一步将片选信号发送至选中的总线连接器23,外部设备控制器231进一步根据所接收到片选信号对其所在的总线连接器23是否被选中进行校验。
进一步,外部设备控制器231进一步根据所接收到片选信号和寄存器地址信号对其所在的总线连接器23是否被选中进行双重校验。
结合图1-图4,下面通过一个具体的例子,对上述过程进行描述:
1、地址译码器21首先根据所连接的总线连接器23的寄存器的地址深度对微控制单元11的外部设备地址空间进行地址分段,并在地址分段与寄存器的寄存器地址之间形成映射关系,地址译码器21进一步通过多路选择器22将映射关系发送至微控制单元11。
2、微控制单元11将外设地址信号发送到AHB/APB总线13上,地址译码器21从AHB/APB总线13获取该外设地址信号,并将该外设地址信号映射成对应的总线连接器23的寄存器地址信号,进一步发送至对应的总线连接器23。
3、进一步,微控制单元11将片选信号发送到AHB/APB总线13上,地址译码器21在从AHB/APB总线13获取该片选信号,并将外设地址信号成功映射成寄存器地址信号之后进一步产生读写使能信号,并发送至多路选择器22,进而由多路选择器22转发至选中的总线连接器23。
其中,步骤2和步骤3并不限定其执行顺序,也可以同时执行。
4、多路选择器22进一步将片选信号发送至选中的总线连接器23,外部设备控制器231进一步根据所接收到片选信号对其所在的总线连接器23是否被选中进行校验。
可选地,外部设备控制器231进一步根据所接收到片选信号和寄存器地址信号对其所在的总线连接器23是否被选中进行双重校验。
例如,微控制单元11需要操作总线连接器A对应的外部设备30进行操作。总线连接器A的外部设备控制器231接收到片选信号后,校验该片选信号是否是对应总线连接器A的片选信号。进一步,总线连接器A的外部设备控制器231进一步根据所接收到片选信号和寄存器地址信号对其所在的总线连接器A是否被选中进行双重校验。
5、微控制单元11从相应的寄存器中读取数据/写入数据。
进一步,外部设备控制器231用于实现寄存器232与外部设备30的功能之间的映射。
区别于现有技术,本实施例提供的AHB/APB扩展总线接口由FPGA逻辑资源实现,并用于连接微控制单元与外部设备,扩展总线接口包括:多个总线连接器,用于分别连接对应的外部设备,且包括外部设备控制器和至少一组寄存器;地址译码器,用于连接微控制单元的AHB/APB总线和多个总线连接器,并将微控制单元通过AHB/APB总线发送的外设地址信号映射成对应的总线连接器的寄存器地址信号,进一步发送至对应的总线连接器;多路选择器,用于连接AHB/APB总线和多个总线连接器,并根据微控制单元通过AHB/APB总线发送的片选信号在AHB/APB总线与片选信号所选中的总线连接器之间建立连接,以进行数据信号的传输。通过上述方式,MCU内核可以扩展更多低速外部设备和高速外部设备,丰富MCU内核功能,提高MCU的易用性和易扩展性,能够满足更多不同外部设备的应用场景需求。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是根据本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。