Estoy aprendiendo a usar un FPGA (placa de desarrollo de Papilio, que tiene un xilinx spartan3e, usando vhdl).
Necesito dividir un pulso entrante por un número (codificado).
Puedo ver 3 opciones, aproximadamente, como pseudocódigo (usando 10 cuentas como ejemplo):
- Inicialice a 0, en el flanco ascendente de entrada aumente en 1, compare con 10; si son iguales, restablezca a 0 y active el pulso de salida
- Inicialice a 10, en el borde ascendente de entrada disminuya en 1, compare con 0; si son iguales, restablezca a 10 y active el pulso de salida
- Inicialice a 9, pero asegúrese de que haya al menos 1 bit "0" inicial, que es mi bit de salida. En el flanco ascendente de entrada, disminuya en 1. En el flanco ascendente del bit de salida, reinicie.
El ciclo de trabajo no es importante.
¿Es uno de estos mejor que los otros? ¿Existe un método aún mejor en el que no haya pensado?
¿Existe una forma "estándar" que le dará al compilador la mejor oportunidad de optimización?