基于PCI总线的测控卡的设计

最新更新时间:2007-03-09来源: 互联网 手机看文章 扫描二维码
随时随地手机看文章
摘要:介绍了一种基于PCI总线的测控板卡的设计,使用PCI9054实现总线控制,利用FPGA实现测控板卡的发送逻辑、接收逻辑和数据缓冲功能,并采用了乒乓FIFO;最后给出了用WinDriver编写设备驱动程序的方法。 关键词:PCI9054 FPGA 状态机 乒乓FIFO WinDriver PCI总线是一种高性能的局部总线,它具有32/64位总线宽度,且总线地址和数据复用,支持猝发传输,传输速率高达132MB/s;同时可支持多组外围设备。另外,PCI总线不依赖于热和CPU,具有较好的兼容性。 近几年来,现场可编程门阵列(FPGA)在现代电子设计中的成功应用,使充分利用FPGA的本身资源设计专用电路,完成系统功能成为可能,从而简化了电路、缩小了体积、提高了稳定性、具有更大的灵活性。 基于这种设计思想,笔者利用FPGA和PCI总线接口芯片设计了一种测控电路板卡,经实验运行,效率很好。 1 系统结构与功能 本板卡为基于PCI总线,采用RS485电平传输的异步串行通信测控卡。它与PCI总线的协议部分利用PCI9054专用接口芯片来完成。PCI9054是由美国PLX公司生产的一款高性能PCI I/O加速器,它采用了先进的32位数据管道结构技术,支持复用/非复用的32位数据/地址总线,本地总线有三种模式可选;M、C、J模式,被广泛应用于PCI总线板卡的开发中。在本设计中,PCI9054工作在C模式下,采用中断方式,总线周期为“PCI目标读单周期”和“PCI目标写单周期”,数据总线为8位。 异步串行通信电路部分完全用FPGA来实现。在设计上,笔者选用了Xilinx公司的Spartan II系列的XC2S200来实现异步串行通信的接收、发送和接口控制功能,FPGA具有在线可编程能力,设计者可根据实际需求分配资源。 测控卡的通信协议为起止式协议,采用固定的帧格式:1位开始位、8位数据位、1位停止位,无奇偶校验位,在软件中采用统一的CRC校验,传输波特率为19.2kbps。为保证接收数据的正确性,设计中采用16倍频波特率作为接收采样时钟,并把第八个采样值作为接收数据。 测控卡主要完成以下工作:采用RS485差分电平传输的遥测数据经过电平转换后,由接收模块接收后乒乓缓存到FIFO中,并通过PCI总线接口芯片PCI9054以单周期方式送到计算机内存中以便进行下一步处理。发送模块接收到PCI总线传输过来的遥控命令后,按照通信协议格式组帧,在通过电平转换芯片转换成RS485电平后,以19.2kHz的频率发送给目标设备,实现对目标设备的各种控制。 根据以上分析,笔者设计的测控卡的具体功能结构如图1所示。下面详细阐述各部分的功能。 %26;#183;MAX3490E:完成RS485差分电平到TTL电平的转换; %26;#183;接收模块:完成遥测数据的接收和缓冲; %26;#183;发送模块:完成遥控数据的缓冲和发送; %26;#183;接口模块:实现与PCI9054的接口功能,完成读写和传输控制操作; %26;#183;PCI9054:完成和PCI总线的接口协议。 1.1 发送模块设计 发送模块主要实现对遥控数据的缓存和并/串转换,同时按照设计的异步串行通信数据帧格式进行相应的处理,最后将数据串行发送。处理器读取线路状态寄存器信息,检查发送FIFO(TxFifo)是否为空,如为空且有遥控数据待发,则将控制数据通过PCI9054发送并存储到发送FIFO中。发送状态机读取TxFifo中数据,通过并/串移位后用19.2kbps的波特率串行输出。发送状态机实现起止位“0”、并/串移位信号、停止位“1”的发送,具体如图2所示。 图3 开始:当移位寄存器空,发送模块处于等待开始状态,一旦检测到非空,发送起始位“0”,状态机进入移位状态; 移位:通过并/串移位寄存器串行发出,当完成8bit移位后,状态机转入停止状态; 停止:在这个状态,为发送的数据加上一位停止位,然后转入开始状态,等待下一个数据。 发送模块包含8位并/串移位寄存器TSR、51%26;#215;8 bits发送FIFO(TxFifo)、用于实现发送遥控数据计数的52计数器等。发送模块内部电路结构劭科3所示。 1.2 接收模拟设计 接收模块实现遥控数据的串/并转换,同时完成起始位、停止位的识别捕获及遥测数据的缓存。由于本设计中由设备每100ms定时器发送一帧(181字节)接收数据,当FIFO产生满标志时,将耗时(181%26;#215;(8+2)/19200)ms,即约95ms,仅剩5ms左右的时间让PC机响应,由于操作系统的特点,不能充分满足机的响应时间,这会造成接收数据混乱。为保证PC机所需的响应时间和数据的正确性和实时性,笔者使用了两个满标志为181的接收FIFO进行乒乓切换,收到良好的效果。 图4 接收模块包含8位串/并移位寄存器、两个满标志为181的接收FIFO(RxFifo、RxFifo_Cache)、采样电路、捕获电路、读写通道选择电路和移位计数器电路。其中,采样比较电路采样起始信号、数据信号和结束标志,通道选择电路用来对FIFO乒乓切换读写通道进行选择。接收模块内部结构如图4所示。采样电路、捕获电路在采样捕获到起始信号“0”后根据通信协议接收串行数据,经过串/并移位后乒乓读取。 1.3 接口模块设计 接口模块主要实现PCI9054和接收、发送模块的通信,包括传输控制逻辑、时钟分频控制,笔者根据PCI9054的单周期读写时序给出了各类寄存器的读写信号、总线响应信号、控制信号等。该模块含有五个寄存器;接收FIFO寄存器(RFR)、发送FIFO寄存器(TFR)、线路控制状态寄存器(LCSR)、中断标识寄存器(IIR)和中断使能寄存器(IER)。具体说明如下:%26;#183;LCSR:通过读该寄存器获取各个FIFO的状态信号(置1有效,0无效)。LCSR格式如下: TxFifocompleted TxFifoEmpty TxFifoFull 0 0 0 RxFifoEmpty RxFifoFull TxFifocompleted:数据传输完成(1完成,0未完成); TxFifoEmpty:发送FIFO寄存器空(1空,0非空); TxFifoFull:发送FIFP寄存器满(1满,0未满); RxFifoEmpty:接收FIFO寄存器空(1空,0非空); RxFifoFull:接收FIFO寄存器空(1满,0未满)。 %26;#183;IIR:通过读取该寄存器获得中断类型。IIR格式如下: 0 bit2 bit1 bit0 0100(int0):接收FIFO(RxFIFO)满中断;0100(int1):发送FIFO(TxFIFO)空中断;0001(idle):无中断。 %26;#183;IER:可以通过写该寄存器相应位使能或取消中断。IER格式如下: TxFifoI RxFifoI TxFifoI:发送FIFO空中断使能(1允许,0禁止); RxFifoI:接收FIFO满中断使能(1允许,0禁止)。 中断产生由接口中断状态机实现,具体如图5的所示。 空闲:空闲状态,没有中断产生; 中断int0:接收FIFO(RFR)满,产生中断,要求PCI9054响应; 中断int1:发送FIFO(TFR)空,产生中断,要求PCI9054写入数据或读取中断标识寄存器IIR。 2 驱动程序的开发 驱动程序主要是完成对硬件板卡的内存映像地址、I/O地址的存取,并正确处理来自板卡的硬件中断。与传统开发设备驱动程序的方法不同,WinDriver不要求开发者非常熟悉操作系统平台,掌握核心开发/调试知识等;并且WinDriver设备驱动程序工具包将驱动程序的开发作了最大的简化,它为开发人员提供了功能全面的API函数。开发人员只要根据硬件板卡功能的需要调用所需的函数即可。本测控卡驱动程序需要完成设备的初始化、FIFO的读写等,笔者选择相应的函数将其封装成一个测控卡驱动卡,并加以例化,供应用程序调用,即很好地实现了硬件功能。 利用专用PCI总线接口芯片可以实现完整的PCI总控模块和目标模块接口功能,将复杂的PCI总线接口转换为相对简单的用户接口,避免了用户直接面对复杂的PCI总线协议,降低了设计难度。利用FPGA设计自己需要的专用电路,具有极大的灵活性,设计者可以根据实际的需要,在FPGA资源允许的条件下对设计进行FIFO实现了数据缓存,并根据数据的实际长度加大了FIFO的深度,有效地降低了中断次数或查询次数;同时,FIFO的乒乓切换很好地满足了PC机所需的优化作用。利用WinDriver开发驱动程序,简单实用,缩短了开发周期。
编辑: 引用地址:基于PCI总线的测控卡的设计

上一篇:鼠标控制芯片Mouse Warrior及其应用
下一篇:基于热释电红外传感器的报警系统

小广播
最新传感技术文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 综合资讯

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved