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:
The schematic for the ISA bus connections
are available in either PDF format or Cadsoft's
Eagle
format.
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...