68
ELEKTRONSKI FAKULTET U NIŠU MIKROPROCESORSKI SISTEMI Projektovanje interfejsa za povezivanje čipa PIA-8255 na APB magistralu Niš, 2006

ELEKTRONSKI FAKULTET U NI Š U

  • Upload
    chanel

  • View
    52

  • Download
    1

Embed Size (px)

DESCRIPTION

ELEKTRONSKI FAKULTET U NI Š U. MIKROPROCESORSKI SISTEMI. Projektovanje interfejsa za povezivanje čipa PIA -8255 na APB magistralu. Niš, 2006. 1. UVOD - PowerPoint PPT Presentation

Citation preview

Page 1: ELEKTRONSKI FAKULTET U NI Š U

ELEKTRONSKI FAKULTET U NIŠU

MIKROPROCESORSKI SISTEMI

Projektovanje interfejsa za povezivanje čipa PIA-8255 na APB magistralu

Niš, 2006

Page 2: ELEKTRONSKI FAKULTET U NI Š U

1. UVOD Medjusobno povezivanje čipova na štampanoj ploči predstavlja veoma važan aspekt za uspešnu realizaciju visoko performansnih digitalnih sistema time što direktno omogućava da veliki broj komponenata sistema efikasno razmenjuju podatke.

Ova mogućnost obezbedjuje da integrisane komponente sistema budu veoma dobro ukompovane u jedan distribuirani sistem.

Da bi se uspešno realizovao ovaj cilj danas je razvijen veći broj komunikacionih sprežnih tehnologija, kakve su npr.: Hyper Transport, RapidIO, PCI Express pomoću kojih se ostvaruje efikasna komunikacija na nivou čip-ka-čip.

Sa druge strane napredak na polju VLSI tehnologije uslovio je da se sve veći broj gradivnih blokova sistema integriše u jedinstveni sistem. Ovakva rešenja se nazivaju System–on-Chip (SoC) dizajn.

Page 3: ELEKTRONSKI FAKULTET U NI Š U

Osnovni problem koji se pri ovome javlja predstavlja efikasno medjusobno povezivanje gradivnih blokova unutar čipa.

U cilju uspešnog rešavanja ovog problema koriste se standardizovane interne SoC magistrale.

Tipični reprezenti ovakvih magistrala su: AMBA, AVALON, Core Connect, Wishbone, Sillicon Backplane Network, CoreFrame, Marble, PI bus, OCP, VCI (Virtual Component Interface).

System–on-Chip (SoC) dizajn se standardno realizuje od većeg broja IP-ova (Intelectual Property) kao gotove komponente koje treba medjusobno povezati u jedinstveni sistem.

Pri ovome jedan od glavnih projektantskih izazova predstavlja projektovanje interfejs logike koja predstavlja ljusku za IP i koja omogućava da se IP poveže na odgovarajuću sistemsku magistralu.

Page 4: ELEKTRONSKI FAKULTET U NI Š U

U ovom semestralnom radu biće:

razmatrana mogućnost povezivanja programibilnog paralelnog perifernog interfejsa, PIA-APB-8255 (Parallel Interface Adapter Intel 8255 for AMBA APB Bus), realizovanog kao jezgro (IP) na APB magistralu koja je sastavni deo AMBA magistrale,

kreiran VHDL kod koji se odnosi na opis na behavioral nivou kola PIA-APB-8255,

data implementacija kola PIA-APB-8255 koja se odnosi na Actel FPGA tehnologiju.

Ilustracije radi, jedan tipičan SoC dizajn baziran na AMBA magistrali kod koga je na APB povezano PIA kolo, prikazan je na Slici 1.1:

Page 5: ELEKTRONSKI FAKULTET U NI Š U

APB

Slika 1.1: SoC dizajn baziran na AMBA magistrali

ASB ili AHB

8051

Interfejs

InterfejsTimer 8253

InterfejsUART 8251

InterfejsPIA 8255

BRIDGE

Memorija

Page 6: ELEKTRONSKI FAKULTET U NI Š U

Kao što se vidi na slici 1.1 SoC dizajn zasnovan na AMBA magistrali je hijerarhijski organizovan oko dve magistrale, AHB (ili ASB) magistrale koja se koristi za brzi prenos podataka izmedju procesora i memorije i APB magistrale koja se koristi za spregu perifernih programibilnih čipova kakvi su: 8253 (Timer), 8251 (UART) i 8255 (PIA). Sprega između ASB i APB se ostvaruje preko mosta (bridge).

Analizirajući šemu na slici 1.1 uočavamo da se svaki IP blok spreže na odgovarajuću magistralu preko specifičnog projektovanog interfejsa. U konkretnom slučaju razmatrani su periferni programibilni čipovi iz familije INTEL, koji su pre sega projektovani za realizaciju sistema zasnovanim na INTEL-ovim procesorima, kakvi su: 8088, 8086, 80286, 80386 itd.

Page 7: ELEKTRONSKI FAKULTET U NI Š U

Sobzirom da SoC dizajn može da bude zasnovan na bilo kom procesoru, ili multiprocesorskom sistemu neophodno je projektovati logiku interfejs tipa koja obezbedjuje povezivanje raznorodnih (heterogenih) IP-ova na jedinstveni sistem. U konkretnom slučaju rešavan je problem projektovanja interfejsa pomoću koga se ostvaruje sprega između jezgra PIA 8255 i APB magistrale kod AMBA. U tom cilju neophodno je bilo prvo kreirati VHDL kod za odgovarajući interfejs, zatim definisati testne sekvence za proveru ispravnosti rada kola, i na kraju implementirati kolo u FPGA tehnologiji.

Shodno predhodnom, celokupna materija koja je izložena u ovom radu je podeljena je na 8 poglavlja:

Page 8: ELEKTRONSKI FAKULTET U NI Š U

Poglavlje 1 je uvodno, koje u kratkim crtama ukazuje na problem koji je rešavan, i način kako je rešavan. U poglavlju 2 dat je kratak opis AMBA magistrale. U poglavlju 3 prikazani su detalji koji se odnose na operacije prenosa podataka po APB magistrali. Interna struktura čipa PIA 8255, definicija ulazno - izlaznih signala, i režimi rada opisani su u poglavlju 4. VHDL opis na behavioral nivou čipa PIA-APB-8255 prikazan je u poglavlju 5.

Page 9: ELEKTRONSKI FAKULTET U NI Š U

Poglavlje 6 tiče se testiranja čipa PIA-APB-8255 sa ciljem da se proveri ispravnost dizajna.

U poglavlju 7 prikazan je postupak implementacije čipa PIA-APB-8255 na Xilinx -ovo FPGA kolo 2S50PQ208-6 iz familije Xilinx SPARTAN2.

U poglavlju 8 opisana je laboratorijska vežba pomoću koje studenti koristeći alate za projektovanje navedene u ovom radu mogu da provere ispravnost implementiranog čipa.

Page 10: ELEKTRONSKI FAKULTET U NI Š U

2. AMBA MAGISTRALA

2.1. OPIS AMBA MAGISTRALE

AMBA (Advanced Microcontroller Bus Architecture) je hijerarhijski organizovana sistemska magistrala namenjena za SoC dizajne koju čine sledeće tri magistrale:

♠ Advanced High-performance Bus (AHB);

♠ Advanced System Bus (ASB);

♠ Advanced Peripheral Bus (APB).

Page 11: ELEKTRONSKI FAKULTET U NI Š U

AHB je veoma brza magistrala namenjena za spregu procesor–memorija. Procesor može biti master ili slave tipa.

ASB je takođe brza magistrala namenjena za spregu procesor-memorija. ASB je alternativna magistrala, pogodna za korišćenje kod sistema visokih performansi kada oni ne koriste AHB.

APB je magistrala koja se koristi za efikasnu spregu sa perifernim programibilnim čipovima. Sprega između ASB i APB se ostvaruje preko mosta (bridge).

Page 12: ELEKTRONSKI FAKULTET U NI Š U

