Analog Devices ADV601LC Datasheet

Ultralow Cost
a
FEATURES 100% Bitstream Compatible with the ADV601 Precise Compressed Bit Rate Control Field Independent Compression 8-Bit Video Interface Supports CCIR-656 and Multi-
plexed Philips Formats
General Purpose 16- or 32-Bit Host Interface with
512 Deep 32-Bit FIFO
PERFORMANCE Real-Time Compression or Decompression of CCIR-601
to Video:
720 288 @ 50 Fields/Sec — PAL
720 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 PC Video Editing Remote CCTV Surveillance Digital Camcorders Digital Video Tape Wireless Video Systems TV Instant Replay
Video Codec
ADV601LC
GENERAL DESCRIPTION
The ADV601LC is an ultralow cost, single chip, dedicated function, all digital CMOS VLSI device capable of supporting visually loss-less to 350:1 real-time compression and decom­pression 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 ADV601LC is 100% bitstream compatible with the ADV601.
The ADV601LC is a video encoder/decoder optimized for real­time compression and decompression of interlaced digital video. All features of the ADV601LC are designed to yield high perfor­mance at a breakthrough systems-level cost. Additionally, the unique sub-band coding architecture of the ADV601LC offers you many application-specific advantages. A review of the Gen­eral Theory of Operation and Applying the ADV601LC sections will help you get the most use out of the ADV601LC in any given application.
The ADV601LC 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 ADV601LC accepts a compressed bit stream through the Host Interface and outputs component digital video through the Video Interface. The host accesses all of the ADV601LC’s con­trol and status registers using the Host Interface. Figure 1 sum­marizes the basic function of the part.
(continued on page 2)
FUNCTIONAL BLOCK DIAGRAM
DIGITAL
COMPONENT
VIDEO I/O
DIGITAL
VIDEO I/O
PORT
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.
256K 3 16-BIT DRAM
(FIELD STORE)
DRAM
MANAGER
WAVELET
FILTERS,
DECIMATOR, &
INTERPOLATOR
ON-CHIP
TRANSFORM
BUFFER
One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A. Tel: 781/329-4700 World Wide Web Site: http://www.analog.com Fax: 781/326-8703 © Analog Devices, Inc., 1999
ADAPTIVE
QUANTIZER
LENGTH
CODER
BIN WIDTH CONTROL
SUB-BAND STATISTICS
ULTRALOW COST,
RUN
ADV601LC
VIDEO CODEC
HUFFMAN
CODER
HOST
I/O PORT
& FIFO
HOST
ADV601LC
TABLE OF CONTENTS
This data sheet gives an overview of the ADV601LC functional­ity 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 appropri­ate, additional sources of reference material are noted through­out the data sheet.
GENERAL DESCRIPTION . . . . . . . . . . . . . . . . . . . . . . . . . 1
INTERNAL ARCHITECTURE . . . . . . . . . . . . . . . . . . . . . 3
GENERAL THEORY OF OPERATION . . . . . . . . . . . . . . . 3
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
THE WAVELET KERNEL . . . . . . . . . . . . . . . . . . . . . . . . . 4
THE PROGRAMMABLE QUANTIZER . . . . . . . . . . . . . . . 7
THE RUN LENGTH CODER AND HUFFMAN CODER . . 8
Encoding vs. Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
PROGRAMMER’S MODEL . . . . . . . . . . . . . . . . . . . . . . . . 8
ADV601LC REGISTER DESCRIPTIONS . . . . . . . . . . . . 10
PIN FUNCTION DESCRIPTIONS . . . . . . . . . . . . . . . . . 16
Video Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Host Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
DRAM Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Compressed Data-Stream Definition . . . . . . . . . . . . . . . . 22
APPLYING THE ADV601LC . . . . . . . . . . . . . . . . . . . . . . 28
Using the ADV601LC in Computer Applications . . . . . . 28
Using the ADV601LC in Stand-Alone Applications . . . . 29
Connecting the ADV601LC to Popular Video Decoders
and Encoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
GETTING THE MOST OUT OF ADV601LC . . . . . . . . . 30
ADV601LC SPECIFICATIONS . . . . . . . . . . . . . . . . . . . . 31
TEST CONDITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
TIMING PARAMETERS . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Clock Signal Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
CCIR-656 Video Format Timing . . . . . . . . . . . . . . . . . . . 33
Multiplexed Philips Video Timing . . . . . . . . . . . . . . . . . . 35
Host Interface (Indirect Address, Indirect Register Data,
and Interrupt Mask/Status) Register Timing . . . . . . . . 38
Host Interface (Compressed Data) Register Timing . . . . 40
PINOUTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
PIN CONFIGURATION . . . . . . . . . . . . . . . . . . . . . . . . . . 43
OUTLINE DIMENSIONS . . . . . . . . . . . . . . . . . . . . . . . . . 44
ORDERING GUIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
GENERAL DESCRIPTION
VIDEO INTERFACE
DIGITAL VIDEO IN
(ENCODE)
DIGITAL VIDEO OUT
(DECODE)
(Continued from page 1)
ADV601LC
ULTRALOW
COST,
VIDEO CODEC
HOST INTERFACE
COMPRESSED VIDEO OUT (ENCODE)
STATUS AND CONTROL
COMPRESSED VIDEO IN (DECODE)
Figure 1. Functional Block Diagram
The ADV601LC 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 ADV601LC is designed only for real-time interlaced video, full frames of video are formed and processed as two independent fields of data. The ADV601LC 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 ADV601LC has a generic 16-/32-bit host interface, which includes a 512-position, 32-bit wide FIFO for compressed video. With additional external hardware, the ADV601LC’s host inter­face is suitable (when interfaced to other devices) for moving com­pressed 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 ADV601LC 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 ADV601LC 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 ADV601LC provides a number of options to stretch compres­sion performance. These options are outlined on in the Apply­ing the ADV601LC section.
Table I. ADV601LC Field Rates and Sizes
Active Active Total Total Standard Region Region Region Region Field Rate Pixel Rate Name Horizontal Vertical
1
Horizontal Vertical (Hz) (MHz)
2
CCIR-601/525 720 243 858 262.5 59.94 13.50 CCIR-601/625 720 288 864 312.5 50.00 13.50
NOTES
1
The maximum active field size is 720 by 288.
2
The maximum pixel rate is 13.5 MHz.
–2–
REV. 0
ADV601LC
INTERNAL ARCHITECTURE
The ADV601LC is composed of eight blocks. Three 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, and the external DRAM manager. 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 com­pressed 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.
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, sepa­rable wavelet transforms on horizontal scanned video data. This block uses the internal transform buffer when performing wave­let transforms calculated on an entire image’s data and so eliminates any need for extremely fast external memories in an ADV601LC-based design.
On-Chip Transform Buffer
Provides an internal set of SRAM for use by the wavelet trans­form 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 com­pressed bit rate or constant quality bit rate. A Bin Width is a per block parameter the quantizer uses when determining the num­ber 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/de­coder uses three ROM-coded Huffman tables that provide ex­cellent performance for wavelet transformed video.
GENERAL THEORY OF OPERATION
The ADV601LC 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 two­dimensional spatial video data into spatial frequency filtered sub-bands. The quantization and entropy encoding processes provide the ADV601LC’s data compression.
The wavelet theory, on which the ADV601LC 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 Con­stant 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 follow­ing 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 infor­mation 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 into Square Integrable Wavelets of Constant Shape, Siam. J. Math. Anal., Vol. 15, No. 4, pp 723-736, 1984
REV. 0
–3–
ADV601LC
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 broad­band nature of images than the sinusoidal waves used in Dis­crete 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 fea­tures 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 compres­sion 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 perfor­mance from the ADV601LC. 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 com­ponents 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 ADV601LC not only compresses video, but offers a host of application features. Please see the Applying the ADV601LC section for details on getting the most out of the ADV601LC’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)
–4–
REV. 0
ADV601LC
Figure 4. Unfiltered Original Image (Analog Devices Corporate Offices, Norwood, Massachusetts)
REV. 0
Figure 5. Modified Mallat Diagram of Image
–5–
ADV601LC
LUMINANCE AND
COLOR COMPONENTS
(EACH SEPARATELY)
HIGH
PASS IN
X2
BLOCK
A
HIGH
PASS IN
Y
Y
BLOCKBBLOCKCBLOCK
LOW
PASS IN
X
2
X
X2
HIGH
PASS IN
X
LOW
PASS IN
Y
2
Y
LOW
PASS IN
X
X2X2
HIGH
PASS IN
Y
Y
D
HIGH
PASS IN
Y
Y
INDICATES CORRESPONDING BLOCK
BLOCK
LETTER ON MALLAT
#
DIAGRAM
X2
INDICATES DECIMATE BY TWO IN X
Y2
INDICATES DECIMATE BY TWO IN Y
STAGE 1
STAGE 2
LOW
PASS IN
Y
2
2
Y
HIGH
PASS IN
X
LOW
PASS IN
X
X2X2
STAGE 3
LOW
PASS IN
2
Y
HIGH
PASS IN
Y
2
Y
LOW
PASS IN
Y
2
Y
2
Y
BLOCKEBLOCKFBLOCK
G
HIGH
PASS IN
Y
2
Y
BLOCKHBLOCKIBLOCK
Figure 6. Wavelet Filter Tree Structure
HIGH
PASS IN
X
LOW
PASS IN
Y
2
Y
LOW
PASS IN
X
X2X2
HIGH
PASS IN
Y
HIGH
PASS IN
Y
Y
BLOCKKBLOCKLBLOCKMBLOCK
LOW
PASS IN
Y
2
J
2
Y
2
Y
HIGH
PASS IN
X
LOW
PASS IN
Y
2
Y
LOW
PASS IN
X
X2X2
HIGH
PASS IN
Y
2
Y
LOW
PASS IN
Y
STAGE 4
STAGE 5
Y
2
N
–6–
REV. 0
THE PROGRAMMABLE QUANTIZER
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 “quantiza­tion” of information contained within the filtered image, the ADV601LC achieves compression without compromising the visual quality of the image. Figure 7 shows the encode and de­code 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 ADV601LC 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
SIGNED SIGNED
UNSIGNED
6.10 1/BW
1/BW
15.17 DATA
0.5
QUANTIZER - DECODE MODE
23.8 DEQUANTIZED
15.0 BIN
NUMBER
SIGNED
UNSIGNED
8.8 BW
SIGNED
BW
WAVELET DATA
Figure 7. Programmable Quantizer Data Flow
ADV601LC
TRNC
SAT
15.0 BIN NUMBER
9.7 WAVELET DATA
40 373431
28
41
383532
29
0
9
3
Cb COMPONENT
25
16
22
13
19
10
7
1
4
Cr COMPONENT
26
17
23
14
20
8
REV. 0
2
11
5
LOW
QUANTIZATION OF MALLAT BLOCKS
HIGH
Figure 8. Typical Quantization of Mallat Data Blocks (Graphed)
–7–
ADV601LC
Table II. ADV601LC Typical Quantization of Mallat Data Block Data
1
Mallat Bin Width Reciprocal Bin Blocks Factors Width Factors
39 0x007F 0x0810 40 0x009A 0x06a6 41 0x009A 0x06a6 36 0x00BE 0x0564 33 0x00BE 0x0564 30 0x00E4 0x047e 34 0x00E6 0x0474 35 0x00E6 0x0474 37 0x00E6 0x0474 38 0x00E6 0x0474 31 0x0114 0x03b6 32 0x0114 0x03b6 27 0x0281 0x0199 24 0x0281 0x0199 21 0x0301 0x0155 25 0x0306 0x0153 26 0x0306 0x0153 28 0x0306 0x0153 29 0x0306 0x0153 22 0x03A1 0x011a 23 0x03A1 0x011a
5 0x0A16 0x0066 18 0x0A16 0x0066 12 0x0C1A 0x0055 20 0x0C2E 0x0054 19 0x0C2E 0x0054 17 0x0C2E 0x0054 16 0x0C2E 0x0054 14 0x0E9D 0x0046 13 0x0E9D 0x0046
6 0x1DDC 0x0022
9 0x1DDC 0x0022
3 0x23D5 0x001d 11 0x2410 0x001c 10 0x2410 0x001c
8 0x2410 0x001c
7 0x2410 0x001c
5 0x2B46 0x0018
4 0x2B46 0x0018
0 0xA417 0x0006
2 0xC62B 0x0005
1 0xC62B 0x0005
NOTE
1
The Mallat block numbers, Bin Width factors, and Reciprocal Bin Width factors in Table II correspond to the shading percent 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 ADV601LC 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 ADV601LC using the Host I/O Port. The host reads from status registers and writes to control registers through the Host I/O Port.
Table IV. Register Description Conventions
Register Name
Register Type (Indirect or Direct, Read or Write) and Address Register Functional Description Text Bit [#] or Bit 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
0000000000000000000000000000000000000000000000000000000000000000000(uncompressed) 57 Zeros (Compressed)
–8–
REV. 0
ADV601LC
REGISTER
ADDRESS
0x0
0x4
0x8
0xC
INDIRECT (INTERNALLY INDEXED) REGISTERS
{ACCESS THESE REGISTERS THROUGH THE INDIRECT REGISTER ADDRESS AND INDIRECT REGISTER DATA REGISTERS}
*NOTE: YOU MUST WRITE 0X0880 TO THE MODE CONTROL REGISTER ON CHIP RESET TO SELECT THE CORRECT PIXEL MODE
BYTE 3 BYTE 2 BYTE 1
RESERVED
RESERVED
RESERVED
DIRECT (EXTERNALLY ACCESSIBLE) REGISTERS
INDIRECT REGISTER ADDRESS
INDIRECT REGISTER DATA
COMPRESSED DATA
INTERRUPT MASK / STATUS
0x0
0x1
0x2
0x3
0x4
0x5
0x6
0x7 – 0x7F
0x80 – 0xA9
0xAA
0xAB
0xAC
0xAD
0xAE
0xAF
0xB0
0xB1
0xB2
0xB3 – 0xFF
0x100
0x101
RESERVED
MODE CONTROL*
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
FIFO CONTROL
HSTART
HEND
VSTART
VEND
BYTE 0
RESET VALUE
UNDEF
UNDEF
UNDEF
0x00
0x0980
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 ADV601LC Direct and Indirect Registers
–9–
UNDEF
UNDEF
ADV601LC
ADV601LC 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.
[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. [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.
For Word (16-bit) accesses, access Word0 (Byte 0 and Byte 1) then Word1 (Byte 2 and Byte 3) for correct auto-increment. 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 ADV601LC’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:
0 No CCIR-656 Error condition, reset value 1 Unrecoverable error in CCIR-656 data stream (missing sync codes)
[1] Statistics Ready, STATSR. This read only status bit indicates the following:
0 No Statistics Ready condition, reset value (STATS_R pin LO) 1 Statistics 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. 0 No Last Code condition, reset value (LCODE pin LO)
1 Next read retrieves last word for field in FIFO (LCODE pin HI)
[3] FIFO Service Request, FIFOSRQ. This read only status bit indicates the following:
0 No FIFO Service Request condition, reset value (FIFO_SRQ pin LO) 1 FIFO is nearly full (encode) or nearly empty (decode) (FIFO_SRQ pin HI)
–10–
REV. 0
ADV601LC
[4] FIFO Error, FIFOERR. This condition indicates that the host has been unable to keep up with the ADV601LC’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:
0 No FIFO Error condition, reset value (FIFO_ERR pin LO) 1 FIFO 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:
0 No FIFO Stop condition, reset value (FIFO_STP pin LO) 1 FIFO 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 ADV601LC compressed data stream, or bit errors in the data stream. Note that the ADV601LC recovers from this condition without host intervention.
0 No memory error condition, reset value
1 Memory error [7] Reserved (always read/write zero) [8] Interrupt Enable on CCIRER, IE_CCIRER. This mask bit selects the following:
0 Disable CCIR-656 data error interrupt, reset value
1 Enable interrupt on error in CCIR-656 data [9] Interrupt Enable on STATR, IE_STATR. This mask bit selects the following:
0 Disable Statistics Ready interrupt, reset value
1 Enable interrupt on Statistics Ready [10] Interrupt Enable on LCODE, IE_LCODE. This mask bit selects the following:
0 Disable Last Code Read interrupt, reset value
1 Enable interrupt on Last Code Read from FIFO [11] Interrupt Enable on FIFOSRQ, IE_FIFOSRQ. This mask bit selects the following:
0 Disable FIFO Service Request interrupt, reset value
1 Enable interrupt on FIFO Service Request [12] Interrupt Enable on FIFOERR, IE_FIFOERR. This mask bit selects the following:
0 Disable FIFO Stop interrupt, reset value
1 Enable 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:
0 Disable memory error interrupt, reset value
1 Enable 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 ADV601LC’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):
0x0 CCIR-656, reset value
0x2 MLTPX (Philips)
[4] VCLK Output Divided by two, VCLK2. This bit controls the following:
0 Do not divide VCLK output (VCLKO = VCLK), reset value
1 Divide VCLK output by two (VCLKO = VCLK/2)
REV. 0
–11–
ADV601LC
[5] Video Interface Master/Slave Mode Select, M/S. This bit selects the following:
0 Slave mode video interface (External control of video timing, HSYNC-VSYNC-FIELD are inputs), reset value 1 Master mode video interface (ADV601LC controls video timing, HSYNC-VSYNC are outputs)
[6] Video Interface 525/625 (NTSC/PAL) Mode Select, P/N. This bit selects the following:
0 525 mode video interface, reset value 1 625 mode video interface
[7] Video Interface Encode/Decode Mode Select, E/D. This bit selects the following:
0 Decode mode video interface (compressed-to-raw)
1 Encode mode video interface (raw-to-compressed), reset value [8] Reserved (always write zero) [9] Video Interface Bipolar/Unipolar Color Component Select, BUC. This bit selects the following:
0 Bipolar color component mode video interface, reset value
1 Unipolar color component mode video interface [10] Reserved (always write zero) [11] Video Interface Software Reset, SWR. This bit has the following effects on ADV601LC operations:
0 Normal operation
1 Software Reset. This b i t i s set on hardware reset and mu st be cleared before the ADV601LC can begin processing. (reset value)
When this bit i s set during encode, the ADV601LC completes processing the current field then suspends operation until the SWR bit is cleared. When this bit is set during decode, the ADV601LC suspends operation immediately and does not resume operation until the SWR bi t i s cl eared. Note th at 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 ADV601LC operations:
0 HSYNC is HI during blanking, reset value
1 HSYNC is LO during blanking (HI during active) [13] HIRQ pin Polarity, PHIRQ. This bit has the following effects on ADV601LC operations:
0 HIRQ is active LO, reset value
1 HIRQ 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 ADV601LC’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 ADV601LC 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
ADV601LC
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 ADV601LC. 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.
Some comments on how these registers work are as follows:
0, 0
• The vertical numbers include the blanking areas of the video. Specifically, a VSTART value of 21 will include the first line
VSTART
of active video, and the first pixel in a line corresponds to a value HSTART of 0 (for NTSC regular).
Note that the vertical coordinates start with 1, whereas the horizontal coordinates start with 0.
• The default cropping mode is set for the entire frame. Specifi­cally, Field 2 starts at a VSTART value of 283 (for NTSC
VEND
regular).
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 ADV601LC’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)
TART HEND
H
ZERO
ZERO
ZERO
ZERO
ACTIVE VIDEO AREA
ZERO
MAX FOR SELECTED VIDEO MODE
ZERO
ZERO
ZERO
X, Y
HEND Register
Indirect (Write Only) Register Index 0x03 This register holds the setting for the horizontal end of the ADV601LC’s active video area. If the value is larger than the max size of
the selected video mode, the ADV601LC 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 ADV601LC’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 regis­ter 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 ADV601LC’s active video area. If the value is larger than the max size of the
selected video mode, the ADV601LC 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–
ADV601LC
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 ADV601LC; 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 ADV601LC indi­cates 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.
[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 Precision Sum of Squares Precision Description
0–2 48.–32 48.-bits wide, left shift code by 32-bits, and zero fill 3–11 46.–30 46.-bits wide, left shift code by 30-bits, and zero fill 12–20 44.–28 44.-bits wide, left shift code by 28-bits, and zero fill 21–29 42.–26 42.-bits wide, left shift code by 26-bits, and zero fill 30–41 40.–24 40.-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. [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. [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. [15:0] Sum of Cr, SCR[15:0]. 16-bit component pixel values (undefined at reset)
[31:0] Reserved (always read zero)
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. [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. [15:0] Maximum Luma, MXL[15:0]. 16-bit component pixel value (undefined at reset)
[31:0] Reserved (always read zero)
–14–
REV. 0
Loading...
+ 30 hidden pages