

Aritmètica de 4 bits
A continuació tractarem alguns circuits aritmètics que efectuen operacions amb 4 bits. Veurem exemples de sumadors i restadors de 4 bits i una UAL (ALU) molt simple.
Exemple: Suma de nombres de 4 bits
En aquest exemple veurem com podem sumar dos nombres binaris de 4 bits. Els sumadors binaris (ripple-carry adders) es poden construir amb sumadors complets (full adders) i un semisumador (half adder). En tractar-se d’una suma de 4 bits, haurem d'encadenar 3 sumadors complets i un semisumador, o bé 4 sumadors complets si configurem el primer sumador complet com a semisumador.
CircuitVerse té un objecte anomenat adder que implementa un sumador.






Les entrades A i B són les variables que es sumen i Cin és el bit de carry d'entrada. Les sortides són Sum amb el resultat i Cout amb el carry de sortida. Si passem el ratolí per les entrades i sortides de l'objecte podem veure el seu nom.
El circuit que efectua la suma concatena 3 sumadors complets i un semisumador:

Si convé, podem implementar el mateix circuit amb 4 sumadors complets. La funció del semisumador la pot fer un sumador complet si hi introduïm una constant

Implementem-ho a CircuitVerse:

En aquest exemple els valors d'entrada són:
- Entrada A = 0010
- Entrada B = 0001
I les sortides:
- Sortida S = A + B
- Sortida Cout = Carry de sortida
A Jutge.org, els exercicis d'àlgebra de 4 bits i àlgebra de

Un cop canviat el BitWidth a 4 podem fer la suma amb un únic adder i simplificar el circuit:

A CircuitVerse, les entrades i sortides de 4 bits tenen cable de color negre, mentre que Cin i Cout, de només 1 bit, són de color verd.
Exemple: Resta de nombres de 4 bits
Per tal de restar dos nombres binaris emprarem la fórmula:
En aquest exemple realitzarem una resta de 4 bits. Considerem:
- Entrada A = 1100 (12 en decimal)
- Entrada B = 0101 (5 en decimal)
- Sortida S = A - B (4 bits)
- Sortida Cout = Carry de sortida
Primer neguem
Després fem la suma:
La següent taula especifica aquesta operació bit a bit (no és una taula de veritat):
| bit | |||||
|---|---|---|---|---|---|
| 0 (LSB) | 0 | 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 2 | 1 | 0 | 0 | 1 | 0 |
| 3 (MSB) | 1 | 1 | 0 | 0 | 1 |
El circuit que efectua la resta concatena 4 sumadors, amb

A CircuitVerse es representa així:

Amb BitWidth = 4 simplifiquem el circuit:

Exemple: Triar operacions
A més d'efectuar operacions aritmètiques, els circuits aritmètics també poden implementar la selecció d'una operació. Les UAL (ALU) permeten triar entre operacions en funció d'una variable. Aquest exemple explora aquesta funcionalitat.
Volem implementar un circuit que triï entre una suma i una resta en funció de la variable d'entrada
- Si
, es fa una suma. - Si
, es fa una resta.
Per realitzar la suma de 4 bits

Per fer la resta emprarem:
Per negar
Afegint la peça del circuit que fa la resta obtenim:

Tant Power com Ground es poden localitzar al menú d’inputs de CircuitVerse. Totes dues funcionen com a una constant. Power sempre té el valor 1 i Ground sempre té valor 0.

Ara cal afegir la part del circuit capaç de triar entre una operació i l’altra a partir de la variable d'entrada
El circuit complet, afegint aquest darrer element, és el següent:


Podem emprar un multiplexor amb més de dues entrades per gestionar més operacions possibles.
Dins del menú de propietats del multiplexor a CircuitVerse es pot modificar el nombre d’entrades amb la propietat control signal size.
Les UALs (ALU) normalment trien entre 4 operacions (multiplexors de 4 entrades) amb un selector

Exercicis a Jutge.org: Introduction to Digital Circuit Design
Recorda que per accedir als exercicis i perquè el Jutge valori les teves solucions has d'estar inscrit al curs. Trobaràs totes les instruccions aquí.



Xavier Casas, Francesc Madrid
Lliçons.jutge.org
© Universitat Politècnica de Catalunya, 2025
