您现在正在浏览:首页 > 职教文章 > 职教论文 > 状态机在A/D采样控制中的应用

状态机在A/D采样控制中的应用

日期: 2012/1/14 浏览: 1 来源: 学海网收集整理 作者: 佚名

2006.10 www.ChinaECD.net

Electronic Component & Device Applications

Vol.8 No.10

Oct 2006

第8卷 第10期

2006年10月

0 引言

对A/D器件进行采样控制的传统方法多数是

用CPU或单片机完成的。这些方法编程简单, 控

制灵活, 但缺点是控制周期长, 速度慢。特别是

当A/D本身的采样速度比较快时, CPU较慢的速

度极大地限制了A/D高速性能的利用。

1 状态机和单片机对A/D采样的比较

这里以速度并不算高的AD574的采样控制为

例来进行说明。AD574的采样周期平均为20 μs,

即从启动AD574进行采样到AD574完成采样并将

模拟信号转换成12位数字信号的时间需要约20

μs, 或者说, 其采样速率为每秒5万次。通常对

一个模拟信号至少进行一个周期的连续采样, 假

设 为50个 采 样 点 , AD574需 时 为 (20 μs×50) 1

ms。若以51单片机为例, 控制A/D进行一个采样

周期必须完成的操作是:

① 初始化AD574;

② 启动采样;

③ 等待约20 μs;

④ 发出读数命令;

⑤ 分两次将12位转换好的数从AD574读进单

片机中;

⑥ 再分两次将此数存入外部RAM中;

⑦ 外部RAM地址加1, 此后再进行第二次采

样周期的控制。

这样, 整个控制周期至少需要30条指令, 每

条指令平均为2个机器周期, 如果单片机时钟的

频率为12 MHz, 则一个机器周期为1 μs, 每条指

令耗时约2 μs, 30条指令的执行周期为60 μs, 加

上等待AD574采样周期的20 μs, 共80 μs。这样,

50个采样周期需时约4 ms。显然, 用单片机即使

控制AD574这种并不算高速的器件, 其采样尚且

远远不能发挥其高速采样的特性。至于更高速的

A/D器件, 如用于视频信号采样的TLC5540 (采样

速率是40 MHz, 采样周期0.025 μs, 远远小于一

条单片机指令的指令周期! ), 则将更加无能为

力。但如果使用状态机来控制A/D采样, 包括将

采得的数据存入RAM (FPGA内部RAM存储速率

可达10 ns), 则时间不到单片机60 μs采样周期的

千分之一。由此可见, 利用状态机对A/D进行采

样控制是一种行之有效的方法。

2 采样控制状态机的设计方法

为了便于说明和实验, 现以与AD574的控制

十分相似的ADC0809为例, 来说明采样控制状态

机的设计方法。

用状态机对ADC0809进行采样控制时, 首先

必须了解其工作时序, 然后据此作出状态图, 最

后写出相应的VHDL代码。图1是ADC0809的引脚

图, 其中IN0~IN7为8路模拟信号输入通道, 由地

址ADDA~ADDC进行选择。图2是其转换时序图,

图3是其采样控制状态图。在时序图中, START

状态机在A/D采样控制中的应用

王玉辉1,2

( 1. 山东科技大学信息与电气工程学院;

2. 青岛理工大学理学院, 山东 青岛 266033)

摘 要: 给出了利用有限状态机控制A/D采样的设计方法, 并通过状态机和单片机来对A/D采

样速度进行了比较和具体分析。最后给出了用状态机对ADC0809进行采样控制的设计方法的

软件程序代码。

关键词: 状态机; A/D采样控制; ADC0809

收稿日期: 2006- 07- 04

26

www.ChinaECD.net 2006.10

Vol.8 No.10

Oct 2006

第8卷 第10期

2006年10月

为转换启动控制信号, 高电平有效; ALE为模拟

信号输入选通端口的地址锁存信号, 上升沿有

效; 一旦START信号有效, 状态信号EOC即变为

低 电 平 , 表 示 进 入 转 换 状 态 , 转 换 时 间 约100

μs。转换结束后, EOC将变为高电平。此后外部

控制可使OE由低电平变为高电平 (输出有效),

此时, ADC0809的输出数据总线D [7..0] 将从原

来的高阻态变为输出数据有效。由状态图也可以

看到, 在状态st2中需要对ADC0809的工作状态信

号EOC进行测试, 如果为低电平, 表示转换还没

有结束, 仍需停留在st2状态中等待, 直到其变成

高电平后才可以说明转换结束, 并在下一时钟脉

冲 到 来 时 转 向 状 态 st3。 在 st3, 则 由 状 态 机 向

ADC0809发出转换好的8位数据输出允许命令,

这一状态周期同时可以作为数据输出稳定周期,

来在下一状态中向锁存器中锁入可靠的数据。在

状态st4, 由状态机向FPGA中的锁存器发出锁存

信号 (LOCK的上升沿), 以将ADC0809输出的数

据进行锁存。

ADC0809采样控制器的程序可采用VHDL语

言编辑输入。该程序中含有三个进程。其中REG

是时序进程, 它在时钟信号CLK的驱动下, 将不

断将next_state中的内容赋给current_state, 并由此

信号将状态变量传输给组合进程COM。组合进程

COM有两个功能: 一是状态译码功能, 即根据从

current_state 信 号 中 获 得 的 状 态 变 量 以 及 来 自

ADC0809的状态线信号EOC来决定下一状态的转

移方向, 即确定次态的状态变量; 二是采样控制

功能, 即根据current_state中的状态变量确定对

ADC0809的控制信号线ALE、START、OE等输出

