noeppkes
Gast
|
Erstellt: 13.12.07, 16:19 Betreff: serieller Addiere (FullAdder) mit 32Bit
drucken
weiterempfehlen
|
|
|
Hallo,
ich habe folgendes Problem: Um die Slices zu reduzieren, möchte ich anstatt eines 32BIT Synchron Addierers einen 32Bit sequentiellen Addierer einsetzen. Da ich mit bis zu 120 Mhz Takt und 20 usec. Zeit habe, reicht dies locker aus.
Wie würde nun der Aufruf aus meinem Programm heraus aussehen. Bisher schreibe ich:
iw_i1 kommt alle 20 usec. mit einem neuen 11Bit-Wert (Das 11. Bit ist das Vorzeichen) Dieser Wert soll zum bisherigen Wert (mittelwert_i1) aufaddiert werden.
if (bclk and bclk'event = '1') then ... mittelwert_i1 <= mittelwert_i1 + iw_iw; ... end if;
Einen Fulladder habe ich im Internet gefunden. entity FullAdder is Port ( Cin : in STD_LOGIC; A : in STD_LOGIC; B : in STD_LOGIC; Cout : out STD_LOGIC; S : out STD_LOGIC); end FullAdder; ...
Auch einen 4Bit FullAdder. entity FullAdder is Port ( Cin : in STD_LOGIC; A : in STD_LOGIC; B : in STD_LOGIC; Cout : out STD_LOGIC; S : out STD_LOGIC); end FullAdder;
architecture dataflow of FullAdder is
begin
S <= (A and not B and not Cin) or (A and b and Cin) or (not A and B and not Cin) or (not A and not B and Cin); Cout <= (A and Cin) or (B and Cin) or (A and B);
end dataflow;
architecture structural of Adder4 is signal Carry STD_LOGIC_VECTOR (2 downto 0); component FullAdder Port ( Cin : in STD_LOGIC; A : in STD_LOGIC; B : in STD_LOGIC; Cout : out STD_LOGIC; S : out STD_LOGIC); end component begin
U01: FullAdder PORT MAP (C,X(0),Y(0),Carry(0),R(0)); U02: FullAdder PORT MAP (Carray(0),X(1),Y(1),Carry(1),R(1)); U03: FullAdder PORT MAP (Carray(1),X(2),Y(2),Carry(2),R(2)); U04: FullAdder PORT MAP (Carray(2),X(3),Y(3),Carry(4),R(3));
end structural;
Jedoch werden diese über component eingebunden. Ich will die Addition allerdings auf der Flanke haben. Muss ich das dann über eine function lösen, wenn ja aber wie ?
Hierzu fehlt mit nun jeglicher Lösungsansatz. Als 4Bit Addierer würd emir das ganze schon mal reichen. Ich kann es dann selbst erhöhen.
Kann mir jemand helfen ?
noeppkes
|
|