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;
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...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.