PCI总线支撑突发传送,多处理器和并发作业,广泛使用于各种渠道规划。依据PCI9054的接口板也广泛地使用于各种高速、大数据量的处理体系。由于PCI9054桥接有PCI总线和本地总线,开发者不用过多考虑杂乱的PCI总线规范,然后能有更多精力开发硬件和驱动程序规划。
这儿以PCI9054为例,给出了接口板的硬件和软件规划,具体论说了该体系规划的原理图和用VHDL言语编写的部分逻辑源程序,以供相关开发人员参阅。
1 PCI9054简介
PCI9054是PLX公司推出的一种32位33 MHz的PCI总线主控I/O加速器,它选用PLX在业界抢先的数据流水线结构,包含DMA引擎,可编程的PCI开端器和方针数据传输形式以及PCI信息传输功用。遵照PCI2.2版规范,可获得最高可达132 MB/s的突发传输速度。它使杂乱的PCI接口使用规划变得相对简略,现在已成为干流的PCI接口器材之一。
PCI9054数据传输有3种方法:主形式、从形式和DMA方法。其内部具有2个DMA数据通道,每个通道均支撑块Scatter/Gather的DMA方法,双向数据通路上各有6个FIF0进行数据缓冲,可一起进行高速的数据接纳和发送,8个32位Mailbox寄存器可为双向数据通路供给音讯传送,PCI9054内部框图,如图1所示。
PCI9054的本地总线有M、C、J 3种作业形式,可经过形式挑选引脚MODE[1:0]进行操控,其间C形式能够满意绝大多数的使用需求,并且C形式的本地总线操作时序最为简略,逻辑操控相对简单,其开发难度相对较低。C形式下PCI9054经过片内逻辑操控将PCI的地址线和数据线分隔,很便利地为本地作业时序供给各种作业方法,一般较广泛使用于体系规划中。因而,如无特别需求,主张选用C形式,这也是本接口卡所选用的形式,一起PCI9054的本地总线时钟可由外部供给,该时钟可和PCI时钟异步。
2 接口卡硬件规划
接口卡主要功用是:对外设设备进行作业形式和状况检测,操控端对检测成果进行相应的数据接纳或发送操作。其作业流程是:由操控端提出恳求,依据进入接口卡的信号对外部设备进行作业形式和状况检测并决议是否对进入外设的信号进行接纳或发送。机械特性方面,接口卡遵照Eurocard工业规范,选用6U(233.35 mmxl60 mm)结构。接口卡的逻辑框图如图2所示。
由图2可知,接口卡分为3个部分:PCI总线接口、本地总线接口和串行EEPROM接口。
2.1 PCI9054与PCI总线接口
PCI9054与PCI总线接口的衔接实践上是PCI9054与cPCI衔接器Jl的衔接,即PCI9054的PCI端信号线经过10Ω的端接电阻与PCI插槽的相应信号线对应衔接。PCI总线接口信号包含地址数据复用信号线、接口操控信号线、中止信号线等。PCB规划时,为了满意反射条件,需注意PCI总线信号的布线及长度,一般信号长度,从衔接器到PCI桥器材距离应不大于1.5英寸(3.81 cm),PCI_CLK信号布线长度为2.5±0.1英寸,不然会导致信号不稳定乃至总线抵触,无法开机。PCI9054内部有可编程的FIF0,完结零等候突发传输及本地总线与PCI总线之间的异步操作,本地总线时钟由外部供给,该时钟能够和PCI时钟(33 MHz)异步,本地总线挑选作业在50 MHz,由频率为50 MHz的晶振OSCl发生,一起
送往PCI9054本地端的时钟信号LCLK与送往CPLD的时钟信号CCLK要等长,以坚持它们同步。
2.2 PCI9054与本地总线接口
本接口卡中的CPLD选用Xilinx公司出产的XC95288XL,完结对接口卡的逻辑操控。C形式下PCI9054经过片内逻辑操控将PCI的地址线和数据线分隔,然后与CPLD相对应的引脚衔接,能便利为本地作业时序供给各种作业方法,一般广泛使用于体系规划。
本地总线部分中的INPUT_BUFFER部分主要由差分电压比较器组成,如图3所示。当从J4进入的信号电压(引脚7)大于基准电压(引脚6)时,输出高电平(引脚1)并进入CPLD,操控器经过PCI9054读入。0UT_BUFFER部分主要是完结操控器对外设接纳或发送数据的操控。
2.3 PCI9054与EEPROM接口
PCI9054供给4个引脚EEDI,EED0,EESK,EECS与串行EEPROM-93LC56的4个引脚DI、D0、SK、CS相连,此外93LC56的VCC引脚需求接+3.3 V电源,GND接地。由于需求对串行EEPROM进行写操作,串行EEPROM需处于可编程并且非维护状况,所以PE经过10 kΩ的电阻上拉后接高电平3.3 V电压,而PRE经过10 kΩ的电阻下拉后接地。EEPROM原理图如图4所示。
衔接好PCI9054与PCI总线接口、本地总线接口和串行EEPROM接口后,还需对寄存器进行装备,装备时需借助于Windriver东西,寄存器的装备包含PCI装备寄存器的装备、本地装备寄存器的装备及对EEPROM初始化。
装备PCI装备寄存器主要是填写出产商ID号、器材ID号、子体系出产商ID号和类码子体系ID号。关于PCI9054,其生厂商ID号,器材ID号,子体系号,子体系ID号等是固定的,能够在PCI9054数据手册中查到。
本地装备寄存器的装备是对本地地址空间及本地总线特点的装备,这种装备依据实践开发需求进行,装备完结后,在主机CPU要拜访本地地址空间时,或许给出对应的PCI总线地址。
PCI9054在加电启动时,从外部EEPROM读取初始化数据来装备PCI9054的内部寄存器,在板卡加电自检期间,PCI总线的RST#信号复位,PCI9054内部寄存器的默认值作为回应。PCI9054出本地LRESET#信号并检测串行EEPROM。
假如串行EEPROM中的前33位不全为1,那么PCI9054确认串行EEPROM非空,用户可经过向PCI9054的寄存器CNTRL的29位写1,来加载EEPROM的内容到PCI9054的内部寄存器,装备的信息能够在P1xSdk的PLXMON下对EEPROM进行装备。
3 接口卡软件规划
3.1 CPLD逻辑规划
PC39054经过本地总线与本地总线设备进行通讯,PCI9054供给2种拜访方法,即单周期拜访和突发方法拜访。
其间单周期拜访本地总线选用状况机完结本地总线接口的操控,其状况图如图5所示。状况SO为闲暇状况,当ADS#为0时,如经本地总线译码逻辑译码后标明需求拜访本地空间时则转到状况S1,不然留在状况SO;状况S1为单周期拜访开端状况,当BLAST#为1时,停留在状况S1,不然转到状况S2:状况S2为拜访等候状况,在此状况下数据在本地总线坚持,然后直接转到状况S3;状况S3数据传送状况,在此状况下数据从本地总线上取走(假如需求能够加一个状况来延伸数据读取时刻);当ADS#为0时,经本地总线译码逻辑译码后,标明还需求拜访本地空间,转到状况S1,不然转为SO,本周期拜访完毕完结数据传送。
将以上状况机用VHDL言语在可编程器材中完结,部分源程序代码如下:
……
图6是借助于Xilinx ISE 9.1i仿真东西对在C形式下的8位本地总线宽度的本地逻辑操控的传输时序仿真成果举例。由图6可知:在写周期,是把PCI总线端的地址local_adrr[9:2]为8’h00的数据写到输出端outport0;在读周期,是把地址为8’h00的数据从inportO[2;0]读入到local_data[0]。
3.2 驱动程序规划
Windriver是Jungo公司出产的一个设备驱动程序开发组件,开发者不需了解操作体系内核即可使用Windriver开发设备驱动程序。整个驱动程序中的一切函数都是在用户态下运转的,经过与Windriver的.Vxd或许.Sys文件交互来到达驱动硬件的意图,大大提高了PCI设备驱动程序开发。
用Windriver开发驱动程序的进程大致如下:首要,翻开Windriver设备,查找所要拜访的PCI设备;然后是枚举该设备的资源(包含内存、I/O、中止)并确定该设备的资源,不能被其他程序拜访;在拜访板上的资源之后是解锁资源;最终是封闭Windriver设备。这个进程是用C言语在VC++6.0开发环境下借助于Windriver自身自带函数(装置Windriver之后,在其“Help”中可找出相关函数阐明)完结对PCI9054的
初始化。设备翻开,拜访硬件资源,调用函数库,设备封闭等操作后。再对源代码进行编译,链接和运转成功后,找出发生的5个文件:wdr-eg.exe,plx9054.inf,windrvr6.sys,plx9054.lib和plx9054.dll,这5个文件组成了所需的驱动文件。在板卡成功刺进插槽后点击wdreg.exe成功装置驱动程序。
4 完毕语
本文以性价比较高的PCI9054作为PCI桥路器,给出了桥路器的部分功用介绍、电路规划时需注意的问题及本地总线数据传输的接口逻辑规划。本规划降低了PCI总线的杂乱性,轻松完结了PCI总线端的操控器对本地总线和本地总线外部设备的作业形式和状况的有用检测,具有极大的使用价值。