(湖北三峡职业技术学院,湖北宜昌 443002)
摘 要:通过例子介绍了利用硬件描述语言来完成控制任务。采用状态机在时序电路中控制电路的状态,让电路按要求执行一系列指定的状态。不需要按照传统的设计方法进行繁琐的状态分配、绘制状态表、化简状态方程等,就可以简便地根据MDS图直接对状态机进行描述,实现控制人物。硬件描述语言用于控制系统,可以起到事半功倍的效果,提供了工作效率。
关键词:硬件描述语言;船闸控制;微处理器控制;交通灯控制;状态机
1 引言
VHDL是一种硬件描述语言,也是电路设计的高级语言,主要用于数字系统的结构、行为的描述。并结合EDA工具可直接根据设计要求,以自上而下的方式设计,并相应地完成系统描述、仿真、集成和验证等环节,直到最后生成需要的电路。在以上过程中,除了系统级设计、行为级描述外,均可由计算机完成,结果配置到FPGA里,缩短了开发的周期。
2 用状态机来完成控制任务
状态机在VHDL语言中有广泛的应用,许许多多的实际问题都是通过状态机来实现的,尤其是同步时序逻辑的问题。例如各种存储器的控制,AD转换的控制等[1] 。在VHDL语言中,状态机的实现是符合人的思维逻辑的,简单明了,对大型系统的设计和实现很有帮助。在进行数字系统设计的时候,如果考虑实现一个控制功能,通常会选择状态机(FSM,Finite State Machine)。状态机是一种描述或处理数字控制系统的方法。一般将数字控制系统看作是一个系统黑箱(Black box),当有来自环境的输入刺激时,不但会改变黑箱(系统)现状态(Present state),同时黑箱还会有输出反应,改变后的系统状态称为次状态(Next state)。这个系统(黑箱)可能是一台机器设备或一个电路,用来表现其内部详细动作的方式,称为状态机。下面举例说明VHDL语言在控制系统中的应用。
A、船闸控制系统
一个水坝的船闸有上游闸门和下游闸门之分,要控制每个闸门的开启及关闭,在硬件描述语言中使用状态机就可以实现这个控制功能。我们规定S0是上游、下游闸门都关闭的状态,S1是上游闸门开启的状态,S2是上游闸门关闭的状态,S3是下游闸门开启的状态,S4是下游闸门关闭的状态。上游闸门开启输出时Z1=1,上游闸门关闭输出时Z1=0,下游闸门开启输出时Z2=1,下游闸门关闭输出时Z2=0。如果,遇到特殊情况,我们手动控制,设置CLR=1,这时候上游闸门和下游闸门都关闭。
期刊文章分类查询,尽在期刊图书馆
我们给出了部分船闸控制状态机的VHDL程序:
if clr='1' then
z1<='0';
z2<='0';
else
case current_state is
when s0 =>
z1<='0';
z2<='0';
if x='0' then
next_state<=s0;
else
next_state<=s1;
end if;
when s1 =>
z1<='1';
if x='0' then
next_state<=s1;
else
next_state<=s2;
end if;
船闸控制状态机的特性是它的输出信号永远伴随着现状态同步变化,一种状态一定对应着某一特定输出。硬件描述语言中状态机的设计和传统数字电路中状态机的设计方法不尽相同。在传统的数字电路设计中,一般是通过设计原始状态图,进行状态化简得到最小状态图,再通过状态分配及确定激励函数与输出函数后,实现状态机。其过程比较复杂,对于小型简单的系统,这种传统的方法还是可行的,但是如果应用于大型复杂系统,工作量和复杂程度都超出人的想象。利用硬件描述语言,不需要按照传统设计方法进行繁琐的状态分配、绘制状态表、化简状态方程等,就可以简便地根据MDS图直接对状态机进行描述,所有的状态均可表达为CASE__WHEN结构中的CASE语句,而状态的转移则通过IF__THEN__ELSE语句来实现。船闸控制状态机是起着主要的控制作用,它通常写成一个状态机进程,这个进程可以传出信号来控制另外的进程,从而实现各种功能,所用这些工作都可以通过EDA工具自动完成[2] 。
B、微处理器的设计
微处理器硬件系统包括运算器、控制器和寄存器和其它必要的逻辑部件,如程序计数器及译码器等。CPU指令系统包括数据传送指令、转移指令、算术运算指令、输入输出指令及CPU控制指令等。设计中采用8位指令系统,前4位是操作码,后4位是操作数地址指令结构。使用类似直接寻址或零位寻址的寻址方式。不采用随机存储器RAM,而使用只读存储器ROM,要执行的指令都放在ROM中,不能实时写入指令。一个指令周期包括6个时钟周期,前3个时钟周期是指令读周期,后3个时钟周期是指令执行的周期。各个指令在指令读取周期动作基本是相同的,只是在指令的执行周期各不相同。指令周期是采用一个状态机来实现的,它是整个CPU的核心。用状态机实现的简单CPU虽然功能还不够完善,但其修改、升级却十分方便,也充分展示了VHDL实现控制系统的优越性。
C、单向交通灯的控制
在硬件描述语言编程中,为了在程序中更明确地表达状态机,通常将状态机定义成枚举数据类型。例如单向路口的一盏红绿灯的状态机,可以被定义成枚举数据类型:
TYPE light is (red,yellow,green);
其中red,yellow,green表示它的3个状态,light则是状态机类型名称,表示这个状态机类型是自定义的light类型。这个状态机说明了状态转移条件和方向,在红灯状态red下,经过30秒钟以后,状态转移到黄灯状态yellow;在黄灯状态yellow,经过5秒钟以后,状态转移到绿灯状态green;同样,在绿灯状态green下,经过30秒钟,状态又转移到红灯状态red。而且,无论什么状态下,如果出现紧急情况emergency,状态直接转到红灯状态red。状态机的设计没有不变的规律,要根据实际问题来设计。发现实际的问题中整个事物的状态是关键。VHDL的结构非常适合编写状态机,而且编写方式不是唯一的,电路的集成也会随着编写的方式而改变[3]。这里所谓事物状态在整个实际问题中呈规律性的出现,发现这些规律性的状态,再定义出它们转换的条件,就能够用硬件描述语言实现状态机实现控制。
3 结束语
有限状态机及其设计技术是实用数字系统设计中的重要组成部分,是一种描述或处理数字控制系统的可靠的方法。利用硬件描述语言和FPGA进行控制系统设计,是电子设计的发展趋势。以上讨论的方法具有一定的代表性,对于电梯的控制、机器人控制系统、无人机的控制、无人驾驶控制、空调控制器而言,也可以使用类似的方法。VHDL语言作为一种标准化的硬件描述语言,是进行硬件电路设计的工具和手段,电子设计工程师都应该掌握硬件描述语言的设计方法。
参考文献:
[1]潘松等.EDA技术与VHDL.清华大学出版社,2005
[2徐向民.VHDL数字系统设计.电子工业出版社,2015
[3]杨光等.VHDL应用教程.电子工业出版社, 2017
论文作者:刘新云
论文发表刊物:《科技新时代》2019年8期
论文发表时间:2019/10/14
标签:状态论文; 状态机论文; 闸门论文; 指令论文; 语言论文; 硬件论文; 系统论文; 《科技新时代》2019年8期论文;