Hallo,
ich versuche mit dem Spartan 3E Board eine Serielle Uebertragung(empfangen) zu Stande zu bekommen. Sende ich eine Reihe von Zeichen, kann jedoch immer nur das Letze lesen. Timing laeuft wahlweise mit 9600 oder 115200baud.
Kann mir jemand bei meinem Problem weiterhelfen?
Vielen Dank
Uli
Das sieht irgendwie nach LabVIEW FPGA aus. Ist das beabsichtigt?
Gruß Markus
Ja, das ganze laeuft auf einem Spartan 3E.
Ich glaube, das ist eine ideale Frage für i2dx oder thomas.sandrisser.
Die kennen sich mit FPGAs,... aus.
Gruß Markus
Hi,
aber was du da zeigst, ist doch nur ein Byte... Wenn du den Output nicht schnell genug abfragst, liegt da m.E. immer nur das letzte Byte der Message an...
Wonach du nochmal schauen könntest ist die Performance von der Array-Operation. Zumindest auf der FPGA-Hardware von NI sind diese Operationen eher langsam und es wird auch allenthalben davon abgeraten. Eine Shift-Operation ist wahrscheinlich schneller und für ein Byte auch noch übersichtlich programmierbar...
Ach ja, das zweifache Auslesen des gleichen Pins in der gleichen While-Schleife würde ich unterlassen udn die zweite LED direkt verbinden - obwohl, vielleicht merkt der Compiler es ja...
grüße,
ch
PS Wir hatten irgendwo hier mal im Forum die Überlegung, ob man mit einer "normalen" Messkarte eine Serielle Schnittstelle emulieren kann - da kam dann raus, dass das Timing doch sehr kritisch ist - vielleicht ist das auch hier der fall...
Vielen Dank fuer den Tip. Ich bin am ueberlegen die Ergebnisse zunaechst in der Speicher zu legen, um ihn dann spaeter in Ruhe auslesen zu koennen.
"Eine Shift-Operation ist wahrscheinlich schneller und für ein Byte auch noch übersichtlich programmierbar..."
Wie genau stellst du dir das vor?
Vielen Dank
Uli
Hi,
im Moment initialisierst Du ein Array und greifst da auf einen bestimmten Index zu. Alternativ könntest du auch ein Byte mit dem Wert 0 initialisieren und dann bei jedem empfangenen Bit das von einer Seite in dieses Byte schieben. Am Ende hast du dann das komplett eingelesene Byte. Müsste in der Implementierung auf dem FPGA eigentlich schneller gehen als variabel auf ein Array zuzugreifen (ist aber eher mit ein paar Grundkenntnissen in digitaler Logik geraten und dem compiler nicht zu viel zugetraut...)
Verständlicher?
ch