Uczę się korzystać z FPGA (planszy Papilio, która ma xilinx spartan3e, używając vhdl).
Muszę podzielić przychodzący puls przez (zakodowany na stałe) numer.
Widzę 3 opcje - z grubsza jako pseudokod (na przykładzie 10 zliczeń):
- Zainicjuj na 0, przy wzroście zbocza narastającego o 1, w porównaniu do 10; jeśli są równe, zresetować do 0 i wyzwolić impuls wyjściowy
- Zainicjuj do 10, przy spadku narastającego zbocza wejściowego o 1, w porównaniu do 0; jeśli są równe, zresetuj do 10 i uruchom impuls wyjściowy
- Zainicjuj na 9, ale upewnij się, że jest co najmniej 1 wiodący bit „0”, który jest moim bitem wyjściowym. Przy narastającym zboczu narastającym zmniejsz o 1. Po zboczu narastającym bitu wyjściowego zresetuj.
Cykl pracy jest nieistotny.
Czy jeden z nich jest lepszy od innych? Czy istnieje jeszcze lepsza metoda, o której nie myślałem?
Czy istnieje „standardowy” sposób, który da kompilatorowi najlepszą szansę na optymalizację?