Jag behövde ett (
MII) nätverksinterface till en FPGA så jag har letat efter lämplig utrustning som innehåller ett PHY som är dokumenterat och går att löda på. LSI 80225 som jag använder i denna konstruktion är relativt lätt att jobba med då den har en pin pitch på 1.27 mm.
Problem #1 är att nätverkskortet redan har en krets för att styra ethernet PHY kretsen dvs MAC kresten (PHY<->PCI). Så den måste lödas bort.
Problem #2 är att ordna strömförsörjning. Kan vara klurigt eftersom befintlig konstruktion är tänkt att få strömförsörjningen via PCI bussen (eller 9V adapter för ADSL modem). Jag har redan bränt ett kretskort genom att mata spänningen direkt på utsidan. Så lärdomen är att vara väldigt försiktig med sådant. Men PCI kortet är ganska enkelt i det avseendet. Ingen krets som bränner sig till kortis om man matar direkt till kretsarnas Vcc + GND.
Problem #3 är att verifiera att kretsen överlevt modifieringarna. Tydligen är det så att alla PHY jag jobbat med som standard skickar länkpuls till switch/annat nätkort. Så om allt är kopplat korrekt får man "länk" vid spänningspåslag efter ca 2s. Och kan på så sätt veta att åtminstone den "analoga" delen är korrekt liksom spänningsmatning.
När man kopplat upp allt och vet att det fungerar så är det dags att löda på signalledningarna, därefter får man verifiera funktionen igen. Som det är nu funkar PHY kretsen om man inte slår på FPGAn. Men det beror antagligen på att den skickar ut signaler mha pullup/pulldown. Och skapar lite kaos

Lite omkopplingar och ny konfigurationsfil lär lösa det problemet (bl.a. verkar INIT_B från FPGAn hamnat på en av PHY utgångarna..).
Dessa signaler är dom som är intressanta från PHY kretsen (absolut minimum):
TX_CLK -> (positive flank)
TX_EN <- Send
TXD[3:0] <- Data
RX_CLK -> (negative flank)
RX_DV -> Receive
RXD[3:0] -> Data
Signaler som man förmodligen kan skippa i initialt:
RX_ER -> Error
TX_ER <- Error
MDC <- MI Clock (konfiguration, default är ok)
MDIO <-> Data I/O (konfiguration, default är ok)
CRS (för 10M)
COL (för 10M)
För 10M ethernet finns
AUI som är den äldre versionen av MII (kan man säga).
Tanken är att skapa ett program i verilog som klockat avTX_CLK räknar upp en räknare som i sin tur sätter TX_EN=1, och sätter TXD[3:0] = SDF, MAC destination, MAC källa, "data"..etc..
i turordning. Det borde ge basal funktion.
Tcpdump (unix kommando) bör plocka upp packet som har fel CRC. Senare kan man väl fixa till UDP med korrekta MAC adresser och CRC32 så att man inte behöver vara 'root'.