ATSC, OOB 가 지원되는 LG 튜너 3703 에 대한 포팅하는 방법을 설명하고 있다. 기존의 HDT 보드에서 사용한 튜너는 OOB 가 지원되지 않는 튜너 였다.
테스트는 LG 에서 받은 테스트 보드를 기반으로 HDT HD 보드에 점프선을 날려서 했다.
포팅한 순서를 나열하자면 다음과 같다.
- 먼저 테스트 보드를 PC 기반의 프로그램을 이용해서 튜닝이 되는 지 확인
- HDT HD 보드 작업 및 테스트 보드 연결
- 프로그램 수정
PC 기반에서의 튜닝 테스트
일반적으로 튜너의 경우 샘플 요청을 하게 되면, 약간의 샘플과 베어보드 형태의 테스트보드, 그리고 데이터 시트와 PC 기반에서 돌아가는 테스트 프로그램을 준다.
튜너를 받으면 가장 먼저 하는 일이 바로 PC 기반에서 테스트 프로그램을 실행해서 튜닝이 되는지 확인하는 일이다.
여기서 PC 기반이라고 한 것은 PC 의 프린터 포트를 테스트 보드에 연결하여 튜닝 테스트를 하기 때문이다. 대부분의 테스트 프로그램은 VC로 만들어져 있다.
테스트 보드에 전원을 연결하고, 안테나 선을 연결한 후에 PC 에서 테스트 프로그램을 실행하면 된다.
여기서 간단히 튜닝 테스트를 하는 방법을 설명하겠다. (유선 : VSB8 , 채널 : 82)
아래의 표와 같이 설정 후에 'FAT Run' 버튼을 누른다. 에서 디버깅 모드를 이용해서 어떤 루틴을 차례대로 수행하는지 아는 것이 중요하다.
프로그램 수정
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 |
각 핀들이 의미를 알아보도록 하겠다.
BIT 7
데이터 시트에는 'X' 로 표기되어 있었고, 이에 대한 설명이 없어서 상관없는 핀으로 알았다. 하지만, 반드시 '1' 로 세팅해 주어야 한다. 0 으로 세팅하면, 화면이 끊긴다.
BIT 6
Gated Clock 또는 Fixed Clock 를 선택한다. 데이터 시트에 보면 나와있지만, Gated Clock 의 경우 B_VALID 신호가 나오지 않는다. 하지만 Fixed Clock 에서는 B_VALID 신호가 나왔다. 두 경우 모두 1 또는 0 으로 세팅했을 때, 눈에 보일 만큼의 차이는 보이지 않았다. 하지만, B_VALID 가 5517 입력단에 연결되어 있기 때문에 '1' 로 세팅했다.
BIT 5
OUTPUT 의 타입을 결정한다. 여기서는 반드시 Parallel OUTPUT 을 선택한다. 그래서 '0' 으로 세팅했다.
BIT 4
Serial 모드에서의 MSB 또는 LSB 를 선택한다. 하지만, 앞에서 나는 Parallel OUTPUT 을 선택했기 때문에 어떤 것으로 하든 영향을 미치지 않는다.
BIT 3
TPCLK 가 rising edge 또는 falling edge 일 때 내보낼 것인지 선택한다. 여기서는 반드시 '0' 으로 선택한다. 1 로 선택하면 화면이 안 나온다.
BIT 2
suppression 을 사용할 것인지 여부를 선택한다. 1 로 세팅하면, 화면이 약간 깨지는 현상을 보였다. 그래서 반드시 '0' 으로 선택한다.
BIT 1
error 신호를 사용할 것인지 선택한다. 현재 TS_ERROR 핀은 5517 에 연결하지 않은 상태이므로 1 또는 0 은 별 상관이 없다.
BIT 0
valid 신호를 high 또는 low 로 할 것인지 선택한다. BIT 1 과는 달리 TS_VALID 는 5517 에 연결되어 있기 때문에, 반드시 여기서는 '1' 로 세팅한다.
그래서 결국 '0x50E' 레지스터에는 '0xC3' 을 WRITE 한다.