CY7C027/028
CY7C037/038
PRELIMINARY
15
Architecture
The CY7C027/028 and CY7C037/038 consist of an array of
32K and 64K words of 16 and 18 bits each of dual-port RAM
cells, I/ O and add ress li nes, and c ontrol signal s (CE
, OE, R/W).
These control pins permit independent access for reads or writes to
any location in memory. To handle simultaneous writes/reads to the
same location, a BUSY
pin is provided on each port. Two interrupt
(INT
) pins can be utilized f or port-to-port communication. Two sema-
phore (SEM
) control pins are used for allocating sh are d resources.
With the M/S
pin, the devices can function as a master (BUSY pi ns
are outputs) or as a slave (BUSY
pins are inputs). The devices also
have an automatic power-down feature controlled by CE
. Each port
is provided with its own output enable control (OE
), which allows data
to be read from the device.
Functional Description
Write Operation
Data must be set up for a duration of t
SD
before the rising edge
of R/W
in order to guarantee a valid write. A write operation is con-
trolled by either the R/W
pin (see Write Cycle No. 1 wavef orm) or the
CE
pin (see Write Cycle No. 2 waveform). Required inputs for
non-contention operations are summarized in
Table 1
.
If a location is being written to by one port and the opposite
port attempts to read that location, a port-to-port flowthrough
delay m ust occur before the data is read on the output; otherwise the data read is not deterministi c. Data will be va lid on the
port t
DDD
after the data is presented on the other port.
Read Operation
When reading the device, the user must assert both the OE
and CE pins. Data will be available t
ACE
after CE or t
DOE
after OE is
asserted. If the user w ishes to access a semaph ore flag, then the
SEM
pin must be asserted instead of the CE pin, and OE must also
be asserted.
Interrupts
The upper two memory locations may be used for message
passing. The highest memory location (7FFF for the
CY7C027/37, FFFF f or the CY7C028/38) is the mail box f or the
right port and the second-highest memory location (7FFE for
the CY7C027/37, FFFE for the CY7C028/38) is the mailb ox f or
the left port. When one port writes t o the other port’s mailbox,
an interrupt is generated to the owner. The interrupt is reset
when the owner reads the contents of the mailbox. The message is user defined.
Each port can read the other port’s mailbox without resetting
the interrupt. The active state of the busy signal (to a port)
preve nts the port from sett ing th e inter rupt to t he winni ng port.
Also, an active busy to a port prevents that port from reading
its own mailbox and, thus, resetting the interrupt to it.
If an application does not require message passing, do not
connect the interrupt pin to the processor’s interrupt request
input pin.
The operation of the interrupts and their interaction with Busy
is summarized in
Table 2.
Busy
The CY7C027/028 an d CY7C03 7/038 pr o vide o n-chip arbitr ation to r esolv e sim ult aneous mem ory loca tion a cces s (cont en-
tion). If both ports’ CE
s are asserted and an address match occurs
within t
PS
of each other, the busy logic will determine which port has
access. If t
PS
is violated, one port will definitely gain permission to the
location, but it is not predictable which por t w ill get t hat permission.
BUSY
will be asserted t
BLA
after an address match or t
BLC
after CE
is taken LOW .
Master/Slave
A M/S
pin is provided in order to expand the word width by configuring
the device as either a master or a slave. The BUSY
output of the
master is connected to the BUSY
input of the slave. This will allow the
device to interface to a master device with no external components.
Writing to slave devices must be delayed until after the BUSY
input
has settled (t
BLC
or t
BLA
), otherwise, the slav e chip may begin a write
cycle during a contention situation. When tied HIGH, the M/S
pin al-
lows the device to be used as a master and, therefore, the BUSY
line
is an o utp ut. B USY
can then be used to send the arbitration outcome
to a slave.
Semaphore Operation
The CY7C027/028 and CY7C037/038 provide eight semaphore latches , whi ch are separate from the dual-port memory
locations. Se maphor es ar e used t o rese rve resour ces that are
shared between the two ports. The state of the semaphore indicates that a resource is in use. For example, if the left port
wants to request a given resource, it sets a latch by writing a
zero to a semaphore location. The left port then verifies its
success in setting the latch by reading it. After writing to the
semaphore, SEM
or OE must be deasser ted for t
SOP
before attempting to read the semaphore. The semaphore value will be available t
SWRD
+ t
DOE
after the rising edge of the semaphore write. If the
left port was successful (reads a zero), it assumes control of the
shared resource, otherwise (reads a one) it assum es th e right port
has control and continues to poll the semaphore. When the right side
has relinquished control of the semaphore (by writing a one), the left
side will succeed in gaining control of the semaphore. If the left side
no longer requires the semap hore, a one is wri tten to cancel its request.
Semaphores are accessed by asserting SEM
LOW. Th e SEM
pin functions as a chip select for the semaphore latches (CE must
remain HIGH during SEM
LOW). A
0–2
represents the semaphore
address. OE
and R/W are used in the same manner as a normal
memory access. When w riting or reading a semap hore, the other
address pins have no effect.
When writing to the semaphore, only I/O
0
is used. If a zero is
written to the left port of an available semaphore, a one will appear at
the same semaphore address on the right port. That semaphore can
now only be mo dified by the side showing zero (the left por t in t his
case). If the left port now relinquishes control by writing a one to the
semaphore, the semaphore will be set to one for both sides. However,
if the right port had requested the semaphore (written a zero) while
the left port ha d control, the right port would imm ediately own the
semaphore as soon as the left port released it.
Table 3
shows sam-
ple semaphore operations.
When reading a semaphore, all sixteen/eighteen data lines
output the semaphore value. The read value is latched in an
output register to prevent the semaphor e from changing state
during a write from the other port. If both ports attempt to access the semap hore with in t
SPS
of each other, the semaphore will
definitely be obtained by one side or the other, but there is no guarantee which side will control the semaphore.