LPC简介(超详细)

低引脚数总线接口的规范,称为LPC

目标:启用一个没有ISA或X-bus的系统,降低传统X-bus设备成本,满足X-bus的数据传输速率,执行与X-bus相同的周期类型:Memory, I/O, DMA,和Bus Master,支持固件内存周期类型,将X-bus上的内存空间从16MB增加到4GB,同步设计。

中断通过串行中断(SERIRQ)协议进行通信。

LPC接口不需要支持高速总线USB等低延迟总线。

术语:

主机:直接连接到CPU或连接到CPU的上游设备的接口部分。这是典型的系统芯片组。

外设:连接到X-bus的LPC下游设备,如Super I/O组件、flash和其他嵌入式控制器。

XXXXb’:以二进制表示的信号值

信号定义:LPC接口需要7个信号,6个信号可选,

LPC所需信号:

LAD[3:0]    多路复用命令、地址和数据

LFRAME#     帧:表示一个新周期的开始,中断周期的结束。

LRESET#     与主机上的Reset相同如果主机的接口上有则不要

LCLK        主机上与PCI时钟相同的33MHz时钟。

与现有的基于ISA设备相比,信号节省是巨大的。LPC接口通常只需要6个新信号:LAD[0:3]、LFRAME#和LDRQ#。

CLKRUN#通常只在移动系统中实现。LPCPD#仅用于在某些低功耗状态下部分供电的LPC设备

协议概述

1、协议支持的各种类型的周期

 

应遵守以下规则:

•主机和外设应执行所述的周期类型。

•外设不能尝试主机不支持的总线主周期。例如,如果主机不支持总线主I/O周期,外设就不能尝试这些周期。

•外设必须忽略它们不支持的周期

2、Memory, I/O, and DMA Cycle Overview----内存,I/O和DMA循环概述

在LPC总线上的数据传输是在一个4位总线上序列化的。这bus特点是:

•一个控制线,称为LFRAME#,由主机启动停止传输。外设驱动这个信号。

•LAD[3:0]总线,串行地传递信息周期类型、周期方向、芯片选择、地址、数据和等待状态。

•可选实现的边带信号传递中断和电源管理功能。

循环的一般流程如下:

  1. 当主机驱动LFRAME# 低有效,并将适当的信息放在LAD[3:0]信号线上时,就会启动一个周期        START

2. 主机驱动与周期相关的信息,如地址、DMA通道号或总线主授权。对于DMA和目标周期传输,主机还驱动周期类型(内存或I/O)、读/写方向和传输大小。CT/DIR    ADDR/CHANNEL    SIZE   

3. 主机可选地驱动数据,并转动总线来监视外围设备完成周期  DATA   TAR

4. 外围设备通过在LAD[3:0]上驱动适当的值来表示周期的完成  SYNC

5. 外围设备将总线转向主机,结束循环

对于总线主周期,这个协议有小的变化,因为总线必须驱动控制和地址信息到主机,主机负责结束周期,但一般来说,流程是相同的。

 LAD[3:0]  LAD[3:0]信号线在主机和外设之间通过LPC总线传输地址、控制和数据信息。通信的信息是:启动、停止(终止一个周期)、传输类型(内存、I/O、DMA)、传输方向(读/写)、地址、数据、等待状态、DMA通道和总线主授权。并非所有循环类型都以相同的方式使用LAD总线。

START  (1/2) 该字段指示事务的开始或停止。当断言LFRAME#即低有效时,所有外设将进入一个监视LAD[3:0]的状态。START在断言LFRAME#的最后一个时钟上有效。当断言LFRAME#时,这个字段可能有很多值。如果看到一个保留字段,外围设备不应该假设主机正在传输数据。因此,如果外设看到这种类型的编码,它必须忽略循环,直到下一次LFRAME#激活时才监视总线

Cycle Type / Direction (CYCTYPE + DIR) ----循环类型/方向(CYCTYPE + DIR)  (1)

