Estou aprendendo a usar um FPGA (placa de desenvolvimento Papilio, que possui um xilinx spartan3e, usando vhdl).
Preciso dividir um pulso recebido por um número (codificado).
Eu posso ver três opções - aproximadamente, como pseudocódigo (usando 10 contagens como exemplo):
- Inicialize para 0, no aumento da borda crescente da entrada em 1, compare com 10; se forem iguais, redefina para 0 e acione o pulso de saída
- Inicialize para 10, ao diminuir a borda crescente da entrada em 1, compare com 0; se forem iguais, redefina para 10 e acione o pulso de saída
- Inicialize para 9, mas verifique se há pelo menos 1 bit "0" inicial, que é o meu bit de saída. Na borda ascendente da entrada, diminua em 1. Na borda ascendente do bit de saída, redefina.
O ciclo de serviço não é importante.
Um deles é melhor que os outros? Existe um método ainda melhor que eu não pensei?
Existe uma maneira "padrão" que dará ao compilador a melhor chance de otimizar?