Hallo an alle, ich bewege mich langsam durch mein Masterarbeit weiter und stehe gerade vor eine Denkblokade. Zum Entwicklungsumgebung und HW: ML507, Virtex5 FPGA EDK 11.4, SDK 11.4 Windows XP SP2 Also die Aufgabe wäre alle Daten die über ein ADU (80 MHZ Abtastfrequenz) abgetastet werden durch eine Algorithmus( Direct Down Conversion) erstmal zu reduzieren und dann ins DDR2 RAM Baustein des ML507 zu speichern. Nachdem die Aufnahme zu Ende ist, sollte die Plattine am Rechner angeschlossen werden und die Daten via USB 2.0 augelesen werden. Für USB 2.0 wird das Xilinx xps_usb2_device IP Core verwendet. Meine Idee sieht so aus: Ein ADU Interface in VHDL entwerfen, sprich Daten in ein FIFO erstmal schreiben. Das Direct Down Conversion Algorithmus würde dann die Daten abholen und abarbeiten. Um die Daten ins DDR2 zu schreiben würde ich zur Zeit das Native Port Interface(NPI) Interface des MultiPortMemoryController(MPMC, EDK IP Core) bevorzügen. Ich habe ein Beispiel gefunden und auch im Dattenblatt ist alles beschrieben. Was ich nicht verstanden habe ist, ob man 16-bit Datenblöcke über NPI schreiben könnte, oder sollten mindestens 32-Bit breit sein. Über das NPI Interface werden dann die Daten geschrieben. Da am Rechner die Samples nur ausgelesen werden müssen, werden die Daten von ein MicroBlaze ausgelesen und über USB 2.0 am Rechner verschickt. Dabei kommt auch meine Frage: Da die Daten direkt über Hardware geschrieben werden, sprich über ein IP Core, wird der MicroBlaze nichts davon mitkriegen. Um die Daten im Windows Explorer sichtbar zu machen braucht man doch ein Dateisystem, oder? Was ich nicht verstehen kann ist wie ich die Daten dann so darstellen kann, dass die als ein einziges File aussehen. Am Ende will ich nur dass ein File angezeigt wird, der die zuletzt abgetastete Samples erhält(nehmen wir an dass das System durch ein Start/Stop Taste funktioniert). Ich habe schon gesehen dass man mit einem FAT System Funktionen wie "fopen" oder "fclose" aufrufen kann, was aber auch heissen soll, dass MicroBlaze das schreiben ausführen sollte, was das ganze System deutlich langsam machen will. Also meine Frage nochmal: Kann man die Daten über eine IP Core schreiben, und dann die irgendwie als ein File darstellen? Das USB 2.0 IP Core funktioniert als ein Mass Storage Device. Irgendwas in Richtung Read Only und einfach :) Vielen Dank im voraus. Ich würde mich auf Vorschläge frohen. Gruss, Valentin
DDR2, USB2.0, Integrierter Prozessor - wow, nicht schlecht der specht. hast du die einzelnen module schon mal in betrieb nehmen können ? hast du überhaupt schon erfahrungen im fpga-design?
Hi, also mit dem xps_usb2_device IP Core konnte ich in der letzten zwei Wochen einiges ausprobieren. Ich habe das "Mass Storage Beispiel", der im EDK erhalten ist, verwendet. Das DDR2 Speicher und der MicroBlaze kommunizieren via das MPMC IP Core. Das habe ich aus einem ML507 Reference Design übernohmen. Dabei würde ich dann das NPI Interface benutzen, um eine HW Verbindung zu erstellen. Mein nächstes Ziel wäre, dass ich erstmal ein File erstellen, modifizieren und vie UART z.B. ausgeben kann. Dafürwürde ich das "Xilfatfs" Library verwenden. Dann soll das selbe Spiel auch über USB ausprobiert werden. Wenn ich das erreicht habe, dann kommt die Frage wie ich die Verbindung zwischen die beiden Sachen machen würde. Meine Erfahrung basiert sich auf die Praktikas sowie Projekte die wir an der Hochschule hatten. Beruflich würde ich mich auch gern damit beschäftigen, dafür muss ich aber noch was leisten :) Interesse ist da :) Gruss, Valentin
@Valko: hat das mass storage Beispiel einwandfrei geklappt? Welche Datenrate hast du erreicht? Wie muss man den code verwenden? Einfach im EDK als Application hinzufügen, sind besondere Projekteinstellungen nötig (xilkernel o.ä.)? Ich möchte demnächst anfangen viele Daten über USB zu senden. Geplant hatten wir den xps_usb2 core zu verwenden. tg
Hallo, @TG: benutz von Cypress den FX2LP. Ist ein Controller mit USB 2.0, der aber so konfiguriert werden kann, dass die komplette USB Daten-Übertragung an FIFOs endet. Vom FPGA aus hast du dann einfache FIFOs zum ansteuern wie interne, die mit einem FIFO Generator gemacht wurden. Driver gibt es by Cypress :-) Übetragungsgeschwindigkeit im Bulk Modus - je nach PC bis zu 35 MByte/s Beim Controller muss man letztendlich nur noch die Endpoints konfigurieren. Ich kann mit bestem Gewissen diesen Baustein empfehlen!!!! Gruß
Ok, klingt interessant, d.h. du hast das Xilinx MS example als anwendung für den Cypress Treiber verwendet. Ich werde zunächst den xps_usb2 core ausprobieren, der hat direkt ein DMA-Controller integriert, was ihn interresant macht. USB ist nicht die primäre Aufgabe in unserem System. Mit 20 MB/s im Bulk transfer wäre ich schon zufrieden. Timo
Oh, ich sehe gerade, ich habe mich vertan. SchöneWelt benutzt gar keine Xilinx software, sondern Cypress-Treiber. Timo
Er benutzt den FX2 Controller-Chip von Cypress. Den nehmen wir auch sehr erfolgreich. DMA auf dem FPGA ist ja ganz interessant, aber auf PC-Seite bringt das nix, DMA gibts erst bei USB 3.0, bei 2.0 wird auch alles im Polling abgeholt. Je nach Datenmenge und Paketgröße merkt man davon aber nicht so viel.
Ok, ich weiß was du meinst. Wir wollen aber ein USB-Device implementieren. Und wenn der PC (Host) Daten vom FPGA anfordert, müssen die ja irgendwie vom Speicher in den USB Controller gelangen. Und da sehe ich bei uns einen Vorteil, wenn der USB-Controller das selbst machen kann. Ich stelle mir das so vor: PC will bestimmte Daten abrufen, ich weiß, dass diese der FPGA schon im Ram hat, also kann der Xilinx usb-core diese per DMA auf den USB geben und unsere CPU hat Zeit für andere Dinge (Ethernet etc..) Timo
Hallo, danke für das Info erstmal. Das IP Core habe ich zum laufen gebracht. Das Problem, der ich hatte war, dass mein Entwicklungsrechner irgendwie die USB Kommunikation gesperrt hat und dabei Fehlermeldungen entstanden sind. Es wurden fehlerhafte SCSI Kommandos Richtung FPGA verschickt. Sobald ich das FPGA an einem Laptop angeschlossen habe, konnte ich feststellen, dass alles prima läuft. Ursache dafür habe ich noch nicht rausgefunden. Datenrate habe ich nicht gemessen weil ich noch nicht überlegt habe wie das gemacht werden kann. Die Daten werden sich im FPGA befinden und werden per USB ausgelesen, also Geschwindigkeit ist erstmal nicht die Hauptanforderung. DMA ist bei mir nicht konfiguriert. Gruss Valentin
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.