
1999 Apr 02
30
Philips Semiconductors
Product specification
Digital camera USB interface IC
SAA8117HL
8.8
USB video FIFO
The USB video FIFO is programmed via the I
2
C-bus
(see Fig.22). The FIFO is designed to achieve three
different packets containing video on the isochronous USB
channel. Video data is contained in a chain of equally sized
USB packets, except for the last packet of a video frame
which is always smaller. The video frames can be
separated from each other by one or more 0-length
packets. For low frame rates (below 10 frames/s) there are
always 0-length packets in the stream. The host can
synchronize on the smaller packets for the high frame
rates and on the 0-length packets for the low frame rates.
For every mode the FIFO must be adjusted. There are
three parameters to program the video FIFO:
I
2
C_Packet_Size: this value indicates the length of all
packets with video data except for the last packet of a
video frame
I
2
C_FIFO_Offset: this value indicates the number of
data in the FIFO before a new packet is transmitted over
the USB
I
2
C_Read_Spacing: this value indicates the number of
12 MHz clock cycles between read actions from the
FIFO.
Moreover the FIFO is enabled and disabled with
I
2
C_Active.
The write process to the FIFO is controlled by the transfer
buffer and is not programmable.
The read process is executed in the PSIE-MMU and is
driven by the USB frame interval (1 ms). Every frame
interval the PSIE-MMU tries to read I
2
C_Packet_Size
bytes from the FIFO. This read process will not be started
when a new video frame is stored in the FIFO and there
are less than I
2
C_FIFO_Offset bytes written. The read
process stops if the next bytes are of another video frame,
or if the read-pointer overtakes the write-pointer.
I
2
C_Read_Spacing determines the read rate. Its value can
easily be determined with the formula:
I
2
C_Read_Spacing
I
C_Packet_Size
-------------12000
<
Fig.22 USB video FIFO.
handbook, full pagewidth
WRITE
SYNC
FIFO
Ptr_to_start_Vframe
write
read
read
enable
data to PSIE-MMU
FCE151
data from transfer buffer
I
2
C_FIFO_Offset
I
2
C_Read_Spacing
I
2
C_Active
I
2
C_Packet_Size