OpenCores
URL https://opencores.org/ocsvn/idea/idea/trunk

Subversion Repositories idea

[/] [idea/] [trunk/] [fsm/] [key_regulator/] [count5x.fsm] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 marta
--Nama file : count5x.fsm
2
--Deskripsi : counter 5 bit
3
--Author    : Mas Adit
4
--Tanggal  : 31 Agustus 2001
5
 
6
entity count5x is
7
port (
8
        clk : in bit;
9
        rst : in bit;
10
       q : out bit_vector(4 downto 0);
11
       vdd : in bit;
12
       vss : in bit
13
      );
14
end count5x;
15
 
16
architecture STATE_MACHINE of count5x is
17
 
18
type STATE_TYPE IS (S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31);
19
 
20
-- pragma CLOCK clk
21
-- pragma CURRENT_STATE CURRENT_STATE
22
-- pragma NEXT_STATE NEXT_STATE
23
 
24
signal CURRENT_STATE, NEXT_STATE: STATE_TYPE;
25
 
26
begin
27
  process ( CURRENT_STATE, rst )
28
    begin
29
      if ( rst = '1' ) then
30
          NEXT_STATE <= S0;
31
          q <= "00000";
32
      else
33
          case CURRENT_STATE IS
34
             when S0 =>
35
                q <= "00000";
36
                NEXT_STATE <= S1;
37
         when S1 =>
38
                q <= "00001";
39
                NEXT_STATE <= S2;
40
             when S2 =>
41
                q <= "00010";
42
                NEXT_STATE <= S3;
43
         when S3 =>
44
                q <= "00011";
45
                NEXT_STATE <= S4;
46
             when S4 =>
47
                q <= "00100";
48
                NEXT_STATE <= S5;
49
             when S5 =>
50
                q <= "00101";
51
                NEXT_STATE <= S6;
52
             when S6 =>
53
                q <= "00110";
54
                NEXT_STATE <= S7;
55
             when S7 =>
56
                q <= "00111";
57
                NEXT_STATE <= S8;
58
             when S8 =>
59
                q <= "01000";
60
                NEXT_STATE <= S9;
61
             when S9 =>
62
                q <= "01001";
63
                NEXT_STATE <= S10;
64
             when S10 =>
65
                q <= "01010";
66
                NEXT_STATE <= S11;
67
         when S11 =>
68
                q <= "01011";
69
                NEXT_STATE <= S12;
70
         when S12 =>
71
                q <= "01100";
72
                NEXT_STATE <= S13;
73
         when S13 =>
74
                q <= "01101";
75
                NEXT_STATE <= S14;
76
             when S14 =>
77
                q <= "01110";
78
                NEXT_STATE <= S15;
79
             when S15 =>
80
                q <= "01111";
81
                NEXT_STATE <= S16;
82
             when S16 =>
83
                q <= "10000";
84
                NEXT_STATE <= S17;
85
             when S17 =>
86
                q <= "10001";
87
                NEXT_STATE <= S18;
88
             when S18 =>
89
                q <= "10010";
90
                NEXT_STATE <= S19;
91
             when S19 =>
92
                q <= "10011";
93
                NEXT_STATE <= S20;
94
             when S20 =>
95
                q <= "10100";
96
                NEXT_STATE <= S21;
97
         when S21 =>
98
                q <= "10101";
99
                NEXT_STATE <= S22;
100
         when S22 =>
101
                q <= "10110";
102
                NEXT_STATE <= S23;
103
         when S23 =>
104
                q <= "10111";
105
                NEXT_STATE <= S24;
106
             when S24 =>
107
                q <= "11000";
108
                NEXT_STATE <= S25;
109
             when S25 =>
110
                q <= "11001";
111
                NEXT_STATE <= S26;
112
             when S26 =>
113
                q <= "11010";
114
                NEXT_STATE <= S27;
115
             when S27 =>
116
                q <= "11011";
117
                NEXT_STATE <= S28;
118
             when S28 =>
119
                q <= "11100";
120
                NEXT_STATE <= S29;
121
             when S29 =>
122
                q <= "11101";
123
                NEXT_STATE <= S30;
124
              when S30 =>
125
                q <= "11110";
126
                NEXT_STATE <= S31;
127
         when S31 =>
128
                q <= "11111";
129
                NEXT_STATE <= S0;
130
             when OTHERS =>
131
                assert ( '1' )
132
                report "Illegal State";
133
 
134
          end case;
135
      end if;
136
end process;
137
 
138
process (clk)
139
  begin
140
    if ((clk = '1') and not (clk'STABLE)) then
141
         CURRENT_STATE <= NEXT_STATE;
142
    end if;
143
end process;
144
 
145
end STATE_MACHINE;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.