Presentation is loading. Please wait.

Presentation is loading. Please wait.

PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255

Similar presentations


Presentation on theme: "PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255"— Presentation transcript:

1 PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255
Studenti: Alen Eftimov Dragan Živković

2 SERIJSKI I PARALELNI PRENOS PODATAKA
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 većeg broja veza (žica), u datom trenutku se prenosi više bitova.

3 SERIJSKI PRENOS PODATAKA
Serijska informacija se prenosi preko jedinstvene linije na principu bit-po-bit. Smanjuje se broj veza (žica) kojim se CPU povezuje sa U/I uređajem. Karakteriše ga niža cena i veća pouzdanost (lakša detekcija greške). Serijski prenos je sporiji. Koristi za prenos na većim rastojanjima.

4 PARALELNI PRENOS PODATAKA
Posebnim linijama prenosi se veći broj bitova. Dobijamo veću brzinu prenosa, veću nepouzdanost prenosa , težu detekciju greške i veću cenu. Koriste se za kraća rastojanja. Za razliku od serijskih, nisu dobro standardizovane.

5 Povezivanje izlaznog interfejsa na izlazni uređaj tipa D/A konvertor zasnovan na paralelnom prenosu

6 Primer paralelnog interfejsa kod koga se koriste handshake upravljačke linije

7 PROGRAMABILNI PERIFERIJSKI INTERFEJS (PPI) INTEL 8255
8255 je programabilni čip opšte namene projektovan za upotrebu u 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 uređaja ili struktura.

8 Ima 40 pina od kojih se 24 ulazno-izlazna pina mogu pojedinačno programirati u dve grupe od dvanaest pinova

9 Ovaj čip koristi se u tri osnovna režima rada:
Mode 0 (Režim 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 Mode 1 (Režim 1) - svaka grupa može da se programira da ima 8 linija ulaza ili izlaza. Od preostalih četiri, tri pina se koriste za signale handshake protokola i kontrolu prekida Mode 2 (Režim 2) - predstavlja dvosmerni rad magistrale koja koristi 8 linija za dvosmernu magistralu, i pet linija, pozajmljujući jednu od ostalih grupa, za handshake protokol

10 Interna organizacija 8255 vidljiva od strane programera

11 Bafer magistrale podataka - osmobitni bafer koji se koristi za povezivanje 8255 na sistemsku magistralu podataka procesora 8080 Čitanje/upis i kontrolna logika - funkcija ovog bloka je da upravlja svim unutrašnjim ili spoljašnjim prenosima podataka, statusnih ili kontrolnih reči On prihvata ulaze sa adresa procesora 8080 i kontrolnih magistrala, i po redu izdaje komande obema kontrolnim grupama. (nCS) - Chip Select (selektovanje čipa): “nizak nivo” na ovom ulaznom pinu omogućava komunikaciju između ‚čipa 8255 i procesora. (nRD) - Read (čitanje): “nizak nivo” na ovom ulaznom pinu omogućava čipu 8255 da pošalje podatke i statusne informacije procesora na magistralu podataka. U suštini, omogućava da procesor pročita podatke iz (nWR) - Write (upis): “nizak nivo” na ovom ulaznom pinu omogućava procesoru da upisuje podatke i kontrolne reči u čip 8255.

12 (A0 i A1) - Selekcija Portova 0 i 1: Ovi ulazni signali, u vezi sa i ulazima, kontrolišu izbor jednog od tri porta za registar kontrolne reči. Oni su normalno povezani na najmanje značajne bitove adresne magistrale (A0 i A1). (RESET) - Reset: “visok nivo” na ovom ulazu briše sve unutrašnje registre uključujući i kontrolni registar i svi Portovi (A, B i C) se postavljaju u ulazni režim.

13 Kontrolne grupe A i B - Svaki od kontrolnih blokova (grupa A i grupa B) prihvataju komande od kontrolne logike, prihvataju kontrolne reči od unutrašnje magistrale podataka i izdaju odgovarajuće 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)) Portovi A, B i C – 8 bitni portovi. Svi oni se mogu konfigurisati sistemskim softverom Port A: jedan 8-bitni izlazni leč/bafer i jedan 8-bitni ulazni leč. Port B: jedan 8-bitni ulazno/izlazni leč/bafer i jedan 8-bitni ulazni bafer. Port C: jedan 8-bitni izlazni leč/bafer i jedan 8-bitni ulazni bafer (nema leča na ulazu). Ovaj port može se podeliti na dva 4-bitna porta u zavisnosti od režima.

