Laboratorijska vježba 6

  • Upload
    cyboss

  • View
    10

  • Download
    0

Embed Size (px)

DESCRIPTION

FPGA design

Citation preview

Ovo je HTML inaica datoteke http://c2

Ovo je HTML inaica datotekehttp://c2.etf.unsa.ba/file.php/207/2014-15/Vjezbe/Projektovanje_sistema_na_cipu_vjezba6.pdf.Googleautomatski izrauje HTML inaice dokumenata dok pretraujemo web.

Page 1

Univerzitet u Sarajevu

Elektrotehnicki fakultet

Odsjek za automatiku i elektroniku

Predmet:Projektovanje sistema na cipu

Studijska:2014/2015. godina

Laboratorijska vjezba 6

Sekvencijalna kola: konacni automati sa putem podataka. Memorija.

Cilj vjezbe je da se studenti upoznaju saVHDLopisom konacnih automata sa putem podataka, te sa

procesom sintentiziranja memorijskih blokova.

Sarajevo, 10.4.2015.g.

1 Uvod1.1 MemorijaRanije smo konstatovali da je memoriju moguce realizovati kao kolekcije D flip-flopova (registre). Ipak,

za odredene primjene kada je potrebna znacajna kolicina memorije, takva realizacija nije pogodna

obzirom da se za svaki bit memorije zauzima jedan logicki elementFPGAcipa. VecinaFPGAuredaja,

kao i oni izCyclone IIporodice na DE2/DE2-70 razvojnim sistemima posjeduju pored nizova logickih

elemenata i neke dodatne specijalizovane jedinice. Izmedu ostalog, to su jedinice distribuirane memorije.

Quartusrazvojno okruzenje, tacnije kompajler, sposoban je prepoznati opisane RAM/ROM module

i sintetizirati ih koritenjem specijalizovanih jedinica. Medutim, postoji jednostavniji nacin za opis

memorije. Dalje je data procedura implementacije 8-bitne memorije tipa RAM sa 32 rijeci (odnosno,

5-bitnom adresom).

1. Kreirajte novi projekat.

2. Kreirajte novu dototeku tipaMemory File1ostaviti sadrzaj memorije praznim.

3. IzaberiteT oolsMegaWizardPluginManager. Na prvom prozoru izaberite opcijuCreate anew custom megafunction variationi klikniteNext.

4. Na narednom prozoru izaberiteRAM:1-PORTu listi modula lijevo, izaberiteVHDLopciju sa

desne strane i upiite naziv modula odmah ispod - npr.memorija.vhdlu folderu vaeg projekta,

a zatim klikniteNext.

5. Podesite velicinu memorijskog modula i klikniteNext6. Na slijedecem prozoru za nau primjenu ne treba nita mijenjati, pa samo klikniteNext7. Na narednom prozoru izaberite opcijuYes, use this file for the memory content, kliknite naBrowsei izaberite datoteku koju ste kreirali u 2. koraku.

1IliHexadecimal (Intel-Format) File (.hex)iliMemory Initialization File (.mif). Razlika izmedu ove dvije vrstedatoteka je u nacinu predstavljanja memorije. .mif datoteke moguce je modifikovati kao tekstualne, npr. koritenjem

Notepad-a ili slicno, dok su .hex datotekevbinarne. Mi cemo sadrzaj ove datoteke formirati koritenjem dijela Quartus

razvojnog okruzenja, tako da nama nema neke znacajnevrazlike izmedu ovih datoteka.

1

Page 2

8. Na narednom prozoru su prikazane biblioteke koje vam trebaju za simuulaciju dizajna koji sadrzi

ovaj modul. Samo predite na slijedeci prozor klikom naNext.

9. Na posljednjem prozoru izaberite samo dodatno generisanjeInstantiation template filei zavrite

klikom naFinishOvako kreiran memorijski modul sa 32 8-bitne rijeci ima interface kako slijedi.

ENTITYmemorijaISPORT(

address

:INSTD LOGIC VECTOR (4DOWNTO0);

clock

:INSTD LOGIC := 1 ;

data

:INSTD LOGIC VECTOR (7DOWNTO0);

wren

:INSTD LOGIC ;

q

:OUTSTD LOGIC VECTOR (7DOWNTO0)

);

ENDmemorija ;

Otvorite datotekumemorija inst.vhdlkoja se nalazi u folderu vaeg projekta. U ovoj datoteci dat je

primjer kako instancirati specijalizovani modul. Njen sadrzaj je kako slijedi.

memorija inst : memorijaPORT MAP(

address =>address sig ,

clock

=>clock sig ,

data

=>data sig ,

wren

=>wren sig ,

q

=>q sig

);

clock je ulaz na koji se dovodi takt signal

address je (u naem primjeru) 5-bitni ulaz na koji se dovodi adresa

