태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

소개

본 게시물은 싱크웍스의 TMS320F2801 모듈과 예제를 사용해서 TI 28x DSP용 각종 라이브러리를 직접 사용해 보고, 테스트 해볼 수 있는 글입니다. 테스트를 위해 사용된 예제는 TMS320F2801 기준으로 만들어 졌지만, 2802, 2806, 2808등의 상위 모델 들에서도 모두 사용하실 수 있습니다. TMS320F2801 모듈은 2008 11 1일부터 1000대 한정 특가 이벤트 중이니 280x 계열의 DSP 모듈이 없으시다면 저렴하게 구입하는 기회를 가지세요~

 

 

[그림 1] TMS320F2801 DSP 모듈

 

 

예제는 TI 28x DSP용 라이브러리 들 중 "IQmath (SPRC082)", "Signal Generator (SPRC067)", "Digital Filter (SPRC082)", "Data Log" 4가지의 라이브러리를 사용합니다. TI는 이 외에도 여러 가지 라이브러리를 제공하고 있습니다. 아래 링크를 클릭하시면 TI 사이트에서 각종 라이브러리를 확인할 수 있습니다.

  

TI C2000 DSP "Signal Processing Libraries"

  

LIB 테스트 예제는 다음 그림과 같이 구성돼있습니다. Signal Generator LIB를 통해서 신호를 생성하고, 생성된 신호를 Digital Filter LIB를 통해 필터링 합니다. 각각의 결과는 Data Log LIB를 통해서 그래프로 확인할 수 있습니다. IQmath LIB는 단순히 앞서 사용한 라이브러리의 초기화 과정을 조금 더 쉽게 하기 위해 사용됐습니다.

  

 

[그림 2] LIB 테스트 예제 블록도

  

예제를 테스트 해보기에 앞서 우선 예제에 사용된 라이브러리들을 간단히 소개해 보겠습니다.

 


간단한 라이브러리 소개

Signal Generator LIBSIN, Ramp(톱니), trapezoidal(사다리꼴)등의 다양한 파형을 생성할 수 있습니다. 특히 SIN 신호는 Look-up table 방식을 사용해서 고속으로 생성이 가능하며 Look-up table 방식 때문에 발생할 수 있는 오차 또한 선형 보간법을 사용해서 줄일 수 있기 때문에 정밀한 SIN 신호도 생성할 수 있습니다. 생성된 파형은 간단한 조작만으로 Gain, Freq, offset 등의 파라메터들을 손쉽게 수정할 수 있습니다. 더 자세한 설명은 TI에서 SPRC083 문서를 참고하세요.

  

 

[그림 3] Signal Generator 라이브러리의 생성 파형

 

 Digital Filter LIB FIR방식과 IIR방식 2가지 방식을 제공합니다. 방 각식에 따라 필터차수, 필터방식(LPF, HPF, BPF,BSF), 입력신호의 샘플링 주파수, 컷오프 주파수 등의 정보만 가지고도 손쉽게 필터를 설계 할 수 있습니다. 필터 계수를 생성하는데 Matlab를 사용하기 때문에 Digital Filter LIB를 사용하기 위해서는 Matlab이 필요합니다. 테스트 예제에 사용된 필터는 FIR방식을 사용했습니다. 더 자세한 설명은 SPRC082 문서를 참고하세요.

 

  

[그림 4] Digital Filter 라이브러리

  

Data Log LIB DSP상에서 연산되고 있는 데이터를 설정한 크기의 버퍼에 최대 4채널 까지 저장하는 기능을 합니다. prescale, buffer size, triger value 등을 설정할 수 있어서 CCS 상에서 프로그램의 데이터의 형태를 그래프 기능으로 관찰할 때 아주 유용한 라이브러리입니다. 테스트 예제에서도 Signal Generator LIB와 생성된 신호와 Digital Filter를 통과한 신호를 그래프로 관찰하기 위해서 사용하고 있습니다.

 

 

예제 테스트

이제 LIB 테스트 예제를 한번 사용해 보도록 하겠습니다. 지문을 따라서 잘 따라 해 보시고, 소스 코드를 잘 파악하시면 손쉽게 라이브러리 들을 사용해 보실 수 있습니다. 진행은 일단 CCS를 어느

 

① 예제 설치

먼저 아래 링크 클릭해서 예제를 다운받으시기 바랍니다. 예제는 TI에서 제공하는 C280x C/C++ Header Files and Peripheral Examples 헤더파일들을 바탕으로 만들어 졌기 때문에 LIB 테스트 예제 설치에 앞서 SPRC191을 먼저 설치하셔야 합니다. SPRC191의 설치가 돼있다면 다음 경로에 LIB 테스트 예제를 설치 합니다.

 

 

C:\tidcs\c28\DSP280x\v141\SyncWorks_EVM


 

② 예제 실행하기

예제를 올바르게 설치 했으면 CCS에서 다음경로의 프로젝트 파일을 열어서 예제를 실행 합니다.

 

C:\tidcs\c28\DSP280x\v141\SyncWorks_EVM\280x_SG_and_Filter_Ex\280x_SG_and_Filter_Ex.pjt

 

SIN 신호 발생 확인하기

CCS 그래프 기능을 사용해서 다음 그림과 같이 옵션을 설정하여 그래프를 엽니다.

 

 

 

[그림 5] 그래프 설정

 

 

열린 그래프는 아래 그림과 같을 것입니다. 그림에서 보이는 파형이 SIN 파형은 한 개의 주파수가 아닌 3개의 주파수가 섞여있는 파형입니다. 예제에서 Signal Generator LIB의 모듈을 3개 사용해서 출력된 각각의 SIN 신호를 합성했습니다.

 

  

[그림 6] 출력 파형 그래프

 

 

위에 보이는 파형에 어떤 주파수 성분이 합성됐는지는 확인하기 위해 CCS 그래프 기능을 사용해 볼 수 있습니다. 그래프를 하나 더 띄우고 다음과 같이 설정합니다.

 

  

[그림 7] 그래프 설정

 

 

위와 같이 설명을 했으면 다음과 같은 신호의 스펙트럼을 볼 수 있습니다. 그래프가 제대로 안 나온다면 리얼 타임 모드를 사용해서 실시간으로 관찰해 보세요. 조금씩 변화가 있어서 정지 모드에서 그림과 약간 달라 보일 수 있습니다. 스펙트럼을 보면 약 100Hz, 500Hz, 900Hz의 신호가 합성되어 있다는 것을 알 수 있습니다. 소스코들 보시면서 라이브러리의 초기 설정이 어떻게 되어 있는지 확인해 보세요.

 

  

[그림 8] 출력 파형의 스펙트럼 그래프

 

 

④ 디지털 필터링 확인하기

이제 Digital Filter LIB사용 해서 [그림 6]에서 보이는 신호에서 원하는 신호만을 필터링 해보겠습니다. 예제는 기본적으로 설정된 필터는 Cutoff 주파수가 250Hz Low Pass Filter 입니다. 이 필터를 거치면 [그림 8]에서 보이는 주파수 성분 중 100Hz의 성분 만 남기 때문에 [그림 6]의 복잡해 보이는 신호가 깨끗한 SIN 파형으로 필터링 될 것입니다. 그래프를 두개 더 띄우고 각각 그림 5와 그림 7의 설정과 동일하게 하되 "Start Address" 설정만 "DLOG_4CH_buff2" 로 바꾸어서 입력하세요. 올바로 설정했다면 다음과 깨끗한 SIN 신호만 필터링 된 것을 볼 수 있습니다.

 

 

 

[그림 9] 필터링 된 신호의 그래프

 

 

예제에 사용된 "fir.h" 헤더파일에는 필자가 위에서 테스트 해본 LPF외에도 HPF, BPF, BSF 필터의 계수들이 저장 되어 있습니다. 소스코드 상에서 필터 계수를 바꾸는 것 만으로 세가지 필터를 모두 테스트 해볼 수 있습니다.

  

32:  /* Define Constant Co-efficient Array  and place the .constant section in ROM memory  */

33:  long const coeff[(FIR_ORDER+2)/2]= LPF128_cut250Hz_sam10KHz;

 

 

"280x_SG_and_Filter_Ex.c" 소소코드에서 외에 보이는 빨간색으로 밑줄 그은 부분이 필터계수를 초기화하는 부분입니다. 그 부분을 아래 코드로 바꿔보면서 LPF, HPF, BPF, BSF 4가지의 필터를 테스트 해볼 수 있습니다.

 

LPF128_cut250Hz_sam10KHz - 128 LPF 계수, Cutoff freq:250Hz, Sampling freq:10KHz

HPF128_cut750Hz_sam10KHz - 128 HPF 계수, Cutoff freq:750Hz, Sampling freq:10KHz

BPF128_cut250750Hz_sam10KHz - 128 BPF 계수, Cutoff freq:[250 750]Hz, Sampling freq:10KHz

BSF128_cut250750Hz_sam10KHz - 128 BSF 계수, Cutoff freq:[250 750]Hz, Sampling freq:10KHz

 

필터계수
에 따라 그래프가 어떻게 변하는 테스트 해보세요.

 

 

여기까지 TMS320F2801 모듈을 사용한 TI Library 사용 예제를 사용해 봤습니다. 각각의 라이브러리에 대한 자세한 내용은 해당 라이브러리를 설치하면 들어 있는 문서들을 참고 하시기 바랍니다.

DSP에 대해 좀 더 알고 싶으세요? 싱크웍스 무료실습강좌를 신청하세요. ----------> 무료실습강좌 신청하기
본 내용이 유익하셨다면 싱크웍스 블로그 2.0을 구독하세요. -------------------------> 싱크웍스 RSS
 
Posted by syncworks

댓글을 달아 주세요