一种基于FPGA的SPI扩展总线接口以及片上***
技术领域
本申请涉及总线接口技术领域,特别是涉及一种基于FPGA(FieldProgrammableGate Array,现场可编程门阵列)的SPI扩展总线接口以及片上***。
背景技术
SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步通信总线,包括四个端口,具有简单易用的特性,在MCU(Microcontroller Unit,微控制单元)领域,通常作为接口用作外部设备与片外***串行通信。
但是,目前的SPI总线接口数量有限,导致MCU扩展性和易用性较差。
发明内容
为解决上述问题,本申请提供了一种基于FPGA的SPI扩展总线接口以及片上***,能够解决现有技术中MUC扩展性和易用性差的问题。
本申请采用的一个技术方案是:提供一种基于FPGA的SPI扩展总线接口,该扩展总线接口由FPGA逻辑资源实现,并用于连接MCU与外部设备,该扩展总线接口包括:多个功能接口,分别连接对应的外部设备,且用于实现与对应的外部设备之间的SPI通信;***总线接口,用于连接MCU的***总线,并将MCU通过***总线发送的外设地址映射成对应的寄存器地址,其中寄存器地址包括使能寄存器地址;控制器,包括控制模块以及使能寄存器,其中多个功能接口分别连接使能寄存器,控制模块根据使能寄存器地址对使能寄存器进行操作,进而对多个功能接口进行使能控制。
其中,使能寄存器设置有能够通过使能寄存器地址进行寻址的多个使能位,每一功能接口对应一使能位,控制模块根据使能寄存器地址对相应的使能位进行操作,进而控制对应的功能接口的使能状态。
其中,多个功能接口分别设置有连接至使能寄存器的使能引脚,控制模块将不同的功能接口的使能引脚映射至不同的使能位。
其中,控制器进一步包括多组功能寄存器,每一功能接口分别连接一组功能寄存器,寄存器地址包括功能寄存器地址,控制模块进一步根据功能寄存器地址对功能寄存器进行操作,功能接口基于所连接的功能寄存器实现与对应的外部设备之间的SPI通信。
其中,多组功能寄存器的功能寄存器地址共用MCU的外设地址空间中的同一地址段。
其中,控制模块根据功能寄存器地址对多组功能寄存器同时进行操作。
其中,控制模块根据使能寄存器地址确定待使能的功能接口,并根据功能寄存器地址对待使能的功能接口所连接的功能寄存器进行操作。
其中,MCU基于同一基地址设置多组功能寄存器的偏移地址。
其中,每组功能寄存器分别包括控制寄存器、状态寄存器、读数据寄存器、写数据寄存器以及从地址选择寄存器。
本申请采用的另一个技术方案是:提供一种片上***,该片上***包括如上述的扩展总线接口以及通过***总线与扩展总线接口连接的MCU。
本申请提供基于FPGA的SPI扩展总线接口由FPGA逻辑资源实现,并用于连接MCU与外部设备,该扩展总线接口包括:多个功能接口,分别连接对应的外部设备,且用于实现与对应的外部设备之间的SPI通信;***总线接口,用于连接MCU的***总线,并将MCU通过***总线发送的外设地址映射成对应的寄存器地址,其中寄存器地址包括使能寄存器地址;控制器,包括控制模块以及使能寄存器,其中多个功能接口分别连接使能寄存器,控制模块根据使能寄存器地址对使能寄存器进行操作,进而对多个功能接口进行使能控制。通过上述方式,基于FPGA逻辑资源和可编程的特点,对SPI总线接口进行扩展,可动态的调节SPI功能接口的数量和功能,解决了现有技术中SPI总线接口短缺的问题,另外,还提到了MCU对外部设备的管理和控制能力,增强了MCU的可扩展性和通用性,同时,还降低了SPI接口的设计和应用复杂度,便于使用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请实施例提供的片上***的结构示意图;
图2是本申请实施例提供的SPI扩展总线接口的结构示意图;
图3是本申请实施例提供的控制器的结构示意图;
图4是本申请实施例提供的功能接口的结构示意图;
图5是本申请实施例控制模块和功能接口的连接示意图;
图6是本申请实施例提供的片上***的工作流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参阅图1,图1是本申请实施例提供的片上***的结构示意图,该片上***10包括MCU 11、FPGA 12,MCU 11和FPGA 12通过***总线13连接。
其中,FPGA 12内部的逻辑资源形成SPI扩展总线接口20,SPI扩展总线接口20通过***总线13连接MCU 11。FPGA 12内部的逻辑资源主要包括LCB(Logical Control Block,逻辑控制区块)(包括显示查找表、加法器、寄存器、多路选择器)、时钟网络资源、时钟处理单元、块随机存储器(Block RAM)、DSP核和接口资源。本实施例中的SPI扩展总线接口20利用FPGA 12内部的逻辑资源形成。
参阅图2,图2是本申请实施例提供的SPI扩展总线接口的结构示意图,该SPI扩展总线接口20包括***总线接口21、控制器22和多个功能接口23。
其中,***总线接口21用于连接MCU 11的***总线13,并将MCU 11通过***总线13发送的外设地址映射成对应的寄存器地址,从而实现MCU 11与外部设备的读、写和控制,其中寄存器地址包括使能寄存器地址。多个功能接口23分别连接对应的外部设备,且用于实现与对应的外部设备之间的SPI通信。
再结合图3,图3是本申请实施例提供的控制器的结构示意图,控制器22包括控制模块221以及寄存器组222,控制模块221连接***总线接口21和寄存器组222中的每个寄存器,一个寄存器组222连接多个功能接口23中的一个,即一个寄存器组222中每个寄存器分别连接一个功能接口23中的一个引脚。
其中,寄存器组222包括使能寄存器和功能寄存器。
在一可选的实施例中,控制模块221可由组合逻辑电路实现,组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。可选地,在一实施例中,多个寄存器组222可以分别对应一个控制模块221,在另一实施例中,多个寄存器组222可以对应同一个控制模块221。
其中,寄存器组222中至少包括使能寄存器,其中多个功能接口23分别连接使能寄存器,控制模块221根据使能寄存器地址对使能寄存器进行操作,进而对多个功能接口23进行使能控制。
控制器22进一步包括多组功能寄存器,每一功能接口23分别连接一组功能寄存器。
控制器22从***总线接口21获取的寄存器地址还包括功能寄存器地址,控制模块221进一步根据功能寄存器地址对功能寄存器进行操作,功能接口23基于所连接的功能寄存器实现与对应的外部设备之间的SPI通信。
功能寄存器是指通过对功能接口进行读写操作进而实现相应SPI功能的寄存器,在一可选的实施例中,功能寄存器包括控制寄存器、状态寄存器、读数据寄存器、写数据寄存器以及从地址选择寄存器。
其中,控制寄存器用于控制和确定操作模式以及当前执行任务的特性;状态寄存器用于存放两类信息:一类是体现当前指令执行结果的各种状态信息,另一类是存放控制信息;读数据寄存器用于暂存读取的数据;写数据寄存器用于暂存需要写入的数据;从地址选择寄存器用于存储从地址信息。
如图4所示,图4是本申请实施例提供的功能接口的结构示意图,该功能接口23包括多个引脚。
其中,时钟引脚、复位引脚连接***总线13。具体地,时钟引脚连接***总线时钟,复位引脚连接***总线复位。
其中,使能引脚连接使能寄存器,控制引脚连接控制寄存器,状态引脚连接状态寄存器,读数据引脚连接读数据寄存器,写数据引脚连接写数据寄存器,从地址选择引脚连接从地址选择寄存器。
进一步,该功能接口23还包括四个端口,分别为信号输出端口(主机输出/从机输入,MOSI)、信号输入端口(主机输入/从机输出,MISO)、从地址选择端口(SS),时钟端口(CK)。可选地,在另一实施例中,还可以包括中断信号端口(INT),也可以没有信号输出端口(主机输出/从机输入,MOSI)。
结合上述图1-图4,***总线13通过FPGA 12内部边界延伸到FPGA 12的内核,与***总线接口21连接,从而实现MCU 11的内核与外部设备的交互。
其中,使能寄存器设置有能够通过使能寄存器地址进行寻址的多个使能位,每一功能接口23对应一使能位,控制模块221根据使能寄存器地址对相应的使能位进行操作,进而控制对应的功能接口23的使能状态。进一步,多个功能接口23分别设置有连接至使能寄存器的使能引脚,控制模块221将不同的功能接口23的使能引脚映射至不同的使能位。
其中,每个功能接口23中的使能引脚组合起来映射为使能寄存器。以MCU 11控制三个功能接口23为例,使能寄存器的第三位分别映射到三个功能接口23的使能引脚,使能寄存器置1,该功能接口23有效,反之无效。以使能寄存器的方式控制功能接口23的数量,一方面可以动态控制功能接口23的数量,另一方面在使用多个外部设备时可以避免切换基地址,降低了使用复杂度。
例如,控制模块221从***总线接口21获取到使能寄存器地址,并根据该使能寄存器地址对使能寄存器的对应的使能位进行操作,并控制与该使能位对应的功能接口23的使能状态。
在一可选的实施例中,多组功能寄存器的功能寄存器地址共用MCU 11的外设地址空间中的同一地址段。控制模块221根据功能寄存器地址对多组功能寄存器同时进行操作。
以写数据为例,控制模块221从***总线接口21获取到功能寄存器地址,由于多个功能寄存器的功能寄存器地址共用MCU 11的外设地址空间中的同一地址段,因此,控制模块221向每个寄存器组222中的写数据寄存器均写入相应的数据。进一步,每个写数据寄存器通过对应的功能接口23对外部设备进行写数据操作。
在另一可选的实施例中,控制模块221根据使能寄存器地址确定待使能的功能接口23,并根据功能寄存器地址对待使能的功能接口23所连接的功能寄存器进行操作。
以读数据为例,控制模块221从***总线接口21获取使能寄存器地址,并根据该使能寄存器地址对使能寄存器的对应的使能位进行操作,并控制与该使能位对应的功能接口23的使能状态。进一步,控制模块221从***总线接口21获取到功能寄存器地址,控制模块221根据使能寄存器地址确定待使能的功能接口23,并根据功能寄存器地址对待使能的功能接口23所连接的功能寄存器进行读数据操作。
另外,MCU 11基于同一基地址设置多组功能寄存器的偏移地址。以MCU控制三个功能接口23为例,定义基地址0x10,控制寄存器、状态寄存器、读数据寄存器、写数据寄存器、从地址选择寄存器和使能寄存器的偏移地址分别为0x0、0x1、0x2、0x3、0x4、0x5,仅需要占用6个地址空间。相比于利用三条***总线来控制三个功能接口23而言,每个地址包括5个偏移地址,占用15个地址空间,可以节省9个地址空间。采用这种方式,功能接口23的数量越多,节省的地址空间的数量也越多,效果越明显。
参阅图5和图6,图5是本申请实施例控制模块和功能接口的连接示意图,图6是本申请实施例提供的片上***的工作流程示意图,其中,本实施例的控制器22包括一个使能寄存器和多个控制模块,每个控制模块对应一组功能寄存器,每个控制模块和一组功能寄存器对应一个功能接口23。
进一步,使能寄存器连接每个功能接口23的使能引脚,每个控制模块连接MCU中断向量表,***总线中的复位线连接每个功能接口23的复位引脚,***总线的时钟线连接每个功能接口23的时钟引脚。
进一步,在一个寄存器组和一个功能接口23的对应连接中,控制寄存器连接控制引脚,状态寄存器连接状态引脚,读数据寄存器连接读数据引脚,写数据寄存器连接写数据引脚,从地址选择寄存器连接从地址选择引脚。
结合上述图1-图6,下面对上述实施例中的片上***10的工作流程进行介绍。
1)判断***总线是否被选中。
具体地,MCU要进行读写操作时,先将需要进行读写操作的寄存器地址发送到地址总线,控制模块可以根据该寄存器地址控制使能寄存器对相应的功能接口进行使能。
2)判断是读操作还是写操作。
具体地,MCU将“读”或“写”信号发送到控制总线,控制模块根据该信号将寄存器的数据传输方向调整为“读”或“写”。
进一步,在进行读操作时,控制模块控制对应的读数据寄存器、控制寄存器、状态寄存器进行工作;在进行写操作时,控制模块控制对应的写数据寄存器、控制寄存器、状态寄存器进行工作。
本实施例提供的基于FPGA的SPI扩展总线接口由FPGA逻辑资源实现,并用于连接MCU与外部设备,该扩展总线接口包括:多个功能接口,分别连接对应的外部设备,且用于实现与对应的外部设备之间的SPI通信;***总线接口,用于连接MCU的***总线,并将MCU通过***总线发送的外设地址映射成对应的寄存器地址,其中寄存器地址包括使能寄存器地址;控制器,包括控制模块以及使能寄存器,其中多个功能接口分别连接使能寄存器,控制模块根据使能寄存器地址对使能寄存器进行操作,进而对多个功能接口进行使能控制。通过上述方式,基于FPGA逻辑资源和可编程的特点,对SPI总线接口进行扩展,可动态的调节SPI功能接口的数量和功能,解决了现有技术中SPI总线接口短缺的问题,另外,还提到了MCU对外部设备的管理和控制能力,增强了MCU的可扩展性和通用性,同时,还降低了SPI接口的设计和应用复杂度,便于使用。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是根据本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。