VERTIPH : a visual environment for real-time image processing on hardware : a thesis presented in partial fulfilment of the requirements for the degree of Doctor of Philosophy in Computer Systems Engineering at Massey University, Palmerston North, New Zealand
This thesis presents VERTIPH, a visual programming language for the
development of image processing algorithms on FPGA hardware. The research began
with an examination of the whole design cycle, with a view to identifying
requirements for implementing image processing on FPGAs. Based on this analysis, a
design process was developed where a selected software algorithm is matched to a
hardware architecture tailor made for its implementation. The algorithm and
architecture are then transformed into an FPGA suitable design. It was found that in
most cases the most efficient mapping for image processing algorithms is to use a
streamed processing approach. This constrains how data is presented and requires
most existing algorithms to be extensively modified. Therefore, the resultant designs
are heavily streamed and pipelined.
A visual notation was developed to complement this design process, as both
streaming and pipelining can be well represented by data flow visual languages. The
notation has three views each of which represents and supports a different part of the
design process. An architecture view gives an overview of the design's main blocks
and their interconnections. A computational view represents lower-level details by
representing each block by a set of computational expressions and low-level controls.
This includes a novel visual representation of pipelining that simplifies latency
analysis, multiphase design, priming, flushing and stalling, and the detection of
sequencing errors. A scheduling view adds a state machine for high-level control of
processing blocks. This extended state objects to allow for the priming and flushing of
User evaluations of an implementation of the key parts of this language (the
architecture view and the computational view) found that both were generally good
visualisations and aided in design (especially the type interface, pipeline and control
notations). The user evaluations provided several suggestions for the improvement of
the language, and in particular the evaluators would have preferred to use the
diagrams as a verification tool for a textual representation rather than as the primary
data capture mechanism.
A cognitive dimensions analysis showed that the language scores highly for
thirteen of the twenty dimensions considered, particularly those related to making
details of the design clearer to the developer.