Gedae Signal Flow Graph Language - PowerPoint PPT Presentation

1 / 22
About This Presentation
Title:

Gedae Signal Flow Graph Language

Description:

Example: out(i) = in(i) in(i-1) Delay register. Enable signal ... Primitives are coded using the following interface. Register R(input, output, enable) ... – PowerPoint PPT presentation

Number of Views:46
Avg rating:3.0/5.0
Slides: 23
Provided by: Meln7
Category:

less

Transcript and Presenter's Notes

Title: Gedae Signal Flow Graph Language


1
Gedae Signal Flow Graph Language
  • James W. SteedGedae, Inc.Telephone 856 231
    4458Fax 856 231 1403Email
    gedae_at_gedae.comWebsite www.gedae.com

2
Motivation
  • Middleware cannot solve every problem
  • The E library only has so many vector routines
  • Middleware induces overhead to be more general
    purpose
  • The E library must be written for several
    different contingencies (strides,
    in-place/out-of-place, etc.)
  • Source code ties the developer to a processor
  • The Gedae primitive library ties the developer to
    processors with a C cross compiler (FPGAs?)
  • Need a language to program any processor that
    still allows assembly-level optimization

3
Overview
  • Introduction to signal flow graphs
  • Delay registers
  • Port characteristics
  • Clock derivation
  • Introduction to single sample primitives
  • Coding language
  • Core interface
  • Integration with data flow graphs

4
Introduction to Signal Flow Graphs
  • Each graph is a synchronous circuit
  • Streams represent buffers in memory
  • Circuit is enabled by a clock
  • Example out(i) in(i) in(i-1)

Memory buffers
Delay register
Enable signal
5
Delay Registers
  • Delay registers create a delay of 1
  • Delay registers are the only way to store state
    information in a SFG graph

in(i) in(i-1)
in(i)
in(i-1)
6
Port Characteristics
  • Specify port characteristics using same context
    as primitives
  • Array dimensions input stream float inN
  • Parameters input float K
  • Interpolation/decimation input stream float
    in(N)
  • Dynamic output dynamic stream float out

7
Data Types
  • In addition to the standard Gedae data types, SFG
    supports
  • clock only used to specify Gedae clocks on
    top-level
  • boolean true or false
  • intltkgt k-bit integer
  • e.g., int9, int21, int32
  • uintltkgt k-bit unsigned
  • e.g., uint9, uint21, uint32
  • untypedltkgt k-bit untyped
  • e.g., untyped9, untyped21, untyped32

8
Clocks
  • Clocks are special local data items on the
    top-level of the SFG
  • Gedae turns the clocks into enable signals that
    coordinate movement of data from inputs to outputs

9
Number of Clock Pulses
  • If it takes more than one clock pulse to process
    a token, then this rate can be specified in the
    clocks declaration
  • Example vector add by scalar parameter

Each vector has N elements. We need N pulses to
process N elements.
10
Clock Derivation
  • Gedae allows the developer to create new clocks
    which are derived from other clocks
  • / Divide specifies a static decimation
  • clock2 clock/2
  • clock 1 1 1 1 1 1 1 1 1 1 1 1 1
  • clock2 1 0 1 0 1 0 1 0 1 0 1 0 1
  • Addition specifies a delay
  • clock3 clock/2 1
  • clock 1 1 1 1 1 1 1 1 1 1 1 1 1
  • clock3 0 1 0 1 0 1 0 1 0 1 0 1 0

11
Example Vector Sum
Decimating copy on every N-th sample
Vector size N
Use derived clock to clear on N-th sample
12
Single Sample Primitives
  • Input and Output sections list ports
  • At this level all data is a single sample
  • No streams or parameters
  • No dimensions
  • Local sections are allowed
  • But only registers can store state!
  • Function method contains code

13
Coding Language
  • Primitives are coded using the following
    interface
  • Register R(input, output, enable)
  • Delay register copies input to output after
    getting an enable signal
  • Assignment A(expression, variable)
  • Evaluate expression and assign to variable
  • Function F(i0,i1,)(o0,o1,) expressions
  • Evaluate a set of expressions
  • Note Fs are often tied to a target language by
    necessity

14
Coding Language (contd)
  • Primitives are coded using the following
    interface
  • Conditional IF(test,expr1,expr2,output)
  • Set output to expr1 if test, else set output to
    expr2
  • Decimate D(variable, enable)
  • The variable is only evaluated when the enable
    signal
  • Clock C(variable, enable)
  • Get the enable signal tied to the variable

15
Coding Language (contd)
  • Primitives are coded using the following
    interface
  • Memory M(output, length, sizeof)
  • Create a local memory buffer
  • Memory Read MR(addr, output)
  • Read the output from the address
  • Memory Write MW(input, addr)
  • Write the input to the address

16
Core Interface
  • Cores are efficient, pre-built implementations of
    common algorithms
  • More generally, cores are target specific code
  • Function method uses generic code
  • Core method allows inclusion of target-specific
    code

Target specifies 8-bit 0 differently
17
Core Database
  • CoreName allows developer to list cores that are
    used
  • E.g., CoreName fifo_512x32,pcix_if
  • LSP can use these names to look up information in
    a database
  • E.g., library, source, or pre-synthesized file
    that the core is stored in

18
Integration with Data Flow
  • Each data flow primitive can be specified by a
    SFG or code

19
Code Generation
  • Gedae code generates two files from a SFG
  • Standard Gedae primitive (Ansi-C)
  • Target code (via the Language Support Package)
  • The Gedae primitive is made from Function methods
  • The target code is made from both Core methods
    and Function methods
  • For each primitive, use the Function method if
    and only if there is no Core method

20
Alternate Implementations
  • Gedae uses the generated C primitive in the DF
    graph

21
Alternate Implementations (contd)
  • When mapped to the target
  • Gedae switches in the target code
  • Gedae inserts necessary comm primitives

Target name
Path to target code
22
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com