Samstag, 9. März 2013

FPGA über USB/UART am Raspberry Pi

Leider konnte ich diese Woche nur am Montag an die FH, da mich eine Erkältung erwischt hatte, aber ich war Zuhause fleißig und heut waren wir bis 21 Uhr an der FH im Labor.

Das Nexys 3 Board ist nun über die USB Schnittstelle mit dem Raspberry Pi verbunden. Beim Pi meldet es sich als usb 1-1.3.4: FTDI USB Serial Device converter an und ist über ttyUSB0 ansprechbar wie eine normale serielle Schnittstelle. Hier ein kurzer prinzipieller lesender Zugriff:

unsigned char rx_buffer[256];
int hSerial = open(„/dev/ttyUSB0“, O_RDWR);

struct termios options;

tcgetattr(hSerial, &options);

options.c_cflag = B115200 | CS8 | CLOCAL | CREAD;

tcflush(hSerial, TCIFLUSH);

tcsetattr(hSerial, TCSANOW, &options);
unsigned char rx_buffer[256];

rx_length = read(hSerial, (void*)rx_buffer, 256);

Am FPGA sind 4 ADCs, die das Signal von 4 Mikrofonen die im Quadrat im Abstand von 36cm angeordnet sind mit 1MS/12Bit aufnimmt und bei einem Klatschen 3 Laufzeiten errechnet. Anschließend werden 7 Byte an das Pi übertragen. Das 1. Byte enthält das Mikrofon, auf das der Schall zuerst getroffen ist. Danach kommen je 2 Byte mit den 3 Laufzeiten. Diese Laufzeiten ergeben sich aus der Zeitdifferenz vom Eintreffen des Schalls bei den drei übrigen Mikrofonen bezogen auf das erste Mikrofon.

Am Pi wird daraus dann errechnet, wo vor dem Mikrofonquadrat geklatscht wurde. Momentan werden 9 Sektoren unterschieden: Oben links, oben mitte, oben rechts, links, mitte, rechts, unten links, unten mitte und unten rechts.

Damit lässt sich die LED Matrix eigentlich schon vollständig bedienen. Bis zu unserer Präsentation am Donnerstag will ich allerdings noch versuchen mit 4 weiteren Mikrofonen - also insgesammt 8 Mikrofonen - eine genau Berechnung der Koordinaten wo geklatscht wurde zu realisieren.

Keine Kommentare:

Kommentar veröffentlichen