www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Spartan3 - RS232 - Programmierung


Autor: Ralf Hagemann (hagemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wer hat Erfahrung mit dem Xilinx Spartan3 StarterKitBoard und der RS232 
Schnittstelle?

Suche zuverlässig laufenden Core bzw. VHDL-Code für die Datenübertragung 
über RS232 (mit meinem Windowsprogamm).

Hat da jemand etwas im Einsatz und auch schon getestet ?
Sicherlich ja, wäre toll wenn ich den Code downloaden könnte!

Gruss und vielen Dank in vorraus
Ralf.


Ps.:Habe schon mal mit dem "PicoBlaze Core von Ken Chapman (Xilinx Ltd)
October 2002" und den "UART Transmitter Version 1.00 von Ken Chapman,
Xilinx Ltd, Benchmark House" getestet, hatte damit allerdings 
Synchronisationsprobleme, so das immer mal wieder Zeichen nicht korrekt 
oder gar nicht vom FPGA gelesen wurden.


Autor: Alban (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf http://opencores.org gibt es einige UARTs die funktionieren sollten.

Autor: HubiHubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ralf Hagemann (hagemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen Antworten und schon wieder Fragen

Welchen CORE habt ihr denn im Einsatz ?

Läuft der
"RS232 system controller"
der
"Serial UART"
oder der
"miniUART"

stabil ?


Habt ihr evt. auch Beispielcode und Anwendung in VHDL ?

Danke in vorraus
Ralf

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ralf Hagemann

>Ps.:Habe schon mal mit dem "PicoBlaze Core von Ken Chapman (Xilinx Ltd)
>October 2002" und den "UART Transmitter Version 1.00 von Ken Chapman,
>Xilinx Ltd, Benchmark House" getestet, hatte damit allerdings
>Synchronisationsprobleme, so das immer mal wieder Zeichen nicht korrekt
>oder gar nicht vom FPGA gelesen wurden.

Dann machst du einen Fehler. Das Gespann läuft sehr gut. Richtige 
Baudrate? Alles korrekt verdrahtet?

MFG
Falk

Autor: Ralf Hagemann (hagemann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Falk,

Also ich habe an ein Synchronisationsproblem gedacht, aber ich habe da
noch keine Lösung.
Falls du Lust hast kannst du ja mal in mein Minimalisiertes ISE-Projekt
nebst PicoBlaze-Assembleprogramm schauen.
Die Software sollte eigendlich anhand diesen minimalen Beispiels ein
Echo von jedem Zeichen was z.B. über Hyperterminal geschickt wird
zurückschicken. Das klappt aber nicht stabil bei jedem Zeichen.
(9600 Baud, 8 Datenbits, 1 Stopbit, No Parity)

http://home.edvsz.fh-osnabrueck.de/~hagemann/vhdl/Mpch.zip

Danke in vorraus.

Gruss
Ralf

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Ralf Hagemann

>Falls du Lust hast kannst du ja mal in mein Minimalisiertes ISE-Projekt
>nebst PicoBlaze-Assembleprogramm schauen.

Hmm.

1.) Deine baud_x16 is leicht daneben, bei 50 MHz und 9600 Baud brauchst 
du einen Teiler
    von 325,5, also entweder 325 oder 326. Du teilst aber durch 327, 
denn du zählst von 0..326.
    Der Fehler von 0,4% ist aber nicht Ursache der Übertragungsprobleme.

2.) Ich nehme an, dass stelltisch.psm dein ASM Programm ist (ist ja das 
einzige *.psm). Naja,
    noch reichlich im Anfangsstadium. Allerdings solltest du dir 
angewöhnen, von Anfang an möglichst nicht
    rumzumurksen. Du definierst viele Registernamen, benutzt sie dann 
aber nicht konsequent.
    Das fällt dir auf die Füsse.

>SCHLEIFE:
>          CALL CALL_Read_char_from_UART

          Das empfangene Byte befindet sind nun in s0

>                    LOAD UART_data, USB_SYNC

           Hier lädst du den konstanten Wert USB_Sync($F0) in das 
Register UART_data(sF)

>          CALL CALL_Send_char_to_UART

>;--------------------CALL_Send_char_to_UART---------------------------- --------
>;
>;  Datenbyte aus Register s0
>;  an UART-Sender uebergeben
>;---------------------------------
>;
>CALL_Send_char_to_UART:
>              IN   s1, uart_status_port           ; UART Status einlesen
>               AND  s1, uart_tx_full               ; Sender-fifo-stack voll?
>               JUMP NZ, CALL_Send_char_to_UART        ; Ja   => warten bis Platz 
frei
>               OUT  UART_data, uart_tx_port               ; Nein => Byte an 
Sender geben

          Es wird NICHT s0, sondern sF gesendet!

>               RET

Versuch mal bissel Struktur in dein Projekt zu bekommen. Alle Dateien in 
ein Verzeichnis ist sehr unübersichtlich,
die Xilinxprojekte sind sowieso schon reichlich chaotisch.

MfG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.