BCD-räknarkrets

jun 10, 2021
admin

Vi har tidigare sett att flipflops av T-typ kan användas som individuella divide-by-two-räknare. Om vi kopplar ihop flera toggle-flipflops i en seriekedja kan vi framställa en digital räknare som lagrar eller visar antalet gånger en viss räkneföljd har inträffat.

Klockade flip-flops av T-typ fungerar som en binär divider-för-två-räknare och i asynkrona räknare ger utgången från ett räkneförlopp klockpulsen för nästa förlopp. Då har en flipflopräknare två möjliga utgångstillstånd och genom att lägga till fler flipflopsteg kan vi göra en divide-by-2N-räknare. Men problemet med binära 4-bitars räknare är att de räknar från 0000 till 1111. Det är från 0 till 15 i decimaltal.

För att göra en digital räknare som räknar från 1 till 10 måste vi låta räknaren bara räkna de binära talen 0000 till 1001. Det är från 0 till 9 i decimaltal och som tur är finns det lätt tillgängliga räknekretsar som integrerade kretsar och en sådan krets är den asynkrona 74LS90 decadräknaren.

Digitala räknare räknar uppåt från noll till ett förutbestämt räknevärde när en klocksignal tillförs. När räknevärdet är uppnått återställs räknaren till noll för att börja om igen.

En decadräknare räknar i en sekvens av tio och återgår sedan till noll efter räkningen av nio. För att räkna upp till ett binärt värde på nio måste räknaren naturligtvis ha minst fyra flip-flops i sin kedja för att representera varje decimalsiffra enligt bilden.

BCD Counter State Diagram

bcd counter state diagram

bcd counter state diagram

En decadräknare har alltså fyra flip-flops och 16 potentiella tillstånd, varav endast 10 används och om vi kopplade ihop en serie räknare skulle vi kunna räkna till 100 eller 1000 eller till vilket slutligt räkneantal vi än väljer.

Det totala antalet räkningar som en räknare kan räkna till kallas dess MODULUS. En räknare som återgår till noll efter n räkningar kallas en modulo-n räknare, till exempel en modulo-8 (MOD-8) eller modulo-16 (MOD-16) räknare, etc. För en ”n-biträknare” är det fulla intervallet för räkningen från 0 till 2n-1.

Men som vi såg i handledningen om asynkrona räknare, att en räknare som återställs efter tio räkningar med en räkneföljd divide-by-10 från binära 0000 (decimal ”0”) till 1001 (decimal ”9”) kallas för en ”binärt kodad decimalräknare” eller BCD-räknare för att förkorta och en MOD-10-räknare kan konstrueras med hjälp av minst fyra toggle-flipflops.

Den kallas BCD-mätare eftersom dess tiotillståndssekvens är en BCD-kod och inte har något regelbundet mönster, till skillnad från en rak binär räknare. En BCD-räknare med ett enda steg, t.ex. 74LS90, räknar från decimal 0 till decimal 9 och kan därför räkna upp till högst nio pulser. Observera också att en digital räknare kan räkna uppåt eller nedåt eller räkna uppåt och nedåt (dubbelriktad) beroende på en inkommande styrsignal.

Binary-coded-decimal code är en 8421-kod som består av fyra binära siffror. Beteckningen 8421 hänvisar till den binära vikten av de fyra använda siffrorna eller bitarna. Exempelvis 23 = 8, 22 = 4, 21 = 2 och 20 = 1. Den största fördelen med BCD-kod är att den möjliggör en enkel konvertering mellan decimala och binära former av tal.

The 74LS90 BCD Counter

Den integrerade kretsen 74LS90 är i princip en MOD-10 decadräknare som producerar en BCD-utgångskod. 74LS90 består av fyra master-slave JK-flipflops som är internt sammankopplade för att ge en MOD-2 (count-to-2)-räknare och en MOD-5 (count-to-5)-räknare. 74LS90 har en oberoende JK-flipflop som drivs av CLK A-ingången och tre JK-flipflops som bildar en asynkron räknare som drivs av CLK B-ingången enligt bilden.

74LS90 BCD-räknare

74ls90 bcd-räknare

74ls90 bcd-räknare

Räknarens fyra utgångar betecknas med bokstavssymbolen Q med en numerisk subscript som är lika med den binära vikten av motsvarande bit i BCD-räknarkretsarnas kod. Så till exempel QA, QB, QC och QD. 74LS90:s räkneföljd utlöses på den negativa utgående flanken av klocksignalen, det vill säga när klocksignalen CLK går från logisk 1 (HÖG) till logisk 0 (LÅG).

De extra ingångsstiften R1 och R2 är räknarens ”reset”-stift medan ingångarna S1 och S2 är ”set”-stiften. När de är anslutna till logisk 1 återställer återställningsingångarna R1 och R2 räknaren till noll, 0 (0000), och när inställningsingångarna S1 och S2 är anslutna till logisk 1 ställer de in räknaren på maximum, eller 9 (1001) oavsett det faktiska räkneantalet eller -läget.

Som vi sa tidigare består 74LS90-mätaren av en dividera-vid-2-mätare och en dividera-vid-5-mätare i samma paket. Då kan vi använda endera räknaren för att producera endast en divide-by-2 frekvensräknare, endast en divide-by-5 frekvensräknare eller de två tillsammans för att producera vår önskade divide-by-10 BCD-räknare.

Med de fyra flip-flopsen som utgör divide-by-5 räknardelen inaktiverade, om en klocksignal appliceras på ingångsstift 14 (CLKA) och utgången tas från stift 12 (QA), kan vi producera en standard divide-by-2 binärräknare för användning i frekventa delningskretsar som visas.

74LS90 Divide-by-2 Counter

74ls90 divide by 2 counter

74ls90 divide by 2 counter

För att framställa en standard divide-by-5 counter kan vi inaktivera det första flip-flopet ovan och applicera klockingångssignalen direkt på stift 1 (CLKB) med utgångssignalen tagen från stift 11 (QD) som visas.

74LS90 Divide-by-5 Counter

74ls90 divide by 5 counter

74ls90 divide by 5 counter

Bemärk att med denna konfiguration av divide-by-5 counter är utgångsvågformen inte symmetrisk utan har ett 4:1 mark-space-förhållande. Det vill säga fyra inkommande klocksignaler skapar en LOW- eller logisk ”0”-utgång och den femte inkommande klocksignalen ger en HIGH- eller logisk ”1”-utgång.

För att producera en BCD-decenadräknare för delning genom 10 används båda de interna räknarkretsarna, vilket ger ett 2 gånger 5 divide-by-värde. Eftersom den första utgången QA från flip-flop ”A” inte är internt ansluten till de efterföljande stegen kan räknaren utökas till att bilda en 4-bitars BCD-räknare genom att ansluta denna QA-utgång till CLKB-ingången enligt bilden.

74LS90 Divide-by-10 Counter

74ls90 divide by 10 counter

74ls90 divide by 10 counter

Därmed kan vi se att BCD-räknare är binära räknare som räknar från 0000 till 1001 och sedan återställs eftersom den har förmågan att rensa alla sina flip-flops efter den nionde räkningen. Om vi ansluter en tryckknappsbrytare (SW1) till klockingången CLKA kommer räknaren att räkna med ett varje gång tryckknappsbrytaren släpps. Om vi ansluter lysdioder (LED) till utgångsterminalerna QA, QB, QC och QD enligt bilden kan vi se den binärt kodade decimalräkningen medan den äger rum.

74LS90 BCD decadräknare

74ls90 bcd decadräknare

74ls90 bcd decadräknare

Successiva tillämpningar av tryckknappskontakten SW1 kommer att öka räkningen upp till nio, 1001. Vid den tionde aktiveringen kommer utgångarna ABCD att återställas till noll för att starta en ny räkneföljd. Med ett sådant MOD-10 runt antal pulser kan vi använda decadräknaren för att driva en digital display.

Om vi vill visa räkneföljden med hjälp av en sjusegmentsdisplay måste BCD-utgången avkodas på lämpligt sätt innan den kan visas. En digital krets som kan avkoda de fyra utgångarna från vår 74LS90 BCD-mätare och tända de nödvändiga segmenten på displayen kallas för en dekoder.

Driva en display

Tursamt nog för oss har någon redan konstruerat och utvecklat en BCD-till-självsegment-displaydekoder-IC, t.ex. 74LS47, för att göra just detta. 74LS47 har fyra ingångar för BCD-siffrorna A, B, C och D och utgångar för vart och ett av segmenten i 7-segmentsdisplayen.

Bemärk att en standard 7-segments LED-display i allmänhet har åtta ingångsanslutningar, en för varje LED-segment och en som fungerar som en gemensam terminal eller anslutning för alla interna displaysegment. Vissa displayer har också ett alternativ för decimalpunkt (DP).

74LS47 BCD till 7-segmentsdrivrutin

74ls47 bcd till 7-segmentsdrivrutin

74ls47 bcd till 7-segmentsdrivrutin

Det är en 74LS47-displaydekod som tar emot BCD-koden och genererar de nödvändiga signalerna för att aktivera de lämpliga lysdiodsegmenten som ansvarar för att visa det tillämpade antalet pulser. Eftersom 74LS47-dekodern är utformad för att driva en display med gemensam anod, kommer en LOW-utgång (logisk-0) att lysa upp ett LED-segment medan en HIGH-utgång (logisk-1) kommer att stänga av det. För normal drift måste LT (Lamptest), BI/RBO (Blanking Input/Ripple Blanking Output) och RBI (Ripple Blanking Input) vara öppna eller anslutna till logik-1 (HIGH).

Bemärk att medan 74LS47 har aktiva LOW-utgångar och är konstruerad för att avkoda en 7-segmentig LED-display med gemensam anod, så är 74LS48 avkodare/drivare exakt likadan, med undantag för att den har aktiva HIGH-utgångar som är konstruerade för att avkoda en 7-segmentig 7-katod-display. Så beroende på vilken typ av 7-segment LED-display du har kan du behöva en 74LS47 eller en 74LS48 dekoder IC.

Den 74LS47 binärt kodade decimalingångarna kan anslutas till motsvarande utgångar av 74LS90 BCD Counter för att visa räkneföljden på 7-segmentdisplayen som visas varje gång tryckknappen SW1 trycks in. Genom att ändra tryckknappens och 1kΩ-resistansens läge kan räkningen fås att förändras vid aktivering eller frigörande av tryckknappsknappen SW1.

Final 4-bitars BCD-räknarkrets

74ls90 bcd-räknarkrets

74ls90 bcd-räknarkrets

Bemärk att en 7-segmentsdisplay är uppbyggd av sju enskilda lysdioder för att bilda displayen. Den bästa metoden för att begränsa strömmen genom en sjusegmentsdisplay är att använda ett strömbegränsningsmotstånd i serie med var och en av de sju lysdioderna som visas. Men vi kan göra detta på två sätt.

Strömbegränsande motstånd

Enstaka strömbegränsande motstånd

Enstaka motstånd – här används ett enda strömbegränsande motstånd, R, i serie. Om du inte är särskilt angelägen om en konstant ljusstyrka på displayen är detta det enklaste och lättaste alternativet för att styra 7-segmentsdisplayen.

Mängden ljus som avges av en lysdiod varierar med strömmen genom enheten där strömmen som flyter genom motståndet delas mellan antalet displaysegment. Då beror ljusstyrkan på displayen nu på hur många segment som lyser upp samtidigt.

Multipla strömbegränsande motstånd

Multipla motstånd – här har varje segment ett eget strömbegränsande motstånd som visas i vår enkla BCD-räknarkrets ovan.

Generellt kräver 7-segmentsdisplayer ungefär 12 till 20 milliampere för att lysa upp segmenten, så det resistiva värdet på det strömbegränsande motståndet (alla kommer att vara identiska) väljs för att begränsa strömmen till inom dessa värden. Observera att vissa displayer kan förstöras om de drivs med 40 mA och mer.

Fördelen här är att ljusstyrkan hos ett visst LED-segment inte beror på tillståndet hos de andra sex LED:erna, vilket ger displayen en konstant ljusstyrka. Värdena på de strömbegränsande motstånden kan väljas för att ge rätt mängd ljusstyrka eftersom mängden omgivande ljus också kommer att bestämma den erforderliga LED-intensiteten.

Vår krets visar en enkel digital räknare från 0 till 9 med hjälp av en 74LS90 BCD-räknare och en 74LS47 drivrutin för en 7-segmentsdisplay. För att räkna över 10 och producera en tvåsiffrig bas-ten räknare och display skulle vi behöva kaskadera två separata divide-by-ten räknare tillsammans. En tvåsiffrig BCD-räknare skulle räkna i decimaltal från 00 till 99 (0000 0000 till 1001 1001) och sedan återställas till 00. Observera att även om det kommer att vara en tvåsiffrig räknare, är värden som representerar hexadecimala tal från A till F inte giltiga i den här koden.

På samma sätt, om vi vill räkna från 0 upp till 999 (0000 0000 0000 0000 0000 till 1001 1001 1001), krävs tre kaskadkopplade decadräknare. Faktum är att flera decadräknare kan konstrueras helt enkelt genom att kaskadkoppla enskilda BCD-räknarkretsar, en för varje decad, som visas.

2-siffrig BCD-räknare från 00 till 99

2-siffrig bcd-räknare

2-siffrig bcd-räknare

BCD-räknare Sammanfattning

I den här handledningen har vi sett att en BCD-räknare är en anordning som går igenom en sekvens av tio tillstånd när den klockas och återvänder till 0 efter räkningen av 9. I vårt enkla exempel ovan kommer klockpulserna från en tryckknappsbrytare, men räknare kan användas för att räkna många verkliga händelser, t.ex. räkna rörliga objekt.

Det kan dock krävas lämpliga kretsar för att generera de elektriska pulserna för varje händelse som skall räknas, eftersom dessa händelser kan inträffa med diskreta tidsintervall eller vara helt slumpmässiga.

I många digitala elektroniska kretsar och tillämpningar implementeras digitala räknare med hjälp av växlingsflipflop eller med någon annan typ av flip-flop som kan kopplas in för att ge den erforderliga kopplingsfunktionen, eller med hjälp av dedikerade räkne-IC:er, till exempel 74LS90. Binära räknare är räknare som går igenom en binär sekvens och en binär n-bits räknare består av ”n” antal flip-flops som räknar från 0 till 2n-1.

BCD-räknare följer en sekvens av tio tillstånd och räknar med hjälp av BCD-nummer från 0000 till 1001 och återgår sedan till 0000 och upprepas. En sådan räknare måste ha minst fyra flip-flops för att representera varje decimalsiffra, eftersom en decimalsiffra representeras av en binär kod med minst fyra bitar som ger en MOD-10-räkning.

Vi har också sett att den BCD-kodade utgången kan visas med hjälp av fyra lysdioder eller med en digital display. Men för att visa varje tal från 0 till 9 krävs en avkodningskrets som översätter en binärt kodad talrepresentation till lämpliga logiska nivåer på vart och ett av displaysegmenten.

Avkodningskretsar för displayavkodning kan konstrueras av kombinationslogiska element och det finns många dedikerade integrerade kretsar på marknaden för att utföra denna funktion, t.ex. 74LS47 BCD- till 7-segmentsdekoder/driver IC.

De flesta 7-segmentsdisplayer används vanligen i tillämpningar med flera siffror, så genom att kaskadkoppla fler BCD-räknare kan man konstruera 4-siffriga räknare som ger displayer med en maximal avläsning på 9999.

BCD-räknaren 74LS90 är en mycket flexibel räknekrets och kan användas som en frekvensdelare eller göras för att dividera ett helt tal från 2 till 9 genom att föra de lämpliga utgångarna tillbaka till IC:s Reset- och Set-ingångar.

Lämna ett svar

Din e-postadress kommer inte publiceras.