На рис. А.35 показана конфігурація лічильника з прямим рахунком (підсумовує лічильника), реалізованого за допомогою трьох тригерів. Цей лічильник рахує в такому порядку: 0,1,2, ... 7,0. Для зворотного рахунку, тобто рахунки в порядку 0,7,6. застосовуються схожі схеми (див. вправу А.26). При побудові цих простих схем використовується закладена в Т-тригері можливість перемикання станів.
Зараз же ми розглянемо можливість реалізації лічильників на основі D-тригерів. Зокрема, мова піде про структуру лічильника, який здатний вважати як в прямому, так і в зворотному порядку, в залежності від значення на зовнішньому керуючому вході. Для того щоб приводиться приклад не виявився занадто великим, ми обмежимося рахунком по модулю 4, для якого достатньо двох бітів стану, що представляють чотири можливих значення лічильника.
Лічильник буде сконструйований на основі стандартної технології синтезу послідовних схем. Така схема вважає в прямому напрямку, якщо вхідний сигнал х дорівнює 0, і в зворотному, якщо вхідний сигнал дорівнює 1. Поточне значення лічильника буде змінюватися на негативному фронті тактового сигналу. Припустимо, що нас особливо цікавить стан лічильника в той момент, коли ми Досчитаем до 2. Тому при значенні лічильника 2 ми будемо видавати вихідний сигнал z = 1, а весь інший час сигнал z буде дорівнює 0.
Такий лічильник можна реалізувати як послідовну схему. Для того щоб визначити нове значення лічильника, яке буде встановлено після чергового тактового імпульсу, досить знати значення х і поточне значення лічильника. Попередні його значення для цього не потрібні. Якщо поточне значення дорівнює 2 і х = 0, таким значенням буде 3. І не важливо, отримано поточне значення шляхом прямого рахунку від 1 або шляхом зворотного рахунку від 3.
Перш ніж показати, як реалізується така схема, давайте опишемо її поведінку за допомогою діаграми станів. У нашого лічильника є чотири різних стану: S0, S1, S2 і S3. Діаграма станів - це граф, в якому стану представлені колами (іноді званими вузлами). Переходи між станами представлені стрілками з написами. Пов'язана зі стрілкою напис вказує, яке значення змінної х викликає даний перехід і яке значення лічильника виходить в результаті. Діаграма станів для нашого лічильника з прямим / зворотним рахунком приведена на рис. А.47. Наприклад, стрілка, що виходить від стану S1 (лічильник = 1) при х = 0, вказує на стан S2. При цьому повідомляється, що поки схема знаходиться в стані S1 і х = 0, вихідне значення z має бути рівним 0. Стрілка, що веде від вузла S2 до вузла S3, вказує, що коли х = 0, на наступному такті буде виконаний перехід в стан S3, а вихідне значення z буде встановлено в 1.
Зверніть увагу, що діаграма станів описує функціональне поведінка лічильника поза якої б то не було зв'язку з його конкретною реалізацією. Так, рис. А.47 може відповідати цифровий схемою, механічному счетному пристрою або комп'ютерній програмі. Подібні діаграми дозволяють описувати будь-яку систему з послідовним поведінкою.
В якості альтернативи діаграмі станів для представлення тієї ж інформації можна скористатися таблицею станів. Така таблиця для нашого прикладу приведена на рис. А.48. У ній описані переходи з кожного поточного стану в наступні стану. визначаються вхідним значенням х. Вихідний сигнал z визначається поточним станом схеми і вхідним значенням х.
Мал. А.47. Діаграма стану для лічильника з прямим / зворотним рахунком по модулю 4, що сигналізує про значення 2