PŘEDMĚT MIKROPROCESORY A MIKROPOČÍTAČE Cíl Cílem předmětu ř d ět je j naučit čit studenta t d t připojit ři jit periferní if í obvody b d (paměti, ( ěti obvody b d s přístrojovou ří t j nebo komunikační sběrnicí, rozšiřující vstupy a výstupy, zobrazovací jednotky, klávesnice, atd.) k mikroprocesoru. Současně s tím naučit napsat program v jazyce symbolických adres (asembleru) a v jazyce C pro jejich obsluhu. Naučit se vkládat asembler do jazyka C v případech, kdy je to potřebné (kontrola nad dobou zpracování, neefektivní zpracování nebo překlad v jazyce C). Seznámit se základními periferiemi mikroprocesorů jako jsou sběrnice, sběrnice typy pamětí, pamětí obvody spojené s časovači, A/D převodníky, vlastnostmi vstupně/výstupních obvodů.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
1
PŘEDMĚT MIKROPROCESORY A MIKROPOČÍTAČE Př d ášk - Základy Přednášky: Zákl d mikroprocesorové ik é techniky t h ik (základní ( ákl d í části čá ti procesorového éh systému, té architektura mikroprocesorů, vlastnosti pamětí, připojování pamětí, vlastnosti vstupů/výstupů a jejich rozšíření, připojování periferií, čítače/časovače vlastnosti, vývoj a použití, přerušovací systém a jeho použití, zobrazovací jjednotky yp přístrojové j a komunikační sběrnice - Základy osobních počítačů jejich architektura, paměti, sběrnice, atd. Blány:
- jsou záměrně napsány s dlouhým popisem, aby částečně nahrazovaly skripta. Nepředpokládá p p se , že si jje student bude na p přednášce snažit číst.
Cvičení:
- Základní registry a vlastnosti ALU (aritmeticko-logické jednotku), použití základních instrukcí, zápis jednoduchých programů v asembleru, jazyce C a porovnání asembleru s překladem jazyka C. Realizace několika samostatných t t ý h úloh úl h (vymyšlených ( šl ý h studentem). t d t )
Zkouška:
- 4 příklady (připojení periferie nebo paměti k uP a vytvoření obslužného programu (ASM nebo C), vytvoření programu ke schématu s obvodem popsaným datasheet v (C nebo ASM), ASM) pochopení jednoduchého programu v asembleru). asembleru) čas: 90 minut - ústní zkouška u obou přednášejících z materiálů k přednášce, přednášené látky a písemné části. Důraz je kladen na porozumění probírané látky. čas: 10÷30 minut.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
2
PŘEDMĚT MIKROPROCESORY A MIKROPOČÍTAČE Proč takový předmět? Kde všude se z procesory můžeme dnes setkat? Domácnosti: Spotřebičích, telefonech, propojovacích zařízeních, zabezpečovacích systémech, ovladačích garážových vrat, záznamnících, faxech, televizích, kabelových tunerech, videokamerách a videopřehrávačích, dálkových ovladačích, videohrách, mobilních telefonech, hudebních nástrojích, šicích strojích, v ovladačích osvětlení, kamerách, hracích automatech, hračkách, sportovním vybavením a domácích počítačích. Kanceláře: Telefony, počítače, zabezpečovací systémy, faxy, mikrovlnná trouba, kopírky, laserové a barevné tiskárny, i ká pager Automobily: Palubní počítač, řízení motoru, airbag, ABS, přístrojová technika, zabezpečovací a navigační zařízení, ovládání klimatizace, mobilní telefon, centrální ovládání, atd. Mnohými výrobci jsou distribuovány procesory se specifikací pro obecné použití ačkoliv původně byly určeny pro koncové aplikace (v mnoha případech jsou i jinak označeny). Důvodem je často nevhodnost procesoru původně zamýšlenou úlohu. Pokud společnost zaměřuje procesor pro všeobecné použití, pak u něj optimalizuje interní periferie pro použití v různých aplikacích. Velmi často jsou rozšířené procesory a mikroprocesory zaměnitelné. Jedním z důvodů je například potřeba usnadnit přechod na novou řadu procesorů, rychlejších s výrazně nižší spotřebou energie. Trendem u procesorů s vysokým výkonem je integrovat další funkce na čip procesoru a ponechat na návrháři rozhodnout se, které z nich bude chtít využívat. V mnoha případech se koncové vnořené ř é aplikace lik t t jí za použití testují žití platformy l tf PC 86 která PCx86, kt á je j široce ši d t dostupná, á šetří š tří peníze, í zkracuje dobu vývoje a navíc je k dispozici i obrovská knihovna již napsaných programů. FEL ČVUT
Petr Skalický, katedra radioelektroniky
3
ZÁKLADNÍ SOUČÁSTI MIKROPOČÍTAČE ZÁKLADNÍ SOUČÁSTI MIKROPOČÍTAČE Rozhraní jednočipového mikrořadiče/mikropočítače
V/V
– vstupy a výstupy – číslicové a analogové, které slouží styku s okolím.
V minimální verzi není příliš použitelný (neumožňuje volání podprogramů, přerušení) pokud není zásobník na čipu procesoru, kapacita p registrů g jje omezená. RAM – paměť dat, která slouží k uchovávání mezivýsledků a případně realizuje zásobník. Přerušení – usnadňuje obsluhu perif ií a lepšího ferií l šíh využití ži í výpoý četního výkonu procesoru. FEL ČVUT
MEMR
adresy
CPU registry, ALU, dekodér instrukcí, řadič
řídící
ROM – paměť programu, v které je uložen zpracovávaný program nebo program zpracovávající interpretovaný program.
výběr obvodů
MEMR - čtení dat z paměti MEMWR - zápis dat do paměti IOR - čtení dat ze vstupní brány IOW - zápis dat na výstupní bránu
datová
CPU – centrální procesorová jednotka, která řídí komunikaci s ostatními součástmi systému y a zpracovává program.
Adresový dekodér
adresoová
K ždý procesorový Každý ý systém té se skládá minimálně ze tří částí:
MEMW MEMR
Programová paměť ROM
Datová paměť RAM
Výstupy IOW
data
Vstupy IOR
řízení
Generátor hodin
INTA
Přerušovací systém
budič externí sběrnice
Petr Skalický, katedra radioelektroniky
externí sběrnice
4
CO TO JE MIKROPROCESOR? Mikroprocesor je Mik j to t sekvenční k č í obvod b d s pevně ě nastaveným t ý algoritmem lg it postupného t éh čtení jedné nebo více instrukcí uživatelského programu, které se postupně nebo současně vykonávají. Každý sekvenční obvod se po připojení k napájení se dostane do nějakého stavu, který nemusí být vždy stejný (závisí na použitých obvodech, rychlosti náběhu napájecího napětí, atd.). Proto musí být procesor nastaven do počátečního stavu, aby jeho algoritmus začal z definovaného stavu. stavu Počátečním stavem je v první řadě stav tzv. tzv čítače instrukcí (obvykle nulový) a stav některých důležitých registrů před zahájením zpracovávání uloženého programu. Jaký je algoritmus procesoru? Počáteční stav čítače instrukcí, instrukcí pokud se nesčítá s obsahem kódového segmentu, segmentu představuje adresu, z které se bude číst první instrukce programu. Procesor přivede počáteční adresu na adresovou sběrnici, vygeneruje řídící signál pro čtení z programové paměti a po datové sběrnici očekává hodnotu operačního kódu první instrukce zpracovávaného programu. Operační kód je uložen a analyzován v dekodéru instrukcí. Jedná-li se o operační kód samostatný (byte nebo slovo) jsou řadičem generovány řídící signály potřebné k jeho vykonání. Patří-li k operačnímu kódu ještě data nebo adresa, inkrementuje řadič čítač instrukcí (=následující adresa), vygeneruje řídící signál ke čtení z programové paměti a po datové sběrnici je přenesena hodnota do procesoru. Nejsou-li všechny součásti instrukce přečteny, pokračuje procesor v jejich čtení. Je-li k dispozici celá instrukce, potom jsou řadičem generovány signály potřebné k jejímu vykonání. Následně je inkrementován čítač instrukcí a z následující adresy je přečtena hodnota, kterou procesor bude chápat jako operační kód (vyjma případu, kdy procesor je schopen zjistit, že přečtená hodnota není operačním kódem a zareagovat na tuto situaci). Podle uvedeného algoritmu procesor postupuje od počáteční adresy, nezávisle na tom, zda čtená data jsou smysluplná nebo ne,, zda jjsou vůbec čtena z nějaké j paměti. Proto uživatelský p ýp program g ((aplikace, p , operační systém, atd.) musí představovat nekonečnou smyčku. FEL ČVUT
Petr Skalický, katedra radioelektroniky
5
KOMUNIKACE MIKROPROCESORU S PERIFERIEMI J k přistupuje Jak ři t j procesor ke k svým ý pamětem ět a periferiím? if ií ? Vyjma implicitně přístupných registrů v CPU (centrální procesorové jednotce), přistupuje procesor ke svým pamětem a periferiím přes adresu a řídící signál, který určuje v kterém adresovém prostoru jsou mapovány. Přístup se realizuje tak, že procesor vyšle na adresovou sběrnici adresu místa, z kterého chce číst nebo do kterého chce zapisovat. p Jedná-li se o čtení, potom následně generuje řídící signál pro čtení z programového, datového nebo vstupně/výstupního prostoru v závislosti na tom, kterými prostory je procesor vybaven a do kterého je paměť nebo periferie začleněna. Po určité době stanovené výrobcem v závislosti na použitém synchronizačním hodinovém signálu je procesorem přečtena z datové sběrnice hodnota. Jedná-li se o zápis, potom za adresou procesor vyšle po datové sběrnici zapisovanou hodnotu a následně generuje řídící signál pro zápis do programového, datového nebo vstupně/výstupního prostoru v závislosti na umístění periferie. Systém sběrnic (soustava vodičů, ke kterým se paralelně připojují paměti a periferie) vytváří efektivní spojení všech součástí procesorového systému Část vodičů společné sběrnice je využívána pro přenos dat mezi bloky počítače – datová sběrnice, část pro přenos adres určují určujících, která část počítače je vůči procesoru zdrojem nebo příjemcem dat – adresová sběrnice a zbývající vodiče slouží k přenosu řídících signálů zajišťujících přenos dat po sběrnici – řídicí sběrnice. Vyjma přímého přístup do paměti (DMA-Direct Memory Access) se přenos dat v počítači odehrává vždy mezi procesorem a určitým blokem (pamětí, vstupně/výstupním obvodem,, atd.)) a p proto jje datová sběrnice obousměrná. Naproti p tomu adresová i řídicí sběrnice jsou jednosměrné. Adresa paměti nebo periferie je přivedena adresovou sběrnicí ke všem částem procesorového systému. Výstupy adresových dekodérů a řídící signály pak určují, s kterou periferií bude vstupní nebo výstupní operace realizována. K datové sběrnici mohou být připojeny pouze výstupy obvodů s otevřeným kolektorem (dříve) nebo obvodů s třístavovým ý výstupem ý p ((nyní y skoro výhradně). ý ) V daném časovém okamžiku jje datovou sběrnicí přenášena informace jedním směrem a proto smí být aktivní pouze jeden třístavový výstup paměti nebo periferie (při přenosu do CPU) nebo žádný (při přenosu z CPU). FEL ČVUT
Petr Skalický, katedra radioelektroniky
6
PŘENOS PO SPOLEČNÉ SBĚRNICI MIKROPOČÍTAČE Řízení p přenosu dat v mikropočítači p jje obvykle y direktivní ((bez p potvrzení)) a p proto každý ý obvod musí, v době určené časováním procesoru, poskytnout nebo přijmout data. Některé procesory s krátkým strojovým cyklem jsou vybaveny vstupem nebo generátorem pro vkládání čekacích stavů nebo programovatelným časováním, které umožňuje spolupráci s pomalou pamětí nebo periferií. Na obrázku je typické čtyř fázové taktování na společné sběrnici při čtení paměti bez čekání a s čekáním u blíže neidentifikovaného procesoru. procesoru Strojový cyklus pro čtení z paměti začíná v časovém okamžiku 1, kdy procesor vysílá na adresovou sběrnici adresu paměťového místa (buňky). V době 2 aktivuje řídící signál pro čtení paměti. Paměť dekóduje adresu spolu se svým aktivačním signálem a za dobu vybavení dat přivede na datovou sběrnici čtenou hodnotu 3. Po ustálení poměrů na sběrnici ♠ procesor čte vybavenou hodnotu 4. Po přečtení hodnoty ukončí procesor signál čtení, který způsobí deaktivaci paměti a přechod datové sběrnice do stavu vysoké impedance 5. V druhé části obrázku je zobrazena situace v případě přístupu k pomalejší paměti, kdy v okamžiku platné CLK adresy a řídícího signálu je od t periferie do procesoru vyslán AB signál READY (WAIT) 6, který ADRESA ADRESA t způsobí vkládání čekacích DB stavů. DATA DATA t MEMRD
Čekací stavy t
♠ Jsou-li k delší sběrnici READY připojeny rychlé obvody s dobou t přeběhu kratší než dvojnásobek 1 2 3 4 5 6 y šíření p po sběrnici,, p potom doby vodiče sběrnice představují vázaná nesymetrická mikropásková vedení s relativně malou charakteristickou impedancí 30÷60Ω. FEL ČVUT
Petr Skalický, katedra radioelektroniky
7
PŘENOS PO SBĚRNICI S 2 A 4 FÁZOVÝM PŘÍSTUPEM S nástupem výkonných procesorů s krátkým strojovým cyklem, začaly výrobci přistupovat k dvoufázovému přístupu do pamětí a V/V jednotek, aby zvětšili časový prostor pro dobu vybavení paměti viz. tab. (pomalejší paměti jsou levnější). Zavedení dvoufázového přístupu způsobuje ů b j nutnost t t zavedení d í dodatečných d d t č ý h cyklů klů při ři střídání třídá í cyklů čtení a zápisu (např. tří cyklového zápisu mezi dvěma operacemi čtení.
Strojový cyklus ADRESA
AB
DATA
DB MSTRB
Přesah dat
R/W 4 fáze 2 fáze
1
2 1
3 2
4
DB
Fáze
Strojový cyklus
SRAM
Poměr
320C10
4
200ns
75ns
37,5%
320C25
4
100ns
35ns
35%
320C50
2
50ns
32ns
64%
320C54x
2
25ns
15ns
60%
Zápis
Čtení AB
Procesor
ADRESA
ADRESA
DATA
DATA
MSTRB R/W
FEL ČVUT
Přesah dat
Petr Skalický, katedra radioelektroniky
8
ZÁKLADNÍ ARCHITEKTURY PROCESORŮ Procesory s harvardskou architekturou vychází ze struktury navržené v roce 1939 americkým matematikem H.H. Aikenem pro kalkulačky. Harvardská struktura se od struktury Von Neumanovské (princetonské) liší hlavně v tom, Řadič že má paměť rozdělenou na programovou a datovou část. část V programové části jsou uloženy instrukce a konstanty v datové jsou uloženy Datová Program. ALU proměnné a mezivýsledky. Každý paměťový paměť paměť prostor má svoji adresovou a datovou sběrnici. Oba paměťové prostory mohou mít stejnou, ale i rozdílnou díl šířk datové šířku d é i adresové d é sběrnibě i Vstupní Výstupní ce. U riskových (RISC) a signálových procesorů zařízení zařízení se této možnosti využívá k vytvoření jednoStavová hlášení řadiči Řídící signály řadiče slovných instrukcí. Hlavní výhodou této Toky dat y jje možnost současného čtení a architektury zpracování instrukcí i dat. U procesorů se začala tato struktura používat v době, kdy výpočetní výkon procesorů se začal zvyšovat částečným překrýváním instrukcí. Není-li harvardská struktura modifikována, potom oba prostory jsou důsledně odděleny a částečné i úplné překrývání instrukcí nepřináší problémy se správou programové paměti. Z částečného překrývání překrý ání instrukcí posléze poslé e vznikl nikl „pipeline”, pipeline” kde instrukce je rozdělena ro dělena na dvě d ě nebo více částí, které se překrývají. U modifikovaný harvardských struktur (signálové procesory) je umožněn přenos hodnot mezi programovým a datovým prostorem (nutné např. pro realizaci adaptivních filtrů). Přenos může být zajištěn pomocí přepínané paměti, jednotky mezi datovými sběrnicemi až po „prolnutí“ datového a programového prostoru v určitém rozsahu adres. Pro připojení externích pamětí a periferií je jsou adresové a datové sběrnice sdruženy do jedné adresové a jedné datové sběrnice s potřebnými řídícími signály. FEL ČVUT
Petr Skalický, katedra radioelektroniky
9
ZÁKLADNÍ ARCHITEKTURY PROCESORŮ Procesory s Von Neumanovskou ( princetonskou ) architekturou vychází ze struktury navržené v roce 1945 americkým matematikem Johnem Von Neumannem pro samočinné počítače. Von Neumana napadlo, že mezi instrukcemi a Operační paměť daty je rozdíl pouze v interpretaci, a tudíž může být programová paměť i datová paměť součástí jedné paměti se stejným formátem slov následně Vstupní Výstupní ALU zařízení zařízení označované jako operační paměť. Instrukce i data leží ve stejném paměťovém prostoru a jsou rozlišovány pouze podle kontextu. Bude-li Řadič dč program uložen l ž v paměti, ěti jejíž j jíž obsah b h lze l za provozu měnit, může program modifikovat sám Stavová hlášení řadiči Řídící signály řadiče sebe, což může být v některých aplikacích výhoToky dat dou. Na druhou stranu může v důsledku rušení nebo jiné události dojít k desinterpretaci programu a jeho následné destrukci. Pro snazší realizovatelnost a snadný způsob programování byly první procesory realizovány v této architektuře. I přes svoji univerzálnost je tato struktura koncipována jako sekvenční. Při jejím vzniku se s „pipeline“, paralelizmem a více jádry nepočítalo a proto její současná realizace přináší výrobcům řadu obtíží. Struktury, které odstraňují nedostatky Von Neumanovské architektury se zatím neujaly. neujaly Její činnost řídí jednotka označená jako řadič, která pomocí řídících signálů zajišťuje čtení a zápis do operační paměti, jednotlivých registrů, vstupních a výstupních periferií a řídí i činnost ALU (Aritmeticko-logické jednotky), která provádí veškeré aritmetické výpočty a logické operace. Vstupní a výstupní periferie mohou být součásti procesoru nebo externího adresového prostoru.Dnes nejrozšířenější architektura díky platformě xx86 (PC) a mikrokontrolérům Freescale (Motorola) 68HC05, 68HC11, 68HC12, S12XE (16-bitový CISC)…. FEL ČVUT
Petr Skalický, katedra radioelektroniky
10
CISC / RISC První procesory byly vyrobeny s komplexní (úplnou) instrukční množinou. CISC (Complex Instruction Set Computing) Instrukční množina obsahuje velký počet instrukcí, často velmi specializovaných a složitých na provedení. V případě architektury x86 jsou dnes rozkládány do řady jednoduchých operací (mikrokód uložený v paměti procesoru) Instrukce jsou obvykle víceslabičné Vykonání instrukcí probíhá v různém počtu strojových cyklů v závislosti na počtu slabik instrukce a její složitosti. Velký počet instrukcí a jejich složitost vede ke komplikovanému obvodovému řešení aritmetické jednotky, řadiče, případně k implementaci specializovaných jednotek. Následně se zkoumalo zda není výhodnější realizovat procesor s menším počtem jednoduchých instrukcí, které by realizovaly jednodušší a tudíž i rychlejší jednotky. Složitější operace by pak byly skládány z jednoduchých stejně jako při nejnižší úrovni programování. jednoduchých, programování RISC (Reduced Instruction Set Computing) Instrukční množina obsahuje relativně malý počet jednoduchých instrukcí (33÷150). Instrukce jjsou obvykle y jjednoslabičné ((závisí na šířce sběrnice p přenášející j instrukce)) Vykonání instrukcí probíhá ve stejném počtu strojových cyklů, obvykle přímo úměrnému počtu slabik instrukce. Instrukční množina bývá orientována na skupinu univerzálních registrů. Programy na těchto procesorech jsou obvykle rychlejší, rychlejší ale vzhledem k většímu počtu bitů instrukcí potřebují větší paměťový prostor na instrukce. FEL ČVUT
Petr Skalický, katedra radioelektroniky
11
ULOŽENÍ PROGRAMU V PROGRAMOVÉ PAMĚTI J k je Jak j uložen l ž program g v paměti ěti procesoru? ? Na jednotlivých adresách v programové paměti je program uložen ve formě tzv. strojového kódu, který se skládá ze 4, 8, 12, 16, 24, 32, 48 až 64 bitového slova identifikujícího danou instrukci nebo potřebné informace (data, adresy) doplňující předcházející instrukci. Obsah programové p g paměti p p pro uvedený ýp příklad p programu g na 16-bitovém p procesoru jje v tabulce. Obvyklé zobrazení překladu programu do strojového kódu v souboru.lst 0000 0000 0001 000 0003 0004 0006 Atd.
F7BB 7718 8 7F80 80 EB00 F074 00B8 F074 00C3
_c_int00: SSBX INTM STM S 7f80h,SP 80 ,S LD #100h,DP CALL init_DSK CALL init_codec
Adresa
A15 ÷ A0 0000 0000 0000 0000 0000 0000 0000 0000 FEL ČVUT
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
; ; ; ; ;
0000 0001 0010 0011 0100 0101 0110 0111
0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h
Globální zákaz přerušení Nastaveni asta e ukazatele u a ate e zásobníku ásob u Nastavení datového ukazatele Inicializace DSK Inicializace zvukového kodeku
D15 ÷ D0 1111 0111 0111 1110 1111 0000 1111 0000
0111 0111 1111 1011 0000 0000 0000 0000
Petr Skalický, katedra radioelektroniky
1011 0001 1000 0000 0111 1011 0111 1100
Obsah 1011 1000 0000 0000 0100 1000 0100 0011
F7BBh 7718h 7F80h EB00h F074h 00B8h F074h 00C3h 12
VÝPIS STROJOVÉHO KÓDU, ZOBRAZENÍ OBSAHU PAMĚTI VÝPIS STROJOVÉHO KÓDU, ZOBRAZENÍ OBSAHU PAMĚTI Ad Adresa
A15 15 ÷ A0 0 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0001 0010 0011 0100 0101 0110 0111
0000h 0001h 0002h 0003h 0004h 0005h 0006h 0007h
D15 15 ÷ D0 0 1111 0111 0111 1110 1111 0000 1111 0000
0111 0111 1111 1011 0000 0000 0000 0000
Zobrazení paměti při jejím výpisu Adresa Obsah 0x0000: 0xF7BB 0x7718 0x7F80 0xEB00 0xF074 0x0008: 0xF074 0x00F0 0xF074 0x010B 0xF074 0x0010: 0x8003 0x1105 0x7732 0x0000 0xF074 0x0018: 0x8005 0xF074 0x00A8 0x4830 0x4931
1011 0001 1000 0000 0111 1011 0111 1100
Ob h Obsah 1011 1000 0000 0000 0100 1000 0100 0011
0x00B8 0x00A8 0x00B0 0x8004
0xF074 0x4830 0x8933 0x1106
F7BBh 7718h 7F80h EB00h 00h F074h 00B8h F074h 00C3h
0x00C3 0x4931 0x1003 0x7732
Obvyklé zobrazení překladu programu do strojového kódu v souboru.lst 0000 0000 0001 0003 0004 0006 Atd. FEL ČVUT
F7BB 7718 7F80 EB00 F074 00B8 F074 00C3
Instrukce Data CALL
init_DSK _
; STM 7f80h,SP ; LD #100h,DP
Adresa Petr Skalický, katedra radioelektroniky
13
VÝVOJ PROGRAMŮ –– MOŽNOSTI ZÁPISU PROGRAMU VÝVOJ PROGRAMŮ V závislosti na typu aplikace a její složitosti, můžeme používat různé programovací metody, které jsou pro daný typ mikroprocesoru vhodné či nikoliv. Nevhodnost metody závisí na architektuře procesoru, jeho nedostatečném výkonu nebo zvoleném programovacím jazyku. Program pro mikropočítač můžeme vytvářet: Ve strojovém kódu – V době překladačů se nevyužívá. Realizace větších programů je nesmírně zdlouhavá. Jakákoliv chyba nebo vložení několika instrukcí vede k přeadresování řady návěští a podprogramů. Do strojového kódu je třeba se „ponořit“ v případě podezření na chybu překladače. Vytvoření fungujícího krátkého programu od různých adres a jeho spuštění přispívá k pochopení funkce mikroprocesoru. Program se zapisoval v instrukcích, ručně adresoval a v kódech zapisoval do paměti. paměti E6 12 42 16 …… …… E9 …… …… 22
MOV A,@R0 LCALL TEST TEST:
- Návěští TEST má adresu 4216h
MOV A, R1 …… …… RET
Jazyce symbolických adres – Používá se k realizaci knihovních funkcí jazyka C, k realizaci částí programů, programů které nelze efektivně realizovat ve vyšším jazyce nebo kde potřebujeme mít kontrolu nad časovým zpožděním nebo které překladač vyššího jazyka nepřekládá efektivně. V rámci svých instrukcí, nápaditosti a znalostí programátora umožňuje jazyk nejefektivnější řešení dané úlohy. Vývoj programu v asembleru trvá dlouho a velmi snadno lze v něm vytvořit špatně identifikovatelnou chybu. Znalost architektury procesoru a asembleru je nezbytná při posouzení efektivnosti zápisu ve vyšším jazyce. FEL ČVUT
Petr Skalický, katedra radioelektroniky
14
VÝVOJ PROGRAMŮ –– MOŽNOSTI ZÁPISU PROGRAMU VÝVOJ PROGRAMŮ Příklad na vytvoření knihovní funkce jazyka C bit isdigit (unsigned char znak), která v příznaku přenosu C informuje zda vstupující znak (proměnná) je číslo nebo ne. isdigit: MOV A , R7 JB ACC.3 , H1 ANL A , #0F0H H1: ANL A , #0F6H XRL A , #30H JNZ H2 CLR C RET H2: SETB C RET Jazyce symbolických adres s aritmetickou knihovnou – tato varianta se využívala v době, kdy ještě nebyly k dispozici překladače vyššího jazyka a bylo potřeba provádět složitější operace v pohyblivé nebo pevné řádové čárce. Knihovna se skládala ze standardních aritmetických operací p vyjádřených yj ý podprogramy p p g y se vstupem p a výstupem ý p operandů p v definovaných ý registrech. Stejným způsobem je řešen vstup i výstup do a ze standardních systémových funkcí a operací vyššího jazyka (např. jazyka C). Existuje několik programátorů, kteří využívají tuto variantu dodnes. Jazyce C – který je v současné době využíván k realizaci aplikačních programů (programů dodávaných výrobcem) v příslušném hardwaru. Jedná se o efektivní jazyk k tvorbě složitých programů pro jednočipové, signálové a částečně i PC procesory, jehož zdrojový kód je přenositelný i na jiné typy procesorů. Vývoj v jazyce C je podstatně rychlejší a bezpečnější, než v jazyce symbolických adres. Je-li napsán dobře, je délka strojového kódu větší, ale srovnatelná s velikosti kódu z jazyka symbolických adres (asembleru). Operace, které v jazyce C lze realizovat jen obtížně nebo jsou kompilovány neefektivně, mohou být do jazyka C vloženy ve formě jazyka symbolických adres. FEL ČVUT
Petr Skalický, katedra radioelektroniky
15
VÝVOJ PROGRAMŮ –– MOŽNOSTI ZÁPISU PROGRAMU VÝVOJ PROGRAMŮ Při přechodu na jiný procesor je potom nezbytné tyto části přepsat v instrukčním souboru nového procesoru. Pokud byly v jazyce C využívány odkazy na konkrétní registry, musí být tyto části upraveny na nový procesor. Přenositelnost jazyka C na jiný (např. signálový) procesor, který má zcela odlišnou architekturu, znamená, že po překladu zdrojového kódu jazyka C překladačem nového procesoru a jeho nahrání bude tento program fungovat. Neznamená to, že strojový kód bude využívat nejefektivnější instrukce, které by na daném procesoru se daly využívat, a že by se pro nový procesor nedal zdrojový kód jazyka C napsat výhodněji. Například budeme-li chtít realizovat dvojnásobek nějaké proměnné x můžeme použít zápis y=x+x nebo y=2*x nebo y=x<<1. <<1 Na N jednočipových j d či ý h procesorech h bude b d nejvýhodnější j ýh d ější zápis á i realizovaný li ý součtem, čt potom t posunem a nakonec násobením, které bude trvat největší počet cyklů. Na některých signálových procesorech bude realizace všech operací stejně výhodná a např. u signálových procesorů TI bude nejvýhodnější operace posunu, kterou jsou schopny procesoru zrealizovat již při přeyzp paměti k aritmetické jjednotce realizující j nějakou j následnou operaci. p Překlanosu hodnoty dač jazyka C nekontroluje, zda jste si nadefinovali špatnou velikost pole a odkazujete se na nedefinovaný prvek pole nebo na nevyužívané paměťové místo, atd. Proto někdy bývá označován jako jazyk nebezpečný. Vyšší a interpretované jazyky – existuje velké množství univerzálně použitelných a aplikačně orientovaných ý jazyků, ů které é umožňujíí rychlou realizaci dané é úlohy ú nebo problému. é Ty z nich, které jsou překládány překladačem do strojového kódu budou více či méně srovnatelné se strojovým kódem generovaným z jazyka C. Přímo interpretované jazyky nebo jazyky interpretované ze spustitelného mezikódu (Java) jsou ze své podstaty pomalejší. Trend využití těchto jazyků má kořeny v multiplatformní přenositelnosti (Java) nebo ve snaze vy vyhnout se implementace síťové vrstvy např. OS Linux na procesorech ARM a podobných. FEL ČVUT
Petr Skalický, katedra radioelektroniky
16
VÝVOJ PROGRAMŮ –– PROGRAMOVACÍ METODY VÝVOJ PROGRAMŮ Interpretované – BASIC, Java, jazyky logických automatů (PLC), atd., které jsou uloženy v primárním zápisu (staré verze BASIC) nebo se překládají do mezikódu (Java,PLC) (nikoliv strojového). Aplikační program pouze interpretuje uživatelský program např. logického automatu a z toho důvodu jsou pomalejší. Interpretovaný jazyk bývá uložen v paměti RAM, RAM častěji EEPROM, EEPROM případně zálohované RAM. RAM Paměť nemusí mít paralelní přístup, protože interpretovaný jazyk je postupně vyčítán, ale musí být snadno pomocí aplikačního programu přeprogramovatelný na novou funkci. Kompilované – C, Pascal, atd., kde výsledkem je strojový kód naprogramovaný do paralelní paměti Flash, FRAM, (EPROM), výjimečně EEPROM, zálohované RAM (zero RAM). Programovací metody můžeme rozdělit podle způsobu zpracování dat na: Jednoprůchodové – kdy program nebo podprogram vypočte výstupní hodnotu s požadovanou přesností v jjediném průchodu Víceprůchodové – kdy postupným voláním programu nebo podprogramu je zlepšována přesnost počítané hodnoty. Rekurzivní – kdy v programu nebo podprogramu je opět volán příslušný program nebo podprogram p g a ukončení tohoto p procesu jje řízeno p podmínkou určující j například p přesnost výstupní p ý p hodnoty. Protože počet volání programu nebo podprogramu nemusí být pevně stanoven, není tento způsob programování vhodný pro systémy s omezenou nebo malou kapacitou zásobníkové paměti.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
17
VÝVOJ PROGRAMŮ –– PROGRAMOVACÍ METODY VÝVOJ PROGRAMŮ Častěji j se setkáváme s dělení p programů g p podle reakce a rychlosti y zpracování p události: Programování v reálném čase – kdy procesor musí veškeré přijaté hodnoty zpracovat buď za stanovenou dobu obvykle za periodu vzorkování vstupních dat (číslicové zpracování signálu). Program musí splnit nejen požadovanou přesnost zpracování dat, ale i maximální možný datový tok. V závislosti na složitosti zpracovávané úlohy je většina jednočipových procesorů schopna zpracovávat vzorkovací kmitočty do jednotek kHz, běžné signálové procesory do desítek kHz, výkonové signálové procesory až do jednotek nebo desítek MHz. Pásmo stovek MHz je doménou běžných nebo DSP programovatelných polí. Událostní programování – je reakce programu na určitý vnitřní nebo vnější podnět. Z h Zahrnout t pod d něj ěj můžeme ůž reakci k i na stisk ti k tlačítka, tl čítk příjem říj h d t po sériovém hodnoty é i é kanále, k ál reakci k i na vnější žádost o přerušení, komunikaci s měřícím senzorem, atd. Stavové programování – konstrukce programu nebo jeho části se podobá nebo je přímo totožná s chováním stavového automatu, kterým se popisuje chování synchronních i asynchronních sekvenčních obvodů. obvodů Jedna proměnná určuje (vnitřní) stav automatu. automatu Část programu příslušející danému stavu provádí potřebné zpracování a testování podmínek určujících přechod do stavů následujících. Je výhodné při realizaci dvou a více procesů, které běží současně a spolu příliš nesouvisí. Například měření veličin a současné řízení technologického procesu, měření veličin a současné obsluze stromového konfiguračního menu přístroje, ří j atd. d Řešení Ř š í popsaných ý h úloh úl h může ůž být bý řešeno ř š s využitím ži í přerušovacího ř š íh systému é (zjednodušený multitasking) nebo s větší variabilitou přímo RTOS (Real Time Operating System–multitasking). Programy pro PC, multiprocesorové systémy a více jádrové procesory můžeme dělit: Jednovláknové – kdy data jsou zpracována v jediné datové cestě v jednom procesu zpracování Vícevláknové – kdy data jsou zpracovávána různými (více) procesy, které mezi sebou komunikují. Příkladem je např. zpracování zvukových a obrazových informací v počítačích typu PC. 18 FEL ČVUT Petr Skalický, katedra radioelektroniky
STAVOVÉ PROGRAMOVÁNÍ ‐‐ PŘÍKLAD STAVOVÉ PROGRAMOVÁNÍ stav/y3 y2y1
c/x 2 x1 /y - podmínka přechodu c/10/-
c/10/c/00/A/000
c/10/c/00/-
B/001 c/11/-
c/10/c/00/-
C/011 c/11/-
D/111 c/11/-
Vstup hesla Režim konfigurace Komunikace
NET92
Jazyk
Adam
CZ
Limity
GB
Limita 1
Limita 2
Nastvení limityy i Adresa
´Baud Nastvení hystereze i
Nastavení adresy
9600
19200
38400
57600
Nastvení zpoždění i
Přechod ovlivněný klávesnicí FEL ČVUT
Petr Skalický, katedra radioelektroniky
19
STAVOVÉ PROGRAMOVÁNÍ ‐‐ PŘÍKLAD STAVOVÉ PROGRAMOVÁNÍ //Převod hodnoty Tx_data na posloupnost bitů sériového přenosu UART If (Data_platna == true) { vysli(0); // vyslání start bitu for (i=0; i<8; i++) { if(Tx_data&0x01)!=0) vysli(1); else vysli(0); Tx_data=Tx_data>>1;} vysli(1); } // vyslání stop bitu //Realizace téhož programu pomocí stavového řešení switch(Tx_State_var) { CASE 0: // čekání na nová data if (Data_platna == true) Tx_State_var = 1; break; CASE 1: // vyslání start bitu, nulování počitadla vysli(0); Tx_State_var = 2; pocitadlo = 0; break; CASE 2: // vysílání bitů 0-7 if ((Tx_data & (2^pocitadlo))) == 0) vysli(0); else vysli(1); pocitadlo++; if (pocitadlo == 8) Tx_State_var = 3; break; CASE 3: // vyslání stopbitu vysli(1); Tx_State_var = 0 } FEL ČVUT
Petr Skalický, katedra radioelektroniky
20
VÝVOJ PROGRAMŮ –– MODULÁRNÍ PROGRAMOVÁNÍ VÝVOJ PROGRAMŮ Modulární programování přináší výhody v jednodušším a hlavně přehlednějším vytváření rozsáhlých programů, nezbytným v případě týmového vytváření programů. Umožňuje snazší ladění a úpravy vytvářených podprogramů, včetně možnosti jejich násobného použití a snadného začleňování do programových knihoven. Důležité je správné definování vstupů a výstupů daného modulu (podprogramu) a předávání parametrů mezi moduly, moduly kde modul je jeden nebo několik spojených segmentů. Programátor může jednotlivé moduly odladit a ověřené moduly spojit do výsledného i velmi rozsáhlého programu nebo začlenit do knihoven. Na stejném principu se vytváří programy v jazyce C, kde jednotlivé operandy jsou z paměti přeneseny do registrů procesoru a následně jsou volány standardní knihovní moduly (podprogramy). Při předávání více parametrů je použití žití registrů i t ů modifikováno difik á a zbývající bý jí í parametry t se přenáší ř áší přes ř zásobník á b ík nebo b paměť. ěť Při modulární tvorbě programu je třeba počítat s většími nároky na velikost zásobníku, protože může být postupně voláno velké množství podprogramů. Je-li zásobník součástí vnitřní paměti procesoru, může nás tento postup dostat do potíží. Před spuštěním programu
Zvláště u programů vytvořených v jazyce C jsme schopni zjistit potřebnou hloubku zásobníku jen u některých vývojových prostředí. Na konci vývoje programu je vhodné u aplikace otestovat programem využívanou hloubku zásobníku. zásobníku Zásobník až do konce vnitřního paměťového prostoru naplníme danou hodnotou (např. FFh) a program spustíme včetně všech přerušení, volání, atd. Po určité době zjistíme kolik hodnot zůstalo nedotčených viz obrázek. Situaci opakujeme i pro jiné počáteční hodnoty, aby náhodou nedošlo ke shodě s částí návratové adresy. FEL ČVUT
Petr Skalický, katedra radioelektroniky
Adresa 0FFh
SP ->
00h
0FFh 0FFh 0FFh ..... 0FFh 0FFh 0FFh xxh xxh ..... xxh
Po otestování programu Adresa 0FFh
Použitá hloubka zásobníku SP ->
00h
0FFh 0FFh 11h ..... 0EAh 88h 32h xxh xxh ..... xxh
21
VÝVOJ PROGRAMŮ –– STRUKTURA A MOŽNOSTI VÝVOJ PROGRAMŮ
Postup při tvorbě programu je zobrazen na následujícím obrázku pro programování s programovými segmenty, moduly, knihovnami a programy. Uvedené přípony v obrázku jsou obvykle generovány implicitně (příklad pro 8051).
zdrojový soubor *.C
EDITOR
zdrojový soubor *.C s vloženým asemblerem
PŘEKLADAČ C51.EXE
zdrojový j ý soubor *.ASM
PŘEKLADAČ C51.EXE zdrojový soubor *.SRC
PŘEKLADAČ A51.EXE
protokol o překladu *.LST
relativní přemístitelný soubor *.OBJ knihovní relativní moduly *.LIB
Spojovací program L51.EXE
Absolutní cílový program *.ABS
Transformace do formátu HEX OHS.EXE
Výpis informací o spojení *.M51
Strojový kód *.HEX Obvodový EMULÁTOR
FEL ČVUT
Petr Skalický, katedra radioelektroniky
PROGRAMÁTOR CPU, EPROM
SIMULÁTOR SIM51.EXE
22
INTEL HEX FORMÁT INTEL HEX FORMÁT Formát F át INTEL HEX byl b l vytvořen t ř k př přenosu datového d t éh p pole l 88-bitových bit ý h h hodnot d td do vývojových ý j ý h systémů a programovacích zařízení pamětí PROM/ROM a EPROM. Každý byte v tomto formátu je vyjádřen dvěma hexadecimálními znaky v ASCII kódu, které vyjadřují 8-bitovou hodnotu. Popisovaný formát, který se v současnosti používá ke generování obsahů pamětí př kl d či vyšších překladači šší h jazyků j z ků nebo n b jjazyka z k symbolických mb li ký h adres, dr lz lze rrozdělit zdělit do d 6 částí: čá tí: Počáteční značka pole - Prvním znakem řetězce je dvojtečka (ASCII - 3Ah) Délka přenášeného datového pole – (CC) 2 hex.znaky (obvykle 16 nebo 32 bytů) Počáteční adresa pole - (AAAA) 4 hex.znaky adresa pro první byte, další na následující Typ záznamu - (TT) 00 – přenášené byty, 01 – ukončující znak (poslední řádek) Datové pole – (DD) byty jsou reprezentovány 2 hex.znaky 0 až 9 a A až F (číslo 0 až do 255) Kontrolní součet – Aritmetický součet modulo 256 vyjma dvojtečky :1000000075805575905575A0557DFA111C7580AA9F :100010007590AA75A0AA7DFA111C80E47C237B4F01 :07002000DBFEDCFADDF62235 :00000001FF :CC :10 :10 :07 :00
AAAA 0000 0010 0020 0000
FEL ČVUT
TT 00 00 00 01
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD SS 75805575905575A0557DFA111C7580AA 9F 7590AA75A0AA7DFA111C80E47C237B4F 01 DBFEDCFADDF622 FF Petr Skalický, katedra radioelektroniky
23
ARCHITEKTURA KLASICKÉHO MIKROPOČÍTAČE
FEL ČVUT
Rozhraní jednočipového mikrořadiče/mikropočítače Adresový dekodér
výběr obvodů
MEMR - čtení dat z paměti MEMWR - zápis ápis dat do paměti IOR - čtení dat ze vstupní brány IOW - zápis dat na výstupní bránu
MEMR
řídící
CPU registry, ALU, dekodér instrukcí, řadič
datová
adresy adresováá
První mikroprocesory byly vytvořeny ve Von Neumanově architektuře a musely být doplněny ještě dalšími obvody (např. generátorem synchronizačního signálu, systémovým řadičem, řadičem přerušení, atd.). Spoj í jením těchto ě h obvodů b dů vznikla ikl procesorová á jednotka (červeně orámovaná), z které byla vyvedena adresová a datová sběrnice, řídící signály pro přístup do operační paměti (zpočátku rozdělené na programovou část (EPROM - obsahující program aplikace) a datovou část (RAM)), ke vstupům a výstupům a případně i k řadiči přerušovacího systému. S nástupem operačních systémů CP M (DOS) byl CP-M b l do d paměti ěti EPROM uložen l ž zavaděč operačního systému a soubor podprogramů pro styk s periferiemi systému (floppy mechanikou, zobrazovací jedj označované notkou, klávesnicí,atd., ((později BIOS). Budeme-li dnes realizovat procesorový systém v FPGA programovatelném poli včetně urychlujících obvodových jednotek, budeme postaveni před stejný návrh připojení pamětí, V/V a periferií jako dříve, jenom na jiné implementační bázi.
MEMW MEMR
Programová paměť ROM
Datová paměť p RAM
Výstupy IOW
d t data
Vstupy řízení
Externí řadič
Generátor hodin
Petr Skalický, katedra radioelektroniky
IOR
INTA
Přerušovací systém
budič externí sběrnice externí sběrnice
24
ZÁKLADNÍ POJMY ARCHITEKTURY MIKROPOČÍTAČE První mikroprocesor (8080) obsahoval nezbytné jednotky k tomu, tomu aby představoval univerzálně použitelný výpočetní a řídící systém. Smysl a vlastnosti důležitých jednotek budou dále popsány. Registr A – střadač obsahuje jeden operand aritmetické nebo logické operace a ukládá se do něj i výsledek operace. Na procesoru 8051 je označován A (nebo adresou ACC) a většinou platí výše uvedené. Na procesoru AVR může být kterýkoliv z registrů R0÷R31 zdroje i cílem prováděné operace. Má-li ALU a střadač větší počet bitů, než vstupující operandy do ALU (signálové procesory), potom musí být známo, zda zpracovávaná hodnota je bez znaménka nebo se znaménkem. Dočasný registr TR – uchovával druhý operand aritmetické/logické operace přicházející z paměti nebo zápisníkové paměti. Dnes není obvykle implementován a druhý operand přichází jako konstanta z instrukce, instrukce hodnota z datové paměti (pouze 8051) nebo registrů. registrů Zápisníková Stavový registr - pro uchování indikátorů (přípaměť znaků) výsledku operace v ALU nebo obsahu (registrové TR STŘADAČ banky) střadače. U 8051 je označen PSW, u AVR SREG. SP příznaky y jjsou: CY/C – p přenos,, AC/H – Standardní p M částečný přenos, OV/V – přetečení, P/- – parita, Stavový U IX ALU registr X -/S – znaménko, -/N – záporný výsledek. PC Zápisníková paměť (banky registrů) – soubor 8 vnitřní datová sběrnice adresové pomocných registrů s rychlým přenosem hodnot budiče d ALU. do ALU Slouží Sl ží k uložení l ž í mezivýsledků, i ý l dků případně ří d ě budiče Instrukční registr mohou představovat ukazatel do paměti. Rozdělit sběrnice ŘADIČ je můžeme na obecně použitelné a speciální, jePřerušovací 16 jichž použití je určeno výrobcem. Instrukce s reČasování systém 8 gistry jsou velmi rychlé, protože jsou obvykle tvořeny jedním slovem obsahujícím informaci o přířídící datová adresová slušném registru (několik bitů) a operaci s ním. časování sběrnice
FEL ČVUT
Petr Skalický, katedra radioelektroniky
sběrnice
sběrnice
25
ZÁKLADNÍ POJMY ARCHITEKTURY MIKROPOČÍTAČE Zápisníková paměť (banky registrů) – u 8080 registry B,C,D,E,H,L, B C D E H L které ve dvojicích představovaly adresu do paměti. U 8051 až čtyři banky registrů R0 až R7, R0 a R1 představují 8-bitový ukazatel do datové paměti, DPTR (DPH,DPL) – 16 bitový ukazatel do programové nebo datové paměti. U AVR registry R0 až R31, tři 16-bitové ukazatele do datové paměti X(R27,R26), Y(R29, R28) a Z(R31,R30). PC-programový C čítač – obsahuje b h j adresu, d z které k é bude b d čtena č i instrukce k nebo b potřebná ř b á data d nebo b adresa k vykonání instrukce. Jeho hodnota často nebývá přímo přístupná. Aritmeticko-logická jednotka (ALU) – realizuje aritmetické a logické operace, nastavuje příznakové bity ve stavovém slově po většině provedených operací případně je jimi při operaci ovlivňována. ALU musí být schopna realizovat základní čtyři operace: aritmetické sčítání, jednotkový doplněk (inverzi bitů), logický součin (identifikaci hodnoty bitu) a podmíněné větvení na základě hodnoty nebo bitu, které jsou nezbytné pro realizaci celé aritmetiky s pevnou i pohyblivou čárkou. Možnosti ALU jsou typicky mnohem větší, ale existují v minulosti procesory s malým počtem operací. I t kč í registr Instrukční gi t – interní i t í registr, i t do d kterého kt éh je j uložena l ž přečtená ř čt á instrukce i t k a předána ř dá dekodéru instrukcí a řadiči. Z identifikace instrukce a příznaků ve stavovém slově vytváří řadič signály potřebné k načtení hodnot pro dokončení instrukce nebo přímo k jejímu vykonání. Ukazatel zásobníkové paměti SP – je 8 nebo 16-bitový ukazatel do vnitřní nebo vnější datové paměti pro zápis/čtení návratových adres při volání/návratu podprogramů nebo přerušení. Současně může sloužit k dočasnému bez adresnému ukládání mezivýsledků a proměnných (předávání mnoha proměnných do podprogramu). U 8051 ukazuje na obsazenou adresu do vnitřní datové paměti, a při plnění zásobníku se inkrementuje. U AVR ukazuje na neobsazenou adresu vnitřní datové paměti a při plnění se dekrementuje. dekrementuje
FEL ČVUT
Petr Skalický, katedra radioelektroniky
26
PŘÍKLAD NA ZÁSOBNÍK Příklad na funkci zásobníku při volání podprogramu a jeho využití k bezadresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h Nepoužitý p ý 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
27
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h Nepoužitý p ý 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
28
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR55 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h Nepoužitý p ý 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
29
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h Nepoužitý p ý 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
30
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h Nepoužitý p ý 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
31
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h Nepoužitý 18 030A DCFA DJNZ R4,NEXT 57h 0Bh → 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
32
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR55 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h Nepoužitý 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h → 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
33
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah Nepoužitý 15 0304 7CFF MOV R4,#0FFH 59h 99h → 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
34
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h → 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
35
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h → 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
36
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h → 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
37
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h 15 0304 7CFF MOV R4,#0FFH 59h 99h → 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
38
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h → 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
39
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
40
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h 18 030A DCFA DJNZ R4,NEXT 57h 0Bh 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená → 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
41
PŘÍKLAD NA ZÁSOBNÍK Použití zásobníku při volání podprogramu bylo ukázáno o dvě blány zpět. zpět Nyní si ukážeme jeho využívání k bez adresnému ukládání potřebných registrů nebo mezivýsledků. 01 0000 ORG 0 02 0000 7455 BACK: MOV A,#55H 03 0002 F590 MOV P1 P1,A A 04 0004 7C99 MOV R4,#99H 05 0006 7D67 MOV R5,#67H 06 0008 120300 LCALL DELAY 07 000B 74AA MOV A,#0AAH 08 000D F590 MOV P1,A 09 000F 120300 LCALL DELAY Zásobník 10 0012 80EC SJMP BACK 11 SP Adresa Obsah 12 0300 ORG 300H ; Zpoždění 5Bh Nepoužitý 13 0300 C004 DELAY: PUSH AR4 14 0302 C005 PUSH AR5 5Ah 67h 15 0304 7CFF MOV R4,#0FFH 59h 99h 16 0306 7DFF NEXT: MOV R5,#0FFH 17 0308 DDFE AGAIN: DJNZ R5,AGAIN 58h 00h → 18 030A DCFA DJNZ R4,NEXT 57h 12h 19 030C D005 POP AR5 20 030E D004 POP AR4 56h Obsazená 21 0310 22 RET FEL ČVUT
Petr Skalický, katedra radioelektroniky
42
ARCHITEKTURA KLASICKÉHO MIKROPOČÍTAČE Řadič řídí činnost spojenou s interpretací zpracovávané instrukce tj. generuje posloupnost signálů v závislosti na vykonávané instrukci, které zajistí realizaci elementárních operací potřebných k vykonání dané instrukce. Součástí této posloupnosti jsou operace potřebné k načtení další instrukce (generování adresy na adresovou sběrnici a řídícího signálu). Činnost ř dič můžeme řadiče ůž rozdělit dělit do d těchto tě ht fází: fá í Načtení instrukce (fetch) a její uložení do registru instrukcí Dekódování instrukce a inkrementace čítače instrukcí. Na základě dekódování je rozhodnuto o další fázi nebo opětovném čtení z programové paměti což může být součástí další fáze. Příprava operandů získává informace z dekodéru instrukcí, protože operandy prováděné operace mohou být uloženy v registrech, datové paměti nebo jako konstanty v paměti programové. Poslední fází je vlastní vykonání instrukce a uložení výsledku do registru, datové paměti nebo vstupně/výstupní brány. Řadič může být realizován: Sekvenčním obvodem s neměnnou logikou. Tuto variantu využívají obvykle procesory RISC ((Reduced Instruction Set)) tzn. signálové g a některé jjednočipové procesory. y Programový (mikroprogramovatelný) řadič u kterého se nejen může měnit logika, ale i efektivně realizovat obsluha velkého množství instrukcí za pomoci mikrokódu, se obvykle využívá u procesorů CISC (Complex Instruction Set) s větším počtem instrukcí, které nemají stejnou dobu k vykonání.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
43
ŘADIČ Obecně řadič je logický sekvenční obvod, který řídí činnost řízených prostředků i svoji vlastní (přechody mezi stavy). Automaticky přechází do následujících stavů, jestliže neobdrží od řízených prostředků žádost o čekání na vstupní podmínku nebo o provedení skoku. Řadiče, jejichž činnost je synchronizována hodinovým kmitočtem, můžeme rozdělit na obvodové a programovatelné. Obvodový řadič je obvykle tvořen čítačem, který inkrementuje svůj obsah (nový stav Si+1=Si +1), umožňuje žň j zápis á i nového éh stavu t Sk k realizaci li i skoku k k a může ůž setrvávat t á t v definovaném d fi é stavu t d splnědo l ě ní určité podmínky. Na výstupech čítače je dekodér stavu, který generuje jednotlivé řídicí signály. Činnost obvodového řadiče je pevná a jakákoliv změna vede na změnu obvodového zapojení. Mikroprogramovaný řadič v první fázi vznikl nahrazením dekodéru stavu pamětí PROM. Později byl upraven do konfigurace z obrázku, obrázku kde čítač byl nahrazen adresovým registrem, registrem který generuje adresy pro vybavení mikroinstrukcí uložených v paměti mikroprogramu. Mikroinstrukce obsahuje řídicí signály pro řízené prostředky, adresu následující mikroinstrukce a případně i další signály. Hlavní výhoda řešení spočívá v možnosti i velkých změn v činnosti řadiče bez zásahu do jeho obvodové struktury (bude-li vyhovovat počet vstupů a výstupů). stav prostředků
podmínky zastavení
zastavení
Hodiny
čítej
podmínky zastaveníí
zastavení
Hodiny
Řadič
FEL ČVUT
podmínky čítání
Řízené prostřed dky
čítej
vložení
tvorba řídících siignálů
podmínky čítání
podmínky skoku
Adresový registr
nová adresa
Paměť mikroprogra amu
Čítač
adresa
Řízené prostřředky
vložení
tvorba řídících signálů
podmínky skoku k k
adresa
Dekodér sttavu
adresa skoku
stav prostředků
Aplikace
Petr Skalický, katedra radioelektroniky
Řadič
Aplikace
44
OD OBVODOVÉHO ŘADIČE K MIKROPROGRAMOVÉMU Již v roce 1950 M.V.Wilkes ukázal, že mikroprogramování p g v p podstatě reprezentuje p j logickou g návrhovou techniku, která přináší řadu výhod oproti technice založené na Boolovských rovnicích a stavových diagramech. Mikroprogramování se od programování liší jen velmi málo (mají obdobný formát instrukcí i programových struktur). Rozdíl lze vidět hlavně v tom, že mikroprogramování podporuje návrh obvodového řešení (hardware) a s každou vykonanou instrukcí může generovat nový stav řídících signálů. signálů Programování (např. (např v jazyce symsym bolických adres) je spíše spojováno s manipulací s abstraktními daty a řídící signály generuje obvykle po vykonání několika instrukcí. Následující adresa
Vstupy Hodiny
ROM
R i t Registr
(LKO)
(paměť)
Výstupy
OPCODE
Adresový registr (paměť)
ROM (LKO)
Výstupy
Hodiny
Jednou z možných realizací LSO (logického sekvenčního obvodu) je automodifikace registru, k á představuje která ř d j LSO SO soustředěný ř dě ý do d dvou d obvodů. b dů Paměťovou ěť f k i realizuje funkci li j registr a paměť ROM (PROM) vytváří kombinační část obvodu (funkce přechodů a výstupů). Obrátíme-li pořadí obou obvodů, můžeme přistoupit i k významové změně v pohledu na tento obvod. U prvého obvodu představují vracející se vodiče následující stav LSO, u nového představují následující adresu (a registr dostává označení adresový registr). Část výstupů z ROM představuje genero generovanou posloupnost a část následující adresu. Následující adresa spolu s vstupem OPCODE, vytváří adresu, z které se bude číst nový stav generované sekvence (mikroinstrukce) odpovídající operačnímu kódu OPCODE (mikroprogramu). Současně s řídícími signály je generována nová adresa mikroprogramu. V příkladu na následujícím obrázku je zobrazena generovaná posloupnostt a k níí odpovídající d íd jí í obsah b h uložený l ž ý v paměti ěti ROM pro OPCODE=02h. OPCODE 02h Zpětné Z ět é vodiče dič jsou j propojeny na adresové vodiče A3÷A0 ROM a OPCODE na zbývající vodiče An÷A4. Výstupy ROM Q3÷Q0 jsou zpětné vodiče a Q16÷Q4 představují výstupy Y12÷Y1. FEL ČVUT
Petr Skalický, katedra radioelektroniky
45
OD OBVODOVÉHO ŘADIČE K MIKROPROGRAMOVÉMU Ob h paměti Obsah ě i ROM pak k může ůž mít í následující á l d jí í význam ý
Operačni kód 02H CLK
Operační kód 00 Operační kód 01 Operační kód 02
Y1 Y2 Y3
Operační kód 20
Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 μI Adresa 20h 21h 22h 23h 24h
FEL ČVUT
0
1
2
Obsah ROM 42E1h 42A2h 40A3h 42A4h C4A5h
3
4
5 Adresa 25h 26h 27h 28h
6
7
8
Obsah ROM 8F26h 1F37h 5B28h 4329h
Adresa ROM 00h až 0Fh 10h až 1Fh 20h až 2Fh atd. 200h až 20Fh
Význam obsahu paměti ROM Mikroprogram pro instrukci DEC Mikroprogram pro instrukci ADD Mikroprogram pro instrukci SUB atd. Mikroprogram pro instrukci MOV
Z tabulky vyplývá, že každému OPCODE může být přiřazen mikroprogram až o 16 16-ti ti mikroinstrukcích. Běžnému uživateli procesoru není sekvence přístupná, ale je vyvolána pomocí operačního kódu (OPCODE) přečteného z programové paměti (operační paměti) procesoru (makroprogram). Z b Zobrazená á konfigurace k fi umožňuje žň j pro dané d é instrukce i t k vytvořit odpovídající mikroprogramy (řídící signály). Každý mikroprogram bude muset obsahovat i sekvenci pro načtení dalšího operačního kódu ((fetch), ), což u p počítačů s velkým ý p počtem instrukcí zbyy tečně zvětšuje velikost paměti ROM a degraduje řadič. Efektivnější cestou by byla realizace skoku do mikropodprogramu (fetch), z kterého se vrátíme do místa za mikroinstrukci, která jej vyvolala. Struktura z předcházejícího obrázku nám však operaci zavolání podprogramu neumožňuje. Modifikujme proto strukturu podle následujícího obrázku.
Petr Skalický, katedra radioelektroniky
46
OD OBVODOVÉHO ŘADIČE K MIKROPROGRAMOVÉMU Struktura z obrázku má tyto vlastnosti: Registr mikroprogramu Uchovává adresu následující mikroinstrukce, Adresový registr která bude vykonána po návratu z volaného mikropodprogramu. +1 Adresový Ad ý multiplexer lti l umožňuje žň j naplnění l ě í Adresový multiplexer adresového registru obsahem registru mikroVyrovnávací registr programu (návrat z podprogramu, SEL=01), Programový čítač počáteční adresou mikroprogramu (nový 00 M p kód, SEL=11), ) adresou následující j operační U 01 X ROM mikroinstrukce (sekvenční zpracování mikro10 11 programu, SEL=00) a adresou skoku (skok Řízené OPCODE SEL výstupy na mikroinstrukci nebo volání podprogramu, SEL=10).Adresový registr byl přemístěn do větve vytvářející následující adresu a byl tak vytvořen programový čítač. čítač Přesunem bylo navíc odstraněno zpoždění operačního kódu o jednu periodu hodin. Vyrovnávací registr synchronizuje výstupy z ROM se synchronizačním hodinovým signálem. Navržená jednotka umožňuje sekvenční čtení mikroinstrukcí, volání podprogramu (jednoho) a návrat z něho a skok na libovolnou adresu v paměti ROM. Jednotka nemá implementovánu instrukci podmíněného větvení, tj. schopnost po sekvenci vykonaných mikroinstrukcí provést rozvětvení na základě stavu vnější nebo vnitřní podmínky. Změnou ovládání multiplexeru lze vnější podmínku ignorovat nebo v závislosti na její hodnotě provést následující instrukci nebo skok na definovanou adresu. Pro funkci řadiče by bylo potřeba přidat stavové příznaky jako vstupní signály. Pro funkci mikroprogramovatelného řadiče pro rychlé řízení např. např složitých sběrnic byla tato struktura modifikována o podmíněné větvení a čítač. Registr mikroprogramu
FEL ČVUT
Petr Skalický, katedra radioelektroniky
47
JEDNOOBVODOVÉ MIKROPROCESORY A ŘADIČE Integrací procesoru s podpůrnými obvody a oscilátorem spolu s pamětí programu, programu dat, dat vstupů, vstupů výstupů a přerušovacího systému na jeden čip vznikl (1976) první jednočipový mikroprocesor z řady Intel MSC-48 (8048). Přestože 8048 byl v roce 1977 nahrazen dodnes populárním Intel 8051, jeho použití v PC klávesnicích, dálkových ovladačích a hračkách přispělo k jeho nízkým nákladům a široké dostupnosti. Vývoj jednočipových procesorů se do roku 2000 prakticky neměnil, ě il standardní d d í jádra jád procesorů ů inovovaná i á pouze technologicky h l i k byla b l doplňována d lň á určitým či ý počtem V/V vývodů, interních periferií, typem a velikostí vnitřních pamětí. Výjimkou byl integrovaný koprocesor, změněné časování μP nebo 10-bitový A/D převodník. Proto řada dosud komerčně úspěšných procesorů má základ v procesorech z druhé poloviny sedmdesátých let minulého století. Jsou to například procesory odvozené z procesoru I8031/51 firmy Intel a procesoru MC6801 firmy Motorola (jedná se o řady MC6805, 68705 a 68HC11xx). Protože jsou „staré“ typy procesorů neustále doplňovány novými obvodovými periferiemi, tak stárnou velmi pomalu. Koncepčně modernější jednočipové procesory jako je SAB 80C166 firmy Infineon (Siemens), riskové procesory a řadiče ATmega a ATtiny od firmy Atmel, procesory PICxxxx PIC od d firmy fi Mi Microchip hi se na trhu t h prosazují jí proti ti tradičním t dič í starším t ší procesorům pouze výkonností, cenou a dobrým servisem výrobců, kteří poskytují uživatelům zdarma vývojové prostředky a knihovny zdarma. S nástupem největších výrobců signálových procesorů (Analog Devices a Texas Instruments), kteří inovovaly procesory z řady y jje 12, 16 a 24 bitovými ý A/D převodníky y se vývoj ý j v oblasti jjednočipových ý pro8051 a doplnily cesorů výrazně změnil. Řada dalších firem (Motorola, Philips, Atmel, Cygnal, Dallas, Infineon, atd.) začala razantně inovovat svoje produkty. Rozvoj se u klasických mikroprocesorů soustředil na velikost interních pamětí a změny v oblasti časování až k výkonu 100MIPS. Zároveň dochází k výraznému rozvoji RISC mikroprocesorů např. 32-bitových ARM7, ARM9, ARM11 - Advanced RISC Machine nebo aplikačně orientovaných procesorů a multiprocesorů např. OMAP35x, v kterém je integrováno jádro procesoru Cortex-A8 a signálový procesor TI C64x (DSP). FEL ČVUT
Petr Skalický, katedra radioelektroniky
48
JEDNOOBVODOVÉ MIKROPROCESORY A ŘADIČE Historicky se ustálilo rozdělení jednočipových procesorů na jednoobvodové mikroprocesory, u kterých je možné vstupně/výstupní vývody využívat k připojení periferií nebo k vytvoření společné sběrnice pro připojení vnějších pamětí, V/V bran, převodníků, displejů, atd. Periferie připojené k vnější společné sběrnici mohou být mapovány v programovém, datovém nebo vstupně/výstupním prostoru a ovládány příslušnou obvykle jedinou instrukcí. instrukcí U jednoobvodových řadičů nelze vytvořit společnou sběrnici ovládanou jedinou instrukcí. Neznamená to, že řadič nemůžeme rozšířit o periferie nebo na jeho vývodech vytvořit společnou sběrnici, které budou obsluhovány programem prostřednictvím několika i instrukcí k í pro práci á i s I/O vývody ý d mikrořadiče. ik ř dič MIKROPOČÍTAČ AH I/O
adresová sběrnice
JEDNOOBVODOVÝ ŘADIČ AH PAMĚŤ
μP
Reg. AD
AL
I/O
μP
I/O
Data multiplexovaná datová a adresová
FEL ČVUT
Petr Skalický, katedra radioelektroniky
49
ARCHITEKTURA JÁDRA PROCESORŮ 8051
FEL ČVUT
XTAL1
XTAL2
Generátor hodin PSW střadač A (ACC) B registry přerušovacího systému registry UART registry i t čít čítačů čů DPH DPL SP
MUX Řízení časování
ALU
EA RST ALE PSEN
Vnitřní programováá paměť (dnes Flash)
adresování int. a ext. RAM
Budiče
RAM 128x8 bitů Řízení programového čítače
Banka registrů 3 Banka registrů 2 Banka registrů 1 Banka registrů 0
Vnitřní prog gramová sběrnice
Mikroprocesor 8051 je osmibiosmibi tový jednočipový mikroprocesor se smíšenou harwardskou a Von Neumanovskou architekturou, u které je oddělena programová a datová paměť, ale formát instrukcí a dat je stejný a přenáší se po stejné sběrnici. Procesor, jehož vnitřní struktura je blokově zobrazena, je schopen samo samostatné činnosti po připojení piezokrystalického rezonátoru („krystalu“) na vývody XTAL1 a XTAL2 a napájení 5V. Procesorová á jednotka j d tk je j tvořena t ř ALU ALU, která je doplněna násobičkou, děličkou a booleovskou aritmetickou jednotkou. Pracovní registry g y R0 až R7,, střadač,, stavový registr a další jsou součástí interní přímo adresovatelné paměti RAM (registry jsou přístupné přes přímou adresu nebo implicitní instrukci). instrukci) U procesorů 8051 je možné externě rozšířit paměťový prostor.
PCH PCL Vnitřní datová sběrnice
V/V brána 3 řízení
V/V brána 0 data/adr data/adr.
V/V brána 2 vněj adr vněj.adr.
V/V brána 0 data/adr data/adr.
P3
P1
P2
P0
Petr Skalický, katedra radioelektroniky
Instrukční registr Řadič
Řídící signály
50
ARCHITEKTURA JÁDRA PROCESORŮ ARCHITEKTURA JÁDRA PROCESORŮ AT ATmega mega
Nepřímé adresování
Přímé adresování
Vp polovině devadesátých ý let firma Atmel uvádí na trh řadu řadičů a mikroprocesorů p s architekturou RISC s označením AVR (Enhanced RISC architecture). Procesory z této řady jsou vybaveny programovou pamětí Flash, kterou jde programovat přímo v mikropočítačovém systému s přenosem programovacích povelů a vlastního programu sériovým rozhraním SPI nebo dnes i JTAG. Procesory mají harwardskou architekturu s dvoufázovým překrýváním instrukcí (pipeline) a roz8 bi á datová 8-bitová d á sběrnice bě i díl ý formátem dílným f át d t a instrukdat i t k Řídicí cí. Instrukce jsou 16-bitové a registry datová sběrnice je pouze 8-bitoProgramový Stavový Přerušovací vá. Procesory jsou vybaven náProgramová čítač registr systém sobičou 8x8bitů se znaménkem, paměť Flash bez znaménka nebo desetinSPI 32x8 ných. Disponují okolo 130 in16 univerzálních strukcí většinou vykonaných za registrů Watchdog Instrukční jeden strojový cyklus. ALU registr spolupracuje se zápisníkovou UART pamětí obsahující 32x8bitů ALU univerzálních registrů. PosledDekodér Analogový instrukcí komparátor ních šest registrů je konfigurováno jako tři 16-bitové registry 8bit časovač s označením X, Y, Z. Každý +I/O Modul_1 Řídící Data zdroj přerušení má svoji adresu signály RAM 16bit časovač obslužného programu, což při+I/O Modul_2 spívá k rychlosti odezvy přerušení. Kapacity pamětí se Časovač pohybují p y j od 4 do 128kB a řada z p procesorů jje vývodově ý EEPROM +I/O I/O Modul_n M d l kompatibilní s mikroprocesory a řadiči s intelskou architekturou (8051). Tím se firma snaží usnadnit přechod od I/O Vývody svých starších řadičů a μP. FEL ČVUT Petr Skalický, katedra radioelektroniky 51
SIGNÁLOVÉ PROCESORY První signálový g ýp procesor I2920, který ý byl y p původně určen p pouze p pro číslicové zpracování p signálu, g vyvinula v roce 1979 firma Intel. Procesor byl vybaven pamětmi s malou kapacitou, integrovaným A/D a D/A převodní-kem. Hlavní nevýhodou byla nemožnost připojení vnější paměti a nepřítomnost násobičky. Procesor se neujal (Intel nepokračuje ve vývoji), ale ukázal dalším firmám možnou oblast vývoje. Nyní jsou signálové procesory využívány jak pro číslicové zpracování signálu a obrazu tak i pro obecné logické řízení a regulaci. zu, regulaci Důvodem je nízká cena úspěšných typů a mnohokrát větší výpočetní výkon, než mají i moderní a drahé univerzální procesory. Architektura signálových procesorů je primárně podřízena co nejrychlejšímu zpracování základních operací používaných v číslicovém zpracování signálu jako je M −1
K Konvoluce l Diskrétní transformace
yn = ∑ hi .xn −i i =0 M −1
X k = ∑ xi .W ik i =0
M
Fil Filtrace
yn = ∑ ai .xn −i − ∑ bi . yn −i i =0
Korelace
L
1 yn = N
i =1
N −1
∑ x .x i =0
i
n+i
Hlavní důraz je proto kladen na operaci násobení, násobení sčítání (akumulace) a posunu. posunu Odtud architektura i instrukční soubor je podřízen nejrychlejší realizaci těchto operací. Až do roku 1992 patřily signálové procesory mezi nejrychlejší procesory na světě a postupně začaly vytlačovat univerzální procesory z oblastí, kde je třeba vysoký výpočetní výkon (regulace, řadiče disků a tiskáren, atd.). V současné době patří opět mezi nejvýkonnější procesory ačkoliv pracují na kmitočtu 3x nižším než procesory PC. Obecně mají signálové procesory modifikovanou harvardskou struktury s odděleným programovým a datovým prostorem, který umožňuje současnou manipulaci se dvěma nebo více operandy. Modifikovaná struktura souvisí s potřebou realizace adaptivních algoritmů, při kterých je potřeba přenos mezi programovou a datovou pamětí. Procesory disponují redukovanou instrukční množinou a sdruženými instrukcemi přizpůsobenými rychlé realizaci náso násobení a akumulace. Disponují větším počtem paralelně pracujících jednotek MAC (násobička +sčítačka), ALU, posuvná jednotka, generátory adres a jednotka v oblasti PC. Výpočetní výkon se nejprve zvyšoval princip „sdílení času“ (dnes 2 až 7 (skrytě 12)). FEL ČVUT zřetězením instrukcí „pipeline“ Petr Skalický, katedra radioelektroniky 52
ARCHITEKTURA BĚŽNÉHO SIGNÁLOVÉHO PROCESORU JÁDRO PROCESORU INSTRUKČNÍ REGISTR GENER. ADRESY DAG1
GENER. ADRESY DAG2
PAMĚŤ PROGRAMU
DATOVÁ PAMĚŤ
RAM nebo ROM př. FLASH
SRAM
PROGRAMOVÝ ŘADIČ
Obvodové příznaky
PM ADDRESS BUS
Vstupní reg.
Vstupní reg.
ALU
MAC
SHIFTER
Výstupní reg.
FEL ČVUT
MUX
16
16
Výstupní reg.
Vnitřní architektura procesorů ADSP 21xx
14
24
ČASOVAČ
Vstupní reg.
Výstupní reg.
MUX
14
VÝMĚNA PMD/DMD DM DATA BUS
3
14
DM ADDRESS BUS PM DATA BUS
GENET. BOOT ADRESY
Kompresní obvody Vysílací reg. Přijímací reg. SÉRIOVÁ BRÁNA 0 5
Petr Skalický, katedra radioelektroniky
Vysílací reg. Přijímací reg. SÉRIOVÁ BRÁNA 1 5
ŘÍZENÍ HOST. BRÁNY
11
DATA HOST. BRÁNY
16
53
ARCHITEKTURA BĚŽNÉHO SIGNÁLOVÉHO PROCESORU PC, IPTR, RC, BRC, RSA. REA
Systémové řízení
ARAU0, ARAU1 AR0-AR7,ARP,DP,SP
PA Bus P Bus CA Bus CB Bus DA Bus D Bus EA Bus E Bus Exponent enkoder
MUX
B
Registr T 17
MUX
A
MUX
Kontrola Zn
16 40 40 16
Akumulátor A
Akumulátor B
SXM
Kontrola Zn 40
XM
YM
MUX
MUX
Kontrola Zn
Kontrola Zn
Y
X
40
MUX SXM
0
ALU U
Porovnání
FRCT
Y
FEL ČVUT
MUX
Průchod nebo posun 1bit vlevo
Sčítačka
40
X
Detekce nuly
MUX
MSW/LSW
TRN OVM
TC
OVA/OVB
Zaokrouhlení
40 16 16
Posouvací jednotka
MUX
40
Násobička 17x17 bitů
40
16
Saturace
ZA/ZB
Vnitřní architektura procesorů TMS320C54xx
Petr Skalický, katedra radioelektroniky
54
ZVYŠOVÁNÍ VÝPOČETNÍHO VÝKONU PROCESORŮ Zvyšování y výpočetního ýp výkonu ý u univerzálních, signálových g ý a částečně i jjednočipových p ý p procesorů probíhá v oblasti technologie (maximalizace hodinového kmitočtu), ale nyní hlavně v oblasti architektury procesoru. Vývoj překonal odhady maximálních kmitočtů pro jednotlivé technologie (bipolární Si - 800MHz, CMOS – 3,3GHz), ale v poslední době dochází k výraznému zpomalování zvětšování vzorkovacího kmitočtu na dvojnásobek za každých 18 měsíců. Architektura procesorů se soustředí na paralelizaci procesů a zpracování a díky tomu se výkonnost procesorů stále zvětzvět šuje. Paralelizace operací se ubírá zvětšováním počtu paralelně pracujících jednotek superskalární architektury, u které paralelně prováděné instrukce zajišťuje obvodově řadič procesoru (např. PC). Druhou cestou paralelizace instrukcí, která se především uplatňuje u signálových procesorů, je architektura VLIV, kde současně zpracovávané instrukce zajišťuje překladač a ukládá je do dlouhého instrukčního slova již ve fázi překladu programu. Další variantou jsou paralelně řazené segmentované aritmetické jednotky tzv. superscalar super-pipelining (Alpha, P4). Zatím poslední variantou je proces paralelizace založený na zvětšování počtu jader (multicore). Uplatňované postupy paralelizace, které mohou být uplatňovány na zpracovávaná data nebo instrukce si popíšeme samostatně. SIMD (Single Instruction stream, Multiple Data stream) je podpůrný prostředek využívaný od 90 let. m.s. ke zvýšení výpo-četního výkonu procesorů MMX (PC) a u signálových procesorů. procesorů SIMD je systém zprazpra covávající několik datových toků jedním programem. Jedná se o koncepci, při které je jednou instrukcí realizována stejná operace na skupině nezávislých dat sloučených do jednoho delšího datového slova. Dnes jej využívají všechny typy současných signálových i PC procesorů. FEL ČVUT
16-bitů data1
Petr Skalický, katedra radioelektroniky
16-bitů data2
16-bitů data3
16-bitů data4
ALU
16-bitů ů výsled1
16-bitů ů výsled2
55
ZVYŠOVÁNÍ VÝPOČETNÍHO VÝKONU PROCESORŮ Princip p segmentace g instrukce do jjednotlivých ý p překrývaý St j é cykly Strojové kl 1 2 3 4 5 6 7 jících se fází byl přirozeným vyústěním snahy o zvyšování procesoru výpočetního výkonu pomocí částečného překrývání instru1.instrukce F D O E kcí zahájeného již v 70.letech m.s. na procesoru 8051. Seg2.instrukce F D O E mentovaná aritmetická jednotka nebo celý procesor má instrukci rozdělenu do dvou a nebo více částí. částí Výsledky dada 3i t k 3.instrukce F D O E né fáze jsou uloženy do vyrovnávací paměti, z které si je v F D O E 4.instrukce dalším strojovém cyklu přebírá ke zpracování další segF D O E 5.instrukce ment. Současně s tím může být zahájeno zpracování další současně Fáze instrukcí: instrukce. Konfigurace se označuje „Princip sdílení času“ zpracovávané F - čtení operačního kódu instrukce nebo pipeline. Je-li fází více jak 4 hovoří se „superpipeline”, fáze čtyř instrukcí D - dekódování op. kódu instrukce který výrazně komplikuje obsluhu operační paměti a větO - čtení operandů E - Vykonání instrukce a uložení výsledků vení programu. Využí-vá se u univerzálních a signálových procesorů, u jednočipových procesorů se nyní používá maximálně 2 fázový pipeline. MIMD (Multiple Instruction stream, MultiVelmi dlouhé instrukční slovo ple Data stream) je obecný typ paralelního sysOP kód1 OP kód2 OP kód3 OP kódN tému zpracovávajícího několik datových toků samostatnými jednotkami, z nichž každá realizuje samostatný program. program Pod princip MIMD Funkční Funkční Funkční Funkční můžeme zařadit multiprocesorové systémy jednotka jednotka jednotka jednotka 1 2 3 N (samostatné, integrované do čipu (pole procesorů TMS320C8x, AD14060, atd.)). Nyní se ve větší míře rozvíjí cesta zvyšování počtu Registry g y funkčních jednotek j aritmetických jednotek v jednom pouzdře (WLIV a její modifikace - čtení několika instrukDatová paměť cí najednou pro každou jednotku). FEL ČVUT
Petr Skalický, katedra radioelektroniky
56
SIGNÁLOVÉ PROCESORY VLIW Paralelizace u běžných signálových procesorů spočívá v tom, že sdružená instrukce a následně řadič paralelní chod MAC, ALU, Shifter, generátorů adres a aritmetické jednotky v oblasti čítače instrukcí. Signálové procesory, které čtou více instrukcí najednou, vyvinula a jako první firma Texas Instruments (1997) pod označe označením VLIW (Very Large Instruction Word). U procesorů tohoto typu se paralelně načte 256 nebo 128 bitové instrukční slovo, které se skládá z několika instrukcí pro jednotlivé paralelně pracující aritmetické jednotky. U procesoru TMS320C6xxx TMS320C6 se jedná j d á o 8 32-bitových 32 bit ý h instrukcí. Podobné je to i u konkurenčních procesorů (Agere Systém, Motorola nebo Analog Devices). Počet funkčních jednotek se mění výrobce od výrobce s tím, že ý vlastnosti následovníci TI se snaží inovovat nevýhodné původní struktury VLIW. V TMS320C64x jsou integrovány dvě násobičky a šest dost podobných aritmetických jednotek. Dvě jsou předurčeny k adresování a zbývající jsou k volně dispozici. Instrukce pro jednotlivé funkční jednotky mají v sobě uchovánu informaci o paralelním nebo sériovém vykonání s dalšími instrukcemi. Při programování se snažíme, aby v každém strojovém cyklu pracovalo co nejvíce jednotek - problematika paralelního programování. U procesoru C6x komplikuje skutečnost, že instrukce se sice vykonají za jeden strojový cyklus, ale jejich výsledek je k dispozici až po 1, 4 nebo 5 strojových cyklech. FEL ČVUT
Petr Skalický, katedra radioelektroniky
57
VLIW SIGNÁLOVÉ MIKROPROCESORY S NĚKOLIKA JÁDRY V současné době nejvýkonějším signálovým procesorem je procesor TMS 320C6474, který v sobě obsahuje tři jádra procesoru VLIW z řady 64xx a disponuje při hodinovém kmitočtu 1 2GHz výkonem až 28800 MIPS. 1,2GHz MIPS Procesor je vybaven rozhraním I2C pro kontrolu periferií nebo komunikaci s hostujícím procesorem, dvěma buffrovanými sériovými kanály M BSP0 a 1 s přenosem McBSP0 ř ažž 100Mb/s, 100Mb/ 6-ti 64 bitovými nebo 12-ti 32 bitovými čítači, 16-ti V/V branami GPIO s programovatelným přerušením, Ethernet kontrolérem EMAC,, 16/32 bitovým rozhraním pro DDR2, koprocesorem Vitherbiho dekodéru VCP2 a turbo kodéru TCP2, obvodovým semaforem, rychlými sériovými branami Serial RapidIO pro blízké propojepropoje ní procesorů. Oproti 64x byly násobičky M1 a M2 modifikovány tak, že jednom strojovém cyklu vypočtou jeden součin 32x32bitů, dva součiny 16x32, nebo 16x16 bitů, čtyři součiny 16x16 nebo 8x8 se sčítáním/odčítáním včetně jednoho komplexního násobení. FEL ČVUT
Petr Skalický, katedra radioelektroniky
58
PŘERUŠOVACÍ SYSTÉM Pro obsluhu vnitřních i vnějších j p periferií jje mikroprocesor p vybaven y p přerušovacím systémem y (Interrupt system), který podstatně zjednodušuje a zefektivňuje styk s periferiemi. Přerušení je takový „zvonek“, který procesoru oznámí, že je potřeba obsloužit určitou periferii. Kdyby procesor neměl přerušovací systémem, musela by v hlavním programu část kódu být věnována testování žádostí periferií. Testování (Polling) by nejen snižoval „výpočetní výkon procesoru“ pro zpracování programu, programu ale navíc by se obtížně zaručovalo zpracování v potřebných interinter valech. Žádost periferie o přerušení přeruší ve vhodném okamžiku probíhající program a procesor přejde ke zpracování obslužného programu, který je vyvolán obvodově obvykle pomocí instrukce CALL adresa_přerušení. Vyvolání přerušení je doprovázeno touto posloupností: Procesor dokončí právě rozpracovanou instrukci nebo instrukce („pipeline („pipeline“)) Uloží obsah čítače instrukcí do zásobníkové paměti (adresu následující instrukce po poslední vykonané) Nastaví obvodově čítač instrukcí na pevně určenou adresu (adresa_přerušení). Dojde obvykle k zablokování dalších přerušení Procesor zahájí svoji činnost od nastavené adresy, která je určuje počátek obslužného programu periferie. Uložení původního obsahu čítače instrukcí je nutné pro návrat na správné místo hlavního programu (přepisem čítače instrukcí se ztrácí informace o místě, kde byl program přerušen). Jsou-li v obslužném programu využívány některé registry, využívané v hlavním programu, potom je potřeba jejich obsah na začátku obsluhy uložit do zásobníkové paměti a na konci obsluhy opět obnovit včetně stavu příznaků. Uložení registrů do zásobníku může být zjednodušeno – existencí dvou bank registrů (Z80, ADSP21xx, atd.) nebo jednoúrovňovým FIFO základních registrů (TMS320C5x). Obslužná rutina je ukončena instrukcí RETI nebo RETE (s povolením přerušení) a RETI (se zakázaným přerušením). Periferie spojená s přerušovacím systémem je vybavena bitem, který je při žádosti (interrupt flag) nastaven na log.1. Každá žádost má bit, který přerušení povoluje nebo zakazuje (interrupt mask). Přerušovací systém je vybaven bitem, který povoluje všechna povolená přerušení nebo zakazuje všechna přerušení. (Global mask). FEL ČVUT
Petr Skalický, katedra radioelektroniky
59
STANDARDNÍ PŘERUŠOVACÍ SYSTÉM Standardní p přerušovací systém y jje zobrazen na p příkladu p přerušovacího systému y signálového g p procesoru TMS320C542. Jednotlivé žádosti o přerušení mají, na základě zkušeností z typických aplikací, od výrobce přiřazenu prioritu. Objeví-li se více méně ve stejnou dobu dvě žádosti (jsou vyhodnoceny ve stejnou dobu a obě individuálně i globálně povoleny), pak do zpracování jde nejprve ta z vyšší prioritou. Po dokončení obsluhy je opět provedeno vyhodnocení a přijato přerušení s nejvyšší prioritou. prioritou Po návratu z obsluhy přerušení může být vykonána jedna instrukce hlavního propro gramu nebo následovat přímo obsluha dalšího přerušení. U některých Registr IFR Registr IMR Priorita NMI procesorů je možné realizovat 0 INT0 INTM přerušení v přerušení (nested interINT0 rupt). t) V přerušovací ř š í rutině ti ě je j nastat INT0 1 INT1 vena nová hodnota IMR a povoleno INT1 INT1 2 globální přerušení INTM. Na konci INT2 rutiny je třeba zakázat globální INT2 Žádost o 3 INT2 přerušení přerušení INTM ((log.0) p g ) a nastavit TINT TINT původní IMR. Každý procesor není TINT 4 RINT0 vybaven vstupem nemaskovaného RINT0 Vektor 5 RINT0 přerušení (NMI), který se využívá přerušení XINT0 k řešení havarijních situací (výpadek XINT0 XINT0 6 napájení se zálohováním, zálohováním atd.). atd ) Jsou RINT11 RINT1 procesory (8051),u kterých lze z jaké7 RINT1 Registr IPTR XINT1 hokoliv přerušení vytvořit přerušení, XINT2 8 XINT1 které se může chovat jako NMI, i INT3 když bude ve skutečnosti maskovaINT3 9 INT3 telné. Každý procesor též není vyHPINT HPINT baven možností přeadresováním HPINT 10 vektorů přerušení reg. IPTR.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
60
ZÁKLADNÍ PŘERUŠOVACÍ SYSTÉM PROCESORŮ 8051 Up procesoru 8051 výrobce ý p pevně p přiřadil p priority y jjednotlivým ý p přerušením v každé ze dvou ((dnes i čtyř) úrovní priority. Nejvyšší prioritu má vnější přerušení (IE0), následované časovačem 0 (TF0), vnějším přerušením (IE1), časovačem 1 (TF1) a sériovým kanálem (RI a TI). Za základními pěti zdroji přerušení následují další, které mají sestupnou prioritu a jejich pořadí není standardizováno. Procesor je vybaven 4-mi bankami registrů R0÷R7, které lze využívat pro přeruRegistr TCON Priority š í v jednotlivých šení j d tli ý h úrovú v úrovni Registr IE Registr IE Registr IP IT0 ních bez nutnosti jejich EX0 EA PX0 1 ukládání do zásobníku. INT0 Do zásobníku musí být 1 2 Žádost uloženy příznaky (PSW) přerušení s IE0 TR0 PT0 3 TF0 vyšší úrovní a střadač (ACC) (případpriority 4 IT1 ně registr B, DPL, DPH). EX1 PX1 5 Je-li vyvoláno přerušení INT1 Vektor v dané úrovni, nemůže přerušení 1 6 být vyvoláno přerušení z IE1 PT1 TR1 16 dané úrovně byť s vyšší TF1 prioritou. Přerušení z 1 Registr SCON ES PS vyšší úrovně priority TI může přerušit přeruše1 2 Žádost RI ní s jakoukoliv prioritou přerušení s 3 nižší úrovní z nižší úrovně priority. priority 4 Úroveň priority se nasta0 až 11 dalších zdrojů přerušení vuje v registru IP nebo 5 Vektor např. T2, záchytný IP0 a IP1. přerušení 6 a komparační systém, PCA, atd. 16
FEL ČVUT
Petr Skalický, katedra radioelektroniky
61
ZATÍŽENÍ PROCESORU PŘERUŠOVACÍM SYSTÉMEM Přerušovací rutina by měla trvat co nejkratší dobu, zvláště je je-li li často vyvolávána. Výrazné snížení výpočetního výkonu pro hlavní program může a nemusí být na závadu. Problémy nastávají při dvou a více přerušeních viz. příklad pro procesor z řady 8051. Při dvou častých přerušeních může nastat situace viz. chyba, při které musíme zkrátit přerušovací rutiny nebo použít procesor s vyšším výpočetním výkonem. Žádné žádosti o přerušení
100% výpočetního výkonu pro hlavní program
Žádosti o přerušení
73% výpočetního výkonu pro hlavní program
t
t Žádosti o přerušení
27% výpočetního výkonu pro hlavní program
t Žádosti o přerušení
1 instrukce hlavního programu po každém přerušení
t V šší ú Vyšší úroveň ň
Ž Žádosti o přerušení ř š
vyšší šší priorita i it
nižší ižší priorita i it
Nižší úroveň ú ň
vyšší šší priorita i it
nižší ižší priorita i it
Chyba
Vyšší úroveň
Žádosti o přerušení
priorita = 4
Nižší úroveň
priorita = 0
priorita = 2
t
priorita = 3
t Banka registrů
FEL ČVUT
0
2
0
2 0 1 0 2 1 0 10 2 0 1
0 2 0 1
Petr Skalický, katedra radioelektroniky
0 2 0 1 10 2 010 1 0 2 0 1
02
62
ZVĚTŠENÍ POČTU VNĚJŠÍCH PŘERUŠENÍ Existují aplikace, aplikace u kterých potřebujeme sledovat velký počet vnějších žádostí o přerušení. přerušení Je relativně málo procesorů s větším počtem vstupů (typicky 2 až 4) vnějších žádostí o přerušení. Další vstupy vnějších přerušení můžeme vytvořit u procesorů se záchytným nebo PCA systémem, který v aplikaci nevyužíváme. Další vnější přerušení již můžeme získat pouze obvodovým řešením s využitím jednoho vstupu vnějšího přerušení aktivního v log.0 a několika V/V vývody viz. schéma. R1
U3A
5k6
2
D
Q
CLK Q
VCC
5
6
1 2 13
U1A 12
10 0
74HCT 74
11
D
Q
CLK Q
9
8
13
CL
INT_D2
PR
U3B 12
U2
74HCT 11
1
CL
INT_D1
3
PR
4
74HCT 74
74HCT 74
12 13 14 15 16 17 18 19 2 3 6 7 8 9 11
P1.0/AIN0 P1.1/AIN1 P1.2 P1.3 P1 4 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.7
VCC
XTAL1 XTAL2
RST GND
VCC 20
5 4
1 10
AT 89C2051
D
Q
CLK Q
5
6
1
CL
INT_D3
3
PR
4
U4A 2
FEL ČVUT
Petr Skalický, katedra radioelektroniky
63
ADRESY PŘERUŠOVACÍHO SYSTÉMU 8051 K využití přerušovacího systému musíme ještě znát, jakým způsobem je realizováno volání obsluhy přerušení. U procesorů 8051 má většina zdrojů přerušení pevně definovanou adresu, která je volána jako podprogram, po přijetí žádosti o přerušení, dokončení rozpracované instrukce a uložení návratové adresy (adresy instrukce za právě dokončenou instrukcí) do zásobníku. Zpracování obsluhy přerušení je zahájeno zápisem odpovídající adresy do čítače i t k í Adresy instrukcí. Ad přerušení ř š í jsou j od d sebe b vzdáleny dál pouze o 8 adresových d ý h míst í t a proto t na nich i h obvykle bývá uložena pouze instrukce nepodmíněného skoku na vlastní obslužný podprogram zakončený obvykle instrukcí RETI (RETurn from Interrupt). Obsluha přerušení nesmí být zakončena instrukcí RET. Procesor Příznak IE0 TF0 IE1 TF1 RI+TI TF2+EXF2 CF,CCFn KBDIT TWIIT SPIIT RI1+TI1
Klasická 8051 Atmel AT89C51RE2 DS89C430 ADuC834 Adresa Zdroj přerušení Zdroj přerušení Priorita Zdroj přerušení Priorita Zdroj přerušení Priorita obsluhy Vnější přerušení 0 Vnější přerušení 0 1 Vnější přerušení 0 2 Vnější přerušení 0 3 0003h Čítač/časovač 0 Čítač/časovač 0 2 Čítač/časovač 0 3 Čítač/časovač 0 5 000Bh Vnější přerušení 1 Vnější přerušení 1 3 Vnější přerušení 1 4 Vnější přerušení 1 6 0013h Čítač/časovač 1 Čítač/časovač 1 4 Čítač/časovač 1 5 Čítač/časovač 1 7 001Bh Sériový kanál Sériový kanál 5 Sériový kanál 6 Sériový kanál 9 0023h Čítač/časovač 2 6 Čítač/časovač 2 7 Čítač/časovač 2 10 002Bh EPFI RDYn Systém PCA 7 Pokles napájení 1 A/D převodník 4 0033h ES1 ISPI/I2CI Klávesnice 8 Sériový kanál 1 8 SPI 8 003Bh EX2 PSMI TWI 9 Vnější přerušení 2 9 Hlídač napájení 1 0043h EX3 SPI 10 V ější přerušení Vnější ř š í3 10 004Bh EX4 TII Sériový kanál 1 11 Vnější přerušení 4 11 Časovač TIME 11 0053h EX5 WDS Vnější přerušení 5 12 Watchdog 2 005Bh EWDI Watchdog 13 0063h Nulování procesoru RESET = Nemaskované přerušení s absolutní prioritou 0000h Přerušení, jejichž příznaky se nulují před vstupem do obsluhy přerušení Přerušení, jejichž příznak se musí nulovat v obsluze přerušení
FEL ČVUT
Petr Skalický, katedra radioelektroniky
64
PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU 8051 Typický začátek programu v jazyce symbolických adres RESET:
JMP START
;Skok na začátek programu
O_INT0: JMP P_INT0 ORG 000Bh O_CAS0: JMP P_CAS0 ORG 0013h O_INT1: JMP P_INT1 ORG 001Bh O CAS1: RETI O_CAS1: ORG 0023h O_SER : JMP P_SER
;Skok na obsluhu přerušení_0 ;Nastavení adresy překladu na hodnotu 000Bh ;Skok na obsluhu časovače_0 ;Nastavení adresy překladu na hodnotu 0013h ;Skok na obsluhu vnějšího přerušení_1 ;Nastav. adresy překladu na hodnotu 001Bh ;Nepoužívané přerušení ;Nastav. adresy překladu na hodnotu 0023h ;Skok na obsluhu sériového kanálu
START: MOV SP,#STACK HLAVNI: .……. .……. LJMP HLAVNI P_INT0: .……. RETI P SER: JB TI P_SER: TI,VYS VYS CLR RI MOV R1,SBUF RETI VYS: CLR TI RETI
;Nastavení ukazatele zásobníku ;Smyčka ; y hlavního p programu g
FEL ČVUT
;Obsluha vnějšího přerušení_0 ;Obsluha Obsluha vysílání ;Nulování příznaku přijatého znaku ;Přijatý znak do R1 ;Návrat z přerušení ;Nulování příznaku vyslaného znaku ;Návrat z přerušení Petr Skalický, katedra radioelektroniky
65
PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU 8051 T i ký začátek Typický čát k programu v jazyce j C // Definice konstant, připojení, globálních proměnných, atd. main() { /* / POCATECNI NASTAVENI PRO KONTROLU HLOUBKY ZASOBNIKU */ / for (i=0xFF; i>=0x80; i--) DBYTE[i]=0xAF; #ifdef AT89C51ED2 CKCON0=0x7E; // Mód X1 jako normální ATMEL #endif hlavni: .……. // Smyčka hlavního programu .……. goto hlavni; } // PODPROGRAMY PRERUSENI void vnejsi0() interrupt 0 using 3 // Obsluha PC klávesnice { .……. ; return; } void time1() interrupt 3 using 1 // Nepoužívané přerušení { ;} } void seriovy_kanal() interrupt 4 using 1 { unsigned char znak; if (TI==1) { TI=0; return; } // Vysilani retezce else { RI=0; znak=SBUF; } // Příjem znaku do proměnné znak } FEL ČVUT
Petr Skalický, katedra radioelektroniky
66
ATYPICKÉ PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU 8051 Potřebujeme-li Potřebujeme li v aplikaci přestavět priority přerušení, přerušení můžeme přistoupit k programovému řešení priorit, které bylo v historii použito u některých procesorů (např. signálových TI – jedna adresa pro všechna přerušení, jedna adresa pro PCA (8051)). Princip lze snadno uplatnit u přerušení, jejichž příznak musí uživatel smazat sám v obslužné rutině. Jsou-li příznaky přerušení mazány automaticky je přestavba priorit poněkud problematická. Výhodnější pravděpodobně bude potřebná přerušení přesunout do vyšších úrovní priority.
Typický začátek programu v jazyce symbolických adres RESET: O_SER : O_COMP: O COMP: START: HLAVNI: PRERUS:
VYS:
FEL ČVUT
JMP START ORG 0023h JMP PRERUS ORG 0033h JMP PRERUS MOV SP,#STACK .……. LJMP HLAVNI JB CF, P_CF JB TI,VYS JB RI,PRIJ RETI CLR TI RETI
;Skok na začátek programu ;Nastav. adresy překladu na hodnotu 0023h ;Obsluha sériového kanálu ;Nastav. adresy překladu na hodnotu 0033h ;Obsluha analogového komparátoru ;Nastavení ukazatele zásobníku ;Smyčka hlavního programu ;Skok na obsluhu analogového komparátoru ;Druhou nejvyšší prioritu má vysílání znaku ;Třetí nejvyšší prioritu má příjem znaku ;Návrat z přerušení, Následují jed.obsluhy ;Nulování příznaku vyslaného znaku ;Návrat z přerušení
Petr Skalický, katedra radioelektroniky
67
ADRESY PŘERUŠOVACÍHO SYSTÉMU AT ADRESY PŘERUŠOVACÍHO SYSTÉMU ATmega mega U procesorů Atmega má každá periferie spojená s přerušovacím systémem svoji vlastní adresu přerušení (obsluha přerušení není zpožďována) a její příznak se nuluje před vstupem do přerušovací rutiny. Vyjma prvních dvou přerušení je poloha obsluhy přerušení závislá na velikosti procesoru. Priorita přerušení klesá s rostoucí adresou obsluhy. ATmega8 g Zdroj přerušení RESET Vnější přerušení 0 Vnější přerušení 1 TIMER2 COMPare TIMER22 O OVF TIMER1 CAPTure TIMER1 COMP_A TIMER1 COMPB TIMER1 OVF TIMER0 OVF SPI, STC USART, RXC USART, UDRE USART, TXC ADC EE_RDY ANAlog_COMP TWI StoreProgMem_RDY
FEL ČVUT
ATmega16 g Zdroj přerušení RESET Vnější přerušení 0 Vnější přerušení 1 TIMER2 COMPare TIMER22 O OVF TIMER1 CAPTure TIMER1 COMP_A TIMER1 COMPB TIMER1 OVF TIMER0 OVF SPI, STC USART, RXC USART, UDRE USART, TXC ADC EE_RDY ANAlog_COMP TWI Vnější přerušení 2 TIMER2 COMPare StoreProgMem RDY StoreProgMem_RDY
Procesor ATmega64 g ATmega128 g P i it Priorita Zdroj přerušení Zdroj přerušení RESET RESET 0 Vnější přerušení 0 Vnější přerušení 0 1 Vnější přerušení 1 Vnější přerušení 1 2 Vnější přerušení 2 Vnější přerušení 2 3 Vnější ější přerušení ř š í 3 Vnější ější přerušení ř š í3 4 Vnější přerušení 4 Vnější přerušení 4 5 Vnější přerušení 5 Vnější přerušení 5 6 Vnější přerušení 6 Vnější přerušení 6 7 Vnější přerušení 7 Vnější přerušení 7 8 TIMER2 COMPare TIMER2 COMPare 9 TIMER2 OVF TIMER2 OVF 10 TIMER1 CAPTure TIMER1 CAPTure 11 TIMER1 COMP_A TIMER1 COMP_A 12 TIMER1 COMPB TIMER1 COMPB 13 TIMER1 OVF TIMER1 OVF 14 TIMER0 COMP TIMER0 COMP 15 TIMER0 OVF TIMER0 OVF 16 SPI, STC SPI, STC 17 USART0, RXC USART0, RXC 18 USART0, UDRE USART0, UDRE 19 USART0 TXC USART0, USART0 TXC USART0, 20
Adresa obsluhy 0000h 0002h 0004h 0006h 0008 0008h 000Ah 000Ch 000Eh 0010h 0012h 0014h 0016h 0018h 001Ah 001Ch 001Eh 0020h 0022h 0024h 0026h 0028h
atd.
atd.
atd.
atd.
SPM READY
SPM READY
35
0044h
Petr Skalický, katedra radioelektroniky
68
PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU AT PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU ATmega mega Typický začátek programu v jazyce symbolických adres RESET:
START:
JMP START rjmp EXT_INT0 rjmp EXT_INT1 rjmp TIM2_COMP rjmp TIM2_OVF rjmp TIM1_CAPT rjmp TIM1_COMPA TIM1 COMPA atd. ldi out ldi out sei
na na na na na na na
začátek obsluhu obsluhu obsluhu obsluhu obsluhu obsluhu
programu vnějšího přerušení0 vnějšího přerušení1 komparace časovače2 přetečení časovače2 zachytného sys. časovače1 komparačního sys.časovače2
r16,high(RAMEND);Začátek hlavního programu SPH,r16 ;Nastaveni ukazatele zásobníku na vrchol RAM r16,low(RAMEND) 16 l (RAMEND) SPL,r16 ;Povolení přerušovacího systému
HLAVNI: .……. .……. .……. .……. LJMP HLAVNI
FEL ČVUT
;Skok ;Skok ;Skok ;Skok ;Skok ;Skok ;Skok
;Smyčka y hlavního p programu g
Petr Skalický, katedra radioelektroniky
69
PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU AT PROGRAMOVÁNÍ PŘERUŠOVACÍHO SYSTÉMU ATmega mega Typický začátek programu v jazyce C // Definice konstant, připojení, globálních proměnných, atd. main() { PORTA=0x08; DDRA=0x00; // Port A inicializace IIIIOIII PORTB=0xA7; DDRB=0x00; // Port B inicializace OIOIIOOO PORTC=0x00; DDRC=0x00; // Port C inicializace IIIIIIII PORTD=0xF2; DDRD=0x00; // Port D inicializace OOOOIIOI TCCR0=0x02; // Časovač 0, clock Fs/2=3686,4kHz TCNT0=~41; // Přednastaveni pro 50us hlavni: .……. // Smyčka hlavního programu goto hlavni; } // PODPROGRAMY PRERUSENI i t interrupt t [EXT_INT0] [EXT INT0] void id vnejsi0() j i0() // Nepoužívané N ží é přerušení ř š í { ; } interrupt [EXT_INT1] void vnejsi1() // Obsluha VF čtečky { nula=manch1; jedna=manch2; manch1=manch2=0; // atd. } interrupt [UART_RXC] void rxd_prenes() // Obsluha sériového přijmu unsegned char znak; if (prijem485==1) // Příjem řetězce { znak=UDR; serrxd[pocetrxd]=znak; if (pocetrxd<14) pocetrxd++; } } FEL ČVUT
Petr Skalický, katedra radioelektroniky
70
ODEZVA PŘERUŠOVACÍHO SYSTÉMU PROCESORŮ Z ŘADY 8051 strojový cyklus
C1 CLK
S5
S6
C2
C3
C4
C5 t
P1 P2 Vzorkování Žádost žádosti o přerušení
Zpracování žádosti o přerušení
LCALL adresa Volání obslužného podprogramu
První instrukce obslužného podprogramu
Žádosti o přerušení (příznaky) se testují v době S5P2 každého strojového cyklu procesoru (standardní verze) a vyhodnocují se v následujícím cyklu. Jsou-li splněny všechny podmínky pro vyvolání přerušení (neprobíhá přerušení a není zakázané), zakázané) je v cyklech C3 a C4 je generována inin strukce LCALL na adresu obslužného podprogramu. V cyklu C5 potom může být zpracována první instrukce obsluhy. Vznikne-li žádost o přerušení s vyšší prioritou před periodou S5P2 cyklu C3, potom bude přerušení obslouženo podle pravidel během strojových cyklů C5 a C6, aniž se vykoná jediná instrukce obslužného podprogramu s nižší prioritou. Mezi požadavkem na přerušení a první instrukcí obslužného programu proběhne minimálně (3*12+2÷6)/fosc hodinových cyklů. Odezva na přerušení se prodlouží při podmínce blokující vyvolání obslužného programu (probíhající přerušení se stejnou nebo vyšší úrovní priority). Není-li zpracování žádosti realizováno v posledním cyklu instrukce ⇒ prodloužení odezvy až o 3 strojové cykly (instrukce MUL a DIV trvají 4 cykly). cykly) Probíhá-li právě instrukce RETI nebo instrukce operující s IE nebo IP, prodlouží se doba odezvy nejvíce o 5 strojových cyklů (1 cyklus pro dobíhající instrukci a 4 cykly za dokončení nejdelší následující instrukce MUL nebo DIV). Po instrukci RETI nebo instrukci operující s IE a IP je vykonána ještě jedna instrukce. Využíváme-li v systému pouze jedno přerušení, potom časová odezva bude maximálně (8*12+2÷6)/fosc hodinových cyklů klů (vždy ( d delší d l než 3 a kratší k než 9 strojových h cyklů). klů) Pozor ⇒ odezva d na periodické d k požadavky fluktuuje v závislosti na zpracovávaných instrukcích ⇒ fázová nestabilita nelze používat k vzorkování A/D a D/A převodníků, generování signálů, atd. FEL ČVUT
Petr Skalický, katedra radioelektroniky
71
ODEZVA PŘERUŠOVACÍHO SYSTÉMU u ATmega ODEZVA PŘERUŠOVACÍHO SYSTÉMU u ATmega a a μ μP s PIPELINE Odezva na přerušení všech povolených přerušení na procesoru AVR je minimálně čtyři strojové cykly (hodinové cykly). Po čtyřech hodinových cyklech, během nichž je uložen aktuální stav čítače instrukcí do zásobníku, je započato vykonávání odpovídajícího přerušení. Jestliže se žádost o přerušení objeví během více cyklové instrukce, je zřejmé, že musí být nejdříve dokončena a přerušení je pozdrženo. pozdrženo Je Je-li li procesor v módu se sníženou spotřebou sleep mode, mode potom přerušení je vykonáno se zpožděním o další čtyři hodinové cykly potřebné k opuštění módu sleep. Návrat z přerušovací rutiny trvá čtyři hodinové cykly, během nichž je obnoven stav čítače instrukcí (2byty), ukazatel zásobníku je inkrementován o hodnotu 2 a bit I v registru SREG je nastaven na log.1. U procesorů s větším rozdělením instrukcí, než na dvě části (ATmega), je při přijatém přerušení potřeba nejprve vyprázdnit všechny rozdělané instrukce a teprve potom je započato načítání prvních instrukcí přerušovací rutiny. V případě návratu z přerušení jsou načtené instrukce za instrukcí RETI (RETE) změněny na instrukce NOP. NOP Aby nedocházelo ke ztrátě strojového času, jsou u některých procesorů zavedeny tzv. zpožděné instrukce. S větším počtem překrývaných instrukcí nejen roste doba přístupu do přerušovací rutiny, ale závisí též na umístění zásobníku a nutnosti uložení registrů používaných v příslušném přerušení (banky registrů, interní zásobník, externí umístění zásobníku, jednoúrovňové FIFO strategických registrů). i ů)
FEL ČVUT
Petr Skalický, katedra radioelektroniky
72
HLÍDACÍ A PODPŮRNÉ OBVODY MIKROPROCESORŮ Ke správnému p zahájení j činnosti mikroprocesoru/mikrořadiče p po p p připojení p j k napájení p j jje třeba zajistit: ♣ Zahájení a případně i ukončení programu musí probíhat při napájecím napětí v tolerancích stanovených výrobcem. j programu p g musí p probíhat p při stabilním hodinovém synchronizačním y signálu g ♣ Zahájení Oba požadavky musí být u aplikace splněny i při velmi rozdílných podmínkách, v kterých zařízení může pracovat. I tak jednoduchá funkce, jako je nulování procesoru, může být zdrojem mnoha problémů hlavně v závislosti na rychlosti náběhu napájecího napětí VCC (od desítek μs až desetiny sekundy) a teplotě okolí (normální 0÷70°C, průmyslové -40÷85°C, vojenské -55÷125°C někdy -40÷125°C). Současně s tím záleží i na tom, zda navržený systém je vybaven nějakou formou zálohování dat do zeroRAM, EEPROM, FRAM, flash (např. při výpadku nebo poklesu napájení) nebo využití stavů se sníženou spotřebou, atd.). Teprve nedávno začali výrobci integrovali na čip podpůrné obvody a proto řada výrobců (Maxim (Dallas), Texas, Analog Device, Thomson a další) nabízí obvody realizující podpůrné funkce nezbytné pro správnou činnosti v dané aplikaci. ♣
Generátor nulovacího signálu – vytváří signál pro nulování procesoru, který je funkcí dvou komparátorů pracujících při velmi nízkém napájecím napětí (0,5÷1,5V) s napěťovou hysterezí, které detekují průchod nabíhajícího nebo klesajícího napájecího napětí referenční úrovní. (Power-on Reset).
♣
Detekce poklesu napájecího napětí – vytváří signál pro požadavek nemaskovaného přerušení (přerušení s nejvyšší prioritou), když VCC klesne pod nastavenou úroveň. Využívá se ukládání nejdůležitější dat při výpadku VCC.
♣
Řízení výběrového ý signálu g CE – blokuje j aktivační signály g yp pro externí zálohované p paměti v době, kdy VCC je mimo tolerance stanovené výrobcem.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
73
HLÍDACÍ A PODPŮRNÉ OBVODY MIKROPROCESORŮ ♣
Přepínač napájení na záložní baterií – zajišťuje ve spolupráci s obvodem (Power Fail) přepnutí napájení procesoru nebo pamětí na záložní zdroj (baterii).
♣
Detekce přepětí napájení – je realizována komparátorem, který indikuje výskyt napěťové špičky v napájecím napětí, a odvozuje z něj žádost o přerušení nebo nulování procesoru. Využívá se zřídka, i když právě napěťové špičky jsou často příčinou desinterpretace programu procesoru. Proto je nutné věnovat značnou pozornost odstranění rušivých impulzů v napájení pro mikroprocesorové systémy.
♣
Hlídací časovač WDT (Watch Dog Timer) - volně běžící čítač s interním RC oscilátorem. Není-li čítač včas vynulován, generuje nulování procesoru. Přestože jej mají všechny nové procesory integrovány i t á na čipu, či j pro průmyslové je ů l é aplikace lik vhodné h d é použít žít i externí t í podobě. Současně s tím je potřeba pamatovat na problémy s módy se sníženou spotřebou a nahrávání μP. Watch Dog Timer je nezbytné používat u systémů bez obsluhy, kdy po „zbloudění programu“ jej vynuluje a vrátí do cyklu správného vykonávání programu.
Výrobci podpůrných obvodů implementují jen některé z uvedených funkcí. funkcí Nejmenší v SOD23 (pouzdro jako SMD tranzistor) - generátor nulovacího signálu log.0/log.1, přes obvody pouzdře SO8/DIL8 - nulování, manuální reset (TL7705) a hlídací časovač (MAX1232, ICL1232, ADM1232, atd.), po přepínání na záložní napětí a indikátor poklesu VCC (MAX690, atd) až po komplexní podpůrné obvody jako je uvedený obvod MAX792 na další stránce. Současným trendem je integrovat do μP WDT, POR (Power On Reset) a PFD (Power Fail Detection), které jsou nezbytné pro integrovanou paměť EEPROM. Při náběhu VCC generuje POR nulovací signál pevné délky (100ms–Cygnal) nebo odvozený z počtu period vnitřního oscilátoru (1024.fXTAL1 – Atmel, 65536.fXTAL1 – Dallas), zajišťující současně ustálení oscilací interního oscilátoru μP (jednotky ms). ms) U μP (Dallas, (Dallas Atmel) generuje PFD žádost o přerušení umožňující uložit hodnoty před resetem procesoru. Interní WDT usnadňuje použití (Power Down) módu, při kterém nemusí být procesor pravidelně nulován jako při externím WDT. FEL ČVUT
Petr Skalický, katedra radioelektroniky
74
HLÍDACÍ A PODPŮRNÉ OBVODY MIKROPROCESORŮ Ucc RESET IN/INT
R +
LOW U Ucc
Vref Ucc
RESET
RESET generátor
-
R
RESET
Ucc komparátor RESET
+ R
KLU
Ucc řízení CE
Ucc +
MR
1,3V + -
KRR
-
+
Ucc
-
+ -
Řízení vstupního p módu
0,6V CE OUT
CE IN čas. základna WDT
WDPO
SWT WDT
Ucc
WDI
detektor hran WDT
WDO
+ -
komparátor přepětí
OVO
OVI KLU - komparátor podpětí
FEL ČVUT
KRR - komparátor ručního resetu
Petr Skalický, katedra radioelektroniky
75
NULOVÁNÍ PROCESORŮ –– VLASTNOSTI A PROBLÉMY NULOVÁNÍ PROCESORŮ Mikroprocesor, p jjako každý ý sekvenční obvod, jje p potřeba p po p připojení p j k napájení p j uvést do definovaného počátečního stavu. Každý procesor vybaven vstupem RESET, ke kterému je potřeba připojit jednoduchý obvod nulování nebo výstup obvodu pro kontrolu napájecího napětí. Na vstupu RESET musí být aktivní úroveň po dobu, než se VCC dostane do rozmezí stanoveného výrobcem a oscilátor hodinového signálu nedosáhne stabilní činnosti. Jednoduché obvody jsou pro systémy s manuálním nulováním bez paměti EEPROM nebo μP s POR a PFD. PFD U nových μP je vývod RESET obousměrný. Aktivní úroveň signálu RESET způsobí: ♣ ♣ ♣ ♣ ♣ .
Vynuluje čítač instrukcí PC (výjimečně na nenulovou hodnotu). Zakáže přerušovací systém Obousměrné V/V vývody nastaví do vstupního režimu nebo stavu vysoké impedance Zůstanou zastaveny čítače včetně WDT, interní periferie a některé registry se nastaví do definovaného stavu. t RESET nenuluje paměť !!! Pozor - startup.asm VCC SW1
8051
80C517A D1
R1 SW1 C1
a)
FEL ČVUT
b)
URESET Ulog.1 log 1min t
SW1
8051 C1
R1
RESET
t
VCC
VCC C1
UCC
1÷5kΩ
RESET
RESET
Nulování externích obvodů b dů
a)
Petr Skalický, katedra radioelektroniky
TL7705
VCC
1÷5kΩ
Out
R1
8051
RESET R1
Nulování externích obvodů
b)
76
PARAMETRY OVLIVŇUJÍCÍ START PROCESORU
FEL ČVUT
Petr Skalický, katedra radioelektroniky
77
ŠPATNĚ NULOVANÝ PROCESOR
FEL ČVUT
Petr Skalický, katedra radioelektroniky
78
INTERNÍ PERIFERIE MIKROPROCESORŮ – INTERNÍ PERIFERIE MIKROPROCESORŮ – ČÍTAČ/ČASOVAČ V počátcích mikroprocesorové techniky se hned po potřebě konfigurovatelných vstupně/výstupních vývodů ukázalo jako nezbytné připojit do mikroprocesorového systému čítač/časovač, který by byl schopen generování periodických událostí a signálů, čítání událostí, měření délky intervalu, atd. Při absenci čítače musí jeho funkci zastoupit programové vybavení procesoru s případnou podporou přerušovacího systému. Časovou informaci pak musíme získávat z doby t á í jednotlivých trvání j d tli ý h instrukcí i t k í (instrukce (i t k musíí mít ít pevnou dobu d b trvání). t á í) Takové T k é řešení ř š í problému blé j je nejen pracné, ale obvykle vede i k výraznému snížení výpočetního výkonu procesoru a nutnosti vytvoření programového vybavení v jazyce symbolických adres. Použití vyššího jazyka by bylo velmi problematické. Nejznámějším a nejpropracovanějším časovačem z té doby byl obvod ý umožňoval čítání událostí, g generování průběhů a intervalů bez přímé účasti I8253/54, který vlastního programu procesoru. Od té doby se začaly používat čítače/časovače v jednodušší podobě, které většinou umožňují prosté čítání vnějších (čítač) nebo vnitřních událostí (časovač). Současně se zjednodušením dochází k přímému propojení čítače/časovače s přerušovacím systém procesoru (Z80). Další vývoj čítačů/časovačů směřuje k postupnému posunu i v jejich použití. Od použití ve funkci ochrany správné činnosti programu zpracovávaného procesorem obvodem watchdog, přes obvody aplikačně orientované (komparační systém) ke generování pulzů (řízení krokových motorů, generování posloupností a kmitočtů, řízení procesů), obvody vycházející z komparačního systému (pulzně šířková modulace) využívané ke generování průběhů (náhrada D/A převodníku, řízení motorů) až po obvody určené k měření šířek impulzů nebo okamžiku (času) jejich vybrané hrany (záchytný systém). Z tohoto důvodu je nezbytnou součástí každého jednoobvodového procesoru čítač/časovač, který podporuje čítání vnějších událostí a umožňuje vytvořit časovou základnu pro měření času, časování běhu vlastního programu nebo jeho podprogramů, generuje synchronizační h di hodinový ý signál i ál pro sériové é i é datové d t é přenosy ř a případně ří d ě vytváří t áří časovou č základnu ákl d pro záchytný á h t ý a komparační systém. Počet čítačů/časovačů a složitost obvodů okolo nich závisí na oblasti předpokládaného použití procesoru pro kterou byl zhotoven. FEL ČVUT
Petr Skalický, katedra radioelektroniky
79
PŘÍKLADY NA VYUŽITÍ JEDNODUCHÉHO ČÍTAČE/ČASOVAČE V nejjednodušším jj p případě p se jjedná o osmibitový ý nebo šestnáctibitový ý čítač s p programovatelným g ý předděličem, který dovoluje buď čítat vnější události nebo ve funkci časovače generovat pravidelně přerušení pro vykonání určité části programu nebo obsluhu periferie. Pokud čítač /časovač nedisponuje obvodovým přednastavením, nemůže pracovat jako dělič kmitočtu, generátor hodin pro synchronizaci sériových přenosů, atd. Start P1.3=0 počitadlo=hod počitadlo+=1 ne
počitadlo=0?
Příklad: Blikání diodou LED připojenou k vývodu P1.3 procesoru z řady 8051 v 0,25s intervalu. Jedno z možných připojení diody k bráně procesoru je zobrazeno na schématu s tím, tím že proud Iak nesmí přesáhnout maximální proud pro jeden V/V vývod procesoru a zároveň nebude překročeno maximum součtu proudů pro celou bránu (v našem případě P1). Programové řešení zadané příkladem bude vycházet z jednoho z vývojových diagramů, který se skládá z programového zpoždění 0,25s a změny hodnoty na vývodu P1.3. VCC
Start
ano
VCC
P1.3=0
P1.3=P1.3 EX-OR 1
počitadlo=hod
počitadlo=hod
počitadlo+=1 ne
počitadlo=0? čit dl 0? ano
FEL ČVUT
počitadlo+=1 ne
27pF
C1
27pF
C2
20
5
4 XT1
VCC
10
ano
Petr Skalický, katedra radioelektroniky
P1.0 /AIN0 P1.1 /AIN1 P1.2 P1.3 P1 4 P1.4 P1.5 /MOSI P1.6 /MISO P1.7 /SCK
XTAL1
XTAL2
12 MHz 1
počitadlo=0?
U1
RST
P3.0 /RXD P3.1 /TXD P3.2 /INT0 P3.3 /INT1 P3.4 /T0 P3.5 /T1 /PWM P3.7
12 13 14 15 16 17 18 19 2 3 6 7 8 9 11
D1
LED R1
VCC - U Uak k - Ul Ulog.0 0 R1 = ------------------------Iak
GND AT89S4051
80
BLIKÁNÍ DIODOU LED – BLIKÁNÍ DIODOU LED – PROGRAMOVÉ ŘEŠENÍ Pro zápis p p programu g si vybereme y jjednodušší řešení. Program pro řadu 8051
Start
OPAK:
P1.3=P1.3 EX-OR 1
XRL P1,#08h MOV DPTR,#hod INC DPTR MOV A,DPH ORL A,DPL JNZ ZPOZD O SJMP OPAK
ZPOZD:
počitadlo=hod počitadlo+=1 ne
Program pro AVR
počitadlo=0?
.EQU hod=0xFFF8 opak:
zpozd:
ano VCC VCC 27pF
C1
27pF
C2
20
5
4 XT1
U1
VCC
XTAL1
XTAL2
12 MHz 1 10
FEL ČVUT
P1.0 /AIN0 P1.1 /AIN1 P1.2 P1.3 P1.4 . P1.5 /MOSI P1.6 /MISO P1.7 /SCK
RST
P3.0 /RXD P3.1 /TXD P3.2 /INT0 P3.3 /INT1 P3.4 /T0 P3.5 /T1 /PWM P3 7 P3.7
GND AT89S4051
12 13 14 15 16 17 18 19 2 3 6 7 8 9 11
D1
LED R1
LDI R16,$08 IN R17,PORTx EOR R17,R16 OUT PORTx,R17 LDI R27,HIGH(hod) LDI R26,LOW(hod) R26 LOW(h d) LD R17,X+ MOV R17,R27 OR R17,R26 CPI R17,$0 BRNE zpozd JMP opak
Nyní zbývá určit hodnotu hod pro zpoždění 0,25s. procesor 8051 a krystal y 12MHz,, Pro standardní p bude strojový cyklus trvat 1μs. Instrukce INC, MOV, ORL a JNZ trvají 6 strojových cyklů a cyklus zpoždění musí do 0,25s proběhnout n=250000/6= ≈41667 krát. Protože zvětšovaný registr DPTR je 16 bitový můžeme pro hodnotu hod psát 16-bitový, hod=65536-41667= 23869= 5D3Dh Petr Skalický, katedra radioelektroniky
81
BLIKÁNÍ DIODY LED S POUŽITÍM ČÍTAČE/ČASOVAČE Hlavní nevýhoda předcházejícího řešení spočívá v tom, tom že 100% výpočetního výkonu procesoru je věnováno zpracování zpoždění a blikání. Zpoždění by mohlo být nahrazeno násobky hlavního programu nebo změna stavu diody by musela být zhruba rovnoměrně rozložena po hlavním programu s tím, že hlavní program by nesměl vykazovat v závislosti na aktuálním nastavení výrazně různou dobu zpracování. Nyníí sii ukážeme káž ř š í s využitím řešení ži í přerušovacího ř š íh systému é a jednoduchého j d d héh čítače/ čí č časovače, č č který k ý čítá vzestupně a je z řady procesorů 8051 (mód 1, viz. obrázek). Jedná se o klasický 16-bitový čítač, na který můžeme přivést hodinový signál z vývodu Tn nebo z vnitřního oscilátoru procesoru. Obsah čítače je tvořen registry THn a TLn, jejichž stav může být čten nebo přepisován novou hodnotou. Při přetečení čítače/časovače (přechodu z FFFFh→0000h) se nastaví příznak žádosti o přerušení TFn=1. Bude-li povolena globální maska přerušovacího systému a vlastní přerušení od časovače (TRn), bude po zpracování požadavku o přerušení dokončena rozdělaná instrukce, uložen stav čítače instrukcí do zásobníku a realizována operace CALL 000Bh (zavolání obsluhy přerušení například od časovače 0). 16-bitový čítač s interním hodinovým signálem 1MHz přeteče každých VCC Q1
VCC 27pF
C6
27pF
C5
20
5
4 XT3
U15
VCC
XTAL1
XTAL2
12 MHz 1 10
FEL ČVUT
P1.0 /AIN0 P1.1 /AIN1 P1.2 P1 3 P1.3 P1.4 P1.5 /MOSI P1.6 /MISO P1.7 /SCK
RST
P3.0 /RXD P3.1 /TXD P3.2 /INT0 P3.3 /INT1 P3.4 /T0 P3.5 /T1 /PWM P3.7
GND AT89S4051
12 13 14 15 16 17 18 19 2 3 6 7 8 9 11
P NP R2
10k
R1
OSC
0 1
/12
TLn
THn
8 bitů
8 bitů
Tn
D1
LED
TMOD
C/T
TCON
TRn
TMOD
GATE
INTn
Petr Skalický, katedra radioelektroniky
TCON
& 1
TFn
Žádost o přerušení
1
MÓD 1 82
BLIKÁNÍ DIODY LED S POUŽITÍM ČÍTAČE/ČASOVAČE 65,536 ms. Zvolíme Zvolíme-li li interval přerušení 50ms, budeme pro navrhovaných 250ms měnit stav diody při každém pátém zavolání obsluhy přerušení časovače 0. Ke zkrácení intervalu přerušení přednastavíme v každém přerušení registry TH0 a TL0 na hodnotu 65536-50000=3CB0h. Obsluha přerušení
Start Inicializace čítače/časovače povolení přerušení od přetečení čítače/časovače
Hlavní program
ORG 0000h SJMP START
TL0=B0h TH0=3Ch počet+=1 ne
počet=5? ano počet=0 P1.3=P1.3 + 1
Return interupt
VEN:
ORG 000Bh MOV TL0,#B0h MOV TH0,#3Ch INC POČET MOV A,POCET A POCET CJNE A,#5,VEN XRL POČET,A XRL P1,#08h RETI
START: MOV SP,#stack MOV TMOD,#01h SETB TR0 MOV IE,#82h OPAK: ............ ............ LJMP OPAK
; Zvětšení počitadla ; V pátém zavolání změna stavu ; Nulování proměnné POČET ; Změna stavu diody ; ; ; ; ; ; ;
Nastavení ukazatele zásobníku Časovač 0, mód 1 Spuštění časovače Povolení přerušení EA=TR0=1 1.instrukce hlavního programu Hlavní program musí být nekonečná smyčka
Z 250000 strojových cyklů bude 12*4+15 cyklů potřeba na změnu stavu diody. Procesor může z 99,975 % pracovat na hlavním programu. FEL ČVUT
Petr Skalický, katedra radioelektroniky
83
STANDARDNÍ MÓDY ČÍTAČŮ/ČASOVAČŮ V předcházejícím příkladu zůstala utajena skutečnost, že programové přednastavení (zkrácení cyklu přetečení) nemusí probíhat přesně ve stejném okamžiku (zavolání obsluhy přerušení bude fluktuovat). Pokud potřebujeme generovat signál se stabilitou synchronizačního hodinového signálu (např. hodinový signál pro sériový kanál, A/D a D/A převodník, programovatelný generátor kmitočtu, atd.) musí být čítač/časovač přednastaven na požadovanou hodnotu obvodově. b d ě Na N obrázcích b á í h je j zobrazen b 8 bit ý (časovač 8-bitový (č č 0 nebo b 1) a 16-bitový 16 bit ý (časovač (č č 2) čítač čít č s obvodovým přednastavením pro procesory 8051 a 8052. OSC
0
/12
TLn
1
8 bitů
TCON
Tn TMOD
C/T
TCON
TRn
TMOD
TFn
& 1
GATE
MÓD 2 /12
T2 T2CON
C/T2
T2CON
TR2
T2EX
FEL ČVUT
0
TL2
TH2
1
8 bitů
8 bitů
TFn
T2CON
1
Časovač 2 přerušení
1 RCAP2L
T2CON
Žádost o přerušení
8 bitů
1
INTn
OSC
THn
RCAP2H
EXF2
T2CON
EXEN2
Petr Skalický, katedra radioelektroniky
84
SPECIALIZOVANĚJŠÍ MÓDY ČÍTAČŮ/ČASOVAČŮ U p procesorů z řady y 8052 byl y doplněn p nejen j chybějící y j 16-bitový ý čítač/časovač T2 s obvodovým ý přednastavením, ale i varianta s možností obvodového řízením směru čítání. Časovač 2 procesoru může čítat impulzy ze vstupu T2 (čítač) nebo vnitřní oscilátor (časovač). V závislosti na bitu (EXEN2) jsou registry TH2 a TL2 přednastaveny na hodnotou uloženou v registrech RCAP2H a RCAP2L při přetečení časovače T2 nebo sestupné hraně na vývodu T2EX. 0FFh
T2CON
0FFh
EXF2
OSC
0
/12
TL2 8 bitů
1
0
TH2 8 bitů
1
T2 C/T2
TR2
T2CON
T2CON
Časovač 2 přerušení TF2 RCAP2L
RCAP2H
T2CON
T2EX
OSC
0
/2
TL2 8 bitů
1
TH2 8 bitů
T2 0
C/T2
TR2
T2CON
T2CON
T2OE RCAP2L
RCAP2H
T2MOD
/2 T2EX
EXF2 T2CON
FEL ČVUT
EXEN2
T2CON
Časovač 2 přerušení
Petr Skalický, katedra radioelektroniky
V době nedávné byl u náná sledovníků 8052 integrován programovatelný generátor kmitočtu se střídou 1:1, jehož nejvyšší generovaný kmitočet je roven ¼ hodinového synchronizačního signálu. Pro nejvyšší kmitočty je frekvenční krok velký, velký ale rychle se zmenšuje se snižováním generovaného kmitočtu. 85
ZÁCHYTNÝ SYSTÉM První specializovanou jednotkou opírajících se o funkci čítače/časovače je záchytný systém. Jeho základem je čítač T2 tvořený dvěma registry TH2 a TL2, jejichž aktuální hodnota je při výskytu sestupné hrany na vývodu T2EX a povoleném zápisu bitem EXEN2=1, přepsána do dvojce registrů RCAP2H a RCAP2L. Současně s tím je nastaven bit EXF2 v řídícím registru T2CON, od kterého může být, stejně jako od přetečení čítače/časovače TF2, vyvoláno přerušení. Odebrání uložené h d t času hodnoty č z registrů i t ů RCAP2H a RCAP2L musíí proběhnout běh t dříve, dří nežž se objeví bj í další d lší výkonná ýk á hrana (minimální možná měřitelná perioda). V opačném případě dojde ke čtení nesprávného časového údaje z registrů. Pro zachycení sekvence několika rychlých hran, jsou některé procesory (např. Intel 80196) v záchytném systému vybaveny místo registry pamětí FIFO. Záchytný systém j procesorů a PCA reaguje p g j na sestupnou p i vzestupnou p hranu vývodu ý T2EX, a tím jje novějších umožněno systém využít k měření i šířky impulzů. Přesnost měření záchytného systému je dána hodinovým kmitočtem časovače. Pro čítač T2 klasické 8051 a krystal 12MHz to bude ±1μs. Není-li záchytný systém využíván, lze jeho vstup(y) (T2EX) použít jako další vstupy vnějších žádostí o přerušení. Příznaky přetečení čítače (TF2) a zachycení hrany (EXF2) jsou v závislosti na použitém procesoru nulovány automaticky (AVR) nebo musí být vynulovány programově. programově /12
OSC
0 1
TL2 8 bitů
TH2 8 bitů
TF2
Časovač 2 1 přerušení
T2 T2CON
C/T2
T2CON
TR2 EXF2
T2EX RCAP2L T2CON
FEL ČVUT
T2CON
T2CON
RCAP2H
EXEN2
Petr Skalický, katedra radioelektroniky
86
MĚŘENÍ PERIODY IMPULZNÍHO NAPĚTÍ Bude-li nám k měření p periody y impulzního p napětí p stačit p přesnost okolo 50÷100μs, μ můžeme přistoupit k metodě založené na programovém řešení. Navrhovaný program se bude skládat z vyhledávání náběžné nebo sestupné hrany, počitadla cyklů zpoždění a realizace 15 Počitadlo 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 zpožďovacího cyklu. Program bude číst V/V cyklů zpoždění vstupní vývod, vývod na který je připojeno imim pulzní napětí. Po nalezení např. náběžné Perioda T hrany, vstoupí do zpožďovacího cyklu s definovaným zpožděním a za každý průchod připočte jedničku do počitadla cyklů zpoždění. Výsledná perioda je dána součinem počitadla a zpožďovacího cyklu. V další periodě může být realizováno například zobrazení a část hlavního programu. Druhé řešení lze realizovat na procesorech, které mají možnost obvodově spouštět čítání interního nebo externího hodinového signálu. Příkladem je časovač 0 a 1 procesorů 8051, u kterých nastavením GATE=1, GATE=1 C/ T =0 a TRn=1 dosáhneme spuštění časovače při log.1 log 1 přivedené na vstup INTn. INTn Tak můžeme měřit šířky impulzů v log.1 nebo po vydělení signálu dvěma i jejich periodu. U1 20 Sestupnou hranou vstupu INTn vyvoláme přerušení, VCC VCC 12 P1.0 /AIN0 13 VCC přečteme periodu s přesností 1 μs nebo lepší. 27pF P1.1 /AIN1 14
12 MHz 27pF
1 10
XTAL2
RST
P3.0 /RXD P3.1 /TXD P3.2 /INT0 P3.3 /INT1 P3.4 /T0 P3 5 /T1 /PWM P3.5 P3.7
GND AT89S4051
15 16 17 18 19
2 3 6 7 8 9 11
R15
OSC 5
6
U2A
Q
4
4
P1.2 P1.3 P1 4 P1.4 P1.5 /MOSI P1.6 /MISO P1.7 /SCK
PR
C3
XTAL1
D
CLK Q
3
IMPULZy
74HCT74 Zem
FEL ČVUT
0 1
/12
TLn
THn
8 bitů
8 bitů
Tn
2
CL L
5
XT1
1
C2
TMOD
C/T
TCON
TRn
TMOD
GATE
INTn Petr Skalický, katedra radioelektroniky
TCON
& 1
TFn
Žádost o přerušení
1
MÓD 1
87
MĚŘENÍ PERIODY IMPULZNÍHO NAPĚTÍ ZÁCHYTNÝM SYSTÉMEM Záchytný systém umožňuje měřit šířky impulzů i periodu impulzního napětí bez jakékoliv další obvodové podpory s stejnou přesností jako v předcházejícím řešení (1 μs nebo lepší). Měření doby periody spočívá v odečtení dvou po sobě jdoucích hodnot volně běžícího časovače obvodově zachycených při náběžné nebo sestupné hraně signálu. S každým zachycením je vyvoláno přerušení, v kterém zachycený čas uložíme. Výpočet periody nesmí probíhat z hodnot, k které b mohly by hl být b ovlivněny l obslužným b l programem záchytného h h systému. Případné d kopírování naměřených hodnot musí probíhat při zakázaném přerušení. Modul čítače
Stav číttače
Perioda čítače
T T2=EF05
0
0
TOLD
TNEW
TOLD
TNEW
T2=140A
T2=390F
Čas
Ukázka nejrychlejší obsluhy záchytného systému pro procesory 8051 ; Obsluha neničí žádné registry ani příznaky ZACYT:
M2: M3: FEL ČVUT
MOV MOV MOV MOV JB JB SETB SJMP SETB CLR RETI
OLDL, NEWL OLDH, NEWH NEWL RCAP2L NEWL,RCAP2L NEWH,RCAP2H DRUHA, M3 PRVNI, M2 PRVNI M3 DRUHA EXF2
; ; ; ; ; ; ;
Kopírování minulé hodnoty do registru OLDL Kopírování minulé hodnoty do registru OLDH Nižší část nové hodnoty časovače 2 do NEWL Vyšší část nové hodnoty časovače 2 do NEWH Pokud byly dvě uložení časů konec obsluhy Bylo-li jedno uložení, nastav ukazatel druhého Nastavení ukazatele prvého průchodu
; Nastavení ukazatele druhého průchodu ; Smazaní příznaku přerušení Petr Skalický, katedra radioelektroniky
88
KOMPARAČNÍ SYSTÉM Komparační systém se skládá z jednoho nebo několika komparačních registrů, registrů časovače a komparátorů, které indikují shodu obsahu registrů s časovačem. Systém může pracovat v konfiguraci PWM nebo v konfiguraci generování řídících signálů. Při generování řídících signálů se u složitých komparačních systémů využívá konfigurace uvedené na obrázku. V jednodušších systémech komparátor ovlivňuje jenom jeden V/V vývod procesoru. Při shodě časové základny s obsahem komparačního registru se vykoná změna výstupního nebo výstupních signálů procesoru a nastaví bit žádosti o přerušení. Změnu na výstupních vodičích určuje výběrový obvod (obvod akcí), který má pro každou shodu přiřazenu odpovídající reakci na všech výstupních vodičích systému. Akcí na výstupních vodičích je obvykle nastavení log 0 log.1 log.0, log 1 nebo změna stavu na výstupním vodiči. vodiči Počty komparačních registrů jsou obvykle srovnatelné s počtem záchytných registrů a oba systémy jsou vztaženy k jediné časové základně volně běžícímu 16-bitovému časovači.
Hodiny Časovač
Komparační registr 1
Komparační registr 2
Komparační registr 3
Komparátor
Komparátor
Komparátor
Y0 Y1
Sh1
Obvod akcí
t
Y2
Sh3 Sh2
t
V/V vývody ý d Y0 Y1 Y2
t Sh1 Sh2
Sh3 Sh4
Žádost o přerušení Sh1 Žád t o přerušení Žádost ř š í Sh2 Žádost o přerušení Sh3
FEL ČVUT
Petr Skalický, katedra radioelektroniky
89
PULZNĚ ŠÍŘKOVÁ MODULACE Generátor p pulzně-šířkové modulace ((PWM - Pulse Width Modulation)) vychází y z konfigurace g komparačních obvodů s tím, že funkce výstupního signálu je předem dána. Výstup PWM generuje impulzní napětí, jehož šířka impulzu v log.1 (log.0) odpovídá hodnotě zapsané v registru PWM. Výstupní funkci může realizovat výstup aritmetického komparátoru porovnávajícího volně běžící časovač s registrem PWM, ale pro implementační složitost se obvykle nepoužívá. Obvodově snazší je řešení využívající paměťový člen RS, RS který je nastavován (nulován) výstupem logickélogické ho komparátoru při shodě čítače a hodnoty v registru PWM a nulován (nastavován) při přetečení časovače. Generátory PWM disponují obvykle 8-bitovým čítačem s předděličem. Nová hodnota se ukládá do registru v obsluze přerušení inicializované shodou čítače s nastavenou hodnotou. Při přetečení časovače se hodnota zapsaná do registru se interně přepíše do registru PWM. Dvojnásobné ukládání zabrání změnám výstupu při zápisu nové hodnoty. Pro zajištění krajních případů (trvale log.0 a log.1), může být modul časovače zkrácen (tj. od 0 do 254). Nemá-li procesor 16-bitovou PWM, je možné ji vytvořit vhodným naprogramováním komparačního systému procesoru. PWM se využívá po stabilizaci amplitudy a analogové filtraci dolní propustí (DP) jako jednoduchý D/A převodník. PWM se využívá jako pro jemné nastavení anodového napětí u výkonových vysílačů s AM modulací nebo k vytváření třífázového napájení pro výkonové motory. hodnota zápis
Registr
Registr PWM
Komparátor Hodiny
FEL ČVUT
Časovač
Žádost o přerušení Shoda
Přetečení
S
R
Q
Časovač
Komparovaná hodnota
Výstup t Výstup
Petr Skalický, katedra radioelektroniky
t
90
MÓDY PWM MIKROPROCESORŮ Z ŘADY AT MÓDY PWM MIKROPROCESORŮ Z ŘADY ATmega mega Nastavení p příznaku p přerušení OCFxA nebo IRFx
Stav čítače S
Mód CTC je klasický mód čítače s proměnou hodnotou svého maxima po jehož dosažení se nuluje. Přiřazený výstup může po každém nulování á í čítače čít č změnit ě it svůj ůj výstupní ý t í stav t a vytvářet tak programovatelný generátor.
0
Čas
0
OCxA (mód změna) 1
Perioda
Stav čítače
Nastavení přísnaku přerušení OCFxA nebo IRFx
0
Čas
0
OCxA OCxA Perioda
FEL ČVUT
1
2
3
4
2
3
4
Mód rychlé PWM u procesorů ATmega umožňuje oproti klasické PWM měnit ý dosažitelné maximum stavu čítače. Výhodou režimu je oproti následujícím módům dvojnásobná dosažitelná frekvence. Při konstantním maximu výstup generuje signál s proměnou střídou v závislosti na zadané hodnotě a hodí se tudíž pro výkonové aplikace typu regulace výkonu, střídače, převodníky D/A a další. Díky vyšším frekvencím, jsou potřebné indukčnosti a kapacity menší a tudíž i rozměrově menší.
Petr Skalický, katedra radioelektroniky
91
MÓDY PWM MIKROPROCESORŮ Z ŘADY AT MÓDY PWM MIKROPROCESORŮ Z ŘADY ATmega mega Nastavení příznaku přerušení OCFxA nebo IRFx
Mód PWM fázově-frekvenční využívá se při řízení střídavých motorů a DC motorů bez komutátoru. I při změně frekvence v důsledku změny maximální hodnoty, generuje symetrický signál vůči maximální hodnotě. hodnotě
Stav čítače
Obnovení OCRxN/MAX, nastavení TOVx příznaku přerušení
0 0
Čas
OCxA Perioda
1
2
3
4
Obnovení OCRxN/MAX, nastavení OCFxN nebo IRFx příznaku přerušení
Sttav čítače
Nastavení příznaku přerušení TOVx
0 0
Čas
OCxA OCxA Perioda
FEL ČVUT
1
2
3
Petr Skalický, katedra radioelektroniky
Mód PWM fázově přes přesný je obdobou předcházejícího módu s tím, že perioda je určena od maxima k maximu, ale ke změně ě ě výstupu ý t d há í dochází symetricky k průchodu nulou (při sestupu log.1, při vzestupu log.0). Při generuje j změně maxima g nesymetrické periody.
4
92
GENEROVÁNÍ HARMONICKÉHO SIGNÁLU PWM Pomocí PWM můžeme vytvořit unipolární nebo bipolární harmonické nebo jiné řídící napětí. Podmínkou pro získání signálu s únosným zkreslením je minimálně 40 period PWM do periody generovaného průběhu.
1
1
π
π
0
−1
+
+
I
0 FEL ČVUT
I
0 Petr Skalický, katedra radioelektroniky
93
PCA SYSTÉM Výsledkem zhodnocením vlastností obvodů spojených s čítačem v procesorech 8051, 8051 8052 a 8xC196 a potřeb ve standardních aplikacích je integrace široce univerzální jednotky PCA (Programmable Counter Array. Čítačem ovládané programovatelné pole se skládá ze zvláštního 16bitového časovače, ke kterému je obvykle připojeno pět modulů modifikovatelných do komparační nebo záchytné funkce. Každý modul může být naprogramován do jednoho ze čtyřech módů: Záchytný systém reagující na náběžnou nebo sestupnou hranu vstupního signálu 16-bitový programový čítač, 16-bitový komparační systém s rychlým výstupem 8-bitový pulzně šířkový modulátor Modul 4 může být navíc naprogramován do funkce 16-bitového čítače watchdog. Každý modul má přiřazený vývod, který slouží jako vstup záchytného systému nebo výstup komparačního systému a pulzně šířkové modulace. Konfigurace jednotlivých módů je následujících stránkách. Vývody procesoru 16
16
Čítač/časovač PCA
16
16
16
FEL ČVUT
Modul 0
P1.3/CEX0
Modul 1
P1.4/CEX1
Modul 2
P1.5/CEX2
Modul 3
P1.6/CEX3
Modul 4
P1.7/CEX4
Petr Skalický, katedra radioelektroniky
94
PŘERUŠOVACÍ SYSTÉM PCA Určitou U či nevýhodou ýh d z hlediska hl di k rychlosti hl i odezvy d u PCA systému é j že je, ž všechna š h přerušení ř š í jsou j sdružena do jedné žádosti povolované bitem EC v registru IE a globálním bitem EA z registru IE. Všechny žádosti o přerušení jsou tak směrovány na jednu adresu obslužného programu, v kterém musí být z registru CCON zjištěno o jakou žádost se jedná. Nejvyšší prioritu první. Po p přechodu do z PCA modulů bude mít ten modul,, jjehož bit bude testován jjako p obslužného programu je nutné příslušný příznak přerušení CCFn vynulovat programově. Registr CCON CF
CR
---
CCF4
CCF3
CCF2
CCF1
CCF0
Čítač/časovač PCA
Modul 0
Dekodér přerušení
1 Modul 1 Modul 2 Modul 3
EC
EA
IE
IE
Modul 4 CCAPMn
FEL ČVUT
ECCFn
ECF
CMOD
Petr Skalický, katedra radioelektroniky
95
KONFIGURAČNÍ MÓDY PCA SYSTÉMU 16 bitový záchytný systém umožňuje zachytit časový okamžik vzestupné nebo sestupné hrany 16-bitový signálu a dovoluje tak měřit periodu signálů, šířku impulzů, poměr log.0 k log.1 a fázových posunů až pěti signálů (celý PCA). CCON CCFn Nebudou-li moduly využívány, mohou Přerušení být vstupy využity jako zdroje vnějšího CH CL přerušení ř š í s programovatelnou t l aktivní kti í Hranou. CEXn
FEL ČVUT
CCAPnH
CCAPnL
CAPNn
CAPPn
ECCFn
CCAPMn
CCAPMn
CCAPMn
CCAPnH '0' Přetečení
8-bitový pulzně šířkový modugeneruje j impulzy p y s šířkou látor g odpovídající vložené hodnotě v registru CCAPnL. Pro hodinový kmitočet procesoru 16MHz je maximální opakovací kmitočet PWM 15,6 kHz. PWM vytváří modulaci porovnáním spodního registru CCAPnL se spodní částí čítače PCA. Je-li CCAPnL >CL výstup CEXn je nulový a v opačném případě CCAPnL≤ CL je výstup v úrovni log.1. Nemá-li při změně CCAPnL vzniknout na výstupu zákmit, je třeba novou hodnotu zapsat do registru CCAPnH, z kterého se obvodově přenese do registru CCAPnL při přetečení CL (spodní částí čítače PCA).
CL
CL
CCAP L CCAPnL
CL>=CCAPnL
8-bit Komparátor Povolení PWM
Petr Skalický, katedra radioelektroniky
&
Vývod CEXn
'1'
PWMn
CCAPMn
ECOMn
CCAPMn
96
KONFIGURAČNÍ MÓDY PCA SYSTÉMU
1
Zápis p do CCAPnL Časovač watchdog může RESET CCAPM CCAPMn MAT MATn v obvodech PCA zastávat Zápis do Přerušení CCAPnH CCFn pouze čtvrtý modul. V módu CH CL je porovnáván stav čítače '1' '0' CCON s hodnotou uloženou v reCEXn gistrech i h CCAP4L CCA a CCAP4H. CCA 16-bitový komparátor Dojde-li ke shodě při nastaECOMn TOGn ECCFn veném bitu WDTE, dojde CCAPnH CCAPnL k internímu vynulování celéCCAPMn CCAPMn CCAPMn ho systému (není řízen vnější Komparační mód existuje v PCA ve dvou vývod RESET). K tomu, aby k nulování nedošlo, musí být periodicky upravovány variantách: 16-bitový programový čítač hodnoty v komparačních registrech CCAP4L a a 16-bitový komparační mód s rychlým CCAP4H tak, aby nedošlo ke shodě s měnící se výstupem. V módu čítač se generuje pouze přerušení V druhém případě je při shodě s hodnotou čítače PCA. PCA Není-li Není li funkce watchdog atchdog přerušení. využita, potom modul 4 může být nastaven do přednastavenou hodnotou v registrech současně ovlivňován vývod CEXn procesoru. libovolném módu. Porovnání se realizuje třikrát během strojoZápis do CCAPnL RESET vého cyklu, což zajišťuje indikaci shody Zápis do s přesností 1/4 fosc. Od shody může být CCAPnH CH CL generováno přerušení a v něm změněn ob'1' '0' sah registrů nejprve CCAPnL a potom Shoda Přerušení 16-bitový komparátor CCAPnH. Rychlý výstup umožňuje pouze změnu na vývodu CEXn. Přesnost výstupu ECOMn WDTE mnohem lepší, než změna vytvořená v obCCAP4H CCAP4L CCAPMn CCAPMn sluze přerušení (nejistota zavolání) nebo programové obsluze. FEL ČVUT Petr Skalický, katedra radioelektroniky 97
1
ČÍTAČE/ČASOVAČE MIKROPROCESORŮ Z ŘADY AT ČÍTAČE/ČASOVAČE MIKROPROCESORŮ Z ŘADY ATmega mega V jjednočipových p ý p procesorech z řady y Atmega g jjsou integrovány g y 8-bitové, 16-bitové čítače a čítače reálného času. Počet 8 a 16 bitových čítačů závisí na daném typu procesory u nejmenšího ATmega8 je vybaven dvěma 8bitovými a jedním 16bitovým až po ATmega128, který je vybaven dvěma 8bititovými a dvěma 16bitovými s podstatně širšími možnostmi použití.Vzhledem k tomu, že se jedná o procesory vývojově „mladé“, umožňují 8 bitové i 16 bitové široké možnosti nastavení módů v kterých může čítač/časovač pracovat. módů, pracovat U neredukovaných 8 bitových čítačů je možné čítat vzestupně i sestupně s možností přednastavení na hodnotu v registru TCCRn. Na čítač je navázán komparační systém s možností vytvoření klasické PWM, s módem nulování po dosažení shody CTC (např. generátor kmitočtu). Díky až 10 bitovému předděliči a vlastnostem oscilátoru může být využit jako hodiny reálného času s 32kHz krystalem. Čítač/časovač generuje žádost o přerušení od shody komparačního systému a přetečení čítače. Registr TCCRn
Žádost INT - TOVn
Čítání Nulování
datová sběěrnice 8-bitů
Směr čítání
Řídicí logika
Oscilátor
Předělič
TOSC1 TOSC2 Tn
Čítač/časovač TCNT TCNTn
=
=0
= 0xFF
Žádost INT - OCFn
Výstupní generátor
OCn
Registr Registr OCRn
FEL ČVUT
Petr Skalický, katedra radioelektroniky
98
16 BITOVÝ ČÍTAČ/ČASOVAČ MIKROPROCESORŮ Z ŘADY 16 BITOVÝ ČÍTAČ/ČASOVAČ MIKROPROCESORŮ Z ŘADY AT ATmega mega
FEL ČVUT
Registry TCCRxA, TCCRxA TCCRxB,TCCRxC
Žádost INT - TOVx
Čítání Nulování Směr čítání
Řídicí logika
Předělič
Oscilátor
TOSC1 TOSC2 Tx
Čítač/časovač TCNTx
datová sběrnice 8-bitů d ů
Na 16-bitový čítač/časovač TCNTx jsou navázány tři komparační systémy OCxA, OCxB a OCxC a jeden záchytný systém ICRx s filtrem šumu na vstupu detektoru hrany. Čítač může ůž být bý nastaven do d 12 různých ů ý h módů PWM, dvou módů CTC a normálního komparačního módu. Maximální hodnota čítače je v závislosti na módech určena registrem OCRxA, ICRx nebo pevnou hodnotou. Zápis 16-bitové hodnoty do registrů OCRxA /B/C musí proběhnout současně za pomoci TEMP registru. Stejně jako u 8 bitových bit ý h čítačů čít čů je j možné ž é čítat čít t vzestupně i sestupně. V normálním komparačním módu může být při shodě OCRxA/B/C a TCNTx výstup OCxA/B y nebo změněn. /C nastaven, vynulován Zbývající módy jsou určeny pro fázově přesnou PWM, rychlou PWM a fázově-frekvenční PWM. V těchto módech je chování výstupů OcxA /B/C určeno Záchytný systém reaguje na určeno. hranu vývodu ICPx nebo na změnu výstupu analogového komparátoru.
=0
=
Žádost INT - OCFxA
Vý t Výstupní í generátor
= Registr Registr OCRxA Pevná h d t hodnota
Registr Registr OCRxB
Žádost INT - OCFxB
Výstupní generátor
= Registr g ICRx
OCxA
OCxB
Žádost INT - ICPx Žádost INT - OCFxC Výstupní generátor
= Registr Registr OCRxC
Petr Skalický, katedra radioelektroniky
Detektor hrany
Filtr šumu
OCxC Analog komparátor ICPx
99
SPECIÁLNÍ JEDNOTKY MIKROPROCESORŮ Z ŘADY AT SPECIÁLNÍ JEDNOTKY MIKROPROCESORŮ Z ŘADY ATmega mega Jednou J d z takových k ý h jednotek j d k je j binární bi á í modulátor, d lá k ý vytváří který áří logický l i ký součin či z 16-bitového 16 bi éh čítače čí č 1 a 8-bitového čítače 2. Takovou jednotku můžeme využít k například k realizaci modulátoru infračerveného dálkového ovládání s kódem RC5 (viz.obrázek) nebo modulaci OOK (On Off Keying), atd. 1,778ms
1,778ms
27,7us
27,7us
log.1 Čítač/časovač 1
log.0 OC1C Vývod OC1C/OC2/PB7
Čítač/časovač 2
FEL ČVUT
OC2
Petr Skalický, katedra radioelektroniky
100
INTERNÍ OSCILÁTOR MIKROPROCESORU U jjednoobvodových ý mikroprocesorů/řadičů p byly y y nejprve jp na čip p integrovány g y zesilovače oscilátorů, ke kterým je potřeba externě připojit selektivní obvod. Později, u některých jednoduchých řadičů a nebo procesorů, jsou integrovány kalibrované RC oscilátoru ať už ve funkci ochranného obvodu (watchdog nebo kmitočtového komparátoru) nebo i hlavního zdroje synchronizačního hodinového signálu. Nakonec, v důsledku stále se zvyšujícího hodinového synchronizačního signálu, jsou zdrojem hodinového signálu i kmitočtové syntezátory s fázovým závěsem PLL. PLL Synchronizační hodinový signál generuje oscilátor se zesilovačem, který vyžaduje připojení vnějšího selektivního obvodu (krystalový filtr, keramický filtr, LC, RC obvod) a obvykle dvě kapacity. Principiální zapojení oscilátoru s kladnou reaktancí ve zpětné vazbě je zobrazen na obrázku. Pro vznik oscilací musí být napěťové zesílení zesilovače na oscilačním kmitočtu fosc větší než 1 a celko celkový fázový posun v uzavřené zpětnovazební smyčce musí být 0o (360o). Pokud zesilovač otáčí fázi o 180o, potom musí být reaktance zpětnovazebního dvojpólu kladná (induktivní) a fázový posun zpětné vazby na oscilačním kmitočtu -180o. Proto musí být zapojení doplněno kapacitami C1 a C2, abychom takový fázový posun mohli dosáhnout. Výhodou krystalového rezonátoru je, že jeho reakt tance Xf se mění ě í ve velkém lké rozsahu h při ři malé lé změně ě ě frekvence f k ( i o 0,3% (asi 0 3% fosc) a oscilační il č í podmínd í ka tak může být snadno splněna (lze dosáhnout odchylku 0,03% od jmenovitého kmitočtu). Pro keramický filtr je rozsah okolo 3% a pro indukčnost ještě Ucc větší. Externí kapacity C1, C2 mají obvykle stejnou hodRo k časovacím obvodům Rf pro současné zesilovače tvořené hradlem s notu,, která se p zesilovač procesoru hysterezí vstupní charakteristiky v mezích 10 až 40 pF. ochrana T Obecně platí, že při nižších hodnotách kapacit nasazuje vstupu oscilátor lépe oscilace a při vyšších hodnotách je oscilátor stabilnější. Je-li potřeba signál oscilátoru použít i pro Zf další obvody aplikace, aplikace je možné jej odebrat z vývodu XTAL2 obvodem s vysokou vstupní impedancí (např. C1 C2 hradlo CMOS). XTAL1 XTAL2 FEL ČVUT
Petr Skalický, katedra radioelektroniky
101
INTERNÍ OSCILÁTOR MIKROPROCESORU Protože většina současných ý jjednočipových p ý mikroprocesorů p umožňuje j hodinový ý synchronizační y sigg nál v rozsahu od 0 do fMAX, můžeme k internímu zesilovači oscilátoru připojit dostupné krystalové rezonátory se základním harmonickým kmitočtem od 36768 Hz až do 24MHz. Pro vyšší kmitočty jsou k dispozici krystaly pracující na třetí nebo vyšší harmonické. Potlačení základní harmonické krystalu doporučují výrobci sériovým rezonančním obvodem paralelně připojeným ke kapacitě C2 z předcházející stránky. stránky Výhodnější je použít externí integrovaný oscilátor, oscilátor který je k dispozici s kmitočtem od 1MHz do 80MHz, a jehož TTL výstup se připojuje přímo na vývod XTAL1 procesoru. U procesorů s vysokým hodinovým kmitočtem (až jednotky GHz) jsou integrovány interní generátory hodinového signálu se smyčkou fázového závěsu PLL. Interní oscilátor pak pracuje v obvyklém rozmezí krystalů nebo externích oscilátorů (5÷30MHz) a jeho hodnota je fázovým závěsem vynásobena na požadovaný kmitočet. Na obrázku je zobrazena koncepce fázového závěsu integrovaného v mikroprocesoru C8051F12x od firmy Silikon Lab (Cygnal.). Vstupem může být kmitočet z interního nebo externího oscilátoru, který vstupuje do programovatelné děličky hodnotou PLL_DIV (1÷31). Její výstup vstupuje do fázově-frekvenčního detektoru jako referenční signál pro PLL. Kmitočet generovaný proudově ovládaným oscilátorem prochází programovatel programovatelnou děličkou PLL_MUL v rozmezí (1÷255) do fázového komparátoru. Hodinový synchronizační signál procesoru je pak dán vztahem Registr PLL_CN Interní oscilátor Externí oscilátor
0 1
Dělič kmitočtu 1:PLL_DIV
Fref
Fázově kmitočtový detektor
Registr PLL_FLT
Filtr smyčky
Napětím řízený oscilátor
FCLK = Freff .
PLL _ MUL PLL _ DIV
FCLK
Dělič kmitočtu 1:PLL_MUL
FEL ČVUT
Petr Skalický, katedra radioelektroniky
102
INTERNÍ OSCILÁTORY MIKROPROCESORŮ U některých procesorů určených zvláště pro průmyslové aplikace jsou na čipu integrointegro vány jednoduché RC oscilátory, které jsou využívány jako zdroje signálu pro hlídací časovač procesoru nebo hlídací obvod oscilátoru. Realizace interního RC oscilátoru ve spojení s kmitočtovým komparátorem umožňuje realizaci hlídacího obvodu interního krystalového oscilátoru, který v průmyslové bezobslužné aplikaci identifikuje případný výpadek krystalového oscilátoru a zastoupí jeho funkci. Případný výpadek oscilátoru by způsobil nejen zastavení činnosti procesoru, ale mohly by externí periferie zůstat v aktivním stavu bez možnosti vyvolání změny takového stavu. Pro takové aplikace je vhodné použít procesor s hlídacím obvodem krystalového oscilátoru, u kterého v případě jeho výpadku provede kmitočtový komparátor automatické přepnutí na alternativní zdroj hodinového signálu, signálu realizovaného obvykle RC oscilátorem s nižším kmitočtem, než má standardní krystalový oscilátor. U některých mikroprocesorů jsou přímo na čipu implestavový bit OWDS XTAL1 mentovány jednoduché RC oscilátory ve funkci hlídacího žádost o interní časovače procesoru (watchdog). Jeho výhodou je, že je kmitočtový nulování XTAL2 oscilátor komparátor nezávislý á i lý na funkci f k i krystalového k l éh oscilátoru, ilá a může ůž vynulovat procesor signálem RST, pokud není včas uživnitřní hodiny hlídací vatelským programem nulován. Stejnou funkci nám OWE interní řízený přepínač může realizovat externí watchdog. Určitou nevýhodou oscilátor takového obvodu jje to,, že jjeho kmitočet se může měnit s OWE - vnější signál, povolení hlídání kmitočtu teplotou a napájecím napětím a tudíž interval, za který oscilátoru dojde k nulování procesoru se může poněkud měnit.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
103
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY ‐‐ ÚVOD Interní A/D a p případně p D/A p převodníky y se vyskytují y y j p převážně v jjednočipových p ý p procesorech. Paradoxně existuje jen velmi málo signálových procesorů, které mají převodníky integrované na čipu. Připojení převodníků pro zpracování zvuku se obvykle realizuje „kodeky“ (integrované A/D a D/A převodníky s antialiasingovým a rekonstrukčním filtrem) přes synchronní sériový kanál s rámcovou synchronizací. Rychlé převodníky pro zpracování kmitočtů v rozsahu 200kHz a výše se obvykle realizuje paralelním připojením ke sběrnici signálového procesoru (případně s využitím přímého přístupu do paměti (DMA) za pomoci FIFO pamětí). V pásmu nad 50MHz jsou převodníky propojeny s výkonným programovatelným logickým polem (FPGA) a předzpracování je signál s rozumným vzorkovacím kmitočtem přenášen do DSP. V případě osobních počítačů se výhradně využívají zásuvné karty s A/D nebo D/A převodníky pro příslušné rozhraní. Jednočipové procesory se vyrábí s A/D převodníky s 8, 10, 12, 16 a 24 bity, D/A převodníky jsou spíše výjimkou s 10 a 12 bity. Rychlejší A/D převodníky jsou v případě 8, 10 a 12 bitového převodu převážně s postupnou aproximací s vzorkovacím kmitočtem 50kHz až 500kHz a D/A převodníkem s odporovou (PAM) nebo kapacitní sítí (PAC). Vícebitové převodníky 16 a 24 bitů jsou realizovány Δ Delta převodníkem. Menší mikroprocesory jsou vybaveny analogovým kompa komparátorem, který umožňuje A/D převod pomocí převodu na časový interval obvykle měřený záchytným systémem. Referenční napětí převodníku může být externí, interní nebo případně programovatelné. Před převodníkem je vstupní analogový multiplexer se 4, 6, 8, 12 a 16 analogových vstupy, které mohou být konec převodu AN0/Px.0 alternativně využity jako logicžádosti o přerušení Řízení převodníku overrun error ké vstupy. Obvod S/H (T/H) je interní bez možnosti použití MUX S/H Převodník A/D Registr výsledku externího obvodu. Časování převodu je pevné nebo s pro programovatelnou dobou převodu. VAREF VAGND AN7/Px.7
FEL ČVUT
číslicové vstupy
Petr Skalický, katedra radioelektroniky
104
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– VSTUPNÍ OBVOD Náhradní zapojení vstupu A/D převodníku ovlivňuje systematickou chybu převodu, má vliv na naměřené hodnoty při přepínání mezi analogovými vstupy převodníku a předurčuje vlastnosti nutných ochranných obvodů v aplikaci. ANi+1/Px.i+1 ANi/Px.i analogové vstupní napětí
S i+1
Ri+1
Si
Ri
-0,7V÷ +20V
< 2pF k obvodu S/H
<4kΩ
400nA zbytkový b tk ý proud
20pF
analogová zem
Na obrázcích jsou náhradní zapojení procesoru 80C552 a Motorola 68HC11xx. Obě zapojení se liší R = 0,5 až 3kΩ hlavně tím, jak je u nich jinak kladen důraz na Cs + C = 15pF R i < 9,6k Ω pro t S/H =1 μ s ochranné prvky. Hodnota vnitřního odporu Ri je UDD stanovena tak, aby aperturové zkreslení bylo menší než ½ LSB. Moderní procesory se Δ-Delta převodníkem mají náhradní zapojení shodné s obrázkem Uvst R>5k vlevo (bez vstupní kapacity - RC dělič) s těmito ADC n parametry TI-MSC1210 R=8kΩ, C=12pF, CygnalShotkyho diody R např. KAS22/40 C8051F12x R=5kΩ, C=10pF. Doby vzorkování obvodů S/H se pohybují od jednoho do několika strojových AU ref - - 0,2V 0 2V < ADCn < AU ref + + 0,2V 2V cyklů klů procesoru a proto mohou h být bý regulárně lá ě vzorkok vány signály nejvýše v pásmu akustických kmitočtů. Důležitým parametrem je doba převodu, která je vázána na strojové cykly a trvá obvykle desítky strojových cyklů. Skládá se doby nabíjení vstupní kapacity analogového vstupu (Cin=25 až 60pF), doby připojení vzorkovací kapacity na vybraný vstup a vlastní doby převodu. převodu Konečná doba odběru vzorku analogového signálu způsobuje aperturové zkreslení (signál se během vzorkování mění). Má-li při vzorkování být splněn vzorkovací teorém, je nutné omezit šířku pásma signálu antialiasingovým filtrem (dolní propustí), který zabrání překrývání složek spektra po navzorkování signálu. FEL ČVUT Petr Skalický, katedra radioelektroniky 105 Cs
C
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– D/A PŘEVODNÍKY Největší rozdíly v konstrukci převodníků mezi jednotlivými výrobci najdeme hlavně v realizaci D/A převodníku. Klasicky konstruované převodníky je využívají odporovou síť (odporový dělič) 80C552 nebo síť R-2R AT89C51AC2 nebo D/A převodník s programovatelným referenčním napětím SAB80C517. Na obrázku je skupinové zapojení převodníku procesoru 80C552, který je vybaven osmivstupovým multiplexerem. Doba převodu je u tohoto převodníku padesát strojových cyklů. klů A/D převodník ř d ík procesoru používá ží á externí t í napěťovou ěť referenci f i na vývodech ý d h AUref+ a AUref-, které převodník rozdělí na 1024 diskrétních hodnot pomocí odporového děliče na obou koncích zakončeného odpory R/2. Rezistorová síť vytváří proměnné referenční napětí pro postupnou aproximaci a současně zajišťuje při převodu posun o 1LSB. interní sběrnice procesoru LSB
ADCON
MSB
AADR0
AADR1
AADR2
ADCS
ADCI
ADEX
ADC0
ADC1
ADC2 ...............ADC9
ADCH P5.0 Komparátor MUX
+
řízení aprox. reg.
EXT. SPOUŠTĚNÍ PŘEVODU
aproximační reg.
P5.7
dekodér 1 z 210 1023 1022 1021 1020
4
3
2
1
AU ref-
AUref+ R/2
FEL ČVUT
R
R
R
R
R
Petr Skalický, katedra radioelektroniky
R
R/2
106
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– D/A PŘEVODNÍKY ADCON P5.0
12 12x
aproximační A/D
obvod S/H
MUX 12:1
řídící registr A/D převodníku
komparátor
S
+
ADDAT
-
aproximační a výsledkový registr 8 bitů
C DAC
P6.3
Uref max
výsledek
Uref min
+Uref DAC
i interní í sběrnice procesoru
DAC
-Uref
Procesor SAB80C517A měl zajímavou koncepci D/A převodníku. převodníku Vlastnímu A/D převodpřevod níku je předřazen multiplexor s dvanácti vstupy s obvodem S/H (Sample and Hold). Referenční napětí pro D/A převodník, který je součástí aproximačního A/D převodníku je programovatelné. Díky takové-mu řešení bylo možné 8-bitový převod opakovat s jinými referenčními úrovněmi a dosáhnout tak zpřesnění převodu. Protože referenční úrovně musely být minimálně 4 úrovně od sebe, zlepšení bylo maximálně o dva bity. I tak se v dané době jednalo o nejrychlejší 10-bitový převod v μP. FEL ČVUT
DAPR řídící registr rozsahu
Uin 5V
převodní charakteristika při prvním převodu LSB=19,6mV
Uin 3,125V
převodní charakteristika při druhém převodu LSB=4,8mV
3,125 2,2V 1,875
0V
00h
2,2V 70h
Petr Skalický, katedra radioelektroniky
FFh
1,875
00h 42h
FFh
107
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– D/A PŘEVODNÍKY Ve snaze nahradit realizaci odporových p ý sítí, která musí být ý laserově dostavována ve fázi výroby ý y (výrobně drahé), začaly firmy využívat kapacitní D/A převodník. Mezi prvními byla firma Motorola, která jej integrovala do procesoru 68HC11xx. Na obrázku je zobrazen čtyřbitový s D/A převodník, který pracuje na principu přerozdělování náboje v kapacitách řízených přepínači P1 až P5. Výhodou řešení je jednodušší a přesnější výroba integrovaných kapacit, než integrovaných odporů Podobné výsledky lze dosáhnout i s menším počtem kapacit tak, odporů. tak že přerozdělování náboje se provede postupně. Počet bitů je omezen velib3 kostí a kvalitou kapacit. Převod čísla na analo+ Uin aprox. reg. gové napětí probíhá postupným vybíjením/nabíreg. výsledek řízení jením kapacit se stejnou hodnotou tak, aby nab0 start b0 pětí mělo chybu
C/2
C/4
C/8
P3
P4
P5
P2
Uout
Uref 15Uref/16
C/8 7Uref/8 3Uref/4
Uref start
b3
b2
b1
Uref
S2
S4
S3
5Uref/8
3Uref/8 Uref/4
C
2
2
5Uref/16 3Uref/16
Uref/8
3 1 Petr Skalický, katedra radioelektroniky
9Uref/16 7Uref/16
Uout
S6
S5 1
FEL ČVUT
C
11Uref/16
Uref/2
OP +
S1 C
b0
13Uref/16
3
Uref/16 4 stupeň aprox.
108
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– Δ‐DELTA Na p přelomu století vstoupili p do výroby ý y jjednočipových p ý p procesorů z řady y 8051 firmy y Analog g Device ADuC816 (AduC824) a posléze i Texas Instruments ve spolupráci s firmou Burr-Brown s procesorem MSC1210, které jsou vybaveny Sigma-Delta A/D převodníkem 16 a 24 bitů. Oba přinesli značné oživení ve vývoji a velmi rychle byla prolomena hranice používaných 8, 10 a 12 bitových A/D převodníků integrovaných do μP. Na vstupu A/D převodníku je analogový multiplexer, který zajišťuje výběr požadovaného analogového vstupu (0 až Uref) nebo rozdílu mezi dvěma vodiči (-Uref až Uref). Za multiplexerem mohou být připojeny proudové zdroje (100nA), které umožňují zjistit zda zvolený analogový vstup je zapojen či nikoliv. Před oddělovacím zesilovačem s velkým vstupním odporem může být implementován obvod prohazující vstupní signály do zesilovače za účelem eliminace offsetu a teplotního driftu. Za oddělovačem následuje zesilovač PGA s programovatelným zesílením v rozsahu 1 až 128, který zajišťuje symetrický napěťový rozsah ±20, 40, 80, 160, 320, 640mV nebo 1,28 a 2,56V. Za zesilovačem je připojen Sigma-Delta modulátor následovaný programovatelným číslicovým filtrem s charakteristikou sinc3 nebo sinc2. Pro vyšší vzorkovací kmitočet číslicového filtru budeme získávat výsledné ý l d é hodnoty h d t častěji, č těji ale l z větším ětší rozptylem t l výstupních ý t í h hodnot. h d t Stanovíme-li St í li histogram hi t výstupý t ních hodnot pro konstantní napětí, potom inflexní bod určuje střední směrodatnou odchylku a její 6,6 násobek určuje interval špička-špička měřeného signálu. Tato hodnota je důležitá pro stanovení stabilního údaje na displeji měřícího přístroje. Bylo-li na vstupu použito prohazování vstupů, za j zpětné p prohazování ((změna znaménka). p ) Před uložením výsledku ý do registrů g filtrem následuje převodníků mohou být obvody průměrování, změny měřítka a přičtení kalibračního koeficientu. UDD Uref
Ain0 Ain1 MUX Ain7
FEL ČVUT
Buffer
PGA
Sigma-Delta Modulátor Řízení modulátoru
Číslicový filtr
Petr Skalický, katedra radioelektroniky
Úprava a uložení výsledku
109
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– Δ‐DELTA A/D Sigma-Delta g převodník p p převádí vstupní p napětí p na p posloupnost p 0 a 1, jjejíž j střední hodnota odpovídá měřenému napětí. K tomu je využito principu převzorkování, které umožňuje snížení kvantizačního šumu. Výhodou sigma-delta modulátoru je navíc přetvarování průběhu kvantizačního šumu (potlačení šumu v oblasti nízkých kmitočtů). Měřené napětí je přivedeno na diferenciální zesilovač, kde se od něj odečítá výstup obvykle 1-bitového D/A převodníku s úrovněmi –Uref a +Uref.. Signál z výstupu zesilovače je integrován v obvodu (DP) prvého nebo druhého řádu a připři veden na komparátor, který řídí D/A převodník. Jeho výstup je vzorkován vysokým kmitočtem (např. 512x vyšším, než fmax in). Číslicový filtr na výstupu Δ-Delta modulátoru funguje jako průměrovací obvod posloupnosti nul a jedniček vystupujících z komparátoru Δ-Delta modulátoru. Dvoustavový výstup z komparátoru je tak filtrem převeden na pásmově omezený signál s velmi malým šumem. Číslicový Č filtr je dolní propust typu Sinc2, Sinc3 nebo rychlého nastavení, jehož základní funkcí je potlačit kvantizační šum modulátoru. N je decimační poměr a fMOD je kmitočet modulátoru. Zlomový kmitočet filtru a decimační poměr jsou programovatelné pomocí speciálních funkčních registrů SFR. Obě veličiny ovlivňují datový tok výstupních hodnot z A/D převodníku. Vhodným naprogramováním může být například účinně potlačen síťový kmitočet 50 nebo 60Hz. Uin
Dif. zesilovač + -
Komparátor
Integrátor
+ -
DAC
⎛ π. f .N ⎞ ⎟⎟ | H ( f ) = sin i ⎜⎜ ⎝ f MOD ⎠ FEL ČVUT
⎛ π. f ⎞ ⎟⎟ N . sin i ⎜⎜ ⎝ f MOD ⎠
3
Petr Skalický, katedra radioelektroniky
110
INTERNÍ A/D PŘEVODNÍKY INTERNÍ A/D PŘEVODNÍKY –– INTEGRAČNÍ A/D Realizace integračního g převodníku s jjednoduchou nebo dvojitou p j integrací g jje u jjednoduchých ý μP μ podporována buď interním komparátorem (AT89C2051/4051, řady S,LP) nebo hysterezí číslicového vstupu, kterou je možné využít k porovnání hodnoty vstupního analogového napětí s konstantním napětím Uref (PIC16F5x). Integrační A/D převodníky vyžadují externí prvky jako jsou řízené spínače analogových napětí (např. CD4066) a operační zesilovače (skoro libovolný typ např. např OP90). OP90) Zapojení A/D převodníku s dvojí integrací podporované procesorem PIC16F54 je zobrazeno na obrázku. Měření napětí se převádí na měření času, který je potřebný k nabití kondenzátoru C na vyšší napětí hystereze. Případná pomalá změna tohoto napětí s teplotou nebo napájecím napětím se neprojeví, protože se uplatní jak při měření referenčního Uref, tak i neznámého napětí Ux. Časový interval měříme časovačem nebo záchytným systémem. Před vlastním měřením se na neinvertující vstup OZ zapne měřené napětí, buď Uref, nebo Ux . Pomocí externích spínačů S3, S4 a interního S5 se nastaví režim napěťového sledovače. Po ustálení napětí na integračním kondensátoru přepne program spínače S3,S4 a S5 do režimu integrace (měření) a současně spustí časovač. Silná záporná zpětná vazba OZ bude na invertující vstupu udržovat napětí Ux a kondenzátorem C poteče téměř lineární proud přes odpor R (IR= Ux /R). Napětí na vstupu s hyste hysterezí bude lineárně vzrůstat z nuly až k UCC. V okamžiku dosažení prahové úrovně bude časovač zastaven a vyjádřen počtem strojových cyklů. Měřené napětí pak vypočteme
U x = U ref (Tx /Tref ) Ux Uref
S1
S2
Uvst
Uvst
vstup s hysterezí
+ OZ -
+ OZ -
Uvst
vstup s hysterezí
+ OZ -
vstup s hysterezí
S3 3S V/V R
C
S4
S5
3S V/V R
C
PIC16F54
FEL ČVUT
3S V/V R
C
S5
PIC16F54 Režim sledování
Petr Skalický, katedra radioelektroniky
PIC16F54 Režim měření
111
INTERNÍ D/A PŘEVODNÍKY Do konce 20 století bylo y nutné D/A p převod realizovat p pomocí externího p převodníku s p paralelním 2 nebo sériovým rozhraním (I C, SPI) nebo využívat externí nebo interní pulzně šířkový modulátor (PWM) s nezbytnou filtrací. Několik výrobců jednočipových procesorů nakonec přistoupilo k integrování jednoho nebo dvou 12 bitových D/A převodníků přímo na čip procesoru (ADuC812, 816, 824 a 834 od firmy Analog Devices, C8051F00x, 02x a 12x od firmy Cygnal). Převodníky jsou tvořeny odporovou sítí, sítí která má velmi dobrou diferenciální nelinearitu, nelinearitu na jejímž výstupu je připojen výstupní operační zesilovač (Analog Devices), který je schopen pracovat do zátěže tvořené odporem 10 kΩ a kapacitou 100 pF. Výstupní napětí převodníků je volitelné v rozsahu 0 až Uref (Uref=2.5V u AD a interní Uref=2.4V Cygnal) nebo v rozsahu 0 až UCC. Převodník může pracovat v 8 nebo 12 bitovém rozlišení s tím, že 12 bitů musí být zapsáno do dvou registrů v definovaném pořadí určeném výrobcem. Zápis jedné hodnoty se ve výstupu uplatní teprve se zápisem druhé části 12 bitové hodnoty a změní se hodnota výstupu. V případě procesorů Analog Devices jsou převodníky DAC v módu 0 až UCC použitelné v oblasti od kódu 48 až po 3945. V oblastech kódů 0 až 48 a 3945 až 4095 dochází k degradaci linearity v oblasti Ucc nuly a napájecího napětí v důsledku saturace výstupního zesilovače. zesilovače V Uref módu výstupu O až Uref< UCC je výstupní charakteristika v oblasti nuly R mírně ovlivněna, ale v oblasti Uref je lineární. Převodníky D/A je možno DACx + deaktivovat nastavením příslušného bitu v řídícím registru a jejich R výstupy pak přechází do stavu vysoké impedance. Při připojení procesoru k napájení áj í jsou j D/A převodníky ř d ík deaktivované d kti é dokud d k d nejsou j programem aktivovány. Je-li potřeba výstup podržet v nulové nebo maxiR mální úrovni musíme výstup D/A převodníku upnout přes odpor k zemi nebo napájení. V případě procesorů od firmy Cygnal nejsou u D/A přeR popisovány p y žádné p problémy y s jjejich j využitím y v celém rozsahu. vodníků p
FEL ČVUT
Petr Skalický, katedra radioelektroniky
112
REVERZNĚ BITOVÉ A KRUHOVÉ ADRESOVÁNÍ Sběrnice DMD
16 bitů
14
14
14
z instrukce 2
MUX
M Registry 4x14 bitů
L Registry 4x14 bitů
Modulární logika
Pouze DAG1
ARP (3)
14 bitů
AR0 BK lk 1
D Bus E Bus
FEL ČVUT
± % 0 b AR0
BK
1
ARAU1 ±
%
MUX
DA Bus
ARAU0
EA Bus
MUX
AR0 - index AR1 AR2 AR3 AR4 AR5 AR6 AR7 BK
4x14 bitů
2
ADD
Bitová reverze Adresová sběrnice
Generátory G át adres d signálových i ál ý h procesorů ů (nebo ( b alespoň jeden) musí umět následující módy adresování, které jsou potřeba v algoritmech číslicového zpracování signálu.
0 CA Bus
I Registry
z instrukce
přímé nepřímé s dekrementací (-1), inkrementací (+1) a indexovým posunem (± index) kruhové (modulo) s dekrementací, inkrementací a indexovým posunem reverzně bitové s dekrementací, inkrementací a indexovým posunem
Petr Skalický, katedra radioelektroniky
113
KRUHOVÉ ADRESOVÁNÍ Jako příklad si vezměme generátor DAG1 procesoru ADSP21xx, který je vybaven adresovými registry I0 až I3, modifikačními registry M0 až M3 a délkovými registry L0 až L3 a pro přístup použijeme nepřímé adresování např. datové paměti DM ( I0, M2). Při realizaci kruhového adresování se po přístupu na paměťové místo určené adresou I0 bude adresa I0 modifikovat podle vztahu pro Lx>0.
Ixnová = ( Ixstará + Mz − B ) mod Lx + B kde Mz je použitý modifikační registr (|Mz|
B = Adresa ∩ (2 n − 1),
kde 2 n −1 < Lx < 2 n
Bázová adresa kruhového zásobníku je adresa, která má n nejnižších bitů nulových, kde n vyhovuje druhé z výše uvedených rovnic. Příklady: Pro M1=1, L0=3 a I0=5, pak při opakování instrukce AX0=DM(I0,M1) bude registr I0 postupně ukazovat na adresy 5, 6, 4, 5, 6, 4. Pro M2 M2=3, 3, L0 L0=5 5 a I0 I0=9, 9, pak při opakování instrukce AX0=DM(I0,M2) bude registr I0 postupně ukazovat na adresy 9, 12, 10, 8, 11, 9, atd. FEL ČVUT
Petr Skalický, katedra radioelektroniky
114
IMPLEMENTACE KRUHOVÉHO ADRESOVÁNÍ Na procesorech TMS320C54x a 54xx existují místo registrů Ix registry ARn, ARn modifikace je realizována o +1 (např. *AR2+), o -1 (např. *AR3-), nebo o hodnotu indexu (registr AR0). Délkový registr BK je pouze jeden. Zápis stejné operace kruhového adresování jako v předcházejícím případě (AR3=9, BK=5, AR0=3) bude po adresování datové p paměti bude AR3 zvětšen o hodnotu AR0 *AR3+0% - p v kruhovém zásobníku kde 0 znamená použití indexového posunu (AR0) a % použiti kruhového adresování. Na obrázku je naznačeno vytvoření počáteční a koncové adresy kruhového zásobníku a způsob vytvoření nové adresy, která bude uložena do registru AR3. 15
ARn
H ..... H
15
AR0
n n-1
0
L ............... L
n n-1
0 ..... 0
15
BK
0
L ............... L
n n-1
0 ..... 0
15
0
1 x ............... x
n n-1
0
EOB+1 H ..... H 1 x ............... x
Operace 15
EFB
Logika L ik k kruhového h éh adresování Mezivýsledek Nová adresa do ARn
FEL ČVUT
0 ..... 0 15
L' ............... L'
n n-1 n1
0
H ..... H L' ............... L'
n n-1
0
H ..... H 0 .................. 0
H - horní bity registru ARn L - spodní bity registru ARn L' - aktuální spodní bity reg. ARn EFB - bázová adresa EOB - koncová adresa bufferu
Petr Skalický, katedra radioelektroniky
115
REVERZNĚ BITOVÉ ADRESOVÁNÍ Reverzně bitové adresování jje operace p potřebná na vstupu p p rychlé y Fourierovy y transformace FFT s decimací v čase nebo na výstupu FFT při decimaci v kmitočtu. Reverzně bitové adresování spočívá ve vyjádření současné pozice vzorku signálu binárním číslem, u kterého prohodíme nejvyšší bit s nejnižším, druhý nejvyšší s druhým nejnižším, atd. Získané binární číslo určuje pozici vzorku před vstupem do algoritmu FFT (problém bázové adresy byl zanedbán). Příklad: Reverzujte pořadí 8 časových vzorků umístěných od adresy 1000 a uložte je od adresy 2000. Binární pořadí 000 001 010 011 100 101 110 111
Adresa 1000 1001 1002 1003 1004 1005 1006 1007
Hodnota
Hodnota
Reverzované pořadí
Adresa
54 68 79 95 103 94 87 77
54 103 79 87 68 94 95 77
000 100 010 110 001 101 011 111
2000 2001 2002 2003 2004 2005 2006 2007
Sběrnice DMD
16 bitů
14
14
14
z instrukce 2
MUX
M Registry 4x14 bitů
L Registry 4x14 bitů
Modulární logika
Pouze DAG1
FEL ČVUT
14 bitů
I Registry 4x14 bitů
ADD
z instrukce 2
Pro postupně získávané nebo čtené vzorky je potřeba generovat tyto adresy pro uložení vzorků před vstupem do výpočtu FFT 2000 2004 2002 2006 2001 2005 2003 a 2007. V tomto případě se přístup firem liší, takže si popíšeme obě myšlenky. Firma Analog Devices má na výstupu generátoru DAG1 reverzující jednotku. Do registru Ix ulo uložíme bitově reverzní počáteční cílovou adresu tj. 00 0000 0000 0001 a do registru Mn uložíme bitově reverzní hodnotu N/2 tj. 00 1000 0000 0000 (N je j počet č t vzorků). ků)
Bitová reverze Adresová sběrnice Petr Skalický, katedra radioelektroniky
116
REVERZNĚ BITOVÉ ADRESOVÁNÍ Obě hodnoty y se normálně v DAG1 sčítají j ((s p přenosem doleva)) a na výstupu ý p g generátoru se bitově reverzují tj prohodí adresový bit A13 ↔ A0, A12 ↔ A1, A11 ↔ A3, atd. Postupný součet Ix+Mn 00 0000 0000 0001 00 1000 0000 0001 01 0000 0000 0001 01 1000 0000 0001 10 0000 0000 0001 10 1000 0000 0001 11 0000 0000 0001 11 1000 0000 0001
Bitově reverzní hodnota 10 0000 0000 0000 10 0000 0000 0100 10 0000 0000 0010 10 0000 0000 0110 10 0000 0000 0001 10 0000 0000 0101 10 0000 0000 0011 10 0000 0000 0111
V generátorech adres signálových procesorů od Texas Instruments je sčítačka, u které v závislosti na bitu bit v operačním č í kódu kód instrukce, i t k sčítá čítá s přenosem ř d l doleva ( (normální) ál í) nebo b doprava d (bitově (bit ě reverzní). Adresy cíle, za předpokladu AR3=2000, AR0=4, by zajistila instrukce *AR3+0B, kde B indikuje součet s revezně bitovým přenosem.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
117
PAMĚŤ Součástky s paměťovou funkcí a jejich označení Paměťový člen - paměť hodnoty jednoho bitu (Flip-Flop) S
R
&
&
Q
Q
Paměťový člen RS
i +1
Q = S + R .Q pro R i .S i = 0 i
i
D
Q
H
Q
D
J K H
Q
Q
R S
Q
H R S
Paměťový člen D řízený úrovní
Q
Paměťový člen D řízený náběžnou hranou
Paměťový člen JK řízený sestupnou hranou
Operátory paměťových členů i
Q i +1 = H i .Q i + H i .Q i
Q i +1 = D i
Q i +1 = J i .Q i + K i .Q i
Důležité parametry Zpoždění ze vstupu R a S na výstupy Q a nonQ. Vstupy R i S mohou být současně aktivní, ale výstupy Q a nonQ nejsou komplementární. Současný přechod R a S 0→1 velmi nebezpečný. FEL ČVUT
Zpoždění výstupu Q od výkonné změny na vstupu H (tpH→Q). Předstih na vstupu D nebo J J,K K před výkonnou úrovní nebo hranou na vstupu H (tsetup ) t ). Přenos hodnoty z D Vzestupnou hranou H na Q při úrovní log.1 řízený obvod. na vstupu H. Přechod dem H do d úrovně ú ě log.0 se na výstupu Q uchová poslední hodPetr Skalický, katedra radioelektroniky nota.
Obvod řízený sestupnou hranou H. Zpoždění tsetup pro obvody M t Sl Master-Slave j rovje no šířce hodinového impulzu na vstupu H 118 v log.1.
PAMĚŤ Součástky s paměťovou funkcí a jejich označení Registr - paměť většího počtu bitů (2, 4, 6 nebo 8 bitů) D0 D1 D2 D3
Q0 Q1 Q2
D0
D
Q
Q0
H
Q3
R S
Q
D
Q
H R S
D1
Q1
H R S
D3
D
H R S
H R S
Q
Q
Q3
Registr je součástka pro zachycení většího počtu bitů j d í jedním h di hodinovým ý signálem. i ál J h výkonnou Jeho ýk h hranou může být náběžná hrana, zřídka sestupná. Latch je registr, jehož paměťové členy jsou řízeny úrovní (log.1) na hodinovém vstupu H. Výstupy jsou po výkonné hraně p H určeny y operátorem p použitých p ý PČ v nebo úrovni vstupu obvodu. Důležitými parametry pro správnou činnost jsou tpH→Q a tsetup. Nedodržení tsetup může způsobit vznik metastabilního stavu stavu.
Q
Použití: Vyrovnávací paměť – uchování krátce platné hodnoty po delší dobu, hodnoty předávané do jiného zařízení nebo k vytvoření struktury se sdílením času („pipeline“ ), která umožňuje zvýšení výkonu daného zařízení. Výstupní brána procesorového systému. Paměť vnitřních proměnných synchronního sekvenčního obvodu. Registr s třístavovým výstupem lze použít ží i jako j k vstupníí bránu b á procesorového éh systému. é FEL ČVUT
Petr Skalický, katedra radioelektroniky
119
PAMĚŤ Součástky s paměťovou funkcí a jejich označení Posuvný registr - paměť většího počtu bitů Q0 SI
H R S
Q0 Q1 Q2 Q3
SI
D
Q
H R S
Q1 D
Q
H Q
R S
Q3 D
Q
H Q
R S
Q
S R H
Posuvný registr je součástka pro zachycení většího počtu bitů přicházejících sériově nebo k vytváření t ář í sériové é i é posloupnosti. l ti Posuvný P ý registr i t může ůž být sériově-paralelní é i ě l l í (viz.obrázek), ( i b á k) paralelně sériový nebo kombinace obou variant. Výkonnou hranou může být náběžná nebo sestupná hrana. Důležitými parametry pro správnou činnost jsou tpH→Q a tsetup. Nedodržení tsetup může způsobit vznik metastabilního stavu a následné uložení chybné informace.
Použití: Generování nebo příjem sériových posloupností. Sériové vstupní a výstupní brány procesorového systému. Paměť vnitřních proměnných binárních generátorů.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
120
PAMĚŤ Obecné vlastnosti
Základní struktura Vstupy
Pevné pole AND
Každé paměťové místo pro čtení nebo zápis je dostupné přes adresu (stav vstupů A0÷An), výstupy obvodu jsou s třístavovým výstupem nebo s otevřeným kolektorem. kolektorem Čtená data jsou dostupná na výstupech Q0÷Qm. Zapisovaná data jsou přivedena na vývody Q0÷Qm, výjimečně na zvláštní vstupy.
(Adresový dekodér)
A0 A1
Výstupy Q0 Q1
Při zápisu musí být CS=WR=0 a OE=1
Q2
Je-li obvod vybaven dvěma vstupy CS, pak druhý vstup CS2 je obvykle aktivní v log.1. log 1
CS
WR
Q3
OE
Programovatelné pole OR
ý CS=OE=0,, p případně p Při čtení musí být WR=1
Doba vybavení - určuje čas potřebný k získání platné hodnoty výstupu (1, 4, 8, 16 bitů) od platné adresy A0÷An a signálu CS. CS
Paměť je obvod vybavený n+1 adresovacími vstupy A0÷An, m+1 výstupy Q0÷Qm, aktivač- Doba aktivace třístavového budiče určuje čas potřebný k aktivaci výstupního ním vstupem paměti CS (Chip Select) třístavového budiče výstupů Q0÷Qm. Přibližně případně CE (Chip Enable) obvykle aktivje roven 1/2 až 1/3 doby vybavení. ním v log.0, log 0 vstupem ovládajícím třístavový budič OE, případně vstupem pro zápis WR, které jsou aktivní v log.0. FEL ČVUT
Petr Skalický, katedra radioelektroniky
121
PAMĚTI ROM Vlastnosti paměti V aplikacích, kde jsou data nebo program uloženy „navždy“, se využívá paměť ROM (Read Only Memory). Jedná se o tzv. ”nonvolatile” paměť, protože její obsah zůstání zachován i po odpojení od napájení. Obvykle je obsah paměti ROM naprogramován již ve fázi výroby obvodu nebo procesoru. procesoru Existují ale i paměti, paměti které si může návrhář sám naprogramovat v programáprogramá toru např. bipolární PROM (přepalitelné propojky) nebo OTP (One Time Programmable–obvykle programovatelné pouze jednou EPROM bez možnosti smazání). Obsahem ROM v současné době bývá: program kalkulaček, „loader“-program pro sériové nahrávání programové paměti Flash jednočipového procesoru (např. Atmel), dešifrující „loader“ pro nahrávání programové paměti RAM (zakázkově pro signálové procesory), tabulky goniometrických funkcí nebo kompresních zákonů μ-law nebo A-law (signálové procesory), jednoúčelové domácí zařízení. Řada zařízení (např. automobily, telefony, atd.) jsou vybaveny pamětmi, které lze programovat vícekrát, i když jsou v aplikaci používány výhradně ke čtení programu nebo tabulek. tabulek Schématická značka paměti ROM A0 A1 A2 A3 CS
FEL ČVUT
Q0 Q1 Q2 Q3
Doba vybavení – tACC (Access time) je pro obvody v bipolární technologii tACC=30 až 90ns a pro paměti v unipolární á í technologii tACC=70 až 250ns. Doba aktivace třístavového budiče - tOE (Output enable time) je pro obvody v bipolární technologii tOE =20ns a pro paměti v unipolární technologii tOE =25 až 100ns 100ns.
Petr Skalický, katedra radioelektroniky
122
PAMĚTI ROM Realizace paměťové buňky ROM – diodou, diodou bipolárním a unipolárním tranzistorem Výstup dekodéru adres +U
+U
Vstup obvodu OR
log.1
log.0
log.1 log.0
log.1 log.0
Použití ROM – V počátcích procesorové techniky se stavěly jako desky na PCB. Nyní pouze jako součást navrhovaného obvodu VLSI. Před 30 lety se využívaly bipolární PROM jako paměti programu a k realizaci logických kombinačních obvodů b dů (složité ( l žité funkce f k s časovými č ý i parametry TTL v jediném obvodu).
Realizace paměťové buňky PROM Výstup dekodéru adres +U R' NiCr
D1
FEL ČVUT
R
R Q0
Vstup obvodu OR NiCr
Q3
Nepoužitá paměť PROM obsahuje na všech adresových místech hodnotu log.1 nebo log.0. Zápis se realizuje dostatečným proudem (cca 10 mA), mA) který způsobí přepálení tavné pojistpojist ky z niklu a chrómu (NiCr) nebo průrazem diody D1. Tím se definitivně na příslušné místo zapíše hodnota log.0 nebo log.1.
Petr Skalický, katedra radioelektroniky
123
PAMĚTI EPROM
Izolované hradlo Zdroj
Kolektor SiO2
P+
P+
Výstup deekodéru adres
Základní struktura paměťové buňky Vlastnosti Udd Náboj
Substrát N Vstup p obvodu OR
Paměti UV EPROM jsou typu MOS s P nebo N kanálem. Jedná se o paměť reprogramovatelnou, u které se využívá nedestrukčního záznamu informace na principu paměťového náboje. Paměťová buňka je tvořena tranzistorem FAMOS (Floating Avelanche Injection MOS) s unipolárním tranzistorem v sérii, který umožňuje výběr buňky v paměťové matici. Ve smazaném stavu je izolovaná řídící elektroda bez náboje (odpor KE (DS) vysoký). Programovacím napětím 12÷25V zapříčiní tunelový efekt elektronů do izolovaného hradla. Náboj z izolovaného hradla se odstraní ultrafialovým zářením í o vlnové l é délce dél 253,7nm 253 7 za 10÷30 10 30 minut i t přes okénko z křemenného skla. FEL ČVUT
Zachová obsah i bez napájení-nonvolatile memory Zápis se provádí v programátoru algoritmem stanoveným výrobcem (Standard 1x50ms, Inteligent 50x1ms, Quick 50x0,1ms a Flash 10x0,1ms) Doba D b vybavení b í 60 ÷ 120ns. 120 Náboj v izolované hradle se zmenší cca o 30% za dobu>10let, nemá vliv na spolehlivost čtení. Garantovaný G ý počet č zápisů á i ů cca 1000 V současné době překonaná, jsou návrháři, kteří je stále používají pro nemožnost přeprogramování v aplikační desce, pokud to není obvodově podporováno. podporováno Slouží pro uložení programu (možnost jeho přečtení), paměť tabulek a paměť nahrávaného programu signálového procesoru a dříve BIOSu v počítačích PC.
Petr Skalický, katedra radioelektroniky
124
PAMĚTI RAM Skupinové schéma paměti RAM A Adresový dekodér
Struktura paměťové buňky RAM Oddělovací O obvod
A9 A8 A7 A6 A5 Q0
V/V budič Q7 CS WR OE
Udd
Paměťová matice T3 Sloupcové V/V budiče
T6
T5 T2
Sloupcový dekodér
B0 X
Oddělovací obvod A4 A3 A2 A1 A0
Statické paměti RAM (Random Access Memory), které by bylo vhodnější označovat RWM (Read Write Memory), jsou tvořeny dvourozměrnými maticemi paměťových buněk (klopných obvodů), které uchovávají zapsanou informaci při připojeném napájecím napětí. V úsporném režimu může být napájení sníženo, přepnuto na náhradní napěťový ěť ý zdroj d j (baterii, (b t ii kondenzátor k d át (>1F). (>1F)
FEL ČVUT
T4
T1 Uss
B1
Klasická statická paměťová buňka je tvořena š i tranzistory. šesti i Klopný l ý obvod b d (KO) ( O) je j tvořen ř tranzistory T1 a T2, zatěžovacími tranzistory T3 a T4. Výstupy KO jsou připojeny ke dvěma bitovým vodičům přes T5 a T6. V klidovém stavu jsou T5 a T6 zavřené a izolují KO od bitových vodičů. Při zápisu jsou T5 a T6 aktivovány a podle stavu zapisovaného vstupního bitu uveden bitový vodič B0 nebo B1 do log.1 a zapsán do KO obvodu. Při čtení jsou T5 a T6 aktivovány a stav KO se určí čí z průchodu ů h d proudu d jedním j d í z bitových bit ý h vodičů.
Petr Skalický, katedra radioelektroniky
125
PAMĚTI RAM Vl t Vlastnosti ti paměti ěti V aplikacích, kde je potřeba dočasně uložit větší počet hodnot (nestačí registry nebo zápisníková paměť procesoru), se využívá paměť RAM. Nemá-li tato paměť zálohování napájení, jedná se o tzv. ”volatile” paměť, protože její obsah se po odpojení napájení ztrácí. Přestože je potřeba po připojení ři j í napájení áj í obsah b h požívaných ží ý h paměťových ěť ý h míst í t nejprve j uložit l žit a teprve t potom t čí t nebo číst b přepisovat, využívá se tato paměť nejen pro uložení dat, ale i programů a tabulek. Použití RAM – V počátcích procesorové techniky sloužila pouze jako paměť proměnných, přijatých a zpracovaných dat. S nástupem operačních systémů (CP/M (1974) pro procesory s Von Neumannovskou ( p princetonskou ) architekturou,, z kterého p posléze vznikl PC-DOS a MSDOS (1981)), se začala RAM používat jako operační paměť, která obsahuje program i data. Schématická značka paměti RAM 8k x 8bitů p A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CS OE WR
FEL ČVUT
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
Jako paměť s nejrychlejším přístupem se stává programovou i datovou pamětí většiny signálových procesorů. Zálohovaná paměť může obsahovat program průmyslového automatu nebo registrovaná naměřená data (universální a rozšířené jednočipové procesory). Neomezený počet zápisů Doba vybavení – tAA (Address Access) je v CMOS technologii tAA=6 až 85ns. Doba aktivace třístavového budiče - tOE (Output enable time) je v CMOS echnologii tOE =4 až 45ns. 45ns
Petr Skalický, katedra radioelektroniky
126
PAMĚTI RAM Nejdůležitější časové parametry paměti RAM tAA Adresa A0÷An CS
tRC
tOH
Adresa platná
tACS
tWC Adresa platná
tCHZ
t
tCW t
OE
tOE
tOHZ t
Data D0÷D7
tDW Čtená data
tDH
Zapisovaná data
t
tWP
WR
t
Doba vybavení – doba potřebná k dosažení platné hodnoty výstupu od platné adresy tAA (Address Access), od aktivačního signálu paměti tACS (Chip Select Access). Obvykle tAA=tACS. Doba aktivace třístavového budiče – doba aktivace třístavového budiče tOE ((Output p enable time) při platné adrese a CS=0. Doba deaktivace – doba potřebná k přechodu výstupu do stavu vysoké impedance od signálu CS tCHZ, od signálu OE tOHZ. Tento parametr je velmi důležitý u systémů s budičem sběrnice Doba předstihu a přesahu – doba po kterou musí být data na vývodech Q0 až Q7 stabilní před vzestupnou hranou signálu WR (tWD) a po vzestupné hraně WR (tDH). FEL ČVUT
Petr Skalický, katedra radioelektroniky
127
PAMĚTI NVRAM (zeroRAM PAMĚTI NVRAM ( zeroRAM, Timekeeper , Timekeeper)) Základní struktura paměťové buňky je shodná s RAM Princip
Krystal 32768 Hz
Lithiová baterie
Oscilátor a hodinové h di é obvody
Realizace NVRAM 8 registrů hodinového h di éh obdodu
Napájení
Kontrola napájení a přepínací obvod
VCC
A0÷A14 32k x 8 bitů RAM
VPFD
DQ0÷DQ7 CS WR OE
VSS
Je tvořena klasickou pamětí RAM (RWM) doplněnou o obvody kontroly napájecího napětí deaktivace paměti při poklesu napá napětí, napájení pod nastavenou mez a přepínače napájení paměti na lithiovou baterii. V případě Timekeeper ještě o krystal 32768Hz, oscilátor a obvody hodin reálného času dostupné na posledních l d í h 8 paměťových ěť ý h místech í t h paměti. ěti
FEL ČVUT
Vlastnosti NVRAM Zachová obsah i bez napájení - nonvolatile memory (zachování dat >10let 10let bez napáje napájení). Jsou-li vystaveny nízkým teplotám bývá tato doba kratší. Čtení a zápis časově srovnatelný s běžnými SRAM (tAA=70/85ns, (tAOE=40/55ns ). Neomezený N ý počet č t zápisů á i ů Programově kontrolovaná kalibrace hodinového obvodu Rok, měsíc, den, datum, hodina, minuta a sekunda kódované v BCD. Automatická deaktivace, blokování zápisu a přepnutí na záložní baterii Využitelná současně jako ROM i RAM Nyní ekonomicky nevýhodná např. proti FRAM nebo RAM, FRAM, RAM NV kontroléru a RTC
Petr Skalický, katedra radioelektroniky
128
PAMĚTI EEPROM Základní struktura paměťové buňky
N+
N+
S b á PSubstrát P
Udd
Paměti EEPROM jsou typu MOS s kanálem P. P Paměti EEPROM odstraňují nevýhody EPROM (komplikovaný proces mazání a programování). Pamět’ová buňka EEPROM je podobná buňce EPROM doplněné velmi tenkou vrstvu oxidu k l kolem G Gate t MOSFET tranzistoru, t i t kt která á umožž ňuje elektrické smazání paměti. Mazání se provádí napětím opačné polarity mezi G a D, po kterém dojde k odvedení náboje z hradla G.
FEL ČVUT
Adresový dekodér X
SiO2
A0 A1 A2 A3 A4
Paměťová matice
A5 A6 A7 A8 A9
Adresový dekodér Y
Drain
Oddělovací O obvod
Gate
Skupinové schéma paměti EEPROM
Oddělovací O obvod
Source
Plouvocí hradlo
Výstup p dekodéru adrees
Vstup obvodu OR
Výběr Y
Blok ochrany dat
CS WR OE
Petr Skalický, katedra radioelektroniky
Řídící logika CS,OE,WR Auto mazání/zápis Generátor programovacího napětí
V/V zesilovače
DQ0
DQ7
129
PAMĚTI EEPROM Vlastnosti Zápis dat do EEPROM je blokován v situacích, kdy by se mohly uplatnit poruchové stavy časování nebo napětí. Ochrana je obvodová i programová. Obvodová ochrana blokuje zápis pokud poklesne UCC pod práh 3,8V (při UCC=5V), během prodlevy 5ms po připojení napájecího napětí a šumovou filtrací řídících signálů CS, OE a WR kratších 15ns. Programová ochrana zápisu dat je implementována zápisem specifických bytů na definovaná místa v paměti EEPROM. Nejsou-li dodrženy všechny parametry paměti může díky generátoru mazání dojít k poničení obsahu paměti (např. špatná filtrace UCC paměti). Sériové EEPROM se obvykle vyrábí v DIL8, SO8 s přístro přístro2 jovou sběrnicí I C, SPI, Microware a 1wire. Operace se sériovou pamětí probíhá přes příkazy (např. READ, WRITE, ERASE, ERASE ALL, EWEN a EWDS).
FEL ČVUT
Zachová obsah i bez napájení-nonvolatile memory Zápis se provádí v programátoru algoritmem stanoveným výrobcem nebo přímo v procesorovém systému obdobným způsobem jako do paměti RAM s tím, že je třeba kontrolovat zaneprázdněnost paměti způsobenou zápisem. Zápis je možný po bytech, po stránkách, dříve bylo potřeba vymazat i celou paměť. Doba zápisu bytu i stránky 4 ÷ 10ms Doba vybavení pro čtení 60 ÷ 120ns. Garantovaný počet zápisů cca 100000 nebo 1000000 Paralelní provedení paměti může sloužit pro uložení programu (nebezpečí ztráty). ztráty) Sériové provedení se obvykle využívá jako paměť kalibračních hodnot přístrojů, paměť interpretovaného programu PLA (Programovatelné Logické Automaty). )
Petr Skalický, katedra radioelektroniky
130
PAMĚTI FLASH Základní struktura paměťové buňky
N+
Programování
N+
S b t át P Substrát PFLASH je ekonomickým kompromisem mezi g EEPROM a EPROM. Pamět’ová technologií buňka Flash je podobná buňce EEPROM doplněná velmi tenkou vrstvu oxidu kolem Gate MOSFET tranzistoru. Při programování je přivedeno kladného napětí na elektrodu Gate, a Drain po kterém dojde k lavinové injekci elektronů do plovoucího hradla. Elektrické smazání paměti se realizuje provádí napětím opačné polarity mezi G a D, po kterém dojde k odvedení náboje z plovoucího hradla.
FEL ČVUT
Adresový dekodér X
SiO2
A0 A1 A2 A3 A4
Paměťová matice
A5 A6 A7 A8 A9
Adresový dekodér Y
Drain
Oddělovací obvod
Plouvocí hradlo S Source Mazání
Skupinové schéma paměti FLASH
Oddělovací obvod
Gate
Výběr Y
Blok ochrany dat
CS WR W OE
Petr Skalický, katedra radioelektroniky
Řídící logika CS,OE,WR Generátor a spinače programovacího napětí
V/V zesilovače il č
DQ0
DQ7
131
PAMĚTI FLASH Vlastnosti Klasické paměti Flash EPROM (PEROM) nahrazují EEPROM v aplikacích vyžadujících větší kapacitu a větší rychlost čtení. Mazání paměti je elektrické a využívá Fowler-Nordheimův jev, při které jsou elektrony z plovoucího hradla odvedeny do substrátu nebo elektrody Drain. Oproti pamětem EEPROM, EEPROM neobsahují programoprogramo vací automat a programování je nutné řídít programově pomocí řídících příkazů. V důsledku toho jsou tyto paměti výrazně odolnější vůči ztrátě svého obsahu. Dříve bylo potřeba před programováním smazat celou paměť, dnes stačí mazání po blocích nebo přeprogramování po relativně malých stránkách (64÷256). Při změně jednoho nebo více bytů, je nezbytné zbývající nejprve uložit a potom naprogramovat celou stránku. Výjimečně se najdou typy, které je možné mazat a programovat po bytech. V sériovém provedení d í se paměti ěti flash fl h vyrábí ábí v DIL8, DIL8 2 SO8 s přístrojovou sběrnicí I C, SPI. FEL ČVUT
Zachová obsah i bez napájení-nonvolatile memory Zápis se provádí v programátoru algoritmem stanoveným výrobcem nebo přímo v procesorovém systému pomocí sekvence řídících příkazů. p jje možný ý p po sektorech o 64÷256 bytů, y , Zápis zřídka po bytech. Před programováním je potřeba paměť smazat celou nebo po blocích. Doba zápisu bytu i stránky 4 ÷ 10ms Doba vybavení pro čtení 70 ÷ 120ns. Garantovaný počet zápisů > 10000 Paralelní provedení paměti slouží pro uložení programu. Sériové provedení se obvykle využívá jako paměť tabulek, tabulek hlasových zpráv, střádaných dat nebo interpretovaného programu.
Petr Skalický, katedra radioelektroniky
132
PAMĚTI FRAM Základní struktura paměťové buňky
Vl t Vlastnosti ti
Princip
Feroelektrická tenká vrstva (130μm) keramiky PZT - Pb(Zr,Ti)O3 tvořeného tuhým roztokem zirkoničitanu a titaničitanu olova mění v elektrickém poli polaritu a vytváří tak dvoustavovou paměťovou buňku pro uložení 1 bitu informace. Přeskok Př k k atomu t Z /Ti je Zr/Ti j řád řádověě 1ns 1 Poloha není ovlivněna magnetickým polem ani radiací (alfa i gama zářením) Objev: Ramtron 1984, výroba 1993 (4kb)
Zachová obsah i bez napájení-nonvolatile memory Čtení a zápis časově srovnatelný s SRAM (<60ns). Velmi nízká spotřeba max. 15mA i pro 8Mb ěť paměť Programovaní při nízkém napětí ~ 1,5V Počet zápisů 1014, trvanlivost >10 let Proti EEPROM 3000x menší výkonová spotřeba, 1000x rychlejší zápis, 109x větší počet zápisů Využitelná současně jako ROM i RAM
FEL ČVUT
Petr Skalický, katedra radioelektroniky
133
PAMĚTI PRAM Vlastnosti Paměť PRAM (Phase-change RandomAccess-Memory), někdy též označovaná PCM, PCRAM, chalkogenidová RAM, je výkonná non-volatile non volatile memory. memory Hodnota uložené log.0 a log.1 nespočívá v uložení elektronů v izolovaném hradle, ale v rozdílnosti odporu mezi dvěma rozdílnými fázemi materiálu krystalickou a amorfní. Krystalická fáze má nízkou hodnotu odporu oproti amorfní fázi. Mřížkové uspořádání uvnitř materiálu může měnit mezi amorfní a krystalickou strukturou pomocí řízené tepelné energie uvnitř paměťové buňky Fig.1.
Zachová obsah i bez napájení-nonvolatile memory programováním g jje p potřeba p paměť sma Před p zat po blocích. Doba zápisu bytu i stránky 3μs na slovo Smazání bloku 80ms Doba vybavení pro čtení 100ns Garantovaný počet zápisů > 100000 Použití hlavně jako náhrada pamětí Flash NAND a NOR
Paměť pracuje v podstatě na diodovém principu, je výrobně jednodušší a j plochu p p paměťové buňky. y má nejmenší Oproti NOR/NAND dochází k minimálnímu ovlivňování jednotlivých buněk a proto je spolehlivější. [zdroj Samsung]
FEL ČVUT
Petr Skalický, katedra radioelektroniky
134
PAMĚTI PRAM Fáze pro log log.0 0 a log log.1 1 paměti PRAM
FEL ČVUT
Petr Skalický, katedra radioelektroniky
135
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Pravidla pro připojení programové a datové paměti Při paralelní komunikaci procesoru s programovou nebo datovou pamětí musíme k paměti připojit datové vodiče D0 až Dn a adresové vodiče A0 až Am, kde 2m+1 odpovídá kapacitě paměti. U programové paměti se obvykle propojují vodiče Di na Di (i=0 až n) a Aj na Aj (j=0 až m). V případě ří dě datové d t é paměti ěti je j možné, ž é s ohledem hl d na snazší ší realizaci li i plošného l š éh spoje, j některé ěkt é datové i adresové vodiče zpřeházet. Současně s datovými a adresovými vodiči musíme vytvořit řídící signály OE (Output Enable) pro aktivaci výstupních budičů a CS (Chip Select) nebo CE (Chip Enable) pro aktivaci celého paměťového obvodu. V případě vnější datové paměti RAM přibude jještě signál g WR p pro řízení zápisu p do p paměti. Dříve,, než p přistoupíme p k rozhodnutí o k nim p způsobu dekódování zbývajících adresových vodičů (m+1 až obvykle 15) a řídících signálů adresovým dekodérem, musíme uvážit zda: ♣ využijeme celý adresový prostor ♣ nevyužijeme celý adresový prostor ♣ přímý paměťový prostor procesoru pro danou aplikaci není postačující Vyžaduje-li aplikace využití celého paměťového prostoru, potom nám nezbývá, než dekódovat všechny zbývající adresové vodiče. j mikroprocesorový p ý systém y jjednoúčelový, ý který ý nebude dále rozšiřován a chceme Realizujeme-li ušetřit dekódující logiku, můžeme přistoupit k tzv. lineárnímu adresování. U procesorů s Von Neumannovskou architekturou je lineární adresování v jednom adresovém prostoru problematické, protože bude docházet k překrytí adresových prostorů pamětí. Pro zápis není tato situace problémová, ale při čtení by došlo k aktivaci dvou pamětí a spojení (zkratování) výstupů obou pamětí na datové sběrnici. sběrnici
FEL ČVUT
Petr Skalický, katedra radioelektroniky
136
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Máme-li procesor přímý adresový prostor 64kB (65536 paměťových míst od adresy 0000h÷FFFFh po 8-bitech) a chceme k němu připojit stejně velkou paměť, pak k adresování využijeme všechny adresové vodiče a paměť můžeme připojit takto D[7 .. 0]
D[7 .. 0]
A[15 .. 0]
A[15 .. 0]
Programová paměť A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
Adresa FFFFh
EPROM
0000h
PSEN
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 1 20 22
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
O0 O1 O2 O3 O4 O5 O6 O7
CE OE/VPP 27C512A
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 PSEN
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 1 20 22
U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE OE/VPP 27C512A
V prvém é případě ří dě bude b d paměť ěť trvale t l aktivována kti á (b d stále (bude tál odebírat d bí t značný č ý proud) d) a na datové d t é sběrnici se objeví požadovaná data s určitým zpožděním jen, když řídící signál PSEN=0 (čtení z programové paměti). V druhém případě budou odběr paměti (aktivace) i data na sběrnici ovlivňovány jenom řídícím signálem PSEN. Rozdíly v časových parametrech pro obě zapojení jsou y na bláně 17. vysvětlena
FEL ČVUT
Petr Skalický, katedra radioelektroniky
137
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Budeme-li p připojovat p j ke stejnému j procesoru 32kB p p paměť, p pak musíme rozhodnout, do jjakého adresovém prostoru bude umístěna (program, data) a v jakém rozsahu adres. Předpokládejme, že paměť EPROM bude standardně zapojená do programového prostoru v rozsahu adres 0000h÷7FFFh. Adresa (hex)
Adresové vodiče A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ÷ 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ÷ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0000h 0001h ÷ 7FFFh 8000h ÷ FFFFh
Modré adresové vodiče jsou použity k adresování paměti, zbývající červený bude spolu se signálem čtení z programové paměti PSEN využit k aktivaci paměti. Například takto D[7 .. 0]
D[7 .. 0]
A[15 .. 0]
A[15 .. 0]
Adresa FFFFh
8000h 7FFFh EPROM 0000h PSEN
FEL ČVUT
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
A15
20 22
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
CE OE/VPP 27C256
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Standardní řešení, spotřeba optimální, minimální časové požadavky p y na PSEN paměť A15
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
4
20
U12B 6
5 7432
Petr Skalický, katedra radioelektroniky
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
22
U3 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
CE OE/VPP 27C256
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Spotřeba minimální, maximální časové požadavky na paměť 138
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Máme-li p paměť, z které se dá p pouze číst, p potom jje vybavena y buď jjenom vývodem ý OE ((PROM)) nebo standardně vývody CS nebo CE (aktivace obvodu) a OE (aktivace třístavového výstupního budiče). Hodnotu z daného paměťového místa získáme za dobu tACC po aktivací obvodu (CS=0) a přivedením platné adresy na adresové vodiče a za dobu tOE od OE=0. Bude-li pouze vývod CS=0, potom třístavový budič bude ve stavu vysoké impedance a paměť bude pouze odebírat proud. Bude li v log.0 Bude-li log 0 pouze vývod OE, OE pak třístavový budič bude ve stavu vysoké impedance a odběr bude minimální. Doba přístupu do paměti tACC je obvykle dvakrát až třikrát větší, než doba tOE. Procesor vysílá adresu místa, z kterého se bude číst/zapisovat, v předstihu před řídícím signálem. Z hlediska časových parametrů kladených na paměť je proto výhodnější, aby CS nebo CE byly funkcí pouze zbývajících adresových vodičů CS=f(Am+1, Am+2,…,A15) a OE funkcí řídících signálů OE=g(řídící signály). Paměť musíme zapojit tak, aby při čtení z paměti v požadovaném adresovém prostoru bylo CS=0 i OE=0 viz. následující příklady. D[7 .. 0]
D[7 .. 0]
A[15 .. 0]
A[15 .. 0]
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 PSEN
1
A15
2
FEL ČVUT
20
U12A 3
7432
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
22
U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
CE OE/VPP 27C256
11 12 13 15 16 17 18 19
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
D0 D1 D2 D3 D4 D5 D6 D7
Spotřeba maximální, minimální časové požadavky na paměť
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
PSEN
20
A15 1
22
Petr Skalický, katedra radioelektroniky
U4 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
CE OE/VPP 27C256
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Nestandardní řešení, spotřeba minimální maximální časové požadavky na paměť 139
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Paměť programu s kapacitou 32kB (polovina přímo adresovatelného prostoru procesoru) bude obvykle umístěna v dolní polovině (zapojení vlevo) nebo v horní polovině (zapojení vpravo) adresového prostoru. D[7 .. 0]
D[7 .. 0]
A[15 .. 0]
A[15 .. 0]
Adresa FFFFh
8000h 7FFFh EPROM 0000h PSEN
FEL ČVUT
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
A15
20 22
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Adresa FFFFh
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
EPROM 8000h 7FFFh
0000h
A15
CE
1
OE/VPP 27C256
PSEN
Petr Skalický, katedra radioelektroniky
U5A
7404
2
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 20 22
U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE OE/VPP 27C256
140
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Paměť P ěť 32kB (32768x8 (32768 8 bitů) bi ů) nemusíí být bý umístěna í ě do d celistvého li éh bloku bl k adres d daného d éh prostoru. Například můžeme chtít, aby její polovina ležela v adresovém prostoru 0000h÷3FFFh a její druhá polovina v prostoru 8000h÷BFFFh (nestandardní, ale možné). Adresa (hex) 0000h 0001h ÷ 3FFFh 4000h ÷ 7FFFh 8000h 8001h ÷ BFFFh C000h ÷ FFFFh
Adresové vodiče A15 A14 A13 A12 ⎜ A11 A10 A9 A8 ⎜ A7 A6 A5 A4 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 ÷ 0 0 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 1 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 1 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 1 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 ÷ 1 0 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 1 1 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1
⎜ A3 A2 A1 A0 ⎜ 0 0 0 0 ⎜ 0 0 0 1 ⎜ ⎜
1 0
1 0
1 0
1 0
⎜ ⎜ ⎜
1 0 0
1 0 0
1 0 0
1 0 1
⎜ ⎜
1 0
1 0
1 0
1 0
⎜
1
1
1
1
Modře označené adresové vodiče budou použity k adresování paměti a zbývající červený bude spolu l se signálem i ál PSEN (čtení (čt í z programové é paměti) ěti) využit žit k aktivaci kti i paměti. ěti Kdyby Kd b byl b l k adresování paměti použit vodič A14, který je v obou prostorech nulový, byla by v obou prostorech přístupná jen jedna polovina paměti. Navíc by adresový vodič A15 nemohl být využit k aktivaci, protože v daných prostorech nemá stejnou hodnotu. Příklady na možná zapojení paměti jsou na j bláně. následující
FEL ČVUT
Petr Skalický, katedra radioelektroniky
141
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Paměť s kapacitou 32kB může být i atypicky rozdělena v adresovém prostoru na dvě části (připadá do úvahy spíše při úpravách např. starých zařízení).
D[7 .. 0]
D[7 .. 0]
A[15 .. 0]
A[15 .. 0]
Adresa FFFFh C000h BFFFh EPROM 8000h 7FFFh 4000h 3FFFh EPROM 0000h PSEN
FEL ČVUT
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A15
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27
A14
20 22
U3 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Adresa FFFFh
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A15
EPROM C000h BFFFh 8000h 7FFFh EPROM 4000h 3FFFh A14
0000h
CE OE/VPP 27C256
3 PSEN
Petr Skalický, katedra radioelektroniky
U5B
7404
4
10 9 8 7 6 5 4 3 25 24 21 23 2 26 27 20 22
U4 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE OE/VPP 27C256
142
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Pokud by připojovaná paměť měla kapacitu 8kB, 8kB potom pro standardní řešení k aktivaci paměti musíme využit adresové vodiče A15, A14, A13 a řídící signál (pro 8051 a programovou paměť PSEN, pro 8051 i AVR a datovou paměť RD a WR). Bude-li mít periferie v systému přiřazenu jednu konkrétní adresu, potom budeme muset dekódovat všechny adresové vodiče s příslušným řídícím signálem. V době, kdy se paměť procesorového systému skládala z několika pamětí, byly vyvinuty obvody, které usnadňují realizaci adresových dekodérů. Mezi takové obvody patří např. 138, 139 a jiné, jejichž funkci dnes můžeme v jednoduchých řešeních realizovat klasickou logikou (ekonomičtější) nebo programovatelnou logikou (systémy se složitou logikou). Před příkladem na použití obvodu 138 si popíšeme jeho logickou funkci. U1 1 2 3 6 4 5
A B C G1 G2A G2B
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
74HCT138
Y0 = C + B + A+ G1 + G 2 A + G 2 B Y1 = C + B + A + G1 + G 2 A + G 2 B
VSTUPY
VÝSTUPY
C
B
A
G1
G2 A
G2 B
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
0
0
0
1
0
0
1
1
1
1
1
1
1
0
0
0
1
1
0
0
1
1
1
1
1
1
0
1
0
1
0
1
0
0
1
1
1
1
1
0
1
1
0
1
1
1
0
0
1
1
1
1
0
1
1
1
1
0
0
1
0
0
1
1
1
0
1
1
1
1
1
0
1
1
0
0
1
1
0
1
1
1
1
1
1
1
0
1
0
0
1
0
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
1
x
x
x
0
x
x
1
1
1
1
1
1
1
1
x
x
x
x
1
x
1
1
1
1
1
1
1
1
x
x
x
x
x
1
1
1
1
1
1
1
1
1
atd . FEL ČVUT
Petr Skalický, katedra radioelektroniky
143
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Zapojte p j do adresového p prostoru 4000h ÷5FFFh datovou p paměť 8kB ((8196x8 bitů). ) Adresa (hex) Adresové vodiče A15 A14 A13 A12 ⎜ A11 A10 A9 A8 ⎜ A7 A6 A5 A4 ⎜ A3 A2 A1 A0 0000h 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0001h 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 1 ÷ ÷ 3FFFh 0 0 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 4000h 0 1 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ 0 1 0 ÷ 5FFFh 0 1 0 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 6000h 0 1 1 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ ÷ FFFFh 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 Paměť musí být aktivována pro čtení (CS=0, OE=0, WR=1), když A15=0, A14=1, A13=0 a RD=0. Pro zápis musí být paměť aktivována (CS=0, OE=1, WR=0), když A15=0, A14=1, A13=0 a WR=0. Například D[7 .. 0] D[7 .. 0] takto: A[15 .. 0] A[15 .. 0]
A14 U6A
1
A13 A15
7404 2
U5A
VCC
R10 RD WR
FEL ČVUT
5k6
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27
U1
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 CE1 CE2 OE WR 6164
D1 D2 D3 D4 D5 D6 D7 D8
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
A14 A13 A15 U7A
1 2
7432 RD WR
Petr Skalický, katedra radioelektroniky
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
10 9 8 7 6 5 4 3 25 24 21 23 2
3
20 26 22 27
U2
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
D1 D2 D3 D4 D5 D6 D7 D8
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE1 CE2 OE WR 6164
144
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ S použitím obvodu 138 může být datová paměť o kapacitě 8kB umístěna adresového prostoru 4000h ÷5FFFh dle obrázku. D[7 .. 0] A[15 .. 0]
A13 A14 A15
1 2 3 6 4 5
Na výstupu bude log.0 v adresovém rozsahu
U13 A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
0000h - 1FFFh 2000h - 3FFFh 4000h - 5FFFh 6000h - 7FFFh 8000h - 9FFFh A000h - BFFFh C000h - DFFFh E000h - FFFFh
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
74F138 RD WR
VCC
R11 5k6
10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27
U9 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
D1 D2 D3 D4 D5 D6 D7 D8
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE1 CE2 OE WR
6164
V případě použití obvodu CPLD nebo FPGA budeme realizovat tyto funkce nebo jejich ekvivalent ý v jjazyce y VHDL ( v behaviorálním, RTL nebo strukturálním modelu). ) zapsaný
CE1_RAM = A15 + A14 + A13 CE2_RAM = 1 OE RAM = RD OE_RAM WR_RAM FEL ČVUT
= WR
Petr Skalický, katedra radioelektroniky
145
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Připojení paměti RAM do adresového prostoru 4000h÷5FFFh a paměti EPROM (např. (např tabulka funkce, interpretovaný program, přístupové kódy, atd.) do prostoru 6000h÷7FFFh datové paměti procesoru s využitím obvodu 138 může vypadat následovně. D[7 .. 0] A[15 .. 0]
A13 A14 A15
1 2 3 6 4 5
Na výstupu bude log.0 v adresovém rozsahu
U14 A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
0000h - 1FFFh 2000h - 3FFFh 4000h - 5FFFh 6000h - 7FFFh 8000h - 9FFFh A000h - BFFFh C000h - DFFFh E000h - FFFFh
74F138 RD WR
VCC
R12 5k6
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
10 9 8 7 6 5 4 3 25 24 21 23 2 20 26 22 27
U10 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
D1 D2 D3 D4 D5 D6 D7 D8
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE1 CE2 OE WR
6164
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
VCC
10 9 8 7 6 5 4 3 25 24 21 23 2 20 22 26 1
U11 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
D1 D2 D3 D4 D5 D6 D7 D8
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
CE OE PGM VPP
2764
Poznámka: Zapojení paměti, z které se dá pouze číst do datové paměti se využívá u některých signálových procesorů k uložení tabulky funkce sinus, kompresních zákonů μ a law. U procesorů, které mají pomalou instrukci IN nebo OUT (přístupu do V/V prostoru) se pro rychlejší přístup k periferiím připojují do datového prostoru i vstupy a výstupy.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
146
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Ukázka p připojení p j 8kB p paměti EPROM (p (programová g p paměť)) a p paměti RAM ((datová p paměť)) s úplným dekódováním k procesoru 8051. Paměť
U4
Adresový dekodér
Adresová sběrn nice
Řídící sběrn nice
U1 A13 A14 A15
1 2 3
VCC PSEN
6 4 5
A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
74LS138 U2 A13 A14 A15 VCC
1 2 3
A B C
6 4 5
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
VCC
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
U3A 1
WR
2
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
20 22 27 1
CE OE PGM VPP
O0 O1 O2 O3 O4 O5 O6 O7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
3
74ACT08
VCC
10 9 8 7 6 5 4 3 25 24 21 23 2
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
20 26 27 22
CS1 CS2 WE OE
0000H
ROM 1FFFH 2000H 3FFFH 4000H
2764 U5
74LS138
RD
10 9 8 7 6 5 4 3 25 24 21 23 2
D0 D1 D2 D3 D4 D5 D6 D7
6164
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Datová sběrnice
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
RAM 5FFFH 6000H 7FFFH 8000H 9FFFH A000H BFFFH C000H EFFFH
K adresování obou pamětí je využito spodních 13 adresových vodičů společné sběrnice tj. A12÷A0. Zbývající adresové vodiče A15÷A13 jsou přivedeny do adresových dekodérů obvodů U1 a U2. Obvod U1 společně s řídícím signálem PSEN vytváří aktivační signály pro 8kB bloky programové paměti. Obvod U2 realizuje společně se součinem RD a WR aktivační signály pro bloky datové paměti. Zkuste zapojení upravit tak, aby byl použit jenom jeden obvod 138. FEL ČVUT
Petr Skalický, katedra radioelektroniky
147
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Zapojte p j do adresového p prostoru 0000h ÷1FFFh p procesoru datovou p paměť 8kB, u které nebude vodič A14 dekódován v adresovém dekodéru. Adresa (hex) 0000h 0001h ÷ 1FFFh 2000h ÷ 3FFFh 4000h ÷ 5FFFh 6000h ÷ FFFFh
Adresové vodiče A15 A14 A13 A12 ⎜ A11 A10 A9 A8 ⎜ A7 A6 A5 A4 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 0 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 0 0 ÷ 0 0 0 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 0 0 1 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ 0 0 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 0 1 0 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 0 1 0 ÷ 0 1 0 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1 0 1 1 0 ⎜ 0 0 0 0 ⎜ 0 0 0 0 ÷ 1 1 1 1 ⎜ 1 1 1 1 ⎜ 1 1 1 1
Adresa FFFFh
⎜ ⎜
1 0
1 0
1 0
1 0
⎜ ⎜
1 0
1 0
1 0
1 0
⎜ ⎜
1 0
1 0
1 0
1 0
⎜
1
1
1
1
Bude-li aktivační signál pro paměť realizován funkcí CS=A15+A13, potom bude výstup CS bude nulový jak v požadovaném prostoru 0000h÷1FFFh , tak i v prostoru 4000h÷5FFFh. Paměť se nám bude „zrcadlit“ a bude jedno zda například provedeme čtení z adresy 0002h nebo 4002h, atd.
8000h
FEL ČVUT
⎜ A3 A2 A1 A0 ⎜ 0 0 0 0 ⎜ 0 0 0 1
5FFFh 4000h
RAM
1FFFh 0000h
RAM
Petr Skalický, katedra radioelektroniky
148
PARALELNÍ PŘIPOJENÍ VNĚJŠÍCH PAMĚTÍ Připojení 8kB paměti EPROM a RAM s lineárním adresováním 10 9 8 7 6 5 4 3 25 24 21 23 2
A15 PSEN
20 22 27 1
VCC
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
20 26 27 22
WR RD
CS1 CS2 WE OE 6164
U3A A14
1
2 74HCT04
0000H
ROM
0
1
0
0
1
1
1
0
4000H
CE OE PGM VPP
10 9 8 7 6 5 4 3 25 24 21 23 2
Paměť A15 A14
3FFFH
2764 U2
VCC
FEL ČVUT
O0 O1 O2 O3 O4 O5 O6 O7
D0 D1 D2 D3 D4 D5 D6 D7
11 12 13 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
Datová sběrnice
Adressová sběrnice
Říd dící sběrnice
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
ROM RAM 7FFFH 8000H
BFFFH C000H
RAM FFFFH
Paměťový prostor 4000H až 7FFFH pro čtení by u Von Neumannovy architektury vedl ke kolizi na datové sběrnici. ě i i
Petr Skalický, katedra radioelektroniky
Lineární adresování využívá k aktivaci pamětí zbývající adresové vodiče tak, tak aby se minimalizoval adresový dekodér. V našem případě ROM (aktivovaná A15) a paměti RAM (aktivovaná vodičem A14). Protože není dekódován vodič A13, A paměti ě i se v 16kB kB bloku bl k ještě jednou opakují (např. obsah ROM v programovém adresovém prostoru 0000h÷ 1FFFh se opakuje v p prostoru osto u 2000h÷3FFFh). 000 3 ). Díky y nulovosti A15 se ještě dvakrát opakuje v prostorech 4000h ÷ 5FFFh a 6000h÷7FFFh. Stejně tak je tomu i u paměti RAM, která se opakuje k j v prostorech t h 4000h ÷ 5FFFh, 6000h ÷ 7FFFh, C000h÷ DFFFh a E000h÷ FFFFh. ,.
149
VYTVOŘENÍ SBĚRNICE U JEDNOČIPOVÝCH PROCESORŮ VYTVOŘENÍ SBĚRNICE U JEDNOČIPOVÝCH PROCESORŮ Aby k připojení vnějších pamětí nebylo potřeba tří vstupALE ně/výstupních bran mikroprot cesoru, je na jedné bráně P0, PSEN PA (někdy označené AD7÷ t A ) realizována AD0) li á časově přepínaná adresová a daP2 tová sběrnice. Celá adresoAdresa (PCH) Adresa (PCH) Adresa (PCH) Adresa (PCH) t vá sběrnice se vytváří pomocí registru latch (373,573, atd.), P0 Adr Ins Adr Ins Adr Ins Adr Ins t který zachytí nižší byte adresy sestupnou hranou sigČtení instrukce procesorem nálu ALE. Horní část adresy Uložení spodní části adresy do obvodu 373 je na bráně P2 nebo PC Generováno procesorem Výstup z paměti EPROM (AVR) (označované ( č é A15÷A8). A15 A8) V případě jednočipových procesorů AVR (RISC), jejichž instrukce jsou 16 nebo 32 bitové je možné rozšíření pouze v oblasti datové paměti. U procesorů 8051 je možné rozšířit jak programovou, tak datovou paměť. Úplná sběrnice STROJOVÝ CYKLUS
S1
S2
S3
S4
S5
STROJOVÝ CYKLUS
S6
S1
S2
S3
S4
S5
S6
Úplná sběrnice
A15 ÷8
8051 ALE
FEL ČVUT
AD7 ÷0 PSEN RD WR
Reg.
H
A15 ÷8
A15 ÷8
A7÷0
A7÷0
RAM
EPROM
A15 ÷8
AVR ALE
A15 ÷8 Reg.
H
A7 ÷0
RAM
AD7 ÷0
D7÷0
OE RD R/W WR Petr Skalický, katedra radioelektroniky
OE R/W
D7÷0
D7÷0 OE CS
150
VARIANTY VYTVOŘENÍ SBĚRNICE U JEDNOČIPOVÝCH VYTVOŘENÍ SBĚRNICE U JEDNOČIPOVÝCH PROCESORŮ PROCESORŮ Za dlouhou dobu se přišlo na to, že zachycení horní části adresy (A15 (A15÷ A8) je z hlediska rychlos rychlosti zpracování instrukcí výhodnější, protože ji stačí zapisovat pouze po každých 256 instrukcích (pokud není realizována instrukce skoku, volání včetně obsluhy přerušení). Nevýhodou řešení je nestejná doba trvání jednotlivých instrukcí v závislosti na jejich umístění v adresovém prostoru procesoru (viz. 8x251 a XA51). Na obrázku je varianta umožňující zrychlení až 255 po sobě následujících á l d jí í h instrukcí i t k í (stránkový ( t á k ý mód ód 8x251). 8 251) Úplná sběrnice A7÷0
8x251
Maximální šířka adresové sběrnice pro dvě V/V brány a 8-bitový přenos je 24-bitů viz. ADuc8xx.
ALE A15 ÷8 D7 ÷0 PSEN RD WR
Úplná sběrnice
ADuC8xx
Reg.
Reg.
H
A7÷0
A7÷0
A15÷8
A15÷8
RAM D7 ÷0 OE R/W
EPROM D7 ÷0 OE CS
A23÷16
H A15÷8 Reg.
ALE AD7÷0 PSEN RD WR
FEL ČVUT
H
A15÷8
A15÷8
A7÷0
A7÷0
RAM D7 ÷0 OE R/W
EPROM D7÷0 OE CS
Petr Skalický, katedra radioelektroniky
151
ČASOVÁNÍ PŘI RŮZNÉM ČASOVÁNÍ PŘI RŮZNÉM PŘIPOJENÍ PROGRAMOVÉ PAMĚŤI PŘIPOJENÍ PROGRAMOVÉ PAMĚŤI t LHLL ALE A15 ÷8
ALE
Reg.
H
AD7 ÷0 PSEN RD WR
Adres. dekod
EPROM D7÷0 OE CS
t AVLL
t
t p373
An÷0 A15÷An+1
8051
t PLPH
tAVIV
t PXIZ
tpDek
PSEN
t t PLIV
P2
A8 ÷ A15
P0
A0 ÷ A7
t Instrukce
t
CE t LHLL ALE A15 ÷8
ALE AD7 ÷0 PSEN RD WR
Reg.
H
EPROM D7÷0 OE
Adres. dekod
CS
t AVLL t p373
An÷0 A15÷An+ +1
8051
t PLPH
PSEN
t t PXIZ
tAVIV
tpDek D k
t t PLIV
P2 P0
A8 ÷ A15
A0 ÷ A7
t Instrukce
t
CE
Analogicky můžeme analyzovat z hlediska časování různá připojení datové paměti. Díky časování přístupu do vnější RAM a dostupnosti velmi rychlých RAM, nebývá připojení problematické jako v případě pamětí programových (Flash, EEPROM, FRAM, EPROM). Problémy však nastanou, když připojíme do vnější datové paměti pomalou periferii např. alfanumerický nebo grafický displej (viz. 19).
FEL ČVUT
Petr Skalický, katedra radioelektroniky
152
UKÁZKA VÝPISU ČASOVÝCH PARAMETRŮ PROCESORU
FEL ČVUT
Petr Skalický, katedra radioelektroniky
153
ČASOVÉ PARAMETRY SBĚRNICE U JEDNOČIPOVÝCH PROCESORŮ ČASOVÉ PARAMETRY SBĚRNICE U JEDNOČIPOVÝCH PROCESORŮ
FEL ČVUT
Petr Skalický, katedra radioelektroniky
154
PARALELNÍ PŘIPOJENÍ VELKÉ DATOVÉ PAMĚTI Potřebujeme-li Potřebujeme li připojit k procesoru paměť RAM, RAM jejíž kapacita převyšuje přímo adresovatelný prostor, je potřeba minimálně vytvořit chybějící adresové vodiče A16, A17, atd. a případně vytvořit adresový dekodér pro signály CSn pro použité paměti. Adresové vodiče A16, A17, atd. můžeme vytvořit na V/V bráně jednočipového procesoru nebo na výstupní bráně vytvořené registrem. Řešení s jednou pamětí 128kB Fyzická adresa RAM
A[16 .. 0]
1FFFFh
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16
RAM Logická adresa CPU
10000h 0FFFFh
FFFFh RAM
RAM
WR l 1 log.1
00000h
0000h Stránka 0 A16=0
FEL ČVUT
Stránka 1 A16=1
RD D[7 .. 0]
Petr Skalický, katedra radioelektroniky
12 11 10 9 8 7 6 5 27 26 23 25 4 28 3 31 2 29 30 22 24
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16
D0 D1 D2 D3 D4 D5 D6 D7
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5 D6 D7
WR CS2 CS1 OE
628128
155
PARALELNÍ PŘIPOJENÍ VELKÉ DATOVÉ PAMĚTI V případě ří dě čtyř č ř 32kB pamětí ě í RAM vytvoříme ří adresový d ý dekodér realizující aktivační signály CS0, CS1, CS2 a CS3.
CS 0 = A15 + A16
CS1 = A15 + A16
CS 2 = A15 + A16
CS 3 = A15 + A16
1
A15
2
U5A U6A
3
1
RD 24 WR 31 CS0 22 5V
D[7 .. 0]
FEL ČVUT
32
U1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 OE WE CE VCC 62256
I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7
74AHCT32
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5 D6 D7
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
12 11 10 9 8 7 6 5 27 26 23 25 4 28 29
RD 24 WR 31 CS1 22 5V
32
U2 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 OE WE CE VCC 62256
I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5 D6 D7
RAM2
A16=0 Stránka 0
A16=1 Stránka 1
4
9
U5C
10 74AHCT04
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
12 11 10 9 8 7 6 5 27 26 23 25 4 28 29
RD 24 WR 31 CS2 22 5V
32
74AHCT32
U3 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 OE WE CE VCC 62256
Petr Skalický, katedra radioelektroniky
I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7
12
8
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5 D6 D7
U5D 11
13
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
74AHCT32
12 11 10 9 8 7 6 5 27 26 23 25 4 28 29
RD 24 WR 31 CS3 22 5V
CS3
RD WR
12 11 10 9 8 7 6 5 27 26 23 25 4 28 29
5
74AHCT04
A[16 .. 0]
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
2
RAM0 0000h
3
6
RAM3
8000h 7FFFh
U6B
U5B
RAM1
CS2
CS0
74AHCT32
4
CS1
A16
Paměť dat
FFFFh
32
U4 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14
I/O0 I/O1 I/O2 I/O3 I/O4 I/O5 I/O6 I/O7
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5 D6 D7
OE WE CE VCC 62256
156
UKÁZKA PROGRAMOVÉ OBSLUHY VELKÉ DATOVÉ PAMĚTI D[7 .. 0] 44 21
20
2 3 4 5 6 7 8 9
35 10 22
U1 VCC
AD0/P0.0 AD1/P0.1 AD2/P0.2 AD3/P0.3 AD4/P0.4 AD5/P0.5 AD6/P0.6 AD7/P0.7
XTAL1
XTAL2
A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 A13/P2.5 A14/P2.6 A15/P2.7
P1.0/T2 P1.1/T2EX/SS P1.2/ECI P1.3/CEX0 P1 4/CEX1 P1.4/CEX1 P1.5/CEX2/MIS0 P1.6/CEX3/SCK P1.7/CEX4/MOSI
ALE/PROG PSEN RXD/P3.0 TXD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3 6 WR/P3.6 RD/P3.7
EA RST GND
43 42 41 40 39 38 37 36 24 2 25 26 27 28 29 30 31
32
1FFFFh RAM Logická adresa CPU
RAM
RAM
Stránka 0 A16=0
Stránka 1 A16=1
00000h
FEL ČVUT
0000h
3 4 7 8 13 14 17 18 1 11
U2 D0 D1 D2 D3 D4 D5 D6 D7
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
2 5 6 9 12 15 16 19
A0
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
A1 A2 A3 A4 A5 A6 A7
OC G
74HC373
A16 A[16 .. 0]
1 2
WR RD
12 11 10 9 8 7 6 5 27 26 23 25 4 28 3 31 2 29 30 22 24
ALE
11 13 14 15 16 17 18 19
AT89C51ED2_PLCC
FFFFh
A8 A9 A10 A11 A12 A13 A14 A15
D0 D1 D2 D3 D4 D5 D6 D7
33
Fyzická adresa RAM
10000h 0FFFFh
D0 D1 D2 D3 D4 D5 D6 D7
U4A
log.1 3
U3 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15
D0 D1 D2 D3 D4 D5 D6 D7
13 14 15 17 18 19 20 21
D0 D1 D2 D3 D4 D5
D6 D7
A16 WR CS2 CS1 OE
628128
74HCT08
Paměť 128kBx8bitů RAM má 17 adresových (A0÷A16) a 8 datových (D0÷D7) vodičů. Vodiče A0÷A15 budou připojeny přímo k paměti, zatímco vodič A16 je vytvořen například na vývodu P3.4, který rozděluje paměť do dvou bloků takto: A16 P3.4 0 1
Adresa procesoru A15÷A0 0000h÷FFFFh 0000h FFFFh 0000h÷FFFFh
Petr Skalický, katedra radioelektroniky
Adresový prostor paměti 00000h÷0FFFFh 10000h 1FFFFh 10000h÷1FFFFh
157
UKÁZKA PROGRAMOVÉ OBSLUHY VELKÉ DATOVÉ PAMĚTI Podprogram pro zápis registru R7 do paměti na adresu uloženou v paměťových místech adr_ram, adr ram adr_ram+1 a adr_ram+2 PIS_DO_RAM:
MOV A,adr_ram ; Střadač = A23÷A16 RRC A ; Příznak přenosu C = A16 , ; A16 nastaveno MOV P3.4,C MOV DPH,adr_ram+1 ; Horní část ukazatele = A15÷A8 MOV DPL,adr_ram+2 ; Spodní část ukazatele = A7÷A0 MOV A,R7 ; Zapisovaná hodnota do střadače MOVX @DPTR,A ; Zápis do paměti RET ; Návrat z podprogramu
Podprogram v jazyce C pro zápis do paměti RAM proměnné hodnota na adresu určenou proměnnou adr_ram (knihovní funkce XBYTE slouží pro přímý přístup do vnější datové paměti). void {
pis_do_ram pis do ram (unsigned long adr_ram, adr ram unsigned char hodnota) if ((adr_ram&0x10000)!=0) A16=1; else A16=0; XBYTE[adr_ram&0xFFFF]=hodnota; return; }
N b efektivněji Nebo f kti ěji void {
FEL ČVUT
pis_do_ram (unsigned long adr_ram, unsigned char hodnota) if ((*((char*)(&adr_ram)+1)&0x01)!=0) A16=1; else A16=0; XBYTE[adr_ram&0xFFFF]=hodnota; return; } Petr Skalický, katedra radioelektroniky
158
PŘIPOJENÍ VELKÉ PROGRAMOVÉ PAMĚTI V případě ří dě programové é paměti ě i neníí situace i tak k jednoduchá. j d d há Změnou Z ě na vyšších šší h adresových d ý h vodičích (A16, A17 a vyšších) dojde ke změně stránky programové paměti, na které musí existovat pokračování programu od adresy následující za adresou, která změnila vodiče A16, A17 a další. V assembleru lze situaci zajistit, v jazyce C obtížněji. Například u y CP/M,, které p používaly y řadiče s p programovatelnými g ý adresami p přerušení,, se celá systémů situace řešila obvodově pomocí adresového dekodéru. Adresový dekodér v určitému úseku programové paměti (obvykle v horní části adresového prostoru) přiřazoval vždy jednu stránku paměti nezávisle na vodičích A16 a vyšších. Na obrázku je pro adresový prostor 0000h÷EFFFh vybrána paměť ROM0 pro A16=0 a paměť ROM1 pro A16=1. Pro adresy F000h÷FFFFh je vybrána vždy paměť ROM0 nezávisle na stavu adresového vodiče A16. A16 Pro aktivační signály CS0 a CS1 můžeme psát
CS 0 = A16 * A15 * A14 * A13 * A12 CS1 = A16 + A15 1 * A14 * A13 * A12 Díky adresovému dekodéru můžeme v oblasti adres F000h÷FFFFh měnit hodnotu adresy A16 y bez nebezpečí p přeskoku do jjiného p a vyšších paměťového obvodu a následné kolize (zbloudění) programu. V přepínací oblasti musí být umístěny všechny globálně přístupné podprogramy, přerušení, řetězce, atd. FEL ČVUT
Paměť programu FFFFh F000h EFFFh
Přepínací Př í í oblast A16=0 i 1
Nevyužitá oblast
ROM_0
ROM_1
změna A16
pro A16=0
pro A16=1
0000h
Petr Skalický, katedra radioelektroniky
159
PŘIPOJENÍ VELKÉ PROGRAMOVÉ PAMĚTI U 8051 Vzhledem k umístění adres obsluh přerušovacího systému, na které je nutné se dostat z libovolné stránky programové paměti, je přepínací oblast umístěna v dolní části adresového prostoru. Na obrázku je označena jako globální, protože v ní musí být umístěny všechny globálně přístupné konstanty, řetězce a podprogramy. Aby nebylo nutné realizovat adresový dekodér, jehož vlastnosti by musely být přizpůsobeny vytvářenému programu (např. z hlediska velikosti globální oblasti), je ve všech stránkách programové paměti uložen stejný program (globální oblast), jejíž součástí je i realizace vlastního přepínaní stránek (změny A16,A17, atd.). V přepínací oblasti musí být uloženo vše k čemu má být přístup z kterékoliv stránky programové paměti. vše, paměti Oblast musí mít rozumnou kapacitu, aby přidávání dalších 64kB rozšiřujících stránek programové paměti bylo efektivní. Uvedený způsob vytvoření velkého programu, který svým ý rozsahem h překračuje ř k č j přímo ří adresovatelný d t l ý prostor procesoru 8051, podporuje překladač C51.exe a „bankovací linker“ BL51.exe pro jazyk C od firmy Keil Electronic. Některé nové procesory od firmy j jjiž vnitřní kapacity p y STelectronic a Atmel mají programové paměti přesahující 64kB a realizace velkých programů se musí opírat o tento model.
Paměť programu FFFFh
2000h 1FFFh 0000h
FEL ČVUT
Petr Skalický, katedra radioelektroniky
ROM_0
ROM_1
pro A16=0
pro A16=1
Globální oblast A16=0
Globální Globální oblast oblast A16=0 A16=1
160
PŘEADRESOVÁNÍ PROGRAMOVÉ PAMĚTI ZA PROVOZU U vývojových systémů, kde není využíván emulační nebo vývojový režim procesoru, je velmi výhodné používat programovou (případně i datovou) paměť na j se skutečnou aplikací p ((tj. j adresách,, které jjsou stejné od adresy 0000h). Pro rychlý vývoj je vhodné využívat RAM jako programovou a současně i datovou paměť. Po vynulování procesoru je čítač instrukcí nastaven na hodnotu PC=0000h, z které se čte první instrukce.
Po vynulování FFFFh RAM
⇒ Po zapnutí musí být na adrese 0000h paměť nonvolatile (ROM, EPROM, Flash, FRAM). ⇒ První instrukce programu v paměti ROM musí zajistit přeadresování této paměti nebo přeskok na paměť stejného typu s programem monitor nebo zavaděčem operačního systému, který následně odpojí paměť ROM z prostoru 0000h÷xxxxh a připojí paměť RAM. ⇒ Je-li p použita jjedna ROM,, musí být ý p přeadresování realizováno obvodově.
ROM
0000h
RAM RAM ..... ..... RAM RAM Mon ..... ..... Mon (Ad+3)_L (Ad+3)_H LJMP
Po přepnutí FFFFh
Ad+33 Ad
Ad
0000h
Mon ..... ..... Mon (Ad+3)_L (Ad+3)_H LJMP RAM RAM ..... ..... RAM RAM
⇒ Například pomocí instrukce dlouhého skoku (3byty) do horní části adresového prostoru na adresu počátku přemístěné ROM zvětšené o hodnotu 3 (tj. Ad+3). FEL ČVUT
Petr Skalický, katedra radioelektroniky
161
PŘEADRESOVÁNÍ PROGRAMOVÉ PAMĚTI ZA PROVOZU Přepínání startovací paměti zajistí adre adreROM RAM sový dekodér s multiplexerem, který Adresový je řízený sekvenčním obvodem. Po dekodér WR přečtení první instrukce (dlouhého skoku A13 A WR MUX Y0 PSEN & RD PSEN A14 B Y1 0 OE OE LJMP Ad+3), která se skládá ze tří bytů A15 C Y2 1 Y CS CS Y3 (b d (budou generovány á tři náběžné áběž é hrany h Y4 A signálu PSEN), bude změněna hodnota na log.1 G1 Y5 WR G2A Y6 & adresovém vstupu multiplexeru A na log.1 PSEN G2B Y7 1 RD a paměť typu ROM se obvodově přemístí prostoru ((např. p od do nového adresového p 1 log.1 adresy 0E000h). Přečtená instrukce je D Q D Q D Q PSEN směrována na adresu, na které je H H H počátek programu vývojového systému (monitoru, operačního systému). Reset Startovací paměť tak na prvních třech Konfigurace po první instrukci adresách obsahuje zmiňovaný dlouhý skok Konfigurace při první instrukci ROM nedostupná a na dalších se nachází program vývojového systému adresovaný pro paměť RAM RAM umístěnou v horní části adresového RAM RAM prostoru (tj. od adresy 0E000h). Paměť ROM (EPROM) a RAM budou aktivovány ROM nedostupná signály Datový Programový Datový Programový
CS ROM = ( AMUX + A15 + A14 + A13) * ( AMUX + A15 + A14 + A13) OEROM = PSEN CS RAM = WR.RD.PSEN + CS ROM OERAM = PSEN .RD WRRAM = WR FEL ČVUT
Petr Skalický, katedra radioelektroniky
162
PŘEADRESOVÁNÍ PROGRAMOVÉ PAMĚTI ZA PROVOZU Program pro přeadresování paměti EPROM po třech přečtených instrukcích z programové paměti. UMISTENI
EQU
0E000h
; Počáteční adresa přemístěné EEPROM
ORG UMISTENI START: LJMP UMISTENI+3 MONITOR: MOV SP, # STACK . . . . . . . . . . . . HOT: PUSH PSW PUSH ACC . . . . . . . .
; ; ; ; ; ; ; ; ; ; ;
nebo LJMP MONITOR Skok na startovací program Začátek tzv. studený start Monitoru Instrukce programu Monitor Instrukce programu Monitor Instrukce programu Monitor Teplý start programu Monitor neměnící příznaky a registry procesoru Instrukce programu Monitor nutné pro krokování vytvářeného programu, zjištění aktuálních hodnot registrů, obsahu pamětí, V/V bran, atd.
Jak je tato situace vyřešena u počítačů PC?
FEL ČVUT
Petr Skalický, katedra radioelektroniky
163
PŘEADRESOVÁNÍ PROGRAMOVÉ PAMĚTI ZA PROVOZU Příklad jiného řešení programově-obvodové programově obvodové konfigurace programové a datové paměti mikroprocesorového systému (použité ve vývojových systémech MIK552 a MIK517). Hlavní výhoda řešení spočívá v možnosti opakované konfigurace pamětí celého systému s možností skoku na libovolnou adresu programové paměti. Na výstupní bráně procesoru, která je mapována v oblasti vnější datové paměti (je ovládána instrukcí MOVX), je generován jeden nebo více konfiguračních signálů (konfigurační slovo). Aby změna konfiguračního slova na výstupu brány po instrukci zápisu MOVX neuplatnila ihned, prochází signály přes paměťové členy D s hodinovým signálem PSEN (obrázek). Paměťový člen D zpozdí účinek konfiguračních signálů o jeden strojový cyklus do příští náběžné hrany signálu PSEN. Změna se tak uplatní až po přečtení dalšího bytu - instrukce RET (ve skutečnosti se projeví již při čtení 2 bytu za instrukcí RET, který se však u jednobytových instrukcí nevyužívá). ROM PSEN log.1
0 1
Adresa POKRAC
MUX Y
Výstup paměťově mapované brány D Q
Reset
FEL ČVUT
H
WR OE CS
OE CS
A
PSEN
RAM
MUX
WR log.1
0 1
RD PSEN
0 1
Y
WR.RD PSEN RAM ROM
0 1
Y
Y
A
Petr Skalický, katedra radioelektroniky
WR WR RD PSEN.RD WR.RD PSEN WR RD PSEN.WR.RD RAM ROM i RAM
164
PŘEADRESOVÁNÍ PROGRAMOVÉ PAMĚTI ZA PROVOZU Program pro přepnutí pamětí za běhu Prepni:MOV A,#LOW(POKRAC) PUSH ACC MOV A,#HIGH(POKRAC) PUSH ACC MOV DPTR,#Adr_konfig MOV A,#Konfig_slovo MOVX @DPTR, A RET
;Spodní část pokračovací adresy ;Uložení adresy do zásobníku ;Horní část pokračovací adresy ;Uložení Ul ž í adresy d v zásobníku á b ík ;Do DPTR adresa konfigurační brány ;Konfigurační slovo = nové konfig.signály ;Změna konfiguračních signálů na výstupu brány ;Skok na pokračovací adresu, po instrukci RET ;se konfigurační slovo uplatní v dekodéru adres
ROM PSEN log.1
0 1
Adresa POKRAC
MUX Y
Výstup paměťově mapované brány D Q
Reset
FEL ČVUT
H
WR OE CS
OE CS
A
PSEN
RAM
MUX
WR log.1
0 1
RD PSEN
0 1
Y
WR.RD PSEN RAM ROM
0 1
Y
Y
A
Petr Skalický, katedra radioelektroniky
WR WR RD PSEN.RD WR.RD PSEN.WR.RD RAM ROM i RAM
165
SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM Sériové připojení pamětí přes přístrojové rozhraní SPI, I2C, Microwire nebo 1 1-Wire Wire umožňuje ve srovnání s paralelním propojením pomalejší přístup k požadovanému typu paměti. K propojení však potřebujeme mnohem menší počet vodičů (snáze se izolují zemní vrstvou), které jsou více odolné vůči elektromagnetickému rušení (EMC). Přístup se uskutečňuje pomocí programu (simulujícího příslušnou sběrnici - pomalejší přístup) nebo pomocí řadiče potřebné sběrnice bě i (rychlejší ( hl jší přístup) ří t ) integrovaného i t éh v procesoru. Takto T kt připojená ři j á paměť ěť EEPROM může ůž obsahovat: konfigurační konstanty, přístupové kódy, nelineární funkce, uživatelský interpretovaný program. Obsahem nemůže být primární aplikační program. U1 VCC
44 12
27pF
C1
21
27pF
C2
20
XT1 11 059M Hz 11.059M VCC U2
2
R2 8 10k
1
P rot ect J1
3 4
5 SI 2 SO 6 SCK 1 WP CS 7 GND HOLD VCC
AT25640 R1 10k VCC Vystup TL7705
FEL ČVUT
2 3 4 5 6 7 8 9 35 10 34 23 1 22
VCC NC
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
XTAL1
XTAL2
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1 6/MISO P1.6/MISO P1.7/SCK EA/VPP RESET NC NC NC GND AT89C8252_PLCC
A8 A9 A10 A11 A12 A13 A14 A15 ALE/PROG PSEN RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
Petr Skalický, katedra radioelektroniky
43 42 41 40 39 38 37 36 24 25 26 27 28 29 30 31 33 32 11 13 14 15 16 17 18 19
166
SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM‐‐PROGRAMOVÁ OBSLUHA #ifdef SPIEEPROM #ifndef SPI_KANAL // PROGRAMOVY PRISTUP DO SPI EEPROM unsigned char cti_exbyte(unsigned int adresa) { unsigned char i,znak; CLKEE=0; CSEE=0; znak=0x03; // Čteni for (i=0; i<8; i++) { MOSI=0; if ((znak&0x80)!=0) MOSI=1; // Příprava vysíl.bitu znak+=znak; CLKEE=1; CLKEE=0; } // Hodinový impulz for (i=0; i<16; i++) { MOSI=0; MOSI 0; if ((adresa&0x8000)!=0) ((adresa&0x8000)! 0) MOSI=1; MOSI 1; // Bit adresy adresa+=adresa; CLKEE=1; CLKEE=0; } // Hodinový impulz znak=0; for (i=0; i<8; i++) { znak+=znak; // Posun přijíman.bitů if ( (MISO==1) 1) znak+=1; k 1 CLKEE=1; 1 CLKEE=0;} 0 } // Hodinový di ý i impulz l CSEE=1; return(znak); } Doba čtení bytu závisí hodinovém kmitočtu procesoru a rychlosti vykonání jednotlivých instrukcí po přeložení ř l ž í do d strojového t j éh kódu kód procesoru. Význam Vý j d tli ý h symbolických jednotlivých b li ký h názvů á ů je j násleá l dující: CLKEE - výstup vytvářející hodinový signál pro paměť SPI MOSI - výstup přenášející data do vstupu MOSI paměti SPI MISO - vstup pro příjem říj dat d přenášených ř áš ý h z paměti ě i SPI Doba přístupu k hodnotě uložené na dané adrese – řádově stovky μs FEL ČVUT
Petr Skalický, katedra radioelektroniky
167
SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM SÉRIOVÉ PŘIPOJENÍ PAMĚTI EEPROM‐‐S VYUŽITÍM ŘADIČE SPI // PRISTUP DO SPI EEPROM POMOCI SPI KANALU bez využití přerušení unsigned char cti_exbyte(unsigned int adresa) { CSEE=0; SPDAT=0x03; // Instrukce pro čtení while ((SPSTA&0x80)==0); // Čekání na vykonání příkazu SPDAT=adresa>>8; SPDAT adresa>>8; // Vysláni vyšší části adresy while ((SPSTA&0x80)==0); // Čekání na vykonání příkazu SPDAT=adresa; // Vyslání nižší části adresy while ((SPSTA&0x80)==0); // Čekání na vykonání příkazu SPDAT=0; // Příprava na přenos hodnoty while hil ((SPSTA&0 ((SPSTA&0x80)==0); 80) 0) // Generování G á í hodin h di a příjem říj dat d t U1 CSEE=1; return(SPDAT); 44 43 VCC AD0 42 12 VCC } NC AD1 41
Přístup řádově 8÷25μs
21
27 F 27pF
C2
20
VCC U2 R2 8 10k
P rot ect J1 1
SPDAT - datový registr SPI řadiče SPSTA - stavový registr SPI řadiče
C1
XT1 11.059M Hz
2
Doba čtení bytu závisí na nastavení frekvence hodinového signálu SCK generovaného procesorem. Význam jednotlivých symbolických názvů je následující:
27pF
3 4
5 SI 2 SO 6 SCK 1 WP CS 7 GND HOLD VCC
AT 25640 R1 10k VCC Vystup TL7705
FEL ČVUT
Petr Skalický, katedra radioelektroniky
2 3 4 5 6 7 8 9 35 10 34 23 1 22
AD2 AD3 AD4 AD5 AD6 AD7
XTAL1
XTAL2
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK
A8 A9 A10 A11 A12 A13 A14 A15 ALE/PROG
EA/VPP RESET NC NC NC GND AT 89C8252_P LCC
PSEN RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3 5 T1/P3.5 WR/P3.6 RD/P3.7
40 39 38 37 36
24 25 26 27 28 29 30 31 33 32 11 13 14 15 16 17 18 19
168
PROBLEMATIKA MÓDŮ SE SNÍŽENOU SPOTŘEBOU Budeme-li navrhovat systém, v kterém budou využívány módy se sníženou spotřebou, musíme věnovat pozornost nejen obvodovému návrhu, ale i programovému vybavení. ♣ Při paralelním připojení vnějších pamětí (hlavně programové) musíme zjistit stav řídících signálů v Power Down a IDLE módu. Pokud řídící signály přechází do úrovně log.0, může to mít za následek aktivaci paměti a následné zvýšení odběru z napájecího zdroje, který ani zdaleka neodpovídá katalogovým údajům pro daný procesor v daném módu. ♣ Problematickým se stává Power Down mód, při kterém se zastaví procesor, periferie i oscilátor na procesoru. Vývody ALE a PSEN přechází do log.0, brána P0 přechází do třetího stavu t ((při ři externí t í paměti) ěti) a na b branách á h P1 P1,P2 P2 a P3 zůstávají ů tá jí poslední l d í hodnoty h d t zapsanéé do d příslušných bran. Tento stav může vést k aktivaci externí paměti. ♣ Máme-li v Power Down módu potíže s velkou spotřebou, musíme brány, z kterých vytéká proud před přechodem do módu uvést do stavu log.0 . ♣ Má Máme-li li připojený ři j ý vnější ější Watchdog W hd a chceme h využívat ží mód ód Slow Sl D Down, musíme í na to pamatovat při realizaci programového vybavení a realizovat častější obsluhu vnějšího Watchdogu. ♣ Chceme-li v systému mít vnější Watchdog a zároveň využívat Power Down nebo IDLE mód musíme se smířit s tím, mód, tím že procesor bude pravidelně vynulován a uveden do normální činnosti. Nemá-li cokoliv na práci, může být zase uveden do potřebného módu se sníženou spotřebou.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
169
VÝPOČET ČASOVÝCH PARAMETRŮ μ VÝPOČET ČASOVÝCH PARAMETRŮ μP SYSTÉMU Určete maximální hodinový kmitočet systému s procesorem 80C552 vybaveného vnější pamětí programu flash s dobou přístupu tACC=90ns aktivované signálem PSEN (CS=OE=PSEN). Jako registr spodní části adresy použit obvod 74HCT373 s dobou předstihu tsetup≥6[ns] a hodinovým impulzem tH ≥ 20[ns]. Odtud t LHLL ALE t PLPH musí být splněno t tsetup ≥ 6[ns] ≤ tAVLL=1/fOSC-25 t AVLL
tzapis ≥ 20[ns] ≤ tLHLL=2/fOSC-40 Použitý registr omezuje fOSC fOSC≤ 30 [[MHz]] Pro správné čtení instrukcí z paměti flash musíme splnit časy tAVIV platné instrukce od platné adresy a tPLIV platné instrukce od sestupné hrany PSEN. Vzhledem k jednoduché aktivaci paměti flash můžeme psát
t PXIZ
PSEN
t t PLIV
P2 P0
A8 ÷ A15
t
A0 ÷ A7
Adresa
Instrukce
t
A0 ÷ A15
t
t AVDV
tAVIV=5/fOSC-80 80 [ns]
t AVDX
CS
tPLIV=3/fOSC-60 [ns] Pro Flash 90[ns] a CS=OE=PSEN 90 ≤ tPLIV=3/fOSC-60 [ns]
OE
Odtud fOSC≤ 20 [MHz]
Dout
FEL ČVUT
t AVIV
t t CSDV
t t OEDV
Petr Skalický, katedra radioelektroniky
t OEDZ t CSDZ D0 ÷ D7
t 170
VÝPOČET ČASOVÝCH PARAMETRŮ μ VÝPOČET ČASOVÝCH PARAMETRŮ μP SYSTÉMU Analogicky budeme provádět výpočet pro paměť RAM připojenou např. např takto: CS=RD*WR CS=RD WR, OE=RD a WR=WR. V tomto případě musíme kontrolovat oba časy tAVDV i tRLDV, které jsou pro daný procesor dány těmito vztahy Doba vybavení od adresy tAVDV=9/fOSC-165 [ns] Doba vybavení od OE tRLDV=5/f 5/fOSC-90 90 [ns] Aktivační signál CS=RD*WR, bude vytvářen v obvodu HCT08 s maximálním zpožděním tPLHmax=25[ns]. Pro dobu vybavení paměti RAM (tACC=200[ns]) od platné adresy můžeme psát 200 + tPLHmax ≤ tAVDV=9/fOSC-165 [ns]
Odtud fOSC≤ 23 [MHz]
Aktivační signál RD z procesoru musí splnit dobu aktivace třístavového budiče paměti RAM (tOE=80[ns]). Odtud 80 ≤ tRLDV=5/fOSC-90 [ns] Odtud fOSC≤ 29,4 [MHz] Zkontrolován by měl být ještě signál WR a parametry pro zápis do paměti, které obvykle nejsou j zobrazeny y na obrázku. Analýzou ý bylo y zjištěno, j , že maximální hodinový ý kmitočet kritické a nejsou pro použité součástky je t AVLL t RLRH 20MHz. Všechny paraALE t metry musí být počít AVDV t RHDZ tány z mezních katalot RLDV g ý h údajů gových úd jů a nikoliv ik li RD t z parametrů změřených na stole v laboratoři, P2 A8 ÷ A15 t které nebudou platit v celém rozsahu teplot a napájecího napětí. P0 A0 ÷ A7
FEL ČVUT
DATA
Petr Skalický, katedra radioelektroniky
t
171
EKONOMICKÉ ASPEKTY NÁVRHU µP SYSTÉMU Návrh systému y jje p primárně ovlivněn zadáním: - velikostí plošného spoje - spotřebou - možným přeprogramováním obvodové části - možností dálkového přeprogramování systému - možností dalšího rozšiřování programového vybavení v budoucnosti - předpokládanou prodejní cenou Pokud po zvážení omezujících podmínek vyplývajících ze zadání zůstává ještě více možných řešení, přichází na řadu ekonomické aspekty návrhu (realizovat zařízení s pokud možno nejnižší cenou). I když je potřeba mít určitou znalost o cenových hladinách jednotlivých součástek, lze popsat určité zákonitosti, které by návrhář měl při návrhu zvážit. 1.
Systém s malým programem s větším počtem V/V vývodů - Malý procesor doplněný klasickou logikou implementující V/V vývody - Procesor s dostatečným počtem V/V vývodů - Procesor s programovatelným obvodem
2.
Systém se složitější logikou - Procesor ve spojení s programovatelným obvodem - Procesor P i integrovaný ý s programovatelným l ý obvodem b d
3.
Systém se složitou logickou strukturou (akcelerátory atypických operací) - Procesor ve spojení s programovatelným obvodem procesoru nebo multiprocesorové p struktury y ve velkém - Realizace akcelerátoru i p programovatelném obvodu
FEL ČVUT
Petr Skalický, katedra radioelektroniky
172
EKONOMICKÉ ASPEKTY NÁVRHU µP SYSTÉMU 1.
Systém s malým S l programem s větším počtem V/V vývodů dů - Malý procesor doplněný klasickou logikou implementující V/V vývodů - Procesor s dostatečným počtem V/V vývody - Procesor s programovatelným obvodem
44 12 21 VCC
27 F 27pF
27pF
20
C7
5
C8
4
U1 VCC
XTAL1
XTAL2
XT4 12 MHz
1 10
RST
P1.0 /AIN0 P1.1 /AIN1 P1 2 P1.2 P1.3 P1.4 P1.5 /MOSI P1.6 /MISO P1.7 /SCK P3.0 /RXD P3.1 /TXD P3.2 /INT0 P3.3 /INT1 P3.4 /T0 P3.5 /T1 /PWM P3.7
12 13 14 15 16 17 18 19
D0 D1 D2 D3 D4 D5 D6 D7
2 5 6 9 12 15 16 19
2 3 6 7 8 9 11
GND
AT89S4051
AT89C4051 - 38,- Kč 3xHCT373 - 22,50Kč + PCB odhad 20,- Kč Celkem
D0 D1 D2 D3 D4 D5 D6 D7
80,-Kč
U2 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7 OC G
D0 D1 D2 D3 D4 D5 D6 D7
2 5 6 9 12 15 16 19
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7 OC G
1 2 3 4 5 6 7 8 9 10
1 11
Brána 1
J6
3 4 7 8 13 14 17 18
1 2 3 4 5 6 7 8 9 10
1 11
B á 2 Brána VCC
D0 D1 D2 D3 D4 D5 D6 D7
3 4 7 8 13 14 17 18 1 11
D0 D1 D2 D3 D4 D5 D6 D7
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
OC CLK
74ACT374
Ceny GM electronic leden 2011 FEL ČVUT
3 4 7 8 13 14 17 18
74AHCT373 U4
2 5 6 9 12 15 16 19
VCC NC
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
XTAL1
J7
74AHCT373
U3
U5
J2 1 2 3 4 5 6 7 8 9 10
20
2 3 4 5 6 7 8 9 35 10 34 23 1 22
XTAL2
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK EA/VPP RESET NC NC NC GND
A8 A9 A10 A11 A12 A13 A14 A15 ALE/PROG PSEN RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
43 42 41 40 39 38 37 36 24 25 26 27 28 29 30 31 33 32 11 13 14 15 16 17 18 19
AT89C8252_PLCC
Procesor AT89C8252 - 123,-Kč + PCB odhad 15,- Kč PLD XC9636XL10VQ44 + PCB odhad
- 64,-Kč 15,- Kč
Brána 3
Petr Skalický, katedra radioelektroniky
173
EKONOMICKÉ ASPEKTY NÁVRHU µP SYSTÉMU 2.
Systém S se složitější l logikou l k - Procesor ve spojení s programovatelným obvodem - Procesor integrovaný s programovatelným obvodem
Rozhodnutí o výhodnosti jedné nebo druhé varianty bude záviset na složitosti logického obvodu a potřebném výpočetním p ýp výkonu ý procesoru viz.3. p 3.
Systém se složitou logickou strukturou (akcelerátory atypických operací) - Procesor ve spojení s programovatelným obvodem - Realizace akcelerátoru i procesoru nebo multiprocesorové struktury ve velkém programovatelném p g obvodu
Procesor AVR integrovaný s programovatelným polem vyrábí firma Atmel s kapacitou 5 000 až 40 000 ekvivalentních hradel. Cena se pohybuje v rozsahu 300 až 1 000Kč. Firma Xilinx realizovala procesory do programovatelného pole: PicoBlase 8 bitový RISC na jehož realizaci je potřeba 10 000 ekvivalentních hradel PLD MicroBlase 32 bitový RISC na jehož realizaci je potřeba 100 000 ekvivalentních hradel PLD Bude-li na realizaci akcelerátoru a dalších obvodů potřeba více jak 40 000 ekvivalentních hradel, bude výhodnější realizovat logiku i procesor v PLD i za cenu nezbytého připojení dalšího obvodu (nahrávací paměti nebo procesoru) k naplnění programovatelného pole aplikačním obsahem po připojeníí k napájení. á í Pokud budeme vyžadovat akcelerátor á k výkonovému ý é DSP, S pak se nevyhneme spojení signálového procesoru s programovatelným polem. Tato situace se může změnit, protože přední výrobci se zmiňují o DSP procesoru v programovatelném obvodu.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
174
VSTUPY A VÝSTUPY MIKROPROCESOROVÉHO SYSTÉMU V počátcích mikroprocesorové techniky bylo nutné připojit ke společné sběrnici systému nejen paměti, ale i určitý počet vstupů a výstupů. U jiné aplikace, kde počet vstupních a výstupních vodičů byl odlišný, bylo nutné zapojení systému v oblasti vstupů/výstupů upravit. Záhy byl proto vyvinut programovatelný V/V obvod (známá 8255, 855), která předurčila vývoj v oblasti vstupů a výstupů hlavně u jednočipových procesorů a univerzálních systémů určených pro různé aplikace. lik U aplikací lik í s univerzálními i ál í i a signálovými i ál ý i procesory, u rozsáhlých áhlý h (někdy ( ěkd i malých) lý h) aplikací s jednočipovými procesory a procesorů realizovaných v PLD je potřeba připojit ke společné sběrnici vstupy a výstupy. Vstupy/výstupy mohou být realizovány z klasických logických obvodů (pro jednodušší aplikace ekonomicky efektivnější), programovatelných obvodů ((CPLD, FPGA)) nebo specializovaných p ý obvodů se sériovým ý rozhraním. Jednotlivé brány mohou být realizovány těmito obvody:
Výstupní brány - musí být realizovány paměťovými obvody (paměťové členy D, JK, RST, registry nebo posuvnými registry).
Vstupní brány - musí být realizovány obvody s třístavovým výstupem (úrovňově řízené paměťové členy (373, 573), multiplexery z řady 25x, samostatnými budiči s třístavovým výstupem (125, 244, atd.)), případně obvody s otevřeným kolektorem (využívá se výjimečně).
V závislosti na připojení můžeme jednotlivé varianty rozdělit:
Paralelní V/V brány - obvody s direktivním řízením (obvody musí svými parametry vyhovět časování μP) nebo obvody s potvrzováním přenosu (handshake)
Sériové V/V brány - obvody se synchronním nebo asynchronním přenosem s bitovou synchronizací specializovanými obvody s přístrojovou sběrnicí (I2C, SPI, Microwire, 1-Wire)
FEL ČVUT
Petr Skalický, katedra radioelektroniky
175
VSTUPY A VÝSTUPY MIKROPROCESOROVÉHO SYSTÉMU Rozšiřující vstupy a výstupy může připojit k obecně použitelným V/V vývodům procesoru nebo pomocí společné sběrnice do vnějšího V/V prostoru procesoru (s využitím řídících signálů daného procesoru např. WR, RD, IORQ (Z80) nebo R/W, IS (TMS320)), do vnějšího datového prostoru procesoru (např. WR, RD (AVR,8051), WR, RD, MERQ (Z80) nebo R/W, DS (TMS320)). Vstupní bránu lze principiálně začlenit i do programového prostoru (obvykle se nepoužívá). ží á) Vstupy V t a výstupy ý t mohou h být za pomocii posuvných ý h registrů gi t ů ovládány ládá pomocíí synchronního nebo asynchronního sériového kanálu. Vstupem a výstupem využívaným k rychlému přenosu dat zvláště mezi signálovými procesory může být i FIFO paměť. Rozhodnutí o použité variantě rozšíření V/V bran ovlivňuje
počet č td dostupných t ý h vývodů ý dů na uP P potřebný datový tok velikost navrhované desky cena materiálu, která je současné době velmi často nejdůležitějším parametrem
Stále častěji se setkáváme s náhradou klasických obvodů programovatelnými obvody, obvody které i přes svoji vyšší cenu nám mohou pomoci v případě nedostatku místa na desce a umožňují úpravy funkce logických obvodů bez zásahu do vlastního návrhu plošného spoje. Vývojově dochází k propojení μP s PLD. Propojení p j standardního jjednočipového p p procesoru s p programovatelným g ý p polem ¾ Atmel řada AT94Sxx – spojení uP z řady AVR s FPGA z řady AT40K Integrace procesoru (programové balíky realizující procesory) do středního nebo velkého programovatelného pole ¾ Altera (NIOS – 16bitový RISC), Lattice (LatticeMico32 – 32bitový RISC), Xili (Mi Xiling(MicroBlaze Bl – 32bitový 32bi ý RISC RISC, PicoBlaze Pi Bl – 8bitový 8bi ý procesor, CryptoBlaze C Bl – 8bitový kryptografický procesor) FEL ČVUT
Petr Skalický, katedra radioelektroniky
176
VSTUPY A VÝSTUPY V ADRESOVÉM PROSTORU Pravidla p pro p připojení p j vstupů p a výstupů ý p do vstupně/výstupního p ý p nebo datového p prostoru p procesoru pomocí společné sběrnice jsou stejná jako při připojování pamětí. Příklad: Připojte do adresového prostoru 9000h÷97FFh datové paměti procesoru AVR nebo 8051 vstupní a výstupní 8 bitovou bránu. Adresa (hex) 0000h 0001h ÷ 8FFFh 9000h ÷ 97FFh 9800h ÷ FFFFh
A15 A14 A13 A12 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1
0 0
0 0
1 1
1
1
1
1
Adresové vodiče A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ÷ 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 ÷ 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 ÷ 1 1 1 1 1 1 1 1 1 1 1 1
Adresový prostor 9000h÷97FFh je charakterizován stavem těchto adresových vodičů A15=1, A14=0, A13=0, A12=1 a A11=0 Pro výstupní bránu musíme použít obvod typu registr (latch), jehož vstupy budou připojeny na d t datovou sběrnici bě i i a hodinový h di ý signál i ál bude b d odvozen d stavem t výše ýš uvedených d ý h adresových d ý h vodičů dičů současně s řídícím signálem WR=0. Výstupy obvodu budou připojeny na konektor, který bude představovat výstupní bránu. Bude-li obvod hranově řízený, výkonná hrana by měla korespondovat s přechodem WR 0→1. Bude-li obvod úrovňově řízený, měl by hodinový signál H=1 korespondovat p s WR=0. K zápisu p pak bude docházet na konci zapisovacího p p cyklu, y kdy y poměry na sběrnici, která často představuje nepřizpůsobená vedení, budou ustálené. FEL ČVUT
Petr Skalický, katedra radioelektroniky
177
VSTUPY A VÝSTUPY V ADRESOVÉM PROSTORU Pro vstupní p bránu musíme p použít obvod, jjehož třístavové výstupy ý py budou p připojeny p j y na datovou sběrnici. Vstupy obvodu připojeny na konektor představující vstupní bránu. Třístavové výstupy budou aktivovány jedině tehdy, když na adresových vodičích A15 až A11 bude stav 10010 a řídící signál bude RD=0. V ostatních případech musí být výstupy ve stavu vysoké impedance aby nedošlo ke spojení (zkratu) výstupů dvou obvodů. Níže uvedené zapojení vstupu nerespektuje fakt že vstupní proměnná (bit) se může během instrukce čtení změnit. fakt, změnit Chceme-li Chceme li stabilizovat vstupní hodnotu musíme použít obvod typu registr, u kterého v důsledku asynchronnosti vstupních změn a hodinového kmitočtu procesoru bude docházet k metastabilnímu stavu v důsledku nedodržení doby předstihu tsetup registru. D[7 .. 0] A[15 .. 0]
A12 A14 A15
1 2 3
log.1 A13 A11
6 4 5
Na výstupu bude log.0 v adresovém rozsahu
U1 A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
0000h - 07FFh 1000h - 17FFh 4000h - 47FFh 8000h - 87FFh C000h - C7FFh 9000h - 97FFh C000h - C7FFh D000h - D7FFh
D0 D1 D2 D3 D4 D5 D6 D7
3 4 7 8 13 14 17 18 1 11
74LS138 log.1 WR
R1
5k6 VCC
4
6
7432
1 RD
D0 D1 D2 D3 D4 D5 D6 D7
2 5 6 9 12 15 16 19
U4A
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q
2 5 6 9 12 15 16 19
OE H U3 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7 OE H
3
2
D0 D1 D2 D3 D4 D5 D6 D7
log.1
74AHCT373
J2 1 2 3 4 5 6 7 8 9 10
Vystup
74AHCT373
U4B
5
U2
3 4 7 8 13 14 17 18 1 11
J3 1 2 3 4 5 6 7 8 9 10
Vstup
7432
FEL ČVUT
Petr Skalický, katedra radioelektroniky
178
PROBLÉM SYNCHRONIZACE ‐‐ METASTABILITA PROBLÉM SYNCHRONIZACE Velmi častou úlohou v číslicových systémech je synchronizace vstupního signálu nebo dat na hodinový signál zpracovávajícího systému. Kmitočet dat nebo vstupního signálu je obecně asynchronní vůči internímu synchronizačnímu signálu Mikroprocesorový systém přijímajícího p j j systému y ⇒ díky y tomu DATA nemusí být dodržena doba předstihu Periferie Žádosti tsetup pro zachycující paměťové členy D Q ⇒ problém metastability. Syst. hod. H
D tsetup
t hold
td
CLK tpd Q
tpd METASTABILNÍ VÝSTUP
Kritické časové okénko je dáno td ∈(10÷150)[ps]. Střední doba mezi výskyty metastabilního chování závisí na td, synchronizačním kmitočtu systému fclk a k it čt vstupního kmitočtu t íh signálu ig ál nebo b jeho j h změn ě fin. FEL ČVUT
Petr Skalický, katedra radioelektroniky
MFBT =
U iH U iL
1 f in * f clk * t d 179
PROBLÉM SYNCHRONIZACE PROBLÉM SYNCHRONIZACE –– METASTABILNÍ CHOVÁNÍ
FEL ČVUT
Petr Skalický, katedra radioelektroniky
180
PROBLÉM SYNCHRONIZACE PROBLÉM SYNCHRONIZACE –– SN74AS74
FEL ČVUT
Petr Skalický, katedra radioelektroniky
181
PROBLÉM SYNCHRONIZACE PROBLÉM SYNCHRONIZACE –– isp ispLSI LSI 2032
FEL ČVUT
Petr Skalický, katedra radioelektroniky
182
SYNCHRONIZACE –– DOPADY METASTABILNÍHO CHOVÁNÍ SYNCHRONIZACE
Asynchronní žádost o p přerušení Systémové hodiny
Metastabilní stav
Ostatní přerušení
1
? Žádost do kontrolní logiky
D Q PČ1 H
Prioritní logika
? Vektor přerušení
Dojde-li na výstupu synchronizujícího obvodu k metastabilnímu stavu, může v důsledku nedefinované logické úrovně dojít např. k chybnému vyhodnocení přerušení v kontrolní logice stavu přerušení nebo přerušovacího vektoru v kontrolní logice vybavující adresu přerušení. FEL ČVUT
Petr Skalický, katedra radioelektroniky
183
PROBLÉM SYNCHRONIZACE PROBLÉM SYNCHRONIZACE –– VLASTNOSTI OBVODŮ
Z diagramu zjistíme, že CMOS obvody se rychleji opouští metastabilní stav.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
184
PROBLÉM SYNCHRONIZACE PROBLÉM SYNCHRONIZACE –– VÝPOČET SPOLEHLIVOSTI Při výpočtu systémové spolehlivosti budeme vycházet ze střední doby mezi chybami v synchronizaci, která je dána vztahem
e (T. Δ t) MFBT = f in * f clk * t d kde fin a fclk jsou kmitočty vstupního a synchronizačního signálu, T a td jsou parametry charakteristické pro zvolenou technologii číslicových obvodů a Δt je doba zpožděného testování správnosti výstupu. Jsou-li signály fin a fclk asynchronní, vzniku metastabilního stavu zabránit můžeme. Parametry použité technologie T a td ovlivnit též nemůžeme. nemůžeme Protože pravděpodobnost chyby se silně zmenšuje s rostoucí hodnotou Δt, můžeme realizovat zpožděné testování o hodnotu Δt stavu výstupu klopného obvodu. Hodnota T je určena směrnicí v grafu experimentálně naměřených hodnot z předcházející blány (zdroj Texas Instruments) a hodnota td je dána polohou přímky v grafu a můžeme ji vypočítat z výše uvedeného vzorce.
ln MTBF(2) - ln MTBF(1) T= Δt(2) - Δt(1)
e (T.Δt) td = MTBF * f clk * f in
Například p pro střední dobu chyby p y y 100let,, technologii g ALS,, fclk=10MHz a fin= 100kHz zjistíme, že pro požadovanou spolehlivost musíme testovat výstup synchronizačního obvodu se zpožděním 37[ns].
e (1,O 2*Δt ) 100let = 3.2 *10 s = 5 ⇒ Δt = 37 [ns ] 7 −6 10 *10 * 8.8 *10 9
FEL ČVUT
Petr Skalický, katedra radioelektroniky
185
DVOJNÁSOBNÝ SYNCHRONIZÁTOR DVOJNÁSOBNÝ SYNCHRONIZÁTOR –– VÝPOČET CHYBOVOSTI Testování výstupu synchronizačního paměťového členu zajistíme druhým paměťovým členem – dvojnásobným synchronizátorem. Pro chybovost na výstupu druhého paměťového členu musíme stanovit frekvenci změn na vstupu druhého paměťového členu. Ta se stanovuje jako frekvence chybných výstupů prvého paměťového členu. Následně se již jedná o dosazení do vztahu pro střední dobu mezii chybnými h b ý i stavy t a jeho j h úpravu. ú Z odvození d í je j zřejmé, ř j é že ž pro nízkou í k chybovost h b t synchronizace potřebujeme dlouhou dobu k testování, která omezuje hodinový synchronizační kmitočet zařízení.
Asynchronní vstup CLK
Asynchronní vstup
D Q H
t > Δt
CLK
QFF1
D Q H
QFF2
f in(2) =
f *f *t 1 = in(1) (T.(1/fclk )) d MFBT(1) e clk
e (T. Δ t) MFBT(2) = f in(2) * f clk * t d
METASTABILNÍ VÝSTUP
QFF1 QFF2
FEL ČVUT
e (T.Δ t ) * e (T.(1/f )) MFBT(2) = f in(1) * f clk2 * t d2 clk
Petr Skalický, katedra radioelektroniky
186
PARAMETRY MODERNÍCH PROGRAMOVATELNÝCH OBVODŮ FIRMY PARAMETRY MODERNÍCH PROGRAMOVATELNÝCH OBVODŮ FIRMY ALTERA ALTERA Potřeba dosažení vysokého hodinového kmitočtu, donutila výrobce PLD k výrobě obvodů s velmi krátkou dobou trvání metastabilního stavu.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
187
VSTUPY A VÝSTUPY V ADRESOVÉM PROSTORU Chceme-li p potlačit důsledky y metastabilního stavu na registru, g musíme p použít dvojnásobný j ý synchronizátor. Druhý registr (obvod U3) vzorkuje výstup registru (obvodu U5), u kterého bude docházet ke vzniku metastabilního stavu. Systémové hodiny pak musí mít takový kmitočet, aby přepis hodnoty z U5 do U3 probíhal v době, kdy s vysokou pravděpodobností došlo k ustálení výstupů U5. Okamžik vlastního čtení obsahu U3 procesorem musí předcházet výkonná hrana systémových hodin minimálně o dobu tpH→Q Q. D[7 .. 0] A[15 .. 0]
A12 A14 A15
1 2 3
log.1 A13 A11
6 4 5
Na výstupu bude log.0 v adresovém rozsahu
U1 A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
15 14 13 12 11 10 9 7
0000h - 07FFh 1000h - 17FFh 4000h - 47FFh 8000h - 87FFh C000h - C7FFh 9000h - 97FFh C000h - C7FFh D000h - D7FFh
D0 D1 D2 D3 D4 D5 D6 D7
3 4 7 8 13 14 17 18 1 11
74LS138 log.1 WR
R1
5k6 VCC
4
6
7432
1 RD Sy stemov e_hodiny
FEL ČVUT
U4A 3
2
D0 D1 D2 D3 D4 D5 D6 D7
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
J4
2 5 6 9 12 15 16 19
1 2 3 4 5 6 7 8 9 10
OE H
Vystup
74AHCT373
U4B
5
U2
D0 D1 D2 D3 D4 D5 D6 D7
19 18 17 16 15 14 13 12
U3 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
D1 D2 D3 D4 D5 D6 D7 D8 CLK OE
74HCT574
2 3 4 5 6 7 8 9 11 1
19 18 17 16 15 14 13 12
U5 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
D1 D2 D3 D4 D5 D6 D7 D8 CLK OE
74HCT574
2 3 4 5 6 7 8 9 11 1
J5 1 2 3 4 5 6 7 8 9 10
Vstup
7432
Petr Skalický, katedra radioelektroniky
188
VSTUPY A VÝSTUPY V DATOVÉM ADRESOVÉM PROSTORU 8051 Příklad:
Připojte p j do adresových ý p prostorů 8000h÷87FFh, 9000h÷97FFh A000h÷A7FFh datové paměti procesoru AVR nebo 8051 jednu vstupní a dvě výstupní 8 bitové brány a vytvořte obslužný program pro zápis do brány.
Ze zadaných adresových prostorů nejprve zjistíme, které adresové vodiče budou použity k dekódování a vytvoření zapisovacích a čtecích signálů CS0, CS1 a CS2. Například zvolíme CS0 CS1 CS2
1000 0xxx xxxx xxxx 1001 0xxx xxxx xxxx 1010 0xxx xxxx xxxx
adresový prostor adresový prostor adresový prostor
8000h÷87FFh 9000h÷97FFh A000h÷A7FFh
výstup výstup vstup
U4 U5 U6
R i t U5 adresovaný Registr d ý j jako k vnější ější paměť ěť RAM ;Podprogram VYST5 v asembleru 8051 zapíše do obvodu U5 obsah střadače VYST5: PUSH DPL PUSH DPH MOV DPTR DPTR, #9030h MOVX @DPTR, A POP DPH POP DPL RET
; ; ; ; ;
Uložení aktuálního stavu datového ukazatele DPTR Ad Adresa U5 (9000 (9000÷97FFh) 97FFh) d do DPTR Zápis do vnějšího datového prostoru do obvodu U5 Obnovení původního stavu DPTR
; Návrat z podprogramu p p g
// Podprogram VYST5 v jazyce C zapíše do obvodu U5 hodnotu stav void vysl5(unsigned char stav) { XBYTE[0x9030]=stav; [ ] // Vlastní zápis p do obvodu U5 return; // XBYTE knihovní funkce pro přístup do } // vnějšího datového prostoru FEL ČVUT
Petr Skalický, katedra radioelektroniky
189
VSTUPY A VÝSTUPY V DATOVÉM ADRESOVÉM PROSTORU Protože adresový ýp prostor vstupů p a výstupů ý p jje svým ý rozsahem 8 násobkem 256, není v uvedeném zapojení vytvořena celá společná sběrnice (chybí obvod 373 (573) pro zachycení spodní části adresy (A7÷A0)). Adresové vodiče A7÷A0, jak vyplývá z předcházející blány, se stejně dekódujícího procesu účastnit nebudou. 44 12
VCC
27pF
C1
21
27pF
C2
20
XT1 11.059MHz 2 3 4 5 6 7 8 9
R1
35
10k
10
VCC
34 23 1 22
GND
U1
VCC NC
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
XTAL1
XTAL2
A8 A9 A10 A11 A12 A13 A14 A15
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/M OSI P1.6/M ISO P1.7/SCK
ALE/PROG PSEN
EA/VPP
RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
RESET NC NC NC GND
43 42 41 40 39 38 37 36
D0 D1 D2 D3 D4 D5 D6 D7
24 25 26 27 28 29 30 31
A8 A9 A10 A11 A12 A13 A14 A15
D0 D1 D2 D3 D4 D5 D6 D7 CS0
D0 D1 D2 D3 D4 D5 D6 D7
32
CS1
A13 A14 A15 VCC RD RD
1 2 3 6 4 5
A B C G1 G2A G2B
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
74HCT138
FEL ČVUT
15 14 13 12 11 10 9 7
CS2
A13 A14 A15 VCC WR WR
1 2 3 6 4 5
U2 A B C G1 G2A G2B
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
2 3 4 5 6 7 8 9 11 1
15 14 13 12 11 10 9 7
D1 D2 D3 D4 D5 D6 D7 D8
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
19 18 17 16 15 14 13 12
E0 E1 E2 E3 E4 E5 E6 E7
CLK OC
U5 D1 D2 D3 D4 D5 D6 D7 D8
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
19 18 17 16 15 14 13 12
F0 F1 F2 F3 F4 F5 F6 F7
CLK OC
74HCT574
WR RD
AT89C8252_PLCC U8
11 1
U4
74HCT574
33
11 13 14 15 16 17 18 19
2 3 4 5 6 7 8 9
CS0 CS1
D0 D1 D2 D3 D4 D5 D6 D7
74HCT138
Petr Skalický, katedra radioelektroniky
2 5 6 9 12 15 16 19
U6 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7 OC G
3 4 7 8 13 14 17 18 1 11
G0 G1 G2 G3 G4 G5 G6 G7 CS2 VCC
74HCT373
190
VSTUPY A VÝSTUPY V DATOVÉM ADRESOVÉM PROSTORU AVR V případě procesoru AVR by zapojení bylo stejné a programová obsluha v asembleru a jazyce C vypadala následovně. Registr U5 adresovaný jako vnější paměť RAM ;Podprogram VYST5 v asembleru zapíše do obvodu U5 obsah registru R24 VYST5: PUSH PUSH LDI LDI ST POP POP RET
R31 R30 R31,$30 R30 $90 R30,$90 Z,R24 R30 R31
; ; ; ; ; ;
Uložení aktuálního stavu datového ukazatele DPTR Adresa U5 (9000÷97FFh) do ukazatele Z Ad Adresa U5 (9000 (9000÷97FFh) 97FFh) d do ukazatele k t l Z Vlastní zápis do obvodu U5 Obnovení původního stavu DPTR
; Návrat z podprogramu
// Podprogram VYST5 v jazyce C zapíše do obvodu U5 hodnotu stav void vysl5(unsigned char stav) { char xdata *extram; // pointer na vnější datovou paměť ext_ram=0x9030; // ukazatel naplněn adresou obvodu *ext_ram=stav; // Vlastní zápis do obvodu U5 return; }
FEL ČVUT
Petr Skalický, katedra radioelektroniky
U5
191
VSTUPY A VÝSTUPY PROGRAMOVĚ ŘÍZENÉ Příklad:
Připojte p j kp procesoru AVR nebo 8051 jjednu vstupní p a dvě výstupní ý p 8 bitové brány a vytvořte obslužný program pro programově řízený zápis do brány.
Uvedené zapojení využívá bránu P0 (AD7÷AD0) jako sběrnici pro přenos zapisovaných hodnot k registrům U2 a U3 nebo přečtené hodnoty z latche U4. Signály CS0 až CS2 jsou generovány na V/V vývodech procesoru. 44 12
VCC
27pF
C3
21
27pF
C4
20
XT2 11.059MHz 2 3 4 5 6 7 8 9 VCC
R8
35
10k
10
GND
34 23 1 22
U1
VCC NC
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
XTAL1
XTAL2
A8 A9 A10 A11 A12 A13 A14 A15
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/M OSI P1.6/M ISO P1.7/SCK
ALE/PROG PSEN
EA/VPP
RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
RESET NC NC NC GND
43 42 41 40 39 38 37 36 24 25 26 27 28 29 30 31
D0 D1 D2 D3 D4 D5 D6 D7 CS0 CS1 CS2
D0 D1 D2 D3 D4 D5 D6 D7
32 11 13 14 15 16 17 18 19
CS1
8x5k6
11 1
U2
D1 D2 D3 D4 D5 D6 D7 D8
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
19 18 17 16 15 14 13 12
E0 E1 E2 E3 E4 E5 E6 E7
CLK OC
2 3 4 5 6 7 8 9 11 1
U3 D1 D2 D3 D4 D5 D6 D7 D8
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
19 18 17 16 15 14 13 12
F0 F1 F2 F3 F4 F5 F6 F7
CLK OC
74HCT574 D0 D1 D2 D3 D4 D5 D6 D7
R9
CS0
2 3 4 5 6 7 8 9
74HCT574
33
AT89C8252_PLCC
D0 D1 D2 D3 D4 D5 D6 D7
D0 D1 D2 D3 D4 D5 D6 D7
2 5 6 9 12 15 16 19
VCC
U4 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7 OC G
3 4 7 8 13 14 17 18 1 11
CS2 VCC
G0 G1 G2 G3 G4 G5 G6 G7
74HCT373
FEL ČVUT
Petr Skalický, katedra radioelektroniky
192
VSTUPY A VÝSTUPY PROGRAMOVĚ ŘÍZENÉ Jestliže J liž k rozšíření šíř í vstupů ů a výstupů ý ů využíváme ží á obecně b ě použitelné ži l é V/V vývody ý d procesoru můžeme ůž hovořit o programově řízených vstupech a výstupech. Protože CS0, CS1 a CS2 jsou realizovány vývody P2.0, P2.1 a P2.2 procesoru, bude program vypadal následovně Registr g U3 p programově g obsluhovaný ý (brána P0 p pullup) p CS0 CS1 CS2 VYST5:
EQU P2.0 EQU P2.1 EQU P2.2 .... MOV P0,A CLR CS1 SETB CS1 MOV P0,#0FFh RET
;Zapisovaná hodnota do P0 ;CS1 = log.0 ;CS1 = log.1, zápis hodnoty ;Brána P0 do vstupního režimu ;Návrat z podprogramu
// Podprogram VYST5 v jazyce C zapíše do obvodu U3 hodnotu stav sbit CS0 sbit CS1 sbit CS2
= P2^0; = P2 P2^1; 1; = P2^2;
// Aktivační (hodinový) signál pro obvod U2 // Aktivační (hodinový) signál pro obvod U3 // Aktivační (hodinový) signál pro obvod U4
void vysl5(unsigned char stav) { P0=stav; CS1=0; CS1 1 CS1=1; // Vl Vlastní t í zápis á i d do obvodu b d U3 P0=0xFF; } FEL ČVUT
Petr Skalický, katedra radioelektroniky
193
PROGRAMOVĚ SÉRIOVĚ OVLÁDANÉ VSTUPY A VÝSTUPY VCC
44 12
27pF
C1
21
27pF
C2
20
XT1 11.059M Hz 2 3 4 5 6 7 8 9 R1
35
10k
10
VCC
34 23 1 22
U1 VCC NC XTAL1
XTAL2
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1 4/SS P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK EA/VPP RESET NC NC NC GND AT89C8252_PLCC
14 R1
11 10
10k
12 13
VCC
FEL ČVUT
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 A8 A9 A10 A11 A12 A13 A14 A15 ALE/PROG PSEN RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
U2
43 42 41 40 39 38 37 36
9
24 25 26 27 28 29 30 31
7
33
SER A B C D E F G QH H
32 11 13 14 15 16 17 18 19
9 7
E0 E1 E2 E3 E4 E5 E6 E7
10 11 12 13 14 3 4 5 6
I0 I1 I2 I3 I4 I5 I6 I7
2 QH CLK 15 INH 1 SH/LD 74HCT165 U3
U4 4
15 SER QA 1 QB 2 SRCLK QC 3 SRCLR QD 4 QE 5 RCLK QF 6 G QG 7 QH Q 9 QH' 74AHCT595
SER A B C D E F G QH H
10 11 12 13 14 3 4 5 6
I8 I9 I10 I11 I12 I13 I14 I15
2 QH CLK 15 INH 1 SH/LD 74HCT165
14 11 10 12 13
Petr Skalický, katedra radioelektroniky
U5 5 SER
QA QB SRCLK QC SRCLR QD QE RCLK QF G QG QH Q QH' 74AHCT595
15 1 2 3 4 5 6 7 9
F0 F1 F2 F3 F4 F5 F6 F7
194
PROGRAMOVĚ SÉRIOVĚ OVLÁDANÉ VSTUPY A VÝSTUPY Sériové připojení obvodů k procesoru je sice pomalejší než paralelní, ale spotřebuje k realizaci výrazně menší počet V/V vývodů procesoru. Navíc mohou být tyto vodiče lépe stíněny zemní vrstvou a tudíž více imunní vůči EMC. LOAD CLK DOUT WRITE
EQU EQU EQU EQU
Programová obsluha obvodů U2 a U3 (HCT165) P2 P2.0 0 ;Čtení 16bit informace do registrů U2 a U3 P2.1 ;Posouvací hodinové impulzy P2.3 ;Výstup z posuvného registru U3 P2.4 ;Zápis výstupních hodnot
;Podprogram VSTUP v asembleru přečtená 16 bitová hodnota v registrech R6,R7 VSTUP:
CYKL:
FEL ČVUT
MOV R2,#16 CLR CLK CLR LOAD SETB LOAD MOV A,R7 MOV C,DOUT ADDC A,ACC MOV R7,A MOV A A,R6 R6 ADDC A,ACC MOV R6,A SETB CLK CLR CLK DJNZ R2,CYKL RET
;Nastavení počtu čtených bitů ;Nastavení hod. signálu do log.0 ;Čtení hodnoty ;Logické vstupy přečteny ;Rotace R6,R7 o pozici doleva ;Výstup pos.registru U3 do příznaku C ;Rotace doleva, C -> ACC.0 ;Uložení spodní části do R7 ;Vyjmutí horní části do střadače ;Rotace doleva ;Uložení horní části do R6 ;Náběžná hrana hod. signálu ;Sestupná hrana hod. signálu ;Opakování cyklu 16krát ;Návrat z podprogramu Petr Skalický, katedra radioelektroniky
195
PROGRAMOVĚ SÉRIOVĚ OVLÁDANÉ VSTUPY A VÝSTUPY
sbit sbit sbit sbit
LOAD CLK DOUT WRITE
= = = =
Programová obsluha obvodů U2 a U3 (HCT165) P2.0 ;Čtení 16 bitové informace do posuvných registrů P2.1 ;Posouvací hodinové impulzy P2.3 ;Výstup ý p z p posuvného registru g P2.4 ;Zápis výstupních hodnot
;Podprogram VSTUP v jazyce C přečtená 16 bitová hodnota v registrech R6,R7 unsigned int vstup(void) { unsigned g char opak; p unsigned g int hodnota; CLK=0; // Hod.signál do log.0 LOAD=0; // Čtení hodnoty LOAD=1; // Logické vstupy přečteny for (opak=0; opak<16; opak++) // Cyklus opakování { hodnota=+hodnota; // Rotace hodnoty o 1bit doleva // Výstup pos.registru U3 na // nejnižší bit proměnné hodnota if (DOUT==1) *((char*)(&hodnota)+1)|=0x01; CLK=1; CLK=0; // Hodinový impulz } return(hodnota); // Návrat z podprogramu }
FEL ČVUT
Petr Skalický, katedra radioelektroniky
196
SÉRIOVÝM KANÁLEM OVLÁDANÉ VSTUPY A VÝSTUPY
27pF
C1
21
27pF
C2
20
XT1 11.059M Hz 2 3 4 5 6 7 8 9 R1
35
10k
10
VCC
34 23 1 22
U1 VCC NC XTAL1
XTAL2
FEL ČVUT
A8 A9 A10 A11 A12 A13 A14 A15
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4/SS P1.5/MOSI P1.6/MISO P1.7/SCK
ALE/PROG PSEN
EA/VPP RESET NC NC NC GND AT89C8252_PLCC
14 R2
11 10
10k
12 13
VCC
AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7
RXD/P3.0 TXD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3 4 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7
U3
43 42 41 40 39 38 37 36
9
24 25 26 27 28 29 30 31
74HCT 04 U6A 1
2
SER A B C D E F G QH H
U2
32
SER A B C D E F G QH H
11 13 14 15 16 17 18 19
3
2
U7A 74HCT 125
9 7
E0 E1 E2 E3 E4 E5 E6 E7
14 11 10 12 13
I0 I1 I2 I3 I4 I5 I6 I7
10 11 12 13 14 3 4 5 6
I8 I9 I10 I11 I12 I13 I14 I15
2 QH CLK 15 INH 1 SH/LD 74HCT165
U4 SER
QA QB SRCLK QC SRCLR QD QE RCLK QF G QG QH QH' 74AHCT595
Petr Skalický, katedra radioelektroniky
10 11 12 13 14 3 4 5 6
2 QH CLK 15 INH 1 SH/LD 74HCT165
33
U5
15 SER QA 1 QB 2 SRCLK QC 3 SRCLR QD 4 QE 5 RCLK QF 6 G QG 7 QH 9 QH' 74AHCT595
7
1
VCC
44 12
15 1 2 3 4 5 6 7 9
F0 F1 F2 F3 F4 F5 F6 F7
197
VSTUPY A VÝSTUPY JEDNOČIPOVÝCH MIKROPROCESORŮ
Vstupní signál u nejmodernějších procesorů prochází p přes kaskádu dvou p paměťových ý členů,, které zajišťují synchronizaci vstupního signálu na systémové hodiny procesoru a stabilitu tohoto signálu při přenosu po datové sběrnici. Tímto typem vstupních a výstupních bran jsou vybaveny např. např procesory AVR, AVR 80C166 a některé procesory z řady 8051 (Cygnal), které umožňují obě varianty používané pro V/V funkci. FEL ČVUT
interní sběrrnice procesoru
Vývod μP může být předurčen pro nějakou specializovanou funkci procesoru (např. logický vstup bez upínacího odporu kombinovaný se vstupem analogového komparátoru nebo vstupem analogového multiplexeru jehož výstup je propojen na vstup A/D převodníku) nebo jenom pro funkci logického vstupu nebo výstupu. Brány jednočipových procesorů vychází z myšlenky použité u obvodů pro procesory I8080 (I8255) nebo Z80 (PIO). Pro maximální přizpůsobivost aplikaci lik i jsou j periferní if í obvody b d programovatelné g t l é na vstup t nebo b výstup. ý t U vývodu ý d (brány) (b á ) je integrován výstupní paměťový člen (registr) uchovávající výstupní hodnotu. Jeho výstup přichází na třístavový výstupní budič a na jeden vývod multiplexeru. Třístavový budič je ovládán směrovým registrem, který určuje zda vývod brány bude logickým vstupem nebo výstupem. Výstup ý p multiplexeru, p který ý jje p připojený p j ýp přes třístavový ý budič k datové sběrnici, umožňuje j zpětné p čtení zapsané hodnoty do výstupní paměti nebo hodnoty přivedené na vývod brány. Při nulování mikroprocesoru musí být směrový registr zápis DPx.y nastaven tak, aby každý vývod brány představoval logický vstup. Tím je zabezpečeno, že Směrový registr DPx y DPx.y připojená nebo řízená aplikace na vývodu brány vytvoří spojení logický výstup-logický vstup čtení DPx.y nebo logický vstup-logický vstup. vstup/výstup Px y Px.y
Výstupní Vý t í paměť Px.y zápis Px.y
čtení Px.y
Petr Skalický, katedra radioelektroniky
výstupní budič
1 MUX 0
Clk Vt Vstupní í paměť Px.y
198
VSTUPY A VÝSTUPY JEDNOČIPOVÝCH MIKROPROCESORŮ
interní sb běrnice procesoru u
Druhou variantou vstupně vstupně-výstupní výstupní brány je použití pseudoobousměrného obvodu (obvodu s otevřeným kolektorem), který se využívá u procesorů 8051. I když zapojení jednotlivých bran těchto procesorů se poněkud liší v závislosti na alternativní funkci, všechny vycházejí ze základního zapojení z obrázku. Pseudoobousměrný obvod se skládá z paměťového členu, slučovače čtení registru brány (NAND) výstupního tranzistoru (obvykle s upínacím (NAND), Alternativní Ucc odporem), oddělovače pro čtení vstupní informace a funkce V/V oddělovače pro čtení zapsané hodnoty v paměťovém R & členu. Zpětné čtení stavu výstupu paměťového členu T Paměťový bylo zavedeno proto, aby bylo možné zjistit zapsanou člen vývod ý d hodnotu nezávisle na obvodech připojených k vývodu zápis *) brány (např. přechodu tranzistoru báze-emitor). Brána 0 procesoru 8051, která může být využívána pro *) pokud brána nemá alternativní styk s vnější pamětí, se od popsaného obvodu liší v funkce je tranzistor T řízen signálem tom že při multiplexování adresy s daty je tom, i inverzním í výstupem ýt čt í vstupu čtení t upínací obvod aktivní a v opačném případě je výstup pouze s otevřeným kolektorem. Výstup s Ucc T4p T3p zpoždění otevřeným kolektorem a kolektorovým odpo1 2Tosc T1p rem (30÷50kΩ) má velmi pomalý náběh při Vývod přechodu ř h d z log.0 l 0 do d log.1. l 1 Tranzistor T i t T4 snižuiž je hodnotu upínacího odporu na cca 500 Ω na T2n dobu dvou period hodinového signálu. Tranzis- od registru brány tor T1 posiluje log.1 při změně 0→1 na vývodu vstup dat brány y a tranzistor T3 p pomáhá nastavení log.1 g na vývodu brány při rušivém zákmitu do log.0. čtení vstupního signálu
FEL ČVUT
Petr Skalický, katedra radioelektroniky
199
CHOVÁNÍ VÝSTUPŮ μ CHOVÁNÍ VÝSTUPŮ μP PO NULOVÁNÍ U některých starších mikroprocesorů se po připojení k napájení sekáváme s tím, že brány procesoru, které mají dosáhnout úrovně log.1, ji dosáhnou s malým, ale nezanedbatelným zpožděním (závislým na rychlosti náběhu napájecího napětí). Aktivní úroveň řídícího signálu (např. na μP8051) tak musí být v log.0. Díky popsanému jevu jsou signály po připojení k napájení cca 0,1s v aktivní úrovni a tato doba stačí k sepnutí relé a následných stykačů spínajících např. výkonné ýk é elektromotory. l kt t V takovém t k é případě ří dě musíme í ošetřit š třit výstupní ý t í obvody b d ovládající lád jí í výkonová ýk á zařízení, kterým by uvedený jev příliš neprospíval. Na schématu je jedno z X1 VCC VCC 12V možných zapojení ovládání relé branou 2 1 procesoru s pomocí tranzistorů Q2 a CON2 D3 3 BAS32 R6 R3 Q3. Dioda D4 (shotkyho) a tranzistor 10k 2k7 24G Q1 s kapacitou C1 a odporem R1 zajišR7 Q3 ťují uzavření tranzistoru Q2 na dostaB1 24V RELE BC559B RELE_JS 4k7 tečnou dobu nezávisle na stavu vývodu D4 R4 Q2 BLOK RELE a brání tak vzniku nežádoucího BC849C 4k7 BAT 42 krátkému sepnutí relé po připojení k R5 4k7 napájení. Dioda D1 chrání přechod báze-emitor Q1 proti průrazu při výpadku napětí VCC a spolu s diodou D2 D2 zajistí rychlé vybití kondenzátoru Q1 C1 BAS32 C1. BC849C VCC Nejnovější μP mají tento jev odstraněný tím, že po připojení k napájení jsou vývody procesoru ve stavu vysoké impedance. FEL ČVUT
R2 4k7
Petr Skalický, katedra radioelektroniky
100uF D1 BAS32
R1
10k
200
CHOVÁNÍ μ CHOVÁNÍ μP PŘI SPÍNÁNÍ VELKÝCH PROUDŮ P PŘI SPÍNÁNÍ VELKÝCH PROUDŮ Problematika spínání větších a velkých proudů můžeme být rozdělena: spínání větších proudů v galvanicky spojeném obvodu spínání velkých proudů v galvanicky odděleném obvodu V prvém případě se problematickým stává společný úsek zemního vodiče, na které dochází k úbytku napětí v důsledky velkého nebo pulzujícího proudu. Ten způsobuje změnu napájecího napětí procesorového systému o hodnotu ΔU (modře označené), která může vést k desinterpretaci zpracovávaného programu procesoru. Úbytek napětí ΔU’ (zeleně označeného), které způsobuje změny vstupního napětí stabilizátoru a tím i částečně napájení procesoru. V druhém případě je zobrazeno zapojení obvodu pro spínání velkého proudu (jednotky A). Může se zdát, že izolace procesorových obvodů v izolační bariéře relé je dostatečná. V praxi se však ukazuje, že může docházet k ovlivnění bezchybné činnosti procesoru. Zavedením optického oddělení přerušíme galvanické spojení cívky relé od procesorových obvodů a tím i průniku rušivých napětí, napětí které mohou vést k desinterpretaci programu. programu 24V
24V
5V
5V
Stabil
D1 R3
R1 R2
R2 T1
μP
μP
T1
ISO1
Izolační bariera
R1 Zem
Zem ΔU'
ΔU
D1 Izolační bariera
RE1 Zem 24V
FEL ČVUT
Petr Skalický, katedra radioelektroniky
201
ZOBRAZOVACÍ JEDNOTKY LED ZOBRAZOVACÍ JEDNOTKY LED –– STATICKÉ ŘEŠENÍ Nejjednodušší indikace dvouhodnotové informace – dioda LED, kterou lze připojit přes odpor přímo mezi napájení a výstup uP se zatížitelností 2÷20mA. Pokud potřebujeme informativní zobrazení analogové nebo číslicové veličiny můžeme použít tzv. sloupcový ukazatel. Ten býval řízen analogovým signálem pomocí obvodu A277D, ale dnes jej připojujeme k paralelně nebo sériově řízeným obvodům (jako segmentové zobrazovače). Pro zobrazování čísel se používají sedmisegmentové t é (zobrazení ( b í čí čísell a některých ěkt ý h znaků) ků) nebo b patnáctisegmentové t á ti g t é (zobrazení ( b í většiny ětši znaků) zobrazovače. Jejich hlavní výhodou je velmi dobrá čitelnost i z větší vzdálenosti (panelová měřidla), ale relativně velké proudové nároky (2÷10mA na segment). Segmentovka může být připojena na výstup registru. brány procesoru přímo nebo přes dekodér (BCD, HEX nebo realizovaný ý v PLD). ) Přesné zapojení j bude záviset na tom, zda zobrazovač jje se společnou anodou (obr.) nebo katodou. K zobrazení všech ASCII znaků můžeme použít zobrazovací matici obvykle tvořenou 5x7 (8x8) diodami LED. Samostatné a provedení je tvořeno maticí diod, v integrovaném f g b provedení 4 nebo 8 matic je přístup k jednotlivým sloupcům diod podobný zápisu do e c h paměti. Výhoda spočívá ve statickém režimu d (EMC) a dobré viditelnosti, nevýhodou je relasloupcový 7 segmentů 15 segmentů matice 5x7 ukazatel tivně velká spotřeba v desítkách mA. Ucc 8 b. a)
FEL ČVUT
Registr nebo
brana μP
Ucc 4 b. b)
Registr nebo
brana μP
4 b.
Kodér BCD (HEX) na 7seg. g
Petr Skalický, katedra radioelektroniky
40 segmentů
202
ZOBRAZOVACÍ JEDNOTKY LED ZOBRAZOVACÍ JEDNOTKY LED –– DYNAMICKÉ ŘEŠENÍ Obvodově jjednodušším a hlavně cenově levnějším j zapojením p j segmentovek g jje dynamické y zobrazování s využitím časového multiplexu. Zapojení zmenšuje počet potřebných vodičů (8 vývodů na řízení katod a n na řízení bází spínacích tranzistorů). Na 4 místný dynamický displej se sedmisegmentovými LED zobrazovači tak potřebujeme minimálně 10 (11) a maximálně 13 vodičů. Aby střední hodnota proudu segmentovkou vyhovovala požadovanému jasu, musí segmentovkou v intervalu zapnutí protékat relativně velký proud. proud Pro čtyřmístný displej to bude o něco více než čtyřnásobek, protože účinek proudu ve vymezeném intervalu není stejný jako při statickém řešení. Při vícemístném displeji se může stát, že velikost proudu segmentem se dostane k mezní hodnotě proudu segmentem stanovené výrobcem. Aby dynamický displej „neblikal“ musí zapnutí a vypnutí segmentovky mít frekvenci alespoň 75Hz. Hlavní nevýhodou řešení jsou relativně velké impulzní proudy protékající dlouhými spoji (smyčkami), které při provedení na plošném spoji se 2 vrstvami mohou vést k problémům při schvalování EMC. TL
A0 A1
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1 6 P1.6 P1.7
Ucc
Dekodér
1 ze 4
Registr 8 bitů
brána uP
FEL ČVUT
Clk
Petr Skalický, katedra radioelektroniky
203
ZOBRAZOVACÍ JEDNOTKA LED 15 SEGMENTŮ – ZOBRAZOVACÍ JEDNOTKA LED 15 SEGMENTŮ – DYNAMICKÉ ŘEŠENÍ HL2
CLKL CLKH CLKA TL
T4
BC807 C807
R5
R6
R7
R8
R9
4x820
4x820
4x820
16 1
6 5 4 2 1 13 8 11 1 T3
BC807 C807
4x820
12 10 9 7 1 18 17 15 14
12 10 9 7 1 18 17 15 14
12 10 9 7 1 18 17 15 14 T5
BC807 C807
4x820
T2
BC807 C807
A1
RxD TxD
T6
BC807 C807
A2
2 3 6 7 8 9 11
T7
BC807 C807
A1 KT KP KN KM KL KK
P10 P11 P12 P13 P14 P15 P16 P17
VCC
A2
12 13 14 15 16 17 18 19
C
A3
3k3
L4
16 1
TARA
16 1
D10
6 5 4 2 1 13 8 11 1
D9
KJ KH KG KF KE KD KC KB KA
D8
A B C D E F GHJ a g hj f b p k e n lc m t d Sa KL MN P TSb
A3 KT KP KN KM KL KK
FEL ČVUT
L3
A4
AT89C2051
L2
KJ KH KG KF KE KD KC KB KA
GND
L1
CSD5422
A B C D E F GHJ a ghj f b p k e n lc m t d Sa KL MN P TSb
A4
GND 10
RST
P11 R13
A B C D E F GHJ a ghj f b p k e n lc m t d Sa KL MN P TSb
A5
1
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3 7 P3.7
KG KH
A5 KT KP KN KM KL KK
1k
3k3
D7
KF
4x220 220 KN K12 R4 4 K13 KP K14 KT R12
D6
A6
30pF
P1.0/AIN0 P1.1/AIN1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
D5
K8 R3 4x220 KJ K9 KK K10 KL K11 KM
K8 K9 K10 K11 K12 K13 K14 P10
4x220 KE
KJ KH KG KF KE KD KC KB KA
XTAL2
19 18 17 16 15 14 13 12
R2
A6
C OC 74HCT573
1M R14
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
4x220 KA KB KC KD
KF
D1 D2 D3 D4 D5 D6 D7 D8
C2
C3
K4 K5 K6 K7
R1
AD
U3
11.05 MHz
VCC
K0 K1 K2 K3
C OC 74HCT573
VCC U1 20 VCC C1 30pF 5 X1 XTAL1 4
K7 K6 K5 K4 K3 K2 K1 K0
AD
CLKH 11 GND 1
19 18 17 16 15 14 13 12
KD
2 3 4 5 6 7 8 9
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
KE
P10 P11 P12 P13 P14 P15 P16 P17
D1 D2 D3 D4 D5 D6 D7 D8
KC
CLKL 11 GND 1
U2
KB
2 3 4 5 6 7 8 9
KA
P17 P16 P15 P14 P13 P12 P11 P10
HL3
CSD5422
6 5 4 2 1 13 8 11 1
HL1
CSD5422
T1
BC807 C807
R10
R11
4x820
4x820 C4
P10 P11 P12 P13 P14 P15 P16 P17 CLKA
2 3 4 5 6 7 8 9 11 1
1M
U4
D1 D2 D3 D4 D5 D6 D7 D8
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
19 18 17 16 15 14 13 12
C OC 74HCT573
Petr Skalický, katedra radioelektroniky
S1
S2
S3
S4
PROG
SEL
SET
ENTER
D1
BAT46
D2
BAT46
D3
BAT46
D4
BAT46
204
ZOBRAZOVACÍ JEDNOTKA LED 15 SEGMENTŮ – ZOBRAZOVACÍ JEDNOTKA LED 15 SEGMENTŮ – DYNAMICKÉ ŘEŠENÍ Obsluha dynamického displeje s řízením jasu, tlačítky a indikací void cashod() interrupt 1 using 2 // casovac0=hodiny - banka1 { code unsigned int znak[128]={ // Tabulka zobrazovanych znaku 15 seg. 0x2038,0x001C,0x1010,0x1414,0x220F,0xffff,0x0040,0x0800,atd.}; data unsigned char katod_L, katod_H, n;// ostat.proměnné jsou globální counter++; if (desetina++>=400) { desetina=0; bit bit_des= des=~bit bit_des; des; } if (counter==2000) bit_pul_sec=~bit_pul_sec; // Časová základna if (counter>=4000) { counter=0; bit_pul_sec=~bit_pul_sec; vteriny++; } if (++disp==jas) { DATA=0xFF; CLKA=0; CLKA=1; } // Řízení jasu if (disp==8) // Dynamicky displej { if (++on_cifra> (++on cifra>=7) 7) on_cifra on cifra=0; 0; // Rotace segmentovek katod_L = dis[on_cifra]&0x7F; // Aktuální znak v ASCII katod_H = znak[katod_L]>>8; // Vybaveni segmentové katod_L = znak[katod_L]; n=on_cifra+1; // informace if (dis[6]==n) katod_H|=0x40; // Přidej desetinou tečku DATA=0xFF; ; CLKA=0; ; CLKA=1; ; // Zhasni displej p j if (on_cifra==6) katod_L=diody; // Stav indikacních diod if (on_cifra==0) katod_H = katod_H^(blikaní_tecky&0x20); DATA=~katod_H; CLKH=1; CLKH=0; // Zápis H časti segmentů DATA=~katod_L; CLKL=1; CLKL=0; // Zápis L části segmentů if (on_cifra==0) DATA=0xBF; if (on_cifra==1) DATA=0xDF; if (on_cifra==2) DATA=0xEF; if (on_cifra==3) DATA=0xF7; if (on_cifra==4) DATA=0xFB; if (on_cifra==5) DATA=0xFD; if (on_cifra==6) DATA=0xFE; CLKA=0; CLKA=1; disp=0; DATA=0xFF; // Rozsvícení segmentovky if (on_cifra==0) _ { enter=TL; return; } // Zjištění stavu tlačítek if (on_cifra==1) { set=TL; return; } if (on_cifra==2) { sel=TL; return; } if (on_cifra==3) { prog=TL; return;} }} FEL ČVUT
Petr Skalický, katedra radioelektroniky
205
ZOBRAZOVACÍ JEDNOTKY LED ZOBRAZOVACÍ JEDNOTKY LED –– SÉRIOVÉ STATICKÉ ŘEŠENÍ Řada firem přistoupila k vývoji řadičů segO35 O1 mentových zobrazovacích jednotek se k segmentům Ucc sériovým přístupem, které nejen snižují potřebný počet výstupů procesoru na 2 nebo 3, ale hlavně umožňují provoz displeje ve statickém budiče segmentů režimu. ži Jádro d řadiče d tvoří posuvný registr s vyrovnávacím registrem a proudovými vyrovnávací registr 35bitů LOAD budiči segmentů LED zobrazovače. Příkladem ENABLE jsou řadiče M545x, které dovolují připojit 14, DATA 15, 23, 34 a 35 segmentů zobrazovače s možnos možnosposuvný registr 35bitů R tí analogového řízení jasu. Napětí řídící jas CLK segmentů můžeme vytvářet zcela analogově RESET pomocí fotoodporu (fototranzistoru) nebo pomocí programovatelných číslicových potenciometrů (D ll ) nebo (Dallas) b pulzně l ě šířkové šířk é modulace d l (PWM) (PWM). 1 36 Některé z těchto obvodů jsou vybaveny vstuCLK pem ENABLE, který blokuje vývody DATA a posun CLK. Tím je umožněno připojit na vývody bit3 bit34 bit35 Start bit1 bit2 DATA DATA a CLK více řadičů. Přenášená posloupnost pak bude zapisována do toho řadiče, který LOAD - vnitřní zápis na vstupu ENABLE bude mít aktivní úroveň. RESET - vnitřní nulování posuvného registru Přenášené bity se ukládají na hranu CLK do posuvného registru. Po zavedení všech bitů se obsah posuvného registru přenese do vyrovnávyrovná vacího registru a příslušné segmenty se rozsvítí. Obdobné řadiče jsou pro i pro sběrnice I2C aFEL ČVUT SPI. Petr Skalický, katedra radioelektroniky 206
ZOBRAZOVACÍ JEDNOTKY LED ZOBRAZOVACÍ JEDNOTKY LED –– SÉRIOVÉ STATICKÉ ŘEŠENÍ KA4 KB4 KC4 KD4 KE4 KF4 KG4 KH4
VDD
7 6 4 2 1 9 10 5
HL4 F E
A G D
BL1
R1 10k
WK65071
R3
R2
20k
2k7
D1
C2
KZ262
1nF 19
XC1 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9
1 2 3 4 5 6 7 8 9 10
22 21
BRC DATA CLK
O1 O2 O3 O4 O5 O6 O7 O8 O9 O10 O11 O12 O13 O14 O15 O16 O17 O18 O19 O20 O21 O22 O23 O24 O25 O26 O27 O28 O29 O30 O31 O32 O33 O34 O35
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23
HDSP5601 KE4 KD4 KC4 KH4 KE3 KD3 KC3 KH3 KE2 KD2 KC2 KH2 KE1 KD1 KC1 KH1 KB1 KA1 KF1 KG1 KB2 KA2 KF2 KG2 KB3 KA3 KF3 KG3 KB4 KA4 KF4 KG4 1
M5451 J1 C1 47uF
C H
3 8 U1
B
2
KA3 KB3 KC3 KD3 KE3 KF3 KG3 KH3
7 6 4 2 1 9 10 5
HL3
3 8 HDSP5601 KA2 KB2 KC2 KD2 KE2 KF2 KG2 KH2
7 6 4 2 1 9 10 5
HL2
3 8 HDSP5601 KA1 KB1 KC1 KD1 KE1 KF1 KG1 KH1
BLW810G
7 6 4 2 1 9 10 5
HL1
3 8 HDSP5601
FEL ČVUT
Petr Skalický, katedra radioelektroniky
207
ZOBRAZOVACÍ JEDNOTKY LCD Při zobrazování většího počtu znaků nebo omezené spotřebě v aplikaci přistupujeme k použití zobrazovače LCD. LCD jsou obvykle v reflexním provedení s možností řízení kontrastu, ale jejich čitelnost je nižší, než u zobrazovačů LED. Není-li kladen důraz na nízkou spotřebu, pak můžeme čitelnost zlepšit pomocí displeje s podsvícením. S ohledem na životnost LCD zobrazovačů jsou jejich segmenty nebo body buzeny signály s poměrně složitou časovou strukturou. Proto se té ěř výhradně téměř ýh d ě používají ží jí se speciálními iál í i řadiči, ř diči které kt é jsou j vybaveny b generátorem át i impulsů l ů s požaž dovanými časovými i logickými úrovněmi. Bloková struktura takového řadiče pro alfanumerický LCD zobrazovač je zobrazena na obrázku. Jeli modul LCD vybaven řadičem, potom se jeho připojení k procesoru realizuje pomocí čtyř nebo osmi obousměrných davových vodičích a dvou nebo tří řídících vodičích. Displej může být připojen k procesorovému systému jako vnější paměť RAM nebo jednotka připojená k vstupně-výstupním vývodům řízených programem. Připojení displeje jako vnější paměť RAM závisí na rychlosti přístupu procesoru do vnějšího paměťového prostoru a na možnosti změny časování tohoto přístupu. Modul LCD patří mezi velmi pomalé jednotky (s dlouhou dobou přístupu řádově 800÷1000ns) a proto připojení k rychlému procesoru bez možnosti změny časování přístupu do papa podsvícení LED měti RAM nemusí splňovat časové parametry stanovené výrobcem. Alfanumerické LCD LCD kontrast LCD panely se vyrábí s jedním, dvěma nebo čtyřmi budič panel D7-D0 řádky zobrazující na řádku 16, 20, 24 nebo 40 N LCD řadič RS znaků znaků ků obvykle b kl v matici i i 8x5 8 5 bodů. b dů Znaky Z k jsou j R/W K LCD zobrazeny v matici 7x5 bodů a osmý řádek řádků E budič slouží pro kurzor. Jednotka je vybavena uživatelskou RAM 64x5 bitů, která umožňuje vydisplay obvod tvoření 8 uživatelských ý znaků ((např. p p písmena data CG HD44780 s čárkou a háčkem, semigrafické znaky, atd.). RAM generátor znaků
FEL ČVUT
Petr Skalický, katedra radioelektroniky
208
ZOBRAZOVACÍ JEDNOTKY LCD U1
VCC
1 2 3 RAMS 4 RDWR 5 ENAB 6
R1 5k
VCC
D0 D1 D2 D3 D4 D5 D6 D7
VSS VDD V0 RS R/W E
15
7 8 9 10 11 12 13 14
D0 D1 D2 D3 D4 D5 D6 D7
16
LED
MC1602E
DAT0 DAT1 DAT2 DAT3 RAMS RDWR ENAB SVIT
D4
LED VCC
D5 VCC
D6 D7
R2
RAMS RDWR ENAB SVIT
8x10k
VCC D7 D6 D5 D4 D3 D2 D1 D0
R5 1k SVIT
GND
R3
Q1
3k3
BC859C R4
R6
2k2
1k8
R7 6,8 6 8 Q2 BC817
Alfanumerický LCD se připojuje k μP pomocí 8 (D7÷D0) nebo 4 datových (D7÷D4, (D7÷D4 v pořadí vyšší a pak nižší půl byte) a 3 řídících vodičů RS, E, R/W. Kontrast i podsvícení LCD zobrazovače se ovládají napěťově. LCD s řízením podsvícení tak v aplikaci „zabere“ minimálně jednu V/V bránu procesoru. Podsvícení bývá často interně propojené na napájení displeje, obvykle lze přerušit odstraněním nulového odporu. V modulech LCD je nejčastěji řadič HD44780 a proto ovládací program pro moduly od různých výrobců je prakticky shodný. shodný Nejčastější problémy jsou s časováním inicializační sekvence. FEL ČVUT
Petr Skalický, katedra radioelektroniky
209
ZOBRAZOVACÍ JEDNOTKY LCD
FEL ČVUT
Petr Skalický, katedra radioelektroniky
210
ZOBRAZOVACÍ JEDNOTKY LCD ZOBRAZOVACÍ JEDNOTKY LCD ‐‐ PŘÍKAZY Instrukce
Signál RS R/W D7
Popis
D6
D5
D4
D3
D2
D1
D0
Č Čas
Smazat displej
0
0
0
0
0
0
0
0
0
1
Nastaví DDRAM=0
1.64 ms
Návrat na pozici 0
0
0
0
0
0
0
0
0
1
x
Kurzor vlevo nahoře
1 64 ms 1.64
Vstupní mód
0
0
0
0
0
0
0
1
I/D
S
Směr kurzoru
40 us
Kontrola on/off
0
0
0
0
0
0
1
D
C
B
Displeje, kurzoru, blikání
40 us
Posun kurzoru
0
0
0
0
0
1
x
x
Posun kurzoru a displeje bez změny DDRAM.
40 us
Funkční nastavení
0
0
0
0
1
DL
x
x
Komunikace 4 nebo 8 bitů
40 us
Adresa CGRAM
0
0
0
1
Přenos dat tomto příkazu
40 us
Adresa DDRAM
0
0
1
DDRAM adresa
Přenos dat tomto příkazu
40 us
Čtení Busy a adresy
0
1
BF
CGRAM / DDRAM adresa
Zápis do CG/DDRAM
0
1
Zápis dat
40 us
Čtení z CG/DDRAM
1
1
Čtení dat
40 us
I/D – D– B– R/L – BF – FEL ČVUT
S/C R/L 1
0
CGRAM adresa
1- inkrementace, 0- dekrementace 1- displej ON, 0- displej OFF 1- bliká, 0- nebliká 1- doprava, p , 0- doleva 1- zaneprázdněn, 0- ready
S– C– S/C – DL – S–
0 us
1- posun, 0- zamrznutí 1- kurzor ON, 0- kurzor OFF 1- Posun displeje, 0- kurzoru 1- 8 bitů,, 0-4 bity y 1- displej pos., 0- není posun
Petr Skalický, katedra radioelektroniky
211
ZOBRAZOVACÍ JEDNOTKY LCD ZOBRAZOVACÍ JEDNOTKY LCD –– ADRESY ZNAKŮ Adresa DDRAM - DDRAM bez posuvu Pozice LCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Řádek 1
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
Řádek 2
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
Adresa DDRAM - DDRAM posuvu doleva Pozice LCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Řádek 1
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
Řádek 2
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
Adresa DDRAM - DDRAM posuvu doprava Pozice LCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Řádek 1
27
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
Řádek 2
67
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
Adresa DDRAM - DDRAM posuvu doprava
FEL ČVUT
Pozice LCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Řádek 1
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
Řádek 2
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
Řádek 3
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
Řádek 4
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
Petr Skalický, katedra radioelektroniky
212
ZOBRAZOVACÍ JEDNOTKY LCD ZOBRAZOVACÍ JEDNOTKY LCD –– INICIALIZACE Připojení napájení Čekání po dobu 45 ms po dosažení 4,5V RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 1 0 x x
Funkční nastavení nesmí být testován Busy flag
Čekání po dobu 4,1 ms nebo více RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 1 0 x x
Funkční nastavení nesmí být testován Busy flag
Čekání po dobu 100 μs nebo více RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 1 0 x x
Funkční nastavení
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 I/D S
Busy flag již smí být testován Funkční nastavení Vypnutí displeje Nulování displeje Nastavení vstupní módu
nesmí být testován Busy flag
Konec inicializace
FEL ČVUT
Petr Skalický, katedra radioelektroniky
213
ZOBRAZOVACÍ JEDNOTKY LCD ZOBRAZOVACÍ JEDNOTKY LCD –– GRAFICKÉ Grafické moduly y LCD se vyrábí y s řadičem i bez něj. j Pro spolupráci p p s jjednočipovými p ý mikropočítači p je vhodné si vybrat modul s řadičem, který přináší uživatelsky stejně příjemnou komunikaci jako u displeje alfanumerického. Grafické displeje se standardně vyrábí v provedení 128x64, 128x128, 240x64, 240x240 bodů. Komunikační rozhraní je proti alfanumerickým modulům rozšířeno ještě o dva signály CS1, CS2 a nulovací signál RST. Datová sběrnice je pouze 8-bitová. Na rozdíl od předcházejícího obrázku, obrázku kde regulace kontrastu se pohybuje v rozmezí 0÷2V, 0÷2V je obvykle regulace kontrastu u grafického modulu do záporných napětí (na modulu je zdroj záporného napětí jehož výstup je vyvedený na konektor). Zápis hodnot a příkazů do displeje se řídí podobnou tabulkou jako u alfanumerického displeje, ale jeho iniR1 cializace je jednodušší. Grafické displeje mohou HD61203 zobrazovat zápisem bytu jako sloupce 8 bodů do nebo ÷ LCD panel příslušné stránky X a sloupce Y. Zobrazované KS0107B znaky pak musí být z jednotlivých zápisů bytů R64 S1 ÷ S64 S65 ÷ S128 složeny (musí být vytvořeny generátory znaků) Existují však displeje, znaků). displeje které mají režim HD61202 HD61202 znakový nebo grafický a znakový. nebo nebo 0123
FEL ČVUT
Adresa Y
DB0 ÷ DB7 DB0 ÷ DB7
Stránka 0
DB0 ÷ DB7
Stránka 7
Stránka 1
KS0108B
61 62 63
} x=0 } x=1
VEE CS1 CS2 RST D7÷D0 R/W,E D/I 5V GND
} x=7
-5V
KS0108B
kontrast
Petr Skalický, katedra radioelektroniky
DC DC
LED podsvícení
214
ZOBRAZOVACÍ JEDNOTKY LCD ZOBRAZOVACÍ JEDNOTKY LCD –– GRAFICKÉ U1 D/I R/W E CS1 CS2 RST
4 5 6 15 16 17
D/I R/W E CS1 CS2 RST
GND VCC
1 2
VSS VDD
3 18
VO VOUT
Podsvícení diodami LED
EA E128-6N2LW
D0 D1 D2 D3 D4 D5 D6 D7
7 8 9 10 11 12 13 14
LED_K LED_A
20 19
D0 D1 D2 D3 D4 D5 D6 D7
VCC
VCC
R1 2k
R3 6,8
SVIT
R2 4x3k3
Q1 BC807 R4
Q2 BC817
4x3k3
Některé grafické moduly LCD je možné doplnit tlačítkovou membránou,, která p pracuje j na p principu změny odporu, s určitým rozdělením zobrazované plochy na m řádků a n sloupců. V místech políčka membrány můžeme na displeji vytvořit obraz tlačítka s potřebným označením. Přidání potřebné funkce do aplikace realizujeme pouze programovými prostředky. FEL ČVUT
Petr Skalický, katedra radioelektroniky
215
TLAČÍTKA –– PASIVNÍ TLAČÍTKA Tlačítko, jjako nejjednodušší jj spojení p j člověka s mikropočítačem, p by y mělo být ý zdrojem j dvoustavového vstupního signálu (sepnuto, rozepnuto). Tlačítka můžeme rozdělit na pasivní (mechanický kontakt, membránové tlačítko) a aktivní (s Halovou sondou, odporové, kapacitní nebo optické). Uvedená tlačítka s nezbytným obvodem obvykle neposkytují "čistý" dvoustavový signál (od analogového až po dvoustavový s řadou zákmitů), který by bylo možné použít jako vstupní signál ovlivňující program nebo jako zdroj přerušovacího systému. systému Pro správnou funkci je potřeba výstup tlačítka ošetřit obvodově nebo pomocí programového zpracování. Nejčastěji používaným tlačítkem je mechanický kontakt, který můžeme ke vstupu μP připojit jako kontakt do země nebo k napájení. I v případě tzv. mžikového spínače je sepnutí i rozepnutí provázeno zákmity (nedokonalý kontakt, mechanické kmity). Zákmity můžeme odstranit filtrací (RC-dolní propust +LKO s hysterezí), paměťovou funkcí (přepínací kontakt + PČ Č RS) nebo pomocí programového ošetření zákmitů tlačítka spočívajícího v opakovaném čtením vstupu do ustálení signálu na definovanou dobu. U cc U cc U cc &
tl
tl
Uo
Uo
Q
Uo &
t
I když obě obvodová řešení vytváří číslicový signál se správnými časovými parametry, přeci jen jsou to obvody, které mohou být nahrazeny programovým řešením, které nemusí „komplikovat“ programové vybavení realizace ani jeho obvodové zapojení. Membránové tlačítko je druhým pasivním tlačítkem, které pracuje na změně odporu. Zapojení tlačítka je závislé na dosahovaných změnách odporu a obvodově musí být upraveno tak, tak aby bylo dosaženo obou logických úrovní. Jeho obsluha může být principielně stejná jako tlačítko s mechanickým kontaktem. FEL ČVUT
Petr Skalický, katedra radioelektroniky
216
TLAČÍTKA –– AKTIVNÍ TLAČÍTKA Tlačítko s Halovým generátorem se v μP technice používalo dříve, dnes se občas využívá v aplikacích pro bezkontaktní snímání otáček apod. Ze základního zapojení obvodu vyplývá, že na obou výstupech se objeví hodnota log.1 je-li sonda vystavena magnetickému poli (jednoho nebo dvou permanentních magnetů). Tranzistor se dvěma emitory byl navržen pro snadné vytvoření maticově zapojené klávesnice. Výstup z jednoho emitoru byl spojen s výstupy tlačítek v řádku a druhý výstup p s výstupy ý py tlačítek ve sloupci. p Výstupy ý py řádků a sloupců p byly yyp přivedeny y na kodér,, který ý realizoval převod sloupcové a řádkové informace na ASCII kód klávesy. Hlavní nevýhoda kodéru spočívala v získání správné informace (v paralelním tvaru) pro jednu zmáčknutou klávesu. Z potřeby převodu kódu zmáčknuté klávesy do sériového tvaru a identifikace více kláves se u PC klávesnic začal používat jednočipový procesor. Ten umožňuje programově identifikaci stisku dvou kláves při stejném zapojení jako s kodérem. kodérem U zapojení maticové klávesnice s využitím Halových generátorů, generátorů ale nedokážeme zabránit špatné identifikaci stisku tří kláves. Membránové tlačítko může pracovat na principu změny odporu nebo Ucc kapacity mezi dvěma kontakty. Tlačítko založené na změně kapacity může mít problematickou úroveň výstupního signálu i v závislosti na U0 rychlosti hl i stisku i k klávesy klá stejně j ě jako j k má á většina ě ši tlačítek l čí k založených l ž ý h na U1 optickém principu (nedochází-li k úplnému přerušení optického svazku např. prst, ukazovátko, atd.). Výstupy těchto tlačítek nemusí dosáhnout „čisté“ logické úrovně (log.1) s požadovaným přeběhem a proto p o o je po potřeba e a jej upravit p av po pomocí oc logického og c é o ččlenu e se S Smitovým ový klopným obvodem. Je-li požadována Ucc indikace stavu tlačítka (akustická, Ucc optická) je třeba zvážit zakompoR tl U0 nování přímo do obvodu tlačítka U0 U0 Ctl nebo b indikaci i dik i realizovat li t ažž na výstupu procesoru i za cenu ztráty t několika V/V vývodů procesoru. FEL ČVUT
Petr Skalický, katedra radioelektroniky
217
KLÁVESNICE Je-li aplikace p vybavena y malým ý p počtem tlačítek, potom p se spokojíme p j s jjejich j přímým p ý p připojením p j k vývodům procesoru nebo jeho vstupní bráně s paralelním nebo sériovým ovládáním. Větší počet tlačítek se seskupuje do klávesnice s maticovým uspořádáním, které minimalizuje počet vývodů potřebných k jejich obsluze a identifikaci zmáčknuté klávesy. Obsluha tlačítek závisí na stupni minimalizace potřebných vývodů, způsobu ovládání klávesnice (cyklické čtení, využití přerušovacího systému), systému) ošetření zákmitů a nutnosti identifikace dvou nebo více zmáčknu zmáčknutých kláves. K nejjednoduššímu zapojení klávesnice s 16 tlačítky budeme potřebovat vyjma tlačítek čtyři odpory, čtyři výstupy a čtyři vstupy procesoru. Po každém zápisu log.0 do jednoho z řádků, se provede čtení všech sloupců a identifikace zmáčknutých kláves v řádku. Předpokládáme-li stisk jedné nebo dvou kláves, je zapojení vyhovující. Stisk tří kláves nemusí být vždy správně identifikován (např. při stisknuté 1 a 4, nelze zjistit zda byla stisknuta 0 nebo 5). Problém můžeme odstranit připojením shotkyho diody do série s kontaktem viz. obr. Ucc AT89C51
4x10k
stisknuto
P1.0
0
1
2
3
P1.1
4
5
6
7
P1.2
8
9
A
B
P1.3
C
D
E
↑
P1.4 P1.5 P1.6 P1.7
FEL ČVUT
4 rozpojeno
7
7 Petr Skalický, katedra radioelektroniky
218
KLÁVESNICE –– KOMBINACE DISPLEJE A KLÁVESNICE KLÁVESNICE
FEL ČVUT
Petr Skalický, katedra radioelektroniky
219
KLÁVESNICE –– S PŘERUŠENÍM KLÁVESNICE Obsluha klávesnice spočívá v postupném připojování úrovně log.0 log 0 na jednotlivé řádky matice (výstupy procesoru) stejně jako v předcházejícím případě. Následný stav ve sloupcích matice se nezjišťuje dokud není vyvolána obsluha přerušení od vstupu INT0. Teprve v přerušení nebo v hlavním programu na základě nastavení nějakého identifikačního příznaku se bude zjišťovat stav ve sloupcích matice. Budou-li tlačítka ošetřena, pak vyhodnocení může proběhnout přímo v přerušovací ř š í rutině. i ě V opačném č é případě ří dě může ůž programové é ošetření š ř í přinášet ři áš komplikace k lik stejně j ě jako opakování funkce dané klávesy. Hlavní výhodou uvedeného řešení je okamžitá reakce na zmáčknutí klávesy. Přístup ke stisku tří nebo více kláves musí být obvodově ošetřen jako v předcházejícím případě. Žádost o přerušení se vytváří přes DTL logiku z Schottkyho diod (montážní součin - AND) na vstupu vnějšího přerušení. Ucc
AT89C51
4x10k
P1.0
0
1
2
3
P1.1
4
5
6
7
P1.2
8
9
A
B
P1.3
C
D
E
↑
stisknuto 4
rozpojeno p j 7
P1.4 P1.5 P1.6 P1 7 P1.7 INT0 FEL ČVUT
4xBAT46 Petr Skalický, katedra radioelektroniky
Ucc
220
KLÁVESNICE –– ŘEŠENÍ S MINIMÁLNÍM POČTEM V KLÁVESNICE ŘEŠENÍ S MINIMÁLNÍM POČTEM V//V Za cenu složitějšího obvodového řešení, vstupu vnějšího přerušení INTn nebo vstupu μP a obousměr obousměrných vstupně-výstupních vývodů, lze počet vývodů pro obsluhu klávesnice zredukovat dle obrázku. Na řádky matice (obousměrné vývody) je postupně připojována hodnota log.0. Je-li zmáčknuto tlačítko, potom je přes montážní součin vytvořený dolními diodami vyvolána obsluha vnějšího přerušení, v kterém se přečte stav v jednotlivých řádcích. Jestliže přečtením řádků dostaneme stejnou hodnotu, kt á byla která b l na řádky řádk zapsána, á může ůž být stištěno tiště pouze tlačítko tl čítk v n-tém té řádku řádk a n-tém té sloupci. l i Přečteme-li z řádků odlišnou hodnotu, pak řádek na kterém je log.0 určuje v důsledku horních diod číslo sloupce, v kterém je klávesa zmáčknuta. Z popisu je zřejmé, že diagonální tlačítka jsou identifikovatelná pouze ze vstupu INT0 (log.0), ostatní z přečteného stavu, který je odlišný od stavu zapsaného a log.0 p g na vstupu p INT0. Odtud uvedené zapojení p j lze p použít p pouze p pro stisk jjedné klávesy (bude-li po zmáčknutí klávesy 1 zmáčknuta klávesa 0, přečtená informace se nezmění). Při použití registru s třístavovým výstupem, lze matici klávesnice obsloužit pomocí dvou výstupních a n obousměrných nebo V/V vývodů, kde n=max(počet řádků,počet sloupců). Zápis Č Čtení
4xBAT46
AT89C51
Ucc
P1.0
0
1
2
3
stisknuto
P1.1
4
5
6
7
4
P1.2
8
9
A
B
P1.3
C
D
E
↑
rozpojeno 4x10k
INT0 FEL ČVUT
7
4xBAT46 Petr Skalický, katedra radioelektroniky
221
KLÁVESNICE –– „PRŮCHODOVÉ KLÁVESNICE PRŮCHODOVÉ“ ŘEŠENÍ “ ŘEŠENÍ unsigned char test_tlac(void) /* Průchodová verze */ { unsigned char y; if (set==0) {if (pset<5) pset++;bset=1;} else { if ((pset<5)&&(bset==1)) { bset=0;pset=0;}} if (sel==0) {if (psel<5) psel++;bsel=1;} else { if ((psel<5)&&(bsel==1)) { bsel=0;psel=0;}} if (prog==0) {if (pprog<5) pprog++;bprog=1;} else { if ((pprog<5)&&(bprog==1)) { bprog=0;pprog=0;}} if (enter==0) {if (penter<5) penter++;benter=1;} else { if ((penter<5)&&(benter==1)) { benter=0;penter=0;}}
}
FEL ČVUT
if (old==bitdes) return(0); /* old=bitdes; y=ZADNE; // if (pset>=5) y=H_SET; /* if (psel>=5) y=H_SEL; /* if (pprog>=5) (pprog> 5) y=H y H_PROG; PROG; / /* if (penter>=5) y=H_ENTER; /* pset=psel=pprog=penter=0; bprog=benter=bset=bsel=0; return(y);
čekej 0.5 s */ test zmačknutých tlačítek SET */ SEL */ Prog */ / Potvrzeni */
Petr Skalický, katedra radioelektroniky
222
KLÁVESNICE –– KOMBINACE DISPLEJE A KLÁVESNICE KLÁVESNICE
FEL ČVUT
Petr Skalický, katedra radioelektroniky
223
KLÁVESNICE ‐‐ ÚVAHY KLÁVESNICE Protože zákmity je výhodnější ošetřit programově (opakovaným čtením), čtením) než obvodově, obvodově je otázka zda řešení s využitím přerušení bude v dané aplikaci výhodné. Bude-li například potřeba zajistit opakování funkce při trvale zmáčknuté klávese současně s obsluhou řady dalších přerušení, může se ukázat, že periodická obsluha klávesnice v hlavní smyčce programu je pro danou aplikaci výhodnější, než obsluha klávesnice pouze po stisku klávesy. U měřících přístrojů se předpokládá, že přístroj je i v nastavovacím režimu zcela funkční (provádí měření veličiny, její vyhodnocení a nastavení výstupních relé, atd.). V takovém případě potřebujeme vyhodnotit tlačítka včetně opakovaného čtení současně s hlavním měřícím programem a pokud možno se stejnou periodou. Teprve po uplynutí definovaného i intervalu l provést é jejich j ji h vyhodnocení h d í zmáčknutých áčk ý h tlačítek l čí k (kláves). (klá ) Autor A vyřešil ř šil uvedený d ý problém tzv. „průchodovým“ vyhodnocením klávesnice viz. ukázka programu na další stránce. Výhodou průchodové obsluhy klávesnice je možnost nastavení doby, za kterou je tlačítko považováno za stisknuté i určení intervalu, za který je stav klávesnice vyhodnocen. Snadno tak lze zajistit j opakování p funkce tlačítka i nastavení intervalu opakování p s ohledem na schopnosti uživatelů příslušných zařízení. U řady přístrojů jsou tlačítkové vstupy nahrazeny nebo doplněny například optickým infračerveným přenosem pomocí kódů dálkových ovladačů (RC5, atd.). V současné době se v praxi uplatňuje kapacitní tlačítko (podporované řadou výrobců integrovaným obvodem), které identifikuje změnu kapacity izolované plošky připojené k obvodu přiblížením prstu. Hlavní výhodou tlačítka je odstranění mechanických kontaktů vysoká odolnost proti nešetrnému zacházení. V multimediálních přístrojích se stále více uplatňují grafické displeje kombinované s odporovou nebo kapacitní membránovou klávesnicí s analogovou identifikací souřadnice X a Y dotyku dotyku.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
224
KLÁVESNICE PC – KLÁVESNICE PC – PŘÍJEM A EMULACE Klávesnice PC by nás vcelku nemusela zajímat, pokud by neexistovaly zařízení jejichž výstup se připojuje k počítači PC místo klávesnice (emulace klávesnice PC) nebo k jiným zařízením jako vstupní periferie (příjem znaků z klá klávesnice PC). Mezi typickou periferii ~ 0,1ms patří např. čtečka čárkových kódů, něCLK t které čtečky bezkontaktních karet. Klávesnice je připojena 5 vodiči Clk(1), DATA D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D t (2) Reset(3), Data(2), R t(3) Zem(4) Z (4) a UCC(5) a t komunikace mezi PC a klávesnicí je obousměrná synchronní sériová vždy po 11 bitech. Platnost dat potvrzuje vzestupná hrana CLK. Minimální mezera mezi dvěma kódy vyslanými po sobě je 1,2 ms. Jako první je vyslán bit LSB a jjako p poslední MSB. Jedenácti bitová komunikace se skládá ze start bitu ((log.0) g ) následovaná 8-bitovým kódem, doplněná lichou paritou a stop bitem (log.1). Řídicí kódy vysílané z PC do klávesnice a opačně nejsou pro příjem a emulaci PC klávesnice podstatné a lze je případně nalézt v literatuře. Zmáčkneme-li klávesu na klávesnici, je do PC vyslán kód klávesy. Je-li klávesa uvolněna, je vyslán kód uvolnění (0x7E0, (0xF0)) následovaný kódem uvolněné klávesy. Při emulaci PC klávesnice se tyto tři slova vysílají hned za sebou. sebou Například hodnota znaku A je realizována 0x438, 0x438 0x7E0, 0x7E0 0x438, při odstranění paritního, start a stop bitu posloupností 0x1C, 0xF0 a 0x1C. Klávesy na PC klávesnici jsou rozděleny do tří skupin: základní, rozšířené a speciální. Pro klávesy ze základní skupiny (viz. znak A) platí uvedené s tím, že je-li klávesa držena déle je její kód opakován. Skupinu rozšířenou identifikuje kód 0x5C0, kód uvolnění a klávesy (0x5C0, 0x7E0, kód klávesy). Skupinu speciální představuje zapnutá numerické klávesnice, dvojstisk SHIFT a klávesy nebo kláves Print Screen, Pause, atd. Pro emulaci i příjem je důležité pamatovat, že kódy čísel z numerické klávesnice a čísel z písmenové řady pod F1 až F12 jsou rozdílné !!! Využívá se písmenová sada. FEL ČVUT
Petr Skalický, katedra radioelektroniky
225
KLÁVESNICE PC – KLÁVESNICE PC – KÓDY KLÁVES
FEL ČVUT
Petr Skalický, katedra radioelektroniky
226
MULTIPROCESOROVÁ KOMUNIKACE Multiprocesorový p ý systém y se dvěma nebo více p procesory y můžeme obecně vytvořit y p propojením p j procesorů přes sériové rozhraní, paralelní rozhraní, společnou sběrnici, globální (dvoubránovou) paměť nebo pomocí FIFO pamětí. Použiti příslušného propojení je závislé hlavně na potřebných datových tocích mezi jednotlivými procesory, zvolené struktuře a vlastních možnostech použitých procesorů. Ve snaze o dosažení maximálního výkonu byly postupně některé procesory vybavovány prostředky pro snazší realizaci multiprocesorových systémů. systémů V dnešní době můžeme sledovat, že v zařízeních s extrémním výpočetním výkonem jsou multiprocesorové systémy nahrazovány procesory s paralelním zpracováním ve více aritmetických jednotkách umístěných na jednom čipu (VLIW) nebo paralelním řešením v DSP programovatelných polích. Důvodem tohoto ústupu je bezpečnější tvorba programového vybavení pro struktury typu VLIW, než rozdělení zpracovávané úlohy do programů pro jednotlivé procesory a synchronizaci datových toků mezi nimi. Výkonné multiprocesorové systémy se realizují hlavně v oblasti číslicového zpracování signálu obvykle pomocí dvou nebo čtyř signálových procesorů. Konfigurace procesorů je obvykle volitelná lit l á a přenosy ř d t mezii procesory lze dat l realizovat li t přes ř výše ýš uvedená d á rozhraní h í (synchronní ( h í sériové rozhraní, interní společnou sběrnici, hostitelské rozhraní (PCI, VME) nebo FIFO paměti). Standardní multiprocesorové systémy se realizují s univerzálními, speciálními a jednočipovými procesory, kde propojení procesorů obvykle probíhá přes sériové rozhraní, méně často přes paralelní rozhraní nebo společnou sběrnici. sběrnici Multiprocesorové systémy můžeme rozdělit podle struktury a datových toků:
Struktura Master-Slave ♣ Průtoková architektura Struktura s globální (sdílenou pamětí) ♣ Architektura typu hvězda S časově dělenou sériovou sběrnicí ♣ Architektura typu kruhová smyčka Struktura s sériovou sběrnicí a komunikačním protokolem
FEL ČVUT
Petr Skalický, katedra radioelektroniky
227
ARCHITEKTURY MULTIPROCESOROVÝCH SOUSTAV Použitá architektura multiprocesorového p systému y závisí na rozdělení zpracovávané p úlohy y do p programů pro jednotlivé procesory a hlavně na datových tocích mezi nimi. Mezi nejznámější architektury patří průtoková architektura a architektura typu hvězda nebo ring. Vyrábějí se univerzální desky s multiprocesorovými systémy, které jsou navrženy tak, aby na nich bylo možné realizovat všechny z uvedených architektur a tudíž je snadno přizpůsobit požadované úloze (viz. architektura zobrazená na posledním obrázku). obrázku) Přenosy dat mohou být realizovány sběrnicí, sběrnicí dvoubránovou pamětí nebo pomocí FIFO pamětí. I když multiprocesorové systému s nejvýkonnějšími signálovými procesory jsou schopny dosáhnout obrovských výpočetních výkonů, přeci jenom se firmy začínají orientovat na realizace využívající nejnovější DSP programovatelná pole jako je Virtex-6 a Spartan-6 od firmy Xilinx nebo Stratix4 od firmy Altera. Paralelní obvodové realizace s podporou násobení a sčítání v DSP bloku a s principem sdílení času (pipeline) dosahují větších výpočetních výkonů než multiprocesorové struktury. Vstup
Vstup
DSP
V/V
Vstup
řízení DATA
DSP
řízení
DSP
DATA
DSP
DSP
DSP DSP
DSP
DSP
V/V
DSP
DSP
V/V
DSP
DSP
DSP DSP
DSP
DSP DSP
DSP Výstup Výstup FEL ČVUT
Výstup V/V
Petr Skalický, katedra radioelektroniky
228
MULTIPROCESOROVÁ KOMUNIKACE MASTER‐‐SLAVE MULTIPROCESOROVÁ KOMUNIKACE MASTER Mezi nejstarší struktury multiprocesorových systémů patří struktura Master Master-Slave, Slave, kdy nadřízený procesor (Master) předává po sběrnici pomocí přímého přístupu do vnějších nebo vnitřních pamětí signálových procesorů nová data nebo nové úlohy (program) ke zpracování. Master požádá podřízený procesor o uvolnění jeho lokální sběrnice (přechod do stavu vysoké impedance) potom provede propojení (oddělovači nebo Crossbar obvody) řídících signálů, adresové d é a datové d t é sběrnice bě i s lokální l kál í sběrnicí bě i í procesoru Slave. Sl P uložení Po l ž í dat d t nebo b nového éh programu uvolní řízení lokální sběrnice procesoru Slave (deaktivuje oddělovače nebo Crossbar obvody) a uvolní žádost o uvolnění lokální sběrnice. Procesor Slave může zahájit zpracovaní nových dat nebo nové úlohy. Ukončení zpracování hlásí podřízený procesor například pomocí přerušovacího systému. p y Master
Slave
XF BIO INTn IACK R/W A0-A15 D0-D15
HOLD HOLDA XF BIO
16 16
Oddělovač (Crossbar) a řídící logika
16 16
TMS320C5x
FEL ČVUT
A0-A15 D0-D15
TMS320C5x Datová paměť
Datová paměť
Programová paměť
Programová paměť
Petr Skalický, katedra radioelektroniky
229
MULTIPROCESOROVÁ KOMUNIKACE S GLOBÁLNÍ PAMĚTÍ Druhou možností jjak vytvořit y multiprocesorový p ý systém y jje struktura s g globální p pamětí ((sdílenou pamětí), přes kterou si mohou procesory zpracovávající úlohu rozdělenou na samostatné dílčí části předávat (vyměňovat) zpracovaná data. Ve struktuře nemusí být ani jeden procesor v preferovaném postavení, jako tomu je u struktury Master-Slave. Procesory sdílející globální paměť realizují operace čtení nebo zápisu do této paměti. V daný okamžik však může ke globální paměti přistupovat pouze jeden procesor. procesor Struktura proto musí být doplněna rozhodrozhod čím, který povolí přístup do paměti jednomu procesoru a propojí jeho lokální sběrnice s adresovými a datovými vodiči paměti a zbývajícím procesorům, které chtějí přistupovat k paměti vnutí čekací stavy pomocí signálu READY*). Po ukončení operace čtení nebo zápisu do globální paměti rozhodčí přeruší propojení lokální sběrnice s pamětí a povolí přístup dalšímu procesoru. Kritickým parametrem v této struktuře bude velikost datových přenosů (přístupů k globální paměti). Rozhodčí může mít pevně nastavenou prioritu přístupu jednotlivých procesorů k paměti nebo jejich priorita bude proměnná (např. rotující). Poznámka: V uvedeném obrázku je možné globální paměť a oddělovače nahradit dvoubránovou pamětí. Dnes existují i takové dvoubránové paměti, které dovolují současné čtení i zápis z téže adresy (AMD). BR READY
A0 ÷A15 D0 ÷D15
BR READY
Rozhodčí
16 16
B u f f e r
Globální paměť
B u f f e r
16 16
A0 ÷A15 D0 ÷D15
Dvoubránová paměť
*) Signálem READY nebo WAIT disponují jen některé procesory, obvykle to jsou signálové a univerzální. U některých procesorů je pouze generátor čekacích stavů nebo programovatelná doba přístupu do paměti.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
230
MULTIPROCESOROVÁ KOMUNIKACE S VYUŽITÍM FIFO Multiprocesorový systém se čtyřmi procesory od firmy Pentek 4292
FEL ČVUT
Petr Skalický, katedra radioelektroniky
231
MULTIPROCESOROVÁ KOMUNIKACE S VYUŽITÍM FIFO Multiprocesorový systém se čtyřmi procesory TMS320C6201 do sběrnice PCI
FEL ČVUT
Petr Skalický, katedra radioelektroniky
232
MULTIPROCESOROVÁ KOMUNIKACE SE SDÍLENOU PAMĚTÍ Určitou alternativou k struktuře s globální pamětí je multiprocesorový systém se sdílenou sběrnicí a pamětí. Konfigurace je obvodově snadno implementovatelná, protože se v podstatě jedná o propojení lokálních sběrnic jednotlivých procesorů se sdílenou sběrnicí, ke které je připojena sdílená paměť. Sdílenou sběrnicí může být interní sběrnice multiprocesorového systému nebo sběrnice hostitelského rozhraní (PCI). Odtud se mohou odvíjet problémy, které mohou nastat při programování jednotlivých úloh, s rychlostí přístupu a datovými toky po sdílené sběrnici. Přístupové doby jednotlivých funkčních uzlů (např. DSP) ke sdílené paměti mohou být relativně dlouhé, což bude záviset na počtu uzlů a rozhodovací logice. Vlastní správa sdílené sběrnice může komplikovat datové přenosy a následně i uživatelské programy. sdílená datová paměť
Od sdílená sběrnice
Od
Od Od
Od Od Od
V/V uzel A
Bus1 Bus1 uzel B uzel B
DSP1 DSP1 uzel C DSP1 uzel C uzel C
oddělení a rozhodovací logika pro správu sdílené sběrnice
vstup výstup
FEL ČVUT
Petr Skalický, katedra radioelektroniky
233
SYNCHRONNÍ SÉRIOVÁ MULTIPROCESOROVÁ KOMUNIKACE TDM Pokud P k d nejsou j kladeny kl d extrémní é í datové d é přenosy ř (1÷25Mb/s) (1 25Mb/ ) mezii jednotlivými j d li ý i procesory multiprocesorového systému se signálovými procesory můžeme vytvořit strukturu se sériovou časově dělenou sběrnicí TDM. Většina běžných signálových procesorů umožňuje vytvořit tuto jednoduchou multiprocesorovou strukturu s využitím čtyř drátové sériové sběrnice umožňující komunikaci mezi dvěma až 8 nebo dvěma až 32 p procesory. y V každém intervalu vysílá y jjeden procesor v sériovém synchronním módu s rámcovou synchronizací (TFRM) pevný nebo programovatelný počet bitů, případně doplněný o adresovou informaci (TADD) pro koho jsou přenášená data určena. Každý procesor obsahuje masku umožňující nebo blokující příjem informací od daného procesoru. Příjem se pak uskutečňuje tehdy, je-li logický součin masky s vysílanou adresou pro bit příslušející danému procesoru nenulový. nenulový TMS320C6x
Procesor 1
Procesor 2
TFSX TFSR
Procesor 32 TFRM TADD TCLK TDAT
TCLKR TCLKX TDR TDX
Blok (rámec) TDM Interval pro přenos jednoho slova
Kanál Kanál Kanál Kanál Kanál 1 2 3 4 5
Kanál Kanál Kanál Kanál 31 32 1 2 čas
FEL ČVUT
Petr Skalický, katedra radioelektroniky
234
SÉRIOVÁ MULTIPROCESOROVÁ KOMUNIKACE Na obrázku jsou zobrazeny časové průběhy signálů při sériové multiprocesorové komunikaci TDM na procesorech TMS320C54x a 54xx. Přenos z jednoho procesoru probíhá v synchronním sériovém přenosu s rámcovou synchronizací. Kontinuální přenosy TCLK t TDAT
B1
B0
TADD
B15
B14
B13
B12 B8
A7
A6
A5
A4 A0
B7
B6
t t
TFRM
t
V případě jednočipových procesorů probíhá multiprocesorová komunikace v osmibitovém nebo devítibitovém asynchronním sériovém přenosu. Přesnost generátorů interního hodinového kmitočtu. Interní hodiny
RxD nebo
TxD RI
t Start bit
D0
D1
D2
D3
D4
D5
D6
RB8
nebo TB8
T
nebo
Stop bit
t t
TI
FEL ČVUT
D7
Petr Skalický, katedra radioelektroniky
235
ASYNCHRONNÍ SÉRIOVÁ MULTIPROCESOROVÁ KOMUNIKACE V řadě aplikací p se vytváří y multiprocesorový p ý systém y se dvěma nebo více p procesory, y které p předávají j informace po sériovém kanále. Vytvoření dvou procesorového systému pomocí sériového kanálu obvykle spočívá ve spojení vývodů RxD a TxD a zemního vodiče (tzv. minimální varianta). Takové propojení je vhodné realizovat přímo na plošném spoji (tj. na úrovni TTL) v asynchronní módu sériového kanálu. Pokud procesor disponuje u sériového kanálu synchronním módem, potom je možné realizovat přenos spojením TxD na TxD (synchronizační hodinový signál) a RxD na RxD (přenášená data). Tato varianta umožní vyšší datový tok, ale v daný okamžik pouze jedním směrem. Přenášení dat oběma směry (tzv. halfduplex) by vyžadovalo další synchronizační signály a obsluhu. Proto je tato varianta spíše vhodná pro přenos jedním směrem tj. pro průtokovou architekturu. Určité problémy mohou nastat u procesorů, které nedisponují signálem tzv. rámcové synchronizace, v jehož důsledku nemusí být správně zachycen první bit synchronního přenosu. Potřebujeme-li vytvořit multiprocesorovou konfiguraci s více jak dvěma procesory je vhodnější využívat μP_ 1 TxD μP_ 2 RxD asynchronní sériový přenos s komunikačním protokolem. RxD TxD Budou-li Budou li vývody TxD pseudoobousměrné (vstup a výstup s Z Zem Z Zem otevřeným kolektorem), pak pro propojení procesorů na jedné desce může využít spojení halfduplex pomocí jednoho vodiče. Každý procesor Slave bude muset mít přidělenu adresu. Komunikace bude probíhat ve dohodnutém protokolu uvedeném adresou cílového procesoru nebo procesorů. V daný okamžik k žik smíí vysílat íl t pouze jeden j d procesor. Díky Dík výstupům ý t ů s otevřeným t ř ý k kolektorem l kt však š k vysílání ílá í více procesorů povede pouze ke ztrátě přenášené informace.
Master TxD
FEL ČVUT
RxD
Slave 1 TxD
RxD
Slave 2 TxD
RxD
Petr Skalický, katedra radioelektroniky
Slave 3 TxD
RxD
236
ASYNCHRONNÍ SÉRIOVÁ MULTIPROCESOROVÁ KOMUNIKACE Za stejného předpokladu můžeme na desce propojit procesory ve variantě fullduplex pomocí dvou vodičů. Bude-li TxD klasickým logickým výstupem, potom vysílající procesor Slave musí za pomoci dalšího V/V vývodu nejprve připojit svůj vývod TxD na vývod RxD procesoru Master a potom odvysílat zprávu. Po jejím ukončení musí opět svůj vývod TxD odpojit od vstupu RxD procesoru Master, aby nešlo ke spojení dvou logických výstupů až bude vysílat jiný procesor Slave. . Master Slave 1 Slave 2 Slave 3 TxD
RxD
Master TxD
RxD
TxD
RxD
Slave 1 TxD
RxD
TxD
RxD
Slave 2 TxD
RxD
TxD
RxD
Slave 3 TxD
RxD
Obvod výběru výstupu TxD
Pokud se propojení realizuje na větší vzdálenost (desítky metrů a více) je vhodné sériovou komunikaci realizovat pomocí některého z komunikačních rozhraní na úrovních V24 (RS232), RS-485, RS422 nebo za pomoci modemu a telefonní linky. Ke spojení procesorů na kratší vzdálenosti 10m÷1,5km lze využít převaděče rozhraní RS232 nebo SPI na některá bezdrátová spojení RF (433MHz, 868MHz), WiFi, Bluetooth (2,4GHz), ZigBee (2,45 GHz), Zwave. Na velké vzdálenosti můžeme spojení realizovat pomocí GSM modemu nebo radioreléového spoje. V takovém případě je propojení často potřeba doplnit komunikačními vodiči, po kterých se přenáší informace o připravenosti zařízení ke komunikaci, zachyceni synchronizace, atd. Takové spojení se realizují v tzv. střední nebo velké variantě (RS232).
FEL ČVUT
Petr Skalický, katedra radioelektroniky
237
MULTIPROCESOROVÁ KOMUNIKACE JEDNOČIPOVÝCH μΡ MULTIPROCESOROVÁ KOMUNIKACE JEDNOČIPOVÝCH μΡ Při multiprocesorové komunikaci musíme zajistit: Při komunikaci halfduplex smí v daný okamžik vysílat jen jeden procesor, při komunikaci fullduplex smí v daný okamžik vysílat master, jeden slave nebo master a jeden slave. Stanovit komunikační protokol s adresací - s pevnou nebo s proměnnou délkou a zakončující znakem nebo informací o délce zprávy. V přenášené informaci musí být rozlišeny adresy podřízených procesorů od přenášených dat. Je vhodné, aby komunikace od procesoru master nezatěžovala procesory, kterých se netýká. Aby komutace směru přenosu v případě napěťových převodníků s řízením směru netrvala dlouhou dobu (např. (např vkládáním intervalu 1ms, 1ms apod.) apod ) Jednočipové procesory obvykle umožňují realizovat devítibitovou multiprocesorovou komunikaci typu (Master-Slave). Devátý bit pak může sloužit k rozlišení adres (log.1) od přenášených dat (log.0). V případě 8 bitové komunikace, je nutné obětovat 8 bit a přenášet pouze hodnoty (znaky) od 00h do 7Fh. Má-li nadřízený ýp procesor ((master)) p přenášet do p podřízeného p procesoru ((slave)) blok dat, vyšle nejdříve adresovou informaci, která identifikuje cílový procesor. Za adresovým slovem následuje přenos datové informace pevné délky nebo zakončený ukončujícím znakem, takto:
, <1 bytedat>, <2 bytedat>, .... , ,
10001010 1 10101010 0 01010101 0 00000000 0 adresa 55h AAh 00h K šetření výpočetního výkonu podřízených procesorů slouží bit (8051-SM2, AVR-MPCMn), který povoluje nebo zabrání vyvolání přerušení od příchozího datového bytu v 9-bitovém režimu. Příchozí adresová informace vyvolá přerušení u všech podřízených procesorů. Podřízené procesory zjistí, zda se nejedná o jejich adresu. Adresovaný procesor nastaví bit tak, aby přijímal datovou informaci, ostatní jej nastaví pouze na příjem adresy a přenášenými datovými byty nejsou „vyrušováni“. FEL ČVUT
Petr Skalický, katedra radioelektroniky
238
KOMUNIKAČNÍ PROTOKOLY JEDNOČIPOVÝCH JEDNOČIPOVÝCH μΡ μΡ Komunikační protokol popisuje pravidla přenosu hodnot a zpráv, zpráv jejich kódování a zabezpečení při přenosu. V případě aplikací s jednočipovými mikroprocesory se nejčastěji používají uživatelské protokoly nebo firemní standardy. V těch za přenášenou adresou následují příkazy k nastavení, k odpovědi, k předání naměřených dat, atd. viz. komunikační protokoly [1]. V komunikaci může být zavedena jedna centrální adresa k oslovení všech procesorů najednou ( čá č í nulování, (počáteční l á í zjištění jiš ě í připojených ři j ý h jednotek j d k k jednotlivým j d li ý adresám, d á atd.). d) Doposud se v případě propojení bod-bod používal asynchronní sériový přenos s rozhraním RS223C (s přenosovými rychlostmi 2400 až 115200 Baudů), který je v současné době často nahrazován rozhraním Ethernet s protokoly na bázi standardu TCP/IP. Pro síťové přenosy po vodičích dominuje rozhraní RS485 (s přenosovými rychlostmi od 9600 do 57600 Baudů) a postupně se rozšiřuje škála bezdrátových síťových prostředků. Většina protokolů představuje znakově orientované přenosy, u kterých jsou jednotlivé znaky kódovány v ASCII kódu. Znaky s hodnotou 00h÷1Fh se používají jako řídící znaky s obvykle používaným významem. Protokoly využívající RS232C nebo RS485 používají 8 nebo 9 bitovou komunikaci. Může se jednat o bitový přenos ř d l ě ý paritou doplněný it nebo b identifikačním id tifik č í bitem bit rozlišující liš jí í adresu d (l 1) nebo (log.1) b data d t (log.0) (l 0) pro podporu multiprocesorové komunikace. Protokoly přenáší buď celé 8 bitové hodnoty nebo je dělí na dvě 4-bitové části, z nichž každá je následně vyjádřená ASCII kódem (viz. INTEL HEX). Přenášená informace je zabezpečována sudou nebo lichou paritou, blokovou paritou, kontrolním součtem EX-OR,, cyklickým y ý CRC p polynomem, y , aritmetickým ý kontrolním součtem modulo 256 nebo jejich kombinacemi. Z nejznámějších znakových protokolů jmenujme protokol ModBUS (programovatelné automaty), ADAM (sběr dat, monitorování a řízení v průmyslových aplikacích), DIN Messbus a PROFIBUS (oblasti měřící techniky). Z bitových bi ý h protokolů k lů jmenujme j j například říkl d NET92 (zabezpečovací ( b č í systémy), é ) BITBUS (aplikacích ( lik í h s povinnou datovou integritou (Ethernet, ISDN, atd.)). FEL ČVUT
Petr Skalický, katedra radioelektroniky
239
KOMUNIKAČNÍ PROTOKOLY‐ KOMUNIKAČNÍ PROTOKOLY‐VÝVOJOVÉ TRENDY V současné době vzniká stále větší potřeba propojovat podřízené jednotky mezi sebou nejen k vytváření měřících, monitorovacích, přístupových a bezpečnostních systémů, ale i v oblastech běžného života v domácnostech k měření, regulaci, ale i pro jednoduché ovládání například světel, atd. Nejjednodušší ovládací obvody obvykle pracují na některé z bezdrátových sítí (ZigBee, Zwave, WiFi, atd.) a vyráběné obvody již v sobě obsahují prostředky pro konfiguraci sítě ítě (např. ( ř ZigBee Zi B Stack). St k) Propojení P j í s těmito tě it obvody b d se obvykle b kl uskutečňuje k t čň j přes ř sériové é i é rozhraní h í nebo některou z přístrojových sběrnic. Nejenom v průmyslové oblasti vznikala potřeba připojovat podřízené jednotky k monitorovacím systémům a současně s tím i vznikaly i různé jednodušší nebo složitější komunikační protokoly. Jejich j množství jje značné a mnohdy y komplikuje p j p propojování p j různých ý přístrojů p j do sítí a tím i možnosti distribuce informací mimo operátorská stanoviště včetně jejich vizualizace. V současné době je již většinou požadováno, aby data z technologie byla dostupná nejen na operátorském pracovišti, ale aby k těmto datům (byť různě zpracovaným) mělo přístup mnoho dalších pracovníků od údržby, mistra až po vedoucího výroby. Takové požadavky vyvolávají potřebu v sjednocování komunikací a minimalizaci komunikačních protokolů. protokolů I když se v současnosti stále setkáváme s potřebnou propojení řídících uzlů s programovatelnými automaty, měřícími a monitorovacími systémy v daném komunikačním protokolu, stále častěji se prosazuje komunikační médium Ethernet s protokoly na bázi standardu TCP/IP. Díky celosvětové síti standard TCP/IP v podstatě v propojování počítačů zvítězil. Proto dnes většina renomovaných firem nabízí svoje nové produkty s tímto rozhraním nebo vyrábí komunikační převodníky pro toto rozhraní. Navržené zařízení tak může být monitorováno po síti Internet ve veřejném nebo neveřejném komunikačním protokolu. Zařízení může po rozhraní přenášet naměřené hodnoty do sběrného centra ke zpracování a následné distribuci. Vzdálený přístup k realizovaným aplikacím snižuje ekonomické nároky na servis zařízení hlavně v oblasti konfigurace a nastavení, nastavení ale i inovace programového vybavení. Současně s těmito výhodami přichází i nebezpečí v neoprávněného zásahu do nastavení zařízení apod. FEL ČVUT
Petr Skalický, katedra radioelektroniky
240
VÝVOJ PROGRAMŮ VÝVOJ PROGRAMŮ –– MULTITASKING V některých ý realizacích systémů y řízených ý mikroprocesorem p se setkáváme se dvěma základními problémy aplikace: Dílčí úloha musí být vykonána v relativně krátkém časovém rozmezí (s garantovaným časovým zpožděním) od vzniku požadavku, proto ji můžeme označit jako zpracování "v reálném čase". Několik nezávislých úloh musí být vykonáváno současně na jednom procesoru. V tomto případě hovoříme o multiprogramování (multitasking).
é Sy ov st m é úl émo st SR y oh v S I RTX kanál y é
Hardware Už ké iva els tel t IS sk iva hy R é Už úlo
Uvedené úlohy a jejich obsluhu můžeme naprogramovat například s využitím časovače a přerušovacího systému, kdy každé úloze přidělíme určitou dobu na zpracování. Tak budeme vytvářet více či méně obdobu programu RTX (Real-Time Multitasking Executive) pro daný procesor, který řeší problémy s organizací, obsluhou, spouštěním jednotlivých úloh i jejich vzájemnou komunikací. Jednotlivé úlohy (task) pak budou realizovány jako nezávislé programové procesy. procesy Použití RTX nám umožní jednoduchou integraci do vývojového prostředí daného procesoru, kompletní podporu opětovného volání ) úloh, včetně obnovy stavu registrů, zásobníku úlohy a přerušovacího systému. RTX je přizpůsobivý, vyžaduje jen několik systémových zdrojů a lze jej využít i v časově kritických aplikacích. Vlastnosti takového systému si ukážeme na RTX-51 pro procesory 8051. Úlohy s rychlou odezvou a přerušení. Každá úloha má rezervovánu jednu banku pracovních registrů R0 až R7 z procesoru a disponuje vlastní zásobníkovou oblastí v nejrychleji přístupné paměti (interní). RTX-51 podporuje současně v daném čase maximálně tři rychlé úlohy. Standardní úlohy nevyžadující rychlou odezvu, poskytují více času na postupné přepínání mezi úlohami a vyžadují méně vnitřní paměti . Proto všechny standardní úlohy používají jednu banku registrů a zásobníkovou oblast, které se při ukončení úlohy uloží do vnější paměti RAM viz. následující blána. RTX-51 podporuje maximálně 16 standardních úloh současně. FEL ČVUT
Petr Skalický, katedra radioelektroniky
241
VÝVOJ PROGRAMŮ VÝVOJ PROGRAMŮ –– MULTITASKING Interní RAM
Externí RAM
Zásobník pro standardní úlohy
Zásobník pro rychlou úlohu 3 Zásobník p pro rychlou y úlohu 2 Zásobník pro rychlou úlohu 1
Bitová a bajtová oblast paměti pro rozdělovač a lokální i globální proměnné Banka registrů 3 rychlá úloha 3
Oblast pro uložení registrů a zásobníku standardní úlohy
Banka registrů 2 rychlá úloha 2 Banka registrů 1 rychlá úloha 1
Oblast pro uložení registrů a zásobníku standardní úlohy
Banka registrů 0 standardní úlohyy
FEL ČVUT
Oblastt pro uložení Obl l ž í registrů i t ůa zásobníku standardní úlohy
Petr Skalický, katedra radioelektroniky
242
VÝVOJ PROGRAMŮ VÝVOJ PROGRAMŮ –– MULTITASKING Komunikace mezi úlohami a jjejich j synchronizace. y RTX-51 disponuje p j dvěma mechanismy y vzájemné komunikace a synchronizace jednotlivých úloh mezi sebou, které jsou jinak na sobě nezávislé. Signály jsou nejrychlejší formou synchronizace úloh. Nejsou při nich přenášeny jakékoliv zprávy pouze aktivují úlohu. Zprávy p y jjsou p přenášeny yp přes tzv. p poštovní schránky, y, které p pracují j na p principu p FIFO ((First-In,, First-Out). Úlohy mohou být ve frontě a čekat na přijetí zprávy. Pokud čeká několik úloh na přijetí zprávy, tak úloha, která čeká ve frontě nejdéle obdrží zprávu jako první. Semafory jsou jednoduché protokolové mechanismy, které sdílejí společné prostředky bez přístupových konfliktů. Společné prostředky jsou řízeny tak, aby v daném čase jej používala pouze jedna úloha. Přistupuje-li k jednotce více úloh, potom přistup je povolen jedné a další jsou zařazeny do pořadníku a čekají v něm tak dlouho, dokud povolená úloha nedokončí svoji činnost. RTX-51 obsahuje událostmi řízené přepínání úloh, které přepíná úlohy podle jejich priority. Navíc disponuje přepínacím mechanizmem, který přepíná podle volitelného časového schématu ( (round-robin d bi scheduling). h d li ) RTX-51 RTX 51 disponuje di j čtyřmi čt ř i prioritními i it í i úrovněmi ú ě i 0, 0 1 a 2, 2 které kt é mohou h být přiřazeny k standardním úlohám. Priorita 3 je rezervována pro rychlé úlohy. Úlohy mohou čekat na rozmanité události a nemusí při tom spotřebovávat čas procesoru. Událostí může být přijetí zprávy, signálu, přerušení, přetečení času nebo jejich kombinace. Existují tři formy čekání: Normální – WAITING (BLOCKED) úloha je blokovaná až do doby přijetí události. události Podmíněné – čekající úloha není blokovaná a může zjistit existenci odpovídající události a vypočítat návratovou hodnotu Do přetečení času – čekající úloha je blokovaná na určitou dobu pokud se odpovídající událost neobjeví. bj í RTX-51 umožňuje synchronizaci úloh na vnější události prostřednictvím přerušovacího systému. Přerušení může vyvolat klasickou přerušovací rutinu nebo spustit standardní nebo rychlou úlohu. FEL ČVUT
Petr Skalický, katedra radioelektroniky
243
VÝVOJ PROGRAMŮ VÝVOJ PROGRAMŮ –– MULTITASKING Stavy y úloh - RTX-51 rozlišuje j čtyři y stavy y jjednotlivých ý úloh: READY – všechny úlohy, které mohou běžet jsou READY a jedna z nich běží (RUNNING). RUNNING (ACTIVE) – je úloha, která je právě zpracovávaná procesorem. V daný okamžik může mít tento stav pouze jedna úloha. BLOCKED (WAITING) – jsou úlohy, úlohy které čekají na svoji aktivační událost. událost
prioritou
ve
stavu
Je-li několik úloh se stejnou prioritou ve stavu READY, READY je spuštěna ta, ta co nejdéle čeká. čeká Přepínání úloh nastává jedině tehdy, je-li první pravidlo porušeno. Výjimkou je přepínání úloh založené na časovém schématu, které lze v průběhu programu modifikovat. modifikovat
í ěž e b ou al it t, ior os r ál ší p ud š a vy íšl a s Př loh ú
Úloha s nejvyšší READY je spuštěna.
Ú lo ha za s vy čí šš ná í p Př íšl bě rio a že ri u t to vy dá u šš los íp t p ri ro or ito úlo u hu s
SLEEPING – všechny úlohy, které nebyly spuštěny nebo ukončily svoji činnost. Systémová sekce programu (scheduler, dispat-cher) přiděluje procesoru jednotlivé úlohy ke Ready zpracování podle následujícího schématu:
Příšla událost a úloha má vyšší prioritu než běžící úloha
Running
Blocked Úloha začíná čekat na událost, následující úlohu zpracovává procesor
Při výměně standardních úloh jsou všechny používané registry běžící úlohy, stav čítače instrukcí a obsah standardního zásobníku jsou uloženy do úseku paměti RAM rezervované pro danou úlohu. Následně jsou registry a obsah zásobníku právě spouštěné úlohy uloženy do banky registrů 0 a zásobníkové oblasti pro standardní úlohy.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
244
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY ‐‐ ÚVOD TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY Budeme-li Budeme li realizovat mikroprocesorový systém včetně programového vybavení, vybavení budeme v závězávě rečné fázi stát před problémem oživení jak obvodového zapojení (hardware), tak jeho programového vybavení (software). V této fázi musíme detekovat a odstranit případné chyby v návrhu i realizaci obou částí realizaci obvodového i programového vybavení. Oživování mikroprocesorové aplikace je možné provádět:
Bez podpůrných technických prostředků - nejjednodušší přístup, který je v literatuře označovaný jako metoda „Burn and Crash“ (volný překlad „vypal a sleduj rachot“ nebo „nahraj a spusť“. Vyskytnou-li se v návrhu obtížně zjistitelné chyby, může být vývoj zdlouhavý a únavný.
S podpůrnými technickými prostředky: ♣ simulátor programové paměti (simulátor EPROM) vhodný pouze pro systémy s programem uloženým ve vnější programové paměti (přestal se již vyrábět). ♣ systém s MONITOREM a komunikačním kanálem ♣ vývojový systém - s daným procesorem a vývojovým prostředím - s vývojovým prostředím simulujícím chování budoucího aplikačního procesoru (softwarový simulátor) ♣ obvodový emulátor, který nahrazuje daný procesor se všemi jeho časovými parametry. Pro vysokou cenu a nástup procesorů s integrovaným obvodovým debugerem nebo rozhraním JTAG, se emulátory přestávají vyrábět. ♣ obvodový debuger integrovaný v procesoru s jedno nebo více (JTAG) drátovým sériovým é i ý rozhraním, h í k é umožňuje které žň j procesor zastavit i (Break (B k Point), P i ) prohlížet hlíž stav registrů, vstupů a výstupů, atd.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
245
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY –– NAHRAJ A SPUSŤ TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY Vývoj ý j „nahrajj a spusť“ p spočívá p v realizaci funkčního vzorku mikropočítače včetně jeho programového vybavení. Vlastní oživení funkčního vzorku zahájíme: ♠
♠
Testováním správného propojení obvodů a pokud k d je j to možné ž é i testování á í jejich j ji h funkce. f k Účinnou metodou je například testování zkratů jednotlivých obvodů vůči napájení a zemi, která byla aplikována v počátcích μP techniky. y Přeložením programu v jazyce C nebo jazyce symbolických adres kompilátorem nebo překladačem jeho testování softwarovým simulátorem za různých podmínek.
♠
Naprogramování strojového kódu obvykle ve formátu IntelHEX do programové paměti vyvíjeného mikropočítače nebo paměti Flash, EPROM („BURN“).
♠
Ověření funkce SW i HW pomocí chování celého systému („CRASH“) za co nejrůznějších podmínek i těch, ke kterým by v běžném provozu nemělo docházet.
♠
Zadání vývoje mikropočítače/mikrořadiče
Návrh programu
Návrh hardware
Ladění programu (simulace programu)
Test obvodů mikropočítače
Programování paměti mikropočítače
Funkční test mikropočítače +SW Oprava SW
Oprava případně O ří d ě nalezených l ý h chyb h b v programu nebo obvodovém řešení a následné dlouhodobější testování.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
+HW chyby?
Oprava HW
Konec vývoje mikropočítače
246
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY –– SIMULÁTOR EPROM TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY Bude-li p program g uložen ve vnější j p paměti EPROM nebo Flash, pak můžeme k vývoji a ladění programu použít simulátor paměti EPROM , který nás zbaví neustálého programování paměti Flash, EPROM nebo zeroRAM a vyměňování mezi paticí programátoru a vyvíjenou aplikací. aplikací Simulátor má dnes smysl pouze u systémů, které nahrávají svůj obsah ze zaváděcí paměti (např. signálové procesory) a proto řada firem ukončila jejich sériovou výrobu. Jádro simulátoru paměti EPROM tvoří paměť RAM nebo dvoubránová paměť RAM. Do této paměti je nahrán testovaný program s tím, že vyvíjený, upravovaný nebo opravovaný systém je nulován vývodem Reset. Simulátor disponuje paticí s kolíčky nebo kabelem s takovou paticí, která se zasunuje do patice EPROM nebo Flash vyvíjeného zařízení. Po nahrání programu do paměti RAM se řídicí procesor odpojí od paměti RAM a zajistí její připojení na patici s k líčk kolíčky. Ná l d ě deaktivuje Následně d kti j signál i ál Reset R t a testovaný systém začne vykonávat uložený program. Novou variantu programu můžeme snadno znovu přeložit a znovu nahrát program do simulátoru. Jedná se sice opět p o o vývoj ý j nahrajj a spusť, ale zrychlení vývoje je značné. Díky rychlému testování různých variant je vývoj nesmírně pohodlnější a rychlejší. FEL ČVUT
sběrnice
Navrhovaný systém
V/V obvody
Procesor
patice EPROM
Reset simulační kabel RS232C nebo USB
budiče
procesor a paměť ě
dvouportová paměť ě
Simulátor EPROM
k počítači s vývojovým prostředím V/V obvody
sběrnice
V dobách, kdy procesor komunikoval pouze po externí sběrnici, existovaly tzv. analyzátory sběrnice. V podstatě se jednalo o mnoha kanálový logický analyzátor připojený na adresovou, datovou a řídicí sběrnici u kterého bylo možné od nasběrnici, na stavené podmínky sledovat určitý úsek probíhajícího programu nebo zápis hodnot do brány nebo paměťového místa. Petr Skalický, katedra radioelektroniky 247
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY –– MONITOR TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY Disponuje-li p j vyvíjený y j ý mikropočítač p sériovým ý kanálem a má dostatečnou kapacitou datové paměti, kterou lze mapovat i jako paměť programu, můžeme aplikační mikropočítač vybavit MONITORem (monitorovacím programem). Ten umožní zavedení strojového kódu vytvářeného programu do oblasti datové/progradatové/progra mové paměti (RAM) nevyužívané aplikací, spuštění programu, sledování obsahu registrů a paměti μP, zastavování běhu programu (Break Points) nastavených v monitorovacím programu.
sběrnice
Vyvíjený systém
V/V obvody Reset
Navrhovaný systém
RS232C
Procesor
RAM programová i datová
Terminál/PC
sběrnice
V/V obvody b d
Jednodušší variantou je využití sériového kanálu k přenosu potřebných p ý hodnot do p počítače PC. Uvedené p postupy py vývoje ý j mikropočítače již lze označit jako podpůrné technické prostředky, ale podstata metody se od metody „Nahraj a spusť“ příliš neliší i když výrazně usnadňuje a urychluje vývoj. Propojení vyvíjeného zařízení s hostitelským počítačem je možné pomocí RS232C nebo USB. USB
Patice procesoru
Reset kabel
RS232C nebo USB V/V procesoru stejného typu
Programová paměť RAM
k počítači s vývojovým prostředím
sběrnice
Další možností, vycházející z uvedených variant, je nahrazení vstupně/výstupních vývodů procesoru v realizovaném systému vstupně /výstupními vývody vývojového systému s procesorem stejného typu. typu Variantu můžeme označit jako simulátor procesoru.
Vývojový systém
FEL ČVUT
Petr Skalický, katedra radioelektroniky
248
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY –– VÝVOJOVÝ SYSTÉM TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY Myšlenka M šl k propojení j í počítače čí č PC s mikroprocesorovým ik ý systémem é vybaveným b ý MONITOREM nebo vývojovým prostředím vyústila ve výrobu tzv. vývojových modulů, které vyrábí pro své procesory řada výrobců i firem s nimi spojených. Úkolem těchto modulů je obvykle přinést návrháři systém s novým typem procesoru a umožnit mu tak rychlé ověření jeho vlastností pro danou aplikaci. p p Tyto y systémy y y umožňují j aplikační p program p g testovat od metody y „„Nahrajj a spusť“ až po krokování programu s možností výpisu stavu všech registrů a obsahu pamětí. Výhodou modulů je obvykle relativně nízká cena, rychlost ověření vlastností procesoru a úprav jeho vstupů před vlastním návrhem aplikace. Vývojové systémy s body zastavení a s možností výpisu stavu registrů nám usnadní základní vývoj programu, ale nepomohou nám příliš při odhalování chyb vyplývajících ze souběhu dvou nebo více událostí.
FEL ČVUT
Petr Skalický, katedra radioelektroniky
249
TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY –– OBVODOVÝ EMULÁTOR TECHNICKÉ VÝVOJOVÉ PROSTŘEDKY
FEL ČVUT
sběrnice
Navrhovaný systém
V/V obvody
Patice procesoru
Reset emulační kabel
budiče
Obvodový EMULÁTOR
vazební obvody
procesor emulační
řídící procesor
V/V obvody
sledovací paměť sběrnice
paměť emulátoru
Petr Skalický, katedra radioelektroniky
RS23 32C nebo CENT TRONICS
Na nejvyšším j y stupni p p podpůrných p ý p prostředků p pro vývoj ý j mikropočítačů stojí obvodový emulátor, který umožňuje simulovat v reálném čase chování daného typu procesoru s možností prohlížení stavu všech registrů, obsahů pamětí a bodů zastavení. Obvodový emulátor nenahrazuje v aplikaci jenom chování aplikační aplikačního procesoru, ale umožňuje sledovat chování všech vývodů emulovaného procesoru tj. včetně adresových, datových a řídících signálů společné sběrnice navrhovaného systému. Emulátor umožňuje se synchronizovat v aplikaci na různé události a sledovat stavy v papa mětech a registrech μP. Obvodový emulátor je ve srovnání s ostatními podpůrnými prostředky mnohem složitější zařízení a tudíž cenově méně dostupnější. Překotný vývoj nových procesorů a snaha výrobců i t integrovat t do d vlastních l t í h procesorů ů testovací, t t í krokok k vací a emulační rozhraní, způsobila postupný odklon od výroby obvodových emulátorů. Dnes řada výrobců doplňuje své procesory rozhraním JTAG (IEEE 1149.1), které bylo původně určeno k elektronickému testování vyrobeného zařízení pomocí nastavování a zjišťování stavu na vývodech obvodu. Výrobci současně s tím integrují do procesorů logiku podporující ladění programu při plné rychlosti procesoru bez ovlivnění jjeho činnosti. Na p procesoru integrované g ladící prostředky tak umožňují přes rozhraní JTAG nebo vývod nulování odladit koncovou aplikaci.
250
KOMUNIKAČNÍ SBĚRNICE ‐ KOMUNIKAČNÍ SBĚRNICE ‐ RS422 Pro realizaci obousměrné komunikace dvou zařízení nebo jednoho vysílače a až 10 přijímačů po vodičích na větší vzdálenost (<1200m) můžeme využít standard RS422A. Standard používá symetrický signál na straně vysílače i přijímače s přizpůpřizpů sobeným zakončením přenosového vedení (minimálně 100Ω). Relativně vysoký vstupní odpor přijímačů dovoluje zvýšit počet přijímačů (≤10) na jednom přenosovém vedení. Sběrnice neumožňuje připojení více vysílačů a proto sběrnice RS422 není určena pro síťovou komunikaci. Standard RS422A, který k realizaci potřebuje 2x2 vodiče a skrytě zem umožňuje současný přenos oběma směry, se používá spíše výjimečně. výjimečně Převodníky úrovní TTL a CMOS na signály s úrovněmi standardu se vyrábí pod označením (např. 26LS31 (4x vysílač), 26LS32 (4x přijímač)) nebo univerzální MAX3030E ÷MAX3033E (Maxim), ADM4854 ÷ADM4857 (Analog) nebo dalších výrobců. ý b ů Ve V funkci f k i přijímače-vysílače řijí č íl č lze l použít žít i rychlé operační zesilovače s jediným napájecím napětím. Velmi často bývá vysílač a přijímač realizován dvěma obvody pro rozhraní RS485A sp pevně nastaveným ý směrem p přenosu,, které má velmi podobné elektrické i přenosové parametry. FEL ČVUT
přijímač výstup TTL
R
vysílač vstup TTL
vysílač
kabel
přijímač
kabel
T
vstup TTL
T
Rz
Rz
R
výstup TTL
Tolerance úrovní signálů
+6V +2V -2V -6V
+6V
log.0
log.0 +200mV -200mV log.1
log.1
-6V
délka [[m]] 1200 Odhad přenosové rychlosti
40
Petr Skalický, katedra radioelektroniky
bit/s 10
1k
100k
10M
251
KOMUNIKAČNÍ SBĚRNICE ‐ KOMUNIKAČNÍ SBĚRNICE ‐ RS485 Dalším zlepšováním vlastností standardu RS422 vznikl standard RS485A EIA, který se díky možnosti připojení většího počtu vysílačů ke sběrnici stal nejvhodnější prostředkem pro realizaci malých lokálních sítí mikropočítačů nebo řadičů. Vysílače i přijímače standardu t d d používají ží jí symetrický t i ký signál i ál přenášený ř áš ý po dvou d vodičích oběma směry (režim Half Duplex) zakončených přizpůsobenou zátěží. Standard umožnil snížení zatěžovací impedance vedení až na hodnotu 60Ω, která se blíží charakteristické impedanci p přenosového dvoudrátového p krouceného vedení (Twisted pair). Obvody pro RS485 umožňují standardně vzájemné propojení 32 a nyní až 255 vysílačů/přijímačů. V daný okamžik může být aktivní pouze jeden vysílač, ostatní obvody musí být v přijímacím režimu. režimu Vzhledem k tomu, tomu že propojení vysílače a přijímače může být až na vzdálenost 1,2km, je vhodné v dané aplikaci zvážit použití optického oddělení metalického vedení od vysílačů a přijímačů. Bude-li velký rozdíl potenciálů mezi zemí vysílače a přijímače, pak je použití optoelektronického oddělení nezbytné. Úrovňovou transformaci signálů TTL na RS485A se používají obvody od řady firem nesoucí v označení obvodu obvykle číslo 485 (např. MAX485, ADM485, SN75176, atd.). Standardní obvod obsahuje v pouzdře DIL8 nebo SO8 jeden vysílač a přijímač se separátními aktivačními vstupy a vývody A a B pro připojení symetrického vedení. FEL ČVUT
Petr Skalický, katedra radioelektroniky
vysílač
přijímač
kabel
vstup T TTL
Rz
R
výstup TTL
Tolerance úrovní signálů
+6V +1 5V +1,5V -1,5V -6V
+6V
log.0
log.0 +200mV -200mV log.1
log.1
-6V
délka [m] 1200 Odhad přenosové rychlosti
40
bit/s 10
1k
100k
10M
252
KOMUNIKAČNÍ SBĚRNICE ‐ KOMUNIKAČNÍ SBĚRNICE ‐ RS485 Obvody se vyrábí i s ochranou proti statické elektřině (např. ADM485EARN, ST485EBD). Novinkou je převodník s integrovaným oddělením pomocí izolátoru a konvertorem DC/DC (ADM2587E, ADM2582E). P t ž přenos Protože ř probíhá bíhá oběma bě směry ě je j nezbytné, b t é aby b vysílací i přijímací strana řídila u svého převodníku směr přenosu SMER485. Z přepínání převodníků mezi vysílacím a přijímajícím režimem vyplývají dva problémy: p y Sběrnici určitou dobu nikdo neřídí (převodníky jsou ve vstupním režimu) Bude včas otočen směr převodníku na jedné nebo druhé straně? RXD_CPU 1
SMER485 VCC
R1 3k3
1 2
U2A 3
2 74HCT 132
3 4
R2
1k2
R3
120
R4
1k2
U1 RO RE
B
DE A DI ST 485EBD
7 6
TXD_CPU VCC C2 10nF
FEL ČVUT
RS485_B J1
VCC
1 2 3 4 5 6 Upnut í RS485_A
C3 47uF/10V
Petr Skalický, katedra radioelektroniky
253
KOMUNIKAČNÍ SBĚRNICE ‐ KOMUNIKAČNÍ SBĚRNICE ‐ RS485 V Vedení d í musíí být upnuto t dvěma d ě odpory d k napájení áj í a zemii tak, t k aby b v klidu klid (nikdo ( ikd nevysílá) byla na vedení log.1 (přijímače nemohou zahájit příjem po sériovém kanále). Nepřistoupíme-li na realizaci velkých prodlev mezi jednotlivými vysílanými sekvencemi po sběrnici RS485 (což se často dělá) je po odvysílání přenášené informace třeba neprodleně otočit směr přenosu převodníku do přijímacího režimu. Bude-li reakce na vysílání rychlá, pak změna směru nesmí být zdržena jakýmkoliv přerušením !!!!! Znak vyslán, převodník by měl být neprodleně otočen
Žádosti o přerušení
t Zápis ukončujícího znaku
Problém !!!
Obsluha sériového kanálu při vysílání po sběrnici RS485 v jazyce C void seriovy_kanal() interrupt 4 using 1 { unsigned char znak; if (TI==1) // Vysílání řetězce { TI TI=0; 0 TB8 TB8=0; 0 znak=sertxd[pocettxd++]; k t d[ tt d++] if ((znak==SKONEC)||(pocettxd>43)) { EA=0; SBUF=SKONEC; while(!TI); SMER485=1; TI=0; vyslano=1; pocettxd=0; EA=1;} else SBUF=znak; return;} } FEL ČVUT
Petr Skalický, katedra radioelektroniky
254