C6Flo Blocks
C6Flo include a large set of reusable blocks that can be used to
construct DSP applications. These components are grouped into the following
categories:
- System - Application frameworks, peripheral I/O, and generic
interconnection
- DSP - Signal processing algorithms and signal generation
- App - Application-specific algorithms
- Custom - User-expandable blocks and default category for user-created
blocks
Each category is further divided into sub-categories to make the block
palette more manageable.
C6Flo
System Blocks
- Framework
- Peripheral I/O
- Interconnect
C6Flo
DSP Blocks
- Filters
- Imaging
- Math
- Signal Gen
C6Flo
App Blocks
- Audio
- Power and Energy
- Vision and Analytics
C6Flo DM6437 DSP Application Framework (ti.c6flo.framework.dm6437dspapp)
All C6Flo applications must include one (and only one) framework block
to specify global system configuration. This block serves as the framework for
any applications targeting the DM6437 DSP. Its "normal" memory
segment corresponds to the DDR2 space. "Critical" memory corresponds
to L2RAM. The DSP is assumed to run at 594 MHz.
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
0
|
--
|
Outputs
|
0
|
--
|
Parameters
This is an incomplete list of parameters most likely to be changed
during system design.
Name
|
Type
|
Description
|
buffer_length
|
Int32
|
Default length
(element count) of data buffers allocated by threads
|
buffer_size
|
Int32
|
Default size (in
bytes) of data buffers allocated by threads
|
buffer_align
|
Int32
|
Default alignment
(in bytes) of data buffers allocated by threads
|
normal_mem_ base
|
Int32
|
Base address of
normal memory segment
|
normal_mem_
length
|
Int32
|
Size (in bytes)
of normal memory segment
|
normal_mem_
heap_size
|
Int32
|
Size (in bytes)
of heap in normal memory segment
|
critical_mem_
base
|
Int32
|
Base address of
critical memory segment
|
critical_mem_
length
|
Int32
|
Size (in bytes)
of critical memory segment
|
critical_mem_
heap_size
|
Int32
|
Size (in bytes)
of heap in critical memory segment
|
c6flo_name
|
String
|
Name of framework
in C6Flo diagram. This name is also applied to generated application source
files.
|
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This framework is not compatible with blocks that require a C6747,
C6748, or DM648 framework
- The parameters buffer_length and buffer_size must
agree with each another. If you change one of these values, be sure to
change the other as well
- System: Peripheral I/O
DM6437 EVM
Contents
C6Flo Audio Input Block (DM6437 EVM) (ti.c6flo.evmdm6437.audioin)
The DM6437 EVM audio input block reads stereo audio through the LINE IN
connector on the EVM board. Audio data is sampled at 44.1 kHz.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
0
|
--
|
Outputs
|
2
|
Int16, Float32
|
Parameters
Name
|
Type
|
Description
|
buffer_count
|
Int32
|
Number of
internal buffers allocated per channel; a minimum of 2 buffers per channel is
required for smooth audio
|
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a DM6437 framework
- This block uses DSP/BIOS IOM drivers from PSP release 1.10.03
- This block generates different proc functions for different
datatypes
- When Float32 is used as the datatype, audio values range from -1.0
to 1.0
- When Int16 is used as the datatype, audio values range from -32768
to 32767
- This block requires that all data buffers in its thread be aligned
to 128 bytes; this requirement is enforced automatically
C6Flo Audio Output Block (DM6437 EVM) (ti.c6flo.evmdm6437.audioout)
The DM6437 EVM audio output block emits stereo audio through the LINE
OUT connector on the EVM board. Audio data is sampled at 44.1 kHz.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
2
|
Int16, Float32
|
Outputs
|
0
|
--
|
Parameters
Name
|
Type
|
Description
|
buffer_count
|
Int32
|
Number of
internal buffers allocated per channel; a minimum of 2 buffers per channel is
required for smooth audio
|
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a DM6437 framework
- This block uses DSP/BIOS IOM drivers from PSP release 1.10.03
- This block generates different proc functions for different
datatypes
- When Float32 is used as the datatype, audio values range from -1.0
to 1.0
- When Int16 is used as the datatype, audio values range from -32768
to 32767
- This block requires that all data buffers in its thread be aligned
to 128 bytes; this requirement is enforced automatically
C6Flo Video Input Block (DM6437 EVM) (ti.c6flo.evmdm6437.videoin)
The DM6437 EVM video input block reads standard definition video through
the VIDEO IN connector on the EVM board.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
0
|
--
|
Outputs
|
1
|
UInt8
|
Parameters
Name
|
Type
|
Description
|
ntsc
|
Int8
|
1: video is NTSC
format
0: video is PAL format |
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a DM6437 framework
- This block uses DSP/BIOS IOM drivers from PSP release 1.10.03
- The video data is standard YUV422 format (i.e. 2 bytes per pixel)
- This block generates different proc functions for different
datatypes
- This block requires that all data buffers in its thread be large
enough to hold 720 * 480 * 2 = 691200 bytes; this requirement is enforced
automatically
C6Flo Video Output Block (DM6437 EVM) (ti.c6flo.evmdm6437.videoout)
The DM6437 EVM video output block emits standard definition video
through the DAC B connector on the EVM board.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1
|
UInt8
|
Outputs
|
0
|
--
|
Parameters
Name
|
Type
|
Description
|
ntsc
|
Int8
|
1: video is NTSC
format
0: video is PAL format |
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a DM6437 framework
- This block uses DSP/BIOS IOM drivers from PSP release 1.10.03
- The video data is standard YUV422 format (i.e. 2 bytes per pixel)
- This block generates different proc functions for different
datatypes
- This block requires that all data buffers in its thread be large
enough to hold 720 * 480 * 2 = 691200 bytes; this requirement is enforced
automatically
C6Flo UART Host Block (DM6437 EVM) (ti.c6flo.evmdm6437.uarthost)
The DM6437 EVM UART host block enables host control via the UART/serial
port connector on the EVM board. Placing this block in your system diagram
enables host control at run time using the C6Flo UART host utility. The UART
communication operates at 115.2 kbps.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
0
|
--
|
Outputs
|
0
|
--
|
Parameters
This block has no special parameters.
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a DM6437 framework
- This block uses DSP/BIOS IOM drivers from PSP release 1.10.03
- Host control functions as an independent thread in the DSP
application
- Threads with the same priority do not preempt one another
System: Interconnect
Contents
C6Flo Clip Block (ti.c6flo.misc.clip)
The clip block saturates the input signal to fall between two specified
constants.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1
|
Int16, Float32
|
Outputs
|
1
|
Int16, Float32
|
Parameters
Name
|
Type
|
Description
|
clip_min
|
Float32
|
Minimum allowed
value
|
clip_max
|
Float32
|
Maximum allowed
value
|
Host
Control Arguments
Index
|
Type
|
Description
|
0
|
Float32
|
New minimum value
|
1
|
Float32
|
New maximum value
|
Usage
Notes
- This block is compatible with all frameworks
- This block generates different proc functions for different
datatypes
C6Flo Split Block (ti.c6flo.misc.split)
The split block creates one or more copies of an input signal.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1
|
Any
|
Outputs
|
2-8
|
Any
|
Parameters
This block has no special parameters.
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block is compatible with all frameworks
C6Flo Sink Block (ti.c6flo.misc.sink)
The sink block ignores and discards one or more input signals.
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1-8
|
Any
|
Outputs
|
0
|
--
|
Parameters
This block has no special parameters.
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block is compatible with all frameworks
C6Flo Multiplex Block (ti.c6flo.misc.mux)
The multiplex block selects one input signal based on the value of a
selection parameter.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
2-8
|
Any
|
Outputs
|
1
|
Any
|
Parameters
Name
|
Type
|
Description
|
select
|
Int8
|
Input selection
value:
0: y = x1 1: y = x2 ... |
Host
Control Arguments
Index
|
Type
|
Description
|
0
|
Int8
|
New selection
value
|
Usage
Notes
- This block is compatible with all frameworks
- Host control is the only way to change the selected input signal at
run time
C6Flo Signal Selection Block (ti.c6flo.misc.signalselect)
The signal selection block selects between two input signals based on
the value of a control signal compared to some constant value, K.
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
3
|
Int16, Float32
|
Outputs
|
1
|
Int16, Float32
|
Parameters
Name
|
Type
|
Description
|
K
|
Float32
|
Constant value to
compare with control signal
|
Host
Control Arguments
Index
|
Type
|
Description
|
0
|
Float32
|
New K value
|
Usage
Notes
- This block is compatible with all frameworks
- This block generates different proc functions for different
datatypes
C6Flo Data Conversion Block (ti.c6flo.misc.convert)
The data conversion block converts an input signal from one data type to
another.
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1
|
Int16, Float32
|
Outputs
|
1
|
Int16, Float32
|
Parameters
This block has no special parameters.
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block is compatible with all frameworks
- This block generates different proc functions for different
datatypes
- This block has no effect when the input and output signals are the
same datatype
DSP: Filters
Contents
C64+ DSPLIB
Contents
C6Flo C64+ DSPLIB FIR Filter Block (ti.c6flo.c64pdsplib.fir)
The FIR filter block applies the specified FIR filter to an input
signal.
<![if !vml]><![endif]>
<![if !vml]><![endif]>
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1
|
Int16
|
Outputs
|
1
|
Int16
|
Parameters
Name
|
Type
|
Description
|
nh
|
Int8
|
Number of filter
taps used (max 16)
|
tap00
|
Int16
|
Filter tap b0
|
tap01
|
Int16
|
Filter tap b1
|
...
|
...
|
...
|
tap15
|
Int16
|
Filter tap b15
|
Host
Control Arguments
This block does not accept host control messages.
Usage Notes
- This block requires a C64+ framework
- This block uses the C64+ DSPLIB
- This block allocates an internal data buffer that is slightly
longer than a normal thread buffer
C6Flo C64+ DSPLIB Complex FIR Filter Block (ti.c6flo.c64pdsplib.fircplx)
The complex FIR filter block applies the specified complex FIR filter to
an input signal.
<![if !vml]><![endif]>
<![if !vml]><![endif]>
<![if !vml]><![endif]>
Connections
<![if !vml]><![endif]>
Count
|
Type
|
|
Inputs
|
1-2
|
Int16
|
Outputs
|
1-2
|
Int16
|
Parameters
Name
|
Type
|
Description
|
nh
|
Int8
|
Number of filter
taps used (2-16)
|
tap00_re
|
Int16
|
Real portion of
filter tap b0
|
tap00_im
|
Int16
|
Imaginary portion
of filter tap b0
|
tap01_re
|
Int16
|
Real portion of
filter tap b1
|
tap01_im
|
Int16
|
Imaginary portion
of filter tap b1
|
...
|
...
|
...
|
tap15_re
|
Int16
|
Real portion of
filter tap b15
|
tap15_im
|
Int16
|
Imaginary portion
of filter tap b15
|
Host
Control Arguments
This block does not accept host control messages.
Usage
Notes
- This block requires a C64+ framework
- This block uses the C64+ DSPLIB
- This block allocates internal data buffers that are required by the
DSPLIB during computation
- This block generates different proc functions for different
input/output counts