태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.


◆ 목적

EVM 보드의 MIC 포트로 입력되는 아날로그 신호(음성 or 음악) ADC를 통해 디지털 값으로 변환하고 이를 통신모듈, PWM 모듈과 DAC, LPF 등을 이용하여 다시 아날로그 신호로 출력한다.

 

◆ 참고

싱크웍스(www.tms320.co.kr), TMS320F28x CPU 핸드북(백종철 저),  TMS320F28xx 메뉴얼 2

 

◆ 준비

PC, EVM 보드, 2833x 계열의 DSP, CCS 2.1이상, JTAG 에뮬레이터(TDS510USB 권장), 점퍼선 8, 정전기 방지 손목띠, 스트레오 미니잭, PC스피커

 

◆ 예제파일

Special Example_2833x.zip (싱크웍스 홈페이지 활용예제 게시판 참조)

 


이번에는 2833x DSP 모듈과 EVM 보드를 이용하여 아날로그 신호를 디지털로 변환하고 이를 다시 아날로그로 변환하여 출력하는 예제를 준비했다. 지금까지는 28x DSP 모듈이 가지고 있는 고유 주변회로 별로 기능을 알아보기 위한 간단한 예제를 다루어 왔었다. 이번에는 28x EVM 보드의 조합을 이용하여 ADC, PWM변조, SPI 통신, DAC 등을 이용한 통합 예제를 가지고 여러분과 함께 풀어나갈 것이다.

 

예제의 구성은 다음과 같다. PC의 스피커 출력단과 EVM MIC 입력포트를 스트레오 미니잭으로 연결하여 PC에서 재생하는 음악의 아날로그 신호를 ADC 입력단에 인가하게 된다. ADC에 인가된 아날로그 신호는 28x DSP에 의해 디지털 값으로 변환되고, SPI 통신모듈과 SPI DAC를 거쳐서 다시 아날로그 신호로 스피커를 통해 출력된다. 사용자의 선택에 의해 SPI + DAC 의 조합대신에 디지털 신호를 PWM 변조를 통해 출력하고 이를 1 RC 저대역통과필터를 통과하도록 하여 아날로그 신호로 복원하는 것도 가능하다.

 


1. EVM 보드의 회로를 다음과 같이 결선 하시오.

 

 

[ADC]

CN9901_MIC0 ~ CN9900_MIC0

 

[PWM]

PWM3 ~ J4200_HR_PWM_B

 

[신호입출력]

사운드 출력 ~ ADCIN_MIC0

HR_PWM_B ~ 스피커 입력

 

 

 


2. 본 예제의 동작을 확인하시오.
본 예제는 28x ADC 입력채널 6(EVM MIC 입력포트와 연결되어 있다, EVM 패턴 P2300)을 통해 PC에서 재생되는 오디오 신호를 입력 받고, 이를 디지털로 변환 후 다시 통신포트 혹은 PWM 출력포트를 통해 출력하여 아날로그 신호로 복원하게 되어 있다.

디지털로 변환된 오디오 신호는 별도의 처리과정(각종 필터나 연산) 없이 바로 출력 단으로 출력되고, DAC 혹은 저대역통과필터(Low pass Filter)를 통해 아날로그 신호로 복원된다. 모든 과정을 거쳐 복원된 아날로그 신호가 최종적으로 출력되는 곳은 EVM 패턴 CN4000 DAC_B HR_PWM_B 부분이다.

 
SPI 통신모듈과 DAC를 거쳐 출력되는 부분과 PWM 변조되어 출력되는 신호는 모두 1 RC 저대역통과필터를 거치도록 했다. 이는 EVM 보드 출하 시 각각 0Ω open 상태로 되어 있다. 아래는 사용된 1 LPF(이하 저대역통과필터)에 관한 간단한 설명과 EVM 보드의 수정내용이다.



1 RC 필터
흔히 어떤 신호의 특정 주파수 성분만을 사용하려 할 때 우리는 필터를 디자인하고 사용하게 된다. 필터의 종류에는 Lowpass-filter, Highpass-filter, Bandpass-filter, Band-rejection filter 등이 있다. 이는 각각 통과시키거나 Block하는 주파수요소가 다르다. 저역통과필터(low pass)의 경우는 신호의 High-Freq. 성분을 배제하고 저주파 성분만을 통과시키고, 고역통과필터(High pass)는 그 반대의 경우이다.

대역통과필터(Band pass)의 경우는 원하는 특정 주파수성분을 통과시키고 나머지는 배제하는 용도이고 대역저지필터(Band-rejection)의 경우는 특정 주파수 만을 막고, 나머지는 모두 통과시킨다.

 

가장 일반적인 필터로 저역통과필터를 꼽을 수 있는데 이상적인 저역통과필터의 주파수 특성이 아래의 <그림 1.>에 파란색 실선으로 나타나있다. 점선은 물리적으로 구현되는 실제 필터의 주파수 특성이다. 이상적인 필터의 경우 ω0까지의 주파수만을 통과시키고 나머지 모든 주파수를 배제하지만 이와 같은 이상적인 필터를 설계하는 것은 불가능하다.

 

R C로 구성되는 간단한 1차 저역통과 필터의 그림이 <그림 2.>에 나타나 있다. 이 필터의 주파수 특성은 <그림 1. >에 파란색 점선으로 나타나 있다.

 

이 필터의 전압 이득은 다음과 같다.

 


시상수(Time constant) τ = RC와 같을 때, 아래와 같이 다시 표현할 수 있고,

 


