PCI的接口定义

PCI的接口定义

PCI协议规定,对于目标设备至少需要47Pin来实现功能,而主设备则需要49Pin来实现。这些功能包括:处理数据、寻址、接口管理、仲裁机制和系统功能。下图列出总线上的所有Pin脚,以直观的视角了解PCI总线。

 

其中上面包括必须使用的Pin和可选的Pin。这里着重讨论前者。

A、系统Pin脚

CLK :系统时钟信号,对于所有的PCI设备都是输入信号。一般都是从Clock Gen那边拉出来的。其频率可达33MHZ(当然可以达到66MHz),最低频率一般为0HZ(DC),这一频率也称为PCI的工频率。PCI的所有信号,除了RST#、INTA#、INTB#、INTC#、INTD#之外,其余信号都在CLK的上升沿有效(或采样)。

RST#:复位信号,输入pin。用来使PCI专用的特性寄存器和时序相关的信号恢复规定的初始状态。每当复位时,PCI的全部输出信号一般都应驱动到tri-stated。SERR#信号为高阻状态,SBD#和SDONE可驱动到低电平(如果未提供三态门输出)。REQ#和GNT#必须同时驱动到三态,不能在复位期间为High 或为Low。为防止AD、C/BE#及PAR在复位期间浮动,需要将它们驱动到Low,不能是High。

 

B、地址和数据信号

AD[31::00]:地址、数据多数复用的输入/输出信号。在寻址周期AD[31:0]包含32bit的物理地址;对于IO,则是1个byte的地址,对于配置空间和memory空间访问,则是Dword的地址。在数据周期,AD则表示32bit的数据。

C/BE[3::0]#:总线命令和字节使能多路复用信号线。在地址期中,这四条线上传输的是总线命令;在数据期内,它们传输的是字节使能信号,用来表示整个数据期中,AD[31::00]上哪些字节为有效数据。比如C/BE[0]#表示使能AD上的byte0,C/BE[3]#则使能AD上的byte3.

PAR:奇偶校验信号。该信号用于对AD[31::00]和C/BE[3::0]上的信号进行奇偶校验,以保证数据的准确性。

 

C、接口控制信号

FRAME#:: 帧周期信号。由当前主设备驱动,表示一次访问的开始和持续时间。

IRDY# : 主设备(initiator)准备好信号。在写周期内该信号有效表示数据已经在AD[31::00]中;在读周期内该信号声明,表示主设备已经做好接收数据的准备。

TRDY#: 从设备(target)准备好信号。在写周期内表示从设备已经做好接收数据的准备;在读周期内有效,表示数据已经在AD[31::00]线上。

IRDY#和TRDY#信号一般是一起使用的。IRDY#表示initiator ready; TRDY#表示target ready。

数据需要传输,必须IRDY#和TRDY#都要宣告好。如果两个信号都没有动作,那么总线处于wait cycles。

IRDY#信号,在Write周期,I#表明在AD总线上存在数据,已经准备开始传输了。在Read周期,I#表明master已经准备好接受AD上的数据。针对TRDY#同样道理。Write周期,T#表示target开始接受数据了。 Read周期,T#表明数据已经在AD线上了,等待接受。

STOP# : 停止数据传送信号。Targe申请需要停止数据传输。

LOCK#: 锁定信号。一般在专有设备才会使用该信号。

IDSEL:初始化设备选择信号。在配置周期读写传输期间,用作片选信号。设备的输入pin。

DEVSEL#: 设备选择信号。该信号有效时,表示驱动它的设备已按照当前的地址译码成为了当前访问的从设备。

 

PCI总线上基本的Read 操作。

 

D、PCI仲裁信号(Bus master only)

REQ#:总线占用请求信号。它是一个点到点的信号线,任何主设备都有其REQ#信号。

GNT#:总线占用允许信号。这也是一个点到点的信号线,任何主设备都应有自己的GNT#信号。

 

E、错误汇报信号

PERR#: 数据奇偶校验错误报告。但该信号不报告特殊周期中的数据奇偶错。一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后,才能报告一个PERR#。对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期内将PERR#激活。该信号的持续时间与数据期的多少有关,如果是一个数据期于,则最小持续时间为一个时钟周期;若是一连串的数据期并且每个数据期都有错,那么PERR#的持续时间将多于一个时钟周期。由于该信号是持续的三态信号,因此,该信号在释放前必须先驱动为高电平。另外,对于数据期奇偶错的报告不能丢失也不能推迟。

SERR#:系统错误报告信号。该信号的作用是报告地址奇偶错、特殊命令序列的数据奇偶错,以及其它可能引起灾难性后果的系统错误。

 

F、中断信号

INTA#,INTB#,INTC#,INTD#均为PCI总线上的中断Pin脚,属于可选pin。定义为水平触发,低电平有效。这些pin的声明是和工作频率CLK不同步的。如果设备需要使用中断,该设备会去拉动INTx#信号,以请求产生中断。直到设备驱动响应了中断,才会释放INTx# pin。

       对于PCI单功能设备来说,一般只会使用INTA#pin脚来申请中断;对于多功能设备才会使用其他的几个Pin:INTB#、INTC#、INTD#。一个设备不能同时使用两个INTx,但是两个设备可以同时使用同一个INTx。

 

针对PCI设备使用中断的问题,需要板子上的HW和SW都要设定好对应Route方式,来实现PCI设备的IRQ共享。如果随便设置的话,有可能导致多个设备同时使用同一个IRQ,而另外的IRQ却是空闲的。这必然导致系统性能变低。

那么这就涉及到PCI的四个中断pin INTx#如何连接到主板上去。在板子的设计开发过程中,BIOS会针对HW上IDSEL pin 和INTx# pin连接的方式来做好PCI irq routing table。这个可以后续再讨论。

HW上 针对AD pin和INTx的搭配有一些规则。

IRQ = (D + I )mod 4

其中,IRQ表示设备使用主板上的irq序号(1/2/3/4);南桥有PIRQa-PIRQd和PIRQe-PIRQh

D表示PCI槽上IDSEL连接到的主板的AD NO;一般情况为AD[31-11]

I表示PCI槽上INTx#的序号(1/2/3/4).

具体的连线搭配如下图。

 

 

另外,PCI协议也规定了一些可选pin,比如Cache support pin和定义64bit的pin,由于应用面不广,所以也不予讨论。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值