CN110765038B - 处理器与lpc设备的通信方法、装置和存储介质 - Google Patents
处理器与lpc设备的通信方法、装置和存储介质 Download PDFInfo
- Publication number
- CN110765038B CN110765038B CN201810827600.3A CN201810827600A CN110765038B CN 110765038 B CN110765038 B CN 110765038B CN 201810827600 A CN201810827600 A CN 201810827600A CN 110765038 B CN110765038 B CN 110765038B
- Authority
- CN
- China
- Prior art keywords
- processor
- clock
- lpc
- state
- bus
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明实施例提供了一种处理器与LPC设备的通信方法、装置和存储介质,所述方法包括:当检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;若确定的所述时钟周期数量超过预设数量,确定目标时钟周期;将当前状态切为预设状态;基于所述预设状态,在所述处理器与所述LPC设备之间进行通信,能够保证通信过程的正常进行,使得处理器能够正常地访问LPC设备,解决了现有技术中严格遵循LPC1.1规范的处理器无法正常访问未严格遵循LPC1.1规范的LPC设备的问题,提高了处理器的兼容性。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种处理器与LPC设备的通信方法、一种处理器与LPC设备的通信装置和一种存储介质。
背景技术
CPU(Central Processing Unit,中央处理器)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据,广泛应用于服务器、高性能计算机、低能耗数据中心、个人高性能计算机、高端桌面应用、高吞吐计算应用、工业控制、数字信号处理、高端嵌入式应用等产品中。
芯片(Chip)是半导体元件产品的统称,人们将具备处理事务、数据或者接收指令功能的一类芯片称作处理器。通常,处理器内集成有丰富的接口以及寄存器模块,通过装配在板卡中发挥相应的作用。由于处理器被广泛使用在各个领域中,使得客户的板卡涉及到各种类型的接口及型号的外围芯片。由于外围芯片型号及厂商的差异,部分外围芯片在通信协议上与特定型号的处理器之间存在兼容性问题,给使用特定型号外围芯片的客户在板卡调试过程中带来了极大的不便。
例如,某些处理器包含LPC(Low Pin Count,低管脚数)控制器,符合LPC1.1规范(低管脚数总线接口规范)。但是某些型号的LPC设备在与该处理器通信时如果未严格遵循上述LPC1.1规范,就会导致处理器无法正常访问该LPC设备。
发明内容
鉴于上述问题,提出了本发明实施例的一种处理器与LPC设备的通信方法、一种处理器与LPC设备的通信装置和相应的一种存储介质,以解决符合LPC1.1规范的处理器无法访问未严格遵循上述LPC1.1规范的设备的问题。
为了解决上述问题,本发明实施例公开了一种处理器与LPC设备的通信方法,包括:
当检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
基于所述预设状态,在所述处理器与所述LPC设备之间进行通信。
可选地,所述处理器与所述LPC设备连接至复杂可编程逻辑器件CPLD,检测处理器对LPC设备的读访问操作的步骤包括:
通过CPLD检测处理器的时钟信号、循环开始信号和复用信号;
当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
可选地,所述若确定的所述时钟周期数量超过预设数量,确定目标时钟周期的步骤包括:
若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
可选地,所述将当前状态切换为预设状态的步骤包括:
在预设数量个时钟周期结束时,将所述当前状态切换为长等待状态;其中,所述当前状态为所述时钟周期所对应的状态,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
可选地,所述处理器包括LPC总线,所述基于所述预设状态,在所述处理器与所述LPC设备之间进行通信的步骤包括:
在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
为了解决上述问题,本发明实施例公开了一种处理器与LPC设备的通信装置,包括:
时钟周期数量确定模块,用于在检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
目标时钟周期确定模块,用于若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
预设状态切换模块,用于将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
通信模块,用于基于所述预设状态,在所述处理器与所述LPC设备之间进行通信。
可选地,所述处理器与所述LPC设备连接至复杂可编程逻辑器件CPLD,所述时钟周期数量确定模块包括:
读访问操作检测子模块,用于通过CPLD检测处理器的时钟信号、循环开始信号和复用信号,当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
可选地,所述目标时钟周期确定模块包括:
目标时钟周期确定子模块,用于若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
可选地,所述预设状态切换模块包括:
预设状态切换子模块,用于在预设数量个时钟周期结束时,将所述当前状态切换为长等待状态;其中,所述当前状态为所述时钟周期所对应的状态,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
可选地,所述处理器包括LPC总线,所述通信模块包括:
读状态切换子模块,用于在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
数据读取子模块,用于在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
为了解决上述问题,本发明实施例公开了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备执行如上述的处理器与LPC设备的通信方法。
与背景技术相比,本发明实施例包括以下优点:
在本发明实施例中,当检测到处理器对LPC设备的读访问操作时,可以针对该读访问操作,确定交换总线控制权所占用的时钟周期数量,若确定的上述时钟周期数量超过预设数量,则可以将超过预设数量的时钟周期确定为目标时钟周期,并将当前状态切换为长等待等预设状态,然后基于上述预设状态在处理器与LPC设备之间进行通信。由于上述预设状态没有最大时钟周期的限制,能够保证通信过程的正常进行,使得处理器能够正常地访问LPC设备,本实施例通过对交换总线控制权所占用的时钟周期数量进行调整,解决了现有技术中严格遵循LPC1.1规范的处理器无法正常访问未严格遵循LPC1.1规范的LPC设备的问题,提高了处理器的兼容性。
附图说明
图1是本发明一个实施例的一种处理器与LPC设备的通信方法的步骤流程示意图;
图2是本发明一个实施例的一种通信循环流程示意图;
图3是本发明一个实施例的另一种处理器与LPC设备的通信方法的步骤流程示意图;
图4是本发明一个实施例的一种处理器与LPC设备的通信装置的示意性结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一个实施例的一种处理器与LPC设备的通信方法的步骤流程示意图,具体可以包括如下步骤:
步骤101,当检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
在本发明实施例中,上述处理器可以是基于LPC1.1规范的处理器,该处理器中集成有LPC控制器和LPC总线。LPC是一种基于Intel标准的33MHz 4bit并行总线协议,用于替代以前的ISA(Industry Standard Architecture,工业标准体系结构)总线协议,可以连接南桥和Super I/O芯片、FLASH BIOS等设备。
为了便于理解,本实施例首先对处理器访问LPC设备的完整流程作一介绍。
通常,处理器在对LPC设备进行访问时,可以由处理器中的LPC控制器通过LPC总线对LPC设备发出I/O读访问操作请求,LPC设备响应上述LPC控制器,并将读取到的数据放回LPC总线上。在此过程中,处理器和LPC设备应当严格遵循LPC1.1规范,否则容易导致LPC控制器解析数据错误,造成读访问失败。
LPC总线由7个必选信号和6个可选信号组成,如表一和表二所示,分别是LPC总线必选信号列表和可选信号列表的示例。
表一:LPC总线必选信号列表
信号 | 外设 | Host设备 | 信号描述 |
LAD[3:0] | I/O | I/O | 命令、数据、地址复用信号 |
LFRAME# | I | O | 指示一个操作循环的开始 |
LRESET# | I | I | 复位信号 |
LCLK | I | I | 33MHz时钟信号 |
需要说明的是,LAD[3:0]是在四根不同信号线中传输的信号的缩写,是处理器中存在多个数据线/地址线时的通用写法,LAD[3:0]表示为4个信号:分别是LAD[0],LAD[1],LAD[2]和LAD[3],其中LAD[0]表示最低位信号,LAD[3]表示最高位信号。例如,若LAD[3:0]的值为“1001”,那么LAD[0]为1,LAD[1]为0,LAD[2]为0,LAD[3]为1。
表二:LPC总线可选信号列表
LPC总线能够支持多种事务类型的操作,例如I/O读写、内存读写、DMA(DirectMemory Access,直接内存存取)读写、Firmware Memory(固件内存)读写等等。一个完整的读写循环(Cycle)通常包含以下流程:
(1)LPC总线host(主机)拉低LFRAME#信号,指示Cycle开始,同时将相关信息输出到LAD[3:0]上。上述相关信息可以是指总线host将表示开始一个Cycle的LAD[3:0]值设置为0000,其中0000就是相关信息。LAD[3:0]是LPC总线进行通信时使用的信号线中所传输的信号,该信号是命令、数据、地址复用的信号。LPC总线协议规定了多种事务类型的操作在一个操作周期内,每个时钟周期LAD[3:0]值代表着不同的含义。例如,对于I/O读操作,在Cycle开始后的第一个时钟周期LAD[3:0]的值代表本次事务的类型。
(2)LPC总线host根据Cycle类型驱动相应的信息到LAD[3:0]上,例如,驱动的信息可以包括当前操作的事务类型、数据传输方向及size大小、访问地址等等。
(3)LPC总线host根据Cycle类型的不同选择进行驱动数据或者移交总线控制权。驱动数据则是指LPC总线host将对应的LAD[3:0]信号驱动为高电平或低电平,高电平代表1,低电平代表0,移交总线控制权的过程是硬件自动进行的。在移交总线控制权后,LPC设备可以读写LPC总线信号。
(4)外设释放总线控制权,至此该Cycle结束。
在具体的实现过程中,一个典型的Cycle通常可以由Start、Cyctype+DIR、ADDR、Size(DMA only)、Channel(DMA only)、TAR、Sync、DATA等状态组成。如图2所示,是一个典型的通信循环流程示意图,该循环示意图类似于I/O读或内存读操作中的循环过程,DATA字段由外设驱动发送给LPC总线host。
下面逐一对上述各个状态进行介绍。
Start:用于指示一个传输的开始或者结束。当LFRAME#信号有效时,所有外设都要监视LAD[3:0]信号,并在LFRAME#信号有效的最后一个时钟周期进入Start状态。如表三所示,是Start状态下LAD[3:0]信号的定义示例。
表三:Start状态下LAD[3:0]信号定义
Bit[3:0] | 定义 |
000 | 开始一个Cycle,用于外设Memory、I/O及DMA操作 |
001 | 保留 |
010 | 响应bus master 0 |
011 | 响应bus master 1 |
100 | 保留 |
101 | 开始Firmware Memory Read |
110 | 开始Firmware Memory Write |
111 | Stop/Abort,结束一个Cycle |
Cycle Type/Direction(Cyctype+DIR):该状态由总线host驱动,对Cycle的传输类型(Memory、I/O、DMA)以及传输方向进行说明,其中LAD[0]在当前场(场是一种物理学的中的概念,可以表示某种空间区域,以及物体在该空间区域中的分布情况)中被保留。具体定义值如表四所示。
表四:Cyctype+DIR状态下LAD[3:0]信号定义
Bits[3:2] | Bit[1] | 定义 |
00 | 0 | I/O读 |
00 | 1 | I/O写 |
01 | 0 | Memory读 |
01 | 1 | Memory写 |
10 | 0 | DMA读 |
10 | 1 | DMA写 |
11 | x | 保留 |
Size:该状态表示传输数据DATA字段的大小,由总线host驱动,当数据为16bits或32bits时,将分成多个DATA状态进行发送。Size只存在于DMA类型的Cycle中。而在I/O和内存(Memory)类型Cycle中,每个Cycle只能传输8bits数据。Size状态下LAD[1:0]信号有效,LAD[3:2]信号被忽略,LAD[3:0]具体定义如下表五所示。
表五:Size状态下LAD[3:0]信号定义
Bits[1:0] | 定义 |
00 | 传输的数据大小为8bits |
01 | 传输的数据大小为16bits |
10 | 保留 |
11 | 传输的数据大小为32bits |
ADDR/Channel:ADDR状态表示地址信息,由总线host驱动。在I/O Cycle中,地址信息为16bits(4个时钟周期);在内存类型Cycle中,地址信息为32bits(8个时钟周期);而在DMA类型cycle中,则没有ADDR状态,取代的则是Channel状态(1个时钟周期)。ADDR的地址信息先从高位进行发送。
TAR(Turn-around):TAR用于交换总线的控制权(2个时钟周期),当host要将总线转交给外设时,TAR由总线host驱动;当外设要将总线交还给host时,TAR由外设驱动。TAR两个时钟周期的第一个时钟周期由总线host或外设驱动,LAD[3:0]=1111;第二个时钟周期总线host或外设则将LAD[3:0]置为三态,但由于LAD[3:0]管脚内部有弱上拉电平,LAD[3:0]还都是处于高逻辑电平,所以TAR的两个时钟周期LAD[3:0]都为1111。
Sync:用于加入等待状态,即加入持续时间为1~N个时钟周期。Sync状态可能的组合见下表六所示。
表六:Sync状态下LAD[3:0]信号定义
Bits[3:0] | 定义 |
0000 | 准备好 |
0001-0100 | 保留 |
0101 | 短时等待 |
0110 | 长时等待 |
0111-1000 | 保留 |
1001 | Ready More(DMA only) |
1010 | 错误 |
1011-1111 | 保留 |
当外设还没准备好时,可以插入一些等待周期010(短等待)或0110(长等待),等到Ready状态到来时,可以选择驱动为0000(准备好),1010(错误)或者1001(Ready More)。
在Sync状态下,总线host上通常可能发生以下几种潜在错误:
(1)当总线host发起一个Cycle(Memory、IO、DMA)后,但总线上没有驱动Sync,当总线host检测到连续3个时钟内都没有响应时,可以认为总线上没有外设执行此次Cycle操作。
(2)总线host启动一个Cycle(Memory、IO、DMA),一个设备驱动了一个有效的Sync来等待(LAD[3:0]=‘0101b’或者‘0110b’),但是却不能完成该Cycle,从而导致总线被锁死。此时,总线host应采取以下措施解除总线锁死:
假如Sync为‘0101b’,那么Sync的时钟周期最多为8个。当总线host检测到有多于8个时钟周期的Sync时,总线host将取消这个Cycle(通过LFRAME#拉低4个LCLK周期,进入Start状态,来终止这个Cycle)。
假如Sync为‘0110b’,那么Sync的长度将没有限制,外设必须有保护机制来完成这个Cycle。
DATA:DATA状态占用两个时钟周期,用于传输一个字节数据。当数据流向外设时,当前场由总线host驱动;反之,当数据流向host时,该场由外设驱动。在传输过程的时候中,低4位最先被驱动到总线上,在第一个时钟周期Data[3:0]被驱动,在第二个时钟周期,Data[7:4]被驱动。
在本发明实施例中,为了实现严格遵循LPC1.1规范的处理器对未严格遵循LPC1.1规范的LPC设备的正常访问,可以首先检测处理器对LPC设备的读访问操作,并针对该操作产生的信号进行处理。
在具体实现中,可以通过对时钟信号LCLK、循环开始信号LFRAME#和复用信号LAD[3:0]进行监测,来判定处理器是否发起了对LPC设备的读访问操作。
在本发明实施例中,当检测到处理器发起对LPC设备的读访问操作时,可以首先确定当前读访问操作的循环Cycle中交换总线控制权所占用的时钟周期数量。即,确定当前读访问操作的循环Cycle中将总线控制权由处理器交换至LPC设备时所占用的时钟周期数量。
步骤102,若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
申请人在实现本发明的过程中发现,对于I/O Read Cycle,总线host要读取I/O地址的数据,TAR状态下总线host将总线控制权交给外设,外设接管总线后,经过Sync状态(0110)后,变为ready(准备好)状态(Sync为0000),然后外设将数据发送给总线host,驱动TAR状态,将总线控制权交给总线host,这个Cycle结束。根据LPC1.1规范,在I/O ReadCycle中,TAR为2个时钟周期。
但是,处理器在读取未严格遵循上述LPC1.1规范的LPC设备(如F85226设备)时的寄存器值时,当处理器将LPC总线控制权交给LPC设备后,LPC设备响应,并将数据放在LPC数据总线上。但处理器读取的数据为0,通过读取LPC的寄存器,显示Timeout(超时)。原因即是对于处理器的LPC控制器来说,TAR为2个时钟周期,之后就认为进入了Sync阶段。但在处理器与LPC设备的实际通信过程中TAR为4个时钟周期,处理器将TAR的后两个时钟周期状态认为是Sync状态,且Sync的值为1111b,此值既不是短等待(0101b),也不是长等待(0110b),处理器认为属于其他,因此报Timeout异常,造成处理器解析此次I/O Read Cycle错误,故无法正确访问LPC设备。
而对于严格遵循LPC1.1规范的其他设备(如W83527、W83627、SCH3114),处理器在访问上述设备时,均能够正常访问。由于上述设备的TAR均为2个时钟周期,通过分析,可以确认TAR占用4个时钟周期是导致处理器无法正常访问未严格遵循LPC1.1规范的LPC设备的主要原因。
因此,在本发明实施例中,在确定出当前读访问操作的循环Cycle中交换总线控制权的时钟周期数量后,可以进一步确定超过预设数量的时钟周期的目标时钟周期的数量,上述预设数量的时钟周期可以为2个时钟周期。即,可以将超过2个时钟周期的其他时钟周期确定为目标时钟周期,然后执行步骤103,将当前状态切换为预设状态;其中,当前状态即为TAR状态。
步骤103,将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
在本发明实施例中,上述预设状态可以为长等待状态。即,将当前状态切换为长等待状态。长等待状态属于Sync状态的一种(即表六中LAD[3:0]值为0110对应的状态),该状态没有最大时钟周期的长度限制,因此在原来的基础上增加数个时钟周期的长等待状态并不会影响实际的通信过程。
具体的,在预设数量个时钟周期结束时,将TAR状态切换为长等待状态;其中,预设数量个时钟周期为交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。例如,当预设数量个时钟周期为两个时钟周期,而确定的交换总线控制权所占用的时钟周期为4个时钟周期时,那么在前两个时钟周期结束时,即在第三个时钟周期开始时,将TAR状态切换为长等待状态。
步骤104,基于所述预设状态,在所述处理器与所述LPC设备之间进行通信。
在对多种未严格遵循LPC1.1规范的LPC设备进行读访问测试后发现,当交换总线控制权占用两个时钟周期时,处理器对LPC设备均能正常访问,而对于交换总线控制权占用超过两个时钟周期的设备,则无法正确地访问LPC设备。通过对上述问题进行分析可知,交换总线控制权占用的时钟周期是否为两个,是处理器能否正确地读取未严格遵循LPC1.1规范的LPC设备上数据的关键。因此,在本发明实施例中,当检测到处理器对LPC设备的读访问操作时,可以针对该读访问操作,确定将总线控制权由处理器交换至LPC设备时占用的时钟周期数量,若确定的上述时钟周期数量超过预设数量,则可以将超过预设数量的时钟周期确定为目标时钟周期,并将当前状态切换为长等待等预设状态,然后基于上述预设状态在处理器与LPC设备之间进行通信。由于上述预设状态没有最大时钟周期的限制,能够保证通信过程的正常进行,使得处理器能够正常地访问LPC设备,本实施例通过对交换总线控制权所占用的时钟周期数量进行调整,解决了现有技术中严格遵循LPC1.1规范的处理器无法正常访问未严格遵循LPC1.1规范的LPC设备的问题,提高了处理器的兼容性。
参照图3,示出了本发明一个实施例的另一种处理器与LPC设备的通信方法的步骤流程示意图,具体可以包括如下步骤:
步骤301,通过CPLD检测处理器的时钟信号、循环开始信号和复用信号;
在本发明实施例中,可以将处理器与LPC设备连接至同一个CPLD(ComplexProgrammable Logic Device,复杂可编程逻辑器件),通过CPLD来检测处理器的各种信号。CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,从而实现相应的设计功能。
步骤302,当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作;
在本发明实施例中,CPLD可以通过检测处理器的各种信号来确定产生该信号的操作是否为针对LPC设备进行读访问的操作,进而选定以LPC总线必选信号中的LCLK,LFRAME#为基准信号,通过软件逻辑编程实现CPLD对LPC信号处理功能。基准信号是指逻辑编程过程中,从输入的信号中选定的一种信号,逻辑中会描述信号处理的过程,其具体实现由CPLD中集成的硬件单元模块完成。
在具体实现中,通过CPLD检测到在当前时钟信号LCLK的上升沿的循环开始信号LFRAME#为低电平,且在下一个时钟信号LCLK的上升沿检测到复用信号LAD[3:0]为设定数值时,可以判定为上述处理器对LPC设备进行读访问操作。上述设定数值可以为000xb,其中x可以为0或1。
步骤303,针对所述读访问操作,确定将总线控制权由所述处理器交换至所述LPC设备时占用的时钟周期数量;
在本发明实施例中,当确定处理器发起对LPC设备的读访问操作后,可以首先确定当前读访问操作的循环Cycle中交换总线控制权所占用的时钟周期数量。
步骤304,若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期;
通常,严格遵循LPC1.1规范的LPC设备的TAR为2个时钟周期。因此,在确定出当前操作针对的LPC设备的TAR时钟周期数量后,可以将超过2个时钟周期后的其他时钟周期确定为目标时钟周期。
例如,若某个TAR为4个时钟周期,可以将第三个和第四个时钟周期确定为目标时钟周期,并使用CPLD对上述目标时钟周期进行处理。
步骤305,将当前状态切换为长等待状态;
在本发明实施例中,由于长等待状态没有最大时钟周期的限制,在原来的基础上增加数个时钟周期的长等待状态并不会影响实际的通信过程,因此可以将超过2个时钟周期的其他时钟周期转换为长等待状态。
在具体实现中,可以在第8个时钟信号LCLK和第9个时钟信号LCLK的上升沿时,将LAD[3]和LAD[0]拉低,使LAD[3:0]=0110,即将TAR多个时钟周期的后两个时钟周期的信号从0xf转变成0x6,使其转换为长等待状态。
步骤306,在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
在本发明实施例中,在将超过2个时钟周期的其他时钟周期转换为长等待状态后,为了实现处理器对LPC设备的正常访问,可以在目标时钟周期结束时,将长等待状态切换为读状态,从而执行步骤307,在读状态下,读取相应的数据。
步骤307,在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
在具体实现中,LPC设备在接收到处理器的读访问操作请求后,可以响应上述LPC控制器,并获取数据,将获取到的数据驱动至LPC总线上,然后,处理器可以读取LPC总线上存储的数据,完成一次访问循环。
本发明实施例中,可以通过CPLD实现对处理器信号的检测、读访问操作的确定和读访问操作中各个状态之间的切换等;该CPLD可以集成在处理器中。
在本发明实施例中,由于严格遵循LPC1.1规范的设备的TAR为2个时钟周期,因此,可以将超过2个时钟周期的其他时钟周期转换为长等待状态,使得处理器能够正常访问无论是否严格遵循上述规范的LPC设备,提高了处理器的兼容性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明一个实施例的一种处理器与LPC设备的通信装置的示意性结构框图,具体可以包括如下模块:
时钟周期数量确定模块401,用于在检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
目标时钟周期确定模块402,用于若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
预设状态切换模块403,用于将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
通信模块404,用于基于所述预设状态,在所述处理器与所述LPC设备之间进行通信。
在本发明实施例中,所述处理器与所述LPC设备可以连接至复杂可编程逻辑器件CPLD,所述时钟周期数量确定模块401具体可以包括如下子模块:
读访问操作检测子模块,用于通过CPLD检测处理器的时钟信号、循环开始信号和复用信号,当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
在本发明实施例中,所述目标时钟周期确定模块402具体可以包括如下子模块:
目标时钟周期确定子模块,用于若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
在本发明实施例中,所述预设状态切换模块403具体可以包括如下子模块:
预设状态切换子模块,用于在预设数量个时钟周期结束时,将当前状态切换为长等待状态;其中,所述当前状态为所述时钟周期所对应的状态,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
在本发明实施例中,所述处理器可以包括LPC总线,所述通信模块404具体可以包括如下子模块:
读状态切换子模块,用于在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
数据读取子模块,用于在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述的一种处理器与LPC设备的通信方法,所述方法包括:当检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;基于所述预设状态,在所述处理器与所述LPC设备之间进行通信。
可选地,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备还可以执行如下的方法:通过CPLD检测处理器的时钟信号、循环开始信号和复用信号;当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
可选地,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备还可以执行如下的方法:若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
可选地,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备还可以执行如下的方法:在预设数量个时钟周期结束时,将当前状态切换为长等待状态;其中,所述当前状态为所述时钟周期所对应的状态,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
可选地,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备还可以执行如下的方法:在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种处理器与LPC设备的通信方法、一种处理器与LPC设备的通信装置和一种存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种处理器与LPC设备的通信方法,其特征在于,包括:
当检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
基于所述预设状态,在所述处理器与所述LPC设备之间进行通信;
其中,所述将当前状态切换为预设状态的步骤包括:
在预设数量个时钟周期结束时,将所述当前状态切换为长等待状态;其中,所述当前状态为所述交换总线控制权所对应的状态。
2.根据权利要求1所述的方法,其特征在于,所述处理器与所述LPC设备连接至复杂可编程逻辑器件CPLD,检测处理器对LPC设备的读访问操作的步骤包括:
通过所述CPLD检测处理器的时钟信号、循环开始信号和复用信号;
当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
3.根据权利要求2所述的方法,其特征在于,所述若确定的所述时钟周期数量超过预设数量,确定目标时钟周期的步骤包括:
若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
4.根据权利要求1-3任一所述的方法,其特征在于,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
5.根据权利要求4所述的方法,其特征在于,所述处理器包括LPC总线,所述基于所述预设状态,在所述处理器与所述LPC设备之间进行通信的步骤包括:
在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
6.一种处理器与LPC设备的通信装置,其特征在于,包括:
时钟周期数量确定模块,用于在检测到处理器对LPC设备的读访问操作时,针对所述读访问操作,确定交换总线控制权所占用的时钟周期数量;
目标时钟周期确定模块,用于若确定的所述时钟周期数量超过预设数量,确定目标时钟周期,所述目标时钟周期为超过预设数量的时钟周期;
预设状态切换模块,用于将当前状态切换为预设状态,所述预设状态对应的时长为所述目标时钟周期对应的时长;
通信模块,用于基于所述预设状态,在所述处理器与所述LPC设备之间进行通信;
其中,所述预设状态切换模块包括:
预设状态切换子模块,用于在预设数量个时钟周期结束时,将所述当前状态切换为长等待状态;其中,所述当前状态为所述时钟周期所对应的状态。
7.根据权利要求6所述的装置,其特征在于,所述处理器与所述LPC设备连接至复杂可编程逻辑器件CPLD,所述时钟周期数量确定模块包括:
读访问操作检测子模块用于通过CPLD检测处理器的时钟信号、循环开始信号和复用信号,当所述CPLD在当前时钟信号的上升沿检测到循环开始信号为低电平,且在下一个时钟信号的上升沿检测到所述复用信号为设定数值时,判定所述处理器对所述LPC设备进行读访问操作。
8.根据权利要求7所述的装置,其特征在于,所述目标时钟周期确定模块包括:
目标时钟周期确定子模块,用于若确定的所述时钟周期数量超过两个,则将所述时钟周期中前两个时钟周期之后的其他时钟周期确定为目标时钟周期。
9.根据权利要求6-8任一所述的装置,其特征在于,所述预设数量个时钟周期为所述交换总线控制权所占用的时钟周期中前连续预设数量个时钟周期。
10.根据权利要求9所述的装置,其特征在于,所述处理器包括LPC总线,所述通信模块包括:
读状态切换子模块,用于在所述目标时钟周期结束时,将所述LPC设备由长等待状态切换至读状态;
数据读取子模块,用于在所述读状态下,读取所述LPC总线上存储的数据,所述数据由所述LPC设备驱动至所述LPC总线上。
11.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备执行如方法权利要求1-5中一个或多个所述的处理器与LPC设备的通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810827600.3A CN110765038B (zh) | 2018-07-25 | 2018-07-25 | 处理器与lpc设备的通信方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810827600.3A CN110765038B (zh) | 2018-07-25 | 2018-07-25 | 处理器与lpc设备的通信方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110765038A CN110765038A (zh) | 2020-02-07 |
CN110765038B true CN110765038B (zh) | 2021-09-03 |
Family
ID=69327273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810827600.3A Active CN110765038B (zh) | 2018-07-25 | 2018-07-25 | 处理器与lpc设备的通信方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110765038B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114647604B (zh) * | 2022-05-18 | 2022-10-28 | 杭州米芯微电子有限公司 | Dma数据传输方法、系统、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818893A (zh) * | 2006-03-14 | 2006-08-16 | 杭州华为三康技术有限公司 | 外围设备的lpc总线接口时序转换方法及转换装置 |
CN201063164Y (zh) * | 2006-09-12 | 2008-05-21 | 北京兆日技术有限责任公司 | 一种lpc接口的端口控制译码电路 |
CN105955911A (zh) * | 2016-05-09 | 2016-09-21 | 杭州宏杉科技有限公司 | 一种热插拔控制电路及其控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096308B2 (en) * | 2003-08-29 | 2006-08-22 | Texas Instruments Incorporated | LPC transaction bridging across a PCI—express docking connection |
-
2018
- 2018-07-25 CN CN201810827600.3A patent/CN110765038B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818893A (zh) * | 2006-03-14 | 2006-08-16 | 杭州华为三康技术有限公司 | 外围设备的lpc总线接口时序转换方法及转换装置 |
CN201063164Y (zh) * | 2006-09-12 | 2008-05-21 | 北京兆日技术有限责任公司 | 一种lpc接口的端口控制译码电路 |
CN105955911A (zh) * | 2016-05-09 | 2016-09-21 | 杭州宏杉科技有限公司 | 一种热插拔控制电路及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110765038A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8898358B2 (en) | Multi-protocol communication on an I2C bus | |
CA2109682C (en) | Multiple bus interface | |
KR970004523B1 (ko) | 퍼스널 컴퓨터 시스템 | |
JPH0580008B2 (zh) | ||
EP0795157B1 (en) | Bridge between two buses | |
US5454081A (en) | Expansion bus type determination apparatus | |
KR100764921B1 (ko) | 장치 이뉴머레이션을 위한 가상 rom | |
US10078568B1 (en) | Debugging a computing device | |
EP0775959B1 (en) | Method and apparatus for optimizing PCI interrupt binding and associated latency in extended/bridged PCI busses | |
CN110968352B (zh) | 一种pcie设备的复位系统及服务器系统 | |
US5867645A (en) | Extended-bus functionality in conjunction with non-extended-bus functionality in the same bus system | |
US7779174B2 (en) | Method and apparatus for dynamically changing burst length using direct memory access control | |
US5671443A (en) | Direct memory access acceleration device for use in a data processing system | |
US6567866B1 (en) | Selecting multiple functions using configuration mechanism | |
US6963947B2 (en) | Driver supporting bridge method and apparatus | |
CN110765038B (zh) | 处理器与lpc设备的通信方法、装置和存储介质 | |
US6954809B2 (en) | Apparatus and method for accessing computer system resources via serial bus | |
US20060064521A1 (en) | Universal serial bus (usb) system with single port and host controller thereof | |
JP4359618B2 (ja) | コンフィグレーション・レジスター・アクセス方法、設定方法、集積回路部品、コンピューター・システム、製品 | |
CN116521585A (zh) | 槽位丝印显示方法、装置、设备及存储介质 | |
CN108733479B (zh) | 卸载固态硬盘卡的方法以及使用该方法的装置 | |
CN115033172A (zh) | 一种存储模块管控方法、装置、设备及存储介质 | |
KR101260313B1 (ko) | 전자장치 및 그 데이터 송수신방법과, 슬레이브 장치 및복수의 장치 간의 통신방법 | |
US6081861A (en) | PCI migration support of ISA adapters | |
CN115905072A (zh) | 计算机系统、基于PCIe设备的控制方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |