Forum: FPGA, VHDL & Co. Problem 2 8bit vektoren zu addieren


von transcend (Gast)


Lesenswert?

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.

von user (Gast)


Lesenswert?

probier es mal so

cache <= (STD_LOGIC_VECTOR(UNSIGNED("0" & data_0)+UNSIGNED("0" & 
data_1)));

von transcend (Gast)


Lesenswert?

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!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von transcend (Gast)


Lesenswert?

Vielen Dank für eure Hife.

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
Noch kein Account? Hier anmelden.