Hallo zusammen,
ich habe ein Problem, denke dass es trivial zu lösen ist, aber komme
einfach nicht auf den passenden Lösungsansatz.
Ich habe einen 12-bit-Counter, der mit Inkrementen >1 gezählt wird.
Nehmen wir als Bsp. Inkrement 5.
Nun möchte ich eine Grenze festlegen, bei der der Counter überlaufen
soll.
Nehmen wir als Bsp. 3198.
Mein Counter zählt also munter los und kommt irgendwann bei der 3195 an.
Nun würde ich mit einer normalen Abfrage
1 | if counter > 3198 then
|
2 | counter <= (others => '0');
|
3 | end if;
|
erst zur 4000 kommen und im kommenden Takt würde ich den Counter auf 0
setzen. Einmal blöd, weil ich dann Werte grüßer meiner maximalen Grenze
habe und nochmal blöd, weil mein Überlauf nicht geht und ich dann wieder
mit 0 anfange und nicht mit dem Überlaufwert.
Ich möchte den Counter also genau einen Takt nach der 3195 auf 2 gesetzt
haben. Der Startwert nach dem Überlauf ist ja auch nicht immer konstant.
Ich möchte also gerne so zählen (mal anschaulich ohne 0 gezählt):
...., 3185, 3190, 3195, 0002, 0007, 0012, ...
Hat jemand eine Idee dazu?
Ist quasi wie eine Uhr mit Überlauf bei 60min oder 12h, nur dass ich
hier immer im 5min Schritten zählen möchte. :)
Vielen Dank!
Frank