mikrocontroller.net

Forum: FPGA, VHDL & Co. RS 232 Verbindung DAten vom PC senden


Autor: Idris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte Daten über die serielle Schnittstelle an mein FPGA 
geben und diese dann wieder weiterschicken an den PC. Im fPGA erzeugte 
Daten kann ich schon am PC ablesen. Wenn ich aber nun Daten vom PC ( mit 
Terminal v.1.9b) an den FPGA schicke kommen keine wieder am PC an ( es 
müssten andere ankommen als gesendet wegen start und Stopbits und so 
aber es kommen eben gar keine an) Kann mir vllt jemand weiterhelfen? 
muss ich noch Protokoll oder so in VHDL implementieren?
 LIBRARY ieee;
USE ieee.std_logic_1164.all;




ENTITY block_name IS
  -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
  PORT
  (  sigin : IN STD_LOGIC;
    clockin : IN STD_LOGIC;
    sigout : OUT STD_LOGIC
  );
  -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
  
END block_name;


--  Architecture Body

ARCHITECTURE block_name_architecture OF block_name IS

signal zahl : natural range 0 to 5208;


BEGIN
process (clockin , sigin, zahl)
begin
If clockin'event and clockin = '1' then

if zahl = 5208 then -- (Baudrate 9600 bei 50 MHz)
zahl <= 0;

else
zahl <= zahl + 1;
end if;

end if;
If zahl = 0 then

sigout <= sigin;

end if;
end process;

END block_name_architecture;

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann mir vllt jemand weiterhelfen?
Teile die Aufgabe in 2 Hälften:
1. vom PC zum FPGA
2. vom FPGA zum PC  (einfacher)

> Wenn ich aber nun Daten vom PC an den FPGA schicke kommen
> keine wieder am PC an
Du solltest das vorher einfach mal SIMULIEREN. Nicht einfach so 
halbfertig drauflosbasteln. Das wird garantiert nichts... :-/

> muss ich noch Protokoll oder so in VHDL implementieren?
Ja, das ist die Sache mit Startbit, Datenbits und Stopbit...
So sieht meine RS232-Verbindung aus:
http://www.lothar-miller.de/s9y/categories/42-RS232


BTW: du solltest deinen VHDL-Code besser formatieren...
process (clockin , sigin, zahl)
begin
  If clockin'event and clockin = '1' then
    if zahl = 5208 then -- (Baudrate 9600 bei 50 MHz)
      zahl <= 0;
    else
      zahl <= zahl + 1;
    end if;
  end if;
  If zahl = 0 then
    sigout <= sigin;
  end if;
end process;
Und nicht kombinatorische und getaktete Teile in 1 Prozess 
beschreiben...

Autor: Idris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja danke vom FPGA zum PC funktioniert das ja schon das hab ich zuerst 
gemacht die simulation hat soweit auch gepasst, ich werd mal deinen 
Rcieve Part durcharbeiten und gucken ob ich damit weiterkomme.
Funktioniert eine Baudrate von 258000 noch bzw welches ist die höchste 
funktionierende?
Mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.