MIKROPROCESORSKI SISTEMI Projektovanje interfejsa za povezivanje čipa PIA-8255 na APB magistralu Niš, 2006

Download Report

Transcript MIKROPROCESORSKI SISTEMI Projektovanje interfejsa za povezivanje čipa PIA-8255 na APB magistralu Niš, 2006

ELEKTRONSKI FAKULTET U NIŠU
MIKROPROCESORSKI SISTEMI
Projektovanje interfejsa za povezivanje
čipa PIA-8255 na APB magistralu
Niš, 2006
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.

Osnovni problem koji se pri ovome javlja predstavlja efikasno
medjusobno povezivanje gradivnih blokova unutar čipa.

U cilju uspešnog rešavanja ovog problema
standardizovane interne SoC magistrale.
koriste se

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.
 U ovom semestralnom radu biće:
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,
 razmatrana
 kreiran VHDL kod koji se odnosi na opis na behavioral nivou kola
PIA-APB-8255,
 data implementacija kola PIA-APB-8255 koja
FPGA tehnologiju.
se odnosi na Actel
 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:
8051
Memorija
Interfejs
ASB ili AHB
BRIDGE
APB
Interfejs
Timer
8253
Interfejs
UART
8251
Interfejs
PIA
8255
Slika 1.1: SoC dizajn baziran na AMBA magistrali

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.

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:

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.

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 PIAAPB-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.
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).

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 procesormemorija. 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).
2.2. STRUKTURA TIPIČNOG
ZASNOVANOG NA AMBA MAGISTRALI
MIKRORAČUNARA

Na slici 2.1 prikazana je struktura jednog
mikroračunarskog sistema zasnovanog na AMBA magistrali.
tipičnog

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.
Visoko –
performansni
ARM procesor
Visoko –
propusni spoljni
memorijski
interfejs
Visoko propusni onchip RAM
AHB ili ASB
Glavna DMA
magistrala
M
O
S
T
UART
APB
Tastatura
AHB prema APB most
ili
ASB prema APB most
Slika 2.1: AMBA-bas mikrokontroler
Brojač
PIA
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.
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

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.
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.
Slika 3.2: Operacija upisa
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
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
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.
APB slave

APB slave ima jednostavan,
ali ipak fleksibilan interfejs.

Tačna
interfejsa zavisi
aplikacije.
implementacija
od konkretne
Blok dijagram

Na slici 3.5 prikazan je pogled
na most sa sistemske magistrale,
APB slave.
Slika 3.5: Dijagram APB – slave
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.
Slika 3.6: Talasni oblici APB slave
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:
Slika 4.1: Blok šema
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).
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.

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
CS
RD
WR
Ulazne 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
0
DATA 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
RESET

stanje.
Kada je aktivan (stanje logičke jedinice) kolo se postavlja u početno
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).
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.
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.

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.
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:
PADDR
PORT A
PCLK
PENABLE
PRESET
PIA-APB-8255
PSELx
PORT B
PWRITE
PWDATA
PORT C
PRDATA
Slika 5.1: Čip PIA-APB-8255
PADDR
PORT A
PCLK
DIN[7:0]
PENABLE
PRESET
PSELx
RESET
Interfejs
APB-bridge
CS
PWRITE
RD
PWDATA
WR
PRDATA
PIA 8255
DOUT[7:0]
Slika 5.2: Unutrašnja struktura čipa PIA-APB-8255
PORT B
PORT C

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:
Slika 5.3: Interfejs APB-bridge

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" then
enable =”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.
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
5) Blok U1 je baferski stepen. Njegov princip rada se može opisati
sledećim iskazom:
if enable = '1'
then a =>y
else 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 =>y
else y =“Z“.
Gde je Z stanje visoke impedanse.
Ulaz a prihvata DOUT, a izlaz y se prosledjuje na ulaz bloka U5.
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.

