pencil and rubber

Logo of Triple-A Level WCAG-1 Conformance, W3C-WAI Web Content Accessibility Guidelines 1.0

XHTML 1.0 Conformance Validation CSS 3 Conformance Validation
Logo of Department of Mathematics and Computer Science, Course on Dedicated systems, link to Forum

Dataflow network examples in Gezel and in VHDL

Tutorial 05 on Dedicated systems

Teacher: Giuseppe Scollo

University of Catania
Department of Mathematics and Computer Science
Graduate Course in Computer Science, 2016-17

Table of Contents

  1. Dataflow network examples in Gezel and in VHDL
  2. tutorial outline
  3. single-rate SDF graph to hardware
  4. example: Euclid's GCD algorithm, SDF graph analysis
  5. hardware implementation of Euclid's GCD algorithm
  6. hardware pipelining
  7. pipelining in SDF graphs with loops
  8. lab experience
  9. references

tutorial outline

this tutorial deals with:

single-rate SDF graph to hardware

hardware implementation assumption:

three implementation rules:

  1. all actors are implemented as combinational circuits
  2. all communication queues are implemented as wires (without storage)
  3. each initial token on a communication queue is replaced by a register

two definitions:

maximum clock frequency for the circuit: reciprocal of latency through critical path

example: Euclid's GCD algorithm, SDF graph analysis

algorithm: at each step (a, b) is replaced by (|a-b|, min(a,b))

Schaumont, Figure 3.10 - Euclid’s greatest common divisor as 
          an SDF graph

Schaumont, Figure 3.10 - Euclid’s greatest common divisor as an SDF graph

PASS analysis:

Schaumont, Equation 3.3 - topological matrix G of the SDF graph 
          for Euclid’s GCD algorithm

rank(G) = 1

Schaumont, Equation 3.4 - valid firing vector for matrix G

hardware implementation of Euclid's GCD algorithm

by the aforementioned three rules for a hardware implementation of the SDF model:

implementing the actors is a simple matter, by means of a few commonly used modules (multiplexers, comparators and a subtractor)

Schaumont, Figure 3.11 - Hardware implementation of Euclid’s 
          algorithm

Schaumont, Figure 3.11 - Hardware implementation of Euclid’s algorithm

hardware pipelining

example of throughput enhancement by pipelining:

Schaumont, Figure 3.12 - SDF graph of a simple moving-average 
          application

Schaumont, Figure 3.12 - SDF graph of a simple moving-average application

Schaumont, Figure 3.13 - Pipelining the moving-average filter 
          by inserting additional tokens (1)

Schaumont, Figure 3.13 - Pipelining the moving-average filter by inserting additional tokens (1)

Schaumont, Figure 3.14 - Pipelining the moving-average filter 
          by inserting additional tokens (2)

Schaumont, Figure 3.14 - Pipelining the moving-average filter by inserting additional tokens (2)

Schaumont, Figure 3.15 - Hardware implementation of the 
          moving-average filter

Schaumont, Figure 3.15 - Hardware implementation of the moving-average filter

remarks:

pipelining in SDF graphs with loops

by introducing new tokens, pipelining may change the behaviour of an SDF graph

Schaumont, Figure 3.16 - Loops in SDF graphs cannot be pipelined

Schaumont, Figure 3.16 - Loops in SDF graphs cannot be pipelined

in order to apply pipelining without changing the functional behaviour of an SDF graph with cycles, the additional tokens should be placed outside of any loop in the graph

lab experience

the circuit depicted in figure 3.11 implements the computational core of Euclid's GCD algorithm, yet it does not contain elements apt to signal the start and the end of the computation nor to distinguish inputs and output; the aims of this experience are: to extend that circuit to this purpose, to describe it in Gezel, to translate it to VHDL, and to simulate its behaviour

  1. extend the schematic of the circuit in figure 3.11 with three input signals and two output signals:
    • a, b: the input data, 16-bit wide each
    • start: 1-bit input, to signal the availability of the input data
    • gcd: the 16-bit output result
    • done: 1-bit output, to signal the end of the computation and the availability of the output result
    and with additional elements (multiplexers, maybe a comparator) useful to the stated purpose
  2. produce a Gezel description of the circuit from step 1
  3. translate the Gezl description in VHDL by means of the fdlvhd program
  4. launch Quartus 13.1 (Web edition), create a project EuclidGCD therein, and assign it the VHDL files produced in step 3
  5. compile and simulate the VHDL model with different data input pairs

references

recommended readings: