Forum: FPGA, VHDL & Co. Kommunikation PC<->Altera DE2 Board via USB


von Steven T. (microbeginner)


Lesenswert?

Hallo alle zusammen,

ich habe ein Projekt, bei dem ich über USB zwischen dem Altera DE2 Board 
und meinem PC Daten austauschen möchte. Ich habe schon in diversen Foren 
gesucht aber nichts passendes gefunden.

Bitte helft mir nach Möglichkeit mit einer Schritt für Schritt Anleitung 
weiter, weil ich überhaupt keinen Ansatz habe, wie ich an das Problem 
rangehe.
Ich habe auch versucht das Beispielprogramm von Altera (USB_LCD_DEVICE) 
zu starten, jedoch funktioniert das nicht. Mein Projekt soll ähnlich 
aufgebaut sein. Über eine Anwendung auf dem PC - programmiert in C#, C++ 
oder C - kann ich Parameter eingeben, welche ich dann per USB an das 
Board sende und dort weiterverarbeite.

Wie gesagt, ich wäre euch sehr dankbar, wenn ihr mir sagen könnt wie ich 
prinzipiell an das Problem rangehe und es Step-by-step löse.

Vielen Dank für eure Hilfe.

von Harald F. (hfl)


Lesenswert?

Hab ich das richtig verstanden? Du hast keinen blassen Schimmer von 
FPGA-Design mit NIOS, USB IP Core, CDC etc. und brauchst dafür eine 
Schritt-für-Schritt-Anleitung? Wieviel Papier hast Du in deinen Drucker 
eingelegt? Egal, das wird nicht reichen.

Aber mal im Ernst. Ein Beispieldesign herzunehmen ist sicher kein 
schlecher Ansatz. Beschreibt doch mal etwas genauer, was Du bereits 
gemacht hast und was nicht geht.

von Steven T. (microbeginner)


Lesenswert?

Vllt hab ich das etwas übertrieben geschrieben, aber gänzlich ohne 
Ahnung bin ich nicht. Nur gerade bei diesem Projekt habe ich überhaupt 
keinen Ansatz.
Mein Wissen beschränkt sich auf vhdl-Programmierung und Erstellung von 
NIOS II Prozessoren. Aber so richtig in die eingemachte Materie sind wir 
im Rahmen unserer Vorlesung nicht vorgedrungen. Dadurch habe ich keine 
Ahnung, wie ich den USB-Anschluss ansteuere, diesen in meinen Prozessor 
einbinde, aus ihm Daten auslese, mit dem PC verbinde usw. Auf der Linie 
brauche ich Hilfe. War das jetzt etwas genauer beschrieben?

Teilweise habe ich schon an dem Projekt gearbeitet. Ein Teil, der 
allerdings unabhängig von der USB-Geschichte funktioniert, ist schon 
fertig. Das ist eine reine vhdl-Programmierung.

Mit was fange ich am besten an? Sicherlich mit meinem NIOS Prozessor, 
mit dem ich den USB-Anschluss steuere. Wo und mit welchen Parametern 
binde ich den USB-Anschluss in den Prozessor ein?

Vielen Dank für eure Hilfe!!!

von Iulius (Gast)


Lesenswert?

Ich tippe mal USB funktioniert so wie auf dem DE1.

Dann läuft das ganze über nen CPLD, welches gleichzeitig konfigurieren 
kann. Die Kommunikation ist deshalb wie JTAG.

Die Daten schickst du an einen FTDI Chip als Bytes. Dabei gibt es 
bestimmte Kombinationen die den Chip in den programmier bzw. 
übertragungsmodus setzen.

Ist der Chip in dem Modus zum übertragen, dann kann man entweder 
schreiben, lesen oder gleichzeitig schreiben und lesen.
Übertragen werden dabei jeweils pakete von bis zu 63 Byte.

Diese musst du später wiedererkennen, da der Chip nicht die Pakete 
überträgt, sondern bytearrays "zufälliger" länge.