14 Režima rada se mogu selektovati sistemskim softverom:
Izbor režima rada Režima rada se mogu selektovati sistemskim softverom: Režim 0 – Osnovni Ulaz/Izlaz Režim 1 - Prekidni Ulaz/Izlaz Režim 2 – Dvosmerna magistrala

15 Komandni bajt komandnog registra

16 Režimi za portove A i B mogu se odvojeno definisati, dok se Port C deli na dva dela
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 prekidača ili da prikaže rezultate izračunvanja. Grupa A se može programirati u Režimu 1 da nadgleda tastaturu ili čitač trake na osnovu prekida.

17 Režim 0 ( osnovni ulaz/izlaz )
Ova funkcionalna konfiguracija obezbeđuje jednostavne ulazne i izlazne operacije za svaki od tri porta Ne zahteva se handshaking protokol, već se podaci jednostavno upisuju ili čitaju 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

18 Osnovne funkcionalne definicije Režima 0
Dva 8-bitna i dva 4-bitna porta Svaki port može biti ulazni i izlazni Izlazi su lečovani Ulazi nisu lečovani U ovom režimu su moguće 16 različitih ulazno/izlaznih konfiguracija

19 Režim 1 ( prekidni ulaz/izlaz )
Obezbeđuje prenos U/I podataka ka i od zadatog porta u vezi sa signalima prekida ili handsaking protokola Portovi A i B koriste linije na Portu C da generišu ili prihvate signale handshaking protokola

20 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 lečovani. 4-bitni port se koristi za kontrolu i status 8-bitnog porta podataka.

21 Strobovani ulaz u režimu 1

22 INTE A - kontrolisan bitskim setovanjem/resetovanjem PC4
nSTB - strobe ulaz IBF - ulazni bafer pun (Jedinica na ovom izlazu ukazuje da su podaci upisani u ulazni leč. U suštini, ovo je potvrda. IBF se setuje kada je STB ulaz na nuli, a resetuje se tokom rastuće ivice ulaza) INTR - zahtev za prekid (Jedinica na ovom izlazu se može iskorititi da prekida processor kada ulazni uređaj zahteva opsluživanje. INTR se setuje kada je nSTB na jedinici, IBF je na jedinici i INTE je na jedinici. Resetuje se tokom opadajuće ivice nRD. Ova procedura omogućava ulaznim uređajima 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

23 Strobovani izlaz u režimu 1

24 nOBF - izlazni bfer pun nACK - ulaz potvrde
(Izlaz nOBF će se postaviti na nulu da ukaže da je processor upisao podatke na zadati port. OBF F/F će se setovati rastućom ivicom WR ulaza i resetovati kada je ulaz nACK na nuli) nACK - ulaz potvrde (Nula na ovom ulazu informiše 8255 da su podaci sa Portova A i B prihvaćeni. U suštini, odgovor sa periferijskog uređaja ukazuje da je primio podatke sa izlaza CPU) INTR - zahtev za prekid (Jedinica na ovom izlazu može se upotrebiti da prekida CPU kada je izlazni uređaj primio podatke (prenete sa procesora). INTR se setuje kada je nACK na jedinici, nOBF je na jedinici i INTE je na jedinici. Resetuje se tokom opadajuće ivice nWR)

25 Režim 2 ( Prekidna dvosmerna U/I magistrala )
Ova funkcionalna konfiguracija obezbeđuje značaj za komunikaciju sa periferijskim uređajem 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 sličan način kao kod Režima 1 Dostupne su funkcije generisanja i dozvole/zabrane prekida

26 Osnovne 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 lečovani 5-bitni kontrolni port (Port C) se koristi za kontrolu i status 8-bitnog, dvosmernog porta (Port A)

27 Režim 2 kod 8255

28 INTR - zahtev za prekid Izlazne operacije: nOBF - izlazni bafer pun nACK – potvrda INTE 1 (INTE flip-flop dodeljen sa nOBF ) Ulazne operacije: nSTB - strobe ulaz IBF - ulazni bafer pun INTE 2 (INTE flip-flop dodeljen sa IBF)

29 PRIMENA Sprega 8255 sa brzim štampačem

30 Sprega 8255 sa displejem i tastaturom

31 Sprega sa tastaturom i terminalom

32 D/A i A/D konverzija

33 Sprega 8255 sa flopi diskom

34 Sprega 8255 sa CRT monitorom

35 Sprega 8255 sa čitačem kartica i industijskim mikrokontrolerom

36 Ostvarivanje distibutivnog multiprocesorskog sistema

37 PREDLOG REALIZACJE ČIPA 8255 POMOĆU VHDL-a

38 U strukturi razlikujemo 9 entiteta, odnosno blokova:
Ctrl_log PortAin PortBin DoutMUX PortAout PortBout PortCout CLK_gen MUX_global

39 ENTITET: Ctrl_log Bilo kakav transport podataka unutar ili van čipa 8255 odvija se na osnovu kontrolnih i upravljačkih signala koje generiše ovaj entitet (blok)

40 OPIS ENTITETA Ctrl_log :
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; CoutLd : OUT std_logic_vector (7 DOWNTO 0) ); END Ctrl_log;

41 OPIS ARHITEKTURE: Ctrl_log
Komponenta Ctrl_log upravlja radom cipa 8255. Ovaj blok generise svaki interni upravljacki signal Signali u koji opisuju arhitekturu Ctrl_log su: SIGNAL CtrlRegD : std_logic_vector(6 DOWNTO 0); Lecovano stanje Kontrolnog R 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

42 OPIS ARHITEKTURE: Ctrl_log - nastavak
Svaki bit kontrolnog registra predstavlja neki upravljacki bit za registre A,B i C. Poslednji bit kontrolnog registra je uvek '1‘, u suprotnom komandnim registrom se setuje/resetuje registar C Sada cemo popuniti komandni bajt Komandnog registra 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); 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;

43 OPIS ARHITEKTURE: Ctrl_log - nastavak
-- 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 -- Od vrednosti A (koju salje procesor) Ctrl_log daje naredbu DoutMUX-u koji signal da propusti na svom izlazu: 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 DoutSelect <= "011"; U suprotnom, selektuje se lecovani podatak PBin. WHEN "10" => Port C DoutSelect <= "100"; Selekcija podatka Cin WHEN "11" => DoutSelect <= "110"; Selekcija podatka iz Kontrolnog Registra WHEN OTHERS => NULL; END CASE;

44 ENTITET: PortAin Realizacija Porta A je efikasnija ukoliko se on podeli na ulazni i izlazni deo. Ulazni segment porta sadrži logiku koja prihvata podatke. PortAin prihvata podatke iz «spoljnjeg sveta» preko globalnog multipleksera, a prosleđuje ih prema entitetu DoutMux

45 OPIS ENTITETA: PortAin
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;

46 OPIS ARHITEKTURE: 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 AinProc1: PROCESS ( AinLd, Ain, AinRegQ ) --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 ) --Ukoliko je prisutan spoljasnji Reset, stanje Porta Ain postaje " " IF (RESET = '1') THEN AinRegQ <= " "; --Sa usponskom ivicom takta 8-bitni podatak ce biti dostupan na izlazu ELSIF ( Clk'EVENT and Clk = '1') THEN AinRegQ <= AinRegD; END rtl;

47 ENTITET: 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 prosleđuje ih prema entitetu DoutMux. Naravno, da li će se Port B ponašati kao ulazni ili kao izlazni, zavisi od upravljačkih signala, koja sa procesora dolazi na entitet (blok) Cnt_log.

48 OPIS ENTITETA: PortBin
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;

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

50 ENTITET: DoutMUX Zadatak entiteta DoutMux je da na osnovu upravljačkih signala generisanih od strane entiteta Cnt_log, definiše transport podataka prema izlaznim segmentima portova A, B i C (PortAout, PortBout, PortCout)

51 OPIS ENTITETA: DoutMUX
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;

52 OPIS ARHITEKTURE: DoutMUX
ARCHITECTURE rtl OF Dout_mux IS BEGIN mux_proc : PROCESS(Ain, Bin, AinReg, BinReg, CStatus, CtrlReg, DoutSelect) -- 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 <= " "; END CASE; END PROCESS mux_proc; END rtl;

53 ENTITET: 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 upravljačkih signala.U jednom trenutku, prema „spoljašnjem svetu“ komunicira samo jedan port (A, B ili C)

54 OPIS ENTITETA: PortAout
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;

55 OPIS ARHITEKTURE: 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 ) IF ( AoutLd = '0') THEN AoutRegD <= Din; ELSE AoutRegD <= AoutRegQ; END IF; END PROCESS; AOutProc2: PROCESS ( Reset, Clk ) -- 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 <= " "; ELSIF ( Clk'EVENT and Clk = '1') THEN AOutRegQ <= AOutRegD; END rtl;

56 ENTITET: PortBout Izlazni segment ovog porta sadrži logiku koja šalje podatke prema entitetu DoutMux. Zavisno od upravljačkih signala, Port B može da se definiše ili kao ulazni ili kao izlazni

57 OPIS ENTITETA: PortBout
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;

58 OPIS ARHITEKTURE: PortBout
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 ) IF ( BoutLd = '0') THEN BoutRegD <= Din; ELSE BoutRegD <= BoutRegQ; END IF; END PROCESS; BoutProc2: PROCESS ( Reset, Clk ) IF (Reset = '1') THEN BoutRegQ <= " "; ELSIF ( Clk'EVENT and Clk = '1') THEN BoutRegQ <= BoutRegD; END rtl;

59 ENTITET: PortCout Port C je definisan kao jedinstven entitet. Ovaj port se koristi kako za podatke, tako i za upravljanje handshake signalima, čime se obezbeđuje «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

60 OPIS ENTITETA: PortCout
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 DOWNTO0); 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;

61 OPIS ARHITEKTURE: PortCout
-- 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; SIGNAL RiseCin2Q : std_logic; SIGNAL RiseAwr : std_logic; SIGNAL RiseBwr : std_logic; SIGNAL RiseArd : std_logic; SIGNAL RiseBrd : std_logic; SIGNAL RiseCin : std_logic; SIGNAL RiseCin : std_logic; SIGNAL RiseCin : std_logic;

62 OPIS ARHITEKTURE: PortCout - nastavak
Procesor 8080 izdaje kontrolnu reč čipu Kontrolna reč sadrži informacije kao što su “režim”, “setuj bit”, “resetuj bit” i slično, čime se inicijalizuje funkcionalna konfiguracija 8255. Razlikujemo sledeće načine rada bloka PortCout: U režimu 0 pinovi porta C mogu biti ulazi ili izlazi U režimu 1 pinovi porta C služe kao handshake upravljačke linije, pa razlikujemo: Port A strobovani ulaz Port A strobobani izlaz Port B strobovani ulaz Port B strobobani izlaz U režimu 2 pinovi porta C takođe služe kao handshake upravljačke linije za port A koji se koristi za dvosmerni rad sa U/I uređajem.

63 ENTITET: Generator takta (CLK_gen)
Čip 8255 ima interni generator takta kojim se definišu trenuci prihvatanja podataka iz «spoljnjeg sveta», kao i trenuci promene signala unutar komponente. Treba naznačiti da je čip 8255 asinhrona komponenta, tj. da se pomenuto «taktovanje» ne vrši eksterno.

64 OPIS ENTITETA: CLK_gen
ENTITY CLK_GEN IS PORT( nCs: in std_logic; CLK: out std_logic ); END CLK_GEN;

65 OPIS ARHITEKTURE: CLK_gen
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); end process; END RTC;

