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


von Ralf H. (hagemann)


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.


von Alban (Gast)


Lesenswert?

Auf http://opencores.org gibt es einige UARTs die funktionieren sollten.

von HubiHubi (Gast)


Lesenswert?


von Ralf H. (hagemann)


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

von Falk (Gast)


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

von Ralf H. (hagemann)


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

von Falk (Gast)


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

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.