
NXP Semiconductors
PNX15xx/952x Series
Volume 1 of 1
Chapter 21: MPEG-1 and MPEG-2 Variable Length Decoder
PNX15XX_PNX952X_SER_N_4
NXP B.V. 2007. All rights reserved.
Product data sheet
Rev. 4.0 — 03 December 2007
21-662
3.4.1
Unexpected Start Code
When VLD encounters an unexpected start code, VLD sets the ‘Start Code Detected’
and ‘Bitstream Error’ ags (in VLD_MC_STATUS register). The start code value is left
in the shift register (VLD_SR). VLD interrupts the CPU, if one of the corresponding
interrupt bits in the VLD_IE register is enabled
3.4.2
RL Overow
If the VLD encounters a situation where the last data for a macroblock is being
emitted and the Run-Length code is not 0xFF, then the RL Overow error ag is
asserted and an interrupt is generated if the corresponding interrupt enable bit is set.
.
3.4.3
Flush
The
ush_cmd will be issued in two cases:
1. The bitstream contains error bits for a known amount of bytes and would like to
terminate the decoding at a particular byte-offset of the bitstream buffer, and
2. when CPU decides to switch the bitstream at the start of a new slice-start-code in
a new row.
The CPU will set the DMA_input_done_mode bit to ‘1’ in the VLD_CTL register for the
rst case.
The
ush_cmd will be issued when the VLD stops after interrupting the CPU for the
dma_input_done reason in the rst case, and when the VLD stops after interrupting
the CPU for the start_code_detected reason in the second case.
Table 8: VLD Error Handling
Cycle
No.
Action
Remarks
i
VLD sets the appropriate error bit in the
VLD_MC_STAUS register
The
vld_mc_error signal is formed by OR’ing together all
of the error bits in the VLD_MC_STATUS register is the
Hence any MC error also drives the vld_mc_error signal
high and the following error handling steps still apply
i to j
When the
vld_mc_error signal is high, VLD completes
any pending control or memory hwy. transactions.
The valid data in the DMA output buffers will be ushed
to the main memory.
Then VLD asserts the
vld_ready_to_reset signal and
waits for the CPU to reset.
Any DMA transactions, once started, will not be aborted
in the middle
k
If (vld_ready_to_reset) then the VLD interrupts the CPU.
Assumes k>j; otherwise it is jth cycle. The corresponding
interrupt enable (IE) bit in the VLD_IE register is ‘1’ for
the VLD to raise the interrupt.
l
CPU will perform the software reset.