+ All Categories
Home > Documents > Systémová struktura počítače Instrukční soubor II Příklady...

Systémová struktura počítače Instrukční soubor II Příklady...

Date post: 21-Mar-2019
Category:
Upload: leliem
View: 217 times
Download: 0 times
Share this document with a friend
81
České vysoké učení technické Fakulta elektrotechnická Struktura a architektura počítačů Ver.1.30 Systémová struktura počítače Instrukční soubor II Příklady návrhu J. Zděnek / M. Chomát 2014
Transcript
Page 1: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

České vysoké učení technické Fakulta elektrotechnická

Struktura a architektura počítačů

Ver.1.30

Systémová struktura počítače

Instrukční soubor II

Příklady návrhu

J. Zděnek / M. Chomát 2014

Page 2: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 2

Assembler (Jazyk symbolických instrukcí)

• Assembler • Jazyk symbolických instrukcí (též Jazyk symbolických adres) • Nejbližší vyšší stupeň nad strojovým kódem • Používá symbolická jména instrukcí, proměnných, konstant, adres

paměti programu i dat • Umožňuje využít všechny vlastnosti daného typu počítače a jeho

instrukčního souboru • Nekontroluje téměř žádné nedovolené (nevhodné) kroky programátora

(rozdíl od vyšších programovacích jazyků – JAVA, C) • Používá se v časové kritických částech programů, nebo tam kde danou

operaci nelze naprogramovat ve vyšším jazyku • V řídicích aplikací je typická kombinace částí programu v assembleru

a částmi v jazyku C • Program v assembleru je nepřenosný na jinou platformu, je vázaný na

instrukční soubor určitého typu procesoru

Page 3: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 3

Direktivy assembleru

• Direktivy assembleru umožňují: • Řídit překlad • Označit začátek programu • Označit konec programu • Určit umístění programu v paměti programu • Určit umístění proměnných v paměti dat • Založit symbolická jména zvolených míst v programu (adres) • Založit symbolická jména proměnných • Zajistit inicializaci (nast. počáteční hodnoty) vybraných proměnných • Založit symbolická jména konstant a nastavit jejich hodnoty • Vkládat do programu konstanty v různých formátech (dec,hex,bin) • Nastavit konfigurační bity počítače • Vkládat (zatahovat) do programu další části programu ze souboru • Označit části programu (moduly) symbolickým jménem (Makro) a pod

timto jménem moduly v programu používat

Page 4: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 4

Příklad (Tlačítko, LED, přerušení, časovač)

• Zadání: V asembleru mikropočítače pic18F87j11 napište program, který testuje zda bylo zmáčknuto tlačítko S1. Při každém zmáčknutí se rozsvítí vždy jedna další LED dioda počínaje diodou připojenou na nejnižší bit portu. Po osmi zmáčknutí S1 bude svítit všech 8 LED diod a při dalším mačkání tlačítka zůstávají všechny diody rozsvícené.

• Tlačítko je připojena na bit RB0 portu B. V klidové poloze (nezmáčknuto) je stav tlačítka snímán jako logická '1', po zmáčknutí se snímá logická '0'.

• Osm světelných diod je připojeno na port D. Pokud se na příslušný bit portu D vysílá logická '0', dioda nesvítí. Logická '1' vyslaná na bit portu D diodu rozsvítí.

• Pro řešení použijte vzorkování stavu tlačítka s periodou přibližně 200ms. Vzorkování tlačítka zorganizujte s využitím jednohladinového systému přerušení a časovače TIMER0. Časovač naprogramujte do 16bitového módu, s hodinami odvozenými od hodin procesoru. Použijte vhodnou hodnotu předděličky u časovače TIMER0.

