BCD-laskuripiiri
Näimme aiemmin, että T-tyypin flip-floppeja voidaan käyttää yksittäisinä jakajakaksilaskureina. Jos kytkemme yhteen useita toggle-flip-floppeja sarjaketjuksi, voimme tuottaa digitaalisen laskurin, joka tallentaa tai näyttää, kuinka monta kertaa tietty laskentasekvenssi on esiintynyt.
Kellotetut T-tyypin flip-flopit toimivat binäärisenä jaa-kaksi-laskurina, ja asynkronisissa laskureissa yhden laskentavaiheen ulostulo antaa kellopulssin seuraavalle vaiheelle. Tällöin flip-floppilaskurilla on kaksi mahdollista lähtötilaa, ja lisäämällä lisää flip-floppivaiheita voidaan tehdä jako kahdella-2N:llä -laskuri. 4-bittisten binäärilaskureiden ongelmana on kuitenkin se, että ne laskevat 0000:sta 1111:een. Se on 0-15 desimaalilukuna.
Tehdäksemme digitaalisen laskurin, joka laskee 1-10, meidän on saatava laskuri laskemaan vain binääriluvut 0000-1001. Se on 0:sta 9:ään desimaalilukuna, ja onneksi laskentapiirit ovat helposti saatavilla integroituina piireinä, joista yksi on asynkroninen 74LS90-dekadilaskuri.
Digitaalilaskurit laskevat ylöspäin nollasta johonkin ennalta määrättyyn laskenta-arvoon kellosignaalin vaikutuksesta. Kun laskenta-arvo on saavutettu, niiden nollaaminen palauttaa laskurin takaisin nollaan, jolloin se voi aloittaa alusta.
Kymmenlukumittari laskee järjestyksessä kymmenen ja palaa takaisin nollaan yhdeksän laskennan jälkeen. Jotta laskuri voisi laskea binääriarvoon yhdeksän asti, sen ketjussa on oltava vähintään neljä flip-floppia, jotka edustavat kutakin desimaalilukua kuvan mukaisesti.
BCD-laskurin tilakaavio
Tällöin vuosikymmenen laskurissa on neljä flip-floppia ja 16 potentiaalista tilatilaa, joista vain 10 käytetään, ja jos kytkemme sarjan laskureita toisiinsa, pystymme laskemaan 100:aan tai 1 000:een tai mihin tahansa valitsemaamme lopulliseen laskentaan.
Kokonaislukumäärää, johon laskuri voi laskea, kutsutaan sen MODUULIKSI. Laskuria, joka palaa n:n laskennan jälkeen nollaan, kutsutaan modulo-n laskuriksi, esimerkiksi modulo-8 (MOD-8) tai modulo-16 (MOD-16) laskuriksi jne., ja ”n-bittisen laskurin” koko laskenta-alue on 0-2n-1.
Mutta kuten näimme Asynkroniset laskurit -oppaassa, että laskuria, joka nollautuu kymmenen laskennan jälkeen jakamalla 10:llä laskentasekvenssillä binäärisestä 0000:sta (desimaali ”0”) 1001:een (desimaali ”9”), kutsutaan ”binäärikoodatuksi desimaalilaskuriksi” tai lyhyesti BCD-laskuriksi, ja MOD-10-laskurin rakentamisessa voidaan käyttää vähintään neljää vaihtokytkentäistä flip-floppia.
Sitä kutsutaan BCD-laskuriksi, koska sen kymmenen tilan sekvenssi on BCD-koodin mukainen eikä sillä ole säännöllistä kaavaa, toisin kuin suoralla binäärilaskurilla. Sitten yksivaiheinen BCD-laskin, kuten 74LS90, laskee desimaali 0:sta desimaali 9:ään ja pystyy siten laskemaan enintään yhdeksän pulssia. Huomaa myös, että digitaalinen laskuri voi laskea ylös- tai alaspäin tai laskea ylös- ja alaspäin (kaksisuuntainen) riippuen syötetystä ohjaussignaalista.
Binäärikoodattu desimaalikoodi on 8421-koodi, joka koostuu neljästä binäärinumerosta. Nimitys 8421 viittaa neljän käytetyn numeron tai bitin binääripainoon. Esimerkiksi 23 = 8, 22 = 4, 21 = 2 ja 20 = 1. BCD-koodin tärkein etu on se, että se mahdollistaa helpon muunnoksen desimaali- ja binäärilukumuotojen välillä.
74LS90 BCD-laskin
Integroitu piiri 74LS90 on pohjimmiltaan MOD-10 vuosikymmenlaskin, joka tuottaa BCD-lähtökoodin. 74LS90 koostuu neljästä master-slave JK-flip-flopista, jotka on sisäisesti kytketty tuottamaan MOD-2 (count-to-2) laskuri ja MOD-5 (count-to-5) laskuri. 74LS90:ssä on yksi itsenäinen JK-flip-floppi, jota ohjataan CLK A-tulolla, ja kolme JK-flip-floppia, jotka muodostavat asynkronisen laskurin, jota ohjataan CLK B-tulolla kuvan mukaisesti.
74LS90 BCD-laskin
Laskureiden neljä ulostuloa merkitään kirjainsymbolilla Q, jonka numeerinen alaindeksi on yhtä suuri kuin BCD-laskurin piirikoodin vastaavan bitin binääripaino. Eli esimerkiksi QA, QB, QC ja QD. 74LS90:n laskentasekvenssi käynnistyy kellosignaalin negatiivisesta reunasta, eli kun kellosignaali CLK siirtyy loogisesta 1:stä (HIGH) loogiseen 0:aan (LOW).
Lisätulon nastat R1 ja R2 ovat laskurin ”nollaus”-nastoja, kun taas sisääntulot S1 ja S2 ovat ”asetus”-nastoja. Kun Reset-tulot R1 ja R2 kytketään logiikkaan 1, ne nollaavat laskurin takaisin nollaan, 0 (0000), ja kun Set-tulot S1 ja S2 kytketään logiikkaan 1, ne asettavat laskurin maksimiin eli 9:ään (1001) riippumatta todellisesta laskentanumerosta tai -asennosta.
Kuten sanoimme jo aiemmin, 74LS90-laskuri koostuu samassa paketissa olevasta kahdella jakajalla jaettavalla 2:lla -laskurista ja 5:llä jakajalla jaettavalla 5:llä laskurista. Tällöin voimme käyttää jompaakumpaa laskuria tuottaaksemme pelkän divide-by-2 -taajuuslaskurin, pelkän divide-by-5 -taajuuslaskurin tai molemmat yhdessä tuottaaksemme haluamamme divide-by-10 BCD-laskurin.
Ja divide-by-5 -laskurin osan muodostavien neljän flippiflopin ollessa poissa käytöstä, jos kellosignaalia syötetään sisääntulon nastaan 14 (CLKA) ja ulostulon otamme nastasta 12 (QA), pystymme saamaan aikaan vakiomuotoisen divide-by-2 -taajuuslaskurin taajuusjakopiireissä käytettäväksi, kuten kuvassa.
74LS90 divide-by-2 laskuri
Vakiomuotoisen divide-by-5-laskurin aikaansaamiseksi voimme poistaa ensimmäisen edellä mainitun flippiflopin käytöstä ja kytkeä kellosignaalin tulosignaalin suoraan nastaan 1 (CLKB), kun taas ulostulosignaalin otamme nastan nastan 11 (QD) kautta, kuten kuvassa.
74LS90 divide-by-5 laskuri
Huomaa, että tässä divide-by-5 laskurikonfiguraatiossa ulostulon aaltomuoto ei ole symmetrinen, vaan siinä on merkkiväli 4:1. Toisin sanoen neljä sisääntulevaa kellosignaalia luo LOW- eli loogisen ”0”-ulostulon ja viides sisääntuleva kellosignaali tuottaa HIGH- eli loogisen ”1”-ulostulon.
Jaa-10:llä jakavalla BCD-kymmenlukijalla -laskurin tuottamiseksi käytetään molempia sisäisiä laskuripiirejä, jolloin saadaan 2 kertaa 5:llä jakava arvo. Koska flip-flopin ”A” ensimmäinen lähtö QA ei ole sisäisesti kytketty seuraaviin vaiheisiin, laskuri voidaan laajentaa 4-bittiseksi BCD-laskuriksi kytkemällä tämä QA-lähtö CLKB-tuloon kuvan mukaisesti.
74LS90 divide-by-10 laskuri
Tällöin nähdään, että BCD-laskurit ovat binäärilaskureita, jotka laskevat 0000:sta 1001:een ja nollautuvat sen jälkeen, koska se pystyy tyhjentämään kaikki flip-flopit yhdeksännen laskurin jälkeen. Jos kytkemme painonappikytkimen (SW1) kellotuloon CLKA, joka kerta kun painonappikytkin vapautetaan, laskuri laskee yhdellä. Jos liitämme valodiodit (LEDit) lähtöliittimiin QA, QB, QC ja QD kuvan mukaisesti, voimme tarkastella binäärikoodattua desimaalilaskentaa sen tapahtuessa.
74LS90 BCD-kymmenlukumittari
Painonappikytkimen SW1 peräkkäiset käyttökerrat nostavat laskennan yhdeksään, 1001:een. Kymmenennellä käyttökerralla lähdöt ABCD nollautuvat takaisin nollaan uuden laskentasarjan aloittamiseksi. Tällaisella MOD-10:n pyöreällä pulssimäärällä voimme käyttää vuosikymmenlaskuria digitaalinäytön ohjaamiseen.
Jos haluamme näyttää laskentasekvenssin seitsensegmenttinäytöllä, BCD-lähtö on dekoodattava asianmukaisesti ennen kuin se voidaan näyttää. Digitaalista piiriä, joka voi dekoodata 74LS90 BCD-laskurimme neljä ulostuloa ja sytyttää näytön vaaditut segmentit, kutsutaan dekooderiksi.
Driving a Display
Meidän onneksemme joku on jo suunnitellut ja kehittänyt BCD:stä 7-segmenttinäytön dekooderi-IC:n, kuten 74LS47:n, joka tekee juuri tämän. 74LS47: ssä on neljä tuloa BCD-numeroita A, B, C ja D varten ja lähdöt jokaiselle seitsemän segmentin näytön segmentille.
Huomaa, että tavallisessa 7-segmenttisessä LED-näytössä on yleensä kahdeksan tuloliitäntää, yksi kullekin LED-segmentille ja yksi, joka toimii yhteisenä päätelaitteena tai yhteytenä kaikille sisäisille näytön segmenteille. Joissakin näytöissä on myös desimaalipistemahdollisuus (DP).
74LS47 BCD – 7-segmenttiohjain
Näytön 74LS47-dekooderi ottaa vastaan BCD-koodin vastaan ja tuottaa tarvittavat signaalit, jotta voidaan aktivoida sopivat LED-segmentit, jotka ovat vastuussa sovellettujen pulssien lukumäärän osoittamisesta. Koska 74LS47-dekooderi on suunniteltu yhteisen anodinäytön ohjaamiseen, LOW-lähtö (logiikka-0) valaisee LED-segmentin, kun taas HIGH-lähtö (logiikka-1) sammuttaa sen. Normaalia toimintaa varten LT (lampputesti), BI/RBO (tyhjennystulo/riipple-tyhjennyslähtö) ja RBI (ripple-tyhjennystulo) on oltava auki tai kytketty logiikka-1:een (HIGH).
Huomaa, että vaikka 74LS47:ssä on aktiiviset LOW-ulostulot ja se on suunniteltu dekoodaamaan yhteistä anodia käyttävää 7-segmenttistä LED-näyttöä, 74LS48-dekooderi/ohjain-IC-yksikkö (74LS48 decoder/driver IC) on täsmälleen sama, paitsi että siinä on aktiiviset HIGH-ulostulot, jotka on suunniteltu dekoodaamaan yhteistä anodia käyttävässä katodia käyttävässä 7 segmenttisessä led-näytössä. Joten riippuen siitä, minkä tyyppinen 7-segmentin LED-näyttö sinulla on, saatat tarvita 74LS47- tai 74LS48-dekooderi-IC:tä.
74LS47:n binäärikoodatut desimaalitulot voidaan kytkeä 74LS90 BCD-laskurin vastaaviin lähtöihin, jotta laskentasekvenssi voidaan näyttää 7-segmenttinäytössä, kuten näytetään joka kerta, kun painiketta SW1 painetaan. Muuttamalla painonapin ja 1kΩ-vastuksen asentoa voidaan lasku saada muuttumaan painonappikytkimen SW1 aktivoinnin tai vapauttamisen yhteydessä.
Viimeinen 4-bittinen BCD-laskuripiiri
Virranrajoitusvastukset
Yksittäinen vastus – Tässä käytetään yhtä sarjavirranrajoitusvastusta, R. Jos et ole erityisen huolissasi näytön vakiokirkkaudesta, tämä on helpoin ja yksinkertaisin vaihtoehto 7-segmenttinäytön ohjaamiseen.
LEDin lähettämän valon määrä vaihtelee laitteen läpi kulkevan virran mukaan, jolloin vastuksen läpi kulkeva virta jaetaan näytön segmenttien lukumäärän kesken. Tällöin näytön kirkkaus riippuu nyt siitä, kuinka monta segmenttiä valaistaan samanaikaisesti.
moninkertaiset vastukset – tässä jokaisella segmentillä on oma virranrajoitusvastuksensa, kuten yllä olevassa yksinkertaisessa BCD-laskuripiirissämme.
Yleisesti 7-segmenttinäytöt vaativat noin 12-20 milliampeeria segmenttien valaisemiseen, joten virranrajoitusvastuksen resistiivinen arvo (kaikki ovat identtisiä) valitaan rajoittamaan virtaa näiden arvojen sisällä. Huomaa, että jotkin näytöt voivat tuhoutua, jos niitä ohjataan 40 mA:lla tai suuremmalla virralla.
Tässä on se etu, että tietyn LED-segmentin kirkkaus ei riipu kuuden muun LED:n tilasta, jolloin näytön kirkkaus on vakio. Virranrajoitusvastusten arvot voidaan valita siten, että ne antavat oikean määrän kirkkautta, koska ympäristön valon määrä määrittää myös tarvittavan LED-voimakkuuden.
Piirimme näyttää yksinkertaisen 0-9 digitaalisen laskurin, jossa käytetään 74LS90 BCD-laskuria ja 74LS47 7-segmenttinäytön ohjainta. Jos haluamme laskea yli 10 ja tuottaa 2-numeroisen base-ten-laskurin ja näytön, meidän olisi kaskadoitava kaksi erillistä divide-by-ten-laskuria yhteen. Kaksinumeroinen BCD-laskin laskisi desimaalilukuna 00:sta 99:ään (0000 0000 – 1001 1001 1001) ja nollautuisi sitten takaisin 00:een. Huomaa, että vaikka kyseessä on 2-numeroinen laskuri, arvot, jotka edustavat heksadesimaalilukuja A:sta F:ään, eivät kelpaa tässä koodissa.
Toisella tavalla, jos haluaisimme laskea 0:sta 999:ään (0000 0000 0000 0000 1001 1001 1001 1001), tarvitaan kolme kaskadoitua vuosikymmenlaskuria. Itse asiassa useita vuosikymmenen laskureita voidaan rakentaa yksinkertaisesti kaskadoimalla yhteen yksittäisiä BCD-laskuripiirejä, yksi kutakin vuosikymmentä varten, kuten kuvassa on esitetty.
2-numeroinen BCD-laskin 00:sta 99:ään
BCD-laskin Yhteenveto
Tässä opetusohjelmassa olemme nähneet, että BCD-laskin on laite, joka käy läpi kymmenen tilan sarjan, kun sitä tahdistetaan, ja joka palaa 0:aan laskennan 9:n laskettua. Yllä olevassa yksinkertaisessa esimerkissämme syötetyt kellopulssit tulevat painonappikytkimestä, mutta laskureita voidaan käyttää monien reaalimaailman tapahtumien laskemiseen, kuten liikkuvien esineiden laskemiseen.
Kunkin laskettavan tapahtuman sähköisten pulssien tuottamiseen saatetaan kuitenkin tarvita sopivia piirejä, koska nämä tapahtumat voivat tapahtua erillisin aikavälein tai ne voivat olla täysin satunnaisia.
Monissa digitaalisissa elektronisissa piireissä ja sovelluksissa digitaaliset laskurit on toteutettu käyttämällä Toggle-flip-floppeja tai minkä tahansa muun tyyppisiä flip-floppeja, jotka voidaan kytkeä antamaan tarvittava kytkentätoiminto, tai käyttämällä erityisiä laskenta-IC-yksikköjä, kuten 74LS90. Binäärilaskurit ovat laskureita, jotka käyvät läpi binäärisekvenssin, ja n-bittinen binäärilaskuri koostuu ”n” määrästä flip-floppeja, jotka laskevat 0: sta 2n-1: een.
BCD-laskurit noudattavat kymmenen tilan sekvenssiä ja laskevat BCD-numeroiden avulla 0000: sta 1001: een ja palaa sitten 0000: een ja toistaa. Tällaisessa laskurissa on oltava vähintään neljä flip-floppia kunkin desimaaliluvun esittämistä varten, koska desimaaliluku esitetään binäärikoodilla, jossa on vähintään neljä bittiä, jotka antavat MOD-10-laskennan.
Olemme myös nähneet, että BCD-koodattu ulostulo voidaan näyttää neljällä LEDillä tai digitaalisella näytöllä. Mutta jokaisen numeron näyttäminen 0-9 vaatii dekooderipiirin, joka kääntää binäärikoodatun numeron esityksen sopiviksi loogisiksi tasoiksi kussakin näytön segmentissä.
Näytön dekooderipiirit voidaan rakentaa yhdistelmälogiikan elementeistä, ja markkinoilla on monia erityisiä integroituja piirejä, jotka suorittavat tämän toiminnon, kuten 74LS47 BCD: stä 7-segmentin dekooderi- / ohjain-IC.
Useimpia 7-segmenttinäyttöjä käytetään yleensä moninumeroisissa laskentasovelluksissa, joten kaskadoimalla yhteen useampia BCD-laskureita voidaan rakentaa 4-numeroisia laskureita, jotka antavat näyttöjä, joiden maksimilukema on 9999.
74LS90 BCD-laskin on erittäin joustava laskentapiiri ja sitä voidaan käyttää taajuusjakajana tai se voidaan tehdä jakamaan mitä tahansa kokonaislukua 2:sta 9:ään syöttämällä sopivat lähdöt takaisin IC:n Reset- ja Set-tuloihin.