基于gpio接口的lpc外设扩展方法及装置制造方法

文档序号:6543649阅读:354来源:国知局
基于gpio接口的lpc外设扩展方法及装置制造方法
【专利摘要】本发明公开了一种基于GPIO接口的LPC外设扩展方法及装置,方法包括基于双向异步请求-应答握手协议与CPU的GPIO接口进行第一级通讯,将收到报文通过第二级同步握手协议转发给下级的LPC外设或者对内部寄存器及中断操作,如果收到LPC外设的串行中断请求或内部中断请求,则反向向CPU的GPIO接口发起中断请求;装置包括GPIO与LPC接口模块、LPC总线协议控制模块和LPC串行中断控制模块,GPIO与LPC接口模块与CPU相连。本发明具有扩展简单灵活、方便系统扩展、通讯与具体时钟无关、对GPIO口时钟没有特殊要求、通讯数据可靠、节省硬件资源、对于上层使用者透明的优点。
【专利说明】基于GPIO接口的LPC外设扩展方法及装置
【技术领域】
[0001]本发明涉及嵌入式系统的外设扩展【技术领域】,具体涉及一种基于GPIO接口的LPC外设扩展方法及装置。
【背景技术】
[0002]目前微处理器设计中,有些处理器如THG26R)7BD设计有LPC协议接口,该接口为符合LPC协议规范的同步接口时序要求,则可以直接使用。然而,很多其它的微处理器没有设计LPC接口,使得在系统中LPC接口将不能应用。目前,现有处理器大部分具有GPIO接口,但是却无法通过GPIO接口直接使用LPC设备。这是由于GPIO接口无法与LPC设备间完成有效的时钟同步通讯,即使GPIO接口操作按照额定周期规定时间内执行有效的命令也无法总是满足与LPC设备间建立时间和保持时间要求。而且,在现代嵌入式系统中,许多微处理器并没有LPC HOST控制器接口。然而,由于LPC协议可以通过很少的信号线连接多种设备(superio、嵌入式控制器等),允许一个系统中没有X_bus或者ISA,同时其相对于传统的X-bus可以有效的降低成本。其相对于X-bus协议memory空间由16M增加到4G,其他设备内存空间也不受16M约束;其设备类型firmware memory类型可以有效地支持BIOS。由于LPC接口协议具有接口信号数目少和能够满足多种外设的需求等优势,使得LPC HST控制器的需求日益凸显。然而,目前许多系统通过南桥的较复杂的接口才能使其在系统中得到应用。因此,如何基于GPIO接口的LPC外设扩展,已经称为一项亟待解决的关键技术问题。

【发明内容】

[0003]本发明要解决的技术问题是提供一种扩展简单灵活、方便系统扩展、通讯与具体时钟无关、对GPIO 口时钟没有特殊要求、通讯数据可靠、节省硬件资源、对于上层使用者透明的基于GPIO接口的LPC外设扩展方法及装置。
[0004]为了解决上述技术问题,本发明采用的技术方案为:
[0005]一种基于GPIO接口的LPC外设扩展方法,其实施步骤如下:
[0006]I)基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出,跳转执行步骤2);否则基于同步握手协议将报文请求输出,跳转执行步骤3);同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口;[0007]2)接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求;
[0008]3)接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
[0009]本发明还提供一种基于GPIO接口的LPC外设扩展装置,包括:
[0010]GPIO与LPC接口模块,用于基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块;否则基于同步握手协议将报文请求输出给LPC串行中断控制模块;同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口 ;
[0011]LPC总线协议控制模块,用于接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求;
[0012]LPC串行中断控制模块,用于接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
[0013]本发明基于GPIO接口的LPC外设扩展方法具有下述优点:
[0014]1、本发明基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,与GPIO接口采用双向异步请求-应答握手协议使得该通讯过程不与具体时钟相关,可以满足GPIO接口软件控制的灵活性,有效地解决了直接通过GPIO接口完成LPC协议的通讯不可行的问题,而且由于与CPU的GPIO接口之间采用异步握手接口,对于GPIO接口时钟没有特殊要求,只要求硬件资源够用、驱动能力满足要求即可。
[0015]2、为保障系统能可靠工作,本发明报文请求的可选字段信息包括报文头、地址、数据三种信息,而且针对系统状态控制相关的信号,通过作为第一级的步骤I)和作为第二级的步骤2)或步骤3)形成二级同步逻辑处理,步骤I)基于同步握手协议将报文请求发送给第二级,使得GPIO接口的数据到该模块经二级寄存器同步处理后,有效的避免了采集到亚稳态数据,确保系统工作的可靠性。
[0016]3、本发明根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息,因此本发明通过内置寄存器实现CPU和LPC外设之间的DMA数据传输功能,而且类型为DMA读和DMA写的报文请求的地址信息为DMA通道号,因此具体实现不需要DMAC,DMA类型请求采用软件透明的形式向下发送,简化了部分功能使得节省了硬件资源。
[0017]4、本发明的所有报文请求传输周期的发起均通过CPU的GPIO接口发起,所传输的设备类型对于上层使用者是透明的。
[0018]本发明基于GPIO接口的LPC外设扩展装置为本发明基于GPIO接口的LPC外设扩展方法对应的装置,具有与本发明基于GPIO接口的LPC外设扩展方法相同的技术效果,故在此不再赘述。
【专利附图】

