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

Subversion Repositories lcd1

[/] [lcd1/] [tags/] [ver/] [src/] [lcd1.vhd] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimo
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
use work.asci_types.all;
5
 
6
ENTITY lcd1 IS
7
  generic( one_usec_factor : INTEGER := 1e2/2-1;  -- 1e8/2-1 for 1s period @ 100 MHz
8
           max_factor : INTEGER := 100000;  -- the longest delay needed (init. time)
9
           init_factor : INTEGER := 100000; -- 100 ms, initialization time
10
           normal_factor : INTEGER := 50;  -- 50 us, standard waiting time
11
           extended_factor : INTEGER := 2000;  -- 2 ms, waiting time after clear display and cursor at home commands
12
           constant ext_mode : std_logic_vector(9 downto 0) := "0000110100"; -- goto extension mode
13
           constant lines_4 : std_logic_vector(9 downto 0) := "0000001001"; -- 4 lines, 5x8 font, goto normal mode
14
           constant data_8bit : std_logic_vector(9 downto 0) := "0000110000"; -- 8 bit data
15
           constant display_on : std_logic_vector(9 downto 0) := "0000001100"; -- display on, cursos off, blinking off
16
           constant display_clear : std_logic_vector(9 downto 0) := "0000000001"; -- clear display
17
           constant entry_mode : std_logic_vector(9 downto 0) := "0000000110" -- goto entry mode
18
         );
19
  port( clk_400, clk, rst : IN std_logic; -- low active reset, clk_400 has a 4 us period
20
        lcd_rs : OUT std_logic;         -- H=data L=command
21
        lcd_rw : OUT std_logic;         -- H=read L=write
22
        lcd_ena : OUT STD_LOGIC;
23
        lcd_data : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
24
        led : OUT STD_LOGIC_VECTOR (0 DOWNTO 0) );  -- used for debug purposes
25
END lcd1;
26
 
27
 
28
ARCHITECTURE behavioral OF lcd1 IS
29
  TYPE state IS ( init_start, wait_set1, set1, wait_eset, eset, wait_set2, set2, wait_lcd_on,
30
                  lcd_on, wait_lcd_clear, lcd_clear, wait_lcd_entr, lcd_entr,
31
                  wait_l1s1, l1s1, wait_l1s2, l1s2, wait_l1s3, l1s3, wait_l1s4, l1s4, wait_l1s5, l1s5,
32
                  wait_l1s6, l1s6, wait_l1s7, l1s7, wait_l1s8, l1s8, wait_l1s9, l1s9, wait_l1s10, l1s10,
33
                  wait_l1s11, l1s11, wait_l1s12, l1s12, wait_l1s13, l1s13, wait_l1s14, l1s14, wait_l1s15, l1s15,
34
                  wait_l1s16, l1s16, wait_l1s17, l1s17, wait_l1s18, l1s18, wait_l1s19, l1s19, wait_l1s20, l1s20,
35
                  wait_l2s1, l2s1, wait_l2s2, l2s2, wait_l2s3, l2s3, wait_l2s4, l2s4, wait_l2s5, l2s5,
36
                  wait_l2s6, l2s6, wait_l2s7, l2s7, wait_l2s8, l2s8, wait_l2s9, l2s9, wait_l2s10, l2s10,
37
                  wait_l2s11, l2s11, wait_l2s12, l2s12, wait_l2s13, l2s13, wait_l2s14, l2s14, wait_l2s15, l2s15,
38
                  wait_l2s16, l2s16, wait_l2s17, l2s17, wait_l2s18, l2s18, wait_l2s19, l2s19, wait_l2s20, l2s20,
39
                  wait_l3s1, l3s1, wait_l3s2, l3s2, wait_l3s3, l3s3, wait_l3s4, l3s4, wait_l3s5, l3s5,
40
                  wait_l3s6, l3s6, wait_l3s7, l3s7, wait_l3s8, l3s8, wait_l3s9, l3s9, wait_l3s10, l3s10,
41
                  wait_l3s11, l3s11, wait_l3s12, l3s12, wait_l3s13, l3s13, wait_l3s14, l3s14, wait_l3s15, l3s15,
42
                  wait_l3s16, l3s16, wait_l3s17, l3s17, wait_l3s18, l3s18, wait_l3s19, l3s19, wait_l3s20, l3s20,
43
                  wait_l4s1, l4s1, wait_l4s2, l4s2, wait_l4s3, l4s3, wait_l4s4, l4s4, wait_l4s5, l4s5,
44
                  wait_l4s6, l4s6, wait_l4s7, l4s7, wait_l4s8, l4s8, wait_l4s9, l4s9, wait_l4s10, l4s10,
45
                  wait_l4s11, l4s11, wait_l4s12, l4s12, wait_l4s13, l4s13, wait_l4s14, l4s14, wait_l4s15, l4s15,
46
                  wait_l4s16, l4s16, wait_l4s17, l4s17, wait_l4s18, l4s18, wait_l4s19, l4s19, wait_l4s20, l4s20,
47
                  wait_new_line1, new_line1, wait_new_line2, new_line2, wait_new_line3, new_line3, wait_new_line4, new_line4,
48
                  wait_renew );
49
  signal pr_state, nxt_state : state;
50
  signal one_usec, rst_int : STD_LOGIC := '0';
51
  signal counter : INTEGER RANGE 0 TO max_factor;
52
  SIGNAL lcd_data_int : STD_LOGIC_VECTOR (9 DOWNTO 0);
53
  signal str1, lcd_reg : lcd_matrix;
54
BEGIN
55
  lcd_reg <= str1;
56
  str1 <= ( ' ',' ',' ',' ',' ','T','U',' ','C','h','e','m','n','i','t','z',' ',' ',' ',' ',
57
            ' ',' ',' ',' ',' ',' ',' ',' ','S','S','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',
58
            ' ',' ','D','i','m','o',' ','P','e','p','e','l','y','a','s','h','e','v',' ',' ',
59
            ' ',' ',' ',' ',' ',' ',' ',' ','-','-','-',' ',' ',' ',' ',' ',' ',' ',' ',' ' );
