A vector DSP can perform simultaneous multiply-accumulates on different streams of data. For example, a vector DSP with a 512b wide word can perform 32 parallel 8-bit multiplies or 16 parallel 16-bit multiplies. Vector DSPs can combine their inherent parallelism with a power- and area-optimized architecture to provide a highly efficient 2D image processing solution for embedded vision applications.
A programmable vision processor requires a robust software tool chain and relevant library functions. The EV62 is supported by DesignWare® ARC® MetaWare EV Development Toolkit which includes software development tools based on OpenVX™, OpenCV, and OpenCL C embedded vision standards. Synopsys’ OpenVX implementation has extended the standard library of OpenVX kernels to include new kernels which offer OpenCV-like functionality, within the optimized, pipelined OpenVX execution environment. For vision processing, OpenVX provides both a framework and optimized vision algorithms – image functions implemented as “kernels,” which are combined to form an image processing application expressed as a graph. The standard and extended OpenVX kernels have been ported and optimized for the EV6x so that designers can take advantage of the parallelism of the vector DSP.
Figure 4 shows an example of an OpenVX graph that uses a combination of standard and extended OpenVX kernels. In this example, cropping of the image is done during the distortion correction (remap) step. The output of the demosaicing is run through distortion correction (remap), image scaling, and image normalization. Normalization adjusts the range of pixel intensity values to correct for poor contrast due to low light or glare, for example.