IDSEL(Initialization Device Select)信号是PCI总线上的一种专用信号,用于选择初始化阶段特定PCI设备的唯一标识。以下是关于IDSEL信号的详细解释:
PCI总线在进行配置读写总线事务时,使用该信号选择PCI目标设备。配置读写总线事务与存储器读写总线事务在实现上略有不同。在PCI总线中,存储器读写总线事务使用地址译码方式访问外部设备。而配置读写总线事务使用“ID译码方式”访问PCI设备,即通过PCI设备的总线号、设备号和寄存器号访问PCI设备的配置空间。
IDSEL信号与PCI设备的设备号相关,相当于PCI设备配置空间的片选信号。
功能和作用
-
唯一标识设备:
- 每个PCI设备都有一个唯一的设备号,这个设备号是通过设备上的IDSEL信号与PCI总线的地址线(AD[31:0])相连来确定的。
- PCI设备在连接到PCI总线时,会配置其IDSEL信号与总线的地址线进行连接,这样就确保了每个设备在总线上有唯一的标识。
-
初始化阶段使用:
- 在PCI设备的初始化阶段(例如电源上电后),PCI设备会配置其IDSEL信号以选择其在总线上的设备号。
- IDSEL信号的配置通常是由设备的硬件设计或者固件控制的,设备制造商会根据PCI规范和设备自身的特性来决定IDSEL信号的配置方式。
-
电气特性:
- IDSEL信号是一个电气特性严格定义的信号,其电平和逻辑电平符合PCI总线的规范要求。
- 通常情况下,IDSEL信号是一个活动低电平(Active Low)的信号,即当IDSEL信号为低电平时表示设备被选中。
-
连接方式:
- PCI设备的IDSEL信号通过设备上的连接器引出,连接到PCI总线的地址线上的一个特定引脚。
- 每个PCI设备都有其独特的IDSEL信号引脚,这种设计确保了每个设备在总线上有唯一的设备号,从而避免了地址冲突和设备识别问题。
重要性和应用场景
- 唯一标识性:IDSEL信号的存在确保了每个PCI设备在总线上的唯一标识,这对于系统软件和硬件管理是至关重要的。
- 硬件设计:IDSEL信号的正确配置是PCI设备硬件设计中的关键部分,它直接影响了设备的地址分配和系统中的唯一性标识。
- 系统配置:系统软件在初始化阶段需要了解和配置每个PCI设备的设备号,通过IDSEL信号可以准确地定位和管理设备。
总之,IDSEL信号是PCI设备在连接到PCI总线时用来选择设备号的重要机制,确保了系统中每个设备的唯一性标识,从而支持PCI设备的正确初始化、管理和操作。
Type 01h和Type 00h配置请求
本节首先介绍Type 01h配置请求,并从PCI总线使用的信号线的角度上,讲述HOST主桥如何生成Type 01配置请求。在PCI总线中,只有PCI桥能够接收Type 01h配置请求。Type 01h配置请求不能直接发向最终的PCI Agent设备,而只能由PCI桥将其转换为Type 01h继续发向其他PCI桥,或者转换为Type 00h配置请求发向PCI Agent设备。PCI桥还可以将Type 01h配置请求转换为Special Cycle总线事务(HOST主桥也可以实现该功能),本节对这种情况不做介绍。
在地址周期中,HOST主桥使用配置读写总线事务,将CONFIG_ADDRESS寄存器的内容拷贝到PCI总线的AD[31:0]信号线中。CONFIG_ADDRESS寄存器与Type 01h配置请求的对应关系如图2 11所示。
从图2 11中可以发现,CONFIG_ADDRESS寄存器的内容基本上是原封不动的拷贝到PCI总线的AD[31:0]信号线上的[3]。其中CONFIG_ADDRESS的Enable位不被拷贝,而AD总线的第0位为必须为1,表示当前配置请求是Type 01h。
当PCI总线接收到Type 01配置请求时,将寻找合适的PCI桥[4]接收这个配置信息。如果这个配置请求是直接发向PCI桥下的PCI设备时,PCI桥将接收个Type 01配置请求,并将其转换为Type 00h配置请求;否则PCI桥将当前Type 01h配置请求原封不动的传递给下一级PCI总线。
如果HOST主桥或者PCI桥发起的是Type 00h配置请求,CONFIG_ADDRESS寄存器与AD[31:0]的转换如图2 12所示。
此时处理器对CONFIG_DATA寄存器进行读写时,处理器将CONFIG_ADDRESS寄存器中的Function Number和Register Number字段拷贝到PCI的AD总线的第102位;将AD总线的第10位赋值为0b00。PCI总线在配置请求总线事务的地址周期根据AD[1:0]判断当前配置请求是Type 00h还是Type 01h,如果AD[1:0]等于0b00表示是Type 00h配置请求,如果AD[1:0]等于0b01表示是Type 01h配置请求。
而AD[31:11]与CONFIG_ADDRESS的Device Number字段有关,在Type 00h配置请求的地址周期中,AD[31:11]位有且只有一位为1,其中AD[31:11]的每一位选通一个PCI设备的配置空间。PCI设备配置空间的片选信号是IDSEL,因此AD[31:11]将与PCI设备的IDSEL信号对应相连。
当以下两种请求之一满足时,HOST主桥或者PCI桥将生成Type 00h配置头,并将其发送到指定的PCI总线上。
(1) CONFIG_ADDRESS寄存器的Bus Number字段为0时,处理器访问CONFIG_DATA寄存器时,HOST主桥将直接向PCI总线0发出Type 00h配置请求。因为与HOST主桥直接相连的PCI总线号为0,此时表示HOST主桥需要访问与其直接相连的PCI设备。
(2) 当PCI桥收到Type 01h配置头时,将检查Type 01配置头的Bus Number字段,如果这个Bus Number与PCI桥的Secondary Bus Number相同,则将这个Type 01配置头转换为Type 00h配置头,并发送到该PCI桥的Secondary总线上。