Hallo liebe Forumsmitglieder, Ich bin Anfänger in VHDL und soll nun 2 8 bit vectoren als unsigned integer zusammenaddiern. Davon soll ich das erste bit davon als Carry out in c : out std_logic zuweisen und die verbliebenen 8 bit als ausgang ebenfalls auf std_logic_vector. Mein Problem ist, dass Modelsim das nicht zulässt: entity adder is port ( data_0 : in std_logic_vector(7 downto 0); data_1 : in std_logic_vector(7 downto 0); sum_0 : out std_logic_vector(7 downto 0); cy_0 : out std_logic ); end adder; -- Beschreibung der Funktion: architecture rtl of adder is signal cache : std_logic_vector(8 downto 0); begin p_logic0 : process begin cache <= (STD_LOGIC_VECTOR(UNSIGNED(data_0)+UNSIGNED(data_1))); cy_0 <= cache(8); sum_0 <= cache(7 downto 0); end process p_logic0; end rtl; da kommt als error: Length of expected is 9; length of actual is 8. Aber genau das will ich ja, ich will 2 vectoren 8 bit zusammenaddiren und in ein 9 bit externes signal anlegen um das erste aufs carry zuzuweisen und die anderen 8 als ergebnis. Ich danke euch für jede Antwort im voraus.
probier es mal so cache <= (STD_LOGIC_VECTOR(UNSIGNED("0" & data_0)+UNSIGNED("0" & data_1)));
user schrieb: > probier es mal so > > cache <= (STD_LOGIC_VECTOR(UNSIGNED("0" & data_0)+UNSIGNED("0" & > data_1))); Oh mann user (Gast) vielen vielen Dank für deine Hilfe, schönen Tag wünsch ich dir noch!
user schrieb: > probier es mal so
1 | cache <= (STD_LOGIC_VECTOR(UNSIGNED("0" & data_0)+UNSIGNED("0" & data_1))); |
Ich würde das mit resize machen, das funktioniert dann auch bei signed Vektoren:
1 | cache <= STD_LOGIC_VECTOR(resize(UNSIGNED(data_0),9)+resize(UNSIGNED(data_1),9)); |
BTW: es wäre überaus sinnvoll, wenn auch die verwedneten Libraries mit angegeben würden. So muß man raten, ob du numeric_std oder die alte std_arith verwendest...
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.