Dies ist eine ziemlich einfache Frage, aber ich konnte diese Arbeit noch nicht machen, noch hat jede Suche bei Google oder hier etwas wirklich Nützliches ergeben .VHDL - Hinzufügen von zwei 8-Bit-Vektoren in einen 9-Bit Vektor
Alles, was ich versuche, ist, zwei 8-Bit-Vektoren hinzuzufügen und das Ergebnis in einem 9-Bit-Vektor zu speichern.
signal operand1, operand2 : STD_LOGIC_VECTOR(7 downto 0);
signal sum : STD_LOGIC_VECTOR(8 downto 0);
sum <= operand1 + operand2;
Allerdings erhalte ich die Warnung:
Width mismatch. <sum> has a width of 9 bits but assigned expression is 8-bit wide.
nicht VHDL haben sollte, eine Art in Routine gebaut zu wissen, dass ein zusätzliches Bit für die Zugabe Überlauf notwendig ist?
Ich habe diese Pakete enthalten:
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
Vielleicht std_logic_vector immer unterzeichnet? Wenn ja, muss ich sie explizit als unsigniert definieren?
für eine allgemeine Lösung das funktioniert auch mit SIGNED-Typen, Sie können RESIZE aus der numeric_std-Bibliothek verwenden (zB Summe <= RESIZE (operand1, operand1'LENGTH + 1) + RESIZE (operand2, operand2'LENGTH + 1)) – sbell
@sbell +1 für das generische Lösung! – rick