60
  lcd_rw <= '0'; -- only writing to the LCD needed, lcd_data_int(8) is never used
61
  lcd_rs <= lcd_data_int(9);
62
  lcd_data <= lcd_data_int(7 downto 0);
63
  led(0) <= clk_400;
64
 
65
--------------------------------------------------------------------------------------
66
-- generates a signal with 1us period 
67
--------------------------------------------------------------------------------------
68
one_sec_p: process(clk)
69
  VARIABLE temp : integer RANGE 0 TO one_usec_factor;
70
  begin
71
    IF clk'event AND clk='1' THEN
72
      IF rst_int='0' THEN
73
        temp := 0;
74
        one_usec <= '1'; -- because dalay_p counts on a positive transition
75
      else
76
        iF temp>=one_usec_factor THEN
77
          temp := 0;
78
          one_usec <= NOT one_usec;
79
        else
80
          temp := temp + 1;
81
        END if;
82
      END if;
83
    END IF;
84
  END process;
85
 
86
 
87
--------------------------------------------------------------------------------------
88
-- delays generetor
89
--------------------------------------------------------------------------------------
90
delay_p: process(clk)
91
  variable temp0 : integer RANGE 0 TO max_factor;
92
  VARIABLE flag : STD_LOGIC := '0';
93
BEGIN
94
    IF clk'EVENT AND clk='1' THEN
95
      IF rst_int='0' THEN
96
        temp0 := 0;
97
      else
98
        IF one_usec='0' AND flag='1' THEN
99
          flag := '0';
100
        END IF;
101
--the following part is executed only on a positive transition of one_usec
102
        IF one_usec='1' AND flag='0' THEN
103
          flag := '1';
104
          IF
105
            temp0>=max_factor THEN
106
            temp0 := 0;
107
          ELSE
108
            temp0 := temp0 + 1;
109
          end if;
110
        END if;
111
      END if;
112
    END if;
113
    counter <= temp0;
114
END process;
115
 
116
-------------------------------------------------------------------------------
117
-- LCD enable signal generation
118
-------------------------------------------------------------------------------
119
lcd_en: process(clk)
120
  BEGIN
121
    IF clk'EVENT AND clk='1' THEN
122
      IF counter=1 THEN
123
        lcd_ena <= '1';
124
      ELSE
125
        lcd_ena <= '0';
126
      END IF;
127
    END IF;
128
END process;
129
 
130
---------------------------------------------------------------------------------
131
-- MORE automat
132
---------------------------------------------------------------------------------
133
main_s_p: process(clk)
134
  begin
135
    if clk'event and clk='1' then
136
      IF rst='0' THEN
137
        pr_state <= init_start;
138
      else
139
        pr_state <= nxt_state;
140
      end if;
141
    END if;
142
  end process;
143
 
144
 
145
main_c_p: process(pr_state,counter)
146
begin
147
  case pr_state is
148
      WHEN init_start =>
149
        nxt_state <= wait_set1;
150
        rst_int <= '0';
151
        lcd_data_int <= (OTHERS => '0');
152
      WHEN wait_set1 =>
153
        IF counter>=init_factor THEN
154
          nxt_state <= set1;
155
        ELSE
156
          nxt_state <= wait_set1;
157
        END IF;
158
        lcd_data_int <= (OTHERS => '0');
159
        rst_int <= '1';
160
      WHEN set1 =>
161
        nxt_state <= wait_eset;
162
        rst_int <= '0';
163
        lcd_data_int <= ext_mode; -- goto extension mode
164
      WHEN wait_eset =>
165
        IF counter>=normal_factor THEN
166
          nxt_state <= eset;
167
        ELSE
168
          nxt_state <= wait_eset;
169
        END IF;
170
        lcd_data_int <= ext_mode;
171
        rst_int <= '1';
172
      WHEN eset =>
173
        nxt_state <= wait_set2;
174
        rst_int <= '0';
175
        lcd_data_int <= lines_4; -- 4 lines. 5x8 font, goto normal mode
176
      WHEN wait_set2 =>
177
        IF counter>=normal_factor THEN
178
          nxt_state <= set2;
179
        ELSE
180
          nxt_state <= wait_set2;
181
        END IF;
182
        lcd_data_int <= lines_4;
183
        rst_int <= '1';
184
      WHEN set2 =>
185
        nxt_state <= wait_lcd_on;
186
        rst_int <= '0';
187
        lcd_data_int <= data_8bit; -- 8 bit data
188
      WHEN wait_lcd_on =>
189
        IF counter>=normal_factor THEN
190
          nxt_state <= lcd_on;
191
        ELSE
192
          nxt_state <= wait_lcd_on;
193
        END IF;
194
        lcd_data_int <= data_8bit;
195
        rst_int <= '1';
196
      WHEN lcd_on =>
197
        nxt_state <= wait_lcd_clear;
198
        rst_int <= '0';
199
        lcd_data_int <= display_on; -- display on, cursor off, blinking off,
200
      WHEN wait_lcd_clear =>
201
        IF counter>=normal_factor THEN
202
          nxt_state <= lcd_clear;
203
        ELSE
204
          nxt_state <= wait_lcd_clear;
205
        END IF;
206
        lcd_data_int <= display_on;
207
        rst_int <= '1';
208
      WHEN lcd_clear =>
209
        nxt_state <= wait_lcd_entr;
210
        rst_int <= '0';
211
        lcd_data_int <= display_clear; -- clear display
212
      WHEN wait_lcd_entr =>
213
        IF counter>=extended_factor THEN
214
          nxt_state <= lcd_entr;
215
        ELSE
216
          nxt_state <= wait_lcd_entr;
217
        END IF;
218
        lcd_data_int <= display_clear;
219
        rst_int <= '1';
220
      WHEN lcd_entr =>
221
        nxt_state <= wait_l1s1;
222
        rst_int <= '0';
