
Writing about my Beeb yesterday got me thinking about a project I consider every now and then and that is adding an ethernet adapter to my Beeb.
When I first thought about this I was working on a driver for a small embedded ethernet chip that was destined for a set top box. The chip was pretty simple and could be used on an 8 or 16 bit data bus. It could have been interfaced to my Beeb relatively easily but would have required me to write a whole TCP/IP stack for the machine. Something I could have done but not a quick task. Also you'd need memory buffers to build the packets in which, in a memory starved machine, are a costly overhead. Work got busier and I had more important things to do with my free time so I put the idea to bed.
I started thinking about the project again after reading about a chip that communicated using SPI. It was intended to be used with micro-controllers so seemed more suited to my needs. Except there were two issues. Firstly a BBC Micro doesn't have SPI. In theory the 6522 VIA, of which there are two in the Beeb, can do SPI like IO. Unfortunately there's actually a bug in the chip that means it doesn't work properly. So either I would have to bit bang or I would have to use a second chip, probably a micro-controller, to communicate with the ethernet chip and the BBC Micro would interface with the micro-controller. Again other things became a priority and it got forgotten about.
So today I started thinking about it again. As more and more devices have become internet enabled some neat chips have been released. These chips have built in micro-controllers which have a TCP/IP stack built in. They do all the hard work. So I started Googling and I found this article on the W5100 which seems to be ideal. Specifically the W5100 is a fully hardwired TCP/IP stack with support for TCP, UDP, ICMP, IPv4 ARP, IGMP, PPPoE protocols. Features include 10BaseT/100BaseTX Ethernet MAC/PHY embedded support and ADSL connection (with PPPoE Protocol with PAP/CHAP Authentication mode). You can interface with it using a parallel data bus and it basically provides a socket level interface at the software level. Set up the MAC address, IP address and gateway address and you can ping the chip with no further work from the host machine.

The W5100 comes in quite a small package. Circuit board technology has come a long way since I last built anything complicated. To solder most modern packages is beyond the of the average amateur electronics engineer due pin density or the requirement for solder ovens or flow technologies. This could have put a damper on this project except I found the WIZ810MJ module. Its basically the W5100 chip on a pre built module. It seems perfect so I'm getting one.
I will need to provide a 3.3v supply but this can be relatively simply provided with a small regulator chip from the 5v supply of the Beeb. The IO on the module is 5v tolerant so it can be interfaced with directly. The module has an 8 bit data bus and address lines A0-A14, i.e. 32KB of address space. The Beeb supports Sideways ROMs, basically paged ROMs which occupy the same address space. These are 16KB in size so I intend utilizing this together with a latch to bank the address space in to two banks. The remaining IO lines can be supported relatively easily.
So this is my first mad project. Watch this space!
Originally published at Spice World!. |