UnitTesting

8 bit adder junit Livello 14

Un sommatore parallelo è composto da un certo numero di Full-Adder, ad esempio per un sommatore a 4 bit:

4-bit ripple carry adder

Ogni Full-Adder è composto da 2 Half-Adder:

Figura FA

Vogliamo simulare la struttura e il funzionamento di un sommatore parallelo a 8 bit, per questo dovrai creare le classi seguenti:

HalfAdder

Simula il comportamento di un semi-sommatore, esegue la somma binaria dei 2 bit in ingresso (A e B) e produce in uscita la somma (S) e il riporto (C):

A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

La classe possiede il costruttore vuoto e i metodi:

  • public boolean getSum(boolean a, boolean b)
  • public boolean getCarry(boolean a, boolean b)

FullAdder

Simula il comportamento di un sommatore completo, è composto da 2 HalfAdder ed esegue la somma binaria dei 2 bit in ingresso (An e Bn) e del bit di riporto della colonna precedente (Cn-1)e produce in uscita la somma (Sn) e il riporto (Cn):

An Bn Cn-1 Sn Cn
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

La classe possiede il costruttore vuoto e i metodi:

  • public boolean getSum(boolean a, boolean b, boolean carryIn)
  • public boolean getCarry(boolean a, boolean b, boolean carryIn)

Calculator

È un calcolatore binario a 8 bit composto da 8 FullAdder e implementa, oltre al costruttore vuoto, i metodi utili per sommare e sottrarre due numeri da 8 bit:

  • public byte add(byte a, byte b)
  • public byte sub(byte a, byte b)

Consegna

  • Definire i casi di test per le classi HalfAdder, FullAdder e Calculator
  • Implementare le 3 classi e i relativi test JUnit

JKFlipFlop junit Livello 14

Considera la classe JKFlipFlop che simula il funzionamento di un flip-flop JK edge-triggered.

JK FF

L’interazione con gli ingressi J e K del flip-flop avviene tramite i metodi:

public void setJ(boolean j)

public void setK(boolean k)

Il triggering del flip-flop è prodotto dal metodo che simula un impulso di clock:

public void clock()

Lo stato del flip-flop è accessibile attraverso il metodo:

public boolean getQ()

La logica di funzionamento del FF JK é riassunta nella seguente tabella:

J K C Q  
0 0 Q0 NC
0 1 0 RESET
1 0 1 SET
1 1 !Q0 TOGGLE

L’istanziazione dei flip-flop è possibile esclusivamente tramite il costruttore vuoto; inizialmente i flip-flop si trovano nello stato RESET (Q=0).

Dovrai:

  • Definire i casi di test per la classe JKFlipFlop, per ognuno di essi dovrai fornire:
    • procedimento
    • risultati attesi
  • Implementare la classe JKFlipFlop
  • Implementare i test per la classe JKFlipFlop utilizzando il framework JUnit in modo appropriato