TM1100 Preliminary Data Book
Philips Semiconductors
14-2
PRELIMINARY INFORMATION
File: vld.fm5, modified 7/26/99
One of the VLD output DMAs has completed and the
VLD is stalled because the output FIFO is full
The DSPCPU can be interrupted whenever the VLD
halts.
Consider the case in which the VLD has encountered a
start code. At this point, the VLD will halt and set the sta-
tus flag which indicates that a start code has been de-
tected. This event will generate an interrupt to the
DSPCPU (if corresponding interrupt is enabled). Upon
entering the interrupt routine, the DSPCPU will read the
VLD status register to determine the source of the inter-
rupt. Once it has been determined that a start code has
been encountered, the CPU will read 8 bits from the VLD
shift register to determine the type of start code that has
been encountered. If a slice start code has been encoun-
tered, the DSPCPU will read from the shift register the
slice quantization scale and any extra slice information.
The slice quantization scale will then be written back to
the VLD quantizer-scale register. Before exiting the inter-
rupt routine, the DSPCPU will clear the start code detect-
ed status bit in the status register and issue a new com-
mand to process the remaining macroblocks.
14.3
DECODING UP TO A SLICE
MPEG decoding up to the slice layer is carried out by the
DSPCPU and the VLD. The VLD is controlled by the
DSPCPU for the decoding of all parameters up to the
slice-start code. During this process, the DSPCPU reads
from the VLD_SR register which contains the next 16 bits
of the bitstream. The DSPCPU also issues shift com-
mands to the VLD in order to advance the contents of the
shift register by the specified number of bits. The
DSPCPU may also command the VLD to advance to the
next start code. Refer
Table 14-6 for the complete VLD
commands and their functions. Once at the slice layer,
the VLD operates independently for the entire slice de-
coding. The slice decoding starts once the DSPCPU is-
sues a
parse command.
14.4
VLD INPUT
Input to the VLD is controlled by the VLD input DMA en-
gine. The input DMA engine is programmed by the
DSPCPU to read from the main memory. The DSPCPU
programs this DMA engine by writing the address and
the length of the main memory buffer containing the
MPEG stream. The address of the buffer is written to the
VLD_BIT_ADR register. The length, in bytes, of the buff-
er is written to the VLD_BIT_CNT register.
The VLD reads data from main memory into an internal
64-byte FIFO. The VLD processing engine then reads
data from the FIFO as needed. Once this internal FIFO
is empty the VLD reads more data from main memory.
Esc Count
MBA Inc
MB Type
Mot Type DCT Type
MV count
MV Format
DMV
MV Field Sel [0][0]
Motion Code [0][0][1]
Motion Residual [0][0][0]
Motion Residual [0][0][1]
Motion Code [0][0][0]
MV Field Sel [1][0]
Motion Code [1][0][1]
Motion Residual [1][0][0]
Motion Residual [1][0][1]
Motion Code [1][0][0]
MV Field Sel [0][1]
Motion Code [0][1][1]
Motion Residual [0][1][0]
Motion Residual [0][1][1]
Motion Code [0][1][0]
MV Field Sel [1][1]
Motion Code [1][1][1]
Motion Residual [1][1][0]
Motion Residual [1][1][1]
Motion Code [1][1][0]
quant scale
CBP
dmvector[0]
dmvector[1]
31
First Forward Motion Vector
Second Forward Motion Vector (for MPEG2 only)
First Backward Motion Vector
Second Backward Motion Vector (for MPEG2 only)
0
1
2
3
4
6
11
17
25
7
15
23
29
30
31
13
7
15
23
29
30
31
13
7
15
23
29
30
31
13
7
15
23
29
30
31
13
4
10
12
14
31
Figure 14-2. MPEG2 Macroblock Header Output Format.
w1
w2
w3
w4
w5
w0
MB1
MB2