16 MB expansion for the Hardital (Super) Big Bang accelerating board

January 1998


Copyright and Distribution


This project is freeware. You can send me whatever you want, just to tell me if you liked it or not.



History


Some months ago I made some considerations by myself about the 8 MB limit for the Hardital Big Bang accelerating board. I found it unusual because the maximum addressable amount of RAM is usually a power of 4.

I gave a look at the DRAM controller chip on this board; it is a DP8421A produced by National Semiconductor. I found National's web page listed in the Chip Directory archive. A little research and the data sheets were discovered. Reading a little this sheets was enough to find that my assumption was true. The DP8421 is able to control up to 16 MB of RAM using 1 Mb density chips.

Now I was sure that this expansion could be made, but the question was: how easily ? Today I can answer "quite easily", but I experienced many troubles during its project and realization. Anyway, I did it ! And it's cheap !!



Limits


I build this expansion using two 8 MB EDO SIMM; if you choose to use SIMMs, it's mandatory that they are assembled with 1 Mb chips. The data width, instead, is not important. Currently one of my SIMMs uses 16 chips with 1Mbx4 density, the other uses 4 chips with 1Mbx16 density. To check if the SIMM is ok, you have to be sure that the #19 pin is not used (connected to none of the chips on the SIMM).

I had to build a ZIP to SIMM adapter to connect the two SIMMs to the ZIP sockets on the Big Bang. I made the connections using thin wires. Try to keep these wires as short as possible, because they introduce noises and delays, causing wrong reads and writes from/to the memory. In particular the /RAS connections seem to be the most tricky. Only when I soldered these wires directly on the DP8421 socket (instead of the ZIP sockets) I got rid of all the read/write errors. Probably due to this noisy adapter, overclocking the board to 33 Mhz causes the memory read/write errors to reappear. I returned the clock down to 25 Mhz some time ago, as I discovered that my CPU and FPU are 20 MHz devices, already overclocked to 25 MHz by Hardital itself.

The 16 MB RAM does not autoconfig. This is due to the 8 MB autoconfig address space limitation of the Amiga 500/2000. Consequently you must add the memory during the boot using a command like "Addmem". Moreover the 16 MB RAM is formed by 2 separated chunks of 8 MB each. It's also possible that you can't switch to 68000 mode anymore, because there could be some conflict between the two SIMMs, but I haven't tested this (I have no more reasons to degrade my system today).

I use a couple of CMOS gates for this expansion. They introduce a delay in the range of 20-40 ns. I also developed a couple of alternative logic cicuits based on logic gates; they can be faster than my first solution if you build it with TTL chips.



Theoric realization


To understand how my hack works you have to know the meaning of some signals.

Name Location Description
/ML DP8421 pin # 52; 68030 When this signal is asserted (low) the DP8421 enters the program mode. It comes from the /RESET signal of the 68030
/RAS0,1,2,3 DP8421 pin # 38,39,40,41 These signals are asserted exclusively, i.e. if one is asserted then the other are negated. The asserted one selects its corresponding memory bank.
B0,B1 IC32 pins # 17 and 16; DP8421 pins # 32 and 33 These signals are generated by the IC32 GAL and sent to the DP8421. When /ML is asserted, their values are used to program the DRAM controller; when /ML is negated, their values are used to generate the /RAS signals.


To work correctly, the DP8421 must be programmed. The programmation is made reading the status of some signals (B0, B1, ...) as the /ML signal is asserted. Normally the IC32 component (a custom programmed chip) handles the B0 and B1 values both in normal and program mode. When /ML is asserted the correct values are sent to the DP8421 to program it; when /ML is negated the B1 signal is always 0 and only B0 is used to select one of the two memory banks present on the Big Bang.

My idea is simply to use the B1 signal in normal mode too, to be able to address four banks instead of only two.

To allow this I used a couple of electronic switches, called "transmission gates", connected as shown below.

The white lines represent already existing connections, the orange lines are new connection to be made, and the dotted line is a connection which has to be broken.

When /ML is asserted the output of IC32 is sent normally to the DP8421, thus the DRAM controller is correctly programmed. When /ML is negated the A26 address line is connected to the DP8421. When the value of A26 is 0, the usual two memory banks are addressed through /RAS0 and /RAS1; when its value is 1, the new 2 memory banks are addressed through /RAS2 and /RAS3.

If you aren't familiar with the hexadecimal notation, you can read now this little explanation about the translation between hexadecimal and binary numbers.

It's important to configure the two memory chunks with addresses which differ in the bit # 26. As example the usual two memory banks are addressed in the $1200000-$19FFFFF range (0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx); the new two banks, instead, are addressed in the $5200000-$59FFFFF range (0000 0101 xxxx xxxx xxxx xxxx xxxx xxxx). As you can note, the two addresses differ for the value of the A26 bit. E.g., if you execute "addmem 1200000 19FFFFF" and then "addmem 3200000 39FFFFF" (0000 0011 xxxx xxxx xxxx xxxx xxxx xxxx) you will configure the same memory bank twice, because the two addresses have the same value in the A26 bit !!

You can choose to use a different address line, and then configure the memory in different ranges, but remember that the bit # 24 is always 1 when in non-autoconfig mode. The other most significant bits are unused, thus, with my example connection, I can configure the second chunk in the $D200000-D9FFFFF range (0000 1101 xxxx xxxx xxxx xxxx xxxx xxxx).



Practical realization


The things you need to build this expansion are:

First you have to break the existing connection between pin # 16 of IC32 and pin # 33 of the DP8421 DRAM controller. Choose a place where you can see clearly the track and cut it carefully, not too deep in the board.

Next you need to connect the CMOS chips. The connections are shown before and summarized in the next tables.

4066 pin # connected to
1 not connected
2 not connected
3 not connected
4 not connected
5 not connected
6 DP8421 pin # 52
7 GND
8 68030 A26
9 DP8421 pin # 33
10 DP8421 pin # 33 (or simply connect it to the previous pin)
11 IC32 pin # 16
12 4049 pin # 4
13 not connected
14 +5 V

4049 pin # connected to
1 +5 V
2 not connected
3 not connected
4 4066 pin # 12
5 DP8421 pin # 52
6 not connected
7 not connected
8 GND
9 not connected
10 not connected
11 not connected
12 not connected
13 not connected
14 not connected
15 not connected
16 not connected


Finally I built a SIMM to ZIP adapter, but if you own other types of memory chips (ZIP, DIP, 30 pin SIMM, ...) you can project your own adapter. A SIMM to ZIP adapter can be built following the scheme below. Note that many pin of the two SIMM can be connected together, but some has an exclusive connection.

The M1....M16 labels are referred to the ZIP sockets on the Big Bang. The Super Big Bang labels are different !! It seems that the correspondencies are those contained in the next table

ZIP socket labels correspondencies
Big Bang ZIP socket label Super Big Bang ZIP socket label
M1 M1
M2 M3
M3 M5
M4 M7
M5 M9
M6 M12
M7 M13
M8 M15
M9 M2
M10 M4
M11 M6
M12 M8
M13 M10
M14 M11
M15 M14
M16 M16


SIMM to ZIP adapter
SIMM pin # of the SIMM # connected to
1 both GND, pin # 5 of any ZIP socket
2 both D0, pin # 6 of M1 or M9 ZIP socket
3 both D18, pin # 6 of M5 or M13 ZIP socket
4 both D1, pin # 7 of M1 or M9 ZIP socket
5 both D19, pin # 7 of M5 or M13 ZIP socket
6 both D2, pin # 3 of M1 or M9 ZIP socket
7 both D20, pin # 3 of M5 or M13 ZIP socket
8 both D3, pin # 4 of M1 or M9 ZIP socket
9 both D21, pin # 4 of M5 or M13 ZIP socket
10 both +5 V, pin # 15 of any ZIP socket
11 none not connected
12 both A0, pin # 11 of any ZIP socket
13 both A1, pin # 12 of any ZIP socket
14 both A2, pin # 13 of any ZIP socket
15 both A3, pin # 14 of any ZIP socket
16 both A4, pin # 16 of any ZIP socket
17 both A5, pin # 17 of any ZIP socket
18 both A6, pin # 18 of any ZIP socket
19 none not connected ! If the SIMM uses this signal, it can't be adapted !!
20 both D4, pin # 6 of M2 or M10 ZIP socket
21 both D22, pin # 6 of M6 or M14 ZIP socket
22 both D5, pin # 7 of M2 or M10 ZIP socket
23 both D23, pin # 7 of M6 or M14 ZIP socket
24 both D6, pin # 3 of M2 or M10 ZIP socket
25 both D24, pin # 3 of M6 or M14 ZIP socket
26 both D7, pin # 4 of M2 or M10 ZIP socket
27 both D25, pin # 4 of M6 or M14 ZIP socket
28 both A7, pin # 19 of any ZIP socket
29 none not connected
30 both +5 V, pin # 15 of any ZIP socket
31 both A8, pin # 20 of any ZIP socket
32 both A9, pin # 10 of any ZIP socket
33 1 /RAS1, DP8421 pin # 39
33 2 /RAS3, DP8421 pin # 41
34 1 /RAS0, DP8421 pin # 38
34 2 /RAS2, DP8421 pin # 40
35 none not connected
36 none not connected
37 none not connected
38 none not connected
39 both GND, pin # 5 of any ZIP socket
40 both /CAS0, pin # 2 of M1, M2, M9 or M10 ZIP socket
41 both /CAS2, pin # 2 of M5, M6, M13 or M14 ZIP socket
42 both /CAS3, pin # 2 of M7, M8, M15 or M16 ZIP socket
43 both /CAS1, pin # 2 of M3, M4, M11 or M12 ZIP socket
44 1 /RAS0, DP8421 pin # 38
44 2 /RAS2, DP8421 pin # 40
45 1 /RAS1, DP8421 pin # 39
45 2 /RAS3, DP8421 pin # 41
46 none not connected
47 both /WE,pin # 8 of any ZIP socket, or DP8421 pin # 36
48 none not connected
49 both D9, pin # 6 of M3 or M11 ZIP socket
50 both D27, pin # 6 of M7 or M15 ZIP socket
51 both D10, pin # 7 of M3 or M11 ZIP socket
52 both D28, pin # 7 of M7 or M15 ZIP socket
53 both D11, pin # 3 of M3 or M11 ZIP socket
54 both D29, pin # 3 of M7 or M15 ZIP socket
55 both D12, pin # 4 of M3 or M11 ZIP socket
56 both D30, pin # 4 of M7 or M15 ZIP socket
57 both D13, pin # 6 of M4 or M12 ZIP socket
58 both D31, pin # 6 of M8 or M16 ZIP socket
59 both +5 V, pin # 15 of any ZIP socket
60 both D32, pin # 7 of M8 or M16 ZIP socket
61 both D14, pin # 7 of M4 or M12 ZIP socket
62 both D33, pin # 3 of M8 or M16 ZIP socket
63 both D15, pin # 3 of M4 or M12 ZIP socket
64 both D34, pin # 4 of M8 or M16 ZIP socket
65 both D16, pin # 4 of M4 or M12 ZIP socket
66 none not connected
67 none not connected
68 none not connected
69 none not connected
70 none not connected
71 none not connected
72 both GND, pin # 5 of any ZIP socket


I also connected a couple of 10 microFarad bypass capacitors between the +5 V and GND inputs near the SIMMs, to avoid a voltage drop during the transitions, but maybe they aren't strictly needed, because there are already bypass capacitors on the SIMMs and near the ZIP sockets.

CHECK EVERYTIME IF THE CONNECTION ARE NOT FAULTY AND THERE ARE NO SHORT CIRCUITS !!!

Now you must set your Big Bang switches and jumpers for 8 MB RAM, non-autoconfig mode as explained on the manual. Then use the "addmem" command (supplied with the board) to configure your memory in the correct addresses ranges.



Final notes


I try to exstimate the costs (in US dollars) for this hack:

I would like to thank my brother, Andrea "orso", Enrico "lupo", Claudio, Fabio "kurt", Max "gns" and, last but not least, doc. Paolo Canali for their technical support; prof. Paccagnella and prof. Baccolini for their teaches (the things I learned, I applied it to this hack).

Greetings to my company (expecially the girls ;), the Amiga users in Padova and Verona (in Italy, in the world, ...), my home mates, my canadian friend Rino, my family, and everyone who knows me.

Happy hacking!!


Back to index