Forum: FPGA, VHDL & Co. Problem mit einem UART


von TheMason (Gast)


Angehängte Dateien:

Lesenswert?

Moin moin,

ich habe wieder mal ein Problem. Ich möchte für mein Spartan3-Board
einen UART schreiben.

Als Vorlage für den UART habe ich den miniUART von Opencores genommen.
Allerdings hat der ja nur eine Baudrate (9600), ist ausgelegt für einen
40MHz Quarz und braucht einen Prozessor (wegen der Register). Daher habe
ich mir gedacht selbst einen zu schreiben (vor allem lernt man ja was
dabei).

Ich habe dann also erstmal den Clockgenerator und den TX-Teil gemacht.

Der Clockgenerator erzeugt mir aus meinen 50MHz halbwegs brauchbare
Baud-Clocks. Die 50MHz werden durch 27 geteilt. Dann durch einen
variablen Teiler geteilt (Teilerwerte : 2,3,6,12,24,48,96) der die
16fache Baudrate erzeugt (später für RX). Dieser Clock wird noch durch
16 geteilt und dann habe ich den Baud-Clock. (19200 Baud wird somit zu
19290 Baud, also ca 0.5% Fehler)
Der TX-Teil clockt die Daten mit der Baud Clock aus (mit einer 0 als
Startbit, LSB zuerst und nach dem letzten Bit, also MSB, noch eine 1).

Das Ausclocken beginnt mit einem Trigger-Signal (kommt von einer Taste
des Boards). Dieser Trigger steuert eine kleine Statemachine welche die
Bits mit der Baudclock rausclockt. Um Probleme mit dem Tastenprellen zu
vermeiden habe ich eine kleine Entprellung eingebaut (einfach nur nen
Zähler mit vergleicher).

Das TX-Signal sieht auf dem Scope auch ganz gut aus, und auf meinem
Terminal kommt auch was an. Das Problem ist nur das oftmals 2 Zeichen
ankommen von denen eines Schrott ist. Leider kommt das recht häufig vor
(so 1 falsches Zeichen auf 4 gesendete).
Ich weiß nicht wo der Fehler noch liegen kann.

Habe den VHDL-Code mal dabeigestellt. Wäre nett wenn jemand Zeit hat da
mal drüber zu gucken.

Gruß
Rene

PS. Es sieht vielleicht etwas umständlich aus mit dem Multiplexer zum
rausclocken des TX-Buffers, aber mir geht es erstmal nur darum das das
ganze vernünftig funktioniert (und ich den RX-Teil endlich machen kann)

von Birefsane (Gast)


Lesenswert?

Hallo Rene,

läuft Dein Programm inzwischen ?? Wie sieht der RX Teil aus ???

gruß

von Falk B. (falk)


Lesenswert?

@Birefsane (Gast)

>läuft Dein Programm inzwischen ?? Wie sieht der RX Teil aus ???

Nach über zwei Jahren hat sich das Problem entweder gelöst oder 
aufgelöst ;-)

MFG
Falk

von Birefsane (Gast)


Lesenswert?

bei mir hat sich das Problem wiederbelebt :) Mein Uart läuft nicht schau 
ma mal des bekomme ich schon zum laufen... hoffe ich.

von TheMason (Gast)


Lesenswert?

@birefsane

also der uart läuft inzwischen :-)
weiß nur nicht mehr genau was der fehler war. war jedenfalls was dummes 
(wie so meist). schau mal in mein audio-projekt rein. da stehen die 
sourcen zum vhdl uart ebenfalls drin, und da sollte es funktionieren.

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.