PCI9656型64位PCI总线接口电路及其应用
扫描二维码
随时随地手机看文章
引言
PCI总线是目前应用最广泛、最流行的一种高速同步总线,具有32bit总线宽度,总线时钟频率为0~33MHz,最大传输速率可达132Mbyte/s,且可扩展为64位、66MHz主频。该总线的最大数据传输速率达528Mb/s,远远大于ISA总线5Mbyte/s的速度。PCI总线与CPU无关,与时钟频率也无关,因此可以应用于各种平台,支持多处理器和并发操作。
PCI总线协议比较复杂,因此它的接口电路实现起来也比较困难。它不但有严格的同步时序要求,而且这了实现即插用和自动配置,PCI接口还要有许多的配置寄存器。对于一般的设计者来说,为了缩短开发周期,没有必要设计所有的接口逻辑,只要利用通用PCI接口电路就能很好的进行开发设计,从而大大减轻了工作难度。
目前,业界基于32位PCI总线使用较多的接口芯片是AMCC公司的S59xx系列和PLX公司的PLX系列。而现有普通计算机公司均已采用32位架构,系统的内存寻址能力已达到4GB,因此,32位PCI总线已经不能满足日益庞大的数据处理需要。鉴于英特尔公司推出的Itanium处理器直接从32位跃升到64位,因此,开发基于64位PCI总线的接口设备显得尤为重要。下面介绍一款PLX公司的基于64位PCI总线的PCI9656型接口电路。
1 PCI9656概述
PCI9656是PLX公司为扩展适配板卡推出的能提供混合高性能PCI总线目标模式的接口电路,该接口电路可提供用于适配卡的小型高性能64位PCI总线目标接口。PCI9656的内部结构框图如图1所示。它的主要特点如下:
●符合PCI V 2.2协议,支持64位、66MHz时钟PCI总线,特别适用于PCI总线外设产品开发。
●采用PLX数据流水线架构(Data Pipe Architecture)技术,配有DMA引擎、可编程直接主控或者直接从属数据传输模式以及PCI信息传输功能。
●具有PCI优先判决器,可以支持7个外部主控器。
●可以由2个局部总线中断信号LINTi和LINTo生成一个PCI中断信号INTA。
●局部时钟与PCI时钟异步工作,允许局部总线独立于PCI时钟工作。
●支持多路复用和非多路复用的8位、16位和32位66MHz时钟局部总线。
●可直接生成所有的控制、地址和数据信号以驱动PCI总线,不需要额外驱动电路。
●可通过消息管理系统I/O,并提供2种方式选择,一是通过邮箱寄存器和门铃寄存器,二是通过所提供的I2O接口。
●寄存器PCI9054寄存器兼容,可容易地进行基于32位PCI总线与基于64位PCI总线的软件移植。
2 PCI9656的功能
PCI9656可用来为非PCI设备和PCI总线提供数据通道。下面介绍具体操作功能。
2.1 初始化
在上电时,PCI总线的RST信号将PCI9656的内部寄存器设置为缺省值,同时,PCI9656输出局部复位信号(LRESET)并检查EEPROM是否存在。如果系统上装有EEPROM且该EEPROM的第一个16字节非空,则PCI9656将根据EEPROM内容设置内部寄存器,否则设为缺省值。
2.2 复位
PCI总线的RST信号有效时,整个PCI9656将复位,同时,输出LRESET局部复位信号。另外PCI总线上的主控设备也可以通过设置寄存器中的软件复位比特来对PCI9656进行复位,但是主控设备只能访问配置寄存器而不能访问局部总线。所以,PCI9656公一直保持这种复位状态直到PCI主控设备清除软件复位比特。
2.3 串行存储器接口(EEPROM)
复位后,PCI9656将开始读串行EEPROM,START为0表示EEPROM存在。此时若该EEPROM的第一个字(16bit)既不为“全1”(EEPROM为空)也不为“全0”(EEPROM不存在),PCI9656将用它进行配置。如START为1,表示EEPROM不存在或EEPROM为空,PCI9656采用缺省值配置。
PCI9656总线上的主机可以对串行EEPROM进行读写,寄存器位[31,27-24]控制着PCI9656对EEPROM位的读写。将重载配置寄存器位CNTRL[28]置1可以用串行EEPROM重新配置PCI9656。EEPROM的时钟可由PCI总线时钟分频获得。
2.4 内部寄存器
PCI9656提供的一系列内部寄存器可为总线接口设计提供最大的灵活性。这些寄存器主要有PCI配置寄存器、局部配置寄存器、DMA寄存器、运行时间寄存器和消息队列寄存器。
对PCI9656寄存器进行读写操作的单位可以是字节、字、长字。PCI9656的存储器访问可以是突发的,也可以是非突发的。
2.5 直接数据传输模式
PCI9656支持PCI总线上的主处理器对局部总线上的设备进行直接访问。PCI9656的配置寄存器将访问映射到局部地址空间。其片内读写FIFO存储器可使PCI9656支持PCI总线与局部总线之间的高性能突发传送。PCI总线主控访问局部总线示意图如图2所示。
3 基于PCI9656的PCI接口设计
PCI9656是一种功能非常强大的64位PCI接口电路,用它来设计PCI适配卡将使接口变得非常方便。图3是PCI主处理机读写一片RAM的接口示意图,其主要功能是实现对RAM的单次或突发的读、写操作。
3.1 硬件设计
该PCI接口的硬件电路分为3部分。第一部分是PCI9656和PCI插槽间的连接信号线。这些信号包括地址数据复用信号AD[31:0],总线命令信号C/BE[3:0],PCI协议控制信号PAR、FRAME、IRDY、TRDY、STOP、IDSEL、DEVSEL、PERR、SERR以及64位PCI总线扩展信号AD[63:32]、C/BE[7:4]、PAR64、REQ64、ACK。第二部分是与串行EEPROM的连线。这部分有4根信号线:EESK、EEDO、EEDI、EECS,串行EEPROM的数据可以提前烧好,也可以在线烧写。第三部分是PCI9656与FPGA的连接。对于FPGA的选择及其内部设计有必要作以下说明:ACEX1K50QC208-3是Altera公司推出的一款低成本FPGA,选择该电路作为该设计的控制器,利用其内部逻辑单元设计局部总线控制器,可用于实现局部总线的状态控制。双端口RAM可选用ALTERA公司提供的库函数LPM_RAM_DP来设计实现,其存储容量为1.24x32bit,占用8个EAB,其余的逻辑单元和EAB用作内部的其他控制。RAM的读写使能信号由局部总线状态机产生,地址计数器的输出可作为它的读写地址。
3.2 软件设计
该PCI接口软件的设计主要分为2部分。一部分用于该PCI9656各个配置寄存器赋值并初始化,另一部分为主程序,用来完成PCI9656与主机CPU之间的数据交互。
4 使用PCI9656时应该注意的问题
PCI9656内部的寄存器是通过外部串行EEPROM上电加载的,因此,PCI9656会自动根据该EEPROM的状态来决定其内部寄存器的值。如果EEPROM内部没有烧写为有效值,应保证其开始的48位为全“1”,否则,系统上电时将会出错。
PCI9656有3个PCI-LOCAL总线地址空间(S0、S1和扩展ROM)和2个具有独立FIFO的DMA通道,用户可根据实际需要来进行配置,并不是要用到所有的。若将本地空间配置成I/O,该空间的读写只能单次进行。而若将其配置成存储器模式,则可大大提高读写速度。
突发模式是为了提高本地总线操作速度而设计的。在该模式下,PCI9656只提供一次传输开始和终止信号。设计时,可以利用BTERM引脚是否有效来中止突发操作。
还有一点需要说明,当执行64bit PCI数据传输时,低32bit PCI数据(AD[31:0])总是首先被局部总线传输。基于32位、16位、8位局部总线操作的数据传输顺序可由局部总线“字节通道”决定。局部总线“字节通道”分为“低字节通道”与“高字节通道”,字节通道由配置寄存器Big/Little Endian描述寄存器中的Byte Lane Mode位所决定。若该位为0(BIGEND[4]=0)时,则为“低字节通道”模式,反之为“高字节通道”模式。
5 结束语
选用第三方EDA工具并采用VHDL硬件描述语言可对该状态机进行行为级描述和逻辑综合,同时可将生成的网表文件送入Quartus软件进行再综合、功能仿真和定时仿真。实验结果表明,该状态机的最高工作频率可达101MHz,完全能够满足PCI9656局部总线的性能要求。
PCI9656以其强大的功能和简单的用户接口为基于64位PCI总线接口的开发提供了一种简洁的方法,设计者只需设计局部总线接口控制电路即可实现与PCI总线的高速数据传输。