Skaitītājs

**Skaitītājs** ir ciparierīce, kuras lietojums ir impulsu skaitīšana. Darbības laikā skaitītājs maina savu stāvokli noteiktā secībā. Atļauto stāvokļu skaitu sauc par skaitīšanas moduli K_S. Viens no iespējamiem stāvokļiem tiek uzskatīts par sākuma stāvokli. Ja skaitītājs sāka savu darbību no sākuma stāvokļa, tad katrs impulss, kurš ir pēc kārtas vienāds ar skaitīšanas moduli, atkal uzstāda skaitītāju sākumā stāvoklī, un skaitītāja izejā parādās pārnešanas bits vai aizņemšanas bits.

## Skaitītāju veidi

Skaitītājus var sadalīt pēc to apstrādāšanas koda un pēc skaitīšanas virziena. Gandrīz visi šodien izmantojamie skaitītāji ir bināri skaitītāji, kuri apstrādā 0 un 1 signālus. Ja kodi tiek izvietoti pieaugošā secībā, tad tādus skaitītājus sauc par summējošiem (*Up-counter*), bet ja kodi ir izvietoti dilstošā secībā, tad tādus sauc par samazinošiem (*Down-counter*). Skaitītājus, kuriem skaitīšanas virziens varētu mainīties, sauc par reversīviem skaitītājiem (*Up/Down counter*).

Ja skaitītāja darbībai ir nepieciešams sinhronizētais signāls, tad tādus skaitītājus sauc par sinhronizētiem (visi trigeri pārslēdzas vienlaicīgi). Savukārt skaitītājus, kuri strādā bez sinhronizētā signāla sauc par asinhroniem skaitītājiiem (visi trigeri pārslēdzas dažādos laika brīžos). Vēl skaitītāji dalās pēc savas struktūras uz pakāpeniskiem, paralēliem un pakāpeniski-paralēliem. Galvenā atšķirība ir saistīta ar to, kādā veidā tiek sniegti impulsi uz skaitītāja pozīcijas ieejām. Pakāpeniskā veida skaitītājos impulss tiek sniegts tikai uz pirmās pozīcijas ieeju, bet no tas izejas pāriet uz otrās pozīcijas ieeju. Paralēlveida skaitītājiem skaitīšanas impulsi tiek sniegti uz visu pozīciju ieejām vienlaicīgi, bet skaitītāja iekšējās struktūras dēļ nepieciešamajos gadījumos pozīciju vērtības tiek mainītas.

## Asinhronais skaitītājs

Asinhronus binārus skaitītājus var realizēt uz T, JK vai D veida trigeriem. Piemēram, ja skaitītājs ir realizēts uz JK trigeriem ar lecošo fronti, tad ieejās J un K ir jābūt augstā līmeņa signālam vai loģiskam 1. Šajā stāvoklī JK trigeris mainīs savējo stāvokli uz pretējo ar katru takts impulsu, līdz ar to kādu no izejām Q (summējošiem) vai  \bar Q  (samazinošiem) var izmantot kā takts signālu nākamajam JK trigerim. JK trigeri asinhronā pakāpenveida skaitītājā strādā ar dažādam frekvencēm. Vislielākā frekvence ir pirmajam trigerim, bet pārslēgšanas frekvence katram nākamajam trigerim ir divreiz mazāka.Izmantojot n trigerus, skaitītājs varēs saskaitīt n impulsa periodus, sākot no 0 un līdz 2^n-1.

Četru bitu summējošā asinhrona skaitītāja izeju stāvokļu tabula:

thumb|alt=Example alt text|4 bitu summējošā asinhrona skaitītāja realizācijas shēma uz JK trigeriem ar lecošo fronti

Lai izveidotu samazinošo skaitītāju ir jāizmanto  \bar Q izejas perioda skaita noskaidrošanai.
Trīs bitu samazinošā asinhrona skaitītāja izeju stāvokļu tabula:

thumb|alt=Example alt text|3 bitu samazinošā asinhrona skaitītāja realizācijas shēma uz JK trigeriem ar lecošo fronti

Reversīvā skaitītāja realizācijai, kurš var strādāt gan summēšanas, gan samazināšanas režīmā, ir nepieciešama papildus loģiskā shēma, kura nodrošinātu trigera Q izejas signāla padošanu nākamā trigera takts signāla ieejai summēšanas gadījumā un \bar Q atņemšanas gadījumā. Uzstādot ieejā U/\bar D loģisko vieninieku skaitītājs strādās summēšanas režīmā, bet ar loģisko nulli tas strādās samazināšanas režīmā.Trīs bitu reversīvā asinhrona skaitītāja izeju stāvokļu tabula:
thumb|alt=Example alt text|3 bitu reversīvā asinhrona skaitītāja realizācijas shēma uz JK trigeriem ar lecošo fronti

Ir iespējams arī izveidot skaitītājus, kuri var uzsākt skaitīšanu ar noteiktu perioda numuru un arī beigt, sasniedzot noteikto perioda numuru. To var realizēt, izmantojot speciālas ieejas JK trigeros (overriding inputs). Viena no šiem ieejām ir S jeb Set (uzstādīšana) ieeja, kurai ir aktīvs zems līmenis. Tas nozīmā, ka sniedzot uz to loģisko nulli neatkarīgi no J, K un CLK ieejas, izejā Q vienmēr būs 1. Otrā ir R jeb Reset (dzēšanas) ieeja, tai arī ir aktīvs zems līmenis. Kad uz šo ieeju tiek sniegta loģiskā nulle, neatkarīgi no ieejām J,K un CLK, izejā Q būs nulle.
thumb|alt=Example alt text|Decimālā summēšanas asinhrona skaitītāja realizēšanas shēma uz JK trigeriem ar lecošo fronti un ar papildus loģiskiem elementiem

Tādā veidā, piemēram, var izveidot decimālo skaitītāju, kuram ir jāskaita no 0 līdz 9 un jāpārslēdzas, kad sasniegts 10. impulsa signāls (kad attiecīgi trigeru izejās ir 1010 binārais kods) un atkal jāuzsāk skaitīšanu:
\underbrace{ 0,1,\cdots,9 }_{10}. Realizācijai būs jāizmanto vienu NAND elementu, kurš sniegtu loģisko nulli uz katra trigera R ieeju gadījumā, kad būs sasniegta 1010 kombinācija.

## Sinhronais skaitītājs

Asinhrono skaitītāju trūkums ir tas, ka palielinot trigeru skaitu, palielinās signāla aizkavēšana. Kopīga signāla aizkavēšana skaitītājam ar n trigeriem ir vienāda ar n \times T_P, kur T_P ir viena trigera aiztures laiks. Tādā gadījumā nedrīkst sniegt impulsus, kura periods ir īsāks par n \times T_P, citādāk skaitītājs nevarēs saskaitīt šādu impulsu.
thumb|alt=Example alt text|4 bitu summēšanas sinhrona skaitītāja realizēšanas shēma uz JK trigeriem ar lecošo fronti un ar papildus loģiskiem elementiem

Lai risinātu šo problēmu, var izmantot sinhronus skaitītājus, kur impulsa signāls tiek sniegts uz visiem trigeriem vienlaicīgi. Salīdzinot ar asinhroniem skaitītājiem, sinhronajiem ir nepieciešami papildus loģiskie elementi. Piemēram, realizējot 4 bitu summēšanas sinhrono skaitītāju, trigerim B (skatīt attēlu) būs jāskaita impulsu tikai tādā gadījumā, kad trigera C izeja Q maina savu stāvokli no 1 uz 0. Trigerim A būs jāskaita tad, kad B=C=1 pāriet uz stāvokli B=C=0. Līdzīgi arī var realizēt skaitītāju ar vairākiem bitiem. Stāvokļu tabula sinhronajiem skaitītājiem ir tāda pati kā asinhronajiem.

## Ārējās saites