Счётчик по модулю N
Реализуйте счётчик по модулю N: он считает 0, 1, …, N − 1 и снова 0.
По переднему фронту clk:
- если
rst = 1, счётчик обнуляется (сброс синхронный и важнееen); - иначе, если
en = 1, счётчик увеличивается на 1, а из N − 1 переходит в 0; - иначе счётчик хранит значение.
Выход wrap комбинационный: он равен 1, когда count = N − 1 и en = 1, то есть на следующем фронте счётчик перейдёт в 0. Если на этом фронте придёт сброс, переход всё равно случится, поэтому rst на wrap не влияет. Цепочка таких счётчиков образует делитель частоты: wrap одного разрешает счёт следующего.
Пример при N = 3: