Relazione progetto Select Carry Adder
Andrea Dell’Osso mat. 209865, Mario Barbieri mat. 213540
November 28, 2021
Funzionamento generale
Il Carry Select Adder(CSA) è un particolare sommatore il cui vantaggio è l’elevata velocità di calcolo, rispetto ad
un comune Ripple Carry Adder(RCA), a dispetto di un più alto costo al livello di porte logiche usate. Un CSA
ad n bit è generalmente costituito da un RCA ad n/2 bit che effettua la somma degli n/2 bit meno significativi,
mentre per gli n/2 bit più significativi la somma viene eseguita nel seguente modo:
2 RCA da n/2 bit, dei quali uno con il riporto in entrata fissato a ’0’, mentre l’altro ad ’1’.
Le somme di ogni bit entrano in un Multiplexer, che ne seleziona la somma finale con il segnale di controllo
preso dal riporto in uscita del primo RCA precedentemente descritto.
L’elevata velocità di calcolo è dovuta al calcolo simultaneo della somma degli n/2 bit più significativi. Infatti
il secondo blocco dei 2 RCA effettuano a priori la somma dei bit più significativi nei casi in cui i riporto sia ’0’ e
’1’. Il risultato corretto della somma e del riporto in uscita del CSA è determinato dal riporto in uscita del primo
RCA. S_OBUF[0]_inst_i_1 S_OBUF[0]_inst
I0 I O 0 S[16:0]
I1 O
B_IBUF[2]_inst OBUF
I2
I O
2 LUT3
IBUF
cin_IBUF_inst
I O
cin S_OBUF[1]_inst_i_1
IBUF B_IBUF[3]_inst I0
I O
3 S_OBUF[1]_inst
I1
B_IBUF[0]_inst I O 1
IBUF I2 O
I O
0
B[15:0] OBUF
I3
IBUF I4 LUT5
B_IBUF[1]_inst S_OBUF[3]_inst_i_2
I O
1 S_OBUF[2]_inst_i_1
I0
IBUF S_OBUF[2]_inst
I0
I1 I O 2
I1 O
A_IBUF[0]_inst I2 O OBUF
I2
I O
0
A[15:0] I3 LUT3
S_OBUF[5]_inst_i_2
IBUF I4 I0
LUT5 S_OBUF[3]_inst_i_1
I1
A_IBUF[1]_inst I0
A_IBUF[2]_inst I2 O
I O
1 S_OBUF[3]_inst
I1
I O
2 I3 I O 3
IBUF I2 O
IBUF I4 OBUF
I3
LUT5
A_IBUF[3]_inst I4
I O
3 LUT5
IBUF S_OBUF[4]_inst_i_1 S_OBUF[4]_inst
I0 I O 4
I1 O OBUF
I2 LUT3
S_OBUF[5]_inst_i_1
I0 S_OBUF[5]_inst
I1 I O 5
I2 O OBUF
I3
A_IBUF[4]_inst I4
I O
4 LUT5
S_OBUF[7]_inst_i_2
IBUF I0 S_OBUF[6]_inst_i_1
I1
A_IBUF[5]_inst S_OBUF[6]_inst
I0
I2 O
I O I O
5 6
I1 O
I3
IBUF OBUF
I2
I4 LUT3
LUT5
B_IBUF[4]_inst
I O
4 S_OBUF[7]_inst_i_1
IBUF A_IBUF[6]_inst I0
I O
6
A_IBUF[8]_inst S_OBUF[7]_inst
I1
B_IBUF[5]_inst
I O I O
8 7
IBUF I2 O
I O
5
IBUF OBUF
I3
IBUF A_IBUF[7]_inst I4
I O
7
A_IBUF[9]_inst LUT5
I O
9 IBUF S_OBUF[10]_inst_i_2
IBUF S_OBUF[8]_inst_i_1
I0 O S_OBUF[8]_inst
I0
A_IBUF[10]_inst I1 I O 8
I1 O
I O
10 LUT2 OBUF
A_IBUF[13]_inst I2
S_OBUF[12]_inst_i_2
IBUF I O
13 LUT3
I0 cout_OBUF_inst_i_2
IBUF
B_IBUF[8]_inst I1 I0 S_OBUF[9]_inst_i_1
I O
8 I2 O I1 I0
IBUF B_IBUF[6]_inst
I3 S_OBUF[9]_inst
I2 O I1
I O
6
I4 I O 9
B_IBUF[9]_inst I3 I2 O
IBUF
I5
I O
9 OBUF
I4 I3
LUT6 LUT5
IBUF B_IBUF[7]_inst I4
I O
7 LUT5
B_IBUF[10]_inst IBUF cout_OBUF_inst_i_3
I O
10 S_OBUF[12]_inst_i_3 S_OBUF[10]_inst_i_1
I0
IBUF I0 I0
A_IBUF[14]_inst I1 S_OBUF[10]_inst
I1 I1
I O
14 I2 O I O 10
I2 O I2 O
IBUF I3 OBUF
I3 I3
I4
I4 I4
LUT5
I5 I5
LUT6 LUT6
A_IBUF[15]_inst
S_OBUF[13]_inst_i_2 I O
15 S_OBUF[11]_inst_i_1
A_IBUF[11]_inst I0 IBUF I0
I O
11 I1 S_OBUF[11]_inst
I1
IBUF I2 O I O 11
I2 O
I3 OBUF
A_IBUF[12]_inst I3
I4
I O
12 I4
LUT5 LUT5
IBUF
B_IBUF[11]_inst S_OBUF[12]_inst_i_1
I O
11 I0
IBUF S_OBUF[12]_inst
I1
S_OBUF[13]_inst_i_3 cout_OBUF_inst_i_4 I O 12
I0 I0 I2 O OBUF
B_IBUF[12]_inst I1 I1 I3
I O
12 I2 O I2 O I4
IBUF I3 I3 I5 LUT6
I4 I4
LUT5 LUT5 cout_OBUF_inst_i_1
I0
S_OBUF[12]_inst_i_4 cout_OBUF_inst
I1
B_IBUF[13]_inst I0 O I O cout
I2 O
I O
13 I1 OBUF
I3
LUT2
IBUF I4 LUT5
B_IBUF[14]_inst B_IBUF[15]_inst
I O
14 I O
15 S_OBUF[13]_inst_i_1
IBUF IBUF I0 S_OBUF[13]_inst
I1 I O 13
I2 O OBUF
I3
I4
S_OBUF[14]_inst_i_2 LUT5
I0
I1 O S_OBUF[14]_inst_i_1
I2 I0
LUT3 S_OBUF[14]_inst
I1 I O 14
I2 O
S_OBUF[14]_inst_i_3 OBUF
I3
I0 I4
I1 O LUT5
I2 LUT3 S_OBUF[15]_inst_i_1
I0 S_OBUF[15]_inst
I1 I O 15
I2 O OBUF
I3
I4 LUT5
S_OBUF[16]_inst_i_1
I0 S_OBUF[16]_inst
I1 I O 16
I2 O OBUF
I3
I4 LUT5
1
Componenti
I componenti utilizzati in questa implementazione del CSA, sono:
Full Adder
Il Full-Adder è un componente fondamentale la cui funzione è quella di eseguire la somma tra due numeri binari ad
1 bit. É caratterizzato da 3 ingressi(numero1, numero2, riporto in entrata) e due uscite (somma, riporto in uscita).
Di seguito riportiamo il codice VHDL del componente FA:
library IEEE ;
1 use IEEE . STD_LO GIC_1164 . ALL ;
2
3 entity FA is
4 Port ( A : in STD_LOGIC ;
5 B : in STD_LOGIC ;
6 cin : in STD_LOGIC ;
7 cout : out STD_LOGIC ;
8 S : out STD_LOGIC ) ;
9 end FA ;
10
11 architecture Behavioral of FA is
12
13 begin
14 cout <=( A and B ) or (( A xor B ) and cin ) ;
15 S <= A xor B xor cin ;
16 end Behavioral ;
17 2
Multiplexer 2:1 n
Il multiplexer è un circuito logico base, che consente di selezionare 1 tra 2 ingressi in base allo stato di n segnali di
controllo . Nel caso del Multiplexer 2:1, i bit di ingresso sono 3: due possibili bit di scelta e uno di selezione/co
-
Relazione SFT
-
Relazione solaio
-
Relazione progetto Trasporti collettivi
-
Relazione Progetto pianificazione trasporti