Engineer To Engineer Note EE-44

advertisement
Engineer To Engineer Note
EE-44
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
How to design a DRAM
Controller to interface a DRAM
with the SHARC DSP
Introduction:
This document provides a reference design for
customers on how to interface a DRAM with the
SHARC DSP using a DRAM Controller. The
controller is implemented as a state-machine on a
Xilinx PLD. This design has been simulated, built
in hardware, and tested to operate successfully.
The design, however, has not been optimized for
best performance. Recommendations for further
modifications as well as alternative designs will be
given in Section IV.
1.
SHARC:
A SHARC EZ-KIT Lite evaluation board is used in
this design. All the signals shown in this block are
available from the external connectors on this
board.
2.
DRAM:
A 4Meg x 32 bit DRAM (MT8D432M-6x, 60ns access
time) manufactured by Micron is used for this
project. Data sheets showing specific timings are
available from Micron.
3.
Mux, Refresh Timer, DRAM Controller:
These are three separate modules that are
programmed onto one 69 I/O pin Xilinx PLD
(XC95108-10PC84).
I.
Design Overview:
Different applications require specific ways of
DRAM interfacing. This design implements a
DRAM controller to interface a 4 Meg DRAM by
Micron with the SHARC.
1
3
Dat31-0
Addr10-0
Addr21-
1
1
1
C
Mux
2
Addr10-0
/RAS/CA
/WR_Dra
/RAS/CA
MuxSe
/WR_Dra
R
Shar
c
/MS0
/MS0
/RD
/RD
/WR
/WR
Page
Brd_Rst
Page
DRAM
Controlle
r
/Rese
CLKIN
CLKIN
RFQ
Ack
DRAM
Dat31-0
Refres
h
Timer RFC
3
RFQ
RFC
Ack
Figure 1: DRAM Interfacing Block Diagram
a
DRAM is an ideal solution for mass data storage
with high speed. However, DRAM requires page
swapping if an access crosses a page boundary. In
addition, DRAM requires refreshing so that data is
retained properly. This means an external
controller is needed to handle the interface between
the Sharc processor and the DRAM.
The refresh timer works as follows: during reset,
the counter is forced to zero from any state. When
reset is released, the counter will start counting up
to 620. At this point, the counter resets to zero and
starts counting again. At the same time, a refresh
request (RFQ) is asserted, signaling the controller
to refresh one row of the DRAM. There are
different ways of refreshing the DRAM. For this
design, CBR or CAS Before RAS method is used as
illustrated in the diagram below. First, the
controller returns CAS and RAS to high, if
necessary. Next, the controller brings CAS low, and
then RAS low in the next cycle. It is important that
RAS and CAS should remain high or low long
enough to meet the time specifications in the data
sheets. At the end of the refresh cycles, the
controller asserts RFC (refresh complete) to signal
the refresh timer to bring RFQ low.
The controller receives input signals from the Sharc
on each memory access and asserts the right control
signals to the DRAM to read or write. Eleven 2:1
mux’s are used to select between column address
and row address depending on whether the
controller is doing a page swap or a normal
read/write. The refresh timer is responsible for
telling the controller when to refresh the DRAM.
II.
Descriptions of the Refresh Timer and the
Controller
Using the CBR refresh method, the user does not
have to worry about which row to refresh. The
DRAM itself has an internal counter that keeps
track of which row to refresh. Each time a CBR is
performed, this internal counter will increment by
one so that the next adjacent page is refreshed on
the next CBR.
1.
Refresh Timer:
Data sheets for this 4 Meg DRAM specify that all
2048 rows or pages need to be refreshed every
32ms. Spreading this task into equal intervals
shows that a new row needs to be refreshed every
15.625µs (32ms/2048). In this design, a refresh
request is generated by the timer every 15.525µs or
621 cycles if using a 40 Mhz clock.
By refreshing one row every 15.5µs, the entire 4
Meg DRAM will effectively be refreshed within
every 32ms.
Clkin
Counte
r
0
0
1
2
619
620
0
1
2
3
4
5
6
7
8
/Reset
RFQ
/RAS
/CAS
RFC
Figure 2: Dram Refreshing for One Row or Page
EE-44
CBR or
CAS Before RAS
Page 2
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
b.
2.
DRAM Controller:
a.
Normal Page Swap, Read, Write
Figure 3 below illustrates the operations of an outof-page read followed immediately by a within-page
write. Note that the timing diagram given here
does not reflect precisely the number of cycles used
in the Abel file. Refer to discussion about
optimization toward the end of this document.
Upon the detection of /MS and Page, the controller
will assert MuxSel to select the row address. Then
/RAS is asserted low to latch in the new row
address. Note that MuxSel is clocked at the
negative clock edge so that row address is valid by
the falling edge of /RAS. Then, if this is a read,
/WR_DRAM is kept high while /CAS is asserted low.
During the same cycle, Ack is asserted high to
indicate the completion of one memory access. Note
that /RAS is held low so that the same page is
retained. It will remain low until a page swap is
required or a DRAM refresh is serviced.
Refresh Request during a Read/Write:
If the DRAM controller is servicing a memory
access when a refresh request occurs, the controller
will keep going to complete that memory read or
write before entering the refresh cycles. RFQ will
stay high until one row refresh has been done and
RFC is asserted. This is illustrated in Figure 4.
c.
Memory Access Request during a Refresh
Service:
If the Sharc asserts /MS while the controller is
refreshing the DRAM, the controller will continue
to finish the refresh before servicing the memory
access. Without having Ack high during this time,
the Sharc will keep driving /MS, /RD or /WR, Data
and Address lines. Note that in this design, the
Sharc is configured to use Ack-only as waitstates.
Figure 5 illustrates this scenario.
In this example, a write follows immediately. Since
it is a same-page operation, only /CAS needs to go
low. /WR_DRAM is asserted this time for a write
cycle.
Clkin
/MS0
Page
Out-of-page READ
/RD
Within-page WRITE
/WR
MuxSel
AddrOu
t
/RAS
Col Addr
Row
Col
Col
/CAS
/WR_
DRA
Ack
Figure 3: Page Swap, Read, Write
EE-44
Page 3
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
It’s time to
refresh !
Read/Write
Completes
RFQ
/MS, /RD,
/WR
Reading/Writing
/RAS, /CAS
Refreshing
RFC
Figure 4: Refresh Request during a Read/Write
It’s time to
refresh !
RFQ
/RAS, /CAS
Refreshing
RFC
/MS, /RD,
/WR
Ack
Read/Write
pending
Read/Write begins
..
.end
Figure 5: Memory Access Request during a Refresh Service
EE-44
Page 4
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
d.
During the Idle/Reset cycle, the controller keeps
/RAS and /CAS high which will put the DRAM into
a low power mode. From here, the controller can
go to refresh cycles if RFQ is asserted or go to start
a memory access. Note that coming out of the idle
state, the controller needs to update the page in the
DRAM regardless of whether this is a out-of-page
access or not. The reason is that /RAS is no longer
held low during idle period.
Controller State Machine:
This DRAM controller is implemented as a Mealy
state machine and is programmed onto a Xilinx
PLD with 69 I/O pins. The state diagram on the
following page shows the flow of the design with
transitions from one state to another. Please refer
to the Abel source code for the output signals.
In the state of Read/Write within Page, the
controller can remain here to wait for the next
memory access or go to refresh the DRAM if
necessary.
Several states in the state machine are used merely
to hold /CAS or /RAS low or high in order to meet
the time specifications. Further optimization could
be done to speed up the design as discussed in a
later section.
Reset
Idle/Reset
(S0)
/MS0
RFQ
end of S7
/MS0,
(regardless of Page)
Page Swap
(S8..S10)
Refresh
(S1..S7)
/MS0, Page
RFQ
Read/Write
within Page
(S12)
end of S10
Read/Write
/MS0
after a Page Swap
(without Page)
(S11)
end of S11
else
remain
in S12
end of S15
Extending
Cas/Ras
(S13..S15)
Figure 6: DRAM Controller State Diagram
EE-44
Page 5
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
III.
Hardware Description
A prototype of this design has been built with the
layout shown in Figure 7 below.
On the left is the DRAM board with 2 major
components:
1. DRAM: This is placed along the long edge
close to the Sharc EZ-Kit Lite board so that
the lengths of the wires connected to the
Sharc EZ-Kit Lite board are minimized for
noise reduction purposes.
2. Xilinx PLD: This is the DRAM Controller.
The refresh timer and the mux’s are all
programmed onto this same PLD. The Abel
file attached with this document includes all
code and equations necessary to program
this PLD.
Other components include the following:
On the right is the Sharc EZ-KIT Lite board with
four external connectors shown in the figures. All
the signals shown in Figure 1: DRAM Interfacing
Block Diagram are available from these connectors.
This board runs on its own power supply. However,
common ground is needed between the two boards.
At least one thick wire should be used to make this
connection between the ground plane of the DRAM
board and the ground pin of the power connector to
the Sharc EZ-KIT Lite board.
Twisted pairs of wires are used for all data lines,
address lines, and control signals with the looping
wire grounded to reduce signal interference. Same
method is used for the clock signal but with thicker
wire.
1. A JTAG connector that allows the users to
easily program the PLD using a parallel
EZJTAG download cable from Xilinx.
2. An optional socket to hold the Xtal if an
external clock is used.
3. Power connector. An external power source
that can provide at least 1.5A must be used
to satisfy the demand of the DRAM.
Figure 8: Twisted Pair of
Wires
DRAM
(MT8D432M-6x)
External
power
source
J1
Optional
Xtal Clock
J6
SHAR
J3
EZ-ICE
Connector
Sharc EZ-Kit
Lite External
Connectors
Xilinx
Xilinx
JTAG
Connector
J21
Xilinx PLD
(XC9510810PC84)
Common
Ground
Power to
Sharc EZKIT
Figure 7: Components and Board Layout
EE-44
Page 6
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
Each VDD pin on the DRAM and the PLD has two
decoupling capacitors of .02uF and 1.0uF in
parallel. On the pin where the power supply is
brought into the board, two capacitors of .1uF and
22uF are used.
Note that on the Sharc EZ-KIT Lite board, there is
an EZ-ICE connector which allows the users to
attach an EZ-ICE and use this emulator to debug
the DRAM Controller.
IV.
Possible Design Modifications and
Improvement
*** Important Notes about This Design ***
However, the DRAM Controller has only been
tested with a 40Mhz clock taken from the Sharc EZKIT Lite board. This means there are two possible
improvements for speed.
1.
60 Mhz clock is used:
In this Design we use an external EPSON
Americana 60 Mhz Oscilator(SG-615PCV) in
addition to the other hardware to make the
controller function faster. In the Appendix of this
EE Note we provide
App. 1.
App. 2.
App. 3.
App. 4.
2.
Abel Source Code: consists of
equations to implement the refresh
timer, mux’ , and the state machine for
the controller. The Abel code has been
synthesized and fitted using the
Foundations Series Tool Suite
Schematics: is drawn using OrCAD.
J1, J3, and J6 are the actual
connectors on the Sharc EZ-Kit Lite
board.
Layout
Overall Layout
It is also recommended to optimize the logic of the
state-machine for better performance, especially
those states that extend the /CAS and /RAS control
signals.
Of course, another solution to this design problem
would be changing the entire approach to a more
effective method. If the controller is run at a fast
clock speed, it is possible just to program waitstates
on the SHARC and not use the ACK signal at all. If
a refresh request occurs during a burst of write or
read cycles, the controller may assert the Suspend
Bus Tri-State (/SBTS) signal to halt the dsp, and
then service the refresh. This way the SHARC will
not occupy the address bus and data bus while the
controller is refreshing the DRAM. If there are
other external devices to the system, these devices
may make use of the bus while the dsp is halting.
/SBTS may also be used during a page swapping
cycle. The controller latches in the new row address
before asserting /SBTS. When the address lines of
the dsp become tri-stated, the controller puts back
the row address onto the bus and asserts /RAS to
update the page in the DRAM. Then, it releases
/SBTS to continue the memory access normally.
V.
Conclusion
This design has been tested to work quite
successfully. However, this is not the optimal
design as far as speed is concerned. Once in a
while, it is still subjective to noise, especially when
all or most of the data lines switch to high at the
same time causing a few glitches on some control
signals. If someone tries to duplicate this process, it
is recommended that further measures be taken to
clean out such noises. For example, putting a
capacitor and a resistor (with calculated values) in
series near input pins to the Sharc might help
reduce reflection on these transmission lines.
66Mhz or higher clock is used:
If a faster external clock is used as originally
intended for this design, then other considerations
have to be taken into account. The immediate
benefit would be speed. However, there will be
timing issues such as making Ack meet the setup
and hold time so that the Sharc can sample
correctly. Another potential problem is that
running a 66Mhz will introduce more noise to the
system, especially for a wire-wrapping board.
EE-44
Page 7
Notes on using Analog Devices’ DSP, audio, & video components from the Computer Products Division
Phone: (800) ANALOG-D or (781) 461-3881, FAX: (781) 461-3010, EMAIL: dsp.support@analog.com
Dramctrl
MODULE DramCtrl
title 'Dram Controller';
"Input signals"
Reset_
DramClkin
pin 81
pin 9
istype 'reg';
istype 'reg'; "Ext 60MHz Cloc
MS0_
RD_
WR_
Page
A00,A01,A02,A03,A04
A05,A06,A07,A08,A09,A10
A11,A12,A13,A14,A15
A16,A17,A18,A19,A20,A21
pin
pin
pin
pin
pin
pin
pin
pin
istype
istype
istype
istype
istype
istype
istype
istype
k
"Input/Output"
RFQ
ut to Controller's Input"
RFC
Output to Timer's Input"
"Output signals"
RAS_
CAS_
WR_DRAM_
Ack
be in sync with SHARC Clk
MuxSel
: ColAddr
Y00,Y01,Y02,Y03,Y04
Y05,Y06,Y07,Y08,Y09,Y10
q0, q1, q2, q3
State Machine
t0, t1, t2, t3, t4
t5, t6, t7, t8, t9
53
36
35
33
80,79,77,76,75
74,72,71,70,69,68
67,66,65,63,62
61,58,57,56,55,54
'reg';
'reg';
'reg';
'reg';
'com';
'com';
'com';
'com';
pin 50
istype 'reg';
"Timer's Outp
pin 51
istype 'reg';
"Controller's
pin
pin
pin
pin
istype
istype
istype
istype
24
25
26
34
'reg';
'reg';
'reg';
'reg';
"Ack needs to
pin 52
istype 'reg';
"H: RowAddr; L
pin 11,12,13,14,15
pin 17,18,20,21,23,19
pin 43,44,45,46
istype 'com';
istype 'com';
istype 'reg';
"Variables for
pin 82,83,84,1,2
pin 3,4,5,6,7
istype 'reg';
istype 'reg';
xepld property 'FAST ON'; "Special Setting for Xilinx CPLD
declarations
S0 =
S4 =
S8 =
S12 =
[0,0,0,0];
[0,1,0,0];
[1,0,0,0];
[1,1,0,0];
S1
S5
S9
S13
=
=
=
=
[0,0,0,1];
[0,1,0,1];
[1,0,0,1];
[1,1,0,1];
S2
S6
S10
S14
=
=
=
=
[0,0,1,0];
[0,1,1,0];
[1,0,1,0];
[1,1,1,0];
S3
S7
S11
S15
=
=
=
=
[0,0,1,1];
[0,1,1,1];
[1,0,1,1];
[1,1,1,1];
"Intermediate variables
"use the following line for actual code : cnt_ref = 930;
CNT_REF = t9 & t8 & t7 & !t6 & t5 & !t4 & !t3 & !t2 & t1 & !t0;
"use the following line for simulation : cnt_ref = 31;
"CNT_REF = !t9 & !t8 & !t7 & !t6 & !t5 & t4 & t3 & t2 & t1 & t0;
count = [t9,t8,t7,t6,t5,t4,t3,t2,t1,t0];
lowerAddr = [A10,A09,A08,A07,A06,A05,A04,A03,A02,A01,A00];
upperAddr = [A21,A20,A19,A18,A17,A16,A15,A14,A13,A12,A11];
fsmState = [q3,q2,q1,q0];
SCLR = !Reset_ # CNT_REF;
C,H,L,Z = .C.,1,0,.Z.;
equations
App. 1-1
Dramctrl
[q3,q2,q1,q0].clk = DramClkin;
[RAS_,CAS_,WR_DRAM_,Ack].clk = DramClkin;
[RFQ,RFC].clk = DramClkin;
[MuxSel].clk = !DramClkin;
[t0,t1,t2,t3,t4,t5,t6,t7,t8,t9].clk = DramClkin;
Ack.oe=Reset_; " This is used to disable Ack when EZ-Kit Lite is booting.
"This reset is separate from Sharc Reset. This is a temporary
"work around. So that the UART and the DRAM don't conflict.
"Below
t0 :=
t1 :=
t2 :=
t3 :=
t4 :=
t5 :=
t6 :=
t7 :=
t8 :=
t9 :=
is the refresh timer:
(!t0) & !SCLR;
(t1 $ t0) & !SCLR;
(t2 $ (t1 & t0)) & !SCLR;
(t3 $ (t2 & t1 & t0)) & !SCLR;
(t4 $ (t3 & t2 & t1 & t0)) & !SCLR;
(t5 $ (t4 & t3 & t2 & t1 & t0)) & !SCLR;
(t6 $ (t5 & t4 & t3 & t2 & t1 & t0)) & !SCLR;
(t7 $ (t6 & t5 & t4 & t3 & t2 & t1 & t0)) & !SCLR;
(t8 $ (t7 & t6 & t5 & t4 & t3 & t2 & t1 & t0)) & !SCLR;
(t9 $ (t8 & t7 & t6 & t5 & t4 & t3 & t2 & t1 & t0)) & !SCLR;
RFQ := !RFC & ((CNT_REF # RFQ.FB) & Reset_);
"Shown here is the Multiplexer for Row and Column Addresses.
Y00 = (A00 & !MuxSel ) # (A11 & MuxSel);
Y01 = (A01 & !MuxSel ) # (A12 & MuxSel);
Y02 = (A02 & !MuxSel ) # (A13 & MuxSel);
Y03 = (A03 & !MuxSel ) # (A14 & MuxSel);
Y04 = (A04 & !MuxSel ) # (A15 & MuxSel);
Y05 = (A05 & !MuxSel ) # (A16 & MuxSel);
Y06 = (A06 & !MuxSel ) # (A17 & MuxSel);
Y07 = (A07 & !MuxSel ) # (A18 & MuxSel);
Y08 = (A08 & !MuxSel ) # (A19 & MuxSel);
Y09 = (A09 & !MuxSel ) # (A20 & MuxSel);
Y10 = (A10 & !MuxSel ) # (A21 & MuxSel);
state_diagram [q3,q2,q1,q0];
"******************Idle/Reset State*********************
State S0:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (RFQ)
THEN S1 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!MS0_)
THEN S8 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
"******************Refreshing states********************
State S1:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S2 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
State S2:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
App. 1-2
Dramctrl
ELSE
Goto S3 WITH {RAS_ := 1; CAS_ := 0; WR_DRAM_ := 1;}
State S3:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S4 WITH {RAS_ := 0; CAS_ := 0; WR_DRAM_ := 1;}
State S4:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S5 WITH {RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1;}
State S5:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S6 WITH {RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1;}
State S6:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S7 WITH {RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1; RFC := 1;}
State S7:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!MS0_)
THEN S8 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
"*****************PageSwap State*****************************
State S8:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S9 WITH {MuxSel := 1; RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
State S9:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S10 WITH {MuxSel := 1; RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
State S10:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S11 WITH {MuxSel := 1; RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1;}
State S11:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
Goto S12 WITH {MuxSel := 1; RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1;}
"*****************Waiting for RD/WR State after PageSwap************
State S12:
App. 1-3
Dramctrl
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!RD_)
THEN S14 WITH {RAS_ := 0; CAS_ := 0; WR_DRAM_ := 1; Ack := 0;}
ELSE IF (!WR_)
THEN S14 WITH {RAS_ := 0; CAS_ := 0; WR_DRAM_ := 0; Ack := 0;}
ELSE
Goto S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
"*****************Waiting for RFQ or next mem access****************
State S13:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (RFQ)
THEN S1 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!MS0_ & Page)
THEN S8 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!MS0_ & !Page & !RD_)
THEN S14 WITH {RAS_ := 0; CAS_ :=0; WR_DRAM_ := 1; Ack := 0;}
ELSE IF (!MS0_ & !Page & !WR_)
THEN S14 WITH {RAS_ := 0; CAS_ :=0; WR_DRAM_ := 0; Ack := 0;}
ELSE
Goto S13 WITH {RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1;}
"*****************Extending CAS/RAS State****************************
State S14:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE IF (!RD_)
THEN S15 WITH {RAS_ := 0; CAS_ :=1; WR_DRAM_ := 1; Ack := 1;}
ELSE IF (!WR_)
THEN S15 WITH {RAS_ := 0; CAS_ :=1; WR_DRAM_ := 1; Ack := 1;}
ELSE
GOTO S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
State S15:
IF (!Reset_)
THEN S0 WITH {RAS_ := 1; CAS_ := 1; WR_DRAM_ := 1;}
ELSE
GOTO S13 WITH {RAS_ := 0; CAS_ := 1; WR_DRAM_ := 1; Ack := 0;}
END DramCtrl
App. 1-4
4
ADDR0
ADDR1
ADDR2
ADDR3
ADDR4
ADDR5
ADDR6
ADDR7
ADDR8
ADDR9
ADDR10
1
JP1
2
B
B
VDD
11
12
13
14
15
17
18
20
21
23
19
82
83
84
1
2
3
4
5
6
7
24
25
26
1
3
60
Mhz
OUT
OE
4
VDD
GND
Created:
Modified:
C
C
Y1
Clock
CAS0*
CAS1*
CAS2*
CAS3*
RAS0*
RAS2*
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
PRD2
PRD3
PRD4
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
U1
VDD
12
13
14
15
16
17
18
28
31
32
19
11
29
33
35
36
37
38
45
46
48
66
71
68
69
70
44
34
40
43
41
42
47
D
DQ1
DQ2
DQ3
DQ4
DQ5
DQ6
DQ7
DQ8
DQ9
DQ10
DQ11
DQ12
DQ13
DQ14
DQ15
DQ16
DQ17
DQ18
DQ19
DQ20
DQ21
DQ22
DQ23
DQ24
DQ25
DQ26
DQ27
DQ28
DQ29
DQ30
DQ31
DQ32
2
4
6
8
20
22
24
26
49
51
53
55
57
61
63
65
3
5
7
9
21
23
25
27
50
52
54
56
58
60
62
64
CAS DWG NO
Dwg. Scale is:
E
DATA16
DATA17
DATA18
DATA19
DATA20
DATA21
DATA22
DATA23
DATA24
DATA25
DATA26
DATA27
DATA28
DATA29
DATA30
DATA31
DATA32
DATA33
DATA34
DATA35
DATA36
DATA37
DATA38
DATA39
DATA40
DATA41
DATA42
DATA43
DATA44
DATA45
DATA46
DATA47
Sheet:
E
1
1.0
of
2
Revision
NOTE: The Jumper is placed so that the Controller can be set
in reset state while the SHARC EZKIT LITE uses the ACK
signal. In other words the ACK of UART will not conflict
with ACK of Controller. If jumper isn't used the SHARC
EZ-ICE program will still work; simply connect Reset of
controller with reset of EZKIT LITE.
DRAM
MT8D432M-6X
DRAM Controller
DRAM
WE*
C.K.P.
Controller
CAGE Code
Internal
D
ControllerSchematic.dsn
Schematic File Name:
A
Size
C.K.P.
Monday, December 08, 1997
Tuesday, June 30, 1998
Approved By:
Checked By:
Drafted By:
Designed By:
2
JUMPER
VDD
ACK
Y00
Y01
Y02
Y03
Y04
Y05
Y06
Y07
Y08
Y09
Y10
T0
T1
T2
T3
T4
T5
T6
T7
T8
T9
RAS*
CAS*
WR_DRAM*
43
44
45
46
HW DEVELOPMENT TOOLS ENG.
Q0
Q1
Q2
Q3
Controller
34
A
U2
A00
A01
A02
A03
A04
A05
A06
A07
A08
A09
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
RFQ
RFC
MUXSEL
TDI
TDO
TMS
TCK
ACK
P A G E W R * R D *MS0*
80
79
77
76
75
74
72
71
70
69
68
67
66
65
63
62
61
58
57
56
55
54
50
51
52
28
59
29
30
22
38
64
73
78
GND
GND
GND
GND
GND
GND
ADDR11
ADDR12
ADDR13
ADDR14
ADDR15
ADDR16
ADDR17
ADDR18
ADDR19
ADDR20
ADDR21
TDI
TDO
TMS
TCK
Controller
VCC
VCC
VCC
VCC
VCC
Analog Devices
Computer Products Division
Three Technology Way
P.O. Box 9106
Norwood, MA 02062-9106
PRD1
81
8
16
27
42
49
60
3
2
1
A
67
RESET*
10
30
59
VSS
VSS
VSS
9
DRAMCLKIN
TIE
TIE
TIE
TIE
TIE
TIE
TIE
TIE
TIE
VCC
VCC
VCC
1
72
39
33
35
36
53
PAGE
WR*
RD*
MS0*
10
31
32
37
39
40
41
47
48
4
3
2
1
4
3
2
1
MS0*
ADDR20
ADDR18
ADDR16
ADDR13
ADDR11
ADDR10
ADDR8
ADDR5
ADDR3
ADDR1
GND
TMS
TDI
TDO
TCK
A
A
J3
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
GND
VDD
TCK
TDI
TDO
TMS
J5
HEADER 25X2
VDD
17
13
11
7
3
1
VDD
B
ADDR21
ADDR19
ADDR17
ADDR15
ADDR14
ADDR12
ADDR9
ADDR7
ADDR6
ADDR4
ADDR2
ADDR0
Xilinx Jtag Header
DATA43
DATA45
DATA47
PAGE
RD*
HW DEVELOPMENT TOOLS ENG.
B
Analog Devices
Computer Products Division
Three Technology Way
P.O. Box 9106
Norwood, MA 02062-9106
J1
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
C
VDD
DATA42
DATA44
DATA46
ACK
WR*
D
DATA18
DATA20
DATA21
DATA23
DATA26
DATA28
DATA30
DATA32
DATA35
DATA37
DATA39
GND
C.K.P.
CAGE Code
DRAM Controller
Internal
Connectors
Size
D
ControllerSchematic.dsn
Schematic File Name:
A
C.K.P.
HEADER 20X2
Designed By:
Drafted By:
Checked By:
Tuesday, December 09, 1997
Tuesday, June 30, 1998
Approved By:
Created:
Modified:
C
J6
1
3
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
HEADER 25X2
CAS DWG NO
Dwg. Scale is:
VDD
E
DATA16
DATA17
DATA19
2
DATA22
DATA24
DATA25
DATA27
DATA29
DATA31
DATA33
DATA34
DATA36
DATA38
DATA40
DATA41
Sheet:
E
1.0
2
Revision
of
4
3
2
1
J3
L I T E
SHARC
E Z - K I T
E P R O M
U 7
S H A R C
J1
a
J6
J6
L O O K
A T
A d d r [ 0 : 1 0 ]
F O R
P i n 3
6 0 M H Z
C L K
J T A G
H e a d e r
S i d e
S i g n a l s
B o t t o m o f
S o l d e r
X i l i n x
C P L D
B o t t o m o f
C h i p
A H 1 & A H 2
S i m m
J3
t o
C P L D
B F 1 & B F 2
C o n n e c t e d
t o
C O N N E C T I O N S .
C o n n e c t e d
P I N O U T
P L A N E
E X A C T
R A S * , C A S * , W E *
J1
T A B L E
D R A M S i m m M o d u l e
B o t t o m V i e w
G R O U N D
A C 1 9 & A D 1 9
Y [ 0 : 1 0 ]
A G 4 2 & A G 4 3
B E 4 2 & B E 4 3
P L E A S E
A C 3 8 & A D 3 8
A H 1 & A H 2
B F 1 & B F 2
J3
P L E A S E
T o p
o f
L O O K
J T A G
H e a d e r
J1
o f
E X A C T
B o t t o m
F O R
1 1
6 0 M H Z
C L K
T A B L E
1
T o p o f
C h i p
X i l i n x
C P L D
A T
A C 1 9 & A D 1 9
V O L T A G E
H e a d e r
E n d
A C 3 8 & A D 3 8
J6
A G 4 2 & A G 4 3
B E 4 2 & B E 4 3
C O N N E C T I O N S .
S o l d e r
P I N O U T
P L A N E
E n d
S o l d e r
H e a d e r
o f
B o t t o m
V i e w
T o p
M o d u l e
S i m m
D R A M
E n d
S o l d e r
H e a d e r
o f
B o t t o m
S H A R C
T o p
E Z - K i t
B o a r d
i s
L i t e
t h e
i s
P r o t o
u p s i d e
B o a r d
d o w n
o n
f a c i n g
b o t t o m
u p .
Download