Sinnvoll ist es deshalb ein modul zu schreiben das ein paket mit maximal 
63 byte länge baut bzw empfängt. Z.b. 5 byte header und 58 byte payload.
Dieses Modul muss dann nach JTAG Schema arbeiten.
Nutzt du kürzere längen, so geht die Geschwindigkeit aufgrund overheads 
schnell unter 1 mbit/s.

Ergebnis: im absoluten höchstfall(dauerhaftes senden mit 63 byte 
paketen) erreichst du damit 4 Mbit Duplex.

Mein tipp deshalb: nutze entweder rs232 (1mbit max) wenn Geschwindigkeit 
egal ist, da VIEL einfacher oder ethernet, da deutlich schneller.



Falls du dich doch nicht abbringen lässt kann ich dir sowohl vhdl für 
das de1 als auch c# software zur Verfügung stellen.

Dabei handelt es sich um ein Projekt mit einem eigenen softcore(also 
nicht NIOS) das USB nutzt.

Ich rate jedoch davon ab, da ich USB auf diesem Board für nicht sinnvoll 
halte.

von Harald F. (hfl)


Lesenswert?

Na ja, auf dem DE2-Board geht das etwas anders. Dort sitzt ein ISP1362, 
ein USB OTG-Controller von Philips. Der ist mit allen relevaten Signalen 
an das FPGA angeschlossen. Also musst du ein passendes Interface an 
einen NIOS anbinden und dort die notwendige Software laufen lassen. 
Schau doch mal in dem Beispieldesion nach, ob da nicht eine Komponente 
drin ist, die dieses Interface darstellt.

von Steven T. (microbeginner)


Lesenswert?

Harald Flügel schrieb:
> Schau doch mal in dem Beispieldesion nach, ob da nicht eine Komponente
> drin ist, die dieses Interface darstellt.

Ich würde mir das Beispieldesign sehr gerne ansehen, allerdings bekomme 
ich es bei mir nicht zum Laufen. Ich bekomme beim Starten nach dem 
Festlegen des Workspaces der NIOS 2 IDE immer folgende Fehlermeldung:

"project conversion failed for project hello_led_0 with the following 
error:
Error loading Managed Make project information for project hello_led_0.
The tool definitions used to create the project are not available."

sowie:

"project conversion failed for project hello_led_0_syslib with the 
following error:
Error loading Managed Make project information for project 
hello_led_0_syslib. The tool definitions used to create the project are 
not available."

Demnach kann ich das Design auch nicht erstellen und ausführen. Vllt 
könnt ihr mir da weiterhelfen?


Iulius schrieb:
> Falls du dich doch nicht abbringen lässt kann ich dir sowohl vhdl für
> das de1 als auch c# software zur Verfügung stellen

Da zwischen der USB-Kommunikation auf dem DE1 Board und dem DE2 
Unterschiede bestehen, hilft mir das glaube ich nur bedingt weiter. 
Jedoch würde ich mir gerne deine C# Programmierung ansehen. Kannst du 
mir die bitte per Mail schicken?

Vielen Dank für eure Hilfe. Ich freue mich sehr über weitere 
konstruktive Beiträge.

von Harald F. (hfl)


Lesenswert?

Tja, da fallen mir zwei Sachen auf:

1.
=====8<-----
project conversion failed for project tralala
=====8<-----

Wieso conversion? Kann es sein, dass Du ein "altes" Beispiel, gemacht 
für die NIOS IDE mit den SBT öffnest? Wenn das ein altes Beispiel ist, 
dann nimm doch die IDE.

2.
Was macht Du überhaupt in der NIOS IDE oder SBT? Ich denke, du willst 
ein FPGA-Design erstellen und nicht Software schreiben? Husch husch, ab 
nach Quartus und rein in den SOPC-Builder.

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
Noch kein Account? Hier anmelden.