《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > 利用FPGA实现的多通道同步数据采集卡

利用FPGA实现的多通道同步数据采集卡

2008-12-11
作者:田多华, 邱宏安, 陆宇鹏, 邵

  摘 要: 介绍了一种基于PC104总线的多通道高速同步采集卡" title="采集卡">采集卡" title="数据采集卡" title="数据采集卡">数据采集卡">数据采集卡的设计方法, 硬件上采用FPGA进行控制逻辑设置和数据缓存" title="数据缓存">数据缓存的实现, 简化了硬件电路, 同时也提高了其使用的简易性和配置的灵活性, 具有准确和快速的特点。
  关键词: 数据采集; 现场可编程门阵列; 模数转换

 

  PC104 作为一种国际标准的控制总线, 在测试和控制中得到了广泛应用, 但目前市场上与之配套的同步数据采集卡还很少。基于PC104总线的高精度数据采集卡的主要功能是把外界模拟信号的电压参量经过A/D" title="A/D">A/D转换器转换成数字量,并把转换结果存储以便分析处理。本文所述采集卡采用了AD公司推出的高速、低功耗、四通道同步采样12位并行接口的A/D转换器AD7864,用FPGA进行逻辑功能控制和数据缓存,使得该数据采集卡硬件电路极为简单。
1 数据采集卡的原理及组成
  采集卡包括模拟输入、A/D 采集、数据缓存及基于PC104 接口的数据传输四部分,其核心设计是A/D采集、数据缓存部分。数据采集卡系统结构框图如图1所示。

 


  该采集卡采用LM324对模拟输入信号进行隔离,它的功能实现是在滤波器MAX274的每个输入端前设计一个跟随器,使输入信号在被滤波之前先经过隔离,A/D采集模块主要采用三片AD7864-1来实现12通道的同步采样。逻辑控制及数据缓存模块是在FPGA内部编程实现的。在数据送入PC104总线时,74LS245在PC104总线与FPGA之间也起驱动的作用。在PC104总线与FPGA不进行数据传输时,74LS245呈高阻状态,这样可以防止主机与采集卡间的数据相互干扰。
2 硬件电路设计
  整个系统硬件是把12通路的A/D同步采集设计在一块电路板上,包括滤波、A/D转换、数据缓存、FPGA逻辑控制以及总线接口,本文主要介绍A/D采集电路和FPGA内部电路的设计与实现。
2.1 A/D采集模块
  AD7864是AD公司推出的高速、低功耗、四通道同步采样12位并行接口的A/D转换器,它可以用于马达控制、非中断电源控制、数据采集和通讯等。
  该器件内部具有一个转换时间1.65μs的逐次逼近式A/D转换器,4路跟踪/保持放大器,2.5V参考电源,片内时钟震荡器,信号调整电路及一个高速并行接口。AD7864可对四个通道的模拟输入信号同步采样,并将四个通道之间的相对相位和大小信息保存下来,这使得它特别适合于交流电机控制、三相电网电压检测等场合。
  A/D采集模块采用三片AD7864-1同时采样,以满足12位同步采样的要求。在A/D转换电路中,三片AD7864-1使用同一个启动信号/convst,在/convst的上升沿" title="上升沿">上升沿转换开始。无需外部设置采样保持电路、参考基准和极性转换电路。在信号/convst的上升沿,BUSY信号被触发高电平并一直保持到四个通道都转换结束,同时所有跟踪保持器开始工作,将滤波电路输入的12路模拟信号相位信息保持一致,达到同步的要求。为了提高整个系统的采样速率,AD7864-1的采集模式是在转换过程中,每通道转换结束时(/EOC变为地电平)开始读出数据,转换由/convst的上升沿启动,转换结束由/EOC的下降沿来表示。此时片选信号/CS端接地,由读信号/RD读出数据。当读信号/RD和片选信号/CS同时保持低电平时才可读数据,读操作在工作时要确保写信号/WR处于高电平。每次读数据操作增加输出数据寄存器指针,读完最后一个转换数据时,将输出数据寄存器指针复位。写操作主要完成工作模式的设置,一般只在初始化或转换通道切换时进行。而进行数据采集的操作只要给出启动命令,启动设置的通道进行同步采集,待所有的数据转换结束后自动发出中断请求信号,然后进行相应通道的数据读取即可。
2.2  FPGA内部电路设计
  随着现场可编程门阵列(FPGA)技术的飞速发展,FPGA的应用日益广泛,它具有更高的密度、更快的工作速度和更大的编程灵活性,被广泛应用于各种电子类产品中。系统通过FPGA来实现高速数据缓存及逻辑控制。采用的器件是FLEX1K 系列的EP1K30TC144-1器件,其最大工作频率为40MHz,消耗1 533 个LC,平均编码时间为20个时钟周期。FPGA 除了要满足相应的时序要求外, 还要求控制数据的位数和A/D转换器的位数相匹配。数据缓存区要求既要有与A/D芯片的接口,又要有与系统主机的接口以提高数据吞吐率,因此通过EP1K30TC144-1芯片内置的先进先出(FIFO)缓冲存储器实现数据高速传输。为此设计了地址译码、读/写数据寄存器、控制通道寄存器、启动触发器和中断响应寄存器,所有的操作都是通过读写相应的寄存器实现。下面将介绍FPGA内部的各个设计模块。
