Concatonation in VHDL "& Verkettung"

OP #1924591
Lesenswert?
• ▲
▼
Hallo! Kann mir jemand bitte einmal die concatonation in folgendem 
Beispiel erklären? Ich verstehe das nicht. Das Programm lässt acht 
nebeneinander liegende Leds (wie auf Nexys 2 oder Spartan 3 Starter 
Board) von außen nach innen laufen. Das Programm ist mir sonst klar, nur 
eben diese Verbindung mit den & Zeichen verstehe ich nicht. Ich weiß, 
dass man damit bit_vectoren verketten kann. Aber warum laufen die Leds, 
bzw. die bits so ab:
10000001
01000010
00100100
00011000
10000001 etc...

Programm:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity Helloworld is
    Port( CLK : in  std_logic;
          RST : in  std_logic;
          LD  : out std_logic_vector (7 downto 0)
        );
end Helloworld;


architecture Behavioral of Helloworld is

  signal divider : integer range 0 to 50000000;
  signal leds    : std_logic_vector(7 downto 0);     --aus mehreren 
Signalen bestehender Bus

begin

  LD <= leds;

  LedPatternProc: process (CLK, RST) is
  begin
    if RST = '1' then
        divider   <= 50000000;
        leds      <= "10000001";
    else
      if (CLK'event and CLK = '1') then
        if divider = 0 then
          divider <= 50000000;
          leds    <= leds(4) & leds(7 downto 5)   & leds(2 downto 0) & 
leds(3);                 --das hier verstehe ich nicht!
        else
          divider <= divider - 1;
        end if;
      end if;
    end if;
  end process;

end Behavioral;
Moderator (Firma: Titel) Persönliche Seite #1924681
Lesenswert?
• ▲
▼
Summy Long schrieb:
> leds    <= leds(4) & leds(7 downto 5)   & leds(2 downto 0) & leds(3);
Hier wird einfach die Reihenfolge der LEDs im Vektor so umsortiert:
4 7 6 5 2 1 0 3

Und wenn wir jetzt mal annehmen, dass z.B. der Ausgangswert so 
ausgesehen hat:

1000 0001

dann ist der nächte Schritt der:
0100 0010

Und der nächste:
0010 0100

Und der nächste:
0001 1000

Und dann:
1000 0001

Und schon sieht man, dass da das Bitmuster durchgeschoben wird.
Diese Beschreibung sind also zwei 4-Bit Schieberegister:
1
  leds    <=   leds(4) & leds(7 downto 5)     &     leds(2 downto 0) & leds(3);
2
              das hier schiebt nach rechts          und das hier nach links
Und heraus kommt ein Lauflicht...

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