Sto imparando ad usare un FPGA (scheda di sviluppo Papilio, che ha una xilinx spartan3e, usando vhdl).
Devo dividere un impulso in arrivo per un numero (hard coded).
Riesco a vedere 3 opzioni - approssimativamente, come pseudocodice (usando 10 conteggi come esempio):
- Inizializza su 0, all'aumentare il fronte di salita aumenta di 1, rispetto a 10; se sono uguali, reimpostare su 0 e attivare l'impulso di uscita
- Inizializza su 10, sul fronte di salita diminuisce di 1, confronta con 0; se sono uguali, resettare a 10 e attivare l'impulso di uscita
- Inizializza su 9, ma assicurati che ci sia almeno 1 bit "0" iniziale, che è il mio bit di uscita. Sul fronte di salita dell'ingresso diminuisce di 1. Sul fronte di salita del bit di uscita, resettare.
Il ciclo di lavoro non è importante.
Uno di questi è migliore degli altri? Esiste un metodo ancora migliore a cui non ho pensato?
C'è un modo "standard" che darà al compilatore le migliori possibilità di ottimizzazione?