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


von Idris (Gast)


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?
1
 LIBRARY ieee;
2
USE ieee.std_logic_1164.all;
3
4
5
6
7
ENTITY block_name IS
8
  -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
9
  PORT
10
  (  sigin : IN STD_LOGIC;
11
    clockin : IN STD_LOGIC;
12
    sigout : OUT STD_LOGIC
13
  );
14
  -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
15
  
16
END block_name;
17
18
19
--  Architecture Body
20
21
ARCHITECTURE block_name_architecture OF block_name IS
22
23
signal zahl : natural range 0 to 5208;
24
25
26
BEGIN
27
process (clockin , sigin, zahl)
28
begin
29
If clockin'event and clockin = '1' then
30
31
if zahl = 5208 then -- (Baudrate 9600 bei 50 MHz)
32
zahl <= 0;
33
34
else
35
zahl <= zahl + 1;
36
end if;
37
38
end if;
39
If zahl = 0 then
40
41
sigout <= sigin;
42
43
end if;
44
end process;
45
46
END block_name_architecture;

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


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...
1
process (clockin , sigin, zahl)
2
begin
3
  If clockin'event and clockin = '1' then
4
    if zahl = 5208 then -- (Baudrate 9600 bei 50 MHz)
5
      zahl <= 0;
6
    else
7
      zahl <= zahl + 1;
8
    end if;
9
  end if;
10
  If zahl = 0 then
11
    sigout <= sigin;
12
  end if;
13
end process;
Und nicht kombinatorische und getaktete Teile in 1 Prozess 
beschreiben...

von Idris (Gast)


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

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.