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

Subversion Repositories idea

[/] [idea/] [trunk/] [fsm/] [main control/] [ofb.fsm] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 marta
-- File Name    : ofb.fsm
2
-- Version      : v1.2
3
-- Description  : finite state mechine description of ofb mode
4
-- Purpose      : to generate behavioral description of ofb mode
5
-- Author       : Sigit Dewantoro
6
-- Address      : IS Laboratory, Labtek VIII, ITB, Jl. Ganesha 10, Bandung, Indonesia
7
-- Email        : sigit@students.ee.itb.ac.id, sigit@ic.vlsi.itb.ac.id
8
-- Date         : August 23th, 2001
9
 
10
entity ofb is
11
PORT (
12
        active          : in BIT;
13
        clk             : in BIT;
14
        key_ready       : in BIT;
15
        dt_ready        : in BIT;
16
        finish          : in BIT;
17
        first_dt        : inout BIT;
18
        E_mesin         : out BIT;
19
        s_mesin         : out BIT;
20
        emp_buf         : out BIT;
21
        cp_ready        : out BIT;
22
        cke_b_mode      : out BIT;
23
        en_in           : out BIT;
24
        en_iv           : out BIT;
25
        en_rcbc         : out BIT;
26
        en_out          : out BIT;
27
        sel1            : out BIT_VECTOR (1 downto 0);
28
        sel2            : out BIT_VECTOR (1 downto 0);
29
        sel3            : out BIT_VECTOR (1 downto 0);
30
        vdd             : in BIT;
31
        vss             : in BIT
32
     );
33
end ofb;
34
 
35
architecture STATE_MACHINE of ofb is
36
        type STATE_TYPE is (S0, S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13);
37
 
38
        -- pragma CLOCK clk
39
        -- pragma CURRENT_STATE CURRENT_STATE
40
        -- pragma NEXT_STATE NEXT_STATE
41
 
42
        signal CURRENT_STATE, NEXT_STATE : STATE_TYPE;
43
 
44
        begin
45
        process (CURRENT_STATE, active, key_ready, dt_ready, first_dt, finish)
46
                begin
47
                if active then
48
                        NEXT_STATE <= S0;
49
                        E_mesin <= '1';
50
                        s_mesin <= '0';
51
                        emp_buf <= '0';
52
                        cp_ready <= '0';
53
                        cke_b_mode <= '0';
54
                        en_in <= '0';
55
                        en_iv <= '0';
56
                        en_rcbc <= '0';
57
                        en_out <= '0';
58
                        first_dt <= '1';
59
                        sel1 <= "10";
60
                        sel2 <= "10";
61
                        sel3 <= "10";
62
                else
63
                        case CURRENT_STATE is
64
 
65
                -- ***********************************************************************
66
 
67
                        when S0 =>
68
                        NEXT_STATE <= S1;
69
                        E_mesin <= '1';
70
                        s_mesin <= '0';
71
                        emp_buf <= '0';
72
                        cp_ready <= '0';
73
                        cke_b_mode <= '1';
74
                        en_in <= '0';
75
                        en_iv <= '0';
76
                        en_rcbc <= '0';
77
                        en_out <= '0';
78
                        first_dt <= '1';
79
                        sel1 <= "10";
80
                        sel2 <= "10";
81
                        sel3 <= "10";
82
 
83
                -- ***********************************************************************
84
 
85
                        when S1 =>
86
                        if (key_ready and dt_ready) then
87
                                if first_dt then
88
                                        NEXT_STATE <= S2;
89
                                        E_mesin <= '1';
90
                                        s_mesin <= '0';
91
                                        emp_buf <= '1';
92
                                        cp_ready <= '0';
93
                                        cke_b_mode <= '1';
94
                                        en_in <= '1';
95
                                        en_iv <= '0';
96
                                        en_rcbc <= '0';
97
                                        en_out <= '0';
98
                                        first_dt <= '1';
99
                                        sel1 <= "01";
100
                                        sel2 <= "10";
101
                                        sel3 <= "10";
102
                                else
103
                                        NEXT_STATE <= S5;
104
                                        E_mesin <= '1';
105
                                        s_mesin <= '0';
106
                                        emp_buf <= '0';
107
                                        cp_ready <= '0';
108
                                        cke_b_mode <= '1';
109
                                        en_in <= '0';
110
                                        en_iv <= '0';
111
                                        en_rcbc <= '0';
112
                                        en_out <= '0';
113
                                        first_dt <= '1';