【附图说明】[0019]图1为本发明实施例方法的流程示意图。
[0020]图2为本发明实施例装置的框架结构示意图。
[0021]图3为本发明实施例装置的应用系统结构示意图。
[0022]图4为本发明实施例装置中GPIO与LPC接口模块(gpio_lpc_if)的框架结构示意图。
[0023]图5为本发明实施例装置中GPIO与LPC接口模块(gpio_lpC_if)的工作过程示意图。
[0024]图6为本发明实施例装置中CPU发送数据到GPIO与LPC接口模块(gpio_lpC_if)进行数据写或DMA读时序图。
[0025]图7为本发明实施例装置中GPIO与LPC接口模块(gpio_lpC_if)发送数据到CPU读或DMA写时序图。
[0026]图8为本发明实施例装置中GPIO与LPC接口模块(gpio_lpC_if)发送数据到CPU读请求应答或DMA写应答时序图。
[0027]图9为本发明实施例装置中LPC串行中断控制模块(lpc_int_ctl)的框架结构示意图。
[0028]图10为本发明实施例装置中LPC串行中断控制模块(lpc_int_ctl)的工作过程示意图。
[0029]图11为本发明实施例装置中LPC总线协议控制模块(lpc_bUS)的框架结构示意图。
[0030]图12为本发明实施例装置中LPC总线协议控制模块(lpc_bus)与GPIO与LPC接口模块(gpio_lpc_if)的同步请求握手协议时序图。
[0031]图13为本发明实施例装置中LPC总线协议控制模块(lpc_bus)与GPIO与LPC接口模块(gpio_lpc_if)的同步请求握手的数据传输流程示意图。
[0032]图14为CPU应用本发明实施例装置与LPC设备间的通讯流程图。
[0033]图15为CPU应用本发明实施例装置发送数据到LPC设备的通讯流程图。
[0034]图16为LPC应用本发明实施例装置设备发送数据到CPU的通讯流程图。
【具体实施方式】
[0035]如图1所示,本实施例中基于GPIO接口的LPC外设扩展方法的实施步骤如下:
[0036]I)基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出,跳转执行步骤2);否则基于同步握手协议将报文请求输出,跳转执行步骤3);同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口;[0037]2)接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求;
[0038]3)接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
[0039]如图2所示,本实施例基于GPIO接口的LPC外设扩展装置包括:
[0040]GPIO与LPC接口模块(gpio_lpC_if),用于基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块;否则基于同步握手协议将报文请求输出给LPC串行中断控制模块;同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口 ;
[0041]LPC总线协议控制模块(lpc_bus),用于接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求;
[0042]LPC串行中断控制模块(lpc_int_ctl),用于接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对(PU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与(PU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向(PU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向(PU的GPIO接口发送中断请求,如果需要向(PU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。[0043]本实施例基于GPIO接口的LPC外设扩展装置(gpio21pc)是基于verilog硬件描述语言综合后在FPGA芯片内实现的(此外也可以根据需要采用其它硬件描述语言综合后在FPGA芯片内实现,或者还可通过IC流片生产实现),其本质上是一种使用GPICKGeneralPurpose Programming I/O)接口的 LPC (Low Pin Count)主机控制器装置,gpio_lpc_if主要负责与GPIO接口的异步通讯控制,主要负责GPIO接口数据的接收和发送;lpc_bus主要负责LPC协议接口的数据收发、与LPC slave之间进行数据通讯。lpc_int_ctl主要负责中断控制功能和模块内部控制寄存器的读写控制,同时该模块还负责设备内部寄存器的读写控制。本实施例基于GPIO接口的LPC外设扩展装置(gpio21pc)采用GPIO接口连接CPU, CPU通过基于GPIO接口的LPC外设扩展装置(gpio21pc)实现与LPC外设的扩展连接,通过LPC总线,可以有效支持LPC协议规范的所有设备类型,参见图3,本实施例中列举的支持LPC协议规范的设备包括闪存式BIOS芯片(Flash BIOS)、Super 1/0芯片、嵌入式控制器(Embedded Controller)。由于通过LPC总线可以用于扩展多种慢速1/0设备,被广泛采用,但很多CPU本身并不支持LPC接口,需要通过南桥芯片扩展,带来了设计复杂度和成本的增加。本实施例基于GPIO接口的LPC外设扩展装置解决了 CPU通过GPIO接口快速扩展出LPC接口的问题,通过LPC总线可以有效支持LPC协议规范的所有设备类型,以低成本实现LPC接口设备的挂接,具有设计简单、使用方便、兼容性好等特点。
[0044]如图4所示,GPIO与LPC接口模块(gpio_lpc_if)主要由GPIO下行FIFO控制模块(gpio_downstream_fifostrol)、GPIO 上行 FIFO 控制模块(8。;[0_即81:代3111_;1^;1^0(31:1'01)两部分组成。GPIO下行FIFO控制模块(gpio_downstream_fifostrol)主要负责接收GPIO端发送的请求,在解析后转换为LPC总线协议相关请求发送到LPC总线协议控制模块(lpc_bus),或者将中断相关请求发送到LPC串行中断控制模块(lpc_int_ctI );GP10上行FIFO控制模块(gpio_upstream_fifoctrol)主要负责将LPC总线协议控制模块(lpc_bus)和LPC串行中断控制模块(lpc_int_ctl)的数据请求发送到gpio接口。
[0045]如图5所示,如果GPIO下行FIFO控制模块接收GPIO接口报文请求,则根据报文请求的报文头判断其发送目标(即判断是否为内部请求),如果发送目标为LPC外设(外部请求),则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块,否则(内部请求,不需要发给LPC外设)基于同步握手协议将报文请求输出给LPC串行中断控制模块(lpc_int_ctl)。如果LPC串行中断控制模块(lpc_int_ctl)接收串行中断报文或者LPC总线协议控制模块(lpC_bus)接收LPC总线读数据,则会向GPIO上行FIFO控制模块发送GPIO接口报文请求。[0046]图6为本实施例中CPU发送数据到GPIO与LPC接口模块(gpio_lpc_if)写请求或DMA读时序图。其中gpio21pc_dir信号由CPU驱动,其为高指示数据传输方向为CPU到gpio21pc模块,其为低指示数据传输方向为gpio21pc模块到CPU。当数据由CPU到gpio21pc模块传输时,一次异步握手的传输过程如下:①、首先CPU将gpio21pc_dir、gpio21pc_vld置I,并且将数据发送到gpio_data[15:0]信号线上,等待gpio_lpc_if发送CPU的应答信号lpc2gpio_ack有效便进入③。②、当gpio_lpc_if检测到gpio21pc_dir、gpio21pc_vld信号为I时,别且内置FIFO非满的时候,便采集gpio_data[15:0]信号线上的数据,同时置I应答信号。如果不满足上述条件即将不予应答,直到条件满足进入④。③、CPU检测到应答信号lpc2gpi0_ack为I时,将请求信号gpio21pC_Vld清O。此后,CPU将等待应答信号lpc2gpio_ack为O进入⑤。④、gpio_lpc_if检测到gpio21pc_vld为O后,即可撤销应答,将信号lpC2gpio_aCk清0,进入⑤。⑤、一次异步握手传输结束,如果仍需要异步数据传输便进入①开始下一次数据传输。本实施例中,对于gpio_data[17:0]信号线,gpio_data[17]用于表不信号传输的起始位,gpio_data[16]用于表不信号传输的结束位,gpio_data[15:0]传输报文头、地址、数据等信息。CPU到gpio_lpc_if的数据传输定义中,有报文头、地址、数据三种报文类型。对于DMA读和其他设备类型的写报文不含有数据信息,只含有报文头和地址信息(DMA对应其DMA通道号),此时需要三次握手传输;对于含有数据信息的报文还要多一次(I或2bytes数据)或者两次(4bytes数据)握手来传输。本实施例中,报文头长度为8位,其中bit3?O表示数据长度,对于bit3?O的定义中:0001表示数据长度为lbyte,0011表示数据长度为2byte,1111表示数据长度为4byte ;Bit8?4表示数据请求类型,对于bi8?4的定义中:00000表示数据请求类型为内部读,00100表示数据请求类型为IO读,00001表示数据请求类型为内部写,00101表示数据请求类型为IO写,00010表示数据请求类型为DMA写,01000表示数据请求类型为FW读,00011表示数据请求类型为DMA读,01001表示数据请求类型为FW写,10000表示数据请求类型为MEM读,10001表示数据请求类型为MEM写。上述报文头的请求类型定义中,内部读和内部写中的“内部”请求表示装置内部的寄存器请求,即内部请求;其他类型(FW读、FW写、MEM读、MEM写、IO读、IO写、DMA读、DMA写)为LPC协议规范定义的数据类型,即LPC设备读请求和LPC设备写请求,相对于内部读和内部写而言属于外部请求的范畴。
[0047]图7为本实施例中GPIO与LPC接口模块(gpio_lpc_if)发送数据到CPU读或DMA写时序图,其数据传输方向和传输过程与图6相似,其传输“地址”等信息,只是其没有包含“数据”信息。
[0048]图8为本实施例中GPIO与LPC接口模块(gpio_lpC_if)到CPU的接口信号时序图,其数据传输的异步握手过程中与图7类似,只是方向相反,此时需要CPU将只是传输方向的信号gp21pc_dir清O,且数据请求方为gpio_lpc_if,应答方为CPU。
[0049]本实施例中,LPC串行中断控制模块(lpc_int_ctl)的主要逻辑功能为:(I)负责接收设备串行中断信号。(2)本实施例没有设计DMAC模块,基于寄存器实现DMAC功能,因此本模块还负责将设备DMA请求以中断方式发送到CPU,因此该装置内DMA请求的实现方式与其他类型一致,只是类型编码有区别。(3)负责将gpio21pC到CPU的数据发送请求以中断方式通知CPU。(4)模块内部的所有寄存器的读写配置全部在此模块内部实现,寄存器配置具体如表I所示。[0050]表1:LPC串行中断控制模块寄存器配置说明表。
[0051]
【权利要求】
1.一种基于GPIO接口的LPC外设扩展方法,其特征在于实施步骤如下: 1)基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出,跳转执行步骤2);否则基于同步握手协议将报文请求输出,跳转执行步骤3);同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口; 2)接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求; 3)接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
2.一种基于GPIO接口的LPC外设扩展装置,其特征在于包括: GPIO与LPC接口模块,用于基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块;否则基于同步握手协议将报文请求输出给LPC串行中断控制模块;同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口 ; LPC总线协议控制模块,用于接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议发送作为发往CPU的GPIO接口的报文请求; LPC串行中断控制模块,用于接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使 能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
【文档编号】G06F13/38GK103914424SQ201410147976
【公开日】2014年7月9日 申请日期:2014年4月14日 优先权日:2014年4月14日
【发明者】马爱永, 张明, 郭御风, 邓宇, 龚锐, 任巨, 石伟, 高正坤, 窦强 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1