• Činnost programu dle zadání zapište do ISR (Interrupt Service Routine), která budu volaná vždy po žádosti o přerušení od časovače TIMER0 (žádost se vyvolá po přetečení časovače z maximální hodnoty (samé '1') do nuly. Na pozadí programu (background) bude pouze prázdná nekonečná smyčka.

Příklad návrhu

Page 5: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 5

pic18F Family Interrupt System (Priority Mode)

EventDetector TimerClk

xIF

xIE

xIP

yIF

yIE

yIP

HIGH PRIORITY

LOW PRIORITY

GIEL

GIEH

IPEN

INPUT

INTERRUPT RESOURCES

. . . . . . . .

PriorityEncoder

INTRQ

Interrupt Enable

Interrupt Flag (Request)

Interrupt Priority

Low Priority Enable

Priority System On

High Priority Enable

Page 6: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 6

pic18F Family Interrupt System (Non Priority Mode)

Interrupt Enable

Interrupt Flag (Request)

Non Priority Mode

All Interrupt Enable

EventDetector TimerClk

xIF

xIE

PEIE

yIF

yIE

GIE IPEN = 0

INPUT

INTERRUPT RESOURCES

. . . . . . . .

INTRQ

NON PRIORITY MODEIPEN = 0

Input Interrupt Enable

Page 7: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 7

Nastavení systému přerušení - RCON

Page 8: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 8

Nastavení systému přerušení - RCON

Page 9: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 9

Nastavení systému přerušení - INTCON

Page 10: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 10

Nastavení systému přerušení - INTCON

Page 11: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 11

Nastavení systému přerušení – INTCON2

Page 12: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 12

Nastavení systému přerušení – INTCON2

Page 13: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 13

Nepodmíněný skok, absolutní adresa

Page 14: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 14

Nepodmíněný skok, relativní adresa

Page 15: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 15

Nastavení bitu registru

Page 16: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 16

Nulování bitu registru

Page 17: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 17

Návrat z obsluhy přerušení (ISR)

Page 18: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 18

pic18F Family Program Memory

PROGRAM MEMORY

RESET VECTOR

INTERRUPTVECTORTABLE

HIGH PRIORITY HIGH PRIORITY INTERRUPT VECTOR

LOW PRIORITY INTERRUPT VECTOR

TABLE READ

LOW PRIORITY

RESET

CONFIG. WORDs

000000h

000008h

000018h

01FFFFh01FFF8h

1FFFFFh

Read as ‘0’

Top of Stack -

PROGRAM COUNTER

STACK POINTERPC

SP STACK1

31

21

21

TOS

IMPLEMENTED MEMORY (FLASH)

PROGRAM MEMORY ADDRESS SPACE

16

5

888

TOSU

018AF4h

F4h8Ah01hTOSH TOSL

TOS REGISTERS

Page 19: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 19

pic18F Family Interrupt System (Non Priority Mode)

Interrupt Enable

Interrupt Flag (Request)

Non Priority Mode

All Interrupt Enable

EventDetector TimerClk

xIF

xIE

PEIE

yIF

yIE

GIE IPEN = 0

INPUT

INTERRUPT RESOURCES

. . . . . . . .

INTRQ

NON PRIORITY MODEIPEN = 0

Input Interrupt Enable

Page 20: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 20

Nastavení systému přerušení - inicializace

ORG 0x00000 Reset_vector: ; Program start goto Start ORG 0x00008 Interrupt_vector: ; Interrupt vector table/ goto Timer0_int ; (one item here only) ORG 0x00100 Start: ; … bsf INTCON, TMR0IE ; Timer0 interrupt enable bsf INTCON, GIE ; Non priority mode (IPEN=0 by default) ; … Loop: ; Background loop nop ; do nothing bra Loop

DIREKTIVY

INSTRUKCE

PROMĚNNÉ

KONSTANTY

KOMENTÁŘ

Page 21: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 21

Obsluha žádosti o přerušení (Timer0 overflow)

; TIMER0 ISR (Interrupt Service Routine) ; Timer0_int: ; Save context, only example, background empty here/ ; (no context) ; … bcf INTCON, TMR0IF ; Clear intrerrupt flag (NECESSARY) ; … ; … ; … ; Restore context ; … retfie ; Return from interrupt

DIREKTIVY

INSTRUKCE

PROMĚNNÉ

KONSTANTY

KOMENTÁŘ

Page 22: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 22

Časovač Timer0 – konfigurace 16bitů

TIMER0 Overflow Interrupt Flag

TMR0IF

Page 23: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 23

Nastavení časovače Timer0, 16bitů

Page 24: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 24

Nastavení časovače Timer0, 16bitů

Page 25: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 25

Konstanta do střadače

Page 26: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 26

Střadač do registru

Page 27: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 27

Nastavení časovače Timer0, 16bitů

#define TIMER0_FOSC_PRESC8_16bit b'00000010' movlw TIMER0_FOSC_PRESC8_16bit movwf T0CON ; Configure Timer0 bsf T0CON, TMR0ON ; Timer0 ON

DIREKTIVY

INSTRUKCE

PROMĚNNÉ

KONSTANTY

KOMENTÁŘ

Page 28: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 28

Programovatelné vstupní nebo výstupní porty

TRIS Nastavení

směru 0 -> Output 1 -> Input

LAT nebo PORT

Výstupní registr

PORT Vstupní registr

Page 29: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 29

Nastavení vstupních a výstupních portů

Page 30: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 30

Nulování střadače nebo registru

Page 31: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 31

Rotace vlevo bez přenosu

Page 32: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 32

Test bitu a podmíněný skok

Page 33: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 33

Registr do registru

Page 34: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 34

Zapojení portu D a B (LED diody a tlačítka S1, S2)

PORTD

S1 PORTB bit RB0

Page 35: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 35

Programovatelné vstupní nebo výstupní porty

TRIS Nastavení

směru 0 -> Output 1 -> Input

LAT nebo PORT

Výstupní registr

PORT Vstupní registr

Page 36: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 36

Inicializace a obsluha portu D a B

; Initialization clrf reg ; reg = 0 clrf WREG ; WREG = 0 movwf TRISD ; PORTD -> all bits outputs, LEDs movwf PORTD ; PORTD = 00h -> LEDs off bsf TRISB, BIT0 ; PORTB.bit0 = input, push button S1 Timer0_int: ; ISR action ; ……… rlncf reg, 1 ; Rotate one bit left, destination reg btfss PORTB, RB0 ; ? Pushbutton S1 pressed bsf reg, BIT0 ; Yes, insert '1' to LSB movff reg, LATD ; Output reg to port D (or PORTD), LEDs ; ……… retfie ; Return from interrupt

DIREKTIVY

INSTRUKCE

PROMĚNNÉ

KONSTANTY

KOMENTÁŘ

Page 37: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 37

Souhrn – programování SFR pro tento program

Page 38: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 38

Příklad (Tlačítko, LED, přerušení, časovač)

• Zadání: V asembleru mikropočítače pic18F87j11 napište program, který testuje zda bylo zmáčknuto tlačítko S1. Při každém zmáčknutí se rozsvítí vždy jedna další LED dioda počínaje diodou připojenou na nejnižší bit portu. Po osmi zmáčknutí S1 bude svítit všech 8 LED diod a při dalším mačkání tlačítka zůstávají všechny diody rozsvícené.

• Tlačítko je připojena na bit RB0 portu B. V klidové poloze (nezmáčknuto) je stav tlačítka snímán jako logická '1', po zmáčknutí se snímá logická '0'.

• Osm světelných diod je připojeno na port D. Pokud se na příslušný bit portu D vysílá logická '0', dioda nesvítí. Logická '1' vyslaná na bit portu D diodu rozsvítí.

• Pro řešení použijte vzorkování stavu tlačítka s periodou přibližně 200ms. Vzorkování tlačítka zorganizujte s využitím jednohladinového systému přerušení a časovače TIMER0. Časovač naprogramujte do 16bitového módu, s hodinami odvozenými od hodin procesoru. Použijte vhodnou hodnotu předděličky u časovače TIMER0.

• Činnost programu dle zadání zapište do ISR (Interrupt Service Routine), která budu volaná vždy po žádosti o přerušení od časovače TIMER0 (žádost se vyvolá po přetečení časovače z maximální hodnoty (samé '1') do nuly. Na pozadí programu (background) bude pouze prázdná nekonečná smyčka.

Souhrn informací k řešení příkladu

Page 39: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 39

Sdílené prostředky (sdílí je procedury) Souhrn informací k řešení příkladu

Page 40: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 40

Dynamické přemapování a přímá adresa

DATA MEMORY000h

8

SPECIAL FUNCTIONREGISTERSMEMORY MAPPEDINPUT/OUTPUT SPACE

0FFh100h

EFFhF00h

FFFh

F5FhF60h

05Fh060h

00h

FFh

60h

5Fh

5Fh

FFh

00hFFh

60h

00h

SFR

WREG

STATUS

BANK 0

BANK 1 …

BANK 14

BANK 15

8

WREG

STATUS

GPRACCESS BANK

00h

5Fh60h

FFh

DISABLED(HIDDEN)

REMAPPING & SHORT DIRECT ADDRESS

REMAPPING

Souhrn informací k řešení příkladu

Page 41: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 41

pic18F Family Program Memory

PROGRAM MEMORY

RESET VECTOR

INTERRUPTVECTORTABLE

HIGH PRIORITY HIGH PRIORITY INTERRUPT VECTOR

LOW PRIORITY INTERRUPT VECTOR

TABLE READ

LOW PRIORITY

RESET

CONFIG. WORDs

000000h

000008h

000018h

01FFFFh01FFF8h

1FFFFFh

Read as ‘0’

Top of Stack -

PROGRAM COUNTER

STACK POINTERPC

SP STACK1

31

21

21

TOS

IMPLEMENTED MEMORY (FLASH)

PROGRAM MEMORY ADDRESS SPACE

16

5

888

TOSU

018AF4h

F4h8Ah01hTOSH TOSL

TOS REGISTERS

Souhrn informací k řešení příkladu

Page 42: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 42

pic18F Family Interrupt System (Non Priority Mode)

Interrupt Enable

Interrupt Flag (Request)

Non Priority Mode

All Interrupt Enable

EventDetector TimerClk

xIF

xIE

PEIE

yIF

yIE

GIE IPEN = 0

INPUT

INTERRUPT RESOURCES

. . . . . . . .

INTRQ

NON PRIORITY MODEIPEN = 0

Input Interrupt Enable

Souhrn informací k řešení příkladu

Page 43: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 43

Časovač Timer0 – konfigurace 16bitů

TIMER0 Overflow Interrupt Flag

TMR0IF

Souhrn informací k řešení příkladu

Page 44: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 44

Zapojení portu D a B (LED diody a tlačítka S1, S2)

PORTD

S1 PORTB bit RB0

Souhrn informací k řešení příkladu

Page 45: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 45

Programovatelné vstupní nebo výstupní porty

TRIS Nastavení

směru 0 -> Output 1 -> Input

LAT nebo PORT

Výstupní registr

PORT Vstupní registr

Souhrn informací k řešení příkladu

Page 46: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 46

Celý program (Timer0 overflow interrupt) - 1

; Press Explorer pic18 S1 pushbutton -> switch on next led on port D #include P18F87J11.inc CONFIG FOSC = HS CONFIG WDTEN = OFF CONFIG XINST = OFF #define TIMER0_FOSC_PRESC8_16bit b'00000010' #define BIT0 0 #define F 1 UDATA_ACS wreg_tmp: res 1 ; Program variables status_tmp: res 1 bsr_tmp: res 1 reg: res 1

ORG 0x00000 Reset_vector: ; Program start goto Start ORG 0x00008 Interrupt_vector: ; Interrupt vectro table (one item here) goto Timer0_int

DIREKTIVY

INSTRUKCE

PROMĚNNÉ

KONSTANTY

KOMENTÁŘ

Page 47: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 47

Celý program (Timer0 overflow interrupt) - 2

ORG 0x00100 Start: clrf reg ; reg = 0 clrf WREG ; WREG = 0 movwf TRISD ; PORTD -> all bits outputs, LEDs movwf PORTD ; PORTD = 00h, LEDs off bsf TRISB, BIT0 ; PORTB.bit0 = input, push button S1 movlw TIMER0_FOSC_PRESC8_16bit movwf T0CON ; Configure Timer0 bsf T0CON, TMR0ON ; Timer0 ON ; bsf INTCON, TMR0IE ; Timer0 interrupt enable bsf INTCON,GIE ; Non priority mode ; (IPEN = 0 by default) Loop: nop ; Do nothing, background loop bra Loop

Page 48: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 48

Celý program (Timer0 overflow interrupt) - 3

; === Timer0 overflow ISR (Interrupt Service Routine) === Timer0_int: movff STATUS, status_tmp ; Save context, only example movff WREG, wreg_tmp ; background empty here movff BSR, bsr_tmp ; (no context save necessary) bcf INTCON, TMR0IF ; Clear intrerrupt flag (IMPORTANT) rlncf reg, F ; Rotate one bit left btfss PORTB, RB0 ; ? Pushbutton S1 pressed bsf reg, BIT0 ; Yes, insert '1' to lsb movff reg, LATD ; Output reg to port D (or PORTD), LEDs movff bsr_tmp, BSR ; Restore context movff wreg_tmp, WREG movff status_tmp, STATUS retfie ; Return from ISR, reenable interrupt

END

Page 49: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 49

Detektor posloupnosti bitů ‘110’ (FSA typu Moore)

Navrhněte synchronní konečný automat (FSA – Finite State Automaton), který v proudu vstupních bitů detekuje posloupnost ‘110’. Detekci každé takové posloupnosti automat indikuje na výstupu blikáním LED diody. V ostatních stavech automatu LED dioda svítí nepřerušovaně. Náběžná hrana x1 indikuje na vstupu ‘1’, náběžná hrana x0 pak ‘0’. Automat realizujte programovými prostředky a využitím hardwareové podpory. Použijte jednohladinový systém přerušení a časovač. Vstupy x1 a x0 se zadávají tlačítky s mechanickým kontaktem a odskoky při změně hodnoty. Program automatu musí odskoky filtrovat, sestavte a použijte filtrační algoritmus („debounce circuit“).

(Moore)

FSASi

I (Inputs)O (Outputs)y

clk

x1x0

Příklad návrhu

Page 50: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 50

Detektor posloupnosti bitů ‘110’ (FSA typu Moore)

(Moore)

FSASi

I (Inputs)O (Outputs)y

clk

x1x0

x1

clk

y

1 1 1 1 00 0x0

LEDsvítí bliká

Příklad návrhu

Page 51: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 51

Detektor posloupnosti bitů ‘110’ (FSA typu Moore)

D Q

Stavový registr Logika výstupůBudicí funkce

LKO1 LKO2

C

clk

0

I

Co máme navrhnout?

Příklad návrhu

Page 52: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 52

Detektor posloupnosti bitů ‘110’ (FSA typu Moore)

Si I0 I1

S0 S0 S1

S1 S0 S2

S2 S3 S2

S3 S0 S1

S0

S1

S2

S3

I0

I1

01

I0

00

00

00

I1

I1

I1

I0

I0

Si Oi

S0 O0

S1 O0

S2 O0

S3 O1

Stavový diagram

Tabulka přechodů Tabulka výstupů

I – Vstupy (Inputs)

O – Výstupy (Outputs)

Si – i-tý stav

Příklad návrhu

Page 53: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 53

Dekompozice problému - 1

START

INITIALIZATION

BACKGROUNDDO NOTHING

ISR

RET

X1, X2 INPUTDEBOUNCE

FSA STATELOGIC

FSA OUTPUTLOGIC

TIMER

IF

TCLK

TIME6ms

Příklad návrhu

Page 54: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 54

Dekompozice problému - 2

DEBOUNCE ALGORITHM PRINCIPLE

101xxxxx RAW INPUT

BOUNCE IN ‘1’SHIFT LEFT

AND

SAMPLE MASK 11100000

11100000

XOR

‘1’s MASK

? = 0

CLEAR ‘1’

?

(i.e. LAST VALUE WAS ‘0’)

YES, INPUT IS ‘1’

AND

11100000

00000000

XOR

? = 0

CLEAR ‘0’

YES, INPUT IS ‘0’

‘0’s MASK

Příklad návrhu

Page 55: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 55

Dekompozice problému - 3

FSA STATE LOGIC

RET

STATE 0

SWITCH

STATE 1 STATE 2 STATE 3

S0

S1

S2

S3

I0

I1

01

I0

00

00

00

I1

I1

I1

I0

I0

Příklad návrhu

Page 56: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 56

Dekompozice problému - 4

FSA OUTPUT LOGIC

RET

TLED

SW TIMER

? ‘110’

LED TOGGLE(300ms)LED ON

- +

- +

Příklad návrhu

Page 57: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 57

Detektor ‘110’ – Hlavička programu

; File: BSD3_110.asm ; Date: 04.04.2010 ; Version: 1.00 ; HW: Explorer pic18F87J11 ; IDE: MPLAB 7.50 ; Author: J.Z.; Institute: CTU in Prague, EEF Dept.13114 ; Function: Bitstream '110' detector, Moore type FSA ; Pushbutton S1 = input '1', pushbutton S2 = input '0' ; Program detects leading edge of S1, S2 pushbuttons ; FSA outputs: ; LED1,0 = FSA state_register ; LED7 = ON - no '110' bitstream detected ; LED7 = TOGGLE (approx 300 ms) - '110' bitstream detected ; Note: Pushbuttons S1, S2 are debounced (3 conscutive equal bits required) ; to be correct value detected ; Debounce S1, S2 pushbuttons routines detect leading edge only

Příklad návrhu

Page 58: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 58

Detektor ‘110’ – Konfigurace a konstanty

#define DBG_MODE ; Conditional translation (simulator dbg)

#include P18F87J11.inc CONFIG FOSC=HS CONFIG WDTEN=OFF CONFIG XINST=OFF

#define F 1 #define BIT0 0 #define TIMER0_FOSC_PRESC8_16bit b'00000010' #define TIMER0_FOSC_PRESC64_8bit b'01000101‘ ; 6,6 ms, FOSC = 10 MHz

Příklad návrhu

Page 59: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 59

Detektor ‘110’ – Proměnné a konstanty

UDATA_ACS ; Program variables ; Save context registers wreg_tmp: res 1 status_tmp: res 1 bsr_tmp: res 1 reg: res 1 ; FSA Moore variables and constants #define STATE_0 0 #define STATE_1 1 #define STATE_2 2 #define STATE_3 3 #define FSA_INPUT_BIT_VALUE 0 #define FSA_OUTPUT_LED_ON_TIME 45 ; t = 6.6 ms * 45 = 300 ms #define FSA_OUTPUT_LED_OFF_TIME 25 ; 170 ms

Příklad návrhu

Page 60: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 60

Detektor ‘110’ – Proměnné

state_register res 1 next_state res 1 fsa_input res 1 fsa_output res 1 fsa_output_timer res 1

; Pushbutton S1, S2 debounce and leading edge detection variables portb_dbg: res 1 porta_dbg: res 1 pb_s1_debounce: res 1 pb_s1_status: res 1 pb_s2_debounce: res 1 pb_s2_status: res 1

Příklad návrhu

Page 61: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 61

Detektor ‘110’ – Konstanty (vstup FSA)

; Pushbutton S1, S2 debounce and leading edge detection constants #define PB_ON 0 ; Pb Sx on status bit position #define PB_OFF 1 ; Pb Sx off status bit position #define DEBOUNCE_MASK b'00000111' ; 3 equal bits required #define PB_xTIMES_ON b'00000111' #define PB_xTIMES_OFF b'00000000'

Příklad návrhu

Page 62: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 62

Detektor ‘110’ – Začátek programu a tab.vektorů přerušení

code ORG 0x00000 Reset_vector: ; Program start goto Start ORG 0x00008 Interrupt_vector: ; Interrupt vector table (one item here) goto Timer0_int

Příklad návrhu

Page 63: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 63

Detektor ‘110’ – Inicializace

ORG 0x00050 Start: ; Background Start clrf reg ; reg = 0 clrf WREG ; WREG = 0 movwf TRISD ; PORTD -> all bits outputs movwf PORTD ; PORTD = 00h bsf TRISB, BIT0 ; PORTB.bit0 = input, push button S1 bsf TRISA, RA5 bsf WDTCON, ADSHR bsf ANCON0, PCFG4 ; RA5 - digital input bcf WDTCON, ADSHR call Pushbutton_s1_init ; Initialize S1 debounce routine call Pushbutton_s2_init ; Initialize S2 debounce routine call Bitstream_detector_init call Bitstream_detector_output_init

Příklad návrhu

Page 64: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 64

Detektor ‘110’ – Inicializace a pozadí (prázdné)

movlw TIMER0_FOSC_PRESC64_8bit movwf T0CON ; Configure Timer0 bsf T0CON, TMR0ON ; Timer0 ON ; bsf INTCON, TMR0IE ; Timer0 interrupt enable bsf INTCON, GIE ; Non priority mode (IPEN = 0 by default) Loop: nop ; Do nothing, background bra Loop ; ; Background END

Příklad návrhu

Page 65: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 65

Detektor ‘110’ – Inicializace (vstupní filtr tlačítek S1, S2)

; Init debounce pushbutton S1 (RB0) Pushbutton_s1_init: clrf pb_s1_debounce clrf pb_s1_status return ; Pushbutton_s1_init END

; Init debounce pushbutton S2 (RA5) Pushbutton_s2_init: clrf pb_s2_debounce clrf pb_s2_status return ; Pushbutton_s1_init END

Příklad návrhu

Page 66: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 66

Detektor ‘110’ – Vstupní filtr tlačítka S1

Pushbutton_s1: ; Debounce pushbutton S1 (RB0) movlw DEBOUNCE_MASK andwf pb_s1_debounce, F rlncf pb_s1_debounce, F ; Rotate one bit left #ifdef DBG_MODE btfss portb_dbg, RB0 ; dbg: ? Push button S1 pressed (0 -> on) #else btfss PORTB,RB0 ; ? Push button S1 pressed (0 -> on) #endif Pushbutton_s1_read_as_on: bsf pb_s1_debounce,BIT0 ; Yes, insert '1' to LSB Pb_s1_test_off: movf pb_s1_debounce, W andlw DEBOUNCE_MASK xorlw PB_xTIMES_OFF bnz Pb_s1_test_on

Příklad návrhu

Page 67: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 67

Detektor ‘110’ – Vstupní filtr tlačítka S1

Pb_s1_set_off: ; Ok, S1 debounced, read off bcf pb_s1_status, PB_ON ; Clear pushbutton S1 on bsf pb_s1_status, PB_OFF ; Set pushbutton S1 off bra Pb_s1_exit Pb_s1_test_on: movf pb_s1_debounce, W andlw DEBOUNCE_MASK xorlw PB_xTIMES_ON bnz Pb_s1_exit ; S1 bounces yet Pb_s1_detect_leading_edge: btfss pb_s1_status, PB_OFF ; Detect leading edge bra Pb_s1_exit Pb_s1_set_pb_on: bcf pb_s1_status, PB_OFF bsf pb_s1_status, PB_ON ; Set pushbutton S1 on Pb_s1_exit: return ; Pushbutton_s1 END

Příklad návrhu

Page 68: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 68

Detektor ‘110’ – Vstupní filtr tlačítka S2

Pushbutton_s2: ; Debounce pushbutton S2 (RA5) movlw DEBOUNCE_MASK andwf pb_s2_debounce, F rlncf pb_s2_debounce, F ; Rotate one bit left #ifdef DBG_MODE btfss porta_dbg, RA0 ; dbg: ? Push button S2 pressed (0->on) #else btfss PORTA, RA5 ; ? Push button S1 pressed (0->on) #endif Pushbutton_s2_read_as_on: bsf pb_s2_debounce, BIT0 ; Yes, insert '1' to LSB Pb_s2_test_off: movf pb_s2_debounce, W andlw DEBOUNCE_MASK xorlw PB_xTIMES_OFF bnz Pb_s2_test_on

Příklad návrhu

Page 69: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 69

Detektor ‘110’ – Vstupní filtr tlačítka S2

Pb_s2_set_off: ; Ok, S2 debounced, read off bcf pb_s2_status, PB_ON ; Clear pushbutton S2 on bsf pb_s2_status, PB_OFF ; Set pushbutton S2 off bra Pb_s2_exit Pb_s2_test_on: movf pb_s2_debounce, W andlw DEBOUNCE_MASK xorlw PB_xTIMES_ON bnz Pb_s2_exit ; S2 bounces yet Pb_s2_detect_leading_edge: btfss pb_s2_status, PB_OFF ; Detect leading edge bra Pb_s2_exit Pb_s2_set_pb_on: bcf pb_s2_status, PB_OFF bsf pb_s2_status, PB_ON ; Set pushbutton S2 on Pb_s2_exit: return ; Pushbutton_s2 END

Příklad návrhu

Page 70: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 70

Detektor ‘110’ – Inicializace (FSA)

; Bitstream detector initialization Bitstream_detector_init: movlw STATE_0 movwf state_register movwf next_state bcf fsa_input, FSA_INPUT_BIT_VALUE return ; Bitstream_detector_init END

Příklad návrhu

Page 71: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 71

Detektor ‘110’ – Vlastní konečný automat FSA

; Bitstream detector '110', FSA Moore Bitstream_detector: ; Test FSA input value ('0' or '1' or none) btfsc pb_s1_status, PB_ON ; S1 -> input '1' bra Bd_input_1 btfss pb_s2_status, PB_ON ; S2 -> input '0' bra Bd_exit ; No input bit Bd_input_0: bcf pb_s2_status, PB_ON ; Consume input '0' bcf fsa_input, FSA_INPUT_BIT_VALUE ; Input = '0' bra Bd_state_switch Bd_input_1: bcf pb_s1_status, PB_ON ; Consume input '1' bsf fsa_input, FSA_INPUT_BIT_VALUE ; Input = '1'

Příklad návrhu

Page 72: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 72

Detektor ‘110’ – Vlastní konečný automat FSA

; In Java …. switch (state_register){ } Bd_state_switch: movff state_register, next_state movf state_register, W sublw STATE_0 bz Bd_state_0 movf state_register, W sublw STATE_1 bz Bd_state_1 movf state_register, W sublw STATE_2 bz Bd_state_2 bra Bd_state_3 ; There is no more states ;

Příklad návrhu

Page 73: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 73

Detektor ‘110’ – Vlastní konečný automat FSA

Bd_state_0: ; FSA state diagram logic (See state diagram) btfss fsa_input, FSA_INPUT_BIT_VALUE ; ? '1' bra Bd_set_next_state ; No, no change movlw STATE_1 movwf next_state ; Goto STATE_1 bra Bd_set_next_state Bd_state_1: btfss fsa_input, FSA_INPUT_BIT_VALUE ; ? '1' bra Bd_state_1_1 movlw STATE_2 ; Yes movwf next_state bra Bd_set_next_state Bd_state_1_1: movlw STATE_0 ; No movwf next_state bra Bd_set_next_state

Příklad návrhu

Page 74: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 74

Detektor ‘110’ – Vlastní konečný automat FSA

Bd_state_2: btfsc fsa_input,FSA_INPUT_BIT_VALUE ; ? '0' bra Bd_set_next_state ; No, no change movlw STATE_3 ; Yes movwf next_state bra Bd_set_next_state Bd_state_3: btfss fsa_input,FSA_INPUT_BIT_VALUE ; ? '1' bra Bd_state_3_1 movlw STATE_1 ; Yes movwf next_state bra Bd_set_next_state Bd_state_3_1: movlw STATE_0 ; No movwf next_state bra Bd_set_next_state

Příklad návrhu

Page 75: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 75

Detektor ‘110’ – Vlastní konečný automat FSA

Bd_set_next_state: movff next_state, state_register Bd_exit: return ; Bitstream_detector END

Příklad návrhu

Page 76: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 76

Detektor ‘110’ – Inicializace (FSA – logika výstupů)

; Bitstream detector output initializtion ; Bitstream_detector_output_init: movlw FSA_OUTPUT_LED_ON_TIME movwf fsa_output_timer clrf fsa_output return ; ; Bitstream_detector END

Příklad návrhu

Page 77: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 77

Detektor ‘110’ – FSA - logika výstupů

; STATEs 0,1,2 -> LED7 ON ; STATE 3 -> sequence detected -> LED7 toggle, T= approx 400 ms Bitstream_detector_output: movlw STATE_3 cpfseq state_register bra Bdo_nothing_detected Bdo_bitstream_detected: btfsc LATD, RD7 ; Send state_register, no delay bsf WREG, RD7 movff WREG, LATD Bdo_testif_bit_toggle: decfsz fsa_output_timer bra Bdo_exit Bdo_toggle_led: btfss LATD, RD7 bra Bdo_set_ledtime_on

Příklad návrhu

Page 78: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 78

Detektor ‘110’ – FSA - logika výstupů

Bdo_set_ledtime_off: movlw FSA_OUTPUT_LED_OFF_TIME movwf fsa_output_timer bra Bdo_send_output Bdo_set_ledtime_on: movlw FSA_OUTPUT_LED_ON_TIME movwf fsa_output_timer Bdo_send_output: movff state_register, WREG Bdo_preset_led_on: bsf WREG, RD7 btfsc LATD, RD7

Příklad návrhu

Page 79: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 79

Detektor ‘110’ – FSA - logika výstupů

Bdo_set_led_off: bcf WREG, RD7 Bdo_send_new_output: movff WREG, LATD bra Bdo_exit ; Bdo_nothing_detected: movff state_register, WREG bsf WREG, RD7 movff WREG, LATD Bdo_exit: return ; ; Bitstream_detector END

Příklad návrhu

Page 80: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 80

Detektor ‘110’ - Timer0 ISR (Interrupt Service Routine)

Timer0_int: ; Timer0 ISR (Interrupt Service Routine), T = 6.6 ms ; Save context (example, background empty-no context) movff STATUS, status_tmp movff WREG, wreg_tmp movff BSR, bsr_tmp ; bcf INTCON, TMR0IF ; Clear intrerrupt flag ; call Pushbutton_s1 ; Test S1 on (input '1') call Pushbutton_s2 ; Test S2 on (input '0') call Bitstream_detector ; FSA state logic call Bitstream_detector_output ; FSA output logic ; movff bsr_tmp, BSR ; Restore context movff wreg_tmp, WREG movff status_tmp, STATUS retfie ; Return from interrupt, reenable interrupt END

Příklad návrhu

Page 81: Systémová struktura počítače Instrukční soubor II Příklady ...motor.feld.cvut.cz/sites/default/files/predmety/A7B14SAP/A7B14SAP... · • Označit části programu (moduly)

A7B14SAP Struktura a architektura počítačů 8 - Instrukční soubor II 81

České vysoké učení technické Fakulta elektrotechnická

Struktura a architektura počítačů

Systémová struktura počítače Instrukční soubor II

Příklady návrhu

KONEC


Recommended