Welcome to the Industrial Automation website!

NameDescriptionContent
XING-Automation
E-mail  
Password  
  
Forgot password?
  Register
当前位置:

TI C2000 CLA Software Development Guide

F: | Au:FANS | DA:2026-05-14 | 347 Br: | 🔊 点击朗读正文 ❚❚ | Share:

Instruction set relationship

The CLA instruction set is a subset of the C28x+FPU instruction set, but with a small number of unique instructions. For example, CLA does not support Repeat Block Instructions (RPTB), but supports some local integer operation instructions (AND, OR, XOR, ADD, SUB, shift) as well as local branch/call/return instructions.

List of Key Differences

Project CLA C28x+FPU

Execution method independent of C28x parallel running and C28x fixed point instruction sharing pipeline

4 floating point registers (MR0-MR3) and 8 registers (R0H-R7H)

Two 16 bit auxiliary registers (MAR0, MAR1) and eight 32-bit registers (XAR0-XAR7)

Pipeline 8 stages, completely independent 8 stages, finger/decoding and fixed point sharing

Single step behavior: The pipeline advances 1 cycle and completely refreshes the pipeline

Direct and indirect incremental addressing modes, all C28x addressing modes without data page pointers

The interrupt source comes directly from the peripheral (device related) and is extended through PIE

Task nesting Type0/1 is not supported; Type2 supports Level 1 background software to enable nesting

Floating point multiplication/conversion 1 cycle, 2p cycles without delay slots (2 cycles with delay slots)

Repetitive instructions are not supported and support repeated MACF32 and RPTB

Share RAM, message RAM, and interrupt with C28x communication on the same CPU internal register copy

Program memory access limited to CLA program/data/message RAM, all memory

Performance benchmark considerations

For mathematical functions such as division, sine, cosine, etc., the instructions of CLA and C28x+FPU are not completely equivalent. The difference comes from:

The cycle difference between multiplication and type conversion (CLA single cycle, FPU 2p cycle, but FPU can arrange another instruction in the delay slot).

The difference between branch and call instructions (CLA supports delayed branch, where the three instructions before and after the branch are always executed, requiring developers to fill the delay slot reasonably to improve performance).

Register resource difference (CLA only has 4 floating-point registers, making it more prone to register overflow).

There are fewer addressing modes, which may add additional data movement instructions.

Therefore, the actual acceleration effect depends on the specific structure of the code. For control algorithms that can fully utilize CLA's independent parallelism and no delay slot waste, CLA typically brings significant acceleration.


Method for measuring the execution time of CLA tasks

Accurate measurement of CLA task time is crucial in real-time systems. Recommend the following two methods:

Method 1: Use PWM counter

CLA can access the counter of ePWM module (TBCTR). Read the counter values at the beginning and end of the task and calculate the difference:

uint16_t ct1, ct2, delta;ct1 = EPwm1Regs.TBCTR;//Measured codect2 = EPwm1Regs.TBCTR;delta = ct2 - ct1;

Pay attention to handling counter overflow situations (using unsigned subtraction to automatically modulo). This method has extremely low overhead, but its resolution is limited by the ePWM clock frequency.

Method 2: Utilize GPIO pins

If CLA can directly access GPIO (with device support), the pin can be set high before the task starts and low at the end, and then the duration of high level can be measured with an oscilloscope. This method is intuitive and not affected by counter overflow, but introduces additional GPIO operation instructions that require evaluation of testing accuracy.

Consider the cost of triggering and completing notifications

There is a fixed overhead for CLA task start and end notifications. To accurately measure the pure algorithm execution time, it is recommended to use an idle timer on C28x to record the entire cycle from software triggering to MIRUN flag clearing, and then subtract the CLA task external overhead (which can be measured in an empty task).


How to terminate CLA task for C28x

In certain abnormal situations, the main CPU needs to forcibly terminate the running CLA task.

If a task has been triggered but has not yet started execution, the main CPU can cancel the task by clearing the corresponding flag bit through the MICLR register.

If the task is already in progress, a Soft Reset signal can be written to the MCTL register, which will terminate the current task and clear the MIER register. To completely reset all registers of CLA, the Hard Reset option can be used.

Note: Forcefully terminating may result in inconsistent data, and the CLA state should be reinitialized after resetting.


Interpretation of common linker warnings

When using the C2000 code generation tool v20.2. x LTS and above versions, the linker may issue the following warning:

"Symbol, X, referenced in a.obj, assumes that data is blocked but is accessing non-blocked data in b.obj. Runtime failures may result"

This warning is used to detect data access consistency: when a target file assumes that data is "blocked" access, while the data in another target file is defined as "non blocked" access, the linker will warn that runtime may fail. A typical scenario is when the global variables defined in CLA are used by C28x code. The solution is to ensure that the access properties of all shared data are consistent, which can be found in the compiler version release notes.

  • Basler Electric Phase Directional Overcurrent Relay BE1-Z2JA0N2F
  • Basler SSR125-12 Static Voltage Regulator
  • Basler Electric KR7F VOLTAGE REGULATOR 9116200100
  • BASLER ELECTRIC BE1-59N-A8E-E1L-N0S1F Ground Overvoltage Relay
  • Basler SR8A2B06B3A Static Voltage Regulator
  • BASLER ELECTRIC BE1-81O/UT3EE1KA7N1F Under/Over Frequency Relay
  • Basler MOC2107 Output Module
  • Basler 9125600102 Control Module
  • BASLER ELECTRIC BE1-81T1EE1EA2N0F
  • Basler BE3-25A Time Overcurrent Relay
  • Basler Electric CBS 212 Current Boost System 9 2650 00 100 120/240 VAC 50/60Hz
  • Basler Electric BE1-27 Under Voltage Relay A3EC1JA0N5F
  • Basler BE1-32R Power Relay B2EE1PA0N1F
  • Basler DECS100-B15 Automatic Voltage Regulator
  • Basler SR8A-2B15B3A Static Voltage Regulator
  • Basler AVC63-4 Analog Voltage Regulator
  • Basler UFOV 260 A Overvoltage Module
  • Basler SR4A-2B16B3A Static Voltage Regulator
  • Basler SR4A-2B16B3E Static Voltage Regulator
  • Basler SCA1300-32GM CCD Camera
  • Basler BE34062001 G18 Transformer
  • Basler BE1-87T Transformer Differential Relay
  • Basler 9 2849 00 101 DECS Power Module
  • Basler RAL6144-16GM Line Scan Camera
  • Basler 9269101107 Voltage Regulator Board
  • Basler BE1-851 Overcurrent Relay
  • Basler SR32A-2B13B3E Static Voltage Regulator
  • Basler 9 2007 00 100 Current Boost System CBS 305
  • Basler DECS-100-B11 Automatic Voltage Regulator
  • Basler BE127 Under Voltage Relay
  • Basler 3300C03B1028-G01 Spike Suppressor
  • Basler SSR 125-12 Static Voltage Regulator
  • Basler SCA1300-32GM CCD Camera Lens Enclosure
  • Basler BE32965001 Transformer Timer Kit
  • Basler D90 96801 100 PCB Card
  • Basler BE1-81-T1E-E1C-A0N1F / 9106400 Underfrequency Relay
  • Pro-Face Basler AGP3600-T1-D24 HMI Touch
  • Basler SR4A2B10B1A Static Voltage Regulator
  • Basler SR8A2B05B3A Static Voltage Regulator
  • Basler BE1-25 Time Overcurrent Relay M1FA6PA4S0F
  • Basler SR4A2B05B3E Static Voltage Regulator
  • Basler DECS-200-2L Digital Excitation Control
  • Basler BE303280001 Control Transformer
  • Basler 9262103004 Voltage Regulator Board For Basler DECS-400
  • Basler ICRM-7 Inrush Current Reduction Module
  • Basler BE1-32R Power Relay
  • BASLER ELECTRIC KR4F VOLTAGE REGULATOR 9042600100 600V 50/60Hz
  • Basler 9222600101 Power Module
  • Basler SR8A-2B15B3A Static Voltage Regulator
  • BASLER BE1-87G G1E A1L A0N1P Generator Differential Relay w/ Reactor 9170818100
  • Basler 9284900101 DECS Power Module
  • Basler PRS250 Veri-Sync Relay
  • Basler BE 12296 001 Transformer
  • Basler 905970-104 Rev.M Voltage Regulator
  • Basler BE1-87T Transformer Differential Relay
  • Basler SR8A-2B15B3A Static Voltage Regulator
  • Basler SR32A2B05B3E Static Voltage Regulator
  • Basler SR4A-2B16B3A Static Voltage Regulator
  • Basler SR32A-2B13B3E Static Voltage Regulator
  • Basler KR4F Voltage Regulator 9042600100
  • Basler SSR 32-12 Static Voltage Regulator 400Hz
  • Basler CBS 212A Current Boost System
  • Basler MVC236 Manual Control Module
  • Basler UFOV Protective Module 9040000100
  • Basler SSR 125-12 Static Voltage Regulator
  • Basler SR4A2B10A3E Static Voltage Regulator
  • Basler BE1-25 Solid State Time Overcurrent Relay
  • Basler MVC 232 Manual Voltage Control Module
  • Basler PRS 250 Veri-Sync Relay
  • Basler UFOV 260A Under Frequency Over Voltage Relay
  • Basler RUL2098-10GC Load Relay
  • Basler 9 1049 04 100 PC Board
  • Basler 125-12 Static Voltage Regulator
  • Basler PRS 250 Veri-Sync Relay
  • Basler 9185900102 SSR 125-12 Regulator
  • Basler BE12819001 Reactor
  • Teradyne 535-100-00 Power Supply
  • Basler BE1-67 Directional OC Relay
  • Basler PRP110 Reverse Power Relay
  • Basler BE30631001 Isolation Transformer
  • Basler DECS-200-2L Digital Excitation Control
  • Basler BE1-47N Voltage Phase Sequence Relay
  • Basler AEC63-7 Analog Excitation Controller 220-277V
  • Basler BE1-50/51B-107 Overcurrent Relay
  • Basler Electric BE1‑32R BE1‑E1P‑BON0F Protective Relay
  • Basler BE1-25 Solid State Time Overcurrent Relay M1EA6PA5S1F
  • Basler MVC 232 Manual Voltage Control Module 90 37000 103 60VAC 55VDC
  • Basler RAL6144-16GM Racer GigE Line Scan Camera
  • Basler SSR 63-12 Static Voltage Regulator
  • Basler BE1-51A Overcurrent Relay
  • Basler BE1-87T Solid State Protective Relay
  • Basler SR4A2B01B3A Static Voltage Regulator
  • Basler SSR 32-12 Static Voltage Regulator
  • Basler TRR00696 Transformer 1KVA 115V
  • Basler DECS-100-B15 AVR Replacement
  • Basler BE1-27 Under-Voltage Relay
  • Basler ACA2000-50GM Interface Module
  • Basler AEC63-7 Analog Excitation Controller
  • Basler PRS 250 Veri-Sync Relay
  • Basler SR4A-2B15B3A Static Voltage Regulator
  • Basler BE1-32R Power Relay
  • Basler SR8A-2B06B3E Static Voltage Regulator
  • Basler BE1-81 O/U Frequency Relay
  • Basler BE1-51A-K2E-W6M-B1N0F Overcurrent Relay
  • Basler BE1-851 Overcurrent Relay G3A1S1 – 48-125V AC/DC
  • Basler BEI-51 Overcurrent Relay – NSN 5945-01-293-2363
  • Basler Electric L301KC Protective Relay – L301KC
  • Basler DECS-100-B15 Automatic Voltage Regulator – Generator AVR
  • Basler SR4A-2B15B3A Static Voltage Regulator – SR4A2B15B3A
  • Basler UF 312 Under Frequency Protective Module – 9094700100
  • Basler Electric MVC 232 Manual Control Module – 60VAC 55VDC 20A
  • Basler PRS 250 Veri-Sync Relay – Generator Synchronizing Relay
  • Basler DECS-100-A05 Digital Regulator Review
  • Basler AEM-2020 Analog Expansion Module Specs
  • Basler DECS-100-B15 Digital Excitation Specs
  • Basler Electric 9125600106 Regulator Component
  • Basler BE1-51A-K1E-W6M-B1N0F Overcurrent Relay
  • Basler MVC-301 MVC 300 Excitation Controller
  • Basler SSR 32-12 Static Voltage Regulator
  • Basler 9-2849-00-101 Control Module
  • Basler BE1-51A Overcurrent Relay
  • Basler BE1-51/27R Overcurrent Relay
  • Basler BE1-51 Overcurrent Relay
  • Basler SR8A-2B15B3A Static Voltage Regulator
  • Basler BE32965001 Transformer and Timer Board
  • Basler 9174700100 EL200-7 Excitation Limiter
  • Basler BE2000E AVR Voltage Regulator
  • Basler BE1-87G Differential Relay