Forum: FPGA, VHDL & Co. Addition mit Lattice


von Florian Z. (floz)


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!

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


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

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.