基于AVR和CPLD的高速数据采集系统的设计

发布者:czl55555最新更新时间:2010-10-20 来源: 电子设计工程关键字:AVR  CPLD  高速数据采集 手机看文章 扫描二维码
随时随地手机看文章

  输入系统的信息大多数是模拟量,为使计算机能够处理这些模拟量,必须经由数据采集系统将模拟量转化为数字量。CPLD是在PAL、GAL等逻辑器件的基础上发展起来的,CPLD的规模比较大,适合于时序、组合等逻辑电路的应用场合,它的高集成度能力大大缩小电路板的尺寸,降低了系统的成本,而且能够提高系统的性能和可靠性。对于一个成型的探测系统而言,通常都是有采集储存部分的,无论是电信号、光信号、声音信号、磁信号等在被探测器接收到后大部分都需要转化为数字信号传给处理器才能完成分析、判断的过程。对于需要高速采集并存储的系统,常常需要购买昂贵的高速采集卡等设备,在基于CPLD、AVR等控制高速ADC、储存等技术的基础上,本文设计低成本、高速采集存储的硬件实现。

  1 系统总体设计方案

  系统利用ATmegal62作为主控制器,CPLD用于产生控制时序,二者相结合协调进行数据的采集与传输控制。图1给出其系统总体设计方案框图。

系统总体设计方案框图

  数据采集系统的工作原理是:模拟量信号经过传感器后转化成电压量,通过ADC将模拟量转换为数字量,而后进行传输存储和处理。在本系统中,在CPLD和AVR的控制下,将采集到的模拟信号经过A/D器件转换之后,转换结果先缓存到FIFO,再转存到非易失性Flash阵列中,其中FIFO不但可以实现缓存功能,还可以解决A/D转换之后数据位数跟Flash存储器的数据线位数不匹配的矛盾。

  1.1 采集部分

  本系统应用的A/D转换器是MAXl308,它具有8通道可编程配置,可接收数字输入分别激活每一路通道;100 ps通道间T/H匹配;转换时间为0.72(单通道),0.9(2通道),1.26(4通道),1.98μs(8通道);吞吐率为1 075(单通道),90(2通道),680(4通道),456千次/秒(8通道)。其他特性包括20 MHz T/H输入带宽、并具有内部时钟、内部(+2.5 V)或外部(+2.0~+3.O V)基准,以及低功耗省电模式。

  1.2 控制与存储部分

  如图2所示是4个Flash模块组采用流水线(pipeline)操作,使用该方式可以克服Flash写入速度较慢的缺点。Flash存储器的写入有2个阶段:数据加载阶段(通过I/0端口将数据写入页寄存器)和编程阶段(在芯片内部,将页寄存器的数据传输到存储单元)。由于编程阶段是自动进行的,不需要外部系统的干预,控制器可以进行其他事务的处理,如有效块地址的运算等,从而节省系统开销。NAND型Flash存储器的写操作以流水线方式进行,首先加载第1个Flash模块组,数据加载完后,第1个模块组进入自动编程阶段:再加载第2个Flash模块组,数据加载完后,第2个模块组进入自动编程阶段;然后依次对第3个乃至第4个模块组进行操作,当第4个模块组数据加载完后,第1个存储模块组已经自动编程结束,接着再加载和自动编程形成流水线的工作方式。从整个系统总体效果来看,它一直在进行存储加载数据。

4个Flash模块组采用流水线[page]

  2 程序设计与实现

  编程实现采集部分的功能,采集部分时序图如图3所示。任意选择两条通道进行内部时钟分析,图中为第3通道和第7通道,当控制信号产生低电平时,控制引脚起作用,触发采集功能,同时EOC引脚电平至低。在tCTR段时间后读信号被启动经过tACC的时间后,12位数据将出现在DO-D11引脚上。在整个采集、存储过程中其他通道和通道3、通道7一样,随后将数据存入数据缓存器中。