相应的控制信号, 采样结束后还要通过LOCK向

锁存器件进程LATCH1发出锁存信号, 以便将由

ADC0809的D [7..0] 数据输出口输出的8位转换数

据锁存起来。

以下是采用VHDL语言编写的ADC0809采样

控制程序:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ADCINT IS

PORT (D: IN STD_LOGIC_VECTOR (7 DOWNTO 0) ;

CLK, EOC:IN STD_LOGIC;

ALE, START, OE, ADDA, LOCK0:OUT STD_LOG-

IC;

Q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0)) ;

END ADCINT;

ARCHITECTURE behav OF ADCINT IS

TYPE states IS (st0,st1,st2,st3,st4) ;- - 定 义 各 状

态子类型

SIGNAL current_state, next_state: states: =st0;

SIGNAL REGL: STD_LOGIC_VECTOR (7 DOWN-

TO 0) ;

SIGNALLOCK:STD_LOGIC;- - 转换后数据输出锁

存时钟信号

BEGIN

ADDA<='1';- - 模拟信号进入0809通道0

Q<=REGL; LOCK0<=LOCK;

COM: PROCESS (current_state,eoc)

BEGIN

CASE current_state IS

WHEN st0 =>ALE <='0';START <=

'0';LOCK<='0';OE<='0';

next_state<=st1;- - 0809初始化

WHEN st1 =>ALE <='1';START<=

'1';LOCK<='0';OE<='0';

图1 ADC0809引脚排列图

图2 ADC0809工作时序图

图3 控制ADC0809采样状态图 (下转第31页)

设计参考

27

www.ChinaECD.net 2006.10

Vol.8 No.10

Oct 2006

第8卷 第10期

2006年10月

next_state<=st2;- - 启动采样

WHEN st2 =>ALE <='0';START <=

'0';LOCK<='0';OE<='0';

IF ( EOC ='1') THEN

next_state<=st3;- - EOC=1表明转换结束

ELSE next_state<=st2;

END IF;

WHEN st3 =>ALE <='0';START <=

'0';LOCK<='0';OE<='1';

next_state <=st4;- - 开 启

OE, 输出转换好的数据

WHEN st4 =>ALE <='0';START <=

'0';LOCK<='1';OE<='1';

next_state<=st0;

END CASE;

END PROCESSCOM;

REG: PROCESS (clk)

BEGIN

IF ( clk'EVENT AND CLK ='1') THEN cur-

rent_state<=nest_state; END IF;

END PROCESS REG;- - 由信号current_state将当前

状态值带出此进程: REG

LATCH1:PROCESS (LOCK) - 此 进 程 中 , 在LOCK的 上 升

沿, 将转换好的数据锁入

BEGIN

IF LOCK='1' AND LOCK'ENENT THEN REGL<=

D; END IF;

END PROCESS LATCH1;

END behav;

3 结论

从以上分析和设计过程可以看出, 利用状态

机对A/D采样进行控制是一种行之有效的方法。

该方法不但工作速度很快, 而且可以充分发挥

(如TLC5540等) A/D器件的高速采样特性, 因而

值得推广。

式通过监控中心进行远程设定。即使在夜间某个

时段, 也可发送指令给售货机, 以使其进入休眠

状态。

4.4 通信策略分析

对传输信息进行有效的编码和解码, 可以提

高其传输效率。而对传输信息进行优先排序, 对

重要的信息优先传送, 并采用三次握手联络方式

和循环冗余校验码 (CRC) 校验相结合的传输策

略, 可以确保传输的可靠性和正确性。同样, 在

接收端, 也可对优先级较高的信息优先进行处

理, 而对优先级较低的信息放在相应的队列里等

候处理。由自动售货机到监控中心的消息可分为

以下三级:

第一优先级主要是故障消息 (如电机故障、

硬币机故障、温度失控等);

第二优先级主要指营运消息 (如缺货、缺硬

币等);

第三优先级为正常工作状态报告 (如销售数

量、硬币储存量、货物储存量等)。

对于故障消息, 设计时可采用多次重传机

制, 并以较短的发送周期发送, 以提高报警的可

靠性。

5 结束语

近年来, 基于GSM的无线监测系统在电力远

程抄表[4]、配水监控[5]、环境监测[6]等方面获得了

广泛而成功的应用。本系统在借鉴了这些应用案

例的基础上, 设计了基于GSM通信网络的自动售

货机无线监控系统, 可为自动售货机运营商提供

一种集约化、自动化的经营管理方式, 以期降低

管理经营成本、堵塞销售漏洞、提高经济效益。

参考文献

[1] 马建修. 上海发展自动售货机业正当其时 [J]. 上海商

业, 2002, ( 6) .

[2] 朱荣辉, 吴爱国. 基于GPRS的城市照明监控系统开发

[J]. 电气应用, 2005, ( 12) .

[3] 宋丽亚, 张思祥. 用TC35iGSM模块实现测控仪器的数

据远传[J]. 仪器仪表用户, 2006, ( 1) .

[4] 赵兆, 陈文武. 基于GSM的电力远程抄表系统[J]. 微型

机与应用, 2003, (4).

[5] 裴伟, 徐志祥, 宫建华, 罗志伟. 基于GSM短消息的无

线智能配水监控系统 [J]. 中国农村水利水电, 2004,

( 5) .

[6] 张毅, 张宏建, 徐燕. 短消息平台在环境监测系统中

的应用[J]. 工业控制计算机, 2004, 17(5).

(上接第27页)

设计参考

31


状态机在A/D采样控制中的应用.pdf

返回顶部