크기 특성은

 

 
위상 특성은

 

 
와 같다. 차단 주파수(Cutoff-Freq.) ω=1/τ에서의 크기는 다음과 같다.

 


또한 이때의 차단 주파수를 일반적으로 반 전력 주파수(Half power freq.)라고 하는데, 전압이나 전류가 그 최대값의 1/sqrt(2) 이라면 전압이나 전류의 제곱에 비례하는 전력(power)는 최대값의 1/2 라는 의미를 가지고 있다.

 

 

<그림 1. >

 

 

<그림 2. >



아래의 그림은 EVM 보드의 회로 수정을 보여준다. 사진의 빨간 화살표가 가리키는 곳의 회로다.  HR_PWM_B의 최종부분을 아래와 같이 수정해야 한다.

 

 

 
위와 같은 회로의 수정을 통한 1 RC필터의 적용이 끝났으면 PC의 오디오 재생기를 통해 음악을 재생하고 예제를 실행한다. 예제의 실행 후 PC에서 재생되는 사운드가 EVM을 거쳐 스피커로 출력됨을 확인할 수 있을 것이다.

 


3.
예제 코드를 살펴보고, 대략적인 동작에 대해 이해한다.
위에서 예제를 실행시켜 DSP를 통해 복원된 음악을 들어보았다. 그렇다면 예제의 코드는 어떻게 구성되어 있을까? 본 예제에서는 ADC, PWM, SPI 등 지금까지의 예제에서 다루지 않았던 28x DSP의 여러 주변회로를 사용하고 있다. 따라서 지금은 자세한 설명보다는 대략적으로 다룰 것이다. 이 후에 각각의 주변회로의 특징이나 쓰임에 대해 자세히 알아보는 예제가 준비되어 있다. 그 이후에 본 예제를 다시 한번 본다면 그 때에는 완전히 이해가 가능할 것이다.

아래는 본 예제의 처음 부분이다.


<그림 12-1. SPI/PWM 선택 코드>

 
<그림 12-1>을 보면 "#define.." 을 통해 정의되어 있는 SELDAC SELPWM이 보인다. 이 선언문을 통해 SPI를 통해 출력할 것인지 PWM을 통해 출력할 것인지를 사용자는 선택이 가능하다. 아래는 위의 선언과 관련된 코드들을 보여준다.

 

 

<그림 12-2. SPI/PWM GPIO 설정 및 주변회로 초기화 함수 호출>

 
<그림 12-2>의 코드는 SELDAC, SELPWM 값의 참(1) 혹은 거짓(0)에 따라 분기하도록 되어 있다. 컴파일 과정에서 전처리기에 의해 선택적으로 해당하는 코드만이 선택된다. 이와 같은 방법을 사용함으로써 일반적인 분기구문을 사용하는 것에 비해 결과파일의 용량을 조금이나마 줄일 수 있다.

 

다음은 ADC에 관련된 초기화 코드이다.

 

 

<그림 12-3. ADC 초기화 코드>

 
위의 <그림 12-3>에 나와있는 각각의 레지스터들이 무엇을 하는 것인지는 여기에서 다루지 않는다. 다만 간단하게 설명을 하자면, ADC의 입력채널 6번을 사용하고 EPWM1 모듈의 타이머를 이용하여 타이머가 HEX 0x0370(10진수, 880)을 셀 때마다 ADC Conversion 명령을 하도록 되어 있다. 따라서 ADC EPWM1 모듈의 타이머 주기 0x0370 마다 한번씩 ADC 6번 채널에 인가되는 신호를 디지털 값으로 변환하게 된다.

 

다음은 ADC의 인터럽트 서비스 루틴이다. 위의 <그림 12-3>에 나와있는 초기화 설정에 의해 발생되는 인터럽트마다 호출되어 실행된다.

 

 

<그림 12-4. ADC 인터럽트 서비스 루틴>

 
<그림 12-4>의 인터럽트 서비스 루틴에도 <그림 12-2>의 코드와 같은 분기구문이 존재한다. 따라서 사용자의 선택에 따라 선택적인 컴파일이 이루어진다. Voice 라는 변수에 ADC한 디지털 값을 저장하고 이를 SPI 통신모듈 혹은 PWM 비교 레지스터로 Gain을 조절하여 전달하고 있다. SPI 부분에서 0x4000 이라는 값을 더하는 과정은 EVM 보드에 사용된 SPI-DAC(TLV5638, TI SPI_DAC, Datasheet)의 컨트롤 비트와 관련이 있다. 이 부분은 이 후에 SPI 통신모듈에 관련된 예제를 다루면서 더욱더 자세히 알아볼 것이다.

 

이 외에 EPWM, SPI 모듈의 초기화와 관련된 코드들이 더 있지만 이 후에 해당 주변회로를 다루는 부분에서 세부적인 기능과 쓰임에 대해 알아보도록 하자.

 

PWM, SPI-DAC 각 출력에 대한 음악샘플을 다시 들어보자. DSP를 거치지 않은 음악과 비교해 보면 약간의 손실 및 왜곡이 있는 것을 알 수 있다.

 


◈생각해보기

아날로그 신호를 디지털로 변환하고 다시 아날로그로 변환할 때에는 그 정도의 차이는 있지만 분명히 왜곡이 발생하게 된다. 하지만 위의 음악샘플에는 그것과는 다른 노이즈 성분 또한 포함되어 있다. 어떻게 하면 좀 더 깨끗한 복원음질을 만들 수 있을지 생각해 보자.




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


Posted by 남상일

댓글을 달아 주세요