Vertauschte Ausgabe des std_logic_vector

Gast #3693098
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
Gast #3693419
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?
Angehängte Dateien:
Gast #3693544
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
Moderator (Firma: Titel) Persönliche Seite #3693949
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).
#3694003
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
Gast #3694433
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.
Gast #3694960
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
#3694968
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
Moderator (Firma: Titel) Persönliche Seite #3695016
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...
#3695053
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
Moderator (Firma: Titel) Persönliche Seite #3695082
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?
Gast #3695121
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
#3695138
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...
Moderator (Firma: Titel) Persönliche Seite #3695268
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...
Gast #3695282
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
#3695491
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
#3695611
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren