CN103914424B - 基于gpio接口的lpc外设扩展方法及装置 - Google Patents
基于gpio接口的lpc外设扩展方法及装置 Download PDFInfo
- Publication number
- CN103914424B CN103914424B CN201410147976.1A CN201410147976A CN103914424B CN 103914424 B CN103914424 B CN 103914424B CN 201410147976 A CN201410147976 A CN 201410147976A CN 103914424 B CN103914424 B CN 103914424B
- Authority
- CN
- China
- Prior art keywords
- lpc
- request
- interrupt
- register
- message request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Bus Control (AREA)
Abstract
本发明公开了一种基于GPIO接口的LPC外设扩展方法及装置,方法包括基于双向异步请求‑应答握手协议与CPU的GPIO接口进行第一级通讯,将收到报文通过第二级同步握手协议转发给下级的LPC外设或者对内部寄存器及中断操作,如果收到LPC外设的串行中断请求或内部中断请求,则反向向CPU的GPIO接口发起中断请求;装置包括GPIO与LPC接口模块、LPC总线协议控制模块和LPC串行中断控制模块,GPIO与LPC接口模块与CPU相连。本发明具有扩展简单灵活、方便系统扩展、通讯与具体时钟无关、对GPIO口时钟没有特殊要求、通讯数据可靠、节省硬件资源、对于上层使用者透明的优点。
Description
技术领域
本发明涉及嵌入式系统的外设扩展技术领域,具体涉及一种基于GPIO接口的LPC外设扩展方法及装置。
背景技术
目前微处理器设计中,有些处理器如THG26F07BD设计有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外设扩展,已经称为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题是提供一种扩展简单灵活、方便系统扩展、通讯与具体时钟无关、对GPIO口时钟没有特殊要求、通讯数据可靠、节省硬件资源、对于上层使用者透明的基于GPIO接口的LPC外设扩展方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于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接口发送中断请求。
本发明还提供一种基于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接口发送中断请求。
本发明基于GPIO接口的LPC外设扩展方法具有下述优点:
1、本发明基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,与GPIO接口采用双向异步请求-应答握手协议使得该通讯过程不与具体时钟相关,可以满足GPIO接口软件控制的灵活性,有效地解决了直接通过GPIO接口完成LPC协议的通讯不可行的问题,而且由于与CPU的GPIO接口之间采用异步握手接口,对于GPIO接口时钟没有特殊要求,只要求硬件资源够用、驱动能力满足要求即可。
2、为保障系统能可靠工作,本发明报文请求的可选字段信息包括报文头、地址、数据三种信息,而且针对系统状态控制相关的信号,通过作为第一级的步骤1)和作为第二级的步骤2)或步骤3)形成二级同步逻辑处理,步骤1)基于同步握手协议将报文请求发送给第二级,使得GPIO接口的数据到该模块经二级寄存器同步处理后,有效的避免了采集到亚稳态数据,确保系统工作的可靠性。
3、本发明根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息,因此本发明通过内置寄存器实现CPU和LPC外设之间的DMA数据传输功能,而且类型为DMA读和DMA写的报文请求的地址信息为DMA通道号,因此具体实现不需要DMAC,DMA类型请求采用软件透明的形式向下发送,简化了部分功能使得节省了硬件资源。
4、本发明的所有报文请求传输周期的发起均通过CPU的GPIO接口发起,所传输的设备类型对于上层使用者是透明的。
本发明基于GPIO接口的LPC外设扩展装置为本发明基于GPIO接口的LPC外设扩展方法对应的装置,具有与本发明基于GPIO接口的LPC外设扩展方法相同的技术效果,故在此不再赘述。
附图说明
图1为本发明实施例方法的流程示意图。
图2为本发明实施例装置的框架结构示意图。
图3为本发明实施例装置的应用系统结构示意图。
图4为本发明实施例装置中GPIO与LPC接口模块(gpio_lpc_if)的框架结构示意图。
图5为本发明实施例装置中GPIO与LPC接口模块(gpio_lpc_if)的工作过程示意图。
图6为本发明实施例装置中CPU发送数据到GPIO与LPC接口模块(gpio_lpc_if)进行数据写或DMA读时序图。
图7为本发明实施例装置中GPIO与LPC接口模块(gpio_lpc_if)发送数据到CPU读或DMA写时序图。
图8为本发明实施例装置中GPIO与LPC接口模块(gpio_lpc_if)发送数据到CPU读请求应答或DMA写应答时序图。
图9为本发明实施例装置中LPC串行中断控制模块(lpc_int_ctl)的框架结构示意图。
图10为本发明实施例装置中LPC串行中断控制模块(lpc_int_ctl)的工作过程示意图。
图11为本发明实施例装置中LPC总线协议控制模块(lpc_bus)的框架结构示意图。
图12为本发明实施例装置中LPC总线协议控制模块(lpc_bus)与GPIO与LPC接口模块(gpio_lpc_if)的同步请求握手协议时序图。
图13为本发明实施例装置中LPC总线协议控制模块(lpc_bus)与GPIO与LPC接口模块(gpio_lpc_if)的同步请求握手的数据传输流程示意图。
图14为CPU应用本发明实施例装置与LPC设备间的通讯流程图。
图15为CPU应用本发明实施例装置发送数据到LPC设备的通讯流程图。
图16为LPC应用本发明实施例装置设备发送数据到CPU的通讯流程图。
具体实施方式
如图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接口模块(gpio_lpc_if),用于基于双向异步请求-应答握手协议通过多次握手传输接收CPU通过GPIO接口发起的报文请求,所述报文请求的可选字段信息包括报文头、地址、数据三种信息,所述报文请求的类型包括DMA读、DMA写、LPC设备读请求、LPC设备写请求,且其中类型为DMA读或LPC设备写请求的报文请求只含有报文头和地址信息而不含有数据信息,类型为DMA读和DMA写的报文请求的地址信息为DMA通道号;解析报文请求,根据报文请求的报文头判断其发送目标,如果发送目标为LPC外设,则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块;否则基于同步握手协议将报文请求输出给LPC串行中断控制模块;同时,判断是否收到发往GPIO接口的报文请求,如果收到发往GPIO接口的报文请求或者中断请求,则将收到的报文请求基于双向异步请求-应答握手协议通过多次握手传输发送给CPU的GPIO接口;
LPC总线协议控制模块(lpc_bus),用于接收报文请求,根据接收到报文请求中携带的设备类型和地址、数据及数据大小将相应的报文请求按照LPC协议向下发送给指定的LPC外设;同时,遵循LPC协议检测LPC总线上由LPC外设发送的数据,如果在LPC总线上读取到LPC外设发送的数据,则将LPC外设发送的数据基于同步握手协议作为发往CPU的GPIO接口的报文请求发送;
LPC串行中断控制模块(lpc_int_ctl),用于接收报文请求,根据收到的报文请求执行对内置寄存器的操作,所述内置寄存器包括长等待超时控制寄存器、中断状态寄存器、清除中断寄存器、中断屏蔽寄存器、配置寄存器,针对CPU而言中断状态寄存器为读寄存器,清除中断寄存器为写寄存器,长等待超时控制寄存器、中断屏蔽寄存器、配置寄存器三者均为读写寄存器,所述长等待超时控制寄存器用于实现与CPU之间发送中断请求的超时控制,所述中断状态寄存器用于记录当前中断请求状态,所述当前中断请求状态可为数据读、串行中断请求和外设DMA请求三者之一,所述中断屏蔽寄存器用于记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,所述配置寄存器用于记录数据读、串行中断请求和外设DMA请求三者的模式配置信息;所述对内置寄存器的操作包括对配置寄存器、中断屏蔽寄存器、清除中断寄存器三者的操作;同时根据中断屏蔽寄存器判断记录数据读、串行中断请求和外设DMA请求三者的中断使能状态,如果状态为使能,则根据是否需要向CPU返回读数据、是否收到LPC外设的串行中断请求、是否收到LPC外设的外设DMA请求来写中断状态寄存器,并根据写中断状态寄存器的状态来决定是否向CPU的GPIO接口发送中断请求,如果需要向CPU的GPIO接口发送中断请求,则基于同步握手协议将向CPU的GPIO接口发送中断请求。
本实施例基于GPIO接口的LPC外设扩展装置(gpio2lpc)是基于verilog硬件描述语言综合后在FPGA芯片内实现的(此外也可以根据需要采用其它硬件描述语言综合后在FPGA芯片内实现,或者还可通过IC流片生产实现),其本质上是一种使用GPIO(General PurposeProgramming I/O)接口的LPC(Low Pin Count)主机控制器装置,gpio_lpc_if主要负责与GPIO接口的异步通讯控制,主要负责GPIO接口数据的接收和发送;lpc_bus主要负责LPC协议接口的数据收发、与LPC slave之间进行数据通讯。lpc_int_ctl主要负责中断控制功能和模块内部控制寄存器的读写控制,同时该模块还负责设备内部寄存器的读写控制。本实施例基于GPIO接口的LPC外设扩展装置(gpio2lpc)采用GPIO接口连接CPU,CPU通过基于GPIO接口的LPC外设扩展装置(gpio2lpc)实现与LPC外设的扩展连接,通过LPC总线,可以有效支持LPC协议规范的所有设备类型,参见图3,本实施例中列举的支持LPC协议规范的设备包括闪存式BIOS芯片(Flash BIOS)、Super I/O芯片、嵌入式控制器(Embedded Controller)。由于通过LPC总线可以用于扩展多种慢速I/O设备,被广泛采用,但很多CPU本身并不支持LPC接口,需要通过南桥芯片扩展,带来了设计复杂度和成本的增加。本实施例基于GPIO接口的LPC外设扩展装置解决了CPU通过GPIO接口快速扩展出LPC接口的问题,通过LPC总线可以有效支持LPC协议规范的所有设备类型,以低成本实现LPC接口设备的挂接,具有设计简单、使用方便、兼容性好等特点。
如图4所示,GPIO与LPC接口模块(gpio_lpc_if)主要由GPIO下行FIFO控制模块(gpio_downstream_fifostrol)、GPIO上行FIFO控制模块(gpio_upstream_fifoctrol)两部分组成。GPIO下行FIFO控制模块(gpio_downstream_fifostrol)主要负责接收GPIO端发送的请求,在解析后转换为LPC总线协议相关请求发送到LPC总线协议控制模块(lpc_bus),或者将中断相关请求发送到LPC串行中断控制模块(lpc_int_ctl);GPIO上行FIFO控制模块(gpio_upstream_fifoctrol)主要负责将LPC总线协议控制模块(lpc_bus)和LPC串行中断控制模块(lpc_int_ctl)的数据请求发送到gpio接口。
如图5所示,如果GPIO下行FIFO控制模块接收GPIO接口报文请求,则根据报文请求的报文头判断其发送目标(即判断是否为内部请求),如果发送目标为LPC外设(外部请求),则将报文请求转换为LPC总线协议相关请求并基于同步握手协议将报文请求输出给LPC总线协议控制模块,否则(内部请求,不需要发给LPC外设)基于同步握手协议将报文请求输出给LPC串行中断控制模块(lpc_int_ctl)。如果LPC串行中断控制模块(lpc_int_ctl)接收串行中断报文或者LPC总线协议控制模块(lpc_bus)接收LPC总线读数据,则会向GPIO上行FIFO控制模块发送GPIO接口报文请求。
图6为本实施例中CPU发送数据到GPIO与LPC接口模块(gpio_lpc_if)写请求或DMA读时序图。其中gpio2lpc_dir信号由CPU驱动,其为高指示数据传输方向为CPU到gpio2lpc模块,其为低指示数据传输方向为gpio2lpc模块到CPU。当数据由CPU到gpio2lpc模块传输时,一次异步握手的传输过程如下:①、首先CPU将gpio2lpc_dir、gpio2lpc_vld置1,并且将数据发送到gpio_data[15:0]信号线上,等待gpio_lpc_if发送CPU的应答信号lpc2gpio_ack有效便进入③。②、当gpio_lpc_if检测到gpio2lpc_dir、gpio2lpc_vld信号为1时,别且内置FIFO非满的时候,便采集gpio_data[15:0]信号线上的数据,同时置1应答信号。如果不满足上述条件即将不予应答,直到条件满足进入④。③、CPU检测到应答信号lpc2gpio_ack为1时,将请求信号gpio2lpc_vld清0。此后,CPU将等待应答信号lpc2gpio_ack为0进入⑤。④、gpio_lpc_if检测到gpio2lpc_vld为0后,即可撤销应答,将信号lpc2gpio_ack清0,进入⑤。⑤、一次异步握手传输结束,如果仍需要异步数据传输便进入①开始下一次数据传输。本实施例中,对于gpio_data[17:0]信号线,gpio_data[17]用于表示信号传输的起始位,gpio_data[16]用于表示信号传输的结束位,gpio_data[15:0]传输报文头、地址、数据等信息。CPU到gpio_lpc_if的数据传输定义中,有报文头、地址、数据三种报文类型。对于DMA读和其他设备类型的写报文不含有数据信息,只含有报文头和地址信息(DMA对应其DMA通道号),此时需要三次握手传输;对于含有数据信息的报文还要多一次(1或2bytes数据)或者两次(4bytes数据)握手来传输。本实施例中,报文头长度为8位,其中bit3~0表示数据长度,对于bit3~0的定义中:0001表示数据长度为1byte,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设备写请求,相对于内部读和内部写而言属于外部请求的范畴。
图7为本实施例中GPIO与LPC接口模块(gpio_lpc_if)发送数据到CPU读或DMA写时序图,其数据传输方向和传输过程与图6相似,其传输“地址”等信息,只是其没有包含“数据”信息。
图8为本实施例中GPIO与LPC接口模块(gpio_lpc_if)到CPU的接口信号时序图,其数据传输的异步握手过程中与图7类似,只是方向相反,此时需要CPU将只是传输方向的信号gp2lpc_dir清0,且数据请求方为gpio_lpc_if,应答方为CPU。
本实施例中,LPC串行中断控制模块(lpc_int_ctl)的主要逻辑功能为:(1)负责接收设备串行中断信号。(2)本实施例没有设计DMAC模块,基于寄存器实现DMAC功能,因此本模块还负责将设备DMA请求以中断方式发送到CPU,因此该装置内DMA请求的实现方式与其他类型一致,只是类型编码有区别。(3)负责将gpio2lpc到CPU的数据发送请求以中断方式通知CPU。(4)模块内部的所有寄存器的读写配置全部在此模块内部实现,寄存器配置具体如表1所示。
表1:LPC串行中断控制模块寄存器配置说明表。
上述长等待超时寄存器,默认值为16’h0,表示无限制等待。否则表示等待的时钟周期个数(时钟频率为33MHz)。如图9所示,LPC串行中断控制模块(lpc_int_ctl)主要由DMA请求接收模块(dma_req_rcv)、串行中断号接收模块(serirq_rcv)这两个模块组成,DMA请求接收模块(dma_req_rcv)主要负责dma请求的接收,串行中断号接收模块(serirq_rcv)主要负责串行中断的接收。
如图10所示,LPC串行中断控制模块(lpc_int_ctl)在工作状态接收报文请求,如果收到报文请求,则根据收到的报文请求执行对内置寄存器的操作(寄存器配置),此外还可以根据报文请求执行中断使能及清除中断操作。然后,判断中断是否使能,如果中断使能,则接收DMA请求或串行中断并向上发送。
本实施例中,LPC串行中断控制模块(lpc_int_ctl)和gpio_lpc_if间接口信号如表2所示。
表2:LPC串行中断控制模块(lpc_int_ctl)和gpio_lpc_if间接口信号说明表。
名称 | 含义 |
gp2int_dta[31:0] | gpio_lpc_if到lpc_int_ctl的数据 |
gp2int_req | gpio_lpc_if到lpc_int_ctl的请求 |
gp2int_ack | gpio_lpc_if到lpc_int_ctl的应答 |
int2gp_dta[31:0] | lpc_int_ctl到gpio_lpc_if的数据 |
int2gp_req | lpc_int_ctl到gpio_lpc_if的请求 |
int2gp_ack | lpc_int_ctl到gpio_lpc_if的应答 |
如图11所示,LPC总线协议控制模块(lpc_bus)主要由LPC总线发送控制模块(bus_if_ctrl)和LPC总线接收控制模块(if_bus_ctrl)组成。LPC总线发送控制模块(bus_if_ctrl)主要负责接收gpio_lpc_if的数据,并且将该报文转换成lpc报文数据格式发送下去;LPC总线接收控制模块(if_bus_ctrl)主要负责将接收到的LPC总线数据发送到gpio_lpc_if。
本实施例中,LPC总线协议控制模块(lpc_bus)与gpio_lpc_if之间的数据传输采用同步握手请求协议,其接口信号时序如图12所示。
本实施例中,LPC总线协议控制模块(lpc_bus)和gpio_lpc_if间接口信号如表3所示。
表3:LPC总线协议控制模块(lpc_bus)和gpio_lpc_if间接口信号说明表。
名称 | 含义 |
gp2bs_dta[71:0] | gpio_lpc_if到lpc_bus的数据 |
gp2bs_req | gpio_lpc_if到lpc_bus的请求 |
gp2bs_ack | gpio_lpc_if到lpc_bus的应答 |
bs2gp_dta[71:0] | lpc_bus到gpio_lpc_if的数据 |
bs2gp_req | lpc_bus到gpio_lpc_if的请求 |
bs2gp_ack | lpc_bus到gpio_lpc_if的应答 |
如图13所示,LPC总线协议控制模块(lpc_bus)与gpio_lpc_if间数据传输采用同步握手协议:在gp2bs_req信号有效时,接收地址、数据、编码类型等信息,并按照LPC总线协议向下发送,直至发送完成。发送完成后,判断是否为写操作,如果不是写操作,则将bs2gp_ack置1,然后将bs2gp_ack置0;如果是写操作,则接收LPC外设返回的读数据,将bs2gp_ack置1,将bs2gp_req置1,并判断gp2bs_ack是否为1,如果gp2bs_ack为1则将gp2bs_req置0恢复无效。LPC串行中断控制模块(lpc_int_ctl)和gpio_lpc_if之间的数据传输、LPC总线协议控制模块(lpc_bus)与gpio_lpc_if间数据传输一致,均采用同步握手协议,因此针对LPC串行中断控制模块(lpc_int_ctl)和gpio_lpc_if之间的数据传输本实施例中不再赘述。
如图14所示,CPU通过本实施例基于GPIO接口的LPC外设扩展装置(gpio2lpc)与LPC设备间通讯流程步骤如下:1)CPU首先通过GPIO接口将请求发送到gpio_lpc_if;2)Gpio_lpc_if接受到来自CPU的请求后,据表1表示报文编码判断其是到lpc_bus或者是lpc_int_ctrl,并完成相应数据的发送;3)如果来自CPU的请求到打lpc_bus,则lpc_bus完成lpc数据的发送,如果CPU的数据到达lpc_int_ctrl,则lpc_int_ctrl完成相应的操作。
如图15所示,CPU通过本实施例基于GPIO接口的LPC外设扩展装置(gpio2lpc)发送数据到LPC设备的详细流程如下:1)CPU遵循异步握手协议通过GPIO接口将写请求(或DMA读请求)发送到gpio_lpc_if;2)gpio_lpc_if将接受到的请求发送到lpc_bus;3)lpc_bus根据接收到的设备类型和地址、数据及数据大小等信息将相应的报文请求按照lpc协议向下发送(其中DMA实现方式和其他方式完全相同,只是报文类型不同)。
如图16所示,LPC设备通过本实施例基于GPIO接口的LPC外设扩展装置(gpio2lpc)发送数据到CPU的通讯流程如下:1)CPU按照图10所示流程将读请求(或DMA写请求)发送到lpc_bus;2)lpc_bus遵循LPC协议由总线上读取数据后,遵循同步握手协议将数据发送到gpio_lpc_if;3)gpio_lpc_if接受到来自lpc_bus的请求后,遵循异步握手请求将数据发送到CPU的GPIO接口。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
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接口发送中断请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410147976.1A CN103914424B (zh) | 2014-04-14 | 2014-04-14 | 基于gpio接口的lpc外设扩展方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410147976.1A CN103914424B (zh) | 2014-04-14 | 2014-04-14 | 基于gpio接口的lpc外设扩展方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103914424A CN103914424A (zh) | 2014-07-09 |
CN103914424B true CN103914424B (zh) | 2016-08-03 |
Family
ID=51040119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410147976.1A Active CN103914424B (zh) | 2014-04-14 | 2014-04-14 | 基于gpio接口的lpc外设扩展方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103914424B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159859B (zh) * | 2015-09-11 | 2017-12-19 | 上海斐讯数据通信技术有限公司 | 基于接口扩展的数据处理系统及方法 |
CN105404607B (zh) * | 2015-11-20 | 2018-02-13 | 英业达科技有限公司 | 通用串行输入输出的数据传输方法 |
CN105955911B (zh) * | 2016-05-09 | 2023-06-02 | 杭州宏杉科技股份有限公司 | 一种热插拔控制电路及其控制方法 |
CN106155960B (zh) * | 2016-06-29 | 2019-03-22 | 广州慧睿思通信息科技有限公司 | 基于gpio握手和edma的uart串口通信方法 |
US10554548B2 (en) * | 2016-06-30 | 2020-02-04 | Futurewei Technologies, Inc. | Partially deferred packet access |
CN106227685A (zh) * | 2016-07-14 | 2016-12-14 | 昆山百敖电子科技有限公司 | 一种实现秒脉冲触发计算机中断的方法 |
CN109117396A (zh) * | 2018-08-30 | 2019-01-01 | 山东经安纬固消防科技有限公司 | 存储器访问方法及系统 |
CN111884892B (zh) * | 2020-06-12 | 2021-11-23 | 苏州浪潮智能科技有限公司 | 一种基于共享链协议的数据传输方法与系统 |
CN112579495B (zh) * | 2020-12-25 | 2024-01-30 | 上海东软载波微电子有限公司 | Gpio控制器 |
CN112711558B (zh) * | 2021-01-15 | 2023-07-21 | 飞腾信息技术有限公司 | Lpc总线的串行中断系统、方法、介质 |
CN112817895B (zh) * | 2021-01-28 | 2022-04-19 | 广州安凯微电子股份有限公司 | 一种基于gpio的通信方法 |
CN113032305B (zh) * | 2021-03-12 | 2023-07-04 | 飞腾信息技术有限公司 | 一种接口中断测量方法及装置 |
CN114143135B (zh) * | 2021-11-17 | 2023-07-07 | 天津市英贝特航天科技有限公司 | 一种远距离数据传输装置、系统及方法 |
CN114297105B (zh) * | 2021-12-29 | 2024-04-05 | 合肥市芯海电子科技有限公司 | 一种直接存储器访问的嵌入式控制电路、芯片和电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989244A (zh) * | 2009-08-05 | 2011-03-23 | 华为技术有限公司 | 一种信号转换装置、方法及通信设备 |
CN102880574A (zh) * | 2011-07-11 | 2013-01-16 | 航天信息股份有限公司 | 利用gpio模拟低速并行接口的方法 |
CN103678226A (zh) * | 2012-09-24 | 2014-03-26 | 炬力集成电路设计有限公司 | 一种芯片的通用输入输出gpio端口复用电路及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112565B2 (en) * | 2005-06-08 | 2012-02-07 | Fisher-Rosemount Systems, Inc. | Multi-protocol field device interface with automatic bus detection |
EP2012535B1 (en) * | 2007-07-03 | 2018-02-14 | MediaTek Inc. | Direct interface of camera module to general purpose i/o port of digital baseband processor |
-
2014
- 2014-04-14 CN CN201410147976.1A patent/CN103914424B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101989244A (zh) * | 2009-08-05 | 2011-03-23 | 华为技术有限公司 | 一种信号转换装置、方法及通信设备 |
CN102880574A (zh) * | 2011-07-11 | 2013-01-16 | 航天信息股份有限公司 | 利用gpio模拟低速并行接口的方法 |
CN103678226A (zh) * | 2012-09-24 | 2014-03-26 | 炬力集成电路设计有限公司 | 一种芯片的通用输入输出gpio端口复用电路及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103914424A (zh) | 2014-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103914424B (zh) | 基于gpio接口的lpc外设扩展方法及装置 | |
US20200174953A1 (en) | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link | |
CN102023956B (zh) | 集成电路芯片中串行外设从器件接口结构及数据读写方法 | |
CN101788972B (zh) | 一种数据传输的系统与方法 | |
EP2676204B1 (en) | Serial interface | |
CN103064805B (zh) | Spi控制器及通信方法 | |
CN102819512A (zh) | 一种基于spi的全双工通信装置及其方法 | |
CN102420877B (zh) | 一种多模式高速智能异步串口通信模块及实现方法 | |
CN106155960A (zh) | 基于gpio握手和edma的uart串口通信方法 | |
EP2791810A1 (en) | System and method of sending data via a plurality of data lines on a bus | |
CN107908589A (zh) | I3c验证从设备、主从设备的通信验证系统及方法 | |
CN103914427B (zh) | 基于三根物理互连线的集成电路片上通讯方法及装置 | |
CN110008162B (zh) | 一种缓冲接口电路及基于该电路传输数据的方法和应用 | |
CN206757602U (zh) | 一种基于SoC支持多个SPI接口标准组的装置 | |
WO2024131147A1 (zh) | 增强型串行外设接口实现方法、装置、转换器件及介质 | |
CN111026691B (zh) | 基于apb总线的owi通讯设备 | |
CN103593316A (zh) | 一种减少mcu中断占用i2c总线时间的方法 | |
CN102202431B (zh) | 增加3g通讯模块与应用处理器接口灵活性的装置和方法 | |
CN103003806B (zh) | 一种配置pcie端口的方法、装置和设备 | |
CN116126771A (zh) | 一种两线spi的通信系统及方法 | |
CN218413458U (zh) | 采用三个串行外设接口代替ssi多从机的通信装置 | |
CN213715913U (zh) | 一种微控制系统 | |
CN111832049B (zh) | 一种基于spi的数据传输方法及系统 | |
CN116155290B (zh) | 一种模数转换单元的控制装置及控制方法 | |
CN115202257B (zh) | 一种lpc总线协议转换及设备并行控制装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |