SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Hasonló dokumentumok
Számítógép architektúrák

Computer Architectures

1. ábra: Perifériára való írás idődiagramja

Az interrupt Benesóczky Zoltán 2004

BELÉPTETŐ RENDSZER TERVEZÉSE

SZÁMÍTÓGÉPES RENDSZER TERVEZÉSE ESETTANULMÁNY: BELÉPTETŐ RENDSZER

BELÉPTETİ RENDSZER TERVEZÉSE

Perifériakezelési módszerek (Korrigált) Feltétel nélküli

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

A Számítógépek hardver elemei

A Számítógépek felépítése, mőködési módjai

ALKALMAZÁSOK ÉS ESETTANULMÁNYOK I-II.

BELÉPTETİ RENDSZER TERVEZÉSE - hardver

Architektúra, megszakítási rendszerek

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Digitális Technika 2 házi feladat Dudás Márton

Bevezetés az informatikába

Mintavételes szabályozás mikrovezérlő segítségével

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

A mikroprocesszor felépítése és működése

Adatok ábrázolása, adattípusok

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Assembly Utasítások, programok. Iványi Péter

Egyszerű számítógép működése

1. Az utasítás beolvasása a processzorba

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

Máté: Számítógép architektúrák

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Programozás alapjai. 10. előadás

Az vevő- és vezérlőáramkör programja

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

BELÉPTETŐ RENDSZER TERVEZÉSE

Számítógépek felépítése

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Nagy Gergely április 4.

Digitális technika II. - Ellenőrző feladatok

A számítógép alapfelépítése

Labor 2 Mikrovezérlők

Digitális technika (VIMIAA01) Laboratórium 9

Assembly. Iványi Péter

Bevezetés a számítástechnikába

Digitális technika (VIMIAA01) Laboratórium 9

2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés

The modular mitmót system. DPY kijelző kártya C API

A PicoBlaze vezérlő alkalmazása a LOGSYS kártyán

BME-IIT Digitális technika II. (VIIIA106) - Ellenőrző feladatok V1.3.

Informatika érettségi vizsga

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

SZORGALMI FELADAT. 17. Oktober

Jelfeldolgozás a közlekedésben

8. gyakorlat Pointerek, dinamikus memóriakezelés

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Máté: Számítógép architektúrák

Mutatók és mutató-aritmetika C-ben március 19.

Digitális technika VIMIAA hét

Mikrorendszerek tervezése

Sebury BC Önálló RF kártyás és kódos beléptető

Mikrorendszerek tervezése

Számítógép Architektúrák

assume CS:Code, DS:Data, SS:Stack Start mov dl, 100 mov dh, 100 push dx Rajz

YK-520L kültéri kódbillentyûzet és kártyaolvasó

Stack Vezérlés szerkezet Adat 2.

Adatelérés és memóriakezelés

Periféria kezelési módszerek. programozott megszakításos DMA-s - közvetlen szoftver ütemezés - lekérdezéses ütemezés

AC-MF1W. RFID kártyaolvasó és kódzár. Felhasználói leírás

7.hét: A sorrendi hálózatok elemei II.

Számítógép Architektúrák

10. gyakorlat Struktúrák, uniók, típusdefiníciók

A MiniRISC processzor

A 6502 mikroprocesszor

A 32 bites x86-os architektúra regiszterei

Számítógépek felépítése, alapfogalmak

Perifériák hozzáadása a rendszerhez

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

A Számítógépek hardver elemei

C programozási nyelv Pointerek, tömbök, pointer aritmetika

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

AC-MFS. RFID kártyaolvasó és kódzár. Felhasználói leírás

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Digitális rendszerek. Digitális logika szintje

A programozás alapjai

Az operációs rendszer szerkezete, szolgáltatásai

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Máté: Számítógép architektúrák

Járműfedélzeti rendszerek I. 5. előadás Dr. Bécsi Tamás

Digitális rendszerek. Utasításarchitektúra szintje

Hozzáférési-vezérlési billentyűzet PNI DK101

A számítógép alapfelépítése

DSP architektúrák dspic30f család memória kezelése

MSP430 programozás Energia környezetben. Az I/O portok kezelése

Programozott soros szinkron adatátvitel

Mérési utasítás Mikrokontroller programozás 2.sz. mérés

Digitális technika HF2 Elkészítési segédlet Gépi szintű programozás

Átírás:

SZÁMÍTÓGÉP ARCHITEKTÚRÁK Kártyás ajtónyitó tervezése Horváth Gábor BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu, belso@hit.bme.hu Budapest, 2018-02-19 Hálózati Rendszerek és Szolgáltatások Tanszék 1

