<?xml version="1.0"?>
<metadata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:title>Sistem za zajem podatkov z vezjem FPGA</dc:title><dc:creator>Gorenc,	Žan	(Avtor)
	</dc:creator><dc:creator>Žemva,	Andrej	(Mentor)
	</dc:creator><dc:subject>zbiranje podatkov</dc:subject><dc:subject>FPGA-vezje</dc:subject><dc:subject>AD-pretvorniki</dc:subject><dc:subject>FIFO-pomnilnik</dc:subject><dc:subject>FTDI-čip</dc:subject><dc:subject>prenos podatkov</dc:subject><dc:subject>shranjevanje na računalnik</dc:subject><dc:description>V nalogi sem se ukvarjal z implementacijo sistema za zbiranje podatkov. Potrebno je bilo zasnovati program za FPGA-čip na DAQ-kartici in napisati program za prenos in shranjevanje podatkov prek USB-povezave z računalnikom. DAQ-kartica mora odčitati vseh 9 analognih vhodov istočasno, zbrati vse odčitane vrednosti, jih zapisati v serijski niz in jih prek USB-povezave poslati na računalnik. Vzorčevalna frekvenca sistema je fs = 1 MHz.

Program FPGA-vezja je napisan v strojno opisnem jeziku \texttt{verilog}. Krmilni sistem sestoji iz štirih modulov, eden služi krmiljenju devetih AD-pretvornikov, eden kot notranji FIFO-pomnilnik FPGA-vezja, kamor začasno shranimo pretvorjene podatke AD-pretvornikov. V vezju je tudi modul za krmiljenje FTDI-čipa, ki je zadolžen za komunikacijo s čipom za prenos podatkov na računalnik. Glavni modul skrbi za upravljanje in nadzor ostalih modulov.

AD-pretvorniki za komunikacijo z FPGA-vezjem uporabljajo SPI-protokol, kar pomeni, da mora modul za njihovo krmiljenje dosledno upoštevati zahteve časovnega diagrama AD-pretvornikov, ki ga najdemo v podatkovnem listu [1].

V FIFO-pomnilniku začasno hranimo podatke vseh devetih AD-pretvornikov. Branje iz pomnilnika poteka v času pretvorbe vzorčenih podatkov.

Na tiskanem vezju se nahaja tudi FTDI-čip, ki služi kot vmesnik med FPGA-vezjem in računalnikom. Tudi FTDI-čip vsebuje svoj FIFO-pomnilnik, kamor se pred prenosom na računalnik shranjujejo podatki. Ker prenos podatkov poteka enosmerno (FTDI → PC), je dovolj, da nam FTDI-čip sporoča samo, kdaj je pomnilnik za pisanje na čip prost.

Glavni modul skrbi za dovajanje urinega signala AD-pretvornikom. Odgovoren je tudi za periodično proženje signala za začetek zbiranja podatkov na 1 MHz, ki zažene celoten proces zbiranja. Upravlja tudi krmilne signale FIFO-pomnilnika FPGA-čipa in pošilja podatke na vhod FTDI-čipa.

Prenos podatkov in shranjevanje na PC strani poteka s programom, napisanim v programskem jeziku C++. Pri programiranju sem si pomagal s knjižnico FTD3XX.h. Prenos poteka prek USB-povezave 3.0 z gonilnikom D3XX Direct, ki omogoča komunikacijo med računalnikom in FTDI-čipom. Program je v grobem razdeljen na tri funkcije, glavna je funkcija int main. V funkciji main najprej kličemo funkcijo get_device_info(void), ki skrbi za pridobivanje informacij o povezanih napravah D3XX. Ker FTDI-čip zagotavlja urin signal FPGA-vezju, ga je potrebno ustrezno konfigurirati. To storimo s funkcijo SetChipConfiguration(void). Sledi branje podatkov iz FTDI-čipa, prebrani podatki pa se shranjujejo v tekstovno datoteko.

Tekstovno datoteko v programskem jeziku python pretvorimo iz šestnajstiškega sistema v desetiški, preračunamo vrednosti v napetosti s pomočjo prenosne funkcije AD-pretvornikov in podatke ločimo na posamezne pretvornike.

Kartica je bila testirana s testnim sinusnim signalom frekvence 10 kHz. Signal je bil uspešno prebran in grafično prikazan. Testirana je bila tudi s pravokotnim signalom frekvence 1 kHz in trikotnim signalom frekvence 500 Hz. Trikotnemu signalu je bila dodana enosmerna komponenta. Tudi ta signala sta bila uspešno prebrana in grafično prikazana.</dc:description><dc:date>2023</dc:date><dc:date>2023-06-02 07:20:01</dc:date><dc:type>Magistrsko delo/naloga</dc:type><dc:identifier>146446</dc:identifier><dc:identifier>VisID: 62339</dc:identifier><dc:identifier>COBISS_ID: 154687235</dc:identifier><dc:language>sl</dc:language></metadata>
