用ADSP-2181和MC68302實(shí)現MPEG-2傳送復用器
摘要:在概述MPEG-2傳送流(TS)語(yǔ)法規范的基礎上,給出了用ADSP-2181 數字信號處理器和MC68302微控制器實(shí)現傳送復用器的設計方案和實(shí)現技術(shù)。該方法是在MC68302的控制下,用DSP查詢(xún)復用器各輸入FIFO的狀態(tài),根據各FIFO的狀態(tài)讀入數據,完成音頻、視頻的均勻打包。
本文引用地址:http://dyxdggzs.com/article/242399.htm關(guān)鍵詞:MPEG-2編碼傳輸系統 傳送復用器 TS流 打包
當今世界正在向數字化方向發(fā)展,電視信號的數字編碼、數字化存儲、數字化傳輸、數字化處理在我們的現實(shí)世界中已經(jīng)變得越來(lái)越廣泛。電視系統的全面數字化給節目制作和傳輸都帶來(lái)了革命性的變化。隨著(zhù)碼率壓縮技術(shù)的突破和MPEG標準的建立,從演播室到發(fā)射整個(gè)系統的各個(gè)方面正處于全面數字化的進(jìn)程中。MPEG-2編解碼傳輸系統是目前解決演播室節目制作和傳輸的主流產(chǎn)品。
MPEG-2編碼傳輸系統由音、視頻編碼器(包括音、視頻原始流的分組基本流打包)、傳輸流系統復用器、網(wǎng)絡(luò )適配器等組成,如圖1所示。
復用器是整個(gè)系統的關(guān)鍵設備之一,它接收前端多套節目編碼器來(lái)的視頻、音頻壓縮數據流,按照一定的復用策略將其交織復用成符合MPEG-2系統層規范的單一的系統碼流(傳輸流)。為實(shí)現一套節目音頻、視頻的解碼同步,在碼流中需插入各種時(shí)間標記、系統控制等信息。最后送到網(wǎng)絡(luò )適配器或者信道調制設備,得到與傳輸信道相匹配的標準輸出碼流后,送往信道。復用器還提供整個(gè)編碼系統的系統時(shí)鐘。
本文復用器的設計是在MPEG-2音/視頻國際標準的第一部分ISO/IEC13818-1系統層語(yǔ)法規范的基礎上,采用ADSP-2181信號處理器芯片和MOTOROLA的微處理器MC68302實(shí)現的。
1 復用器的設計
1.1 ISO/IEC 13818-1傳送層語(yǔ)法結構
復用器以MPEG-2系統規范為基礎,對于地面廣播方式,復用器按傳輸流(TS)格式打包。TS包的長(cháng)度固定為188字節,傳送層采用固定字長(cháng)數據包的優(yōu)點(diǎn)在于為以后新業(yè)務(wù)的創(chuàng )立提供了靈活性,新增的比特流可以直接在傳送層處理而無(wú)需增加硬件。數據包字頭信息中采用數據包標識(PID)作為比特流的識別工具,因此可以將視頻、音頻和其它數據混合在一起。經(jīng)網(wǎng)絡(luò )適配器后,得到具有G.703標準的碼流,以便在類(lèi)似SDH多路復用的環(huán)境中進(jìn)行數據的發(fā)送;同時(shí)也有利于抗信道誤碼和誤碼后的恢復。
傳送層的語(yǔ)法結構如圖2所示。188字節長(cháng)度的TS包由4字節的鏈接字頭、可變長(cháng)字節的自適應字頭以及有效數據負荷組成。每個(gè)TS包的字頭信息鑒別一種應用比特流,它們構成TS包的負荷,支持的應用包括視頻、音頻、數據、節目流和系統控制信息等。
1.2 多路復用流語(yǔ)意的限制
(1)節目參考時(shí)鐘PCR的編碼頻率
打包時(shí),TS流的構造應使得含有每一節目的PCR-PID的TS流分組中連續出現program_clock_reference字段最后一位的字節間隔應小于等于0.1s。
(2)顯示時(shí)間標簽的編碼頻率
對每一個(gè)原始視頻或音頻流來(lái)說(shuō),傳送流的結構應使編碼的顯示時(shí)間標簽的最大差值為0.7s,也就是
│tPnk-tPnk’’│≤0.7s
(3)在傳送流中,音頻采樣速率和系統目標解碼器的系統時(shí)鐘頻率之間有特定的比例關(guān)系,而且視頻圖象速率和系統時(shí)鐘頻率之間也有特定的比例關(guān)系。
2 ADSP-2181的性能
數字信號處理器(DSP)具有速度快、運算能力強、花費低、可擴展和集成度高等優(yōu)良特性,這就使得我們在選擇內嵌環(huán)境下工作的信號協(xié)處理器時(shí),能夠提供非常強大且靈活的系統,并且價(jià)格非常合理。
本文采用AD公司的ADSP-2181 數字信號處理器,它具有以下主要性能:
·25ns的單周期指令執行時(shí)間
·片內16K字程序存儲器PRAM;片內16K字數據存儲器DRAM
·三個(gè)獨立的計算單元ALU、乘法/累加器和桶形移位器
·兩個(gè)獨立的地址發(fā)生器
·強有力的程序定序器
·循環(huán)無(wú)額外時(shí)鐘開(kāi)銷(xiāo)
·條件算術(shù)指令
·具有壓擴硬件和自動(dòng)數據緩沖的兩個(gè)雙緩沖串行口
·可編程的內部定時(shí)器
·可編程的等待狀態(tài)發(fā)生器
·16比特內部DMA口可快速訪(fǎng)問(wèn)片內存儲器
·具有2048個(gè)存儲單元的I/O口支持并行的外圍設備
·13個(gè)可編程的標志管腳可提供靈活的系統信令
·EPROM的自動(dòng)引導或通過(guò)內部DMA口自動(dòng)引導
這些特點(diǎn)使得它只需最小的外部支持環(huán)境就可以工作。
用ADSP-2181實(shí)現壓縮的音、視頻的傳輸流打包時(shí),如果視頻編碼器以8Mbps的速率輸出壓縮的視頻流,存于視頻FIFO中,而16位操作的DSP每個(gè)指令讀兩個(gè)字節,則需讀0.5M次,即每秒需要500 000次讀指令才能保證FIFO不發(fā)生溢出。與此同時(shí),DSP還需對讀出的數據進(jìn)行一定的處理,才能從DSP串口發(fā)出。ADSP-2181的最高指令周期為40MIPS,按每秒從FIFO讀1MB計算,則平均1秒一個(gè)字節可有40條指令的處理時(shí)間。對于打包處理,ADSP-2181可以滿(mǎn)足一套節目的復用。
3 ADSP-2181的IDMA接口與MC68302的連接
為了使DSP實(shí)現最好的性能,有效的微處理器通信是最關(guān)鍵的。摩托羅拉MC68300系列微控制器能提供強大且靈活的總線(xiàn)接口,很適合DSP的要求。
復用器設計時(shí),整個(gè)過(guò)程的協(xié)調控制工作是用摩托羅拉的微處理器MC68302完成的??刂撇僮髁鞒桃?jiàn)圖3。圖中的標號表示系統的整個(gè)初始化過(guò)程,其中,“(1)”表示MC68302對打包DSP進(jìn)行RESET(復位),DSP開(kāi)始初始化;“(2)”表示MC68302給編碼器加載程序;“(3)”表示打包DSP通知MC68302已初始化完畢;“(4)”表示MC68302通知編碼器開(kāi)始工作。
MC68302對整個(gè)系統初始化完畢后,ADSP-2181便開(kāi)始從FIFO中讀取分組的視頻原始流和音頻原始流,并對所讀數據進(jìn)行判斷,加相應的包頭,然后在外加串口時(shí)鐘的控制下,以固定速率從ADSP-2181串口把打包的TS流數據送往信道。
下面介紹ADSP-2181芯片的IDMA接口同MC68302微控制器之間的硬件界面和軟件接口的設計方案。
3.1 IDMA操作
外部器件能通過(guò)DSP的IDMA接口訪(fǎng)問(wèn)ADSP-2181的內存。微處理器MC68302能夠通過(guò)IDMA接口與ADSP-2181的內存通信,把此DSP芯片當作是隸屬自身的以存儲區劃分的外圍設備,并且可以訪(fǎng)問(wèn)ADSP-2181的所有數據存儲器(DM)和程序存儲器(PM)。
ADSP-2181的IDMA接口由以下幾部分組成:一條16比特的地址/數據復用總線(xiàn)(IAD16:0),一條選擇線(xiàn)(IS),地址鎖存有效信號(ALE),讀信號(IAD),寫(xiě)信號(IWR),通知信號(IACK)。MC68302負責所有數據傳輸的初始化工作。
ADSP-2181的存儲器地址裝載在IDMA地址寄存器中,IDMA地址寄存器包括14比特的內存地址和1比特限定傳輸類(lèi)型的標志位。該標志位用于區分所傳輸的是24比特的程序存儲器代碼,還是16比特的數據存儲器數據。IDMA地址寄存器的初始化工作既可以由DSP完成,也可以由微處理器完成。微處理器可以通過(guò)運行一個(gè)地址鎖存周期來(lái)初始化此寄存器。一個(gè)地址鎖存周期的過(guò)程如下:先由微處理器發(fā)ALE信號,然后在IAD上傳輸15比特位(14位地址信號和位目的存儲類(lèi)型信號)。為了更有效地傳送大段的操作代碼或數據,并不是IDMA存取都需要一個(gè)地址鎖存周期。相反,一旦鎖定,每個(gè)IDMA字傳輸之后地址就會(huì )自動(dòng)增加。
3.2 硬件界面設計
占用微控制器外圍空間的ADSP-2181芯片的IDMA端口需要劃分成兩個(gè)部分:一部分由微控制器使用,用來(lái)設置它想訪(fǎng)問(wèn)的DSP存儲器地址;另一部分則用于傳輸數據和指令信息。
對于基于DSP的協(xié)處理系統的設計而言,微控制器和DSP之間的硬件接口設計僅僅是驅動(dòng)工作的一部分。系統的啟動(dòng)問(wèn)題及微處理器和DSP之間的通信問(wèn)題在系統設計中是很重要的部分。
3.3 加載DSP芯片
在加電情況下,DSP上的IDMA接口可用來(lái)加載程序。這樣DSP就無(wú)需再用單獨的EPROM芯片。對于芯片ADSP-2181,加載過(guò)程由管腳MMAP和BMODE來(lái)控制。保持管腳MMAP低電位、管腳BMODE高電位,就可以通過(guò)IDMA接口進(jìn)行程序加載了。在此狀態(tài)下,當有復位信號時(shí),DSP并不激活它的外部地址總線(xiàn)去訪(fǎng)問(wèn)EPROM芯片,而是等待微處理器開(kāi)始IDMA傳輸來(lái)填充其內部數據存儲器和程序存儲器,并且利用IDMA接口的地址自動(dòng)增加特性來(lái)加速以升地址順序進(jìn)行的代碼段的傳輸。當所有初始化工作結束時(shí),微處理器初始化DSP的重啟動(dòng)向量PM(0x0000),至此,程序加載結束,DSP 程序開(kāi)始執行。此過(guò)程的流程如圖4所示。
3.4 產(chǎn)生加載代碼
ASDP-21xx系列的指令操作代碼位有24位,而IDMA接口只能接收16位的值。為了通過(guò)IDMA接口傳輸指令操作代碼,需要先傳輸16位,然后再傳輸另外8位 并進(jìn)行適當的調整。
DSP的可執行文件是由ADSP_21XX鏈接器生成的。鏈接器接收由匯編器生成的目標文件,把它們放置在由系統結構文件定義的存儲結構中,產(chǎn)生DSP可執行文件。
4 ADSP-2181完成傳輸流打包
傳輸流的打包需要在ADSP-2181的數據存儲區DM中開(kāi)辟兩個(gè)緩沖區,一個(gè)是TS頭固定長(cháng)度部分的BUFFER,其中包含是否需要PCR字段的PCR-flag標志;另一個(gè)是可調字段的BUFFER,其中包括標識PCR編碼的相關(guān)字段。根據輸入修改TS的兩個(gè)緩沖,判斷是否需要可調字段、是否需加PCR字段、是否有填充字節以及填充字節的數目等。然后以恒定速率(在此是8.448Mbps)發(fā)出。
從編碼器來(lái)的視頻、音頻原始流分組(PES)在ADSP-2181中被分割成一個(gè)個(gè)長(cháng)度為188字節的小包,并插入相應的TS字頭。由于視頻流的輸入速率遠大于音頻的輸入速率,在同一時(shí)間內的視頻TS包遠遠多于音頻的TS包,因此必須采取一定的措施使得視頻、音頻數據TS包能夠均勻地交織復用到最終的傳送碼流中,以保證解碼端的視頻、音頻解碼器的BUFFER不會(huì )產(chǎn)生上溢和下溢。PCR時(shí)間標記在傳送復用器中規定的視頻TS包頭中傳輸,但要說(shuō)明的是,按照MPEG-2的系統層規范,PCR采樣的時(shí)刻必須是當PCR字段串行輸出離開(kāi)復用器那一刻的時(shí)間,也就是說(shuō)PCR的插入邏輯是復用器的最后一步操作。此外,一個(gè)PES包的包頭必須包含在一個(gè)新的TS傳送包中,同時(shí)PES包數據要充滿(mǎn)TS傳送包的負荷,若PES包數據的結尾無(wú)法與TS包結尾對齊,則需要在TS的調整字段中插入相應數量的填充字節,使得兩者的結尾對齊。解碼時(shí)填充字節則直接被丟棄。
復用器啟動(dòng)后,由MC68302首先向前級視頻、音頻編碼器發(fā)出系統編碼開(kāi)始信號,同時(shí)發(fā)送27MHz系統時(shí)鐘。ADSP-2181被動(dòng)地接收前級編碼數據。視頻、音頻分別在各自的FIFO中緩存,各FIFO設有各自的雙向計數器,動(dòng)態(tài)地反映各FIFO中緩存的視頻、音頻字節數。采用DSP輪詢(xún)技術(shù)控制復用比特流中各種TS包的交織策略。由于視頻PES數據流的輸入速率是可變的,而音頻的速率則是恒定的,若采用其他固定比例的復用策略,無(wú)法保證輸出碼流各種TS包的均勻性,采用輪詢(xún)技術(shù)除了能夠均勻打包輸出變速率的視頻數據流外,同時(shí)對多節目數據流的復用具有很好的靈活性,只需在軟件中增加輪詢(xún)的數目并合理安排其輪詢(xún)的優(yōu)先級即可,可用圖5來(lái)描述。
ADSP-2181按視頻、音頻的次序對視頻FIFOV FIFO、音頻FIFOA FIFO進(jìn)行輪詢(xún),即讀取反映FIFO狀態(tài)的雙向計數器,若大于預先確定的門(mén)限數值,則從相應的FIFO中讀?。保福醋止?,送入第二級公共FIFO中。
ADSP-2181在對視頻、音頻184字節的讀取過(guò)程中,同時(shí)檢測是否碰到PES包起始碼,若未碰到PES字頭,則由ADSP-2181向傳輸緩存器寫(xiě)入相應的TS包頭4字節,無(wú)可調字段,再將公共FIFO中的184字節送入傳輸緩存器;若碰到PES字頭則立即停止從第一級視頻或音頻FIFO中讀取數據,同時(shí)向ADSP-2181發(fā)出中斷,ADSP-2181的中斷服務(wù)讀取公共FIFO中的字節數目,設其為N,由于在這N字節數據中包含4字節的PES字頭,為了使TS包與PES包字頭對齊,公共FIFO中的數據要打成兩個(gè)TS包,由于第一個(gè)TS包有效負荷數據只有N-4個(gè)字節,PES包的結尾未能和TS包的結尾對齊,因此在第一個(gè)TS包的自適應域要插入182-N-4個(gè)填充字節0xFF,有效數據負荷為N-4,第二個(gè)TS包由于是一個(gè)新的PES數據包的開(kāi)始,公共FIFO中還保留4字節的PES字頭,因此ADSP-2181還需從第一級FIFO中讀入相應數目字節的視頻或音頻數據。對于音頻來(lái)說(shuō),不需插入PCR信息,只從音頻FIFO中讀入184-4個(gè)字節的數據。在向輸出緩存器寫(xiě)入TS字頭后,再將公共FIFO中的數據送入輸出緩存器。對視頻來(lái)說(shuō),在不考慮PCR信息插入時(shí)其操作同音頻一樣。
由于兩PCR之間的時(shí)間間隔在MPEG-2視頻編碼器傳送流中要求為100 ms,因此,在DSP軟件中設計了一個(gè)計數器,用于對所有已生成的TS包進(jìn)行計數。由于ADSP-2181串口的輸出速率是恒定的(在此是靠外加8.448MHz串口時(shí)鐘實(shí)現的),因而單位時(shí)間內的總的TS包的數目也是一定的。要使PCR之間的時(shí)間間隔保持恒定,只需將計數器的預置數目設定為“總的TS包數目/每秒÷25”,復用器每生成一個(gè)TS包,計數器減1,當計數器計到零時(shí)將時(shí)間間隔標記置位。ADSP-2181在每次輪詢(xún)打包TS數據之前,先檢測時(shí)間間隔標記是否置位,若未置位則按前述方法處理,若置位則在打包的下一個(gè)視頻TS包中插入PCR時(shí)間標記,當然這里只是在TS包頭中插入相應的可調字段,而沒(méi)有插入真正的PCR時(shí)間標記,只是將6字節的PCR位置預留出來(lái)。因此,如果下一個(gè)復用的TS包為視頻數據并且恰好需插入PCR時(shí)間標記,則DSP從視頻FIFO中讀的數據是176字節而不是184字節,因為可調字段已占用了8字節。如果該TS包為含有PES字頭的視頻TS包,則讀入的數據字節為172字節。在ADSP-2181的最后輸出單元中最重要的是完成PCR時(shí)間標記的插入。MPEG-2系統規范要求PCR時(shí)間必須為PCR域最后一字節離開(kāi)復用器的時(shí)間,因此,PCR只能在串出的時(shí)刻鎖存系統時(shí)鐘。PCR信息只包含在特定的視頻TS包中,ADSP-2181在寫(xiě)入該TS字頭時(shí)可調字段已預先保留6字節的PCR位置,因此,在數據串出的同時(shí)要進(jìn)行字頭檢測。當滿(mǎn)足PCR插入條件時(shí),即在檢測到TS包的同步字節以及可調字段標志位后,則在相應時(shí)刻啟動(dòng)PCR鎖存及串出邏輯。
需要說(shuō)明的是:對于多節目輸入復用的情況,除了可以采用以上所設計的DSP輪詢(xún)策略外,還應注意優(yōu)先級的排隊問(wèn)題,以防視頻緩沖區有上溢問(wèn)題出現。對于VBR視頻的多節目復用問(wèn)題,尤其要慎重考慮。不僅要設置雙向計數器,動(dòng)態(tài)地反映各FIFO中緩存的視頻、音頻字節數,還要采用相應的預測機制來(lái)即時(shí)獲取各路視頻速率的變化趨勢,同時(shí)采用相應的返回控制機制來(lái)調整輸入端的速率,保證各路信號均勻交織,使輸入FIFO不溢出也是很有必要的。另外,節目特殊信息PSI的插入要滿(mǎn)足PAT之間和PMT之間的時(shí)間間隔恒定為40ms,設計時(shí)是在TS包計數器置零后緊接著(zhù)的兩個(gè)TS包中放入PAT和PMT表格。解碼時(shí)選擇感興趣的節目就是根據PAT中標明的節目號在PMT中尋找該節目對應的音頻、視頻信息,進(jìn)而實(shí)現該套節目的同步解碼。
評論