在高效数据传输领域,测控领域对基于PCI总线的网络数据传输卡有大量需求,例如分布式采集系统需要通过这种传输卡将数据聚合传输至处理机系统。几年前我研发了基于PCI总线的数据传输卡,研制的硬件板卡如下图所示:

基于PCI总线的网络数据传输卡设计_第1张图片 

该PCI数据传输卡有如下几个方面的特点:
1,有很大的板载内存,因此,可以将网络数据聚合、缓存。
2,网络部分和PCI部分通过FPGA互联,中间通过FIFO进行时序配合,从而可以使得网络和PCI异步工作,提高数据传输效率。
3,在FPGA内部可以实现对数据的预处理操作,从而实现数据处理的硬件加速。
4,板载ARM处理器,可以实现轻量网络协议的处理,并且可以实现自定义的网络数据传输协议栈,可以更好的满足测控领域的通信需求。
5,位于处理机端的PCI驱动程序采用DMA数据传输方式,可以充分利用PCI总线带宽的传输效率。
 
基于PCI总线的网络数据传输卡原理框图如下所示:

 

基于PCI总线的网络数据传输卡设计_第2张图片 

该数据传输卡集成嵌入式CPU,负责数据传输协议的解析处理。网络控制器eth负责接收网络数据报文,完整数据报文接收完毕之后中断CPU进行处理;CPU解析报文并将有效数据缓存至SDRAM。传输卡与PC之间的通信可以采用中断或者查询的模式,在中断工作模式下,当一定条件(可以设定时间或者容量条件)满足时,CPU会将SDRAM中的数据分批次装载入FIFO,并且触发PCI桥路控制器进行PCI数据传输。在查询模式下,PC机会给传输卡发送查询命令,触发CPU装载数据,通过PCI控制器以DMA的方式将数据传输给处理机系统。
 
数据从网络传输至应用程序内存,经历了若干次缓存和系统内存的拷贝,该数据传输卡可以采用基于中断触发的DMA数据传输方式,数据传输过程如下图所示:

 

基于PCI总线的网络数据传输卡设计_第3张图片 

数据在网络控制器和CPU的配合下直接缓存至SDRAM,当满足一定条件时,CPU将部分数据(通常为4KB Page页大小)从SDRAM导入FIFO,然后通知PCI控制器将FIFO中的数据传输至计算机。PCI控制器发出的中断请求使得计算机执行设备驱动程序,设备驱动配置DMA控制器,启动DMA控制器将FIFO中的数据传输至操作系统内核区域的内存空间(kernel memory)。最后,上位机软件请求device driver将内核内存中的数据拷贝至用户空间内存进行相应的数据处理,当然,这一步也可以采用内存映射的方式,从而提高传输性能。
 
基于PCI总线的数据传输卡、数据采集卡在测控领域具有很强的需求,在板卡硬件层以及主机的驱动层将性能优化好,那么性能出色的PCI板卡将会是测控领域的精品受人追捧。