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
> N <= Rippel_Carry_Adder port map(E,F,CIN) -- Speichert die Summe in N > Geht sowas? Nicht mit VHDL.
Dein "N" muss als Portanschluss in die Komonente / Instanz rein.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.