본문 바로가기

Software/MICOM

I2S(Intergrated Interchip Sound) 통신

I2S 통신

PCB 보드 내에서 칩 간 통신을 하는 방법에는 여러 가지가 있다.
(I2S, I2C, SPI, CAN, UART)

I2S(Intergrated Interchip Sound)라는 이름을 가진 이 통신규격은 Audio 전용 규격이다. 통상적으로  MCU에서 사운드 칩을 제어하는데, 칩 제어는 I2C로 하고 소리는 I2S로 하는 경우가 대부분이다.

I2S에서 기본은 SCK, WS, SD만 있으면 된다. 아래 이미지를 참고하기 바란다.

위의 그림과 같이 기본적으로 3개의 line이 연결된다.
Serial clock(SCK), Word Select(WD), Serial Data(SD) 이다.

각 Line을 설명하기 전에 TRANSMITTER, RECEIVER라는 용어가 나온다. 쉽게 말하자면 TRANSMITTER가 CPU이고 RECEIVER가 sound IC라고 보면 되겠다. 왜 그렇게 볼 수 있는 가 하면, 위의 그림에서 "SD"라인은 어떤 경우에도 TRANSMITTER에서 RECEIVER로 갈 수밖에 없다. CPU가 MP3와 같은 Sound file을 열어서 파싱 해서 sound IC에 sound data를 보낼 것이다. 따라서 CPU가 TRANSMITTER가 될 수밖에 없다.(흔히 sound IC는 sound codec이라고 부른다.)

 

그럼 "SCK"는 무엇일까? bit clock이라 생각하면 된다. "SD"로부터 나오는 데이터를 어떤 기준으로 자르는가 하면 "SCK"에서 clock이 발생할 때마다 "SD" 값을 읽어간다. 1 bit씩 clock이 발생할 때마다 "SD"의 값을 읽어보면 0 또는 1의 data가 존재하게 되는데 이 data가 연속적으로 읽히게 되면 음악이 된다. 대부분의 칩 간의 통신이 이러한 기준 clock을 가지고 data을 읽어온다. pwm이라는 다른 성격의 data 전송법도 있다.

 

"WS"는 left/right 정보라고 보면 되겠다. Stereo가 left/right 각 스피커에서 다른 소리가 날 수 있는 방법은 "WS"가 존재하기 때문인데, 예를 들면 "WS"가 low일 경우 left용 data를 읽고, high일 경우 right용 data를 읽는다.

기본적으로 위의 설명과 같은 3개의 Line만 있으면 sound data를 전송할 수 있다. 그러나 실제 sound IC는 보다 복잡한 메커니즘을 가지고 있다. 위의 내용은 스펙에 대해서만 다룬 것이다. 보다 자세한 사항은 아래서 다루겠다.

 

위키피디아의 정보에 따르면 3개 라인(bit clock word clock, data line) 외에도 master clock과 upload용 data line이 추가적으로 존재한다. sound IC는 스스로 clock을 만들 수 없으므로 master clock을 받게 된다. 해당 clock을 기준으로 sound IC는 나누고 곱하는 산술 연산 작업을 내부적으로 하면서 앞서 보았던 "SCK"나 "WS"를 발생한다.

upload용 data line은 만약 마이크가 sound IC에 물려 있게 된다면 마이크 음성 신호를 디지털 데이터로 전환 후 CPU에  전달해야 하기 때문에 "SD"와 같은 용도의 upload 전용 data line으로 bit data들이 전송된다. 추가적으로 sound IC를 제어하기 위해 I2S만 연결되어 있는 것이 아니라 I2C로 연결되어 있어야 한다.

 

I2S는 sound data를 전송하기 위한 표준이며, 실제 sound IC를 제어하기 위해선 제어용 통신이 별도로 필요하기 때문이다. SPI 통신이나 I2C, serial 통신 등이 존재하지만 대부분 sound IC는 I2C 통신을 하고 있다.

 

그럼 이제까지 설명된 내용을 토대로 전체적인 그림을 다시 그려보자.

위와 같이 I2S라인 5개와 I2C라인 2개가 연결되어야 sound IC를 제어할 수 있다. 이제 하드웨어 적으로 연결된 라인들과 각 라인들의 역할을 살펴보았다. 그럼 실제 "SD"에는 어떤 data가 전송될까?

그 data는 PCM으로 변환된 data이다. 쉽게 wave file format을 살펴보자. wave file format은 크게 "RIFF"부분, "fmt"부분, "data"부분으로 나뉜다. wave file의 정보를 담는 "RIFF"와 "fmt"를 합쳐도 36Byte이다. 나머지는 모두 "data"인데 PCM이란 analog 음원을 digital화 화면서 얻게 되는 sample들을 일렬로 나열한 형태이다. 해당 sample들이 "data"에 담긴 정보인 PCM data이다.

 

이런 연속적인 data가 "SD"라인을 통해 sound IC에 전달될고, sound IC는 PCM data를 아날로그화 하여 스피커나 이어폰으로 보내게 된다. MP3 또한 복잡한 format을 갖고 있는 압축된 음악파일이지만, 음원 압축을 풀 경우 위와 같은 PCM data를 갖게 되고, sound IC로 전송되어 소리가 나게 된다.

 

잠시 I2S에서 벗어나 음악파일 이야기를 해보자.
크게 3가지의 특성을 가진다. sampling rate, bit per sample, channel 수가 그것이다.
(mp3의 경우 위의 3가지 특성에 bit rate를 추가한다.)

 

모든 음원은 sampling rate(sample rate, sampling frequency라고도 부름, 이하 sampling rate라 함)가 존재한다. CD 음원인 wav file은 44.1KHz이고, mp3 file은 32bit, 44.1, 48KHz 정도 된다. 즉, 44.1KHz는 초당 44100번의 sample을 추출하는 것이다. 

bit per sample은 sampling rate에 추출된 sample이 8bit 인가? 또는 16bit 인가에 대한 내용이다. 8bit일 경우 음의 세밀함이 256단계(2^8)이며, 16bit일 경우 66536단계(2^16)이다. 16 bit가 세밀함으로 음의 정확도가 뛰어나다.

channel 수는 mono인가? stereo인가? 에 대한 내용이다. 요즘은 대게 stereo 2 channel을 많이 사용한다.

위의 3가지 정보로 초당 처리되어야 할 bit 수가 계산된다. CD에 들어있는 음원(44.1KHz에 16bit, stereo)이라면,
초당 44100 * 16 bit * 2 = 1411200 bit가 전송된다. Kilo bit로 환산하면 약 1378 kbps으로 상당히 높은 bit rate이다.

 

MP3의 경우 bit rate가 추가된다고 위에서 언급했었다. 128 kbps, 192 kbps, 320 kbps 등으로 전송되는 bit rate를 표시하곤 한다. mp3는 mpeg 규격을 따르는 압축 포맷이므로 CD의 원음 bit rate인 1378 kbps를 압축해서 128 ~ 320 kbps로 줄일 수 있다.

다시 I2S 내용으로 돌아와서, 위에서 말한 음원에 따라 'SCK'와 'WS'를 변경해 줘야 한다. 44.1KHz와 stereo에 따라 'SCK'와 'WS'가 변경되어야 'SD'가 정확하게 읽힐 수 있다.

 

최종적으로 음악을 재생하기 위해서는

1. sound IC가 master인지 slave인지 정하고, sound IC를 initialize(I2S, I2C 설정)한다.
2. CPU에서 음원(Wave file, mp3 file)을 분석하여 sampling rate, bit per sample, channel 수를 파악한다.
3. I2C를 통해 sound IC에게 sampling rate, bit per sample, channel 수 등의 정보를 알려준다. 그러면 sound IC는 'SCK'와 'WS'를 해당 음원에 맞게 설정한다.
4. 'SD'에 PCM data를 넣어준다.
5. 음악이 스피커나 이어폰을 통해 재생된다.


부록.

초창기에 오버샘플링과 필터가 없을 시에는 MCLK가 없었으나, 이후 PCM을 처리하면서 MCLK선과 up SD선이 생겨났다.

  • SCLK(Serial Clock) : 비트 클럭으로 한 클럭에 Audio 신호 1bit를 읽을 수 있다.
  • WS(Word Select) : Stereo의 경우 Left/Right의 신호가 있는데, Lo, high를 각각에 대응시킨다.
  • SD(Serial Data) : Sound or ppm data를 실어 보낸다.
  • MCLK(Master Clock) : 사운드 칩의 각종 동작들을 위한 기준 클럭용으로 제공된다.
  • up SD(up Serial Data) : MCU 쪽으로 제공되는 Serial Data로 마이크에서 받아 PC에 넘기는 것처럼 이용됨
  • I2C : Audio 칩을 제어하는 용도로 사용되며 주로 레지스터에 읽고 쓰기를 한다.
이렇게 Audio 칩을 제어하기 위해선 5~7개의 선이 필요하다.
 
오디오 칩제어는 먼저 I2C로 Audio 칩이 동작가능하도록 Master/Slave, I2S(채널 수, 비트레이트, 비트당샘플...)을 해주고 음원에 알맞게 SCLK, WS를 MCU에서 맞춘 후 SD에 Sound Data를 싣는다. 이 후 MCU에서 Digital Data가 Audio 칩으로 전달이 되며, PCM Data가 DAC를 거쳐 Analog로 바뀌며 이어폰에 소리가 나오게 된다.
 
시러스라직사의 Audio DAC칩인 CS43L22

 

이미지에서 보는 것과 같이 I2C가 보이며 Serial Audio Input으로 SCLK, WS, SD, MCLK 등이 연결된다.

 

반응형

'Software > MICOM' 카테고리의 다른 글

Hi-Impedance(하이 임피던스)  (0) 2019.05.29
레지스터란?  (0) 2017.08.18
Renesas 개발일지(2)  (0) 2017.01.09
Renesas 개발일지(1)  (0) 2017.01.04
GPIO(General Purpose Input Output) 란?  (0) 2016.12.26