Discussion in 'Electronic Basics' started by Henry, Jun 30, 2006.

1. ### HenryGuest

I'm in the process of redesigning a RAM expansion board for an old Apple IIe
series computer to help me better understand how electronics work. Some of
you may remember the Apple IIe from back in the 80's. I've found it's a
great platform to learn on. Anyway, the RAM expansion board uses 1 Meg x 1
bit DRAM's and I want to modify the board to use 1 Meg x 4 bit DRAM's. Just
a little homebrew project to further my knowledge of DRAM IC's and the
circuits that drive them.

Here's the datasheet for the 1 Meg x 1 bit DRAM's:
http://reactivecomputers.gotdns.com/Data Sheets/1Meg x 1bit DRAM.pdf

Here's the datasheet for the 1 Meg x 4 bit DRAM's:
http://reactivecomputers.gotdns.com/Data Sheets/1Meg x 4bit DRAM.pdf

A friend of mine has been helping me a bit along the way too. After we
studied the two data sheets we noticed that the 4 bit DRAM has an Output
Enable pin which the 1 bit DRAM does not. It would seen to me that if I
invert the Write signal with a 74LS05 then I could use it to drive the
Output Enable pin. So I wired the 74LS05 in to the circuit . I then wired
up the rest of the signals accordingly. I took IO1 and connected it to
where the first 1 bit DRAM I/O would be, IO2 and connected it to where the
second 1 bit DRAM I/O would be, and so on. On my board the 1 bit DRAM's
have pin 1 and 17 wired together. I then have the four remaining sockets in
the bank of eight DRAM's filled with 1 bit DRAM IC's.

Next I insert my board in to the computer, run my RAM test and... it fails.
The program tests each DRAM separately, so the 1 bit DRAM's pass the test
but the 4 bit DRAM fails. I've even tried several different brands of 4 bit
DRAM's too. I can't seem to see a reason why it would fail, at least not
according to the data sheets.

Does anyone have any experience with what I'm doing or maybe can see
something I'm missing from the data sheets? As you can probably guess I'm a
little stumped and have been trying all sort of things for the past couple
weeks. Any help would or guidance would be appreciated.

Henry

2. ### Helmut SennewaldGuest

Hello Henry,

The x4 DRAM requires 1024 refresh cycles instead of 512.
So this isn't a replacement, if you can't change the refresh to 1024
cycles. Refresh means you have to cycle through all the 1024 lowest

Best regards,
Helmut

3. ### petrus bitbyterGuest

Hmm... Can't say too much without schematic but inverting /WR to achieve /OE
may be too simple. Print out and compare the waveforms of the datasheets.
There are a lot of possibilities and you need to know which ones are
actually used. So what kind of read, write and refresh methods are
implemented on the RAM-board? As for the refresh make sure the board
provides a nine bits refresh address.

petrus bitbyter

4. ### HenryGuest

Hey guys. Thanks for the reply.

petrus bitbyter: I did compare the waveforms of the datasheets and they do
match up, or I should say they match to my eye. The board I'm working with
is actually an expansion board to another card. I guess I'll have to draw
the schematic to the main card to really understand how and what the main
card is doing and what it expects from the daughter board. Thanks for the

Helmut Sennewald: Concerning the refresh cycles - If I'm looking in the
right place on the data sheets I see the 1bit DRAM requires 512 cycles every
8 ms and the 4bit DRAM requires 1024 cycles every 16 ms. Isn't this the
same thing or am I confusing something? Thanks.

Henry

5. ### Helmut SennewaldGuest

Hello Henry,

512 refresh cycles mean you have to toggle through all the
within the refresh time.

1024 refresh cycles mean you have to toggle through all the
within the refresh time.

I remember that some computers did it in an interrupt loop.
(It's a "dirty" solution.) Normally the DRAM controller
performs the refresh cycles automatically uninfluential from the CPU.
If a refresh occurs the cPU has to wait if it accesses the DRAM
at the same time. Some older CPUs are so slow, that the DRAM
controller may be able to perform two accesses within one CPU cycle.
Then there is no extra delay penality for the CPU.

The best solution is to find a 1M*4 DRAM with 512 refresh cycles.
The type with 1024 refresh cycles can't be used if you haven't
the possibility to increase the refresh to 1024 cycles.

Best regards,
Helmut

6. ### HenryGuest

Hello again Helmut.
Okay, I'll take a look around and see what's available. Thanks again for

Henry

7. ### Roger HamlettGuest

The problem is that two lots of 512 cycles, do not activate the extra
address line, that a '1024' cycle refresh implies...

Best Wishes

8. ### HenryGuest

Hello Roger.

I'm not sure I understand what you mean about 'The problem is that two lots
of 512 cycles, do not activate the extra address line, that a '1024' cycle
refresh implies...'.

Well, from what I believe is going on my card is set to refresh 512 address
lines every 8 milliseconds - or at least that is what the data sheet for the
1bit DRAM says it needs. Since the 1bit DRAM's work I will assume those are
the numbers then. The DRAM I believe has a built in counter to advance the
CAS address lines automatically from the LAST line it had accessed in
refresh mode - so you don't need to apply all the possible address to the
DRAM and eat up CPU time. Now if the DRAM is just idle and not being
accessed then the current scheme will work just fine - i.e. - 512 refreshes
in 8ms, 2 cycles of 512 = 1024 in 16ms. So that's good, or so I would
think.

Now what happens when the DRAM is at line 0 and the refresh kicks in? Of
course it receive 512 cycles and the counter will now be on line 511. Now I
access the DRAM in between the first 512 refresh and the second refresh and
read or write data to line 0. The refresh then kicks in again after my read
or write and advances the counter from the LAST line I accessed which was 0,
to 511, thus missing the other 512 lines that still need to be refreshed.
Now what if I access line 0 again just after that refresh and then the
refresh kicks in again?

I think this is what both of you have been talking about. Where if the
board was designed to refresh 1024 times per refresh cycle then it's
guarantied that every line of the array would be refreshed no matter what
line in the array was last accessed. Am I following correctly?

On another side test I tried a RAM board that used 256k x 1bit DRAM's. I
replaced 4 of them with a 256k x 4bit DRAM. Same type of issue as with the
1Meg DRAM's. Also the same refresh numbers issue as the 1 Meg DRAM's - that
the 4bit DRAM refresh cycles are double that of the 1bit DRAM. It's the
only thing that I can see is really that different between the two
datasheets. In every case that I can see the 4bit DRAM specs are well
within operating in a 1bit design - all but the refresh cycle numbers. As
for the technical stuff, the 2 timing values that are relevant, that I see,
are tCSR and tCHR. On the 1Mx1 chips, their min values are 10 and 15,
respectively. With the 1Mx4 chips, I see 5 and 15. Looks to me that the
1Mx4 chips are just as compatible (note: there's no value listed as in the
max column for either chip). Even the tRPC value, which I'm not sure is a
factor, is a min of 10 on the x1 and a 0 on the x4. The only real
difference seems to be the refresh cycles which I now assume correspond
directly to the memory array in the DRAM IC.

I also believe my board to be doing /CAS-before-/RAS refresh but I can't say
for sure. Any good 'test' to see if my assumption is correct? Wish I had a
scope.

Any clarification to any of my thoughts/statements is always appreciated.

Henry

9. ### HenryGuest

Well, I see I'm still not on the right track.

I buddy of mine just sent me a .PDF about DRAM refresh. Here it is:
http://reactivecomputers.gotdns.com/Data Sheets/DRAM Refresh.pdf

I'm under the assumption that my board uses CAS Before RAS refresh. After
reading the data sheet I'm now guessing it doesn't. Now to buy a scope! ;-)

Also after reading the data sheet I now have no idea what either Helmut or
petrus bitbyter were trying to tell me when the mentioned the 1024 cycles
issue. According to the data sheet IF my board is using CAS Before RAS
refresh (or CBR) then as long as a refresh is done every 15.6us then I
should be able to use ANY DRAM with the same requirements.

So I'm basically as lost as I was before. :-( I think?

Henry

10. ### Michael BlackGuest

Your first problem is that you've cross-posted to a slew of groups. I have
very little desire to reply to some fool who feels they need to do that.

But not only do you overly cross-post, but you lack comprehension.

Inside the dynamic ram is an array of rows and columns. The refresh is
to activate each location in turn, because dynamic memory is not static.
It needs to be access in order to keep it's content. Since it's an array,
you don't need to go through the full address space, just whatever is
specified, the row or column.

To use a simple example, say it's a really small RAM, 8 columns by 7 rows,
ie 56 address locations. You have to refresh all those columns each time
for a full refresh to happen. If you only had a counter with 7 bits
output, one of those columns would never see a refresh, so a significant
amount of the memory space would never be refreshed.

So you get one of those new DRAMs with twice as much space, having 9 columns
by 7 rows, all of 63 bits. Your old refresh circuit will no longer be good
enough, because it has 8 outputs, but you now need 9 bits.

That's what they are all trying to tell you as you spew this thread
over a bunch of newsgroups.

The details are specific to the DRAM. Some may require column refresh,
some row refresh, and the arrangement of the array will vary. You have
to track down the details and then match that.

Michael

11. ### EeyoreGuest

Pardon ?

Cross-posting to just *3 relevant groups* is the recommended practice. Far better
than mutli-posting.

Graham

12. ### BarbarianGuest

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The problem may not relate to refresh...

Think about where each of the Apple's raw address bits are going. Remember
that some address bits are used as Row bits and some are used as Column
bits.

The host system (Apple IIe?) controls how the bits are multiplexed... you
can't just put chips with a different number of Row & Column bits than the
system was designed for and expect it to work. (hint: Lost Address Bits)

Dennis

13. ### techie_alisonGuest

"Henry" <apl2research(.a.t.)comcast.net> wrote in message

Hi Henry,

Good on you for keeping the side up, I too have enjoyed doing some of these
things with some of the 80's computers.

Type in "atari st 72-pin upgrade" into Google. Might help 1% maybe
Mine is the only 72-pin hack out there for the ST I muddled through
most of it so may not be as detailed in terms of RAS cycles and alike here.

Hope to see you write up your experiences in the future.

Best of luck,

Alison

14. ### techie_alisonGuest

"Henry" <apl2research(.a.t.)comcast.net> wrote in message

Henry,

Further to my post in the depths of the thread below, check this out too..

http://atari.nvg.org/stacyram/

Good luck!

Alison

15. ### HenryGuest

Hey Alison.

Thanks for the link. Funny how the SIMM worked with their system, but 4bit
IC's don't seem to work with mine. I still have a couple tests I need to do
though as I have had some new ideas since the last post.

I also have purchased the DigiView logic analyzer. It should help me
determine what is actually going on. Now I just need to sit down and
continue my testing.