77
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255 Studenti: Alen Eftimov 8736 Dragan Živkovic 8737 Niš, Februar 2006.

PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU

PROGRAMABILNI PERIFERIJSKI INTERFEJS

INTEL 8255

Studenti: Alen Eftimov 8736 Dragan Živkovic 8737

Niš, Februar 2006.

Page 2: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

1

S A D R Ž A J :

1.SERIJSKI I PARALELNI PRENOS PODATAKA..................................................................................................................... 2 Serijski prenos....................................................................................................................................................................................... 2 Paralelni prenos................................................................................................................................................................................... 3

2. PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255............................................................................................. 5 2.1. OSNOVNI FUNKCIONALNI OPIS KOLA 8255.........................................................................................................................6

Opšte........................................................................................................................................................................................................ 6 Bafer magistrale podataka.................................................................................................................................................................. 6 Citanje/upis i kontrolna logika........................................................................................................................................................... 7 Kontrolne grupe A i B .......................................................................................................................................................................... 8 Portovi A, B i C ..................................................................................................................................................................................... 8

2.2. DETALJNI OPIS RADA KOLA 8255.............................................................................................................................................9 Izbor režima rada.................................................................................................................................................................................. 9 Format definisanja režima .................................................................................................................................................................10 Osobina setovanja/resetovanja pojedinacnih bitova ....................................................................................................................10 Režim 0 (osnovni ulaz/izlaz)..............................................................................................................................................................10 Funkcije kontrole prekida..................................................................................................................................................................10 Režim 1 (prekidni ulaz/izlaz) .............................................................................................................................................................11 Definicije ulaznih kontrolnih signala..............................................................................................................................................11 Definicije izlaznih kontrolnih signala..............................................................................................................................................12 Režim 2 (prekidna dvosmerna U/I magistrala) ..............................................................................................................................14 Definicije signala dvosmerene U/I magistrale...............................................................................................................................14 Razmatranje specijalnih kombinacija režima ................................................................................................................................15 Mogucnosti strujnih izvora na portovima B i C.............................................................................................................................16 Citanje statusa Porta C......................................................................................................................................................................16

2.3. PRIMENA CIPA INTEL 8255 ........................................................................................................................................................17 3. PREDLOG REALIZACIJE CIPA 8255 POMOCU VHDL-A .............................................................................................20

3.1. CTRL_LOG............................................................................................................................................................................................21 3.2. PORTAIN ..............................................................................................................................................................................................26 3.3. PORTBIN ..............................................................................................................................................................................................28 3.4. DOUTMUX..........................................................................................................................................................................................29 3.5. PORTAOUT...........................................................................................................................................................................................31 3.6. PORTBOUT...........................................................................................................................................................................................32 3.7. PORTCOUT...........................................................................................................................................................................................34 3.8. GENERATOR TAKTA (CLK_GEN) .....................................................................................................................................................43 3.9. GLOBALNI MULTIPLEKSER (MUX_GLOBAL)..................................................................................................................................44

4. SINTEZA I IMPLEMENTACIJA KOLA.......................................................................................................................................46 5. TESTIRANJE RADA KOLA..............................................................................................................................................................49

PRIMER 1 ( MODE 0): ..................................................................................................................................................................................49 PRIMER 2 ( MODE 1 STROBOVANI ULAZ):................................................................................................................................................53 PRIMER 3 ( MODE 1 STROBOVANI IZLAZ):...............................................................................................................................................57

6.ZADATAK .................................................................................................................................................................................................61

MOD 0:........................................................................................................................................................................................................61 MOD 1 (STROBOVANI ULAZ): ..................................................................................................................................................................66 MOD 1 (STROBOVANI IZLAZ):..................................................................................................................................................................71

7. LITERATURA : ......................................................................................................................................................................................76

Page 3: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

2

1.SERIJSKI I PARALELNI PRENOS PODATAKA

Racunar komunicira sa spoljnim svetom preko svog U/I podsistema. Podaci (informacija) se predaju/primaju ka/iz spoljnog sveta u kodiranom obliku. Postoje dva tipa prenosa podataka:

1) Serijski – preko jedinstvene veze (žice), ili komunikacionog kanala,a u datom trenutku se prenosi po jedan bit 2) Paralelni – preko veceg broja veza (žica), u datom trenutku se prenosi više bitova.

Serijski prenos Serijska informacija se prenosi preko jedinstvene linije na principu bit-po-bit. Na ovaj nacin smanjuje se broj veza(žica) kojim se CPU povezuje sa U/I uredajem. Serijski prenos je sporiji, karakteriše ga niža cena i veca pouzdanost,tj. greška u prenosu ili prestanku prijema lakše se detektuje,pa se zbog toga koristi za prenos na vecim rastojanjima.

Slika 1.1: Komunikacija preko serijskih U/I portova

Page 4: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

3

Paralelni prenos

Paralelnim prenosom se istovremeno po posebnim linijama prenosi veci broj bitova. Time dobijamo vecu brzinu prenosa, ali i težu detekciju greške, vecu nepouzdanost prenosa i vecu cenu. Zato se paralelni prenos koristi za kraca rastojanja. Paralelne komunikacije, za razliku od serijskih, nisu dobro standardizovane. U/I prenos “ Hahdshake” podrazumeva da se podaci iz spoljnjeg okruženja prihvataju od CPU-a preko ulaznog bafera, a podatke koje CPU predaje spoljnom okruženju predaju preko izlaznog bafera. Primer tipicnog paralelnog izlaznog interfejsa je prikazan na sledecoj slici:

Slika 1.2: Povezivanje izlaznog interfejsa na izlazni uredaj tipa D/A konvertor zasnovan na paralelnom prenosu

CPU lecuje podatke u izlazni bafer podataka, a izlazi bafera su direktno povezani na izlazni uredaj ( u našem slucaju D/A konvertor). Izlaz D/A konvertora menjace se u zavisnosti od sadržaja izlaznog bafera.

Razmotricemo jos jedan primer paralelnog interfejsa kod koga se koriste handshake upravljacke linije. Kada U/I uredaj želi da preda podatke interfejsu on prvo postavlja važece podatke na linijama Ulazni_podaci a zatim aktivira liniju Pod_Ul_spreman. Interfejs odgovara lecovanjem podatka u Ulazni_bafer i aktivira liniju Potvrda_Ul_Podataka.

Page 5: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

4

U/I uredaj nakon prijema signala Potvrda_Ul_Podataka deaktivira podatke i signal Pod_Ul_Spreman. Interfejs nakon primanja podatka postavi statusni bit Ready i verovatno aktivira liniju IRn. Kada CPU prihvati podatak interfejs deaktivira statusni bit Ready. Zahtev za prekid ( IRn) kao i obrada prekida se prihvataju i obraduju standardnim putem.

Slika1.3: Povezivanje ulaznog i izlaznog interfejsa

Kada je u pitanju izlaz, interfejs ce postaviti Ready statusni bit i generisati zahtev za prekid kada je Izlazni_bafer podataka dosrtupan. Kada CPU upiše podatke, interfejs resetuje izlazni statusni bit Ready, postavlja podatke na magistrali Izlazni_podaci i signalizira U/I uredaju preko linije Pod_Izl_Spremni. Kada je uredaj spreman da prihvati podatke, on lecuje podatke i vraca signal Potvrda_Izl_Signala. Nakon toga interfejs deaktivira signal Pod_Izl_Spremni i ponovo postavlja izlazni statusni bit na Ready.

Page 6: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

5

8255A

2. PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255

8255 je programabilni cip opšte namene projektovan za upotrebu u mikroprocesorskim sistemima. Ima 24 ulazno- izlazna pina koji se mogu pojedinacno programirati u dve grupe od dvanaest pinova. Ovaj cip koristi se u tri osnovna režima rada. U Režimu 0, svaka grupa od dvanaest ulazno-izlaznih pinova može da se programira u skupove od po 4, koji mogu da budu ulazi ili izlazi. U Režimu 1 svaka grupa može da se programira da ima 8 linija ulaza ili izlaza. Od preostalih cetiri, tri pina se koriste za signale handshake protokola i kontrolu prekida. Režim 2 predstavlja dvosmerni rad magistrale koja koristi 8 linija za dvosmernu magistralu, i pet linija, pozajmljujuci jednu od ostalih grupa, za handshake protokol. Ostale osobine cipa 8255 ukljucuju mogucnost bitskog setovanja i resetovanja i mogucnost davanja struje od 1 mA pri naponu od 1.5 V. Ovo omogucava Darlingtonovim tranzistorima da direktno napajaju uredaje kao što su štampaci ili visokonaponski displeji.

Slika 2.1: Raspored pinova na cipu INTEL 8255

Page 7: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

6

2.1. OSNOVNI FUNKCIONALNI OPIS KOLA 8255

Opšte

8255 je uredaj za programabilni periferijski interfejs (Programmable peripheral interface), skraceno PPI, projektovan za upotrebu u 8080 mikroprocesorskim sistemima. Njegova funkcija je U/I komponenta opšte namene za povezivanje periferijske opreme na 8080 sistemsku magistralu. Funkcionalna konfiguracija kola 8255 je programirana sistemskim softverom tako da nije potrebna spoljašnja logika za povezivanje periferijskih uredaja ili struktura.

Slika 2.2: Interna organizacija 8255 vidljiva od strane programera

Bafer magistrale podataka Ovaj trostaticki dvosmerni, osmobitni bafer koristi se za povezivanje 8255 na sistemsku magistralu podataka procesora 8080. Bafer prenosi/prima podatke nakon izvršavanja ulaznih ili izlaznih instrukcija od strane procesora 8080. Kontrolne reci i statusne informacije se takode prenose preko ovog bafera.

Page 8: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

7

Citanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima podataka, statusnih ili kontrolnih reci. On prihvata ulaze sa adresa procesora 8080 i kontrolnih magistrala, i po redu izdaje komande obema kontrolnim grupama. (CS) Chip Select (selektovanje cipa): “nizak nivo” na ovom ulaznom pinu omogucava komunikaciju izmedu‚ cipa 8255 i procesora. (RD ) Read (citanje): “nizak nivo” na ovom ulaznom pinu omogucava cipu 8255 da pošalje podatke i statusne informacije procesora na magistralu podataka. U suštini, omogucava da procesor procita podatke iz 8255. ( WR) Write (upis): “nizak nivo” na ovom ulaznom pinu omogucava procesoru da upisuje podatke i kontrolne reci u cip 8255.

Slika 2.3: Definicija rada PPI-a 8255

(A0 i A1) Selekcija Portova 0 i 1: Ovi ulazni signali, u vezi sa RD i WR ulazima, kontrolišu izbor jednog od tri porta za registar kontrolne reci. Oni su normalno povezani na najmanje znacajne bitove adresne magistrale (A0 i A1).

Page 9: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

8

(RESET) Reset: “visok nivo” na ovom ulazu briše sve unutrašnje registre ukljucujuci i kontrolni registar i svi Portovi (A, B i C) se postavljaju u ulazni režim.

Kontrolne grupe A i B Funkcionalna konfiguracija svakog porta je programirana sistemskim softverom. U suštini procesor 8080 izdaje kontrolnu rec cipu 8255. Kontrolna rec sadrži informacije kao što su “režim”, “setuj bit”, “resetuj bit” i slicno, cime se inicijalizuje funkcionalna konfiguracija 8255. Svaki od kontrolnih blokova (grupa A i grupa B) prihvataju komande od kontrolne logike, prihvataju kontrolne reci od unutrašnje magistrale podataka i izdaju odgovarajuce komande njima dodeljenim portovima. Kontrolna grupa A ( Port A i viši C port (C7-C4)) Kontrolna grupa B ( Port B i niži C port (C3-C0)) U kontrolni regitar reci se može samo upisivati. Nije dozvoljena nikakva operacija citanja u ovom registru.

Portovi A, B i C 8255 sadrži tri 8-bitna porta (A, B i C). Svi oni mogu se konfigurisati sistemskim softverom za više razlicitih funkcionalnih namena , ali svaki od njih poseduje posebne karakteristike, odnosno sposobnost da dodatno poveca snagu i fleksibilnost cipa 8255. Port A: jedan 8-bitni izlazni lec/bafer i jedan 8-bitni ulazni lec. Port B: jedan 8-bitni ulazno/izlazni lec/bafer i jedan 8-bitni ulazni bafer. Port C: jedan 8-bitni izlazni lec/bafer i jedan 8-bitni ulazni bafer (nema leca na ulazu). Ovaj port može se podeliti na dva 4-bitna porta u zavisnosti od režima. Svaki 4-bitni port sadrži 4-bitni lec i može se koristiti za izlaze kontrolnih signala i ulaze statusnih signala zajedno sa Portovima A i B.

Page 10: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

9

2.2. DETALJNI OPIS RADA KOLA 8255

Izbor režima rada Postoje tri osnovna režima rada koji se mogu selektovati sistemskim softverom: Režim 0 – Osnovni Ulaz/Izlaz Režim 1 - Prekidni Ulaz/Izlaz Režim 2 – Dvosmerna magistrala Kada se RESET ulaz postavi na jedinicu, svi portovi ce se postaviti u režim ulaza (tj. sve 24 linije ce biti u stanju visoke impedanse). Pošto se RESET ukloni, 8255 može ostati u ovom režimu bez zahteva za dodatnu inicijalizacije. Tokom izvršenja sistemskog programa, može se selektovati neki od ostalih režima upotrebom jedne izlazne instrukcije. Ovo omogucava da jedan 8255 opslužuje razlicite periferne uredaje sa jednostavnom softverskom rutinom. Režimi za portove A i B mogu se odvojeno definisati, dok se Port C deli na dva dela, pošto se zahteva definicijama Portova A i B. Svi izlazni registri, ukljucujuci i statusne flip-flopove, ce se resetovati kad god se promeni režim. Režimi se mogu kombinovati tako da se njihova funkcionalna definicija može prilagoditi bilo kojoj U/I strukturi. Na primer, Grupa B se može programirati u Režimu 0 da nadgleda jednostavna zatvaranja prekidaca ili da prikaže rezultate izracunvanja. Grupa A se može programirati u Režimu 1 da nadgleda tastaturu ili citac trake na osnovu prekida.

Slika 2.4: Komandni bajt komandnog registra

a) programiranje portova A,B,C b) setovanje ili resetovanje bita selektovanog bit poljem

Page 11: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

10

Format definisanja režima Definicije režima i moguce kombinacije mogu izgledati zbunjujuce na prvi pogled, ali posle površnog pregleda rada kompletnog uredaja, logicni U/I pristup ce izaci na površinu. Projektant cipa 8255 uzeo je u obzir efikasan raspored na cipu, definisanje kontrolnih signala i kompletnu funkcionalnu fleksibilnost, koja podržava skoro svaki periferijski uredaj bez spoljašnje logike. Na ovakav našin ostvareno je optimalno iskorišcenje dostupnih pinova.

Osobina setovanja/resetovanja pojedinacnih bitova Bilo koji od osam bitova Porta C se može setovati ili resetovati upotrebom jedne izlazne instrukcije. Ova osobina redukuje softverske zahteve u kontrolnim aplikacijama. Režimi rada

Režim 0 (osnovni ulaz/izlaz) Ova funkcionalna konfiguracija obezbeduje jednostavne ulazne i izlazne operacije za svaki od tri porta. Ne zahteva se handshaking protokol, vec se podaci jednostavno upisuju ili citaju sa zadatog porta. Kada se Port C koristi kao status/kontrola za port A ili B, ovi bitovi se mogu setovati ili resetovati bitskim operacijama kao da su izlazni portovi podataka.

Funkcije kontrole prekida Kada se 8255 programira da radi u Režimu 1 ili Režimu 2, predvideni su kontrolni signali koji se mogu koristiti kao ulazi za zahtevanje prekida procesoru. Ovi signali, generisani sa Porta C, se mogu iskljuciti ili ukljuciti setovanjem ili resetovanjem INTE flip-flopa, upotrebom funkcija bitskog setovanja/resetovnja Porta C. Ova funkcija omogucava programeru da ne dozvoli ili dozvoli da pojedinacni U/I uredaji prekidaju procesor, bez uticaja na druge uredaje u prekidnoj strukturi. INTE flip-flop definicija: (BIT-SET) – INTE je setovan – omogucen prekid (BIT-RESET) – INTE je resetovan – onemogucen prekid Napomena: Svi maskirni flip-flopovi se automatski resetuju tokom selektovanja režima i resetovanja uredaja.

Page 12: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

11

Osnovne funkcionalne definicije Režima 0: * Dva 8-bitna i dva 4-bitna porta * Svaki port može biti ulazni i izlazni * Izlazi su lecovani * Ulazi nisu lecovani * U ovom režimu su moguce 16 razlicitih ulazno/izlaznih konfiguracija

Režimi rada

Režim 1 (prekidni ulaz/izlaz) Ova funkcionalna konfigurcija obezbeduje prenos U/I podataka ka i od zadatog porta u vezi sa signalima prekida ili handsaking protokola. U Režimu 1, Portovi A i B koriste linije na Portu C da generišu ili prihvate ove signale handshaking protokola. Osnovne funkcionalne definicije Režima 1:

* Dve grupe (grupa A i grupa B) * Svaka grupa sadrži jedan 8-bitni port podataka i jedan 4-bitni kontrolni ili port podataka * 8-bitni port podatka može biti ili ulazni ili izlazni. I ulazi i izlazi su lecovani. * 4-bitni port se koristi za kontrolu i status 8-bitnog porta podataka.

Definicije ulaznih kontrolnih signala STB (strobe ulaz) Nula na ovom ulazu upisuje podatke u ulazni lec. IBF (ulazni bafer pun) Jedinica na ovom izlazu ukazuje da su podaci upisani u ulazni lec. U suštini, ovo je potvrda. IBF se setuje kada je STB ulaz na nuli, a resetuje se tokom rastuce ivice RD ulaza. INTR (zahtev za prekid) Jedinica na ovom izlazu se može iskorititi da prekida processor kada ulazni uredaj zahteva opsluživanje. INTR se setuje kada je STB na jedinici, IBF je na jedinici i INTE je na jedinici. Resetuje se tokom opadajuce ivice RD . Ova procedura omogucava ulaznim uredajima da zahtevaju opsluživanje od procesora jednostavnim izbacivanjem podataka na port. INTE A Kontrolisan bitskim setovanjem/resetovanjem PC4. INTE B Kontrolisan bitskim setovanjem/resetovanjem PC2.

Page 13: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

12

Slika 2.5: Strobovani ulaz u režimu 1 kod 8255 a) interna struktura

b) vremenski dihagrami

Definicije izlaznih kontrolnih signala OBF(izlazni bfer pun) Izlaz OBF ce se postaviti na nulu da ukaže da je processor upisao podatke na zadati port. OBF F/F ce se setovati rastucom ivicom WR ulaza i resetovati kada je ulaz ACK na nuli. ACK (ulaz potvrde) Nula na ovom ulazu informiše 8255 da su podaci sa Portova A i B prihvaceni. U suštini, odgovor sa periferijskog uredaja ukazuje da je primio podatke sa izlaza CPU.

Page 14: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

13

INTR (zahtev za prekid) Jedinica na ovom izlazu može se upotrebiti da prekida CPU kada je izlazni uredaj primio podatke (prenete sa procesora). INTR se setuje kada je ACK na jedinici, OBF je na jedinici i INTE je na jedinici. Resetuje se tokom opadajuce ivice WR .

Slika 2.6: Režim 1 strobovani izlaz kod 8255 a) interna struktura

b) vremenski dijagrami Kombinacije Režima 1 Portovi A i B mogu se pojedinacno definisati kao ulazi ili izlazi u Režimu 1 kako bi podržali razlicite U/I prekidne aplikacije.

Page 15: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

14

Režimi rada

Režim 2 (prekidna dvosmerna U/I magistrala) Ova funkcionalna konfiguracija obezbeduje znacaj za komunikaciju sa periferijskim uredajem ili strukturom preko jedne 8-bitne magistrale i za predaju i za prijem podataka (dvosmerna U/I magistrala). Signali handshaking protokola koriste se da održe propisan protok magistrale na slican nacin kao kod Režima 1. Takode su dostupne i funkcije generisanja i dozvole /zabrane prekida. Funkcionalne definicije Režima 2

* Koristi se samo u grupi A * Jedan 8-bitni, dvosmerni port (Port A) i 5-bitni kontrolni port (Port C) * I ulazi i izlazu su lecovani * 5-bitni kontrolni port (Port C) se koristi za kontrolu i status 8-bitnog, dvosmernog porta (Port A)

Definicije signala dvosmerene U/I magistrale INTR (zahtev za prekid) Jedinica na ovom izlazu se može upotrebiti da prekida procesor (CPU) i za izlazne i za ulazne operacije. Izlazne operacije OBF (izlazni bafer pun) OBF ce se postaviti na nulu da ukaže da je CPU ispisao podatke na Port A. ACK(potvrda) Nula na ovom ulazu omogucava da trostaticki izlazni bafer sa Porta A pošalje podatke. Inace, bafer bi bio u stanju visoke impedanse. INTE 1 (INTE flip- flop dodeljen sa OBF) Kontrolisan bitskim setovanjem/resetovanjem PC6 Ulazne operacije STB (strobe ulaz) Nula na ovom ulazu upisuje podatke u ulazni lec. IBF (ulazni bafer pun) Jedinica na ovom izlazu ukazuje da su podaci upisani u ulazni lec. INTE 2(INTE flip- flop dodeljen sa IBF) Kontrolisan bitskim setovanjem/resetovanjem PC4

Page 16: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

15

Slika 2.7: Režim 2 kod 8255 a) interna struktura

b) vremenski dijagram

Razmatranje specijalnih kombinacija režima Postoji nekoliko kombinacija režima kada se ne koriste svi bitovi Porta C za kontrolu ili status. Ostali bitovi mogu se koristiti na sledeci nacim: Ako se programiraju kao ulazi – Svim ulaznim linijama može se pristupiti tokom normalnog citanja Porta C Ako se programiraju kao izlazi –

