Upload
lona
View
60
Download
5
Embed Size (px)
DESCRIPTION
ELEKTRONSKI FAKULTET U NIŠU KATEDRA ZA ELEKTRONIKU SEMINARSKI RAD VHDL OPIS SAYEH PROCESORA Predmet: Mikroprocesorski sistemi Profesor : Prof.dr. Mile Stojčev Studenti: Nikola Sekulović (10963) Lazar Velimirović (11017) Niš, jul 2007. SAYEH. - PowerPoint PPT Presentation
Citation preview
ELEKTRONSKI FAKULTET U NIŠUELEKTRONSKI FAKULTET U NIŠUKATEDRA ZA ELEKTRONIKUKATEDRA ZA ELEKTRONIKU
SEMINARSKI RADSEMINARSKI RAD
VHDL OPIS SAYEH PROCESORAVHDL OPIS SAYEH PROCESORA Predmet: Mikroprocesorski sistemiPredmet: Mikroprocesorski sistemi
ProfesorProfesor: : Prof.dr. Mile StojčevProf.dr. Mile Stojčev Studenti:Studenti: Nikola Sekulović (10963)Nikola Sekulović (10963) Lazar Velimirović (11017)Lazar Velimirović (11017)
Niš, jul 2007.Niš, jul 2007.
SAYEHSAYEH
U delu koji sledi prikazaćemo dizajn i opis procesora. U delu koji sledi prikazaćemo dizajn i opis procesora.
CPU je CPU je SAYEH SAYEH ( ( Simple Architecture, Yet EnoughSimple Architecture, Yet Enough Hardware Hardware - - jednostavna arhitektura, ali sa dovoljno hardvera) koji je dizajniran za jednostavna arhitektura, ali sa dovoljno hardvera) koji je dizajniran za svrhe učenja i testiranja.svrhe učenja i testiranja.
Detalji funkcionalnosti procesoraDetalji funkcionalnosti procesora
Jednostavan CPU primer koji je ovde Jednostavan CPU primer koji je ovde razmatran ima registarsko polje koje se koristi razmatran ima registarsko polje koje se koristi za instrukcije za obradu podataka. za instrukcije za obradu podataka.
CPU ima 16-bitnu magistralu podataka i 16-CPU ima 16-bitnu magistralu podataka i 16-bitnu adresnu magistralu. bitnu adresnu magistralu.
Slika prikazuje signale SAYEH interfejsaSlika prikazuje signale SAYEH interfejsa
Komponente CPU-aKomponente CPU-a
SAYEH komponente koje se koriste zaSAYEH komponente koje se koriste za instrukcijinstrukcijee uključuju standardne registre kao što su:uključuju standardne registre kao što su:
1.1. programski brojačprogramski brojač
2.2. instrukcioni registarinstrukcioni registar
3.3. aritmetičko-logička jedinica i aritmetičko-logička jedinica i
4.4. statusni registar.statusni registar.
Komponenete CPU-aKomponenete CPU-a
Ovaj procesor ima registre koji čine polje registara R0,R1, R2, Ovaj procesor ima registre koji čine polje registara R0,R1, R2, R3, kao i pokazivač prozora (R3, kao i pokazivač prozora (Window PointerWindow Pointer) koji definiše ) koji definiše R0, R1, R2, R3 unutar polja registara R0, R1, R2, R3 unutar polja registara
Komponenete CPU-aKomponenete CPU-a
CPU komponente i kratak opis svake:CPU komponente i kratak opis svake:
- PC: Programski brojač, 16 bitova- PC: Programski brojač, 16 bitova - R0, R1, R2, R3 registri opšte namene koji su deo - R0, R1, R2, R3 registri opšte namene koji su deo
polja registara, 16 bitapolja registara, 16 bita -RegFile: Registri opšte namene koji čine prozor od 4 -RegFile: Registri opšte namene koji čine prozor od 4
registra u registarskom polju od 8 registara registra u registarskom polju od 8 registara
Komponenete CPU-aKomponenete CPU-a
- WP: Pokazivač prozora ukazuje polju registara da definiše - WP: Pokazivač prozora ukazuje polju registara da definiše RO, R1, R2, R3, 3 bitaRO, R1, R2, R3, 3 bita
- IR: Instrukcijski registar u koji se sme- IR: Instrukcijski registar u koji se smešta instrukcijašta instrukcija, 16 bita, 16 bita
Komponenete CPU-aKomponenete CPU-a
- ALU: ALU može da obavlja sledeće aritmetičke i - ALU: ALU može da obavlja sledeće aritmetičke i logičke operacije nad svojim 16-bitnim operandima: logičke operacije nad svojim 16-bitnim operandima:
1.sabiranje 1.sabiranje 2.oduzimanje 2.oduzimanje 3.množenje3.množenje4. AND4. AND5. OR5. OR6. NOT6. NOT7. Shiftleft7. Shiftleft8. Shiftright i 8. Shiftright i 9.upoređivanje 9.upoređivanje
Komponenete CPU-aKomponenete CPU-a
- Z flag: Postaje 1 kada je izlaz iz ALU 0- Z flag: Postaje 1 kada je izlaz iz ALU 0
- - C flag: Postaje 1 kada ALU ima izlaz sa prenosomC flag: Postaje 1 kada ALU ima izlaz sa prenosom
Skup instrukcija SAYEH procesoraSkup instrukcija SAYEH procesora
InstructionInstructionMnemonic andMnemonic andDefinition Definition
BitsBits
15:0 15:0 RTL notation:RTL notation:comments orcomments orconditioncondition
nopnop - No operation - No operation 0000-00-00 0000-00-00 No operation No operation
hlthlt - Halt - Halt 0000-00-01 0000-00-01 Halt, fetching stops Halt, fetching stops
szfszf - Set zero flag - Set zero flag 0000-00-10 0000-00-10 Z <= 1' Z <= 1'
czfczf - Clr zero flag - Clr zero flag 0000-00-11 0000-00-11 Z <= '0' Z <= '0'
scfscf - Set carry flag - Set carry flag 0000-01-00 0000-01-00 C<='1' C<='1'
Skup instrukcija SAYEH procesoraSkup instrukcija SAYEH procesora
ccf ccf - Clr carry flag- Clr carry flag 0000-01-01 0000-01-01 C <= '0' C <= '0'
cwpcwp - ClrWindow - ClrWindow pointerpointer
0000-01-10 0000-01-10 WP <= "000" WP <= "000"
mvrmvr - Move Register - Move Register 0001-D-S 0001-D-S Rd <= Rs Rd <= Rs
idaida - Load Addressed - Load Addressed 0010-D-S 0010-D-S Rd <= (Rs) Rd <= (Rs)
stasta - Store Addressed - Store Addressed 0011-D-S 0011-D-S (Rd) <= Rs (Rd) <= Rs
inpinp - Input from port - Input from port 0100-D-S 0100-D-S In from Rs write to In from Rs write to Rd Rd
Skup instrukcija SAYEH procesoraSkup instrukcija SAYEH procesora
oupoup - Output to port - Output to port 0101-D-S 0101-D-S Out to port Rd from Out to port Rd from Rs Rs
andand - AND Registers - AND Registers 0110-D-S 0110-D-S Rd <= Rd & Rs Rd <= Rd & Rs
oror - OR Registers - OR Registers 0111-D-S 0111-D-S Rd <= Rd I Rs Rd <= Rd I Rs
not not - NOT Register- NOT Register 1000-D-S 1000-D-S Rd <= ~Rs Rd <= ~Rs
shl shl - Shift Left- Shift Left 1001-D-S 1001-D-S Rd <= sla Rs Rd <= sla Rs
shrshr - Shift Right - Shift Right 1010-D-S 1010-D-S Rd <= sra RsRd <= sra Rs
Skup instrukcija SAYEH procesoraSkup instrukcija SAYEH procesoraaddadd - Add Registers - Add Registers 1011-D-S 1011-D-S Rd <= Rd + Rs + C Rd <= Rd + Rs + C
subsub - Subtract - SubtractRegistersRegisters
1100-D-S 1100-D-S Rd <= Rd - Rs - C Rd <= Rd - Rs - C
mulmul - Multiply - MultiplyRegistersRegisters
1101-D-S 1101-D-S Rd <= Rd * Rd <= Rd * Rs Rs :8-bit:8-bitmultiplicationmultiplication
cmpcmp – Compare – Compare 1110-D-S 1110-D-S Rd, Rs Rd, Rs (if (if equal:equal:Z=1;Z=1; if ifRd<Rs: C=1Rd<Rs: C=1))
milmil - Move Immd - Move Immd LowLow
1111-D-00-I 1111-D-00-I Rdl <= {8'bZ, I} Rdl <= {8'bZ, I}
mihmih - Move Immd - Move Immd HighHigh
1111-D-01-I 1111-D-01-I Rdh <= {I, 8'bZ } Rdh <= {I, 8'bZ }
Skup instrukcija SAYEH procesoraSkup instrukcija SAYEH procesora
spcspc - Save PC - Save PC 1111-D-10-I 1111-D-10-I Rd <= PC + I Rd <= PC + I
jpajpa - Jump - Jump AddressedAddressed
1111-D-ll-I 1111-D-ll-I PC <= Rd + I PC <= Rd + I
jpr jpr - Jump Relative- Jump Relative 0000-01-11-I 0000-01-11-I PC <= PC + I PC <= PC + I
brzbrz - Branch if Zero - Branch if Zero 0000-10-00-I 0000-10-00-I PC <= PC + I PC <= PC + I :if Z :if Z is 1is 1
brcbrc - Branch if - Branch if CarryCarry
0000-10-01-I 0000-10-01-I PC <= PC + I PC <= PC + I :if C :if C is 1is 1
awpawp - Add Win pntr - Add Win pntr 0000-10-10-I 0000-10-10-I WP <= WP + I WP <= WP + I
SAYEH instrukcijeSAYEH instrukcije Opšti format 8-bitnih i 16-bitnih SAYEH instrukcija je Opšti format 8-bitnih i 16-bitnih SAYEH instrukcija je
prikazan na slici:prikazan na slici:
15 15 1212
11 11 1010
09 0809 08 07 0007 00
opcodeopcode leftleft rightright immediatimmediatee
SAYEH instrukcijeSAYEH instrukcije
- OPCODE polje je 4-bitni kod koji odredjuje tip - OPCODE polje je 4-bitni kod koji odredjuje tip instrukcije. instrukcije.
- Polja - Polja Left Left (levo) i (levo) i Right Right (desno) su 2-bitni (desno) su 2-bitni kodovi koji biraju registre R0 do R3 za izvor kodovi koji biraju registre R0 do R3 za izvor i/ili odredište instrukcije. Obično, i/ili odredište instrukcije. Obično, Left Left se koristi se koristi za odredište, a za odredište, a RightRight za izvor. za izvor.
- - ImmediateImmediate polje se koristi za trenutne podatke, polje se koristi za trenutne podatke, ili ako su dve 8-bitne instrukcije zapakovane ili ako su dve 8-bitne instrukcije zapakovane koristi se za drugu instrukciju.koristi se za drugu instrukciju.
SAYEH instrukcijeSAYEH instrukcije
- Naš procesor ima ukupno 29 instrukcija- Naš procesor ima ukupno 29 instrukcija- Instrukcije sa I trenutnim poljem su 16-bitne instrukcije a - Instrukcije sa I trenutnim poljem su 16-bitne instrukcije a
ostale su 8-bitne instrukcijeostale su 8-bitne instrukcije- Instrukcije koje koriste polja - Instrukcije koje koriste polja Destination Destination (odredište) i (odredište) i
Source Source (izvor) (označeni sa D i S u tabeli seta instrukcija) (izvor) (označeni sa D i S u tabeli seta instrukcija) imaju OPCODE koji je ograničen na 4 bitaimaju OPCODE koji je ograničen na 4 bita
- Instrukcije koje ne zahtevaju specifikaciju izvornih i - Instrukcije koje ne zahtevaju specifikaciju izvornih i odredišnih registara korise ova polja kao OPCODE odredišnih registara korise ova polja kao OPCODE ekstenzijeekstenzije
SAYEH staza podatakaSAYEH staza podataka
Glavne komponente Glavne komponente SAYEHSAYEH procesora su procesora su Addressing Addressing UnitUnit(adresna jedinica) koja se sastoji od (adresna jedinica) koja se sastoji od PC (Program PC (Program CounterCounter-programski brojač-programski brojač)) i i Address Logic Address Logic (adresna (adresna logika), logika), IRIR (instrukcioni registar), (instrukcioni registar), WPWP ( (Window PointerWindow Pointer), ), RegisterRegister File File koji se sastoji od koji se sastoji od Left Decoder 1Left Decoder 1 i i Right Right Decoder 2Decoder 2, , ALUALU (aritmetičko-logička jedinica) i (aritmetičko-logička jedinica) i Flags Flags (zastavice).(zastavice).
SAYEH staza podatakaSAYEH staza podataka
Komponente staze podatakaKomponente staze podataka Slika pokazuje hijerarhijsku strukturu SAYEH Slika pokazuje hijerarhijsku strukturu SAYEH
komponenti.komponenti.
Komponente staze podatakaKomponente staze podataka
- Addressing Unit- Addressing Unit se dalje deli na se dalje deli na PCPC i i Address LogicAddress Logic..
- Addressing Logic- Addressing Logic(adresna logika) je kombinaciono (adresna logika) je kombinaciono kolo koje je sposobno dodavati svoje ulaze u cilju kolo koje je sposobno dodavati svoje ulaze u cilju generisanja 16-bitnog izlaza koji formira adresu za generisanja 16-bitnog izlaza koji formira adresu za memoriju procesora.memoriju procesora.
- Program Counter i Instruction Register- Program Counter i Instruction Register su 16-bitni su 16-bitni registri.registri.
- Register File- Register File je dvoportna memorija i polje od 8 je dvoportna memorija i polje od 8
šesnaestobitnih registara. šesnaestobitnih registara.
Komponente staze podatakaKomponente staze podataka
- - Window PointerWindow Pointer je trobitni registar koji se koristi kao je trobitni registar koji se koristi kao osnova osnova Register FileRegister File..
- Specifični registri za čitanje i upis (R0, R1, R2 ili R3) - Specifični registri za čitanje i upis (R0, R1, R2 ili R3) u u Register FileRegister File su određeni svojim 4-bitnim su određeni svojim 4-bitnim magistralama koje dolaze iz magistralama koje dolaze iz InstructionInstruction RegisteraRegistera. 2 . 2 bita se koriste za izbor izvornog registra, a druga 2 bita bita se koriste za izbor izvornog registra, a druga 2 bita biraju odredišni registar.biraju odredišni registar.
Komponente staze podatakaKomponente staze podataka
Kada je Kada je Window PointerWindow Pointer aktivan, dodaje svoj trobitni aktivan, dodaje svoj trobitni ulaz na svoje trenutne podatke.ulaz na svoje trenutne podatke.
Flags registar je dvobitni registar koji čuva Flags registar je dvobitni registar koji čuva flag flag izlaze izlaze iz iz Aritmetic UnitAritmetic Unit. .
Aritmetic UnitAritmetic Unit je 16-bitna aritmetička i logička jedinica je 16-bitna aritmetička i logička jedinica koja ima odredjene funkcije. 9-bitni ulaz bira funkciju koja ima odredjene funkcije. 9-bitni ulaz bira funkciju ALUALU-a prikazanu u ovoj tabeli. Ovaj kod je obezbedjen -a prikazanu u ovoj tabeli. Ovaj kod je obezbedjen od strane kontrolera procesora.od strane kontrolera procesora.
ALU operacijeALU operacije
Operacije Operacije Opis Opis Kod Kod
Bl5to0H Bl5to0H Operand B smestiti na Operand B smestiti na izlaz izlaz 1000000000 1000000000
AandBH AandBH Na izlaz smestiti rezultat Na izlaz smestiti rezultat logičke operacije A' I ' B logičke operacije A' I ' B 0100000000 0100000000
AorBH AorBH Na izlaz smestiti rezultat Na izlaz smestiti rezultat logičke operacije A' ILI ' logičke operacije A' ILI ' B B
0010000000 0010000000
notBH notBH Na izlaz smestiti Na izlaz smestiti komplement operanda B komplement operanda B 0001000000 0001000000
ALU operacijeALU operacije
shlBH shlBH Pomeranje bitova Pomeranje bitova operanda B za jedno operanda B za jedno mesto ulevomesto ulevo
0000100000 0000100000
shrBH shrBH Pomeranje bitova Pomeranje bitova operanda B za jedno operanda B za jedno mesto udesnomesto udesno
0000010000 0000010000
AaddBH AaddBH Zbir operanada A I B Zbir operanada A I B smestiti na izlazsmestiti na izlaz 0000001000 0000001000
AsubBH AsubBH Razliku operanada A I B Razliku operanada A I B smestiti na izlazsmestiti na izlaz 0000000100 0000000100
AmulBH AmulBH Proizvod operanada A I B Proizvod operanada A I B smestiti na izlazsmestiti na izlaz 0000000010 0000000010
AcmpBH AcmpBH Z=1 ako je A=B; C=1 ako Z=1 ako je A=B; C=1 ako je A<Bje A<B 0000000001 0000000001
Blok IR Blok IR (instrukcioni registar)(instrukcioni registar)
Blok Blok IRIR predstavlja 16-bitni registar koji se u predstavlja 16-bitni registar koji se uokviru izvršne jedinice koristi kao okviru izvršne jedinice koristi kao instrukcioniinstrukcioniregistarregistar.. Blok Blok IRIR ima sledeće portove: ima sledeće portove: ClkClk – ulaz taktnog signala (kad je =1 registar – ulaz taktnog signala (kad je =1 registar
pamti sadržaj na ulazu),pamti sadržaj na ulazu), LoadLoad – ulaz za dozvolu izlaza podataka (kada – ulaz za dozvolu izlaza podataka (kada
je =0 registar je otkačen sa magistrale, a kada je =0 registar je otkačen sa magistrale, a kada je =1 memorisani sadržaj registra se je =1 memorisani sadržaj registra se pojavljuje na izlazu),pojavljuje na izlazu),
16-bitni ulaz 16-bitni ulaz DataData – ulaz na koji se dovodi – ulaz na koji se dovodi instrukcija,instrukcija,
16-bitni izlaz 16-bitni izlaz QQ – izlaz iz instrukcionog – izlaz iz instrukcionog registra usmeren ka upravljačkoj jednici registra usmeren ka upravljačkoj jednici (kontroleru),(kontroleru),
8-bitni izlaz 8-bitni izlaz Q1Q1– izlaz koji predstavlja – izlaz koji predstavlja gornjih 8 bitova iz 16-bitnog ulaza gornjih 8 bitova iz 16-bitnog ulaza DataData..
CLK Q(15:0) DATA(15:0)
Q1(7:0)
LOAD
U1
ir
Blok PC (programski brojač)Blok PC (programski brojač)
PCPC predstavlja blok koji određuje adresu naredne predstavlja blok koji određuje adresu naredne instrukcije koju treba izvršiti.instrukcije koju treba izvršiti.
Blok Blok PC PC ima sledeće portove:ima sledeće portove: ClkClk – ulaz taktnog signala (kad je =1 registar pamti – ulaz taktnog signala (kad je =1 registar pamti
sadržaj na ulazu),sadržaj na ulazu), PCPC -16-bitni ulaz -16-bitni ulaz 16-bitni ulaz 16-bitni ulaz RSideRSide – ulaz koji se dovodi iz – ulaz koji se dovodi iz
registarskog polja,registarskog polja, 8-bitni ulaz 8-bitni ulaz IRIR– ulaz koji se dovodi iz instrukcionog – ulaz koji se dovodi iz instrukcionog
registra,registra, IzlIzl –16-bitni izlaz koji se vodi na memoriju i na ulaz –16-bitni izlaz koji se vodi na memoriju i na ulaz
PCPC-a,-a, Reset PCReset PC – ulaz koji postavlja izlaz na nula vektor, – ulaz koji postavlja izlaz na nula vektor, PCplus1PCplus1– kontrolni signal (ako je =1 sadržaj brojača – kontrolni signal (ako je =1 sadržaj brojača
se uvećava za 1) ,se uvećava za 1) , PCplusIPCplusI– kontrolni signal (ako je =1 sadržaj brojača – kontrolni signal (ako je =1 sadržaj brojača
se uvećava za vrednost se uvećava za vrednost IRIR),), R0plusIR0plusI– kontrolni signal (ako je =1 na izlazu – kontrolni signal (ako je =1 na izlazu
brojača je zbir ulaza brojača je zbir ulaza RSide RSide i ulaza i ulaza IRIR ), ), R0plus0R0plus0– kontrolni signal (ako je =1 na izlazu – kontrolni signal (ako je =1 na izlazu
brojača je ulaz brojača je ulaz RSideRSide ), ), JmpJmp – kontrolni signal (ako je =1 ulaz – kontrolni signal (ako je =1 ulaz PCPC se samo se samo
prosleđuje na izlaz prosleđuje na izlaz IzlIzl).).
IR(7:0)
izl(15:0)
PC(15:0)
PCplus1
PCplusI
R0plus0
R0plusI
RSide(15:0)
ResetPCclk
jmp
U1
adr_unt
Blok WP (pokazivač prozora)Blok WP (pokazivač prozora)
WP WP je 3-bitni registar koji ukazuje na jedan je 3-bitni registar koji ukazuje na jedan od osam registara u polju od osam registara u polju Register FileRegister File..
Blok Blok WP WP ima sledeće portove:ima sledeće portove: ClkClk – ulaz taktnog signala (kad je =1 registar – ulaz taktnog signala (kad je =1 registar
pamti sadržaj na ulazu),pamti sadržaj na ulazu), DataData – trobitni ulaz – trobitni ulaz Q Q – trobitni izlaz koji definiše registar u – trobitni izlaz koji definiše registar u
registarskom polju,registarskom polju, WPresetWPreset – kontrolni ulaz (ako je =1 izlaz – kontrolni ulaz (ako je =1 izlaz Q Q
je nula vektor),je nula vektor), WPadd – WPadd – kontrolni ulaz (ako je =1 ulaz se kontrolni ulaz (ako je =1 ulaz se
dodaje na trenutno stanje dodaje na trenutno stanje WPWP-a).-a).
CLK
Q(2:0)DATA(2:0)
WPadd
WPreset
U1
WP
Blok FRBlok FR
FR FR je 2-bitni registar koji opisuje je 2-bitni registar koji opisuje stanje aritmetičko-logičke jedinice. stanje aritmetičko-logičke jedinice.
Blok Blok FR FR ima sledeće portove:ima sledeće portove: ClkClk – ulaz taktnog signala (kad je =1 – ulaz taktnog signala (kad je =1
registar pamti sadržaj na ulazu),registar pamti sadržaj na ulazu), Cout, Zout Cout, Zout – 1-bitni ulazi,– 1-bitni ulazi, C,ZC,Z – 1-bitni izlazi, – 1-bitni izlazi, CsetCset – kontrolni ulaz (ako je =1 izlaz – kontrolni ulaz (ako je =1 izlaz
C C se postavlja na 1),se postavlja na 1), CresetCreset – kontrolni ulaz (ako je =1 – kontrolni ulaz (ako je =1
izlaz izlaz C C se postavlja na 0),se postavlja na 0), ZsetZset – kontrolni ulaz (ako je =1 izlaz – kontrolni ulaz (ako je =1 izlaz
Z Z se postavlja na 1),se postavlja na 1), ZresetZreset – kontrolni ulaz (ako je =1 – kontrolni ulaz (ako je =1
izlaz izlaz ZZ se postavlja na 0). se postavlja na 0).
CLK
C
CReset
Z
CSet
Cout
ZResetZSetZout
U2
flags
Blok RF (registarsko polje)Blok RF (registarsko polje)
Register File Register File predstavlja polje od osam 16-bitnih predstavlja polje od osam 16-bitnih registara. registara.
Blok Blok Register File Register File ima sledeće portove:ima sledeće portove: ClkClk – ulaz taktnog signala (kad je =1 registar – ulaz taktnog signala (kad je =1 registar
pamti sadržaj na ulazu),pamti sadržaj na ulazu), DataData -16-bitni ulaz -16-bitni ulaz Rd, RsRd, Rs –16-bitni izlazi koji predstavljaju –16-bitni izlazi koji predstavljaju
operande za aritmetičko-logičku jedinicu,operande za aritmetičko-logičku jedinicu, WPWP– 3-bitni kontrolni signal koji definiše – 3-bitni kontrolni signal koji definiše
registar,registar, SelSel– 4-bitni kontrolni signal (donja dva bita se – 4-bitni kontrolni signal (donja dva bita se
koriste za definisanje izvora(koriste za definisanje izvora(sourcesource), a gornja dva ), a gornja dva za definisanje odredišta (za definisanje odredišta (destinationdestination) ),) ),
WELWEL– kontrolni signal (ako je =1 na mestu osam – kontrolni signal (ako je =1 na mestu osam nižih bitova u registru koji je definisan kontrolnim nižih bitova u registru koji je definisan kontrolnim signalom signalom WP WP upisaće se nižih osam bitova sa upisaće se nižih osam bitova sa ulaza ulaza DATADATA), ),
WEHWEH– kontrolni signal (ako je =1 na mestu osam – kontrolni signal (ako je =1 na mestu osam viših bitova u registru koji je definisan kontrolnim viših bitova u registru koji je definisan kontrolnim signalom signalom WP WP upisaće se osam viših bitova sa upisaće se osam viših bitova sa ulaza ulaza DATADATA).).
CLK
RD(15:0)
DATA(15:0)
RS(15:0)
Sel(3:0)
WEHWEL
WP(2:0)
U3
registar_file
Aritmetičko-logička jedinicaAritmetičko-logička jedinica
U sledećoj tabeli prikazane su operacije koje izvršava aritmetičko-logička jedinica procesora U sledećoj tabeli prikazane su operacije koje izvršava aritmetičko-logička jedinica procesora SAYEH.SAYEH.
OznakaOznaka OperacijaOperacija ALUselALUsel RTLRTL And And Logička ' I ' operacija Logička ' I ' operacija 0110 0110 Rd <= Rd & Rs Rd <= Rd & Rs
OrOr Logička ' ILI ' Logička ' ILI ' operacija operacija
0111 0111 Rd <= Rd I Rs Rd <= Rd I Rs
NotNot Negacija Negacija 1000 1000 Rd <= ~Rs Rd <= ~Rs
ShlShl Pomeranje ulevoPomeranje ulevo 1001 1001 Rd <= sla Rs Rd <= sla Rs
ShrShr Pomeranje udesnoPomeranje udesno 1010 1010 Rd <= sra Rs Rd <= sra Rs
AddAdd SabiranjeSabiranje 1011 1011 Rd <= Rd + Rs Rd <= Rd + Rs
SubSub OduzimanjeOduzimanje 1100 1100 Rd <= Rd - Rs Rd <= Rd - Rs
MulMul MnoženjeMnoženje 1101 1101 Rd <= Rd * Rs Rd <= Rd * Rs :8-:8-bitnobitnomnoženjemnoženje
CmpCmp PoređenjePoređenje 1101 1101 Rd, Rs Rd, Rs (ako su (ako su jednaki:jednaki:Z=1Z=1; ako je ; ako je Rd<Rs: C=1Rd<Rs: C=1))
Aritmetičko-logička jedinicaAritmetičko-logička jedinica Aritmetičko-logička jedinica ima sledeće portove:Aritmetičko-logička jedinica ima sledeće portove: ClkClk – ulaz taktnog signala, – ulaz taktnog signala, B15to0B15to0 – ulazni kontrolni signal (ako je =1 ulaz – ulazni kontrolni signal (ako je =1 ulaz BB se propusti na izlaz se propusti na izlaz
ALUoutALUout),), AandBAandB – ulazni kontrolni signal (ako je =1 izvršava se logička – ulazni kontrolni signal (ako je =1 izvršava se logička
operacija 'i' ),operacija 'i' ), AorBAorB – ulazni kontrolni signal (ako je =1 izvršava se logička operacija – ulazni kontrolni signal (ako je =1 izvršava se logička operacija
'ili' ),'ili' ), NotBNotB – ulazni kontrolni signal (ako je =1 vrši se komplementiranje – ulazni kontrolni signal (ako je =1 vrši se komplementiranje
ulaza ulaza BB),), AaddBAaddB – ulazni kontrolni signal (ako je =1 izvršava se sabiranje nad – ulazni kontrolni signal (ako je =1 izvršava se sabiranje nad
ulaznim operandima),ulaznim operandima), AsubBAsubB – ulazni kontrolni signal (ako je =1 – ulazni kontrolni signal (ako je =1 ALUALU jedinica od operanda jedinica od operanda
na ulazu na ulazu AA oduzima operand na ulazu oduzima operand na ulazu BB),), AmulBAmulB – ulazni kontrolni signal (ako je =1 izvršava se množenje – ulazni kontrolni signal (ako je =1 izvršava se množenje
ulaznih operanada),ulaznih operanada), AcmpBAcmpB – ulazni kontrolni signal (ako je =1 ulaz – ulazni kontrolni signal (ako je =1 ulaz AA se poredi sa ulazom se poredi sa ulazom
BB),), ShrBShrB– ulazni kontrolni signal (ako je =1 sadržaj ulaza – ulazni kontrolni signal (ako je =1 sadržaj ulaza BB se pomera za se pomera za
jedno mesto ulevo),jedno mesto ulevo), ShlBShlB– ulazni kontrolni signal (ako je =1 sadržaj ulaza – ulazni kontrolni signal (ako je =1 sadržaj ulaza BB se pomera za se pomera za
jedno mesto udesno),jedno mesto udesno), 16-bitni ulaz 16-bitni ulaz AA – ulaz podataka, – ulaz podataka, 16-bitni ulaz 16-bitni ulaz BB – ulaz podataka, – ulaz podataka, 16-bitni izlaz 16-bitni izlaz ALUoutALUout – izlaz rezultata operacije, – izlaz rezultata operacije, jednobitni izlazi jednobitni izlazi Cout, ZoutCout, Zout – izlazi statusnih markera. – izlazi statusnih markera.
A(15:0)
ALUout(15:0)
AaddB
Cout AandB
Zout
AcmpB
AmulB
AorB
AsubB
B(15:0)
B15to0
Clk
NotB
ShlB
ShrB
U1
ALU
Blok memorijaBlok memorija
Blok memorije ima sledeće portove:Blok memorije ima sledeće portove: 16-bitni ulaz 16-bitni ulaz AddrAddr – adresni ulaz – adresni ulaz
memorije,memorije, jednobitni ulaz jednobitni ulaz RERE – kontrolni signal – kontrolni signal
(ako je =1 dozvoljeno je iščitavanje (ako je =1 dozvoljeno je iščitavanje podataka iz memorije),podataka iz memorije),
jednobitni ulaz jednobitni ulaz WEWE – kontrolni signal – kontrolni signal (ako je =1 dozvoljeno je upisivanje (ako je =1 dozvoljeno je upisivanje podataka u memoriju),podataka u memoriju),
DataData – 16-bitni ulaz podataka, – 16-bitni ulaz podataka, QQ– 16-bitni izlaz podataka.– 16-bitni izlaz podataka.
ADDR(15:0)
Q(15:0)
DATA(15:0)REWE
U1
memorija
MultiplekserMultiplekser
Multiplekser SAYEH procesora ima Multiplekser SAYEH procesora ima sledeće portove:sledeće portove:
I0I0 i i I1I1– 4-bitni ulazi,– 4-bitni ulazi, O - O - 4-bitni izlaz,4-bitni izlaz, ShadowShadow – kontrolni signal (ako je =1 – kontrolni signal (ako je =1
na izlaz se vodi na izlaz se vodi I0I0, a ako je =0 na , a ako je =0 na izlaz se vodi izlaz se vodi I1I1).).
I0(11:8)O(3:0)
I1(3:0)
Shadow
U2
mux
Trostatički bafer 1Trostatički bafer 1
Bafer 1 SAYEH procesora ima Bafer 1 SAYEH procesora ima sledeće portove:sledeće portove:
II– 8-bitni ulaz,– 8-bitni ulaz, O - O - 8-bitni izlaz,8-bitni izlaz, IR_on_LOpndBusIR_on_LOpndBus – kontrolni signal – kontrolni signal
(ako je =1 ulaz (ako je =1 ulaz II se vodi na izlaz se vodi na izlaz O O kojikoji se dalje upisuje na mesto nižih 8 se dalje upisuje na mesto nižih 8 bitova operanda Rs).bitova operanda Rs).
O(7:0)
I(7:0)
IR_on_LOpndBus
U1
buff1
Trostatički bafer 2Trostatički bafer 2
Bafer 2 SAYEH procesora ima Bafer 2 SAYEH procesora ima sledeće portove:sledeće portove:
II– 8-bitni ulaz,– 8-bitni ulaz, O - O - 8-bitni izlaz,8-bitni izlaz, IR_on_HOpndBusIR_on_HOpndBus – kontrolni signal – kontrolni signal
(ako je =1 ulaz (ako je =1 ulaz II se vodi na izlaz se vodi na izlaz O O kojikoji se dalje upisuje na mesto viših 8 se dalje upisuje na mesto viših 8 bitova operanda Rs).bitova operanda Rs).
I(7:0)O(7:0)
IR_on_HOpndBus
U2
buff2
Trostatički bafer 3Trostatički bafer 3
Bafer 3 SAYEH procesora ima Bafer 3 SAYEH procesora ima sledeće portove:sledeće portove:
II– 16-bitni ulaz,– 16-bitni ulaz, O - O - 16-bitni izlaz,16-bitni izlaz, RFright_on_OpndBusRFright_on_OpndBus – kontrolni – kontrolni
signal (ako je =1 ulaz signal (ako je =1 ulaz II se vodi na se vodi na izlaz izlaz O O kojikoji se dalje vodi na ulaz se dalje vodi na ulaz BB aritmetičko-logičke jedinice).aritmetičko-logičke jedinice).
I(15:0)
O(15:0)
RFright_on_OpndBus
U3
buff3
Trostatički bafer 4Trostatički bafer 4
Bafer 4 SAYEH procesora ima Bafer 4 SAYEH procesora ima sledeće portove:sledeće portove:
II– 16-bitni ulaz,– 16-bitni ulaz, O - O - 16-bitni izlaz,16-bitni izlaz, Rs_on_AddressUnitRsideRs_on_AddressUnitRside – –
kontrolni signal (ako je =1 ulaz kontrolni signal (ako je =1 ulaz I I (odnosno operand Rs) se vodi na izlaz (odnosno operand Rs) se vodi na izlaz O O kojikoji se dalje vodi na ulaz se dalje vodi na ulaz Rside Rside bloka bloka PCPC).).
I(15:0)O(15:0)
Rs_on_AdressUnitRSide
U4
buff4
Trostatički bafer 5Trostatički bafer 5
Bafer 5 SAYEH procesora ima Bafer 5 SAYEH procesora ima sledeće portove:sledeće portove:
II– 16-bitni ulaz,– 16-bitni ulaz, O - O - 16-bitni izlaz,16-bitni izlaz, Rd_on_AddressUnitRsideRd_on_AddressUnitRside – –
kontrolni signal (ako je =1 ulaz kontrolni signal (ako je =1 ulaz I I (odnosno operand Rd) se vodi na (odnosno operand Rd) se vodi na izlaz izlaz O O kojikoji se dalje vodi na ulaz se dalje vodi na ulaz Rside Rside bloka bloka PCPC). ).
I(15:0) O(15:0)
Rd_on_AdressUnitRSide
U5
buff5
Trostatički bafer 6Trostatički bafer 6
Bafer 6 SAYEH procesora ima Bafer 6 SAYEH procesora ima sledeće portove:sledeće portove:
II– 16-bitni ulaz,– 16-bitni ulaz, O - O - 16-bitni izlaz,16-bitni izlaz, ALUout_on_DatabusALUout_on_Databus – kontrolni – kontrolni
signal (ako je =1 ulaz signal (ako je =1 ulaz I I (odnosno (odnosno izlaz iz aritmetičko-logičke jedinice) izlaz iz aritmetičko-logičke jedinice) se vodi na izlaz se vodi na izlaz O O tj. na magistralu tj. na magistralu podataka).podataka).
ALUout_on_Databus
O(15:0)
I(15:0)
U6
buff6
Trostatički bafer 7Trostatički bafer 7
Bafer 7 SAYEH procesora ima Bafer 7 SAYEH procesora ima sledeće portove:sledeće portove:
II– 16-bitni ulaz,– 16-bitni ulaz, O - O - 16-bitni izlaz,16-bitni izlaz, Address_on_DatabusAddress_on_Databus – kontrolni – kontrolni
signal (ako je =1 ulaz signal (ako je =1 ulaz I I (odnosno (odnosno adresa koju generiše blok adresa koju generiše blok PCPC) se vodi ) se vodi na magistralu podataka). na magistralu podataka).
Address_on_Databus
O(15:0)
I(15:0)
U7
buff7
KontrolerKontroler
Upravljačka jedinica služi da na osnovu trenutne instrukcije izvrši generisanjeUpravljačka jedinica služi da na osnovu trenutne instrukcije izvrši generisanje
upravljačkih signala.upravljačkih signala. Upravljačka jednica procesora SAYEH je realizovana kao Upravljačka jednica procesora SAYEH je realizovana kao upravljačka jedinica sa direktnim upravljanjemupravljačka jedinica sa direktnim upravljanjem (eng. (eng. hardwired controlhardwired control))..
KontrolerKontroler
Blok CU ima sledeće portove: Blok CU ima sledeće portove: ClockClock – taktni signal procesora, – taktni signal procesora, IRIR – tekuća instrukcija, – tekuća instrukcija, ExternalExternal ResetReset – signal kojim se – signal kojim se
resetuje stanje procesora,resetuje stanje procesora, MemDataReadyMemDataReady – signali dozvole – signali dozvole
(ako je =1 moguće je čitanje podataka (ako je =1 moguće je čitanje podataka iz memorije ili upis podataka u iz memorije ili upis podataka u memoriju),memoriju),
jednobitni ulazi jednobitni ulazi C, ZC, Z – statusni – statusni markeri ALU-a,markeri ALU-a,
ReadIO, WriteIOReadIO, WriteIO – signali koji se – signali koji se šalju ulazno-izlaznim jedinicama,šalju ulazno-izlaznim jedinicama,
36-bitni izlaz 36-bitni izlaz ControlControl – upravljački – upravljački signali izvršne jedinice.signali izvršne jedinice.
C
ALUout_on_DatabusClk
AaddBExternal_Reset
AandB
IR(15:0)
AcmpB
MemDataReady
Adress_on_DatabusZ
AmulB
AorB
AsubB
B15to0
CReset
CSet
IR_on_HOpndBus
IR_on_LOpndBus
K
Load
NotB
PCplus1
PCplusI
R0plus0
R0plusI
RE
RFright_on_OpndBus
ResetPC
Rl_on_AddressUnitRside
Rs_on_AddressUnitRside
Shadow
ShlB
ShrB
WE
WEH
WEL
WPadd
WPreset
ZReset
ZSet
jmp
ReadIO
WriteIO
U1
control
Control
Procesor SAYEHProcesor SAYEH
Blokovi koji su do sada opisani povezani su na sledeći način:Blokovi koji su do sada opisani povezani su na sledeći način:
ADDR(15:0)
Q(15:0)
DATA(15:0)REWE
U1
memorija
CLK
RD(15:0)
DATA(15:0)
RS(15:0)
Sel(3:0)
WEHWEL
WP(2:0)
U2
registar_file
A(15:0)
ALUout(15:0)
AaddB
Cout AandB
Zout
AcmpB
AmulB
AorB
AsubB
B(15:0)
B15to0
Clk
NotB
ShlB
ShrB
U3
alu
CLK
C
CReset
Z
CSet
Cout
ZResetZSetZout
U4
flags
IR(7:0)
izl(15:0)
PC(15:0)
PCplus1
PCplusI
R0plus0
R0plusI
RSide(15:0)
ResetPCclk
jmp
U5
adr_unt
C
ALUout_on_DatabusClk
AaddBExternal_Reset
AandB
IR(15:0)
AcmpB
MemDataReady
Adress_on_DatabusZ
AmulB
AorB
AsubB
B15to0
CReset
CSet
IR_on_HOpndBus
IR_on_LOpndBus
K
Load
NotB
PCplus1
PCplusI
R0plus0
R0plusI
RE
RFright_on_OpndBus
ResetPC
Rl_on_AddressUnitRside
Rs_on_AddressUnitRside
Shadow
ShlB
ShrB
WE
WEH
WEL
WPadd
WPreset
ZReset
ZSet
jmp
ReadIO
WriteIO
U6
control
CLK Q(15:0) DATA(15:0)
Q1(7:0)
LOAD
U7
irI0(11:8)
O(3:0)I1(3:0)
Shadow
U8
mux
CLK
IZL(2:0)
K
ULAZ(2:0)
U10
novo
O(7:0)
I(7:0)
IR_on_LOpndBus
U11
buff1
CLK
Q(2:0)DATA(2:0)
WPadd
WPreset
U12
WP
I(7:0)O(7:0)
IR_on_HOpndBus
U13
buff2
I(15:0)O(15:0)
RFright_on_OpndBus
U14
buff3
I(15:0)O(15:0)
Rs_on_AdressUnitRSide
U15
buff4I(15:0) O(15:0)
Rd_on_AdressUnitRSide
U16
buff5
ALUout_on_Databus
O(15:0)
I(15:0)
U17
buff6
Address_on_Databus
O(15:0)
I(15:0)
U18
buff7
Opnd(15:0)
Opnd(15:8)
Irout(7:0)
Irout(3:1)
Ir_bus(15:0)Ir_bus(11:8)
Ir_bus(3:0)
clock
Opnd(7:0)
ExtResetMemDatReady
ReadIOWriteIO
Testiranje sintetiTestiranje sintetizovanog procesorazovanog procesora
Programskom sekvencom od šest naredbi testiraćemo korektnost rada Programskom sekvencom od šest naredbi testiraćemo korektnost rada sintetizovanog procesora SAYEH.sintetizovanog procesora SAYEH.
Add R1, R6; R1 ← R1 + R6Add R1, R6; R1 ← R1 + R6 Shl R7; Shl R7; R0 ← Shl R7R0 ← Shl R7 Or R3, R7; R3 ← R3 Or R7Or R3, R7; R3 ← R3 Or R7 Not R5; Not R5; R0 ← Not R5 R0 ← Not R5 Sub R1, R6; R1 ← R1 – R6Sub R1, R6; R1 ← R1 – R6 Sta (R3), R4; mem(R3) ← R4Sta (R3), R4; mem(R3) ← R4
DefinisanjeDefinisanje inicijalnih vrednosti memorijskih lokacijainicijalnih vrednosti memorijskih lokacija Sadržaj programske memorije za odgovarajuću programsku sekvencu treba da bude Sadržaj programske memorije za odgovarajuću programsku sekvencu treba da bude
sledećeg oblika:sledećeg oblika: Memory[0]=Memory[0]=10111011011001100000000000000000=B600: =B600: Add Add R1,R6R1,R6 Memory[1]=Memory[1]=100110010011001100000000000000=9300: 00=9300: Shl Shl R7R7 Memory[2]=Memory[2]=011101111111111100000000=7F00: 00000000=7F00: Or Or R3,R7R3,R7 Memory[3]=Memory[3]=10001000000100010000000000000000=8100: =8100: Not Not R5R5 Memory[4]=Memory[4]=11001100011001100000000000000000=C600: =C600: SubSub R1,R6 R1,R6 Memory[5]=Memory[5]=0011001111001100000000000000000=3C00: 0=3C00: Sta (R3),R4Sta (R3),R4 Napomena: Mašinski kod, četiri MS bita instrukcije, označen je crvenom bojom, Napomena: Mašinski kod, četiri MS bita instrukcije, označen je crvenom bojom,
naredna četiri bita označena plavom bojom specificiraju izvorišni i odredišni naredna četiri bita označena plavom bojom specificiraju izvorišni i odredišni operand instrukcije, zadnjih osam bitova specificiraju neposrednu vrednost opkoda operand instrukcije, zadnjih osam bitova specificiraju neposrednu vrednost opkoda instrukcije, tj. polje koje se naziva instrukcije, tj. polje koje se naziva imm.imm. Kada se opkodom ne specificira korišćenje Kada se opkodom ne specificira korišćenje polja polja immimm tada je njegova vrednost 00h. tada je njegova vrednost 00h.
Definisanje sadržaja registara registarskog poljaDefinisanje sadržaja registara registarskog polja
Sadržaj registara registarskog polja pre početka izvršenja programske sekvence Sadržaj registara registarskog polja pre početka izvršenja programske sekvence treba biti sledeći:treba biti sledeći:
Reg_fileReg_file[0]=0000000000000000=0000; [0]=0000000000000000=0000; Reg_fileReg_file[1]=0000000000000001=0001;[1]=0000000000000001=0001; Reg_fileReg_file[2]=0000000000001010=000A;[2]=0000000000001010=000A; Reg_fileReg_file[3]=0000000000000011=0003;[3]=0000000000000011=0003; Reg_fileReg_file[4]=0000000000000100=0004; [4]=0000000000000100=0004; Reg_fileReg_file[5]=0000000000000101=0005;[5]=0000000000000101=0005; Reg_fileReg_file[6]=0000000000000110=0006;[6]=0000000000000110=0006; Reg_fileReg_file[[77]=0000000000000111=0007;]=0000000000000111=0007;
Sadržaj registara pre izvršenja programske sekvenceSadržaj registara pre izvršenja programske sekvence
Sadržaj registara nakon prve instrukcije ( Add R1,R6 : R1 ← R1 + R6 )Sadržaj registara nakon prve instrukcije ( Add R1,R6 : R1 ← R1 + R6 )
Sadržaj registara nakon druge instrukcije (Shl R7; R0 ← Shl R7)Sadržaj registara nakon druge instrukcije (Shl R7; R0 ← Shl R7)
Sadržaj registara nakon treće instrukcije (Or R3,R7; R3 ← R3 Or R7 )Sadržaj registara nakon treće instrukcije (Or R3,R7; R3 ← R3 Or R7 )
Sadržaj registara nakon četvrte instrukcije(Not R5; R0 ← Not R5 )Sadržaj registara nakon četvrte instrukcije(Not R5; R0 ← Not R5 )
Sadržaj registara nakon pete instrukcije (Sub R1,R6; R1 ← R1 – R6)Sadržaj registara nakon pete instrukcije (Sub R1,R6; R1 ← R1 – R6)
Sadržaj registara i memorije nakon šeste instrukcije (Sta (R3),R4; mem(R3) ← R4)Sadržaj registara i memorije nakon šeste instrukcije (Sta (R3),R4; mem(R3) ← R4)
Zaključak VHDL je jedan od najčešće korišćenih jezika za opis hardware-a
Prednosti upotrebe VHDL-a : jednostavna i efikasna implementacija skraćeno vreme dizajniranja lakša detekcija grešaka jednostavno testiranje visok nivo apstrakcije maksimalno tačan i pouzdan dizajn uz najmanju cenu u
najkraćem roku razvijanja
Zbog navedenih prednosti VHDL se često koristi u procesima dizajniranja komponenti i razvoja složenih sistema
AutoriAutoriIme i prezime : Ime i prezime : Nikola SekulovićNikola SekulovićRodjen :Rodjen : 27.04.1983.27.04.1983.Mesto : Mesto : NiNiššŠkola : Škola : Elektronski fakultet , Elektronski fakultet ,
NišNišSmer : Smer : telekomunikacijetelekomunikacijeBroj indeksa : Broj indeksa : 1096310963Kontakt : Kontakt : [email protected]@bankerinter.net
Ime i prezime : Ime i prezime : Lazar VelimirovićLazar VelimirovićRodjen : Rodjen : 17.05.1983.17.05.1983.Mesto : Mesto : ProkupljeProkupljeŠkolaŠkola :: Elektronski fakultet , Elektronski fakultet ,
NišNišSmer : Smer : telekomunikacije telekomunikacijeBroj indeksa :Broj indeksa : 11017 11017Kontakt : Kontakt : [email protected]@bankerinter.net