《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 多路数据采集系统的设计

多路数据采集系统的设计

2009-04-08
作者:常铁原, 王 欣, 陈文军

    摘  要: 采用多通道的模数转换芯片AD7656,在并行接口模式下,同时进行6路数据采集。通过硬件实现对多路数据采集系统的控制,并用VHDL语言设计的状态机在QuartusⅡ开发软件中进行仿真。 

    关键词: CPLD; 多路并行数据采集; AD7656; FIFO; 状态机

 

    在许多测控系统中,经常会需要对多路信号进行采集、传输、存储与处理。例如三相电能表的数据采集,通常是用三片单相计量芯片。本文介绍的方案只用一片A/D芯片就可以完成三相信号的同时采集,并用CPLD控制,实现了多路并行数据采集和高速的存储,这样可以在很大程度上提高系统的信号采集和处理能力[1]。 

1 系统设计 

    本系统要进行多路数据采集,选用了A/D芯片AD7656。AD7656能进行6路数据同时采集,系统要求每20ms采128点,6路信号共采768点,每点为2B,也就是一个周期采1 536×8bit,采集完后写入存储器中,FIFO存储器IDT7203为2K×9bit,所以可以选用IDT7203。本系统除了A/D转换电路、数据缓存电路、对锁相环的分频电路外,还需要有地址译码电路。可编程逻辑器件CPLD集成了各种门阵列,通过用硬件描述语言写程序可实现以上各种功能[2]。锁相环采用4046芯片,CPLD分频后的信号与输入信号进行比较,通过锁相环倍频,此信号作为采样信号的同步信号。图1为系统总体设计方案。 

 

 

    此系统中CPLD是主控芯片,它用硬件描述语言VHDL写程序来控制A/D转换器的数据采集及向FIFO中存储数据和读取数据。当数据达到要求时,给CPU一个信号,通知CPU,待CPU取走数据后,给状态机一个复位信号,等待下一轮的数据存取。由于CPLD是从数字逻辑角度入手,所以编程要从时序、逻辑两个角度同时进行考虑。 

2 芯片的选择 

2.1 A/D转换器 

    系统的A/D转换芯片采用的是AD7656,它是6通道16位逐次逼近型ADC,在供电电压为5V,采样速率为最大即250kS/s时,功耗仅为160mW[3]。而且它有两种工作模式:串行接口模式和高速的并行接口模式,本系统应用的是并行接口模式。在数据转换时,有3个转换信号CONVSTA/B/C,用来控制每对或每4个或每6个ADC同时采样。3个CONVST管脚可以控制3对独立的模数转换器同时采样。如果将3个CONVST管脚连接在一起后,就可对6个ADC同时进行采样。其内部转换时序如图2所示。 

 

 

2.2 FIFO存储器 

    系统采用IDT7203,它是一种2K×9bit双端口存储器,可以实现先进先出算法,它能高速存储和读取数据,并且该存储器的两个端口时钟是相互独立的,所以既能进行异步读写操作又能进行同步读写操作。当写信号为低电平时,A/D转换的数据会不断存入FIFO中,当读信号为低电平时,要进行读操作,将数据读入CPU。当向FIFO中写入数据时,利用其各个标志来显示其数据的溢出或不足。为了防止数据溢出,当最后一个写信号的上升沿来临时全满标志FF变低。存储空间的一半满时,下一个写操作下降沿到来时,半满标志HF变低。当所有的数据已经从FIFO中读出,空标志EF变低,禁止更多的读操作。图3为FIFO的异步读写时序。 

 

 

2.3 可编程逻辑器件CPLD 

    系统采用ALTERA公司的MAX7000系列中的EPM7064芯片。采用此芯片除了能控制高速的A/D数据采集、高速的数据存储和读取,还能将整个设备电路中的一些译码等模块一并设计进去,从而在很大程度上减小了设备的体积。而且它是可以由用户进行编程以实现所需逻辑功能的数字集成电路,它具有设计周期短、可靠性高、修改方便等优点。 

2.4 锁相环 

    系统采用MOTOROLA公司的MC14046芯片,把输入的信号进行倍频,作为采样的同步信号。 

3 系统实现 

    本系统利用软件QuartusⅡ完成CPLD程序的编写,主要是由时钟模块和状态机控制模块组成。在时钟的驱动下,状态机的状态向下一个状态转换。A/D转换和FIFO的存储,在CPLD控制下并行执行[4]。 

