1 / 73

GRADNIKI SISTEMOV PROCESNEGA VODENJA

GSPV. GRADNIKI SISTEMOV PROCESNEGA VODENJA. UNI- Elektrotehnika - Avtomatika. Procesna avtomatika - Inteligentni sistemi. 4. letnik (7. semester). NAČTOVANJE MIKRORAČUNALNIKA. Razvoj strojne opreme. Razvoj programske opreme. analiza kompleksnosti problema

hera
Download Presentation

GRADNIKI SISTEMOV PROCESNEGA VODENJA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GSPV GRADNIKI SISTEMOV PROCESNEGA VODENJA UNI- Elektrotehnika - Avtomatika Procesna avtomatika - Inteligentni sistemi 4. letnik (7. semester)

  2. NAČTOVANJE MIKRORAČUNALNIKA Razvoj strojne opreme Razvoj programske opreme • analiza kompleksnosti problema • izbira osnovnih parametrov (procesor, količina pomnilnika,…) • izbira komponent • načrtovanje vezja • električne lastnosti • mehanske lastnosti • zgradba prog. opreme • izbira OS in prog. jezika • krmilniki za periferijo • algoritmi in kodiranje

  3. ZGRADBA MIKRORAČUNALNIKA Podatkovno vodilo Naslovno vodilo Kontrolno vodilo CPU ROM RAM I/O

  4. Cena: 1$ - 1000$ Poraba energ. • Tehnologija: • NMOS • CMOS • 5mm - 0.15mm • Zgradba: • CISC • RISC • DSP • Napajalnanapetost: • 5 V • 3.3V • 2.5V • 1.8V Mikroprocesor (CPU) • Širina vodila: • 8 bitov • 16 bitov • 32 bitov • 64 bitov • Pakiranje (ohišje): • DIL • PGA ... • SO, TSOP, TQFP, BGA ...

  5. MIKROPROCESOR MC6800 • prvi Motorolin mikroprocesor (1974) • 8 bitno podatkovno vodilo • 16 bitno naslovno vodilo • 72 ukazov • 6 internih registrov • 7 načinov naslavljanja • frekvenca ure: 2 MHz

  6. OSNOVNE ENOTE MIKROPROCESORJA MC6800 Dekodirnik ukazov + nadzor Registri Vmesnik za krmiljenje vodil ALU

  7. MIKROPROCESOR MC6800 - Programski model 7 0 Akumulator A ACCA 7 0 Akumulator B ACCB 15 0 Indeksni register IX 15 0 Programski števec PC 15 0 Kazalec sklada SP 7 0 1 1 H I N Z V C Statusni register CCR Carry Overflow Zero Negative Interrupt Half Carry

  8. ZGRADBA MIKROPROCESORJA MC6800 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vmesnik za nalove (H) Vmesnik za nalove (L) Dekodirnik ukazov + nadzor Programski števec (H) Programski števec (L) F1 F2 RESET Kazalec sklada (H) Kazalec sklada (L) NMI HALT Indeksni register (H) Indeksni register (L) IRQ TSC DBE Statusni register BA Akumulator A VMA R/W ALU Akumulator B Ukazni register Podatkovni vmesnik D7 D6 D5 D4 D3 D2 D1 D0

  9. PRIKLJUČKI MIKROPROCESORJA MC6800 Podatkovno vodilo • D0 - D7 Data Bus • A0 - A15 Address Bus • DBE Data Bus Enable • BA Bus Available • R/W Read / Write • RESET Reset • IRQ Interupt Request • NMI Non Maskable Interrupt • VMA Valid Memory Address • TSC Three-State Control • HALT Halt • F1 Clock Phase 1 • F2 Clock Phase 2 • VCC Supply Voltage (+5V) • VSS Ground Naslovno vodilo Kontrolno vodilo Napajanje

  10. POMNILNIŠKI PROSTOR PROCESORJA Naslov Vsebina 0000 26 0001 38 0002 2A 0003 5C 0004 EF 0005 00 0006 3A 0007 16 0008 00 0009 00 000A 00 FFFE 46 FFFF AC

  11. POMNILNIŠKI PROSTOR PROCESORJA 0000 26 0001 38 I/O (256 bytov) 0002 2A 00FF 00 0100 00 Prosto 3FFF 3A 64KB 4000 16 4001 00 RAM (16KB) 7FFF 00 8000 00 8001 46 ROM (32KB) FFFF AC

  12. 1F46 1 2 96 3 96 4 IZVRŠEVANJE UKAZA LDAA - korak 1 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F46 0022 2A 0023 5C Akumulator A 0024 EF 0025 00 0026 3A Podatkovno vodilo Ukazni register 1F45 16 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 1F4A 23 $23

  13. 1F47 1 2 24 3 0024 4 IZVRŠEVANJE UKAZA LDAA - korak 2 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F46 0022 2A 0023 5C Akumulator A 0024 EF 0025 00 0026 3A Podatkovno vodilo Ukazni register 1F45 16 96 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 1F4A 23 $23

  14. 1F48 5 0024 2 1 EF 4 EF 3 IZVRŠEVANJE UKAZA LDAA - korak 3 CPU RAM Naslovno vodilo Programski števec 0020 26 1F46 0021 38 0022 2A 0023 5C Akumulator A 0024 EF 0025 00 0026 3A Ukazni register Podatkovno vodilo 1F45 16 96 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 0024 1F4A 23 $23

  15. 1F48 1 2 1F49 F0 4C 5 4 6 4C 3 IZVRŠEVANJE UKAZA INCA - korak 1 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F48 0022 2A 0023 5C Akumulator A 0024 EF EF 0025 00 0026 3A Ukazni register Podatkovno vodilo 1F45 16 96 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 0024 1F4A 23 $23

  16. 1F49 1 2 97 4 97 3 IZVRŠEVANJE UKAZA STAA - korak 1 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F49 0022 2A 0023 5C Akumulator A 0024 EF F0 0025 00 0026 3A Ukazni register Podatkovno vodilo 1F45 16 4C 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 0024 1F4A 21 $21

  17. 1F4A 1 2 0021 4 21 3 IZVRŠEVANJE UKAZA STAA - korak 2 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F49 0022 2A 0023 5C Akumulator A 0024 EF F0 0025 00 0026 3A Ukazni register Podatkovno vodilo 1F45 16 97 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 0024 1F4A 21 $21

  18. F0 0021 3 1 1F4B 4 F0 2 IZVRŠEVANJE UKAZA STAA - korak 3 CPU RAM Naslovno vodilo Programski števec 0020 26 0021 38 1F49 0022 2A 0023 5C Akumulator A 0024 EF F0 0025 00 0026 3A Podatkovno vodilo Ukazni register 1F45 16 97 1F46 96 LDAA 1F47 24 $24 1F48 4C INCA Naslovni register 1F49 97 STAA 0021 1F4A 21 $21

  19. NAČINI NASLAVLJANJA UKAZ = KODA UKAZA + OPERAND Kje se nahaja operand ? • V prvih 256 bytih pomnilnika Direktno (Direct) • V pomnilniku Razširjeno (Extended) • Takoj za kodo ukaza Takojšnje (Immediate) • Operanda ni ali je v akumulatorju Vsebovano (Inherent) • Naslov operanda = PC +/- odmik, • ki je za kodo ukaza Relativno (Relative) • Nalov operanda = X + odmik, • ki je za kodo ukaza Indeksno (Indexed)

  20. Načini naslavljanja: Direktno naslavljanje n Ukaz n+1 Z = Naslov operanda n+2 Naslednji ukaz Z K = Operand ali Z KH = Operand Z+1 KL = Operand Primeri: LDAA $F0 - Preberi v akumulator A vrednost, ki je shranjena na naslovu $F0. ADDA $17 - Prištej akumulatorju A vrednost, ki je shranjena na naslovu $17.

  21. Načini naslavljanja: Razširjeno naslavljanje n Ukaz n+1 ZH= Naslov operanda n+2 ZL= Naslov operanda n+3 Naslednji ukaz Z K = Operand ali Z KH = Operand Z+1 KL = Operand Primeri: LDAA $7AF0 - Preberi v akumulator A vrednost, ki je shranjena na naslovu $7AF0. LDX $1700 - Naloži v indeksni register vrednost, ki je shranjena na naslovih $1700 in $1701.

  22. Načini naslavljanja: Takojšnje naslavljanje n Ukaz n+1 K = Operand n+2 Naslednji ukaz ali n Ukaz n+1 KH = Operand n+2 KL = Operand n+3 Naslednji ukaz Primeri: LDAA #$7A - Naloži v akumulator A vrednost $7A. LDX #$3701 - Naloži v indeksni register vrednost $3701.

  23. Načini naslavljanja: Vsebovano n Ukaz n+1 Naslednji ukaz Primeri: INCA - Zvečaj vrednost v akumulatorju A. CLC - Briši (postavi na 0) bit za prenos (carry). NOP - No operation

  24. Načini naslavljanja: Relativno Ukaz, ki vsebuje pogojni skok n +/- K = Dolžina skoka n+1 Naslednji ukaz, če pogoj ni izpolnjen n+2 Naslednji ukaz, če je pogoj izpolnjen N+2 +/- K Primeri: BCC $04 - Če je C(carry) bit = 0, preskoči štiri naslove, sicer nadaljuj. BNE $F0 - Če je Z(zero) bit = 0, skoči nazaj za 15 naslovov, sicer nadaljuj.

  25. Načini naslavljanja: Indeksno n Ukaz n+1 Z = Odmik n+2 Naslednji ukaz X+Z K = Operand ali X+Z KH = Operand X+Z+1 KL = Operand Primeri: LDAA 0,X - Preberi v akumulator A vrednost, ki je shranjena na naslovu, ki je shranjen v indeksnem registru (X). ADDA 5,X - Prištej akumulatorju A vrednost, ki je shranjena na naslovu, ki je enak vrednosti v indeksnem registru zvečani za 5.

  26. Nabor ukazov mikroprocesorja MC6800 Ukazi za delo z akumulatorji in pomnilnikom

  27. Ukazi za delo z akumulatorji in pomnilnikom

  28. 0 0 b7 b0 C C b7 b0 C b7 b0 b7 b0 C C b7 b0 Ukazi za delo z akumulatorji in pomnilnikom

  29. Ukazi za delo z akumulatorji in pomnilnikom

  30. Ukazi za delo z indeksnim registrom in kazalcem sklada

  31. Ukazi za delo s statusnim registrom

  32. Pogojne Razvejitve (relativno naslavljanje)

  33. Brezpogojni skoki in posebni ukazi

  34. 80xx 5 FFFE 3 2 80 1 4 1 RESET mikroprocesorja MC6800 - korak 1 CPU RAM Naslovno vodilo Programski števec 8020 26 xxxx 8021 01 8022 96 LDAA 8023 24 $24 Akumulator A 8024 4C INCA xx 8025 97 STAA 8026 23 $23 Podatkovno vodilo FFFA 16 FFFB A8 FFFC 00 Statusni register FFFD 00 FFFE 80 1 1 x x x x x x FFFF 22 1 1 H I N Z V C

  35. 8022 4 FFFF 2 1 22 3 RESET mikroprocesorja MC6800 - korak 2 CPU RAM Naslovno vodilo Programski števec 8020 26 80xx 8021 01 8022 96 LDAA 8023 24 $24 Akumulator A 8024 4C INCA xx 8025 97 STAA 8026 23 $23 Podatkovno vodilo FFFA 16 FFFB A8 FFFC 00 Statusni register FFFD 00 FFFE 80 1 1 x 1 x x x x FFFF 22 1 1 H I N Z V C

  36. Operacije s skladom • shranjevanje podatkov: PSHA, PSHB • jemanje podatkov: PULA, PULB • skok na podprogram: BRS, JSR • vrnitev iz podprograma: RTS • prekinitev: SWI, IRQ, NMI • vrnitev iz prekinitve: RTI • operacije s kazalcem sklada: LDS, STS, INS, DES

  37. Sklad - shranjevanje podatkov (PSHA, PSHB) Pred izvršitvijo: Po izvršitvi: MPU MPU ACCA k ACCA k SP m SP m - 1 PC n PC n + 1 m - 2 m - 2 m - 1 SP  m - 1 SP  m m k m + 1 7F m + 1 7F m + 2 63 m + 2 63 m + 3 FD m + 3 FD PC  n PSHA n PSHA n + 1 Nasl. Inš. PC  n + 1 Nasl. Inš.

  38. Sklad - jemanje podatkov (PULA, PULB) Pred izvršitvijo: Po izvršitvi: MPU MPU ACCA ACCA k SP m - 1 SP m PC n PC n + 1 m - 2 m - 2 SP  m - 1 m - 1 m k SP  m m + 1 7F m + 1 7F m + 2 63 m + 2 63 m + 3 FD m + 3 FD PC  n PULA n PSHA n + 1 Nasl. Inš. PC  n + 1 Nasl. Inš.

  39. Skok na podprogram (JSR) MPU MPU X X SP m SP m - 2 PC n PC S +3 m - 2 SP  m - 2 m - 1 m - 1 (n + 3)H SP  m m (n + 3)L m + 1 7F m + 1 7F m + 2 63 m + 2 63 PC  n JSR n JSR n + 1 SH n + 1 SH n + 2 SL n + 2 SL n + 3 Nasl. Inš. n + 3 Nasl. Inš. S Sub. PC  S Sub. S + 1 S + 1

  40. Skok na podprogram (JSR x) MPU MPU X x X x SP m SP m - 2 PC n PC x + k +2 m - 2 SP  m - 2 m - 1 m - 1 (n + 2)H SP  m +x m (n + 2)L m + 1 7F m + 1 7F m + 2 63 m + 2 63 PC  n JSR, x n JSR n + 1 k n + 1 k n + 2 Nasl. Inš. n + 2 Nasl. Inš. x + k Sub. PC  x + k Sub. x + k + 1 x + k + 1

  41. Relativni skok na podprogram (BSR) MPU MPU X X SP m SP m - 2 PC n PC n+2+k +2 m - 2 SP  m - 2 m - 1 m - 1 (n + 2)H SP  m +/- m (n + 2)L m + 1 7F m + 1 7F m + 2 63 m + 2 63 PC  n BSR n BSR n + 1 k n + 1 k n + 2 Nasl. Inš. n + 2 Nasl. Inš. n + 2 + k Sub. PC  n + 2 + k Sub. n + 3 + k n + 3 + k

  42. Vrnitev iz podprograma MPU MPU X X SP m - 2 SP m PC Sn PC n + 2 SP  m - 2 m - 2 m - 1 (n + 2)H m - 1 m (n + 2)L SP  m m + 1 7F m + 1 7F m + 2 63 m + 2 63 n BSR n BSR n + 1 k n + 1 k n + 2 Nasl. Inš. PC  n + 2 Nasl. Inš. S(n-1) S(n-1) PC  Sn RTS Sn RTS

  43. Prekinitev (Interrupt) MPU MPU Vektor SP m SP m - 7 FFFC PH PC n PC P FFFD PL m - 7 SP  m - 7 m - 6 m - 6 CCR m - 5 m - 5 B m - 4 m - 4 A PC, X, A, B, CCR m - 3 m - 3 XH m - 2 m - 2 XL m - 1 m - 1 (n + 1)H SP  m m (n + 1)L PC  n Inšt. k n Inšt. k n + 1 Inšt. k +1 n + 1 Inšt. k +1 P Interr. PC  P Interr. P + 1 P + 1

  44. Vrnitev iz prekinitve MPU MPU SP m - 7 SP m PC Pn PC n + 1 SP  m - 7 CCR, B, A, X, PC m - 7 m - 6 CCR m - 6 m - 5 B m - 5 m - 4 A m - 4 m - 3 XH m - 3 m - 2 XL m - 2 m - 1 (n + 1)H m - 1 m (n + 1)L SP  m n Inšt. k n Inšt. k n + 1 Inšt. k +1 PC  n + 1 Inšt. k +1 P(n-1) P(n-1) PC  Pn RTI Pn RTI

  45. Prekinitveni vektorji FFF8 IRQ L Interrupt Request FFF9 IRQ L FFFA SWI L Software Interrupt FFFB SWI L FFFC NMI H Non Maskable Interrupt FFFD NMI L FFFE RESET H Reset FFFF RESET L

  46. Pisanje in prevajanje programov Zbirnik - Assembler • komentarji • ukazi procesorja • ukazi zbirnika • spremenljivke (labele) • konstante • aritmetični in logični izrazi * Primer programa, ki vrednosti, shranjene na * naslovih $800, $801 in $802, zveča za 10 * ORG$8000; zacetek programa na naslovu $8000 * LDAA $800; preberemo prvo število ADDA #10; prištejemo mu 10 STAA $800; shranimo vsoto LDAA $801; preberemo drugo število ADDA #10; prištejemo mu 10 STAA $801; shranimo vsoto LDAA $802; preberemo tretje število ADDA #10; prištejemo mu 10 STAA $802; shranimo vsoto *

  47. * Primer programa, ki vrednosti, shranjene na * naslovih $800, $801 in $802, zveča za 10 * RAMEQU$6000; naslov pomnilnika RAM ST1EQU$800; naslov prvega stevila ST2EQUST1+1; naslov drugega stevila ST3EQUST1+2; naslov trejega stevila KONSTEQU10; konstanta, ki jo prištevamo * ORGRAM ; začetek programa v RAM-u * LDAA ST1; preberemo prvo število ADDA #KONST; prištejemo mu 10 STAA ST1; shranimo vsoto LDAA ST2; preberemo drugo število ADDA #KONST; prištejemo mu 10 STAA ST2; shranimo vsoto LDAA ST3; preberemo tretje število ADDA #KONST; prištejemo mu 10 STAA ST3; shranimo vsoto * • komentarji • ukazi procesorja • ukazi zbirnika • spremenljivke (labele) • konstante • aritmetični in logični izrazi

  48. * Primer programa, ki vrednosti, shranjene na * naslovih $800, $801 in $802, zveča za 10 * RAMEQU$6000; naslov pomnilnika RAM ST1EQU$800; naslov prve vrednosti NEQU3; stevilo bytov KONSTEQU10; konstanta, ki jo prištevamo * ORGRAM ; začetek programa v RAM-u * LDX#ST1 ; naložimo naslov prve vrednosti v X LDAB#N ; naložimo število bytov v B ZANKA LDAA 0,X ; preberemo prvo število ADDA #KONST; prištejemo mu 10 STAA 0,X ; shranimo vsoto INX ; zvecamo X (naslednja vrednost) DECB ; zmanjsamo števec bytov BNEZANKA ; ce števec ni enak 0, nadaljujemo *

  49. * Primer programa, ki vrednosti, shranjene na * naslovih $800, $801 in $802, zveča za 10 * RAMEQU$6000; naslov pomnilnika RAM ST1EQU$800; naslov prve vrednosti KONSTEQU10; konstanta, ki jo prištevamo * ORGRAM ; začetek programa v RAM-u * PRIMERLDX#ST1 ; naložimo naslov prve vrednosti v X JSR ZVECAJ ; zvecamo prvo vrednost JSR ZVECAJ ; zvecamo drugo vrednost JSR ZVECAJ ; zvecamo tretjo vrednost * … nadanjevanje * * * Podprogram, ki zveča za KONST, spominsko lokacijo, * na katero kaže X * ZVECAJ LDAA 0,X ; preberemo vrednost na katero kaže X ADDA #KONST; prištejemo 10 STAA 0,X ; shranimo vsoto INX ; zvecamo X (naslednja vrednost) RTS *

  50. 0001 * Primer programa, ki vrednosti, shranjene na 0002 * naslovih $800, $801 in $802, zveča za 10 0003 * 0004 RAM EQU $6000 ; naslov pomnilnika RAM 0005 ST1 EQU $800 ; naslov prve vrednosti 0006 KONST EQU 10 ; konstanta, ki jo prištevamo 0007 * 00086000 ORG RAM ; začetek programa v RAM-u 0009 * 00106000CE 08 00 PRIMER LDX #ST1 ; naslov prve vrednosti  X 00116003BD 60 0C JSR ZVECAJ ; zvecamo prvo vrednost 00126006BD 60 0C JSR ZVECAJ ; zvecamo drugo vrednost 00136009BD 60 0C JSR ZVECAJ ; zvecamo tretjo vrednost 0014 * … nadaljevanje 0015 * 0016 * 0017 * Podprogram, ki zveča za KONST, spominsko lokacijo, 0018 * na katero kaže X 0019 * 0020600CA6 00 ZVECAJ LDAA 0,X ; preberemo vrednost na katero kaže X 0021600E8B 0A ADDA #KONST ; prištejemo 10 00226010A7 00 STAA 0,X ; shranimo vsoto 0023601208 INX ; zvecamo X (naslednja vrednost) 0024601339 RTS 0025 *

More Related