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