復用器是數字電視前端平臺的關鍵設備,它的主要功能是完成對輸入多路傳輸流(Transport Stream,TS)的復用工作,它的性能穩定性直接影響前端平臺的運行。而復用器對傳輸流中節目特殊信息(Program Spe-cial Information,PSI)的分析處理是否完整全面,則直接影響到復用器其他功能部分的運行結果是否正確。對PSI信息的檢測分析是復用器設計中首要的也是最重要的部分之一。下文將對PSI信息檢測問題進行深入的分析探討。
1 TS流語法結構
傳輸流以TS包為單位,其中每個包的長度為188 B,這188個字節大致可以分為:包頭、調整字段和有效負載三個主要部分。包頭占4個字節,如圖1所示。
同步字節:8 b,值為0x47,表示一個TS包的開始。傳輸錯誤指示:1b,當置為1時,表明在相關的TS包中至少有一個不可糾正的錯誤。有效負載起始指示:1 b,在帶有PSI信息時,置1表示TS包含有PSI部分的第一個字節并帶有pointer field字段,否則表示不含有PSI的第一個字節。傳輸優先級:1 b,置1表明相關的包比其他具有相同PID但此位沒有置1的TS包有更高的優先級。PID:13 b字段,指示傳輸流有效負載的數據類型。傳輸加擾控制:2b,用來指示TS包有效負載的加擾方式。自適應字段控制:2b,用來指示本TS包首部是否跟有調整字段。連續計數器:4b,隨著每一個具有相同PID的傳輸流包而增加,當它達到最大值后又恢復到0。
節目專用信息PSI用來描述TS流的組成結構。它包括節目關聯表(Program Association Table,PAT)、節目映射表(Program Map Table,PMT)、網絡信息表(Network Information Table,NIT)和條件訪問表(Conditional Access Table,CAT)。PAT是PSI信息的最上層,列出了傳輸流中所有節目所對應的PMT的PID值,可以根據節目的PID值找到相應的PMT信息及NIT信息。節目映射表PMT提供節目號碼與組成它們的原始流之間的映射關系,這種映射表是一個TS流中所有節目定義的集合。網絡信息表NIT是可選的,其內容是私有的,通常包括用戶選擇的服務和通道頻率、衛星脈沖發射機、調制特性等的映射。條件接收表CAT提供條件接收(CA)系統的相關信息,指定EMM的PID值及相關的參數。
2 PSI信息提取分析
由于PSI信息四個表結構差別不大,所以提取算法也大致相似,在此主要以PAT表為例詳細介紹J"SI信息的提取流程。對TS流的分析在FPGA內部以字節為單位。PAT語法結構如圖2所示。
PAT的提取流程:
(1)首先應在傳輸流中找到包首PID 13位全為0且有效負載起始指示位為l的TS包。
(2)然后根據自適應字段控制位判斷是否含有調整字段,再結合pointer_field字段值找到table_id,從此字段開始到CRC校驗字節之前,將對所有有效數據進行CRC校驗。
(3)接下來是section_length字段,由此字段可以得到該PAT分段的TS包個數。
(4)接下來兩字節是傳輸流標識字段,再接下來的一個字節包含著版本號信息及當前段是否可用信息。保留當前版本號并與下一次的版本號對比以確定版本是否有更新。若當前段可用,則繼續,否則返回(1)。
(5)接下來的兩個字節分別是當前分段號和最后分段號,由此信息可以得知是否提取了所有分段的信息,即對整個PAT表是否進行了一次完整的分析。
(6)對循環字段的處理,每4字節一次循環,由前兩字節的節目號可以得知后2字節的PID是PMTPID還是NIT—PID。在循環字段結束后立即停止CRC校驗并把校驗的結果和碼流中的CRC四字節進行比較從而得知傳輸是否有誤。
(7)在TS包結尾處判斷當前PAT分段是否結束,否則繼續檢測下一TS包,是則進一步判斷是否分析了所有分段,若已經分析了所有分段則給出一個表示PAT分析全部結束的信號,否則轉到(1)繼續分析下一分段。
3 信息提取的硬件實現
信息提取框圖如圖3所示。
一路TS流首先經過芯片CY78933進行串并轉換再進入同步模塊進行同步鎖定后,其他各模塊才開始工作。由圖3可看出,以上各檢測模塊是并行獨立工作的,但是PMT檢測模塊、ELE檢測模塊、NIT檢測模塊和EMM檢測模塊要想進行有效工作,需要先接受其他模塊提供的信息,具體為PMT和N1T檢測模塊要接受PAT檢測模塊提供的PID信息,ELE檢測模塊要接受PMT檢測模塊提供的PID信息,EMM檢測模塊要接受CAT檢測模塊提供的PID信息。
3.1 信息提取同步模塊
根據MPEG一2標準可知,一個有效的TS包長為188 B,且其同步頭為8′h47,只有在有效地識別了包頭,才能嚴格地按照MPEG一2標準對數據包的每一位進行分析。在同步模塊檢測中,當找到8′h47時,必須連續3~5次(可通過參數設置)隔188 B都找到8′h47,才能認為實現了同步。另外考慮到TS包可附加16 B的前向糾錯碼,故該模塊做成188/204 B自適應,這樣可以提高通用性。
3.2 檢測模塊
由于PAT,CAT,PMT,NIT等檢測模塊在硬件設計上都很類似,故本文重點探討PAT檢測模塊的硬件設計,其他檢測模塊的設計將不再贅述。
PAT檢測模塊按照PAT提取流程進行工作,若發現PAT分段并且CRC校驗正確后,提取里面的PMT—PID和NIT-PID并分別送到PMT檢測模塊和NIT檢測模塊。對PAT表全部分段都分析完后啟動PMT、檢測模塊和NIT檢測模塊對TS流進行實時檢測,若PAT表有更新,則將新的信息再送給此兩模塊,以確保實時跟蹤TS流的最新變化。
在硬件實現上,從實用的角度出發,考慮到實際碼流中可能出現的各種情況,將其歸為三類處理:
(1)一個分段只由一個TS包來承載。
(2)一個分段由多個TS包來承載。
對于此類情況(即該分段的長度使得一個TS包無法完全承載此分段),要考慮的是第一個TS包在該分段的什么位置結束。又可以分為三種情況:
①第一個TS包結束在該分段的table_id字段到last_sectiOn_number字段這一區間。這也就是第一個TS包大部分為調整字段占據時的情況;
②第一個TS包結束在循環字段中的某個字節的情況;
③第一個TS包結束在四個CRC校驗字節中的某個字節處,考慮到有三個以上TS包時更確切地說應該是最后一個TS包只承載了CRC校驗字節的某幾個。
(3)一個TS包承載多個分段
此類情況是第(2)類中③情況的延伸。比如一個PAT表有兩個分段,第一個分段由第一個TS包承載后只剩下一個CRC校驗字節需要第二個TS包來承載。那么第二個TS包只承載這一個CRC校驗字節無疑將是很大的浪費,此時可以充分利用第二個TS包。使它也承載第二個分段,這就是一包多段的情況。對于一段單包、一段多包(包括三種情況)和一包多段等多種情況,在設計上無疑要充分發揮FPGA有限狀態機的強大優勢來進行處理。
將以上各種情況恰當地對應于狀態機的各個狀態,根據包頭提供的信息及表段信息可以進行邏輯判斷,從而控制各個狀態之間的轉移。在代碼實現上,邏輯判斷后控制信號的是否準確及時,至關重要。舉例來說,把對PAT表的CRC校驗分析作為一個獨立模塊,在分析該表時就要給予該模塊準確的控制,假如PAT有兩個TS包,在第一個TS包的table_id字段就要使能該模塊,第一個TS包結束時要禁止使能該模塊,到第二個PAT包第五個字節再使能CRC校驗模塊,直到CRC校驗字節前再關閉該模塊,總之控制信號要確保CRC校驗模塊校驗的是PSI表的所有有效信息。
另外需要說明的是PMT檢測模塊在實現上不需要考慮多個分段的情況,但有兩處描述子要進行CA描述子的檢測;NIT檢測模塊可以對指定描述子做檢測,如衛星傳送系統描述符等;ELE檢測模塊檢測elementary_PID、PCR PID和可能存在的ECM_PID,該模塊能正常工作說明PMT檢測模塊正確工作;同理EMM檢測模塊能正常工作說明CAT檢測模塊正確工作。
3. 3 資源的優化
由圖3可見,PAT檢測和CAT檢測同為一個模塊。這也算是本文在硬件實現上的一個創新點。之所以如此,是因為筆者在程序代碼的編寫上巧妙地將對CAT的檢測分析融入到對PAT的檢測分析中,而整合到一起的檢測模塊消耗的資源比原先PAT檢測模塊消耗的資源只增加一點點,這就意味著幾乎沒有增加硬件資源消耗的情況下完成了對CAT的檢測,從而大大節省了FPGA內部寶貴的邏輯資源。
經過仔細分析對照,筆者發現PAT表和CAT表有著驚人的相似性,這種相似性給編寫硬件語言帶來了極大的便利。PAT和CAT的差別主要在循環字段,其他字段位置字節數都能很好對應。若把對兩個表的循環字段的處理分別獨立為兩個小模塊,則剩下的部分就可以很好地將對PAT和CAT的處理融合到一起,融合到一起的模塊只需要給這兩個小模塊恰當的控制即可。
4 實際測試
本設計采用硬件平臺DE2開發板,FPGA型號EP2C35F672C6N,接口芯片通過DE2板GPIO接口和FPGA相連。測試碼流有將衛星信號轉換而得的實時碼流和人工制作的非實時碼流。對于A類情況,采用由亞洲三號衛星頻點為4095H的信號轉換的實時碼流進行測試,如圖4所示,從左向右:數碼管數值1和3分別表示有一套節目,該套節目里有3個PID,它們是13′h0021,13′h00A0,13′h0050;三個紅色LED燈亮表示發現PAT,PMT和基本音視頻包,兩個綠色LED燈亮表示接收同步及提取分析完PSI信息。DE2板顯示的節目數及PID值跟專業數字衛星接收機顯示的結果一樣,表明PSI信息檢測正確。對于其他各種可能的情況,由于在實際碼流中很少見,所以采用人工構造符合標準的碼流進行驗證,發現結果也是正確的。
5 結 語
隨著將來復用器應用范圍的擴展,數據業務量的加大,實際碼流中會出現一段多包或一包多段的情況,本文針對實際碼流中可能出現的各種情況進行實用性的設計,完全能保證復用器在無論業務量多大的場合都能進行完整全面的PSI信息檢測,具有很強的現實意義。
評論
查看更多