2019년 3월 2일 토요일

[칩공부] (VLSI Solution) VS1063a

MP3 / OGG VORBIS 엔코더 & 오디오 코덱 회로

주요 특징

  • 엔코더들
    • MP3
    • Ogg Vorbis
    • PCM
    • IMA ADPCM
    • G.711 (u-law, A-law)
    • G.722 ADPCM
  • 디코더들
    • MP3 (MPEG 1 & 2 audio layer III (CBR + VBR + ABR))
      • CBR - 고정 비트레이트
      • VBR - 가변 비트레이트
      • ABR - 평균 비트레이트
    • MP2 (layer II) (옵션)
    • MPEG4 / 2 AAC-LC(+PNS)
    • HE-AAC v2 (Level 3) (SBR + PS)
    • Ogg Vorbis
    • FLAC
    • WMA 4.0/4.1/7/8/9 all profiles (5~384 kbps)
    • WAV (PCM, IMA ADPCM, G.711 u-law/A-law, G.722 ADPCM)
  • 추가적인 AEC(PCM, G.711 (u-law, A-law), G.722 ADPCM, IMA ADPCM)를 포함한 전이중 코덱
  • 스트리밍 지원
  • 사용자 코드와 데이터 용 최대 96 KiB RAM
  • 사용자 코드 보호용 유일 ID
  • 단조로운 Power-On 과 Power-Off
  • 외부 DAC 용 I2S 출력 인터페이스
  • 직렬 제어 및 데이터 인터페이스
  • 단일 처리기나 동시 처리기의 slave로 사용될 수 있음
  • 디버깅 지원용 UART
  • 소프트웨어와 최대 12개의 GPIO 핀으로 새로운 기능이 추가될 수 있음

설명
VS1063a는 사용하기 쉽고, 다목적의 엔코더와 디코더 그리고 다수의 오디오 포맷을 지원하는 코덱이다.
VS1063a는 다음을 포함한다.
  • 고성능
  • 저전력 DSP 코어 VS_DSP
  • 롬 메모리들
  • 내장된 디코더와 동시에 실행되는 사용자 응용프로그램을 위한 16KiB 명령램과 최대 80 KiB의 데이터 램
  • 직렬 제어와 입력 데이터 인터페이스
  • 최대 12개의 다목적 I/O 핀들
  • 하나의 UART
  • 고 퀄리티 스테레오 ADC
  • 가변 샘플레이트 스테레오 DAC
  • 이어폰 증폭기와 공통 전압 버퍼

응용프로그램들
  • MP3-녹음 오디오 재생기
  • 스트리밍 서버와 클라이언트
  • 무선 오디오 전송기
  • 단일 재생기와 녹음기
  • 인터넷 전화기

추가적 특징
  • 이어스피커 특별 처리
  • Bass와 Treble 제어
  • 대안적인 하나의 5-채널 이퀄라이저
  • 스트림을 듣는 동안 A/D 변환기 입력 모니터링이 허용된 AD 믹서
  • 주 스트림을 듣는동안 사이드-스트림 입력이 허용된 PCM 믹서
  • 조정 가능한 속도 쉬프터
  • 단일 12....13MHz 또는 24...26MHz 클럭으로 동작
  • 내부 PLL 클럭 멀리플라이어
  • 저전력 동작
  • 채널간 단계 에러가 없는 고퀄리티 내장된 스테레오 DAC
  • 부드러운 음량 조절을 위한 제로-크로스 검출
  • 30옴 로드 운영의 유능한 스테레오 이어폰 드라이버
  • 아날로그, 디지털, I/O 전원 분리
  • Lead-free RoHS-준수하는 패키지

운영 모드
VS1063a는 동시처리기의 slave나 단일처리기, 두 host 모드 중 하나로 운영한다.
동시처리기의 slave로 사용될 때, VS1063a는 디코더, 엔코더, 코덱 모드의 세가지 다른 운영 모드로 운영할 수 있다.
디코더 모드일 때, VS1063a는 직렬 입력 버스를 통해 입력 비트스트림을 받는다. 입력 스트림은 18비트 디지털 볼륨 제어를 통해 오버샘플링 시그마-델타 DAC로 디코딩되고 전송된다. 디코딩은 직렬 제어 버스를 통해 제어된다. 기본 디코딩에 추가적으로, DSP 효과 같은 특별한 특징 응용프로그램을 사용자 램 메모리에 추가하거나 사용자 응용프로그램을 로드할는 특징을 추가할 수 있다.
인코더 모드에서 VS1063a는 아날로그 입력에서 오디오를 읽습니다. 선택적으로 데이터를 압축하여 호스트 프로세서에서 읽을 수 있다.
코덱 모드에서 VS1063a는 전이중 오디오 인터페이스를 제공합니다.
독립형 프로세서로 사용할 경우 VS1063a는 SPI EEPROM 또는 플래시 메모리에서 부팅 할 수 있다. 대안 적으로, 코드 및 데이터는 호스트 제어기에 의해 제공 될 수있다.