q je (u naem primjeru) 8-bitni izlaz sa kojeg se cita podatak na adresi address ako nije aktivan

signal wren

data je (u naem primjeru) 8-bitni izlaz koji predstavlja podatak koji se upisuju na adresu address

ako je aktivan wren signal

Treba voditi racuna da su i ulazi i izlazi ovog modula odvojeni registrima od memorije2je, kao i uvijek, omogucavanje rada modula na viim frekvencijama takt signala. Posljedica ovoga je

da kada dovedemo signal naaddressiwrenulaze, tek u slijedecem periodu takt signala ce ovaj signal

biti prenesen na memoriju, a tek u slijedecem periodu ce biti formiran podataka na izlazudata. To

znaci da imamo kanjenje od 2 perioda takt signala izmedu ulaza i izlaza. To ne znaci da prije nego je

formiran izlaz, ne smijemo dovesti novi ulaz ukoliko unaprijed znamo koji podaci su potrebni (na kojim

adresama). Drugim rijecima, i sa ovim modulom moguce je koristiti princip protocnih struktura.

Vremenski dijagrami ovog memorijskog modula dati su na slici1. Za potrebe ovog zadatka nece vam

biti potreban upis podataka u memoriju, pa se fokusirajte samo na dio dijagrama gdje jewrensignal

na logickoj nuli. Primijetite da kada se postavi vrijednost na ulazuaddress, ta vrijednost se ocita na

slijedecoj rastucoj iviciclocksignala, a podatak koji se nalazi na toj adresi se pojavi na izlazuqnakon

slijedece rastuce ivice. To znaci da je spreman za citanje nakon dvije rastuce, odnosno na trecoj ivici od

trenutka postavljanja podatka naaddressulaz. Na primjer, adresaa0je postavljena na ulazaddressizmedu 2. i 3. rastuce ivice na slici1. Memorijski blok je njenu vrijednost ocitao na 3. rastucoj ivici.

Nakon 4. rastuce ivice postavlja se podatakdout0koji se nalazi na lokacijia0u memoriji. To znaci

da je taj podatak spreman za citanje na 5. rastucoj ivici.

2Prilikom specijalizacije modula moguce je izabrati da su izlazi spojeni direktno na memoriju, ali ulazi moraju biti saregistrima.

2

Page 3

Slika 1: Vremenski dijagrami memorijskog modula

1.2 Algoritam za binarnu pretraguNeka je potrebno pretraziti neki niz i odrediti na kojoj poziciji se nalazi trazeni element ili ustanoviti

da on ne postoji. Ako elementi u nizu nisu ni u kakvom posebnom redoslijedu nemamo puno izbora

nego pregledati sve elemente i porediti ih sa trazenim. Medutim, kada je niz prethodno sortiran, tj.

kada za svaka dva susjedna elementa vrijedi da je prvi po vrijednosti manji/veci od narednog, mozemo

koristiti algoritam za binarnu pretragu. Ovaj algoritam omogucava da se pretraga zavri u najvie

log2n koraka, gdje je n broj elemenata niza. Slijedi opis algoritma kada je niz a sortiran u rastucem

redoslijedu.

1.imin 0,imaxn 1

2. Ako jeimax< iminalgoritam je zavren, element nije pronaden.

3.imid=imin+imax2

4. Ako jeaimid=talgoritam je zavren, pronaden je element na pozicijiimid.

5. Ako jeaimid< tonda jeimin=imid+ 1.

6. Ako jeaimid> tonda jeimax=imid 1.

7. Idi na korak 2.

2 Zadatak za laboratorijsku vjezbuInstancirajte ranije opisani RAM modul i popunite ga podacima u rastucem redoslijedu vrijednosti.

Osmislite i implementirajte konacni automati sa putem podataka koji implementira algoritam binarne

pretrage. Automat treba da pojavom impulsa u trajanju od jednog perioda clock signala na ulazustart,

ocitava podatak sa ulazadata. Zatim da pretrazuje memoriju algoritmom za binarnu pretragu. Po

zavretku izvravanja, na izlazuaddresspostaviti adresu na kojoj se podatak nalazi i generisati impuls

u trajanju od jednog perioda clock signala (odnosno dok se ne pusti dugme start) na izlazudone; ili

generisati impuls u trajanju od jednog perioda clock signala (odnosno dok se ne pusti dugme start) na

izlazunot foundako podatak nije pronaden u memoriji. Nakon toga ga instancirajte u osnovnoj jedini

dizajna i povezite na slijedeci nacin. Signal data spojite naSW07, signal start na KEY1, a reset na

taster KEY0. Signal address neka bude spojen na diodeLEDR40, a signali done i not found redom

na LEDR17 i LEDR16. Takt signal je CLOCK 50.

3