Hallo, ich benutze den UDP/IP Core von Opencores.org (auch hier zu finden: http://wwwkramer.in.tum.de/exelixis/software.html) Mein Problem ist, eine minimale Testapplikation für eine "best effort" Übertragung FPGA->PC zu bauen. Momentan sieht das Modul, das direkt am UDP-Core hängt und möglichst schnell immer die gleichen Daten übertragen soll, wie folgt aus: send_proc : process (ctrl_clk) begin if rising_edge(ctrl_clk) then if ctrl_reset = '0' then -- global reset datagram_length <= MAX_DGRAM_LENGTH; if cnt < datagram_length then if ctrl_tx_phase_on = '1' then dgram_sent <= '0'; ctrl_tx_data_out <= "01010101"; cnt <= cnt + 1; else cnt <= 0; end if; else dgram_sent <= '1'; cnt <= 0; end if; end if; -- reset end if; --clk end process send_proc; enable_proc : process(ctrl_clk)--frame_buf_valid, cnt) variable i : integer := 0; variable k : integer := 0; begin if rising_edge(ctrl_clk) then if dgram_sent = '1' and i = 0 then if k < 100000 then k := k + 1; else i := i + 1; ctrl_tx_start_enable <= '1'; end if; else k := 0; i := 0; ctrl_tx_start_enable <= '0'; end if; end if; end process enable_proc; Im Sendeprocess wird einfach immer das gleiche UDP-Datagramm geschickt und im enable Prozess wird das start-enable zum UDP-Core gesetzt, wenn ein neues Datagram gesendet werden kann. Außerdem habe ich dort mithilfe der variable k ein delay zwischen 2 Datagrammen eingebaut - damit funktioniert die Übertragung fehlerfrei. Wenn ich dieses delay weglasse (-> best effort), kann ich fehlerhafte Datagramme in Wireshark beobachten, was konkret heißt, dass in der payload nicht die korrekte anzahl an datanbytes ist (i.d.R. immer zu wenige datenbytes vorhanden). Kann mir jemand einen Tipp geben wo mein Fehler liegt bzw. wie man so eine Funktionalität richtig angeht? Auf PC-Seite habe ich für den Empfang einfach ein C-Programm mit einem UDP Socket und recvfrom() in einer Endlosschleife. Besten Dank im Voraus! Sebastian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.