223
        lcd_data_int <= entry_mode; -- goto entry mode, cursor moves right, shift off
224
      WHEN wait_l1s1 =>
225
        IF counter>=normal_factor THEN
226
          nxt_state <= l1s1;
227
        ELSE
228
          nxt_state <= wait_l1s1;
229
        END IF;
230
        lcd_data_int <= entry_mode;
231
        rst_int <= '1';
232
-------------------------------------------------------------------------------
233
-- line 1
234
-------------------------------------------------------------------------------
235
      WHEN l1s1 =>
236
        nxt_state <= wait_l1s2;
237
        rst_int <= '0';
238
        lcd_data_int <= '1' & '0' &  char2std(lcd_reg(1));
239
      WHEN wait_l1s2 =>
240
        IF counter>=normal_factor THEN
241
          nxt_state <= l1s2;
242
        ELSE
243
          nxt_state <= wait_l1s2;
244
        END IF;
245
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(1));
246
        rst_int <= '1';
247
      WHEN l1s2 =>
248
        nxt_state <= wait_l1s3;
249
        rst_int <= '0';
250
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(2));
251
      WHEN wait_l1s3 =>
252
        IF counter>=normal_factor THEN
253
          nxt_state <= l1s3;
254
        ELSE
255
          nxt_state <= wait_l1s3;
256
        END IF;
257
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(2));
258
        rst_int <= '1';
259
      WHEN l1s3 =>
260
        nxt_state <= wait_l1s4;
261
        rst_int <= '0';
262
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(3));
263
      WHEN wait_l1s4 =>
264
        IF counter>=normal_factor THEN
265
          nxt_state <= l1s4;
266
        ELSE
267
          nxt_state <= wait_l1s4;
268
        END IF;
269
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(3));
270
        rst_int <= '1';
271
      WHEN l1s4 =>
272
        nxt_state <= wait_l1s5;
273
        rst_int <= '0';
274
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(4));
275
      WHEN wait_l1s5 =>
276
        IF counter>=normal_factor THEN
277
          nxt_state <= l1s5;
278
        ELSE
279
          nxt_state <= wait_l1s5;
280
        END IF;
281
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(4));
282
        rst_int <= '1';
283
      WHEN l1s5 =>
284
        nxt_state <= wait_l1s6;
285
        rst_int <= '0';
286
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(5));
287
      WHEN wait_l1s6 =>
288
        IF counter>=normal_factor THEN
289
          nxt_state <= l1s6;
290
        ELSE
291
          nxt_state <= wait_l1s6;
292
        END IF;
293
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(5));
294
        rst_int <= '1';
295
      WHEN l1s6 =>
296
        nxt_state <= wait_l1s7;
297
        rst_int <= '0';
298
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(6));
299
      WHEN wait_l1s7 =>
300
        IF counter>=normal_factor THEN
301
          nxt_state <= l1s7;
302
        ELSE
303
          nxt_state <= wait_l1s7;
304
        END IF;
305
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(6));
306
        rst_int <= '1';
307
      WHEN l1s7 =>
308
        nxt_state <= wait_l1s8;
309
        rst_int <= '0';
310
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(7));
311
      WHEN wait_l1s8 =>
312
        IF counter>=normal_factor THEN
313
          nxt_state <= l1s8;
314
        ELSE
315
          nxt_state <= wait_l1s8;
316
        END IF;
317
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(7));
318
        rst_int <= '1';
319
      WHEN l1s8 =>
320
        nxt_state <= wait_l1s9;
321
        rst_int <= '0';
322
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(8));
323
      WHEN wait_l1s9 =>
324
        IF counter>=normal_factor THEN
325
          nxt_state <= l1s9;
326
        ELSE
327
          nxt_state <= wait_l1s9;
328
        END IF;
329
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(8));
330
        rst_int <= '1';
331
      WHEN l1s9 =>
332
        nxt_state <= wait_l1s10;
333
        rst_int <= '0';
334
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(9));
335
      WHEN wait_l1s10 =>
336
        IF counter>=normal_factor THEN
337
          nxt_state <= l1s10;
338
        ELSE
339
          nxt_state <= wait_l1s10;
340
        END IF;
341
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(9));
342
        rst_int <= '1';
343
      WHEN l1s10 =>
344
        nxt_state <= wait_l1s11;
345
        rst_int <= '0';
346
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(10));
347
      WHEN wait_l1s11 =>
348
        IF counter>=normal_factor THEN
349
          nxt_state <= l1s11;
350
        ELSE
351
          nxt_state <= wait_l1s11;
352
        END IF;
353
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(10));
354
        rst_int <= '1';
355
      WHEN l1s11 =>
356
        nxt_state <= wait_l1s12;
357
        rst_int <= '0';
358
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(11));
359
      WHEN wait_l1s12 =>
360
        IF counter>=normal_factor THEN
361
          nxt_state <= l1s12;
362
        ELSE
363
          nxt_state <= wait_l1s12;
364
        END IF;
365
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(11));
366
        rst_int <= '1';
367
      WHEN l1s12 =>
368
        nxt_state <= wait_l1s13;
369
        rst_int <= '0';
370
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(12));
371
      WHEN wait_l1s13 =>
372
        IF counter>=normal_factor THEN
373
          nxt_state <= l1s13;
374
        ELSE
375
          nxt_state <= wait_l1s13;
376
        END IF;
377
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(12));
378
        rst_int <= '1';
379
      WHEN l1s13 =>
380
        nxt_state <= wait_l1s14;
381
        rst_int <= '0';
382
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(13));
383
      WHEN wait_l1s14 =>
384
        IF counter>=normal_factor THEN
385
          nxt_state <= l1s14;
386
        ELSE
387
          nxt_state <= wait_l1s14;
388
        END IF;
389
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(13));
390
        rst_int <= '1';
391
      WHEN l1s14 =>
392
        nxt_state <= wait_l1s15;
393
        rst_int <= '0';
394
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(14));
395
      WHEN wait_l1s15 =>
