L'unità riceve una coppia di interi X e Y e restituisce in Q ed R il risultato ed il resto della divisione intera. Le richieste avvengono da una unità esterna tramite un protocollo a domanda-risposta che utilizza indicatori a transizione di livello.
// RDY è l'indicatore a transiz. di livello in ingresso, ACK è quello in uscita // la comunicazione avviene a domanda/risposta // INX registro del dividendo // INY registro del divisore // Q registro per il risultato/quoziente // OUTR registro per comunicare il resto // OUTQ registro per comunicare il risultato // prima microistruzione: attesa di arrivo di una richiesta di divisione 0. (RDY=0) nop, 0, (=1) INX -> X, INY -> Y, 0 -> Q, 1. // continuo a sottrarre il divisore dal dividendo e ad incrementare il risultato // fino a che il divisore è maggiore o uguale a ciò che resta del dividendo // quando ho finito, mando il segnale di fine, resetto il segnale di richiesta // e trasferisco risultato e resto nei registri di interfaccia in uscita 1. (segno(X-Y)=0) X - Y -> X, Q + 1 -> Q, 1 (=1) X -> OUTR, Q -> OUTQ, reset RDY, set ACK, 0.
I ritardi nel codice sono forzati. La compilazione del codice su una FPGA vera avrebbe determinato automaticamente la lunghezza del ciclo di clock ottenibile.