Forum: FPGA, VHDL & Co. UART Störung


von Hans H. (hanshirsch)


Angehängte Dateien:

Lesenswert?

Hallo,
habe eine neues Problem mit der "UART-Endlos-Ausgabe". Die Bitströme 
x"FO" oder x"0F" funktionsieren einwandfrei. Wenn ich aber x"CC" oder 
ähnliche Daten für die UART einstelle, bekomme ich am Oszilloskop ein 
geflakere. Sind es zu viele Flankenwechsel, oder irgendwelche 
Timingprobleme?
Ich möchte jedes beliebgige 8-Bit Frame einstellen können.

Gruß,
H.H.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> bekomme ich am Oszilloskop ein geflakere.
Naja, überleg einfach mal, warum...

0xF0 via RS232 =  0000011111
0x0F via RS232 =  0111100001
0xCC via RS232 =  0001100111

> Sind es zu viele Flankenwechsel,
Das kommt darauf an, wie du triggert...
Siehe der Kommentar im Code:
1
  -- dauernd senden, solange tx_start aktiv

> oder irgendwelche Timingprobleme?
Schliess doch mal einen PC mit einem Treminalprogramm an...

> Ich möchte jedes beliebgige 8-Bit Frame einstellen können.
Dann gib an einem anderen FPGA-Pin das tx_busy aus und triggere auf das 
:-o

von Hans H. (hanshirsch)


Lesenswert?

>Naja, überleg einfach mal, warum...

>0xF0 via RS232 =  0000011111
>0x0F via RS232 =  0111100001
>0xCC via RS232 =  0001100111


0x"CC" ist übrigens "11001100". Das ist mir klar, dass hier automatisch 
mehr flankenwechsel stattfinden. Nur ist da irgendwie noch ein Signal 
überlagert oder ähnliches. Das meinte ich mit "flackern".
Es ist doch seltsam, dass bei x"FO" und x"OF" alles einwandfrei 
funktioniert und in anderen Fällen nicht.

von Hans H. (hanshirsch)


Lesenswert?

>0x"CC" ist übrigens "11001100"

Korrektur: Sorry, war eben ein kleiner Denkfehler von mir!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 0x"CC" ist übrigens "11001100"
Ich habe die Start- und Stopbits mit angehängt... 0 00110011 1
Und: LSB first (aber das hast du schon bemerkt)

von Der Besucher (Gast)


Lesenswert?

Kannst du mal 0x55 senden und davon einen (aussagekräftigen) Screenshot 
machen?

Der Besucher

von Hans H. (hanshirsch)


Angehängte Dateien:

Lesenswert?

In der Simulation klappt alles einwandfrei, auf dem Oszilloskop dagegen 
flackert über dem x"55" Signal noch irgendwas anderes drüber

von Hans H. (hanshirsch)


Lesenswert?

Es sieht so aus, als ob, das Signal zwei mal versetzt zu sehen ist. 
Liegt es vielleicht daran, dass der taster nicht entprellung ist?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> In der Simulation klappt alles einwandfrei
Ich sehe gerade, dass mein Code offenbar fehlerhaft ist :-o
Das MSB kommt zuerst... (AA statt 55)

Ich werde das gelegentlich überarbeiten :-/

von Der Besucher (Gast)


Lesenswert?

Am nicht entprellten Taster liegt das meines erachtens nicht, da ja nur 
ein Sender vorhanden ist. Du hast scheinbar irgendwo eine Reflektion des 
Signals oder es koppelt irgendwo über und wird zurückgesendet.
Man müsste halt wissen, wie das ganze Drumherum aussieht.
Hast du die Messspitze ordentlich geerdet?
Hast du sehr lange Leitungen? Verdrillt/nicht verdrillt?
Kannst du nicht ein Foto der Oszilloskopausgabe machen?
Und schau mal besonders auf die Flanken, ob die sauber rüberkommen, oder 
ob es da Schwingungen gibt (so in den hundert MHz Bereichen).

Der Besucher

von Marvin (Gast)


Lesenswert?

Ich lach mich kaputt!

Was macht ein Oszilloskop?
Es triggert auf eine Flanke.
Und wie viele Flanken enthält dein Signal?
Auf jedenfall mehr als eine, vor allem dann, wenn es in einer 
Endlosschleife läuft.
Das heißt dass du nicht unbedingt auf die erste Flanke triggerst sondern 
auf eine beliebige, daher das Rauschen bzw. die scheinbar überlagerten 
Signale.
Wenn es ein besseres Oszi ist, kannst du evtl. auf Signalformen 
triggern.
Ansonsten in deiner Routine einen Triggerimpuls auf einen Pin ausgeben, 
diesen an Kanal A des Oszi und auf Kanal B dein RS232-Signal.

Viel Spaß!

von Der Besucher (Gast)


Lesenswert?

Der Marvin hat Recht!
Man ist schon zu sehr an die eingefrorenen Signale der Digitalsoszis 
gewöhnt, dass man das offensichtliche einfach übersieht.

Der Besucher

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> In der Simulation klappt alles einwandfrei
Ich habe den Quelltext auf meiner HP so überarbeitet, dass jetzt 
tatsächlich das LSB zuerst kommt ;-)

Ich würde dir raten, erst mal nicht dauernd zu Senden. Besser wäre, ein 
Byte zu schicken, dann eine kurze Pause einzulegen, dann erst das 
nächste. So kannst du dann auch besser triggern...

Oder mach es so, wie ich es oben vorgeschlagen habe:
>> Ich möchte jedes beliebgige 8-Bit Frame einstellen können.
> Dann gib an einem anderen FPGA-Pin das tx_busy aus und triggere auf das

von Duke Scarring (Gast)


Lesenswert?

@Hans Hirsch:

Meistens bringt auch eine Vergrößerung der HOLD-Zeit am Oszilloskop ein 
besseres Bild.

Aber generell gilt: Für aperiodische Signale bzw. Signalformen eignet 
sich eher ein Speicheroszilloskop.

Duke

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.