跟着大规模和超大规模FPGA/CPLD器材的诞生和开展,以HDL(硬件描绘言语)为东西、FPGA/CPLD器材为载体的EDA技能的运用越来越广泛.从小型电子体系到大规模SOC(Systemonachip)规划,现已无处不在.在FPGA/CPLD规划中,状况机是最典型、运用最广泛的时序电路模块,怎么规划一个安稳牢靠的状况机是咱们有必要面临的问题.
1、状况机的特色和常见问题
规范状况机分为摩尔(Moore)状况机和米立(Mealy)状况机两类.Moore状况机的输出仅与当时状况值有关,且只在时钟边缘到来时才会有状况改动.Mealy状况机的输出不只与当时状况值有关,并且与当时输入值有关,这一特色使其操控和输出愈加灵敏,但一起也增加了规划杂乱程度.其原理如图1所示.
依据图1所示,很简单了解状况机的结构.可是为什么要运用状况机而不运用一般时序电路呢?这是因为它具有一些一般时序电路无法比拟的长处.
用VHDL描绘的状况机结构清楚,易读,易懂,易排错;
相对其它时序电路而言,状况机愈加安稳,运转形式类似于CPU,易于完成次序操控等.
用VHDL言语描绘状况机归于一种高层次建模,成果经常呈现一些出乎规划者意外的状况:
在两个状况转化时,呈现过渡状况.
在运转过程中,进入不合法状况.
在一种器材上归纳出抱负成果,移植到另一器材上时,不能得到与之相符的成果.
状况机可以安稳作业,但占用逻辑资源过多.
在针对FPGA器材归纳时,这种状况呈现的或许性更大.咱们有必要稳重规划状况机,剖析状况机内涵结构,在Moore状况机中输出信号是当时状况值的译码,当状况存放器的状况值安稳时,输出也随之安稳了.经归纳器归纳后一般生成以触发器为中心的状况存放电路,其安稳性由此决议.假如CLOCK信号的上升沿抵达各触发器的时刻严厉共同的话,状况值也会严厉依照规划要求在规则的状况值之间转化.但是这仅仅一种抱负状况,实践CPLD/FPGA器材一般无法满意这种严苛的时序要求,特别是在布线后这些触发器相距较远时,CLOCK抵达各触发器的延时往往有一些差异.这种差异将直接导致状况机在状况转化时发生过渡状况,当这种延时进一步加大时,将有或许导致状况机进入不合法状况.这便是Moore状况机的失效机理.关于Mealy状况机而言,因为其任何时刻的输出与输入有关,这种状况就更常见了.
2 状况机规划方案比较
2.1 选用枚举数据类型界说状况值
在规划中界说状况机的状况值为枚举数据类型,归纳器一般把它表明为二进制数的序列,归纳后生成以触发器为中心的状况存放电路,存放器用量会削减,其归纳功率和电路速度将会在必定程度上得到进步.
例1 界说状况值为枚举类型的状况机VHDL程序.
library ieee;
use ieee.std_logic_1164 all;
entity example is
port(clk:in std_logic;
mach_input:in std_logic;
mach_outputs:out std_logic_vector(0 to 1));
end example;
architecture behave of example is
type states is(st0,st1,st2,st3); –界说states为枚举类型
signal current_state,next_state:states;
begin
state_change:process(clk) –状况改动进程
begin