基于PCI9054的接口卡设计

最新更新时间:2011-09-11来源: chinaaet关键字:PCI9054  接口卡  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

  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-93LC5*个引脚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总线端的控制器对本地总线和本地总线外部设备的工作模式和状态的有效检测,具有极大的应用价值。

关键字:PCI9054  接口卡  驱动程序 编辑:探路者 引用地址:基于PCI9054的接口卡设计

上一篇:城市民用变频器供水解决方案
下一篇:双调光蘑菇灯的原理及维修方法

推荐阅读最新更新时间:2023-10-18 15:41

DS1302时钟芯片C51驱动程序
/********************************************** 程序名称:DS1302时钟芯片C51驱动程序 简要说明:read_clockS函数为读取时钟数据 调用Set_time即可调整时间并写入DS1302 sel为调整标志,可通过外部按键来更改其值 **********************************************/ //定义头文件 #include AT89X52.h /******************************************************************/ //定义DS1302时钟接口 sbit clock
[单片机]
嵌入式Linux网络驱动程序的开发及实现原理
引言   随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成千上万的计算机专家和爱好者的青睐。在嵌入式领域,通过对Linux进行小型化裁剪后,使其能够固化在容量只有几十兆字节的存储器芯片或单片机中,成为应用于特定场合的嵌入式Linux系统。Linux强大的网络支持功能实现了对包括TCP/IP在内的多种协议的支持,满足了面向21世纪的嵌入式系统应用联网的需求。因此,在嵌入式系统开发调试时,网络接口几乎成为不可或缺的模块。   1 嵌入式Linux网络驱动程序介绍   Linux网络驱动程序作为Linux网络子系统的一部分,位于TCP/IP网络体系结构的网络接口层,
[单片机]
嵌入式Linux网络<font color='red'>驱动程序</font>的开发及实现原理
基于WinCE的I2C驱动程序设计
  引言   随着以计算机技术、通信技术和软件技术为核心的信息技术的迅速发展,嵌入式系统在各行业得到了广泛的应用,极大地推动了行业的渗透性应用。   嵌入式系统是“以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”,由嵌入式硬件和嵌入式软件两部分组成。嵌入式软件包括嵌入式操作系统和嵌入式应用软件。Microsoft的桌面操作系统已经为人们熟悉和使用,嵌入式的操作系统Windows CE.net也日益风行。Windows CE.net是Microsoft推出的功能强大的紧凑、高效、可伸缩的32位嵌入式操作系统,主要面对各种各样的嵌入式系统和产品。该系统所具
[单片机]
Windows设备驱动程序编写时的主要问题及解决方案
结合“通用高速PCI总线目标模块”的驱动程序设计,全面地讨论了Windows设备(特别是PCI设备)驱动程序编写时所面临的主要问题及解决方案,并提出了封装设备驱动的方法。 关键词: PCI设备驱动程序 端口 内存 中断 封装 在设计和使用PCI设备时,经常要在PC机的软件中访问和控制硬件设备,但Windows操作系统(包括Windows95/98、Windows NT、Windows 2000为了保证系统的安全性、稳定性和可移植性,对应用程序访问硬件资源加以限制,这就要求设计设备驱动程序以实现PC机的软件对PCI设备的访问。 Windows下的驱动程序不仅仅包括物理设备的驱动程序,也包括为文件系
[模拟电子]
51单片机lcd1602的驱动程序
/* ******************************************** **头文件名:LCD液晶驱动 ** Target : AT89s52 ** Crystal: 11.0952 ********************************************* */ #ifndef _LCD_51_H_ #define _LCD_51_H_ #include DELAY_51.H #include at89x52.h /* ------80s52与LCD连接信息----------------------------------------- ** P1_2 - RS ** P1_3
[单片机]
PCI驱动程序开发实例(1)
引 言   PCI总线广泛使用在计算机中,一方面是因为该总线的数据吞吐量大,另一方面是因为该总线与具体的处理器无关。PCI硬件设备资源的分配不是硬件设计所决定的,而是由Windows操作系统根据PC机中所有硬件设备对资源的占有统一分配的。这就要求设计设备驱动程序以跨越操作系统的边界,对物理硬件进行操作。   1 DSP芯片中集成的PCI接口特点   1.1 PCI接口的内部结构   DM642片内集成一个主/从模式的PCI接口,它相当于专用的PCI接口芯片,这样可以不必深究PCI总线规范,将工作重点放在系统功能的实现上。DSP可以通过这个接口实现与PCI主机的互连。   从图1可以看出,PCI接口的内
[模拟电子]
PCI<font color='red'>驱动程序</font>开发实例(1)
液晶显示器LCD12864驱动程序
#include msp430g2553.h #include lcd12864.h #include typedef.h #define cyCS BIT0 //P2.0,片选信号 #define cySID BIT1 //P2.1,串行数据 #define cyCLK BIT2 //P2.2,同步时钟 #define cyPORT P2OUT #define cyDDR P2DIR void Write_8bits(u8 W_bits) { u8 i; cyDDR |= cyCLK + cySID; //设置输出方向 for(i = 0; i 8; i++) {
[单片机]
基于GIO/FVID的DSP视频处理驱动程序
  引言   随着时代的发展,DSP技术在远程监控、可视电话、工业检测等视频处理领域得到了广泛的应用,对于不同的视频处理系统,会使用不同的视频设备,所以有必要为视频设备设计驱动程序,为高层应用程序提供统一的接口来操作底层硬件。只要是遵行此驱动程序接口标准开发的高层应用程序,都可以在具有相同接口的不同硬件平台上运行,具有很好的通用性和可移植性,同时高层应用程序设计人员只要会使用设备驱动程序提供的API接口,就不必了解底层硬件的具体实现,可以大大地提高整体视频系统的开发效率。   对于视频设备,TI公司提出了对应的视频设备驱动程序模型,但这些模型主要是针对6000系列高端DSP,甚至是DM64X这样的视频处理专用DSP设计的,而TM
[嵌入式]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved