1 | ----------------------------------------------------------------------------------
|
2 | -- Zählertest
|
3 | ----------------------------------------------------------------------------------
|
4 | library IEEE;
|
5 | use IEEE.STD_LOGIC_1164.ALL;
|
6 | use IEEE.NUMERIC_STD.ALL ;
|
7 |
|
8 | entity Zaehler is
|
9 | Port (
|
10 | CLK : in STD_LOGIC := '0' ; -- 10 Mhz Eingangstakt
|
11 | QZeiZei : out STD_LOGIC_VECTOR(2 downto 0) := (others => '0') ;
|
12 | ADR : out STD_LOGIC_VECTOR(16 downto 0) := (others => '0')
|
13 | );
|
14 | end Zaehler;
|
15 |
|
16 | architecture VERHALTEN of Zaehler is
|
17 | signal ZeilenjeZeichen_Zaehler : UNSIGNED (2 downto 0) := (others => '0'); -- zählt Zeilen je Zeichen
|
18 | signal Zeichen_Zaehler : UNSIGNED (6 downto 0) := (others => '0'); -- zählt Zeichen je Zeile
|
19 | signal Zeilen_Zaehler : UNSIGNED (8 downto 0) := (others => '0'); -- zählt Zeilen je Bild
|
20 |
|
21 | -- ***********************************************************************************
|
22 | begin
|
23 |
|
24 | -- ZeilenjeZeichenzähler zählt bis 8 = 8 Zeilen je Zeichen
|
25 | Zaehler1:
|
26 | process(CLK) --
|
27 | begin
|
28 | if rising_edge(CLK) then
|
29 | if ZeilenjeZeichen_Zaehler < 5 then -- zählt 0..5
|
30 | ZeilenjeZeichen_Zaehler <= ZeilenjeZeichen_Zaehler + 1 ;
|
31 | else
|
32 | ZeilenjeZeichen_Zaehler <= "000";
|
33 | end if ;
|
34 | end if;
|
35 | end process Zaehler1;
|
36 |
|
37 | QZeiZei <= STD_LOGIC_VECTOR(ZeilenjeZeichen_Zaehler(2 downto 0)) ;
|
38 |
|
39 |
|
40 | --Zeichenzähler je Zeile, zählt bis 80 = 80 Zeichen je Zeile
|
41 | Zaehler2:
|
42 | process(CLK)
|
43 | begin
|
44 | if rising_edge(CLK) then
|
45 | if ZeilenjeZeichen_Zaehler = 5 then
|
46 | if Zeichen_Zaehler <= 62 then
|
47 | Zeichen_Zaehler <= Zeichen_Zaehler + 1 ;
|
48 | else
|
49 | Zeichen_Zaehler <= "0000000" ;
|
50 | end if ;
|
51 | end if;
|
52 | end if;
|
53 | end process Zaehler2 ;
|
54 |
|
55 | ADR(6 downto 0) <= STD_LOGIC_VECTOR(Zeichen_Zaehler(6 downto 0)) ;
|
56 | ADR(7) <= '1' ; -- Testausgang
|
57 |
|
58 | -- ZeilenZähler zählt Zeilen 0 bis 320
|
59 | Zaehler3:
|
60 | process(CLK)
|
61 | begin
|
62 | if rising_edge(CLK) then
|
63 | if Zeichen_Zaehler = 63 and ZeilenjeZeichen_Zaehler = 5 then -- Zeilenzähler bei Zählerstand 1 weiterschalten
|
64 | if Zeilen_Zaehler <319 then -- bis 320 zählen
|
65 | Zeilen_Zaehler <= Zeilen_Zaehler + 1 ; --zählen..
|
66 | else Zeilen_Zaehler <= "000000000" ;
|
67 | end if ;
|
68 | end if ;
|
69 | end if;
|
70 | end process Zaehler3;
|
71 |
|
72 | ADR(16 downto 8) <= STD_LOGIC_VECTOR(Zeilen_Zaehler) ;
|
73 |
|
74 |
|
75 | end VERHALTEN;
|