VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
serieller Addiere (FullAdder) mit 32Bit

Anfang   zurück   weiter   Ende
Autor Beitrag
noeppkes
Gast
New PostErstellt: 13.12.07, 16:19  Betreff: serieller Addiere (FullAdder) mit 32Bit  drucken  weiterempfehlen Antwort mit Zitat  

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
nach oben
Sortierung ndern:  
Anfang   zurück   weiter   Ende
Seite 1 von 1
Gehe zu:   
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj