NeXT DSP Memory Expansion Module

Started by Nitro, June 04, 2007, 02:39:39 PM

Previous topic - Next topic

Nitro



This is a community work log to design and build a memory expansion module for the Motorola 56001 DSP in original NeXT Black Hardware.  It's a collective effort by the NeXT community to reverse engineer the 96kb NeXT memory expansion SIMM (N7013) as well as the 576kb SIMM manufactured by San Francisco State University.  Feel free to join in on the discussion and help us build a working memory module.  We are in need of high resolution pictures of the original modules, so if you have one of them please take some pictures and e-mail them to:  admin <at> nextcomputers <dot> org.  We also need documentation and/or schematics of the original modules as well as any documents related to the Motorola 56001 DSP external memory requirements.  Any and all help in this endeavor is greatly appreciated.

The 56001 documents that we've accumulated so far can be found here:

http://www.nextcomputers.org/NeXTfiles/Docs/Audio/DSP56001/

Documents and pictures related to the new expansion module will be available here:

http://www.nextcomputers.org/NeXTfiles/Projects/DSP_Expansion_Ram/


Thanks everyone,
Nitro

korneluk

The N7013 DSP expansion memory has a special layout as described below:

"Off-chip DSP memory on the NeXT computer exists in two address ranges, each of which spans all of the 8K words of
external memory. In the first address range (8K to 16K), x, y, and p memories are overlaid; that is, an external memory
reference points to the same off-chip location regardless of the memory space specified. Note that in this address range,
there is no l memory space support. (The high and low words are mapped to the same word.) In the second address range
(40K to 48K), x and y are split into separate 4K partitions, and p overlays the entire 8K. This address region allows external
l memory use, and supports algorithms (such as the Motorola benchmarks involving complex data) which expect x and y
memories to be physically separate".

Info found in an article by Julius O. Smith from Next and Stanford U.

korneluk

Thinking about it, the 576 Kbyte expansion board provides a full 64Kbyte (16 address lines) by 24-bit external memory expansion to each of the x,y, and p adress spaces thus:

64 Kbytes (16 address lines) * 3 (24-bit data bus) * 3 (separate address spaces) = 576 Kbytes total expansion memory.

or

192Kbytes x 3 address spaces = 576 Kbytes total mem.

korneluk

More information on the N7013 DSP expansion memory.

From: [email protected] (Avery Wang)
Date: Mon, 13 Jan 92 00:41:06 MET
Subject: DSP memory--paging???



OK, nobody answered my question about the DSP memory map with the
32Kword expansion module but I worked it out using the Ariel DSP
debugger (I can post it if anyone is interested).

Unfortunately it looks as if the 32K expansion memory is used, but
the 8K on-board memory is superceded.  This means that I get 32K
total DSP external memory, NOT 40K, as I had hoped... UNLESS there
is some way of paging an 8K memory subspace in and out by writing
to some IO register.  Paging has to be implemented because I saw
ads for expandability up to 576K of memory, and the addressable
space on the DSP is 64K.

Does anyone know if the 8K on-board memory is accessible at all?
Or am I stuck with only a 24K improvement?

Why is there no documentation at all on the DSP?  None came with
the package I got from my NeXT dealer.

Thanks, -Avery

---------               Avery Wang
               RUB-Institut fuer Neuroinformatik
               ND 03, Postfach 10 21 48
               W-4630 Bochum 1
               Germany
               [email protected] or

               [email protected]
------------------------------------------------------------------------------

       DSP Memory Map for NeXT with 32K-Word Expansion Module
       ------------------------------------------------------
On-Chip         Block 1 (16K-Words)  Block 2 (16K-Words)
p:$0000-$01FF
p:                  $0200-$3FFF         $4000-$7FFF     "Image A"
p:                                             $8000-$BFFF     "Image B"
p:                                             $C000-$FFFF     "Image C"

x:$0000-$00FF
x:$0100-$01FF                                                   (A-law,mu-Law ROM)      

x:                   $0100-$3FFF         $4000-$7FFF     "Image A"
x:                                              $8000-$BFFF     "Image B"
x:                                              $C000-$FFBF     "Image C" ($FFC0-$FFFF is mapped to peripheral space)

y:$0000-$00FF
y:$0100-$01FF                                                     (Sine table ROM)        

y:                    $0100-$3FFF         $4000-$7FFF     "Image A"
y:                    $8000-$BFFF                         "Image B"
y:                    $C000-$FFFF                         "Image C"

First of all, note that all memory spaces that are under Block 1 reference the
same physical memory, and similarly for Block 2.
Note that Image A is partially blocked by the on-chip RAM in locations $00-$FF

for X- and Y-space, and $00-$1FF for P-space.  Of course you know that the

data-ROMs in the X- and Y-space can be swapped in or out by software.
Image B is ideal for XY memory (e.g. complex data) references because the

physical memory doesn't overlap, and the map is uninterrupted for both spaces.
Image C crashes into peripheral space, on-chip for X-space, and external