2.2. STRUKTURA TIPIČNOG MIKRORAČUNARA ZASNOVANOG NA AMBA MAGISTRALI

Na slici 2.1 prikazana je struktura jednog tipičnog mikroračunarskog sistema zasnovanog na AMBA magistrali. S obzirom da je sistem tipa SoC dizajn uobičajeno je da se ovako rešenje naziva mikrokontroler. Kao što se vidi sa slike 2.1 mikrokontroler je hijerarhijski organizovan oko dve magistrale. Na višem nivou je AHB ili ASB, a na nižem APB. Zbog zahteva za većom brzinom u prenosu podataka na AHB (ASB) se povezuju CPU, memorijski podsistem, interfejs za memorijsko proširenje, i DMA kontroler. Na APB magistrali povezani su programibilni periferni interfejs čipovi tipa: tajmer, UART, PIA, tastaturni čip i dr.

Page 13: ELEKTRONSKI FAKULTET U NI Š U

Visoko – performans

ni ARM procesor

Visoko - propusni on-chip RAM

Visoko – propusni spoljni

memorijski interfejs

Glavna DMA

magistrala

MOST

UART Brojač

Tastatura PIA

AHB ili ASB APB

AHB prema APB most ili

ASB prema APB most

Slika 2.1: AMBA-bas mikrokontroler

Page 14: ELEKTRONSKI FAKULTET U NI Š U

3. AMBA APB MAGISTRALA

APB (Advanced Peripheral Bus) je deo AMBA hijerarhije magistrala. Ova magistrala se koristi za efikasnu spregu sa perifernim programibilnim interfejs čipovima. Važno je to, da se kod APB sve promene signala dešavaju na rastuću ivicu taktnog signala.

3.1. OPIS APB MAGISTRALE

Opis delovanja APB magistrale objašnjen je u zaglavljima:

♠ dijagram stanja♠ operacija upisa♠ operacija čitanja

APB komunicira sa ASB ili AHB magistralom i sa programibilnim periferijama, pomoću ulazno – izlaznih signala i to: PCLK, PRESET, PWRITE, PSEL, PENABLE, kao i ulazima PWDATA i

PADDR, i izlazom PRDATA.

Page 15: ELEKTRONSKI FAKULTET U NI Š U

3.1.1. Dijagram stanja

Na slici 3.1 prikazan je dijagram stanja. Pomoću njega se

predstavlja funkcionisanje ove magistrale.

Slika 3.1: Dijagram stanja

Page 16: ELEKTRONSKI FAKULTET U NI Š U

Kao što se sa slike 3.1 vidi, funkcionisanje ove magistrale može se opisati sa tri stanja: IDLE, SETUP i ENABLE.

IDLE - Pasivno stanje. Signali PSELx i PENABLE su u stanju logičke nule.

SETUP - Kada su signali PSELx u stanju logičke jedinice a PENABLE u stanju logičke nule magistrala prelazi u stanje SETUP. Ona ostaje u ovom stanju jedan taktni interval, nakon čega se sa usponskom ivicom taktnog signala prelazi u stanje ENABLE.

ENABLE - Prelazi se u ovo stanje kada su signali PSELx i PENABLE u stanju logičke jedinice. Ovo stanje traje jedan taktni interval. Iz ovog stanja se vraćamo u stanje IDLE na kraju operacije, a

ako postoji zahtev za prenos ona prelazi u stanje SETUP.

Page 17: ELEKTRONSKI FAKULTET U NI Š U

Slika 3.2: Operacija upisa

3.1.2. Operacija upisa

Vremenski dijagram koji prikazuje redosled dogadjaja prikazan je na slici 3.2:

Prvi taktni interval odgovara stanju IDLE, a nakon toga u drugom taktnom intervalu prelazi se u stanje SETUP. Treći taktni interval odgovara stanju ENABLE.

Adrese, linije za podatke i PWRITE postavljaju se u toku drugog, a važeći su u toku trećeg taktnog signala. Operacija upisa završava se četvrtim taktnim signalom.

Page 18: ELEKTRONSKI FAKULTET U NI Š U

3.1.3 Operacija čitanja

Vremenski dijagram koji prikazuje redosled operacije čitanja prikazan je na slici 3.3:

Prvi taktni interval odgovara stanju IDLE. U drugom taktnom intervalu prelazi se u stanje SETUP. Dok treći taktni interval odgovara stanju ENABLE.

Adrese se postavljaju u toku drugog, i važeće su u toku trećeg taktnog signala. PWRITE koji je aktivan u toku prvog taktnog intervala, u drugom taktnom intervalu se postavlja na neaktivnu vrednost. Linije za podatke se postavljaju tokom ENABLE stanja. Operacija čitanja završava se četvrtim taktnim signalom.

Slika 3.3: Operacija čitanja

Page 19: ELEKTRONSKI FAKULTET U NI Š U

3.2. APB most

APB most predstavlja interfejs izmedju AHB (ili ASB) magistrale i APB magistrale. On je slave za AHB (ili ASB), a master za APB.

3.2.1 APB master

Blok dijagram

Na slici 3.4 prikazan je blok dijagram APB master-a.

Sa strane AHB (ili ASB)

magistrale postoje signali PRESETn i PCLK, kao i PRDATA. A sa strane APB magistrale PADDR, PWDATA, signali PSEL, PENABLE i PWRITE.

Slika 3.4: APB signal interfejs APB mosta

Page 20: ELEKTRONSKI FAKULTET U NI Š U

Funkcija APB mastera

APB master obavlja sledeće funkcije:

generiše adresu i zadržava je validnom tokom operacije upisa ili čitanja;

dekodira adresu i generiše periferijski selekt PSELx. Samo jedan periferijski selekt signal PSELi, i=1,2…n, može biti aktivan tokom operacije upisa ili čitanja;

prebacuje podatke sa AHB (ASB) magistrale na APB u toku operacije upisa;

prebacuje podatke sa APB na sistemsku magistralu u toku operacije čitanja;

generiše impuls za pamćenje adrese (strob signal), PENABLE, u toku

operacije čitanja ili upisa.

Page 21: ELEKTRONSKI FAKULTET U NI Š U

APB slave

APB slave ima jednostavan, ali ipak fleksibilan interfejs.

Tačna implementacija interfejsa zavisi od konkretne aplikacije.

Blok dijagram

Na slici 3.5 prikazan je pogled na most sa sistemske magistrale, APB slave.

Slika 3.5: Dijagram APB – slave

Page 22: ELEKTRONSKI FAKULTET U NI Š U

Funkcija APB slave-a

APB slave interfejs je veoma fleksibilan. Za operaciju upisa podaci se postavljaju u narednim vremenskim trenucima:

na obe rastuće ivice PCLK kada je PSELx na logičkoj jedinici; na rastućoj ivici PENABLE kada je PSELx na logičkoj jedinici.

Selekcioni signal PSELx, adresa PADDR i signal upisa PWRITE mogu biti kombinovani da bi se odredilo kom registru treba obnoviti sadržaj pomoću operacije upisa.

Za operaciju čitanja podaci mogu biti prebačeni na magistralu podataka kada je PWRITE na logičkoj nuli, a PSELx i PENABLE na logičkoj jedinici. U tom slučaju se PADDR koristi za odredjivanje registra iz koga treba da se izvrši operacija čitanja.

Talasni oblici signala su dati na slici 3.6.

Page 23: ELEKTRONSKI FAKULTET U NI Š U

Slika 3.6: Talasni oblici APB slave

Page 24: ELEKTRONSKI FAKULTET U NI Š U

4. 8255

Intelov čip 8255, pararelni programibilni interfejs PPI (Programmable Peripheral Interface) je CMOS komponenta koja se koristi kod aplikacija koje se odnose na paralelni prenos podataka. Sa strane poseduje 24 ulazno/izlazna pina koji mogu biti programibilni u dve grupe po 12. Izradjen je u CMOS tehnologiji sa jednostrukim +5V napajanjem. Režimi rada se softverski postavljaju.

4.1. OPIS KOLA 8255

Na slici 4.1 je data blok šema 8255 kola:

Page 25: ELEKTRONSKI FAKULTET U NI Š U

Slika 4.1: Blok šema

Page 26: ELEKTRONSKI FAKULTET U NI Š U

BAFER PODATAKA

Trostatički bi-direkcioni 8 – bitni bafer koristi se kao interfejs za povezivanje 8255 na sistemsku magistralu. Podaci se primaju i šalju preko bafera dok se izvršavaju ulazno - izlazne CPU operacije. Kontrolni kod i statusna informacija se takodje šalju kroz bafer.

R/W I KONTROLNA LOGIKA

Funkcija ovog bloka je da upravlja sa svim unutrašnjim i spoljašnjim prenosima. Prihvata upravljačke signale sa sistemske magistrale, upravlja radom ulazno/izlaznog bafera i generiše signale za rad celokupnog kola.

Izbor PIA se vrši signalom CS (Chip Select).

Page 27: ELEKTRONSKI FAKULTET U NI Š U

CS (Chip Select)

Chip Select je ulazni signal kojim se dozvoljava rad kola. Kada kolo nije selektovano, ne obavlja se nikakva operacija. Aktivan je kada je postavljen u stanju logičke nule.

RD (Read)

Kada je ovaj signal na logičkoj nuli u toku je operacija čitanja.

WR (Write)

Kada je ovaj signal na logičkoj nuli u toku je operacija upisa.

A1 i A0

To su adresni signali, kojima se u vezi sa ulaznim signalima RD i WR, vrši selekcija jednog od tri porta (port A, port B ili port C) ili se pak

kontrolni kod upisuje u registar za upis načina (MOD-a) rada.

Page 28: ELEKTRONSKI FAKULTET U NI Š U

U zavisnosti od stanja signala RS, WR, CS, A1 i A0, čip 8255

obavlja sledeće funkcije koje su date u tabeli 4.1.

A1 A0 CSCS RDRD WRWRUlazne operacije

(READ)

0 0 0 0 1 PORT A → DATA BUS

0 1 0 0 1 PORT B → DATA BUS

1 0 0 0 1 PORT C → DATA BUS

Izlazne operacije (WRITE)

0 0 0 1 0 DATA BUS → PORT A

0 1 0 1 0 DATA BUS → PORT B

1 0 0 1 0 DATA BUS → PORT C

1 1 0 1 0DATA BUS →

CONTROL

Nemoguce funkcije

x x 1 x x neaktivno stanje

1 1 0 0 1 neaktivno stanje

x x 0 1 1 neaktivno stanje

Tabela 4.1: Tabela stanja za ulaze R/W i kontrolne logike

Page 29: ELEKTRONSKI FAKULTET U NI Š U

RESET

Kada je aktivan (stanje logičke jedinice) kolo se postavlja u početno stanje.

UPRAVLJANJE PORTOVIMA IZ GRUPE A i GRUPE B

R/W kontrolna logika priprema modove rada i upravljačke signale za tri 8-bitna ulazno-izlazna porta. Upravljanje ulazno - izlaznih portova je podeljeno u dve grupe: u grupu A i grupu B.

Svaka od ovih grupa prihvata “komande od R/W kontrolne logike, prima informacije sa unutrašnje magistrale kola i postavlja pravu komandu za vezane portove.

Kontrolnu grupu A čine: Port A i gornja polovina porta C (C7 - C4).

Kontrolnu grupu B čine: Port B i donja polovina porta C (C3 – C0).

Page 30: ELEKTRONSKI FAKULTET U NI Š U

Port A, B i C

8255 sadrži tri 8 – bitna porta ( A,B i C ).

Port A. Jedan 8 – bitni data izlazni leč/bafer i jedan 8 - bitni data ulazni leč.

Port B. Jedan 8 – bitni data izlazni leč/bafer i jedan 8 – bitni data ulazni bafer.

Port C. Jedan 8 – bitni data izlazni leč/bafer i jedan 8 – bitni data ulazni bafer (bez leča za ulaz). Ovaj port može biti rasporedjen u dva 4 - bitna porta ispod načina kontrole. Svaki 4 - bitni port sadrži jedan 4 - bitni leč i to može koristiti za kontrolu izlaznih signala i kontrolu stanja

ulaznih signala u vezi sa portovima A i B.

Page 31: ELEKTRONSKI FAKULTET U NI Š U

4.2. OPIS RADA KOLA 8255

Kompletno funkcionisanje kola je definisano od strane sistemskog softvera.

Kod 8255 dostupna su tri načina rada (MOD-a) i to: Mode 0 – Osnovni U/I,

Mode 1 – Strobovani U/I,

Mode 2 – Bi-direkciona magistrala.

Pinovi grupe B se mogu programirati za rad u mode 0 ili mode 1,

a pinovi grupe A za rad u mode 0, mode 1 ili mode 2.

Page 32: ELEKTRONSKI FAKULTET U NI Š U

Mode 0 – naziva se osnovni ulazno/izlazni način rada koji uzrokuje da 8255 radi kao baferovani ulazni ili lečovani izlazni uredjaj.

Mode 1 – strobovani ulazno/izlazni način rada postavlja portove A i B i odgovarajuće upravljačke linije višeg i nižeg dela porta C. Ovaj mod se koristi za podršku rada handshake procedura i prekida, iniciranih od strane ulazno/izlaznih uredjaja u slučajevima kada se prenos podataka ostvaruje bez direktne intervencije CPU-a. Razlikuju se dva tipa rada kod mode 1, a to su mode 1 strobovani ulaz, i mode 1 strobovani izlaz.

Mode 2 – način rada ovog moda važi samo za grupu A. Kod bidirekcionog rada podaci se predaju i primaju preko istih veza. Ovakav način rada koristan je kod sprezanja dva računara.

Page 33: ELEKTRONSKI FAKULTET U NI Š U

5. čip PIA–APB-8255

5.1. OPIS ČIPA PIA-APB-8255

Ovo kolo predstavlja interfejs izmedju APB magistrale i spoljnjeg sveta. Zbog specifičnog rada APB magistrale ono u sebi sadrži interfejs logiku koja je za ovaj slučaj specifično projektovana, a za spregu sa spoljnim svetom koristi se PIA-8255 koji je kompatibilan po svojoj funkciji sa Intelovim čipom 8255. To znači da je sprega sa spoljnim svetom ostvarena shodno principima rada modu 0, modu 1, i modu 2 PIA-8255. Takvo kolo dato je na slici 5.1:

Page 34: ELEKTRONSKI FAKULTET U NI Š U

PIA-APB-8255

PORT A

PORT B

PORT C

PADDR

PWDATA

PRDATA

PCLK

PENABLE

PSELx

PRESET

PWRITE

Slika 5.1: Čip PIA-APB-8255

Page 35: ELEKTRONSKI FAKULTET U NI Š U

Interfejs APB-bridge

PIA 8255

RESET

DOUT[7:0]

DIN[7:0]

CS

RD

WR

PADDR

PWDATA

PRDATA

PCLK

PENABLE

PSELx

PRESET

PWRITE

PORT A

PORT B

PORT C

Slika 5.2: Unutrašnja struktura čipa PIA-APB-8255

Page 36: ELEKTRONSKI FAKULTET U NI Š U

Interfejs logika, čipa PIA-APB-8255, nazvana APB-bridge je specifično projektovana i izvedeno kolo je tipa sekvencijalna mreža. Na svom ulazu prihvata signale PCLK, PENABLE, PRESET, PSELx, PWRITE, PADDR i PWDATA sa APB magistrale, kao i izlaz DOUT sa PIA-8255.

Na izlazu ova interfejs logika generiše signale RESET, WR, CS i RD ka PIA-8255, a PRDATA i DIN ka APB magistrali.

Na slici 5.3 je data struktura interfejsa APB-bridge:

Page 37: ELEKTRONSKI FAKULTET U NI Š U

Slika 5.3: Interfejs APB-bridge

Page 38: ELEKTRONSKI FAKULTET U NI Š U

Da bi ostvarili kompatibilnost u radu sa PIA-8255 neophodno je bilo obaviti sledeće aktivnosti:

1) Preslikati PIA-8255 na jedinstvenu ulazno – izlaznu adresu koja u konkretnom slučaju iznosi “00009000”H.

2) Da bi obavili zadatak definisan stavkom 1, neophodno je bilo ugraditi blok komparator, U3, čiji je izlaz “enable” definisan na sledeći način:

if ADDR="10010000" thenenable =”1”

else enable =”0”.Na ulaz ADDR se dovode signali PADDR [15:].

3) Sobzirom da je magistrala sinhrona (odlikuje se time da se svi dogadjaji odvijaju u ritmu taktnog signala), neophodno je bilo zbog kompatibilnosti u radu dovesti na ulaz bloka U4, globalni taktni signal APB magistrale, PCLK. Ovim signalom obezbedjeni su uslovi za sinhrono generisanje signala READ (RD), WRITE (WR) i ChipSelect (CS) PIA-8255.

Page 39: ELEKTRONSKI FAKULTET U NI Š U

4) Blok kontrolna logika, U4, prihvata signale PENABLE, PRESET, PSELx, PWRITE i PCLK sa APB magistrale. Na ulazu ADDR_en prihvata izlazni signal enable iz bloka U3. Na izlazima generiše signale sel_in i sel_out. Način generisanja signala na izlazu ovog bloka shodno vrednosti ulaza definisan je tabelom 5.1.

PCLK PRESET PSELx PENABLE PWRITE ADDR_en Stanje sel_in sel_out

0 X X X X RESET 0 0

1 0 0 0 1 IDLE 0 0

1 1 0 1 1 SETUP 0 0

1 1 1 1 1 ENABLE 1 0

1 1 1 0 1 ENABLE 0 1

1 X X X 0 DISABLE 0 0

Tabela 5.1: Tabela stanja kontrolne logike

Page 40: ELEKTRONSKI FAKULTET U NI Š U

5) Blok U1 je baferski stepen. Njegov princip rada se može opisati sledećim iskazom:if enable = '1'

then a =>yelse y =“Z“.

Gde je Z stanje visoke impedanse. Na ulazu a prihvata signal PWDATA[7:0] sa APB magistrale, a izlaz y

se prosledjuje na signal DIN.

6) Blok U2 je baferski stepen čiji se rad opisuje na sledeć način:if enable = '1'

then a =>yelse y =“Z“.

Gde je Z stanje visoke impedanse. Ulaz a prihvata DOUT, a izlaz y se prosledjuje na ulaz bloka U5.

Page 41: ELEKTRONSKI FAKULTET U NI Š U

7) PRDATA [7:0] se formiraju ulazom DOUT, koji se preko bloka U2 vodi na ulaz bloka U5, bloka koji vrši generisanje još 24 bita veće težine. Ovaj blok vrši beznakovno proširenje 8-bitne ulazne na 32-bitnu izlaznu vrednost na sledeći način:iz <= "000000000000000000000000"&ul.

Ulaz ul prihvata izlaz y sa bloka U2, a izlaz iz se prosledjuje na PRDATA.

8) Kada je APB magistrala u stanju enable, blok U4 generiše izlazne signale sel_in i sel_out koji služe i da se da dozvola da se upiše ili pročita informacija. Oni su aktivni u toku jedne periode taktnog impulsa, što znači da bi na izlazu interfejsa imali validnu informaciju samo za taj period. Medjutim, informacija u PIA-8255 može da se upiše ili pročita tek na sledeću rastuću ivicu taktnog impulsa, pri čemu signali RD, WR i CS moraju biti stabilni pre te rastuće ivice taktnog impulsa, konkretno oni su uzeli neku vrednost pre te rastuće ivice a ne u samom trenutku. Ako bi se desilo da se u istom trenutku menja i stanje signala i rastuća ivica taktnog signala, može se desiti da dodje do greške upisa zbog nemogućnosti da se u tačno istom trenutku promene.

Page 42: ELEKTRONSKI FAKULTET U NI Š U

Vremenski dijagram PIA-8255 se može videti sa slike 5.4.

Slika 5.4: Vremenski dijagram čipa 82559) Da bi ispunili potrebu definisanu stavkom 8, neophodno je bilo ugraditi

blokove U6 i U9 (DoubleEdgeSR) koji sa ulazima EdgeRESET, EdgeSET i RESET generišu izlaz SRout. Ovi blokovi se direktno setuju opadajućom ivicom EdgeRESET, a direktno se resetuju rastućom ivicom EdgeSET. Blokovi U6 i U9 su strukturno opisani. EdgeRESET je taktni ulaz i na njega se dovodi globalni taktni signal APB magistrale, PCLK. Na slici 5.5 je dat vremenski dijagram ulazno-izlaznih signala ovih blokova.

Page 43: ELEKTRONSKI FAKULTET U NI Š U

reset edge set edge

Slika 5.5: Vremenski dijagram

Neophodno je koristiti dva ovakva bloka. Jedan će biti za upis a drugi za čitanje informacija. Jedan od njih, U6, će na ulazu EdgeSET prihvatiti izlaz sel_in a blok U9 će na ulazu EdgeSET prihvatiti izlaz sel_out bloka U4.

Izlaz SRout bloka U6 služi da se da dozvola za upisivanje informacija jer se vodi na ulaz bloka za invertovanje U11, čiji se izlaz y vezuje na ulaz enable bloka U1, a vezuje se i na izlaz WR. Izlaz SRout drugog bloka služi da se da dozvola za iščitavanje informacija jer se vodi na ulaz bloka za invertovanje U12, čiji se izlaz y vezuje na ulaz enable bloka U2, a i vezuje se na izlaz RD.

Page 44: ELEKTRONSKI FAKULTET U NI Š U

10) Blok U10 je AND kolo koje generiše aktivan (logička jedinica) izlaz output kada su oba ulaza I0 i I1 aktivna (logička jedinica). Na jedan ulaz se dovodi izlaz bloka U6 a na drugi ulaz izlaz bloka U9. Izlaz output se prosledjuje na CS.

11) Potreba za korišćenjem blokova DoubleEdgeSR je ta da se njime kontrolišu signali sel_in i sel_out, jer kad dodje sledeća rastuća ivica taktnog signala signali sel_in i sel_out bi se postavili na nulu, i ulaz DIN PIA-8255 bi bio u stanju visoke impedanse Z.

Sa blokom U6 produžujemo signal sel_in (isto važi i za signal

sel_out sa blokom U9), do sledeće rastuće ivice taktnog signala.

Sa slike 5.6 se vidi da se od signala sel_in pravi signal enable koji je duži od njega za jednu periodu kloka, a od njega se prave signali RD, WR i CS tako da na rastućoj ivici (zelena linija na slici) dobijamo stabilno CS=0, WR=0 i RD=1 i izvršiće se upis podatka DIN=89 koji je takodje stabilan pre nailaska ove rastuće ivice.

Page 45: ELEKTRONSKI FAKULTET U NI Š U

Slika 5.6: Vremenski dijagram

12) Da bi obezbedili ulazni signal RESET PIA-8255 koji je aktivan na logičkoj jedinici i kome se dovodi izlazni signal RESET sa interfejsa APB-bridge, neophodno je bilo ugraditi blok za invertovanje, U8. Na ulaz x ovog bloka se dovodi signal PRESET sa APB magistrale koji na izlazu generiše signal y koji se prosledjuje na izlaz RESET.

13) PADDR [2:0] se direktno vezuju za PIA-8255 na njegov ulaz A.

Page 46: ELEKTRONSKI FAKULTET U NI Š U

5. 2. PREDLOG REALIZACIJE ČIPA PIA-APB-8255

