HILE! Ich will 2 std_logic_vector (7 downto 0) addieren. (datas_o ist 8 downto 0). Da ich die nicht einfach addieren kann mache ich: datas_o <= std_logic_vector(unsigned(data0_i) + unsigned(data1_i)); ich brauche aber einen Überlauf (alles was größer als FF ist). Wenn ich einen Vektor mit "0" & data0_i erweitere verfälscht es meinen Wert. Was kann ich machen????? D A N K E ! ! !
> Wenn ich einen Vektor mit "0" & data0_i erweitere > verfälscht es meinen Wert. Wenn data0_i vorzeichenlos ist, müsste das doch gehen. Inwiefern wird dein Wert verfälscht? Welche Libs verwendest du? Mit der Numeric_Std gehts so:
1 | datas_o <= std_logic_vector(unsigned('0'&data0_i) + unsigned('0'&data1_i)); |
> Wenn ich einen Vektor mit "0" & data0_i erweitere > verfälscht es meinen Wert. Wenn data0_i vorzeichenlos ist, müsste das doch gehen. Inwiefern wird dein Wert verfälscht? Welche Libs verwendest du? Mit der Numeric_Std gehts so: Danke für die rasche Antwort. So hab ich es eigentlich versucht. Ich überprüfe das Ergebnis dann mit if bzw. ifels und da kommt immer was falsches raus. Mir fällt aber gerade ein, dass ich nur mit 8Bit im IF vergleiche. Kann das der Fehler sein?
Also das, was Du geschrieben hast: datas_o <= std_logic_vector(unsigned(data0_i) + unsigned(data1_i)); dürfte nicht funktionieren, da Du zwei 7-Bit unsigned addierst und es kommt auch ein 7-Bit unsigned raus. Du musst so machen, wie Lothar schrieb: erst erweitern auf 8 Bit und dann addieren. Dann ist Dein Überlauf in data_o(8). Was willst Du da mit IF's vergleichen? Verstehe ich nciht. Grüße, Kest
Danke nochmals für die Mühe. Das Programm soll so zerfleddert sein, ist vorgabe.
will nur je nachdem wie hoch der Wert ist verschiedene Ausgänge schalten. Ist eine Übungsaufgabe
> Das Programm soll so zerfleddert sein, ist vorgabe. Mann, das ist so gut wie eine Verschlüsselung, der beste Kopier- und Kapierschutz... ;-) > Mir fällt aber gerade ein, dass ich nur mit 8Bit im IF vergleiche. > Kann das der Fehler sein? Erweitere die Abfrage mal nach 9 Bits. Das hilft.
1 | :
|
2 | if datas_i <= '0'&X"10" then lvl0_o <= '1'; --da nach erfüllung einer Bedingung |
3 | elsif datas_i <= '0'&X"1B" then lvl1_o <= '1'; --die IF Schleife verlassen wird |
4 | elsif datas_i <= '0'&X"43" then lvl2_o <= '1'; -- kann die Abfrage so erfolgen. |
5 | :
|
6 | :
|
BTW: Lass doch was hören, wenns geklappt hat ;-)
DU BIST GENIAL!!! JA, jetzt funktioniert es. Die Erweiterung bei den IF Abfragen hat gefehlt. Ich glaube ich stehe tief in Deiner Schuld. Das beste daran, ich hab´s verstanden. SUPER HILFE LG Gabriel
> Ich glaube ich stehe tief in Deiner Schuld. ¡De nada! > Das beste daran, ich hab´s verstanden. Das ist allerdings wirklich eine gute Nachricht ;-)
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.