Bitovima u višem delu C (PC7-PC4) može se pojedinacno pristupiti upotrebom finkcija bitskog setovanja/resetovanja. Bitovima u nižem delu C (PC3-PC0) može se pristupiti upotrebom funkcija bitskog setovanja /resetovanja ili pristupiti upisivanjem u Port C.

Page 17: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

16

Mogucnosti strujnih izvora na portovima B i C Bilo koji skup od osam izlaznih bafera, izabranih nasumice iz Portova B i C, mogu davati 1.5mA pri 1.5 V. Ova osobina omogucava da 8255 direktno napaja Darlingtonove spojeve i visokonaponske displeje koji zahtevaju ovakvu struju.

Citanje statusa Porta C U Režimu 1, Port C prenosi podatke u periferijske uredaje ili iz njih. Kada se 8255 programira da radi u Režimima 1 i 2, port C generiše ili prihvata handshaking signale sa periferijskih uredaja. Citanje sadržaja Porta C omogucava da programer testira ili verifikuje status svakog perifernog uredaja i da promeni tok programa prema tome. Ne postoji specijalna instrukcija za citanje statusne informacije sa Porta C. Normalna operacija citanja Porta C se izvršava da obavi ovu funkciju.

Page 18: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

17

2.3. PRIMENA CIPA INTEL 8255 Cip 8255 je veoma mocan “alat” za sprezanje periferijskih uredaja sa mikroracunarskim sistemom

8080. Najvažnije prednosti ovog cipa su to što poseduje optimalan broj pinova i dovoljno je fleksibilan da omogucava sprezanje I/O uredaja sa sistemskom magistralom 8080 bez upotrebe dodatne logike.

Na sledecim slikama prikazani su neki tipicni primeri primene ovog cipa.

Slika 1: Sprega 8255 sa brzim štampacem Slika 2: Sprega 8255 sa displejem i tastaturom

Page 19: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

18

] Slika 3: Sprega sa tastaturom i terminalom Slika 4: D/A i A/D konverzija

Slika 5: Sprega 8255 sa flopi diskom Slika 6: Sprega 8255 sa CRT monitorom

Page 20: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

19

Slika 7: Sprega 8255 sa citacem kartica i industijskim mikrokontrolerom

Slika 8: Ostvarivanje distibutivnog multiprocesorskog sistema

Page 21: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

20

3. PREDLOG REALIZACIJE CIPA 8255 POMOCU VHDL-a

Na Slici 3.1. prikazan je predlog realizacije cipa 8255 pomocu softverskog alata Active HDL 5.1. Potom je izvršena njegova sinteza pomocu programskog paketa ISE kompanije XILINX .

Sl.3.1. BDE dijagram cipa 8255

Page 22: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

21

U strukturi sa Slike 3.1. (najviši nivo cipa 8255) razlikujemo 9 entiteta, odnosno komponenata:

* Ctrl_log * Port Ain * PortBin * DoutMUX * Port Aout * PortBout * Port Cout * CLK_gen * MUX_global

Svaki od navedenih entiteta bice obraden u ovom poglavlju.

3.1. Ctrl_log

Bilo kakav prenos podataka unutar ili van cipa 8255 odvija se na osnovu kontrolnih i upravljackih signala koje generiše ovaj entitet (blok). LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- Komponenta Ctrl_log upravlja radom cipa 8255. -- Ovaj blok generise svaki interni upravljacki signal. ENTITY Ctrl_log IS PORT( Reset : IN std_logic; Clk : IN std_logic; nCS : IN std_logic; nRD : IN std_logic; nWR : IN std_logic; A : IN std_logic_vector (1 DOWNTO 0); Din : IN std_logic_vector (7 DOWNTO 0); Cin : IN std_logic_vector (7 DOWNTO 0); Aen : OUT std_logic; Ben : OUT std_logic; Cen : OUT std_logic_vector (7 DOWNTO 0); DoutSelect : OUT std_logic_vector (2 DOWNTO 0); CtrlReg : OUT std_logic_vector (7 DOWNTO 0); Ard : OUT std_logic; Brd : OUT std_logic; Awr : OUT std_logic; Bwr : OUT std_logic; AoutLd : OUT std_logic; BoutLd : OUT std_logic; Coverride : OUT std_logic;

Page 23: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

22

CoutLd : OUT std_logic_vector (7 DOWNTO 0) ); END Ctrl_log; ARCHITECTURE rtl OF Ctrl_log IS -- Definisanje inte rnih signala u okviru -- bloka Ctrl_log SIGNAL CtrlRegD : std_logic_vector(6 DOWNTO 0); -- Lecovano stanje Kontrolnog Registra SIGNAL CtrlRegQ : std_logic_vector(6 DOWNTO 0); -- Upisano stanje Kontrolnog Registra SIGNAL ModeA : std_logic_vector(1 DOWNTO 0); -- Mod Registra A SIGNAL ModeB : std_logic; -- Mod Registra B SIGNAL PortA_IO : std_logic; -- Registar A je ulazni/izlazni SIGNAL PortB_IO : std_logic; -- Registar B je ulazni/izlazni SIGNAL PortCUp_IO : std_logic; -- Kontrola viseg dela Registra C SIGNAL PortCLow_IO : std_logic; -- Kontrola nizeg dela Registra C SIGNAL CtrlRegWrite : std_logic; -- Dozvola upisa stanja u Kontrolni Registar BEGIN -- Poslednji bit kontrolnog registra je uvek '1'; -- Svaki bit kontrolnog registra predstavlja neki -- upravljacki bit za registre A,B i C. Sada cemo -- popuniti komandni bajt Komandnog registra (Sl.2.4) CtrlReg <= '1' & CtrlRegQ; ModeA <= CtrlRegQ (6 DOWNTO 5); ModeB <= CtrlRegQ (2); PortA_IO <= CtrlRegQ (4); PortB_IO <= CtrlRegQ (1); PortCUp_IO <= CtrlRegQ (3); PortCLow_IO <= CtrlRegQ (0); -- Definisanje izlaznih signala bloka Ctrl_log -- Nacin generisanja dozvole portu Aout AoutLd <= '0' WHEN nCS = '0' AND A = "00" AND nWR = '0' ELSE '1'; -- Nacin generisanja dozvole portu Bout BoutLd <= '0' WHEN nCS = '0' AND A = "01" AND nWR = '0' ELSE '1'; -- Na osnovu spoljasnjih upravljackih signala Ctrl_log generise -- izlazne signale koji daju informaciju o citanju/upisivanju -- stanja registara A i B, kao i interni signal CtrlRegWrite, koji -- ukazuje da treba azurirati sadrzaj Kontrolnog Registra

Page 24: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

23

Ard <= nCS OR nRD OR A(1) OR A(0); Brd <= nCS OR nRD OR A(1) OR (NOT A(0)); Awr <= nCS OR nWR OR A(1) OR A(0); Bwr <= nCS OR nWR OR A(1) OR (NOT A(0)); CtrlRegWrite <= nCS OR nWR OR (NOT A(1)) OR (NOT A(0)) OR (NOT Din(7)); ControlLogicProc: PROCESS ( nCS , nWR , A, Din, ModeA, ModeB, PortA_IO, PortB_IO, PortCLow_IO, PortCUp_IO, Cin, CtrlRegWrite, CtrlRegQ ) -- Pogledati Sliku 2.4 BEGIN IF (ModeB = '0') THEN Ben <= NOT PortB_IO; -- generisanje dozvole Ben

IF (ModeA(1) = '1') THEN -- "punjenje" niza 4 bita Cen stanjem 1xxx, Cen (3 DOWNTO 0) <= '1' & -- pri cemu je x jednak komplementu PortCLow_IO std_logic'(NOT PortCLow_IO) & std_logic'(NOT PortCLow_IO) & std_logic'(NOT PortCLow_IO); ELSE -- "punjenje" niza 4 bita Cen stanjem xxxx, -- pri cemu je x jednak komplementu PortCLow_IO Cen (3 DOWNTO 0) <= std_logic'(NOT PortCLow_IO) & std_logic'(NOT PortCLow_IO) & std_logic'(NOT PortCLow_IO) & std_logic'(NOT PortCLow_IO); END IF; ELSE Ben <= NOT PortB_IO; Cen (3 DOWNTO 0) <= "1011"; END IF; IF (ModeA = "00") THEN -- "punjenje" visa 4 bita Cen stanjem xxxx, Aen <= NOT PortA_IO; -- pri cemu je x jednak komplementu PortCUp_IO Cen (7 DOWNTO 4) <= std_logic'(NOT PortCUp_IO) & std_logic'(NOT PortCUp_IO) & std_logic'(NOT PortCUp_IO) & std_logic'(NOT PortCUp_IO); ELSIF (ModeA = "01") THEN Aen <= NOT PortA_IO; IF (PortA_IO = '0') THEN --Port A je izlazni Cen(7 DOWNTO 4) <= "10" & std_logic'(NOT PortCUp_IO) & std_logic'(NOT PortCUp_IO); ELSE --Port A je ulazni Cen(7 DOWNTO 4) <= std_logic'(NOT PortCUp_IO) & std_logic'(NOT PortCUp_IO) & "10";

Page 25: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

24

END IF; ELSE Aen <= NOT Cin(6); -- ACK signal generise dozvolu u Modu 2 Cen(7 DOWNTO 4) <= "1010"; -- "punjenje" visa 4 bita Cen stanjem 1010 END IF; CASE A IS WHEN "00" => -- Port A IF (ModeA = "00") THEN -- Ukoliko je Port A u Modu 0 DoutSelect <= "000"; -- Selektuje se nelecovani podatak PAin ELSE DoutSelect <= "001"; -- U suprotnom, selektuje se lecovani podatak PAin. END IF; WHEN "01" => -- Port B IF (ModeB = '0') THEN -- Ukoliko je Port B u Modu 0 DoutSelect <= "010"; -- Selektuje se nelecovani podatak PBin ELSE DoutSelect <= "011"; -- U suprotnom, selektuje se lecovani podatak PBin. END IF; WHEN "10" => -- Port C DoutSelect <= "100"; -- Selekcija podatka Cin WHEN "11" => DoutSelect <= "110"; -- Selekcija podatka iz Kontrolnog Registra WHEN OTHERS => NULL; END CASE; -- Generisanje informacije o prekoracenju, tj. -- kada procesor "puni" Kontrolni Registar IF (nCS = '0' AND A = "11" AND Din(7) = '0') THEN Coverride <= '1'; ELSE Coverride <= '0'; END IF; -- Ctrl_log generise upravljacki vektor CoutLd koji moze -- da ima vise stanja, zavisno od toga koju funkciju cip -- 8255 obavlja. Naredna sekvenca pokazuje nacin na koji -- se "puni" sadrzaj vektora CoutLd IF (nCS = '0' AND A = "10" AND nWR = '0') THEN IF (ModeA = "00" AND ModeB = '0') THEN CoutLd <= "00000000"; ELSIF (ModeA = "00") THEN CoutLd <= "00001111"; ELSIF (ModeB = '0') THEN CoutLd <= "11110000"; ELSE CoutLd <= "11111111";

Page 26: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

25