정의
  • ABR - Average BitRate.
    • 스트림의 비트 전송률은 국부적으로 다를 수 있지만, 더 긴 시간 동안 평균을 내면 주어진 숫자에 가깝게 유지된다.
  • B - Byte, 8 bits
  • b - Bit
  • CBR - Constant BitRate.
    • 스트림의 비트 전송률은 각 압축 블록에 대해 동일하다.
  • Ki - Kibi = 2^10 = 1024 (IEC 60027-2)
  • Mi - Mebi = 2^20 = 1048576 (IEC 60027-2)
  • SCI - Serial Control Interface
    • VS1063a 제어를 위한 SPI 버스
  • SDI - Serial Data Interface
    • VS1063a 비트스트림 데이터를 위한 SPI 버스
  • VBR - Variable BitRate.
    • 전송률은 소스 자료의 복잡성에 따라 달라진다.
  • VS_DSP - VLSI Solution의 DSP 코어
  • VSIDE - VLSI 솔루션의 통합된 개발 환경
  • W - Word.
    • VS_DSP에서 명령 워드는 32비트이고 데이터 워드는 16비트 이다.



SPI 버스들
SPI 버스는 VS1063a의 직렬 데이터 인터페이스 SDI와 직렬 제어 인터페이스 SCI 둘 다를 위해 사용된다.

SPI 버스 핀 설명
  • VS10xx Native 모드 (새로운 모드, 추천함)
    • 이 모드는 VS1063a의 SM_SDINEW가 1로 (시작할 때 기본임) 설정되었을 때 동작한다.
    • DCLK와 SDATA는 데이터 전송에 사용되지 않고 GPIO 핀 (GPIO2, GPIO3)으로 사용될 수 있다.
    • BSYNC 기능은 데이터 인터페이스 칩 선택(XDCS)으로 변경
SDI핀 SCI핀 설명
XDCS XCS low일 때 칩 선택 입력으로 동작.
high 레벨은 직렬 인터페이스를 스탠바이 모드로 들어가게 하여, 현재 운영을 종료함.
high 레벨은 직렬 출력(SO)를 하이 임피던스 상태로 만듦
만약 SM_SDISHARE가 1이면 XDCS 핀은 사용하지 않음, 그러나 신호는 XCS 반전에 의해 내부적으로 생성됨.
SCK 직렬 클럭 입력 (Serial Clock Input).
직렬 클럭은 내부적으로 레지스터 인터페이스를 위한 마스터 클럭으로 사용되기도 한다.
SCK는 게이트 되거나 연속적일 수 있다. 두 경우 모두 XCS가 low가 된 후 첫 번째 클럭 에지가 첫 번째 비트를 기록합니다.
SI 직렬 입력 (Serial Input).
칩 선택이 동작하면 SI는 상승 CLK 에지에 샘플된다.
- SO 직렬 출력 (Serial Output).
읽기에서는 데이터가 하강 SCK 에지에서 시프트 아웃된다.
쓰기에서 SO는 하이 임피던스 상태에 있다.
  • VS1001 호환 모드 (새로운 디자인에서는 사용되지 않음) - 설명 생략

데이터 요청 핀 DREQ

  • DREQ 핀 / 신호는 VS1063a의 2048 바이트 FIFO가 데이터를 수신 할 수 있는지 여부를 나타내는 데 사용된다.
  • DREQ가 하이 인 경우 VS1063a는 최소 32 바이트의 SDI 데이터 또는 하나의 SCI 명령을 취할 수 있다.
  • DREQ는 스트림 버퍼가 너무 꽉 차거나 SCI 명령의 지속기간 동안 low로 바뀐다

  • 32 바이트 안전 영역으로 인해 송신기는 DREQ의 상태를 확인하지 않고 한 번에 최대 32 바이트의 SDI 데이터를 전송할 수 있으므로 저속 마이크로 컨트롤러에서 VS1063a를 쉽게 제어 할 수 있다.

  • 참고 : DREQ는 바이트 전송 중에도 언제든지 로우 또는 하이로 바뀔 수 있습니다. 따라서 DREQ는 더 많은 바이트를 보낼 것인지 결정하는 데에만 사용해야합니다. 이미 시작된 전송은 중단 할 필요가 없습니다.
  • 참고 : VS1063a에서는 SCI 작동이 진행되는 동안 DREQ도 저하됩니다.


DREQ가 low일 때 SCI 명령을 보내려는 경우가 있다.
DREQ는 SDI와 SCI간에 공유되므로 SDI가 데이터를 수신 할 준비가되지 않은 경우 SCI 명령이 실행되었는지 확인할 수 없습니다.
이 경우 모든 SCI 명령을 놓친 후에도 지연되지 않도록 확실히 기다려야합니다.
제 10.8 절의 SCI 레지스터 표는 각 SCI 레지스터 쓰기에 대한 최악의 처리 시간을 보여준다.