Kodér
Author
Albert FloresObecná značka kodéru Kodér je kombinační logický obvod, který na základě kombinační tabulky z kombinace vstupních dat (x) vstupního kódu vytváří na výstupu (y) kód jiný nebo pozměněný. Funkce kodéru je inverzní k funkci dekodéru.
Popis
Kodér má n vstupních signálů x0 … xn-1 jejichž kombinace vytváří na k výstupech y0 … yk-1 jinou kombinaci signálů. Obecně platí, že n > k. +more Volitelně je možno použít strobovací výstup s pro vzorkování signálu nebo signál e pro uvolnění.
Kodér - integrovaný obvod
Jako příklad je uveden kodér pro převod (identifikaci) stisknutého tlačítka jednoduché klávesnice kódového zámku nebo platebního terminálu. Při stisknutí tlačítka vyhodnotí kodér tuto informaci a přiřadí výstupním signálům kód odpovídající stisknutému tlačítku.
Statický kodér
Statický dekodér má na vstupy I0 až I11 přivedeny signály od jednotlivých tlačítek klávesnice. Každé tlačítko je vybaveno kontakty, které vodič připojený na vstup kodéru spojí s nulovým potenciálem. +more Pro zajištění potřebné napěťové úrovně je každý vodič ošetřen odporem připojeným na napájecí napětí. Při stisknutí tlačítka se změní úroveň napětí na vstupu kodéru ze stavu log. 1 na log. 0. Kodér vyhodnocuje stav vstupů a je-li stisknuto tlačítko, přiřadí výstupním signálům Q0 až Q3 odpovídající kód.
Použitá klávesnice obsahuje 12 tlačítek, ke generování kódu podle stisknutého tlačítka jsou potřeba 4 signály (n=4, 2n = 24 = 16 > 12). Vzhledem k tomu, že je nutno používat i tlačítko "0" (nula), kterému se standardně taktéž přiřazuje hodnota "0", která je pomocí 4 signálů binárně vyjádřena jako 0000B, je nutno zajistit detekci tohoto stavu na výstupech.
S posunutím kódu
Jednou z možností je generovat výstupní kód s posunutím, například m+1, kde m odpovídá hodnotě stisknutého tlačítka. Hodnota pro tlačítko "0" pak bude binárně na výstupech vyjádřena jako 0001B. +more V případě, že je využíváno pouze 12 možných stavů ze 16, tato situace nevadí. V případě, že by bylo potřeba využívat stejný počet tlačítek jako je možných kombinací na 4 výstupních signálech, tj. 16, není již toto řešení vhodné, protože by bylo nutno počet možných kombinací redukovat právě o posunutí, tedy o 1, maximálně možný počet tlačítek by byl v tomto případě pouze 15.
Nevýhodou takovéhoto kodéru je to, že každé tlačítko musí být připojeno samostatně jedním vodičem s odporem. Takové řešení je sice principiálně jednoduché, ale je vhodné pouze pro klávesnice s malým počtem tlačítek. +more Pro klávesnice, které se používají u PC s více než 100 tlačítky již toto řešení není vhodné.
Se strobovacím signálem
Druhou možností je využití strobovacího signálu se zachováním možnosti využití všech kombinací, které je možno na 4 výstupech vyjádřit, i když v konkrétním případě se využívá pouze 12 tlačítek ze 16 možných kombinací na výstupech Q0 až Q3. Výstupní strobovací signál je generován právě tehdy, je-li stisknuto právě jedno tlačítko. +more V případě stisknutí více tlačítek není signál strobování generován, jakoby nebylo stisknuto tlačítko žádné a tím je ošetřen nežádoucí stav současného stisknutí několika tlačítek. Při použití strobovacího signálu je možno dále rozšířit počet generovaných kódů na 4 výstupních signálech až na 16 i na klávesnici s 12 tlačítky tak, že jednomu tlačítku bude přiřazena funkce přepínače (v příkladu "#"). Pro použití funkce přepínače platí, že tlačítko přepínače musí být stisknuto první a drženo.
tlačítko | výstupy | tlačítko | výstupy | tlačítko | výstupy | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Q3 | Q2 | Q1 | Q0 | Q3 | Q2 | Q1 | Q0 | S | Q3 | Q2 | Q1 | Q0 | S | |||
275px | ||||||||||||||||
+morepng'>275px | žádné | 0 | 0 | 0 | 0 | žádné | X | X | X | X | 0 | žádné | X | X | X | X |
275px | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
275px | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
275px | 2 | 0 | 0 | 1 | 1 | 2 | 0 | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
275px | 3 | 0 | 1 | 0 | 0 | 3 | 0 | 0 | 1 | 1 | 1 | 3 | 0 | 0 | 1 | 1 |
275px | 4 | 0 | 1 | 0 | 1 | 4 | 0 | 1 | 0 | 0 | 1 | 4 | 0 | 1 | 0 | 0 |
275px | 5 | 0 | 1 | 1 | 0 | 5 | 0 | 1 | 0 | 1 | 1 | 5 | 0 | 1 | 0 | 1 |
275px | 6 | 0 | 1 | 1 | 1 | 6 | 0 | 1 | 1 | 0 | 1 | 6 | 0 | 1 | 1 | 0 |
275px | 7 | 1 | 0 | 0 | 0 | 7 | 0 | 1 | 1 | 1 | 1 | 7 | 0 | 1 | 1 | 1 |
275px | 8 | 1 | 0 | 0 | 1 | 8 | 1 | 0 | 0 | 0 | 1 | 8 | 1 | 0 | 0 | 0 |
275px | 9 | 1 | 0 | 1 | 0 | 9 | 1 | 0 | 0 | 1 | 1 | 9 | 1 | 0 | 0 | 1 |
275px | OK | 1 | 0 | 1 | 1 | OK | 1 | 0 | 1 | 0 | 1 | OK | 1 | 0 | 1 | 0 |
275px | # | 1 | 1 | 0 | 0 | # | 1 | 0 | 1 | 1 | 1 | # | X | X | X | X |
275px | 1+x | 0 | 0 | 0 | 0 | 1+x | X | X | X | X | 0 | #+1 | 1 | 0 | 1 | 1 |
275px | #+2 | 1 | 1 | 0 | 0 | |||||||||||
275px | #+3 | 1 | 1 | 0 | 1 | |||||||||||
275px | #+4 | 1 | 1 | 1 | 0 | |||||||||||
275px | #+5 | 1 | 1 | 1 | 1 | |||||||||||
275px | #+n | X | X | X | X | |||||||||||
275px | 1+m | X | X | X | X | |||||||||||
v rowspan="4"|Vysvětlivky: | X | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 |
v rowspan="4"|Vysvětlivky: | 1+x | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek | libovolná kombinace stisknutí více tlačítek |
v rowspan="4"|Vysvětlivky: | #+n | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 |
v rowspan="4"|Vysvětlivky: | 1+# | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 | libovolná kombinace stisknutí více tlačítek mimo #+1 … #+5 |
Dynamický kodér
Příklad kodéru pro klávesnici jednoduché kalkulačky. +more Při maticovém zapojení je potřeba pouze 8 vstupních signálů kodéru, při použití statického kodéru by bylo nutno použít 23 vstupních signálů. Počet výstupních signálů kodéru je stejný, 5 + 1. Řízený dekodér je použit ve spojení s maticovou klávesnicí, tedy takovou klávesnicí, kde jsou tlačítka zapojena mezi řádkové a sloupcové vodiče v tzv. matici. Každé tlačítko, při stisku, propojí odpovídající vodiče, nad kterými je umístěno. V porovnání s předchozím příkladem je toto zapojení úspornější v počtu potřebných vodičů a odporů. Zapojení pro svoji funkci potřebuje demultiplexor respektive dekodér s otevřeným kolektorem, který řídí stavové signály řádků a spíná je na společný potenciál, tedy na definovanou hodnotu log. 0. Řídící signály jsou zapojeny nejen na řádkový dekodér, ale i na vstupy kodéru, aby mohl pracovat s informací o tom, který řádek je aktuálně zvolen a podle změny stavu signálu ve sloupci mohl generovat správný kód. Na vstupních signálech A0 a A1 se cyklicky mění stav 0-3D (dekadická soustava), tj. 00-11B (binární soustava) v poměrně vysoké frekvenci, aby nedocházelo k čekání na vyhodnocení stavu. Dekodér během cyklu, kdy jsou aktivovány jednotlivé řádky Q0-Q3, sleduje stav na řádkových I0-I1 a sloupcových I2-I4 vstupů. Na konci cyklu vyhodnotí stav signálů a podle výsledku přiřadí výstupním signálům kódovou informaci, kterou potvrdí impulsem na výstupu S. Vyhodnocování až na konci cyklu je nutné z toho důvodu, aby bylo možno detekovat stav stisknutí více tlačítek, který je zpravidla nežádoucí. Stejně jako v předchozím případě je využíváno pouze 12 tlačítek ze 16 možných. Opět je možno jednomu z tlačítek přiřadit funkci přepínače a využít všech 16 kombinací na výstupu. V příkladu je jako přepínače použito tlačítko "#" a tlačítka v pravém sloupci (detekuje se pouze 15 stavů). Logika kodéru dále vyhodnocuje zakázané stavy současného stisknutí více tlačítek v řádku i ve sloupci a v takovém případě není generován impuls na výstupu S, pro použití tlačítka "#" jako přepínače platí, že musí být stisknuto jako první a následně k němu stisknuto jedno ze zvolených tlačítek "OK", "3", "6", "9" (obdobně jako se používá například klávesa SHIFT na PC klávesnici).
adresa | řádky | adresa | sloupce | kód | S | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A1 | A0 | Q3 | Q2 | Q1 | Q0 | I0 | I1 | I2 | I3 | I4 | Q3 | Q2 | Q1 | Q0 | ||||
275px | ||||||||||||||||||
+morepng'>275px | X | X | X | X | X | X | X | X | 1 | 1 | 1 | X | X | X | X | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | |||
275px | 0 | 1 | H | H | 0 | H | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | |||
275px | 0 | 1 | H | H | 0 | H | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | |||
275px | 0 | 1 | H | H | 0 | H | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | |||
275px | 1 | 0 | H | 0 | H | H | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | |||
275px | 1 | 0 | H | 0 | H | H | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |||
275px | 1 | 0 | H | 0 | H | H | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | |||
275px | 1 | 1 | 0 | H | H | H | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | |||
275px | 1 | 1 | 0 | H | H | H | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |||
275px | 1 | 1 | 0 | H | H | H | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | |||
275px | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | s použitím "#" jako přepínače | |||
0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 1 | X | X | X | X | 0 | (#) # + OK | ||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 1 | X | X | X | X | |||
275px | 0 | 1 | H | H | 0 | H | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 1 | X | X | X | X | |||
275px | 1 | 0 | H | 0 | H | H | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | |||
275px | 0 | 0 | H | H | H | 0 | 0 | 0 | 0 | 1 | 1 | X | X | X | X | |||
275px | 1 | 1 | 0 | H | H | H | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | |||
v rowspan="3"|Vysvětlivky: | X | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | libovolný stav, log. 0 nebo log. 1 | |||
v rowspan="3"|Vysvětlivky: | H | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | stav vysoké impedance | |||
v rowspan="3"|Vysvětlivky: | ↑ | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls | impuls |
V dnešní praxi je pro obsluhu klávesnice místo kodéru používán řadič klávesnice, který sdružuje všechny potřebné funkce a ošetření stavů včetně opakování znaků.
Kodér - enkodér polohy
Absolutní rotační enkodér s dělicím kotoučem Enkodér je elektronická součástka, která převádí polohu pohyblivé části na kombinaci elektrických binárních signálů číselně vyjadřující absolutní polohu. +more Podle konstrukce se dělí na rotační absolutní enkodér, který poskytuje přímou informaci o úhlu natočení, a na lineární absolutní enkodér, který poskytuje přímou informaci o vzdálenosti.
Funkce
Odměřování polohy je realizováno tak, že je odměřovaná vzdálenost rozdělena na N úseků, které určují přesnost odměřování. Vlastní dělení je realizováno na disku nebo na pravítku tak, že je úsek vzdálenosti rozdělen na opticky propustné a nepropustné díly, jejichž postavení vzhledem k pevné (nepohyblivé) části je snímáno (čteno) pomocí optických prvků jako je fototranzistor, fotodioda. +more Vlastní rozdělení obvodu nebo vzdálenosti pouze na N dílků je pro určení absolutní polohy nedostačující, proto je takových to dělení obvodu nebo vzdálenosti realizováno několik s různou hustotou dělení v takzvaných stopách. Tyto stopy odpovídají binárnímu kódování čísla, které odpovídá poloze. Z hlediska přesnosti je u rotačních enkodérů stopa s nejjemnějším N dělením umístěna na vnějším obvodu.
Kódování
Použití dvojkové soustavy pro kódování není vhodné, protože v jednom okamžiku změny hodnoty dochází od stopy s váhou bitu 21 až 2m-1 ke změně stavu na několika bitech současně (m je počet výstupních bitů a 2m je počet možných stavů). Chyba synchronizace změny na jednotlivých bitech tak může způsobit chybu v rozsahu několik řádů. +more Z tohoto důvodu se používají enkodéry, jejichž výstup je kódován v některém z následujících bezpečnostních kódů eliminující hazardní stavy, kdy chyba nepřesáhne hodnotu ±1 dílku odměřování. Johnsonův kód je sice absolutně bezpečný, má však vyšší požadavky na počet přenášených bitů (signálů). V tomto případě je používán Grayův kód, který má stejné nároky na počet bitů jako dvojková soustava ale eliminuje hazardní stavy. I přes použití bezpečných kódů eliminující chyby na změnách jednotlivých váhových bitů se provádí ještě takzvané posunutí, kdy se k aktuální hodnotě připočte konstanta, například +3. Toto opatření umožňuje detekci prostého utržení nebo zkratu kabelu protože hodnota "0" se nikdy při správné činnosti nepřenáší.
Kodér - program
Programový kodér převádí oblast dat vyjádřenou jedním kódem na jiný kód. Podle funkce se může jednat o kódování za účelem utajení obsahu - šifrování nebo za účelem komprese dat, případně obojího.
Odkazy
Související články
Kódování * Dekodér * Demultiplexor * Multiplexor
Externí odkazy
Literatura
Kategorie:Číslicová technika Kategorie:Logické obvody Kategorie:Integrované obvody