END IF; ELSIF (nCS = '0' AND A = "11" AND nWR = '0' AND Din(7) = '0') THEN CASE Din (3 DOWNTO 1) IS -- Posto je A="11", Din "nosi" upravljacku WHEN "000" => -- informaciju, tako da CoutLd zavisi od CoutLd <= "11111110"; -- niza 3 bita vektora (signala) Din WHEN "001" => CoutLd <= "11111101"; WHEN "010" => CoutLd <= "11111011"; WHEN "011" => CoutLd <= "11110111"; WHEN "100" => CoutLd <= "11101111"; WHEN "101" => CoutLd <= "11011111"; WHEN "110" => CoutLd <= "10111111"; WHEN "111" => CoutLd <= "01111111"; WHEN OTHERS => CoutLd <= "11111111"; END CASE; ELSE CoutLd <= "11111111"; END IF; -- Kada je aktivan CtrlRegWrite, to znaci da podatak -- koji salje procesor predstavlja upravljacki vektor. -- Tada CtrlRegD preuzima 7 bitova vektora Din. Kada -- CtrlRegWrite nije aktivan, ne azurira se stanje -- Kontrolnog Registra IF (CtrlRegWrite = '0') THEN CtrlRegD <= Din (6 DOWNTO 0); ELSE CtrlRegD <= CtrlRegQ; END IF; END PROCESS; CtrlRegProc: PROCESS ( Reset, Clk ) -- Ukoliko je aktivan RESET signal, stanje Kontrolnog -- Registra se postavlja na "0011011". -- Sa svakom usponskom ivicom takta stanje Kontrolnog -- Registra se azurira BEGIN IF (Reset = '1') THEN CtrlRegQ <= "0011011";

Page 27: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

26

