PCI接口数据采集的FPGA实现

时间:2022-03-31 05:18:11

PCI接口数据采集的FPGA实现

[摘 要] 在微机对数据的处理当中,数据采集是很重要的一部分,以前的数据采集都是通过DSP或单片机来实现。本文提出了基于PCI总线,用FPGA来作为整个数据采集部分的核心的数据采集卡的设计。该设计充分利用了PCI总线的高速传输和FPGA灵活强大的编程控制能力。从而保证了数据传输的速度,简化了电路。实验表明,该设计为数据采集卡的设计提供了一种在硬件上更加简单的方法。

[关键词] PCI 数据采集 FPGA

一、引言

随着信息技术的发展,基于微处理器的数字信号处理在测控、通讯、雷达等各个领域得到广泛的应用。数据的采集成为重要的一个环节。对于各种各样的数据采集系统,利用PCI总线实现的数据采集卡有许多其他总线(如ISA)所没有的优点,如高速、热插拔、自动配置等。数据采集的控制部分由近年来发展迅速的可编程逻辑器件FPGA来设计,其时钟频率高,内部延时小,全部控制逻辑由硬件完成,速度快、效率高。

二、硬件设计

论文设计的数据采集卡是基于PCI总线,采用ALTERA公司的EP1C6Q240实现PCI协议和对整个采集过程的控制。其硬件设计如图1所示

本设计利用可编程逻辑器件FPGA的强大编程功能来实现PCI接口协议和数据采集控制器,同时利用EP1C6Q240中的双口RAM实现数据的暂存,可以有效简化电路设计。该电路板上电路还包括一些信号条理电路,其主要功能是对输入的模拟信号进行放大、滤波、隔离、衰减、多路复用等一系列处理,使调理以后的信号满足AD的采样数据采集控制器要求。

1.FPGA器件

系统所选用的EP1C6Q240这种Cyclone系列的FPGA器件具有以下优点:

(1)采用240个引脚的FPQF封装形式,能提供185个IO用户引脚和5 980个逻辑单元。具有20个4 608位的RAM存储区,最高可支持200MHz的数据传输。每个存储区均包括单口或双口RAM、ROM、FIFO等各类存储器件,并支持8位、16位、32位、36位等数据存储类型。

(2)片上的锁相环电路可以提供输入时钟的1分~32分频或倍频。

(3)可使用Altera的Nios软核和丰富的IP库,快速实现完整的可编程(SOPC)。

(4)多功能的IO结构支持差分和单端输入,并与3.3V、32位、66MHz的PCI局部总线兼容。

2.A/D转换电路

ADS5220是TI产品线中的一款新型?高精度?宽动态范围?流水线型ADC・它具有12位有效分辨率,工作电压范围及逻辑电平为3.3V,与PCI接口相兼容?该器件内部含有参考电压,可最大限度的减少器件。由于采用了流水线结构,采集速度有很大提高,采集速度最高可达40MSPS。

三、FPGA实现的功能

本设计中FPGA实现五方面的功能:

一是FPGA逻辑运算模块。用来接收其他各部分的数据,并按照程序中设定的方案对所收到的数据进行相应的分析和处理。包括:对从MCU接收来的数据指令进行分析,并按其指令要求进行相应操作;接收A/D采样来的数据,对数据进行各种处理,如求其有效值等;接收来自数字量的各种信息数据,按设定的模式对其进行判断处理,并负责按接收的CPU指令输出相应的数字量。

二是PCI内核模块,是系统设计的核心部分,它建立与上位机通信,以及与其他控制模块的数据交换。

三是用于数据暂存的双口RAM,当写入控制信号到达时,根据当前写入地址控制字向相应单元写入数据输入总线上的内容,并在读出控制信号到达时,根据读出地址控制字从相应单元读出内容,送到数据输出总线。

四是双口RAM控制模块,当启动写入地址控制信号到达时,把当前的写入地址加1,加满之后清零并重新开始,同时,当启动读出地址控制信号到达时,对当前读出地址加1,加满之后清零并重新开始。

五是A/D控制单元。主要负责控制外部A/D芯片和多路开关的选通时序,以及实现对A/D采样过程的合理控制。因为,在FPGA芯片内部,不像在MCU内部那样有丰富的外设控制资源供用户使用,要用FPGA来控制A/D采样过程的动作,必须用软件来模拟实现各种A/D控制资源。利用这些自设定的A/D控制管理资源,配以合理的软件控制时序,才能保证采样过程的顺利进行。

