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.