ELSIF (Clk'EVENT and Clk = '1') THEN CtrlRegQ <= CtrlRegD; END IF; END PROCESS; END rtl;

3.2. PortAin Realizacija Porta A je efikasnija ukoliko se on podeli na ulazni i izlazni deo. Ulazni segment porta sadrži logiku koja prihvata podatke. Kao što se vidi na Sl.3.1, PortAin prihvata podatke iz «spoljnjeg sveta» preko globalnog multipleksera, a prosleduje ih prema entitetu DoutMux. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY PortAin IS PORT( Ain : IN std_logic_vector (7 DOWNTO 0); AInReg : OUT std_logic_vector (7 DOWNTO 0); Reset : IN std_logic; Clk : IN std_logic; AInLd : IN std_logic ); END PortAin; ARCHITECTURE rtl OF PortAin IS -- Definisanje internih signala unutar ulaznog dela -- Porta A (Ain) SIGNAL AinRegQ : std_logic_vector(7 DOWNTO 0); SIGNAL AinRegD : std_logic_vector(7 DOWNTO 0); BEGIN AinReg <= AinRegQ; -- Ulazni deo Porta A (Ain) mozemo smatrati kao -- sistem 2 x 8 latch-eva "pojacan" sa dodatnom logikom;

Page 28: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

27

AinProc1: PROCESS ( AinLd, Ain, AinRegQ ) BEGIN -- Kada je aktivan signal AinLd, azurira se sadrzaj -- Porta Ain, 8-bitnim podatkom koji je na njegovom -- ulazu IF ( AinLd = '0') THEN AinRegD <= Ain (7 DOWNTO 0); ELSE AinRegD <= AinRegQ; END IF; END PROCESS; AinProc2: PROCESS ( Reset, Clk ) BEGIN -- Ukoliko je prisutan spoljasnji Reset, stanje Porta Ain -- postaje "00000000" IF (RESET = '1') THEN AinRegQ <= "00000000"; -- Sa usponskom ivicom takta 8-bitni podatak ce biti -- dostupan na izlazu ELSIF ( Clk'EVENT and Clk = '1') THEN AinRegQ <= AinRegD; END IF; END PROCESS; END rtl;

Page 29: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

28

3.3. PortBin

Realizacija Porta B je efikasnija ukoliko se on podeli na ulazni i izlazni deo. PortBin prihvata podatke preko iz «spoljnjeg sveta» preko globalnog multipleksera, a prosleduje ih prema entitetu DoutMux. Naravno, da li ce se Port B ponašati kao ulazni ili kao izlazni, zavisi od upravljackih signala, koja sa procesora dolazi na entitet (blok) Cnt_log. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY PortBin IS PORT( Reset : IN std_logic; Clk : IN std_logic; Bin : IN std_logic_vector (7 DOWNTO 0); BinLd : IN std_logic; BinReg : OUT std_logic_vector (7 DOWNTO 0) ); END PortBin; ARCHITECTURE rtl OF PortBin IS -- Definisanje internih signala unutar ulaznog dela -- Porta B (Bin) SIGNAL BinRegQ : std_logic_vector(7 DOWNTO 0); SIGNAL BinRegD : std_logic_vector(7 DOWNTO 0); BEGIN BinReg <= BinRegQ; BinProc1: PROCESS ( BinLd, Bin, BinRegQ ) -- Ulazni deo Porta B (Bin) mozemo smatrati kao -- sistem 2 x 8 latch-eva sa dodatnom logikom; BEGIN -- Kada je aktivan signal BinLd (ovaj signal -- generise blok Ctrl_log) upisuje se sadrzaj -- sa ulaza Porta Bin IF ( BinLd = '0') THEN BinRegD <= Bin (7 DOWNTO 0);

Page 30: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

29

ELSE BinRegD <= BinRegQ; END IF; END PROCESS; BinProc2: PROCESS ( Reset, Clk ) BEGIN -- Kada je prisutan spoljasnji Reset, stanje Porta Bin -- se anulira, tj. postaje "00000000". Onog trenutka -- kada naidje usponska ivica takta, sadrzaj Porta Bin -- se prenosi na izlaz BinReg IF (Reset = '1') THEN BinRegQ <= "00000000"; ELSIF ( Clk'EVENT and Clk = '1') THEN BinRegQ <= BinRegD; END IF; END PROCESS; END rtl;

3.4. DoutMUX Zadatak entiteta DoutMux je da na osnovu upravljackih signala generisanih od strane entiteta Cnt_log, definiše transport podataka prema izlaznim segmentima portova A, B i C (PortAout, PortBout, PortCout). LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY Dout_mux IS PORT( Ain : IN std_logic_vector (7 DOWNTO 0); Bin : IN std_logic_vector (7 DOWNTO 0); AinReg : IN std_logic_vector (7 DOWNTO 0); BinReg : IN std_logic_vector (7 DOWNTO 0); CStatus : IN std_logic_vector (7 DOWNTO 0); CtrlReg : IN std_logic_vector (7 DOWNTO 0); DoutSelect : IN std_logic_vector (2 DOWNTO 0); Dout : OUT std_logic_vector(7 DOWNTO 0) ); END Dout_mux;

Page 31: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

30

ARCHITECTURE rtl OF Dout_mux IS BEGIN mux_proc : PROCESS(Ain, Bin, AinReg, BinReg, CStatus, CtrlReg, DoutSelect) BEGIN -- Tokom jednog taktnog perioda cip 8255 moze da operise samo -- sa jednim portom. Otuda i postojanje multipleksera koji -- propusta samo jedan od 6 relevantnih 8-bitnih signala. -- Drugim recima, izlaz multipleksera Dout zavisno od stanja -- kontrolnog signala DoutSelect "preuzima" jedan od sledecih -- signala: Ain, Bin, AinReg, BinReg, CStatus ili CtrlReg. CASE DoutSelect IS WHEN "000" => DOUT <= Ain; WHEN "001" => DOUT <= AinReg; WHEN "010" => DOUT <= Bin; WHEN "011" => DOUT <= BinReg; WHEN "100" => DOUT <= CStatus; WHEN "110" => DOUT <= CtrlReg; WHEN OTHERS => DOUT <= "11111111"; END CASE; END PROCESS mux_proc; END rtl;

Page 32: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

31

3.5. PortAout

Izlazni segment porta sadrži logiku koja šalje podatke prema entitetu DoutMux. Napominjemo da Port A može da se definiše ili kao ulazni ili kao izlazni, zavisno od upravljackih signala.

U jednom trenutku, prema „spoljašnjem svetu“ komunicira samo jedan port (A, B ili C). LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY PortAout IS PORT( Reset : IN std_logic; Clk : IN std_logic; Din : IN std_logic_vector (7 DOWNTO 0); AOutLd : IN std_logic; Aout : OUT std_logic_vector (7 DOWNTO 0) ); END PortAout; ARCHITECTURE rtl OF PortAout IS -- Definisanje internih signala SIGNAL AOutRegD : std_logic_vector(7 DOWNTO 0); SIGNAL AOutRegQ : std_logic_vector(7 DOWNTO 0); BEGIN Aout <= AOutRegQ; -- Kao i u slucaju ulaznog dela Porta A i izlazni deo predstavlja -- sistem od 2 x 8 latch-eva "pojacan" sa dodatnom logikom; AOutProc1: PROCESS ( AoutLd, AoutRegQ, Din ) BEGIN IF ( AoutLd = '0') THEN AoutRegD <= Din; ELSE AoutRegD <= AoutRegQ;

Page 33: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

32

END IF; END PROCESS; AOutProc2: PROCESS ( Reset, Clk ) BEGIN -- Nailazak spoljasnjeg Reset "anulira" sadrzaj izlaza -- Porta Aout. Sa svakom usponskom ivicom takta sadrzaj -- Porta Aout je dostupan na izlazu, jer se AOutRegQ -- uvek preslikava na Aout IF (Reset = '1') THEN AOutRegQ <= "00000000"; ELSIF ( Clk'EVENT and Clk = '1') THEN AOutRegQ <= AOutRegD; END IF; END PROCESS; END rtl;

3.6. PortBout

Izlazni segment ovog porta sadrži logiku koja šalje podatke prema entitetu DoutMux. Zavisno od upravljackih signala, Port B može da se definiše ili kao ulazni ili kao izlazni. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY PortBout IS PORT( Reset : IN std_logic; Clk : IN std_logic; Din : IN std_logic_vector (7 DOWNTO 0); BoutLd : IN std_logic; Bout : OUT std_logic_vector (7 DOWNTO 0) ); END PortBout;

Page 34: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

33

ARCHITECTURE rtl OF PortBout IS -- Definisanje signala unutar Registra Bout SIGNAL BoutRegD : std_logic_vector(7 DOWNTO 0); SIGNAL BoutRegQ : std_logic_vector(7 DOWNTO 0); BEGIN -- Interni signal BoutRegQ se uvek preslikava -- na izlazne linije Registra Bout Bout <= BoutRegQ; -- U okviru ahitetekture Registra Bout (kao i u slucajevima -- Registarova Ain, Aout i Bin) definisemo 2 procesa. U prvom -- procesu definisemo upis ulaznog podatka u Registar Bout, a -- u okviru drugog procesa definisemo "preslikavanje" -- sadrzaja Registra Bout na njegov izlaz BoutProc1: PROCESS ( BoutLd, BoutRegQ, Din ) BEGIN IF ( BoutLd = '0') THEN BoutRegD <= Din; ELSE BoutRegD <= BoutRegQ; END IF; END PROCESS; BoutProc2: PROCESS ( Reset, Clk ) BEGIN IF (Reset = '1') THEN BoutRegQ <= "00000000"; ELSIF ( Clk'EVENT and Clk = '1') THEN BoutRegQ <= BoutRegD; END IF; END PROCESS; END rtl;

Page 35: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

34

3.7. PortCout Port C je definisan kao jedinstven entitet. Ovaj port se koristi kako za podatke, tako i za upravljanje handshake signalima, cime se obezbeduje «strobovanje» ulaza portova A i B. Struktura i funkcije Porta C su složeniji od portova A i B, pa je samim tim i njegov opis najopširniji. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY PortCout IS PORT( Din : IN std_logic_vector (7 DOWNTO 0); Cin : IN std_logic_vector (7 DOWNTO 0); CtrlReg : IN std_logic_vector (7 DOWNTO 0); Cout : OUT std_logic_vector(7 DOWNTO 0); Ard : IN std_logic; Brd : IN std_logic; Awr : IN std_logic; Bwr : IN std_logic; Reset : IN std_logic; Clk : IN std_logic; Coverride: IN std_logic; CoutLd : IN std_logic_vector (7 DOWNTO 0); CStatus : OUT std_logic_vector(7 DOWNTO 0) ); END PortCout; ARCHITECTURE rtl OF PortCout IS -- Definisanje internih signala Porta Cout SIGNAL CoutRegD : std_logic_vector(7 DOWNTO 0); SIGNAL CoutRegQ : std_logic_vector(7 DOWNTO 0); SIGNAL ModeA : std_logic_vector (1 DOWNTO 0); SIGNAL ModeB : std_logic; SIGNAL PortA_IO : std_logic; SIGNAL PortB_IO : std_logic; SIGNAL RiseAwrQ : std_logic; SIGNAL RiseBwrQ : std_logic; SIGNAL RiseArdQ : std_logic; SIGNAL RiseBrdQ : std_logic; SIGNAL RiseCin6Q : std_logic; SIGNAL RiseCin4Q : std_logic;

Page 36: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

35

SIGNAL RiseCin2Q : std_logic; SIGNAL RiseAwr : std_logic; SIGNAL RiseBwr : std_logic; SIGNAL RiseArd : std_logic; SIGNAL RiseBrd : std_logic; SIGNAL RiseCin6 : std_logic; SIGNAL RiseCin4 : std_logic; SIGNAL RiseCin2 : std_logic; BEGIN Cout <= CoutRegQ; -- izlaz registra Cout ModeA <= CtrlReg (6 DOWNTO 5); -- mod registra A ModeB <= CtrlReg (2); -- mod registra B PortA_IO <= CtrlReg (4); -- registar A je ulazni ili izlazni PortB_IO <= CtrlReg (1); -- registar B je ulazni ili izlazni CStatusProc: PROCESS ( ModeA, ModeB, PortA_IO, Cin, CoutRegQ ) BEGIN CStatus(7) <= Cin(7); IF (ModeA = "01" AND PortA_IO = '0') THEN -- Mod 1, registar A je izlazni CStatus(6) <= CoutRegQ(6); -- i to se upisuje u Statusni Registar. ELSIF (ModeA(1) = '1') THEN -- Registar A je u Modu 2 CStatus(6) <= CoutRegQ(6); ELSE CStatus(6) <= Cin(6); END IF; CStatus(5) <= Cin(5); IF (ModeA = "01" AND PortA_IO = '1') THEN -- Mod 1, registar A je ulazni CStatus(4) <= CoutRegQ(4); --i to se upisuje u Statusni registar ELSIF (ModeA(1) = '1') THEN -- Registar A je u Modu 2 CStatus(4) <= CoutRegQ(4); ELSE CStatus(4) <= Cin(4); END IF; CStatus(3) <= Cin(3); IF (ModeB = '1') THEN -- Registar B je u Modu 1 i to CStatus(2) <= CoutRegQ(2); -- se upisuje u Statusni Registar ELSE CStatus(2) <= Cin(2); END IF;

Page 37: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

36

CStatus(1) <= Cin(1); CStatus(0) <= Cin(0); END PROCESS; PortCDataProc: PROCESS ( ModeA, PortA_IO, PortB_IO, ModeB, Coverride, Awr, Bwr, Ard, Brd, RiseAwr, RiseBwr, RiseArd, RiseBrd, CoutLd, CoutRegQ, Din, Cin, RiseCin2, RiseCin4, RiseCin6 ) BEGIN IF (ModeB = '0') THEN -- Registar B je u Modu 0

IF (CoutLd (0) = '0') THEN CoutRegD (0) <= Din(0); -- Prvi bit signala Din se lecuje. ELSE -- U suprotnom, ranije lecovani bit CoutRegD (0) <= CoutRegQ (0); -- postaje izlazni END IF; ELSIF (ModeB = '1') THEN -- Registar B je u Modu 1 IF ( CoutLd (0) = '0' AND Coverride = '1') THEN -- Prvi bit signala Din se lecuje. CoutRegD (0) <= Din(0); ELSIF (PortB_IO = '0') THEN -- Registar B je izlazni u Modu 1 IF (Bwr = '0') THEN -- Resetovanje INTRB kada je prisutan CoutRegD (0) <= '0'; -- "write strobe" ELSIF (Bwr = '1' AND RiseCin2 = '1' -- Setovanje INTRB na usponsku AND CoutRegQ (1) = '1') THEN -- ivicu signala ACKB CoutRegD (0) <= CoutRegQ (2); ELSE CoutRegD (0) <= CoutRegQ (0); END IF; ELSE -- Mode 1 ulaz IF (Brd = '0' AND CoutRegQ(1) = '1') THEN -- Resetovanje INTRB kada je CoutRegD (0) <= '0'; -- prisutan "read strobe" ELSIF (RiseCin2 = '1' AND CoutRegQ (1) = '1') THEN-- Setovanje INTRB na usponsku CoutRegD (0) <= CoutRegQ (2); -- ivicu signala STBB ELSE CoutRegD (0) <= CoutRegQ (0); END IF; END IF; ELSE CoutRegD (0) <= CoutRegQ (0); END IF;

Page 38: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

37

IF (ModeB = '0') THEN -- Registar B je u Modu 0 IF (CoutLd (1) = '0') THEN IF ( Coverride = '1') THEN CoutRegD (1) <= Din(0); -- Lecuje se jedan od 2 bita: ELSE -- Din(1) ili Din(0) CoutRegD (1) <= Din(1); END IF; ELSE CoutRegD (1) <= CoutRegQ (1); END IF; ELSIF (ModeB = '1') THEN -- Registar B je u Modu 1 IF ( CoutLd (1) = '0' AND Coverride = '1') THEN -- Lecovanje CoutRegD (1) <= Din(0); ELSIF (PortB_IO = '0') THEN -- Registar B je izlazni u Modu 1 IF (RiseBwr = '1') THEN -- Reseovanje OBFB na rastucu CoutRegD (1) <= '0'; -- ivicu signala "write strobe" ELSIF (Cin(2) = '0') THEN -- Setovanje OBFB kada ACKB CoutRegD (1) <= '1'; -- postane "nisko" ELSE CoutRegD (1) <= CoutRegQ (1); END IF; ELSE -- Registar B je ulazni u Modu 1 IF (RiseBrd = '1' AND CoutRegQ(0) = '0') THEN -- Reseovanje IBFB na rastucu ivicu CoutRegD (1) <= '0'; -- "read strobe" ELSIF (Cin(2) = '0') THEN -- Setovanje IBFB kada STBB CoutRegD (1) <= '1'; -- postane "nisko" ELSE CoutRegD (1) <= CoutRegQ (1); END IF; END IF; ELSE CoutRegD (1) <= CoutRegQ (1); END IF; IF (CoutLd (2) = '0') THEN -- Svi modovi IF ( Coverride = '1') THEN CoutRegD (2) <= Din(0); -- Lecovanje prvog ili treceg bita ELSE -- signala Din CoutRegD (2) <= Din(2); END IF; ELSE CoutRegD (2) <= CoutRegQ (2); END IF;

Page 39: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

38

IF (ModeA = "00") THEN -- Mod 0 IF (CoutLd (3) = '0') THEN IF ( Coverride = '1') THEN CoutRegD (3) <= Din(0); -- Lecovanje prvog ili cetvrtog bita ELSE -- signala Din CoutRegD (3) <= Din(3); END IF; ELSE CoutRegD (3) <= CoutRegQ (3); END IF; ELSIF (ModeA = "01") THEN -- Mod 1 IF ( CoutLd (3) = '0' AND Coverride = '1') THEN CoutRegD (3) <= Din(0); -- "Lecovanje" bita Din(0) ELSIF (PortA_IO = '0') THEN -- Registar A je izlazni IF (Awr = '0') THEN CoutRegD (3) <= '0'; -- Resetovanje INTRA sa pojavom ELSIF (Awr = '1' AND RiseCin6 = '1' -- signala "write strobe" AND CoutRegQ (7) = '1') THEN -- Setovanje INTRA na usponsku CoutRegD (3) <= CoutRegQ (6); -- ivicu signala ACKA ELSE CoutRegD (3) <= CoutRegQ (3); END IF; ELSE -- Mode 1, Registar A je ulazni IF (Ard = '0' AND CoutRegQ(5) = '1') THEN CoutRegD (3) <= '0'; -- Resetovanje INTRA sa pojavom ELSIF (RiseCin4 = '1' AND CoutRegQ (5) = '1') THEN -- signala "read strobe" CoutRegD (3) <= CoutRegQ (4); -- Setovanje INTRA na usponsku ELSE -- ivicu signala STBA CoutRegD (3) <= CoutRegQ (3); END IF; END IF; ELSIF (ModeA(1) = '1') THEN -- Mod 2 IF ( CoutLd (3) = '0' AND Coverride = '1') THEN CoutRegD (3) <= Din(0); -- "Lecovanje" bita Din(0) ELSE IF (Awr = '0' OR Ard = '0') THEN -- Resetovanje signala INTRA na CoutRegD (3) <= '0'; -- svaku Read ili "write strobe" ELSIF (Awr = '1' AND RiseCin6 = '1' -- operaciju AND CoutRegQ (7) = '1') THEN -- Setovanje INTRA na usponsku CoutRegD (3) <= CoutRegQ (6); -- ivicu signala ACKA ELSIF (Ard = '1' AND RiseCin4 = '1' -- ILI AND CoutRegQ (5) = '1') THEN -- Setovanje INTRA na rastucu ivicu CoutRegD (3) <= CoutRegQ (4); -- signala STBA ELSE CoutRegD (3) <= CoutRegQ (3); END IF;

Page 40: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

39

END IF; ELSE CoutRegD (3) <= CoutRegQ (3); END IF; IF (ModeA = "00" OR (ModeA = "01" AND PortA_IO = '0')) THEN-- Registar A je izlazni;

--Mod 0 i Mod 1 IF (CoutLd (4) = '0') THEN IF ( Coverride = '1') THEN CoutRegD (4) <= Din(0); -- "Lecovanje" bita Din(0) ili ELSE -- bita Din(4) CoutRegD (4) <= Din(4); END IF; ELSE CoutRegD (4) <= CoutRegQ (4); END IF; -- Mod 1 ili Mod 2 ELSE IF ( CoutLd (4) = '0' AND Coverride = '1') THEN CoutRegD (4) <= Din(0); --"Lecovanje" bita Din(0) ili ELSE -- ostaje prethodno stanje CoutRegD (4) <= CoutRegQ (4); END IF; END IF; IF (ModeA = "00"OR (ModeA = "01" AND PortA_IO = '0')) THEN-- Mod 0 i Mode 1 IF (CoutLd (5) = '0') THEN -- Registar A je izlazni IF ( Coverride = '1') THEN CoutRegD (5) <= Din(0); -- "Lecovanje" bita Din(0) ELSE -- ili bita Din(5); CoutRegD (5) <= Din(5); END IF; ELSE CoutRegD (5) <= CoutRegQ (5); -- ili ostaje prethodno stanje END IF; ELSIF (ModeA = "01") THEN -- Mod 1 IF ( CoutLd (5) = '0' AND Coverride = '1') THEN CoutRegD (5) <= Din(0); -- "Lecovanje" bita Din(0) ELSIF (PortA_IO = '1') THEN -- Registar A je ulazni IF (RiseArd = '1' AND CoutRegQ(3) = '0') THEN CoutRegD (5) <= '0'; -- Resetovanje IBFA na rastucu ELSIF (Cin(4) = '0') THEN -- ivicu signala "read strobe" CoutRegD (5) <= '1'; -- Setovanje IBFA kada se signal ELSE -- STBA postavi na "nisko" CoutRegD (5) <= CoutRegQ (5); END IF;

Page 41: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

40

ELSE CoutRegD (5) <= CoutRegQ (5); END IF; ELSIF (ModeA(1) = '1') THEN -- Mod 2 IF ( CoutLd (5) = '0' AND Coverride = '1') THEN CoutRegD (5) <= Din(0); -- "Lecovanje" bita Din(0) ELSE IF (RiseArd = '1' AND CoutRegQ(3) = '0') THEN CoutRegD (5) <= '0'; -- Resetovanje IBFA na rastucu ELSIF (Cin(4) = '0') THEN -- ivicu signala "read strobe" CoutRegD (5) <= '1'; -- Setovanje IBFA kada se signal ELSE -- STBA postavi na "nisko" CoutRegD (5) <= CoutRegQ (5); END IF; END IF; ELSE CoutRegD (5) <= CoutRegQ (5); END IF; IF (ModeA = "00" OR (ModeA = "01" AND PortA_IO = '1')) THEN -- Mod 0 ili Mod 1; IF (CoutLd (6) = '0') THEN -- Registar A je ulazni IF ( Coverride = '1') THEN CoutRegD (6) <= Din(0); -- "Lecovanje" bita Din(0) ili ELSE -- bita Din(6); CoutRegD (6) <= Din(6); END IF; ELSE CoutRegD (6) <= CoutRegQ (6); -- ili ostaje prethodno stanje END IF; ELSE IF ( CoutLd (6) = '0' AND Coverride = '1') THEN CoutRegD (6) <= Din(0); -- "Lecovanje" bita Din(0) ili ELSE -- ostaje prethodno stanje CoutRegD (6) <= CoutRegQ (6); END IF; END IF; IF (ModeA = "00" OR (ModeA = "01" AND PortA_IO = '1')) THEN-- Mod 0 i Mod 1; IF (CoutLd (7) = '0') THEN -- Registar A je ulazni IF ( Coverride = '1') THEN CoutRegD (7) <= Din(0); -- Lecovanje prvog ili ELSE -- poslednjeg bita signala Din CoutRegD (7) <= Din(7); END IF;

Page 42: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

41

ELSE CoutRegD (7) <= CoutRegQ (7); END IF; ELSIF (ModeA = "01") THEN -- Mod 1 IF ( CoutLd (7) = '0' AND Coverride = '1') THEN CoutRegD (7) <= Din(0); ELSIF (PortA_IO = '0') THEN -- Registar A je izlazni IF (RiseAwr = '1') THEN CoutRegD (7) <= '0'; -- Resetovanje OBFA na rastucu ELSIF (Cin(6) = '0') THEN -- ivicu signala "write strobe" CoutRegD (7) <= '1'; -- Setovanje OBFA kada ACKA ELSE -- postane "nisko" CoutRegD (7) <= CoutRegQ (7); END IF; ELSE CoutRegD (7) <= CoutRegQ (7); END IF; ELSIF (ModeA(1) = '1') THEN -- Mod 2 IF ( CoutLd (7) = '0' AND Coverride = '1') THEN CoutRegD (7) <= Din(0); -- "Lecovanje" CoutRegD(7) ELSE IF (RiseAwr = '1') THEN -- Resetovanje signala OBFA na CoutRegD (7) <= '0'; -- rastucu ivicu signala "write strobe" ELSIF (Cin(6) = '0') THEN -- Setovanje OBFA CoutRegD (7) <= '1'; ELSE CoutRegD (7) <= CoutRegQ (7); END IF; END IF; ELSE CoutRegD (7) <= CoutRegQ (7); END IF; END PROCESS; -- Opisacemo proces koji definise stanje -- Porta Cout CoutRegSyncProc: PROCESS ( Reset, Clk ) BEGIN IF ( Reset = '1') THEN CoutRegQ <= "00000000"; ELSIF ( Clk'EVENT and Clk = '1') THEN

Page 43: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

42

CoutRegQ <= CoutRegD; END IF; END PROCESS; -- Sada cemo da definisemo proces koji detektuje -- svaku promenu stanja unutar registara cipa 8255. -- Svakoj promeni cemo dodeliti Registar jedan interni -- signal. EdgeDetectSyncProc: PROCESS ( Reset, Clk ) BEGIN IF ( Reset = '1') THEN RiseAwrQ <= '0'; RiseBwrQ <= '0'; RiseArdQ <= '0'; RiseBrdQ <= '0'; RiseCin6Q <= '0'; RiseCin4Q <= '0'; RiseCin2Q <= '0'; ELSIF ( Clk'EVENT and Clk = '1') THEN RiseAwrQ <= Awr; RiseBwrQ <= Bwr; RiseArdQ <= Ard; RiseBrdQ <= Brd; RiseCin6Q <= Cin(6); RiseCin4Q <= Cin(4); RiseCin2Q <= Cin(2); END IF; END PROCESS; -- Dodeljivanje signala koji detektuju promene -- stanja registara RiseAwr <= Awr AND NOT RiseAwrQ; RiseBwr <= Bwr AND NOT RiseBwrQ; RiseArd <= Ard AND NOT RiseArdQ; RiseBrd <= Brd AND NOT RiseBrdQ; RiseCin6 <= Cin(6) AND NOT RiseCin6Q;

Page 44: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

43

RiseCin4 <= Cin(4) AND NOT RiseCin4Q; RiseCin2 <= Cin(2) AND NOT RiseCin2Q; END rtl;

3.8. Generator takta (CLK_gen)

Cip 8255 ima interni generator takta kojim se definišu trenuci prihvatanja podataka iz «spoljnjeg sveta», kao i trenuci promene signala unutar komponente. Treba naznaciti da je cip 8255 asinhrona komponenta, tj. da se pomenuto «taktovanje» ne vrši eksterno. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY ClkGen IS PORT( nCs: in std_logic; CLK: out std_logic ); END ClkGen; -- Definisanje rada untrasnjeg takta ARCHITECTURE RTC OF ClkGen IS BEGIN CLK_GEN: process -- Definisemo internu frekvenciju na 10MHz constant CLK_PERIOD:time:= 100 ns; begin -- Rad internog oscilatora direktno zavisi od signala nCs. -- Kada nCs nije aktivan, stanje signala CLK je '0'. U suprotnom, -- osciluje sa taktom od 100 ns, tj. frekvencijom od 10MHz. CLK <= '0' and not(nCs); wait for CLK_PERIOD/2; CLK <= '1' and not(nCs); wait for CLK_PERIOD/2; end process; END RTC;

Page 45: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

44

3.9. Globalni multiplekser (MUX_global) Zadatak bloka koga smo nazvali Globalni multiplekser je da obezbedi korespon-denciju izmedu internog modela cipa 8255 i pinova na samom kucištu, kojih ima 40, racunajuci i pinove Vcc i Gnd. LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY MUX_global IS PORT( PA :InOUT std_logic_vector (7 DOWNTO 0); PB :InOUT std_logic_vector (7 DOWNTO 0); PC :InOUT std_logic_vector (7 DOWNTO 0); Ain :OUT std_logic_vector (7 DOWNTO 0); Bin :OUT std_logic_vector (7 DOWNTO 0); Cin :OUT std_logic_vector (7 DOWNTO 0); Aout :IN std_logic_vector (7 DOWNTO 0); Bout :IN std_logic_vector (7 DOWNTO 0); Cout :IN std_logic_vector (7 DOWNTO 0); Cen :IN std_logic_vector (7 DOWNTO 0); Ben :IN std_logic; Aen :IN std_logic ); END MUX_global; -- Definisanje rada bloka GLOBALNI MULTIPLEKSER, ciji -- je zadatak da obezbedi korespondenciju izmedju pinova -- cipa 8255 i njegovog unutrasnjeg modela -- Tokom jednog taktnog perioda cip 8255 operise samo -- sa jednim portom ARCHITECTURE MUX_global OF MUX_global IS -- Definisimo pomocne signale PA_sub, PB_sub i PC_sub Signal PA_sub : std_logic_vector (7 downto 0); Signal PB_sub : std_logic_vector (7 downto 0); Signal PC_sub : std_logic_vector (7 downto 0); BEGIN PA_sub <= PA; PB_sub <= PB; PC_sub <= PC;

Page 46: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

45

-- Signali Aen i Ben su aktivni sa '0' PA <= Aout when Aen='0' and Aout'event; -- Port A je izlazni Ain <= PA when Aen='0' and PA_sub'event; -- Port A je ulazni PB <= Bout when Ben='0' and Bout'event; -- Port B je izlazni Bin <= PB when Ben='0' and PB_sub'event; -- Port A je ulazni -- Sada cemo definisati kada se pinovi Porta C ponasaju -- kao izlazni, a kada kao ulazni PC(0) <= Cout(0) when Cen(0)='0' and Cout(0)'event; PC(1) <= Cout(1) when Cen(1)='0' and Cout(1)'event; PC(2) <= Cout(2) when Cen(2)='0' and Cout(2)'event; PC(3) <= Cout(3) when Cen(3)='0' and Cout(3)'event; PC(4) <= Cout(4) when Cen(4)='0' and Cout(4)'event; PC(5) <= Cout(5) when Cen(5)='0' and Cout(5)'event; PC(6) <= Cout(6) when Cen(6)='0' and Cout(6)'event; PC(7) <= Cout(7) when Cen(7)='0' and Cout(7)'event; Cin(0)<= PC(0) when Cen(0)='0' and PC_sub(0)'event; Cin(1)<= PC(1) when Cen(1)='0' and PC_sub(1)'event; Cin(2)<= PC(2) when Cen(2)='0' and PC_sub(2)'event; Cin(3)<= PC(3) when Cen(3)='0' and PC_sub(3)'event; Cin(4)<= PC(4) when Cen(4)='0' and PC_sub(4)'event; Cin(5)<= PC(5) when Cen(5)='0' and PC_sub(5)'event; Cin(6)<= PC(6) when Cen(6)='0' and PC_sub(6)'event; Cin(7)<= PC(7) when Cen(7)='0' and PC_sub(7)'event; END MUX_global;

Page 47: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

46

4. SINTEZA I IMPLEMENTACIJA KOLA Za implementaciju programibilnog periferijskog interfejsa 8255 iskoristicemo cip XC2S30VQ200 iz XILINX-ove familije Spartan. Kolo koristi napajanje od 5V. Sintezu i implementaciju cemo obaviti u programu FPGA Express, koji je deo XILINX-ovog paketa programa. Na slici 4.1 prikazana je šema sinteze kola na najvišem nivou. Na šemi su prikazani blokovi koji cine cip 8255, kao i veze medu njima. Svaki od blokova može da se pregleda «dubinski», kako bi bili prikazani gejtovi od kojih je sastavljeno.

Slika 4.1: Šema sinteze Sledeci listing nam pokazuje dobijene rezultate POSLE IMPLEMENTACIJE: Design Summary -------------- Number of errors: 0 Number of warnings: 42 Logic Utilization: Total Number Slice Registers: 411 out of 864 48% Number used as Flip Flops: 154 Number used as Latches: 257

Page 48: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

47

Number of 4 input LUTs: 645 out of 864 75% Logic Distribution: Number of occupied Slices: 419 out of 432 97% Number of Slices containing only related logic: 362 out of 430 84% Number of Slices containing unrelated logic: 57 out of 430 13% *See NOTES below for an explanation of the effects of unrelated logic Total Number 4 input LUTs: 571 out of 864 64% Number used as logic: 568 Number used as a route-thru: 3 Number of bonded IOBs: 21 out of 60 35% IOB Latches: 4 Number of Tbufs: 62 out of 480 13% Number of GCLKs: 4 out of 4 100% Number of GCLKIOBs: 4 out of 4 100% Total equivalent gate count for design: 7,923 Additional JTAG gate count for IOBs: 1,316 Implemetniran cip je zauzeo 7923 ekvivalentnih gejtova, kao i da je pridodato još 1316 gejta koja su neophodna za realizaciju JTAG logike, preko koje se vrši programiranje i testiranje. Maksimalna radna frekvencija kola 73.253MHz. Na slikama 4.2 i 4.3 vidimo unutrašnju strukturu dobijenu nakon implementacije kola gde se vide zauzeti blokovi unutar kola. Na slici 4.2 prikazan je razmeštaj celija gde možemo videti i koji pinovi kola su iskorišceni. Iako se zapaža da izvodi kola nisu grupisani, to je da bi se postiglo približno isto kašnjenje veza do svih pinova. Izgled povezanosti samih veza prikazan je na slici 4.3

Slika 4.2: Šema zauzetoti celija FPGA kola

Page 49: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

48

Slika 4.3: Šema veza celija FPGA kola Na kraju izvršena je i analiza potrošnje kola u delu paketa pod imenom XPower, je pokazao totalnu potrošnju od 10.3mW. Pri tome pri temperaturi ambijenta od 25 ?C, temperatura kucišta je 25,4 ?C. Na slici 4.4 prikazan je i sam fizicki raspored pinova na FPGA cipu.

Slika 4.4: Raspored pinova na FPGA cipu

Program generiše i programski fajl kojim je potrebno isprogramirati FPGA kolo da bi se dobila

željena funkcija.

Page 50: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

49

5. TESTIRANJE RADA KOLA

Primer 1 ( mode 0):

a) Pokazacemo kako se može spregnuti D/A konvertor na 8080 magistralu preko cipa Intel 8255.

b) Kreiracemo Test_Bench kojim se obezbeduje generisanje trouganog napona, cija se amplituda menja u 8 koraka.

Rešenje a)

b) LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity MOD_0 is end MOD_0; architecture TB_ARCHITECTURE of MOD_0 is -- Deklaracija testne jedinice component a8255 PORT( RESET : IN std_logic;

Page 51: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

50

nCS : IN std_logic; nRD : IN std_logic; nWR : IN std_logic; A : IN std_logic_vector (1 DOWNTO 0); PA : InOut std_logic_vector (7 DOWNTO 0); PB : InOut std_logic_vector (7 DOWNTO 0); PC : InOut std_logic_vector (7 DOWNTO 0); PD : InOut std_logic_vector (7 DOWNTO 0) ); end component; --Definisanje signala koje cemo da posmatramo signal RESET : std_logic; signal nCS : std_logic; signal nRD : std_logic; signal nWR : std_logic; signal A : std_logic_vector (1 DOWNTO 0); signal PA : std_logic_vector (7 DOWNTO 0); signal PB : std_logic_vector (7 DOWNTO 0); signal PC : std_logic_vector (7 DOWNTO 0); signal PD : std_logic_vector (7 DOWNTO 0); begin --Mapiranje portova UUT : a8255 port map ( RESET => RESET, nCS => nCS, nRD => nRD, nWR => nWR, A => A, PA => PA, PB => PB, PC => PC, PD => PD );

Page 52: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

51

--Dovodjenje pobudnih signala RESET<='1','0' after 150ns; --Resetovanje na pocetku nCs <='1','0' after 200ns; --Zadavanje signala za selekciju cipa A <="11","00" after 1us; nWr <='0' after 200ns; --Zadavanje operacije upisa nRd <='1' after 200ns; -- Port A se definise kao izlazni. -- 8255 dobija signal sa procesora i -- prosledjuje ga na izlaz PA. -- U cip 8255 najpre treba upisati komandnu -- rec "10000011" pri A="11". PD <= "10000011", "00000000" after 1us, "00000001" after 11us, "00000010" after 21us, "00000011" after 31us, "00000100" after 41us, "00000101" after 51us, "00000110" after 61us, "00000111" after 71us, "00001000" after 81us, "00000000" after 91us, "00000001" after 101us, "00000010" after 111us, "00000011" after 121us; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_a8255 of MOD_0 is for TB_ARCHITECTURE for UUT : a8255 use entity work.a8255(a8255); end for; end for; end TESTBENCH_FOR_a8255;

Page 53: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

52

Test Bench Mod 0

Da bi cip 8255 obavljao zadatu funkciju, neophodno je jedan od dva njegova registra (A ili B)

bude «transparentan», kako bi se obezbedio rad u Modu 0. Za tu svrhu izabrali smo Registar A . Onog trenutka kada procesor pošalje sledecu vrednost (koja treba da bude konvertovana) ka cipu

8255, prethodna vrednost se postavlja na izlaz cipa. Transakcije se odvijaju zavisno od stanja signala nCs, nWr,nRd i A.

Page 54: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

53

Primer 2 ( mode 1 strobovani ulaz):

a) Pokazacemo nacin sprezanja tastature na 8080 magistralu preko cipa Intel 8255. b) Kreiracemo Test_Bench kojim se obezbeduje da procesor prihvati ASCII simbol sa tastature.

Rešenje a)

b) LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity MOD1_1 is end MOD1_1; architecture TB_ARCHITECTURE of MOD1_1 is -- Deklaracija testne jedinice component a8255 PORT( RESET : IN std_logic; nCS : IN std_logic; nRD : IN std_logic; nWR : IN std_logic; A : IN std_logic_vector (1 DOWNTO 0); PA : InOut std_logic_vector (7 DOWNTO 0); PB : InOut std_logic_vector (7 DOWNTO 0); PC : InOut std_logic_vector (7 DOWNTO 0); PD : InOut std_logic_vector (7 DOWNTO 0) ); end component;

Page 55: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

54

-- Definisanje signala koje cemo da posmatramo signal RESET : std_logic; signal nCS : std_logic; signal nRD : std_logic; signal nWR : std_logic; signal A : std_logic_vector (1 DOWNTO 0); signal PA : std_logic_vector (7 DOWNTO 0); signal PB : std_logic_vector (7 DOWNTO 0); signal PC : std_logic_vector (7 DOWNTO 0); signal PD : std_logic_vector (7 DOWNTO 0); begin --Mapiranje portova UUT : a8255 port map ( RESET => RESET, nCS => nCS, nRD => nRD, nWR => nWR, A => A, PA => PA, PB => PB, PC => PC, PD => PD ); --Dovodjenje pobudnih signala RESET<='1','0' after 1us; --Resetovanje na pocetku -- Zadavanje signala za selekciju cipa. Najpre treba selektovati -- cip zbog upisa komande od strane procesora; drugi put se cip -- selektuje da bi se procitao "strobovani" podatak u Portu A nCs <= '1', '0' after 4us,'1' after 9us, '0' after 5 ms; PD <= "10111000","ZZZZZZZZ" after 9us; A <= "11","00" after 10us; -- Definisanje porta A kao ulaznog.

