Transcript JASP

Bratislav Džombić (8627)
JASP
VHDL opis jednostavnog procesora
ELEKTRONSKI FAKULTET U NIŠU
KATEDRA ZA ELEKTRONIKU
Mikroprocesorska tehnika
JUN 2006.
Predmet rada
• Opis u VHDL-u jednostavnog procesora pod nazivom JASP
• JASP (Just Another Simulated Processor) je 16-bitni procesor, osmišljen u
edukacione svrhe i sadrži minimalan broj komponenata potrebnih za
upoznavanje sa osnovama rada procesora
• Ovaj rad se bavi:
▫ opisom komponeneta i analizom rada procesora, da bi na osnovu toga
mogao biti izvršen
▫ opis procesora JASP u VHDL-u
Računarski sistem
Minimalistički pristup
Koji je najmanji broj komponenata koji je potreban da bi se opisao računarski
sistem?
 Procesor – da obrađuje informacije i upravlja sistemom
 Memorija – za smeštanje podataka
 Ulazni i izlazni uređaj – za unos, odnosno izlaz podataka.
instrukcije
registri
procesor
adrese
Instrukcije i podaci
podaci
memorija
Procesor JASP
PC
MAR
Izvršna jedinica
INC
MDR
• čine je registri i ALU
SP
A
Upravljačka jedinica
IR
B
ALUx
Upravljačka
jedinica
• upravlja radom izvršne
jednice pomoću kontrolnih
signala
ALUy
ALU
ALUr
PSR
Registri
PC
• Programski brojač
Program Counter) – u
• (eng.
Inkrementer
MAR
INC
MDR
SP
A
IR
B
ALUx
ALUy
njemu
se nalazi adresa
sledeće
(eng. Incrementer)
– prihvata
• instrukcije
Pokazivač
kojumagacina
treba brojača
izvršiti.i
sadržaj
programskog
(eng. Stack
– čuva
ga Pointer)
za jedan.
• uvećava
Instrukcioni
registar
adresu vrha (eng. Top of the
(eng. Instruction
Register) –
– TOS) memorijskog
• Stack
Memorijsko-adresni
registar
čuva
instrukciju
kojaStack).
se
bloka
magacin
(eng.
(eng. Memory
Address Register) –
izvršava.
• tekuće
Memorijski
registar
podataka
čuva adresu memorijske
lokacije
iz
(eng.
Memory
Data
Register)
se čita iliopšte
u koji se
upisuje A
•–koje
Registar
namene
čuva
podatak
koji
se
čita
iz
podatak.
čuva
podatak
za
tekuću
naredbu
lokacije.
•adresirane
Registar
opšte namene B
čuva podatak za tekuću naredbu
Upravljačka
jedinica
ALU
ALUr
• Ulazni registar ALU - X
čuva podatak nad kojim će se
• Ulazni
registar
ALU - Y
izvršiti operacija
u ALU
čuva podatak nad kojim će se
• Izlazni
registar
ALU - R
izvršiti operacija
u ALU
prihvata rezultat operacije
• Procesorsko
izvršene u ALU statusni registar
PSR
(eng. Processor Status Register) –
čuva i označava stanje
procesorskog sistema.
Procesorsko statusni registar
To je specijalizovani registar u kojem se čuvaju markeri (eng. flags) koje ALU
postavlja kao rezultat izvršenja operacije, kao i markeri prekida. Za razliku od ostalih
registara ne koristi se ceo sadržaj PSR već određeni bitovi.
- - I E - v v v - - - - V N Z C
Markeri prekida:
I – zahtev prekida (eng. Interrupt Request)
E – dozvola prekida (eng. Interrupt Enable)
vvv – vektor prekida – ukazuje na to kako će procesor postupati sa prekidom
(servisirati prekid).
Markeri ALU:
V – premašaj (eng. Overflow)
N – negativna vrednost
Z – nula
C – prenos (eng. carry)
Instrukcioni registar
Ovaj registar je poseban po tome što na svom izlazu daje memorisanu instrukciju
razdvojenu na opkôd i operand. Ovo je značajno jer se opkôd dalje prosleđuje
upravljačkoj jednici koja ga dekodira i na osnovu toga započinje njeno izvršenje.
X
X
X
X
X
opkôd
X
X
X
X
X
X
X
X
X
X
X
operand
• Opkôd – operacioni deo – definiše tip instrukcije i način adresiranja,
• Operand – definiše lokaciju podatka potrebnom instrukciji.
Opkod je dužine 8 bita – najveći broj različitih instrukcija je 256.
JASP podržava jednooperandske instrukcije – lokacija drugog operanda se
podrazumeva ili se dobija dekodiranjem operacionog dela instrukcije.
Proširenje operanda
Svrha proširenja operanda je da se od 8-bitnog binarnog broja koji predstavlja
operand, dobijen deljenjem instrukcije u IR, generiše 16-bitni broj iste vrednosti,
kojim se može dalje manipulisati.
Proces proširenja se može obaviti na dva načina:
•• Proširenje
ispred operanda
operanda se
se dodaje
dodaje 8-bitna
8-bitna binarna
nula ili jednica
Proširenje znakom
nulama –– ispred
nula u
zavisnosti od znaka operanda (tj. od bita najveće težine).
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
X
X
X
X
X
X
X
1
X
X
X
X
X
X
X
↓↓
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
↓
1
1
1
1
1
1
1
1
Aritmetičko-logička jednica
Aritmetičko-logička jedinica (eng. Arithmetic Logic Unit – ALU) je deo procesora zadužen
za obradu podataka. ALU izvršava aritmetičke i logičke operacije nad podacima.
Blokovi ALU:
• registri ALU – ALUx, ALUy,
ALUr – registri u kojima se čuvaju
podaci sa kojima se vrši operacija,
kao i rezultat operacije,
• kolo za spregu sa
magistralom – DBC (eng. Data
Bus Conection) – kolo pomoću
kojeg registru selektivno pristupaju
magistrali za podatke,
• aritmetičko-logička kola –
ALK – skup kola koja obavljaju
Portovi ALU:
• Kontrolni signali
• Markeri stanja
• Magistrala podataka
aritmetičke i logičke operacije, kao
i kolo kojim se vrši selekcija
operacije
Operacije ALU
U sledećoj tabeli prikazane su operacije koje podržava aritmetičko-logička jednica procesora JASP:
ALUsel
Operacija
RTL
Opis
0000
ADD
ALUr=[ALUx]+[ALUy]
Sabiranje u dvojičnom komplementu. Sadržaj ALUx i ALUy se sabiraju
i rezultat se smešta u ALUr
0001
ADC
ALUr=[ALUx]+[ALUy]+[PSR(c)]
Sabiranje u dvojičnom komplementu. Sadržaj ALUx i ALUy i marker C
se sabiraju i rezultat se smešta u ALUr
0010
SUB
ALUr=[ALUx]-[ALUy]
Oduzimanje u dvojičnom komplementu. Sadržaj ALUx i ALUy se
oduzimaju i rezultat se smešta u ALUr
0011
SL
ALUr=[ALUx]<<1
Logičko pomeranje sadržaja ALUx u levo i smeštanje rezultata u ALUr
0100
SR
ALUr=[ALUx]>>1
Logičko pomeranje sadržaja ALUx u desno i smeštanje rezultata u
ALUr
0101
AND
ALUr=[ALUx]&[ALUy]
Izvodi se logička operacija I nad bitovima ALUx i ALUy i rezultat se
smešta u ALUr
0110
OR
ALUr=[ALUx]|[ALUy]
Izvodi se logička operacija ILI nad bitovima ALUx i ALUy i rezultat se
smešta u ALUr
0111
NOT
ALUr=~[ALUx]
Izvodi se logička operacija NE nad bitovima ALUx i rezultat se smešta
u ALUr
1000
NEG
ALUr=~[ALUx]+1
Izvodi se komplementiranje u dvojičnom komplementu nad ALUx i
rezultat se smešta u ALUr
1001
INC
ALUr=[ALUx]+1
Dodaje se 1 sadržaju ALUx i rezultat se smešta u ALUr
1010
DEC
ALUr=[ALUx]-1
Oduzima se 1 od sadržaja ALUx i rezultat se smešta u ALUr
1011
SWAP
ALUr(7:0)=[ALUx(15:8)]
ALUr(15:8)=[ALUx(7:0)]
Zamena mesta bajta najveće težine sa bajtom najmanje težine i
rezultat se smešta u ALUr
Potpuni sabirač
Potpuni sabirač (eng. Full Adder) je
gradivni element svih aritmetičkih
kola koje vrše operacije u dvojičnom
komplementu. Potpuni sabirač je
kolo koje vrši sabiranje u dvojičnom
komplementu generišući zbir i bit
prenosa.
X
Y
Cin
S
Cout
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
Jednica za spregu sa magistralom
Jednica za spegu sa magistalom je kolo ALU čiji zadatak je da selektivno dozvoljava
pristup registara ALU magistrali podataka.
Selektorski kôd i njegov rezultat su prikazani u sledećoj tabeli:
Kôd
Rezultat
00
Svi registri ALU su otkačeni sa magistale
01
ALUx je povezan na magistralu
10
ALUy je povezan na magistralu
11
ALUr je povezan na magistralu
Upravljačka jedinica
Blokovi upravljačke jednice
• Kontroler prekida
(eng. Interuppt Controller) - Njegova uloga je da na izlazu daje
• Blok uslova grananja
Portovi upravljačke jednice
• Signali prekida
• Opkod instrukcije
• Taktni signal
• ALU markeri
• Reset signal
• Kontrolni signali za izvršnu jednicu
signal prekida ukoliko su prekidi dozvoljeni (PSR(E) =1) i postoji
ispituje statusne markere iz ALU (koji se čuvaju u PSR) i na
• Logika
zahtev
za prekidom.
osnovu toga generiše signal koji dozvoljava grananje ili ne.
ovo
je blok umaper
kome se, na osnovu rezultata iz Bloka uslova
• Adresni
grananja
i signala
BT,se,
generiše
selektorski
za izbor
naredne
Ovo je blok
u kojem
na osnovu
opkodasignal
instrukcije,
generiše
•
Mikro
inkrementer
adrese
odnosno
naredne
mikroistrukcije.
adresa mikromemorije,
prve mikroinstrukcije
u rutini.
To se
radi prostim
12-bitni
registar
inkrementer
koji
tekuću
adresu
mikromemorije
• Selektor 4-bitnog
adresa broja nula postojećem opkodu.
dodavanjem
uvećava
za
1.
multiplekser koji odlučuje koja će od tri raspoložive adrese
• Mikro MAR
mikromemorije biti prosleđena adresnom ulazu mikromemorije
12-bitni
memorijsko adresni registar u kojem se čuva tekuća
• Mikromemorija
adresa
mikromemorije
memorija
upravljačke jednice u kojoj se nalaze mikroinstrukcije.
•Memorijske
Mikro MDR
adrese su 12-bitne što znači da poseduje 4096
52-bitni memorijski
registar
podataka koji memoriše tekuću
slobodnih
memorijskih
lokacija
mikroinstrukciju i deli je na odgovarajuće kontrolne signale na
svom izlazu
Mikroprogramsko upravljanje
Upravljačka jedinica (eng. Control Unit) generiše upravljačke signala za rad
procesora.
Upravljačka jedinica procesora JASP je izvedena po konceptu upravljačke
jednice sa mikroprogramskim upravljanjem.
Upravljačka jedinica sa mikroprogramskim upravljanjem zahteva realizaciju
upravljačke jedinice na bazi ROM ili RAM memorije u kojoj se smeštaju
vrednosti upravljačkih signala, koji će biti aktivirani u odgovarajućem trenutku.
Mikroprogramsko upravljanje praktično znači da svaka programska instrukcija
aktivira sekvencu upravljačkih signala (mikroinstrukcija). Mikroinstrukcije su
smeštene u okviru mikromemorije upravljačke jednice.
Izvršavanje instrukcija
• Prvi ciklus je ciklus pribavljanja
instrukcije iz memorije (eng. Fetch). Fetch
rutina ima 6 mikroinstrukcija.
• Pribavljeni opkod instrukcije se zatim
dekodira.
• Dekodirani opkod predstavlja
mikromemorijsku adresu prve
mikroinstrukcije u datoj rutini. Sekvenca
mikroinstrukcija (rutina) se zatim
izvršava do poslednje.
• Vrši se provera da li postoji zahtev za
prekidom i da li su prekidi dozvoljeni.
• Ukoliko su uslovi prekida ispunjeni
aktivira se mikroprogramska rutina
prekida.
• Ukoliko uslovi prekida nisu ispunjeni
aktivira se FETCH rutina.
Format mikroinstrukcije
Broj bitova
cond
BT
Kontrolni signali
4
1
36
Adresa naredne
mikroinstrukcije
12
• cond – određuje da li će se naredna adresa mikroinstrukcije biti uzeta sa ulaza
0 (tekuća adresa + 1) ili će biti uzeta sa ulaza 1 (addr) multipleksera u okviru
mikrosekvencera u zavisnosti od stanja markera.
• branch target (BT) – određuje da li se adresa naredne mikroinstrukcije uzima
sa ulaza koji se snabdeva adresom iz mapera ili ne.
• Kontrolni signali – predstavlja kontrolne signale koji se direktno vode na
hardver izvršne jedinice.
• Adresa naredne mikroinstrukcije – ovo polje specificira prvu adresu naredne
rutine. Ovo polje se koristi na kraju svake rutine kako bi se adresirala FETCH
rutina.
Kontrolni signali
• Register Output Enable signali – dozvola da se sadržaj određenog registra pojavi na magistrali, vode
se na En ulaze registara,
• Register Clock signali – taktni signal registra, odnosno dozvola upisa podatka koji je na ulazu u registar,
vode se na Clk ulaze registara,
• Memorija RW i CS signali – signal izbora između upisa i čitanja (RW) i chip select signal (CS) memorije,
vode se na RW i CS ulaze memorije, respektivno,
• ALU control signali – selektorski signali ALU, vode sa na ulaz ALUsel aritmetičko-logičke jedinice,
• ALU data bus signali – selektorski signali koji određuju pristup registara ALU megistrali podataka, vode
se na BusCode ulaz aritmetičko-logičke jedinice,
• Proširenje operanda – selektorski signal koji određuje na koji način će operand biti proširen, vodi se na
ulaz znak bloka za proširenje operanda,
• PSR(E) – setuje vrednost markera prekida E (Interuppt Enable), vodi se na ulaz E PSR registra,
• PSR(I) - setuje vrednost markera prekida I (Interuppt Request), vodi se na ulaz I PSR registra,
• PSRSel – selektorski signal PSR registra, vodi se na PSRSel ulaz ovog kola.
Podela mikroinstrukcija
Mikroinstrukcije se mogu podeliti u četiri grupe:
• Mikroinstrukcije za premeštanje podataka (eng. Data Movement microinstructions)
- sadrže odgovarajuće kontrolne signale pomoću kojih se vrši premeštanje podataka među registrima
• ALU mikroinstrukcije
- sadrže odgovarajuće kontrolne signale pomoću kojih se vrši biranje operacije koju ALU treba da
izvrši
• Testne mikroinstrukcije
- mikroinstrukcije čiji je zadatak da provere stanje pojedinih markera
• Kontrolne mikroinstrukcije (eng. Processor Control micro-instructions)
- postavljaju markere prekida I i E na određeno stanje. U ovu grupu takođe spadaju i ALU Data Bus
signali i signali za kontrolu memorije
Mikromemorija - primer
U sledećoj tabeli prikazan je primer sadržaja mikromemorije:
Opkod
(hex.)
00
01
02
Mnemonik
RTL
Adrese mikromemorije
(hex.)
FETCH
MAR<-[PC]
INC<-[PC]
PC<-[INC]
MDR<-[M[MAR]]
IR<-[MDR]
CU<-[IR(opcode)]
000
001
002
003
004
005
ADD #data,A
ALUx<-[A]
ALUy<-[IR(operand)]
ALUr=[ALUx]+[ALUy]
A<-[ALUr]
006
007
008
009
ADD #data,B
ALUx<-[B]
ALUy<-[IR(operand)]
ALUr=[ALUx]+[ALUy]
B<-[ALUr]
010
011
012
013
ADD addr,A
MAR<-[IR(operand)]
MDR<-[M(MAR)]
ALUy<-[MDR]
ALUx<-[A]
ALUr=[ALUx]+[ALUy]
A<-[ALUr]
020
021
022
023
024
025
Mikromemorija – primer 2
U sledećoj tabeli prikazan je primer sadržaja mikromemorije sa mikroinstrukcijama u
binarnom obliku:
Glavna memorija
Memorija je element koji je sposoban da pamti veći broj podataka, kojima može
selektivno da se pristupa. RAM (eng. Random Access Memory) je memorija iz koje se
mogu čitati i u koju se mogu upisivati podaci.
Memorija koju ovde opisujemo je RAM memorija koja koristi 16-bitne adrese, što znači
da ima maksimalno do 65535 memorijskih lokacija. U svakoj lokaciji može se zapamtiti
podatak dužine 16 bita.
Blok memorije:
Blok memorije ima sledeće portove:
16-bitni ulaz Address – adresni ulaz memorije,
jednobitni ulaz CS – chip select signal, u slučaju da je CS=1
memorija je dostupna za korišćenje, u slučaju CS=0 isključuje sve
funkcije RAM-a, ne menjajući mu sadržaj. Ovo je prednost po pitanju
potrošnje energije,
jednobitni ulaz RW – kontrolni signal kojim se određuje da li se iz
memorije čita (RW=1) ili se u memoriju upisuje podatak (RW=0),
16-bitni ulaz/izlaz Data – ulaz, odnosno izlaz podataka.
Konačni izgled sistema
VHDL
VHDL (eng. Very-high-speed-integrated-circuit Hardware Description Language) je jezik
za opis digitalnih elektronskih sistema koji je razvijen u okviru programa razvoja vrlo
brzih integrisanih kola.
VHDL je projektovan da zadovolji potrebe u procesu projektovanja:
1. omogućava opis strukture sistema, tj. dekompozicije na podsisteme i međusobne
povezanosti podsistema,
2. omogućava specifikaciju funkcije sistema korišćenjem jednostavnih formi
programskog jezika,
3. omogućava simulaciju sistema pre izrade, tako da se alternative projekta
mogu porediti i testirati bez trošenja vremena i novca koje zahteva
prototipovanje hardvera.
Pristup VHDL opisu
• Izvršena je dekompozicija sistema na
kola koja obavljaju konkretne operacije
(operaciona kola ALU, registri, multiplekseri)
Primenjen u ovom radu
VHDL opis ALU
VHDL opis ALU kola
• Ovakva kola opisana su na nivou
za operaciju
ponašanja (eng. behavioral level) VHDL pomeranja u levo
opisa.
(eng Shift Left)
• Opisom na strukturnom nivou VHDL-a
opisane su veze između kola u
kompleksnijim sistemima (kao što su ALU,
upravljačka jednica, procesor)
Programski paket Active-HDL
Programski paket korišćen za VHDL opis je Active-HDL,
verzija 6.3, kompanije ALDEC.
Programski paket Active-HDL
Primer radne površine programa Active-HDL 6.3
JASPer – simulator JASP procesora
Kao pomoćno sredstvo u radu korišćen je program JASPer koji simulira rad procesora
JASP.
Ovaj program se može slobodno preuzeti sa adrese
http://www.brittunculi.com/jasp/
Zaključak
• Pre početka pisanja kôda potrebno je detaljno upoznavanje sa radom kola
koje se opisuje, kao i sa načinom realizacije pojedinih funkcija kola.
• Potrebno je pre početka pisanja kôda savladati sematiku i pravila pisanja
VHDL jezika.
• Prilikom VHDL opisa kôda treba težiti optimalnosti kôda.
• Na osnovu opisa ponašanja, na jednostavan način pomoću VHDL-a i
sredstava za sintezu, moguće je doći do hardverske realizacije kola. Ovo
znatno ubrzava projektovanje složenih sistema.
• Projektant je okrenut načinu rada sistema koji projektuje, a ne problemu
hardverske realizacije.
Literatura
• Mark Burrell – „Fundamentals of Computer Architecture”, Palgrave
Macmillan, 2004
• Mile Stojčev – “RICS, CISC i DSP procesori”, Elektronski Fakultet Niš,
1997
• Mile K. Stojčev, Saša S. Ristić, Miloš D. Krstić – “Zbirka zadataka iz
mikroprocesora i mikroračunara”, Elektronski Fakultet Niš, 1999
• Prof.dr Milunka Damnjanović (kao urednik) i grupa predavača na
Elektronskom fakultetu u Nišu – “Praktikum laboratorijskih vežbanja iz
projektovanja i testiranja elektronskih kola i sitema”, Elektronski
Fakultet Niš, 2000
• J. Mirkowski, M. Kapustka, Z. Skowronski, A. Biniszkiewicz – “Interactive
VHDL Tutorial REV.2.1”, Evita ™, 1998