Vremenski dijagram PIA-8255 se može videti sa slike 5.4.
Slika 5.4: Vremenski dijagram čipa 8255
9) 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 ulaznoizlaznih signala ovih blokova.
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.
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.
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.
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 “
PRDATA(31:0)
U2
U1
D O U T (7 :0 )
PADDR(31:0)
PCLK
PENABLE
PRESET
PSELx
PWDATA(31:0)
PWRITE
P A D DR (3 1:0 )
P CLK
P E NA BL E
PADDR(1:0)
D IN (7:0 )
P R D A TA (3 1:0 )
RE S E T
A (1 :0 )
CLK
D IN (7:0 )
P A IN(7 :0 )
D O U T (7 :0 )
P A EN
P A O UT (7:0 )
nC S
P B IN(7 :0 ) P B O UT (7:0 )
P R E SE T
nR D
P C IN (7 :0 )
P S EL x
nW R
RE S E T
P W D AT A (3 1 :0 )
nC S
P W R IT E
nR D
APB_bridge
PAOUT(7:0)
P B EN
PBOUT(7:0)
P C E N(7 :0 )
P C O UT (7:0 )
PCOUT(7:0)
nW R
a8255
PAIN(7:0)
PBIN(7:0)
PCIN(7:0)
Slika 5.7: Blok šema čipa PIA-APB-8255
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, APBbridge, č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”
ADDR_COMPARE
Control_Logic
DoubleEdgeSR
U3
PADD R (15:8)
A D D R (7 : 0 )
e nab le
AND_2
ADDR_compare
PADDR(31:0)
U8
U4
PR ESET
A DDR_en
PCLK
PENABLE
PRESET
PSELx
PWRITE
P CLK
x
RESET
y
s e l_ in
INV_1
s e l_o ut
DIN(7:0)
P E NA BL E
P R E SE T
U6
P S EL x
P W R IT E
E d g eR E SE T
S R o ut
INV_1
E d ge SE T
control_logic
RE S E T
U10
GND
DoubleEdgeSR
U1
I0
PW D ATA(7: 0)
a(7 : 0 ) y (7 :0 )
U9
e nab le
E d g eR E SE T
PWDATA(31:0)
U5
PRDATA(31:0)
iz (3 1: 0 ) ul(7 : 0 )
TriSTATE_BUFFER
U2
y (7 :0 ) a(7 : 0 )
nCS
S R o ut
AND_2
E d ge SE T
nRD
RE S E T
DoubleEdgeSR
e nab le
Prosirenje
TriSTATE_BUFFER
nWR
U11
y
Proširenje
O U T PU T
I1
x
INV_1
U12
TriSTATE_BUFFER
y
x
INV_1
DOUT(7:0)
Slika 5.8: Blok šema APB-bridge
5.2.1.1. CONTROL_LOGIC

To je blok koji predstavlja kontrolnu logiku interfejsa APBbridge 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.
Listing
koda:=>
when enable
if PENABLE='1' then
proc2:process
PWRITE, state)
library
IEEE; (PSELx,PENABLE,
if ADDR_en='1'
then
begin
use if
IEEE.STD_LOGIC_1164.all;
PWRITE='1' then
sel_in<='0';
entity
control_logic
is
sel_in
<='1';
sel_out<='0';
port
else (PCLK: in std_logic;
case
state is
PRESET:
std_logic;
sel_out in
<='1';
when
reset
next_state <= idle;
PSELx
: in =>
std_logic;
end if;
when
idle =>
PENABLE:
end if; in std_logic;
if
PSELx = '1' then
PWRITE
end if;: in std_logic;
next_state
setup;
ADDR_en:
in<=
std_logic;
if PSELx='1'
then
else
sel_in
: out<=std_logic;
next_state
setup;
next_state
<=std_logic);
idle;
sel_out:
out
else
if;
end end
control_logic;
next_state
<= idle;
when setupcontrol_logic
=>
architecture
of control_logic is
end if;
if PENABLE='1' then
when others => next_state <= reset;
end
<=isenable;
typenext_state
state_type
(reset,
idle,
setup,
enable);
case;
end state,next_state:
if;
signal
state_type;
end process proc2;
begin
end control_logic;
proc1:process (PCLK,PRESET) is
begin
if PRESET='0' then state<=reset;
elsif rising_edge(PCLK) then
state<=next_state;
end if;
end process proc1;
A DDR_en
P CLK
s e l_ in
s e l_o ut
P E NA BL E
P R E SE T
P S EL x
P W R IT E
control_logic
Slika 5.9: Blok Control_logic
Listing 5.2.1.2.
koda: ADDR_COMPARE
IEEE;
library
Blok
koji prihvata osmobitnu informaciju na svom ulazu, vrši
use IEEE.STD_LOGIC_1164.all;
uporedjivanje
sa is
heksadecimalnim “90“ i na izlazu generiše signal
entity
ADDR_compare
port (ADDR:
in std_logic_vector(7
downto
0); nule, u zavisnosti od
enable
u
stanju
logičke
jedinice
ili
logičke
enable: out std_logic);
jednakosti, što znači da ako je ostvarena jednakost, signal
endostvarene
ADDR_compare;
architecture
of ADDR_compare
is
enable je uADDR_compare
stanju logičke
jedinice; u suprotnom
je u stanju logičke
begin
nule.
process(ADDR)
begin
if ADDR="10010000" then
enable <='1';
else enable<='0';
end if;
end process;
end ADDR_compare;
A D D R (7 :0 )
e nab le
ADDR_compare
Slika 5.10: Blok ADDR_compare
Listing koda:
5.2.1.3
TriSTATE_BUFFER (TROSTATIČKI BAFER)
library IEEE;
 IEEE.STD_LOGIC_1164.all;
Blok koji prihvata osmobitnu informaciju sa svog ulaza, kada je
use
entity
TriSTATE_BUFFER
is
aktivan
signal za dozvolu
rada enable. Ako je signal za dozvolu rada
port(
a : in STD_LOGIC_VECTOR(7 downto 0);
aktivan
jedinica) tada se
stanje
y : (logička
out STD_LOGIC_VECTOR(7
downto
0);ovog bafera prosledjuje na
enable
STD_LOGIC);
njegov
izlaz.: Uinsuprotnom,
izlaz bafera je u stanju visoke impedanse.
end TriSTATE_BUFFER;
architecture TriSTATE_BUFFER of TriSTATE_BUFFER is
begin
process(a,enable)
begin
if enable = '1' then
a(7 :0 ) y (7 :0 )
y <= a;
e nab le
else
y <= (others=>'Z');
end if;
TriSTATE_BUFFER
end process;
end TriSTATE_BUFFER;
Slika 5.11: BlokTriSTATE_BUFFER
5.2.1.4 DoubleEdgeSR

Ovo
S vremenskog
kolo će se direktno
dijagrama
setovati
se vidi
opadajućom
da je izlazni
ivicom
signal
EdgeRESET,
Srout nakon
a direktno
rastuće ivice
će sesignala
resetovati
RESET
rastućom
postavljen
ivicom
u stanju
EdgeSET.
logičke
Kolo
jedinice.
je strukturno
realizovano i njegova struktura je prikazana na slici 5.12., dok je na slici
dijagram
ulazno-izlaznih
signalaSrout
ovog prelazi
kola na logičku
5.5 dat vremenski
Pojavom rastuće
ivice
signala EdgeSET,
U1
nulu i ostaje sve do pojave
opadajuće
ivice EdgeRESET.
EdgeSET
CLK
Q
CLR
VCC
DA TA
U4
U3
RESET
I0
O
I0
I1
U7
I1
U8
U2
OR_2
x
y
INV_1
EdgeRESET
U9
DFF_R
x
y
SRout
INV_1
XOR_2
I0 O U T PU T
CLK
I1
CLR
U6
AND_2
I0 O U T PU T
reset edge
O
set edge
Q
DA TA
DFF_F
I1
U5
AND_2
Slika 5.5: Vremenski dijagram
O U T PU T I0
I1
AND_2
Slika 5.12: DoubleEdgeSR

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.
Listing koda:
U6U1: :AND_2
DFF_R
component
INV_1
library
IEEE;
port
portmap(
map(CLK
I0 =>=>NET1456,
EdgeSET,
port
(
x
: in STD_LOGIC;
use IEEE.STD_LOGIC_1164.all;
I1CLR
=> =>
NET18,
NET1012,
y : =>
out
STD_LOGIC);
entity DoubleEdgeSR
is
OUTPUT
DATA
=> VCC,
NET92);
end
component;
EdgeRESET
: in STD_LOGIC;
U7 : port(
INV_1Q
=> NET18);
component
OR_2
EdgeSET
: in STD_LOGIC;
U2port
: DFF_F
map(x
=> EdgeSET,
port
(
RESET
: =>
inI0
STD_LOGIC;
porty map(CLK
=> NET1443
NET92,
);: in STD_LOGIC;
: in
STD_LOGIC;
:I1 =>
out
STD_LOGIC );
U8 : SRout
AND_2CLR
NET1012,
O
:
out
STD_LOGIC);
end map(
DoubleEdgeSR;
port
DATAI0=>=>VCC,
NET1443,
end
component;
architecture
of DoubleEdgeSR is
I1Q =>
=> DoubleEdgeSR
EdgeRESET,
NET62 );
component
XOR_2
component
AND_2=> NET1456 );
U3 : XOR_2
OUTPUT
port(
(
I0: :ininSTD_LOGIC;
STD_LOGIC;
U9 : port
INV_1
map(I0
=>I0
NET18,
inSTD_LOGIC;
STD_LOGIC;
:x :in
port map(
I1I1=>
=>
NET62,
NET1534,
O=>:
out
STD_LOGIC);
OUTPUT
: out
STD_LOGIC);
yO
=>
SRout
NET1534
); );
end
component;
U4VCC
:end
OR_2
<=component;
VCC_CONSTANT;
constant
VCC_CONSTANT
component
DFF_F
port map(I0
=> RESET, : STD_LOGIC := '1';
end
DoubleEdgeSR;
signal
NET1012
STD_LOGIC;
port (CLK
in: STD_LOGIC;
I1 =>: NET69,
signal NET1443
STD_LOGIC;
CLR
in: STD_LOGIC;
O
=>:NET1012
);
signal
NET1456
:
STD_LOGIC;
DATA : in STD_LOGIC;
U5 : AND_2
signal
NET1534
STD_LOGIC;
Q : out=>:STD_LOGIC
);
port map(I0
NET62,
signal
NET18
:
STD_LOGIC;
end component;
I1 => NET18,
signal NET62
STD_LOGIC;
component
DFF_R: =>
OUTPUT
NET69);
signal
NET69
:
STD_LOGIC;
port (CLK : in STD_LOGIC;
signal NET92
CLR : :inSTD_LOGIC;
STD_LOGIC;
signal VCC : STD_LOGIC;
DATA : in STD_LOGIC;
begin
Q : out STD_LOGIC );
end component;
E d g eR E SE T
S R o ut
E d ge SE T
RE S E T
DoubleEdgeSR
Slika 5.13: DoubleEdgeSR
5.2.1.4.3
DFF_F
(D Flip
Flop)
5.2.1.4.1
OR_2
(ILI
kolo)
5.2.1.4.2
DFF_R
(D
Flip
Flop)
Listing koda:
koda:
ListingListing
koda:
I0C L K
library IEEE;
IEEE;
library
library use
IEEE;
IEEE.std_logic_1164.all;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_1164.all;
entity DFF_R
DFF_F is
is
entity
entity OR_2port
is
port (( CLR
CLR :: in
in std_logic;
std_logic;
port (
I0 CLK
: in: std_logic;
in
std_logic;
CLK : in std_logic;
I1 : in std_logic;
: in std_logic;
DATA DATA
: in std_logic;
O : out std_logic);
Q :std_logic);
out std_logic);
Q : out
end entity;
end entity;
entity;
end
architecture
gate_arch
of OR_2 is
architecture
DFF_F_arch
of DFF_R
DFF_F is
is
architecture
DFF_R_arch
of
begin
signal
TEMP_Q:
std_logic:='0';
signal
TEMP_Q:
std_logic:='0';
O <=begin
I0 or I1;
begin
process (CLK,
(CLK, CLR)
CLR)
end gate_arch;
process
begin
begin
if=CLR
'1' then
if CLR
'1'=then
TEMP_Q
<= '0';
TEMP_Q
<= '0';
elsif
elsif falling_edge(CLK)
rising_edge(CLK) then
then
TEMP_Q
<=
DATA;
TEMP_Q <= DATA;
end
end if; if;
end process;
process;
end
<= TEMP_Q;
TEMP_Q;
QQ <=
end DFF_R_arch;
DFF_F_arch;
end
I1C L R
OQ
DA TA
OR_2
Slika
5.14: OR_2 kolo
DFF_R
Slika 5.15: D Flip Flop
5.2.1.4.4 XOR_2
Proširenje
Listing koda:
 libraryBlok
koji koji stavlja 24 bita veće težine na logičku nulu. On
IEEE;
prihvata
osmobitni podatak sa svog ulaza i to 8 bitaI1manje težine,
use
IEEE.STD_LOGIC_1164.all;
entity
XOR_2
is na mestu 24 bita veće težine i na izlazu generiše 32 bitni
dodeljuje
nule
XOR_2
port ( I0 : in std_logic;
podatak.I1 : in std_logic;
Slika 5.17: XOR_2 kolo
I0
O : out std_logic);
end entity;
5.2.1.4.4 XOR_2
architecture
gate_arch of XOR_2 is
begin
Listing koda:
O <= I0 xor I1;
end gate_arch;
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 is
begin
iz<="000000000000000000000000"&ul;
end Prosirenje;
O
iz (3 1:0 ) ul(7 :0 )
Prosirenje
Slika 5.18: Blok Proširenje
5.2.1.6
INV_1 (Invertor)
5.2.1.7 AND_2
(I kolo)
Listing
Listing koda:
koda:
library
library IEEE;
IEEE;
use
IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_1164.all;
entity
entity INV_1
AND_2 is
is
port(
x : in STD_LOGIC;
port(
I0: in std_logic;
: out STD_LOGIC);
I1: iny std_logic;
end OUTPUT:
INV_1; out std_logic);
architecture
INV_1 of INV_1 is
end AND_2;
begin
architecture AND_2 of AND_2 is
y<=not x;
begin
end OUTPUT
INV_1; <= I0 and I1;
end AND_2;
I0x O U T PU T y
I1
INV_1
Slika 5.19: Invertor
AND_2
Slika 5.20: I_kolo
PRDATA => PRDATA,
PENABLE
architecture
: in =>
PIA_APB_8255
STD_LOGIC;
of PIA_APB_8255 is
5.2.2PRESET
Interfejs
APB-bridge
PRESET,
D O U T (7 :0 )
D IN (7:0 )
component
PRESET
a8255
in STD_LOGIC;
PSELx
=> :PSELx,
P A D DR (3 1:0 ) P R D A TA (3 1:0 )
port (A
PSELx
: in =>
STD_LOGIC_VECTOR(1
:
in
STD_LOGIC;
downto 0);
Listing
koda:
PWDATA
PWDATA,
P CLK
RE S E T
CLK : =>
PWDATA
in
: PWRITE,
STD_LOGIC;
in
STD_LOGIC_VECTOR(31 downto 0);
PWRITE
DIN :=>in
PWRITE
:NET2616,
STD_LOGIC_VECTOR(7
in
STD_LOGIC;
downto 0);
libraryRESET
IEEE;
P E NA BL E
nC S
PAIN
DIN
:
:
out
in
STD_LOGIC_VECTOR(7
downto
0);
use IEEE.STD_LOGIC_1164.all;
nCS => NET2622,
P R E SE T
nR D
PBIN
PRDATA
inout
:
STD_LOGIC_VECTOR(7
downto
downto
0); 0);
entity PIA_APB_8255
isSTD_LOGIC_VECTOR(31
nRD
=> :NET2628,
P S EL x
nW R
PCIN
RESET
:STD_LOGIC;
in
out
STD_LOGIC_VECTOR(7
STD_LOGIC;
downto 0);
port(PCLK
:=>
in:NET2634);
nWR
P W D AT A (3 1 :0 )
RESET
nCS
: out
: in
STD_LOGIC;
PENABLE
: STD_LOGIC;
in
STD_LOGIC;
U2 : a8255
nCS
nRD
: =>
in: PADDR(0),
inout
STD_LOGIC;
P W R IT E
PRESET
in STD_LOGIC;
STD_LOGIC;
port map(A(0)
nRD
nWR
: inout
in
STD_LOGIC;
STD_LOGIC);
PSELx
:PADDR(1),
in
STD_LOGIC;
A(1)
=>
APB_bridge
end component;
nWR
in: STD_LOGIC;
PWRITE
in STD_LOGIC;
CLK
=>: PCLK,
signalDIN
DOUT
NET2616
:inSTD_LOGIC;
STD_LOGIC_VECTOR(7
PADDR
:out
STD_LOGIC_VECTOR(31downto
downto0);
0);
=> :BUS2610,
Slika 5.21: Interfejs APB-bridge
signalDOUT
PAEN
NET2622
out
: STD_LOGIC;
STD_LOGIC;
PAIN=>:: BUS2640,
in
STD_LOGIC_VECTOR(7
downto 0);
signalPAIN
PAOUT
NET2628
out
:
STD_LOGIC;
STD_LOGIC_VECTOR(7
downto0);
0);
PBIN=>::PAIN,
in
STD_LOGIC_VECTOR(7
downto
signalPAOUT
PBEN
NET2634
:: out
: STD_LOGIC;
STD_LOGIC;
PCIN =>
in
STD_LOGIC_VECTOR(7
downto 0);
PAOUT,
signalPBIN
PBOUT
BUS2610
out
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR(7
(7 downto
downto
0);
0);
PWDATA
::
in
STD_LOGIC_VECTOR(31
downto
0);
=> :PBIN,
signalPBOUT
PCEN
BUS2640
:
out
:
STD_LOGIC_VECTOR
STD_LOGIC_VECTOR(7
(7
downto
0);
PAOUT=>: PBOUT,
out STD_LOGIC_VECTOR(7 downto 0);
begin
PCOUT
out STD_LOGIC_VECTOR(7
PBOUT
: out
STD_LOGIC_VECTOR(7
downtodownto
0); 0));
PCIN
=> :PCIN,
end:component;
U1
APB_bridge
PCOUT=>: PCOUT,
out STD_LOGIC_VECTOR(7 downto 0);
PCOUT
component
port
map(DIN
APB_bridge
BUS2610,
PRDATA
out STD_LOGIC_VECTOR(31 downto 0));
RESET
=>=>:NET2616,
port
(DOUT
DOUT
inBUS2640,
STD_LOGIC_VECTOR(7 downto 0);
nCS
=>:=>
NET2622,
end
PIA_APB_8255;
PADDR
: in
=>
PADDR,
STD_LOGIC_VECTOR(31 downto 0);
nRD
=> NET2628,
PCLK
=>
PCLK,
PCLK
in
STD_LOGIC;
nWR
=> :
NET2634);
PENABLE => PENABLE,
end PIA_APB_8255;
component
APB_bridge
PCLK
=> PCLK,
port (DOUT
:
in=>
STD_LOGIC_VECTOR(7
downto 0);
PENABLE
PENABLE,
architecture
PIA_APB_8255
of
PIA_APB_8255 is
5.2.4
Listing
koda
čipa
PIA-APB-8255
PADDR
:=>
inPRDATA,
STD_LOGIC_VECTOR(31 downto 0);
PRDATA
component
a8255
PCLK : in
=> STD_LOGIC;
PRESET,
port
(APRESET
: in STD_LOGIC_VECTOR(1
downto 0);
library
IEEE;
P A D DR (3 1:0 )
PENABLE
:
in
STD_LOGIC;
P R D A TA (3 1:0 )
PSELx
CLK : =>
in PSELx,
STD_LOGIC;
use IEEE.std_logic_1164.all;
P CLK
PRESET
:
in
STD_LOGIC;
P A IN(7 :0 )
=> STD_LOGIC_VECTOR(7
PWDATA,
DIN
: in
downto 0);
entity PWDATA
PIA_APB_8255
is
P E NA BL E
P B IN(7 :0 )
PSELx
:
in
STD_LOGIC;
PWRITE
PWRITE,
P C IN (7 :0 )
PAIN
: =>
in
STD_LOGIC_VECTOR(7 downto 0);
port(PCLK
: in
STD_LOGIC;
P R E SE T
PWDATA
:
in
STD_LOGIC_VECTOR(31
downto
0);
RESET
PBIN
:=>in
STD_LOGIC_VECTOR(7
downto 0);
PENABLE
:NET2616,
in
STD_LOGIC;
PWRITE
:
in
STD_LOGIC;
P S Ex
P A O UT (7:0 )
nCS
=>: NET2622,
PCIN
inin
STD_LOGIC_VECTOR(7
downto 0);
PRESET
:
STD_LOGIC;
P B O UT (7:0 )
DIN
:
out
STD_LOGIC_VECTOR(7
downto
0);
P W R IT E
P C O UT (7:0 )
nRD
=> :NET2628,
RESET
PSELx
in STD_LOGIC;
PRDATA
:
out STD_LOGIC_VECTOR(31 downto 0);
nWR
=>
NET2634);
P W D AT A (3 1 :0 )
nCS
: in
STD_LOGIC;
PWRITE
: in
STD_LOGIC;
RESET
:
out
STD_LOGIC;
U2 : a8255
nRD
: :
inin
STD_LOGIC;
PADDR
STD_LOGIC_VECTOR(31 downto 0);
nCS : out
STD_LOGIC;
port map(A(0)
=>
PADDR(0),
nWR
PAIN::in
inSTD_LOGIC;
STD_LOGIC_VECTOR(7 downto 0);
nRD
:
inout
STD_LOGIC;
A(1)
PADDR(1),
DOUT
out
STD_LOGIC_VECTOR(7downto
downto0);
0);
PBIN =>
: in
STD_LOGIC_VECTOR(7
nWR
:
inout
STD_LOGIC);
CLK
PAEN
outSTD_LOGIC_VECTOR(7
STD_LOGIC;
PIA_APB_8255
PCIN=>: PCLK,
in
downto 0);
end component;
DIN
=> :BUS2610,
PAOUT
STD_LOGIC_VECTOR(7 downto
PWDATA
:out
in STD_LOGIC_VECTOR(31
downto0);
0);
Slika 5.30: PIA-APB-8255
signal NET2616
:
STD_LOGIC;
DOUT
=>
BUS2640,
PBEN
PAOUT::out
outSTD_LOGIC;
STD_LOGIC_VECTOR(7 downto 0);
signal NET2622
:
STD_LOGIC;
PAIN
=>
PAIN,
PBOUT : out STD_LOGIC_VECTOR(7 downto 0);
signal NET2628
:PAOUT,
STD_LOGIC;
PAOUT
PCEN
PCOUT:=>
:out
outSTD_LOGIC_VECTOR(7
STD_LOGIC_VECTOR(7downto
downto0);
0);
signal NET2634
:
STD_LOGIC;
PBIN
=>::PBIN,
PCOUT
out
downto
0));
PRDATA
outSTD_LOGIC_VECTOR(7
STD_LOGIC_VECTOR(31
downto
0));
signal BUS2610
:
STD_LOGIC_VECTOR
(7
downto
0);
PBOUT => PBOUT,
end component;
PIA_APB_8255;
signal
BUS2640
STD_LOGIC_VECTOR (7 downto 0);
PCIN => :
PCIN,
begin PCOUT => PCOUT,
U1 : APB_bridge
RESET => NET2616,
port map(DIN
BUS2610,
nCS =>=>
NET2622,
DOUT
=>NET2628,
BUS2640,
nRD =>
PADDR
PADDR,
nWR
=>=>
NET2634);
end PIA_APB_8255;
signal PRESET : std_logic;
signal
PSELx : std_logic;
library
ieee;
PWRITE : std_logic;
use signal
ieee.std_logic_1164.all;
signal PADDR : std_logic_vector(31 downto 0);
signal
: std_logic_vector(7
U pia_apb_8255_tb
ciljuPAIN
provere
ispravnosti
rada downto
dizajna,0);napisan je
entity
is
PBIN : std_logic_vector(7 downto 0);
end signal
pia_apb_8255_tb;
izvršena
je
simulacija
rada kola.
signal PCIN
: std_logic_vector(7
downto 0); is
architecture
TB_ARCHITECTURE
of pia_apb_8255_tb
signal PWDATA
: std_logic_vector(31 downto 0);
component
pia_apb_8255
signal
PAOUT :
std_logic_vector(7
port(
Sledi listing
Test-bench
programa: downto 0);
signal
PBOUT
std_logic_vector(7 downto 0);
PCLK
: in: std_logic;
signal
PCOUT :: in
std_logic_vector(7
downto 0);
PENABLE
std_logic;
signal
PRDATA
: std_logic_vector(31
downto 0);
PRESET
: in
std_logic;
begin
PSELx : in std_logic;
UUT :PWRITE
pia_apb_8255
: in std_logic;
port PADDR
map (PCLK
PCLK,
: in =>
std_logic_vector(31
downto 0);
PENABLE
PENABLE,
PAIN
: in=>std_logic_vector(7
downto 0);
PRESET
=> std_logic_vector(7
PRESET,
PBIN
: in
downto 0);
PSELx
=>
PSELx,
PCIN : in std_logic_vector(7 downto 0);
PWRITE :=>inPWRITE,
PWDATA
std_logic_vector(31 downto 0);
PADDR :=>out
PADDR,
PAOUT
std_logic_vector(7 downto 0);
PAIN =>
PAIN,
PBOUT
: out
std_logic_vector(7 downto 0);
PBIN =>
PBIN,
PCOUT
: out
std_logic_vector(7 downto 0);
PCIN
=>
PCIN,
PRDATA : out std_logic_vector(31 downto 0) );
PWDATA => PWDATA,
end component;
entity PAOUT => PAOUT,
PBOUT =>
PBOUT,
signal
PCLK
: std_logic;
PCOUT =>
PCOUT,: std_logic;
signal
PENABLE
PRDATA => PRDATA);
6. TESTIRANJE RADA čipa PIA-APB-8255


TestBench program i
your stimulus
herepokriva
...
Prethodni listing test-- Add
– bencha
najbolje
sve situacije koje se
mogu
javitiPCLK
tokom
Sve to možemo videti na vremenskom dijagramu
PCLK
<= not
afterrada.
20ns;
PRESET<='1','0'
after
5ns,'1'čipa
after
10ns;
koji simulira rad
opisanog
PIA-APB-8255.
Sa ovog dijagrama, dat na
PSELx <='0','1' after 80ns,'0' after 160ns,'1' after 240ns,'0' after
slici
6.1, može
se uočiti
funkcionisanje
sistema.
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_ARCHITECTURE
for UUT : pia_apb_8255
use entity work.pia_apb_8255(pia_apb_8255);
end for;
end for;
Slika 6.1: Vremenski dijagram rada čipa PIA-APB-8255
end TESTBENCH_FOR_pia_apb_8255;
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.
Slika 7.1: Šema sinteze čipa PIA-APB-8255

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, APBbridge:
Slika 7.2: Šema sinteze APB-bridge

Na slici 7.3 data je šema sinteze čipa 8255:


Nakon toga prešlo se na samu implementaciju kola na konkretnom
Na osnovu dobijenih podataka, što se vidi iz prethodnog listinga, bitno
FPGA
kolu. Naredni listing nam pokazuje dobijene rezultate:
Logic
je daUtilization:
se na kraju vidi da je implemetnirano kolo zauzelo 1483 ekvivalentnih
Number of Slice Flip Flops:
27 out of 1,536
1%
gejtova.
targetLUTs:
part "2s50pq208-6".
Number Using
of 4 input
148 out of 1,536
9%
Removing unused or disabled logic...
Running cover...
Logic Distribution:
 Number Treba
istaći
da
je packing...
maksimalna radna frekvencija85kola
213.4 MHz.
Running
directed
of occupied
Slices:
out of
768
11%
delay-based
packing...
Number Running
of Slices
containingLUT
only
related logic:
85 out of
85 100%
Running
related
packing...
of Slices
containing
unrelated
logic: struktura 0koja
outjeofdobijena
85 nakon
0%
 Number Na
slikama
7.4 i 7.5 data
je unutrašnja
Design
Summary
*See NOTES below for an explanation of the effects of unrelated logic
implementacije
kola gde se vide zauzeti blokovi unutar kola.
-------------Number of
of 4
errors:
0
Total Number
input LUTs:
148 out of 1,536
9%
Number
of
warnings:
5
Number of bonded IOBs:
102 out of
140
72%

Slika 7.4 nam prikazuje sam razmeštaj ćelija gde možemo videti i koji
grupisani; to
IOB Flip Flops:
35
pinoviofu kolu
su iskorišćeni. Na slici
se vidi
kola nisu
Number
GCLKs:
1 out
of da izvodi
4
25%
Number
ofseGCLKIOBs:
1 out ofveza do
4 svih
25%
je da bi
postiglo približno isto kašnjenje
pinova.
Total equivalent gate count for design: 1,483
Slika 7.4: Šema zauzetosti ćelija kola

Izgled povezanosti samih veza prikazan je na slici 7.5:
Slika 7.5: Šema veza ćelija u kolu

Na slici 7.6 prikazan je raspored pinova na FPGA kolu:
Slika 7.6: Raspored pinova