基于單向數字電視(DTV)網絡平臺架構,本文分析了典型的增值業(yè)務類型及技術實現(xiàn)策略,并且討論了增值業(yè)務的相關運營模式??紤]到增值業(yè)務內容的保護和運營中的控制,作者還討論了廣泛應用于數字電視系統(tǒng)的條件接收技術在增值業(yè)務運營中的角色和功用。并且以StreamGuard CA系統(tǒng)為例闡述了條件接收系統(tǒng)應該滿足的功能和可擴展需求,在某種程度上為運營商運行增值業(yè)務時對CA系統(tǒng)的選擇指明了方向。
引言
相對于模擬電視,數字電視是一次重大的科技進步,不僅給用戶提供了更多更好的電視節(jié)目,而且一改往日的單一無控制的運營模式,實現(xiàn)對用戶的控制,并且提供多種增值業(yè)務。可以說,數字電視的最終發(fā)展將是一個多業(yè)務平臺,在滿足大眾收看電視節(jié)目的前提下,提供交互的、即時的新型服務。
網關協(xié)議轉換程序
網關協(xié)議轉換程序的整體設計思路為:當以太網應用層有數據要發(fā)送到CAN節(jié)點時,首先,數據發(fā)送到網關,由以太網控制器協(xié)議轉換 模塊從UDP數據報文中解析出完整的CAN 協(xié)議數據包,存放在數據緩沖區(qū)A,再調用CAN 控制器協(xié)議模塊將它發(fā)送到CAN 總線上。反過來,當CAN 設備有數據要發(fā)送到用戶層時,首先數據發(fā)送到網關,由CAN控制器協(xié)議模塊將完整的CAN 協(xié)議數據包存放在數據緩沖區(qū)B,再調用以太網控制器協(xié)議轉換模塊將完整的CAN協(xié)議數據包作為應用層數據封裝發(fā)送到以太網應用層。
CAN 控制器協(xié)議模塊
CAN 控制器協(xié)議轉換模塊程序主要由SJA1000的寄存器讀、寫程序,初始化程序和發(fā)送、接收程序5 個子程序組成。之所以要編寫單獨的SJA1000寄存器讀、寫子程序,這是由SX52 芯片只有I/O端口的特點所決定的。
(1) 讀SJA1000 寄存器子程序CANRead()其過程為:Re引腳設為輸出;CS片選清零;Rd引腳設為輸出;輸出地址;置位ALE;延時20 ns ;ALE位清零;Rd 引腳設為輸入;/Read 位清零;讀入數據;延時20ns ;/Read 位置位;CS片選置位;返回。
(2) 寫SJA1000寄存器子程序CANWrite()其過程為:Re引腳設為輸出;CS片選清零;
置位ALE;Rd 引腳設為輸出;輸出地址;ALE位清零;/wr位清零;輸出數據;延時20ns;CS片選置位; 返回。
(3) SJA1000初始化子程序CANInit()選用CAN2.0A協(xié)議構建CAN總線控制網絡,對SJA1000的初始化主要完成控制寄存器CR、驗收代碼寄存器ACR、驗收屏蔽寄存器AMR、總線定時寄存器BTR0,1和輸出控制寄存器OCR的設置。
(4) 發(fā)送接收子程序txdsub(),rxdsub()發(fā)送子程序負責節(jié)點報文的發(fā)送,由CAN控制器SJA1000獨立完成。主控制器SX52只需將數據緩沖區(qū)A中已按CAN2.0A協(xié)議格式組合成的一幀報文送入SJA1000 發(fā)送緩沖區(qū)中,然后將命令寄存器里的發(fā)送請求標志置位,即可發(fā)送報文。
接收子程序負責節(jié)點報文的接收。SJA1000自動接收發(fā)往該節(jié)點的數據并將收到的數據放到它的接收緩沖器中。SJA1000 的報文接收主要有兩種方式:中斷接收方式和查詢接收方式。該系統(tǒng)采用查詢接收方式??梢园l(fā)送給主控制器SX52的接收信息由狀態(tài)寄存器的接收緩沖器狀態(tài)標志RBS和接收中斷標志RI 標出。SX52將會把這一幀數據包存入數據緩沖區(qū)B中,然后釋放接收緩沖器,再通知總調度程序,由總調度程序調用以太網控制器協(xié)議轉換模塊轉發(fā)。
以太網控制器協(xié)議轉換模塊
以太網控制器協(xié)議轉換模塊主要負責從UDP數據包中解析出完整CAN協(xié)議報文,存入數據緩沖區(qū)A。同時,將數據緩沖區(qū)B中的完整CAN協(xié)議報文封裝成UDP數據報后發(fā)送到以太網上。采用UDP協(xié)議是考慮到CAN 協(xié)議數據報為短幀形式(每個數據幀最多為8個字節(jié)),因為TCP協(xié)議要進行3次握手建立連接,這對網絡來說無疑是一種資源的浪費。而UDP是無連接的傳輸,這樣可以提高網絡傳輸效率,同時,也減輕網關的處理任務。當然,UDP是不可靠的傳輸協(xié)議。為了提高通信的可靠性,在應用層建立回傳校驗機制,通過實驗
測試表明這種方式是行之有效的。以太網控制器協(xié)議轉換模塊主要由若干個ARP、UDP協(xié)議的API函數組成。
TCP/IP應用層程序設計
基于以太網的高層通信協(xié)議一般采用TCP/IP協(xié)議。這里采用流行的SOCKET套接字編程,傳輸層協(xié)議選擇UDP(用戶數據報協(xié)議),通過 VisualC++編寫應用層程序。WinSock提供了對UDP的支持,通過UDP協(xié)議可以向指定IP 地址的網關發(fā)送CAN 協(xié)議數據,同時也可以從它接收CAN協(xié)議數據,發(fā)送和接收方處于相同的地位沒有主次之分。利用CAsyncSocket類操縱無連接的數據發(fā)送較簡單,首先生成一個本地套接口,然后利用int CAsyncSocket : : SendTo ( constvoid 3 1pBuf , int nBufLen , UINT nHostPort , LPCTSTR1pszHostAddress = NULL ,int nFlags = 0) 發(fā)送數據,intCAsyncSocket : : ReceiveFrom ( void 3 1pBuf , int nBufLen ,CString & rSocketAddess ,UINT & rSocketPort , intnFlags = 0) 接收數據。利用UDP 協(xié)議發(fā)送和接收都可以是雙向的,即管理主機和SX52網關都可以發(fā)送和接收數據。在程序設計中,創(chuàng)建了一個CAsyncSocket 派生類CCanSocket ,該派生類CCanSocket 有若干成員函數,通過這些類成員函數,可以很方便地實現(xiàn)CAN總線到Internet 的通信。
結論
隨著Internet技術的日益成熟測控系統(tǒng)網絡和以太網將漸漸融合。CAN總線到Internet的互聯(lián)網關的設計研究是一項具有重要意義的工作,它有非常廣闊的應用前景。