采集部分时序图

  2.1 控制A/D转换程序设计

  根据控制存储的要求,首先要设计控制A/D转换的状态机,用来确定A/D转换的状态,根据MAXl308工作时序特点而设计的控制A/D转换的状态机转换图如图4所示。实现控制A/D转换的状态机部分主要VHDL程序源代码如下:

程序

程序

根据MAXl308工作时序特点而设计的控制A[page]

  将程序下载至CPLD中运行调试,经过对电路的调试和测量,控制8通道A/D同时转换的状态机产生的示波器时序波形如图5所示,其中,0、1、2、3、4分别对应的是图3中的CONVST、EOC、EOLC、CS、RD,而第5通道是对FIF0的写信号。从示波器显示的波形图可以看出产生的8个连续的脉冲对应位置完全满足图3所要求的时序要求,也就是说在控制器同时控制8路信号的采集时不会出现时序混乱的情况。由此可知,采用本系统中设计的采集程序可以实现同时采集的要求,并且根据采集的脉冲宽度分析可知该系统能满足采集速度为10 Mb/s的设计要求。

控制8通道A

  2.2 控制Flash存储程序设计

  4个Flash存储器的流水线工作原理如图2所示,对单独的每一片Flash来说每一次存储都是在上一次存储过程中加载完成后进行,而对于由4片Flash存储器组成的整个系统,它一直在加载存储数据,这样可以保证存储速度大于采集速度,从而保证存储过程中不会因单片Flash存储速度慢而造成丢失数据。实现Flash存储的主要程序:

程序

  在数据加载期间本系统应采用DMA传输控制方式,即:每当FIF0的半满标志信号HF产生一次有效电平时,ATmegal62就启动一次中断,在中断程序中,ATmegal62将产生NAND Flash命令和有效地址,以及启动DMA控制器。一旦DMA控制器启动,ATmegal62就将转入后台进行有效地址的运算等,从而参与数据传输过程,整个数据从FIFO到Flash存储器的传输过程是由CPLD内部编写的DMA控制器控制完成。启动一次DMA控制器传输一页2048个字节的数据,一次中断完成16 K字节的传输。其示波器时序如图6所示:第0,1,2,3通道是FIF0的读数据时序波形,第4通道是Flash的写通道时序波形。

示波器时序

  3 结论

  通过使用AVR和CPLD编程,设计实现了一种成本低且可实现10 Mb/s以上并行采集数据率的高速数据采集存储系统。在分析MAXl308特性及转换时序的基础上,设计完成了A/D转换器及其外围电路,并通过调试可知时序稳定。通过VHDL语言实现了采集模块、控制与存储模块和Flash存储功能。在完成硬件连接后调试,试验结果显示,该设计能够实现低成本高速采集,多路同时采集速度大于10 Mb/s采集系统,具有一定的实用价值。

关键字:AVR  CPLD  高速数据采集 引用地址:基于AVR和CPLD的高速数据采集系统的设计

上一篇:一种基于FPGA和单片机的扫频仪设计与实现
下一篇:异构计算成为处理器芯片竞争热点

推荐阅读最新更新时间:2024-05-02 21:10

