Digital Signal Processing Reference
In-Depth Information
the CSDF model may generate better schedules than the associated FRDF model
since we can split the node execution into finer granularity of phases at compile-
time scheduling; this is not possible in the FRDF if the date type is primitive. The
expression capability of two models is, however, different. The CSDF model allows
only a periodic pattern to express sample rate variations while the FRDF model
has no such restriction as long as the average value is constant during a period. So
the FRDF model has more expression power than the CSDF model since it allows
dynamic behavior of an FRDF node within a period and the periodic pattern can be
regarded as a special case.
4.2
Synchronous Piggybacked Dataflow
The SDF model does not allow communication through a shared global variable
since the access order to the global variable can vary depending on the execution
order of nodes. Suppose a source block produces the frame header in a frame-based
signal processing application that is to be used by several downstream blocks. A
natural way of coding in C is to define a shared data structure that the downstream
blocks access by pointers. But in a dataflow model, such sharing is not allowed. As a
result, redundant copies of data samples are usually introduced in the automatically
generated code from the dataflow model. Such overhead is usually not tolerable
for embedded systems with tight resource and/or timing constraints. To overcome
this limitation, an extended SDF model, called SPDF (Synchronous Piggybacked
Dataflow) is proposed [ 16 ] , by introducing the notion of “controlled global states”
and by coupling a data sample with a pointer to the controlled global state.
The Synchronous Piggybacked Dataflow (SPDF) model was first proposed to
support frame-based processing, or block-based processing, that frequently occurs
in multimedia applications. In frame-based processing, the system receives input
streams of frames that consist of a frame header and data samples. The frame
header contains information on how to process data samples. So an intuitive
implementation is to store the information in a global data structure, called global
states , and the data processing blocks refer to the global states before processing the
data samples.
Figure 15 shows a simple SPDF graph where node A reads a frame from a
file and produces the header information and the data samples through different
output ports. Suppose that a frame consists of 100 data samples in this example.
The header information and the data samples are both connected to a special
FRDF (Fractional Rate Dataflow) block, called “Piggyback” block, that has three
parameters: “statename” , “period” ,and “offset” . The Piggyback block updates the
global state of “statename” with the received header information periodically with
the specified “period” parameter. It piggybacks a pointer to the global state on
each input data sample before sending it through the output port. Since it needs to
receive the header information in order to update the global state only once per 100
executions, the sample rate of the input port associated with the header information
Search WWH ::




Custom Search