396
        IF counter>=normal_factor THEN
397
          nxt_state <= l1s15;
398
        ELSE
399
          nxt_state <= wait_l1s15;
400
        END IF;
401
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(14));
402
        rst_int <= '1';
403
      WHEN l1s15 =>
404
        nxt_state <= wait_l1s16;
405
        rst_int <= '0';
406
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(15));
407
      WHEN wait_l1s16 =>
408
        IF counter>=normal_factor THEN
409
          nxt_state <= l1s16;
410
        ELSE
411
          nxt_state <= wait_l1s16;
412
        END IF;
413
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(15));
414
        rst_int <= '1';
415
      WHEN l1s16 =>
416
        nxt_state <= wait_l1s17;
417
        rst_int <= '0';
418
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(16));
419
      WHEN wait_l1s17 =>
420
        IF counter>=normal_factor THEN
421
          nxt_state <= l1s17;
422
        ELSE
423
          nxt_state <= wait_l1s17;
424
        END IF;
425
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(16));
426
        rst_int <= '1';
427
      WHEN l1s17 =>
428
        nxt_state <= wait_l1s18;
429
        rst_int <= '0';
430
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(17));
431
      WHEN wait_l1s18 =>
432
        IF counter>=normal_factor THEN
433
          nxt_state <= l1s18;
434
        ELSE
435
          nxt_state <= wait_l1s18;
436
        END IF;
437
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(17));
438
        rst_int <= '1';
439
      WHEN l1s18 =>
440
        nxt_state <= wait_l1s19;
441
        rst_int <= '0';
442
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(18));
443
      WHEN wait_l1s19 =>
444
        IF counter>=normal_factor THEN
445
          nxt_state <= l1s19;
446
        ELSE
447
          nxt_state <= wait_l1s19;
448
        END IF;
449
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(18));
450
        rst_int <= '1';
451
      WHEN l1s19 =>
452
        nxt_state <= wait_l1s20;
453
        rst_int <= '0';
454
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(19));
455
      WHEN wait_l1s20 =>
456
        IF counter>=normal_factor THEN
457
          nxt_state <= l1s20;
458
        ELSE
459
          nxt_state <= wait_l1s20;
460
        END IF;
461
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(19));
462
        rst_int <= '1';
463
      WHEN l1s20 =>
464
        nxt_state <= wait_new_line1;
465
        rst_int <= '0';
466
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(20));
467
      WHEN wait_new_line1 =>
468
        IF counter>=normal_factor THEN
469
          nxt_state <= new_line1;
470
        ELSE
471
          nxt_state <= wait_new_line1;
472
        END IF;
473
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(20));
474
        rst_int <= '1';
475
      WHEN new_line1 =>
476
        nxt_state <= wait_l2s1;
477
        rst_int <= '0';
478
        lcd_data_int <= "0010100000";
479
      WHEN wait_l2s1 =>
480
        IF counter>=normal_factor THEN
481
          nxt_state <= l2s1;
482
        ELSE
483
          nxt_state <= wait_l2s1;
484
        END IF;
485
        lcd_data_int <= "0010100000";
486
        rst_int <= '1';
487
-------------------------------------------------------------------------------
488
-- line 2
489
-------------------------------------------------------------------------------
490
      WHEN l2s1 =>
491
        nxt_state <= wait_l2s2;
492
        rst_int <= '0';
493
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(21));
494
      WHEN wait_l2s2 =>
495
        IF counter>=normal_factor THEN
496
          nxt_state <= l2s2;
497
        ELSE
498
          nxt_state <= wait_l2s2;
499
        END IF;
500
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(21));
501
        rst_int <= '1';
502
      WHEN l2s2 =>
503
        nxt_state <= wait_l2s3;
504
        rst_int <= '0';
505
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(22));
506
      WHEN wait_l2s3 =>
507
        IF counter>=normal_factor THEN
508
          nxt_state <= l2s3;
509
        ELSE
510
          nxt_state <= wait_l2s3;
511
        END IF;
512
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(22));
513
        rst_int <= '1';
514
      WHEN l2s3 =>
515
        nxt_state <= wait_l2s4;
516
        rst_int <= '0';
517
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(23));
518
      WHEN wait_l2s4 =>
519
        IF counter>=normal_factor THEN
520
          nxt_state <= l2s4;
521
        ELSE
522
          nxt_state <= wait_l2s4;
523
        END IF;
524
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(23));
525
        rst_int <= '1';
526
      WHEN l2s4 =>
527
        nxt_state <= wait_l2s5;
528
        rst_int <= '0';
529
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(24));
530
      WHEN wait_l2s5 =>
531
        IF counter>=normal_factor THEN
532
          nxt_state <= l2s5;
533
        ELSE
534
          nxt_state <= wait_l2s5;
535
        END IF;
536
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(24));
537
        rst_int <= '1';
538
      WHEN l2s5 =>
539
        nxt_state <= wait_l2s6;
540
        rst_int <= '0';
541
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(25));
542
      WHEN wait_l2s6 =>
543
        IF counter>=normal_factor THEN
544
          nxt_state <= l2s6;
545
        ELSE
546
          nxt_state <= wait_l2s6;
547
        END IF;
548
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(25));
549
        rst_int <= '1';
550
      WHEN l2s6 =>
551
        nxt_state <= wait_l2s7;
552
        rst_int <= '0';
553
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(26));
554
      WHEN wait_l2s7 =>
555
        IF counter>=normal_factor THEN
556
          nxt_state <= l2s7;
557
        ELSE
558
          nxt_state <= wait_l2s7;
559
        END IF;
560
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(26));
561
        rst_int <= '1';
562
      WHEN l2s7 =>
563
        nxt_state <= wait_l2s8;
564
        rst_int <= '0';
565
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(27));
566
      WHEN wait_l2s8 =>
567
        IF counter>=normal_factor THEN
568
          nxt_state <= l2s8;
569
        ELSE
570
          nxt_state <= wait_l2s8;
571
        END IF;
572
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(27));
573
        rst_int <= '1';
574
      WHEN l2s8 =>
575
        nxt_state <= wait_l2s9;
576
        rst_int <= '0';
577
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(28));
578
      WHEN wait_l2s9 =>
579
        IF counter>=normal_factor THEN
580
          nxt_state <= l2s9;
581
        ELSE
582
          nxt_state <= wait_l2s9;
583
        END IF;
584
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(28));
585
        rst_int <= '1';
586
      WHEN l2s9 =>
587
        nxt_state <= wait_l2s10;
588
        rst_int <= '0';
589
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(29));
590
      WHEN wait_l2s10 =>
591
        IF counter>=normal_factor THEN
592
          nxt_state <= l2s10;
593
        ELSE
594
          nxt_state <= wait_l2s10;
595
        END IF;
596
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(29));
597
        rst_int <= '1';
598
      WHEN l2s10 =>
599
        nxt_state <= wait_l2s11;
600
        rst_int <= '0';
601
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(30));
602
      WHEN wait_l2s11 =>
603
        IF counter>=normal_factor THEN
604
          nxt_state <= l2s11;
605
        ELSE
606
          nxt_state <= wait_l2s11;
607
        END IF;
608
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(30));
609
        rst_int <= '1';
610
      WHEN l2s11 =>
611
        nxt_state <= wait_l2s12;
612
        rst_int <= '0';
613
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(31));
614
      WHEN wait_l2s12 =>
615
        IF counter>=normal_factor THEN
616
          nxt_state <= l2s12;
617
        ELSE
618
          nxt_state <= wait_l2s12;
619
        END IF;
620
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(31));
621
        rst_int <= '1';
622
      WHEN l2s12 =>
623
        nxt_state <= wait_l2s13;
624
        rst_int <= '0';
625
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(32));
626
      WHEN wait_l2s13 =>
627
        IF counter>=normal_factor THEN
628
          nxt_state <= l2s13;
629
        ELSE
630
          nxt_state <= wait_l2s13;
631
        END IF;
632
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(32));
633
        rst_int <= '1';
634
      WHEN l2s13 =>
635
        nxt_state <= wait_l2s14;
636
        rst_int <= '0';
637
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(33));
638
      WHEN wait_l2s14 =>
639
        IF counter>=normal_factor THEN
640
          nxt_state <= l2s14;
641
        ELSE
642
          nxt_state <= wait_l2s14;
643
        END IF;
644
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(33));
645
        rst_int <= '1';
646
      WHEN l2s14 =>
647
        nxt_state <= wait_l2s15;
648
        rst_int <= '0';
649
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(34));
650
      WHEN wait_l2s15 =>
651
        IF counter>=normal_factor THEN
652
          nxt_state <= l2s15;
653
        ELSE
654
          nxt_state <= wait_l2s15;
655
        END IF;
656
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(34));
657
        rst_int <= '1';
658
      WHEN l2s15 =>
659
        nxt_state <= wait_l2s16;
660
        rst_int <= '0';
661
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(35));
662
      WHEN wait_l2s16 =>
663
        IF counter>=normal_factor THEN
664
          nxt_state <= l2s16;
665
        ELSE
666
          nxt_state <= wait_l2s16;
667
        END IF;
668
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(35));
669
        rst_int <= '1';
670
      WHEN l2s16 =>
671
        nxt_state <= wait_l2s17;
672
        rst_int <= '0';
673
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(36));
674
      WHEN wait_l2s17 =>
675
        IF counter>=normal_factor THEN
676
          nxt_state <= l2s17;
677
        ELSE
678
          nxt_state <= wait_l2s17;
679
        END IF;
680
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(36));
681
        rst_int <= '1';
682
      WHEN l2s17 =>
683
        nxt_state <= wait_l2s18;
684
        rst_int <= '0';
685
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(37));
686
      WHEN wait_l2s18 =>
687
        IF counter>=normal_factor THEN
688
          nxt_state <= l2s18;
689
        ELSE
690
          nxt_state <= wait_l2s18;
691
        END IF;
692
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(37));
693
        rst_int <= '1';
694
      WHEN l2s18 =>
695
        nxt_state <= wait_l2s19;
696
        rst_int <= '0';
697
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(38));
698
      WHEN wait_l2s19 =>
699
        IF counter>=normal_factor THEN
700
          nxt_state <= l2s19;
701
        ELSE
702
          nxt_state <= wait_l2s19;
703
        END IF;
704
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(38));
705
        rst_int <= '1';
706
      WHEN l2s19 =>
707
        nxt_state <= wait_l2s20;
708
        rst_int <= '0';
709
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(39));
710
      WHEN wait_l2s20 =>
711
        IF counter>=normal_factor THEN
712
          nxt_state <= l2s20;
713
        ELSE
714
          nxt_state <= wait_l2s20;
715
        END IF;
716
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(39));
717
        rst_int <= '1';
718
      WHEN l2s20 =>
719
        nxt_state <= wait_new_line2;
720
        rst_int <= '0';
721
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(40));
722
      WHEN wait_new_line2 =>
723
        IF counter>=normal_factor THEN
724
          nxt_state <= new_line2;
725
        ELSE
726
          nxt_state <= wait_new_line2;
727
        END IF;
728
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(40));
729
        rst_int <= '1';
730
      WHEN new_line2 =>
731
        nxt_state <= wait_l3s1;
732
        rst_int <= '0';
733
        lcd_data_int <= "0011000000";
734
      WHEN wait_l3s1 =>
735
        IF counter>=normal_factor THEN
736
          nxt_state <= l3s1;
737
        ELSE
738
          nxt_state <= wait_l3s1;
739
        END IF;
740
        lcd_data_int <= "0011000000";
741
        rst_int <= '1';
742
 
743
-------------------------------------------------------------------------------
744
-- line 3
745
-------------------------------------------------------------------------------
746
      WHEN l3s1 =>
747
        nxt_state <= wait_l3s2;
748
        rst_int <= '0';
749
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(41));
750
      WHEN wait_l3s2 =>
751
        IF counter>=normal_factor THEN
752
          nxt_state <= l3s2;
753
        ELSE
754
          nxt_state <= wait_l3s2;
755
        END IF;
756
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(41));
757
        rst_int <= '1';
758
      WHEN l3s2 =>
759
        nxt_state <= wait_l3s3;
760
        rst_int <= '0';
761
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(42));
762
      WHEN wait_l3s3 =>
763
        IF counter>=normal_factor THEN
764
          nxt_state <= l3s3;
765
        ELSE
766
          nxt_state <= wait_l3s3;
767
        END IF;
768
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(42));
769
        rst_int <= '1';
770
      WHEN l3s3 =>
771
        nxt_state <= wait_l3s4;
772
        rst_int <= '0';
773
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(43));
774
      WHEN wait_l3s4 =>
775
        IF counter>=normal_factor THEN
776
          nxt_state <= l3s4;
777
        ELSE
778
          nxt_state <= wait_l3s4;
779
        END IF;
780
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(43));
781
        rst_int <= '1';
782
      WHEN l3s4 =>
783
        nxt_state <= wait_l3s5;
784
        rst_int <= '0';
785
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(44));
786
      WHEN wait_l3s5 =>
787
        IF counter>=normal_factor THEN
788
          nxt_state <= l3s5;
789
        ELSE
790
          nxt_state <= wait_l3s5;
791
        END IF;
792
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(44));
793
        rst_int <= '1';
794
      WHEN l3s5 =>
795
        nxt_state <= wait_l3s6;
796
        rst_int <= '0';
797
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(45));
798
      WHEN wait_l3s6 =>
799
        IF counter>=normal_factor THEN
800
          nxt_state <= l3s6;
801
        ELSE
802
          nxt_state <= wait_l3s6;
803
        END IF;
804
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(45));
805
        rst_int <= '1';
806
      WHEN l3s6 =>
807
        nxt_state <= wait_l3s7;
808
        rst_int <= '0';
809
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(46));
810
      WHEN wait_l3s7 =>
811
        IF counter>=normal_factor THEN
812
          nxt_state <= l3s7;
813
        ELSE
814
          nxt_state <= wait_l3s7;
815
        END IF;
816
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(46));
817
        rst_int <= '1';
818
      WHEN l3s7 =>
819
        nxt_state <= wait_l3s8;
820
        rst_int <= '0';
821
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(47));
822
      WHEN wait_l3s8 =>
823
        IF counter>=normal_factor THEN
824
          nxt_state <= l3s8;
825
        ELSE
826
          nxt_state <= wait_l3s8;
827
        END IF;
828
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(47));
829
        rst_int <= '1';
830
      WHEN l3s8 =>
831
        nxt_state <= wait_l3s9;
832
        rst_int <= '0';
833
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(48));
834
      WHEN wait_l3s9 =>
835
        IF counter>=normal_factor THEN
836
          nxt_state <= l3s9;
837
        ELSE
838
          nxt_state <= wait_l3s9;
839
        END IF;
840
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(48));
841
        rst_int <= '1';
842
      WHEN l3s9 =>
843
        nxt_state <= wait_l3s10;
844
        rst_int <= '0';
845
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(49));
846
      WHEN wait_l3s10 =>
847
        IF counter>=normal_factor THEN
848
          nxt_state <= l3s10;
849
        ELSE
850
          nxt_state <= wait_l3s10;
851
        END IF;
852
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(49));
853
        rst_int <= '1';
854
      WHEN l3s10 =>
855
        nxt_state <= wait_l3s11;
856
        rst_int <= '0';
857
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(50));
858
      WHEN wait_l3s11 =>
859
        IF counter>=normal_factor THEN
860
          nxt_state <= l3s11;
861
        ELSE
862
          nxt_state <= wait_l3s11;
863
        END IF;
864
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(50));
865
        rst_int <= '1';
866
      WHEN l3s11 =>
867
        nxt_state <= wait_l3s12;
868
        rst_int <= '0';
869
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(51));
870
      WHEN wait_l3s12 =>
871
        IF counter>=normal_factor THEN
872
          nxt_state <= l3s12;
873
        ELSE
874
          nxt_state <= wait_l3s12;
875
        END IF;
876
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(51));
877
        rst_int <= '1';
878
      WHEN l3s12 =>
879
        nxt_state <= wait_l3s13;
880
        rst_int <= '0';
881
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(52));
882
      WHEN wait_l3s13 =>
883
        IF counter>=normal_factor THEN
884
          nxt_state <= l3s13;
885
        ELSE
886
          nxt_state <= wait_l3s13;
887
        END IF;
888
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(52));
889
        rst_int <= '1';
890
      WHEN l3s13 =>
891
        nxt_state <= wait_l3s14;
892
        rst_int <= '0';
893
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(53));
894
      WHEN wait_l3s14 =>
895
        IF counter>=normal_factor THEN
896
          nxt_state <= l3s14;
897
        ELSE
898
          nxt_state <= wait_l3s14;
899
        END IF;
900
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(53));
901
        rst_int <= '1';
902
      WHEN l3s14 =>
903
        nxt_state <= wait_l3s15;
904
        rst_int <= '0';
905
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(54));
906
      WHEN wait_l3s15 =>
907
        IF counter>=normal_factor THEN
908
          nxt_state <= l3s15;
909
        ELSE
910
          nxt_state <= wait_l3s15;
911
        END IF;
912
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(54));
913
        rst_int <= '1';
914
      WHEN l3s15 =>
915
        nxt_state <= wait_l3s16;
916
        rst_int <= '0';
917
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(55));
918
      WHEN wait_l3s16 =>
919
        IF counter>=normal_factor THEN
920
          nxt_state <= l3s16;
921
        ELSE
922
          nxt_state <= wait_l3s16;
923
        END IF;
924
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(55));
925
        rst_int <= '1';
926
      WHEN l3s16 =>
927
        nxt_state <= wait_l3s17;
928
        rst_int <= '0';
