PCB布线时有以下注意点:终端阻抗布线尽量降低容性;一组信号,避免在参考层断续;高速信号尽量在一层布线,且不打孔,否则要在过孔处打一个U形的地孔;微波传输带,差分信号布线线宽5 mil,间距7 mil;带状传输线,差分信号布线线宽5 mil,间距5 mil。信号之间的间距在20 mil以上,高压和边缘尖锐的信号尽量远离差分线,避免干扰。
接口上数据采用SSTL2信号发送,传送速率达到250 MB/s。每组数据发送端需串行一个25欧姆电阻,数据接收端上拉50 Ω电阻,提高信号的阻抗匹配。TD和RX每组为8位250 MB/s信号,为了减少信号间的延时误差,每组信号布线时尽量等长且减少走线长度。
3.4 Pipe Core实现PCIE总线协议
Xilinx PCI Express Pipe Core符合PCI ExpressBase Specification v1.1规范协议和电特性兼容,提供完整的端点解决方案包括物理链接与处理及配置管理模块。支持同步点对点通信,上行和下行流程控制,与PCI Express处理排序规则完全兼容。
Pipe Core数据管理包括传输层、数据链路层、物理层3个模块。这些模块包括产生和进行传输包、数据流的控制管理、物理接口初始化、并串转换以及其他的接口操作。由Pipe Core组成数据通道,并可以构成多PCI Express设备的拓扑结构。如图2所示。
4 基于WinDriver的驱动程序开发
4.1 采集设备的驱动安装
将数据采集设备安装到计算机PCI express×1插槽,启动计算机时操作系统会检测到此设备并提示添加硬件向导,忽略此提示。然后,从开始菜单选择WinDriver/DriverWizard,新建工程。此时DriverWizard将会显示所有的计算机中的即插即用设备
根据设备信息(ID号)选择所要测试的设备,如图3所示,数据采集设备ID号为0301,双击此设备,出现设备测试对话框,向指定的设备空间写入数据测试设备是否工作良好。最后由DriverWizard生成简单的驱动程序代码。
4.2 数据传输模式与配置函数
驱动程序得到从数据采集设备发送的数据,并存储在指定的内存空间,根据用户的选择可以实时显示或者存储在磁盘空间。使用WinDriver编写的驱动程序通过WinDriver内核模块与硬件进行通信,本驱动程序要实现的主要功能是从设备读取指定的数据到计算机,并根据要求发送命令到设备控制寄存器对设备的各种状态进行控制。
设备与计算机进行数据传输有2种模式:PIO模式和DMA(直接内存访问)模式。PIO模式主要实现计算机和数据采集卡之间的命令传输;DMA模式主要针对大块数据传输,传输过程中不需要经过CPU,数据直接从设备传送到内存中,数据传输的速率快,可以充分利用PCIE数据带宽。
为了能从设备中读到数据,首先应该获得设备的信息,设备信息主要包括厂家ID号,设备内存映射空间,设备所在插槽号以及其他设备专用配置信息。只有获得了设备信息才能实现对设备的访问,这些信息通过下面2个函数得到:
void WD_PciScanCards函数用于检测安装于PCIE总线上的设备。Void WD_PciGetCardInfo函数获取PCI设备的资源信息,例如内存资源,I/O资源,中断资源等。对设备信息的登记是通过结构WD_CARD_REGISTER来实现,它包含了硬件的各项信息。这些信息可以通过第一步中的2个函数获得。在确定WD_CARD_REGISTER结构后调用函数WDCardRegister向Windriver Kernel登记设备。在得到了设备信息并且向WinDriver注册了此设备后就可以在设备和计算机之间传输数据。
5 结 语
采用PCI express总线实现数据采集设备可以有效地提高数据的传输带宽,解决总线带宽不足瓶颈带来的种种问题。文中的总线设计为1个通道的PCI express,双向的读写速度为250 MB/s。后面的设计中会不断提高Pcie总线的通道数,以满足更高的总线设计需求。