所有除主桥之外的设备功能,必须实现配置地址空间,目前有三种类型的首部格式:首部类型0,用于全部除PCI桥之外的设备;首部类型1,用于PCI-PCI桥;首部类型2,用于Card Bus桥。
每个PCI设备的配置空间大小为256字节,用来存放PCI配置文件,其中文件头标识区占64字节,下图为Type0类型首部。
1).厂家ID(Vender ID):用来区别每个PCI设备生产商,由PCI-SIG组织分配,0xFFFF表示无效。
2).设备ID:用来标识设备类型。
3).命令寄存器:为发出PCI和响应PCI总线命令提供粗略控制。
4).状态寄存器:用于记录PCI总线的事件状态信息。
5).版本标识:标识PCI设备的版本。
6).分类代码:用来表示PCI设备的功能分类和特定的编程接口,为只读存储器。
7).Cache行大小:指定系统中高速缓存cache一行的长度,以Dword为单位,可读写。
8).持有定时器:指定PCI总线主设备的延时计时值,以PCI总线的时钟为单位。
9).配置类型:表示头标区类型,以及是否为多功能设备。
10).自测能力BIST:Built-In self test,支持自测的PCI设备为1,不支持的为0。
11).基地址0~5:实现PCI设备所有使用地址空间的再定位。
12).扩展ROM基地址:表示ROM再内存中的起始地址,执行其中代码完成PCI初始化。
13).中断线:报告PCI设备与系统中断连接情况。
14).中断引脚:表示PCI设备使用了哪些中断引脚。
15).最短获准时间:指定PCI设备对延时计数器的设定值。
16).最大等待时间:指定PCI设备对延时计数器的设定值。
9.PCI总线小案例
在测试PCI总线的TRDY信号时,发现该信号从低电平拉升到高电平时太缓慢,如下图所示。
问题分析:
TRDY是s/t/s信号,在前面已经讲过了,s/t/s信号有如下特点:
1).在某一个时刻只能由一个设备驱动;
2).在释放之前必须将该信号驱动到高电平,并且至少保持一个时钟周期;
3).其它设备必须等到该信号释放至少一个时钟周期后才能重新驱动它。
4).该信号必须进行外部上拉处理。
经过分析该PCI总线的逻辑代码得知,该逻辑在处理s/t/s 信号时没有完全按照规范要去来做,在将TRDY信号置为低电平有效后直接释放到高阻态,没有将它驱动到高电平后再释放,因此,TRDY在低电平位置被释放到高阻态后,完全依靠外部的上拉电阻将其拉到高电平位置,由于外部上拉比较弱,导致我们上面见到的TRDY电平上升缓慢现象。修改逻辑代码后,问题消失。