929
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(56));
930
      WHEN wait_l3s17 =>
931
        IF counter>=normal_factor THEN
932
          nxt_state <= l3s17;
933
        ELSE
934
          nxt_state <= wait_l3s17;
935
        END IF;
936
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(56));
937
        rst_int <= '1';
938
      WHEN l3s17 =>
939
        nxt_state <= wait_l3s18;
940
        rst_int <= '0';
941
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(57));
942
      WHEN wait_l3s18 =>
943
        IF counter>=normal_factor THEN
944
          nxt_state <= l3s18;
945
        ELSE
946
          nxt_state <= wait_l3s18;
947
        END IF;
948
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(57));
949
        rst_int <= '1';
950
      WHEN l3s18 =>
951
        nxt_state <= wait_l3s19;
952
        rst_int <= '0';
953
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(58));
954
      WHEN wait_l3s19 =>
955
        IF counter>=normal_factor THEN
956
          nxt_state <= l3s19;
957
        ELSE
958
          nxt_state <= wait_l3s19;
959
        END IF;
960
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(58));
961
        rst_int <= '1';
962
      WHEN l3s19 =>
963
        nxt_state <= wait_l3s20;
964
        rst_int <= '0';
965
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(59));
966
      WHEN wait_l3s20 =>
967
        IF counter>=normal_factor THEN
968
          nxt_state <= l3s20;
969
        ELSE
970
          nxt_state <= wait_l3s20;
971
        END IF;
972
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(59));
973
        rst_int <= '1';
974
      WHEN l3s20 =>
975
        nxt_state <= wait_new_line3;
976
        rst_int <= '0';
977
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(60));
978
      WHEN wait_new_line3 =>
979
        IF counter>=normal_factor THEN
980
          nxt_state <= new_line3;
981
        ELSE
982
          nxt_state <= wait_new_line3;
983
        END IF;
984
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(60));
985
        rst_int <= '1';
986
      WHEN new_line3 =>
987
        nxt_state <= wait_l4s1;
988
        rst_int <= '0';
989
        lcd_data_int <= "0011100000";
990
      WHEN wait_l4s1 =>
991
        IF counter>=normal_factor THEN
992
          nxt_state <= l4s1;
993
        ELSE
994
          nxt_state <= wait_l4s1;
995
        END IF;
996
        lcd_data_int <= "0011100000";
997
        rst_int <= '1';
998
 
999
-------------------------------------------------------------------------------
1000
-- line 4
1001
-------------------------------------------------------------------------------
1002
      WHEN l4s1 =>
1003
        nxt_state <= wait_l4s2;
1004
        rst_int <= '0';
1005
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(61));
1006
      WHEN wait_l4s2 =>
1007
        IF counter>=normal_factor THEN
1008
          nxt_state <= l4s2;
1009
        ELSE
1010
          nxt_state <= wait_l4s2;
1011
        END IF;
1012
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(61));
1013
        rst_int <= '1';
1014
      WHEN l4s2 =>
1015
        nxt_state <= wait_l4s3;
1016
        rst_int <= '0';
1017
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(62));
1018
      WHEN wait_l4s3 =>
1019
        IF counter>=normal_factor THEN
1020
          nxt_state <= l4s3;
1021
        ELSE
1022
          nxt_state <= wait_l4s3;
1023
        END IF;
1024
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(62));
1025
        rst_int <= '1';
1026
      WHEN l4s3 =>
1027
        nxt_state <= wait_l4s4;
1028
        rst_int <= '0';
1029
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(63));
1030
      WHEN wait_l4s4 =>
1031
        IF counter>=normal_factor THEN
1032
          nxt_state <= l4s4;
1033
        ELSE
1034
          nxt_state <= wait_l4s4;
1035
        END IF;
1036
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(63));
1037
        rst_int <= '1';
1038
      WHEN l4s4 =>
1039
        nxt_state <= wait_l4s5;
1040
        rst_int <= '0';
1041
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(64));
1042
      WHEN wait_l4s5 =>
1043
        IF counter>=normal_factor THEN
1044
          nxt_state <= l4s5;
1045
        ELSE
1046
          nxt_state <= wait_l4s5;
1047
        END IF;
1048
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(64));
1049
        rst_int <= '1';
1050
      WHEN l4s5 =>
1051
        nxt_state <= wait_l4s6;
1052
        rst_int <= '0';
1053
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(65));
1054
      WHEN wait_l4s6 =>
1055
        IF counter>=normal_factor THEN
1056
          nxt_state <= l4s6;
1057
        ELSE
1058
          nxt_state <= wait_l4s6;
1059
        END IF;
1060
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(65));
1061
        rst_int <= '1';
1062
      WHEN l4s6 =>
1063
        nxt_state <= wait_l4s7;
1064
        rst_int <= '0';
1065
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(66));
1066
      WHEN wait_l4s7 =>
1067
        IF counter>=normal_factor THEN
1068
          nxt_state <= l4s7;
1069
        ELSE
1070
          nxt_state <= wait_l4s7;
1071
        END IF;
1072
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(66));
1073
        rst_int <= '1';
1074
      WHEN l4s7 =>
1075
        nxt_state <= wait_l4s8;
1076
        rst_int <= '0';
1077
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(67));
1078
      WHEN wait_l4s8 =>
1079
        IF counter>=normal_factor THEN
1080
          nxt_state <= l4s8;
1081
        ELSE
1082
          nxt_state <= wait_l4s8;
1083
        END IF;
1084
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(67));
1085
        rst_int <= '1';
1086
      WHEN l4s8 =>
1087
        nxt_state <= wait_l4s9;
1088
        rst_int <= '0';
1089
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(68));
1090
      WHEN wait_l4s9 =>
1091
        IF counter>=normal_factor THEN
1092
          nxt_state <= l4s9;
1093
        ELSE
1094
          nxt_state <= wait_l4s9;
1095
        END IF;
1096
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(68));
1097
        rst_int <= '1';
1098
      WHEN l4s9 =>
1099
        nxt_state <= wait_l4s10;
1100
        rst_int <= '0';
1101
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(69));
1102
      WHEN wait_l4s10 =>
1103
        IF counter>=normal_factor THEN
1104
          nxt_state <= l4s10;
1105
        ELSE
1106
          nxt_state <= wait_l4s10;
1107
        END IF;
1108
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(69));
1109
        rst_int <= '1';
1110
      WHEN l4s10 =>
1111
        nxt_state <= wait_l4s11;
1112
        rst_int <= '0';
1113
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(70));
1114
      WHEN wait_l4s11 =>
1115
        IF counter>=normal_factor THEN
1116
          nxt_state <= l4s11;
1117
        ELSE
1118
          nxt_state <= wait_l4s11;
1119
        END IF;
1120
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(70));
1121
        rst_int <= '1';
1122
      WHEN l4s11 =>
1123
        nxt_state <= wait_l4s12;
1124
        rst_int <= '0';
1125
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(71));
1126
      WHEN wait_l4s12 =>
1127
        IF counter>=normal_factor THEN
1128
          nxt_state <= l4s12;
1129
        ELSE
1130
          nxt_state <= wait_l4s12;
1131
        END IF;
1132
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(71));
1133
        rst_int <= '1';
1134
      WHEN l4s12 =>
1135
        nxt_state <= wait_l4s13;
1136
        rst_int <= '0';
1137
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(72));
1138
      WHEN wait_l4s13 =>
1139
        IF counter>=normal_factor THEN
1140
          nxt_state <= l4s13;
1141
        ELSE
1142
          nxt_state <= wait_l4s13;
1143
        END IF;
1144
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(72));
1145
        rst_int <= '1';
1146
      WHEN l4s13 =>
1147
        nxt_state <= wait_l4s14;
1148
        rst_int <= '0';
1149
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(73));
1150
      WHEN wait_l4s14 =>
1151
        IF counter>=normal_factor THEN
1152
          nxt_state <= l4s14;
1153
        ELSE
1154
          nxt_state <= wait_l4s14;
1155
        END IF;
1156
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(73));
1157
        rst_int <= '1';
1158
      WHEN l4s14 =>
1159
        nxt_state <= wait_l4s15;
1160
        rst_int <= '0';
1161
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(74));
1162
      WHEN wait_l4s15 =>
1163
        IF counter>=normal_factor THEN
1164
          nxt_state <= l4s15;
1165
        ELSE
1166
          nxt_state <= wait_l4s15;
1167
        END IF;
1168
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(74));
1169
        rst_int <= '1';
1170
      WHEN l4s15 =>
1171
        nxt_state <= wait_l4s16;
1172
        rst_int <= '0';
1173
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(75));
1174
      WHEN wait_l4s16 =>
1175
        IF counter>=normal_factor THEN
1176
          nxt_state <= l4s16;
1177
        ELSE
1178
          nxt_state <= wait_l4s16;
1179
        END IF;
1180
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(75));
1181
        rst_int <= '1';
1182
      WHEN l4s16 =>
1183
        nxt_state <= wait_l4s17;
1184
        rst_int <= '0';
1185
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(76));
1186
      WHEN wait_l4s17 =>
1187
        IF counter>=normal_factor THEN
1188
          nxt_state <= l4s17;
1189
        ELSE
1190
          nxt_state <= wait_l4s17;
1191
        END IF;
1192
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(76));
1193
        rst_int <= '1';
1194
      WHEN l4s17 =>
1195
        nxt_state <= wait_l4s18;
1196
        rst_int <= '0';
1197
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(77));
1198
      WHEN wait_l4s18 =>
1199
        IF counter>=normal_factor THEN
1200
          nxt_state <= l4s18;
1201
        ELSE
1202
          nxt_state <= wait_l4s18;
1203
        END IF;
1204
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(77));
1205
        rst_int <= '1';
1206
      WHEN l4s18 =>
1207
        nxt_state <= wait_l4s19;
1208
        rst_int <= '0';
1209
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(78));
1210
      WHEN wait_l4s19 =>
1211
        IF counter>=normal_factor THEN
1212
          nxt_state <= l4s19;
1213
        ELSE
1214
          nxt_state <= wait_l4s19;
1215
        END IF;
1216
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(78));
1217
        rst_int <= '1';
1218
      WHEN l4s19 =>
1219
        nxt_state <= wait_l4s20;
1220
        rst_int <= '0';
1221
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(79));
1222
      WHEN wait_l4s20 =>
1223
        IF counter>=normal_factor THEN
1224
          nxt_state <= l4s20;
1225
        ELSE
1226
          nxt_state <= wait_l4s20;
1227
        END IF;
1228
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(79));
1229
        rst_int <= '1';
1230
      WHEN l4s20 =>
1231
        nxt_state <= wait_new_line4;
1232
        rst_int <= '0';
1233
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(80));
1234
      WHEN wait_new_line4 =>
1235
        IF counter>=normal_factor THEN
1236
          nxt_state <= new_line4;
1237
        ELSE
1238
          nxt_state <= wait_new_line4;
1239
        END IF;
1240
        lcd_data_int <= '1' & '0' & char2std(lcd_reg(80));
1241
        rst_int <= '1';
1242
      WHEN new_line4 =>
1243
        nxt_state <= wait_renew;
1244
        rst_int <= '0';
1245
        lcd_data_int <= "0000000010";
1246
      WHEN wait_renew =>
1247
        IF counter>=extended_factor THEN
1248
          nxt_state <= l1s1;
1249
        ELSE
1250
          nxt_state <= wait_renew;
1251
        END IF;
1252
        lcd_data_int <= "0000000010";
1253
        rst_int <= '1';
1254
      WHEN OTHERS =>
1255
        nxt_state <= init_start;
1256
        rst_int <= '0';
1257
        lcd_data_int <= (OTHERS => '0');
1258
    END case;
1259
  END process;
1260
END behavioral;

powered by: WebSVN 2.1.0

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