Page 56: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

55

nWr <= '1', '0' after 5us,'1' after 8us; -- On prihvata ASCII karakter, koji se nRd <= '1','0' after 40ms, '1' after 40.2ms ; -- strobuje, a koji kasnije preuzima PA <= "11101110" after 5ms, -- procesor. "UUUUUUUU" after 35 ms; PC(4) <= '1' after 5ms, '0' after 30 ms, -- Ovaj signal generise logika tastature '1' after 31 ms; end TB_ARCHITECTURE; configuration TESTBENCH_FOR_a8255 of MOD1_1 is for TB_ARCHITECTURE for UUT : a8255 use entity work.a8255(a8255); end for; end for; end TESTBENCH_FOR_a8255; Test Bench Mod 1

Page 57: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

56

U ovom slucaju cip 8255 radi u Modu 1. Kao što se na slici vidi, ASCII simbol koji generiše tastatura se najpre «strobuje», a procesor ga

prihvata onog trenutka kada bude spreman. Transakcija se odvija zavisno od stanja signala nCs, nWr,nRd, PC(4) i A.

Page 58: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

57

Primer 3 ( mode 1 strobovani izlaz):

a) Pokazacemo nacin sprezanja stampaca na 8080 magistralu preko cipa Intel 8255. b) Kreiracemo Test_Bench kojim se obezbeduje da procesor pošalje ASCII simbol na štampac.

Rešenje a)

b) LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity MOD1_2 is end MOD1_2; architecture TB_ARCHITECTURE of MOD1_2 is -- Deklaracija testne jedinice component a8255 PORT( RESET : IN std_logic; nCS : IN std_logic; nRD : IN std_logic; nWR : IN std_logic; A : IN std_logic_vecto r (1 DOWNTO 0); PA : InOut std_logic_vector (7 DOWNTO 0); PB : InOut std_logic_vector (7 DOWNTO 0); PC : InOut std_logic_vector (7 DOWNTO 0); PD : InOut std_logic_vector (7 DOWNTO 0) ); end component; -- Definisanje signala koje cemo da posmatramo signal RESET : std_logic; signal nCS : std_logic; signal nRD : std_logic; signal nWR : std_logic; signal A : std_logic_vector (1 DOWNTO 0);

Page 59: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

58

