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


von Christian Fischer (Gast)


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

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


Lesenswert?

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

von Chef (Gast)


Lesenswert?

Dein "N" muss als Portanschluss in die Komonente / Instanz rein.

von Christian Fischer (Gast)


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

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


Lesenswert?

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

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.