각 제조회사들마다 다른 CA(Conditional Access → 사용허가권한)와 Security function 을 지원하는 PCMCIA 형태의 module. 쉽게 말해서, 사람들이 허용되지 않은 채널을 볼 수 없게 하거나, 불법적인 도청 막고 또는 인터넷을 사용하게끔 해주는 PCMCIA 형태의 모듈 혹은 장치라고 생각하면 된다.
OpenCable STB(또는 Host)가 POD와 결합할 때, POD와 Host 사이에는 3개의 채널이 형성된다. 이는 MPEG transport stream을 전송하는 MPEG Transport Stream Chnnel, 둘 사이에 command를 주고받기위한 Data Chnnel 및 SI(사업자) data 와 같은 OOB(out of chnnel)를 통해 받은 데이터를 Host로 전송하기 위한 Extended Chnnel 이다.
Demodulation(복조) 칩에서 받은 MPEG transport stream 을 POD로 보내고, POD 내에서 CAS(conditional access) 와 CP(Copy protection:불법 복사방지) processing 을 한 MPEG transport stream 을 Host로 다시 보내는 채널을 'MPEG transport stream 채널' 이라고 한다.
MPEG transport stream 채널은 상위 layer 에 대해서는 MPEG 규격(ISO13818)을 사용함으로서 시스템에서는 단지 physical layer 만 구성하면 된다.
POD에서 Host로 stream 데이터를 보내는 bus 중에 clock은 어드레스 bus와 공용으로 사용하기 때문에 mux 또는 tri-state buffer 를 사용하여 설계해야 한다.
다음은 Transport Stream Interface Layer 의 계층구조이다.
Uppper layer |
Transport layer |
PC Card Link layer |
PC Card Physical layer |
POD와 Host간에 규격에서 정의한 layer object를 주고 받기 위한 채널로 6개의 layer로 구성되어 있다. 각각의 layer는 task로 구성되어 있으며, task 간에는 message queue 를 사용하여 통신한다. 다음은 data 채널의 계층구조이다.
Application layer |
Resource layer |
Session layer |
Transport layer |
PC Card Link layer |
PC Card Physical layer |
POD와 Headend는 OOB 라는 채널을 이용하여 통신을 하는데, 이때 POD가 headend에서 받은 데이터중에서 host로 보내야 하는 데이터를 받을 경우 , Extended channel을 통해서 Host로 전달한다. 반면에 host의 데이터가 hedaend로 전송될 필요가 있을 경우에도 이 채널을 사용하여 POD로 데이터를 보낸다.
이와 같이 Extended Channel은 상호 communication 보다는 data 전달을 주목적으로하는 data channel의 보조적인 channel 이다. 또한 Extended channel로 전달되는 data format은 application 마다 다를수 있으며 이는 data channel interface를 통해 미리 상호간에 define 되어야 한다.
Extended channel은 physical 적으로는 data channel 과 동일한 interface를 사용한다. 다만 chip select pin(CE1,CE2)를 사용하여 channel 을 구분한다.
PCMCIA 형태를 가진 모든 card는 card interface를 가지고 있는 긱에 삽입되었을 경우, 기기는 그 card의 종류와는 상관없이 모두 하나의 memory로 생각하고 access 한다. memory에서 읽은 데이터를 기반으로 그 card가 어떤 용도의 card인지를 구별할 수 있는데, 그 때문에 이를 attribute memory 라고 한다. POD도 마찬가지로 Host에 의해 처음에는 memory로 인식되어, card의 identification 및 configuration 을 결정하게 된다. 이러한 과정을 수행하기 위하여 Host는 attribute memory interface 를 제공해야 한다.
Physical layer 는 POD와 STB 사이에 data를 주고받기 위한 인터페이스, 삽입된 POD의 identification, POD power management, personality change, POD initialization, buffer negotiation 등을 수행한다.
Command 채널을 위한 POD와 STB사이의 interface 는 PC Card Standard Volume 2 를 따르며, OpenCable STB에서 사용하고 있는 CXD1959 에서 그 스펙을 지원하고 있다.
STB가 POD 삽입여부를 알기위한 수단으로, interface pin 중에서 CD1 과 CD2 를 사용하게 되는, POD 삽입시 이 두 pin 이 low로 전환되고, 이때 POD interface chip에서는 interrupt를 발생시킨다. interrupt handler 는 CImain이라는 task에 message를 보냄으로써, POD의 삽입을 알린다. Message queue를 기다리고 있는 Cimain task는 POD의 삽입과 제거에 따라 start_ci()/close_ci() 함수를 호출하고, 다시 interrupt handler의 message를 기다린다.
다음은 start_ci()에서 수행하는 부속루틴에 대한 간단한 설명이다.