Za sam razvoj i testiranje koda korišćen je programski paket ACTIV-HDL.

U strukturi na najvišem nivou razlikujemo 2 entiteta, kao na slici 5.7:

entitet “APB_bridge“

entitet “ čip 8255 “

DOUT(7:0) DIN(7:0)

PADDR(31:0) PRDATA(31:0)

PCLK RESET

PENABLE nCS

PRESET nRD

PSELx nWR

PWDATA(31:0)

PWRITE

U1

APB_bridge

A(1:0) DOUT(7:0)

CLK PAEN

DIN(7:0) PAOUT(7:0)

PAIN(7:0) PBEN

PBIN(7:0) PBOUT(7:0)

PCIN(7:0) PCEN(7:0)

RESET PCOUT(7:0)

nCS

nRD

nWR

U2

a8255

PADDR(31:0)

PWDATA(31:0)

PRDATA(31:0)

PCLKPENABLEPRESET

PSELx

PWRITE

PADDR(1:0)

PAIN(7:0)PBIN(7:0)PCIN(7:0)

PCOUT(7:0)

PBOUT(7:0)

PAOUT(7:0)

Slika 5.7: Blok šema čipa PIA-APB-8255

Page 47: ELEKTRONSKI FAKULTET U NI Š U

5.2.1 APB_bridge Predstavlja interfejs logiku čipa PIA-APB-8255, koja je za ovaj

slučaj specifično projektovana i izvedeno kolo je tipa sekvencijalna mreža.

Na ulazu prihvata signale PCLK, PENABLE, PRESET, PSELx, PWRITE sa magistrale kao i PADDR, PWDATA i DOUT.

Na izlazu ova interfejs logika generiše signale RESET, nWR, nCS i nRD, kao i PRDATA i DIN. Na slici 5.8 data je blok šema interfejsa, APB-bridge, čipa PIA-APB-8255. Ova interfejs logika se sastoji od sledećih entiteta:

♠ entitet “Control_ Logic“ ♠ entitet “DoubleEdgeSR“, (blokovi U6 i U9 na slici)♠ entitet “TriSTATE_BUFFER“, (blokovi U1 i U2)♠ entitet “ADDR_COMPARE“♠ entitet “Proširenje“ ♠ entitet “INV_1”, (blokovi U8, U11 i U12), kao i♠ entitet “AND_2”

Page 48: ELEKTRONSKI FAKULTET U NI Š U

PSELx

PENABLE

PWRITE

PRESET

PCLK

PADDR(31:0)

PWDATA(31:0)

PRDATA(31:0)

a(7:0) y(7:0)

enable

U1

TriSTATE_BUFFER

a(7:0)y(7:0)

enable

U2

TriSTATE_BUFFER

PWDATA(7:0)

ADDR(7:0) enable

U3

ADDR_compare

ADDR_en sel_in

PCLK sel_out

PENABLE

PRESET

PSELx

PWRITE

U4

control_logic

PADDR(15:8)

EdgeRESET SRout

EdgeSET

RESET

U6

DoubleEdgeSRGND

x y

U8

INV_1

PRESET

EdgeRESET SRout

EdgeSET

RESET

U9

DoubleEdgeSR

I0 OUTPUT

I1

U10

AND_2

xy

U11

INV_1

xy

U12

INV_1

RESET

nCS

nRD

nWR

DIN(7:0)

DOUT(7:0)

ul(7:0)iz(31:0)

U5

Prosirenje

Slika 5.8: Blok šema APB-bridge

Control_Logic DoubleEdgeSR

TriSTATE_BUFFER

ADDR_COMPARE

Proširenje

INV_1

AND_2

Page 49: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.1. CONTROL_LOGIC

To je blok koji predstavlja kontrolnu logiku interfejsa APB-bridge koji upravlja radom celokupnog dizajna i koji odredjuje stanja same APB magistrale.

Signal sa ulaza, ADDR_en, kada je u stanju logičke jedinice dozvoljava rad bloka, tj. prenos signala na izlaz.

Signalima PSELx i PENABLE se upravlja stanjima APB magistrale (IDLE, SETUP, ENABLE).

Signalom PWRITE se dozvoljava upis (aktivan u stanju logičke jedinice). Ovaj blok na svojim izlazima generiše signale sel_in i sel_out koji služe da se da dozvola za upisivanje informacija ili iščitavanje informacija, sa ili u magistralu.

Page 50: ELEKTRONSKI FAKULTET U NI Š U

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity control_logic is

port (PCLK: in std_logic;PRESET: in std_logic;PSELx : in std_logic;PENABLE: in std_logic;PWRITE : in std_logic; ADDR_en: in std_logic;sel_in : out std_logic;sel_out: out std_logic);

end control_logic;

architecture control_logic of control_logic istype state_type is (reset, idle, setup, enable);

signal state,next_state: state_type;begin

proc1:process (PCLK,PRESET) isbeginif PRESET='0' then state<=reset;elsif rising_edge(PCLK) then state<=next_state;

end if;

end process proc1;

ADDR_en sel_in

PCLK sel_out

PENABLE

PRESET

PSELx

PWRITE

control_logic

Slika 5.9: Blok Control_logic

proc2:process (PSELx,PENABLE, PWRITE, state)begin

sel_in<='0';sel_out<='0'; case state is when reset => next_state <= idle;when idle => if PSELx = '1' then next_state <= setup;elsenext_state <= idle; end if;when setup => if PENABLE='1' thennext_state <= enable;end if;

when enable => if PENABLE='1' then if ADDR_en='1' thenif PWRITE='1' then sel_in <='1';else sel_out <='1';end if;end if;end if;if PSELx='1' thennext_state <= setup;elsenext_state <= idle;end if; when others => next_state <= reset; end case; end process proc2;

end control_logic;

Page 51: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.2. ADDR_COMPARE

Blok koji prihvata osmobitnu informaciju na svom ulazu, vrši uporedjivanje sa heksadecimalnim “90“ i na izlazu generiše signal enable u stanju logičke jedinice ili logičke nule, u zavisnosti od ostvarene jednakosti, što znači da ako je ostvarena jednakost, signal enable je u stanju logičke jedinice; u suprotnom je u stanju logičke nule.

ADDR(7:0) enable

ADDR_compare

Slika 5.10: Blok ADDR_compare

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;entity ADDR_compare is

port (ADDR: in std_logic_vector(7 downto 0); enable: out std_logic); end ADDR_compare;architecture ADDR_compare of ADDR_compare isbegin

process(ADDR)begin

if ADDR="10010000" thenenable <='1';

else enable<='0';end if;

end process;

end ADDR_compare;

Page 52: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.3 TriSTATE_BUFFER (TROSTATIČKI BAFER)

Blok koji prihvata osmobitnu informaciju sa svog ulaza, kada je aktivan signal za dozvolu rada enable. Ako je signal za dozvolu rada aktivan (logička jedinica) tada se stanje ovog bafera prosledjuje na njegov izlaz. U suprotnom, izlaz bafera je u stanju visoke impedanse.

Slika 5.11: BlokTriSTATE_BUFFER

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;entity TriSTATE_BUFFER is

port( a : in STD_LOGIC_VECTOR(7 downto 0);y : out STD_LOGIC_VECTOR(7 downto 0);enable : in STD_LOGIC);

end TriSTATE_BUFFER;architecture TriSTATE_BUFFER of TriSTATE_BUFFER isbeginprocess(a,enable)

beginif enable = '1' then

y <= a;else

y <= (others=>'Z');end if;

end process;

end TriSTATE_BUFFER;

a(7:0) y(7:0)

enable

TriSTATE_BUFFER

Page 53: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.4 DoubleEdgeSR

Ovo kolo će se direktno setovati opadajućom ivicom EdgeRESET, a direktno će se resetovati rastućom ivicom EdgeSET. Kolo je strukturno realizovano i njegova struktura je prikazana na slici 5.12., dok je na slici 5.5 dat vremenski dijagram ulazno-izlaznih signala ovog kola