TARTALOMJEGYZÉK A hardver megtervezése Alkatrészek Memória illesztése Perifériák illesztése A szoftver megtervezése Állapotgép modell Folyamatábrák Implementáció Hálózati Rendszerek és Szolgáltatások Tanszék 2

A hardver megtervezése Hálózati Rendszerek és Szolgáltatások Tanszék 3

ALKATRÉSZEK CPU D 0 -D 7 A 0 -A 15 MEMRD MEMWR IORD IOWR INT 8 bites CPU Adatbusz: 8 bit széles Címbusz: 16 bit széles Multiplexált memória és perifériabusz RISC utasításkészlet 3 operandusú utasítások Kezdőcím: 0000h Megszakításkezelő címe: 1000h Hálózati Rendszerek és Szolgáltatások Tanszék 4

ALKATRÉSZEK Memória ROM: utasításoknak és konstans adatoknak RAM: programváltozóknak és stack-nek Vegyünk 8kB ROM-ot és 8kB RAM-ot 8 bit adatsín 13 bit címsín CS CS 8 kb ROM 8 kb RAM A 0 -A 12 D 0 -D 7 RD A 0 -A 12 D 0 -D 7 RD WR Hálózati Rendszerek és Szolgáltatások Tanszék 5

ALKATRÉSZEK Kártyaolvasó OE: output enable Van egy 8 bit-es kimenete, D: Ha S/D = 0: 1-et ad, ha új kártyát látott Ha S/D = 1: A kártya kódját adja INT: megszakítást kér, ha új kártyát lát D 0 -D 7 S/D OE INT Hálózati Rendszerek és Szolgáltatások Tanszék 6

ALKATRÉSZEK Billentyűzet OE: output enable Van egy 8 bit-es kimenete, D: Ha S/D = 0: 1-et ad, ha gombnyomás történt Ha S/D = 1: A lenyomott gomb kódját adja INT: megszakítást kér, ha gombot nyomtak D 0 -D 7 S/D OE INT Hálózati Rendszerek és Szolgáltatások Tanszék 7

ALKATRÉSZEK Ajtónyitó CS: chip select WR/RD Ha WR/RD = 1: L visszaadja az ajtó állapotát (nyitott=1, zárt=0) Ha WR/RD = 0: kinyitja az ajtót. Az ajtó egy időzítő lejárja után automatikusan újra bezár. L WR/RD CS Hálózati Rendszerek és Szolgáltatások Tanszék 8

ALKATRÉSZEK LED lámpák Az ajtó aktuális nyitottsági állapotát jelzi (piros/zöld) További elemek Dekóder a memóriaillesztéshez Komparátorok hogy a perifériák figyelni tudják a címüket D flip-flop a LED-ek állapotának beállításához Hálózati Rendszerek és Szolgáltatások Tanszék 9

MEMÓRIAILLESZTÉS 8 kb ROM + 8 kb RAM Memóriatérkép: E000h-FFFFh C000h-DFFFh A000h-BFFFh 8000h-9FFFh 6000h-7FFFh 4000h-5FFFh 2000h-3FFFh 0000h-1FFFh RAM ROM A 15 A 0 0101 1111 1111 1111 0100 0000 0000 0000 0011 1111 1111 1111 0010 0000 0000 0000 0001 1111 1111 1111 0000 0000 0000 0000 A 13 -A 15 meghatározza, hogy melyik modulra vonatkozik a cím A 0 -A 12 a modulon belüli pozíció Hálózati Rendszerek és Szolgáltatások Tanszék 10

MEMÓRIAILLESZTÉS O 0 O 7 CS 8 kb ROM CS 8 kb RAM A 13 -A 15 A 0 -A 12 D 0 -D 7 RD A 0 -A 12 D 0 -D 7 RDWR A 0 -A 15 A 0 -A 12 CPU D 0 -D 7 MEMRD MEMWR IORD IOWR INT Hálózati Rendszerek és Szolgáltatások Tanszék 11

A KÁRTYAOLVASÓ ILLESZTÉSE D 0 -D 7 A 0 -A 15 CPU MEMRD MEMWR IORD IOWR INT CS A 0 A 1 -A 7 0 P Comp. Q 2Eh P=Q OE D 0 -D 7 S/D INT A billentyűzetet ugyanígy illesztjük, de azt a 3Eh báziscímre Hálózati Rendszerek és Szolgáltatások Tanszék 12

AZ AJTÓNYITÓ ILLESZTÉSE D 0 -D 7 A 0 -A 15 CPU MEMRD MEMWR IORD IOWR INT CS D 0 A 0 -A 7 L P Comp. P=Q CS Q WR/RD 4Ch Hálózati Rendszerek és Szolgáltatások Tanszék 13

A LED LÁMPÁK ILLESZTÉSE D 0 -D 7 A 0 -A 15 CPU MEMRD MEMWR IORD IOWR INT CS A 0 -A 7 D 0 P D Comp. P=Q D-FF Q Q Q 5Dh +5V Hálózati Rendszerek és Szolgáltatások Tanszék 14

A szoftver megtervezése Hálózati Rendszerek és Szolgáltatások Tanszék 15

ÁLLAPOTGÉP ST (állapot) = az eddig lenyomott helyes számjegyek száma ST=0 ST=1 ST=2 ST=3 Kártya /Szám tárolás Kártya /Szám tárolás 0 1 2 3 Jó számjegy Jó számjegy Jó számjegy Rossz számjegy Kártya/Szám tárolás Kártya /Szám tárolás Rossz számjegy Init Rossz számjegy ST=255 Kártya /Szám tárolás Rossz számjegy Jó számjegy / ajtónyitás Hálózati Rendszerek és Szolgáltatások Tanszék 16

ÁLLAPOTÁTMENETEK ST=0 ST=1 ST=2 ST=3 Kártya /Szám tárolás Kártya /Szám tárolás 0 1 2 3 Jó számjegy Jó számjegy Jó számjegy Rossz számjegy Kártya/Szám tárolás Kártya /Szám tárolás Rossz számjegy Kártyalehúzáskor: ST=0, és a kártyaszám tárolás egy lokális változóba Init Jó számjegy megadásakor: ST=ST+1, ha ST nem 255. Ha ST 4 lett, ajtónyitás Rossz számjegy megadásakor: ST=255 Rossz számjegy ST=255 Kártya /Szám tárolás Rossz számjegy Jó számjegy / ajtónyitás Hálózati Rendszerek és Szolgáltatások Tanszék 17

ADATSZERKEZETEK A kártyákhoz tartozó 4 jegyű kódokat tároló tömb A kártyaszám 8 bites 256 különböző kártyaszám lehet Tömböt használunk 256 elemmel, minden kártyaszámhoz egy elem tartozik Egy elem az adott kártyához tartozó 4 számjegyű kód Teljes memóriafoglaltság: 256*4=1024 bájt (=400h) A j. kártyához tartozó kód i. számjegyének címe: tömb kezdőcím + j*4 + i Lokális változók: ST: 1 bájtos egész szám CARDID: 1 bájtos egész szám Hálózati Rendszerek és Szolgáltatások Tanszék 18

ALGORITMUSOK A program két része: Főprogram Megszakításkezelő szubrutin A főprogram feladata: Figyeli az ajtó nyitottsági állapotát A LED-eket frissíti az aktuális helyzetnek megfelelően A megszakításkezelő feladata: Lekezeli a kártyalehúzás és gombnyomás eseményeket Kinyitja az ajtót, ha helyes a kód Hálózati Rendszerek és Szolgáltatások Tanszék 19

A FŐPROGRAM Inicializálás: Stack pointer beállítása Állapotváltozó inicializálása A megszakításkezelés engedélyezése Végtelen ciklus: Ajtó állapotának lekérdezése LED-ek beállítása Inicializálás R0 IO[ajtó áll.] IO[LED] R0 Hálózati Rendszerek és Szolgáltatások Tanszék 20

A MEGSZAKÍTÁSKEZELŐ Először kideríti, hogy ki kért megszakítást (polling!) Végrehajtja az állapotgép következő lépését Regiszterek stack-re mentése R0 IO[kártyaolvasó áll.] Megnézzük, hogy a kártyaolvasó kérte-e a megszakítást R0=0? nem igen Tároljuk a kártyaszámot, az állapotgépet ST=0-ba állítjuk, és a megszakítás végére ugrunk CARDID IO[kártyaolv. adat] ST 0 *vége A megszakítás a billentyűzettől érkezett Hálózati Rendszerek és Szolgáltatások Tanszék 21

MEGSZAKÍTÁSKEZELŐ A megszakítás a billentyűzettől érkezett Beolvassuk az új számjegyet R0 IO[billentyűzet adat] Biztos, hogy számjegyet várunk? A memóriából kiolvassuk a várt számjegyet igen ST=255? nem R1 tömb kezdőcím+cardid*4+st R2 MEM[R1] *vége *kód ellenőrzés Hálózati Rendszerek és Szolgáltatások Tanszék 22

A MEGSZAKÍTÁSKEZELŐ *kód ellenőrzés A várt számjegyet kaptuk? R0=R2? nem Ha igen, ST-t frissítjük. igen ST ST+1 ST 255 igen ST<4? *vége Ha mind a 4 szám jó, nyitjuk az ajtót, és alapállapot nem IO[ajtónyitó] 1 ST 255 *vége *vége Hálózati Rendszerek és Szolgáltatások Tanszék 23