114
                                        sel1 <= "10";
115
                                        sel2 <= "01";
116
                                        sel3 <= "01";
117
                                end if;
118
                        else
119
                                NEXT_STATE <= S1;
120
                                E_mesin <= '1';
121
                                s_mesin <= '0';
122
                                emp_buf <= '0';
123
                                cp_ready <= '0';
124
                                cke_b_mode <= '1';
125
                                en_in <= '0';
126
                                en_iv <= '0';
127
                                en_rcbc <= '0';
128
                                en_out <= '0';
129
                                first_dt <= '1';
130
                                sel1 <= "10";
131
                                sel2 <= "10";
132
                                sel3 <= "10";
133
                        end if;
134
 
135
                -- ***********************************************************************
136
 
137
                        when S2 =>
138
                        NEXT_STATE <= S3;
139
                        E_mesin <= '1';
140
                        s_mesin <= '0';
141
                        emp_buf <= '0';
142
                        cp_ready <= '0';
143
                        cke_b_mode <= '1';
144
                        en_in <= '0';
145
                        en_iv <= '1';
146
                        en_rcbc <= '0';
147
                        en_out <= '0';
148
                        first_dt <= '0';
149
                        sel1 <= "01";
150
                        sel2 <= "10";
151
                        sel3 <= "10";
152
 
153
                -- ***********************************************************************
154
 
155
                        when S3 =>
156
                        NEXT_STATE <= S4;
157
                        E_mesin <= '1';
158
                        s_mesin <= '0';
159
                        emp_buf <= '0';
160
                        cp_ready <= '0';
161
                        cke_b_mode <= '1';
162
                        en_in <= '0';
163
                        en_iv <= '0';
164
                        en_rcbc <= '0';
165
                        en_out <= '0';
166
                        first_dt <= '0';
167
                        sel1 <= "10";
168
                        sel2 <= "01";
169
                        sel3 <= "10";
170
 
171
                -- ***********************************************************************
172
 
173
                        when S4 =>
174
                        NEXT_STATE <= S6;
175
                        E_mesin <= '1';
176
                        s_mesin <= '1';
177
                        emp_buf <= '0';
178
                        cp_ready <= '0';
179
                        cke_b_mode <= '1';
180
                        en_in <= '0';
181
                        en_iv <= '0';
182
                        en_rcbc <= '0';
183
                        en_out <= '0';
184
                        first_dt <= '0';
185
                        sel1 <= "10";
186
                        sel2 <= "10";
187
                        sel3 <= "10";
188
 
189
                -- ***********************************************************************
190
 
191
                        when S5 =>
192
                        NEXT_STATE <= S6;
193
                        E_mesin <= '1';
194
                        s_mesin <= '1';
195
                        emp_buf <= '0';
196
                        cp_ready <= '0';
197
                        cke_b_mode <= '1';
198
                        en_in <= '0';
199
                        en_iv <= '0';
200
                        en_rcbc <= '0';
201
                        en_out <= '0';
202
                        first_dt <= '0';
203
                        sel1 <= "10";
204
                        sel2 <= "10";
205
                        sel3 <= "10";
206
 
207
                -- ***********************************************************************
208
 
209
                        when S6 =>
210
                        NEXT_STATE <= S7;
211
                        E_mesin <= '1';
212
                        s_mesin <= '1';
213
                        emp_buf <= '0';
214
                        cp_ready <= '0';
215
                        cke_b_mode <= '1';
216
                        en_in <= '0';
217
                        en_iv <= '0';
218
                        en_rcbc <= '0';
219
                        en_out <= '0';
220
                        first_dt <= '0';
221
                        sel1 <= "10";
222
                        sel2 <= "10";
223
                        sel3 <= "10";
224
 
225
                -- ***********************************************************************
226
 
227
                        when S7 =>
228
                        if (finish and dt_ready) then
229
                                NEXT_STATE <= S8;
230
                                E_mesin <= '1';
231
                                s_mesin <= '0';
232
                                emp_buf <= '1';
233
                                cp_ready <= '0';
234
                                cke_b_mode <= '1';
235
                                en_in <= '1';
236
                                en_iv <= '0';
237
                                en_rcbc <= '0';
238
                                en_out <= '0';
239
                                first_dt <= '0';
240
                                sel1 <= "00";
241
                                sel2 <= "10";
242
                                sel3 <= "10";
243
                        else
244
                                NEXT_STATE <= S7;
245
                                E_mesin <= '1';
