En établissant la table de vérité
et avec les tableaux de Karnaugh ou en réfléchissant
quelque peu, il est aisé de voir que :
- la retenue est générée
dès que l’on a au moins 2 des entrées
à 1, ou dit autrement; on a R1 à 1 quand
on a A1 et B1, ou A1 et R0, ou B1 et R0, ou A1 et B1 et
R0,
- la somme S1 est active quand
le nombre d’éléments actifs est impair. S1 est
le « OU exclusif » entre A1, B1 et R0.
Attention : le Ou Exclusif
à n entrées est à 1 pour un nombre
d’entrées actives impair et non pas pour un
nombre d’entrées actives égal exclusivement
à 1.
Le programme généré
pourrait être :
module ADD1Bit (A1, B1, R0, S1, R1)
;
input A1, B1, R0 ;
output S1, R1 ;
assign R1 = (A1 &
B1) | (A1 & R0) | (B1 & R0) ;
assign S1 = A1 ^ B1 ^
R0 ;
endmodule
Rappel : ceci est une description
et n'est pas la façon de réaliser le module commercial. Le
problème connu de la propagation de la retenue sera
réglé automatiquement par le compilateur (don't
care about it!)