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
Wen Matlab RS232 kan warum nicht, das läßt sich auch im FPA ganz gut machen. du könntest z.B. die RS232 des PicoBlaze nutzen die kann man auch seperat einsetzen, ist getestet und hat nen 16 byte FIFO für senden und Empfangen, ggf. noch das Half-Full Signalals Hardware FLußkontrolle und fertig ist deine Kommunikationsschnittstelle.
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.
Wenn man die Zeit hat, etwas mit RS-232 an ein FPGA zu schicken, dann kann man höchstwahrscheinlich das Ganze auch auf dem PC rechnen, dann braucht es kein FPGA Board. Hast Du dir überlegt, wie lange es braucht die Daten zu schicken=? Wieviele Daten mußt Du schicken?
Um ehrlich zu sein nein. Es werden aber nicht viele Daten sein. Welche Schnittstelle würdest Du verwenden?
Das hängt jetzt wirklich von der benötigten Datenrate ab. Je schneller, desto komplizierter.
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.
Nim den FT2232D oder falls du mehr als 1 MB\s brauchst den FT2232H von FTDI. Dieser hat ein 8 Bit-FIFO Interface und lässt sich leicht mit einem FPGA verbinden. Die Matlab-Anbindung sollte sich ebenfalls leicht realisieren lassen.
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?
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.
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.
>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.
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 ;)
>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.(?)
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.