Epwm

김동환·2024년 3월 6일
1
post-thumbnail

Dsp의 Epwm동작은 삼각파와 지령전압의 비교를 통해서 지령전압과 동일한 크기 및 주파수를 갖는 기본파 전압을 발생시키도록 스위칭시키는것이 그 목적이다.

여기서 보게 되면 그림은 ePwm 모듈의 DSP 칩 내의 위치를 나타냄.

ePwm은 GPIO 번호에 따라 핀이 분류되어있고 , GPIO 설정으로 ePWM의 출력신호를 사용할 수 있다.(입력)

PIE와 ADC 모듈로 신호를 출력한다(출력)

위 그림은 ePWM의 모듈로 그림과 같이 8개의 Submodule로 구성이 되어있다.
TBCTL

해당 Time Base Control Register들

1) Time - Base (TB) submodule(PWM 동작은 삼각파와 지령 전압의 비교를 통해 수행되는데 , TB Module에서는 PWM 동작의 삼각파 형태와 주기를 설정할 수 있다.

(TB의 CTRMODE레지스터는 삼각파 모드를 설정가능하다.
TB 모듈중 CLKDIB,HSPCLKDIV로 주기가 변경이 가능하다.

모든 ePwm module에는 ePwm의 event-timing을 결정하는 TB submodule이 있으며
시스템에 내장되어있는 동기화 로직으로 여러개의 ePwm 모듈의 TB module 이 단일 시스템으로서 함께 작동할 수 있다.

해당 모듈의 활용 목적:

-ePWM TBCTR(Time-base Counter)을 통해 주파수 또는 주기를 설정하여 PWM 동작을 제어한다
-다른 ePwm모듈과 시간 기반 동기화를 관리 및 위상 지연 설정 및 유지

-시간축 카운터를 count up , count down 또는 count up-down 모드로 설정가능

-다음과 같은 event설정가능 (event는 주기와 같거나 0일때 발생)
– CTR= PRD: (TBCTR = TBPRD).
– CTR = 0: (TBCTR = 0x00).

-TB Clock 속도를 구성하고 이를 통해 TBCTR의 속도를 증가/감소시킬 수 있다.

TB Submodule의 의미있는 신호 (위의 submodule 그림에서 확인가능)
다음과 같은 특징들을 신호들이 지니고 있다.

주기 및 주파수를 만드는 방식:

PWM 주파수는 TBPRD register과 time base counter 의 mode에 의해 제어된다.

그중 Time base counter Mode는 TBCTL(이것은 Time-Base control Register) 의 CTRMODE의 레지스터를 사용해 삼각파 모드를 설정할 수 있다.
일반적인 삼각파 빗변모양은 직선이지만 DSP에서는 아래 그림처럼 계단형태이다. 각 계단은 일정 주기마다 한칸씩 증가되는데 이 일정주기를 TBCLK로 관리함.
따라서 삼각파의 주기를 TBCLK값으로 나눈 결과값을 (CTR=PRD . 이 신호는 카운터 값이 현재 레지스터의 활성화된 주기와 일치할 때 생성됨. 그것이 TBCTR=TBPRD일 때임.)를 사용해서 주기설정이 가능하다.

TBPRD는 몇칸인지를 의미함.TBCLK는 한 칸의 길이 . TPWM은 전체 길이를 의미.

[TB Period Shadow Register]

TB Period register는 그림과 같이 active와 shadow가 있다. 여기서 이 레지스터가 (active,shadow)중에서 어떤 동작을 할지는 TBCTL[PRDLD]의 비트에 따라 다르다.
Active Resister의 경우 하드웨어를 제어하고 동작들에 영향을 주는 레지스터이다
Shadow Resister의 경우 active resister에 임시적인 장소만 제공하고 하드웨어에 직접적인 영향을 주지 않는다.( 동기화가 전체적으로 진행되도 레지스터에 영향이 없게 함)

TBCTL[PRDLD]의 값이 0일 때 shadow로 동작. 쉐도우 레지스터들이 같이 붙어있는 엑티브 레지스터로 전송됨.
TBCTL[PRDLD]의 값이 1일 때는 active로 동작. 읽고 쓰인느 것은 active 레지스터

[TB Clock Synchronization(TBCLK 동기화)]
주변 장치 Clock활성화 레지스터의 TBCLKSYNC비트를 사용하면 활성화된 모든 ePWM모듈을 TBCLK에 전역적으로 동기화 가능(모든 ePWM 모듈 Clock이 TBCLK의 첫번째 rising edge와 정렬된 상태로 시작)

각 ePWM모듈 clock 활성화 방법은
1. PCLKCR Resister에서 ePWM 모듈 clock 활성화
2. TBCLKSYNC=0으로 설정
3.ePWM 모듈 구성
4.TBCLKSYNC=1로 설정

[TB Counter Synchronization(TBTCR 동기화)]

각 ePWM 모듈에는 동기화 입력(SYNSI) 동기화 출력(SYNCO) 및 주변기기 동기화 출력(SYNCPER) 3가지가 있다.

여기를 보게 되면 PHSEN 비트가 결정되어서 스위치가 닫히게 될때 ePWM 모듈의 TBCTR(Counter의 밑에 달린것)
이 아래의 조건중 하나가 발생될 때 위상 레지스터(TBPHS) 이랑 함께 자동으로 Load가 된다.

  • 첫번째 EPWM SYNCI
    위에 보이는 Or 게이트에 달린 곳에 있는 EPWM SYNCI가 입력되면 TBPHS에서 TBCTR로 load가 된다. 이것은 다음의 Time-Base Clock(TBCLK) edge에서 발생된다.

  • 두번째 소프트웨어 강제 동기화 펄스
    이것은 TBCTL[SWFSYNC]에 1이 들어가면 or게이트를 지남으로 무조건 출력이다. 마찬가지로 EPWMSUNCI와 같은 효과를 지닌다.

  • 세번째 디지털 비교 Event 동기화 펄스
    DCAEVT1 이랑 DCBEVT1 도 EPWM SYNCI와 동일한 영향을 미치는 동기화 펄스를 생성하도록 함

이렇게 3가지 방식으로 TBPHS에서 TBCTR로 이동해서 ePWM 모듈을 다른 ePWm모듈의 Time-Base에 자동으로 동기화 할 수 있다. 추가로 다른 ePwm모듈에서 생성된 파형에 Lead혹은 Delay 위상 제어를 추가하여 동기화할 수 있다.

PHSEN비트를 Clear하면 동기화 입력펄스를 무시하도록 epwm이 구성된다. 따라서 이를 통해 동기화 펄스가 계속해서 EPWM SYNCO로 흐르도록 허용할 수 있다.(open이 되었기에)이러한 방식으로 마스터 TB 모듈(ex) ePWM1)을 설정할 수 있고 하위 모듈 (ePWM2, ePWmx)이 마스터와 동기되어 실행되도록 만들 수 있다.

[Phase Locking the Time-Base Clock of Multiple ePwm module]

Clock enable resister의 일부인 TBCLKSYNC 비트는 enable 허락된 모든 ePwm 모듈의
Time-Base clock을 전역적으로 동기화 하는데 사용됨.

TBCLKSYNC=0이면 모든 ePWm 모듈의 Time-base Clock가 중지된다.
TBCLKSYNC=1이면 모든 ePWm TBCLK가 상승 edge가 정렬된 상태로 시작된다.

만약 ePWm을 활성화할려면 다음의 절차를 따라야한다.

[Time-Base Counter Modes and Timing Waveforms]

Time-Base Counter 는 다음 네가지 모드로 작동한다.

////////////////////////////////////////////

Counter-Compare(cc) Submodule

TB 모듈이 PWM 주기를 조절한다면 CC모듈은 듀티비 설정에 관여하는 모듈이다.


위 그림은 Counter-Compare Submodule 이다.

CC Module은 TB Counter 값을 입력으로 받는다 . 이값은 계속 CMPA,CMPB,CMPC,CMPD 레지스터랑 비교가 된다.

만약 TB 카운터 레지스터가 비교 레지스터와 같게 되면 CC unit 에서 event가 발생된다.( 두 값이 같은 경우)

-CMPA,CMPB,CMPC,CMPD를 사용해서 programmable 한 Time Stamp 를 기준으로 event 생성.(아마 비교하는 compare이랑 TB counter 이랑 같을 때)

-Action-Qualifier(AQ) Submodule 이 CMPA 나 CMPB 를 사용해서 적절하게 구성된 경우에
설정에 따라 PWM duty 사이클을 제어한다.

-활성화된 PWM 주기 동안 섀도우 레지스터는 새로운 Compare 값으로 인한 손상 또는
glitches(시스템 오류)를 방지하는 기능을 갖고 있다.

위 그림은 cc submodule의 작동을 보인다.

CC Submodule 은 AQ 및 ET (Event Trigger) module에서 사용할 수 있는 event 들을 만드는 역할을 한다.

아래에 설명된 4개의 독립적인 경우가 있다.

당연히 Upccount 또는 Downcount mode인경우 각 이벤트는 주기당 한번씩만 발생된다.

UP Down Count mode 인 경우 비교값(CMPx)이 0x00~TBPRD 사이이면 각 이벤트가 사이클당 두
번 발생하고 비교 값(CMPx)이 0x00 이거나 TBPRD 와 같다면 사이클당 한 번만 발생합니다.

이러한 이벤트는 AQ(Action-Qualifier) 하위 모듈에 공급됩니다.
그리고 CMPA랑 CMPB에는 각각 연관된 섀도우 Register가 있는데

섀도잉이 사용되면 Active Register에 대한 Event 발생은 동기화 지점 에서 발생한다. -> 이것은 소프트웨어에 동기화로 인해 수정되는 Register로 인한 손상 또는 오류를 방지한다.

Active Register 와 섀도우 Register 의 메모리 주소는 동일하며, 이렇게 쓰거나 읽히는 Register 는
CMPCTL[SHDWAMODE] 및 CMPCTL[SHDWBMODE] 비트에 의해 방식이 결정됩니다.

.........................................

Shadow Mode 적용

CMPCTL[SHDWAMODE] 비트를 Clear 하면 CMPA 의 섀도우 모드가 활성화되고, (해당 비트를 Clear하는게 아마 신호를 인가하는거랑 같은듯?)

섀도우 Register 가 활성화되면 섀도우 레지스터의 내용은 Shadow load에 의해 결정되는데 그림에 있는 경우의 조합으로 이루어진다.

Active Register 내용만이 CC 하위 모듈에서 AQ 모듈로 보낼 Event를 생성하는 데 사용됩니다.

..............................................
CC 모듈은 세가지 Count mode 모두에서 Compare event를 생성하는데




////////////////////////////////////////
Action – Qualifier (AQ) Submodule

profile
Power_Electronics

0개의 댓글

관련 채용 정보