
Spartan-3E FPGA Family: Functional Description
DS312 (v4.1) July 19, 2013
Product Specification
41
There are a number of different conditions under which data
can be accessed at the DO outputs. Basic data access
always occurs when the WE input is inactive. Under this
condition, data stored in the memory location addressed by
the ADDR lines passes through a output latch to the DO
outputs. The timing for basic data access is shown in the
which WE is Low.
Data also can be accessed on the DO outputs when
asserting the WE input based on the value of the
Setting the WRITE_MODE attribute to a value of
location on an enabled active CLK edge and is also passed
to the DO outputs. WRITE_FIRST timing is shown in the
portion of
Figure 33 during which WE is High.
Setting the WRITE_MODE attribute to a value of
location passes to the DO outputs before that location is
overwritten with new data from the DI inputs on an enabled
active CLK edge. READ_FIRST timing is shown in the
portion of
Figure 34 during which WE is High.
Table 26: WRITE_MODE Effect on Data Output Latches During Write Operations
Write Mode
Effect on Same Port
Effect on Opposite Port
(dual-port only with same address)
WRITE_FIRST
Read After Write
Data on DI and DIP inputs is written into specified
RAM location and simultaneously appears on DO and
DOP outputs.
Invalidates data on DO and DOP outputs.
READ_FIRST
Read Before Write
Data from specified RAM location appears on DO and
DOP outputs.
Data on DI and DIP inputs is written into specified
location.
Data from specified RAM location appears on DO and
DOP outputs.
NO_CHANGE
No Read on Write
Data on DO and DOP outputs remains unchanged.
Data on DI and DIP inputs is written into specified
location.
Invalidates data on DO and DOP outputs.
X-Ref Target - Figure 33
Figure 33: Waveforms of Block RAM Data Operations with WRITE_FIRST Selected
CLK
WE
DI
ADDR
DO
EN
DISABLED
READ
XXXX
1111
2222
XXXX
aa
bb
cc
dd
0000
MEM(aa)
1111
2222
MEM(dd)
READ
WRITE
MEM(bb)=1111
WRITE
MEM(cc)=2222
DS312-2_05_020905
Data_in
Internal
Memory
DO
Data_out = Data_in
DI