Ich mache gerade die ersten schritte in vhdl und hätt da gleich mal eine Frage. Das Beispiel der blinkenden Led verwendet als variable signal c : integer range 0 to 4000000 Nun würde ich dieses c gerne auf Ausgangspins umleiten um es an Leds sichtbar zu machen. Um das auf bits umzusplitten sagt mein Buch müsste die Variable als std_logic_vector(4 downto 0) geschrieben werden. Jetzt bin ich etwas durcheinander. Jemand mal nen tipp? Und bitte Tutorials lesen und lehrnen bin ich gerade bei :)
Ja genau sowas steht in meinem Buch. Mal ehrlich ich bin anfänger und verstehe den sinn in deinem Posting nicht.
signal i : integer range 0 to 63; signal u : unsigned(5 downto 0); ... u <= to_unsigned(i,6); led(3 downto 0) <= u(4 downto 1);
Du musst einfach einen Cast oder mehrere auf deine Signale machen. Man kann nicht einfach einen Integer auf einen Pin ausgeben, sondern muss den vorher in einen anderen Datentp "wandeln". Dieses Wandeln nennt man casting. Es kann auch eventuell erforderlich sein, einen Datentyp über einen "Zwischenschritt" zu casten, wenn es von dem einen keinen direkten Cast in einen anderen gibt. Also z.B. von integer nach unsigned und dann von unsigned nach std_logic_vector.. Wie die casts im Einzelnen funktionieren, findest du im Internet.. einfach mal "vhdl casting" googeln in deinem Beispiel kann der Integer Werte von 0... 4 000 000 umfassen. Dazu bedarf es 22 Bit (2 ^22 = 4 194 304) Daraus machst du einen unsigned der Länge 22 Bit über den Cast: to_unsigned(c,22) Diesen unsigned kannst du dann zu std_logic_vetor casten, so dass am Ende das bei raus kommt: zielvektor <= std_logic_vector(to_unsigned(c,22)); Wie du siehst, muss der Zielvektor std_logic_vector(21 downto 0) sein, um damit das komplette c darstellen zu können. (4 downto 0) wäre viel zu klein...
Ich würde hier eher einen Vorteiler machen, der den Zählimpuls aus den 40 MHz herunter teilt, und dann einen unsigned Vektor mit 5 Bit hochzählen, und den dann auf die Ports ausgeben... Ich empfehle übrigens, auch gleich mal so eine simple Sache zu simulieren. Das ist gar nicht so kompliziert. Siehe auch dort: http://www.lothar-miller.de/s9y/archives/80-Hello-World!.html
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.