66 ENTITET: Globalni multiplekser (MUX_global)
Zadatak bloka koga smo nazvali Globalni multiplekser je da obezbedi korespon-denciju između internog modela čipa i pinova na samom kućištu, kojih ima 40, računajući i pinove Vcc i Gnd.

67 OPIS ENTITETA: MUX_global
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;

68 OPIS ARHITEKTURE: MUX_global
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; -- 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

69 OPIS ARHITEKTURE: MUX_global - nastavak
-- 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;

70 SINTEZA I IMPLEMENTACIJA KOLA
Sintezu i implementaciju ćemo obaviti u programu FPGA Express, koji je deo XILINX-ovog paketa programa

71 Fizički raspored pinova na FPGA čipu

72 TESTIRAJE RADA KOLA – Režim 0
Pokazacemo kako se može spregnuti D/A konvertor na 8080 magistralu preko čipa Intel 8255 i kreiraćemo Test_Bench kojim se obezbeđuje generisanje trouganog napona, čija se amplituda menja u 8 koraka. RESET<='1','0' after 150ns; Resetovanje na pocetku nCs <='1','0' after 200ns; Zadavanje signala za sel. čipa A <="11","00" after 1us; nWr <='0' after 200ns; Zadavanje operacije upisa nRd <='1' after 200ns; -- Port A se definise kao izlazni dobija signal sa procesora i prosledjuje ga na izlaz PA. U cip 8255 najpre treba upisati komandnu rec " " pri A="11". PD <= " ", " " after 1us, " " after 11us, " " after 21us, " " after 31us, " " after 41us, " " after 51us, " " after 61us, " " after 71us, " " after 81us, " " after 91us, " " after 101us, " " after 111us, " " after 121us;

73 TESTIRAJE RADA KOLA – Režim 0

74 TESTIRAJE RADA KOLA – Režim1 strobovani ulaz
Pokazaćemo način sprezanja tastature na 8080 magistralu preko čipa Intel 8255 i kreiraćemo Test_Bench kojim se obezbeđuje da procesor prihvati ASCII simbol sa tastature. RESET<='1','0' after 1us; Resetovanje na pocetku -- Zadavanje signala za selekciju cipa. Najpre treba selektovati čip 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 <= " ","ZZZZZZZZ" after 9us; A <= "11","00" after 10us; Definisanje porta A kao ulaznog. nWr <= '1', '0' after 5us,'1' after 8us; On prihvata ASCII karakter, nRd <= '1','0' after 40ms, '1' after 40.2ms ; -- koji se strobuje, a koji PA <= " " after 5ms, kasnije preuzima procesor. "UUUUUUUU" after 35 ms; PC(4) <= '1' after 5ms, '0' after 30 ms, Ovaj signal generise logika tastature '1' after 31 ms;

75 TESTIRAJE RADA KOLA – Režim1 strobovani ulaz

76 TESTIRAJE RADA KOLA – Režim1 strobovani ulaz

77 TESTIRAJE RADA KOLA – Režim1 strobovani izlaz
Pokazaćemo način sprezanja štampača na magistralu preko čipa Intel 8255 i kreiraćemo Test_Bench kojim se obezbeđuje da procesor pošalje ASCII simbol na štampač. 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 <=" ", komanda "ZZZZZZZZ" after 10us, " " after 20 ms, ASCII simbol "ZZZZZZZZ" after 22 ms; -- zahtev logike stampaca PC(2) <= '1' after 10ms, '0' after 25 ms, '1' after 25.5 ms;

78 TESTIRAJE RADA KOLA – Režim1 strobovani izlaz

79 TESTIRAJE RADA KOLA – Režim1 strobovani izlaz

80 Literatura INTEL 8255 Programmable Peripheral Interface, 1986.
ALTERA a8255 Programmable Peripheral Interface, Sep ver1. Mile K. Stojčev, Branislav D. Petrović ARHITEKTURE I PROGRAMIRANJE MRAČUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA 80x86, I izdanje, Elektronski fakultet, Niš, 1999.


Download ppt "PROGRAMABILNI PERIFERIJSKI INTERFEJS INTEL 8255"

Similar presentations


Ads by Google