使用变量的状态机.txt
上传用户:easylife05
上传日期:2013-03-21
资源大小:42k
文件大小:2k
源码类别:

VHDL/FPGA/Verilog

开发平台:

C/C++

  1. -- State Machine using Variable
  2. -- dowload from: www.fpga.com.cn & www.pld.com.cn
  3. library ieee;
  4. use ieee.std_logic_1164.all;
  5. ENTITY fsm2 IS
  6.     PORT(clock,x : IN BIT; z : OUT BIT);
  7. END fsm2;
  8. -------------------------------------------------
  9. ARCHITECTURE using_wait OF fsm2 IS
  10. TYPE state_type IS (s0,s1,s2,s3);
  11. BEGIN
  12.    PROCESS
  13.       VARIABLE state : state_type := s0;
  14.    BEGIN
  15.       WAIT UNTIL (clock'EVENT AND clock = '1');
  16.          CASE state IS
  17.             WHEN s0 => IF x = '0' THEN 
  18.                            state := s0;
  19.                            z <= '0';
  20.                        ELSE
  21.                            state := s2;
  22.                            z <= '1';
  23.                        END IF;
  24.             WHEN s2 => IF x = '0' THEN 
  25.                            state := s2;
  26.                            z <= '1';
  27.                        ELSE
  28.                            state := s3;
  29.                            z <= '0';
  30.                        END IF;
  31.             WHEN s3 => IF x = '0' THEN 
  32.                            state := s3;
  33.                            z <= '0';
  34.                        ELSE
  35.                            state := s1;
  36.                            z <= '1';
  37.                        END IF;
  38.             WHEN s1 => IF x = '0' THEN 
  39.                            state := s0;
  40.                            z <= '0';
  41.                        ELSE
  42.                            state := s2;
  43.                            z <= '0';
  44.                        END IF;
  45.             
  46.          END CASE;
  47.    END PROCESS;
  48. END using_wait;