Digital Signal Processing Reference
In-Depth Information
Fig. 21
Structure of prediction actor
5
The Procedures and Tools Supporting Decoder
Implementations
5.1
Simulation and Compiling Frameworks
C AL is supported by portable interpreters infrastructure that can simulate a hier-
archical network of actors. A first interpreter was used in the Moses [ 44 ] project.
Moses features a graphical network editor, and allows the user to monitor actors
execution (actor state and token values). The project being no longer maintained,
it has been superseded by an Eclipse environment composed of 2 tools/plugins—
the Open Dataflow environment for C AL editing (OpenDF [ 46 ] for short) and the
Graphiti editor for graphically editing the network.
One interesting and very attracting implementation methodology of MPEG RVC
decoder descriptions is the direct synthesis of the standard specification. OpenDF is
also a compilation framework. It provides a source of relevant application of realistic
sizes and complexity and also enables meaningful experiments and advances in
dataflow programming. More details on the software and hardware code generators
can be found in [ 31 , 56 ] . Today there exists a backend for generation of HDL
(VHDL/Verilog) [ 31 , 32 ] . A second backend targeting ARM11 and embedded C has
been developed [ 47 ] by the EU project ACTORS [ 2 ] . It is also possible to simulate
C AL models in the Ptolemy II [ 49 ] environment.
Works made on action synthesis and actor synthesis [ 52 , 56 ] led to the creation of
a new compiler framework called Open RVC C AL Compiler [ 45 ] . This framework
is designed to support multiple language front-ends, each of which translates
actors written in RVC-C AL and FNL network into an Intermediate Representation
(IR), and to support multiple language back-ends, each of which translates the
Intermediate Representation into the supported languages. IR provides a dataflow
representation that can be easily transformed in low level languages. Currently
several backends are available, among them a C language backend, a Java backend,
a VHDL/verilog backend (using the same library as in [ 31 , 32 ] and a LLVM backend
(Fig. 22 ) .
 
Search WWH ::




Custom Search