EdgeRESET

VCC

SRoutRESET

EdgeSETCLK Q

CLR

DATA

U1

DFF_R

CLK Q

CLR

DATA

U2

DFF_F

I0 O

I1

U3

XOR_2

I0OUTPUT

I1

U5

AND_2

I0 OUTPUT

I1

U6

AND_2

I0 O

I1

U4

OR_2x y

U7

INV_1

I0 OUTPUT

I1

U8

AND_2

x y

U9

INV_1

Slika 5.12: DoubleEdgeSR

S vremenskog dijagrama se vidi da je izlazni signal Srout nakon rastuće ivice signala RESET postavljen u stanju logičke jedinice.

Pojavom rastuće ivice signala EdgeSET, Srout prelazi na logičku nulu i ostaje sve do pojave opadajuće ivice EdgeRESET.

reset edge set edge

Slika 5.5: Vremenski dijagram

Sa slike 5.12 vidimo da se izlazni signal Srout postavlja u stanje logičke nule rastućom ivicom signala EdgeSET, a u stanje logičke jedinice se postavlja opadajućom ivicom signala EdgeRESET.

Page 54: ELEKTRONSKI FAKULTET U NI Š U

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity DoubleEdgeSR is

port( EdgeRESET : in STD_LOGIC;EdgeSET : in STD_LOGIC; RESET : in STD_LOGIC;

SRout : out STD_LOGIC ); end DoubleEdgeSR;

architecture DoubleEdgeSR of DoubleEdgeSR iscomponent AND_2

port ( I0 : in STD_LOGIC;

I1 : in STD_LOGIC;OUTPUT : out STD_LOGIC);

end component;component DFF_F

port (CLK : in STD_LOGIC;CLR : in STD_LOGIC;DATA : in STD_LOGIC;Q : out STD_LOGIC );

end component;component DFF_R

port (CLK : in STD_LOGIC;CLR : in STD_LOGIC;

DATA : in STD_LOGIC; Q : out STD_LOGIC );

end component;

Slika 5.13: DoubleEdgeSR

U1 : DFF_Rport map(CLK => EdgeSET,

CLR => NET1012,DATA => VCC,Q => NET18);

U2 : DFF_Fport map(CLK => NET92,

CLR => NET1012,DATA => VCC,Q => NET62 );

U3 : XOR_2port map(I0 => NET18,

I1 => NET62,O => NET1534 );

U4 : OR_2port map(I0 => RESET,

I1 => NET69,O => NET1012 );

U5 : AND_2port map(I0 => NET62,

I1 => NET18,OUTPUT => NET69);

component INV_1port ( x : in STD_LOGIC;

y : out STD_LOGIC);end component;component OR_2

port ( I0 : in STD_LOGIC;I1 : in STD_LOGIC;O : out STD_LOGIC);

end component;component XOR_2

port ( I0 : in STD_LOGIC;I1 : in STD_LOGIC;O : out STD_LOGIC);

end component;constant VCC_CONSTANT : STD_LOGIC := '1';signal NET1012 : STD_LOGIC;signal NET1443 : STD_LOGIC;signal NET1456 : STD_LOGIC;signal NET1534 : STD_LOGIC;signal NET18 : STD_LOGIC;signal NET62 : STD_LOGIC;signal NET69 : STD_LOGIC;signal NET92 : STD_LOGIC;signal VCC : STD_LOGIC;begin

U6 : AND_2port map( I0 => NET1456,

I1 => NET18,OUTPUT => NET92);

U7 : INV_1port map(x => EdgeSET,

y => NET1443 );U8 : AND_2

port map( I0 => NET1443,I1 => EdgeRESET,OUTPUT => NET1456 );

U9 : INV_1port map( x => NET1534,

y => SRout );VCC <= VCC_CONSTANT;

end DoubleEdgeSR;

EdgeRESET SRout

EdgeSET

RESET

DoubleEdgeSR

Page 55: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.4.1 OR_2 (ILI kolo)

Listing koda:

library IEEE;use IEEE.std_logic_1164.all;entity OR_2 is

port ( I0 : in std_logic;I1 : in std_logic;O : out std_logic);

end entity;architecture gate_arch of OR_2 isbegin

O <= I0 or I1;

end gate_arch;

Slika 5.14: OR_2 kolo

I0 O

I1

OR_2

5.2.1.4.2 DFF_R (D Flip Flop)

Listing koda:

library IEEE;use IEEE.std_logic_1164.all;entity DFF_R is

port ( CLR : in std_logic;CLK : in std_logic;DATA : in std_logic;Q : out std_logic);

end entity;architecture DFF_R_arch of DFF_R issignal TEMP_Q: std_logic:='0';begin

process (CLK, CLR)begin

if CLR = '1' thenTEMP_Q <=

'0';elsif

rising_edge(CLK) thenTEMP_Q <=

DATA;end if;

end process;Q <= TEMP_Q;

end DFF_R_arch;

CLK Q

CLR

DATA

DFF_R

Slika 5.15: D Flip Flop

5.2.1.4.3 DFF_F (D Flip Flop)

Listing koda:

library IEEE;use IEEE.std_logic_1164.all;

entity DFF_F is

port ( CLR : in std_logic;

CLK : in std_logic;

DATA : in std_logic;

Q : out std_logic);

end entity;architecture DFF_F_arch of DFF_F is

signal TEMP_Q: std_logic:='0';

beginprocess (CLK, CLR)begin

if CLR = '1' then

TEMP_Q <= '0';elsif falling_edge(CLK) then

TEMP_Q <= DATA;

end if;end process;Q <= TEMP_Q;

end DFF_F_arch;

Page 56: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.4.4 XOR_2

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity XOR_2 is

port ( I0 : in std_logic;I1 : in std_logic;O : out std_logic);

end entity;architecture gate_arch of XOR_2 isbegin

O <= I0 xor I1;

end gate_arch;

I0 O

I1

XOR_2Slika 5.17: XOR_2 kolo

Proširenje

Blok koji koji stavlja 24 bita veće težine na logičku nulu. On prihvata osmobitni podatak sa svog ulaza i to 8 bita manje težine, dodeljuje nule na mestu 24 bita veće težine i na izlazu generiše 32 bitni podatak.

5.2.1.4.4 XOR_2

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity Prosirenje is

port (ul:in std_logic_vector(7 downto 0); iz:out std_logic_vector(31 downto 0));

end Prosirenje; architecture Prosirenje of Prosirenje isbegin

iz<="000000000000000000000000"&ul;

end Prosirenje;

ul(7:0)iz(31:0)

ProsirenjeSlika 5.18: Blok Proširenje

Page 57: ELEKTRONSKI FAKULTET U NI Š U

5.2.1.6 INV_1 (Invertor)

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity INV_1 is

port( x : in STD_LOGIC;y : out STD_LOGIC);

end INV_1; architecture INV_1 of INV_1 is begin

y<=not x;

end INV_1;

x y

INV_1Slika 5.19: Invertor

5.2.1.7 AND_2 (I kolo)

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;entity AND_2 is

port( I0: in std_logic;

I1: in std_logic; OUTPUT: out std_logic);

end AND_2;architecture AND_2 of AND_2 is begin

OUTPUT <= I0 and I1;

end AND_2;

I0 OUTPUT

I1

AND_2Slika 5.20: I_kolo

Page 58: ELEKTRONSKI FAKULTET U NI Š U

5.2.2 Interfejs APB-bridge

Listing koda:

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity PIA_APB_8255 isport(PCLK : in STD_LOGIC; PENABLE : in STD_LOGIC; PRESET : in STD_LOGIC; PSELx : in STD_LOGIC; PWRITE : in STD_LOGIC; PADDR : in STD_LOGIC_VECTOR(31 downto

0); PAIN : in STD_LOGIC_VECTOR(7 downto 0); PBIN : in STD_LOGIC_VECTOR(7 downto 0); PCIN : in STD_LOGIC_VECTOR(7 downto 0);

PWDATA : in STD_LOGIC_VECTOR(31 downto

0); PAOUT : out STD_LOGIC_VECTOR(7 downto

0);PBOUT : out STD_LOGIC_VECTOR(7 downto 0);

PCOUT : out STD_LOGIC_VECTOR(7 downto 0);

PRDATA : out STD_LOGIC_VECTOR(31 downto 0));