这个字段由主机驱动,用于传递周期类型(内存,I/O, DMA)和周期方向(读/写)。当执行DMA或目标访问时,该字段由主机驱动,并由总线主访问上的外设驱动。字段的第0位保留,必须被外设忽略,并被主机驱动为0以进行基于主机的访问。对于总线主访问,它必须被主机忽略并被外围设备驱动为0。有效值:

 

 

保留:外设和主机都不允许驱动这种信号类型。如果这个值被外观察到,循环必须被忽略。如果这个信号是由总线主访问上的外设驱动的,主机将通过驱动LFRAME#激活来终止传输。

SIZE 一个时钟,它在DMA传输上由主机驱动,在总线主内存传输上由外设驱动,以确定要传输多少字节。位[3:2]是保留的,必须被驱动到' 00b ',并且必须被目标忽略。其余位编码:

 

Turn-Around (TAR)   两个时钟宽,当主机将控制转交给外设时(例如,读取数据)由主机驱动,当将控制转交给主机时由外设驱动。在这两个时钟宽字段的第一个时钟上,主机或外围设备驱动LAD[3:0]线“1111 b”。在第二个时钟上,宿主或外围将三态置于LAD[3:0]线。由于这些线条上的上拉很弱,所以它们将保持逻辑上的高电平。

   ADDR  这个字段是4个时钟宽的I/O周期,或8个时钟宽的内存周期。它在目标访问时由主机驱动,在总线主访问时由外围设备驱动。这个字段不在DMA周期上驱动。当这个字段被驱动时,它首先被驱动出小块。即先高后低例如,在内存传输时,该字段的第一个时钟包含Address[31:28],该字段的最后一个时钟包含Address[3:0]。

  CHANNEL 这是一个时钟宽的字段,由主机在DMA周期中驱动,以指示外设已授予哪个DMA通道。位[2:0]包含DMA通道号,位[3]包含基于ISA编码的TC(终端计数)行。

  DATA  这个字段是2个时钟宽,代表一个数据字节。当数据流向外设时主机驱动,DMA和总线主循环驱动,当数据流向主机时由外设驱动。当数据被驱动时,它首先被最不重要的小点驱动。例如,在第一个时钟上,Data[3:0]被驱动,而在第二个时钟上,Data[7:4]被驱动。

  SYNC  该字段用于添加等待状态。它可以有几个时钟长。在目标或DMA周期中,该字段由外围设备驱动。对于总线主周期,主机驱动该字段。

  LFRAME#  由主机用于指示周期的开始和终止。这个信号被外设用来决定何时监视总线一个周期。下面的部分描述了当主机将驱动这个信号激活时,以及当这个信号被视为激活时,外设将采取什么行动。这个信号被用作一般的通知,LAD[3:0]包含与周期的开始或停止相关的信息,外围设备必须监视总线,以确定周期是否为它们准备。当外设采样LFRAME#激活时,它们将立即停止驱动下一个时钟上的LAD[3:0]信号线,并监视总线以获取新的周期信息。

3、Start of Cycle

  1. 主机一个或多个时钟断言LFRAME#,并在LAD上驱动START值。在观察到LFRAME#有效时,所有外设停止驱动LAD[3:0]信号,即使在传输过程中。

在一个周期的开始,允许主机在多个连续时钟中保持LFRAME#有效,甚至更改START值。当LFRAME#处于有效时,外设必须始终使用最后的START值。例如,如果LFRAME#在两个连续的时钟中处于有效,外设应在第一个时钟期间忽略,而只使用第二个时钟的START值

  1. 当适当的START值使LFRAME#有效时,外监视LAD[3:0]。如果外设识别到这个START值,它应该尝试解码周期的其余部分。如果外设不能识别特定的START值,它可能会忽略循环的其余部分,直到LFRAME#再次有效
  2. 在驱动最终START值后,当主机准备开始循环时,主机无效LFRAME#。当无效LFRAME#断言时,外设必须使用驱动的START值。

