Lauflicht mit VHDL

#202158
Lesenswert?

Hallo kann mir mal jemand das mit dem led<=led(6 downto0) & led(7)
erklären?

LEDSTATE:process(tick,reset)
    begin

     if reset='1' then
  led<="00000001";
     elsif(tick'event and tick = true) then
  led<=led(6 downto 0) & led(7);
        if led(7)='1' then
        led<="00000001";
        end if;
     end if;
end process;

mfg mathias
Gast #202159
Lesenswert?

1
LEDSTATE:process(tick,reset)
2
begin
3
   if reset='1' then                 -- Bei anligendem Reset
4
      led <= "00000001";             -- auf Ausgangszustand
5
zurücksetzen
6
   elsif(tick'event and tick = true) then -- alternativ bei steigende
7

8
                                          -- Flanke von tick
9
                                     -- Bitzuweiszung
10
      led<=led(6 downto 0) & led(7); -- |76543210| <- |65432107|
11
      if led(7)='1' then             -- wenn höchstwertige LED an,
12
dann
13
         led<="00000001";            -- auf Ausgangszustand
14
zurücksetzen
15
      end if;
16
   end if;
17
end process;

:::: (quad colon)
Gast #1307823
Lesenswert?

Einerseits kann man natürlich einen Teiler in die Taktversorgung des 
CPLD schalten. Hardwarelösung sozusagen. Wenn man aber noch Ressourcen 
frei hat, ist es sicher möglich, einen mehrstufigen Binärzähler in VHDL 
zu beschreiben sowie einen Multiplexer, der das Taktsignal für den 
"LEDSTATE" Prozeß ("tick") auf den gewünschten Ausgang des Binärzählers 
schaltet. Dann hat man einen einstellbaren Vorteiler in binären 
Schritten (:2, :4, :8 usw).
VHDL-Code dazu kann ich leider nicht liefern. Aber es sollte gehen.
Gast #4148366
Lesenswert?

1
library ieee;
2
use ieee.std_logic_1164.all;
3
use work.all;
4

5
entity SR8 is
6
  port (
7
  RD, CLK: in std_logic;
8
  A: in std_logic_vector (1 downto 0);
9
  D: out std_logic_vector (1 to 8)
10
  );
11
end entity SR8;
12

13
architecture behavior of SR8 is
14
signal Qn: std_logic_vector (7 downto 0);
15
signal Q: std_logic_vector (7 downto 0); 
16
signal X: std_logic_vector (7 downto 0);
17

18
begin
19
 
20
  SR: process (RD, CLK) is
21
  begin
22
    
23
    if (Qn = "00000000") then
24
    X(1) <= '1';
25
    else
26
    X(1) <= '0';
27
    end if;
28
    
29
    if RD = '1' then
30
      Qn <= "00000000";
31
        
32
        
33
        
34
      else 
35
      if CLK'event and CLK = '1' then
36
        if (A(0)='1') then        
37
        Qn <= X(1) & Qn(7 downto 1);
38
        end if;
39
        if (A(0) = '0') then
40
        Qn <= Qn(6 downto 0) & X(1);
41
        end if;
42
      end if;
43
      end if;
44
      
45
      
46
      
47
--  Ausgabe    
48
    if (A= "10") then
49
    Q <= (not (Qn));
50
    D(1) <= Q(7);
51
    D(2) <= Q(6);
52
    D(3) <= Q(5);
53
    D(4) <= Q(4);
54
    D(5) <= Q(3);
55
    D(6) <= Q(2);  
56
    D(7) <= Q(1);
57
    D(8) <= Q(0);
58
    else
59
    if (A = "00") then
60
      D(1) <= Qn(7);
61
      D(2) <= Qn(6);
62
      D(3) <= Qn(5);
63
      D(4) <= Qn(4);
64
      D(5) <= Qn(3);
65
      D(6) <= Qn(2);  
66
      D(7) <= Qn(1);
67
      D(8) <= Qn(0);
68
      else
69
      if (A = "11") then
70
        Q <= (not (Qn));
71
        D(1) <= Q(7);
72
        D(2) <= Q(6);
73
        D(3) <= Q(5);
74
        D(4) <= Q(4);
75
        D(5) <= Q(3);
76
        D(6) <= Q(2);  
77
        D(7) <= Q(1);
78
        D(8) <= Q(0);
79
        else  
80
          D(1) <= Qn(7);
81
          D(2) <= Qn(6);
82
          D(3) <= Qn(5);
83
          D(4) <= Qn(4);
84
          D(5) <= Qn(3);
85
          D(6) <= Qn(2);  
86
          D(7) <= Qn(1);
87
          D(8) <= Qn(0);
88
        end if;
89
      end if;
90
    end if;
91

92
end process SR;
93
end architecture behavior;


hier meine Ausführung das mit der Ausgabe geht noch einfacher nur komme 
ich nicht drauf :(
Moderator (Firma: Titel) Persönliche Seite #4148558
Lesenswert?

Marcel schrieb:
> geht noch einfacher nur komme ich nicht drauf
Und warum zerrst du für diese Feststellung einen uralten Thread ans 
Tageslicht? Oder soll das eine Frage sein? Dann fehlt die eigentliche 
Aufgabe...


BTW: 1. man macht keine solchen seltsamen kombinatorisch-getakteten 
Prozesse.
2. die Sensitivliste des Prozesses ist unvollständig: Qn fehlt.

Und zum Thema Lauflicht:
http://www.lothar-miller.de/s9y/archives/61-Lauflicht.html

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren