Hardware Notes

Whilst Liquorice is really all about software, in an embedded world there's no such thing as a standard hardware platform. The code has been designed to try and make it as easy as possible to use different hardware, but it's always better to have reference examples! This section of the web site will host ideas and references to hardware designs that may help make things simpler.

Support for ISA Ethernet cards

One of the original features planned for Liquorice was to develop a fairly sophisticated level of network support. In order to try and get things off the ground it seemed like a good idea to try and use some off-the-shelf hardware rather than have to design and build PCBs. The guys who designed the PicoWeb web server had used an off-the-shelf ISA Ethernet card and so this seemed like a good bet for some standard network hardware.

Unlike the PicoWeb design I decided to try and memory-map the ISA card rather than using I/O ports as this should yield a higher level of performance, whilst also leaving the I/O ports available for other uses. Also unlike the PicoWeb design I assumed that the internal RAM in the AVR would not be enough to support general network use and that I'd need an external SRAM anyway, so I'd have the address latch for free.

The original development for Liquorice was done with a Kanda STK300 evaluation board for the ATMega103, so this seemed like an ideal platform to use for the network development.

After some discussion on the AVR-GCC mailing list it looked like other designers would still like to I/O map things, so the driver software within Liquorice has been modified to make it easy to accommodate either strategy.

The following Ethernet cards are currently supported:

Some initial work has also been done for the Intel EtherExpress/Pro 10+; please let me know if you would like to use it.

The schematic for the ISA bus connections are available in either PDF format or Cadsoft's Eagle format.

STK300 Notes

The STK300 is a very good board, and compared with other such eval units is also very cost effective. Unfortunately it does have a couple of drawbacks - I've tried to identify ways around these below:

The STK300 has a rather "cheap" way of decoding the SRAM and LCD memory mapping. Unfortunately this means that the LCD sits at 0x8000 and takes up 32k of the 64k space. It's not too difficult to make this a lot more sensible and move it to 0xc000, thus mapping 16k by ORing the enable signal on the LCD header with A14 (the RS output on the LCD header) and by connecting the A0 from the memory expansion header to RS on the LCD. There are better strategies (using a 74HC138 springs to mind), however this works and is easy to do.

The 74HC573 latch is somewhat critical, especially if "wiring" out to the ISA connector rather than having everything nicely on a PCB. Originally I had a 74F573 which appeared to work fine with just the SRAM, however as soon as I tried to connect an Ethernet card everything went slightly off the rails. The problem turns out to be that the STK300 can be susceptible to ground bounce (when switching all of its outputs simulaneously the lead inductance of the ground pin is sufficient that the chip's local ground reference bounces, making the enable signal look like it has deasserted and then reasserted a few ns later). If anyone's that interested then mail me (I did a lot of research into ground bounce in 1989 and know the problem in painful detail), but one work around for this is to put a 100pf capacitor between ground and the enable input of the '573. In general this will not be a problem to anyone working with SMT rather than through-hole components - the STK300 is through hole however...

Back to the home page...

Last updated: 24th August 2000 - Dave Hudson