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