2.2.1 向FIFO写数据的电路
  首先是六片FIFO,分为三组,即每片A/D对应两个FIFO,本文只以第一片AD7864-1为例来说明FIFO对数据的存储过程,在FPGA内部电路图中截取一组FIFO来进行描述,如图2所示。

 


  图中in1[11..0]表示第一片A/D转换后的12位数据线,分别与两片FIFO的data[]连接,因为是把A/D转换的数据写入FIFO,A/D的转换模式是转换完一路就向FIFO写数据,所以将FIFO 的写时钟wrclock与A/D的/eoc连接,当/eoc为低时,表明有一路转换结束,开始向FIFO写入数据。每片AD7864-1对应两片FIFO A和B,wrfull1a、wrreq1a、rdeq1a、rdemptyla、wrfulllb、wrreq1b、rdreq1b、rdempty1b分别是a和b的写满标志位、写请求信号、读请求信号、读空标志位。通过74139译码器,使wrfull1a、wrfull1b、rdempty1a、rdempty1b联合作用控制FIFO的读写操作。译码器作用的结果是只要A的wrfull1a为低,数据就一直写入A中,当wrfull1a为高时,切换数据流向,开始向B写数据。当wrfull标志为高电平时,表明FIFO达到半满,向系统申请中断,总线响应中断,立即启动读FIFO中的数据,当读到空时,Empty标志有效,停止读入操作。
2.2.2 中断请求发生电路
  在写数据的过程中,当三个FIFO都出现半满标志时,就需要对主机发送读请求信号,在FPGA内部通过一组或门、与门组合来产生该请求信号irq9,图3所示为中断请求的产生电路。

 

  图3中wrfull1a和 wrfull1b相或, wrfull2a和wrfull2b相或, wrfull3a和wrfull3b相或,这三组相或的结果通过一个与门之后产生读请求信号irq9。设计思想是:只要三组FIFO中每组有一个FIFO的写满标志为高,发送读请求信号,一旦主机响应了该请求,则需要将三片已达到半满状态的FIFO依次读数。这里使用一个中断请求而不是三个中断请求的原因是由于三个中断请求会由于优先级问题发生冲突等待,使读数据混乱,不利于数据的读取存储,还有可能因为等待时间过长而影响了采集速率。
2.2.3 主机读取数据电路
  当主机响应了读中断请求之后,就会开始从FIFO中取数,但是六个FIFO的工作基本保持一致,所以存在主机先从哪一个FIFO中读取数据的问题,因此需要设计一个数据选择读取电路,如图4所示。

 


  图中数据选择电路通过三位地址a0、a1、a2来对六个FIFO的六路数据选择输出。
2.2.4 A/D转换启动信号发生电路
  在本电路中还有一个A/D转换启动信号/convst的产生电路,三片AD7864-1使用同一个启动信号/convst,在/convst的上升沿转换开始。在第一次启动A/D芯片时,需要分配一个地址来启动A/D芯片,一旦启动成功,下一次的/convst主要由三片AD7864-1的BUSY信号来产生,因为在A/D转换过程中,busy信号都为高电平,当转换结束后,busy变低电平。所以只要三片AD7864-1的busy信号都为低电平时,表明12路转换结束,需要再次启动转换。该局部电路如图5所示。

 


  本设计的大量工作都是在FPGA内部实现的,简化了硬件电路, 同时也提高了其使用的简易性和配置的灵活性, 具有准确和快速的特点。
3 仿真结果
  FPGA内部电路的设计采用VHDL 硬件描述语言实现,并在ALTERA 公司的MAX+plusⅡ软件上编译仿真。采用全局同步时钟,避免了毛剌的产生,保证了信号的稳定性, 本文介绍的两个FIFO工作原理为乒乓式存储的原理,采用这种存储方式,主要是考虑到由于转换通路比较多,若每片A/D只对应一片FIFO,当主机不能及时读走FIFO中的数据时,A/D转换就不能正常进行,这就会影响数据的传输速度,也很容易使数据丢失。而采用两片FIFO的乒乓式存储之后,写满一片FIFO,在主机来不及读走数据时,可以将数据打入第二片FIFO,这样可以起到一个缓冲作用,不会由于数据的读取而影响整个系统的正常工作。该电路的设计是利用写满标志、读空标志通过74193译码进行两片FIFO的读写切换的,其仿真结果分别如图6、图7、图8所示。

 

 


  通过时序仿真证明,采用74193译码来控制两片FIFO的切换是可行的。设计中采用六片相同规格的FIFO,它们对数据的缓存是同步进行的。所以本设计中FIFO的读请求都是由半满标志产生的,从FIFO向外读数据时,只要rdempty1a不为高就一直保持从FIFO A中读数,当rdempty1a为高且rdempty1b为低时,开始读FIFO B中的数据。当FIFO的写满标志为高时,开始向主机发送请求。其他两组的工作原理和第一组相似,这里就不再叙述。
  根据上述原理设计的12通道数据采集卡,其结构完全遵循PC104 总线标准,它可对多达12通道的模拟量进行A/D转换,并对转换的数据进行存储 ,可直接作为PC104 的标准板卡使用。


参考文献
[1] 张载鸿. 微型机(PC系列)接口控制教程. 北京:清华大学出版社, 1992.
[2] 孙肖子,张企民. 模拟电子技术基础. 西安:西安电子科技大学出版社,2001.
[3] 丁玉美,高西全. 数字信号处理(第二版). 西安:西安电子科技大学出版社, 2001.
[4] 高鹏,安涛,寇怀成. Protel 99入门与提高.北京:人民邮电出版社,2000.
[5] 朱明程,董尔令. 可编程逻辑器件原理及应用. 西安:西安电子科技大学出版社,2004.
[6] 楮振勇,翁木云. FPGA设计及应用.西安:西安电子科技大学出版社, 2002.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。