Friday, August 21, 2009

Microchip ENC424J600 - Preliminary Tests

Finally the printed circuit boards and all parts arrived and I've got some time to put together the first batch of nic424 boars featuring the new Microchip ENC424J600 Ethernet Controller.

Based on the firmware code distributed with the latest (v5.10) Microchip TCP/IP Stack I customized a MAC driver module specifically for the nic424 and started to run some preliminary tests.

To my surprise I didn't have any problems getting the board up and running on the first try.

To test the Ethernet controller I mounted the nic424 on a solderless prototype breadboard alongside a ProtoPIC28 board populated with a Microchip PIC24HJ128GP202 Microcontroller.

For this first set of tests I'm using the SPI interface with a clock speed of 10MHz and the PIC24HJ running at 80MHz clock speed.

I compiled the TCP/IP Stack with the drivers for the nic424 and only included the ICMP Server module and the TCP Performance Test module.

The first test consisted in sending ICMP ECHO Requests (pings) packets to the PIC24HJ + nic424 from a dual core Pentium machine with Linux running at 2.4GHz, and connecting the Linux server and the nic424 through a Cisco Catalyst C2950 Ethernet Switch.

The Cisco C2950 didn't have any problems negotiating 100Mbps and Full Duplex with the ENC424J600 so I started playing with the payload sizes of the ping packets, going from 32 bytes up to 512 bytes. For each test the Linux server sent over a million packets in flood ping mode, packet loss with all payload sizes was 0% and the TCP/IP Stack didn't hang or reset during the tests.

To have a comparative test, I replaced the nic424 with a nic28 using the Microchip ENC28J60 Ethernet Controller and ran the same tests.

The graph below shows the average Round Trip Time results of the tests with both Ethernet controllers, clearly the ENC424J600 even at the same SPI clock performs faster than the ENC28J60.
After running the ICMP tests, I ran the TCP Performance Test with both controllers. The configuration using the ENC28J60 reported 97,100 Bytes/sec when the configuration using the ENC424J600 reported 134,100 Bytes/sec.

I'm planning to run some additional tests to get some metrics for packets per second and bytes per second taken from the five minute averages computed by the Cisco switch.

I'll mount a nic424 on a PICtail+ prototype board and do some testing with different processors on a Microchip Explorer 16 development board, and also try different parallel interface modes and see how well the crypto engines included in the chip perform.

So far things look very good, average current for the ENC424J600 was consistent with the values shown in the datasheet, around 200mA and the chip does not get too hot.

Don't have a firm date yet but I'll soon make the nic424 available for purchase through the LJCV Electronics site.



DarioG said...

Thanks Jorge :)
good to know for the future..

Fede Martin said...

Hello, I´m involved in a similar project. I wonder if Microchip TCP/IP stack does include drivers for the ENC24J600. Does it?
Thnak you very much.

pete said...

Hi Fede,
yes the Microchip TCP/IP Stack supports the ENC424J600 and ENC624J600 using SPI and various parallel modes.
You can find the stack as part of the Microchip Application Library at

Fede Martin said...

Thank you very much for you answer Jorge. Unfortunately I have two more :) I´m currently in my project´s specification phase. I´m thinking on trying PIC24FJ64GA004 interfacing with ENC424J600. This is a 16Mips MCU. I noticed that you have chosen a 40 MIPS micro for your purpose. Since I haven´t tried TCP/IP stack yet, I would really appreciate if you can tell me if I could suffer from severe performance penalty using this 16MIPS MCU.
Another design issue is web page external storage in a serial flash SPI memory. I wonder if I can share the SPI bus with ENC624J600 or my second SPI interface (wich will be listening to a MRF24J40MA module). That´s because my app. will be using all available MCU I/Os including the 2d SPI hw interface. I think this memory will be accesed JUST ONCE from web browser, but I want to make sure because my app. would probably be quite compute-intensive.
It can be very difficult to cope with too many read accesses to this memory from the web browser.
I was thinking also in using a 1Mbit I2C eeprom as an alternative although its lower data-rate.
Thank you vey much in advance. Regards.

tatarandrei said...

I'm currently working on a project using the enc424j600.

So I've done the board, initialized enc424j600, the LEDs are showing link status properly, and I can read the state of the link with the mcu (no TCP/IP stack yet), but the chip gets pretty hot. Is it normal?

I checked and double-checked all connections and everything seems to be fine.

P.S. I'm using AMPHENOL - RJMG163118101NR as jack + magnetics.

Thank you very much!