640 3 243 @ 60 Fields/Sec — NTSC
Compression Ratios from Visually Loss-Less To 350:1
Visually Loss-Less Compression At 4:1 on Natural
Images (Typical)
APPLICATIONS
Nonlinear Video Editing
Video Capture Systems
Remote CCTV Surveillance
Digital Camcorders
Broadcast Quality Video Distribution Systems
Video Insertion Equipment
Image And Video Archival Systems
Digital Video Tape
High Quality Video Teleconferencing
Multiformat Video Codec
ADV601
GENERAL DESCRIPTION
The ADV601 is a very low cost, single chip, dedicated function,
all digital CMOS VLSI device capable of supporting visually
loss-less to 350:1 real-time compression and decompression of
CCIR-601 digital video at very high image quality levels. The
chip integrates glueless video and host interfaces with on-chip
SRAM to permit low part count, system level implementations
suitable for a broad range of applications.
The ADV601 is a video encoder/decoder optimized for real-time
compression and decompression of interlaced digital video. All
features of the ADV601 are designed to yield high performance
at a breakthrough systems-level cost. Additionally, the unique
sub-band coding architecture of the ADV601 offers you many
application-specific advantages. A review of the General Theory
of Operation and Applying the ADV601 sections will help you
get the most use out of the ADV601 in any given application.
The ADV601 accepts component digital video through the
Video Interface and outputs a compressed bit stream though the
Host Interface in Encode Mode. While in Decode Mode, the
ADV601 accepts a compressed bit stream through the Host
Interface and outputs component digital video through the
Video Interface. The host accesses all of the ADV601’s control
and status registers using the Host Interface. An optional Digital
Signal Processor (DSP) may be used for calculating quantization Bin Widths (BW) (instead of the host); the ADV601 sends
current field statistics and receives Bin Width results as a packet
I/O over the DSP serial port interface. A generic fixed-point DSP
(for instance the ADSP-2105) is more than adequate for these
calculations. Figure 1 summarizes the basic function of the part.
FUNCTIONAL BLOCK DIAGRAM
256K X 16-BIT DRAM
(FIELD STORE)
DRAM
MANAGER
DIGITAL
COMPONENT
VIDEO I/O
DIGITAL
VIDEO I/O
PORT
WAVELET
FILTERS,
DECIMATOR, &
INTERPOLATOR
ON-CHIP
TRANSFORM
BUFFER
REV. 0
Information furnished by Analog Devices is believed to be accurate and
reliable. However, no responsibility is assumed by Analog Devices for its
use, nor for any infringements of patents or other rights of third parties
which may result from its use. No license is granted by implication or
otherwise under any patent or patent rights of Analog Devices.
This data sheet gives an overview of the ADV601 functionality
and provides details on designing the part into a system. The
text of the data sheet is written for an audience with a general
knowledge of designing digital video systems. Where appropriate, additional sources of reference material are noted throughout the data sheet.
The ADV601 adheres to international standard CCIR-601 for
studio quality digital video. The codec also supports a range of
field sizes and rates providing high performance in computer,
PAL, NTSC, or still image environments. The ADV601 is
designed only for real-time interlaced video, full frames of video
are formed and processed as two independent fields of data.
The ADV601 supports the field rates and sizes in Table I. Note
that the maximum active field size is 768 by 288. The maximum
pixel rate is 14.75 MHz.
The ADV601 has a generic 8-/16-/32-bit host interface, which
includes a 512 position, 32-bit wide FIFO for compressed video.
With additional external hardware, the ADV601’s host interface
is suitable (when interfaced to other devices) for moving compressed video over PCI, ISA, SCSI, SONET, 10 Base T, ARCnet,
HDSL, ADSL, and a broad range of digital interfaces. For a full
description of the Host Interface, see the Host Interface section.
The compressed data rate is determined by the input data rate
and the selected compression ratio. The ADV601 can achieve a
near constant compressed bit rate by using the current field
statistics in the off-chip bin width calculator on the external
DSP or Host. The process of calculating bin widths on a DSP
or Host can be “adaptive,” optimizing the compressed bit rate
in real time. This feature provides a near constant bit rate out of
the host interface in spite of scene changes or other types of
source material changes that would otherwise create bit rate
burst conditions. For more information on the quantizer, see
the Programmable Quantizer section.
The ADV601 typically yields visually loss-less compression on
natural images at a 4:1 compression ratio. Desired image quality
levels can vary widely in different applications, so it is advisable
to evaluate image quality of known source material at different
compression ratios to find the best compression range for the
application. The sub-band coding architecture of the ADV601
provides a number of options to stretch compression performance. These options are outlined on in the Applying the
ADV601 section.
The DSP serial port interface (SPORT) enables performance of
Bin Width calculations on a DSP instead of the host. The ADV601
transfers current video field statistics to the DSP and receives Bin
Width data from the DSP as packet I/O through the DSP Interface. A generic fixed-point DSP (i.e., the ADSP-2105 low cost,
fixed-point DSP) is more than adequate for these calculations.
INTERNAL ARCHITECTURE
The ADV601 is composed of nine blocks. Four of these blocks
are interface blocks and five are processing blocks. The interface
blocks are the Digital Video I/O Port, the Host I/O Port, external DRAM manager, and the DSP serial I/O Port. The processing blocks are the Wavelet Kernel, the On-Chip Transform
Buffer, the Programmable Quantizer, the Run Length Coder,
and the Huffman Coder.
Digital Video I/O Port
Provides a real-time uncompressed video interface to support a
broad range of component digital video formats, including “D1.”
Host I/O Port and FIFO
Carries control, status, and compressed video to and from the
host processor. A 512 position by 32-bit FIFO buffers the compressed video stream between the host and the Huffman Coder.
DRAM Manager
Performs all tasks related to writing, reading, and refreshing the
external DRAM. The external host buffer DRAM is used for
reordering and buffering quantizer input and output values.
Serial Port (to Optional DSP)
Supports, during encode only, communication of wavelet statistics between the Wavelet Kernel and the DSP and quantizer
control information between the DSP and the Quantizer block.
The user programmed compression ratio is also sent from the
ADV601 host interface to the DSP automatically. Note that a
host processor can be used to replace the DSP functionality in
computer applications.
Wavelet Kernel (Filters, Decimator, and Interpolator)
Gathers statistics on a per field basis and includes a block of
filters, interpolators, and decimators. The kernel calculates
forward and backward bi-orthogonal, two-dimensional, separable wavelet transforms on horizontal scanned video data. This
block uses the internal transform buffer when performing wavelet transforms calculated on an entire image’s data and so
eliminates any need for extremely fast external memories in
an ADV601-based design.
On-Chip Transform Buffer
Provides an internal set of SRAM for use by the wavelet transform kernel. Its function is to provide enough delay line storage
to support calculation of separable two dimensional wavelet
transforms for horizontally scanned images.
Programmable Quantizer
Quantizes wavelet coefficients. Quantize controls are calculated
by the external DSP or host processor during encode operations
and de-quantize controls are extracted from the compressed bit
stream during decode. Each quantizer Bin Width is computed
by the BW calculator software to maintain a constant compressed bit rate or constant quality bit rate. A Bin Width is a per
block parameter the quantizer uses when determining the number of bits to allocate to each block (sub-band).
Run Length Coder
Performs run length coding on zero data and models nonzero
data, encoding or decoding for more efficient Huffman coding.
This data coding is optimized across the sub-bands and varies
depending on the block being coded.
Huffman Coder
Performs Huffman coder and decoder functions on quantized
run-length coded coefficient values. The Huffman coder/decoder uses three ROM-coded Huffman tables that provide excellent performance for wavelet transformed video.
GENERAL THEORY OF OPERATION
The ADV601 processor’s compression algorithm is based on the
bi-orthogonal (7, 9) wavelet transform, and implements field
independent sub-band coding. Sub-band coders transform twodimensional spatial video data into spatial frequency filtered
sub-bands. The quantization and entropy encoding processes
provide the ADV601’s data compression.
The wavelet theory, on which the ADV601 is based, is a new
mathematical apparatus first explicitly introduced by Morlet and
Grossman in their works on geophysics during the mid 80s.
This theory became very popular in theoretical physics and
applied math. The late 80s and 90s have seen a dramatic growth
in wavelet applications such as signal and image processing. For
more on wavelet theory by Morlet and Grossman, see Decompo-
sition of Hardy Functions into Square Integrable Wavelets of Constant Shape (journal citation listed in References section).
ENCODE
PATH
DECODE
PATH
WAVELET
KERNEL
FILTER BANK
ADAPTIVE
QUANTIZER
RUN LENGTH
CODER &
HUFFMAN
CODER
COMPRESSED
DATA
Figure 2. Encode and Decode Paths
References
For more information on the terms, techniques and underlying
principles referred to in this data sheet, you may find the following reference texts useful. A reference text for general digital
video principles is:
Jack, K., Video Demystified:A Handbook for the Digital Engineer
(High Text Publications, 1993) ISBN 1-878707-09-4
Three reference texts for wavelet transform background information are:
Vetterli, M., Kovacevic, J., Wavelets And Sub-band Coding
(Prentice Hall, 1995) ISBN 0-13-097080-8
Benedetto, J., Frazier, M., Wavelets: Mathematics And Applica-tions (CRC Press, 1994) ISBN 0-8493-8271-8
Grossman, A., Morlet, J., Decomposition of Hardy Functions intoSquare Integrable Wavelets of Constant Shape, Siam. J. Math.
Anal., Vol. 15, No. 4, pp 723-736, 1984
REV. 0
–3–
ADV601
THE WAVELET KERNEL
This block contains a set of filters and decimators that work on
the image in both horizontal and vertical directions. Figure 6
illustrates the filter tree structure. The filters apply carefully
chosen wavelet basis functions that better correlate to the broadband nature of images than the sinusoidal waves used in Discrete Cosine Transform (DCT) compression schemes (JPEG,
MPEG, and H261).
An advantage of wavelet-based compression is that the entire
image can be filtered without being broken into sub-blocks as
required in DCT compression schemes. This full image filtering
eliminates the block artifacts seen in DCT compression and
offers more graceful image degradation at high compression
ratios. The availability of full image sub-band data also makes
image processing, scaling, and a number of other system features possible with little or no computational overhead.
The resultant filtered image is made up of components of the
original image as is shown in Figure 3 (a modified Mallat Tree).
Note that Figure 3 shows how a component of video would be
filtered, but in multiple component video luminance and color
components are filtered separately. In Figure 4 and Figure 5 an
actual image and the Mallat Tree (luminance only) equivalent is
shown. It is important to note that while the image has been
filtered or transformed into the frequency domain, no compression has occurred. With the image in its filtered state, it is now
ready for processing in the second block, the quantizer.
Understanding the structure and function of the wavelet filters
and resultant product is the key to obtaining the highest performance from the ADV601. Consider the following points:
• The data in all blocks (except N) for all components are high
pass filtered. Therefore, the mean pixel value in those blocks
is typically zero and a histogram of the pixel values in these
blocks will contain a single “hump” (Laplacian distribution).
• The data in most blocks is more likely to contain zeros or
strings of zeros than unfiltered image data.
• The human visual system is less sensitive to higher frequency
blocks than low ones.
• Attenuation of the selected blocks in luminance or color components results in control over sharpness, brightness, contrast
and saturation.
• High quality filtered/decimated images can be extracted/created
without computational overhead.
Through leverage of these key points, the ADV601 not only
compresses video, but offers a host of application features. Please
see the Applying the ADV601 section for details on getting the
most out of the ADV601’s sub-band coding architecture in
different applications.
NML
BLOCK A IS HIGH PASS IN X AND DECIMATED BY TWO.
BLOCK B IS HIGH PASS IN X, HIGH PASS IN Y, AND DECIMATED BY EIGHT.
BLOCK C IS HIGH PASS IN X, LOW PASS IN Y, AND DECIMATED BY EIGHT.
BLOCK D IS LOW PASS IN X, HIGH PASS IN Y, AND DECIMATED BY EIGHT.
BLOCK E IS HIGH PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 32.
BLOCK F IS HIGH PASS IN X, LOW PASS IN Y, AND DECIMATED BY 32.
BLOCK G IS LOW PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 32.
I
K
H
J
G
F
C
E
A
D
B
BLOCK H IS HIGH PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 128.
BLOCK I IS HIGH PASS IN X, LOW PASS IN Y, AND DECIMATED BY 128.
BLOCK J IS LOW PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 128.
BLOCK K IS HIGH PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 512.
BLOCK L IS HIGH PASS IN X, LOW PASS IN Y, AND DECIMATED BY 512.
BLOCK M IS LOW PASS IN X, HIGH PASS IN Y, AND DECIMATED BY 512.
BLOCK N IS LOW PASS IN X, LOW PASS IN Y, AND DECIMATED BY 512.
Figure 3. Modified Mallat Diagram (Block Letters Correspond to Those in Filter Tree)
This block quantizes the filtered image based on the response
profile of the human visual system. In general, the human eye
cannot resolve high frequencies in images to the same level of
accuracy as lower frequencies. Through intelligent “quantization” of information contained within the filtered image, the
ADV601 achieves compression without compromising the visual
quality of the image. Figure 7 shows the encode and decode
data formats used by the quantizer.
Figure 8 shows how a typical quantization pattern applies over
Mallat block data. The high frequency blocks receive much larger
quantization (appear darker) than the low frequency blocks (appear
lighter). Looking at this figure, one sees some key point concerning
quantization: (1) quantization relates directly to frequency in
Mallat block data and (2) levels of quantization range widely from
high to low frequency block. (Note that the fill is based on a log
formula.) The relation between actual ADV601 bin width factors
and the Mallat block fill pattern in Figure 8 appears in Table II.
Y COMPONENT
393633
24
30
21
27
18
15
6
12
QUANTIZER - ENCODE MODE
9.7
WAVELET
DATA
15.0 BIN
NUMBER
SIGNEDSIGNED
UNSIGNED
6.10 1/BW
1/BW
SIGNED
UNSIGNED
8.8 BW
BW
15.17 DATA
0.5
QUANTIZER - DECODE MODE
SIGNED
23.8 DE-QUANTIZED
WAVELET DATA
Figure 7. Programmable Quantizer Data Flow
0
TRNC
SAT
15.0 BIN
NUMBER
9.7
WAVELET
DATA
40
373431
28
41
383532
29
9
3
Cb COMPONENT
25
16
22
13
19
10
7
1
4
Cr COMPONENT
26
17
23
14
20
8
2
REV. 0
11
5
LOW
QUANTIZATION OF MALLAT BLOCKS
HIGH
Figure 8. Typical Quantization of Mallat Data Blocks (Graphed)
–7–
ADV601
Table II. ADV601 Typical Quantization of Mallat Data Block
1
Data
MallatBin WidthReciprocal Bin
BlocksFactorsWidth Factors
The Mallat block numbers, Bin Width factors, and Reciprocal Bin Width
factors in Table II correspond to the shading per-cent fill) of Mallat blocks in
Figure 8.
THE RUN LENGTH CODER AND HUFFMAN CODER
This block contains two types of entropy coders that achieve
mathematically loss-less compression: run-length and Huffman.
The run-length coder looks for long strings of zeros and replaces
it with short hand symbols. Table III illustrates an example of
how compression is possible.
The Huffman coder is a digital compressor/decompressor that
can be used for compressing any type of digital data. Essentially,
an ideal Huffman coder creates a table of the most commonly
occurring code sequences (typically zero and small values near
zero) and then replaces those codes with some shorthand. The
ADV601 employs three fixed Huffman tables; it does not create
tables.
The filters and the quantizer increase the number of zeros and
strings of zeros, which improves the performance of the entropy
coders. The higher the selected compression ratio, the more
zeros and small value sequences the quantizer needs to generate.
The transformed image in Figure 5 shows that the filter bank
concentrates zeros and small values in the higher frequency
blocks.
Encoding vs. Decoding
The decoding of compressed video follows the exact path as
encoding but in reverse order. There is no need to calculate Bin
Widths during decode because the Bin Width is stored in the
compressed image during encode.
PROGRAMMER’S MODEL
A host device configures the ADV601 using the Host I/O Port.
The host reads from status registers and writes to control registers through the Host I/O Port.
An optional DSP can perform Bin Width calculations for the
ADV601. The ADV601 can transfer data from component
video statistics registers and receive data for Bin Width registers
as a packet I/O using the DSP I/O Port. Table IV illustrates the
format used to describe the ADV601’s read and write registers.
Table IV. Register Description Conventions
Register Name
Register Type (Indirect or Direct, Read or Write) and Address
Register Functional Description Text
Bit [#] orBit or Bit Field Name and Usage Description
Bit Range
[High:Low]
0 Action or Indication When Bit Is Cleared (Equals 0)
1 Action or Indication When Bit Is Set (Equals 1)
Table III. Uncompressed Versus Compressed Data Using Run-Length Coding
{ACCESS THESE REGISTERS THROUGH THE
INDIRECT REGISTER ADDRESS AND
INDIRECT REGISTER DATA REGISTERS}
BYTE 3BYTE 2BYTE 1
RESERVED
RESERVED
RESERVED
DIRECT (EXTERNALLY ACCESSIBLE) REGISTERS
INDIRECT REGISTER ADDRESS
INDIRECT REGISTER DATA
COMPRESSED DATA
INTERRUPT MASK / STATUS
0x00x0983 MODE CONTROL
0x1
0x2
0x3
0x4
0x5
0x6
0x7 – 0x7F
0x80 – 0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3 – 0xFF
0x100
0x101
RESERVED
RESERVED
RESERVED
SUM OF SQUARES [0 – 41]
SUM OF LUMA
SUM OF Cb
SUM OF Cr
MIN LUMA
MAX LUMA
MIN Cb
MAX Cb
MIN Cr
MAX Cr
RESERVED
RBW0
BW0
BYTE 0
FIFO CONTROL
HSTART
HEND
VSTART
VEND
COMPRESS RATIO
RESET
VALUE
0x00
0x00
UNDEF
0x00
0x88
0x000
0x3FF
0x000
0x3FF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
UNDEF
REV. 0
0x152
0x153
RBW41
BW41
Figure 9. Map of ADV601 Direct and Indirect Registers
–9–
UNDEF
UNDEF
ADV601
ADV601 REGISTER DESCRIPTIONS
Indirect Address Register
Direct (Write) Register Byte Offset 0x00.
This register holds a 16-bit value (index) that selects the indirect register accessible to the host through the indirect data register. All
indirect write registers are 16-bits wide. The address in this register is auto-incremented on each subsequent access of the indirect
data register. This capability enhances I/O performance during modes of operation where the host is calculating Bin Width controls.
In 8-bit mode, auto-increment occurs after writing to Byte 1 (BE1 pin asserted) of the Indirect Data Register; always read or write
Byte 0 then Byte 1 when in 8-bit mode.
[15:0]Indirect Address Register, IAR[15:0]. Holds a 16-bit value (index) that selects the indirect register to read or write through
the indirect data register (undefined at reset)
[31:16] Reserved (undefined read/write zero)
Indirect Register Data
Direct (Read/Write) Register Byte Offset 0x04
This register holds a 16-bit value read or written from or to the indirect register indexed by the Indirect Address Register. In 8-bit
mode, Byte 0 is read or written first followed by Byte 1. This ensures correct operation of auto-increment.
[15:0]Indirect Register Data, IRD[15:0]. A 16-bit value read or written to the indexed indirect register. Undefined at reset.
[31:16] Reserved (undefined read/write zero)
Compressed Data Register
Direct (Read/Write) Register Byte Offset 0x08
This register holds a 32-bit sequence from the compressed video bit stream. This register is buffered by a 512 position, 32-bit FIFO.
Access bytes in the following order for correct auto-increment: Byte 0, Byte 1, Byte 2, then Byte 3. For Word (16-bit) accesses, access Word0 (Byte 0 and Byte 1) then Word1 (Byte 2 and Byte 3). For a description of the data sequence, see the Compressed
Data Stream Definition section.
[31:0]Compressed Data Register, CDR[31:0]. 32-bit value containing compressed video stream data. At reset, contents undefined.
Interrupt Mask / Status Register
Direct (Read/Write) Register Byte Offset 0x0C
This 16-bit register contains interrupt mask and status bits that control the state of the ADV601’s HIRQ pin. With the seven mask
bits (IE_LCODE, IE_STATSR, IE_FIFOSTP, IE_FIFOSRQ, IE_FIFOERR, IE_CCIRER, IE_MERR); select the conditions that
are ORed together to determine the output of the HIRQ pin.
Six of the status bits (LCODE, STATSR, FIFOSTP, MERR, FIFOERR, CCIRER) indicate active interrupt conditions and are
sticky bits that stay set until read. Because sticky status bits are cleared when read, and these bits are set on the positive edge of the
condition coming true, they cannot be read or tested for stable level true conditions multiple times.
The FIFOSRQ bit is not sticky. This bit can be polled to monitor for a FIFOSRQ true condition. Note: Enable this monitoring by
using the FIFOSRQ bit and correctly programming DSL and ESL fields within the FIFO control registers.
[0]CCIR-656 Error in CCIR-656 data stream, CCIRER. This read only status bit indicates the following:
0No CCIR-656 Error condition, reset value
1Unrecoverable error in CCIR-656 data stream (missing sync codes)
[1]Statistics Ready, STATSR. This read only status bit indicates the following:
0No Statistics Ready condition, reset value (STATS_R pin LO)
1Statistics Ready for BW calculator (STATS_R pin HI)
[2]Last Code Read, LCODE. This read only status bit indicates the last compressed data word for field will be
retrieved from the FIFO on the next read from the host bus.
0No Last Code condition, reset value (LCODE pin LO)
1Next read retrieves last word for field in FIFO (LCODE pin HI)
[3]FIFO Service Request, FIFOSRQ. This read only status bit indicates the following:
0No FIFO Service Request condition, reset value (FIFO_SRQ pin LO)
1FIFO is nearly full (encode) or nearly empty (decode) (FIFO_SRQ pin HI)
–10–
REV. 0
ADV601
[4]FIFO Error, FIFOERR. This condition indicates that the host has been unable to keep up with the ADV601’s compressed
data supply or demand requirements. If this condition occurs during encode, the data stream will not be corrupted until
MERR indicates that the DRAM is also overflowed. If this condition occurs during decode, the video output will be
corrupted. If the system overflows the FIFO (disregarding a FIFOSTP condition) with too many writes in decode mode,
FIFOERR is asserted. This read only status bit indicates the following:
0No FIFO Error condition, reset value (FIFO_ERR pin LO)
1FIFO overflow (encode) or underflow (decode) (FIFO_ERR pin HI)
[5]FIFO Stop, FIFOSTP. This condition indicates that the FIFO is full in decode mode and empty in encode mode.
In decode mode only, FIFOSTP status actually behaves more conservatively than this. In decode mode, even when
FIFOSTP is indicated, there are still 32 empty Dwords available in the FIFO and 32 more Dword writes can safely
be performed. This status bit indicates the following:
0No FIFO Stop condition, reset value (FIFO_STP pin LO)
1FIFO empty (encode) or full (decode) (FIFO_STP pin HI)
[6]Memory Error, MERR. This condition indicates that an error has occurred at the DRAM memory interface. This condition can
be caused by a defective DRAM, the inability of the Host to keep up with the ADV601 compressed data stream, or bit errors in
the data stream. Note that the ADV601 recovers from this condition without host intervention.
0No memory error condition, reset value
1Memory error
[7]Reserved (always read/write zero)
[8]Interrupt Enable on CCIRER, IE_CCIRER. This mask bit selects the following:
0Disable CCIR-656 data error interrupt, reset value
1Enable interrupt on error in CCIR-656 data
[9]Interrupt Enable on STATR, IE_STATR. This mask bit selects the following:
0Disable Statistics Ready interrupt, reset value
1Enable interrupt on Statistics Ready
[10]Interrupt Enable on LCODE, IE_LCODE. This mask bit selects the following:
0Disable Last Code Read interrupt, reset value
1Enable interrupt on Last Code Read from FIFO
[11]Interrupt Enable on FIFOSRQ, IE_FIFOSRQ. This mask bit selects the following:
0Disable FIFO Service Request interrupt, reset value
1Enable interrupt on FIFO Service Request
[12]Interrupt Enable on FIFOERR, IE_FIFOERR. This mask bit selects the following:
0Disable FIFO Stop interrupt, reset value
1Enable interrupt on FIFO Stop
[13]Interrupt Enable on FIFOSTP, IE_FIFOSTP. This mask bit selects the following:
0 Disable FIFO Error interrupt, reset value
1 Enable interrupt on FIFO Error
[14]Interrupt Enable on MERR, IE_MERR. This mask bit selects the following:
0Disable memory error interrupt, reset value
1Enable interrupt on memory error
[15]Reserved (always read/write zero)
Mode Control Register
Indirect (Write Only) Register Index 0x00
This register holds configuration data for the ADV601’s video interface format and controls several other video interface features.
For more information on formats and modes, see the Video Interface section. Bits in this register have the following functions:
[3:0]Video Interface Format, VIF[3:0]. These bits select the interface format. Valid settings include the following (all
other values are reserved):
0x0CCIR-656
0x2MLTPX (Philips)
0x3Philips, reset value
0x8Gray Scale
[4]VCLK Output Divided by two, VCLK2. This bit controls the following:
0Do not divide VCLK output (VCLKO = VCLK), reset value
1Divide VCLK output by two (VCLKO = VCLK/2)
REV. 0
–11–
ADV601
[5]Video Interface Master/Slave Mode Select, M/S. This bit selects the following:
0Slave mode video interface (External control of video timing, HSYNC-VSYNC-FIELD are inputs), reset value
1Master mode video interface (ADV601 controls video timing, HSYNC-VSYNC are outputs)
[6]Video Interface 525/625 (NTSC/PAL) Mode Select, P/N. This bit selects the following:
0525 mode video interface, reset value
1625 mode video interface
[7]Video Interface Encode/Decode Mode Select, E/D. This bit selects the following:
0Decode mode video interface (compressed-to-raw)
1Encode mode video interface (raw-to-compressed), reset value
[8]Video Interface Square Pixel Mode Enable, SPE. This bit selects the following:
0Disable Square Pixel mode video interface
1Enable Square Pixel mode video interface, reset value
[9]Video Interface Bipolar/Unipolar Color Component Select, BUC. This bit selects the following:
0Bipolar color component mode video interface, reset value
1Unipolar color component mode video interface
[10]External DSP Select for bin width calculations, DSP. This bit selects the following:
0Host provides bin width calculation, reset value
1External DSP provides bin width calculation
[11]Video Interface Software Reset, SWR. This bit has the following effects on ADV601 operations:
0Normal operation
1Software Reset. This bit is set on hardware reset and must be cleared before the ADV601 can begin processing. (reset value)
When this bit is set during encode, the ADV601 completes processing the current field then suspends operation until the
SWR bit is cleared. When this bit is set during decode, the ADV601 suspends operation immediately and does not resume
operation until the SWR bit is cleared. Note that this bit must be set whenever any other bit in the Mode register is changed.
[12]HSYNC pin Polarity, PHSYNC. This bit has the following effects on ADV601 operations:
0HSYNC is HI during blanking, reset value
1HSYNC is LO during blanking (HI during active)
[13]HIRQ pin Polarity, PHIRQ. This bit has the following effects on ADV601 operations:
0HIRQ is active LO, reset value
1HIRQ is active HI
[15:14] Reserved (always write zero)
FIFO Control Register
Indirect (Read/Write) Register Index 0x01
This register holds the service-request settings for the ADV601’s host interface FIFO, causing interrupts for the “nearly full” and
“nearly empty” levels. Because each register is four bits in size, and the FIFO is 512 positions, the 4-bit value must be multiplied by
32 (decimal) to determine the exact value for encode service level (nearly full) and decode service level (nearly empty). The ADV601
uses these setting to determine when to generate a FIFO Service Request related host interrupt (FIFOSRQ bit and FIFO_SRQ pin).
[3:0]Encode Service Level, ESL[3:0]. The value in this field determines when the FIFO is considered nearly full on encode; a condi-
tion that generates a FIFO service request condition in encode mode. Since this register is four bits (16 states), and the FIFO is
512 positions, the step size for each bit in this register is 32 positions. The following table summarizes sample states of the
register and their meaning.
ESL Interrupt When . . .
0000 Disables service requests (FIFO_SRQ never goes HI during encode)
0001 FIFO has only 32 positions filled (FIFO_SRQ when >= 32 positions are filled)
1000 FIFO is 1/2 full, reset value
1111 FIFO has only 32 positions empty (480 positions filled)
[7:4]Decode Service Level, DSL[7:4]. The value in this field determines when the FIFO is considered nearly empty in decode; a
condition that generates a FIFO service request in decode mode. Because this register is four bits (16 states), and the FIFO
is 512 positions, the step size for each bit in this register is 32 positions. The following table summarizes sample states of the
register and their meaning.
DSL Interrupt When . . .
0000 Disables service requests (FIFO_SRQ never goes HI)
0001 FIFO has only 32 positions filled (480 positions empty)
1000 FIFO is 1/2 empty, reset value
1111 FIFO has only 32 positions empty (FIFO_SRQ when >= 32 positions are empty)
[15:8]Reserved (always write zero)
–12–
REV. 0
ADV601
S
VIDEO AREA REGISTERS
The area defined by the HSTART, HEND, VSTART and VEND registers is the active area that the wavelet kernel processes. Video
data outside the active video area is set to minimum luminance and zero chrominance (black) by the ADV601. These registers allow
cropping of the input video during compression (encode only), but do not change the image size. Figure 10 shows how the video area
registers work together.
0, 0
VSTART
H
TARTHEND
ZERO
ZERO
ZERO
VEND
ZERO
ZERO
ACTIVE VIDEO AREA
ZERO
MAX FOR SELECTED VIDEO MODE
ZERO
ZERO
X, Y
Figure 10. Video Area and Video Area Registers
HSTART Register
Indirect (Write Only) Register Index 0x02
This register holds the setting for the horizontal start of the ADV601’s active video area. The value in this register is usually set to
zero, but in cases where you wish to crop incoming video it is possible to do so by changing HST.
[9:0]Horizontal Start, HST[9:0]. 10-bit value defining the start of the active video region. (0 at reset)
[15:10] Reserved (always write zero)
HEND Register
Indirect (Write Only) Register Index 0x03
This register holds the setting for the horizontal end of the ADV601’s active video area. If the value is larger than the max size of the
selected video mode, the ADV601 uses the max size of the selected mode for HEND.
[9:0]Horizontal End, HEN[9:0].10-bit value defining the end of the active video region. (0x3FF at reset this value is larger than
the max size of the largest video mode)
[15:10] Reserved (always write zero)
VSTART Register
Indirect (Write Only) Register Index 0x04
This register holds the setting for the vertical start of the ADV601’s active video area. The value in this register is usually set to zero
unless you want to crop the active video.
To vertically crop video while encoding, program the VSTART and VEND registers with actual video line numbers, which differ for
each field. The VSTART and VEND contents must be updated on each field. Perform this updating as part of the field-by-field BW register update process. To perform this dynamic update correctly, the update software must keep track of which field is being processed next.
[9:0]Vertical Start, VST[9:0]. 10-bit value defining the starting line of the active video region, with line numbers from 1-to-625
in PAL and 1-to-525 in NTSC. (0 at reset)
[15:10] Reserved (always write zero)
VEND Register
Indirect (Write Only) Register Index 0x05
This register holds the setting for the vertical end of the ADV601’s active video area. If the value is larger than the max size of the
selected video mode, the ADV601 uses the max size of the selected mode for VEND.
To vertically crop video while encoding, program the VSTART and VEND registers with actual video line numbers, which differ for
each field. The VSTART and VEND contents must be updated on each field. Perform this updating as part of the field-by-field BW
register update process. To perform this dynamic update correctly, the update software must keep track of which field is being processed next.
[9:0]Vertical End, VEN[9:0]. 10-bit value defining the ending line of the active video region, with line numbers from 1-to-625
in PAL and 1-to-525 in NTSC. (0x3FF at reset—this value is larger than the max size of the largest video mode)
[15:10] Reserved (always write zero)
REV. 0
–13–
ADV601
Compression Ratio Register
Indirect (Write Only) Register Index 0x06
This register holds the value that is used by the DSP to control compression during encode mode. Note that this register should only
be used when a DSP is calculating Bin Widths.
[7:0]Compression Ratio, CRA[7:0]. Value passed to the DSP during encode operation. The 8-bit value in this field is sent to the
DSP through the serial interface during DSP-assisted encode operations. CRA values are zero-filled from the MSB and one
each is sent to the DSP as part of the packet of data on which the ratio is applied. The DSP software uses the CRA value
and other statistics to calculate BW controls for the ADV601’s quantizer. Note that the relationship between CRA and the
actual compression ratio is dependent on the BW control algorithm used in the DSP (undefined at reset).
[15:8]Reserved (always write zero)
Sum of Squares [0–41] Registers
Indirect (Read Only) Register Index 0x080 through 0x0A9
The Sum of Squares [0–41] registers hold values that correspond to the summation of values (squared) in corresponding Mallat
blocks [0–41]. These registers let the Host or DSP read sum of squares statistics from the ADV601; using these values (with the Sum
of Value, MIN Value, and MAX Value) the host or DSP can then calculate the BW and RBW values. The ADV601 indicates that
the sum of squares statistics have been updated by setting (1) the STATR bit and asserting the STAT_R pin. Read the statistics at
any time. The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Sum of Squares, STS[15:0]. 16-bit values [0-41] for corresponding Mallat blocks [0-41] (undefined at reset). Sum of Square
values are 16-bit codes that represent the Most Significant Bits of values ranging from 40 bits for small blocks to 48 bits for
large blocks. The 16-bit codes have the following precision:
Blocks PrecisionSum of Squares Precision Description
0–248.–3248.-bits wide, left shift code by 32-bits, and zero fill
3–1146.–3046.-bits wide, left shift code by 30-bits, and zero fill
12–2044.–2844.-bits wide, left shift code by 28-bits, and zero fill
21–2942.–2642.-bits wide, left shift code by 26-bits, and zero fill
30–4140.–2440.-bits wide, left shift code by 24-bits, and zero fill
If the Sum of Squares code were 0x0025 for block 10, the actual value would be 0x000940000000; if using that same
code, 0x0025, for block 30, the actual value would be 0x0025000000.
[31:0]Reserved (always read zero)
Sum of Luma Value Register
Indirect (Read Only) Register Index 0x0AA
The Sum of Luma Value register lets the host or DSP read the sum of pixel values for the Luma component in block 39. The Host
reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Sum of Luma, SL[15:0]. 16-bit component pixel values (undefined at reset)
[31:0]Reserved (always read zero)
Sum of Cb Value Register
Indirect (Read Only) Register Index 0x0AB
The Sum of Cb Value register lets the host or DSP read the sum of pixel values for the Cb component in block 40. The Host reads
these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Sum of Cb, SCB[15:0]. 16-bit component pixel values (undefined at reset)
[31:0]Reserved (always read zero)
Sum of Cr Value Register
Indirect (Read Only) Register Index 0x0AC
The Sum of Cr Value register lets the host or DSP read the sum of pixel values for the Cr component in block 41. The Host reads
these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Sum of Cr, SCR[15:0]. 16-bit component pixel values (undefined at reset)
[31:0]Reserved (always read zero)
–14–
REV. 0
ADV601
MIN Luma Value Register
Indirect (Read Only) Register Index 0x0AD
The MIN Luma Value register lets the host or DSP read the minimum pixel value for the Luma component in the unprocessed
data. The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Minimum Luma, MNL[15:0]. 16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
MAX Luma Value Register
Indirect (Read Only) Register Index 0x0AE
The MAX Luma Value register lets the host or DSP read the maximum pixel value for the Luma component in the unprocessed
data. The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Maximum Luma, MXL[15:0]. 16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
MIN Cb Value Register
Indirect (Read Only) Register Index 0x0AF
The MIN Cb Value register lets the host or DSP read the minimum pixel value for the Cb component in the unprocessed data.
The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Minimum Cb, MNCB[15:0], 16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
MAX Cb Value Register
Indirect (Read Only) Register Index 0x0B0
The MAX Cb Value register lets the host or DSP read the maximum pixel value for the Cb component in the unprocessed data.
The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Maximum Cb, MXCB[15:0].16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
MIN Cr Value Register
Indirect (Read Only) Register Index 0x0B1
The MIN Cr Value register lets the host or DSP read the minimum pixel value for the Cr component in the unprocessed data.
The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Minimum Cr, MNCR[15:0]. 16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
MAX Cr Value Register
Indirect (Read Only) Register Index 0x0B2
The MAX Cr Value register lets the host or DSP read the maximum pixel value for the Cr component in the unprocessed data.
The Host reads these values through the Host Interface or the DSP receives these values through the serial port.
[15:0]Maximum Cr, MXCR[15:0]. 16-bit component pixel value (undefined at reset)
[31:0]Reserved (always read zero)
Bin Width and Reciprocal Bin Width Registers
Indirect (Read/Write) Register Index 0x0100-0x0153
The RBW and BW values are calculated by the host or DSP from data in the Sum of Squares [0-41], Sum of Value, MIN Value, and
MAX Value registers; then are written to RBW and BW registers during encode mode to control the quantizer. The Host writes
these values through the Host Interface or the DSP transmits these values through the serial port.
These registers contain a 16-bit interleaved table of alternating RBW/BW (RBW-even addresses and BW-odd addresses) values
as indexed on writes by address register. Bin Widths are 8.8, unsigned, 16-bit, fixed-point values. Reciprocal Bin Widths are
6.10, unsigned, 16-bit, fixed-point values. Operation of this register is controlled by the host driver or the DSP (84 total entries)
(undefined at reset).
[15:0]Bin Width Values, BW[15:0]
[15:0]Reciprocal Bin Width Values, RBW[15:0]
REV. 0
–15–
ADV601
PIN FUNCTION DESCRIPTIONS
Clock Pins
NamePinsI/ODescription
VCLK/XTAL2IA single clock (VCLK) or crystal input (across VCLK and XTAL). Acceptable 50%
duty cycle clock signals are as follows:
• 24.54 MHz (Square Pixel NTSC)
• 27 MHz (CCIR601 NTSC/PAL)
• 29.5 MHz (Square Pixel PAL)
If using a clock crystal, use a parallel resonant, microprocessor grade clock crystal. If
using a clock input, use a TTL level input, 50% duty cycle clock with 1 ns (or less)
jitter (measured rising edge to rising edge). Slowly varying, low jitter clocks are
acceptable; up to 5% frequency variation in 0.5 sec.
VCLKO1OVCLK Output or VCLK Output divided by two. Select function using Mode
Control register.
Video Interface Pins
NamePinsI/ODescription
VSYNC1I or OVertical Sync or Vertical Blank. This pin can be either an output (Master Mode) or
an input (Slave Mode). The pin operates as follows:
• Output (Master) HI during inactive lines of video and LO otherwise
• Input (Slave) a HI on this input indicates inactive lines of video
HSYNC1I or OHorizontal Sync or Horizontal Blank. This pin can be either an output (Master
Mode) or an input (Slave Mode). The pin operates as follows:
• Output (Master) HI during inactive portion of video line and LO otherwise
• Input (Slave) a HI on this input indicates inactive portion of video line
Note that the polarity of this signal is modified using the Mode Control register. For
detailed timing information, see the Video Interface section.
FIELD1I or OField # or Frame Sync. This pin can be either an output (Master Mode) or an input
(Slave Mode). The pin operates as follows:
• Output (Master) HI during Field1 lines of video and LO otherwise
• Input (Slave) a HI on this input indicates Field1 lines of video
ENC1OEncode or Decode. This output pin indicates the coding mode of the ADV601 and
operates as follows:
• LO Decode Mode (Video Interface is output)
• HI Encode Mode (Video Interface is input)
Note that this pin can be used to control bus enable pins for devices connected to
the ADV601 Video Interface.
VDATA[19:0]20I/O4:2:2 Video Data (8-, 10-, or 12-bit digital component video data). These pins are
inputs during encode mode and outputs during decode mode. When outputs (decode) these pins are compatible with 50 pF loads (rather than 30 pF as all other
busses) to meet the high performance and large number of typical loads on this bus.
The performance of these pins varies with the Video Interface Mode set in the
Mode Control register, see the Video Interface section of this data sheet for pin
assignments in each mode.
Note that the Mode Control register also sets whether the color component is
treated as either signed or unsigned.
CREF1I/OClock Reference pin for Philips Interface (VCLK qualifier)—This pin can be either
an output (Master Mode) or an input (Slave Mode). The pin operates as follows:
• Output (Master) HI to qualify VCLK during VCLK phases containing valid demultiplexed digital video and LO otherwise
• Input (Slave) a HI on this input qualifies VCLK during VCLK phases containing
valid de-multiplexed digital video.
–16–
REV. 0
Loading...
+ 36 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.