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

Subversion Repositories idea

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 marta
--Nama file : kontrol_kuncix.fsm
2
--Deskripsi : kontrol pembangkitan (pengaturan) kunci
3
--Author    : Mas Adit
4
--Tanggal  : 24 Agustus 2001
5
 
6
entity kontrol_kuncix is
7
port (
8
        clk : in bit;
9
        start : in bit;
10
        rst : in bit;
11
        f_enkey : in bit;
12
        f_invmul : in bit;
13
        f_invadd : in bit;
14
        rst_all : out bit;
15
        key_ready : out bit;
16
        s_enkey : out bit;
17
        s_invmul : out bit;
18
        s_invadd : out bit;
19
        vdd : in bit;
20
        vss : in bit
21
);
22
end kontrol_kuncix;
23
 
24
architecture STATE_MACHINE of kontrol_kuncix is
25
 
26
type STATE_TYPE is (S0, S2, S3, S4, S5, S6, S7, S8, S9);
27
        --pragma CLOCK clk
28
        --pragma CURRENT_STATE CURRENT_STATE
29
        --pragma NEXT_STATE NEXT_STATE
30
signal CURRENT_STATE, NEXT_STATE : STATE_TYPE;
31
 
32
begin
33
 
34
process (CURRENT_STATE, rst, start, f_enkey, f_invmul, f_invadd)
35
begin
36
        if (rst = '1') then
37
                NEXT_STATE <= S0;
38
                rst_all <= '1';
39
                s_enkey <= '0';
40
                s_invmul <='0';
41
                key_ready <= '0';
42
                s_invadd <= '0';
43
        else
44
 
45
 
46
        case CURRENT_STATE is
47
 
48
        when S0 =>
49
                if (start = '1') then
50
                        if (f_enkey = '0') then
51
                                NEXT_STATE <= S3;
52
                                rst_all <= '0';
53
                                s_enkey <= '1';
54
                                s_invmul <='0';
55
                                key_ready <= '0';
56
                                s_invadd <= '0';
57
                        else
58
                                NEXT_STATE <= S2;
59
                                rst_all <= '0';
60
                                s_enkey <= '0';
61
                                s_invmul <='0';
62
                                key_ready <= '0';
63
                                s_invadd <= '0';
64
                        end if;
65
                else
66
                        NEXT_STATE <= S0;
67
                        rst_all <= '1';
68
                        s_enkey <= '0';
69
                        s_invmul <='0';
70
                        key_ready <= '0';
71
                        s_invadd <= '0';
72
                end if;
73
                when S3 =>
74
                        NEXT_STATE <= S0;
75
                        rst_all <= '1';
76
                        s_enkey <= '0';
77
                        s_invmul <='0';
78
                        key_ready <= '0';
79
                        s_invadd <= '0';
80
                when S2 =>
81
                        if (f_invmul = '0') then
82
                                NEXT_STATE <= S4;
83
                                rst_all <= '0';
84
                                s_enkey <= '0';
85
                                s_invmul <='1';
86
                                key_ready <= '0';
87
                                s_invadd <= '0';
88
                        else
89
                                NEXT_STATE <= S5;
90
                                rst_all <= '0';
91
                                s_enkey <= '0';
92
                                s_invmul <='0';
93
                                key_ready <= '0';
94
                                s_invadd <= '0';
95
                        end if;
96
                        when S4 =>
97
                        if (f_invadd = '0') then
98
                                NEXT_STATE <= S6;
99
                                rst_all <= '0';
100
                                s_enkey <= '0';
101
                                s_invmul <='1';
102
                                key_ready <= '0';
103
                                s_invadd <= '1';
104
                        else
105
                                NEXT_STATE <= S7;
106
                                rst_all <= '0';
107
                                s_enkey <= '0';
108
                                s_invmul <='1';
109
                                key_ready <= '0';
110
                                s_invadd <= '0';
111
                        end if;
112
                        when S5 =>
113
                        if (f_invadd = '0') then
114
                                NEXT_STATE <= S8;
115
                                rst_all <= '0';
116
                                s_enkey <= '0';
117
                                s_invmul <='0';
118
                                key_ready <= '0';
119
                                s_invadd <= '1';
120
                        else
121
                                NEXT_STATE <= S9;
122
                                rst_all <= '0';
123
                                s_enkey <= '0';
124
                                s_invmul <='0';
125
                                key_ready <= '1';
126
                                s_invadd <= '0';
127
                        end if;
128
 
129
 
130
 
131
                        when S6 =>
132
                        NEXT_STATE <= S6;
133
                        rst_all <= '0';
134
                        s_enkey <= '0';
135
                        s_invmul <='1';
136
                        key_ready <= '0';
137
                        s_invadd <= '1';
138
 
139
                        when S7 =>
140
                        NEXT_STATE <= S7;
141
                        rst_all <= '0';
142
                        s_enkey <= '0';
143
                        s_invmul <='1';
144
                        key_ready <= '0';
145
                        s_invadd <= '0';
146
 
147
                        when S8 =>
148
                        NEXT_STATE <= S8;
149
                        rst_all <= '0';
150
                        s_enkey <= '0';
151
                        s_invmul <='0';
152
                        key_ready <= '0';
153
                        s_invadd <= '1';
154
 
155
                        when S9 =>
156
                        NEXT_STATE <= S9;
157
                        rst_all <= '0';
158
                        s_enkey <= '0';
159
                        s_invmul <='0';
160
                        key_ready <= '1';
161
                        s_invadd <= '0';
162
 
163
        end case;
164
        end if;
165
end process;
166
 
167
process (clk)
168
begin
169
        if ((clk = '0') and not(clk'STABLE)) then
170
                CURRENT_STATE <= NEXT_STATE;
171
        end if;
172
end process;
173
 
174
end STATE_MACHINE;
175
 
176
 
177
 
178
 
179
 
180
 
181
 
182
 
183
 

powered by: WebSVN 2.1.0

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