peripheral space for Y-space, though it looks like it's OK to read/write to the
upper 64 bytes of the Y-space on the NeXT.

What are you going to do with all this memory?  Lots of DMA!  But don't get too
greedy because the maximum DMA transfer size is 8K bytes (1 vm page).

Unfortunately it looks like the expansion memory simply supercedes the on-board

8K memory, which then becomes totally useless.  If someone knows of a magical

software switch that can page this 8K in and out (like the data-ROMs) please
tell me!  It's a pity.  I was looking forward to 40K of DSP RAM, not 32K.

Nitro

This post on comp.sys.next.hardware lists the part numbers of the Motorola static RAM used on the original NeXT DSP memory SIMM:

http://groups.google.com/group/comp.sys.next.hardware/browse_frm/thread/f71ebdb0171d1366/611f0070e671fbbf

Here's a link to the previous attempt to clone the NeXT DSP module:

http://groups.google.com/group/comp.sys.next.hardware/browse_frm/thread/43e763d287e3e33e/9a9952f95f03c1ff
Nitro

korneluk

Good info. I also found a passing comment to two programs that calculate the DSP RAM size:

- dspmem.c by David A. Jaffe
- DSPMemSize by Izumi Ohzawa

However, I have not been able to find the source code for these yet. They will be very helpful after we prototype the new hardware and are ready to test it.

I will be very gratelful if anyoine can find these.

-- josé k.

Nitro

A special thank you goes out to Izumi Ohzawa, author of the program "DSPMemSize", for sending us high resolution photos of the original NeXT DSP memory expansion SIMM as well as the source code for the program.  Your generosity is much appreciated.  Also, special thanks to NeXTComputers.org forum member korneluk for taking the time to contact Izumi Ohzawa and requesting this information.


(Click to enlarge)

The source code for the DSPMemSize program can be found here:

http://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Apps/Audio/DSPMemSize/


And the DSP memory photos can be found here:

http://www.nextcomputers.org/NeXTfiles/Images/Rare_NeXT_Hardware/DSP_Expansion_RAM/
Nitro

Nitro

Korneluk contacted David Jaffe, who generously sent us the "senseDSPMem" program.  Many thanks to David for supplying the program as well as korneluk for taking the time to contact him.  The program should work well to test the first prototypes.  It can be found in the archives here:

http://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Apps/Audio/SenseDSPMem/senseDSPMemory.tar.gz
Nitro

pentium

The DSP module looks pretty simple to produce.
It only uses 2 different IC's, both Motorola.

With some quick searching (somebody confirm)

F158A
http://72.14.253.104/search?q=cache:OEbW4dtDWz8J:eshop.engineering.uiowa.edu/NI/pdfs/00/94/DS009484.pdf+%22F158A&hl=en&ct=clnk&cd=2&gl=ca

MCM6206CJ35
http://www.google.ca/search?hl=en&q=MCM6206CJ35&btnG=Search&meta=

I would check motorola but I'm in a hurry.

-NeXT 68040 Cube with NS 3.3 and 64Mb ram

pentium

For those who are going to be making the actual boards I have done a little magic on those photos. I did my best to clean it up but there are several traces that are a total mystery because they run under the chips.






By the looks of it we might be dealing with only a two layer board.
Once my cube arrives I'll try see if I can get the dimensions the SIMM has to be in order for it to fit in the slot (though I assume this simm is no thicker than a regular 30 or 72 pin SIMM)

EDIT: Here are the traces on a transparent background. The back is finished but the front still needs those missing traces fixed and both need to be properly resized so that when we go make the sticks we make them the right size.




EDIT: I just updated the two pictures above as there was a bug in the drawings. I also added in the perimeter of the SIMM so you can print and line the two images up a little easier.

-NeXT 68040 Cube with NS 3.3 and 64Mb ram

pentium

Oh dear.
I am being informed by my sources that this is probably not a two layer PCB.
Grr!  :x
I need access to one of those DSP sticks so I can figure out how exactly it was built.

-NeXT 68040 Cube with NS 3.3 and 64Mb ram

Thrax

Yup, that is not a doublesided board but a multi-layered one judging by the photos.
NeXTstation TurboColor

pentium

Does anyone have a stick? I would honestly pay shipping both ways just so I could see where all the traces go.

-NeXT 68040 Cube with NS 3.3 and 64Mb ram

pentium

To aid in geting this completed I have asked for help at the Vintage Computer Forums.
For starters, I have found out that it would be fairly inexpensive to get a batch of boards made for the task. If I can get enough people who want one, I could order all the aprts and mail out kits.

-NeXT 68040 Cube with NS 3.3 and 64Mb ram

cubist

Quote from: "pentium"To aid in geting this completed I have asked for help at the Vintage Computer Forums.
Circuit is going to be dead simple.  Straight memory wiring with some chip select from the multiplexer.  But to get anything fabbed you're going to have to use the correct tools.  So you might as well start getting familiar with Eagle or gEDA (latter if you want to do this on the cheap and want to do more than a 2-layer board).