LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY detector IS
PORT(clk,x: IN STD_LOGIC;
mk: OUT STD_LOGIC);
END detector;
ARCHITECTURE xdetector OF detector IS
TYPE states IS(s0,s1,s2,s3,s4,s5,s6,s7);
SIGNAL state: states;
BEGIN
PROCESS(x,state)
BEGIN
IF rising_edge(clk) THEN
CASE state IS
WHEN s0 => mk<='0';
IF(x='1') THEN
state<=s1;
ELSE
state<=s0;
END IF;
WHEN s1 => mk<='0';
IF(x='1') THEN
state<=s2;
ELSE
state<=s0;
END IF;
WHEN s2 => mk<='0';
IF(x='1') THEN
state<=s2;
ELSE
state<=s3;
END IF;
WHEN s3 => mk<='0';
IF(x='1') THEN
state<=s1;
ELSE
state<=s4;
END IF;
WHEN s4 => mk<='0';
IF(x='1') THEN
state<=s5;
ELSE
state<=s0;
END IF;
WHEN s5 => mk<='0';
IF(x='1') THEN
state<=s2;
ELSE
state<=s6;
END IF;
WHEN s6 => mk<='0';
IF(x='1') THEN
state<=s1;
ELSE
state<=s7;
END IF;
WHEN s7 => mk<='1';
IF(x='1') THEN
state<=s1;
ELSE
state<=s0;
END IF;
END CASE;
END IF;
END PROCESS;
END xdetector;
本文展示了一个使用VHDL实现的状态机设计示例。该状态机用于检测特定信号序列,并根据输入信号的变化改变其内部状态,最终输出检测结果。

1万+

被折叠的 条评论
为什么被折叠?