AVR单片机C语言编程技巧
AVR单片机C语言编程技巧 1、选择合适的算法和数据结构应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。。 2、使
[单片机]
一种基于高速数据采集卡的虚拟示波器开发
引言   虚拟仪器以通用计算机作为系统控制器,各种复杂测试功能、数据分析和结果显示都完全由计算机软件完成,在很多方面较传统仪器有无法比拟的优点。 = 本文在带有PCI总线接口的CS82G高速数据采集卡和Visual C++编程工具的基础上开发的快速虚拟示波器试验系统,集成了波形采集、数据分析、输出、显示等多种功能。同时,为保证数据采集和波形显示的实时性,设计中还采用了多线程技术。 图1 CS 82G采集卡系统框图 图2 软件系统总体流程图 虚拟示波器的系统组成 系统组成   本虚拟示波器系统主要由数据采集卡、计算机和专用的软件组成。 其中数据采集卡完成对输入测量信号的调理采集、缓存,并通过计算机PCI总线送入内存;计算机
[测试测量]
AVR内部EEPROM擦写次数测试程序
略作修改的程序,请再评测。 /*****************************************************/ /* 广州天河双龙电子公司北京分公司 */ /* 测试EEPROM读写次数 */ /* 2004年12月21日 */ /* 目标MCU:MEGA48 晶振:内部RC(INT) 8MHZ */ /*****************************************************/ #include iom48v.h #include macros.h #define
[单片机]
AVR单片机经典使用经验
AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。 AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。 “外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。 开发环境与工具:PC+下载线+实际的系统板 PC上的开发软件: AVR Studio(F
[单片机]
<font color='red'>AVR</font>单片机经典使用经验
怎样制作AVR单片机ISP下载线
下面介绍利用Protel99se电路绘图软件和热转印技术制作这种下载线的方法和步骤。 一、设计ISP下载线 PCB文件利用Protel99se绘带0《自带AVR单片机ISP下载线》一文中的原理图1(为方便制作,可省略该图中的VDl)。并将图中各元件按附表所述进行封装选择。 原理图绘制完毕后,依次点击原理图编辑器中的Tools(工具)/Up-date PCB(更新原理图)菜单,自动生成下载线PCB文件。在编辑下载线PCB文件时,可先按图1所示规划PCB板的大小和布局PCB板上的元件,然后让系统自动布线(为减小PCB尺寸,采用双面布线),最后对自动布线作适当调整,经过手动调整布线后的PCB板如图2所示。 二、分图层打印 P
[单片机]
怎样制作<font color='red'>AVR</font>单片机ISP下载线
装入CPLD/FPGA的步进电机运动控制器与驱动器
本设计实例进一步拓展了以前将步进电机驱动器集成到CPLD中的设计(参考文献1)。本实例不仅集成了驱动器,而且还集成了一个简单的单轴步进电机运动控制器。根据CPLD大小,可以将多个运动控制器设计到单一设备中。例如,单轴运动控制器采用68%或63%的可用宏单元设计到Xilinx XC95108中。运动控制器以确定的速度与时间曲线顺时针或逆时针旋转步进电机指定的步数。运动开始时,控制器对电机加速,直到其达到巡航速度,然后减速直到停止(图1)。 控制器可将电机速度调节到16 个值,V=VMAX×speed/16, 其中速度值为0到16的整数。在加速阶段,速度从1到16升高,在巡航阶段,速度保持在16,最后,在减速阶段,速度下降到1,直
[嵌入式]
AVR 中定义数据和命令输入方法
//CS=0 A0=0 写数据口 #define LcmWdataPort (*(volatile unsigned char *)0xFC00) //CS=0 A0=1 写命令口 #define LcmCmdPort (*(volatile unsigned char *)0xFE00) volatile unsigned char * 表示把后面的数据强制转换为指针类型
[单片机]
AVR单片机CRC校验码的查表与直接生成
摘要:循环冗余码校验CRC是常用的重要校验方法之一。AVR高速嵌入式单片机功能强大,在无线数据传输应用方面具有很大优势。本文基于Atmega128高速嵌入式单片机,实现32位CRC校验码的直接生成法和查表生成法;根据实验结果,分析两种方法的特点。 关键词:Atmega128 CRC校验码 CRC生成表 数据段 引 言   随着技术的不断进步,各种数据通信的应用越来越广泛。由于传输距离、现场状况、干扰等诸多因素的影响,设备之间的通信数据常会发生一些无法预测的错误。为了降低错误所带来的影响,一般在通信时采用数据校验的办法,而循环冗余码校验是常用的重要校验方法之一。   AVR高速嵌入式单片机是8位RISC MCU,执行大多数指
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved