PCI总线接口
0 j1 Z- r' @5 {- ?! [ 执行PCI总线规范的电路称为PCI总线接口,这些接口所连接的设备就是前面所讨论的PCI设备。
2 o; M8 D+ W$ Z8 X 1.PCI总线接口逻辑
# C* k: o3 P- V& t) R6 j
和一般的局部总线一样,PCI总线接口应完成一项基本功能,即完成地址、数据及控制三总线的连接和切换任务。PCI局部总线的特点要求其接口还应具备以下特定功能:
; |: u3 y6 W/ n% \ ·支持FRAME#、IRDY#、TRDY#等接口控制信号的控制传输机制;
' u. ?" N# K6 ~
·支持PCI总线的猝发传输;
! d9 R* |/ m, U: t$ U ·支持PcI总线的地址、数据信号复用以及总线命令令与字节允许信号的复用;
) Z1 V U3 u! n7 B ·支持针对地址、数据信号的奇偶校验和错误反映;
F8 z: W+ \2 Y( v E, S1 @6 X
·支持PCI总线的仲裁机制;
$ O! e [8 N: P h Q9 T R ·支持PCI总线的配置空间操作,实现设备的即插即用。
6 c- e. E8 ^ r/ v* c PCI总线接口逻辑如图9.13所示。
+ V1 `3 ^ o& S
2.PCI总线接口逻辑实现
7 w7 z1 F7 `' V; a' z PCI总线接口逻辑是比较复杂的(如图9.13所示)。此外,PCI总线是一种高速总线,地址在地址相位以及数据在数据相位稳定出现的时间仅7ns左右。基于上面的原因,用一般的门电路器件(如74LS系列)来实现PcI总线接口逻辑几乎是不可能的。目前实现PCI总线接口逻辑有两种有效方法,一是使用可编程逻辑器件,二是使用专用总线接口芯片。
% W W3 R1 m7 A0 M3 u& d5 v
) W! ?2 r" U& X
! ^" O1 e3 U2 L. j- d4 T$ n8 x! g
( y6 x1 ]9 M& _ y6 _! N/ o
7 I% y( b7 V! ]* y6 K8 \
) m8 Z* x+ m8 | 1)使用可编程逻辑器件
9 R4 x$ l/ e4 A3 }/ j 可编程逻辑器件是指可将用户逻辑写入形成所需电路的芯片。目前,用于PCI总线接口设计的可编程逻辑器件主要有现场可编程逻辑门矩阵FPGA(Field Programmable Gate Array)、复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)以及可擦可编程逻辑器件EPLD(Erasable Programmable Logle Device)。它们都是近年来得到广泛应用并得以迅速
# o% }7 e. J: N8 b发展的大规模可编程集成电路。尽管它们采用的技术(如基于乘积项、基于查找表等)不同、采用的制造工艺(如EEPROM或Flash工艺、SRAM工艺等)不同,但可认为都至少具有三个组成部分:可编程逻辑功能块列(阵列)、可编程输入/输出块和可编程内部连线。由此读者不难理解它们的可编程特性。当然,它们有各自的特点。
4 C2 q6 r: |' W& m$ v* I
当PCI总线接口逻辑设计好之后,可通过传统的原理图输入法将其输入或通过硬件描述语言,如VHDL(Vety high speed integrated circuit Hardware Description Language)对其进行描述;再由相应的编译软件生成一个编程文件;最后,用这个文件对可编程逻辑芯片进行写入。
' _ t( u- i) i" o# c+ E
2)使用专用总线接口芯片
$ P8 f4 F% w0 T- K2 i* ?; H# v W5 x$ W 用可编程逻辑器件设计PCI总线接口,设计灵活并可节省板卡面积,但要求设计者对PCI总线协议有比较深刻的理解。为了方便PCI总线接口的设计,许多元器件制造商纷纷推出了PCI协议控制芯片。如AMCC(Applied Micro Circuits Corporation)公司生产的S593X(S5930~S5933)、S5920,PLX技术公司开发的PCI9050、PCI9052、PCI9080等。使用这类芯片,设计者不必再仔细研究PCI总线各个信号的时序及相互之间的配合,因为芯片中的PCI总线接口可以自动实现总线协议。
% Q" E+ @8 q. H4 v3 d- B5 Z
(1)S593X简介
7 b) y& ?9 G: ?- \
S593x是一种功能强,使用灵活的PCI协议控制芯片。该芯片符合PCI总线规范2.1版,既可作为PCI总线主设备接口,又可作为PCI总线从设备接口,最大数据传输速率为132MB/s(32位数据总线)。
, ^7 F& k) m8 L5 ^$ ^ 如图9.14所示为S593X内部的主要功能块,它具有3个物理总线接口:PCI总线接口、外加(Add on)总线接口和NV(Non Volatile)存储器接口。数据传送可以在PCI总线与外加总线之间进行,也可以在PCI总线与NV存储器之间进行。PCI总线与外加总线的数据传送可以通过信箱寄存器、FIFO或PASS-THRu通道进行。
1 N% Z2 ~* W4 X' d# i/ l! c* n
7 j/ d: J. z- a8 Q1 `
6 X- _3 q) a3 I V3 Z/ k2 A0 w" C" E) n( q+ x
3 ^! @: Z! J, n# p+ h
. _7 H, U4 [/ y" J w ①信箱:S593x的信箱由8个32位信箱寄存器组成,提供了一个双向数据通道。从PCI接口角度和外加总线接口角度看都有8个信箱寄存器,其中4个为输入寄存器,4个为输出寄存器。实际上,PCI的输入寄存器和外加接口的输出寄存器是同一个寄存器,PCI的输出寄存器和外加接口的输入寄存器是同一个寄存器。信箱寄存器可用在PCI总线与外加总线之间传送命令和状态信息。使用信箱可用查询方式,也可采用中断方式。注意,当S593X充当从设备接口时才允许使用信箱寄存器方式;信箱寄存器不支持猝发传输。
% k3 ]8 T8 N3 _5 b0 D4 ], W( j' U' R
②FIFO:在S593X内部有两个独立的FIF0数据通道,一个用于PCI到外加总线的数据传送,另一个用