Předmět Ústav Úloha č. 9 BIO - igitální obvody Ústav mikroelektroniky Sekvenční logika - debouncer, čítače, měření doby stisknutí tlačítka Student Cíle Pochopení funkce obvodu pro odstranění zákmitů na mechanických kontaktech. Návrh obvodu pro odstranění zákmitů na tlačítkách a ověření jeho funkce. Použití obvodu pro odstranění zákmitů na tlačítkách v komplexním návrhu. Implementace návrhu do cílového obvodu FPGA Spartan3-2k na vývojové desce Spartan-3 Starter Board. Teoretický úvod Tlačítka a přepínače jsou v digitálních obvodech často používanými ovládacími prvky. Změna logické úrovně při stisku tlačítka nebo přepnutí přepínače nemá ideální průběh. Jejich mechanické kontakty generují množství rušivých zákmitů, které mohou způsobit špatné chování navazujících logických obvodů. oba trvání zákmitů je ovlyvněna kvalitou provedení kontaktů, používaním a stárnutím. Ukázka zákmitů změřených na tlačítkách a přepínačích osazených na vývojové desce Spartan-3 Starter Board je na obrázku 1. oba trvání a zákmitů jejich počet se řádově liší (1x), což je patrné ze změřených průbehů a časových os. Tlačítko trvání zákmitů ~8ns Přepínač trvání zákmitů ~1ms 1us 1ms Obr. 1: Průběh zákmitů na tlačítkách a přepínačích osazených na vývojové desce
Vstup z tlačítka nebo přepínače není synchronní vůči žadnému hodinovému signálu. Pro odstranění zákmitů a synchronizaci těchto vstupů se používají obvody anglicky nazývané debouncer. Tyto obvody mohou být implementovány analogově jako filtr s charakteristikou dolní propusti, nebo digitálně. Při použití analogového filtračního obvodu zůstane průběh asynchronní vůči hodinovému signálu a v digitálním obvodu musí být synchronizován. Navíc je v tomto případě nutné použít digitální vstupy s hysterezí(schmittův kolpný obvod). igitálně je možné zákmity jednoduše odstranit a vstupy synchronizovat například s použitím některého z následujících obvodů: Klopný obvod RS Posuvný registr Stavový automat Čítač S odstraněním zákmitů pomocí čítačů resp. počítáním impulzů je možné se setkat i v mikrokontrolérech. Při implementaci v obvodech FPGA je vhodnější využít posuvný registr a vyhodnocovací logiku. Zákmity mechanických kontaktů mají náhodný průběh trvají obvykle desítky nanosekund až deset milisekund. oporučená doba vyhodnocování zákmitů je 1-15 ms. Kratší doba vyhodnocení může způsobit, že se zákmity přenesou dál do obvodu. Zbytečně dlouhá doba vyhodnocení, typicky nad 2 ms, může snížit ergonomii a komfort ovládání a nevede k dalšímu zlepšení kvality. Ukázka vhodného vzorkování vstupu pro odstranění zákmitů jen na obrázku 2. Po načtení 4x log. 1 je na u obvodu log. 1 reprezentující stisknuté tlačítko, jinak je na u log.. stisk tlačítka trvání zákmitů ~2ms vyhodnocení stisknutí tlačítka po skončení zákmitů 1ms vzorkování 1 1 1 1 1 1 vyhodnocení Obr. 2: Ukázka vhodného vzorkování vstupu z tlačítka Obvody pro odstranění zákmitů obvykle obsahuje i bloky pro detekci náběžné nebo sestupné hrany, které indikují stisknutí nebo uvolnění tlačítka a generují signál pro povolení hodinového signálu (clock enable). Návrh obvodu může probíhat klasickou metodikou ručního návrhu na hradlové úrovni nebo s využitím stavových automatů. Návrh s využitím stavových automatů umožňuje zvýšít úroveň abstrakce a zjednodušuje případné rozšíření nebo modifikaci obvodu. Ukázka návrhu obvodu pro odstranění zákmitů a generování povolovacího signálu clock enable je na obrázku 3 a obrázku 4. Na obrázku 3 je návrh na hradlové úrovni, ekvivalentní obvod popsán pomocí stavového automatu je na obrázku 4. Oba obvody využívají děličku s em.
detekce náběžné hrany 1 vstup dělička odstranění zákmitů Obr. 3: Návrh obvodu pro odstranění zákmitů na hradlové úrovni S1 start S = = = = S2 = = S5 S3 = 1 = S4 = 1 = 1 = = Obr. 4: Návrh obvodu pro odstranění zákmitů s využitím stavového automatu
Na obrázku 5 je ukázka průběhu vstupních a ních signálu obvodu pro odstranění zákmitů. Pro zjednodušení byla zvolena hlavní hodinová 4 Hz a signál _en s frekvencí 1 Hz. vzorkování 1ms _en stav S S1 S S1 S2 S3 S4 S5 S zákmity při stisku tlačítka ~15ms zákmity při uvolnění tlačítka ~15ms Obr. 5: Vstupní a ní průběhy signálů stavového automatu pro odstranění zákmitů
Vypracování laboratorní úlohy Úkol č. 1 (1,5 bodu) Navrhněte stavový automat pro odstranění zákmitů na tlačítku dle obrázku 4. Jeho funkci ověřte připojením 8-bitového binárního čítače se vstupem pro povolení čítání. Výstup čítače připojte na LE. Při stisknutí tlačítka nebo přepnutí přepínače bude čítač inkrementovat o 1. Funkci obvodu ověřte ve vývojové desce s připojením tlačítka i přepínače! Použijte strukturální styl popisu! Blokové schéma obvodu: V CC ělička 1ms vstup ebouncer Čítač 8 divider.vhd debouncer.vhd counter.vhd top.vhd Úkol č. 2 (1,5 bodu) S využitím bloků z předchozího úkolu navrhněte obvod pro měření doby stisknutí tlačítka. ěličku rozšiře o další generující signál _2 s periodou 1ms. Čítač rozšiřte o vstup reset, který připojíte k u obvodu pro odstranění zákmitů, tím bude zaručeno vynulování čítače při stisknutí tlačítka. Vstup čítače připojte dle schématu přes hradlo AN k u obvodu pro odstranění zákmitů a signálu _2 děličky. Po uvolnění tlačítka bude možné na LE odečíst dobu stistknutí tlačítka v binárním kódu v desetinách sekundy. Funkci obvodu ověřte ve vývojové desce. Použijte strukturální styl popisu! Určete mimální rozlišení měřeného času: a maximální měřitelný interval: Blokové schéma obvodu: V CC ělička _1 _2 1ms 1ms vstup ebouncer reset Čítač divider.vhd debouncer.vhd counter.vhd 8 top.vhd Napište jakým způsobem by bylo potřebné upravit obvod tak, aby bylo možné při stejném rozlišení měřeného času měřit maximální interval 256 sekund: