專利名稱:用于處理非連續程序數據的數字視頻解碼器的制作方法
技術領域:
本發明涉及根據MPEG-2標準編碼的數據進行數據接收、處理、及傳輸,具體來說,本發明涉及處理MPEG-2格式數據流的傳輸解碼器的操作和接口。
高清晰度電視(HDTV)在試圖替代傳統的電視機方面繼續取得進展。多家公司和協會正努力制定多種標準以供應HDTV的全球市場,從而為這種進展鋪平道路。
其中有一個公司集團又被稱為“數字高清晰度電視大聯盟”,它包括AT&T、David Sarnoff研究中心、麻省工學院和其他一些機構。RobertHopkins在1994年夏季的《消費者電子IEEE交易》上發表了一篇以“北美數字陸地高清晰度電視大聯盟高清晰度電視系統”為名的文章,全面概述了該集團的長足進步。在此將引用該文章關于HDTV系統的背景和基礎知識方面的教導以供參考,其中包括對程序和傳輸包流的使用。
大聯盟采用由國際標準組織(ISO)下屬的動態圖像專家組(MPEG)開發的MPEG-2標準對視頻和音頻信息進行編碼。被接受的標準定期發表在下列刊物上動態圖像和相關音頻ISO/IEC 13818-2(1995年)的通用編碼信息工程的視頻部分(下文簡稱為“視頻部分”),動態圖像和相關音頻ISO/IEC 13818-1(1994年11月)的信息工程的系統部分(下文簡稱為“系統部分”)。在此將引用二者關于已建立的標準和格式方面的教學資料以供參考。
MPEG-2標準的語法定義了幾種數據記錄層,用來傳送音頻和視頻數據。例如,為了傳輸信息,一個表示多視頻序列的數字數據流被分為多個較小的單元。每個單元被分別封裝成多個打包的基本流(PES)包中。為了傳輸需要,每一個打包的基本流包被依次分割成多個定長傳輸包。每個傳輸包包含的數據只與一個打包的基本流包有關。傳輸包還包括一個首部,其中帶有控制信息,有時也包括適應字段子段,用于對傳輸包解碼。然而,打包的基本流數據也可能包括多種基本流。
正如在系統部分所述,多種基本流之間的同步是通過定期在數據流中提供時間標記實現的。例如,N個基本流的解碼是通過將流的解碼校正到一個通用主時基的方式實現的,而不是調整一種流的解碼以適應另一種流的解碼。主時基可能是N個解碼器中某一個的時鐘信號,或者是數據源的時間信號,還可能是一個外部提供的時鐘信號。
為了有助于該同步處理,MPEG-2標準的傳輸首部中還包括一個不連續性指示位。系統部分提供了一種語法表示以顯示一個典型的“不連續性指示位”在傳輸首部中的位置。該語法在以下的表1中有具體描述。
表1<pre listing-type="program-listing"><![CDATA[ 傳輸流適應字段語法位數助記碼adaptation_field(){ adaptation_field length 8 imsbf if(adaptation_field_length>0){ discontinuity_indicator 1 bslbf random_access_indicator 1 bslbf elementary_stream_priority_indicator 1 bslbf PCR_flag 1 bslbf OPCR_flag 1 bslbf splicing_point_flag 1 bslbf transport_private_data_flag 1 bslbf adaptation_field_extension_flag 1 bslbf if(PCR_flag==‘1’){ program_clock_reference_base 33uimsbfreserved 6 bslbf program_clock_reference_extension 9 uimsbf } if(OPCR_flag=‘1’){ original_program_clock_reference_base 33uimsbf reserved 6 bslbf original_program_clock_reference_extension9 uimsbf } if(splicing_point_flag=‘1’){ splice_countdown 8 tcimsbf } if(transport_private_data_flag=‘1’){ transport_private_data_length 8 uimsbf for(i=0;i<transport_private_data_length;i++){ private_data_byte8 bslbf } } if(adaptation_field_extension_flag=‘1’){ adaptation_field_extension_length 8 uimsbf ltW_flag 1 bslbf piecewise_ate_flag1 bslbf seamless_splice_flag 1 bslbf reserved 5 bslbf if(ltw_flag=‘1’){ ltw_valid_flag 1 bslbf ltw_offset 15uimsbf } if(piecewise_rate_flag=‘1’){ reserved 2 bslbf piecewise_rate 22uimsbf } if(seamless_splice_flag=‘1’){ splice_type 4 bslbf DTS_next_au[32..30] 3 bslbf marker_bit1 bslbf DTS_next_au[29..15] 15bslbfmarker_bit 1 bslbf DTS_next_au[14..0] 15bslbf marker_bit 1 bslbf } for(i=0;i<N;i++){ reserved8 bslbf } } for(i=0);i<N;i++){ stuffing_byte 8 bslbf } } }]]></pre>如系統部分中所述,不連續性指示位在傳輸首部內的適應字段中。不連續性指示位是一個1位的字段,設為邏輯值“1”時,表示當前的傳輸流包的不連續性狀態為真。當不連續性指示位設為邏輯值“0”或不存在時,不連續性狀態為假。不連續性指示位用于表示下列兩種不連續性狀態系統時基不連續和連續性計數器不連續。
通過在被指定為程序時鐘參考(Program Clock Reference-PCR)程序標識的傳輸流程序標識(PID)中使用不連續性指示位,可以指示系統時基的不連續性(參見系統部分第50頁的2.4.4.9)。接下來,可以接收到一個程序時鐘參考(PCR)值(即所謂主時鐘信號)。
例如,當使用一個時基記錄的節目材料被插入采用另一個時基記錄的數據流中時,設定不連續性指示位。時基中的差別表現為一個不可知的程序時鐘參考(PCR)值。
當一個被指定為PCR程序標識的程序標識的傳輸流包的不連續狀態為真時,使用同一個程序標識的傳輸流包中下一個PCR表示相關節目的新系統時間時鐘取樣。當包括一個新系統時基的PCR的包的第一個字節到達系統目標解碼器(STD)的輸入端時,系統時基不連續點被定義為這個時刻。
值得注意的是系統目標解碼器在先有技術中廣為人知,簡而言之,它是表示一個在概念上與傳輸編碼器的輸出端相連的假定解碼器。要求的條件是符合MPEG-2標準的數據流不會引起系統目標解碼器的數據溢出問題(其中包括緩沖區溢出)。對系統目標解碼器的其他討論在系統部分給出。
緊接著,在傳輸流包中不連續指示位也可能被置為“1”。這些傳輸包都屬于包含新的系統時基PCR的包的前一個程序時鐘參考程序標識。在這種情況下,一旦不連續性指示位被置為“1”,在同一個程序PCR標識的所有傳輸流包中它都被置“1”,該程序PCR標識符合和包括包含新系統時基的第一個PCR的傳輸流包。當系統時基的不連續性發生時,新的系統時基的不少于兩個PCR在另一個系統時基不連續性發生之前被接收。進一步來說,除非欺騙模式狀態為真,否則來自不多于兩個系統時基中的數據會在任意時間出現在一個程序的系統目標解碼器緩沖區中。
當時基不連續性要求更新多系統時間常數(STC)值時(即在傳輸解碼器的時鐘管理器和在外部的視頻和音頻解碼器中),特別是當等待時間可能存在于正被外部解碼器解碼的數據和正被接收并儲存在傳輸解碼器的緩沖區中的數據之間時。換句話說,典型的情況是一個傳輸解碼器與外部的視頻和音頻解碼器耦合,后者中每一個都保存一個STC或等價的值。因此,當系統時基發生改變時,同時校正所有的STC值就可能引發系統的同步問題。
考慮到這個因素,本發明所要解決的一個重要問題在于傳輸解碼器怎樣才能有效地處理緩沖器和解碼器之間的系統時基不連續性問題。
本發明包括一個用于接收傳輸數據流的系統,該數據流包括具有不連續性指示位的首部和有效內容的傳輸包。該系統至少包括一個緩沖存儲器和一個外部解碼器,前者用于臨時儲存接收到的傳輸數據流,后者用于解碼來自緩沖區的數據輸出以供顯示之用。本發明用于處理對不連續性指示位的接收,其手段是通過接收到不連續性指示位后對傳輸包的首部進行語法分析,以及將傳輸包的有效內容存入存儲器。一旦接收到下一個程序計數器參考值,一個計數器中就會裝入接收到的程序計數器參考值。然后在儲存的數據中搜尋時間標記,一旦發現,就檢索該時間標記。最后,基于已檢索到的時間標記為某一個時間點設置一個定時器中斷,并且當定時器中斷發生時,將程序計數器參考值送往解碼器,同時向解碼器提供新時間標記值不充分時間,使之能處理含有新的時基的數據,而無需干擾對含有前一時基的數據的處理。
圖1A示出了一個典型的數字傳輸解碼器及其各種接口的高級功能框圖。
圖1B示出了一個高級流程圖,描述了采用圖1A所示的實施例時本發明的一個方面采取的步驟。
圖2A示出了圖1A所示的傳輸解碼器的典型實現的高級功能框圖。
圖2B示出了圖1A所示的傳輸解碼器的典型實現的高級數據/控制流程框圖。
圖3示出了圖2所示的傳輸解碼器中使用的存儲器控制器的功能框圖。
圖4示出了用以描述存儲器控制器如何處理指針FIFO項的典型流程圖。
圖5A示出了在本發明的視頻解碼器接口部分執行的步驟的典型流程圖。
圖5B示出了在本發明的音頻解碼器接口部分執行的步驟的典型流程圖。
概述如上文所述,本發明的一個重要方面在于解決傳輸解碼器如何高效地處理不連續性指示位的問題。本發明的另一個重要方面在于處理傳輸解碼器和僅能處理基本流數據的視頻解碼器之間的接口問題。另外,本發明還有一個方面涉及傳輸解碼器和位速率限制音頻解碼器之間的接口問題。為了全面介紹以上的各個方面,本發明包括一個特別設計的MPEG-2傳輸解碼器。
如果一個節目使用MPEG-2格式通過衛星向全國的多個接收站播放,一個時基不連續的實例就出現了。這就是為介紹本發明的不連續性部分提供的具體環境。但是,在節目播出的過程中,每個接收站會加入自己的商業廣告節目。在這種情況下,應設置一個不連續性位來指示節目時基中的空白或間斷,以便于自己擁有本地時基的商業廣告的插入。
然而,當各個接收站插入各自的節目時,來自衛星的節目傳輸并不會中斷。由此可知,當遇到不連續性指示位時,接收來自本地接收站并帶有插入廣告內容的節目的傳輸解碼器的內部定時會跟蹤適當的時基。
再看看附圖,圖1A示出了一個典型的數字傳輸解碼器110的高級功能框圖以及各種接口。如圖1A所示,傳輸解碼器110包括與以下各部分的連接物理層通道接口(又叫通道接口)112、緩沖存儲器114、主微處理器116、外部視頻和音頻解碼器118和120以及時鐘信號電路(例如VCXO)122。在本發明的典型實施例中,傳輸解碼器110支持一個視頻接口和多達兩個音頻接口(例如,音頻接口A和B)。
處于傳輸解碼器110外部的主微處理器116也通過微總線24與視頻和音頻解碼器118和120耦合。這種連接可以使用并行或串行數據路徑,并根據被選擇使用的單個外部解碼器的要求而變化。在任何情況下,將主微處理器116和外部解碼器連接起來的方法都是眾所周知的,同時也為擁有普通技藝的人員所理解。
一般來說,傳輸解碼器110和每個外部視頻和音頻解碼器118和120都包括一個的系統時間常數(STC)值(圖中未給出)。該值儲存在寄存器或計數器中用于使接收到的數據流的解碼和顯示同步。
如上所述,當時基不連續在數據流中發生時可能出現問題,而且這種不連續要求STC值在傳輸解碼器110和視頻及音頻解碼器118和120中同時更新。特別容易發生問題的時間是當等待時間可能存在于正被外部解碼器解碼的數據和正被接收并儲存在傳輸處理器110中的數據之間時。
在本發明中,微處理器116在控制數據流的同步和視頻及音頻解碼器118和120的運作方面起著十分重要的作用。在本發明中,微處理器116對傳輸解碼器110中的多個芯片寄存器能進行直接的存儲器映射式存取。微處理器116還能通過讀、寫、和水印指針對外部存儲器114內的緩沖區和芯片上32位可讀寫FIFO(如圖3中所示)進行存取。微處理器116通過一個內部微總線223(如圖2B所示)與多個內部功能塊連接,從而允許各種事件和錯誤狀態通過可屏蔽中斷用信號發出。
一般來說,如圖1B所示的流程圖中,本發明的一個方面通過特別設計的傳輸解碼器110在接收到不連續性指示位(步驟150)后執行以下步驟1)由于不連續性指示位不必和下一個程序時鐘參考值(PCR)處于同一個數據包中,所以當下一個程序時鐘參考值被接收后,位于傳輸解碼器110中的時鐘管理電路(如圖2A中所示)內的計數器中將裝載下一個程序時鐘參考值(PCR)(步驟152);3)在經過語法分析并存儲在存儲器中的后續包中搜索時間標記,一旦找到某一個,則將檢索時間標記值(步驟154);4)由微處理器116在某個時間點設置定時器中斷,該時間點只比檢索的時間標記值提前不到一幀的時間(步驟156);而且5)當定時器中斷發生時,當前STC值被送往外部視頻和音頻解碼器118和120(步驟158),從而給外部解碼器足夠的時間以搶在數據流中的時間標記值與保存在視頻或音頻解碼器118或120中的計數器值進行比較之前處理數據。
下文將詳細介紹這些高級步驟的執行情況。
圖2A和圖2B示出了圖1A所示的傳輸解碼器110的典型執行過程的高級功能框圖。下文參照圖2A和2B,介紹傳輸解碼器110中的總體數據流動情況。
如圖所示,圖1A的通道接口112與通道數據處理器(CDP)210相連。通道接口112還向NRSS接口212提供數據,以便用NRSS智能卡230加密。在此特結合NRSS委員會(4/95)的條件存取EIA標準2.6版關于NRSS智能卡的論述以為參考。
通道數據處理器210被提供用于預處理(如檢測、同步、確認等)所接收數據流中的包。處理完畢后,通道數據處理器210將輸出數據發送到傳輸處理器(TPROC)214中供進一步處理之用。傳輸處理器214根據下文詳細描述的程序標識表進行多種處理,例如語法分析等。
傳輸處理器214與傳輸解碼器110中的多個功能塊進行交互。這些功能塊包括存儲器控制器216、時鐘管理器218,個人數據處理器220和高速數據端口222。如上所述,微處理器116能對多個芯片寄存器直接存取。這種存取是通過微接口217和內部微總線223(如圖2B所示)獲得的。存儲器控制器216除了與傳輸處理器214連接外,還與外部存儲器114和視頻及音頻解碼器(224、226和228)相連。
現在介紹一下與單個功能塊有關的數字數據流的處理細節。通道數據處理器(CDP)210值得指出的是來自通道接口112中的數據流經過可能的緩沖后(圖中未給出)被送往通道數據處理器210。
通道數據處理器210對接收到的數據流執行多種預處理步驟。具體來說,通道數據處理器210決定數據流中字節和幀的邊界,并將接收到的數據流轉換為8位的并行格式。在本發明的典型實施例中,在通道數據處理器210后在傳輸解碼器110中進行的操作使用字節格式進行。
為了確定字節和幀的邊界,通道數據處理器210與傳輸包首部包含的幀模式同步。具體來說,這種同步是通過搜索MPEG-2的傳輸流同步字節(sync byte)(例如47H)并確認它在可編程數目的連續傳輸包開始處發生而實現的。
在此過程中,通道數據處理器(210)核對同步字節,將數據流鎖定并繼續確認包。當同步位的搜索在進行中時,在CDP狀態寄存器中設置搜索狀態位(Search State)(圖中未給出)。一旦發現了同步字節并且對連續發生的確認在進行之中,同步狀態位(Sync State)就設定了。最后,當符合預先確定的搜索標準時,設定鎖定狀態位(Lock_State)。在本發明的典型實施例中,搜索標準是三個連續的確認過的包。同樣,指示帶有損壞同步位的包數目的同步滯后值被設定。對通道數據處理器210編程使這些同步位在宣布損失鎖定狀態之前就能通過。當這個滯后值被超過時,鎖定的損失被宣布。通道數據處理器210然后發出一個鎖定損失中斷并且從鎖定狀態過渡回搜索狀態。
另外,如果通道接口112(如圖1A所示)提供一個CHPSTRT信號,傳輸解碼器110可能被設置以使用此信號作為一種手段來與數據流同步,方法是將通道數據處理器幀和同步控制寄存器中的幀模式位(Framing Mode)設為邏輯值“1”。在此情況下,當CHPSTRT被確定后,在一個傳輸包時間內可獲得同步。
另一種情況是,如果通道數據處理器幀和同步控制寄存器中的忽略同步位被置為邏輯值“0”,則通道數據處理器210在相對于CHPSTRT信號過渡過程的預定字節(第一個字節)處校驗同步位的完整性,并當校驗失敗時宣布鎖定狀態。如果忽略同步(Ignore-Sync)設置為“1”,則通道數據處理器210不校驗同步的完整性。
取得了鎖定狀態后,通道數據處理器210的輸出被傳輸到傳輸處理器214并由其進行處理,后者以字節的格式對數據進行處理(例如,過濾、語法分析、格式化等)。傳輸處理器(TPROC)214由傳輸處理器214產生的信號控制數據流動去往存儲器控制器216、微接口217、時鐘管理器218、個人數據處理器220、和高速數據端口220。
在本發明的典型實施例中,傳輸處理器214在程序標識表的控制下處理數據流。如系統部分所述,一個程序標識是傳輸流首部中一個13位的字段,表明存儲在包有效數據中的數據類型。一些程序標識值被分配,另一些則被保留。程序標識表的另一些細節在上文提到的MPEG-2規范中的系統部分的3.3節給出。
根據程序標識表,傳輸處理器214能同時處理多達32個用戶可選擇的程序標識。傳輸解碼器110所處理的程序標識在程序標識表中均有規定。程序標識表中的位字段指定了各種數據處理選項。
在操作過程中,程序標識由傳輸處理器214從剛剛到達的傳輸包的首部中抽取出來,并同時與程序標識表中的所有項目比較。一旦發生匹配,就根據匹配程序標識表項中設定的選項對包中的數據進行處理。如果程序標識表項沒有匹配的,就放棄該包。
有效部分格式位沒有設定為放棄(000)的程序標識表中每一個地址都與一個通道號相連。存儲器控制器216與傳輸處理器214相連,負責向RAM中特定的緩沖區(通道)傳輸數據。關于存儲器控制器216的操作問題在下文中與圖2、3、4有關的部分具體討論。
在本發明的典型實施例中,保存于傳輸處理器214中的程序標識表由微處理器116在初始化過程中通過微總線223利用軟件設置。
關于程序標識表項的格式,除了其他信息外,一個程序標識表項還包括1)一個13位的程序標識,和2)一個1位的PCR程序標識字段。后者一旦設定,就表明對于被解碼的程序來說,此程序標識帶有PCR。一個典型的程序標識表項還包括一個1位的打包的基本流HDR位,它一旦設定,就使得與打包的基本流首部中的“流標識”對應的RAM緩沖區地址儲存于指針FIFO中。當存儲器控制器216向指針FIFO中寫入數據時,它發出一個中斷。這個中斷又被稱為一個DMA_MARK信號,用于提醒微處理器116發送流標識(Stream_ID)字節。在本發明的典型實施例中,以基于表中位置的數字順序向程序標識表項分配通道號。例如,向第一項分配DMA通道0,向下一項分配DMA通道1等等。
傳輸處理器214表明帶有程序時鐘參考程序標識的傳輸包應該由時鐘管理器218通過在程序標識表項中放入PCR_PID信號進行處理。時鐘管理器(218)監視帶有PCR_flag(標志)的包的適應字段,并抽取PCR。
傳輸處理器214根據包的程序標識將它們分開,然后除去傳輸包的首部,并結合存儲器控制器216將程序標識包的有效部分(例如,打包的基本流包的部分)分別存儲在外部存儲器114中指定通道的順序排列存儲區字段。存儲器114中的數據表示打包的基本流包。
傳輸處理器214還處理從主微處理器116向外部存儲器進行的寫操作。存儲器控制器216存儲器控制器216將傳輸包中經過語法分析的有效部分存儲在外部存儲器114中,并根據需要向視頻處理器224、多達兩個音頻處理器226和228以及主微處理器116或微控制器提供視頻、音頻、PSI和其他數據(如個人數據)。
圖3給出了適用于圖2A和圖2B中顯示的傳輸解碼器110的存儲器控制器的典型功能框圖。如圖3中所示,存儲器控制器216通過FIFO310從傳輸處理器214中獲得數據。存儲器控制器216通過由微輸入FIFO314和微輸出FIFO316組成的微接口217從微處理器116中取得和傳輸數據。值得指出的是,圖2A和圖2B的存儲器控制器216外部的微接口217在圖3中也給出了,以便清楚地表示它與FIFO314和316的相互關系。
存儲器控制器216還包括一個流程控制單元318,它包括芯片存儲器、一個DMA控制器320、數據路徑(Datapath)邏輯322,以及用于向視頻和音頻解碼器(224、226和228)分別發送數據的。
存儲器控制器216將來自下列兩個來源中的數據寫入外部存儲器其一為傳輸處理器214(通過FIFO310中的傳輸端口),其二為微處理器116(通過FIFO314中的微端口)。
存儲器控制器216從外部存儲器中讀取數據,并將其提供給以下四個部件1)視頻接口(通過視頻FIFO324),2)音頻接口A(通過音頻接口A的FIFO326),3)音頻接口B(通過音頻接口B的FIFO328),4)微控制器116(通過微輸出FIFO316)。
外部存儲空間被劃分為多個分離的、互不重疊的緩沖區。其中每一個供一個DMA通道使用。可使用的通道多達32個之多。通道號與寫入數據兩個FIFO源或從四個目標FIFO中讀出的數據相關連。
由傳輸處理器214提供并寫入傳入端口FIFO310的數據帶有一個通道號標記。其它FIFO中每一個的通道號由微處理器116在DMA接口寄存器中定義。微處理器116為每一個被使用的通道設置一個128位的DMA通道配置寄存器(通道寄存器)。此通道寄存器含有由起始和結束地址定義的緩沖區空間等信息,而不管該緩沖區被設為FIFO(讀寫指針互相纏繞,有時又叫環形隊列)還是隊列(Queue)(讀寫指針不會纏繞在一起),等等。
如果通道寄存器允許,DMA控制器320能在當前使用的緩沖區已滿時獲得一個新的緩沖區。這種特性通常只適用于那些存儲為主微處理器116所用的數據的緩沖區,如PSI區字段。這些新緩沖區的起始和結束地址儲存在新的緩沖FIFO中。只有微處理器116能向此FIFO中寫入新的緩沖區。已使用過的緩沖區指針和其他類型的指針由DMA控制器320寫入指針FIFO中。在本發明的典型實施例中,只有微處理器116能讀取指針FIFO。這些指針被微處理器116用于管理對緩沖區數據的讀取和向新的緩沖FIFO返回使用過的緩沖區。圖4中的指針FIFO項流程圖給出了在所有可能的信號條件、通道寄存器設置和緩沖區條件下指針FIFO的項。
在接下去的圖3中,DMA控制器320和數據路徑322為外部存儲器提供所有的接口信號。流程控制單元318通過向DMA控制器320提供適當的控制信號,使其為六個特定的接口FIFO中的某一個服務。這些信號包括1. DMA控制器開始信號本信號命令DMA控制器320開始為使用諸如DMA控制器操作、DMA輸入FIFO選擇和DMA輸出FIFO選擇之類命令的特定FIFO服務。同時,流程控制單元318讀出128位特定通道寄存器的內容,并使其在通道寄存器(內部存儲器)的數據總線上可用。DMA控制器320將此128位的字讀入它的內部寄存器,然后流程控制單元318被釋放以根據內部存儲器的需要執行其他的讀/寫操作。
2. DMA控制器操作信號(1位)該位發出一個讀或寫的信號,由接口FIFO上的DMA控制器執行。
3. DMA輸入FIFO選擇信號(1位)發出信號選擇兩個輸入FIFO(310或314)中的某一個提供服務。
4. DMA輸出FIFO選擇信號(2位)發出信號選擇四個輸出FIFO(316、324、326或328)中的某一個提供服務。
5.在請求/通道數據/通道號/DMA控制器中的通道數據停止一般來說,DMA控制器320持續為FIFO服務,直到因如接口FIFO滿或外部存儲器中無數據等原因不能繼續服務為止。一旦這種情況發生,DMA控制器320分配請求的通道數據給流程控制單元318,并且將通道寄存器數據和通道號數據提供給流程控制單元318。除非特定的FIFO需要急救行動(例如,因為它正接近滿或空的狀態),流程控制單元318使用通道數據更新通道寄存器存儲器(例如,被更新的信息包括讀寫指針等),并指示DMA控制器320為回路中的下一個FIFO服務。
有些時候,流程控制單元318可能需要向DMA控制器320發送一個DMA控制器停止命令,作為對向另一個FIFO提供服務的需要作出的響應。該FIFO可能是擁有更高優先級的輸入FIFO。這個命令指導DMA控制器320停止為當前正被其服務的FIFO服務,并將通道數據寫入流程控制單元318。
DMA控制器320使用以下信息更新通道寄存器讀指針、寫指針和DMA控制器320停止為FIFO服務處的其他信息。由于流程控制單元318將這些信息寫入了內部通道寄存器存儲器,DMA控制器320可以從中斷點開始恢復為被中斷的FIFO提供服務。
考慮到DMA控制器參與本發明不連續狀態部分的整體運作過程,當包括一個流標識的字節的下一個PES包被TPROC 214寫入存儲器控制器216時,流程控制單元318引起DMA_MARK信號變高。DMA_MARK信號的過渡觸發微處理器116處的中斷,并且打包的基本流包首部的地址被存儲在微處理器已存取的輸入指針FIFO中。由于這個打包的基本流首部可能有一個時間標記,所以對由不連續性指示位產生的標志位作出響應的微處理器116在儲存的打包的基本流首部中搜索時間標記。一旦發現,會檢索此時間標記值。微處理器116基于檢索到的時間標記值設置定時器中斷。
再參看圖3,在本發明的典型實施例中,流程控制器單元318的內部存儲器包括四個64×32位的塊,每個塊都分配給通道寄存器、新緩沖FIFO和指針FIFO。
在本發明的典型實施例中,每一個通道寄存器有128位并且最多有32個通道。所以有多達128×32個位以多個128位的格式分配給通道寄存器。
32位的字被寫入新緩沖區和指針FIFO或從它們中讀出。至少128×32位的內存(即128個字)可用于新緩沖區和指針FIFO中。另外,如果使用的通道少于32個,通道寄存器中未使用的空間被分配給新的緩沖區和指針FIFO。
以下是32個DMA通道和16個DMA通道的存儲器分配示例。
1)32個被使用的通道的存儲器分配新緩沖區FIFO=64×32位指針FIFO=64×32位通道寄存器=128×32位2)16個被使用的通道的存儲器分配新緩沖區FIFO=64×32位指針FIFO=128×32位通道寄存器=128×16位時鐘管理器218圖2A和2B中所示的傳輸解碼器110中的時鐘管理器218使用連續PCR值同步本地27MHz的信號(由時鐘信號電路122產生)。時鐘管理器218中的計數器值被稱為系統時間常數(STC)值。在本發明的典型實施例中,微處理器116通過內部微總線223存取計數器中的STC值。
時鐘管理器218中的計數器定期與傳輸數據流中的PCR進行同步。當遇到數據流中的第一個PCR時,該PCR被“擠載”入計數器并成為初始STC值。當后來的PCR值被接收時,將它們與STC值相比較,以校正時鐘信號電路122(例如,VCXO)的頻率。在本發明中,此過程是通過使用在下文中會詳細介紹的數字模擬轉換器(DAC)實現的。一旦進行了相位錯誤校正,通常是將新的PCR值作為STC值載入。
一般每幀產生一次PCR值。在MPEG-2的標準中,至少每三幀內(大概十分之一秒)會產生一次PCR值。
典型的情況是,外部視頻和音頻解碼器(118和120)通過更新外部解碼器中的STC值與傳輸解碼器110保持同步,該過程的實現基于時鐘管理器218中保存的STC值。視頻和音頻解碼器(118和120)通過將數據和接收到的打包的基本流數據流中的時間標記相比較,使用儲存值來確定何時解碼或顯示數據。值得指出的是,在本發明的典型實施例中,傳輸解碼器110、視頻解碼器118和音頻解碼器120都接收時鐘管理器(218)產生的同一個27MHz的時鐘信號。
傳輸解碼器218包含對產生本地時鐘信號的硬件支持。該信號對于某一個選定的程序來說是鎖定在系統時鐘信號上的。如上文所述,在特定的PCR_PID上接收的PCR值在串行接口上可為其他設備所用。
時鐘管理器(218)包括一個系統時間計數器(STC)(圖中未給出)、一個系統時間時鐘寄存器(圖中未給出)、一個程序時鐘參考(PCR-Program Clock Reference)寄存器(圖中未給出)、一個當前STC寄存器(圖中未給出)、一個報警時鐘中斷寄存器(圖中未給出)以及一個鎖存從與選定的程序標識(PID)有關的首部中抽取的PCR值的邏輯部件(圖中未給出)。它還包括串行PCR接口和用于控制外部系統時鐘信號控制回路的DAC寄存器。
在本發明的典型實施例中,STC是由9位基部和33位擴展部組成的42位計數器。
STC基部將名義上的27MHz系統時鐘輸入信號分為300份。結果得到的90KHz信號驅動STC擴展。在任何時候,STC都能被在微處理器116上運行的軟件寫或讀。當遇到一個不連續性指示位后,可以將接收到的PCR值自動加載到STC中。
如上文所述,可以通過在程序標識表項中設定PCR_PID位,從剛到達的位流中自動抽取PCR。處理接收到的PCR取決于軟件設定的選項和接收PCR時當前傳輸包的不連續狀態是否存在。
當包含PCR_PID的傳輸包被接收時,和傳輸首部中的不連續指示位為邏輯值1,可以確認是不連續狀態。該不連續狀態將一直持續下去,直到包含PCR_PID的傳輸包被接收時不連續性指示位為邏輯值0,或者當在PCR_PID包中發現下一個PCR為止。
如果設置為有效,當PCR被接收且不連續狀態存在時,時鐘管理器218自動將接收到的PCR載入STC中。此時,一個中斷被發送到主微處理器116。
時鐘管理器218包括一個初始化位。該位被軟件置為1時,則無論不連續狀態存在與否,下一個被接收到的PCR都將被載入STC中。然后初始化位被時鐘管理器218自動清除。只有當STC不包含有效的PCR時(即,當選擇了新的程序標識時),才設置初始化位。
如果沒有不連續狀態存在或自動STC載入功能被置為無效,接收到的PCR被儲存在PCR寄存器中,并且可選擇向主微處理器116發出一個中斷。在獲得PCR的同時,STC的當前狀態被保存在STC寄存器中。儲存下來的PCR和STC值被用于計算錯誤信號,從而控制外部系統的時鐘信號(XOCLK)。
當接收到的傳輸包包括一個與PCR_PID等同的PID(程序標識)和一個PCR時,此PCR被鎖存在PCR寄存器中。此時STC計數器的當前內容也被鎖存在STC寄存器中,并且向主微處理器116發出一個中斷。將兩個值都鎖存起來就消除了由于中斷服務例程中存在變化的等待時間而產生的不確定性。在本發明的典型實施例中,兩個寄存器都包括一個9位的基部和一個33位的擴展部。基部在300模塊中,擴展部是用二進制表示的。在寄存器的內容被用于任何計算之前,它們可以被轉化成二進制數。轉化方法是將擴展部乘以300,然后將與基部相加。
當前的STC寄存器是一個只讀寄存器,它允許微處理器116在任何時間獲得STC的當前內容。通過外部微總線124,微處理器116能用這個值初始化視頻解碼器或音頻解碼器的STC。
如上文所述,傳輸解碼器110包括一個10位的數字模擬轉換器(DAC)230,它在時鐘管理器218的時鐘校正控制回路中使用。DAC230是只讀的,也就是說,軟件在存儲器中存有最后載入DAC的值的副本。在運作中,DAC230被用于為外部諧振晶體電壓控制振蕩器VCXO122產生控制電壓。后者是系統時鐘頻率(名義上是27MHz)的來源。通過比較鎖存的PCR和STC值,軟件能確定本地時鐘信號是否需要校正。例如,軟件能獲取PCR和STC之間的差別,并將這個錯誤條件加到DAC230的輸入寄存器的當前內容中去。
總體來說,本發明的不連續部分包括以下內容1)通道數據處理器(CDP)210核查接收到的傳輸包中的同步字節,以使該包生效。傳輸處理器(TPROC)214對傳輸首部進行語法分析,并將包的有效內容傳送到存儲器中的適當位置。根據傳輸首部中的程序標識值,數據被發送到存儲器中的不同FIFO緩沖區(通道)中。
2)因為接收到的不連續性指示位不必和下一個PCR值在同一個包中,所以接收到下一個PCR值時,TPROC(214)將“擠載”時鐘管理器(218)中的計數器。
3)當包括一個流標識字節的下一個打包的基本流包被傳輸處理器214寫入存儲器控制器216中時,DMA_MARK信號變高。這就導致存儲器控制器216向微處理器116發出中斷并將打包的基本流包首部的地址儲存在一個輸入指針FIFO中。這個打包的基本流首部可能有一個時間標記(可能是解碼時間標記或顯示時間標記)。對來自存儲器控制器216的中斷作出響應的微處理器116在打包的基本流首部中搜索時間標記,一旦發現,就檢索時間標記值。
4)然后,微處理器116在時間標記值前略短于一幀的時間處設置一個定時器中斷。
5)當此定時器中斷發生時,微處理器116通過外部微總線124向視頻和音頻解碼器發送新的PCR值,從而給了解碼器足夠的時間處理數據。這種處理發生在時間標記與視頻或音頻解碼器中的計數器值比較之前,并且不會干擾與前一個PCR值相參照的數據的處理。視頻/音頻解碼器224、226、228如上文所述,一旦傳輸包被接收、處理和存儲起來,存儲器控制器216從存儲器114中讀出打包的基本流包,并將它們發送到外部視頻和音頻解碼器中。然而,在打包的基本流包到達外部解碼器(118和120)前,它們被內部視頻和音頻處理器(224、226和228)處理。
這些內部處理器的一個重要功能在于確保離開傳輸解碼器的數據流與外部解碼器兼容。也就是說,不同的外部解碼器有不同的數據需求。
例如,一些現在市場上可見的外部視頻解碼器能接受包括首部和有效部分的打包的基本流包流。這些流的形式主要與它被讀出存儲器時相同。另一方面,有些外部解碼器只能接受對基本流(例如,打包的基本流包的有效部分而非首部部分)的處理要求。另外,后一種類型的解碼器除了要求有數據流外,還要求相關的控制信息,如時間標記和字節計數等。由C-Cube制造的CL9100就是這樣一種視頻解碼器。在此特參考其規格說明——CL9100多模式視頻解碼器用戶手冊(94年10月)——加以介紹。由此,視頻處理器224可通過微處理器116進行設置,以格式化輸出的數據流,使之與選定的外部解碼器的要求兼容。
在處理C-Cube CL9100等外部視頻解碼器的接口方面,視頻處理器224對打包的基本流包的流進行處理,從而去除打包的基本流的首部并將時間標記信息從打包的基本流首部中取出來。另外,視頻處理器224通過使用計數器(圖中未給出),對發送給外部解碼器的打包的基本流包保持字節計數。那么,視頻處理器224包含時間標記信息,保持字節計數并將打包的基本流包的有效部分傳輸給外部視頻解碼器。為了獲得傳送給外部解碼器的時間標記和字節計數信息,視頻處理器224向微處理器116發出一個中斷。后者進行響應時,會通過內部微總線223從視頻處理器224中讀取時間標記和字節計數信息,并通過外部微總線124將這個控制信息發送到外部視頻解碼器中。
然而,有時在微處理器116能對來自視頻處理器224的中斷作出響應之前,另一個帶有時間標記信息的打包的基本流首部就到達了。例如,當微處理器116在很長的時間里被更高優先級的任務占用時,這種情況就可能發生。在這種情況下,視頻處理器224將時間標記信息和狀態一起儲存起來。具體來說,視頻處理器224會保存一個狀態寄存器,表明微處理器是否“丟失”了時間標記。在本發明的典型實施例中,微處理器116最后才開始讀取時間標記信息,如果它象狀態中表示的那樣丟失了一個或多個時間標記,那么它將只能恢復最新的時間標記。
另外,既然時間標記信息和字節計數信息將被提供給外部解碼器,那么當微處理器116丟失了一個時間標記時,視頻處理器224保持一種累積式的字節計數,因為許多數據標記可能在微處理器116讀取信息之前就到達了。然后,微處理器116讀取最新的時間標記和累積式的字節計數,并將這些信息發送到外部視頻解碼器中。接下來,狀態寄存器和字節計數器可以被重置。
如圖5A中的流程圖所示,接受到的數據的首部被分離并進行語法分析(步驟510)。時間標記信息被存儲并且字節計數被保存(步驟510),由視頻處理器224向微處理器116發出一個中斷,提醒它時間標記信息可供讀取(步驟514)。如果附加的時間標記信息在微處理器讀取前一個時間標記信息之前就已收到,新時間標記信息被存儲,字節計數器繼續積累(步驟516),視頻處理器224向微處理器116發出另一個中斷,否則,微處理器讀取狀態寄存器、時間標記信息和字節計數信息并將它發送到外部視頻解碼器中(步驟518)。
調節某個外部解碼器的另一個例子是使用位速率限制音頻解碼器,例如Zoran ZR38500 AC3音頻解碼器。在此特引用其技術說明書(1994年10月)以供參考。一般說來,大多數音頻解碼器提供一個數據請求,表明它們能接受音頻數據,然后傳輸解碼器110通過音頻處理器(226/228)提供音頻數據,直到外部音頻處理器取消此請求。換句話說,這里存在著一種信號交換機制。
然而,位速率限制解碼器,例如Zoran AC3音頻解碼器,要求音頻AC3數據能作為音頻數據幀發送,每一幀在首部中都包括一個幀時間和位速率。以高于預先確定的位速率發送數據可能會引起內部緩沖區溢出,從而導致數據丟失。進一步說,這些位速率限制解碼器并不提供數據就緒的信號以表明它們已經準備好接收附加的音頻數據。
所以,和視頻解碼器224一樣,音頻處理器226和228可被設置以調節選定的外部音頻解碼器。值得指出的是在本發明的典型實施例中,除非是對于微處理器116可以存取的地址,音頻處理器(226/228)在本質上是相同的。
因此,當音頻處理器(226/228)被編程用于與該類音頻解碼器接口時,它們假定解碼器一直在發送數據請求信號。然而,當打包的基本流包音頻數據從存儲器控制器216中提供給音頻處理器(226/228)時,接收到數據的打包的基本流首部被音頻處理器進行語法分析。音頻數據的幀大小和位速率被包含在經分析過的首部中。根據幀的大小和位速率,音頻處理器(226/228)能確定幀邊界(即幀時間)。有了幀時間信息,音頻處理器(226/228)設置幀定時器,使得音頻數據可用時,定時器被設定,一幀數據被觸發到外部音頻解碼器及音頻處理器(226/228)中,然后暫停,直到幀定時器超過時效。當定時器超過時效時,循環繼續下去,每次一個音頻幀,而另外的幀可用于向外部音頻解碼器中輸送附加幀。控制信息,例如時間標記,由微處理器恢復并通過外部微總線發送出去。
如圖5B中的流程圖所示,從存儲器中恢復打包的基本流包(步驟542),去除接收到數據的首部并進行語法分析(步驟530),確定一個幀時間(步驟532),定時器開始工作(步驟534),音頻處理器(226/228)觸發出一幀數據(步驟536),音頻處理器(226/228)暫停,直到定時器超過時效(步驟538),盡管如圖中所示,步驟542、530和532能在暫停期間執行。然后,此過程延續下去。
盡管在上述特定的實施例中,對跟蹤MPEG-2傳輸數據流不連續性的系統時間常數進行更新的方法和設備進行了描述。但本發明并不局限于所示的細節。另外,無需脫離權利要求的范疇和本發明的精神實質,可實現細節的多種變化。
權利要求
1.一種用于傳輸解碼器系統的方法,所述系統用于對傳輸數據流解碼,該數據流包括由首部和有效部分組成的傳輸包,首部包括不連續性指示位,所述系統包括至少一個緩沖區和至少一個解碼器,前者用于臨時存儲接收到的傳輸數據流,后者用于對來自緩沖區的數據輸出解碼供顯示之用,所述每個傳輸解碼器和解碼器都有各自的計數器,此方法用于在設定了不連續狀態后處理程序計數器參考(PCR)的接收,其特征在于包括以下步驟對接收到的傳輸包進行語法分析,并將數據存入存儲器;一旦接收到下一個PCR值,將接收到的程序計數器參考值載入傳輸解碼器計數器中;對PCR值之后接收并儲存在存儲器中的數據進行數據標記搜索并將檢索該數據標記值;基于檢索后的時間標記值設置定時器中斷;以及當定時器中斷發生時,將PCR值傳送給解碼器的計數器,從而為解碼器提供充足的時間處理數據。
2.根據權利要求1所述的方法,其中,在時間標記值之前不足一幀的時間處設置定時器中斷。
3.根據權利要求1所述的方法,其中的搜索的步驟包括一旦接收到含有時間標記值的傳輸包,中斷一臺主微控制器以發出與存儲的傳輸包相關的主微控制器地址信息;以及接著,在存儲的傳輸包的適當地址位置搜索時間標記值。
4.根據權利要求1所述的方法,還包括以下步驟在進行語法分析之前,通過確定接收到的傳輸包的邊界是否與預確定的包邊界符合使它們生效,并且只對生效的包進行語法分析。
5.根據權利要求4所述的方法,其中使接收到的傳輸包生效的步驟包括檢查接收到傳輸包中的同步位。
6.在用于接收傳輸數據流的系統中的一種處理不連續性指示位的接收的裝置,該數據流包括由首部和有效部分組成的傳輸包,首部包括不連續性指示位,所述系統包括至少一個緩沖區和至少一個解碼器,前者用于臨時存儲接收到的傳輸數據流,后者用于解碼來自緩沖區的數據輸出供顯示之用,所述每個傳輸解碼器和解碼器都有分離的計數器,所述裝置的特征在于包括接收和檢測不連續性指示位裝置;對傳輸包進行語法分析并將數據存儲在存儲器中的裝置;一旦接收到下一個程序計數器參考值,將接收到的程序計數器參考值載入傳輸解碼器計數器中的裝置;在存儲器中存儲的數據中搜索時間標記并在發現后檢索時間標記值的裝置;基于時間標記值設置定時器中斷的裝置;以及當定時器中斷發生時,將程序計數器參考值發送到該計數器的裝置。
7.在一個用于解碼傳輸數據流的傳輸解碼器系統中,該數據流包括由首部和有效部分組成的傳輸包,首部包括不連續性指示位,所述傳輸解碼器與至少一個外部解碼器配合以解碼來自傳輸解碼器的數據輸出,所述每個傳輸解碼器和外部解碼器都有分離的計數器以保持與數據流同步,一種處理不連續性指示位的接收的方法包括以下步驟接收不連續性指示位;對傳輸包進行語法分析并將數據存儲在存儲器中;一旦接收到下一個程序計數器參考值,將接收到的程序計數器參考值載入傳輸解碼器計數器中;在存儲器存儲的數據中搜索時間標記并在發現后檢索時間標記值;在時間標記值前大概一幀的時間處設置定時器中斷;以及當定時器中斷發生時,將程序計數器參考值發送到解碼器的計數器中,從而為解碼器提供充足的時間進行數據處理。
全文摘要
接收和處理使用MPEG-2格式的傳輸數據流的傳輸解碼器包括:與物理層通道接口的連接,緩沖存儲器,主微處理器,音頻和視頻解碼器,時鐘信號電路。收到不連續性指示位時對傳輸包首部進行語法分析并將有效部分存于存儲器。收到下一程序計數器參考(PCR)值時將其載入計數器。在存儲器內搜索時間標記,若發出則將其恢復。在時間標記值前約一幀時刻設置定時器中斷,該中斷發生時,程序計數器參考值被送往解碼器,為解碼器提供足夠數據處理時間。
文檔編號H04N7/52GK1173783SQ97103739
公開日1998年2月18日 申請日期1997年3月31日 優先權日1996年3月29日
發明者塞卜瑞舍·V·萊姆波利, 約瑟夫·P·奧哈拉, 愛德溫·羅伯特·梅依爾, 羅伯特·T·萊恩 申請人:松下電器產業株式會社