La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

VHDL opis jednostavnog procesora

Presentaciones similares


Presentación del tema: "VHDL opis jednostavnog procesora"— Transcripción de la presentación:

1 VHDL opis jednostavnog procesora
Bratislav Džombić (8627) JASP VHDL opis jednostavnog procesora ELEKTRONSKI FAKULTET U NIŠU KATEDRA ZA ELEKTRONIKU Mikroprocesorska tehnika JUN 2006.

2 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

3 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. memorija instrukcije podaci procesor registri adrese Instrukcije i podaci

4 Procesor JASP Izvršna jedinica Upravljačka jedinica ALU
čine je registri i ALU SP INC PC IR MAR MDR A B ALU ALUx ALUy ALUr PSR Upravljačka jedinica upravlja radom izvršne jednice pomoću kontrolnih signala Upravljačka jedinica

5 Registri ALU Programski brojač Inkrementer Pokazivač magacina
Upravljačka jedinica SP INC PC IR MAR MDR A B 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.

6 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 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)

7 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 opkôd 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.

8 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: X Proširenje znakom – ispred operanda se dodaje 8-bitna nula ili jednica u zavisnosti od znaka operanda (tj. od bita najveće težine). 1 X Proširenje nulama – ispred operanda se dodaje 8-bitna binarna nula

9 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

10 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

11 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 1

12 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

13 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 Taktni signal Mikro MDR 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

14 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.

15 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.

16 Format mikroinstrukcije
cond BT Kontrolni signali Adresa naredne mikroinstrukcije Broj bitova 4 1 36 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.

17 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.

18 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

19 Mikromemorija - primer
U sledećoj tabeli prikazan je primer sadržaja mikromemorije: Opkod (hex.) 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 00 ADD #data,A ALUx<-[A] ALUy<-[IR(operand)] ALUr=[ALUx]+[ALUy] A<-[ALUr] 006 007 008 009 01 ADD #data,B ALUx<-[B] B<-[ALUr] 010 011 012 013 02 ADD addr,A MAR<-[IR(operand)] MDR<-[M(MAR)] ALUy<-[MDR] 020 021 022 023 024 025

20 Mikromemorija – primer 2
U sledećoj tabeli prikazan je primer sadržaja mikromemorije sa mikroinstrukcijama u binarnom obliku:

21 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 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.

22 Konačni izgled sistema

23 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.

24 Pristup VHDL opisu Primenjen u ovom radu
Izvršena je dekompozicija sistema na kola koja obavljaju konkretne operacije (operaciona kola ALU, registri, multiplekseri) VHDL opis ALU VHDL opis ALU kola za operaciju pomeranja u levo (eng Shift Left) 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)

25 Programski paket Active-HDL
Programski paket korišćen za VHDL opis je Active-HDL, verzija 6.3, kompanije ALDEC.

26 Programski paket Active-HDL
Primer radne površine programa Active-HDL 6.3

27 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

28 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.

29 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


Descargar ppt "VHDL opis jednostavnog procesora"

Presentaciones similares


Anuncios Google