본문 바로가기
임베디드 개발/TMS320F2838x (C28x)

TMS320F28388D ] Input Qualification

by eteo 2024. 7. 2.

 

 

 

 

TMS320F28388D DSP GPIO 모듈에 있는 Input Qualification 회로는 말 그대로 신호가 유효한가 Qualification 하는 회로이다. 

 

Inpuq Qualification 기능을 사용하면 GPIO 포트로 입력되는 신호를 지정된 횟수만큼 샘플링해서 로직이 모두 일치하는 경우에만 신호 변화를 전달하고 그렇지 않은 경우는 노이즈로 취급해 무시하게 된다.

 

 

다음 블락도를 보자.

 

외부 GPIO 입력 핀에 신호가 전달되면 DSP SYSCLK와 동기되어 Qualification 회로에 전달되고, Qualification 회로는 순간적인 글리치를 필터링하고 내보내는 역할을 한다.

 

 

 

사용자는 샘플 수(GPxQSEL)와 샘플링 주기(GPxCTRL) 파라미터를 설정할 수 있고, 이를 통해 총 샘플링 윈도우 길이가 결정된다.

 

 

 

GPxQSEL1/2 레지스터

 

 

 

 

GPxCTRL 레지스터

 

 

 

 

driverlib 사용예시

GPIO_setQualificationMode(123, GPIO_QUAL_6SAMPLE);
GPIO_setQualificationPeriod(123, 510);

 

 

 

먼저 GPIO_setQualificationMode 함수로 신호가 샘플링 되는 횟수를 설정할 수 있다. 설정 가능한 값은 다음과 같다.

typedef enum
{
    GPIO_QUAL_SYNC,                     //!< Synchronization to SYSCLK
    GPIO_QUAL_3SAMPLE,                  //!< Qualified with 3 samples
    GPIO_QUAL_6SAMPLE,                  //!< Qualified with 6 samples
    GPIO_QUAL_ASYNC                     //!< No synchronization
} GPIO_QualificationMode;

 

  • Sync : 리셋시 디폴트 모드로 GPIO 입력 신호는 시스템 클럭(SYSCLK)에 맞춰 동기화 된다. 예를 들어 SYSCLK가 200MHz라면 샘플링주기는 5ns이고 DSP에 입력이 변경되기 전에 최대 SYSCLK 주기 만큼의 지연이 발생할 수 있다.
  • Qualification (3 samples) : 샘플링 횟수 3회
  • Qualification (6 samples) : 샘플링 횟수 6회
  • Async (no Sync or Qualification) : GPIO 입력 신호를 비동기로 설정하면 SYSCLK와 동기화하는 과정을 거치지 않고 외부 신호를 그대로 받아들인다. 이 모드는 입력신호의 동기화가 필요하지 않거나(ex. UART) 주변장치가 자체적으로 동기화를 수행하는 경우(ex. SPI, I2C)에 사용된다.

 

 

그리고 GPIO_setQualificationPeriod 함수는 SYSCLK를 분주해 샘플링 주기를 설정하는데 dividier 값은 1 또는 2에서 510 사이의 짝수가 올 수 있다.

 

 

 

Total Sampling Window 길이

 

총 샘플링 윈도우의 길이는 다음과 같다.

 

  • 3 샘플의 경우 샘플링 윈도우는 2 x 샘플링 주기
  • 6 샘플의 경우 샘플링 윈도우는 5 x 샘플링 주기

 

왜 샘플 갯수 - 1을 곱하는 건지 궁금할 수도 있는데 첫 샘플은 신호의 로직 반전이 일어났을 때 SYSCLK와 동기화 되어 샘플링되고 그 이후에 샘플링 윈도우가 적용되기 때문이다.

 

 

 

 

 

다음 그림은 Input Qualification의 기능을 잘 보여준다.

 

샘플링 윈도우 기간 동안 신호 로직이 모두 일치한 (D) 지점에서 Qualification 출력이 반전되고 (A) 글리치는 Qualification을 통과하지 못했기 때문에 무시된다.

 

 

 

 

 

 

한편 Input Qualification을 적용하면 노이즈를 어느정도 필터링할 수 있지만 디지털 입력이 신호의 변화를 반영하기 까지 샘플링 시간만큼의 지연이 발생하므로 이 부분도 고려하여 코드를 짜야 한다.