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