Von opencores habe ich sowohl einen 1G als auch einen 10G-MAC in Betrieb
genommen. Welche genau kann ich mich nicht erinnern, funktionierte aber.
Ist also nicht alles "Bastelschrott", nur weil es open source ist.
https://opencores.org/projects?expanded=Communication%20controller
Die haben meist ein Wishbone-Interface. Wenn man bei dem was der TO
vorhat möglichst wenig selber machen möchte, nimmt man sich von dort
noch einen SPI-Core und bastelt einen Paket-FIFO dazwischen.
Ja, die kosten von Firmen lizenziert ein paar tausend Euro, aber
Hexenwerk ist das bei weitem nicht. Im Prinzip (mindestens) eine RX und
eine TX-FSM, die um Nutzdaten aus einem Paket-FIFO jeweils noch ein paar
mehr Daten drumrumbaut (TX) oder wegnimmt (RX). Mögliche Stolpersteine
sind Taktdomänensynchronisierung, FCS und Flusskontrolle, evtl. noch
variable IFG.
Was man leicht vergisst, ist eher noch die PCS, also 8b10b-Codierung und
Synchronisierung der Datenströme, Autonegotiation. In manchen Tools wird
die gleich als Bestandteil des MAC mit instanziiert. Im Xilinx
1G/10G/25G ETH Switching Subsystem gibt es eine PCS-Variante auch von
Xilinx kostenfrei.