Лічильником називається типовий функціональний вузол комп'ютера, призначений для лiчби вхідних імпульсів. Лічильник являє собою зв’язаний ланцюг Т-тригерів, які утворюють пам’ять iз заданим числом сталих станів (рис. 5.1).
Рис.5.1. Логічна структура лічильника Розрядність лічильника n дорівнює числу T-тригерів. Кожний вхідний імпульс змінює стан лічильника, який зберігається до надходження наступного сигналу. Значення виходів тригерів лічильника Qn,Qn–1,...,Q1 відображають результат лічби в прийнятій системі числення. Логічна функція лічильника позначається буквами СТ (counter). Список мікрооперацій лічильника вміщує попереднє встановлення в початковий стан, інкремент або декремент слова, яке зберігається, видачу слів паралельним кодом та ін. Вхідні імпульси можуть надходити на лічильник як періодично, так і довільно розподіленими у часі. Амплітуда і тривалість лічильних імпульсів мають задовольняти технічні вимоги для серій мікросхем, які використовуються. Лічильник є одним з основних функціональних вузлів комп’ютера, а також різних цифрових керуючих та інформаційно-вимірювальних систем. Основне застосування лічильників: утворення послідовності адрес команд програми (лічильник команд або програмний лічильник); підрахунок числа циклів при виконанні операцій ділення, множення, зсуву (лічильник циклів); одержання сигналів мікрооперацій і синхронізації; аналого-цифрові перетворення і побудова електронних таймерів (годинників реального часу). Лічильник характеризується модулем і ємністю лічби. Модуль лічби КЛЧ визначає число станів лічильника. Модуль двійкового n-розрядного лічильника визначається цілим степенем двійки М=2n; в лічильниках інших типів справедлива нерівність КЛЧ £ М. Після лічби числа імпульсів NВХ=КЛЧ лічильник повертається в початковий стан. Таким чином, модуль лічби, який часто називають коефіцієнтом перерахунку, визначає цикл роботи лічильника, після чого його стан повторюється. Тому число вхідних імпульсів і стан лічильника однозначно визначені тільки для першого циклу. Ємність лічби Nmax визначає максимальну кількість вхідних імпульсів, яку може зафіксувати лічильник при одному циклі роботи. Ємність лічби Nmax=КЛЧ –1 за умови, що робота лічильника починається з нульового початкового стану. У лічильниках використовуються три режими роботи: керування, накопичення і ділення. У режимі керування зчитування інформації виконується після кожного вхідного лічильного імпульсу, наприклад, в лічильнику адреси команд. У режимі накопичення головним є підрахунок заданого числа імпульсів або лічба протягом певного часу. У режимі ділення (перерахунку) основним є зменшення частоти надходження імпульсів в КЛЧ разів. Більшість лічильників може працювати в усіх режимах, проте в спеціальних лічильниках-дільниках стани в процесі лічби можуть змінюватися в довільному порядку, що дозволяє спростити схему вузла. Лічильники класифікують за такими ознаками: способом кодування – позиційні та непозиційні; модулем лічби – двійкові, десяткові, з довільним постійним або змінним (програмованим) модулем; напрямком лічби – прості (підсумовуючі, віднімальні) і реверсивні; способом організації міжрозрядних зв’язків – з послідовним, наскрізним, паралельним і комбінованим переносами (позикою); типом використовуваних тригерів – T, JK, D в лічильному режимі; елементним базисом – потенціальні, імпульсні та потенціально-імпульсні. У лічильниках з позиційним кодуванням числовий вираз поточного стану лічильника визначається за формулою: N =Qi = rn Qn + rn-1 Qn-1+...+ r1 Q1 , де ri – вага i-го розряду; Qi – значення виходу i-го розряду; n – число розрядів. Нульове значення всіх розрядів звичайно беруть як початковий стан лічильника. Всі інші стани нумерують за числом вхідних імпульсів, що надійшли. У лічильниках з непозиційним кодуванням (наприклад, у кодах Грея) розряди не мають постійних ваг і кожному набору станів Qn,Qn-1,...,Q1 приписується певна кількість вхідних імпульсів. У комп’ютерах переважно використовують лічильники з позиційним кодуванням. За видом переходів прості лічильники (Лч) розподіляються на підсумовуючі (прямої лічби) і віднімальні (зворотної лічби). У підсумовуючих лічильниках кожний доданий імпульс U+ збільшує стан на одиницю, тобто реалізується мікрооперація інкремента Лч:= Лч+1. Граф переходів підсумовуючого лічильника показаний на рис.5.2, а, де вершини означають стійкі стани. Із М–1-го стану черговий сигнал U+ повертає лічильник у початковий стан і видає сигнал переповнення Р. У віднімальних лічильниках кожний віднімальний імпульс U – зменшує стан на одиницю, тобто реалізується мікрооперація декремента Лч:= Лч–1. Граф переходів віднімального лічильника (рис. 5.2, б) характеризується наявністю переходів тільки в зворотному напрямку від деякого (наприклад, М–1-го) попередньо встановленого стану. Після віднімання М імпульсів лічильник видає сигнал позики Z і повертається в початковий М–1-й стан.
Рис.5.2. Графи лічильників: а – підсумовуючого; б – віднімального; в – реверсивного
Реверсивні лічильники мають переходи в прямому і зворотному напрямках, що дозволяє рахувати підсумовуючі та віднімальні імпульси (рис.5.2, в).У процесі лічби має виконуватися умова åU+ + Nп ³ åU– , де Nп – попередньо записане число. За поточним станом виходів лічильника визначається результат реверсивної лічби: DN = åU+ + Nп – åU –. До часових характеристик лічильників відносяться роздільна здатність, швидкодія і час встановлення (перемикання) коду. Роздільна здатність tрз визначається мінімальним інтервалом часу між двома вхідними імпульсами, при якому ще зберігається працездатність лічильника. Параметр tрз задають часом перемикання tТ першого (молодшого) тригера лічильника, тобто tрз=tТ, оскільки він перемикається під дією кожного вхідного імпульсу. Швидкодія лічильника визначається максимальною частотою Fm надходження вхідних імпульсів в режимі ділення й обчислюється за формулою Fm = 1/tТ. Час встановлення коду tвст відраховується від початку вхідного імпульсу до моменту отримання нового стану. Даний параметр дозволяє обчислювати швидкодію лічильника в режимі керування із співвідношення Fm.к=1/(tвст + tзч), де tзч – час зчитування інформації. Міжрозрядні зв’язки забезпечують вироблення сигналів перенесення в старші розряди при додаванні імпульсів і сигналів позики – при відніманні. Від виду реалізації міжрозрядних зв’язків суттєво залежать параметри tвст і Fm.к. У лічильниках з послідовними перенесеннями тригери перемикаються почергово після кожного вхідного імпульсу в напрямку від молодших розрядів до старших. Такі лічильники називаються послідовними або асинхронними. У лічильниках з паралельними перенесеннями тригери перемикаються одночасно після кожного вхідного імпульсу, такі лічильники називаються паралельними або синхронними.
5.2. Двійкові підсумовуючі та віднімальні лічильники
Двійкові лічильники реалізують лічбу вхідних імпульсів у двійковій системі числення. Число розрядів n двійкового підсумовуючого лічильника для заданого модуля М знаходять із виразу n = log2М. Значення поточного числа N+ вхідних імпульсів n-розрядного підсумовуючого лічильника при відліку з нульового початкового стану визначають за формулою N+=Qi=2n-1 Qn+2n-2 Qn-1+...+20 Q1, де 2i–1 – вага i-го розряду; QiÎ{0,1} – логічне значення прямого виходу тригера i-го розряду. Розряди двійкового лічильника будуються на двоступеневих Т-тригерах або D-тригерах з динамічним керуванням по фронту синхросигналу (в лічильному режимі). У двійковому підсумовуючому лічильнику перенесення Рi в сусідній старший розряд Qi+1 виникає в тому випадку, коли в момент надходження чергового лічильного імпульсу U+ всі молодші розряди находяться в одиничному стані, тобто Pi=U+QiQi–1...Q1=1. Після вироблення перенесення старший розряд перемикається в стан «1», а всі молодші розряди – в стан «0». Асинхронні підсумовуючі лічильники на двоступеневих Т-тригерах будуються так, щоб вхідні імпульси U+ надходили на лічильний вхід тільки першого (молодшого) розряду. Сигнали перенесення передаються асинхронно (послідовно в часі) з прямих виходів молодших розрядів на Т-входи сусідніх старших, як показано на рис.3.14 для трирозрядного лічильника.
а б Рис.5.3. Асинхронний підсумовуючий лічильник на двоступеневих Т-тригерах: а – схема; б – часові діаграми роботи Зміна станів тригерів відбувається за спадом лічильного імпульсу для першого розряду, а для останніх – за спадом сигналу перенесення (рис.5.3, б). Після підрахунку семи імпульсів на виході трирозрядного лічильника установлюється двійковий код Q3Q2Q1=111 (тобто максимальне значення або ємність лічби). Після приходу восьмого вхідного імпульсу U+ трирозрядний підсумовуючий лічильник перемикається у початковий нульовий стан послідовно (асинхронно) в часі: спочатку спадає напруга на виході Q1, потім – на виході Q2 і т.д. За допомогою імпульсу по входу скидання R лічильник повертається в нульовий стан у будь-який момент часу. Часові параметри n-розрядного асинхронного лічильника на двоступеневих тригерах визначаються із співвідношень: роздільна здатність tрз = tT1+tT2 = 2tT , де tT1 і tT2 – час перемикання першого і другого ступенів тригера, причому tT1=tT2= tT; час встановлення tвст= tT1+ ntT2 »ntT; максимальна частота лічби в режимі ділення і керування відповідно: Fm=1/2tT; Fm.к »1/ntT. В режимі керування швидкодія асинхронного лічильника приблизно в n раз менша ніж в режимі ділення. Схема трирозрядного асинхронного двійкового підсу-мовуючого лічильника на Т-тригерах з динамічним керуванням по фронту показана на рис.5.4. Лічильні імпульси U+ надходять на Т-вхід тільки першого (молодшого) розряду; наступні тригери перемикаються асинхронно від сигналів перенесення з інверсних виходів сусідніх молодших розрядів.
а б Рис.5.4. Асинхронний підсумовуючий лічильник на тригерах з динамічним керуванням по фронту: а – схема; б – часові діаграми роботи Часові параметри асинхронного n-розрядного двійкового лічильника на тригерах з динамічним керуванням: tрз = tT , tвст = ntT, Fm=1/tT,Fm.к »1/ntT. Перевагою асинхронних лічильників є простота схеми: збільшення розрядності виконується підключенням необхідного числа тригерів. До недоліків асинхронних лічильників відносяться порівняно низька швидкодія в режимі керування та її залежність від числа розрядів, а також поява проміжних вихідних двійкових кодів у процесі послідовного перемикання тригерів у новий стан. Для одержання мінімального часу перемикання лічильника використовують паралельні перенесення (рис.5.5). Для цього в кожному розряді синхронного лічильника є схема збігу, за допомогою якої аналізуються стани всіх попередніх молодших тригерів і вироблюються функції перенесення згідно з такими логічними співвідношеннями: P1 = U+Q1; P2 = U+Q2Q1; P3 = U+ Q3Q2Q1; Р4= U+ Q4Q3Q2Q1. При надходженні чергового лічильного імпульсу U+ перемикаються тільки ті тригери, для яких усі попередні (молодші) розряди знаходяться в цей момент в одиничному стані.
Рис.5.5. Схема підсумовуючого лічильника з паралельними перенесеннями Час установлення синхронного лічильника не залежить від числа розрядів і дорівнює tвст = tТТ + tР, де tТТ – час перемикання двоступеневого тригера; tР – час затримки розповсюдження сигналу вентилем у ланцюзі перенесення. Максимальна частота лічби в режимі керування Fm » 1/tТТ. Таким чином, синхронні лічильники забезпечують найбільшу швидкодію в режимі керування. При побудові багаторозрядних синхронних лічильників з’являються труднощі – зростання числа входів вентилів у ланцюзі перенесення і збільшення навантаження на виходи тригерів. У двійковому віднімальному лічильнику кожний віднімальний імпульс U – зменшує стан на одиницю. Поточне значення кількості вхідних імпульсів n-розрядного двійкового віднімального лічильника визначається за формулою åU –=Nп – N –, де N – – значення коду на прямих виходах тригерів лічильника; Nп – попередньо записане початкове число; при цьому має виконуватися умова åU –£ Nп. У віднімальних лічильниках сигнали міжрозрядного зв’язку називаються позиками. За правилом двійкового віднімання в момент надходження лічильного імпульсу U – позика із старшого розряду з одиничним значенням виникає за умови, що всі молодші тригери знаходяться в нульовому стані. Після цього всі вони перемикаються в стан «1», а старші – в стан «0». Сигнали позики утворюються на інверсних виходах двоступеневих тригерів або на прямих виходах тригерів з динамічним керуванням по фронту. Параметри віднімального лічильника (модуль і ємність лічби, швидкодія) збігаються з аналогічними характеристиками підсумовуючих лічильників. Схема трирозрядного двійкового асинхронного віднімального лічильника на двоступеневих тригерах показана на рис.5.6, а.
Рис.5.6. Асинхронний віднімальний лічильник на двоступеневих тригерах: а – схема; б – часові діаграми роботи Перед початком роботи за допомогою сигналу на спільному вході S всі тригери лічильника встановлюються в стан “1”, утворюючи вихідний код 111. Віднімальний імпульс U– надходить на лічильний вхід лише першого молодшого розряду, міжрозрядні сигнали позики знімаються асинхронно з інверсних виходів тригера. Після надходження семи віднімальних імпульсів усі тригери лічильника установлюються в стан «0», утворюючи вихідний код 000. Восьмий віднімальний імпульс перемикає лічильник в стан 111 (за умови, що розглядається трирозрядна схема). У віднімальному лічильнику на тригерах з динамічним керуванням по фронту сигнали позики знімаються з прямих виходів тригерів.
5.3. Двійкові реверсивні лічильники
Двійкові реверсивні лічильники мають переходи у двох напрямках: в прямому (при лічбі підсумовуючих сигналів U +) і в зворотному (при переліку віднімальних сигналів U –). Поточне значення різниці підрахованих імпульсів визначається із співвідношення åU + – åU – = N – Nп , де N – значення коду на прямих виходах тригерів лічильника; Nп – попередньо записане в лічильник початкове число. В лічбі має виконуватися умова åU –£Nп +åU +£ 2n–1. Розрізняють одноканальні та двоканальні реверсивні лічильники. В одноканальних реверсивних лічильниках підсумовуючі U + і віднімальні U – сигнали почергово надходять на спільний лічильний вхід, а напрямок лічби задається напрямком ланцюгів міжрозрядних перенесень або позик. Для перемикання міжрозрядних зв’язків у одноканальному реверсивному лічильнику потрібні додаткові керуючі сигнали. Двоканальні реверсивні лічильники мають два лічильних входи: один для підсумовуючих імпульсів U +, другий – для віднімальних U –. Перемикання ланцюгів міжрозрядних зв’язків здійснюється автоматично лічильними сигналами: для переносів – імпульсами U +, для позики – імпульсами U –. Схема одноканального трирозрядного двійкового реверсивного лічильника показана на рис.3.18. Міжрозрядні зв’язки комутуються за допомогою логічних елементів І ЧИ. Для задання напрямку лічбі використовують додатковий RS-тригер: з його прямого виходу знімається сигнал керування додаванням YД (вмикає ланцюги перенесення), а з інверсного виходу – сигнал керування відніманням YВ (вмикає ланцюги позики). На виходах елементів І ЧИ (які називаються “схеми реверса”) виробляється сигнал Тi для лічильних входів старших розрядів:
Рис.5.7. Схема одноканального реверсивного лічильника Таким чином, якщо керуючий RS-тригер знаходиться в стані «1», то лічильник реалізує режим прямої лічби вхідних імпульсів (тобто підсумовування), в іншому випадку – забезпечує режим зворотної лічби (віднімання). В обох режимах роботи тригери перемикаються асинхронно. Схема двоканального чотирирозрядного двійкового реверсивного лічильника показана на рис.5.8. Лічильні Т-входи в тригерах внутрішньо зв’язані схемою ЧИ. Підсумовуючі імпульси U+ надходять на лічильний вхід першого (молодшого) розряду лічильника і одночасно – на входи всіх вентилів у ланцюзі паралельного перенесення. При цьому формуються імпульси міжрозрядних перенесень на основі логічних виразів:
Віднімальні імпульси U-- надходять на лічильний вхід першого розряду лічильника і одночасно на входи всіх вентилів у ланцюзі паралельних позик. При цьому формуються імпульси міжрозрядних позик на основі таких логічних виразів:
Таким чином, у двоканальних реверсивних лічильниках напрямок лічби безпосередньо задається підсумовуючими U+ або віднімальними U– імпульсами. Забороняється одночасне надходження на входи двоканального реверсивного лічильника підсумовуючих і віднімаючих імпульсів. На практиці з урахуванням схемотехнічних можливостей мікросхем середнього ступеня інтеграції багаторозрядні реверсивні лічильники будують у вигляді групової структури. При цьому кожна група представляється, наприклад, мікросхемою чотирирозрядного реверсивного лічильника з паралельними перенесеннями і позиками. Між групами можуть бути утворені послідовні або паралельні зв’язки.
5.4. Двійково-десяткові лічильники
Двійково-десяткові лічильники реалізують лічбу імпульсів у десятковій системі числення, причому кожна десяткова цифра від нуля до дев’яти кодується чотирирозрядним двійковим кодом (тетрадою). Ці лічильники часто називають десятковими або декадними, оскільки вони працюють з модулем лічби, кратним десяти (10, 100, 1000 і т.д.). Багаторозрядний двійково-десятковий лічильник будується на основі регулярного ланцюга декад, при цьому перша (молодша) декада має вагу 100, друга – 101, третя – 102 і т.д. Декада будується на основі чотирирозрядного двійкового лічильника, в якому вилучається надлишкове число станів. Вилучення зайвих шести станів у декаді досягається багатьма способами: попереднім записуванням числа 6 (двійковий код 0110); після лічби дев’ятого імпульсу вихідний код дорівнює 1111 і десятковий сигнал повертає лічильник у початковий стан 0110, отже, тут результат лічби фіксується двійковим кодом з надлишком 6;блокуванням переносів: лічба імпульсів до дев’яти здійснюється у двійковому коді, після чого вмикаються логічні зв’язки блокування перенесень; з надходженням десятого імпульсу лічильник закінчує цикл роботи і повертається в початковий нульовий стан;введенням обернених зв’язків, які забезпечують лічбу в двійковому коді й примусовим перемиканням лічильника в нульовий початковий стан після надходження десятого імпульсу. Схема синхронного десяткового лічильника з блокуванням перенесень показана на рис.5.9. У цій схемі С-входи використовуються як лічильні. З надходженням десятого імпульсу на С-вхід молодшого розряду JK-тригера обнуляються перший і четвертий розряди і сигналом з виходу Q4 блокують перемикання другого і третього розряду.
Рис.5.9. Схема десяткового лічильника на JK-тригерах Схема п’ятирозрядного підсумовуючого двійково-десяткового лічильника показана на рис.5.10.
Рис.5.10. Схема п’ятирозрядного підсумовуючого двійково-десяткового лічильника Модуль даного лічильника складає Клч=105=100000, ємність лічби Nmах=Клч –1= 99999. Виходи тригерів кожної декади підключаються до входів дешифраторів, які забезпечують візуальну індикацію стану лічильника за допомогою різного роду світлових табло.
5.5. Лічильники з одиничним кодуванням
При одиничному (унітарному) кодуванні стани n-розрядного лічильника розрізняються лише місцеположенням однієї одиниці, яка називається маркуючим кодом; в інших розрядах записані нулі. В окремих випадках маркуючий код складається з двох одиниць і називається парно-одиничним. Лічильник з одиничним кодуванням – це ланцюг тригерів, в якому забезпечується зсув попередньо записаного маркуючого коду по “кільцю” в напрямку старших розрядів (прямий підрахунок) або молодших (обернений підрахунок). Такі лічильники часто називають кільцевими (за аналогією з кільцевими регістрами зсуву). Лічильник з одиничним кодуванням характеризується модулем КСЧ = n і ємністю лічби Nmах = n – 1. Таким чином, число станів кільцевого лічильника дорівнює його розрядності і є значно меншим порівняно з іншими типами лічильників. В кільцевих лічильниках кожний розряд має вагу, яка дорівнює номеру стану 0,1,2,...,(n – 1). Із стану (n – 1) після надходження чергового імпульсу лічильник утворює на виході сигнал закінчення циклу (переповнення) і повертається в початковий стан за допомогою кола оберненого зв’язку з виходу старшого розряду Qn на вхід молодшого розряду Q1. Схема чотирирозрядного кільцевого лічильника показана на рис.5.11, а. Перед початком роботи по входу D схеми ЧИ в молодший розряд лічильника записується одиниця і встановлюється початковий код Q4Q3Q2Q1=0001. З надходженням кожного лічильного імпульсу по входу синхронізації одиничний код послідовно зсувається в бік старших розрядів; при цьому молодші розряди, виконані на D-тригерах з динамічним керуванням, обнуляються. Після надходження четвертого імпульсу лічильник повертається в початковий стан за допомогою сигналу з виходу Q4 на вхід схеми ЧИ.
а б Рис.5.11. Кільцевий лічильник: а – схема; б – часові діаграми
Практичне використання кільцевих лічильників пояснюється такими його перевагами: не потребує вихідного дешифратора, оскільки всі стани відрізняються наявністю одиниці лише в одному якому-небудь тригері; в процесі лічби завжди переключається в одиничний стан лише один тригер, що забезпечує мінімальне значення tвст; спрощується побудова схеми контролю лічильника. Схема лічильника Джонсона будується на основі кільцевого, в якому обернений зв’язок реалізується підключенням інверсного виходу старшого розряду до входу молодшого. Лічильник Джонсона (рис.5.12) характеризується модулем лічби КЛЧ=2n і ємністю лічби Nmах=2n – 1. Таким чином, число станів лічильника Джонсона в два рази більше аналогічного параметра кільцевого лічильника. Проте інформація на виходах лічильника Джонсона представляється не в двійковій позиційній системі числення, яка потребує додаткового перетворення.
Рис.5.12. Лічильник Джонсона: а – схема; б – часові діаграми Як видно із часових діаграм (рис.5.12, б), в процесі лічби спочатку рухається “хвиля” одиниць, а потім – “хвиля” нулів. Дешифрація станів лічильника Джонсона здійснюється простіше порівняно з двійковими позиційними лічильниками.