Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

Simple ethernet communication and Avalon

Hi guys,

I am trying to send data to a computer from my Cyclone III dsp development board through Marvell 88E1111. My aim is just send the data to computer without any error connection. For that purpose, I will use the triple speed ethernet megacore function of Altera. However, I don't want to use SOPC builder in my code, because I don't know how to use it.

In the user guide of the megafunction, Avalon ST and MM interfaces are shown on some charts, but when I tried to learn what Avalon interface is, I saw that it is something related to SOPC builder. Then I am confused now about that can I use Avalon interface without SOPC?

Can't I configure and use the megafunction without using Avalon and SOPC? (At the beginning , I was planning to write just a code to control the megacore function which controls the ethernet controller chip.)

Thank you for your time, effort and help.

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Yes the TSE MAC can be used without SoPC builder. The Avalon ST and Avalon MM interfaces are simply bus protocols. Those buses are used within SoPC builder but they don't have to be. You can most certainly write your own logic to talk to the MAC.

    The Avalon MM specification is basically just a typical processor bus (address, write, read, data, etc).

    The Avalon ST specification is for streaming data and allows for packet control and backpressure.

    Jake
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Yes the TSE MAC can be used without SoPC builder. The Avalon ST and Avalon MM interfaces are simply bus protocols. Those buses are used within SoPC builder but they don't have to be. You can most certainly write your own logic to talk to the MAC.

    The Avalon MM specification is basically just a typical processor bus (address, write, read, data, etc).

    The Avalon ST specification is for streaming data and allows for packet control and backpressure.

    Jake

    --- Quote End ---

    Could you elaborate more on how to use the Avalon MM interface. I instantiated the TSE (no Qsys, no Nios) and I was trying to initialize the MAC by configuring the registers through verilog code, but I always read zeros from any field, even after writing one. I tried to configure the command_config register for example by using 8'h02 as address and read the TX_EN and RX_EN. I see that the address signal on the TSE interface is 8bits wide and I am not sure if I am doing the addressing properly. Also, when is data available after issuing a read command for example, in the same clock cycle or after one clock cycle? The waitrequest signal is high for three cycles and goes low for one cycle, and that repeats periodically for a continuous read operation at the same address being issued in each clock cycle, so I assume I get to actually read or write?... :(
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/manual/mnl_avalon_spec.pdf

    The ug_ethernet isn't very elaborate on the details, but I think you can expect timing similar to Figure 3-3 in section 3.5.1 of the mnl_avalon_spec.pdf

    a) hold 'read' and 'address' constant while 'waitrequest' is asserted.

    b) when 'waitrequest' goes low, drive 'read' low.

    c) on the next clock, 'readdata' should have valid contents.

    The read transaction is being accepted by the TSE on the single cycle where read=1 and waitrequest=0, and then the contents are (probably?) output on the next clock.

    As far as addressing goes, I believe you understand it correctly and simply need to supply the values from the 'Dword offset' column in Chapter 6 of ug_ethernet.pdf The value 0 should get you the 'rev' register, which is probably a good starting point.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/manual/mnl_avalon_spec.pdf

    The ug_ethernet isn't very elaborate on the details, but I think you can expect timing similar to Figure 3-3 in section 3.5.1 of the mnl_avalon_spec.pdf

    a) hold 'read' and 'address' constant while 'waitrequest' is asserted.

    b) when 'waitrequest' goes low, drive 'read' low.

    c) on the next clock, 'readdata' should have valid contents.

    The read transaction is being accepted by the TSE on the single cycle where read=1 and waitrequest=0, and then the contents are (probably?) output on the next clock.

    As far as addressing goes, I believe you understand it correctly and simply need to supply the values from the 'Dword offset' column in Chapter 6 of ug_ethernet.pdf The value 0 should get you the 'rev' register, which is probably a good starting point.

    --- Quote End ---

    Thanks, that was really helpful. Finally managed to do it....:cool: