状态机在A/D采样控制中的应用
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