Я учусь использовать FPGA (плата разработки Papilio, на которой установлен xilinx spartan3e, использующий vhdl).
Мне нужно разделить входящий импульс на (жестко закодированное) число.
Я вижу 3 варианта - примерно, как псевдокод (на примере 10 отсчетов):
- Инициализируйте до 0, при увеличении входного фронта на 1, сравните с 10; если они равны, сбросьте в 0 и запустите выходной импульс
- Инициализировать до 10, при уменьшении входного фронта на 1, сравнить с 0; если они равны, сбросьте на 10 и запустите выходной импульс
- Инициализируйте до 9, но убедитесь, что есть хотя бы 1 ведущий бит «0», который является моим выходным битом. Нарастающий фронт на входе уменьшается на 1. Нарастающий фронт выходного бита сбрасывается.
Рабочий цикл не важен.
Один из них лучше, чем другие? Есть ли еще лучший метод, о котором я не думал?
Есть ли «стандартный» способ, который даст компилятору наилучшие шансы на оптимизацию?