Я вчуся використовувати FPGA (Papilio development board, у якого є xilinx spartan3e, використовуючи vhdl).
Мені потрібно розділити вхідний імпульс на (жорстко закодоване) число.
Я бачу 3 варіанти - приблизно, як псевдокод (використовуючи 10 підрахунків як приклад):
- Ініціалізуйте до 0, при збільшенні вхідного краю збільшення на 1, порівняно з 10; якщо вони рівні, скиньте на 0 і запустіть вихідний імпульс
- Ініціалізуйте до 10, при зменшенні краю входу зменшити на 1, порівняти з 0; якщо вони рівні, скиньте на 10 і спрацюйте вихідний імпульс
- Ініціалізуйте до 9, але переконайтесь, що є принаймні 1 провідний біт "0", який є моїм вихідним бітом. На вході зростаюча грань зменшується на 1. На піднімаючий край вихідного біта скиньте.
Робочий цикл є неважливим.
Чи одна з них краща за інші? Чи є ще кращий метод, про який я не думав?
Чи існує "стандартний" спосіб, який дасть компілятору найкращі шанси на оптимізацію?