informatica:ae:divisoreverilog
Indice
Unità Firmware Divisore di interi
Descrizione unità
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.
Microprogramma di controllo
// 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.
Schema della PO
Codice Verilog
I ritardi nel codice sono forzati. La compilazione del codice su una FPGA vera avrebbe determinato automaticamente la lunghezza del ciclo di clock ottenibile.
Esempio di output
informatica/ae/divisoreverilog.txt · Ultima modifica: 18/10/2017 alle 12:51 (7 anni fa) da Marco Danelutto