
Memories BRAM80K
Speedster22i Macro Cell Library
AchronixSemiconductorProprietary PAGE 99
Table 6-13: BRAM Output Function Table for Latched Mode (Assumes active-high clock, port enable,
and latch reset value)
Operation
pea
(p
eb)
wea
(web)
rstlatcha
(rstlatchb)
porta_write_mode
(portb_write_mode)
clka
(clkb)
douta (doutb)
Table 6-14: BRAM Output Function Table for Registered Mode (Assumes active-high clock, output
register clock enable, and output register reset)
Operation
porta_regce_priority
(po
rtb_regce_priority)
rstrega
(rstregb)
outregcea
(outregceb)
clka
(clkb)
douta (doutb)
Hold X X X X
Hold “rstreg” 0 0
Update
Output
“rstreg” 0 1 latcha_output
(latchb_o
utput)
Reset
Output
“rstreg” 1 X porta_srval
(por
tb_srval)
Hold “regce” X 0
Update
Output
“regce” 0 1 latcha_output
(latchb_o
utput)
Reset
Output
“regce” 1 1 porta_srval
(por
tb_srval)
Simultaneous Memory Operations
Memory operations may be performed simultaneously from both sides of the memory,
howeverthereisa restrictionwithmemory collisions.Amemorycollision isdefined asthe
condition where both of the ports access the same memory address within the same clock
cycle (both ports connected to the same clock), or withi
n a TBD ps window (if each port is
connected to a different clock). Simultaneous read operations to the same address by both
portsisallowedandwillproducevaliddataoneachoftheports.Ifoneoftheportsiswriting
an addresswhile theotherport isreading the same addr
ess,the write operation willoccur,
buttheread datawillbeinvalid.Theusermayreliablyreadthedatathenextcycleifthereis
nolongerawritecollision.Ifbothportswritethesameaddressatthesametime,thememory
contents for that memory addres
s will become invalid.While simultaneously writing the
sameaddressfrombothportswillinvalidatethedata,nodamagetothehardwarewilloccur.
Note that for the speci
al case of the BRAM80K having both ports configured for write_first
mode, a write‐write collision will corrupt the memory contents, but the user will see the
Hold X X X X X
douta_pr
evious
(doutb_previous)
Hold 0 X X X
douta_previous
(doutb_previous)
Reset
Output
1X 1 X
porta_srval
(portb_srval)
Read 1 0 0 X
mem[addra]
(mem[addrb])
Write 1 1 0 “write-first” dina (dinb)
Write 1 1 0 “no_change”
douta_previous
(doutb_previous)
douta_previous
(doutb_previous)
douta_pr
evious
(doutb_previous)
douta_pr
evious
(doutb_previous)
Commentaires sur ces manuels