六是数字量监测控制单元。负责所有要监视和控制的数字量的状态数据的采集和控制命令的输出。这一部分也需要用软件来模拟实现各种对数字量的管理控制,只有配备较完备的外设控制管理单元,整个数字量的管理控制才能正确地进行。

四、基于FPGA的PCI内核设计

在PCI内核的设计中,核心设计有时序控制和配置空间两部分。时序控制保证了板卡能按正常的PCI时序工作,配置空间部分保证了板卡的即插即用功能。

1.PCI接口配置空间

当计算机第一个上电时,配置软件必须扫描在系统中的不同总线(PCI和其他),确定什么设备存在和他们有什么配置要求。这个过程常常指的是:扫描总线、激活总线、检查总线、发现过程、总线枚举。

执行PCI总线扫描的程序常称为PCI总线枚举。而为了实现这一过程,就必须提供256字节的配置空间结构,并实现PCI规范定义的一组寄存器。PCI总线标准规定的配置空间总长度为256个字节,配置信息按一定的顺序和大小依次存放。前64个字节配置空间称为头标区,是任何PCI兼容设备都应实现的空间。头标区的功能主要是用于识别设备,定义主机访问PCI板卡的方式(是I/O访问还是MEM访问、中断号等)。其余的192个字节空间称为本地配置空间 因卡而异,主要定义卡上局部总线的特性、本地空间基地址及范围等。因PCI规范的通用性,所以每一块PCI总线扩展板卡都只是实现配置空间的一个子集。一般的PCI配置空间的结构如表1所示:

2.PCI接口状态机

在时序控制程序中采用状态机模型来实现不同时序的转换。各种命令、数据交换、控制均在状态机的管理下进行工作。PCI总线上的信号是并行工作的,因此,对应每个状态必须明确其执行的任务。这些任务要用VHDL的进程语句来描述所发生的事件。本设计中的状态机共使用了8种状态如图2所示。

本系统接到复位信号后对系统进行复位,然后转入空闲状态(此状态DEVSEL#、TRDY#和STOP#以及其他输出信号为高阻态)。

在IDLE状态下当检测到FRAME变低、IDSEFL为高,且PCI_CBE上命令是config_read或config_write时,状态转移到CONFIG_WAIT;如果FRAME变低、且PCI_CBE上命令是IO_read或IO_write或memory_read或memory_write时,状态转移到RDWR_WAIT,否则继续IDLE状态。

在CONFIG状态下,如果检测到IRDY为0,表示主机要求完成当前操作,状态转移到BACKOFF;否则继续CONFIG状态,直到IRDY为0为止。

在READ_WAIT状态下,如果检测到用户端需要ABORT,则下一状态转到ABORT状态。如果用户端需要STOP当前传输或者FRAME变为高电平,则下一状态转移到LAST_RDWR状态;如果FRAME还保持为低,则转到RDWR状态。

在RDWR状态下如果检测到用户端需要ABORT,则下一状态转到ABORT状态;如果用户端需要STOP当前传输.则下一状态转移到LAST_RDWR状态;如果FRAME还保持为低,则转保持RDWR状态;如果FRAME还变为高电平,则转到BACKOFF状态。

五、结论

本文介绍了用PCI和FPGA结合实现的高速数据采集卡,利用了PCI总线高速的传输特性,同时配合以FPGA强大的编程控制功能,简化了硬件设计。本系统用VHDL语言来描述。VHDL语言是一种结构化语言,易于编程和修改,开发周期短。整个设计简化了器件,实验中数据传输效果较好,完全符合PCI总线的要求,实现了灵活的接口控制。

参考文献:

[1]李贵山 戚德虎:PCI局部总线开发者指南[M].西安:西安电子科技大学出版,1997

[2]徐海军 叶卫东:FPGA在高性能数据采集系统中的应用[J].计测技术,2005,1(25):4043

[3]褚振勇 翁木云:FPGA设计及应用[M]. 西安: 西安电子科技大学出版社, 2002

[4]刘 晖 冀然然 夏意军译:Tom Shanley,Don Anderson.PCI系统结构[M].北京:电子工业出版社,2000

上一篇:结合实例探讨C/S和B/S结构的应用 下一篇:JS与AWS相结合在产品订购查询系统中的应用