signal PA : std_logic_vector (7 DOWNTO 0); signal PB : std_logic_vector (7 DOWNTO 0); signal PC : std_logic_vector (7 DOWNTO 0); signal PD : std_logic_vector (7 DOWNTO 0); begin -- Mapiranje portova UUT : a8255 port map ( RESET => RESET, nCS => nCS, nRD => nRD, nWR => nWR, A => A, PA => PA, PB => PB, PC => PC, PD => PD ); -- Dovodjenje pobudnih signala RESET<='1','0' after 1us; --Resetovanje na pocetku -- Najpre treba upisati komandni bajt, a zatim -- definisati Port B kao izlazni. Ovaj port -- prihvata "strobovani" ASCII simbol, a -- kasnije ga salje na stampac nCs <='1','0' after 7 us, '1' after 10 us, '0' after 20 ms, '1' after 22 ms; A <="11", "01" after 20us; nRd <='1'; nWr <='1','0' after 8 us, '1' after 9 us, '0' after 20 ms, '1' after 21 ms; PD <="10000100", --komanda "ZZZZZZZZ" after 10us, "11001100" after 20 ms, -- ASCII simbol "ZZZZZZZZ" after 22 ms; PC(2) <= '1' after 10ms, '0' after 25 ms, '1' after 25.5 ms; -- zahtev logike stampaca

Page 60: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

59

end TB_ARCHITECTURE; configuration TESTBENCH_FOR_a8255 of MOD1_2 is for TB_ARCHITECTURE for UUT : a8255 use entity work.a8255(a8255); end for; end for; end TESTBENCH_FOR_a8255; Test Bench Mod 1

Page 61: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

60

Kao i u prethodnom primeru, neophodno je da cip 8255 radi u Modu 1. Port B «strobuje» ASCII simbol koji mu šalje procesor. Kada štampac bude spreman da prihvati

simbol, onda šalje zahtev ka cipu 8255. Transakcija se odvija zavisno od stanja signala nCs, nWr,nRd, PC(2), PC(1), PC(0) i A.

Page 62: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

61

6.ZADATAK

Proveriti funkcionalnost cipa 8255 u Modu 0 i Modu 1 na sledeci nacin:

MOD 0:

1. Pokrenuti program Active-HDL cija se ikonica nalazi na Desktop-u 2. Izaberite dizajn 8255a 3. Otvoriti listing TestBench-a MOD_0 koji se nalazi u folderu TestBench 4. Uneti zadatu sekvencu podataka koju šalje procesor preko Porta D (PD) 5. Izvršiti kompilaciju pritiskom na taster <F11> 6. Podesiti entitet Top level desnim klikom na ?+? ispred imena fajla MOD_0.vhd i izaberite Set as

Top-Level 7. Otvoriti Waveform fajl MOD_0.avf koji se nalazi u folderu Waveforms 8. Podesiti vreme simulacije na 100 ? s 9. Pokrenuti simulaciju pritiskom na tastere <Alt> + <F5> 10. Ocitajte sekvencu osmobitnih podataka na Portu A (PA), kao i trenutke pojavljivanja svakog

podatka 11. Po završetku simulacije potrebno je da se vremenski dijagram uveca ili umanji, radi bolje

preglednosti. 12. Odštampati vremenski dijagram

Grupa 1: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 05h , 06h , 07h , 08h , 09h , 0Ah , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 2: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 06h , 05h , 04h , 03h , 02h , 01h , 00h , 00h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Page 63: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

62

Grupa 3: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 05h , 06h , 07h , 08h , 09h , 0Ah , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 4: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 05h , 04h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Grupa 5: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D ( PD) je: 00h , 01h , 02h , 03h , 03h , 03h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 6: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D ( PD) je: 00h , 01h , 01h , 02h , 02h , 03h , 03h , 04h , 04h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Page 64: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

63

Grupa 7: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 10h , 0Ch , 08h , 04h , 00h , 04h , 08h , 0Ch , 10h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 8: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 01h , 02h , 02h , 03h , 03h , 02h , 02h , 01h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 9: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 10h , 0Ch , 08h , 04h , 00h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 10: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 01h , 02h , 02h , 03h , 03h , 04h , 04h , 03h , 03h , 02h , 02h , 01h , 01h , 00h , Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Page 65: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

64

Grupa 11: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 06h , 05h , 04h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 12: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 03h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 13: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Grupa 14: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 05h , 00h , 00h , 00h , 00h , Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Page 66: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

65

Grupa 15: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 04h , 04h , 03h , 03h , 02h , 02h , 01h , 01h , 00h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________ Grupa 16: Sekvenca osmobitnih podataka koju šalje procesor preko Porta D (PD) je: 00h , 01h , 02h , 03h , 04h , 04h , 04h , 04h , 03h , 02h , 01h , 00h Trenutak posle kojeg je podatak prisutan na Portu A (PA) ___________________________________________________________

Page 67: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

66

MOD 1 (strobovani ulaz): 1. Pokrenuti program Active-HDL cija se ikonica nalazi na Desktop-u 2. Izaberite dizajn 8255a 3. Otvoriti listing TestBench-a MOD_1a koji se nalazi u folderu TestBench 4. Uneti binarnu vrednost ASCII karaktera koji generiše tastatura (ovaj podatak se «strobuje») 5. Izvršiti kompilaciju pritiskom na taster <F11> 6. Podesiti entitet Top level desnim klikom na ?+? ispred imena fajla MOD_1a.vhd i izaberite Set

as Top-Level 7. Otvoriti Waveform fajl MOD_1a.avf koji se nalazi u folderu Waveforms 8. Podesiti vreme simulacije na 60 ms 9. Pokrenuti simulaciju pritiskom na tastere <Alt> + <F5> 10. Ocitajte vreme posle kojeg se osmobitni podatak pojavljuje na Portu D (PD) 11. Po završetku simulacije potrebno je da se vremenski dijagram uveca ili umanji, radi bolje

preglednosti. 12. Odštampati vremenski dijagram

Grupa 1: Osmobitni podatak koji «strobuje» Port A (PA): 11100001 (E1)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 2: Osmobitni podatak koji «strobuje» Port A (PA) 01010101 (55)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________

Page 68: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

67

Grupa 3: Osmobitni podatak koji «strobuje» Port A (PA) 10011000 (98)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 4: Osmobitni podatak koji «strobuje» Port A (PA) 11000111 (C7)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 5: Osmobitni podatak koji «strobuje» Port A (PA) 11100101 (E5)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 6: Osmobitni podatak koji «strobuje» Port A (PA) 00111111 (3F)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________

Page 69: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

68

Grupa 7: Osmobitni podatak koji «strobuje» Port A (PA) 10111010 (BA)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 8: Osmobitni podatak koji «strobuje» Port A (PA) 11000100 (C4)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 9: Osmobitni podatak koji «strobuje» Port A (PA) 00001010 (0A)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 10: Osmobitni podatak koji «strobuje» Port A (PA) 00110111 (37)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________

Page 70: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

69

Grupa 11: Osmobitni podatak koji «strobuje» Port A (PA) 11111111 (FF)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 12: Osmobitni podatak koji «strobuje» Port A (PA) 01110110 (76)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 13: Osmobitni podatak koji «strobuje» Port A (PA) 10111011 (BB)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 14: Osmobitni podatak koji «strobuje» Port A (PA) 10110000 (B0)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________

Page 71: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

70

Grupa 15: Osmobitni podatak koji «strobuje» Port A (PA) 11001010 (CA)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________ Grupa 16: Osmobitni podatak koji «strobuje» Port A (PA) 00010010 (12)h Trenutak posle kojeg je «strobovani» podatak prisutan na Portu D (PD) ______________________________________

Page 72: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

71

MOD 1 (strobovani izlaz): 1. Pokrenuti program Active-HDL cija se ikonica nalazi na Desktop-u 2. Izaberite dizajn 8255a 3. Otvoriti listing TestBench-a MOD_1b koji se nalazi u folderu TestBench 4. Uneti binarnu vrednost ASCII karaktera koji treba da se odštampa na štampacu (ovaj podatak se

«strobuje») 5. Izvršiti kompilaciju pritiskom na taster <F11> 6. Podesiti entitet Top level desnim klikom na ?+? ispred imena fajla MOD_1b.vhd i izaberite Set

as Top-Level 7. Otvoriti Waveform fajl MOD_1b.avf koji se nalazi u folderu Waveforms 8. Podesiti vreme simulacije na 60 ms 9. Pokrenuti simulaciju pritiskom na tastere <Alt> + <F5> 10. Ocitajte vreme posle kojeg se osmobitni podatak pojavljuje na Portu B (PB) 11. Po završetku simulacije potrebno je da se vremenski dijagram uveca ili umanji, radi bolje

preglednosti. 12. Odštampati vremenski dijagram

Grupa 1: Osmobitni podatak koji šalje procesor preko Porta D (PD) 10111010 (BA)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 2: Osmobitni podatak koji šalje procesor preko Porta D (PD) 11001010 (CA)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________

Page 73: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

72

Grupa 3: Osmobitni podatak koji šalje procesor preko Porta D (PD) 11111111 (FF)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 4: Osmobitni podatak koji šalje procesor preko Porta D (PD) 00010010 (12)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 5: Osmobitni podatak koji šalje procesor preko Porta D (PD) 01001111 (4F)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 6: Osmobitni podatak koji šalje procesor preko Porta D (PD) 10101011 (AB)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________

Page 74: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

73

Grupa 7: Osmobitni podatak koji šalje procesor preko Porta D (PD) 10000001 (81)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 8: Osmobitni podatak koji šalje procesor preko Porta D (PD) 11100001 (E1)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 9: Osmobitni podatak koji šalje procesor preko Porta D (PD) 10111111 (BF)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 10: Osmobitni podatak koji šalje procesor preko Porta D (PD) 00111101 (3D)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________

Page 75: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

74

Grupa 11: Osmobitni podatak koji šalje procesor preko Porta D (PD) 01010101 (55)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 12: Osmobitni podatak koji šalje procesor preko Porta D (PD) 11110001 (F1)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 13: Osmobitni podatak koji šalje procesor preko Porta D (PD) 11001011(CB)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Port a B (PB) ______________________________________ Grupa 14: Osmobitni podatak koji šalje procesor preko Porta D (PD) 00001111 (0F)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________

Page 76: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

75

Grupa 15: Osmobitni podatak koji šalje procesor preko Porta D (PD) 01110110 (76)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________ Grupa 16: Osmobitni podatak koji šalje procesor preko Porta D (PD) 00010000 (10)h Trenutak u kojem je «strobovani» podatak dostupan na izlazu Porta B (PB) ______________________________________

Page 77: PROGRAMABILNI PERIFERIJSKI INTERFEJSes.elfak.ni.ac.rs/Papers/8255.pdfCitanje/upis i kontrolna logika Funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima

76

7. LITERATURA :

1. INTEL 8255 Programmable Peripheral Interface, 1986.

2. ALTERA a8255 Programmable Peripheral Interface, Sep. 1996.ver1.

3. Mile K. Stojcev, Branislav D. Petrovic ARHITEKTURE I PROGRAMIRANJE ? RACUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA 80x86

I izdanje, Elektronski fakultet, Niš, 1999.