The subsystem driver provides an easy-to-use, well-defined API to help integrate the subsystem in an application without having to understand the underlying complexity of configuring each and every subcore.
Subsystem driver consists of the following:
- Subsystem layer: Controls the data/control flow of AXI4-Stream through the processing cores. It uses support functions to examine the input and output stream properties and make appropriate decision to implement the determined use case.
- Subcore drivers: Every included subcore has a driver associated with it and provides
2 layers of abstraction
- Layer-1: Implements API's to peek/poke IP registers at HW level.
- Layer-2: Implements feature set to abstract core functionality.
For example, the color space conversion IP at the core level contains a 3 x 3 coefficient matrix which must be manipulated to do the required conversion, for example RGB to YUV.
- Layer-1 provides APIs to read/write these 3 x 3 coefficient registers. You are responsible for computing the required coefficient values and program the specific registers.
- Layer-2 implements the feature set that can be built upon layer-1 and is much easier
to use:
- API to convert RGB to YUV or vice-versa.
- API to set/get brightness, contrast, saturation, and gain.
- Auto translation between user setting of 0-100 to IP offered range.
The following figure shows the Video Processing Subsystem architecture.
Figure 1. Subsystem Driver Architecture