A MEGSZAKÍTÁSKEZELŐ A megszakításkezelő vége: *vége Regiszterek visszaállítása További megszakítások engedélyezése Visszatérés Hálózati Rendszerek és Szolgáltatások Tanszék 24

ELHELYEZÉSI DÖNTÉSEK A RAM tartalma ST (1 bájtos egész változó) címe: 2000h (a RAM első bájtja) CARDID (1 bájtos egész változó címe): 2001h (a RAM második bájtja) A stack mutató kezdő értéke: 3FFFh (a RAM vége, hiszen visszafelé nő) A ROM tartalma A főprogram utasításai, kezdőcím: 0000h A megszakításkezelő utasításai, kezdőcím: 1000h A helyes kódokat tartalmazó tömb: Mérete: 400h Bárhová tehetjük, ahol van hely Legyen a kezdőcíme 500h A főprogramunk kicsi, nem ér el 500h-ig A tömb vége így 900h, vagyis nem lóg bele a megszakításkezelő kódjába Hálózati Rendszerek és Szolgáltatások Tanszék 25

ASSEMBLY MEGVALÓSÍTÁS A főprogram megvalósítása ORG 0000h SP 3FFFh MEM[2000h] 255 EI label: R0 IO[4Ch] IO[5Dh] R0 JUMP label itt kezdődik az elhelyezés stack pointer beállítás ST = 255 (alapállapot) interrupt engedélyezés ajtó állapot lekérdezése LED-ek beállítása ugrás vissza, új kör Hálózati Rendszerek és Szolgáltatások Tanszék 26

ASSEMBLY MEGVALÓSÍTÁS A 4 bájtos kódok tömbje ORG 500h codes: DB 1, 3, 4, 7 DB 5, 7, 2, 9 DB 8, 2, 0, 8 DB 3, 1, 8, 9... Hálózati Rendszerek és Szolgáltatások Tanszék 27

ASSEMBLY MEGVALÓSÍTÁS A megszakításkezelő megvalósítása: ORG 1000h CPU ide ugrik megszakítás esetén PUSH R0 R0/R1/R2 regiszter stack-re mentése PUSH R1 PUSH R2 R0 IO[2Eh] kártyaolvasó állapotának lekérdezése JUMP keycode IF R0==0 ugrunk, ha nem az okozott megszakítást R0 IO[2Fh] kártyaszám beolvasása MEM[2001h] R0 és eltárolása a CARDID változóba MEM[2000h] 0 ST=0 JUMP end ugrás a megszakításkezelő rutin végére Hálózati Rendszerek és Szolgáltatások Tanszék 28

ASSEMBLY MEGVALÓSÍTÁS A megszakításkezelő megvalósítása: keycode: R0 IO[3Fh] R0=érkezett számjegy R1 MEM[2000h] R1=ST JUMP end IF R1==255 Ugrunk, ha épp nem számjegyre várunk R2 MEM[2001h] R2=CARDID R2 R2 * 4 R2=4*CARDID R2 R1 + R2 R2=4*CARDID+ST R2 MEM[R2+codes] R2=a várt számjegy JUMP match IF R2==R0 Ugrunk, ha a számjegy helyes MEM[2000h] 255 ha nem helyes, az alapállapotba lép JUMP end match: R1 R1+1 Ha helyes, növeljük ST-t, MEM[2000h] R1... és elmentjük a memóriába JUMP end IF R1<4 Ha nem ez az utolsó számjegy, vége IO[4Ch] 1 Ha ez volt az utolsó, ajtónyitás MEM[2000h] 255 Alapállapotba lépünk JUMP end Ugrás a megszakításkezelő végére...és ugrunk a megszakításkezelő végére Hálózati Rendszerek és Szolgáltatások Tanszék 29

ASSEMBLY MEGVALÓSÍTÁS A megszakításkezelő megvalósítása: end: POP R2 POP R1 POP R0 EI RET regiszterek visszaállítása fordított sorban további megszakítások engedélyezése visszatérés a szubrutinból Hálózati Rendszerek és Szolgáltatások Tanszék 30

VARIÁCIÓK Nem lehet RAM nélkül is megoldani? De. De ekkor elveszítjük a stack-et És ezzel a megszakításkezelést is A főprogramnak kell folyamatosan figyelnie: Az ajtó állapotát (a LED-ek miatt) A kártyaolvasó állapotát A billentyűzet állapotát És elveszítjük a lokális változóinkat is (ST és CARDID) Ezt a kettőt szabad regiszterekben is tárolhatjuk Hálózati Rendszerek és Szolgáltatások Tanszék 31