Forum: FPGA, VHDL & Co. Vertauschte Ausgabe des std_logic_vector


von std_logic (Gast)


Lesenswert?

Hi Leute,

ich eine std_logic_vector über mein UART senden. Funktioniert soweit 
auch,
jedoch ist der am Terminal angezeigte Bit-Vector irgenwie vertauscht.

Anbei Ausschnitte meiner Implementierung:

Diese Werte sollen nacheinander übertragen werden:
1
signal value1 : std_logic_vector (7 downto 0) := "01000000";
2
signal value2 : std_logic_vector (7 downto 0) := "00100000";
3
signal value3 : std_logic_vector (7 downto 0) := "00010000";
4
signal value4 : std_logic_vector (7 downto 0) := "00001000";
5
signal value5 : std_logic_vector (7 downto 0) := "00000100";
6
signal value6 : std_logic_vector (7 downto 0) := "00000010";


Die Senderoutine lautet:
1
tx_out_data <= '1' & txd_data_send & '0'; 
2
-- 0/Startbit -- DATA -- 1/Stopbit -


Am Terminal kommen folgende Daten an:
00000001
00000011
00000111
00001111
00011111
00111111


Irgendwie stehe ich auf dem Schlauch. :-(

Wie kann ich die Reihenfolge 1:1 wie in den value's beschrieben 
übertragen?


Danke für eure Hilfe!

Gruss
Holger

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


Lesenswert?

std_logic schrieb:
> mein UART
Und wie sieht dein UART aus?


> Am Terminal kommen folgende Daten an
Und was sagt die Simulation?

Wie auch immer: der Fehler ist nicht im geposteten Code, häng einfach 
mal deine VHDL Datei(en) hier an.

: Bearbeitet durch Moderator
von std_logic (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

anbei mal meine VHDL-Datei


DANKE!

Gruss

von Sir T (Gast)


Lesenswert?

Da ist ein kleines Problem beim wrap des RomAddr Counter, was wohl nicht 
ursächlich für den Fehler ist.

Was sagt denn die Timing Analyse? 100MHz ok?

von std_logic (Gast)


Lesenswert?

Sir T schrieb:
> Da ist ein kleines Problem beim wrap des RomAddr Counter, was wohl nicht
> ursächlich für den Fehler ist.
>
> Was sagt denn die Timing Analyse? 100MHz ok?

Hi!

Ich glaube das Timing müsste in Ordnung sein. FPGA läuft sicher auf 100 
MHz.

Gruss

von Sir T (Gast)


Lesenswert?

Dann müsste eine Simulation helfen

von std_logic (Gast)


Lesenswert?

Kann es an der Ausgabereihenfolge der std_logic_vectoren liegen?

von Tschaebe (Gast)


Angehängte Dateien:

Lesenswert?

Die funktionale Simulation sieht wie erwartet aus (siehe Anhang, habe 
einfach mal loopback gemacht und den Sendeabstand verkuerzt (Zeile 79).

std_logic schrieb:
> Ich glaube das Timing müsste in Ordnung sein. FPGA läuft sicher auf 100
> MHz.

Warum macht mich das "müsste" nur stutzig? Was sagt die Timing-Analyse? 
Gibt es unconstraint pathes?

von std_logic (Gast)


Lesenswert?

> Warum macht mich das "müsste" nur stutzig? Was sagt die Timing-Analyse?
> Gibt es unconstraint pathes?


Hi!

Wie kann ich das überprüfen bzw. feststellen?

Gruss

von std_logic (Gast)


Lesenswert?

oh...

Jetzt sehe ich es

... TimeQues Timing Analyzer ist ROT
....... Unconstrained Paths

sollte das das Problem sein?

von Der Besucher (Gast)


Lesenswert?

Kleine Frage dazu (speziel FPGA-Synthese):

Gibt es bei der FPGA-Synthese keine Probleme, wenn bei der 
Signaldeklaration Werte zugewiesen werden? Bei Constantendeklarationen 
sehe ich das ja noch ein...
Werden diese Werte dann nach der Synthese korrekt als Reset-Werte 
benutzt?

Grüße
Der Besucher

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Das Programm ist io.
Hier werden die Werte der Reihenfolge ausgegeben.
64 32 16 8 4 2...
Siehe Bild.

Liegt an deinem Terminal.

Gruss

: Bearbeitet durch User
von std_logic (Gast)


Lesenswert?

Hi!

Hat noch jemand eine Idee?

Lothar Miller vll? ;)

Danke!

Gruss

von Peter B. (funkheld)


Lesenswert?

Welches Terminal hast du.

Gruss

von std_logic (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Welches Terminal hast du.

Ich nutze HTerm 0.8.1beta

von std_logic (Gast)


Lesenswert?

Mit Terminal v1.9b 20040204 by Br@y habe ich das selbe Problem.

von Peter B. (funkheld)


Lesenswert?

https://sites.google.com/site/terminalbpp/

Das oben benutze ich.

Gruss

von Peter B. (funkheld)


Lesenswert?

Wenn dein Board in Ordnung ist bzw die RS232-Verbindung richtig ist 
kann kein anderes Ergebnis rauskommen als das man oben vom VHDL 
erwartet.

Ich habe mit QuartusII 13.0.56 compiliert.

Gruss

von std_logic (Gast)


Lesenswert?

Hi Peter,

welches Terminal benutzt du, dass es funktioniert?
Also, das oben dargestellte?

Gruss

von Peter B. (funkheld)


Angehängte Dateien:

Lesenswert?

Das benutze ich mit:
https://sites.google.com/site/terminalbpp/
siehe Bild im Anhang.
Die Hexdaten: 40 20 10 8 4 2 40....
Das richtige zu erwartende Ergebnis.


Oben das Termimal "DE1" habe ich selber mit Purebasic progammiert.

Gruss

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


Lesenswert?

Peter Bierbach schrieb:u
> Das Programm ist io.
Ist klar. Ich kenne den Code...

> Liegt an deinem Terminal.
Oder an der Hardware...
@std_logic: passt die Baudrate, funktioniert der RS232 Wandler, passen 
die Pegel? Hast du ein Oszi?

std_logic schrieb:
> welches Terminal benutzt du, dass es funktioniert?
Welches benutzt du, dass es nicht funktioniert? Ich verwende OCConsole 
(wird leider nicht mehr gepflegt).

von Peter B. (funkheld)


Lesenswert?

----------------------------------
Mit Terminal v1.9b 20040204 by Br@y habe ich das selbe Problem.
----------------------------------

Diese Version war mein Vorgänger  v1.9b 20040204, funktioniert auch 
wunderbar.

Hast du ein USB-Dongle? Probier mal einen anderen....
Ansonsten liegt es an deinem Board.

Gruss

: Bearbeitet durch User
von Sir T (Gast)


Lesenswert?

> ....... Unconstrained Paths
>
> sollte das das Problem sein?

Eventuell, setze ein constraint für die clock und schau im report, ob es 
die 10ns/100Mhz schafft! Eine post-layout Simulation könnte auch 
hilfreich sein.

von Sir T (Gast)


Lesenswert?

Hat die Taktquelle auf Deinem Board wirklich 100MHz?

von Peter B. (funkheld)


Lesenswert?

Da die serielle Schnittstelle nicht so übermäßig wählerisch ist mit Zeit 
,gehe mal immer 5MHZ tiefer und teste noch einmal wenn du keine andere 
Prüfmöglichkeit hast.

Zumindest ändern sich die Ausgaben.

Gruss

von Raspi (Gast)


Lesenswert?

Hi,

Danke für euere hilfreichen Tipps! ;)

Es liegt an der Hardware, genauer gesagt am UART -> USB bzw. RS232 -> 
USB
Wandler.

Welche Wandler benutzt ihr denn so?
Habt ihr Erfahrungen, welche absolut verlässlich funktionieren?

Vielen DANK!

Gruss

von Peter B. (funkheld)


Lesenswert?

Hmm..., das habe ich vermutet. Denn wenn die MHz vom Board nicht stimmt 
würde ein Buchstabensalat kommen und keine regelmäßige Zahlenreihe.

Schau dir im Internet einige an und such dann nach Urteilen über dieses 
Ding.
Die kosten ja nicht die Welt. Es gibt welche mit Gehäuse und ohne 
Gehäuse(hier liegt die Elektronik offen zum Basteln).

Gruss

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


Lesenswert?

Raspi schrieb:
> Es liegt an der Hardware, genauer gesagt am UART -> USB bzw. RS232 ->
> USB Wandler.
Oder hast du da Pegelprobleme. Man darf nicht einfach einen Wandler mit 
TTL Pegeln an "richtige" RS232 Pegel anschließen...

> Habt ihr Erfahrungen, welche absolut verlässlich funktionieren?
Da wäre sehr zielführend, wenn du sagen würdest, welche Hardware du 
verwendest. Aber i.A. laufen die mit FTDI Chipsatz problemlos. Und 
Prolific funktioniert auch tadellos...

: Bearbeitet durch Moderator
von Raspi (Gast)


Lesenswert?

Ich nutze ein DE0 - nano mit dem FTDI USB-RS232-WE-1800-BT_0.0 - Kabel,
dieses funktioniert leider überhaupt nicht am Eval-Board.

von Peter B. (funkheld)


Lesenswert?

Das muß er selber entscheiden, was für ein Typ er braucht:
Ein Dongle  USB zu TTL(3 Volt) zum Board  oder einen USB zu Seriell 
9Pin-Stecker zum Board mit 9Pin-Stecker , wo ein MAX verbaut ist auf dem 
Board.

----------------------
Oder hast du da Pegelprobleme. Man darf nicht einfach einen Wandler mit
TTL Pegeln an "richtige" RS232 Pegel anschließen...
---------------------
Aus den Kinderschuhen wird er wohl raus sein?

GRuss

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


Lesenswert?

Raspi schrieb:
> Ich nutze ein DE0 - nano mit dem FTDI USB-RS232-WE-1800-BT_0.0 - Kabel,
> dieses funktioniert leider überhaupt nicht am Eval-Board.
Funktioniert das Kabel mit sich selber? Test: Pins 2+3 verbinden und am 
Terminal irgendetwas eingeben. Das Terminal muss seine eigenen Zeichen 
empfangen und ausgeben.

Peter Bierbach schrieb:
> Aus den Kinderschuhen wird er wohl raus sein?
Wer eine simple RS232 Schnittstelle nicht zum Laufen bringt, der kann 
sich (elektrisch gesehen) noch nicht mal die Schuhe selber binden.

Edit:
@Andreas: dieses Kabel?
http://www.newark.com/ftdi/usb-rs232-we-1800-bt-0-0/cable-usb-to-rs232-serial-1-8m/dp/45P4109
Das müsste vom Pegel her passen:
USB to UART cable with RS232 level UART signals. Black cable, 
Transparent USB connector 0.0 = RED wire is 0V
Wie hast du es an dein Board angeschlossen?

: Bearbeitet durch Moderator
von Raspi (Gast)


Lesenswert?

Hallo!

Habe das Ganze wie folgt angeschlossen:
---------------------------------------------
FPGA                ==>               Kabel
---------------------------------------------
TXD - Port  GPI0_00    ==>          yellow - RXD
RXD - Port  GPI0_01    ==>          orange - TXD
GPI0_0 Pin 12 / GND    ==>          black - GND
GPI0_0 Pin 30 / GND    ==>          red - Power / GND



Gruss

von Alexander F. (alexf91)


Lesenswert?

Im Kabel ist ein Pegelwandler, das wird also nichts, wenn du direkt an 
die GPIO Pins gehst.

Was ist denn nun mit den letzten beiden Pins? Sind das GPIO Pins oder 
GND?
Power musst du außerdem nicht unbedingt anschließen.

Hier das Datenblatt, das müsste alles aufklären:
http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_USB_RS232_CABLES.pdf

@Peter Bierbach
Kannst du nicht normal zitieren? Es gibt da rechts unten in jedem 
Beitrag ein paar Funktionen...

: Bearbeitet durch User
von Peter B. (funkheld)


Lesenswert?

Hmm.., den roten auf keine fall anschliessen.

Ich habe ein Dongle : schwarz/grün/weiß/rot den roten(+) habe ich 
isoliert.

Am GPIO habe ich weiß/grün = TX/RX und schwarz ist Masse und schon geht 
es.

GRuss

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


Lesenswert?

Alexander F. schrieb:
> @Peter Bierbach
> Kannst du nicht normal zitieren?
Peter konnte das zwischendurch mal. Hat es aber schnell wieder 
verlernt...

Raspi schrieb:
> TXD - Port  GPI0_00    ==>          yellow - RXD
> RXD - Port  GPI0_01    ==>          orange - TXD
Ich frage mich jetzt auch, welche Pegel hier vorliegen: TTL oder 
RS232...

Der rote Draht ist der SpannungsAUSGANG des Dongle. Bei der 0.0 Version 
kommen da 0 V heraus. Den brauchst du also gleich gar nicht 
anschließen...

: Bearbeitet durch Moderator
von Michael (Gast)


Lesenswert?

>GPI0_0 Pin 12 / GND    ==>          black - GND
>GPI0_0 Pin 30 / GND    ==>          red - Power / GND
Das sieht so aus als wenn hier ein GPIO Pin als GND benutzt
wird. Das ist doch bestimmt nicht richtig! Das DE0-Nano
hat zwei eigene GND Pins auf den GPIO Leisten.

Gruß,
Michael

von Peter B. (funkheld)


Lesenswert?

-------------------------
Der rote Draht ist der SpannungsAUSGANG des Dongle. Bei der 0.0 Version
kommen da 0 V heraus. Den brauchst du also gleich gar nicht
anschließen...
------------------------
ER meint wohl , das der Massepin mit in der GPIO-Leiste sitzt , wie bei 
meinem DE0 und DE1 Board.

He...,he... du bist sehr naiv.
Ich habe 3 verschiedene Dongle , bei 2 kommt 3,3 Volt raus und bei dem 
anderen 5 Volt.

Der Spannungsdraht vom Dongle darf am GPIO nicht angeschlossen 
werden..wozu auch.

GRuss

von Klaus F. (kfalser)


Lesenswert?

Warum wird hier so herumgepfuscht?
5 sec googlen und das Datenblatt des DE0 Board gefunden.
Es hat ein RS-232 Port (Seite 37), daran ist eine 9-poliger D-Sub Buchse 
anzuschließen (Pins 2,3 und 5).

An diesen D-Sub wird dann das USB zu RS-232 Converterkabel zum PC 
angeschlossen.

von Alexander F. (alexf91)


Lesenswert?

Klaus Falser schrieb:
> An diesen D-Sub wird dann das USB zu RS-232 Converterkabel zum PC
> angeschlossen.

Es geht um das DE0 Nano, das hat keinen RS232 Port.

von Klaus F. (kfalser)


Lesenswert?

Alexander F. schrieb:
> Klaus Falser schrieb:
>> An diesen D-Sub wird dann das USB zu RS-232 Converterkabel zum PC
>> angeschlossen.
>
> Es geht um das DE0 Nano, das hat keinen RS232 Port.

Hmm, 'tschuldigung.
Ist mir in der Zwischenzeit auch aufgefallen...

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.