Comms modules

AXC-002 — LAN8720A RMII Ethernet PHY dual-PMOD module

Catalog #2 in the AruviX comms line, level L5 (RMII, 50 MHz). The fabric flagship of the W5500/LAN8720 paired lesson: a bare 10/100 PHY, so the MAC, ARP, ICMP, and UDP live in the FPGA — then a real network stack in AruviOS. Same Hanrun HR911105A MagJack as AXC-001 to amortize RJ45 sourcing.

Level L5 ERC clean No fab package 35 components
3D render of the AXC-002 PCB
Rendered from the PCB layout. No physical board has been manufactured.

Circuit review & bench-test guide →

Components#

Every placed component, with the reason it is on the board. Extracted directly from the schematic, so this cannot drift from the design.

RefValueWhat it does on this boardPart numberFootprint
C1 100nF 16V X7R TX center-tap decoupling (place at J2 TCT) GRM188R71C104KA01D
Murata
C_0603_1608Metric
C2 100nF 16V X7R RX center-tap decoupling (place at J2 RCT) GRM188R71C104KA01D
Murata
C_0603_1608Metric
C3 100nF 16V X7R VDDIO decoupling GRM188R71C104KA01D
Murata
C_0603_1608Metric
C4 1uF 10V X7R VDDCR (internal 1.2V regulator) 1uF per datasheet GRM188R71A105KA61D
Murata
C_0603_1608Metric
C5 470pF 50V C0G VDDCR 470pF per datasheet GRM1885C1H471JA01D
Murata
C_0603_1608Metric
C6 100nF 16V X7R VDD1A decoupling GRM188R71C104KA01D
Murata
C_0603_1608Metric
C7 100nF 16V X7R VDD2A decoupling GRM188R71C104KA01D
Murata
C_0603_1608Metric
C8 10uF 10V X5R Digital rail bulk GRM21BR61A106KE19L
Murata
C_0805_2012Metric
C9 10uF 10V X5R Analog rail bulk GRM21BR61A106KE19L
Murata
C_0805_2012Metric
FB1 120R@100MHz 3V3 -> 3V3A analog-rail isolation bead BLM18AG121SN1D
Murata
L_0603_1608Metric
J1 PMOD A: RMII DATA PMOD peripheral plug (Digilent spec 1.2) not selected
generic
PinHeader_2x06_P2.54mm_Horizontal
J2 HR911105A RJ45 MagJack, integrated 10/100 magnetics + LEDs (LEDs unused here) HR911105A
Hanrun
Datasheet ↗
RJ45_Hanrun_HR911105A_Horizontal
J3 PMOD B: MGMT/CLK PMOD peripheral plug (Digilent spec 1.2) not selected
generic
PinHeader_2x06_P2.54mm_Horizontal
JP1 REF_CLK SOURCE 1-2 (default): host 50 MHz from J3.2 -> XTAL1/CLKIN; 2-3: on-board oscillator SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm
R1 49.9R 1% TX+ 49.9R 1% line pull-up (current-mode MDI termination) RC0603FR-0749R9L
Yageo
Datasheet ↗
R_0603_1608Metric
R2 49.9R 1% TX- 49.9R 1% line pull-up RC0603FR-0749R9L
Yageo
Datasheet ↗
R_0603_1608Metric
R3 49.9R 1% RX+ 49.9R 1% line pull-up RC0603FR-0749R9L
Yageo
Datasheet ↗
R_0603_1608Metric
R4 49.9R 1% RX- 49.9R 1% line pull-up RC0603FR-0749R9L
Yageo
Datasheet ↗
R_0603_1608Metric
R5 12.1k 1% RBIAS: exact 12.1k 1% to GND per datasheet RC0603FR-0712K1L
Yageo
Datasheet ↗
R_0603_1608Metric
R6 10k MODE0 strap high (with R7/R8: MODE=111, all-capable autoneg) RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R7 10k MODE1 strap high RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R8 10k MODE2 strap high RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R9 10k PHYAD0 strap low: PHY address 0 RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R10 10k nINTSEL strap high: pin 14 is ~INT (not REFCLKO) RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R11 10k REGOFF strap low: internal 1.2V regulator enabled RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R12 1.5k MDIO bus pull-up (1.5k per LAN8720A datasheet) RC0603FR-071K5L
Yageo
Datasheet ↗
R_0603_1608Metric
R13 10k ~RST idle pull-up RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R14 100R Series protection on the PHY-driven RXD0 line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R15 100R Series protection on the PHY-driven RXD1 line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R16 100R Series protection on the PHY-driven CRS_DV line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R17 100R Series protection on the PHY-driven RXER line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R18 100R Series protection on the PHY-driven ~INT line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R19 100R DNP Oscillator-to-host feed for JP1 2-3 mode; fit together with U2 RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
U1 LAN8720A 10/100 Ethernet PHY, RMII, VQFN-24 LAN8720A-CP-TR
Microchip
Datasheet ↗
VQFN-24-1EP_4x4mm_P0.5mm_EP2.5x2.5mm_ThermalVias
U2 50MHz OSC (DNP) DNP 50 MHz 3.3 V CMOS oscillator, 3.2x2.5 mm; fit only for JP1 2-3 mode not selected
Abracon
Datasheet ↗
Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm

Signals#

Net labels used in the schematic, which are also the names the HDL top level should use.

3V3 3V3A CRS_DV GND INT_N MDC MDIO NINTSEL OSC_OUT PHY_CLKIN PHY_CRS_DV PHY_INT_N PHY_RXD0 PHY_RXD1 PHY_RXER RBIAS REF_CLK REGOFF RST_N RXD0 RXD1 RXN RXP RX_ER TXD0 TXD1 TXN TXP TX_EN VDDCR

Production status#

Schematic ERC0 violations
PCB layoutcomplete
DRCnot run
Fab packagenot exported
Fabricatedno — design stage only

Source: boards/comms-modules/axc-002-ethernet-phy


Catalog #2 in the AruviX comms line (../README.md), level L5 (RMII, 50 MHz). The fabric flagship of the W5500/LAN8720 paired lesson: a bare 10/100 PHY, so the MAC, ARP, ICMP, and UDP live in the FPGA — then a real network stack in AruviOS. Same Hanrun HR911105A MagJack as AXC-001 to amortize RJ45 sourcing.

Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.

What it teaches#

rmii_mac (tx/rx + CRC32) in fabric, MDIO management frames, clocking discipline at 50 MHz, and the fabric-ping graduation exercise (answer ICMP echo entirely in Verilog). Uses the same upper-layer interfaces as AXC-001 so students can swap controllers.

Design#

J1 (PMOD A)123456789101112
NetTXD0TXD1TX_ENRXD0GND3V3RXD1CRS_DVRX_ERMDCGND3V3
J3 (PMOD B)1234567–101112
NetMDIOREF_CLK~INT~RSTGND3V3NCGND3V3

Regenerate#

python3 generate_design.py

Remaining for release#