임베디드 애플리케이션은 다양한 기능을 처리하는 단일 마이크로컨트롤러에 기반한 매우 복잡한 시스템이다. 이러한 애플리케이션은 실시간 응답과 함께 향상된 안전성, 최적의 실행 시간을 필요로 하며, 다양한 기능들을 매끄럽게 동기화시켜야 한다.

PFC(Power Factor Correction: 역률 교정) 기능이 있는 모터 컨트롤부터 조명 밝기 컨트롤에 이르기까지, 이러한 복잡한 애플리케이션들은 다양한 모듈을 간편하게 스위칭할 수 있어야 한다. 프로세서 구동 타이밍 및 시퀀싱 솔루션은 기본적으로 지연을 발생시키기 쉬우며, 이를 정확하게 예측하기도 어렵다.

또 이러한 접근 방식은 응용 프로그램 성능을 최적화하기 위해 CPU 부하를 덜어 낼 수 있는 기능을 충분히 활용하지 못하기 때문에 낭비되어서는 안될 CPU 대역폭을 소비하므로 CPU의 능력을 최대로 발휘할 수 없게 만든다.

마이크로칩의 16비트 dsPIC33 디지털 신호 컨트롤러(DSC) 디바이스에 도입된 코어 독립형 주변장치(Core Independent Peripheral: CIP)중의 하나인 PTG(Peripheral Trigger Generator: 주변장치 트리거 발생기) 기능을 통해 복잡한 애플리케이션에서 다양한 기능의 정확한 타이밍과 시퀀싱을 조정하여 CPU의 처리 부담을 줄일 수 있다.

몇 가지 예를 통해 PTG가 역률 보정 기능을 갖춘 모터 제어, 빛의 강도 제어 또는 코어와 독립적인 클럭 소스 역할을 하는 고정 주파수 신호 발생 등 타이밍에 중요한 애플리케이션의 주변 시퀀싱을 간소화하는 주변장치 시퀀싱 간소화 방법을 설명한다.

PTG는 코어 독립적이므로, CPU가 전력 절감을 위해 슬립모드에 있거나 다른 주요 작업에 집중하는 동안 해당 작업을 계속 실행할 수 있다.

PTG는 그 명칭처럼 사용자 프로그래밍이 가능한 시퀀서로서, 내장된 주변장치들의 동작을 조정하기 위해 복합식 입력 신호 시퀀스에 따라 트리거를 발생시킨다. PTG를 사용하는 애플리케이션은 아날로그-디지털 컨버터(ADC), 출력 비교(OC), 펄스 폭 변조기(PWM), 타이머, 인터럽트 컨트롤러와 같은 다른 주변장치에 대해 복합 트리거 및 응답 시퀀스를 발생시킨다.

PTG는 코어에 대한 애플리케이션 의존성을 낮춰줄 뿐만 아니라, 모듈 상호작용을 전담하여 소프트웨어 복잡성을 낮추고 효과적인 모듈화를 유지한다.

PTG는 스텝 명령(step command)으로 불리는 8비트 명령을 PTG 큐 레지스터로 지원한다. 각각의 8비트 스텝 명령은 4비트 명령 코드와 4비트 옵션 필드로 구성된다. 이 명령들이 이벤트 시퀀스를 정의하여 주변장치들로 출력 트리거 신호를 발생시킨다. 스텝 명령을 사용하면 코어로 인터럽트 요청을 생성할 수도 있다.


◆역률 및 모터 컨트롤
통합 역률 교정(PFC) 및 모터 컨트롤 애플리케이션에서 단일 DSC 디바이스는 FOC(자속 기준 제어)와 PFC 컨버터를 사용해 영구 자석 동기 모터를 제어한다.

이 애플리케이션은 모터 동작 제어용으로 3개의 PWM 채널, PFC 동작 제어용으로는 1개의 PWM이 추가로 필요하다. 출력 비교(OC) 주변장치를 사용하면 애플리케이션으로 사용 가능한 PWM 채널 수를 확대할 수 있으며, 이 디바이스에서 사용 가능한 고속 PWM 채널 수 이상으로도 확대할 수 있다.

모터 컨트롤과 PFC 동작에 필요한 신호를 생성하기 위해 PWM와 OC를 함께 사용할 수 있다. 하지만 PFC와 같은 애플리케이션은 다수의 작업을 최적 실행 시간 이내에 완료해야 하므로 실행 시간이 매우 중요하다.

이러한 작업에는 모터 컨트롤 및 PFC PWM을 동기화하고, ADC의 변환을 트리거하며, 모터 컨트롤 및 PFC 피드백 신호에 사용되는 ADC 채널들을 스위칭하는 것들이 포함된다.