图2显示了LFRAME#的典型计时。图3显示了LFRAME#在多个连续时钟中处于有效状态的计时。

 

  1. 固件内存周期概述系统BIOS固件的内存周期类型。对于这种循环类型,使用了芯片选择和寻址机制。

START  周期的开始。在LFRAME#低电平采样的最后一个时钟上是有效的。下表显示了循环使用的两个启动字段。

 

IDSEL(设备选择)  用于指示选择哪个固件组件。在此时钟期间,通过AD[3:0]传输的4位与绑定在固件组件的引脚上的值进行比较。如果有匹配,固件组件将继续解码周期,以确定在读取时请求哪些字节,或在写入时更新哪些字节。

MADDR(内存地址)  这是一个给出28位内存地址的7时钟周期。允许每个内存设备最多256MB,总共4GB的可寻址空间。地址小点传输。

MSIZE(内存大小)  

 

TAR  SYNC相似

DATA  这个字段是(2 * N)时钟宽,表示“N”数据字节的传输,由MSIZE字段决定,当数据流向外设时,主机在固件内存周期上驱动它(写周期),当数据流向主机时,由外设驱动它(读周期)。数据的每个字节都以小端驱动,最不重要的字节放在前面。这意味着对于每个字节,在第一个时钟上,数据[3:0]被驱动,在第二个时钟上,数据[7:4]被驱动。它还意味着每个后续数据字节的地址按顺序递增。

