Forum: FPGA, VHDL & Co. Ethernet Problem


von D. I. (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
ich bin derzeit dabei mit einem XUPV5 Board via Ethernet zu 
kommunzieren.
Zum Einstieg habe ich dieses Projekt durchgemacht:

http://www.fpgadeveloper.com/2008/10/tri-mode-ethernet-mac.html

Das funktioniert einwandfrei. Alle Pakete die ich mittels RAW-Ethernet 
(also ich baue die Pakete manuell in einem c Programm zusammen) bekomme 
ich mit vertauschten Adressen zurück.

Nun wollte ich das address_swap_module durch mein eigenes Modul 
ersetzen. Dieses besteht aus 2 Komponenten: Einem Receiver der ein 
Datenpaket annimmt und ins BRAM schreibt und einen Transceiver der den 
BRAM ausliest und Pakete versendet.
Der Receiver teilt dem Transceiver mittels eines "finish"-Signals mit 
wenn er fertig ist so dass der Transceiver beginnen kann.
Aber anscheinend bekommt der Receiver das Start-Of-Frame Signal nicht 
mit.

Erstmal habe ich folgende Änderung in der user_logic.vhd gemacht:

und zwar von:
1
  ---------------------------------------------------------------------
2
    --  Instatiate the address swapping module
3
  ---------------------------------------------------------------------
4
  client_side_asm_emac0 : address_swap_module_8
5
    port map (
6
      rx_ll_clock         => user_clk,
7
      rx_ll_reset         => ll_reset_0_i,
8
      rx_ll_data_in       => rx_ll_data_0_i,
9
      rx_ll_sof_in_n      => rx_ll_sof_n_0_i,
10
      rx_ll_eof_in_n      => rx_ll_eof_n_0_i,
11
      rx_ll_src_rdy_in_n  => rx_ll_src_rdy_n_0_i,
12
      rx_ll_data_out      => tx_ll_data_0_i,
13
      rx_ll_sof_out_n     => tx_ll_sof_n_0_i,
14
      rx_ll_eof_out_n     => tx_ll_eof_n_0_i,
15
      rx_ll_src_rdy_out_n => tx_ll_src_rdy_n_0_i,
16
      rx_ll_dst_rdy_in_n  => tx_ll_dst_rdy_n_0_i
17
  );
18
19
  rx_ll_dst_rdy_n_0_i     <= tx_ll_dst_rdy_n_0_i;

nach:
1
  ---------------------------------------------------------------------
2
  --  Instatiate the filter swapping module
3
  ---------------------------------------------------------------------
4
  client_side_asm_emac0 : filter_module
5
    port map (
6
      clk => user_clk,
7
    reset => ll_reset_0_i,
8
    rx_data_in => rx_ll_data_0_i,
9
    rx_sof_in_n => rx_ll_sof_n_0_i,
10
    rx_eof_in_n => rx_ll_eof_n_0_i,
11
    rx_src_rdy_in_n => rx_ll_src_rdy_n_0_i,
12
    rx_dst_rdy_out_n => rx_ll_dst_rdy_n_0_i,
13
    tx_data_out => tx_ll_data_0_i,
14
    tx_sof_out_n => tx_ll_sof_n_0_i,
15
    tx_eof_out_n => tx_ll_eof_n_0_i,
16
    tx_src_rdy_out_n => tx_ll_src_rdy_n_0_i,
17
    tx_dst_rdy_in_n => tx_ll_dst_rdy_n_0_i
18
  );

und entsprechenden Code für den Receiver findet ihr im Anhang.
Wenn ich in der Data_to_bram.vhd das finish signal manuell auf 1 setze 
(also ohne auf SOF zu warten), dann sendet der Transceiver wie zu 
erwarten ununterbrochen. Warte ich jedoch wie im Code auf SOF, passiert 
garnichts wenn ich ein Paket hinschicke.
Vllt habe ich das Signaldiagramm zum LocalLink Interface falsch 
interpretiert.

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.