Guten Morgen, ich versuche mich gerade daran eine Schaltung zu entwickeln, mit welcher ich über die USB-Schnittstelle eines PC einen FPGA ansteuern kann. Als FPGA möchte ich den XC3S1000 benutzen, was aber in erster Linie zweitrangig ist. Die USB-Umsetzung habe ich mir mit einem CY7C68013A vorgestellt. Ich weiß schnell ist ein relativer Begriff aber die Schaltung sollte "recht schnell" arbeiten können, welche genauen Anforderung schlußendlich benötigt werden kann ich noch nicht abschätzen. Gibt es hierfür ein paar Schaltungsbeispiele? Das größere Problem für mich wird die SW-Seite sein. Hab mir zwar schon viele USB-Beschreibungen angesehen und auch das Grobe davon verstanden. Jedoch fehlt mir noch das Verständnis für die Umsetzung, also mit welchem Programm schaue ich was auf dem USB-Port läuft? Wie lese/beschreibe ich meinen CY7C68013A und anschließend den FPGA? Die Programmierung des FPGAs mit VHDL ist wiederrum kein Problem. Wäre auch über kleine Hilfestellungen dankbar, den Rest kann ich mir dann weiter erarbeiten und gegebenfalls nochmal nachfragen. Vielen Dank Gruß Martin
So richtig kann ich Dir leider nicht helfen... Ich habe vor kurzem auch was damit zu tun gahabt. Über genau denselben USB_Baustein wurden Videodaten vom FPGA zum Rechner übertragen. Hab' leider "nur" die Hardwareseite gemacht und nicht die Software. Weis aber, es ist nicht ganz einfach, wenn man die volle Bandbreite haben möchte. Wir haben ca. 40 MB/sec erreicht und das stabil. Wahrscheinlich muss man wirklich ganz genau die Beispiele studieren, damit man was richtig macht, aber das wirst Du wohl selber rausfinden müssen (ich würde ja gerne helfen, aber ich habe weder Sourcen noch Ahnung von der Programmierung) Das mit "Programmierung des FPGAs mit VHDL ist kein Problem" würde ich Vorsichtig umgehen ;-) Damit alles einwandfrei läuft, muss jedes des FIFOs gut funktionieren (im FPGA, im 8051, USB-Buffer im Cypress und so weiter) Am besten, du implementierst ein Paar Register im FPGA und versuchst sie auszulesen, zu beschreiben (also erstmal ganz langsam). wenn das dann funktioniert (bis dahin hast Du dann hoffentlich Ahnung, wie die Treiber funktionieren ;-)), dann fängst Du mit dem CPLD im Cypress (oder keine Ahnung, wo man kleine Statemachines bauen kann) und so weiter und so fort. Ich wünsche Dir viel Erfolg mit der Sache und Du kannst uns gerne auf dem Laufenem halten :-) Gruß Kest
Trotzdem vielen Dank Kest, vielleicht kommen mir aber auch noch Hardware-Fragen :-) ...ganz bestimmt... Werd nun mal zuerst mit der Hardware anfangen, vielleicht kann mir dann doch noch einer mit Tipps bei der Software helfen. Hätte doch noch eine Frage an dich, für was für einen EEPROM hast du dich entschieden? Da ich den Umfang der Software nicht kenne, weiß ich nicht wie groß der EEPROM sein soll bzw. was für Daten da überhaupt draufzustehen haben. In meiner näherer Auswahl ist der 24LC641 von Microchip.
Sorry, vielleicht ist es doof, aber wozu EEPROM? Hat Cypress nicht alles "on Board"? Ich weis es echt nicht. In unserer Schaltung ist auch ein EEPROM vorhanden (ich dachte eigentlich für irgendein Schnick-Schnack, nicht fürs Programm). Und der ist Microchip 24LC64. Ich kann aber nicht sagen, ob da ein Programm drauf ist - eher nicht - möchte mich aber nicht festlegen (man sieht, ich bin kein Softwerker ;-)) Gruß Kest
Im Eeprom kann man seine eigenen Identifier speichern, oder auch Programm-Code, der dann beim Reset ausgeführt wird. Muss man aber nicht haben, wenn der Cypress bei jedem Start neu programmiert werden soll. (siehe auch Handbuch) Zu Hard- und Software kann ich dir usrp http://comsec.com/wiki?UniversalSoftwareRadioPeripheral und ssrp http://oscar.dcarr.org/ssrp/ empfehlen, da wurde der Cypress schon erfolgreich eingesetzt. Beim usrp sogar zum Programmieren einen Altera FPGA, aber das sollte sich ja leicht anpassen lassen. Hab mich auch schon eine Weile damit beschäftigt aber immer wieder mangels Zeit zur Seite gelegt. Gruß Marco
Danke Marco, jedoch funktioniert der Link von comsec.com nicht, werd da nochmals zu einem späteren Zeitpunkt vorbei schauen. Hab da noch eine Frage zur Hardware-Schaltung. Da die Schaltung mehr als 100mA benötigen wird muss eine separate Spannungsversorgung von 3,3V dem Board zur Verfügung gestellt werden. Ab welcher Stelle der Schaltung versorge ich die Bauteile mit den separaten 3,3V? Oder nehme ich (so kommt es mir am logischten vor) nur den gemeinsamen GND der USB-Schnittstelle und laß die VCC vom USB-Stecker offen und versorge alle Bauteile auf dem Board mit den separaten 3,3V? Wäre es leicht den GND galvanisch zu trennen?
USB-GND ist einfach mit dem Ground verbunden (da musst Du nichts galvanisch trennen) VCC vom USB-Stecker kannst Du offen lassen oder z.B. für die Reset-Schaltung verwenden. Und, richtig, alle Bauteile versorgst Du mit auf dem Board vorhandenen (also was Du selber gemacht hast) 3.3V Kest
Hallo, schon mehrere Tage versuche ich comsec.com zu erreichen, bekomme aber immer einen Timeout. Habe andere aktuell die USRP Webseite erreicht?
Was zufällig jemand wo man den Treiber herbekommt. Dies ist bei Cypress leider nicht zu finden. Habe versucht mich in die Beispiele enzulesen. Jedoch verwenden diese keine DLL, so das ein einfacher Funktionsaufruf nicht möglich ist. Im Bsp. wird sehr stark auf das Windwossystem zugegriffen, jedoch ist dies zu kompliziert um eine schnelle und vor allem sichere Lösung zu entwickeln. Hat jemand vielleicht bessere Beispiele? Oder andere Treiber? Grüsse Michael
Ich hätte einen link zu einem Treiber für 40Mbytes stabilen Troughput, 16bit port, einen LA mit 20MHZ und 16 Kanälen. Leider brauchst du Visual C, um da was zu ändern, aber dann bist du genau an den Beispielsw. Fazit, wenn du was über 8Mbyte brauchst, dann mußt du da schon selbst an die SW hand anlegen.
Was meinst Du denn wenn ich mehr als 8Mbyte Bandbreite haben möchte muss ich selber die Software verändern. Das ich die Software in Visual C schreiben muss ist mir schon klarr. Jedoch will ich nicht den Treiber modifieren müssen. Der sollte schon 40MByte pro Sekunde schaffen. Könntest Du dann mal den Link posten. Grüsse Michael
Das, an das ich dachte, da sind kernel device treiber dabei, also nichts für Anfänger. Mit libusb-win32 bekommst du so um die 20mbyte hin, ist einfacher als die Cypress SDK. http://libusb-win32.sourceforge.net/ http://volodya-project.sourceforge.net/fx2_programmer.php
@Michael, was meinst du mit Treiber? Suchst du einen Treiber für den CY7C68013A? Schau mal auf Cypress unter CY4604 (siehe Link vorbei) http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_60425_0_0_18/cy4604___usb_developer_s_ustudio.html
Ich suche einen USB-Treiber für den CY7C68013A (von Cypress). Cypress selber liefert ja eine inf und sys-Datei mit. Jedoch ist es schwer diese einzubinden. Viel besser ist eine DLL-Datei. Momentan arbeite ich mit Labview. Dort kann man sehr leicht auf DLLs zugreifen und die Funktionen des Treibers nutzen. Genau so etwas suche ich. Den Link zu Cypress ist ja für einen CY4604. Ich denke mal nicht das er für den CY7C68013A geeignet ist, oder habe ich das etwas überlesen? Grüsse Michael
@ Francesco Na 20 MByte ist aber nicht sonderlich viel. Warum schaffen die Treiber denn nicht mehr? Es sollte doch eigentlich nicht am Treiber liegen, sondern am PC. Denn wenn der schnell genug ist, dann sollten doch auch 40MByte machbar sein Ich habe schon mal die Bsp. von Cypress (sind auf der CD vom Starter Kit) angeschaut. Die sind jedoch sehr schlecht beschrieben und nicht besonders einfach zu verstehen. Sicherlich kann ich mich jetzt Wochen hinsetzten, aber ich bekomme nicht die Zeit dafür. Es sollte eine schnelle Lösung sein. Dies ist bei DLLs gegeben. Dort wird zuerst eine Init aufgerufen, anschließend will ich nur noch etwas aus den USB-Buffer lesen oder in den Buffer schreiben. Momentan benutze ich von FTDI USB Module. Diese schaffen nur 8MBit (USB 2.0 Basic) aber dafür war alles in 2 Wochen fertig (FPGA-Sender und Software-Empfang) So etwas möchte ich jetzt für USB 2.0 Highspeed haben. Ich hätte nie gedacht das es so wenige Lösungen gibt, denn die Schnittstelle ist weit verbreitet. Grüsse Michael
@Michael, CY4604 ist meines wissens kein Baustein sonder ein Testboard mit einem CY7C68013A... Wieso hast du Probleme mit der inf und sys? Den Treiber kannst du ja leicht installieren. Und Ansprechen kannst du dann dein Board über das im CY4604 (siehe Link) mitgelieferte Programm (CyConsole). Wenn du dir dann was eigenes schreiben willst, gibt es dafür auch Hilfe pdfs. Aber es funktioniert und ist kostenlos. Gruß Bustle
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.