디지털 TV 시스템의 구성 및 구현(마지막 회)

서 론지난 회에서는 디지털TV 시스템의 소프트웨어를 중심으로 그 구조를 분석해보고 시스템과 드라이버 소프트웨어의 구현에 대해서도 설명해보았다. 이번 회에서는 지난 회에 이어서 나머지 드라이버들과 애플리케이션 층의 소프트웨어에 대해 다루어 보기로 한다.관심 있는 독자들은 이미 대중매체를 통해 알고 있겠지만 마침내 미국에서도 아날로그 TV 방송을 2009년 2월부터 중단하기로 결정했다. 이 결정은 그 동안 이해당사자들 간의 많은 회의와 토론을 통해 수렴된 것으로서 번복되기 힘들 것으로 보인다. 현재 미국에서는 판매중인 모든 TV에 디지털TV 수신 블록을 내장하도록 해 새로 구입하는 TV는 최소한 디지털 방송을 시청하는 데 문제가 없을 것이다. 하지만 기존의 TV는 셋톱박스를 따로 사야 하는 경우가 생긴다.지난 2회와 마찬가지로 첫 회에서 다루어 본 하드웨어 구조를 바탕으로 그 구조 위에 소프트웨어가 구현된 것을 기준으로 하여 내용을 다루어 보기로 하자. 특히 지난번에 다루지 못한 I2C 드라이버와 이를 이용해 통신하는 다른 드라이버들을 살펴보고자 한다.이미 언급했듯이 I2C 통신 위에서 동작하는 소프트웨어들은 애플리케이션으로 분류할 수도 있지만 하드웨어 블록과 연관되어 있는 소프트웨어들을 디바이스 드라이버로 보기로 한다. 그리고 지난회의 소프트웨어의 구조에서 본 대로 애플리케이션 부분에 대해서도 개략적으로 다루어 볼 것이다. 우리가 예상할 수 있듯이 애플리케이션 부분은 지금도 계속 발전하고 새로 추가될 것이며 앞으로는 현재 상상하지 못하는 많은 부분이 더해 질 것으로 생각된다. 그러나 본 글에서는 현재 사용되고 있는 기본적인 부분에 대해서만 살펴보기로 한다.아마도 이 글의 독자들은 디지털TV의 기본에 대해서 많은 부분을 점검했으리라 예측해보지만, 좀 더 자세한 부분이나 각계의 다른 각도를 통해 보는 디지털TV가 궁금한 독자들은 ‘proceedings of the IEEE’ 2006년도 1월 판을 참조하길 바란다. 다양한 시각을 통해 디지털TV를 다루고 있는 글들을 발견할 수 있을 것이다[1].드라이버 계층비디오, 오디오, 트랜스포트 역 다중화기 등의 디지털TV 프로세서 내부에 존재하는 주요 블록들을 제어하는 드라이버들은 이미 설명했고, 이번 회는 그 외의 드라이버들을 살펴보기로 한다. 우선 I2C 드라이버를 포함하는 통신 블록용 드라이버를 시작으로 디지털 TV 프로세서의 내부 블록 드라이버와 이들을 이용하여 통신하는 외부 드라이버들을 살펴보기로 하자.통신 블록용 드라이버들통신 블록으로 사용되는 코프로세서들은 UART(Universal Asynchronous Receiver Transmitter), IR(Infra Red) 입/출력 포트, I2C 인터페이스, 스마트 카드 인터페이스 등이 있다. 많은 운영체제들은 UART 드라이버를 같이 제공하고 있으므로 필요할 때 수정해 사용하면 되므로 구현에 큰 어려움은 없을 것이다. 대부분이 제품의 업데이트나 부트 정보를 보는 등의 용도로써 직렬연결을 사용하므로, 아마도 가장 먼저 다루게 되는 블록이 이 통신용 블록이 되지 않을까 싶다. 따라서 각 운영체제의 드라이버 모델들도 대부분 이 부분을 구현하면서 익히게 될 것으로 생각된다.I2C를 통한 인터페이스 방법이 나온 이후 TV의 간단한 주변기기들이 대부분 I2C 인터페이스로 통신하도록 제작되므로 가장 많이 사용할 드라이버 중 하나가 I2C 드라이버일 것이다. 상당수가 동작 주파수를 정의하게 되어 있으며 100Khz나 400Khz 상에서 동작 가능하게 제작된다. 또한 자신의 디지털 TV가 어떻게 구현돼야 하는지에 따라 마스터와 슬레이브 중 어느 것이 필요할지를 알아야 한다. 물론 하드웨어로부터 이러한 기능의 제한이 올 것이므로 드라이버를 만들기 이전에 조사해야 할 것이다. 아마도 이러한 기능은 아날로그 TV에서부터 사용됐으므로 꽤 오래돼서 이젠 안정화된 개념이라고 할 수 있다.대부분의 디지털TV 플랫폼들이 IR을 이용한 데이터의 직렬 통신을 구현할 수 있도록 통신 블록을 대부분 제공하고 있으며 이 블록을 통해 리모콘과의 통신도 구현된다. 스마트 카드의 인터페이스도 대부분의 디지털TV 플랫폼들이 제공하는 통신 기능 중에 하나이다. 한편 솔루션에 따라서는 SPI나 다른 블록이 들어 있기도 하다. 이 외에도 PCI나 외부 버스 인터페이스를 제공하고 있으므로 외부 기기와의 통신은 이러한 통신 블록의 드라이버를 구현함으로 얻을 수 있다.이러한 통신용 기능 이외에 기본이 되는 GPIO 드라이버도 다루기로 한다. 이 드라이버는 스위칭을 비롯해 여러 기능에 유용하게 사용되는 각 핀을 제어한다. 다른 함수와 공용으로 사용될 경우가 많으므로 보드의 설계시, 사용할 기능의 핀과 겹치지 않은 일반 목적의 입출력 핀들을 사용할 수 있도록 디자인해야 할 것이다.튜너 드라이버튜너를 포함하는 디지털TV의 전반부 블록을 제어하는 드라이버를 튜너 드라이버라 부르기로 하자. 그림 1은 디지털TV의 전반부를 보여주는 블록도로서, 튜너 드라이버는 이러한 블록들의 제어에 필요한 기능을 가지고 있어야 한다. 물론 기본 동작인 주파수의 동조를 통한 신호의 검출도 포함하고 있으며 그 이후에 중간 주파수 처리, 아날로그 디지털 변환 및 중간주파수 역 변조 및 등화기 처리, 전방향 에러 정정 등의 처리를 하는 블록들을 제어해주게 된다.실제로는 이러한 블록들이 하드웨어에서 제어되지만 입력에 따라 튜너가 동조해야 하는 주파수와 방법이 달라진다. 튜너 드라이버는 동조 방법을 제어하는 입력 신호 포맷 제어와 동조 주파수를 위한 PLL 등을 제어하는 전반부 및 대부분 연결(Link) 블록이라고 부르는 부분을 위한 후반부의 제어를 하게 된다.디지털TV 시스템이 점차로 성숙됨에 따라 점점 입력되는 신호들이 추가 되고 그에 따른 입력 포맷들도 VSB(vestigial sideband), QAM(Quadrature amplitude modulation), PSK(phase-shift keying) 등으로 다양하게 변화해서 이에 따른 입력의 선택과 각 입력에 따른 튜너의 동작 범위도 차츰 넓어지고 복잡해지는 추세이다. 또한 디지털TV로 넘어오면서 복잡한 시스템 때문에 길어진 채널 전환시간을 단축시키기 위해 빠른 튜닝 시간이 필요해짐에 따라 시스템 레벨에서 최적의 동작을 얻기 위한 노력이 요구될 전망이다.아날로그 신호의 경우는 이 튜너 블록에서 출력되는 중간주파수의 신호가 복조과정을 거친 후 디지털TV의 프로세서 내부나 외부에 존재하는 비디오 디코더 또는 오디오 디코더로 입력된다.입력 선택 스위치 및 아날로그 입력입력 선택 스위치 및 아날로그 입력부는 대개 아날로그 기저대역 신호로 입력되는 신호의 스위칭 및 아날로그 디지털 변환하는 블록을 관리하는 드라이버를 나타낸다. 이 드라이버는 대부분 입력 신호의 포맷 및 화면비 등을 입력신호 또는 부가 정보로부터 찾아내어, 비디오 드라이버가 처리해서 화면에 보여 줄 때 조정이 가능도록 필요한 정보를 찾아 전달해 준다.또한 외부의 DVD 플레이어나 셋톱박스 등에 연결할 때 사용하는 콤포넌트 입력이나 콤포지트 입력들을 구별한다. 콤포지트의 경우 유럽식에 많이 사용되는 레터박스 포맷들을 VBI 정보에서 찾아내고, 콤포넌트의 경우는 출력 모드를 찾아서 비디오 드라이버가 적절한 처리를 하도록 한다. 그리고 NTSC나 또는 HD 콤포넌트는 ADC(Analog-Digital-Converter)를 거쳐서 디지털로 변환된 후 비디오 처리를 하게 되므로, ADC가 외부에 있다면 I2C 드라이버로 이 외부에 있는 IC를 동작시켜야 한다.이 ADC 블록이 내부에 존재하는 디지털TV 프로세서의 경우는 내부의 레지스터 등을 이용하여 적절히 설정해줘야 할 것이다. 아날로그 신호의 경우는 대부분 소프트웨어의 부담을 덜기 위해서 ADC 또는 비디오 디코더 IC가 자막신호를 추출해서 버퍼에 넣어 주거나 BT656 신호의 일부로 전달해 줌으로써 데이터 슬라이스 및 디코드 없이 비디오 드라이버에서 간단히 자막방송 신호를 검출해 낼 수 있다[2].최근에는 이미 디지털 처리된 신호의 입력을 위해서 DVI (Digital Visual Interface)나 HDMI(High Definition Multimedia Interface)를 사용하고 있으며 HDMI 입력은 가전업체의 표준으로 자리를 잡아가는 중이다. 또한 HDMI는 이름처럼 아날로그/디지털 비디오 신호뿐만 아니라 음성 신호와 HDCP(High bandwidth Digital Contents Protection) 신호까지 포함하고 있으며, 이 또한 이 블록에서 처리하여 비디오 드라이버로 보내진다.케이블 카드우리나라에서도 케이블 TV 서비스가 일반화되고 있지만 미국에서는 특히 많은 가정이 케이블 TV 서비스 회사를 통해 TV를 시청하고 있다. 물론 지상파가 잘 나오는 곳도 있지만 많은 채널과 입력신호 품질의 보장 때문에 대부분의 시청자는 케이블 TV 서비스를 이용하고 있다. 한편 케이블 TV 서비스도 이제는 디지털로의 이동을 시작하고 있는데 이에 따른 디지털TV의 표준이 DCR(Digital Cable Ready)이다. 물론 이 보다 상위의 개념으로 OpenCable도 있다. 그림 3에서는 케이블 카드의 동작과 인터페이스를 위한 소프트웨어의 구조와 케이블 카드의 소프트웨어의 동작을 보여준다.케이블 카드 드라이버는 POD와 호스트의 인터페이스를 담당해야 하며 DFAST를 이용한 케이블 카드와 호스트 사이의 암호화 동작도 다뤄줘야 한다. 특히 대부분의 복호화 처리는 지난 회에서 설명한 트랜스포트 역 다중화 드라이버에 포함된 복호화 블록을 이용해 사용가능한 비디오나 오디오 자료로 복원한다. 또한 IEEE1394 같이 입출력 가능한 장치 인터페이스를 가질 경우는 입력 후 케이블 카드로부터 복사방지 정보를 얻어서 허용된 경우만 출력되도록 해야 문제없는 제품을 만들 수 있다.IEEE1394또는 USB고속으로 비디오나 오디오 신호를 전송하거나 양방향으로 통신할 필요가 있을 경우는 IEEE1394를 주로 사용한다. 디지털 비디오의 과도한 정보량을 소화하기에는 기존의 통신 방법의 대역폭이 좁아서 디지털TV의 MPEG2 비디오를 전달할 수 없기 때문이다.하지만 IEEE1394를 이용할 경우 외부의 비디오 디바이스와 고속으로 통신할 수 있어 대부분 MPEG2 트랜스포트 스트림을 IEEE1394로 전달하게 된다. 이러한 방법으로 외부의 디지털 VCR이나 DVR 같은 장비와 통신할 수 있고 또한 표준화된 방법으로 제어까지 가능하다. 따라서 이러한 기능을 제공할 디바이스 드라이버가 필요하게 된다.그림 4는 IEEE1394 디바이스의 블록도를 보여준다. 양방향으로 동시에 전송과 수신을 위해 전송 FIFO와 수신 FIFO가 존재한다. 최근에는 USB가 비교적 저렴한 가격으로 상당히 높은 대역폭의 자료 전송이 가능해 USB를 이용한 디지털 이미지의 전송 등을 지원하려 하고 있으며, 아마도 표준화된 비디오의 전송까지도 지원되는 날이 올 듯하다.이상과 같이 디지털TV의 구현에 필요한 디바이스 드라이버들을 살펴보았다. 물론 시스템 또는 디지털TV의 외부 구현에 따라서 더 많은 드라이버가 필요하겠지만 일반적으로 공용으로 사용되는 중요 드라이버에 대해서 다루어 보았다. 이 외에 파워 제어를 위한 파워 드라이버나 디스플레이 장치에 따른 화상 증진 블록용 드라이버 등도 드라이버 계층에 아마 포함될 것이다.애플리케이션 계층애플리케이션 계층은 지난 회에서 설명했듯이 드라이버와 운영체제 시스템 위에 동작하는 소프트웨어로서 확장성은 거의 무한대라고 할 수 있을 것이다. 여기서는 디지털TV의 기능을 사용하기에 꼭 필요한 애플리케이션 소프트웨어들을 기준으로 디지털TV 애플리케이션 소프트웨어 대해서 살펴보자.사용자 인터페이스디지털TV의 사용자가 소프트웨어로서 직관적으로 접하게 되는 것은 아무래도 사용자 인터페이스일 것이다. 점점 하드웨어가 복잡해지고 기능이 강화됨에 따라 사용자 인터페이스 이론이 발전하고 있고 이를 바탕으로 사용자 인터페이스는 유려한 모습과 잘 정리된 메뉴들을 갖추게 됐다. 그러나 이러한 발전을 능가하는 새로운 기능 및 복잡한 기능이 앞으로도 계속적으로 추가될 것이므로 사용자는 점점 더 복잡함을 느낄 것이다. 따라서 사용자가 기능들을 쉽게 파악하고 사용하기 위한 노력과 함께, 복잡한 기능을 간단히 사용자 인터페이스에 포함시키기 위한 툴들이 개발되고 있다.사용자 인터페이스를 화면에 그리는 방법들은 대개 운영체제에 따라 달라지는데, Windows CE를 사용시는 Windows 프로그램에 사용 가능한 GDI 인터페이스나 또는 직접 드라이버에 인터페이스 하는 DirectX 기능들을 사용할 수 있다. 물론 Linux의 경우도 DirectFB 같은 드라이버와 그 위에 Xwindow의 기본적인 것을 제공하는 소프트웨어를 사용하여 간단히 Windows 프로그램을 할 수 있는 툴들이 존재한다. 또한 Java 소프트웨어의 경우 포함된 사용자 인터페이스용 패키지 중에서 자신의 툴에 적합한 패키지를 찾아본다면 어렵지 않게 많은 기능을 사용할 수 있을 것이다.자막방송디지털TV는 비디오 드라이버에서 처리된 자막 데이터를 받아서 화면에 그리는 역할을 할 애플리케이션이 필요하다. 또한 자막방송 데이터를 분석하여 제어코드와 자막글자 부분으로 나누는 소프트웨어도 필요하다. 아날로그 자막의 경우는 XDS 데이터에서 프로그램의 이름이나 등급 등을 찾아서 이러한 정보를 사용하는 다른 소프트웨어로 전달도 한다.대부분의 디지털TV는 적어도 EIA608, EIA708의 정보를 다룰 수 있어야 한다. 사용자 인터페이스와 마찬가지로 하드웨어나 드라이버의 구성에 따라서 화면에 글자를 인쇄하는 방법에 차이가 있을 수 있을 것이다. 그에 따라 글자의 스크롤이나 깜빡임을 구현하는 방안에도 차이가 날 것이다. 이외에도 디지털 케이블의 SCTE20 표준을 구현시 만약 드라이버 코드가 각 글자 비트 순서를 재설정해주지 않을 경우에는 상위의 애플리케이션에서 비트 순서에 따라 다시 설정해줘야 한다.전자 방송 가이드(EPG)프로그램 가이드는 트랜스포트 역 다중화 드라이버에서 받은 데이터를 PSIP(Program and System Information Protocol), DVB-SI(Service Information) 또는 PSI (Program Specific Information) 스택으로 보내서 처리한 후 이 데이터를 바탕으로 사용 가능한 프로그램에 대한 시간과 정보를 보여주는 역할을 한다. 물론 채널검색 등을 통해서 각 채널과 거기에 속한 프로그램, 그리고 가상의 채널 번호 이용 등을 위한 데이터베이스의 구축도 이 부분이 담당한다고 생각하고 살펴보자.데이터베이스에 어떤 정보를 저장하고 사용해서 채널 전환시간을 단축하거나 사용자에게 무슨 기능을 제공할 지는 다분히 디지털TV의 구현 소프트웨어의 역할이며, 디지털TV를 만드는 회사에 따라 다양한 선택과 성능이 나오게 되는 것이다. 가령 필자가 속한 회사의 경우는 오랜 시간동안 Gemstar사의 가이드를 이용하여 사용자에게 프로그램 가이드를 제공해 왔다. 이 경우는 며칠간의 프로그램 및 프로그램에 대한 정보를 제공해주므로 현재 이용가능 한 채널 정보만을 보여주는 단순한 가이드를 보면 답답한 느낌이 나는 것은 사실이다. 그러나 가이드용 데이터베이스는 특정 채널로부터 들어오는 정보를 받아서 만들어지므로 처음 사용시는 일정시간 동안 데이터베이스의 구축에 필요한 정보를 받기 위해 대기 시간이 필요하다. 최근에는 유럽을 중심으로 인터넷에 있는 방송 프로그램 정보를 이용하여 이러한 데이터베이스를 구축하는 서비스도 활발히 연구되고 있는 것을 볼 수 있다.그림 5에서는 DASE(Digital TV Applications Software Environment) 초벌 구현에 사용된 PSIP 클래스 정보를 보여준다[4]. 그림과 같이 UML(Unified Modeling Language)을 통해 사용하는 클래스들을 정의해 봄으로써 좀 더 정리된 소프트웨어의 구현이 가능할 것으로 생각한다.수신제한(Conditional Access)초창기의 프로그램 등급에 따른 간단한 수신제한 시스템이 점점 복잡해짐에 따라 스마트 카드나 케이블 카드 인터페이스를 이용한 수신제한 시스템이 최근 폭넓게 사용되고 있다. 특히 암호화 키 등을 교환하여 키가 올바른지를 확인하고 처리하는 부분은 좀 더 신경 써서 다뤄야 나중에 문제가 되는 부분을 막을 수 있을 것이다.지금까지 애플리케이션 부분의 소프트웨어에 대해서 짚어봤다. 물론 필자의 회사제품처럼 웹 브라우저를 포함하거나, 자바 TV 등의 새로운 공통 애플리케이션을 이 영역에 포함할 수도 있다. 그러나 아직은 시장에 나와 있는 제품이 별로 없거나 주요 기능이 되기엔 때가 이르므로 언젠가 기회가 되면 그때 좀 더 자세히 다뤄보기로 하겠다.개발 툴 및 다른 유의사항디지털TV의 프로세서 및 솔루션의 개발 플랫폼에 따라서 사용 가능한 개발 툴도 제한되겠지만 솔루션 제공업체가 제공하는 개발 플랫폼의 사용을 원치 않을 수도 있으므로 이 경우엔 개발자들이 알아서 개발 툴을 선정해야 할 것이다. 여기서는 간단하게 몇 가지 개발 툴에 대해서만 살펴보기로 하자.그림 6에서는 Windows CE의 개발 프로세스를 보여준다. 플랫폼 빌더를 사용하여 대부분의 과정을 수행할 수 있으며 애플리케이션의 개발에는 빌더가 없어도 빌더에서 만든 플랫폼을 이용해 임베디드 V/C++ 등으로 개발할 수 있다.Linux를 사용할 경우에는 이보다는 좀 더 많은 노력이 필요하겠지만 한번 설정되면 나머지 개발자들은 그 툴을 사용하면 되므로 큰 문제는 없을 것이다. Linux의 경우는 드라이버를 커널 드라이버를 쓸 것인지 사용자 레벨의 드라이버를 쓸 것인지를 먼저 고려해야 할 것이고 그에 따라서 사용할 툴이 달라질 것이다. 사용자 레벨에서만 디버깅을 한다면 GDBServer와 GDB만 사용해도 문제없이 디버깅을 할 수 있을 것이다.최근에는 eclipse같은 표준화된 툴에서 많은 기능을 추가로(Plugin) 제공하므로 이러한 툴을 필요에 따라 자신의 환경에 맞게 변경한 후 사용하는 것도 한 가지 방안이 될 수 있을 것이다.그 이외에 실시간운영체제(RTOS)를 사용하는 경우에는 그 운영체제 개발에 용이한 전용 툴들을 사용하는 경우가 대부분이므로 Windows CE 사용시처럼 그 툴들에 익숙해져서 사용하는 것이 최선이 될 것이다.결 론지금까지 디지털TV의 구성 및 구현의 마지막 회로써 1회와 2회를 통해 살펴본 하드웨어, 소프트웨어 구성을 바탕으로 남은 드라이버 및 애플리케이션 소프트웨어를 살펴봤다. 처음 기획 의도와 달리 부족한 지면과 여러 가지 제약 때문에 미처 자세히 다루지 못한 부분에 대해서 아쉬움이 남는다. 기회가 되면 다음에는 한 가지 주제를 가지고 좀 더 심도 있게 자세히 다뤄보고 실제 코드로도 구현해보고 싶다. 총 3회에 걸쳐 설명한 ‘디지털TV 시스템의 구성 및 구현’이 부족하나마 이 글의 독자들에게 직접·간접으로 많은 도움이 될 수 있기를 바란다.쪹 연재순서디지털 TV 시스템의 구성 및 구현1회 시스템 개요 및 하드웨어 구성2회 드라이버 및 애플리케이션 소프트웨어(1)3회 드라이버 및 애플리케이션 소프트웨어(2)필 / 자 / 소 / 개이장환(iam.ts.roh@gamil.com)RCA Thomson에서 HDTV용 비디오 및 트랜스포트 드라이버를 리눅스나 윈도우즈 CE위에 구현하는 일을 하고 있으며, 이전에는 DSP를 이용한 비디오 폰의 개발 및 프로젝트의 관리를 했었다.비디오 처리 및 TV관련 영역을 중심으로 40편이상의 국내외 특허를 가지고 있다.참고문헌John G. H. Henderson et al, “ATSC DTV Receiver Implementation”, Proceedings of the IEEE, Vol 94, No1. Jan. 2006.“Ultralow Power NTSC/PAL/SECAM Video Decoder With Robust Sync Detector,” http://focus.ti.com/lit/ds/symlink/ tvp5150am1.pdf“Integrated 1394a?2000 OHCI PHY/Link Layer Controller,” http://focus.ti.com/lit/ds/symlink/tsb43ab21a.pdf“NIST DASE Prototype Implementation PAE Implementation Guide,” http://www.itl.nist.gov/div895/cmr/dase/docs/ iguide.pdfJames Y. Wilson and Aspi Havewala, “Building Powerful platforms with Windows CE, Addison?Wesley, 2001.J Corbet, A Rubini, and G Kroah?hartman, “Linux Device Drivers,” 3rd ed. , O’Reilly, 2005 “BCM7038 product brief,” http://www.broadcom.com/ collateral/pb/7038?PB01?R.pdf“Cougar G9 development system,” http://www.zoran. comproducts/literature/dtv/G9DevPlat_PB_031215.pdfITU?T H.222, “Generic coding of moving pictures and associated audio information: systems”, 2nd edition, ITU, 2000ITU?T H.262, “Generic coding of moving pictures and associated audio information: video”, 2nd edition, ITU, 2000
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지