13.07.2010, 11:04
Hallo an alle!
Ich hoffe, dass mir jemand weiterhelfen kann - ich bin leider mit meinem Latein am Ende und brauche dringend Hilfe. Ich weiss, die gesamte Beschreibung ist ein wenig länglich nun, aber die notwendigen Details sind meines Erachtens sehr wichtig...
Themenbeschreibung und eingesetzte Werkzeuge:
Ich möchte einen Actel FPGA kommandieren (einfache Binärstrings, wie z.B. "00000000"), bzw. eine Kommunikation mit diesem herstellen.
Die Kommunikation läuft über die sog. "UART-Schnittstelle", basierend auf dem EIA-232 (RS 232) Interface, aber mit differentieller LVDS (EIA-644) Signalisierung.
Hierfür habe ich eine Applikation erstellt (LabVIEW 2009, SP 1, Deutsch) und für die Kommunikation gängige VISA-VIs aus der "Instrumenten-I/O- Funktionspalette" eingesetzt (VISA-Öffnen, seriellen Prot konfigurieren, VISA-Schreiben, VISA-Lesen und VISA-Schliessen).
Der serielle Port wurde mit LabVIEW folgendermaßen konfiguriert:
- Baudrate: 9600
- Datenbits: 8
- Parity: Odd
- Stopbits: 2
- Flusskontrolle: keine
Die UART-Schnittstelle verlangt folgende Konfiguration:
- Datenrate: 115200 bit/s
- Datenbits: 8
- Parity: Odd
- Startbits: 1
- Stopbits: 2
- Hardware Handshake: keinen
Als Verbindungskabel zwischen Rechner (LabVIEW-Software) und FPGA dient ein USB-Adapter (ExSys für RS-422/485). USB-Anschluss wird mit dem Rechner verbunden, das Ende ist ein Com-Stecker, der mit einem weiteren, selbstgebauten Adapter schlussendlich über RJ-45 mit dem FPGA verdunden ist.
Der FPGA selbst wird mit einem Logic-Analyser überprüft.
Problembeschreibung:
Nach erstmaligem Testen werden über die Schnittstelle zwar Daten an den FPGA übertragen, doch mit dem Logic-Analyser kann man erkennen, dass ein beliebiges Bitmuster übertragen wurde, nur nicht das eigentlich gewünschte Kommandowort angekommen ist. So übergebe ich z.B. dem VISA-Write-VI als Datenstring ein Byte ("00000000") und der Logic-Analyser zeigt an, der FPGA würde 9 Byte empfangen, bestehend aus beliebig zusammengestellten Nullen und Einsen.
Wird der FPGA testweise über die Kommandozeile angesprochen, empfängt er das gewünschte Byte, weswegen angenommen wird, das die Problematik seitens von LabVIEW zu suchen ist.
Fragestellung:
Kann mir jemand einen Tipp geben, in welcher Richtung ich nach der Problemlösung suchen muss?
Liegt es an der Konfiguration der seriellen Schnittstelle seitens LabVIEW oder ist es eher die Hardware, die Probleme bereitet?
Ein Kollege meinte, es würde an den Strings liegen, die das VISA-Write-VI überträgt. Ist dies möglich? Mir wäre nicht bekannt, dass man dem Write-VI einen anderen Datentyp als Datenpuffer übergeben kann, oder?
Gibt es neben Logic Analyser noch eine weitere Möglichkeit, die Daten, die TATSÄCHLICH über die serielle Schnittstelle übertragen werden, anzusehen oder zu verfolgen. Ich habe bereits den NI Spy eingesetzt, der bringt mich aber nicht viel weiter...
So, das ist viel Text, aber besser gings leider nicht.
Ich bedanke mich bereits im Voraus für Eure Geduld beim Lesen uns hoffe auf schnelle Antworten!
Danke!!!
Grüße, Lydia
Ich hoffe, dass mir jemand weiterhelfen kann - ich bin leider mit meinem Latein am Ende und brauche dringend Hilfe. Ich weiss, die gesamte Beschreibung ist ein wenig länglich nun, aber die notwendigen Details sind meines Erachtens sehr wichtig...
Themenbeschreibung und eingesetzte Werkzeuge:
Ich möchte einen Actel FPGA kommandieren (einfache Binärstrings, wie z.B. "00000000"), bzw. eine Kommunikation mit diesem herstellen.
Die Kommunikation läuft über die sog. "UART-Schnittstelle", basierend auf dem EIA-232 (RS 232) Interface, aber mit differentieller LVDS (EIA-644) Signalisierung.
Hierfür habe ich eine Applikation erstellt (LabVIEW 2009, SP 1, Deutsch) und für die Kommunikation gängige VISA-VIs aus der "Instrumenten-I/O- Funktionspalette" eingesetzt (VISA-Öffnen, seriellen Prot konfigurieren, VISA-Schreiben, VISA-Lesen und VISA-Schliessen).
Der serielle Port wurde mit LabVIEW folgendermaßen konfiguriert:
- Baudrate: 9600
- Datenbits: 8
- Parity: Odd
- Stopbits: 2
- Flusskontrolle: keine
Die UART-Schnittstelle verlangt folgende Konfiguration:
- Datenrate: 115200 bit/s
- Datenbits: 8
- Parity: Odd
- Startbits: 1
- Stopbits: 2
- Hardware Handshake: keinen
Als Verbindungskabel zwischen Rechner (LabVIEW-Software) und FPGA dient ein USB-Adapter (ExSys für RS-422/485). USB-Anschluss wird mit dem Rechner verbunden, das Ende ist ein Com-Stecker, der mit einem weiteren, selbstgebauten Adapter schlussendlich über RJ-45 mit dem FPGA verdunden ist.
Der FPGA selbst wird mit einem Logic-Analyser überprüft.
Problembeschreibung:
Nach erstmaligem Testen werden über die Schnittstelle zwar Daten an den FPGA übertragen, doch mit dem Logic-Analyser kann man erkennen, dass ein beliebiges Bitmuster übertragen wurde, nur nicht das eigentlich gewünschte Kommandowort angekommen ist. So übergebe ich z.B. dem VISA-Write-VI als Datenstring ein Byte ("00000000") und der Logic-Analyser zeigt an, der FPGA würde 9 Byte empfangen, bestehend aus beliebig zusammengestellten Nullen und Einsen.
Wird der FPGA testweise über die Kommandozeile angesprochen, empfängt er das gewünschte Byte, weswegen angenommen wird, das die Problematik seitens von LabVIEW zu suchen ist.
Fragestellung:
Kann mir jemand einen Tipp geben, in welcher Richtung ich nach der Problemlösung suchen muss?
Liegt es an der Konfiguration der seriellen Schnittstelle seitens LabVIEW oder ist es eher die Hardware, die Probleme bereitet?
Ein Kollege meinte, es würde an den Strings liegen, die das VISA-Write-VI überträgt. Ist dies möglich? Mir wäre nicht bekannt, dass man dem Write-VI einen anderen Datentyp als Datenpuffer übergeben kann, oder?
Gibt es neben Logic Analyser noch eine weitere Möglichkeit, die Daten, die TATSÄCHLICH über die serielle Schnittstelle übertragen werden, anzusehen oder zu verfolgen. Ich habe bereits den NI Spy eingesetzt, der bringt mich aber nicht viel weiter...
So, das ist viel Text, aber besser gings leider nicht.
Ich bedanke mich bereits im Voraus für Eure Geduld beim Lesen uns hoffe auf schnelle Antworten!
Danke!!!
Grüße, Lydia