튜너 3703 포팅하기

ATSC, OOB 가 지원되는 LG 튜너 3703 에 대한 포팅하는 방법을 설명하고 있다. 기존의 HDT 보드에서 사용한 튜너는 OOB 가 지원되지 않는 튜너 였다.
테스트는 LG 에서 받은 테스트 보드를 기반으로 HDT HD 보드에 점프선을 날려서 했다.

포팅한 순서를 나열하자면 다음과 같다.

  1. 먼저 테스트 보드를 PC 기반의 프로그램을 이용해서 튜닝이 되는 지 확인
  2. HDT HD 보드 작업 및 테스트 보드 연결
  3. 프로그램 수정

PC 기반에서의 튜닝 테스트

일반적으로 튜너의 경우 샘플 요청을 하게 되면, 약간의 샘플과 베어보드 형태의 테스트보드, 그리고 데이터 시트와 PC 기반에서 돌아가는 테스트 프로그램을 준다.
튜너를 받으면 가장 먼저 하는 일이 바로 PC 기반에서 테스트 프로그램을 실행해서 튜닝이 되는지 확인하는 일이다.

여기서 PC 기반이라고 한 것은 PC 의 프린터 포트를 테스트 보드에 연결하여 튜닝 테스트를 하기 때문이다. 대부분의 테스트 프로그램은 VC+ 로 만들어져 있다.
테스트 보드에 전원을 연결하고, 안테나 선을 연결한 후에 PC 에서 테스트 프로그램을 실행하면 된다.

여기서 간단히 튜닝 테스트를 하는 방법을 설명하겠다. (유선 : VSB8 , 채널 : 82)
아래의 표와 같이 설정 후에 'FAT Run' 버튼을 누른다.

방식 US Cable
Channel Number 82
Modulation 8 VSB

제대로 튜닝이 된다면, 'Signal status' 항목에 에러 메세지가 뜨지 않을 것이다. 또한 테스트 보드의 LED 에 불이 켜질 것이다.
튜닝이 되었다면, 튜너는 검증이 된 셈이다.

HDT HD 보드 작업 및 테스트 보드 연결

PC 기반에서 테스트가 성공 했기 때문에, 이제는 HDT HD 보드 기반에서 테스트 할 차례다. 먼저 하드웨어 부터 살펴보면, 튜너에서는 I2C(SDA, SCL), RESET, TSOUT(0~7), P_CLK, B_VALID, B_CLK 핀을 HDT HD 보드에 연결해야 한다. 이때 테스트보드에서 케패시터 2 개를 오픈시켜야 한다. 그렇지 않으면 SDA, SCL 신호가 제대로 전달되지 않는다.
I2C 와 RESET 의 경우는 각각 5V, 3.3V 풀업이 걸려야 하기 때문에 하나의 베어보드가 더 필요했다.

나머지 핀들은 5517 입력단에 바로 점프선를 날렸다.
이번에는 소프트웨어 차례다. 소프트웨어는 앞에서 PC 기반의 테스트 프로그램을 보면 어렵지 않게 이해할 수 있다.
VC+ 에서 디버깅 모드를 이용해서 어떤 루틴을 차례대로 수행하는지 아는 것이 중요하다.

프로그램 수정

3703 튜너는 기존의 3303 튜너와 달리 레지스터 주소가 3 자리이다.(ex : 0x304) 그래서 I2C 의 R/W 시에 나가는 신호가 달랐다. 이는 곧 예전의 프로그램의 I2C R/W 함수를 그대로 쓸 수 없다는 뜻이기도 하다.
또한 3703 의 경우 레지스터 세팅을 하고 가장 마지막에 'MPEG_OUT0' 세팅을 해야만 올바른 TS 데이터가 나간다.
내가 가장 고생을 했던 것이 바로 저것인데, 레지스터 0x50E 를 어떻게 세팅하느냐에 따라서 화면이 나오고 안나오고를 결정했다.

데이터 시트를 보면, 0x50E 는 총 8 개의 bit 로 구성되어 있다.

BIT 7 6 5 4 3 2 1 0
X TPCLKMOD TPSERIAL TPMSB1ST TPCLKEDG TPCLKSUP TPERRINS TPVALPOL

각 핀들이 의미를 알아보도록 하겠다.

데이터 시트에는 'X' 로 표기되어 있었고, 이에 대한 설명이 없어서 상관없는 핀으로 알았다. 하지만, 반드시 '1' 로 세팅해 주어야 한다. 0 으로 세팅하면, 화면이 끊긴다.

Gated Clock 또는 Fixed Clock 를 선택한다. 데이터 시트에 보면 나와있지만, Gated Clock 의 경우 B_VALID 신호가 나오지 않는다. 하지만 Fixed Clock 에서는 B_VALID 신호가 나왔다. 두 경우 모두 1 또는 0 으로 세팅했을 때, 눈에 보일 만큼의 차이는 보이지 않았다. 하지만, B_VALID 가 5517 입력단에 연결되어 있기 때문에 '1' 로 세팅했다.

OUTPUT 의 타입을 결정한다. 여기서는 반드시 Parallel OUTPUT 을 선택한다. 그래서 '0' 으로 세팅했다.

Serial 모드에서의 MSB 또는 LSB 를 선택한다. 하지만, 앞에서 나는 Parallel OUTPUT 을 선택했기 때문에 어떤 것으로 하든 영향을 미치지 않는다.

TPCLK 가 rising edge 또는 falling edge 일 때 내보낼 것인지 선택한다. 여기서는 반드시 '0' 으로 선택한다. 1 로 선택하면 화면이 안 나온다.

suppression 을 사용할 것인지 여부를 선택한다. 1 로 세팅하면, 화면이 약간 깨지는 현상을 보였다. 그래서 반드시 '0' 으로 선택한다.

error 신호를 사용할 것인지 선택한다. 현재 TS_ERROR 핀은 5517 에 연결하지 않은 상태이므로 1 또는 0 은 별 상관이 없다.

valid 신호를 high 또는 low 로 할 것인지 선택한다. BIT 1 과는 달리 TS_VALID 는 5517 에 연결되어 있기 때문에, 반드시 여기서는 '1' 로 세팅한다.

그래서 결국 '0x50E' 레지스터에는 '0xC3' 을 WRITE 한다.



  • computer/job/digitalarena/tunner.txt
  • Last modified: 6 months ago
  • by 127.0.0.1