Schnittstelle FPGA Matlab

Gast #1360922
Lesenswert?

Liebe Kollegen!

Ich möchte ein Signal (Bitstream) von Matlab an ein FPGA Board senden, 
dort die Bits umrechnen (z.B.: verschlüsseln) und dann wieder an den PC 
(Matlab) senden.

Wie mache ich das am einfachsten?
Welche Schnittstellen sollte ich verwenden? (RS232?)

DANKE für Eure Hilfe
Midnight
Gast #1361070
Lesenswert?

hab selber schonmal testweise matlab über rs232 mitm fpga verbunden. 
klappte eigentlich recht gut, auch wenn die geschwindigkeiten nich sehr 
hoch sind. aber ist fürn anfang glaube die einfachste art der anbindung.
Gast #1361665
Lesenswert?

unterschätz mal die Datenrate nicht.

selbst ein relativ kleiner, langsamer FPGA kann Datenmengen von mehreren 
hundert MB pro Sekunde verarbeiten (je nachdem was man wie verarbeitet)

selbst wenn man nur EINEN 8bit wert pro takt verarbeitet und das mit 
lahmen 50mhz liegt man schon bei 50MByte/s und damit über 
seriell/parallel/usb.


Kommt nun natürlich auf den Anwendungsfall an(Datenmenge, Latenz, 
Synchronisation erforderlich, usw) und ob du die Hardware schon hast.

Für sinnvolle Projekte gibts entweder Ethernet, pci-e Karten oder auch 
FPGAs direkt für CPU Sockel(Stichwort Torrenza)


Alles darunter taugt mMn höchstens zum probieren.


Zumindest wenn es darum geht Daten zu übertragen die direkt in Hardware 
verarbeitet werden.

Wenn das nen Programm ist das in einen Softcore gefüttert wird, dann 
kann das natürlich anders aussehen.
Gast #1361868
Lesenswert?

Du könntest auch den Ft245 als Fifo <-> Rs232 verwenden und in Matlab 
als Com-Port ansprechen.
Der kostet weniger als die Hälfte des FT2232H. Auch wenn der 2232 
zweifellos der Bessere ist, die Geschwindigkeit von 25MB/sec wird Matlab 
höchstwahrscheinlich nicht ausschöpfen können, warum also den teuren 
Chip nehmen?
Gast #1361887
Lesenswert?

Warum sollte Matlab die Geschwindigkeit nicht ausschöpfen können? 25 
MB/s sind jetzt ja auch nicht so viel.
Der 2232 bringt neben dem FIFO-Modus auch noch den MPSSE-Modus mit. 
Damit lässt sich der FPGA leicht und schnell über JTAG programmieren.
Gast #1361890
Lesenswert?

Wenn das immernoch zu langsam ist kannst du auch ein FPGA mit 
PCI-Express kaufen (kostet halt "etwas" mehr) aber damit bekommst du 
dann sehr gut und auch eine extreme Datenrate drüber. Ist aber 
vermutlich nicht ganz so leicht zum ansteuern gibt aber sicherlich 
Libaries zum ansteuern.
Gast #1361984
Lesenswert?

>25 MB/s sind jetzt ja auch nicht so viel.
25 MB /sec sind eine Menge Zeug, vorallem weil wir von Nutzdaten reden!
Was ich vergessen habe: Die Aussage bezieht sich auf die 
RS232-Emulation.
Der Buffer der Rs232 ist nicht groß, ich glaube der war kleiner als 
250KB.
Wenn dein Prog jetzt mit 25MB/sec Daten rüber schickt müsste dein 
Programm alle 10ms einen Zeitschlitz bekommen, um die Daten aus dem 
Buffer rauszuholen. Das klappt nicht auf einem 
Multitasking-Betriebssystem, dass nicht echtzeitfähig ist.
Hier ist die FTDI-DLL erste Wahl. Da kann man den Buffer auf 5MB setzen 
und dann ganz gemütlich die Daten rauskopieren.
Gast #1362037
Lesenswert?

Für einen PC mag das viel sein, für ein FPGA kaum.


Die Frage ist doch : was will man auf dem FPGA berechnen was der PC 
nicht könnte ?

Und hier zeigt sich eben das es vor allem parallele Arbeiten betrifft 
die im Normalfall mit exorbitanten Datenmengen daherkommen.


Als Ausgangsdatenstrom der an den PC zurückgeht kann das bei einer 
brauchbaren Aggregation noch funktionieren, aber auf der Inputseite 
nicht.
(sonst könnte die cpu ja gleich die Funktion an sich berechnen)


Mir fällt zumindest nichts ein was auf die Art einen brauchbaren Speedup 
erhalten würde und unter 25mb durchsatz pro Sekunde liegt, außer es 
handelt sich wie gesagt um Programme die dann noch ausgeführt werden, 
aber reine Daten ?


25mb ist selbst auf dem lahmsten FPGA höchstens noch 1 byte pro takt.

Was will man damit bitte machen ?

Selbst wenn man jedes bit mit jedem anderen verknüpfen würde macht das 
<256 Bitoperationen Platzverbrauch.

Da braucht ja die Kommunikation mehr Platz auf dem Chip als die 
Berechnung ;)
Gast #1362237
Lesenswert?

>Für einen PC mag das viel sein, für ein FPGA kaum.
Das hat auch niemand gesagt. Die Frage kam auf, als es um die Steuerung 
mit Matlab ging und das läuft nunmal auf dem PC.

>Die Frage ist doch : was will man auf dem FPGA berechnen was der PC
>nicht könnte?

Die Antwort ist einfach: Nichts. Jedenfalls sofern es nicht noch andere 
Anforderungen wie Rechenzeit, Einsatz in einer Steuerung, usw. gibt.

Aber es ist eine gute Möglichkeit zum debuggen. Bei meinen Projekten 
lasse ich mir so Rückmeldungen zu einem Terminalprogramm schicken.
Wenn eine FSM den Zustand wechselt sendet sie einen Code, aus dem ich 
den neuen Zustand ablesen kann. Wenn sie irgendwann hängt, weiß ich auf 
was sie wartet bzw. welcher Sensor im Moment streikt.
So kann man testen, was man schlecht simulieren kann: Das Zusammenspiel 
mit den externen Komponenten.
Denkbar ist es auch einen externen Chip statt mit echten Sensordaten mit 
Daten vom Terminalprogramm zu füttern, sich das Ergebnis zurücksenden zu 
lassen und zu vergleichen. Vieleicht will unser Fragensteller ja genau 
das machen.(?)
Gast #1363145
Lesenswert?

Nein, NOCH nicht.

Vorerst soll lediglich die Kommunikation klappen. Wenn die Daten 
übertragen, umgerechnet und gesendet sind war es das VORERST.

Ich hab inzwischen im Netz VHDL codes für eine RS232 gefunden. Sobald 
mein Board geliefert wurde (Nexys 2) kann ich die ersten Tests machen.

Was wie und warum schneller ist, ist ein anderes Problem an dem ich 
später sicher noch tüfteln werde.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren