计算机时间基本由网络时间或主板时钟芯片提供,导致时间误差大,在工业控制、数据测量等领域无法完成特定任务。为解决计算机时间误差较大问题,部分学者提出windows系统下pci总线接口的GPS授时卡。这种方法的不足在于:数据吞吐量、带宽的限制使得pci总线逐渐被pcie总线授时卡所取代,且GPS授时方式以及美国微软windows系统无法在国家安全敏感部门使用。针对上述不足,基于国产linuk系统平台,设计了PCIE总线接口的授时卡,驱动程序以及基本应用软件。
一、发展历程
随着嵌入式技术的飞速发展,嵌入式系统在对大数据量交互方面提出更高需求的同时还对总线传输速率以及数据完整性等方面提出了越来越高的要求。虽然过去的十几年中PCI总线在嵌入式领域得到了广泛的应用,但由于PCI总线的并行特性,整体设计难度大,故主流的技术已经成为系统整体性能提升的瓶颈。因此,串行 PCIExpress(PCIe)总线标准凭借其高速串行传送特性以及能够支持更高的传输频率、无需共享总线带宽等优势,经推出就得到了迅速的发展,并开始逐步取代PCI总线。
二、通讯协议
PCIe 总线串行传输的特性是通过报文的形式进行传输,每个数据报文在PCIe 的事务层被封装成一个或者多个TLP数据包,PCIe设备之间则通过这些数据包进行数据通信。由于TLP的数据包中包含TLP前缀、TLP头以及TLP摘要等信息,因此,当设备在进行单次数据传输( 每个报文数据负载长度为1)时PCIe总线的性能优势并不明显,其传输速度甚至还不如PCI总线。为了得到更高的传输效率,在使用 PCIe总线进行数据传输时往往需要使用 DMA 的传输方式。
PCIe总线技术是取代PCI的第三代I/O技术,也称为3GIO。PCIe总线是为将来的计算机和通讯平台定义的一种高性能、通用I/O互连总线,在其物理实现上使用了高速差分的方式来实现数据传输,与此同时,其端到端的连接方式使得每条PCIe链路中只能连接两个设备,因此相比于PCI所有设备共享总线带宽来说,PCIe总线具有独享传输通道数据带宽的特性与PCI总线相比,PCIe总线主要有下面的技术优势:
1) 是串行总线,进行点对点传输,每个传输通道独享带宽;
2)支持双向传输模式和数据分通道传输模式,支持 x1,x4,x8,x16等模式,x1单向传输带宽可达到250MByte/s,双向传输带宽更能够达到500 MByte/s;
3)充分利用先进的点到点互连、基于交换的技术和基于包的协议来实现新的总线性能和特征;
4)对PCI总线具有良好的继承性,可以保持软件的继承和可靠性;
5)充分利用先进的点到点互连,降低了系统硬件平台设计的复杂性和难度,从而大大降低了系统的开发制造设计成本,**地提高系统的性价比和鲁棒性。
总线技术的发展的同时对时间同步装置也提出了更高的要求,新一代的 PCI Express总线,虽具有速度快、实时性好、可控性佳等优点,但其协议的复杂给开发者带来了难度。
北斗/GPS 双模授时方法,结合先进的接口芯片来驱动PCIExpress 总线,利用具有低功耗、实时性强等性能的数字可编程器件(FPGA)来进行电路设计,使得时间同步装置与PC机之间信息交换变得简单易用。
三、举例说明
SYN4632是一款通过总线控制,为计算机、工控机等操作系统提供高精度硬件时钟的同步卡。该时钟同步卡采用流水线自动化贴片生产,使用FPGA+ARM框架设计,接收GPS/北斗/PTP/交直流IRIG-B码等外部参考信号,输出各种时间频率信号,提高系统的时间精度和准确度,满足不同用户需求。
该PCIE时钟同步卡内置高精度守时时钟源,当外部参考无效时仍然可以提供高精度授时服务。并配套提供Windows校时管理软件和各种操作系统的API驱动,完全实现高精度应用程序授时,具有兼容性强,接口丰富、精度高、稳定性好、功能强、无积累误差、不受地域气候等环境条件限制、性价比高、操作简单、免维护等特点。
3.1产品功能
(1)支持PCIE总线授时,时间精度优于10us;
(2)内置高精度授时型GPS/BD双模接收机;
(3)外参考失锁后依靠内置高精度时钟守时;
(4)支持即插即用(Plug and Play);
(5)输出秒脉冲(PPS)时标同步脉冲信号;
(6)Windows/Linux 32位/64位驱动,提供API函数接口;
(7)提供windows上位机校时软件,对计算机进行自动校时;
(8)可在PCIe总线上提供多种中断信号;
(9)PCIe总线提供时间信息,GPS、BD卫星颗数,板卡同步状态等信息;
(10)输出1PPS和串口TOD(NEMA0183中GPRMC语句,带经纬度定位信息);
3.2产品特点
(1)高精密,全自动,无人值守,免维护;
(2)对主要电路部分采用金属外壳屏蔽,抗干扰能力强;
(3)功耗小,可靠性高,可长期连续稳定工作;
(4)安装简便:该产品可直接插入计算机(或工控机)的PCIe扩展槽。
四、应用程序与驱动程序
应用程序与驱动程序设计是系统开发过程中重要的软件环节,软件是基于 Windows系统开发的,为了降低开发难度,设计中使用 WDM 进行 PCIE 驱动功能的开发,应用层程序的开发则使用了 VC++6.0。主要包括了设备操作、设备信息、I/O端口读写、北斗/GPS/守时时间以及IRIG-B码解码时间显示五个部分组成。 设备操作组要包含打开、关闭、退出设备三个部分组成;设备信息组要包含了驱动版本号、DLL版本号、设备号、中断号及 I/O 基址,这些都是在上电初始化后在打开设备开启的时候在授时卡驱动程序里面进行自动读取的,并且PCIE 的配置空间信息如 VendorID、De-vice ID、Revision ID 等信息也是在设备开启的时候自行读取的;I/O端口读写是方便一些管脚的测试,用于端口应用。
使用 FPGA 来设计基于PCIe 总线的数据传输,可以省去专用的PCIe接口芯片,降低硬件的设计成本,提高硬件集成度的同时还能利用FPGA的可编程特性提高设计的灵活性与适应性。与此同时,目前很多FPGA 内都嵌入了PCIe的硬核,此硬核支持PCIe传输的单字读写操作以及DMA读写操作作,由于PCIe具有一定的协议开销,其单字传输效率不甚理想,因此,本文在PCIe单字传输的基础上提出了一种基于PCIe接口的DMA传输的设计方案,此方案可以稳定快速地实现PCIe总线的DMA传输。经测试,DMA传输方案在传输带宽方面满足设计要求。