Altera Video and Image Processing Suite User Manual

Page 53

Advertising
background image

The first two registers of every control interface perform the following two functions (the others vary with

each control interface):
• Register 0 is the

Go

register. Bit zero of this register is the

Go

bit. A few cycles after the function comes

out of reset, it writes a zero in the

Go

bit (remember that all registers in Avalon-MM control slaves

power up in an undefined state).

• Although there are a few exceptions, most Video and Image Processing Suite IP cores stop at the

beginning of an image data packet if the

Go

bit is set to 0. This allows you to stop the IP core and to

program run-time control data before the processing of the image data begins. A few cycles after the

Go

bit is set by external logic connected to the control port, the IP core begins processing image data. If

the

Go

bit is unset while data is being processed, then the IP core stops processing data again at the

beginning of the next image data packet and waits until the

Go

bit is set by external logic.

• Register 1 is the

Status

register. Bit zero of this register is the

Status

bit; the function does not use all

other bits. The function sets the

Status

bit to 1 when it is running, and zero otherwise. External logic

attached to the control port must not attempt to write to the

Status

register.

The following pseudo-code illustrates the design of functions that double-buffer their control (that is, all

IP cores except the Gamma Corrector and some Scaler II parameterizations):

go = 0;
while (true)
{
read_non_image_data_packets();
status = 0;
while (go != 1)
wait;
read_control(); // Copies control to internal registers
status = 1;
send_image_data_header();
process_frame();
}

For IP cores that do not double buffer their control data, the algorithm described in the previous

paragraph is still largely applicable but the changes to the control register will affect the current frame.
Most Video and Image Processing Suite IP cores with a slave interface read and propagate non-image data

packets from the input stream until the image data header (0) of an image data packet has been received.

The status bit is then set to 0 and the IP core waits until the

Go

bit is set to 1 if it is not already. Once the

Go

bit is set to 1, the IP core buffers control data, sets its status bit back to 1, and starts processing image

data.
Note: There is a small amount of buffering at the input of each Video and Image Processing Suite IP core

and you must expect that a few samples are read and stored past the image data header even if the

function is stalled.

You can use the

Go

and

Status

registers in combination to synchronize changes in control data to the

start and end of frames. For example, suppose you want to build a system with a Gamma Corrector IP

core where the gamma look-up table is updated between each video frame.

2-26

Avalon-MM Slave Interfaces

UG-VIPSUITE

2015.05.04

Altera Corporation

Interfaces

Send Feedback

Advertising