三段式状态机在单片机中的实现
发布日期:2017-01-06 新闻来源: 正文字号
大 中 小
威海职业学院 孔宪青
引言
对于PLD,编程时一般使用状态机,这是一种行之有效的编程方法。状态机是以事件行为为描述核心,并通过状态机体现事件之间的转移机制。由于PLD使用并行宏单元,因此事件都可描述为宏单元组,而事件的关联使用开关门和线路实现,因此说状态机是PLD器件中主要的编程方法。
1 在VHDL中三段式状态机的描述
有限状态机在PLD的应用中有四种类型,分别是一段式、两段式和三段式和多段式。其中多段式状态机对条件描述比较繁琐,而两段式状态机实际就是三段式的精简。因此实际类型就是一段式和三段式两种。其中一段状态机用于描述和顺序时间相关的控制进程,例如对于单总线器件ds1820的控制。但是一段式加深了宏单元深度和综合难度。而标准的三段式状态机对深度和综合都较好。以米勒状态机结构为例,见图1。
在VHDL中的代码如下:
process(reset, clk) //状态改变逻辑
……
current<=next; //current、next都是状态量
……
end process;
process(current) //状态转移组合逻辑
case current
when …. =>
when others =>
end case;
end process;
process(current, xxx,yyy) //状态输出逻辑
case current
when …
when others
end case
end process;
代码中有三个并行宏单元,相对于顺序描述有更快的实时响应。因此,如果把上述结构使用在单片机上,使用类似的三段式状态机会比单纯的顺序和中断结构有更好的实时性。