分享

(转)PCI总线特性及信号说明

 WUCANADA 2013-06-30

PCI总线特性及信号说明

 

本文介绍近期工程用到了CPCI,便上网搜集了一下PCI的资料,CPCI是PCI的子集,所用桥接芯片分主从两种,在此不赘述了。至于PCI,本人整理介绍如下:

 

随着Windows图形用户界面的迅速发展,以及多媒体技术的广泛应用,要求系统具有高速图形处理和I/O吞吐能力,这使原有的ISA、EISA总 线远远不能适应而成为整个系统的主要瓶颈。为此,1991年下半年,Intel公司首先提出PCI概念,并联合IBM、Compaq、AST、 HP Apple、NCR、DEC 等100多家公司共谋计算机总线发展大业,成立了PCI集团。

PCI:Peripheral Component Interconnect外围设备互联总线,是一种局部总线,已成为局部总线的新标准,广泛用于当前高档微机、工作站,以及便携式微机。主要用于连接显示卡、网卡、声卡。PCI总线是32位同步复用总线。其地址和数据线引脚是AD31~AD0PCI的工作频率为33MHz

一 PCI总线特性

1.PCI总线特点
  (1)传输速率高 最大数据传输率为132MB/s,当数据宽度升级到64位,数据传输率可达264MB/s。这是其他总线难以比拟的。它大大缓解了数据I/O瓶颈,使高性能CPU的功能得以充分发挥,适应高速设备数据传输的需要。
  (2)多总线共存 采用PCI总线可在一个系统中让多种总线共存,容纳不同速度的设备一起工作。通过HOST-PCI桥接组件芯片,使CPU总线和PCI总线桥接;通过 PCI-ISA/EISA桥接组件芯片,将PCI总线与ISA/EISA总线桥接,构成一个分层次的多总线系统。高速设备从ISA/EISA总线卸下来, 移到PCI总线上,低速设备仍可挂在ISA/EISA总线上,继承原有资源,扩大了系统的兼容性。

  (3)独立于CPU PCI总线不依附于某一具体处理器,即PCI总线支持多种处理器及将来发展的新处理器,在更改处理器品种时,更换相应的桥接组件即可。
  (4)自动识别与配置外设 用户使用方便。
  (5)并行操作能力
2.PCI总线的主要性能
  (1)总线时钟频率33.3MHz/66.6MHz。
  (2)总线宽度32位/64位。
  (3)最大数据传输率132MB/s(264MB/s)。
  (4)支持64位寻址。
  (5)适应5V和3.3V电源环境。

二 PCI总线信号

PCI总线标准所定义的信号线通常分成必需的和可选的两大类。其信号线总数为120条(包括电源、地、保留引脚等)。其中,必需信号线:主控设备49条,目标设备47条。可选信号线:51条(主要用于64位扩展、中断请求、高速缓存支持等)。
  主设备是指取得了总线控制权的设备,而被主设备选中以进行数据交换的设备称为从设备或目标设备。作为主设备需要49条信号线,若作为目标设备,则需要 47条信号线,可选的信号线有51条。利用这些信号线便可以传输数据、地址,实现接口控制、仲裁及系统的功能。PCI局部总线信号如下图所示。下面按功能分组进行说明。


1.系统信号
  CLK IN:系统时钟信号,为所有PCI传输提供时序,对于所有的PCI设备都是输入信号。其频率最高可达33MHz/66MHz,这一频率也称为PCI的工作频率。
  RST# IN:复位信号。用来迫使所有PCI专用的寄存器、定序器和信号转为初始状态。
2.地址和数据信号
  AD[31::00]T/S地址、数据复用的信号。 PCI总线上地址和数据的传输,必需在FRAME#有效期间进行。当FRAME#有效时的第1个时钟,AD[31::00]上的信号为地址信号,称地址 期;当IRDY#和TRDY#同时有效时,AD[31::00]上的信号为数据信号,称数据期。一个PCI总线传输周期包含一个地址期和接着的一个或多个 数据期。
  C/BE[3::0]# T/S:总线命令和字节允许复用信号。在地址期,这4条线上传输的时总线命令;在数据期,它们传输的时字节允许信号,用来指定在数据期,AD[31::00]线上4个数据字节中哪些字节为有效数据,以进行传输。
  PAR T/S:奇偶校验信号。它通过AD[31::00]和C/BE[3::0]进行奇偶校验。主设备为地址周期和写数据周期驱动PAR,从设备为读数据周期驱动PAR。