end PIA_APB_8255;

DOUT(7:0) DIN(7:0)

PADDR(31:0) PRDATA(31:0)

PCLK RESET

PENABLE nCS

PRESET nRD

PSELx nWR

PWDATA(31:0)

PWRITE

APB_bridge

architecture PIA_APB_8255 of PIA_APB_8255 iscomponent a8255port (A : in STD_LOGIC_VECTOR(1 downto 0); CLK : in STD_LOGIC; DIN : in STD_LOGIC_VECTOR(7 downto 0); PAIN : in STD_LOGIC_VECTOR(7 downto 0); PBIN : in STD_LOGIC_VECTOR(7 downto 0); PCIN : in STD_LOGIC_VECTOR(7 downto 0); RESET : in STD_LOGIC; nCS : in STD_LOGIC; nRD : in STD_LOGIC; nWR : in STD_LOGIC; DOUT : out STD_LOGIC_VECTOR(7 downto 0); PAEN : out STD_LOGIC; PAOUT : out STD_LOGIC_VECTOR(7 downto 0); PBEN : out STD_LOGIC; PBOUT : out STD_LOGIC_VECTOR(7 downto 0); PCEN : out STD_LOGIC_VECTOR(7 downto 0); PCOUT : out STD_LOGIC_VECTOR(7 downto 0));end component;component APB_bridgeport (DOUT : in STD_LOGIC_VECTOR(7 downto 0); PADDR : in STD_LOGIC_VECTOR(31 downto 0);

PCLK : in STD_LOGIC;

PENABLE : in STD_LOGIC; PRESET : in STD_LOGIC; PSELx : in STD_LOGIC; PWDATA : in STD_LOGIC_VECTOR(31 downto 0); PWRITE : in STD_LOGIC; DIN : out STD_LOGIC_VECTOR(7 downto 0); PRDATA : out STD_LOGIC_VECTOR(31 downto 0); RESET : out STD_LOGIC; nCS : out STD_LOGIC; nRD : inout STD_LOGIC; nWR : inout STD_LOGIC);end component;signal NET2616 : STD_LOGIC;signal NET2622 : STD_LOGIC;signal NET2628 : STD_LOGIC;signal NET2634 : STD_LOGIC;signal BUS2610 : STD_LOGIC_VECTOR (7 downto 0);signal BUS2640 : STD_LOGIC_VECTOR (7 downto 0);beginU1 : APB_bridgeport map(DIN => BUS2610, DOUT => BUS2640, PADDR => PADDR, PCLK => PCLK,

PENABLE => PENABLE,

PRDATA => PRDATA, PRESET => PRESET, PSELx => PSELx, PWDATA => PWDATA, PWRITE => PWRITE, RESET => NET2616, nCS => NET2622, nRD => NET2628, nWR => NET2634);U2 : a8255port map(A(0) => PADDR(0), A(1) => PADDR(1), CLK => PCLK, DIN => BUS2610, DOUT => BUS2640, PAIN => PAIN, PAOUT => PAOUT, PBIN => PBIN, PBOUT => PBOUT, PCIN => PCIN, PCOUT => PCOUT, RESET => NET2616, nCS => NET2622, nRD => NET2628, nWR => NET2634);

end PIA_APB_8255;

Slika 5.21: Interfejs APB-bridge

Page 59: ELEKTRONSKI FAKULTET U NI Š U

5.2.4 Listing koda čipa PIA-APB-8255

library IEEE;use IEEE.std_logic_1164.all;

entity PIA_APB_8255 isport(PCLK : in STD_LOGIC; PENABLE : in STD_LOGIC; PRESET : in STD_LOGIC; PSELx : in STD_LOGIC; PWRITE : in STD_LOGIC; PADDR : in STD_LOGIC_VECTOR(31 downto 0); PAIN : in STD_LOGIC_VECTOR(7 downto 0); PBIN : in STD_LOGIC_VECTOR(7 downto 0); PCIN : in STD_LOGIC_VECTOR(7 downto 0);

PWDATA : in STD_LOGIC_VECTOR(31 downto 0); PAOUT : out STD_LOGIC_VECTOR(7 downto 0);

PBOUT : out STD_LOGIC_VECTOR(7 downto 0); PCOUT : out STD_LOGIC_VECTOR(7 downto 0); PRDATA : out STD_LOGIC_VECTOR(31 downto 0));

end PIA_APB_8255;

PADDR(31:0)

PCLK

PENABLE

PRESET

PSEx

PWRITE

PWDATA(31:0)

PRDATA(31:0)

PAIN(7:0)PBIN(7:0)PCIN(7:0)

PAOUT(7:0)PBOUT(7:0)PCOUT(7:0)

PIA_APB_8255

Slika 5.30: PIA-APB-8255

architecture PIA_APB_8255 of PIA_APB_8255 is component a8255port (A : in STD_LOGIC_VECTOR(1 downto 0); CLK : in STD_LOGIC; DIN : in STD_LOGIC_VECTOR(7 downto 0); PAIN : in STD_LOGIC_VECTOR(7 downto 0);

PBIN : in STD_LOGIC_VECTOR(7 downto 0);

PCIN : in STD_LOGIC_VECTOR(7 downto 0); RESET : in STD_LOGIC; nCS : in STD_LOGIC; nRD : in STD_LOGIC; nWR : in STD_LOGIC; DOUT : out STD_LOGIC_VECTOR(7 downto 0); PAEN : out STD_LOGIC; PAOUT : out STD_LOGIC_VECTOR(7 downto 0); PBEN : out STD_LOGIC; PBOUT : out STD_LOGIC_VECTOR(7 downto 0); PCEN : out STD_LOGIC_VECTOR(7 downto 0); PCOUT : out STD_LOGIC_VECTOR(7 downto 0));

end component;

component APB_bridgeport (DOUT : in STD_LOGIC_VECTOR(7 downto 0); PADDR : in STD_LOGIC_VECTOR(31 downto 0); PCLK : in STD_LOGIC; PENABLE : in STD_LOGIC; PRESET : in STD_LOGIC; PSELx : in STD_LOGIC; PWDATA : in STD_LOGIC_VECTOR(31 downto 0); PWRITE : in STD_LOGIC; DIN : out STD_LOGIC_VECTOR(7 downto 0); PRDATA : out STD_LOGIC_VECTOR(31 downto 0); RESET : out STD_LOGIC; nCS : out STD_LOGIC; nRD : inout STD_LOGIC; nWR : inout STD_LOGIC);end component;signal NET2616 : STD_LOGIC;signal NET2622 : STD_LOGIC;signal NET2628 : STD_LOGIC;signal NET2634 : STD_LOGIC;signal BUS2610 : STD_LOGIC_VECTOR (7 downto 0);signal BUS2640 : STD_LOGIC_VECTOR (7 downto 0);beginU1 : APB_bridgeport map(DIN => BUS2610, DOUT => BUS2640,

PADDR => PADDR,

PCLK => PCLK, PENABLE => PENABLE, PRDATA => PRDATA, PRESET => PRESET, PSELx => PSELx, PWDATA => PWDATA, PWRITE => PWRITE, RESET => NET2616, nCS => NET2622, nRD => NET2628, nWR => NET2634);U2 : a8255port map(A(0) => PADDR(0), A(1) => PADDR(1), CLK => PCLK, DIN => BUS2610, DOUT => BUS2640, PAIN => PAIN, PAOUT => PAOUT, PBIN => PBIN, PBOUT => PBOUT, PCIN => PCIN, PCOUT => PCOUT, RESET => NET2616, nCS => NET2622, nRD => NET2628, nWR => NET2634);

end PIA_APB_8255;

Page 60: ELEKTRONSKI FAKULTET U NI Š U

6. TESTIRANJE RADA čipa PIA-APB-8255 U cilju provere ispravnosti rada dizajna, napisan je TestBench program

i izvršena je simulacija rada kola.

Sledi listing Test-bench programa:

library ieee;use ieee.std_logic_1164.all;

entity pia_apb_8255_tb isend pia_apb_8255_tb;architecture TB_ARCHITECTURE of pia_apb_8255_tb is

component pia_apb_8255port(

PCLK : in std_logic;PENABLE : in std_logic;PRESET : in std_logic;PSELx : in std_logic;PWRITE : in std_logic;PADDR : in std_logic_vector(31 downto 0);PAIN : in std_logic_vector(7 downto 0);PBIN : in std_logic_vector(7 downto 0);PCIN : in std_logic_vector(7 downto 0);PWDATA : in std_logic_vector(31 downto 0);PAOUT : out std_logic_vector(7 downto 0);PBOUT : out std_logic_vector(7 downto 0);PCOUT : out std_logic_vector(7 downto 0);PRDATA : out std_logic_vector(31 downto 0) );

end component;entity

signal PCLK : std_logic;

signal PENABLE : std_logic;

signal PRESET : std_logic;signal PSELx : std_logic;signal PWRITE : std_logic;signal PADDR : std_logic_vector(31 downto 0);signal PAIN : std_logic_vector(7 downto 0);signal PBIN : std_logic_vector(7 downto 0);signal PCIN : std_logic_vector(7 downto 0);signal PWDATA : std_logic_vector(31 downto 0);signal PAOUT : std_logic_vector(7 downto 0);signal PBOUT : std_logic_vector(7 downto 0);signal PCOUT : std_logic_vector(7 downto 0);signal PRDATA : std_logic_vector(31 downto 0);

beginUUT : pia_apb_8255port map (PCLK => PCLK,

PENABLE => PENABLE,PRESET => PRESET,PSELx => PSELx,PWRITE => PWRITE,PADDR => PADDR,PAIN => PAIN,PBIN => PBIN,PCIN => PCIN,PWDATA => PWDATA,PAOUT => PAOUT,PBOUT => PBOUT,PCOUT => PCOUT,

PRDATA => PRDATA);

Page 61: ELEKTRONSKI FAKULTET U NI Š U

-- Add your stimulus here ...

PCLK <= not PCLK after 20ns;PRESET<='1','0' after 5ns,'1' after 10ns;PSELx <='0','1' after 80ns,'0' after 160ns,'1' after 240ns,'0' after

320ns,'1' after 440ns,'0' after 520ns;PENABLE <='0','1' after 120ns,'0' after 160ns,'1' after 280ns,'0' after

320ns,'1' after 480ns,'0' after 520ns;PWRITE <='0', '1' after 80ns,'0' after 160ns,'1' after 240ns,'0' after

320ns,'0' after 440ns,'0' after 520ns; PADDR<="00000000000000001001000000000000","00000000000000001001000000000011"

after 50ns,"00000000000000001001000000000000" after 200ns,"00000000000000001001000000000010" after 440ns;

PWDATA<="00000000000000000000000010001001","00000000000000000000000000001010" after 190ns;

PAIN<="00000001";PBIN<="00011010";PCIN<="00000000","00000111" after 450ns;end TB_ARCHITECTURE;configuration TESTBENCH_FOR_pia_apb_8255 of pia_apb_8255_tb is

for TB_ARCHITECTUREfor UUT : pia_apb_8255

use entity work.pia_apb_8255(pia_apb_8255);end for;

end for;

end TESTBENCH_FOR_pia_apb_8255;

Prethodni listing test – bencha najbolje pokriva sve situacije koje se mogu javiti tokom rada. Sve to možemo videti na vremenskom dijagramu koji simulira rad opisanog čipa PIA-APB-8255. Sa ovog dijagrama, dat na slici 6.1, može se uočiti funkcionisanje sistema.

Slika 6.1: Vremenski dijagram rada čipa PIA-APB-8255

Page 62: ELEKTRONSKI FAKULTET U NI Š U

7. IMPLEMENTACIJA čipa PIA-APB-8255 Sintezu i implementaciju smo izvršili u programskom paketu

XILINX ISE 6.3, firme XILINX. Ovaj programski paket namenjen je za razvoj aplikacija baziranih na njihovim CPLD i FPGA kolima.

Prilikom implementacije čipa PIA-APB-8255 iskorišćeno je FPGA kolo iz XILINX-ove familije SPARTAN2, device 2S50PQ208-6. To je kuciste PQ208, što znači da poseduje 208 pinova. Morali smo da iskoristimo ovo kućiste jer čip koji implementiramo zahteva 174 pina. Upotrebljeno je, iako nije bilo potrebe za tolikim brojem pinova, jer je to najmanje pakovanje koje poseduje ova familija.

Na slici 7.1, prikazana je šema sinteze čipa PIA-APB-8255 na najvišem nivou, koju je izgenerisao program Xilinx ECS. Na šemi se mogu uočiti osnovni blokovi od kojih se čip sastoji.

Page 63: ELEKTRONSKI FAKULTET U NI Š U

Slika 7.1: Šema sinteze čipa PIA-APB-8255

Page 64: ELEKTRONSKI FAKULTET U NI Š U

Programom se može analizirati svaki blok ponaosob do nivoa samih gejtova. Na slici 7.2 je data šema sinteze bloka čipa PIA-APB-8255, APB- bridge:

Slika 7.2: Šema sinteze APB-bridge

Na slici 7.3 data je šema sinteze čipa 8255:

Page 65: ELEKTRONSKI FAKULTET U NI Š U
Page 66: ELEKTRONSKI FAKULTET U NI Š U

Nakon toga prešlo se na samu implementaciju kola na konkretnom FPGA kolu. Naredni listing nam pokazuje dobijene rezultate:

Using target part "2s50pq208-6".Removing unused or disabled logic...Running cover...Running directed packing...Running delay-based LUT packing...Running related packing...Design Summary--------------Number of errors: 0Number of warnings: 5

Logic Utilization: Number of Slice Flip Flops: 27 out of 1,536 1% Number of 4 input LUTs: 148 out of 1,536 9%

Logic Distribution: Number of occupied Slices: 85 out of 768 11% Number of Slices containing only related logic: 85 out of 85 100% Number of Slices containing unrelated logic: 0 out of 85 0% *See NOTES below for an explanation of the effects of unrelated logic

Total Number of 4 input LUTs: 148 out of 1,536 9% Number of bonded IOBs: 102 out of 140 72% IOB Flip Flops: 35 Number of GCLKs: 1 out of 4 25%

Number of GCLKIOBs: 1 out of 4 25%

Total equivalent gate count for design: 1,483

Na osnovu dobijenih podataka, što se vidi iz prethodnog listinga, bitno je da se na kraju vidi da je implemetnirano kolo zauzelo 1483 ekvivalentnih gejtova.

Treba istaći da je maksimalna radna frekvencija kola 213.4 MHz.

Na slikama 7.4 i 7.5 data je unutrašnja struktura koja je dobijena nakon implementacije kola gde se vide zauzeti blokovi unutar kola.

Slika 7.4 nam prikazuje sam razmeštaj ćelija gde možemo videti i koji pinovi u kolu su iskorišćeni. Na slici se vidi da izvodi kola nisu grupisani; to je da bi se postiglo približno isto kašnjenje veza do svih pinova.

Slika 7.4: Šema zauzetosti ćelija kola

Page 67: ELEKTRONSKI FAKULTET U NI Š U

Izgled povezanosti samih veza prikazan je na slici 7.5:

Slika 7.5: Šema veza ćelija u kolu

Page 68: ELEKTRONSKI FAKULTET U NI Š U

Na slici 7.6 prikazan je raspored pinova na FPGA kolu:

Slika 7.6: Raspored pinova