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 aumento del flanco ascendente de entrada en 1, compárelo con 10; si son iguales, reinicie a 0 y active el pulso de salida
- Inicialice a 10, en la entrada, el flanco ascendente disminuye en 1, compárelo con 0; si son iguales, reinicie 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 la entrada, el flanco ascendente disminuye 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? ¿Hay un método aún mejor que no haya pensado?
¿Existe una forma "estándar" que le dé al compilador la mejor oportunidad de optimización?