[sci.electronics] VRAM Controllers ?

billk@hpsad.HP.COM (Bill Katz) (04/06/90)

	Take a look at the TI 34010.  While it's quite a bit more than just
a VRAM controller, it seems to do that job rather well, and it can draw 
besides.  National also has a VRAM controller, the DP8520/DP8521.  It is
a variant of their normal DRAM controller, the DP8420/DP8421.  Get the 
"Advanced Peripherals-Graphics Handbook" for the National Chip.  Hope this
helps.
______________________________________________________________________________

   _   /| 	-ACK!        Bill (the) Katz     Internet: billk@hpsad.hp.com
   \'o.O'	-PFHHHT!     Hewlett-Packard         UUCP: hplabs!hpsad!billk
   =(___)=	-COUGH!      Signal Analysis Div.   Phone: (707) 794-2300
      U		-ACK!	     1212 Valley House Dr.    Fax: (707) 794-4452
			     Rohnert Park, CA 95428
______________________________________________________________________________

bill@videovax.tv.tek.com (William K. McFadden) (04/06/90)

In article <19275@boulder.Colorado.EDU> rainer@hibachi.colorado.edu (Rainer Malzbender) writes:
>Here's another one: anybody know of a chip to facilitate using
>video RAM's ? I've been using 41264's (64K x 4) and have always designed
>my own logic to generate the serial out timing and CPU/video arbitration.
>This gets quite messy fast. You have to mux RAS and CAS between the
>shift register load cycles and the CPU access, among other things.

I once did a design using the Signetics 74F764-1 dual-ported DRAM controller.
The part is made to allow two processors to share some DRAMs, but I was able to
use my video controller instead of a second processor.  Although the 74F764
doesn't put out the DT/OE signal needed by video RAMs to differentiate between
normal and data transfer accesses, its timing signals contain enough
information to derive DT/OE.  The chip contains a built-in address MUX for
256K X 1 or 256K X 4 DRAMs.  Of course, you can use smaller DRAMs by leaving
out the unused address lines.  It generates its own refersh at any rate you
choose.  Also the horizontal rate is variable, because you supply it from
your video controller (I did my own video controller).  BTW, I have made it
work with memories of two different sizes (256K X 4 main RAM and 64K X 4 video
RAM on the same bus).  The trick was to make a separate address MUX for the
video RAMs, which you have to do anyway, because the chip contains a 3:1 MUX,
not the 5:1 MUX you would need for video RAM (one if the MUX inputs comes from
the RAS-only refresh counter).  Anyway, the chip provides all the timings you
need to do this.

If you want to use the chip, please be aware of some considerations.  First
off, use the -1 suffix part.  The output drivers of the non suffix part are
too fast and ground bounce may occasionally cause the part to fail.  It took
me weeks to figure this out.  Be aware, however, the -1 suffix has a slightly
different timing on one of its outputs (it's a long story).  If you want the
same timing as the non-suffix part, use the 74F1764-1.  It is the same as the
74F764-1, but with an extra address line for 1M X 1 or 1M X 4 parts.  While
I'm on the subject of the 1764, let me say it is a much better part because
there are more Vcc and GND pins, which also reduce ground bounce.  Next, don't
use the 74F765 (or 74F1765) series parts.  They don't have an address latch,
and during a data transfer (when you're using an external MUX), changing
address inputs from the CPU causes the part to get confused.  This only occurs
if you're using both the internal MUX for main RAM and an external MUX for
video RAM.  If you don't use the built-in mux, most of these problems go away.
The 764 (1764) series have address latches that eliminate this problem.  Yes,
it took me another couple of weeks to figure this out.  Lastly, the parts have
a bug in them that will generate improper RAS precharge timings if you're not
careful.  In most cases you won't see this, but since I was using a video
controller instead of another CPU, the problem occurred.  The problem is: after
an access has completed, you have to continue holding the REQ line low until
the RAS precharge time has completed.  The DRAM controller won't do it for you.
I fixed it with a couple of flip-flops.  You could also use a one-shot to
generate the time delay.  Once again, it took me a couple of weeks to figure
this out (and Signetics isn't going to fix it, because the problem only occurs
in a few applications).

After all these problems, you might be wondering why I even bothered to use
this part at all.  First, I was motivated to make it work because, even with
the extra glue logic, it replaced a dozen or more ICs, making it possible to
add another 8 DRAMs to my circuit.  Second, all of the problems I had were due
to my unconventional use of the part-- the designer himself admitted the part
was never designed with video RAMs in mind.  Actually, the Signetics DRAM
controllers are pretty easy to use-- once you know the secret.

Let me conclude by recommending the 74F1764-1 for your application, or the
74F764-1, which you'd have to run slightly slower, because of the funny
timings.  I could send you a schematic if you're interested in my
implementation.

Good luck on your design!
-- 
Bill McFadden    Tektronix, Inc.  P.O. Box 500  MS 58-639  Beaverton, OR  97077
bill@videovax.tv.tek.com,     {hplabs,uw-beaver,decvax}!tektronix!videovax!bill
Phone: (503) 627-6920       "The biggest difference between developing a missle
component and a toy is the 'cost constraint.'" -- John Anderson, Engineer, TI