300 likes | 582 Views
Bratislav Džombić (8627). JASP. VHDL opis jednostavnog procesora. ELEK TRONSKI FAKULTET U NIŠU KATEDRA ZA ELEKTRONIKU Mikroprocesorska tehnika. JUN 2006. Predmet rada. Opis u VHDL-u jednostavnog procesora pod n azivom JASP.
E N D
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 memorija instrukcije procesor registri podaci 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. adrese Instrukcije i podaci
Procesor JASP PC MAR INC MDR SP A IR B ALU ALUx ALUy ALUr PSR • Izvršna jedinica • čine je registri i ALU • Upravljačka jedinica • upravlja radom izvršne jednice pomoću kontrolnih signala Upravljačka jedinica
Registri PC MAR INC MDR SP A IR B Upravljačka jedinica ALU ALUx ALUy ALUr PSR • Programski brojač • Inkrementer (eng. Program Counter)– u njemu se nalazi adresa sledeće instrukcije koju treba izvršiti. (eng. Incrementer) – prihvata sadržaj programskog brojača i uvećava ga za jedan. • Pokazivač magacina (eng. Stack Pointer) – čuva adresu vrha (eng. Top of the Stack – TOS) memorijskog bloka magacin (eng. Stack). • Instrukcioni registar (eng. Instruction Register) – čuva instrukciju koja se tekuće izvršava. • Memorijsko-adresni registar (eng. Memory Address Register) – čuva adresu memorijske lokacije iz koje se čita ili u koji se upisuje podatak. • Memorijski registar podataka (eng. Memory Data Register) – čuva podatak koji se čita iz adresirane lokacije. • Registar opšte namene A čuva podatak za tekuću naredbu • Registar opšte namene B čuva podatak za tekuću naredbu • Ulazni registar ALU - X čuva podatak nad kojim će se izvršiti operacija u ALU • Ulazni registar ALU - Y čuva podatak nad kojim će se izvršiti operacija u ALU • Izlazni registar ALU - R prihvata rezultat operacije izvršene u ALU • Procesorsko statusni registar (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. 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. • 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 0 X 1 X X X X X X X X X X X X X X X X X X X X X 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 • Proširenje nulama – ispred operanda se dodaje 8-bitna binarna nula • Proširenje znakom – ispred operanda se dodaje 8-bitna nula ili jednica u zavisnosti od znaka operanda (tj. od bita najveće težine). ↓ ↓ ↓ 0 X 1 X X X X X X X X X X X X X X X X X X X X X 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:
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 aritmetičke i logičke operacije, kao i kolo kojim se vrši selekcija operacije Portovi ALU: • Kontrolni signali • Markeri stanja • Magistrala podataka
Operacije ALU U sledećoj tabeli prikazane su operacije koje podržava aritmetičko-logička jednica procesora JASP:
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.
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:
Upravljačka jedinica Blokovi upravljačke jednice • Kontroler prekida (eng. Interuppt Controller)- Njegova uloga je da na izlazu daje signal prekida ukoliko su prekidi dozvoljeni (PSR(E) =1) i postoji zahtev za prekidom. • Blok uslova grananja ispituje statusne markere iz ALU (koji se čuvaju u PSR) i na osnovu toga generiše signal koji dozvoljava grananje ili ne. • Logika ovo je blok u kome se, na osnovu rezultata iz Bloka uslova grananja i signala BT, generiše selektorski signal za izbor naredne adrese mikromemorije, odnosno naredne mikroistrukcije. • Adresni maper Ovo je blok u kojem se, na osnovu opkoda instrukcije, generiše adresa prve mikroinstrukcije u rutini. To se radi prostim dodavanjem 4-bitnog broja nula postojećem opkodu. • Mikro inkrementer 12-bitni registar inkrementer koji tekuću adresu mikromemorije uvećava za 1. • Selektor adresa Portovi upravljačke jednice multiplekser koji odlučuje koja će od tri raspoložive adrese mikromemorije biti prosleđena adresnom ulazu mikromemorije • Mikro MAR • Signali prekida 12-bitni memorijsko adresni registar u kojem se čuva tekuća adresa mikromemorije • Mikromemorija • Opkod instrukcije memorija upravljačke jednice u kojoj se nalaze mikroinstrukcije. Memorijske adrese su 12-bitne što znači da poseduje 4096 slobodnih memorijskih lokacija • Mikro MDR • Taktni signal 52-bitni memorijski registar podataka koji memoriše tekuću mikroinstrukciju i deli je na odgovarajuće kontrolne signale na svom izlazu • ALU markeri • Reset signal • Kontrolni signali za izvršnu jednicu
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 • 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 selectsignal (CS) memorije, vode se na RW i CS ulaze memorije, respektivno, • ALU controlsignali – 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 micro-instructions) • - 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:
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.
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: • omogućava opis strukture sistema, tj. dekompozicije na podsisteme i međusobne povezanosti podsistema, • omogućava specifikaciju funkcije sistema korišćenjem jednostavnih formi programskog jezika, • 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 Primenjen u ovom radu VHDL opis ALU kola za operaciju pomeranja u levo(eng Shift Left) VHDL opis ALU • Izvršena je dekompozicija sistema na kola koja obavljaju konkretne operacije (operaciona kola ALU, registri, multiplekseri) • Ovakva kola opisana su na nivou ponašanja(eng. behavioral level)VHDL opisa. • 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 adresehttp://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