课程设计任务书
学生姓名: 周国阳 专业班级: 电信1001班
指导教师: 沈维聪 工作单位: 信息工程学院 题 目:高速数据采集系统原理分析和设计
初始条件:
数据采集是数字信号处理的前提,研究和设计数据采集系统就显得尤为重要。本课程设计题要求学生在广泛查阅资料的基础上,对高速数据采集系统技术进行分类和比较,并作相关设计。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)搜索出若干种高速数据采集系统方案并对它们进行分析和比较。
(2)设计出一款高速数据采集系统。
(3)对所设计的高速数据采集系统的性能指标进行分析。
(4)给出系统(或部分)的仿真。
时间安排:
一周,其中3天设计,2天调试
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
摘要................................................................ I Abstract........................................................... II
1. 开发环境......................................................... 1
1.1仿真工具..................................................... 1
1.2编程工具..................................................... 1
2硬件模块 .......................................................... 2
3. 基本原理.......................................................... 4
3.1采样......................................................... 4
3.2量化与编码................................................... 4
3.3时钟频率合成................................................. 4
3.4存储技术..................................................... 5
4. 高速数据采集系统的方案........................................... 6
4.1单片机控制的高速数据采集系统................................. 6
4.2 基于MCU+FPGA组合的高速数据采集系统 ......................... 9
4.3基于DSP 和ADS8364的高速数据采集处理系统.................... 11
5. 高速数据采集系统的方案分析比较................................... 13
6. 设计系统......................................................... 15
6.1设计思想.................................................... 15
6.2硬件电路.................................................... 16
6.3电路分析.................................................... 17
7. 仿真结果及分析................................................... 18
7.1仿真结果.................................................... 18
7.2结果分析.................................................... 19
8. 总结............................................................. 20
参考文献........................................................... 21
附录一 代码........................................................ 22
本次项目是设计高速数据采集系统。数据采集是数据处理的重要前提,数据采集是指将模拟量(模拟信号)采集,转换成数字量(数字信号)后,再由计算机进行存储、处理、显示或输出过程。数据采集系统——DAs(Data Acquisition System) 是模拟量与数字量之间的转换接口。它在自动测试、生产控制、通信、信号处理等领域占有极其重要的地位。而高速数据采集系统更是航天、雷达、制导、测控、动态检测等高技术领域的关键技术。高速数据采集系统中的采样频率一般在几十MHz 到几百MHz 。
关键字:高速数据采集;转换;采样频率
Abstract
The project is to design high-speed data acquisition system. Data acquisition is an important prerequisite for data processing, data acquisition means that the analog (analog signal) acquisition, the digital conversion (digital signal), then the computer for storage, processing, display or output process. Data Acquisition System - DAs (Data Acquisition System) is the conversion of analog and digital interfaces between. It occupies an extremely important position in the field of automated testing, production control, communications and signal processing. The high-speed data acquisition system is the key technology in aerospace, radar, guidance, monitoring, motion detection and other high-tech fields. High-speed data acquisition system sampling frequency is generally in the tens of MHz to several hundred MHz. Keywords: high-speed data acquisition; conversion; sampling frequency
1. 开发环境
1.1仿真工具
我们这次在进行硬件仿真时运用的proteus 工具,它具有以下功能:
(1)能实现单片机仿真和SPICE 电路仿真的结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C 调试器、SPI 调试器、键盘和LCD 系统仿真等功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能。
1.2编程工具
Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
2硬件模块
一个典型的数据采集系统由传感器、信号调理通道、采样保持器、A/D转换器、数据缓存电路、微处理器及外设构成。如图1所示。
图1 数据采集系统的组成
(1)传感器
传感器把待测的非电物理量转变成数据采集系统能够检测的电信号。理想的传感器能够将各种被测量转换为高输出电平的电量,提供零输出阻抗,具有良好的线性。
(2)信号调理通道
信号调理通道主要完成了模拟信号的放大和滤波等功能。理想的传感器能够将被测量转换成高输出电平的电量,但是实际情况下,数据采集时,来自传感器的模拟信号一般都是比较弱的低电平信号,因此需要对信号进行放大。而A/D转换器的分辨率以满量程电压为依据,因此为了充分利用A/D转换器的分辨率,需要把模拟输入信号放大到与其满量程电压相应的电平。而传感器和电路中器件不可避免的会产生噪声,周围各种各样的发射源也会使信号混合上噪声,因此需要利用滤波器衰减噪声以提高输入信号的信噪比。
(3)采样保持器
A/D转换器完成一次转换需要一定的时间,而在转换期间希望A/D转换器输入端的模拟信号电压保持不变,才能保证正确的转换。当输入信号的频率较高时,就会产生较大的误差,为了防止这种误差的产生,必须在A/D转换器开始转换之前将信号的电平保持,转换之后又能跟踪输入信号的变化,保证较高的转换精度。为此,需要利用采样保持器来实现。
(4)A/D转换器
模拟信号转换成数字信号之后,才能利用微处理系统对其处理。因此A/D转换器是整个数据采集系统的核心,也是影响数据采集系统采样速率和精度的主要因素之一。对于高速模数转换器主要有逐次逼近型、并行比较型(闪烁型) 等分级型(半闪烁型) 等几种电路结构。高速的模数转换器内部一般都集成了采样保持器和多路数据分配器,以保证采样的精度和降低后续存储器的要求。
(5)数据缓存电路
对于高速数据采集系统,采集量化后的数据速率非常高而且数量大,微处理系统无法对数据进行实时处理,因此需要存储器对数据进行缓存。缓存区是以高速方式接收从A /D 转换数字化的数据,而又以相对低速的方式将数据送给计算机。用它的“快进慢出”来解决高速A /D 转换与低速计算机数据传输之间的矛盾。
(6)微处理器和外设
微处理器负责数据采集系统的管理和控制工作,对采集到的数据进行运算和处理,然后送到外部设备。
3. 基本原理
3.1采样
所谓采样就是不断地以固定的时间间隔采集模拟信号当时的瞬时值。由抽样定理可知,用数字方式处理模拟信号时,并不是用在整个作用期间的无穷多个点的值,而是只用取样点上的值就足够了。因此,在前后两次取样的空挡时间间隔内,可将取样所得模拟信号值暂时存放在存储介质上,通常是电容器上,以便将它量化和编码。
数字化采样方式主要有实时采样和等效采样两种,而等效采样又分为顺序采样和随机采样两种。
顺序取样是指在被测信号的周期内取样一次,取样信号每次延迟△t 时间,如此下去,就是说第N 次采样发生在第一次采样后的(△t 一l )N 后,取样后的离散数字信号构成的包络反映原信号的波形,但包络的周期比原信号的周期长的多,相当于把被测信号在时间轴拉长了。顺序采样不能采样非周期信号。
随机取样不是在信号的一个周期内完成全部取样过程,而是取样点分别取自若干个信号波形的不同位置,经过多个采集周期的样品积累,最终恢复出被测波形。但是随机取样也存在着弊端,不能观测非周期信号。
3.2量化与编码
量化就是把一个连续函数的无限个数值的集合映射为一个离散函数的有限个数值的集合。模拟信号X(t)经理想抽样后变成离散时间序列X(nTs),而X(nTs)的值是原模拟信号在各采样点的精确值,其取值是连续分布的,但是A /D 变换中表示X(nTs)用的是有限字长的二进制数,所谓量化就是指用一些不连续的数来逼近精确采样值的过程。因此量化过程中必然存在误差,这种误差称为量化误差
3.3时钟频率合成
目前高性能的频率信号均通过频率合成技术来实现。频率合成的实现方法主要三种方式:直接模拟频率合成法、间接频率合成和直接数字频率合成。直接模拟频率合成法是一种早期的频率合成方式,是指利用混频器、倍频器和分频器等对一个或几个频率进行算术运算产生所需频率。直接模拟频率合成法的优点是频率转换速度快,相位噪声低,缺点是需要很多中心频率不同的窄带滤波器来滤除
杂波,结构复杂,杂散多。间接频率合成技术又称锁相式频率合成,它是利用锁相技术实现频率的加、减、乘、除。其优点是由于锁相环路相当于一窄带跟踪滤波器。因此能很好地选择所需频率的信号,抑制杂散分量,避免了大量使用滤波器,十分有利于集成化和小型化。直接数字合成技术具有相位变换连续、频率转换速度快、频率分辨率高、相位噪声低、频率稳定度高、集成度高、易于控制等多种优点,但是DDS (直接数字式频率合成器)自身特点所造成的杂散以及频率较低成为限制DDS 应用的主要因素。
目前,DDS+PLL的技术受到广泛的重视,PLL 技术具有高频率、宽频、频谱质量好等优点,但其频率转换速度低。DDS 技术则具有高速频率转换能力、高度的频率和相位分辨能力,但目前尚不能做到宽带,频谱纯度也不如PLL 。混合式频率合成技术利用这两种技术各自的优点,将两者结合起来,其基本思想是利用DDS 的高分辨率来解决PLL 中频率分辨率和频率转换时间的矛盾。
3.4存储技术
分时存储技术利用一个高速锁存器将采集的高速数据锁存,而后利用多个相对慢速的存储器对数据进行存储以保证数据存储的可靠性。由于多个静态存储器分时参与了数据存储的过程,使得多个慢速静态存储器分时存储操作过程进行了叠加,其效果等效于一个高速静态存储器的操作。
数据降速存储技术,就是对在数据存储之前将高速数据的速度降低到低速存储器可以及时存储的程度。该方法避免了多个存储器的使用,只需利用一个大容量的存储器就可以实现数据的存储,实现起来相对分时存储简单。设计中可以利用串并转换电路对数据进行降速处理以满足后续的存储器速度较低的要求。串并转换电路的基本原理为数据的串并转换,将数据依次存入串行移位寄存器中,然后并行输出,降低了传输数据的速度,以满足存储器工作速度的要求。
4. 高速数据采集系统的方案
4.1单片机控制的高速数据采集系统
本系统主要由三部分组成:单片机8751控制部分、计算器和存储器部分、A/D转换模块。其硬件框图如图2所示。
图2 系统硬件框图
单片机控制部分包括地址和数据选择器, 本系统采用内置4KB EPROM的8751单片机。其作用有:
(1)负责 A/D转换过程的启动及完成控制;
(2)对自动存储于存储器内的采集数据进行处理, 也可通过串行口或并行接口传给主机(如PC 机) 作进一步处理。
地址选择器和数据选择器的功能是在单片机P1.0口线的控制下决定数据存储器的地址线和数据线连向何处。当 P1.0= 1时, 存储器的地址信号来自计数器输出, 数据信号来自A/D 转换器; 当 P1.0= 0时, 存储器则成为8751的外部数据存储器, 此时单片机可读取其中的数据。
计数器的作用是自动产生16位存储器地址信号以实现将A/D的转换结果自动按顺序快速存放存储单元中。该计数器为16位二进制计数器, 由四片 74LS161
四位二进制同步计数器级联构成[4],各片的异步清除端连在一起并由单片机P1.2脚控制。计数脉冲CP 来自A/D 转换模块。当计数器计满时, 由其进位信号向单片机INT0申请中断。该存储器对A/D转换器而言是只有写入操作, 用于存储 A/D转换器的转换数据, 而对单片机而言只有读操作, 即单片机只能读取其中的数据而不能改写其中的数据。
A/D 转换模块是本系统的核心部分。其原理框图如图3所示。
图3 A/ D转换模块原理框图
图中A/D 板是以高速 D/A 转换器 DAC0800为核心, 加上其他电路, 采用逐次逼近法构成的 8 位A/D 转换器, 其构成框图如图4所示。
图4 A/D 转换时序图
在启动信号START 的下降沿,A/D转换开始, 同时使BUSY 信号为低电平, 表明正在进行转换。如在A/D 转换过程中又按收到新的启动信号, 则重新开始转换。转换完成时,BUSY 变为高电平; OE是三态锁存器的输出允许控制线, 当其为低电平时, 允许转换数据输出。该A/D 转换器要求输入的模拟信号电压范围为0~5V, 完成一次A/D 转换时间为1.2 s。为了保证在A/D 转换进行被转换信号幅度保持稳定, 将被转换信号经采样保持器 SHC5320处理后再送到A/D 转换器的模拟信号转入端。SHC5320是高速采样/保持器, 其采样时间小于1.5 s,基本能满足A/D 转换速度的要求。由于其采样/保持控制端是高电平保持、低电平采样, 故使用中将A/D板的BUSY 信号反相后接到该控制端, 以保证在A/D为了能将每一次A/D 转换的结果快速存于存储器并同时启动下一次 A/D 转换, 特利用BUSY 信号的上升沿(表示一次A/D 转换已结束) 去触发单稳态触发器 1,该触发器的反相输出端Q1接至 A/D 板的OE 端以将转换数据送至存储器的数据线上, 同时作为存储器的写控制信号WR, 将转换数据写入当前的存储单元中。再用Q1的后沿(上升沿) 触发单稳触发器 2,其反相输出Q2一方面接到START 以启动下次转换, 另一方面接计数器的计数输入端 CP,使计数器输出加 1 以指向下一存储单元, 为存放下一转换数据做准备。图中 P1.1是来自单片机的控制线, 用于控制启动第一次A/D 转换和停止转换。上述的工作时序关系如图4所示。从时序图可见, 本系统在单片机控制启动第一次转换后即可自动完成启动- 转换- 存储- 启动的循环执行过程, 直到完成 64 KB的数据采集后向单片机申请中断要求停止。
4.2 基于MCU+FPGA组合的高速数据采集系统
本数据采集系统硬件总体框图如图5所示。
图5 数据采集系统硬件总体框图
如图所示,该数据采集系统工作原理如下: 系统上电完成初始化后,进入待触发状态,直至MCU 接收到启动信号后,向A /D 转换器输出工作时钟,同时向6路高速采集模块的FPGA 控制器发送采集允许指令,启动内部计时器,高速采集模块将处于等待触发信号的工作状态。当高速采集模块收到比较触发模块发出触发信号后,相应的FPGA 控制器将打开数据写入通道,向FIFO 缓冲区中连续写入规定个数的AD 采样结果后自动停止写入,同时FPGA 控制器将记录每次触发时定时器的值。之后FPGA 控制器将进入下一个等待触发状态中,直至收到下一个触发信号后再次循环以上操作。其间MCU 不断检查FIFO 缓冲区的数据并通过FPGA 控制器将采样结果和脉冲产生的时间写入存储器中。
该数据采集系统的主要模块功能说明:
(1)前端调理模块
对输入信号进行信号缓冲、放大,使信号不丢失。
(2)AYD 转化模块
实现模拟量到数字量的转换。
(3)FPGA 模块
对数字量进行缓冲,同时对写入缓冲模块的数据进行编码,即要求对每一次触发,写入规定个数的AD 采样结果,并将每次的触发时刻追加到AD 数据的尾部,第二次及以后的触发,存储方式与第一次相同。由于MCU(因为本系统采用C8051F 单片机) 对外部存储器写地址速度比较慢,同时FPGA 的缓冲模块对读数据的速度又有一定的要求,所以不能采用MCU 内部的时钟频率来写地址,在本设计方案中,由FPGA 分频出一个10MI-Iz 的频率,送给MCU ,这样可以快速对外部存储器写地址。
(4)MCU 控制模块
本设计采用C8051F120单片机作为系统的主控制芯片,控制整个系统的启动、停止,数据采集允许,数据传输等功能。
(5)存储器模块
存储数据,包含AD 采样结果和触发时刻。
(6)电源模块
DC-DC 模块实现电压的转化,给各芯片提供合适的工作电压。
(7)时钟模块
时钟模块给系统提供时钟源,通过锁相环可以分频或倍频出所需要的时钟频率。
(8)指示模块
指示模块主要实现系统工作状态的指示,如电源指示等,读数指示等等。
(9)启动模块
启动模块实现系统的启动,当按钮按下时,启动电路工作,系统得到电平触发,将立刻启动。
4.3基于DSP 和ADS8364的高速数据采集处理系统
该系统主要由信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块和USB2.0通信模块组成。它能够在板卡上实现信号的采集及前端处理,并能通过USB 总线与上位机通信,实现数据的存储、后端处理及显示。采用CPLD 控制ADS8364完成数据的A/D转换,转换后的数据预先存储到FIFO 中,再经DSP 进行前端的数字信号处理后,通过USB 总线传给上位机,并在上位机上进行存储、显示和分析等。该系统完全可以满足信号采集处理对高精度及实时性的要求。
本数据采集处理系统主要由前端信号调理电路、ADC 芯片ADS8364、CPLD 芯片EPM3128A 、DSP 芯片TMS320F2812、USB 芯片CY7C68013及其外围电路组成。系统原理框图如图6所示。
图6 系统原理框图
系统主要完成的任务为:DSP 接收上位机通过USB 总线发送的命令,完成系统工作参数的设置,并通过模拟地址/数据总线与CPLD 进行通信,向CPLD 发送控制命令;对外部的多路模拟量输入进行信号调理,在CPLD 控制下进行单通道
或多通道A/D转换,将采集到的数据存储在一片FIFO 芯片中;当FIFO 中存储的数据半满时,对DSP 产生一个中断信号,DSP 收到此中断信号后,取出FIFO 中的部分数据,进行前端数字信号处理,将处理完毕的数据通过USB 总线传给上位机;上位机实现各种图形界面操作和后端信号处理,对所采集的信号进行分析。系统可对输入的多路模拟信号进行同步采样,这就使得采集到的数据不仅含有模拟信号的幅度特性,同时还保持不同模拟信号之间的相位差异;采样频率可以预置,以适应不同速率的采样要求。
系统硬件包括信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块以及USB 通信模块。
5. 高速数据采集系统的方案分析比较
设计一个高速数据采集系统应满足以下两个基本性能要求:一是高速性,现在高速数据采集通常要求达到几十甚至几百 MSPS的采样速度,因此需要采用高速 ADC技术和高速缓存技术来保证采样和数据传输的高速性;二是大容量,高速数据采集必然带来巨大的数据流量,一个4通道20MH 采样率16位精度数据采集系统采样 0.1s 将产生 16M的数据量,所以需要采用海量缓存来解决采样数据的存储问题。
为此,针对上述提出的方案,在此做出简单的分析与比较如下: (1)单片机控制的高速数据采集系统是一种由8751单片机控制的高速数据采集系统。该系统的数据采集与存储完全靠硬件实现, 其数据采样频率只取决于所选用的A/D转换器, 而不受8751单片机速度的影响, 因而可实现高速数据采集。本设计方案使用的MCU 为普通的51单片机,其他芯片都是些普通的逻辑芯片,所以方案易于实现,性价比较高。但是由于51单片机的速度有限,与PC 的数据传输的方式是通过RS232接口,其速度相当有限,而采集的速度可能达到200M ,这可能导致其未上传完数据,又被新的数据覆盖。当然可通过增大缓冲区域的大小,来防止其被覆盖,但是增大高速缓存区的存储量也将增大成本。
(2)基于MCU+FPGA组合的高速数据采集系统中采用的C8051F120单片机,其外部时钟为22.114800Mhz ,指令执行周期不需要经过12分频,这个速度解决了方案一中51单片机速度不足的缺点,使得该系统具备及时上传采集的数据到上位机。方案中多路AD 采集数据,降低AD 转换速率的要求,降低成本,且采用FPGA 来控制数据的采集及存储。该方案实现的性能可靠,采集数据速度远远优于方案一,但是FPGA 的制作成本较高,整个系统的实现成本很高。
(3)基于DSP 和ADS8364的高速数据采集处理系统中该系统主要由信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块和USB2.0通信模块组成。它能够在板卡上实现信号的采集及前端处理,并能通过USB 总线与上位机通信,实现数据的存储、后端处理及显示。采用CPLD 控制ADS8364完成数据的A/D转换,转换后的数据预先存储到FIFO 中,再经DSP 进行前端的数字信号处理后,通过USB 总线传给上位机,并在上位机上进行存储、显示和分析等。该
系统完全可以满足信号采集处理对高精度及实时性的要求。该方案采用的较新的CPLD 技术,使得AD 芯片的精确时钟控制问题得到解决,且综合了方案二中分时对A/D数据进行采集,降低了AD 方面的成本,同时方案中DSP 处理器具有高速数据处理的能力,其通过USB 接口同上位机进行联系,如今的USB2.0以达到480Mbps ,这将满足其将FIFO 中的数据及时传递到上位机中,解决了方案一中,缓冲区数据可能被覆盖的问题。
6. 设计系统
6.1设计思想
图7 软件系统框图
6.2硬件电路
图8 硬件电路图
6.3电路分析
在我们的控制部分,我们选用了51单片机。理由如下:
1. 单片机多功能,少引脚,使得引脚复用现象较多。
2. 单片机具有四种总线形式:P0和P2组成的16位地址地址总线;P0分时复用为8位数据总线;ALE 、PSEN 、RST 、EA 和P3口的INT0、INT1、T0、T1、WR 、RD 以及P1口的T2、T2EX 组成控制总线;而P3口的RXD 、TXD 组成串行通信总线。
在我们的AD 转换中,选用的是ADC0809。由于ADC0809具有输出3态锁存器,其八位数据输出引脚可直接与数据总线相连。地址译码引脚A 、B 、C 分别与地址总线低三位A0、A1、A2相连,以选通IN0~IN7中的一个通道。在启动A/D转换时,由单片机的P3.4控制A/D转换器的地址锁存和转换启动,由于ALE 和START 连在一起,因此AD0809在锁存通道的同时,也启动了A/D转换器。在读取转换结果时,用低电平的读信号RD ,产生的正脉冲作为OE 信号,用以打开三态输出锁存器。将转换结果输出。而低电平的写信号WR 则表示转换结束状态信号。
在我们的串口通信中,我们选择了串口通信MAX232芯片,MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路, 使用+5v单电源供电,可以实现TTL 电平与RS-232C 电平相互转换的IC 芯片。
为了显示电压的大小,我们选用了LED 数码显示管。为了显示字符,要为LED 显示器提供显示段码(或称字形代码),组成一个“8”字的七段,再加上1个小数点位,共计八段。
7. 仿真结果及分析
7.1仿真结果
设定的输入模拟量分别为5V,4V,3.5V,2V,1V,2.5V,2V,3V 。
图9 数码管显示模拟量和通道号的仿真图
图10 虚拟终端显示数字量的仿真图
7.2结果分析
通过结果发现我们输入的电压与数码管上的数字基本相同,虽然出现了一些误差,但误差都是在小数点后面,误差都是在允许范围之内,所以总体而言,我们这个系统设计的还是比较成功的。 由模拟量与数字量的转换关系模拟量5V =数字量255得到:数字量=模拟量*51,再将十进制数转换成十六进制数。
由输入模拟量分别为5V,4V,3.5V,2V,1V,2.5V,2V,3V
得到的数字量分别是255,204,178.5,102,51,127.5,102,153。
把最后的结果由十六进制数转换成十进制数分别是217,204,,178,102,51,128,102,153。
说明该系统能完成模拟量到识字量的转换,对整数量能精确的进行转换,但对小数的转换会出现很小的误差,不能精确的转换。
而且在转换循环过程中,对于同一个模拟量的转换,得到的数字量并不一定相同,这种情况下我们最好选取大多数相同的那个数字。
8. 总结
课程设计是继专业理论学习和实验教学之后又一重要的实践性教学环节。它的任务是在学生掌握和具备电子技术知识与单元电路的设计能力之后,综合所学知识进一步学习电子电路系统的设计方法和实验方法,为今后从事电子技术领域的工程设计打好基础基本要求。
我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。平时看课本时,理论知识很枯燥,让人看而生畏,总是不能深入而透彻的掌握知识。而做完课程设计,一些问题就迎刃而解了,而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个课程设计对我们的作用是非常大的。
在制作实验报告时,发现只有细心耐心恒心一定要有才能做好事情,首先是线的布局上既要美观又要实用和走线简单,兼顾到方方面面去考虑是很需要的,否则只是一纸空话。经过一个星期的学习,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长;生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师、同学的辛勤指导下,终于顺利完成。
虽然单片机课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活。
参考文献
[2]. 张毅刚,《单片机原理及应用》,北京:高等教育出版社,2007
[3]. 徐仁贵,《微型计算机接口技术及应用》,北京:机械工业出版社,2007
[4]. 诸昌钤,《LED 显示屏系统原理及工程技术》,成都:电子科技大学出版社,2004
[5]. 梅开乡,《数字逻辑电路》,北京:电子工业出版社,2003
[1]. 李全利, 《单片机原理及接口技术》, 北京:高等教育出版社,2004
附录一 代码
/*main.c*/
#include "led.c"
#define uchar unsigned char
#define uint unsigned int
void main()
{
while(1)
{
uint cnt=0;
uchar i,j,n=100;
while(cnt!=560)
{
switch(cnt++)
{
case 0: ad0to7();break;
case 1: decodenum(Vi[0],0);break;
case 70: decodenum(Vi[1],1);break;
case 140: decodenum(Vi[2],2);break;
case 210:decodenum(Vi[3],3);break;
case 280:decodenum(Vi[4],4);break;
case 350:decodenum(Vi[5],5);break;
case 420:decodenum(Vi[6],6);break;
case 490:decodenum(Vi[7],7);break;
}
disp();
}
/*串行通信设置*/
TMOD = 0X20;//波特率发生器T1工作在模式2上
SCON = 0X40;//设串口工作方式1,发送状态
PCON = 0X00;//波特率不加倍
TH1=0xFA;//设定波特率4800
TL1=TH1;
TR1=1;//开
for(j=0;j
{
SBUF = ad_action(j);//数据送入串口缓冲器
while(!TI); //等待串行中断
TI = 0; //清TI ,必须软件清除
j++;
while(--n); //延时
}
for(i=0;i
}
}
/*adc0809.c*/
#include
#include
#include "numcode.h"
#define uchar unsigned char
#define uint unsigned int
uchar chnn;//通道号chnn chn
#define adin XBYTE[0x7ff8+chnn]
static float Vi[8];
void delayus(uint us)
{
while(us--);
}
uchar ad_action(uchar chn)//读AD 转换数据
{
uchar read_data;
chnn=chn;
adin=chn;
delayus(15);//转换数据
read_data=adin;
return read_data;
}
void ad0to7()
{
uchar i;
for(i=0;i
Vi[i]=(ad_action(i)/255.0)*5.0+0.009;
}
/*led.c*/
#include "adc0809.c"
#define LED_Data P2 //通道号
#define A 10
#define U 11
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit dp=P1^4;
为校准ad 的误差 //0.009
#define LED_slect P1
static uchar dispdata[4];
void decodenum(float adv,uchar chn)
{
uint temp;
temp=(uint)(adv*100);
dispdata[0]=temp/100;
dispdata[1]=temp/10%10;
dispdata[2]=temp%10;
dispdata[3]=chn;//最后一位为通道号
}
void select(uchar LED)
{
switch(LED)
{
case 0:LED1=0;break;
case 1:LED2=0;break;
case 2:LED3=0;break;
case 3:LED4=0;break;
default: LED_slect=0xff;
}
}
void dispone(uchar LED,bit ifpoint,uchar number) //number 0--9 {
select(LED);
if(ifpoint)
dp=1;
else
dp=0;
LED_Data=num[number]|0x80;
delayus(300);
LED_slect=0xff;
}
void disp()
{
uchar i;
bit point;
for(i=0;i
{
if(i==1)
point=0;
else
point=1;
dispone(i,point,dispdata[i]);
}
}
/*numcode.h*/
unsigned char code num[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x3e };
课程设计任务书
学生姓名: 周国阳 专业班级: 电信1001班
指导教师: 沈维聪 工作单位: 信息工程学院 题 目:高速数据采集系统原理分析和设计
初始条件:
数据采集是数字信号处理的前提,研究和设计数据采集系统就显得尤为重要。本课程设计题要求学生在广泛查阅资料的基础上,对高速数据采集系统技术进行分类和比较,并作相关设计。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)搜索出若干种高速数据采集系统方案并对它们进行分析和比较。
(2)设计出一款高速数据采集系统。
(3)对所设计的高速数据采集系统的性能指标进行分析。
(4)给出系统(或部分)的仿真。
时间安排:
一周,其中3天设计,2天调试
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
摘要................................................................ I Abstract........................................................... II
1. 开发环境......................................................... 1
1.1仿真工具..................................................... 1
1.2编程工具..................................................... 1
2硬件模块 .......................................................... 2
3. 基本原理.......................................................... 4
3.1采样......................................................... 4
3.2量化与编码................................................... 4
3.3时钟频率合成................................................. 4
3.4存储技术..................................................... 5
4. 高速数据采集系统的方案........................................... 6
4.1单片机控制的高速数据采集系统................................. 6
4.2 基于MCU+FPGA组合的高速数据采集系统 ......................... 9
4.3基于DSP 和ADS8364的高速数据采集处理系统.................... 11
5. 高速数据采集系统的方案分析比较................................... 13
6. 设计系统......................................................... 15
6.1设计思想.................................................... 15
6.2硬件电路.................................................... 16
6.3电路分析.................................................... 17
7. 仿真结果及分析................................................... 18
7.1仿真结果.................................................... 18
7.2结果分析.................................................... 19
8. 总结............................................................. 20
参考文献........................................................... 21
附录一 代码........................................................ 22
本次项目是设计高速数据采集系统。数据采集是数据处理的重要前提,数据采集是指将模拟量(模拟信号)采集,转换成数字量(数字信号)后,再由计算机进行存储、处理、显示或输出过程。数据采集系统——DAs(Data Acquisition System) 是模拟量与数字量之间的转换接口。它在自动测试、生产控制、通信、信号处理等领域占有极其重要的地位。而高速数据采集系统更是航天、雷达、制导、测控、动态检测等高技术领域的关键技术。高速数据采集系统中的采样频率一般在几十MHz 到几百MHz 。
关键字:高速数据采集;转换;采样频率
Abstract
The project is to design high-speed data acquisition system. Data acquisition is an important prerequisite for data processing, data acquisition means that the analog (analog signal) acquisition, the digital conversion (digital signal), then the computer for storage, processing, display or output process. Data Acquisition System - DAs (Data Acquisition System) is the conversion of analog and digital interfaces between. It occupies an extremely important position in the field of automated testing, production control, communications and signal processing. The high-speed data acquisition system is the key technology in aerospace, radar, guidance, monitoring, motion detection and other high-tech fields. High-speed data acquisition system sampling frequency is generally in the tens of MHz to several hundred MHz. Keywords: high-speed data acquisition; conversion; sampling frequency
1. 开发环境
1.1仿真工具
我们这次在进行硬件仿真时运用的proteus 工具,它具有以下功能:
(1)能实现单片机仿真和SPICE 电路仿真的结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C 调试器、SPI 调试器、键盘和LCD 系统仿真等功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能。
1.2编程工具
Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision )将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
2硬件模块
一个典型的数据采集系统由传感器、信号调理通道、采样保持器、A/D转换器、数据缓存电路、微处理器及外设构成。如图1所示。
图1 数据采集系统的组成
(1)传感器
传感器把待测的非电物理量转变成数据采集系统能够检测的电信号。理想的传感器能够将各种被测量转换为高输出电平的电量,提供零输出阻抗,具有良好的线性。
(2)信号调理通道
信号调理通道主要完成了模拟信号的放大和滤波等功能。理想的传感器能够将被测量转换成高输出电平的电量,但是实际情况下,数据采集时,来自传感器的模拟信号一般都是比较弱的低电平信号,因此需要对信号进行放大。而A/D转换器的分辨率以满量程电压为依据,因此为了充分利用A/D转换器的分辨率,需要把模拟输入信号放大到与其满量程电压相应的电平。而传感器和电路中器件不可避免的会产生噪声,周围各种各样的发射源也会使信号混合上噪声,因此需要利用滤波器衰减噪声以提高输入信号的信噪比。
(3)采样保持器
A/D转换器完成一次转换需要一定的时间,而在转换期间希望A/D转换器输入端的模拟信号电压保持不变,才能保证正确的转换。当输入信号的频率较高时,就会产生较大的误差,为了防止这种误差的产生,必须在A/D转换器开始转换之前将信号的电平保持,转换之后又能跟踪输入信号的变化,保证较高的转换精度。为此,需要利用采样保持器来实现。
(4)A/D转换器
模拟信号转换成数字信号之后,才能利用微处理系统对其处理。因此A/D转换器是整个数据采集系统的核心,也是影响数据采集系统采样速率和精度的主要因素之一。对于高速模数转换器主要有逐次逼近型、并行比较型(闪烁型) 等分级型(半闪烁型) 等几种电路结构。高速的模数转换器内部一般都集成了采样保持器和多路数据分配器,以保证采样的精度和降低后续存储器的要求。
(5)数据缓存电路
对于高速数据采集系统,采集量化后的数据速率非常高而且数量大,微处理系统无法对数据进行实时处理,因此需要存储器对数据进行缓存。缓存区是以高速方式接收从A /D 转换数字化的数据,而又以相对低速的方式将数据送给计算机。用它的“快进慢出”来解决高速A /D 转换与低速计算机数据传输之间的矛盾。
(6)微处理器和外设
微处理器负责数据采集系统的管理和控制工作,对采集到的数据进行运算和处理,然后送到外部设备。
3. 基本原理
3.1采样
所谓采样就是不断地以固定的时间间隔采集模拟信号当时的瞬时值。由抽样定理可知,用数字方式处理模拟信号时,并不是用在整个作用期间的无穷多个点的值,而是只用取样点上的值就足够了。因此,在前后两次取样的空挡时间间隔内,可将取样所得模拟信号值暂时存放在存储介质上,通常是电容器上,以便将它量化和编码。
数字化采样方式主要有实时采样和等效采样两种,而等效采样又分为顺序采样和随机采样两种。
顺序取样是指在被测信号的周期内取样一次,取样信号每次延迟△t 时间,如此下去,就是说第N 次采样发生在第一次采样后的(△t 一l )N 后,取样后的离散数字信号构成的包络反映原信号的波形,但包络的周期比原信号的周期长的多,相当于把被测信号在时间轴拉长了。顺序采样不能采样非周期信号。
随机取样不是在信号的一个周期内完成全部取样过程,而是取样点分别取自若干个信号波形的不同位置,经过多个采集周期的样品积累,最终恢复出被测波形。但是随机取样也存在着弊端,不能观测非周期信号。
3.2量化与编码
量化就是把一个连续函数的无限个数值的集合映射为一个离散函数的有限个数值的集合。模拟信号X(t)经理想抽样后变成离散时间序列X(nTs),而X(nTs)的值是原模拟信号在各采样点的精确值,其取值是连续分布的,但是A /D 变换中表示X(nTs)用的是有限字长的二进制数,所谓量化就是指用一些不连续的数来逼近精确采样值的过程。因此量化过程中必然存在误差,这种误差称为量化误差
3.3时钟频率合成
目前高性能的频率信号均通过频率合成技术来实现。频率合成的实现方法主要三种方式:直接模拟频率合成法、间接频率合成和直接数字频率合成。直接模拟频率合成法是一种早期的频率合成方式,是指利用混频器、倍频器和分频器等对一个或几个频率进行算术运算产生所需频率。直接模拟频率合成法的优点是频率转换速度快,相位噪声低,缺点是需要很多中心频率不同的窄带滤波器来滤除
杂波,结构复杂,杂散多。间接频率合成技术又称锁相式频率合成,它是利用锁相技术实现频率的加、减、乘、除。其优点是由于锁相环路相当于一窄带跟踪滤波器。因此能很好地选择所需频率的信号,抑制杂散分量,避免了大量使用滤波器,十分有利于集成化和小型化。直接数字合成技术具有相位变换连续、频率转换速度快、频率分辨率高、相位噪声低、频率稳定度高、集成度高、易于控制等多种优点,但是DDS (直接数字式频率合成器)自身特点所造成的杂散以及频率较低成为限制DDS 应用的主要因素。
目前,DDS+PLL的技术受到广泛的重视,PLL 技术具有高频率、宽频、频谱质量好等优点,但其频率转换速度低。DDS 技术则具有高速频率转换能力、高度的频率和相位分辨能力,但目前尚不能做到宽带,频谱纯度也不如PLL 。混合式频率合成技术利用这两种技术各自的优点,将两者结合起来,其基本思想是利用DDS 的高分辨率来解决PLL 中频率分辨率和频率转换时间的矛盾。
3.4存储技术
分时存储技术利用一个高速锁存器将采集的高速数据锁存,而后利用多个相对慢速的存储器对数据进行存储以保证数据存储的可靠性。由于多个静态存储器分时参与了数据存储的过程,使得多个慢速静态存储器分时存储操作过程进行了叠加,其效果等效于一个高速静态存储器的操作。
数据降速存储技术,就是对在数据存储之前将高速数据的速度降低到低速存储器可以及时存储的程度。该方法避免了多个存储器的使用,只需利用一个大容量的存储器就可以实现数据的存储,实现起来相对分时存储简单。设计中可以利用串并转换电路对数据进行降速处理以满足后续的存储器速度较低的要求。串并转换电路的基本原理为数据的串并转换,将数据依次存入串行移位寄存器中,然后并行输出,降低了传输数据的速度,以满足存储器工作速度的要求。
4. 高速数据采集系统的方案
4.1单片机控制的高速数据采集系统
本系统主要由三部分组成:单片机8751控制部分、计算器和存储器部分、A/D转换模块。其硬件框图如图2所示。
图2 系统硬件框图
单片机控制部分包括地址和数据选择器, 本系统采用内置4KB EPROM的8751单片机。其作用有:
(1)负责 A/D转换过程的启动及完成控制;
(2)对自动存储于存储器内的采集数据进行处理, 也可通过串行口或并行接口传给主机(如PC 机) 作进一步处理。
地址选择器和数据选择器的功能是在单片机P1.0口线的控制下决定数据存储器的地址线和数据线连向何处。当 P1.0= 1时, 存储器的地址信号来自计数器输出, 数据信号来自A/D 转换器; 当 P1.0= 0时, 存储器则成为8751的外部数据存储器, 此时单片机可读取其中的数据。
计数器的作用是自动产生16位存储器地址信号以实现将A/D的转换结果自动按顺序快速存放存储单元中。该计数器为16位二进制计数器, 由四片 74LS161
四位二进制同步计数器级联构成[4],各片的异步清除端连在一起并由单片机P1.2脚控制。计数脉冲CP 来自A/D 转换模块。当计数器计满时, 由其进位信号向单片机INT0申请中断。该存储器对A/D转换器而言是只有写入操作, 用于存储 A/D转换器的转换数据, 而对单片机而言只有读操作, 即单片机只能读取其中的数据而不能改写其中的数据。
A/D 转换模块是本系统的核心部分。其原理框图如图3所示。
图3 A/ D转换模块原理框图
图中A/D 板是以高速 D/A 转换器 DAC0800为核心, 加上其他电路, 采用逐次逼近法构成的 8 位A/D 转换器, 其构成框图如图4所示。
图4 A/D 转换时序图
在启动信号START 的下降沿,A/D转换开始, 同时使BUSY 信号为低电平, 表明正在进行转换。如在A/D 转换过程中又按收到新的启动信号, 则重新开始转换。转换完成时,BUSY 变为高电平; OE是三态锁存器的输出允许控制线, 当其为低电平时, 允许转换数据输出。该A/D 转换器要求输入的模拟信号电压范围为0~5V, 完成一次A/D 转换时间为1.2 s。为了保证在A/D 转换进行被转换信号幅度保持稳定, 将被转换信号经采样保持器 SHC5320处理后再送到A/D 转换器的模拟信号转入端。SHC5320是高速采样/保持器, 其采样时间小于1.5 s,基本能满足A/D 转换速度的要求。由于其采样/保持控制端是高电平保持、低电平采样, 故使用中将A/D板的BUSY 信号反相后接到该控制端, 以保证在A/D为了能将每一次A/D 转换的结果快速存于存储器并同时启动下一次 A/D 转换, 特利用BUSY 信号的上升沿(表示一次A/D 转换已结束) 去触发单稳态触发器 1,该触发器的反相输出端Q1接至 A/D 板的OE 端以将转换数据送至存储器的数据线上, 同时作为存储器的写控制信号WR, 将转换数据写入当前的存储单元中。再用Q1的后沿(上升沿) 触发单稳触发器 2,其反相输出Q2一方面接到START 以启动下次转换, 另一方面接计数器的计数输入端 CP,使计数器输出加 1 以指向下一存储单元, 为存放下一转换数据做准备。图中 P1.1是来自单片机的控制线, 用于控制启动第一次A/D 转换和停止转换。上述的工作时序关系如图4所示。从时序图可见, 本系统在单片机控制启动第一次转换后即可自动完成启动- 转换- 存储- 启动的循环执行过程, 直到完成 64 KB的数据采集后向单片机申请中断要求停止。
4.2 基于MCU+FPGA组合的高速数据采集系统
本数据采集系统硬件总体框图如图5所示。
图5 数据采集系统硬件总体框图
如图所示,该数据采集系统工作原理如下: 系统上电完成初始化后,进入待触发状态,直至MCU 接收到启动信号后,向A /D 转换器输出工作时钟,同时向6路高速采集模块的FPGA 控制器发送采集允许指令,启动内部计时器,高速采集模块将处于等待触发信号的工作状态。当高速采集模块收到比较触发模块发出触发信号后,相应的FPGA 控制器将打开数据写入通道,向FIFO 缓冲区中连续写入规定个数的AD 采样结果后自动停止写入,同时FPGA 控制器将记录每次触发时定时器的值。之后FPGA 控制器将进入下一个等待触发状态中,直至收到下一个触发信号后再次循环以上操作。其间MCU 不断检查FIFO 缓冲区的数据并通过FPGA 控制器将采样结果和脉冲产生的时间写入存储器中。
该数据采集系统的主要模块功能说明:
(1)前端调理模块
对输入信号进行信号缓冲、放大,使信号不丢失。
(2)AYD 转化模块
实现模拟量到数字量的转换。
(3)FPGA 模块
对数字量进行缓冲,同时对写入缓冲模块的数据进行编码,即要求对每一次触发,写入规定个数的AD 采样结果,并将每次的触发时刻追加到AD 数据的尾部,第二次及以后的触发,存储方式与第一次相同。由于MCU(因为本系统采用C8051F 单片机) 对外部存储器写地址速度比较慢,同时FPGA 的缓冲模块对读数据的速度又有一定的要求,所以不能采用MCU 内部的时钟频率来写地址,在本设计方案中,由FPGA 分频出一个10MI-Iz 的频率,送给MCU ,这样可以快速对外部存储器写地址。
(4)MCU 控制模块
本设计采用C8051F120单片机作为系统的主控制芯片,控制整个系统的启动、停止,数据采集允许,数据传输等功能。
(5)存储器模块
存储数据,包含AD 采样结果和触发时刻。
(6)电源模块
DC-DC 模块实现电压的转化,给各芯片提供合适的工作电压。
(7)时钟模块
时钟模块给系统提供时钟源,通过锁相环可以分频或倍频出所需要的时钟频率。
(8)指示模块
指示模块主要实现系统工作状态的指示,如电源指示等,读数指示等等。
(9)启动模块
启动模块实现系统的启动,当按钮按下时,启动电路工作,系统得到电平触发,将立刻启动。
4.3基于DSP 和ADS8364的高速数据采集处理系统
该系统主要由信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块和USB2.0通信模块组成。它能够在板卡上实现信号的采集及前端处理,并能通过USB 总线与上位机通信,实现数据的存储、后端处理及显示。采用CPLD 控制ADS8364完成数据的A/D转换,转换后的数据预先存储到FIFO 中,再经DSP 进行前端的数字信号处理后,通过USB 总线传给上位机,并在上位机上进行存储、显示和分析等。该系统完全可以满足信号采集处理对高精度及实时性的要求。
本数据采集处理系统主要由前端信号调理电路、ADC 芯片ADS8364、CPLD 芯片EPM3128A 、DSP 芯片TMS320F2812、USB 芯片CY7C68013及其外围电路组成。系统原理框图如图6所示。
图6 系统原理框图
系统主要完成的任务为:DSP 接收上位机通过USB 总线发送的命令,完成系统工作参数的设置,并通过模拟地址/数据总线与CPLD 进行通信,向CPLD 发送控制命令;对外部的多路模拟量输入进行信号调理,在CPLD 控制下进行单通道
或多通道A/D转换,将采集到的数据存储在一片FIFO 芯片中;当FIFO 中存储的数据半满时,对DSP 产生一个中断信号,DSP 收到此中断信号后,取出FIFO 中的部分数据,进行前端数字信号处理,将处理完毕的数据通过USB 总线传给上位机;上位机实现各种图形界面操作和后端信号处理,对所采集的信号进行分析。系统可对输入的多路模拟信号进行同步采样,这就使得采集到的数据不仅含有模拟信号的幅度特性,同时还保持不同模拟信号之间的相位差异;采样频率可以预置,以适应不同速率的采样要求。
系统硬件包括信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块以及USB 通信模块。
5. 高速数据采集系统的方案分析比较
设计一个高速数据采集系统应满足以下两个基本性能要求:一是高速性,现在高速数据采集通常要求达到几十甚至几百 MSPS的采样速度,因此需要采用高速 ADC技术和高速缓存技术来保证采样和数据传输的高速性;二是大容量,高速数据采集必然带来巨大的数据流量,一个4通道20MH 采样率16位精度数据采集系统采样 0.1s 将产生 16M的数据量,所以需要采用海量缓存来解决采样数据的存储问题。
为此,针对上述提出的方案,在此做出简单的分析与比较如下: (1)单片机控制的高速数据采集系统是一种由8751单片机控制的高速数据采集系统。该系统的数据采集与存储完全靠硬件实现, 其数据采样频率只取决于所选用的A/D转换器, 而不受8751单片机速度的影响, 因而可实现高速数据采集。本设计方案使用的MCU 为普通的51单片机,其他芯片都是些普通的逻辑芯片,所以方案易于实现,性价比较高。但是由于51单片机的速度有限,与PC 的数据传输的方式是通过RS232接口,其速度相当有限,而采集的速度可能达到200M ,这可能导致其未上传完数据,又被新的数据覆盖。当然可通过增大缓冲区域的大小,来防止其被覆盖,但是增大高速缓存区的存储量也将增大成本。
(2)基于MCU+FPGA组合的高速数据采集系统中采用的C8051F120单片机,其外部时钟为22.114800Mhz ,指令执行周期不需要经过12分频,这个速度解决了方案一中51单片机速度不足的缺点,使得该系统具备及时上传采集的数据到上位机。方案中多路AD 采集数据,降低AD 转换速率的要求,降低成本,且采用FPGA 来控制数据的采集及存储。该方案实现的性能可靠,采集数据速度远远优于方案一,但是FPGA 的制作成本较高,整个系统的实现成本很高。
(3)基于DSP 和ADS8364的高速数据采集处理系统中该系统主要由信号调理模块、A/D转换模块、DSP 处理器模块、CPLD 逻辑控制模块和USB2.0通信模块组成。它能够在板卡上实现信号的采集及前端处理,并能通过USB 总线与上位机通信,实现数据的存储、后端处理及显示。采用CPLD 控制ADS8364完成数据的A/D转换,转换后的数据预先存储到FIFO 中,再经DSP 进行前端的数字信号处理后,通过USB 总线传给上位机,并在上位机上进行存储、显示和分析等。该
系统完全可以满足信号采集处理对高精度及实时性的要求。该方案采用的较新的CPLD 技术,使得AD 芯片的精确时钟控制问题得到解决,且综合了方案二中分时对A/D数据进行采集,降低了AD 方面的成本,同时方案中DSP 处理器具有高速数据处理的能力,其通过USB 接口同上位机进行联系,如今的USB2.0以达到480Mbps ,这将满足其将FIFO 中的数据及时传递到上位机中,解决了方案一中,缓冲区数据可能被覆盖的问题。
6. 设计系统
6.1设计思想
图7 软件系统框图
6.2硬件电路
图8 硬件电路图
6.3电路分析
在我们的控制部分,我们选用了51单片机。理由如下:
1. 单片机多功能,少引脚,使得引脚复用现象较多。
2. 单片机具有四种总线形式:P0和P2组成的16位地址地址总线;P0分时复用为8位数据总线;ALE 、PSEN 、RST 、EA 和P3口的INT0、INT1、T0、T1、WR 、RD 以及P1口的T2、T2EX 组成控制总线;而P3口的RXD 、TXD 组成串行通信总线。
在我们的AD 转换中,选用的是ADC0809。由于ADC0809具有输出3态锁存器,其八位数据输出引脚可直接与数据总线相连。地址译码引脚A 、B 、C 分别与地址总线低三位A0、A1、A2相连,以选通IN0~IN7中的一个通道。在启动A/D转换时,由单片机的P3.4控制A/D转换器的地址锁存和转换启动,由于ALE 和START 连在一起,因此AD0809在锁存通道的同时,也启动了A/D转换器。在读取转换结果时,用低电平的读信号RD ,产生的正脉冲作为OE 信号,用以打开三态输出锁存器。将转换结果输出。而低电平的写信号WR 则表示转换结束状态信号。
在我们的串口通信中,我们选择了串口通信MAX232芯片,MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路, 使用+5v单电源供电,可以实现TTL 电平与RS-232C 电平相互转换的IC 芯片。
为了显示电压的大小,我们选用了LED 数码显示管。为了显示字符,要为LED 显示器提供显示段码(或称字形代码),组成一个“8”字的七段,再加上1个小数点位,共计八段。
7. 仿真结果及分析
7.1仿真结果
设定的输入模拟量分别为5V,4V,3.5V,2V,1V,2.5V,2V,3V 。
图9 数码管显示模拟量和通道号的仿真图
图10 虚拟终端显示数字量的仿真图
7.2结果分析
通过结果发现我们输入的电压与数码管上的数字基本相同,虽然出现了一些误差,但误差都是在小数点后面,误差都是在允许范围之内,所以总体而言,我们这个系统设计的还是比较成功的。 由模拟量与数字量的转换关系模拟量5V =数字量255得到:数字量=模拟量*51,再将十进制数转换成十六进制数。
由输入模拟量分别为5V,4V,3.5V,2V,1V,2.5V,2V,3V
得到的数字量分别是255,204,178.5,102,51,127.5,102,153。
把最后的结果由十六进制数转换成十进制数分别是217,204,,178,102,51,128,102,153。
说明该系统能完成模拟量到识字量的转换,对整数量能精确的进行转换,但对小数的转换会出现很小的误差,不能精确的转换。
而且在转换循环过程中,对于同一个模拟量的转换,得到的数字量并不一定相同,这种情况下我们最好选取大多数相同的那个数字。
8. 总结
课程设计是继专业理论学习和实验教学之后又一重要的实践性教学环节。它的任务是在学生掌握和具备电子技术知识与单元电路的设计能力之后,综合所学知识进一步学习电子电路系统的设计方法和实验方法,为今后从事电子技术领域的工程设计打好基础基本要求。
我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。平时看课本时,理论知识很枯燥,让人看而生畏,总是不能深入而透彻的掌握知识。而做完课程设计,一些问题就迎刃而解了,而且还可以记住很多东西。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。所以这个课程设计对我们的作用是非常大的。
在制作实验报告时,发现只有细心耐心恒心一定要有才能做好事情,首先是线的布局上既要美观又要实用和走线简单,兼顾到方方面面去考虑是很需要的,否则只是一纸空话。经过一个星期的学习,过程曲折可谓一语难尽。在此期间我们也失落过,也曾一度热情高涨。从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味无长;生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在老师、同学的辛勤指导下,终于顺利完成。
虽然单片机课程设计结束了,但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活。
参考文献
[2]. 张毅刚,《单片机原理及应用》,北京:高等教育出版社,2007
[3]. 徐仁贵,《微型计算机接口技术及应用》,北京:机械工业出版社,2007
[4]. 诸昌钤,《LED 显示屏系统原理及工程技术》,成都:电子科技大学出版社,2004
[5]. 梅开乡,《数字逻辑电路》,北京:电子工业出版社,2003
[1]. 李全利, 《单片机原理及接口技术》, 北京:高等教育出版社,2004
附录一 代码
/*main.c*/
#include "led.c"
#define uchar unsigned char
#define uint unsigned int
void main()
{
while(1)
{
uint cnt=0;
uchar i,j,n=100;
while(cnt!=560)
{
switch(cnt++)
{
case 0: ad0to7();break;
case 1: decodenum(Vi[0],0);break;
case 70: decodenum(Vi[1],1);break;
case 140: decodenum(Vi[2],2);break;
case 210:decodenum(Vi[3],3);break;
case 280:decodenum(Vi[4],4);break;
case 350:decodenum(Vi[5],5);break;
case 420:decodenum(Vi[6],6);break;
case 490:decodenum(Vi[7],7);break;
}
disp();
}
/*串行通信设置*/
TMOD = 0X20;//波特率发生器T1工作在模式2上
SCON = 0X40;//设串口工作方式1,发送状态
PCON = 0X00;//波特率不加倍
TH1=0xFA;//设定波特率4800
TL1=TH1;
TR1=1;//开
for(j=0;j
{
SBUF = ad_action(j);//数据送入串口缓冲器
while(!TI); //等待串行中断
TI = 0; //清TI ,必须软件清除
j++;
while(--n); //延时
}
for(i=0;i
}
}
/*adc0809.c*/
#include
#include
#include "numcode.h"
#define uchar unsigned char
#define uint unsigned int
uchar chnn;//通道号chnn chn
#define adin XBYTE[0x7ff8+chnn]
static float Vi[8];
void delayus(uint us)
{
while(us--);
}
uchar ad_action(uchar chn)//读AD 转换数据
{
uchar read_data;
chnn=chn;
adin=chn;
delayus(15);//转换数据
read_data=adin;
return read_data;
}
void ad0to7()
{
uchar i;
for(i=0;i
Vi[i]=(ad_action(i)/255.0)*5.0+0.009;
}
/*led.c*/
#include "adc0809.c"
#define LED_Data P2 //通道号
#define A 10
#define U 11
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit dp=P1^4;
为校准ad 的误差 //0.009
#define LED_slect P1
static uchar dispdata[4];
void decodenum(float adv,uchar chn)
{
uint temp;
temp=(uint)(adv*100);
dispdata[0]=temp/100;
dispdata[1]=temp/10%10;
dispdata[2]=temp%10;
dispdata[3]=chn;//最后一位为通道号
}
void select(uchar LED)
{
switch(LED)
{
case 0:LED1=0;break;
case 1:LED2=0;break;
case 2:LED3=0;break;
case 3:LED4=0;break;
default: LED_slect=0xff;
}
}
void dispone(uchar LED,bit ifpoint,uchar number) //number 0--9 {
select(LED);
if(ifpoint)
dp=1;
else
dp=0;
LED_Data=num[number]|0x80;
delayus(300);
LED_slect=0xff;
}
void disp()
{
uchar i;
bit point;
for(i=0;i
{
if(i==1)
point=0;
else
point=1;
dispone(i,point,dispdata[i]);
}
}
/*numcode.h*/
unsigned char code num[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x3e };