DR
AFT
DR
AFT
DRAFT
DR
D
RAFT
DRAFT
DRA
FT DRAF
D
RAFT DRAFT DRAFT DRAFT DRAFT D
DRAFT
D
RAFT DRA
FT DRAFT DRAFT DRAFT DRA
UM10316_0
© NXP B.V. 2008. All rights reserved.
User manual
Rev. 00.06 — 17 December 2008
509 of 571
NXP Semiconductors
UM10316
Chapter 28: LPC29xx Flash/EEPROM
4.3 EEPROM BIST
The BIST operation is started by programming a start address, an end address and
setting the BIST start bit. Now two 16-bit signatures will be calculated from the data within
the programmed memory range (the range includes both the stop and start addresses).
During the BIST the memory range that was programmed is stepped through by 16-bit
read operations. One of the signatures is calculated from the 16-bit read data, while the
other signature is calculated from the eight parity bits belonging to the 16-bit data. There
are separate signatures for both data and parity bits because a fault in the parity bits is not
considered to be a fatal fault, while a fault in the data bits is considered to be fatal.
Fig 130. Algorithm for generating a 128 bits signature
signature128 = sign
nextSign[127] = f_Q[address][127]
XOR
sign[0]
XOR
sign[2]
XOR
sign[27]
XOR
sign = 0
FOR
address = FMSTART.FMSTART
TO
FMSTOP.FMSTOP
{
FOR
i = 0
TO
126
nextSign[i] = f_Q[address][i]
XOR
sign[i+1]
sign = nextSign
}
sign[29]
Fig 131. Parity bits BIST signature calculation
sign = 0
FOR
address = EEMSSTART.STARTA
TO
EEMSSTOP.STOPA
{
FOR
i = 0
TO
7
nextSign[i] = EDO[address][i]
XOR
sign[i+1]
nextSign[8] = all0
XOR
sign[9]
nextSign[9] = all1
XOR
sign[10]
FOR
i = 10
TO
14
nextSign[i] = sign[i+1]
nextSign[15] = sign[0]
XOR
sign[4]
XOR
sign[13]
XOR
sign[15]
sign = nextSign
}
signature16 = sign