您的当前位置:首页正文

利用状态机多功能循环彩灯控制

2023-02-08 来源:钮旅网
《现代数字系统设计》

实验题目 :利用状态机实现多功能循环彩灯控制。

要求:实现 4 种循环方式,每种循环方式运行 5 次后,自动转换为下一种循环方式。

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity statem is port(clk:in std_logic;

q:out std_logic_vector(6 downto 0)); end statem;

architecture led of statem is type states is(s0,s1,s2,s3); signal state:states;

signal count:integer range 1 to 4; begin

p1:process(clk)

variable n:integer:=0;

begin

if(clk'event and clk='1')then count<=1; case state is when s0=> if n<20 then case count is

when 1 =>q<=\"1000001\" ;count<=count+1; when 2 =>q<=\"1100011\" ;count<=count+1; when 3 =>q<=\"1110111\" ;count<=count+1; when 4 =>q<=\"1111111\" ;count<=1; end case; n:=n+1;

else n:=0; state<=s1; end if;

when s1=> if n<20 then

case count is

when 1=>q<=\"0001000\" ;count<=count+1; when 2=>q<=\"0011100\" ;count<=count+1; when 3=>q<=\"0111110\" ;count<=count+1; when 4=>q<=\"1111111\" ;count<=1; end case; n:=n+1;

else n:=0; state<=s2; end if;

when s2=> if n<20 then case count is

when 1=>q<=\"0000011\" ;count<=count+1; when 2=>q<=\"0001100\" ;count<=count+1; when 3=>q<=\"0110000\" ;count<=count+1; when 4=> q<=\"1100000\" ;count<=1; end case; n:=n+1;

else n:=0; state<=s3; end if;

when s3=> if n<20 then case count is

when 1=>q<=\"0001111\" ;count<=count+1; when 2=> q<=\"0011110\" ;count<=count+1; when 3=>q<=\"0111100\" ;count<=count+1; when 4=> q<=\"1111000\" ;count<=1; end case; n:=n+1;

else n:=0; state<=s0; end if;

end case; end if;

end process p1; end led;

 在数字电路系统中,有限状态机时一种十分重要的时序逻辑电路模块,它对数字系

统的设计具有十分重要的作用。它也是其它领域一种常用的设计思想.

如:交通灯的控制,开关的控制,流水线的控制,软件设计等.在日常生活中,我们的一些活动也可以抽象为有限状态机模型.

 FSM一般包括:

 输入信号集合  输出信号集合  状态集合

 {输入信号,当前状态}到{输出信号,下一状态}的转换函数  初始状态

 如果用数字电路来实现FSM,则电路一般由一个组合电路部分和一个时序电路部分

组成.

BDC码计数器

Mealy FSM:

因篇幅问题不能全部显示,请点此查看更多更全内容