3.接口控制信号
  FRAME# S/T/S:帧周期信号,由主设备驱动。表示一次总线传输的开始和持续时间。当FRAME#有效时,预示总线传输的开始;在其有效期间,先传地址,后传数据;当FRAME#撤消时,预示总线传输结束,并在IRDY#有效时进行最后一个数据期的数据传送。
  IRDY# S/T/S:主设备准备好信号。IRDY#要与TRDY#联合使用,当二者同时有效时,数据方能传输,否则,即为未准备好二进入等待周期。在写周期,该信号有效时,表示数据已由主设备提交到AD[31::00]线上;在读周期,该信号有效时,表示主设备已做好接收数据的准备。
  TRDY# S/T/S:从设备(被选中的设备)准备好信号。同样TRDY#要与IRDY#联合使用,只有二者同时有效,数据才能传输。
  STOP# S/T/S:从设备要求主设备停止当前的数据传送的信号。显然,该信号应由从设备发出。
  LOCK# S/T/S:锁定信号。当对一个设备进行可能需要多个总线传输周期才能完成的操作时,使用锁定信号LOCK#,进行独占性访问。例如,某一设备带有自己的存储器,那么它必需能进行锁定,以便实现对该存储器的完全独占性访问。也就是说,对此设备的操作是排它性的。
  IDSEL IN:初始化设备选择信号。在参数配置读/写传输期间,用作片选信号。
  DEVSEL# S/T/S:设备选择信号。该信号由从设备在识别处地址时发出,当它有效时,说明总线上有某处的某一设备已被选中,并作为当前访问的从设备。
4.仲裁信号(只用于总线主控器)
  REQ# T/S:总线占用请求信号。该信号有效表明驱动它的设备要求使用总线。它是一个点到点的信号线,任何主设备都有它自己的REQ#信号。
  GNT# T/S:总线占用允许信号。该信号有效,表示申请占用总线的设备的请求已获得比准。
5.错误报告信号
  PERR# S/T/S:数据奇偶校验错误报告信号。一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后,才能报告一个PERR#。
  SERR# O/D:系统错误报告信号。用做报告地址奇偶错、特殊命令序列中的数据奇偶错,以及其他可能引起灾难性后果的系统错误。它可由任何设备发出。
6.中断信号 在PCI总线中,中断是可选项,不一定必须具有。
  INTA# O/D:用于请求中断。
  INTB# O/D、INTC# O/D、INTD# O/D用于请求中断,仅对多功能设备有意义。所谓的多功能设备是指:将几个相互独立的功能集中在一个设备中。各功能与中断线之间的连接是任意的,没有任何附加限制。
7.其他可选信号
 (1)高速缓存支持信号:SBO# IN/OUT、SDONE IN/OUT
 (2)64位总线扩展信号:REQ64# S/T/S、ACK65# S/T/S
、AD[63::32]T/S、C/BE[7::4]#T/S、PAR64 T/S。
 (3)测试访问端口/边界扫描信号:TCK IN、TDI IN、TDO OUT、TMS IN、TRST# IN。


9052的机理比较简单,它内部提供了两种配置寄存器。一种叫做pci configuration registers ,这就是我们常说的pci配置空间另外一个叫 local configuration registers,它提供了配置本地端的一些信息。这里提到了本地端,说一说。其实9052就相当于一个桥,连接pci卡的本地端的芯片到pci总线 上,将pci指令例如读写某个寄存器、内存、io翻译到本地端。9052本地端提供了地址线26根(27:2)和数据线32根,还有LBE4根,可以翻译 成不同的地址线,太麻烦了我就不详细说了,反正我用的LOCAL端是8位数据,在这种模式下LBE1和LBE0提供地址线[1:0]。PCI配置寄存器提 供了6个基地址寄存器,这些基地址都是在系统中的物理地址其中BASE1 和BASE2 都是用来访问LOCAL 配置寄存器的基地址,BASE1是映射到内存的基地址,BASE2是映射到IO的基地址。所以可以通过内存和IO来访问LOCAL 配置寄存器。 

BASE2~5四个空间提供了访问本地端所接的4个芯片(当然可以少于4个),它们将本地端的芯片通过本地端地址(在LOCAL配置寄存器中设)翻译成 PCI的地址,也就是将本地的芯片映射到系统的内存或io口。是不是很简单呀?这样使用你的程序操作这一段内存(或io)实际上就是对本地的芯片操作了。 我使用的是内存映射,本地端的芯片地址例如是0x0cc000,将此地址放入local配置寄存器的相应位置(由于有四个空间,可以选择任意一个空间来对 应此芯片),我用的是space0,还要配置此空间的大小,这样在pci总线端系统会根据这个大小分配相应的内存空间(或io)供9052使用来映射 local 上接的芯片。而系统分配的内存空间的信息会写入pci配置寄存器中,只要读出来就可以了。

9052工作时还需要一个配置芯片eeprom,plx公司推荐了93cs46,这个eeprom比较好买,在中发一层就有。eeprom会在pci卡上 电的时候配置9052,主要配置了pci卡的vendorID和deviceID,这是系统用来标识pci卡的,很重要,你的程序就靠这个标识来找到 pci卡。还配置了local端的4个space的local基地址和大小,以及每个space的其它一些参数(这里不说了)。eeprom的内容很重要 的,如果没写对很容易就出问题我开始老调不出来就是因为eeprom中的配置写错了,郁闷了好长一段时间哟!其实硬件本身很容易连,只要对应的脚相连就可 以了,注意本地芯片如果不申请总线控制的话,9052的lhold信号一定要接gnd,还有如果本地芯片没有提供irdy#信号,9052的对应脚也必须 接地否则你一读此芯片,系统就会死机,永远等待那个irdy#信号有效才读取数据

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多