Protocal  固件内存周期使用一系列事件,以START字段开始(LFRAME# active with适当的AD[3:0]组合),以数据传输结束。

 

读:START=1101b,写 START=1110b. START字段后面是IDSEL字段。该字段的作用类似于芯片选择,它指示哪个设备应该响应当前传输。7个时钟是28位地址表示从哪里开始读取选定的设备。MSIZE值表示传输的字节数。

 

版权声明:本文为CSDN博主「sukura?」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_58881377/article/details/119962260

低引脚数总线接口的规范,称为LPC

目标:启用一个没有ISA或X-bus的系统,降低传统X-bus设备成本,满足X-bus的数据传输速率,执行与X-bus相同的周期类型:Memory, I/O, DMA,和Bus Master,支持固件内存周期类型,将X-bus上的内存空间从16MB增加到4GB,同步设计。

中断通过串行中断(SERIRQ)协议进行通信。

LPC接口不需要支持高速总线USB等低延迟总线。

术语:

主机:直接连接到CPU或连接到CPU的上游设备的接口部分。这是典型的系统芯片组。

外设:连接到X-bus的LPC下游设备,如Super I/O组件、flash和其他嵌入式控制器。

XXXXb’:以二进制表示的信号值

信号定义:LPC接口需要7个信号,6个信号可选,

LPC所需信号:

LAD[3:0]    多路复用命令、地址和数据

LFRAME#     帧:表示一个新周期的开始,中断周期的结束。

LRESET#     与主机上的Reset相同如果主机的接口上有则不要

LCLK        主机上与PCI时钟相同的33MHz时钟。

与现有的基于ISA设备相比,信号节省是巨大的。LPC接口通常只需要6个新信号:LAD[0:3]、LFRAME#和LDRQ#。

CLKRUN#通常只在移动系统中实现。LPCPD#仅用于在某些低功耗状态下部分供电的LPC设备

协议概述

1、协议支持的各种类型的周期

 

应遵守以下规则:

•主机和外设应执行所述的周期类型。

•外设不能尝试主机不支持的总线主周期。例如,如果主机不支持总线主I/O周期,外设就不能尝试这些周期。

•外设必须忽略它们不支持的周期

2、Memory, I/O, and DMA Cycle Overview----内存,I/O和DMA循环概述

在LPC总线上的数据传输是在一个4位总线上序列化的。这bus特点是:

•一个控制线,称为LFRAME#,由主机启动停止传输。外设驱动这个信号。

•LAD[3:0]总线,串行地传递信息周期类型、周期方向、芯片选择、地址、数据和等待状态。

•可选实现的边带信号传递中断和电源管理功能。

循环的一般流程如下:

  1. 当主机驱动LFRAME# 低有效,并将适当的信息放在LAD[3:0]信号线上时,就会启动一个周期        START

2. 主机驱动与周期相关的信息,如地址、DMA通道号或总线主授权。对于DMA和目标周期传输,主机还驱动周期类型(内存或I/O)、读/写方向和传输大小。CT/DIR    ADDR/CHANNEL    SIZE   

3. 主机可选地驱动数据,并转动总线来监视外围设备完成周期  DATA   TAR

4. 外围设备通过在LAD[3:0]上驱动适当的值来表示周期的完成  SYNC

5. 外围设备将总线转向主机,结束循环

对于总线主周期,这个协议有小的变化,因为总线必须驱动控制和地址信息到主机,主机负责结束周期,但一般来说,流程是相同的。

 LAD[3:0]  LAD[3:0]信号线在主机和外设之间通过LPC总线传输地址、控制和数据信息。通信的信息是:启动、停止(终止一个周期)、传输类型(内存、I/O、DMA)、传输方向(读/写)、地址、数据、等待状态、DMA通道和总线主授权。并非所有循环类型都以相同的方式使用LAD总线。

START  (1/2) 该字段指示事务的开始或停止。当断言LFRAME#即低有效时,所有外设将进入一个监视LAD[3:0]的状态。START在断言LFRAME#的最后一个时钟上有效。当断言LFRAME#时,这个字段可能有很多值。如果看到一个保留字段,外围设备不应该假设主机正在传输数据。因此,如果外设看到这种类型的编码,它必须忽略循环,直到下一次LFRAME#激活时才监视总线

Cycle Type / Direction (CYCTYPE + DIR) ----循环类型/方向(CYCTYPE + DIR)  (1)

这个字段由主机驱动,用于传递周期类型(内存,I/O, DMA)和周期方向(读/写)。当执行DMA或目标访问时,该字段由主机驱动,并由总线主访问上的外设驱动。字段的第0位保留,必须被外设忽略,并被主机驱动为0以进行基于主机的访问。对于总线主访问,它必须被主机忽略并被外围设备驱动为0。有效值:

 

 

保留:外设和主机都不允许驱动这种信号类型。如果这个值被外观察到,循环必须被忽略。如果这个信号是由总线主访问上的外设驱动的,主机将通过驱动LFRAME#激活来终止传输。

SIZE 一个时钟,它在DMA传输上由主机驱动,在总线主内存传输上由外设驱动,以确定要传输多少字节。位[3:2]是保留的,必须被驱动到' 00b ',并且必须被目标忽略。其余位编码:

 

Turn-Around (TAR)   两个时钟宽,当主机将控制转交给外设时(例如,读取数据)由主机驱动,当将控制转交给主机时由外设驱动。在这两个时钟宽字段的第一个时钟上,主机或外围设备驱动LAD[3:0]线“1111 b”。在第二个时钟上,宿主或外围将三态置于LAD[3:0]线。由于这些线条上的上拉很弱,所以它们将保持逻辑上的高电平。

   ADDR  这个字段是4个时钟宽的I/O周期,或8个时钟宽的内存周期。它在目标访问时由主机驱动,在总线主访问时由外围设备驱动。这个字段不在DMA周期上驱动。当这个字段被驱动时,它首先被驱动出小块。即先高后低例如,在内存传输时,该字段的第一个时钟包含Address[31:28],该字段的最后一个时钟包含Address[3:0]。

  CHANNEL 这是一个时钟宽的字段,由主机在DMA周期中驱动,以指示外设已授予哪个DMA通道。位[2:0]包含DMA通道号,位[3]包含基于ISA编码的TC(终端计数)行。

  DATA  这个字段是2个时钟宽,代表一个数据字节。当数据流向外设时主机驱动,DMA和总线主循环驱动,当数据流向主机时由外设驱动。当数据被驱动时,它首先被最不重要的小点驱动。例如,在第一个时钟上,Data[3:0]被驱动,而在第二个时钟上,Data[7:4]被驱动。

  SYNC  该字段用于添加等待状态。它可以有几个时钟长。在目标或DMA周期中,该字段由外围设备驱动。对于总线主周期,主机驱动该字段。

  LFRAME#  由主机用于指示周期的开始和终止。这个信号被外设用来决定何时监视总线一个周期。下面的部分描述了当主机将驱动这个信号激活时,以及当这个信号被视为激活时,外设将采取什么行动。这个信号被用作一般的通知,LAD[3:0]包含与周期的开始或停止相关的信息,外围设备必须监视总线,以确定周期是否为它们准备。当外设采样LFRAME#激活时,它们将立即停止驱动下一个时钟上的LAD[3:0]信号线,并监视总线以获取新的周期信息。

3、Start of Cycle

  1. 主机一个或多个时钟断言LFRAME#,并在LAD上驱动START值。在观察到LFRAME#有效时,所有外设停止驱动LAD[3:0]信号,即使在传输过程中。

在一个周期的开始,允许主机在多个连续时钟中保持LFRAME#有效,甚至更改START值。当LFRAME#处于有效时,外设必须始终使用最后的START值。例如,如果LFRAME#在两个连续的时钟中处于有效,外设应在第一个时钟期间忽略,而只使用第二个时钟的START值

  1. 当适当的START值使LFRAME#有效时,外监视LAD[3:0]。如果外设识别到这个START值,它应该尝试解码周期的其余部分。如果外设不能识别特定的START值,它可能会忽略循环的其余部分,直到LFRAME#再次有效
  2. 在驱动最终START值后,当主机准备开始循环时,主机无效LFRAME#。当无效LFRAME#断言时,外设必须使用驱动的START值。

图2显示了LFRAME#的典型计时。图3显示了LFRAME#在多个连续时钟中处于有效状态的计时。

 

  1. 固件内存周期概述系统BIOS固件的内存周期类型。对于这种循环类型,使用了芯片选择和寻址机制。

START  周期的开始。在LFRAME#低电平采样的最后一个时钟上是有效的。下表显示了循环使用的两个启动字段。

 

IDSEL(设备选择)  用于指示选择哪个固件组件。在此时钟期间,通过AD[3:0]传输的4位与绑定在固件组件的引脚上的值进行比较。如果有匹配,固件组件将继续解码周期,以确定在读取时请求哪些字节,或在写入时更新哪些字节。

MADDR(内存地址)  这是一个给出28位内存地址的7时钟周期。允许每个内存设备最多256MB,总共4GB的可寻址空间。地址小点传输。

MSIZE(内存大小)  

 

TAR  SYNC相似

DATA  这个字段是(2 * N)时钟宽,表示“N”数据字节的传输,由MSIZE字段决定,当数据流向外设时,主机在固件内存周期上驱动它(写周期),当数据流向主机时,由外设驱动它(读周期)。数据的每个字节都以小端驱动,最不重要的字节放在前面。这意味着对于每个字节,在第一个时钟上,数据[3:0]被驱动,在第二个时钟上,数据[7:4]被驱动。它还意味着每个后续数据字节的地址按顺序递增。

Protocal  固件内存周期使用一系列事件,以START字段开始(LFRAME# active with适当的AD[3:0]组合),以数据传输结束。

 

读:START=1101b,写 START=1110b. START字段后面是IDSEL字段。该字段的作用类似于芯片选择,它指示哪个设备应该响应当前传输。7个时钟是28位地址表示从哪里开始读取选定的设备。MSIZE值表示传输的字节数。

 

版权声明:本文为CSDN博主「sukura?」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_58881377/article/details/119962260

生成海报
点赞 0

sukura?

我还没有学会写个人说明!

暂无评论

相关推荐

STM32对接涂鸦wifi模块项目记录

应项目需求,客户需要对接涂鸦平台,从了解平台到样品实际落地,还是挺方便的,这得得益于涂鸦的SDK和相关资料, 我这篇文章意在于对本次项目做个笔记,方便以后再次用