246
                                s_mesin <= '1';
247
                                emp_buf <= '0';
248
                                cp_ready <= '0';
249
                                cke_b_mode <= '1';
250
                                en_in <= '0';
251
                                en_iv <= '0';
252
                                en_rcbc <= '0';
253
                                en_out <= '0';
254
                                first_dt <= '0';
255
                                sel1 <= "10";
256
                                sel2 <= "10";
257
                                sel3 <= "10";
258
                        end if;
259
 
260
                -- ***********************************************************************
261
 
262
                        when S8 =>
263
                        NEXT_STATE <= S9;
264
                        E_mesin <= '1';
265
                        s_mesin <= '0';
266
                        emp_buf <= '1';
267
                        cp_ready <= '0';
268
                        cke_b_mode <= '1';
269
                        en_in <= '1';
270
                        en_iv <= '1';
271
                        en_rcbc <= '0';
272
                        en_out <= '0';
273
                        first_dt <= '0';
274
                        sel1 <= "00";
275
                        sel2 <= "10";
276
                        sel3 <= "10";
277
 
278
                -- ***********************************************************************
279
 
280
                        when S9 =>
281
                        NEXT_STATE <= S10;
282
                        E_mesin <= '1';
283
                        s_mesin <= '0';
284
                        emp_buf <= '0';
285
                        cp_ready <= '0';
286
                        cke_b_mode <= '1';
287
                        en_in <= '0';
288
                        en_iv <= '0';
289
                        en_rcbc <= '0';
290
                        en_out <= '0';
291
                        first_dt <= '0';
292
                        sel1 <= "10";
293
                        sel2 <= "10";
294
                        sel3 <= "01";
295
 
296
                -- ***********************************************************************
297
 
298
                        when S10 =>
299
                        NEXT_STATE <= S11;
300
                        E_mesin <= '1';
301
                        s_mesin <= '0';
302
                        emp_buf <= '0';
303
                        cp_ready <= '0';
304
                        cke_b_mode <= '1';
305
                        en_in <= '0';
306
                        en_iv <= '0';
307
                        en_rcbc <= '0';
308
                        en_out <= '1';
309
                        first_dt <= '0';
310
                        sel1 <= "10";
311
                        sel2 <= "10";
312
                        sel3 <= "01";
313
 
314
                -- ***********************************************************************
315
 
316
                        when S11 =>
317
                        NEXT_STATE <= S12;
318
                        E_mesin <= '1';
319
                        s_mesin <= '0';
320
                        emp_buf <= '0';
321
                        cp_ready <= '1';
322
                        cke_b_mode <= '1';
323
                        en_in <= '0';
324
                        en_iv <= '0';
325
                        en_rcbc <= '0';
326
                        en_out <= '0';
327
                        first_dt <= '0';
328
                        sel1 <= "10";
329
                        sel2 <= "10";
330
                        sel3 <= "01";
331
 
332
                -- ***********************************************************************
333
 
334
                        when S12 =>
335
                        NEXT_STATE <= S13;
336
                        E_mesin <= '1';
337
                        s_mesin <= '0';
338
                        emp_buf <= '0';
339
                        cp_ready <= '0';
340
                        cke_b_mode <= '1';
341
                        en_in <= '0';
342
                        en_iv <= '0';
343
                        en_rcbc <= '0';
344
                        en_out <= '0';
345
                        first_dt <= '0';
346
                        sel1 <= "10";
347
                        sel2 <= "10";
348
                        sel3 <= "01";
349
 
350
                -- ***********************************************************************
351
 
352
                        when S13 =>
353
                        NEXT_STATE <= S13;
354
                        E_mesin <= '1';
355
                        s_mesin <= '0';
356
                        emp_buf <= '0';
357
                        cp_ready <= '0';
358
                        cke_b_mode <= '1';
359
                        en_in <= '0';
360
                        en_iv <= '0';
361
                        en_rcbc <= '0';
362
                        en_out <= '0';
363
                        first_dt <= '0';
364
                        sel1 <= "10";
365
                        sel2 <= "10";
366
                        sel3 <= "01";
367
 
368
                -- ***********************************************************************
369
 
370
                        end case;
371
                end if;
372
        end process;
373
 
374
        process(clk)
375
                begin
376
                if(clk = '0' and not clk' stable) then
377
                        CURRENT_STATE <= NEXT_STATE;
378
                end if;
379
       end process;
380
 
381
end STATE_MACHINE;

powered by: WebSVN 2.1.0

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