Description |
Pin Assignments |
Programming |
RCM6700 Compatibility |
Design |
[19-AUG-25] The Embedded Ethernet Module (EEM, A3053) is an Ethernet module on an Mini PCI Express (mPCIE) board. It provides and Ethernet interface, a TCP/IP stack, and thirty-five programmable input-outputs. The Ethernet interface is wired 10Base-T and 100Base-T. There is no RJ-45 socket mounted on the mPCIE card. The Ethernet connections run off the board to an external RJ-45 connector. The A3053A is currently in development, with an expected release data of January 2026. We will offer the A3053A for sale at that time. All its software will be open-source, to facilitate adoption by other users.
The heart of the A3053 is a PIC32MZ Embedded Connectivity with Floating Point Unit Microcontroller. The PIC32MZ variant deployed on the A3053A is the PIC32MZ2048EFH100, which comes in a TQFP-100 package and is equipped with 2 MByte of non-volatile program memory and 512 KByte of volatile data memory. The PIC32MZ runs at 200 MHz and uses the MIPS32 M4K instruction set. The TQFP-100 version provides fifty-one reprogrammable input-output pins, including forty 12-bit analog-to-digital converter (ADC) inputs, and pulse width modulated (PWM) outputs to mimic digital to analog converters (DACs). To develop code for the A3053 and program the microcontroller, we use MPLAB integrated development environment and the Harmony V3 TCP/IP stack. The microcontroller provides its own media access controller (MAC), but the Ethernet physical layer is external to the microcontroller, in the form of a LAN8720A, which we mount on the A3053 board also. A 25-MHz crystal connected to the LAN8720A provides timing for the entire module, and the remaining parts on the board are termination resistors and decoupling capacitors only.
Our first application of the A3053A is to act as a replacement for the discontinued RCM6700, which have been using for the past fifteen years in circuits such as the LWDAQ Driver (A2071E), Animal Location Tracker (ALT), Telemetry Control Box (TCB), and Power Over Ethernet Function Generator (A3052). Our hope is that other users of the RCM6700 will be able to program the A3053A to act as a drop-in replacement for their own RCM6700-based instruments, requiring no modification of their motherboard. In the future, we hope to make use of the many features offered by the PIC32MZ that were not offered by the RCM6700, such as its ADC inputs and PWM outputs.
[13-AUG-25] The table below gives the connections between the A3053A circuit and the mPCIe connector. In the first columns we have the PIC32MZ (U1) or LAN8720A (U2) pin and name for the signal. In the second column is the RCM6700 name for the same signal, which we include for the benefit of those who are planning to replace an RCM6700 with an A3053A. In the third column is the mPCIe (P1) card edge contact to which the signal connects.
A3053A Signal | RCM6700 Signal | mPCIe Contact |
---|---|---|
0V | GND | P1-1 |
+3V3 | +3.3 V | P1-2 |
U2-21, TXP | Tx+ | P1-3 |
U2-23, RXP | Rx+ | P1-4 |
U2-20, TXN | Tx− | P1-5 |
U2-22, RXN | Rx− | P1-6 |
U2-3, LINK | LNK | P1-7 |
ECOM | ECOM | P1-8 |
U1-97, RG13 | PE0 | P1-9 |
U1-2, RA5 | PE1 | P1-10 |
U1-10, RG6 | PE2 | P1-11 |
U1-82, RD5 | PE3 | P1-12 |
U1-11, RG7 | PE5 | P1-13 |
U1-81, RD4 | PE6 | P1-14 |
U1-18, RE8 | PE7 | P1-15 |
U1-15, /MCLR | /RESET_IN | P1-16 |
U1-20, RB5 | PD0 | P1-17 |
U1-21, RB4 | PD1/IA6 | P1-18 |
U1-22, RB3 | PD2 | P1-19 |
U1-23, RB2 | PD3/IA7 | P1-20 |
U1-26, RB6 | PC0 | P1-21 |
U1-27, RB7 | PC1 | P1-22 |
U1-32, RB8 | PC2 | P1-23 |
U1-33, RB9 | PC3 | P1-24 |
U1-34, RB10 | PC4 | P1-25 |
U1-43, RB14 | PC5 | P1-26 |
U1-44, RB15 | PB0 | P1-27 |
U1-15, /MCLR | /RESET | P1-28 |
U1-6, RC1 | IA0 | P1-29 |
U1-7, RC2 | IA1 | P1-30 |
U1-8, RC3 | IA2 | P1-31 |
U1-9, RC4 | IA3 | P1-32 |
U1-91, RE0 | IA4 | P1-33 |
U1-94, RE1 | IA5 | P1-34 |
U1-72, SOSCI/RC13 | PA0 | P1-35 |
U1-73, SOSCO/RC14 | PA1 | P1-36 |
U1-98, RE2 | PA2 | P1-37 |
U1-99, RE3 | PA3 | P1-38 |
U1-100, RE4 | PA4 | P1-39 |
U1-3, RE5 | PA5 | P1-40 |
U1-4, RE6 | PA6 | P1-41 |
U1-5, RE7 | PA7 | P1-42 |
U1-28, RA9 | /IORD | P1-43 |
U1-24, PGEC1/RB1 | VBAT_EXT | P1-44 |
U1-19, RE9 | /IOWR | P1-45 |
U1-38, TCK/RA1 | SCLKA/IA7 | P1-46 |
U1-25, PGED1/RB0 | STATUS | P1-47 |
U1-17, TMS/RA0 | TXA/PC6 | P1-48 |
U1-39, TDI/RF13 | SMODE | P1-49 |
U1-40, TDO/RF12 | RXA/PC7 | P1-50 |
0V | GND | P1-51 |
+3V3 | +3.3 V | P1-52 |
Most of the PIC32MZ connections we name after their shortest and simplest signal name as taken from Table 3 of the PIC32MZ manual, "PIN NAMES FOR 100-PIN TQFP DEVICES". In some cases we give longer names to draw attention to a particular function the pin might be used for. The SOSCI signal on P1-35, for example, is an input for a 32.768 kHz real-time clock, while SOSCO is an output for the PIC32MZ's built-in 32-kHz low-speed clock. The /MCLR signal must be a global negative-true reset signal provided by the motherboard. The signal must be asserted for 100 ms after power-up, and it must be debounced by a motherboard reset monitor if there is a motherboard reset switch. We connect this signal to P1-16, where it drives the PIC32MZ's /MCLR input. For compatibility with the RCM6700, we have this same signal being directed to P1-28, which is the RCM6700 /RESET output. The P1-16 signal is the RCM6700's /RESET_IN connection, which is why we chose it to bring /MCLR to the PIC32MZ. The Ethernet connections on the mPCIe card edge are TXP, TXN, RXP, RXN, and ECOM. The ECOM signal is the Ethernet common-mode voltage, which is provided by the A3053 so as to suit its own Ethernet physical layer. The voltage provided by the A3053A is 3.3 V. We note that the ECOM provided by the RCM6700 was 2.5 V.
[13-AUG-25] We program the A3053's PIC32MZ microcontroller using a connector on the mother board. For mother boards that were designed for the RCM6700 mini-core module, see our chapter on RCM6700 Compatibility to see how we can use the existing RCM6700 programming plug to program the A3053. But if we have a mother-board designed for the A3053, and intended only for the A3053, we can provide programming connectors that are immediately compatible with the standard Microchip programming cables. We can program the PIC32MZ using either an ICSP or a JTAG programming interface. The ICSP interface is slower, but it is more capable of restoring the PIC32MZ after a disastrous mis-configuration. The JTAG interface is faster and allows us to set breakpoints in our code for debugging. It permits us to read register values directly from the PIC32MZ. But the JTAG interface can be disabled after a disastrous mis-configuration, so we recommend loading both connectors onto any A3053 mother board.
The ICSP programming interface uses two dedicated signals that pass through the mPCIe connector to the PIC32MZ. It also uses a global /RESET line, which is called /MCLR in the ICSP signal naming. This line must be an open-drain signal that the ICSP programming cable can drive LO to cause a global reset, and then release to bring the system out of reset. The motherboard should provide a reset monitor that asserts /RESET on power-up for 100 ms or so, and also debounces /RESET when it is asserted with a push-button switch, but otherwise does not delay the release of /RESET more than 10 ms after all other sources of /RESET have released the line. Somewhere on the mother board, the /RESET needs to be pulled up by a resistor. The table below gives the pinout of the ICSP programming connector, which is a 1×6 0.1" rectangular header.
Pin | Signal | Notes |
---|---|---|
1 | /MCLR | Microcontroller Clear, Negative True |
2 | VDD | Positive Power Supply, +3.3 V |
3 | GND | Negative Power Supply, 0.0 V |
4 | PGD | Programming Data |
5 | PGC | Programming Clock |
6 | NC | No Connection |
There are four JTAG signals on the mPCIe connector: TCK, TMS, TDI, and TDO. The Microchip JTAG programming cables expect a 2×5 0.1" rectangular plug with the pinout given in the table below. Note that the RCM6700 programming cables expect a 2×5 0.05" rectangular plug, so there is no way to mix up the two connections between one motherboard and another.
JTAG Signal | mPCIe Pin | 2×5 0.1" Plug |
---|---|---|
VDD, Target Power | +3V3 | 1 |
GND, Circuit 0V | 0V | 2 |
TCK, JTAG Clock | 46 | 3 |
GND, Circuit 0V | 0V | 4 |
TDI, Data In | 49 | 5 |
GND, Circuit 0V | 0V | 6 |
TDO, Data Out | 50 | 7 |
GND, Circuit 0V | 0V | 8 |
TMS, Mode Select | 48 | 9 |
GND, Circuit 0V | 0V | 10 |
[18-AUG-25] We designed the A3053A to act as a drop-in replacement for the RCM6700 in our own instruments. See the Pin Assignments chapter of this manual for a table of RCM6700 and A3053A connections to the mPCIe board edge contacts. The only functions of the RCM6700 that we are certain to replicated with the A3053A are the functions that our own instruments make use of. But we have made an effort to support the replication of all other RCM6700 functions by connecting PIC32MZ general-purpose input-outputs (GPIOs) to all pins for which the RCM6700 provided its own GPIOs. It may be that there exists an RCM6700 GPIO function that its PIC32MZ GPIO replacement cannot replicate, but it is our hope that the flexible input-output routing provided by the PIC32MZ will support all RCM6700 functions deployed by any RCM6700 user, thus permitting them to continue use of their existing motherboard by programming the A3053A to behave exactly as their original RCM6700 modules.
The A3053A does not attempt to duplicate the RCM6700 battery backup power circuit. According to the RCM6700 data sheet, the module consumes roughly 120 μA in it standby state. The PIC32MZ consumes up to 800 μA in its standby state. The RCM6700 provides an external battery input that would allow the module to retain memory and run its watchdog timer even when the motherboard lost power. The A3053A uses the external battery contact on the mPCIe connector for one of the JTAG programming connections, and makes no effort to provide a separate battery power input.
If our motherboard provides an RCM6700 programming plug, we can use this plug as an ICSP programming port for the A3053A with the help of an adaptor cable. The RCM6700 programming plug is a 2×5 0.05" rectangular plug such as the GRPB052VWQS-RC while the ICSP programming cables expect a 0.1" 1×6 rectangular plug such as the PRPC006SACN-RC. Starting with a LPPB052CFFN-RC 2×5 receptacle, we run wires to a 1×6 plug according to the table below. We plug our ICSP six-pin programming cable into our adaptor and plug our adaptor into the RCM6700 programming plug. We can now program the A3053A with the ICSP protocol.
Signal | 2×5 0.05" Socket | 1×6 0.1" Plug |
---|---|---|
PGD | 8 | 4 |
PGC | 7 | 5 |
MCLR | 5 | 1 |
VDD | 4 | 2 |
GND | 2 | 3 |
The RCM6700 provides a 2.5-V voltage on mPCIe pin 8 that is intended to act as the common-mode voltage for the Ethernet signal termination resistors beside the RJ-45 connector on the motherboard. The A3053A produces 3.3 V on the same pin for the same purpose. The only situation in which this increase in common-mode voltage can cause a problem is if the motherboard makes use of the original 2.5-V voltage provided by the RCM6700. The A3053A does not have a reset signal generator. It requires that the motherboard provide a reset signal /MCLR on mPCIe pin 16, which is the RCM6700's /RESET_IN pin. The A3053A does not generate its own /RESET output. It connects /RESET_IN directly to the RCM6700 /RESET output on mPCIe pin 28. The motherboard must provide its own reset monitor, such as an MCP130, to detect power-up and also to debounce a motherboard reset switch, and this reset signal must be applied to /RESET_IN.
[04-AUG-25] For design files and a chronological account of the development of the A3053, see its Design and Development page.