A Really Low Level Guide To Doing Ethernet On An FPGA

With so much of our day-to-day networking done wirelessly these days, it can be easy to forget about Ethernet. But it’s a useful standard and can be a great way to add a reliable high-throughput network link to your projects. To that end, [Robert Feranec] and [Stacy Rieck] whipped up a tutorial on how to work with Ethernet on FPGAs. 

As [Robert] explains, “many people would like to transfer data from FPGA boards to somewhere else.” That basically sums up why you might be interested in doing this. The duo spend over an hour stepping through doing Ethernet at a very low level, without using pre-existing IP blocks to make it easier. The video explains the basic architecture right down to the physical pins on the device and what they do, all the way up to the logic blocks inside the device that do all the protocol work.

If you just want to get data off an embedded project, you can always pull in some existing libraries to do the job. But if you want to really understand Ethernet, this is a great place to start. There’s no better way to learn than doing it yourself. Files are on GitHub for the curious.

7 thoughts on “A Really Low Level Guide To Doing Ethernet On An FPGA

  1. I highly, highly, highly recommend Alex Forencich’s Ethernet implementation.

    https://github.com/alexforencich/verilog-ethernet

    He’s just insanely responsive for a free project and there are implementations up to 25G (!). I’ve found it incredibly easy to add handlers for various UDP ports using a tiny softcore-like processors (PicoBlaze or similar), so adding things like retransmission, DHCP, etc. are all relatively easy.

    Honestly though if you’re doing any FPGA work you should just have his GitHub link bookmarked.

  2. How does a microprocessor start at the right place in the hard code upon power up? E.g. what is the physical circuit design that always makes it start executing machine code exactly where you want / need it to?

Leave a Reply

Your email address will not be published. Required fields are marked *

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.