ŘÍZENÍ ELEKTRICKÝCH POHONŮ Systémová struktura počítače Řízení běhu programu České vysoké učení technické Fakulta elektrotechnická A1M14RPO Řízení elektrických pohonů 01 Ver.1.20 J. Zděnek, 20151
Požadované vlastnosti počítače Požadované vlastnosti počítače Required computer features Řízení toku programu synchronní akce asynchronní akce (řízení událostmi) Přesun proměnných Zpracování proměnných Funkce vstupu/výstupu Pomocné řídicí funkce Program flow control Synchronous actions Asynchronous actions (event driven) Variable transport Variable processing Input/Output functions Auxiliary control functions Zabezpečení běhu Konzistence dat Ochrana proti kopírování Další Operation security Data consistency Reverse engineering protection Others A1M14RPO Řízení elektrických pohonů 01 2
Architektura typu von Neumann A1M14RPO Řízení elektrických pohonů 01 3
Architektura typu Harvard Typ.různá šířka A1M14RPO Řízení elektrických pohonů 01 4
Architektura typu Harvard další modifikace Paralelní čtení/zápis dat Čtení konstant z Flash A1M14RPO Řízení elektrických pohonů 01 5
Architektura von Neumann versus Harvard von Neumann Harvard Jednodušší struktura Sdílená sběrnice nelze paralelně transportovat instrukce a data Společný paměťový prostor instrukcí a dat. Možno pružně rozdělit paměť pro instrukce data a zásobník (pokud vše v RAM) Prostor pro zásobník (Stack) bývá dostatečný. Složitější struktura Oddělené sběrnice možnost paralelního transportu instrukce a dat (rychlost větší) Oddělené prostory instrukcí a dat. Paměť programu (instrukcí) často širší slovo proti paměti dat kompaktnější jednocyklové instrukční kódy. Zásobník často mimo paměť dat (rozdílná šířka paměti programu a dat). Hloubka zásobníku omezená (pak nutno přemístit do paměti dat a to pomalé) A1M14RPO Řízení elektrických pohonů 01 6
Systémová struktura počítače Kontrolní seznam 1 Check list No.1 Počítač sériový stroj CPU - Procesor Paměť programu Paměť dat Vstup / výstup Společná sběrnice Hodiny (synchronizace) XTAL krystal Nulování Periferie Vnější paměť Master sběrnice Computer sequence machine CPU Central Processing Unit Program memory Data memory Input / output Bus Clock XTAL crystal Reset Peripherals External memory Bus master A1M14RPO Řízení elektrických pohonů 01 7
Počítač sériový stroj Kontrolní seznam 2 Check list No.2 Počítač sériový stroj FSA - konečný automat FSM konečný automat Sychronní automat Stav automatu Podmínky přechodu Instrukce programu Proměnné programu Zásobník programu BIOS Operační systém Aplikační program Zaváděcí program Computer sequence machine FSA Finite State Automaton FSM Finite State Machine Synchronous FSA FSA state Transition conditions Program instructions Program variables Program stack BIOS (Basic I/O System) Operating system Users application Bootstrap A1M14RPO Řízení elektrických pohonů 01 8
Počítač sekvenční stroj A1M14RPO Řízení elektrických pohonů 01 9
Instrukční cyklus Kontrolní seznam 3 Check list No.3 Instrukční cyklus Čtení instrukce Vykonání instrukce Dekódování instrukce Čtení operandu Zpracování operandů Zápis výsledku Řídicí sběrnice (CB) Datová sběrnice (DB) Adresová sběrnice (AB) Sběrnicový cyklus Směr přenosu informace Instruction cycle Operational code (Opcode) fetch Instruction execution Instruction decode Operand read Operand processing Result write Control bus (CB) Data bus (DB) Address bus Bus cycle Information transfer direction A1M14RPO Řízení elektrických pohonů 01 10
Vykonání instrukce A1M14RPO Řízení elektrických pohonů 01 11
Rozdělení společné sběrnice A1M14RPO Řízení elektrických pohonů 01 12
Komunikace mezi bloky Kontrolní seznam 4 Check list No.4 Komunikace mezi bloky CB, DB, AB Obousměrná sběrnice Jednosměrná sběrnice Pouze jeden bus master Směr čtení Směr zápis Adresa platná Data platná Dekodér adresy Pole paměťových jednotek čtení/zápis z/do paměti Block communication CB, DB, AB Bidirectional bus Unidirectiona bus One bus master only Direction READ Direction WRITE Address valid Data valid Address decoder Memory array Memory READ/WRITE A1M14RPO Řízení elektrických pohonů 01 13
Činnost společné sběrnice (AB, DB, CB) A1M14RPO Řízení elektrických pohonů 01 14
Kde číst následující instrukci Čítač instrukcí 1) Další instrukci čti vždy z adresy uložené v PC 2) Adresa v PC se mění automaticky, po čtení instrukce ukazuje na další instrukci 3) Adresa v PC se dá změnit vykonáním instrukce skoku, cílová adresa je součástí instrukce A1M14RPO Řízení elektrických pohonů 01 15
Větvení programu (Jump, Branch) Realizace větvení programu A1M14RPO Řízení elektrických pohonů 01 16
Dekompozice problému na dílčí části A1M14RPO Řízení elektrických pohonů 01 17
Zde příklad v Javě A1M14RPO Řízení elektrických pohonů 01 18
Požadavky pro volání procedury Návratová adresa A1M14RPO Řízení elektrických pohonů 01 19
Princip volání procedury (Procedure Call) Zásobník (návratových adres) Ukazatel zásobníku A1M14RPO Řízení elektrických pohonů 01 20
Synchronní akce volání procedury Kontrolní seznam 5 Check list No.5 Synchronní akce Čítač instrukcí - PC Ukazatel do paměti programu Postupné čtení Automatická inkrementace Vnucená adresa Zásobník Ukazatel zásobníku Ukazatel na vrchol zásobníku Vrchol zásobníku Vlož do zásobníku - PUSH Vyzvedni ze zásobníku - POP Synchronous actions Program Counter PC Pointer to program memory Sequential read Auto-increment Forced address Stack Stack Pointer Pointer to stack top TOS top of stack PUSH POP A1M14RPO Řízení elektrických pohonů 01 21
Synchronní akce volání procedury - pokrač. Kontrolní seznam 6 Check list No.6 Synchronní akce - pokrač. Začátek programu Hlavní smyčka Volání procedury Návratová adresa Začátek procedury Tělo procedury Bod návratu (return) Vnořené volání Návěští (cílová adresa skoku) Skok (bez návratové adresy) Hloubka zásobníku Synchronous actions cont'd Program start point Main loop Procedure call Return address Procedure start Procedure body Return Nested calls Label (jump target address) Jump (no return address) Stack depth A1M14RPO Řízení elektrických pohonů 01 22
Prostředky pro organizaci volání procedury A1M14RPO Řízení elektrických pohonů 01 23
Sdílené prostředky (sdílí je procedury) A1M14RPO Řízení elektrických pohonů 01 24
Princip volání procedury (synchronní) Volání procedury - souhrn akcí Volání procedury je vyvolané programem (synchronní) ne vnější událostí (vnější událost viz. přerušení) Stejným mechanismem se řídí i vnořené volání (procedura volá proceduru) Další instrukce se vždy čte z adresy právě uložené v čítači instrukcí (PC) Čti instrukci Call Ulož návratovou adresu (tj. obsah čítače instrukcí) do zásobníku Vlož do čítače instrukcí počáteční adresu procedury Ulož kontext do zásobníku Proveď tělo procedury Vyzvedni kontext Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu za místem volání Call na pozadí tj. čti instrukci z adresy uložené v PC A1M14RPO Řízení elektrických pohonů 01 25
Před čtením CALL 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 26
Po čtení CALL 1 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 27
Během provádění CALL 2 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 28
Po provedení CALL 3 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 29
Před čtením RETURN 4 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 30
Po čtení RETURN 5 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 31
Po čtení RETURN 7 6 1 2 3 4 5 6 7 A1M14RPO Řízení elektrických pohonů 01 32
Princip volání procedury (synchronní) - souhrn Volání procedury - souhrn akcí Volání procedury je vyvolané programem (synchronní) ne vnější událostí (vnější událost viz. přerušení) Stejným mechanismem se řídí i vnořené volání (procedura volá proceduru) Další instrukce se vždy čte z adresy právě uložené v čítači instrukcí (PC) Čti instrukci Call Ulož návratovou adresu (tj. obsah čítače instrukcí) do zásobníku Vlož do čítače instrukcí počáteční adresu procedury Ulož kontext do zásobníku Proveď tělo procedury Vyzvedni kontext Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu za místem volání Call na pozadí tj. čti instrukci z adresy uložené v PC A1M14RPO Řízení elektrických pohonů 01 33
Asynchronní akce hardwareové (hw) volání procedury Žádosti o přerušení Řadič přerušení A1M14RPO Řízení elektrických pohonů 01 34
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 7 Check list No.7 Asynchronní akce Systém přerušení Hardwarové volání procedury Předdefinovaná cílová adresa Vektor přerušení Tabulka vektorů přerušení Asynchronní žádost o přerušení Řadič přerušení Vstupy žádostí o přerušení Asynchronní událost Žádost o přerušení do CPU Potvrzení žádosti od CPU Asynchronous actions Interrupt system Hardware procedure call Predefined target address Interrupt vector Interrupt vector table Asynchronous interrupt request Interrupt controller Interrupt request inputs Interrupt event CPU interrupt request CPU interrupt acknowledge A1M14RPO Řízení elektrických pohonů 01 35
Asynchronní akce hw volání procedury (ISR). Kontrolní seznam 8 Check list No.8 Asynchronní akce - pokrač. Instrukce je nepřerušitelná Reakční doba přerušení Priorita přerušení Statická priorita přerušení Dynamická priorita přerušení Programová priorita přerušení Typy přerušení Maskovatelné přerušení Nemaskovatelné Programové (ladící) přerušení Program řízený událostmi Asynchronous actions cont'd Instruction is uninterruptable Interrupt latency Interrupt priority Static interrupt priority Dynamic interrupt priority Software interrupt priority Interrupt types Maskable interrupt Nonmaskable interrupt Trap (software interrupt) Event driven program A1M14RPO Řízení elektrických pohonů 01 36
Asynchronní akce hw volání procedury (ISR) Kontrolní seznam 9 Check list No.9 Asynchronní akce - pokrač. Obsluha přerušení - ISR Návratová adresa z přerušení Instrukce návratu z přerušení Asynchronní událost Pozadí programu Nejnižší hladina programu Sdílené zdroje Střadač Stavové slovo procesoru - PSW Příznakový registr Kontext programu (uložit/obnovit) Asynchronous actions cont'd Interrupt service routine - ISR Interrupt return address Interrupt return instruction Asynchronous event Background (level) Lowest program level Shared resources Accumulator Processor status word - PSW Flag register Program context (save/restore) A1M14RPO Řízení elektrických pohonů 01 37
Asynchronní akce hw volání procedury (ISR) A1M14RPO Řízení elektrických pohonů 01 38
Prostředky pro organizaci hw volání procedury (interrupt) A1M14RPO Řízení elektrických pohonů 01 39
Sdílené prostředky (sdílí je ISR a přerušený program) A1M14RPO Řízení elektrických pohonů 01 40
Žádost o obsluhu přerušení (hw volání procedury) A1M14RPO Řízení elektrických pohonů 01 41
Žádost o obsluhu aktivní - 1 A1M14RPO Řízení elektrických pohonů 01 42
Dokončení aktivní instrukce - 2 A1M14RPO Řízení elektrických pohonů 01 43
Uložení (Push) návratové adresy do zásobníku (Stack) - 3 A1M14RPO Řízení elektrických pohonů 01 44
Vyzvednutí adresy obslužného programu (ISR) - 4 A1M14RPO Řízení elektrických pohonů 01 45
Spuštění obslužné procedury přerušení (ISR) - 5 A1M14RPO Řízení elektrických pohonů 01 46
Uložení kontextu do zásobníku - 6 A1M14RPO Řízení elektrických pohonů 01 47
Provedení těla obslužné procedury (ISR) - 7 A1M14RPO Řízení elektrických pohonů 01 48
Obnovení kontextu (ze zásobníku) - 8 A1M14RPO Řízení elektrických pohonů 01 49
Vyzvednutí návratové adresy (ze zásobníku) - 9 A1M14RPO Řízení elektrických pohonů 01 50
Obnovení běhu přerušeného programu - 10 A1M14RPO Řízení elektrických pohonů 01 51
Princip programu řízeného událostmi - souhrn Obsluha žádosti o přerušení souhrn akcí Dokonči právě prováděnou instrukci (instrukce je nepřerušitelná) Ulož (Push) návratovou adresu do zásobníku (tj. adresu, která je právě v čítači instrukcí (PC)) Vyzvedni adresu ISR (tj. podprogramu obsluhy přerušení) z tabulky vektorů přerušení Spusť ISR Vynuluj Interrupt Request Flag (závisí na typu procesoru) Ulož kontext do zásobníku Proveď tělo ISR (vlastní obsluhu žádosti o přerušení) Obnov původní kontext (vyzvedni ho ze zásobníku) Proveď instrukci Return Ta vyzvedne Návratovou adresu ze zásobníku do čítače instrukcí (PC) Pokračuj v programu na pozadí tj. čti instrukci z adresy uložené v PC A1M14RPO Řízení elektrických pohonů 01 52
Event Driven Program Principle - summary Interrupt request service summary Finish current background instruction (instruction is uninterruptable) Push Return Address to stack (i.e. address in program counter) Get ISR Address from Interrupt Vector Table Start ISR routine Clear Interrupt Request Flag (depends on processor type) Save context to stack Run ISR body Restore context from stack Execute Return instruction Pop Return Address from stack (Pop it to program counter) Continue background program read next instruction from address in PC A1M14RPO Řízení elektrických pohonů 01 53
Typy systémů přerušení Jednohladinové neprioritní Single level - non-priority interrupt system Vícehladinové prioritní Nemaskovatelné Softwareové Trap Maskovatelné Multi level priority interrupt system Nonmaskable Trap Maskable S pevnou hw prioritou S dynamicky volitelnou prioritou Fixed priority system Flexible priority system A1M14RPO Řízení elektrických pohonů 01 54
Řadič přerušení princip (Interrupt Controller) TRAP DECODED INTRQ NMI Register (Active Interrupt) IR0 IR1 Event Detector Priority Encoder Comparator IR2 IF0 IE0 IF1 IE1 Driver IF2 GIE IE1 Control Interrupt Enable Interrupt Flag Žádost o přerušeni Povolení maskovatelných žádostí A1M14RPO Řízení elektrických pohonů 01 55
Programátorský model počítače Kontrolní seznam 13 Check list No.13 Programátorský model ALU aritmetická jednotka PC čítač instrukcí SP ukazatel zásobníku PSW stavové slovo procesoru Střadač Adresový prostor univ. registrů Adr. prostor paměti programu Adresový prostor paměti dat Adresový prostor zásobníku Adr. prostor vstupů/výstupů Umístění tabulky vekt.přerušení Programmer s model ALU arithmetic logic unit PC program counter SP stack pointer PSW processor státu word Accumulator Universal register addr. space Program memory addr. space Data memory addr. space Stack addr. space Input/output space Interrupt vector table space A1M14RPO Řízení elektrických pohonů 01 56
Programátorský model počítače A1M14RPO Řízení elektrických pohonů 01 57
PIC18F Family Modifikovaný Harvard A1M14RPO Řízení elektrických pohonů 01 58
PIC18F Family Modifikovaný Harvard Program Memory Program Counter Hardware Stack Instruction Register Data Memory I/O Ports Accumulator WREG ALU Memory Mapped Input/Output Internal Peripherals A1M14RPO Řízení elektrických pohonů 01 59
PIC18F Family Program Memory A1M14RPO Řízení elektrických pohonů 01 60
PIC18F Family Data Memory BSR BANK ADDRESS 000h DATA MEMORY 00h ALU 8 FSR0 4 BANK 0 05Fh 060h 5Fh 60h 8 8 FSR1 FSR2 12 12 12 BANK 1 BANK 14 0FFh 100h EFFh F00h FFh 00h FFh 00h GPR ACCESS BANK WREG STATUS 8 00h 5Fh 60h FFh REGISTER FILE ADDRESS BANKING BANK 15 F5Fh F60h FFFh WREG STATUS 8 5Fh 60h FFh SFR ACCUMULATOR FLAGS (PSW) SPECIAL FUNCTION REGISTERS MEMORY MAPPED INPUT/OUTPUT SPACE REMAPING A1M14RPO Řízení elektrických pohonů 01 61
PIC18F Family Interrupt System High Priority Enable Priority System On Low Priority Enable Interrupt Priority Interrupt Enable Interrupt Flag (Request) A1M14RPO Řízení elektrických pohonů 01 62
Struktura CPU versus operandy Kontrolní seznam 14 Check list No.14 Struktura CPU versus operandy Orientovaný na zásobník ALU, PSW (Příznakový reg) zásobník Střadačově orientovaný ALU, PSW (Příznakový reg) Paměť dat Registrově orientovaný ALU, PSW (Příznakový reg) univerzální registry (v CPU) Paměťově orientovaný ALU, PSW, paměť dat CPU systems versus operands Stack oriented ALU, PSW (Flags) stack Accumulator oriented ALU, PSW (Flags), Accumulator Data memory Register oriented ALU,PSW (Flags) Universal (scratchpad) registers Memory oriented ALU, PSW (Flags), data memory A1M14RPO Řízení elektrických pohonů 01 63
Struktura CPU versus operandy - 1 STACK TOS ALU FLAGS STATUS STACK ORIENTED CPU A1M14RPO Řízení elektrických pohonů 01 64
Struktura CPU versus operandy - 2 DATA MEMORY ALU FLAGS STATUS ACCUMULATOR ACCUMULATOR ORIENTED CPU A1M14RPO Řízení elektrických pohonů 01 65
Struktura CPU versus operandy - 3 REGISTERS (INSIDE CPU) ALU FLAGS STATUS REGISTER ORIENTED CPU A1M14RPO Řízení elektrických pohonů 01 66
Struktura CPU versus operandy - 4 DATA MEMORY ALU FLAGS STATUS MEMORY ORIENTED CPU A1M14RPO Řízení elektrických pohonů 01 67
ŘÍZENÍ ELEKTRICKÝCH POHONŮ Systémová struktura počítače Řízení běhu programu KONEC České vysoké učení technické Fakulta elektrotechnická A1M14RPO Řízení elektrických pohonů 01 68