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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.