Problem 2 8bit vektoren zu addieren

Gast #2374788
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.
Moderator (Firma: Titel) Persönliche Seite #2374842
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren