基于NDK的數字電視傳輸流網絡采集系統(tǒng)
摘要:本文介紹了數字電視傳輸流的采集和利用TCP/ IP 協(xié)議實現(xiàn)在以太網中傳輸數字電視傳輸流的系統(tǒng)設計。給出了基于DSP/BIOS和NDK的嵌入式網絡操作系統(tǒng)的硬件和軟件設計方案,在TMS320DM643的系統(tǒng)中實現(xiàn)了網絡通信模型,并成功地實現(xiàn)了數字電視傳輸流的網絡傳輸。
關鍵詞:數字電視傳輸流;TMS320DM643;DSP/BIOS;NDK
TCP/IP是因特網上傳輸數據所必需的協(xié)議, 這種網絡通信模式在PC之間的實現(xiàn)已經完善, 但是體積、價格等因素限制了其應用的范圍。因此, 基于TCP/IP 協(xié)議與以太網的嵌入式系統(tǒng)網絡通信設計成為目前一個熱門的話題。本系統(tǒng)實現(xiàn)了在以TI公司的TMS320DM643為核心的嵌入式系統(tǒng)中,對數字電視傳輸流(TS)信號進行采集并在以太網中傳輸。利用本系統(tǒng)可輕松地實現(xiàn)在局域網中對數字電視傳輸流信號的傳輸、調度。數字電視傳輸流信號源是針對歐洲數字有線廣播系統(tǒng)標準(DVB-C)的數字有線電視信號。網絡接入硬件在以TMS320DM643為核心的嵌入式系統(tǒng)中實現(xiàn),網絡接入軟件采用了TI公司針對C6000系列DSP推出的TCP/IP NDK(Network Developer’s Kit)網絡開發(fā)包來實現(xiàn)。
系統(tǒng)電路設計
電路主要由5部分組成。數字電視傳輸流網絡采集系統(tǒng)框圖如圖1所示。
圖1 數字電視傳輸流網絡采集系統(tǒng)框圖
其主要功能是通過傳輸流接口模塊采集數字電視信號進入PLD(Cyclone EP1C6Q240C8)芯片,進行必要的處理后,將信號發(fā)送到DSP(TMS320DM643)芯片存儲起來,并進行算法處理。通過TMS320DM643對BCM5221進行必要的配置,將存儲在TMS320DM643內的數據通過BCM5221傳送到局域網中,并通過計算機接收數據。
傳輸流接口模塊
傳輸流接口模塊由CY7B933輸入接口芯片及其電器接口電路組成。CY7B933輸入接口電路是點對點的傳輸模塊,可以通過光纖、同軸電纜和雙絞線進行高速的串行數據傳輸。輸入接口符合DVB-ASI的接口標準。輸入接口接收到串行位流后,通過內部PLL時鐘同步恢復數據的時鐘信息,并對位流進行串并轉換、解碼和傳輸檢錯等操作。這種輸入接口能靈活地把高速點對點串行數據轉變成并行數據,而且應用領域廣泛,包括各種服務器、存儲器和視頻傳輸的應用。
PLD控制模塊
在項目中,此部分硬件選用的是Altera公司的EP1C6Q240C8芯片。
此模塊的主要功能是實現(xiàn)與CY7B933接收芯片的接口,把數據從CY7B933接收進來,并緩存數據。這部分功能均由VHDL語言編寫的功能模塊實現(xiàn)。主要有兩個功能模塊:RECEIVE與FIFO。RECEIVE模塊主要負責從CY7B933接收數據字段;FIFO模塊主要負責緩存數據。
RECEIVE模塊
RECEIVE模塊的功能是實現(xiàn)與CY7B933接收芯片的接口,把數據從CY7B933接收進來。其工作方式是以一個傳輸流包為邊界接收數據的。
首先,RECEIVE模塊會檢測傳輸流包的邊界,通過查找包頭字節(jié)(固定為0x47)間的字節(jié)數來確定。因為包中數據也可能含有0x47,所以要犧牲3個包的數據來檢查3次。當發(fā)現(xiàn)0x47這個字節(jié)的時候,就會觸發(fā)一個內部的計數器開始計數。當計數到188后,如果下一個字節(jié)又是0x47,說明傳輸流包屬于188個字節(jié)的包,那么計數器被清零;如果下一個字節(jié)又是0x47,說明傳輸流包屬于188個字節(jié)的包,那么計數器被清零,否則計數器清零并重新開始檢測邊界。
當檢測到邊界以后,RECEIVE模塊開始接收數據包。計數器會從零開始計數,在接收數據的過程中使能wrreq輸出有效信號,同時把數據輸出到下一級。當計數到188時,表示一個數據包接收完成。當一個包的數據接收完之后,計數器清零,并置ts188,保持高電平一個時鐘周期。下一個周期檢測數據是否為0x47,如果是,說明是下一個數據包的邊界;否則,說明出現(xiàn)了錯誤,并重新回到上一段所說的檢測數據包邊界的狀態(tài)。
此外,PLD模塊內會有一個專用計數器記錄空包數,當接收到數據包后,會首先檢測此數據包是否為空包,如果是空包,PLD模塊會把這個空包刪除,并在計數器中加1。如果接收的不是空包,就會把計數器的值加到這個數據包的私有字段中,并緩存到FIFO。然后計數器自動清零。這樣處理數據包的目的是為了減少網絡傳輸的數據流量,從而可以傳輸更多的傳輸流數據。把計數器的值加入私有字段是為了在計算機接收到數據后,可以把原來的空包恢復出來,從而保證原傳輸流數據的完整性。
FIFO模塊
FIFO模塊的功能是從RECEIVE模塊接收數據,并緩存起來。當RECEIVE模塊接收完一個完整的傳輸流數據包之后,會發(fā)送ts188或ts204的中斷信號給DSP,DSP就會啟動EDMA功能從FIFO模塊接收數據。DSP與FIFO模塊采用異步連接的方式,具體的接收操作在DSP部分說明中再加以描述。
DSP算法處理模塊
此模塊主要由以TMS320DM643為核心的嵌入式系統(tǒng)組成。主要實現(xiàn)從PLD模塊接收傳輸流數據包,把數據包打包成TCP/IP格式,并實現(xiàn)對網絡接口(BCM5221)控制模塊的初始化,然后把數據包傳送到網絡模塊。
為了實現(xiàn)上述功能,必須建立起一套以TMS320DM643為核心的基本系統(tǒng)。
系統(tǒng)的具體配置
時鐘配置:EMIF內核時鐘ECLKIN是133MHz。此外,系統(tǒng)的外設總線、EDMA傳輸和L2存儲器的工作時鐘為CPU內核時鐘的1/2,即300MHz;片上定時器的工作時鐘為CPU內核時鐘的1/8,即75MHz。
中斷配置:TMS320DM643除了RESET和NMI引腳提供外部不可屏蔽中斷請求輸入以外,還有兩個外部中斷引腳GP0[5]/EXT_INT5、GP0[7]/EXT_INT7,以提供可屏蔽的外部中斷請求輸入。系統(tǒng)中,EXT_INT5外部中斷用作PLD模塊的請求接收數據信號,每當PLD模塊接收完一個傳輸流包,就會發(fā)送一個外部中斷信號給DSP,通知DSP接收數據。此外,EDMA中斷用于接收完一個包的數據后做后續(xù)處理。
系統(tǒng)對EMIF的使用情況:
系統(tǒng)在CE0空間擴展了4M
評論