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

BELÉPTETİ RENDSZER TERVEZÉSE - hardver

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

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

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

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

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

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

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

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

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

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

Digitális technika VIMIAA01 9. hét

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

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

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

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

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

BELÉPTETŐ RENDSZER TERVEZÉSE

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

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

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

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

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

Digitális technika (VIMIAA01) Laboratórium 9

Labor 2 Mikrovezérlők

Assembly. Iványi Péter

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

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

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

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

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

Nagy Gergely április 4.

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

Jelfeldolgozás a közlekedésben

Informatika érettségi vizsga

SZORGALMI FELADAT. 17. Oktober

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

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

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

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

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

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

Mikrorendszerek tervezése

Mikrorendszerek tervezése

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ó

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

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

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

A MiniRISC processzor

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

A 32 bites x86-os architektúra regiszterei

1. Digitális integrált áramkörök

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

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

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

Digitális rendszerek. Digitális logika szintje

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

A programozás alapjai

A 6502 mikroprocesszor

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

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

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

Stack Vezérlés szerkezet Adat 2.

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

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

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

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

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

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

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

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg. Olvasható aláírás:...minta VIZSGA...

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

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

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

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

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozott soros szinkron adatátvitel

Az AVR programozás alapjai. Előadja: Both Tamá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 2016. március 7. Budapest Horváth Gábor docens BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 2 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ó

A hardver megtervezése Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 3

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 4 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 5 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 6 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 7 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 8 Ajtónyitó Alkatrészek 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 9 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 10 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 13 -A 15 meghatározza, hogy melyik modulra vonatkozik a cím A 0 -A 12 a modulon belüli pozíció 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 11 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 RD WR A 0 -A 15 A 0 -A 12 CPU D 0 -D 7 MEMRD MEMWR IORD IOWR INT

A kártyaolvasó illesztése D 0 -D 7 A 0 -A 15 CPU MEMRD MEMWR IORD IOWR INT A 1 -A 7 0 A 0 D 0 -D 7 S/D P CS Comp. P=Q OE Q INT 2Eh A billentyűzetet ugyanígy illesztjük, de azt a 3Eh báziscímre Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 12

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 13 Az ajtónyitó illesztése D 0 -D 7 CPU A 0 -A 15 MEMRD MEMWR IORD IOWR INT CS D 0 A 0 -A 7 L P Comp. P=Q CS Q WR/RD 4Ch

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 14 A LED lámpák illesztése D 0 -D 7 CPU A 0 -A 15 MEMRD MEMWR IORD IOWR INT CS A 0 -A 7 D 0 P D Comp. P=Q D-FF Q Q Q 5Dh +5V

A szoftver Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 15

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 16 Állapotgép modell 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 Kártya /Szám tárolás Rossz számjegy Jó számjegy / ajtónyitás ST=255

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 17 Á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 Init Rossz számjegy Kártya /Szám tárolás Rossz számjegy Jó számjegy / ajtónyitás ST=255 Kártyalehúzáskor: ST=0, és a kártyaszám tárolás egy lokális változóba 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 18 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 19 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 20 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

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 Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 21

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 22 A megszakításkezelő A megszakítás a billentyűzettől érkezett Beolvassuk az új számjegyet R0 IO[billentyűzet állapot] 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 23 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 24 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 25 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 26 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

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... Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 27

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 28 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 29 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 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 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 IO[4Ch] 1 Ha ez volt az utolsó, ajtónyitás MEM[2000h] 255 Alapállapotba lépünk JUMP end Ugrunk, ha épp nem számjegyre várunk ha nem helyes, az alapállapotba lép...és ugrunk a megszakításkezelő végére Ha nem ez az utolsó számjegy, vége Ugrás a megszakításkezelő végére

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 30 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

Számítógép Architektúrák Horváth Gábor, BME Hálózati Szolgáltatások és Rendszerek Tsz. 31 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