PTG를 사용하면 이 작업들을 효과적으로 수행할 수 있다. PTG가 고속 PWM 및 OC를 동기화하고 고속 PWM 주변장치 에지를 모니터링하여 ADC 트리거를 발생시킨다. 또한 'ADC 변환 완료' 인터럽트를 모니터링하고 적절한 인터럽트를 발생시켜 FOC 및 디지털 PFC 컨트롤 코드를 실행한다.

주변장치 처리 코어를 독립적으로 만들어 CPU 개입을 줄이기도 한다. 이를 통해 애플리케이션의 전반적인 전력 소모를 감소시키는 동시에 더 중요한 기능을 수행할 수 있도록 CPU의 부담을 줄일 수 있다. 참고로 모터 컨트롤 및 PFC PWM의 스위칭 주파수는 정수 배수가 되도록 선택해야 한다.

dsPIC DSC에 있는 ADC는 4채널 동시 샘플링이 가능하다. FOC와 PFC 알고리즘은 모두 각각의 아날로그 채널을 보유하며, 이 채널들을 동시적으로 샘플링해야 한다. 효율적인 제어를 위해서는 이 신호들의 위상 관계가 중요하기 때문이다.

모터 컨트롤 및 PFC의 피드백 신호를 선택할 때는, ADC 채널 선택을 번갈아 수행하여 모터 컨트롤 및 PFC의 신호를 모두 샘플링하도록 해야 한다.

ADC 트리거에 앞서 모터 컨트롤 및 PFC 신호를 PWM 에지에 따라 샘플-앤-홀드(S&H) 회로로 연결할 수 있다. 채널들을 구성할 경우, 4채널 샘플링 및 변환 시퀀스를 마쳤을 때 FOC와 PFC 제어를 위해 그 변환 결과를 해당 ADC 버퍼 레지스터에서 이용할 수 있게 구성해야 한다.

그림 1. PTG 인터럽트를 사용한 코드 실행

PFC 피드백 신호를 ADC의 S&H 회로로 연결하도록 채널 선택 비트를 설정한 후에는 PFC PWM 사이클마다 트리거를 생성해야 한다. 마찬가지로 모터 컨트롤 피드백 신호를 ADC의 S&H 회로로 연결하도록 채널 선택 비트를 설정한 후, 모터 컨트롤 PWM 사이클마다 ADC 트리거를 생성해야 한다.

따라서 모터 컨트롤 및 PFC PWM 펄스의 에지를 모니터링함으로써 ADC 트리거를 생성할 수 있게 PTG 주변장치를 구성한다. 또한 그림 1에서처럼 FOC 및 PFC를 위한 코드를 실행하기 위해 2개의 PTG 인터럽트를 생성한다.

이 예시처럼, PTG는 모터 컨트롤과 PFC를 단일 dsPIC33 디바이스에서 구현하기 위하여 ADC 및 PWM의 사용을 효율적으로 시퀀싱하여 구현을 간소한다.


◆조명 컨트롤
조명 밝기 컨트롤 애플리케이션에서는 OC를 사용한 PWM 발생기를 통해 조명 밝기를 제어할 수 있다.

이 애플리케이션은 2개의 OC를 사용하며 2개의 개별 ADC 채널에서 얻은 입력을 사용하여 듀티 사이클을 제어한다. 각 ADC 값에 따라 듀티 사이클을 업데이트한다. PTG를 사용하면 보다 간단하게 ADC와 OC를 동기화할 수 있다. 또한 PTG는 주변장치 데드록을 방지할 수 있으므로 애플리케이션의 안전성을 향상시킨다.

동기화를 수행하기 위해 회로는 먼저 ADC를 모니터링하고 OC 듀티 사이클을 변경하기 위해 적절한 인터럽트를 발생시킨다. 그런 다음 CPU를 방해하지 않고 ADC 채널을 변경하는데, 이는 PTG가 코어 독립적인 실행이 가능하기 때문이다.

PTG의 추가적인 안전 기능으로는 예기치 않은 결함 발생 시 이를 모니터링하고 필요한 교정 조치를 수행하는 전용 와치독 타이머가 있다. 그림 2는 이 애플리케이션의 블록 다이어그램을 보여준다.

그림 2. PTG를 사용한 출력 비교(Output Compare) 듀티 사이클 컨트롤

PTG 내의 와치독 타이머는 하드웨어 트리거 하이-로우 상태까지 대기하는 명령 실행 시 PTG가 외부 이벤트의 발생을 무한정 기다리는 상황이 일어나지 않도록 한다. 이 애플리케이션에서 PTG는 ADC 변환 완료 트리거를 기다려야 한다.

와치독 타이머가 활성화되면 명령 실행이 시작될 때 카운팅을 시작한다. 명령 실행이 완료되면 와치독 타이머는 정지된다. 와치독 타이머 타임아웃 시간 이내에 예정된 이벤트가 발생하지 않으면 PTG는 문제의 명령을 중지시키고 시퀀서를 정지시킨다. 그리고 CPU에 와치독 타이머 오류 인터럽트를 발행한다.

이는 ADC나 PTG가 동작을 멈출 경우 상황을 복구하도록 하는 안전 기능의 역할을 한다. 와치독 타이머 오류 인터럽트를 사용해 이 주변장치들을 초기화하고 재시작할 수 있다.

PTG는 CPU 주변장치의 개입 없이 ADC 채널을 스위칭하고 주변장치들을 모니터링함으로써 애플리케이션 코어를 독립적으로 동작하게 한다. 이를 통해 애플리케이션 내 다른 작업에 CPU를 사용할 수 있다.

PTG가 알아서 주변장치 내의 모든 상호작용을 처리하므로 소프트웨어 복잡성을 줄이고 효과적인 모듈화를 유지할 수 있다. PTG의 와치독 타이머는 치명적 오류를 복구하도록 지원하므로 애플리케이션의 강건성을 높인다.


◆일정한 주파수 파형
PTG를 사용하여 일정한 주파수 신호를 생성할 수 있으며 이를 클럭 소스로 사용할 수도 있다. PTG가 비교기를 트리거하면 비교기는 마스크 입력 선택으로 동작한다. PTG의 트리거 펄스 폭은 가변적이며 PTG는 자체 타이머를 사용한다.

그림 3. 사용자 프로그램 가능 마스킹 기능

그림 3과 같이 주변장치 트리거는 연산 증폭기 및 비교기의 마스크 입력 선택으로 동작할 수도 있다.

이 기능을 사용하면 PTG 출력을 비교기를 통해 가져올 수 있다. 반전 입력은 그라운드로 연결되고 비반전 입력은 내부 레퍼런스 전압으로 연결되도록 비교기를 구성한다.

트리거 펄스는 직접적으로 비교기 출력으로 나타난다. 따라서 PTG가 트리거를 연속적으로 생성하는 한, 비교기는 일정한 주파수 파형을 생성하게 된다. 이 파형의 펄스 폭은 PTG 클럭의 1사이클이다.

온-오프 시간은 PTG 타이머와 펄스 폭 비트를 사용해 제어할 수 있다. 출력 펄스 폭은 출력 파형의 오프 시간을 결정하고, 타이머는 출력 파형의 온 시간을 결정한다. 이는 트리거되는 비교기 간의 지연 시간이다.

비교기 출력 극성에 따라 온-오프 시간은 타이머이나 펄스 폭 비트에 의해 제어된다. 또한 클럭 분주기로 동작하는 레지스터를 통해 출력 주파수를 제어할 수 있다.

비교기 출력 극성을 변경하면 네 개의 비교기를 사용해 상보형 파형을 생성할 수 있다. 펄스 폭 비트를 사용하면 펄스 폭을 조절할 수 있으며 이는 출력의 주파수를 감소시킨다. 따라서 PTG와 비교기를 통해 일정한 파형을 생성할 수 있다.

이 애플리케이션에서 PTG를 사용했을 때의 이점은, 출력을 일정한 클럭 소스로 사용할 수 있으며 코어로부터 완전히 독립적으로 실행될 수 있다는 것이다. 보다 많은 비교기를 사용하면 상보형 파형까지 생성할 수 있다. 또한 PTG는 휴지 모드나 슬립 모드와 같은 절전 모드에서도 동작이 가능하다.

마이크로칩의 dsPIC33 디지털 신호 컨트롤러(DSC) 디바이스에 내장된 PTG를 사용하면 타이밍 또는 파워에 민감한 애플리케이션에 대해 복잡한 애플리케이션 시퀀스를 보다 유연하게 설계할 수 있다. PTG를 사용함으로써 CPU 개입 없이도 다양한 주변장치들이 원활하게 상호작용할 수 있다.

또 기존 주변장치의 기능을 향상시켜 해당 주변장치의 성능을 더욱 극대화할 수 있다. PTG를 사용하면 응답 시간을 단축하고 소프트웨어의 부담을 줄이게 된다. 전용 와치독 타이머 등의 기능을 갖추고 있으므로 기능적 안전성도 향상시킬 수 있다.


글 : 라비키란 셰티(Ravikiran Shetty) / 마이크로칩 애플리케이션 엔지니어

저작권자 © IT비즈뉴스(ITBizNews) 무단전재 및 재배포 금지