3.1时钟产生模块 

    时钟是由外部晶振产生的,本系统采用20MHz的晶振,由于所设计的状态机中采样一个点需要5个状态,共需0.25μs,也就是最大采样频率是4MHz。系统要求20ms采样128点,输入50Hz的信号经过锁相环的128倍频,输出频率为6 400Hz,晶振要经过3 125次分频才能得到这样的采样同步信号。时钟信号驱动状态机的各个状态的转换,每出现一个同步信号采集一个点。 

3.2 状态机 

    状态机输入信号有时钟信号CLK和CPU发出的通知A/D转换器和FIFO复位的信号INT0;输出信号有A/D转换器的复位信号ADRST、转换信号ADCONVST、片选信号ADCS、读信号ADRD及FIFO的写信号FWR、复位信号FRST、通知CPU取数的信号INT1。 

    状态机在时钟信号驱动下,完成A/D转换及数据的存储和读取,不断将下一个状态中的内容赋值给当前状态。图4为其状态图。CPU向CPLD发送信号INT0,当INT0为低电平时进入下一个状态,AD7656及FIFO都复位,准备就绪。本系统把3个CONVST引脚连接在一起,即可对6个通道同时采样。在AD7656的CONVST信号为低电平时,AD7656准备好要进行转换,如果CONVST信号又变为高电平时,将启动AD7656进行转换,转换时间是3μs。这也就是说,CONVST信号能保持3μs,转换就可以完成。转换开始后,BUSY信号会自动变为高电平,并且一直保持高电平,等待转换完成后,BUSY信号则会自动变为低电平,此时可以进行读操作。如果采用并行接口模式并且以字节输入,转换完成之后,当片选信号CS一直保持低电平不变时,连续12个读信号可以依次连续被读出。当FWR信号为低电平时,可以向FIFO中写数据。 

 

 

    各个状态的功能用VHDL表述为: 

    when st0 => adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <= ′1′; 

    when st1 => adrst <=′1′;adconvst <=′1′;adcs <=′1′;adrd <= ′1′;fwr <=′1′; frst <=′0′; 

    …… 

    when st10=> adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <=′1′; 

    when others=>adrst <=′0′;adconvst <=′1′;adcs <=′1′;adrd <=′1′;fwr <=′1′; frst <= ′1′; 

    从状态3到状态5,即数据开始转换至完成。当进入状态6,数据转换完成开始进行准备把信号读出去,片选信号CS变低。在状态7中,AD的读信号RD变为低电平,准备好把数据读出去。在状态8时,FWR信号变为低电平,要把数据写入FIFO中,故A/D的读信号RD要保持为低电平,直到数据写入FIFO中。片选信号CS、A/D的读信号RD、FIFO写信号FWR都变为高电平,第一位数据读完,如果数据达不到要求,回到状态6继续读下一位,每读一位信号ADRCON加1,如果连续的12个数据依次被读出,仍达不到数据的要求,则回到状态0,对采集到的新的数据进行存取,直到数据达到要求时,向CPU申请中断,CPU发出地址信号,CPLD选通地址,将数据存放到该地址。 

4 仿真结果 

    本文采用VHDL语言,在QuartusⅡ开发软件仿真,描述了状态机是如何实现数据的采集、存储和读取的。仿真波形如图5所示。 

 

 

    由图5可以看到仿真结果完全满足所要设计的逻辑功能。第3个状态AD7656开始把模拟信号变为数字信号,等待转换结束后,第6个状态到第10个状态开始采集第一路,连续采集完12路通道中的数据并依次存入FIFO中。 

    本文提出了一种基于CPLD的多路数据采集系统的方法,可以方便地实现对模拟输入信号的采样传输及处理,具有速度快、可靠性高而且可升级性好等优点,其应用领域十分广泛。 

参考文献 

[1] 龙姝颖,汪渤,谷重阳.一种基于CPLD的多通道数据采集系统的设计[J]. 微计算机信息,2006,22(20):203-204,136. 

[2] 代芬,张承学.CPLD在高速多通道数据采集中的应用[J]. 电子技术应用,2003,29(2):75-77. 

[3] 陈茹梅,郭建颂.AD7656型模数转换器在信号采集系统中的应用[J].国外电子元器件,2006(2):67-71. 

[4] 潘松,黄继业,EDA技术实用教程[M]. 北京:科学出版社,2004.

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