基于DSP/BIOS的數字電視傳輸流網(wǎng)絡(luò )采集系統設計
TCP/IP是因特網(wǎng)上傳輸數據所必需的協(xié)議, 這種網(wǎng)絡(luò )通信模式在PC之間的實(shí)現已經(jīng)完善, 但是體積、價(jià)格等因素限制了其應用的范圍。因此, 基于TCP/IP 協(xié)議與以太網(wǎng)的嵌入式系統網(wǎng)絡(luò )通信設計成為目前一個(gè)熱門(mén)的話(huà)題。本系統實(shí)現了在以TI公司的TMS320DM643為核心的嵌入式系統中,對數字電視傳輸流(TS)信號進(jìn)行采集并在以太網(wǎng)中傳輸。利用本系統可輕松地實(shí)現在局域網(wǎng)中對數字電視傳輸流信號的傳輸、調度。數字電視傳輸流信號源是針對歐洲數字有線(xiàn)廣播系統標準(DVB-C)的數字有線(xiàn)電視信號。網(wǎng)絡(luò )接入硬件在以TMS320DM643為核心的嵌入式系統中實(shí)現,網(wǎng)絡(luò )接入軟件采用了TI公司針對C6000系列DSP推出的TCP/IP NDK(Network Developer’s Kit)網(wǎng)絡(luò )開(kāi)發(fā)包來(lái)實(shí)現。
系統電路設計
電路主要由5部分組成。數字電視傳輸流網(wǎng)絡(luò )采集系統框圖如圖1所示。
圖1 數字電視傳輸流網(wǎng)絡(luò )采集系統框圖
其主要功能是通過(guò)傳輸流接口模塊采集數字電視信號進(jìn)入PLD(Cyclone EP1C6Q240C8)芯片,進(jìn)行必要的處理后,將信號發(fā)送到DSP(TMS320DM643)芯片存儲起來(lái),并進(jìn)行算法處理。通過(guò)TMS320DM643對BCM5221進(jìn)行必要的配置,將存儲在TMS320DM643內的數據通過(guò)BCM5221傳送到局域網(wǎng)中,并通過(guò)計算機接收數據。
傳輸流接口模塊
傳輸流接口模塊由CY7B933輸入接口芯片及其電器接口電路組成。CY7B933輸入接口電路是點(diǎn)對點(diǎn)的傳輸模塊,可以通過(guò)光纖、同軸電纜和雙絞線(xiàn)進(jìn)行高速的串行數據傳輸。輸入接口符合DVB-ASI的接口標準。輸入接口接收到串行位流后,通過(guò)內部PLL時(shí)鐘同步恢復數據的時(shí)鐘信息,并對位流進(jìn)行串并轉換、解碼和傳輸檢錯等操作。這種輸入接口能靈活地把高速點(diǎn)對點(diǎn)串行數據轉變成并行數據,而且應用領(lǐng)域廣泛,包括各種服務(wù)器、存儲器和視頻傳輸的應用。
PLD控制模塊
在項目中,此部分硬件選用的是Altera公司的EP1C6Q240C8芯片。
此模塊的主要功能是實(shí)現與CY7B933接收芯片的接口,把數據從CY7B933接收進(jìn)來(lái),并緩存數據。這部分功能均由VHDL語(yǔ)言編寫(xiě)的功能模塊實(shí)現。主要有兩個(gè)功能模塊:RECEIVE與FIFO。RECEIVE模塊主要負責從CY7B933接收數據字段;FIFO模塊主要負責緩存數據。
RECEIVE模塊
RECEIVE模塊的功能是實(shí)現與CY7B933接收芯片的接口,把數據從CY7B933接收進(jìn)來(lái)。其工作方式是以一個(gè)傳輸流包為邊界接收數據的。
首先,RECEIVE模塊會(huì )檢測傳輸流包的邊界,通過(guò)查找包頭字節(固定為0x47)間的字節數來(lái)確定。因為包中數據也可能含有0x47,所以要犧牲3個(gè)包的數據來(lái)檢查3次。當發(fā)現0x47這個(gè)字節的時(shí)候,就會(huì )觸發(fā)一個(gè)內部的計數器開(kāi)始計數。當計數到188后,如果下一個(gè)字節又是0x47,說(shuō)明傳輸流包屬于188個(gè)字節的包,那么計數器被清零;如果下一個(gè)字節又是0x47,說(shuō)明傳輸流包屬于188個(gè)字節的包,那么計數器被清零,否則計數器清零并重新開(kāi)始檢測邊界。
當檢測到邊界以后,RECEIVE模塊開(kāi)始接收數據包。計數器會(huì )從零開(kāi)始計數,在接收數據的過(guò)程中使能wrreq輸出有效信號,同時(shí)把數據輸出到下一級。當計數到188時(shí),表示一個(gè)數據包接收完成。當一個(gè)包的數據接收完之后,計數器清零,并置ts188,保持高電平一個(gè)時(shí)鐘周期。下一個(gè)周期檢測數據是否為0x47,如果是,說(shuō)明是下一個(gè)數據包的邊界;否則,說(shuō)明出現了錯誤,并重新回到上一段所說(shuō)的檢測數據包邊界的狀態(tài)。
此外,PLD模塊內會(huì )有一個(gè)專(zhuān)用計數器記錄空包數,當接收到數據包后,會(huì )首先檢測此數據包是否為空包,如果是空包,PLD模塊會(huì )把這個(gè)空包刪除,并在計數器中加1。如果接收的不是空包,就會(huì )把計數器的值加到這個(gè)數據包的私有字段中,并緩存到FIFO。然后計數器自動(dòng)清零。這樣處理數據包的目的是為了減少網(wǎng)絡(luò )傳輸的數據流量,從而可以傳輸更多的傳輸流數據。把計數器的值加入私有字段是為了在計算機接收到數據后,可以把原來(lái)的空包恢復出來(lái),從而保證原傳輸流數據的完整性。
tcp/ip相關(guān)文章:tcp/ip是什么
評論