Close
0%
0%

SBC-85 1Mbit Memory Expansion Board

Offering any Combination of up to 128KB of ROM, up to 32KB RAM

Similar projects worth following
Additional memory is always useful, so one of the next projects is a memory expansion board. It has been designed and a prototype laid out to be submitted with the next shop order. Here is a heads-up of its features:

The board has four memory sockets and will accept any combination of 2732, 2764, 27128, or 27256 EPROMs or 6264 RAM chips. This gives a fully populated up to 128KB of ROM, or 32KB RAM, or anywhere in between. For each of the four banks, the type of chip is selected by a combination of three jumpers to define pins 1, 26, and 27 of the socket to match the pinout of the device.

The memory device flexibility results in a memory mapping problem of how to decode the memory space when the four positions each can have different chips and different memory space lengths. Having discrete logic and jumpers for the memory spaces would be extremely difficult and switching to programmable gates is a non-starter for most users.

To solve the memory mapping problem and adapt to different chips of different size, each socket is given its own memory reservation option via jumpers.  This does take a little more user understanding, but the SBC-85 seems to have brilliant users so I am not too worried about that.  In practice, the user will set the base address being careful, as with any memory board, to make sure that none of the address selections overlap.  To accommodate the various address block length for each chip, rather than just a “match address =0” or “match address =1” the user has three choices for the jumpers on address lines A15 to A12:  address = 0,  address = 1,  or address = don’t care.

For example– If the user wants to install a 2732 at address 0x8000.  Since this is a 2732 which is 4KB, the memory block will go from 0x8000 to 0x8FFF so the user will select A15=1, A14=0, A13=0, A12=0.  If the next chip is also a 2732 and the user wants contiguous memory the next 2732 will have the jumpers set to 0x9000, i.e., A15=1, A14=0, A13=0, A12=1 and so forth.  This example is the simplest because the EPROM takes all the space between the address options, i.e., setting A15-A12 alone claims the necessary address space.

However, when a larger chip is used, the least of the four address bits needs to be set to “don’t care” in order to claim sufficient address space.  If the user wants to use a pair of 16kB 27128s, just looking at the number of address lines on the chip (A0->A13 = 14) tells us we can only use A15 and A14 to select the chip because A13 and A12 are part of the chip’s memory block.  So for the first 27128 at 0x8000 the jumpers will be set to A15=1, A14=0, A13=don’t care, A12=don’t care.  The next 27128 up would be set for 0xC000 A15=1, A14=1, A13 & A12 = Don’t Care again.  While relatively simple the trade off is, of course, that the larger chips must start on an even boundary of their block size.

This addressing scheme essentially breaks the memory board down into four separately located memory blocks of the appropriate size for the selected chip.  In the end, with a little bit of planning one or more of these boards can be a contiguous block, so no need to reassemble or recompile around memory gaps.

Finally, since the board obviously exceeds the addressable address space, there are three additional selection bits PA0, PA1, and PA2 which can be defined.  The board has a 3-bit I/O port select register to set these three page address bits to turn the selected devices on or off.  For example, if the user has selected 000 for these three using the jumpers, then that device is only enabled when the user has cleared those three bits in the board’s select register via an OUT instruction.  Using the ‘Don’t Care” bits, allows any of the four memory devices to span more than one selection, i.e., a board with PA2=1, PA1=1 and PA0=”Don’t Care” will be enabled when either 110 or 111 is sent to the board select register.  Setting all the jumpers to “Don’t Care” essentially removes this feature so there is one less thing to worry about.

  • V1.0a Access LEDs are Much Nicer, Available on Tindie

    Craig07/29/2020 at 22:21 0 comments

    I have populated the newer v1.0a board which has latched strobes on the access LEDs.  It really depends on the LED but with a 100 ohm current limiting resistor general sequential access provides a nice flicker for the LED and full on fill or copy of the memory block provides a full-on glowing LED status.  I am sure it could be further improved but all-in-all the LEDs are just useful enough to bother populating but not so useful enough to that I want more of them.  The selection issues that were there when lots of 'don't cares' were in the address selection mask are now gone and the LED only flickers when that specific address block is being accessed.

    I have toyed with the idea of adding a monostable that will keep the LED on for the full duration of the memory access, but i kind of like the varying levels of 'flickerness' that gives and indication as to the frequency of access.

    I am calling the memory board at a stopping point so have uploaded the user's manual, BOM, and build files to the sbc-85 project website.

  • v1.0 Undergoing Testing and is Available on Tindie

    Craig07/04/2020 at 22:35 0 comments

    Version 1.0 of the memory expansion board has been built and all preliminary tests indicate it is good to go.  As seen in the photographs, the first test configuration has a 2732 EPROM, two 2764 EPROMs, and a 6264 RAM.  For more complete testing, I need to do more mixing and matching and use all versions of EPROMs up to the 27256 in various combinations.  In this test I have the two 2764s mapped at the same address space in different pages and that works well.  Some nice features on this board even if I do say so myself.  The addressing seems confusing at first but I think it is straight forward once explained.  I guess we will see when I start to get feedback on the [so far non-existent] documentation.

    As a first step in the documentation, I did start to put together the cheat sheet for the board to help keep track of how it is configured.

  • v1.0 Undergoing Testing and is Available on Tindie

    Craig07/04/2020 at 21:51 0 comments

    Version 1.0 of the memory expansion board has been built and all preliminary tests indicate it is good to go.  As seen in the photographs, the first test configuration has a 2732 EPROM, two 2764 EPROMs, and a 6264 RAM.  For more complete testing, I need to do more mixing and matching and use all versions of EPROMs up to the 27256 in various combinations.  In this test I have the two 2764s mapped at the same address space in different pages and that works well.  Some nice features on this board even if I do say so myself.  The addressing seems confusing at first but I think it is straight forward once explained.  I guess we will see when I start to get feedback on the [so far non-existent] documentation.

    As a first step in the documentation, I did start to put together the cheat sheet for the board to help keep track of how it is configured.

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates