Hallo, gibt es in VHDL die Möglichkeit eine Integer-Ziffernfolge (z.B 1234) in ein Array oder Vektor zu speichern, sodass das erste Element die 1, das zweite Elemt die 2, das dritte Element die 3 usw... ist ????? Hoffe Ihr könnt mir helfen
mit Integer Ziffernfolge meine ich natürlich die Zahl 1234, deren Ziffernfolge ich in ein Array oder Vektor packen möchte um die einzelnen Ziffern später einzeln zu addressieren.
du meinst so? type mytype is array(1 to 4) of integer; signal mysignal : mytype = (1 => 1, 2 => 2, 3 => 3, 4 => 4);
@ andy (Gast) Ich sehe das so, dass du eine Integer Zahl in die einzelnen Stellen aufdröseln willst, um sie z.B. auf einer Anzeige darzustellen. Richtig? Dann brauchst du etwas, das dir diese Zahl in einzelne BCD-Darstellung wandelt: http://www.lothar-miller.de/s9y/categories/44-BCD-Umwandlung
Danke an alle für die Ratschläge. Leider steht der Abgabezeitraum meines Schulprojektes kurz bevor, daher habe ich es (aus Gründen meines Unverständnisses) so gelößt: Möchte mich für mein Unwissen schon im Vorab entschuldigen (Bin halt totaler Anfänger) so: if temp >= 10000000 then temp := temp - 10000000; Dezimal8 := Dezimal8 +1 ; end if; if temp >= 1000000 then temp := temp - 1000000; Dezimal7 := Dezimal7 +1 ; end if; if temp >= 100000 then temp := temp - 100000; Dezimal6 := Dezimal6 +1 ; end if; if temp >= 10000 then temp := temp - 10000; Dezimal5 := Dezimal5 +1 ; end if; if temp >= 1000 then temp := temp - 1000; Dezimal4 := Dezimal4 +1 ; end if; if temp >= 100 then temp:= temp - 100; Dezimal3 := Dezimal3 +1; end if; if temp >= 10 then temp:= temp - 10; Dezimal2 := Dezimal2 +1; end if; Dezimal1 := temp; Die Ziffern der Zahl sind Dezimal8 + Dezimal7 + Dezimal6 + Dezimal5 + Dezima4 + Dezimal3 + Dezimal2 + Dezimal1 Besteht die Möglichkeit, diese If-Anweisungen mit Case Statements zu realisieren oder sind bei Case Statemts Operatoren wie >=, <= illegal ??? Beispielcode.......... case temp is when >= 10 => temp:= temp - 10; Dezimal2 := Dezimal2 +1; end case; .........führt zu einem Error Möchte das so machen weil "Generate Programming File" eeeeewig dauert und ich woanders gehört habe, mann könne dies optimieren in dem man case statements statt if-statements benutzt.....oder ist das Mumpitz????
Spiel doch mal durch: nimm eine Zahl, z.B. 6000 if temp >= 10000000 then temp := temp - 10000000; Dezimal8 := Dezimal8 +1 ; end if; temp = 6000 , Dezimal8 = 0 if temp >= 1000000 then temp := temp - 1000000; Dezimal7 := Dezimal7 +1 ; end if; temp = 6000 , Dezimal7 = 0 if temp >= 100000 then temp := temp - 100000; Dezimal6 := Dezimal6 +1 ; end if; temp = 6000 , Dezimal6 = 0 if temp >= 10000 then temp := temp - 10000; Dezimal5 := Dezimal5 +1 ; end if; temp = 6000 , Dezimal5 = 0 if temp >= 1000 then temp := temp - 1000; Dezimal4 := Dezimal4 +1 ; end if; temp = 5000 , Dezimal4 = 1 if temp >= 100 then temp:= temp - 100; Dezimal3 := Dezimal3 +1; end if; temp = 5900 , Dezimal3 = 1 if temp >= 10 then temp:= temp - 10; Dezimal2 := Dezimal2 +1; end if; temp = 5890 , Dezimal2 = 1 Dezimal1 := temp; Dezimal1 = 5890 Scheint mir nicht sinnvoll zu sein. Fazit: du brauchst Schleifen, und die gehen in VHDL nur mit Zustandsautomaten.
PittyJ schrieb: > Fazit: du brauchst Schleifen, und die gehen in VHDL nur mit > Zustandsautomaten. Wenn das eine Schulaufgabe ist, dann reicht es evtl. aus, wenn die Simulation funktioniert. Und dann kann man da schon ein paar Schleifen reinbasteln. Murks bleibt Murks... ;-) Mich packt schon das Grauen, wenn Anfänger mit Variablen rumhantieren...
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.