www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Zuweisung einer Ripple-Carry-Adder Summe an eine Variable


Autor: Christian Fischer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich ( leider ein VHDL Anfänger ) versuche momentan einen 4x4 
Multiplizierer in VHDL zu realisieren mithilfe von 
Ripple-Carry-Addierern.

Das generelle Verfahren ist mir geläufig, jedoch habe ich ein Problem 
bei der Berechnung der letzten Summe die entsteht bei der 
Multiplikation.
Was ich damit meine ist ;) :
.
.
.
G:Rippel_Carry_Adder port map(C,D);  -- Summe des Operanden C und D
H:Rippel_Carry_Adder port map(E,F);  -- Summe des Operanden E und F

end Behavioral;

Ich berechne hier 2 Partialergebnisse wen man so will und muss nun das 
Ergebnis der Summe Rippel_Carry_Adder port map(C,D,CIN) sowie das 
Summenergebnis von Rippel_Carry_Adder port map(E,F,CIN) in einen 
weiteren ( letzten ) Ripple-Carry-Adder geben.
WIe kann ich also nun die Summenergebnisse "abspeichern" ?

Folgende Überlegungen hab ich gemacht :

M <=Rippel_Carry_Adder port map(C,D,CIN)  -- Speichert die Summe in M
N <=Rippel_Carry_Adder port map(E,F,CIN)  -- Speichert die Summe in N
nun könnte man ja Rippel_Carry_Adder port map(M,N,CIN) machen,
Geht sowas?
Andernfalls hab ich ja G : sowie H : die Instanzen? genannt.
Ginge also nun als letzte Ripple-Carry-Stufe Rippel_Carry_Adder port 
map(G,H,CIN)

Vielen Dank für die Hilfe vorab!

Gruss Christian

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> N <= Rippel_Carry_Adder port map(E,F,CIN)  -- Speichert die Summe in N
> Geht sowas?
Nicht mit VHDL.

Autor: Chef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein "N" muss als Portanschluss in die Komonente / Instanz rein.

Autor: Christian Fischer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hu
Danke fuer die Hilfe!

Also sowas wie in der Art :

Rippel_Carry_Adder port map(E,F,CIN,N)

und dann kann ich nacher
wenn ich das gleiche mit M gemacht habe

Rippel_Carry_Adder port map(N,M,CIN) verwenden?

Gruss

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle Signale in eine Entity und aus dieser heraus müssen über den Port.
Dieser sieht bei deinem Addierer etwa so aus
entity Rippel_Carry_Adder is
  port (
    A    : in  std_logic;
    B    : in  std_logic;
    CI   : in  std_logic;
    S    : out  std_logic;
    CO   : out  std_logic
   );
:
Und hier kannst du jetzt mit irgendwelchen Signalen einen Eingang mit 
einem Ausgang verbinden.
 
   Add1: Rippel_Carry_Adder port map(inA1,inB1,cin,s1,co1);
   Add2: Rippel_Carry_Adder port map(inA2,inB2,co1,s2,co2); 
   Add3: Rippel_Carry_Adder port map(inA3,inB3,co2,s3,null); 

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.