Addition mit Lattice

OP #1883389
Lesenswert?

Hallo ich möchte 2 Werte miteinander addieren bzw Subtrahieren.
Das ist der Code dazu, ich weiß ich bin noch ein ziemlicher Anfänger in 
VHDL soll es aber jetzt im Rahmen meines Praktikums lernen...daher übung 
macht den Meister...
LIBRARY ieee;
USE ieee.std_logic_1164.all;
use ieee.numeric_std.all;


entity SDModulator is


    -- Ports Anlegen--

  port (   dIn: in std_logic;
      dOutm: in std_logic;
      dOut: out std_logic_vector (1 downto 0)
      );

end SDModulator;

architecture Modulator of SDModulator is
signal A, B, C: signed (0 downto 0) ;

begin

  A <= to_signed(dIn, 2);
  B <= to_signed (dOutm, 2);
  C <= A +B;

  dOut <= C;

end Modulator;


Als Fehlermeldung bekomme ich hier "No matching overload for to_signed"

Danke schonmal für die Hilfe!
Moderator (Firma: Titel) Persönliche Seite #1883595
Lesenswert?

Florian Z. schrieb:
Probiers mal nur mit einem Cast, nicht mit einer Conversion:
> A <= signed(dIn, 2);
> B <= signed (dOutm, 2);

Und das passt natürlich nicht zusammen:
> dOut <= C;
Denn du hast hier unterschiedliche Vektorbreiten:
> signal A, B, C: signed (0 downto 0) ;
> dOut: out std_logic_vector (1 downto 0)

Nimm für das Signal C mal besser
 signal C: signed (1 downto 0) ;

Und zu guter Letzt mußt du das Ergebnis wieder auf std_logic 
zurückcasten:
 dOut <= std_logic_vector(C);

Als Tipp zu Casts und Konvertierungen:
http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html

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