E dunque… eccoci al primo articolo di questo blog. Questo primo articolo sarà più che altro una piccola digressione riguardo agli argomenti principali e tratterà di una piccola funzione in Python atta a simulare un CLA.

Dovete sapere che non molto tempo fa ho seguito un corso di “Reti Logiche” presso una università e, nel frattempo, iniziavo a leggete l’ottimo libro “How to think like a computer scientist: Learning with Python” (qui la versione italiana) … è abbastanza vecchio ma la sua struttura didattica resta (a mio parere) molto valida per chi vuole iniziare ad imparare il Python.

Quindi, mentre seguivo il corso, lessi dei CLA (Carry Look Ahead) … una rete combinatoria in grado di in grado di calcolare simultaneamente le cifre di riporto per ogni coppia di addendi.

Adesso vi tralascio la parte noiosa (che comunque potrete trovare trattata benissimo in numerosi testi) ed arrivo al dunque.

Se noi scriviamo il riporto al passo i+1 come: Ri+1 = Ai x Bi + (Ai ⊕ Bi ) x Ri

e la somma al passo i come: Si = Ai ⊕ Bi ⊕ Ri

Si vede che è possibile esprimere la somma in modo ricorsivo.

Tuttavia volevo esprimere lo XOR esclusivamente in termini di AND, OR e NOT… ma è una operazione un po’ lunga da svolgere manualmente e qui vorrei parlarvi di un ottimo software FOSS: Logisim.

Logisim è un tool didattico per disegnare e simulare circuiti logici digitali; tra le altre cose permette di minimizzare espressioni booleane (che è la funzione utile per noi).

Dal menù “Project” andate in “Analyze Circuit”, vi si aprirà una finestra con alcuni campi da compilare; andiamoli a vedere:

  • In “Inputs” ed in “Outputs” andranno rispettivamente inserite le variabili di ingresso e di uscita
  • In “Expression” andranno inserite di volta in volta le due espressioni
  • In “Minimized” potremo minimizzare le espressioni.

Dopo avere minimizzato sia l’espressione della somma che l’espressione del riporto avremo le due equazioni booleane espresse esclusivamente in termini di AND, OR e NOT e potremo quindi scrivere la funzione Python che vi allego.

 

 

Somma ricorsiva in Python per simulare un CLA
Tag:     

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *