본문 바로가기
TI C2000

TI C2000 - 28377D CLA 공부 Part 1. CLA 특징

by vpam 2021. 9. 21.

C2000의 델피노 모델인 28377D 기반으로 CLA 공부한 내용을 정리해보고자 한다. 

이번 게시글에서는 사용법 이전에 CLA 특징, 주의할 점 등만 정리할 예정.

 


CLA (Control Law Accelaerator) 란?

- 메인 CPU와 병렬로 동작하는 "32bit fp math Accelerator"

- CPU와 별개로/독립적으로 제어 알고리즘 수행

- 시스템 대역폭을 대략 2배로 늘릴 수 있음.

 

 

 

전력전자 어플리케이션을 제어하는 입장에서 왜 CLA를 공부/사용 해야 할까?

- ePWM 과 ADC 레지스터에 접근이 가능하기 때문에 기존 CPU에서의 제어 인터럽트를 CLA로 돌려서 동작시키면

  CPU에 여유를 가져갈 수 있음. (실제로 power electronics 어플리케이션 제어에선 epwm, adc 를 통한 제어가 제일 중요? 연산량이 많기 때문에.. )/ (외에 GPIO, QEP, SD, ECAP,DAC, CMPSS 모두 접근 가능해서 여러가지 파워 어플리케이션에서 모두 쓰일 수 있음)

 

- 실제로 ti의 powersuite /digital power -sdk 에 있는 파워 어플리케이션 예제 파일을 많이 참고하는데 연산량이 많고 제어 주파수가 높은  CLLC / CrM PFC 등의 경우 모두 CLA를 활용해서 제어함. 

 

 

 

위 사진은 TI에서 제공한 CLA 사용 예제인데, CLA 모듈 내에서 

ADC로 들어온 신호를 로우패스 필터 및 FFT 한 결과를 cpu 인터럽트 내에 전달하는 과정을 보여준다.

즉, 연산량이 많은 계산들만 CLA에서 처리하고 그걸 인터럽트에 전달해주는 과정임. 

 

보다 직관적인 예를 들면, for문에 GPIO를 통해 LED1~8을 순서대로 on/off 하게 설정되어있고, CPU 인터럽트에는 LED9~16을 on/off 설정이 되어있다고 해보자. 

 

이러면 LED1~8 이 동작할 때는  LED9~16은 기존 상태를 유지해야한다. 

 

반면에 CLA를 이용하면 LED1~8 과 LED 9~16은 독립적으로 동작할 수 있다. 아래 사진 처럼.

 

 

 

 

 

 

 

 

아래는 CLA 개발 가이드에 나온 주요 FAQ 내용. 

 

Q) CLA는 C28x CPU와 독립적으로 작동 하는가?

A) 그렇다. CLA는 독자적인 버스 구조와, 레지스터, 파이프라인, 연산유닛을 갖고 있어서 CPU와 독립적으로 설계, 구동이 가능하다.

 

Q) CPU와 CLA는 synchoronize가 가능한가?

A) 그렇다. peripheral 인터럽트 혹은 특정 레지스터 접근을 통해 CLA 실행이 가능함. 반대로, CLA가 cpu의 인터럽트도 가능함. 

 

Q) CLA와 CPU는 어떻게 데이터를 공유하는가?

A) 변수와 상수를 담은 공유 헤더파일을 만들어서 c파일과 cla 코드에 include한다

=> data section pragama statemet와 linker file을 사용함 (CLA 사용을 위한 가장 중요한 내용 중 하나. main문에 따로 설정해 줘야함. 다음게시글에 다룰 예정) 

=> CPU에서 CLA로 넘기는 변수들을 initialize 해줌 (CPU내에서) => CLA에서 CPU로 넘어가는 변수들을 initialize 해줌 (CLA task 에서)

 

Q) CLA task를 트리거 하는 방법 (CLA task는 인터럽트와 유사하지만 다름. 이것도 다음 게시글에 정리)

A) peripheral interrupt, software trigger (MIFRC 레지스터 참고) , 다른 CLA task, background task 

 

Q) DSP 종류에 따른 CLA 접근 가능 레지스터

• 2803x: Direct access to the ADC result, ePWM+HRPWM, and comparator registers.
• 2806x: Direct access to the ADC result, ePWM+HRPWM, eCAP, eQEP and comparator
registers.
• 2807x: Direct access to the the ADC module(s) (including results), ePWM+HRPWM, eCAP,
eQEP, comparator subsytem, DAC subsystem, SPI, McBSP, uPP, EMIF, GPIO
• 2837x: Direct access to the the ADC module(s) (including results), ePWM+HRPWM, eCAP,
eQEP, comparator subsytem, DAC subsystem, SPI, McBSP, uPP, EMIF(s), GPIO

 

Q) CLA가 CPU 인터럽트를 실행할 수 있나? (중요)

A) 가능. End of Task: cpu한테 task가 끝났다는 걸 알리려고 PIE 인터럽트를 보냄. (이건 다른 epwm, adc 같은 인터럽트와 마찬가지로 PIE vector) 

Force Interrupt : CLA는 software interrupt capability가 있어서 CPU 인터럽트를 가능/강제 할 수 있음. 예를 들어, Task 1은 task2를 위한 소프트웨어 인터럽트를 enable 할 수 있음. (CLA1SOFTINTEN 레지스터 참고)

overflow&underflow : 나중에 공부할 예정

 

Q) task 처리 속도? 는 어떻게 측정하는가

A) 타이머, 혹은 GPIO 켜고 끄는거로 확인.  

 

----------------

대략 여기 까지 정리해봄. 

쉽게 정리하면, 전력전자를 전공하는 내 기준에선 기존의 연산량이 많은 인터럽트를 CLA로 돌려서 처리하는것이 가능하기 때문에 (쉽고) 보다 유연한 디지털 제어 설계가 가능할 것으로 예상 된다.  

반응형

댓글