- Pagrindinis kodavimo principas:
- Koduotojų kūrimas naudojant kombinuotosios logikos dizainą
- 8: 3 koduotojai:
- Įprastinių koduotojų trūkumas:
- Prioritetinis koduotojas:
Koduotojai, kaip rodo pavadinimas, užkoduoja didesnę informacijos dalį į mažesnę bitų vertę. Yra daugybė kodavimo tipų, atsižvelgiant į įėjimų ir išėjimų skaičių bei į tai, kaip jis veikia. Bet kiekvienas koduotojas turi vieną pagrindinę taisyklę, kodavimo įrenginio išvesties linijų skaičius visada bus mažesnis nei įvesties linijų skaičius. Šiame straipsnyje sužinosime daugiau apie koduotojus, kas yra koduotojas, kaip ir kodėl jie naudojami skaitmeninėse grandinėse.
Pagrindinis kodavimo principas:
Įsivaizduokime, kad koduotojas yra juoda dėžutė, kaip parodyta žemiau, kuri stebuklingai sumažina įvesties linijų skaičių nuo 4 iki tik 2 išvesties linijų, tačiau vis tiek pateikia tą pačią informaciją neprarandant duomenų.
Pirmiausia nustatykime, koks būtų šio kodavimo įrenginio pavadinimas. Jame yra keturi įėjimai ir du išėjimai, todėl šio kodavimo įrenginio pavadinimas bus 4: 2 koduotojas. Jei kodavimo įrenginyje yra „ n “ išvesties linijų, įvesties linijų skaičius bus 2 n, mūsų atveju išvesties linijų skaičius yra du (n = 2), todėl įvesties linijų skaičius turėtų būti (2 2 = 4) keturi, būtent taip ir yra. Keturi įvesties kaiščiai pažymėti nuo I0 iki I3, o du išvesties kaiščiai pažymėti nuo O0 iki O1
Taigi, kaip koduotojas paverčia keturis signalus į du, tai galima suprasti, pažvelgus į toliau pateiktą tiesos lentelę. Taip pat svarbu žinoti, kad paprastas „Encoder“, panašus į čia rodomą, turi taisyklę, kad tam tikru metu tik vienas įvesties kaištis turėtų būti aukštas, todėl šioje tiesos lentelėje tik viena įvestis bus aukšta.
Visos galimos įvesties išvesties sąlygos parodytos aukščiau pateiktoje tiesos lentelėje. Pavyzdžiui, kai tik O1 yra didelis (1), o visi kiti įėjimai yra žemi (0), tada abu išvesties kaiščiai bus žemi (0). Panašiai kiekvienu atveju išvesties kaiščiai taip pat pakeis savo būseną. Naudodamas šią išvesties bitų būseną, vartotojas galės atsekti, koks įvesties signalas būtų duotas koduotojui.
Gerai, kas yra fantazija konvertuojant 4 eilutes į 2 eilutes, kodėl mums to reikia?
Norėdami suprasti, mes paaiškinome 4: 2 kodavimo įrenginį, tačiau yra ir kitų kodavimo įrenginių, kurie gali priimti didesnį įėjimų skaičių ir paversti juos mažesniu išėjimų skaičiumi, pvz., 8: 3 kodavimo, 16: 4 kodavimo ir kt. Šie tipai kodavimo įrenginio yra labai naudingi, kai turime sumažinti kaiščių, naudojamų MCU / MPU, skaičių arba sumažinti signalų perdavimo laidų skaičių PLC ir kitose sistemose, kuriose yra jungiklio ar šviesos diodų masyvas. Jis taip pat naudojamas efektyviai perduodant duomenis naudojant mažesnius laidus. Kai kuriose programose galime susidurti su situacija, kai daugiau nei viena įvestis gali būti didelė (1). Tokiu atveju mes vadinsime „ Priority Encoder“, kurį aptarsime toliau šiame straipsnyje.
Koduotojų kūrimas naudojant kombinuotosios logikos dizainą
Dabar, kai žinome, kaip veikia koduotojas ir kur jis naudojamas. Sužinokime, kaip jį sukurti naudojant paprastus loginius vartus. Nors „Encoders“, pvz., 8: 3, galima įsigyti kaip tvarkingą vieno paketo IC, pvz., SN74LS148, svarbu žinoti, kaip jie yra pastatyti, kad galėtume savo projektams pritaikyti koduotojus, remdamiesi reikalinga tiesos lentele.
Loginė išraiška:
Pirmasis kuriant „Combinational Logic“ įrenginį yra rasti „Boolean Expression“ tiesos lentelę. Tai labai lengva ir lengvai nustatoma, žiūrint į tiesos lentelę. Toliau pateikiama ta pati tiesos lentelė, kurią matėme anksčiau, su keliomis iliustracijomis, kad galėtumėte geriau suprasti.
Išraiškų skaičius bus lygus išvesties eilučių skaičiui, čia mes turime du išėjimus ir vadinasi, turime dvi išraiškas. Pirmojo išėjimo O0 atveju tiesiog patikrinkite, kokia sąlyga yra aukšta (1) ir atsekite atitinkamą įvesties kaiščio numerį, kuris taip pat išlieka didelis (1). Panašiai visoms didelėms O0 reikšmėms atkreipkite dėmesį, kuris įvesties kaiščių skaičius yra didelis, ir pridėkite kaiščius. Įvesties kaiščiai, atitinkantys išvesties kaištį O0, aukščiau paryškinti raudonai, o O1 - mėlynai. Taigi O0 ir O1 išraiška bus
O 1 = I 3 + I 2 O 0 = I 3 + I 1
4: 2 kodavimo grandinės schema:
Gavę Boolean išraišką, mes tiesiog turime ją nupiešti vartų pavidalu. Kadangi mes turime papildymo (+) operaciją, mes naudosime OR vartus savo grandinėms kurti. Taip pat galite supaprastinti arba modifikuoti loginę išraišką pagal savo poreikius. Pirmiau minėtos išraiškos schema parodyta žemiau
Grandinę galima lengvai sukurti naudojant 7432 OR vartų IC. Savo kodavimo schemą sukūriau virš skydo, kaip parodyta žemiau
Keturias įvesties linijas (I0, I1, I2 ir I3) teikia keturi mygtukai. Paspaudus mygtuką, jis susieja + 5 V su kaiščiu, kad tai būtų logiška 1, o kai mygtukas nespaustas, kaištis laikomas ant žemės per 10 tūkst. nuimamą rezistorių, kad logika būtų lygi nuliui. Išėjimai (O0 ir O1) pateikiami naudojant raudonos šviesos diodų porą. Jei šviesos diodas šviečia, tai reiškia, kad išvesties logika yra 1, o jei jos yra išjungtos, tai reiškia, kad išėjimo logika yra 0. Visiškas kodavimo grandinės veikimas parodytas toliau pateiktame vaizdo įraše.
Kaip matote, kai paspaudžiamas pirmasis mygtukas, I0 įvestis yra aukšta, taigi abu išėjimai lieka žemi. Paspaudus antrąjį mygtuką, įjungiama I1 įvestis, taigi vienas šviesos diodas įsižiebia, rodydamas, kad O0 yra aukštas. Galiausiai, kai paspaudžiamas ketvirtasis mygtukas, I3 įvestis yra aukšta, taigi abu šviesos diodai įsijungia. Tai yra labai paprasta grandinė, todėl mes ją lengvai pastatėme ant duonos lentos, tačiau praktiškiems koderiams grandinė taps šiek tiek sudėtingesnė. Tačiau koduotojus galima įsigyti ir kaip IC paketus, kuriuos galima įsigyti, jei tai tinka jūsų projektui.
8: 3 koduotojai:
8: 3 kodavimo įrenginio veikimas ir naudojimas taip pat yra panašus į 4: 2 kodavimo įrenginį, išskyrus įvesties ir išvesties kaiščių skaičių. 8: 3 koduotojas taip pat vadinamas „Octal to Binary Encoder“, toliau pateikiama 8: 3 kodavimo bloko schema.
Čia Koduotojas turi 8 įėjimus ir 3 išėjimus, vėlgi tik vienas įėjimas bet kuriuo metu turėtų būti aukštas (1). Kadangi yra 8 įėjimai, tai vadinama aštuntąja įvestimi, o kadangi yra trys išėjimai, ji taip pat vadinama dvejetainiu išėjimu. Koduotojo tiesos lentelė parodyta žemiau.
8: 3 koduotojo tiesos lentelė:
Loginė išraiška:
Kadangi mes turime jūsų išvestis, turėsime tris išraiškas, kaip parodyta žemiau
O 2 = I 7 + I 6 + I 5 + I 4 O 1 = I 7 + I 6 + I 3 + I 2 O 0 = I 7 + I 5 + I 3 + I 1
8: 3 kodavimo grandinės schema:
Gavę Būlio išraišką, kaip visada, mes galime sukurti grandinės schemą naudodami OR vartus, kaip parodyta žemiau.
Grandinė naudoja 4 įvesties ARBA vartų IC, taip pat galite supaprastinti loginę išraiška, kad būtų naudojami kiti įprasti 2 įėjimo vartų IC.
Įprastinių koduotojų trūkumas:
Šio tipo kodavimo įrenginiai patiria šiuos pagrindinius trūkumus
- Kai nė vienas iš įvesties nėra didelis, išvestis bus lygi nuliui, tačiau šios sąlygos taip pat prieštarauja pirmajam bitui (MSB). Todėl visada reikia pasirūpinti, kad bent vienas bitukas visada liktų įjungtas
- Kai yra daugiau nei viena įvestis, išvestis bus sutraukta ir gali duoti rezultatą bet kuriai iš įvesties, o tai sukels painiavą.
Norėdami įveikti šiuos sunkumus, mes naudojame kitokio tipo kodavimo įrenginį, vadinamą prioritetiniu enkoderiu, kuris naudoja papildomą išvestį, kad nustatytų, ar išvestis yra tinkama, ir kai daugiau nei viena įvestis yra aukšta, atsižvelgiama tik į tą, kuri prasideda nuo LSD. ignoruodamas kitas įvestis.
Prioritetinis koduotojas:
Panagrinėkime 4: 2 prioritetinį kodavimo įrenginį kaip pavyzdį, kad suprastume, kuo jis skiriasi nuo įprasto kodavimo įrenginio ir gali įveikti minėtus du trūkumus. 4: 2 prioritetinio kodavimo bloko schema parodyta žemiau
4 prioriteto kodavimo įrenginyje taip pat yra 4 įėjimai ir 2 išėjimai, tačiau mes pridėsime dar vieną išvestį, vadinamą V, kuri reiškia galiojantį bitą. Šis galiojantis bitas patikrins, ar visi keturi įvesties kaiščiai yra žemi (0), jei žemas, bitai taip pat pasidarys žemi, teigdami, kad išvestis neteisinga, taigi mes galime įveikti pirmąjį aukščiau minėtą trūkumą.
4: 2 prioritetinio kodavimo įrenginio tiesos lentelė:
Kito trūkumo galima išvengti suteikiant pirmenybę MSB bitams. Koduotojas patikrins iš MSB ir radęs pirmą tokį aukštą bitą (1), jis atitinkamai sugeneruos išvestį. Taigi nesvarbu, ar kiti kaiščiai yra aukšti, ar žemi. Taigi žemiau pateiktoje tiesių lentelėje, kai pasiekiamas 1, „X“ pateikia reikšmės „nerūpi“.
Loginė išraiška:
Dabar mes turime išvesti tris išraiškas, skirtas O0, O1 ir V. Kadangi tiesos lentelėje nėra svarbių elementų, mes turime naudoti K žemėlapio metodą, kad gautume tai Būlio išraišką. Mes nenagrinėsime, kaip išspręsti K žemėlapius, nes tai nepatenka į šio straipsnio taikymo sritį. Žemėlapis rodomas žemiau, kad galėtumėte patys kištis ir mokytis.
Aukščiau pateiktuose žemėlapiuose kairysis yra skirtas O1, o dešinysis - O0. Išvesties linijas mini y, o įvesties eilutes - x. Taigi, atitinkamai sutvarkę lygtį, gausime tai.
O 1 = I 3 + I 2 O 0 = I 2 I 1 '+ I 3
Panašiai, esant teisingam bitui „V“, loginė išraiška gali būti pateikiama kaip
V = I 3 + I 2 + I 1 + I 0
Grandinės schema:
Šio projekto schemą galima sukurti naudojant Boolean išraiškas.
Grandinę galima sukurti naudojant pagrindinius NOT, AND ir OR vartus. Čia bitai O0 ir O1 laikomi išėjimais, o išvesties patvirtinimui naudojamas bitas V. Tik jei bitas V yra didelis, į išvestį bus atsižvelgiama, jei V vertė yra maža (0), išvesties reikia nepaisyti, nes tai reiškia, kad visi įvesties kaiščiai yra lygūs nuliui.