專利名稱::流水線的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于圖象處理
技術(shù)領(lǐng)域:
,涉及圖象傳送接收端的一種圖象解壓縮技術(shù),特別是關(guān)于一種流水線裝置及其方法。當(dāng)前的發(fā)明是為了改進(jìn)解壓縮地方法和裝置,它用于對(duì)按多種不同方式編碼的輸入信號(hào)進(jìn)行解壓縮和(或)解碼。為說明下文所選定的實(shí)施例涉及多種編碼圖象標(biāo)準(zhǔn)的解碼,特別是此實(shí)施方式涉及JPEG,MPEG和H.261中任意一種熟知的標(biāo)準(zhǔn)的解碼。本發(fā)明的串行流水線處理系統(tǒng)包含一個(gè)單一雙線(two_wire)總線,用于以控制令牌和數(shù)據(jù)令牌形式將唯一專用的交互接口令牌傳送到許多適應(yīng)解壓縮電路及類似物,形成一可重新配置的流水線處理器。美國(guó)專利No.5,216,724中描述了一個(gè)現(xiàn)有的技術(shù)系統(tǒng)。此裝置包含多個(gè)計(jì)算模塊,在一個(gè)優(yōu)選實(shí)施方式中總共有4個(gè)并行耦合的計(jì)算模塊。每一個(gè)這樣的計(jì)算模塊中有一處理器,雙通道存儲(chǔ)器,暫時(shí)(scratch-pad)存儲(chǔ)器,及一仲裁機(jī)構(gòu)。第一總線耦合計(jì)算模塊到主處理器,裝置包括一共享存貯器,它通過第二總線耦合到主處理器和計(jì)算模塊上。美國(guó)專利No.4,785,349公開了為傳送,為在小型盤(CD)介質(zhì)上記錄及以常規(guī)的視頻幀速率解碼的完整格式。在壓縮時(shí),一幀的各區(qū)域被單獨(dú)分析,以針對(duì)各個(gè)區(qū)域選擇優(yōu)化填充編碼(fillcoding)方法,區(qū)域解碼時(shí)間被估計(jì)出以優(yōu)化壓縮閾值。傳達(dá)區(qū)域大小和位置的區(qū)域描述碼組裝到數(shù)據(jù)流的第一分段。傳達(dá)表示區(qū)域象元幅度的區(qū)域填充碼,根據(jù)填充碼的類型組裝在一起并放到數(shù)據(jù)流的其它分段中。數(shù)據(jù)流分段按照各自的統(tǒng)計(jì)分布分別以可變長(zhǎng)編碼并被格式化形成數(shù)據(jù)幀。由于加入了輔助數(shù)據(jù),每幀的字節(jié)數(shù)目已失去意義,輔助數(shù)據(jù)通過倒轉(zhuǎn)幀序列分析而決定,以提供一個(gè)選擇的平均的數(shù)目使CD回放時(shí)有最小的停頓,從而繞過CD在尋找模式下延時(shí)周期特性的不可預(yù)測(cè)。解碼器包括可變長(zhǎng)解碼器,它對(duì)碼流中的統(tǒng)計(jì)信息敏感分別地可變長(zhǎng)解碼各個(gè)數(shù)據(jù)流分段。區(qū)域位置數(shù)據(jù)是來源于區(qū)域描述數(shù)據(jù),同時(shí)隨區(qū)域填充碼用于多個(gè)區(qū)域特定解碼器,這些解碼器通過檢測(cè)填充碼類型(例如,相對(duì)的、絕對(duì)的、二分(dyad)的和差分DPCM)來選擇,并且解碼的區(qū)域象元被存放于位圖中的便隨后的顯示。美國(guó)專利NO.4,922,341公開了場(chǎng)景模型援助(Soen-model-assisted)方法降低數(shù)字電視信號(hào)的圖象數(shù)據(jù),利用此方法,在某時(shí)刻提供的圖象信號(hào)被編碼,而在時(shí)刻t-1從場(chǎng)景來的已經(jīng)編碼的上一個(gè)幀,作為參考幀現(xiàn)出在圖象存貯器中,從而幀到幀的信息由一放大因子、一偏移因子及一適當(dāng)獲得的四叉樹分割結(jié)構(gòu)構(gòu)成。在初始化系統(tǒng)之后,一統(tǒng)一規(guī)定的灰度標(biāo)度值或表示定義的亮度值的圖象半色調(diào),被寫入發(fā)送器的編碼圖象存貯器及接收器存貯器的解碼圖象存貯器,以此相同的方式對(duì)全部象元進(jìn)行處理。編碼器的圖象存貯器和解碼器的圖象存貯器二者均以自身反饋方式操作,按此方式編碼器解碼器中圖象存貯器的內(nèi)容,能按可變大小的塊讀出,能以大于或小于1的亮度因子被放大,并且能以偏移地址寫回到圖象存貯器,借此,可變大小的塊按照四叉樹數(shù)據(jù)結(jié)構(gòu)得以組成。美國(guó)專利NO.5,122,875公開一HDTV(高清晰度電視)信號(hào)的編碼解碼裝置。此裝置包括對(duì)高清晰視頻源信號(hào)起作用的壓縮電路,以提供層次性地表示壓縮的視頻數(shù)據(jù)的分層碼字CW和定義由碼字CW表示的數(shù)據(jù)類型的相關(guān)碼字T。一優(yōu)先選擇電路對(duì)碼字CW和T發(fā)生作用,解析碼字CW分成高和低優(yōu)先碼字序列,這里高和低優(yōu)先碼字序列分別對(duì)應(yīng)圖象重現(xiàn)時(shí)相對(duì)重要性較高的較低的壓縮視頻數(shù)據(jù)。一輸送處理器,響應(yīng)高和低優(yōu)先碼字序列分別形成高和低優(yōu)先碼字的高和低優(yōu)先輸送塊,每一個(gè)輸送塊包含一個(gè)頭,碼字CW及錯(cuò)誤檢測(cè)校驗(yàn)位。各自的輸送塊送到前向錯(cuò)誤校驗(yàn)電路以便得到附加的錯(cuò)誤校驗(yàn)數(shù)據(jù)。而后,高和低優(yōu)先數(shù)據(jù)被送到調(diào)制器,在那里正交幅度調(diào)制上各自的載波以便傳送。美國(guó)專利NO.5,146,325公開一對(duì)壓縮了的圖象數(shù)據(jù)解碼縮的視頻解壓縮系統(tǒng)。在那里視頻信號(hào)的奇和偶場(chǎng)單獨(dú)地被壓縮成為基幀(intraframe)和中間幀(interframe)壓縮模型,然后交錯(cuò)傳送。奇和偶場(chǎng)被獨(dú)立地解壓縮。在間隔期中當(dāng)有效的解壓縮奇/偶場(chǎng)數(shù)據(jù)不能獲得時(shí),偶/奇場(chǎng)數(shù)據(jù)用來替代這不能獲得的奇/偶場(chǎng)數(shù)據(jù)。獨(dú)立地解壓縮偶和奇場(chǎng)數(shù)據(jù)及對(duì)不能獲得的數(shù)據(jù)進(jìn)行相對(duì)場(chǎng)的替代,可能降低圖象顯示延時(shí),在系統(tǒng)啟動(dòng)和改換通道時(shí)帶來好處。美國(guó)專利NO.5,168,356公開一視頻信號(hào)編碼系統(tǒng),它包括為信號(hào)傳輸,將編碼視頻數(shù)據(jù)分段形成輸送塊裝置,藉助提供頭數(shù)據(jù)的優(yōu)點(diǎn),輸送塊格式增強(qiáng)了在接收器中信號(hào)的恢復(fù)能力。當(dāng)出現(xiàn)傳送數(shù)據(jù)丟失或有錯(cuò)誤時(shí),從頭標(biāo)(Header)數(shù)據(jù),接收器能夠確定進(jìn)入數(shù)據(jù)流的重入點(diǎn)。通過在各個(gè)輸送塊的編碼視頻數(shù)據(jù)中嵌入輔助輸送頭標(biāo),重入點(diǎn)能最大限度地得以利用。美國(guó)專利NO.5,168,375公開一處理圖象數(shù)據(jù)采樣場(chǎng)的方法,它提供抽取(decimation)、內(nèi)插和銳化的一種或多種功能,這是依靠如同在JPEG壓縮系統(tǒng)中采用的矩陣變換處理器實(shí)現(xiàn)的。在抽取和內(nèi)插二種處理中,數(shù)據(jù)采樣塊通過離散偶余弦變換(DECT),此后頻率項(xiàng)數(shù)被改變。在抽取情況下頻率項(xiàng)數(shù)是減小,隨后由反變換生成一尺寸減小了的采樣點(diǎn)矩陣表示原始數(shù)據(jù)塊。在內(nèi)插情況下,附加的零值頻率分量被插入頻率分量矩陣,而后反變換生成一增大了的數(shù)據(jù)采樣集但不增加頻譜帶寬。在銳化情況下依靠卷積或?yàn)V波操作、包括頻域中數(shù)據(jù)的變換與濾波核相乘來完成。這里反變換被提供導(dǎo)致一處理過的采樣數(shù)據(jù)塊集,這些塊被重疊,接著是保存指定采樣和從重疊的區(qū)域中丟棄多余的采樣。為線性相位濾波,核的空間表示通過減少分量數(shù)而被修改,并且以0填充到等于數(shù)據(jù)塊的采樣的數(shù)目,隨后建立填充核矩陣的離散奇余弦變換(DOCT)。美國(guó)專利NO.5,175,617公開了通過限帶的模擬通道電話線傳送logmap視頻圖象的系統(tǒng)和方法。在logmap圖象中象元的組織被設(shè)計(jì)成與人眼傳感器幾何形狀態(tài)匹配,具有中心部位象元較為集中。發(fā)送器將頻帶分為一些通道,并且每個(gè)通道分配一或兩個(gè)象元。例如一3千赫聲音質(zhì)量的電話線按大約3.9赫茲間隔分為768個(gè)通道,每個(gè)通道包括兩個(gè)正交的載波,因而每通道可攜帶兩個(gè)象元。某些通道被保留為特別的定標(biāo)信號(hào),這些定標(biāo)信號(hào)使得接收器檢出收到信號(hào)的相位和幅度兩者。如果傳感器和象元被直接連結(jié)到一組振蕩器,并且接收器能連續(xù)地接收每個(gè)通道,則接收器不需要和發(fā)送器同步。一種FFT(快速富里葉變換)算法完成快速離散逼近于連續(xù)情況,在那里接收器同步于第一幀,而后每一幀周期獲得相繼的幀。幀周期比之于采樣周期是相對(duì)低的,所以一旦第一幀被檢出,接收器是很難丟失幀同步的。一個(gè)實(shí)驗(yàn)性的每秒4幀的視頻電話傳送,對(duì)1440象元Logmap圖象采用正交編碼,取得了超過每秒40,000位(bit)的有效數(shù)據(jù)傳輸率。美國(guó)專利NO.5,185,819公開了一視頻壓縮系統(tǒng),它具有奇場(chǎng)偶場(chǎng)視頻信號(hào),而它們被獨(dú)立地壓縮成基幀(intrafrme)序列和中間幀(inlerframe)序列的壓縮模式。獨(dú)立地被壓縮數(shù)據(jù)的奇場(chǎng)和偶場(chǎng)為傳輸而被交織,也就是基幀偶場(chǎng)壓縮數(shù)據(jù)出現(xiàn)在基幀奇場(chǎng)壓縮數(shù)據(jù)相繼場(chǎng)的中間。交織的序列供給接收器以兩倍數(shù)目的進(jìn)入點(diǎn)到信號(hào)中,為解碼但不增傳送數(shù)據(jù)總量。美國(guó)專利NO.5,212,742公開一個(gè)視頻數(shù)據(jù)實(shí)時(shí)壓縮/解壓縮處理的裝置和方法。此裝置包括多個(gè)計(jì)算模塊,在一優(yōu)選實(shí)施方式中,總數(shù)為4個(gè)計(jì)算模塊并行聯(lián)接,每個(gè)計(jì)算模塊有一處理器,雙通道存貯器,暫時(shí)(seratoh-pad)存貯器和一仲裁機(jī)構(gòu),第一總線連接計(jì)算模塊和主處理器。最后,此裝置包含一共享存貯器,它通過第二總線連到主處理器和計(jì)算模塊。此方法管理每個(gè)處理器操作的圖象分配部分。美國(guó)專利NO.5,231,484公開的為實(shí)現(xiàn)適用于建議的ISO/IECMPEG標(biāo)準(zhǔn)的編碼器的系統(tǒng)和方法,包括三個(gè)協(xié)同部分或子系統(tǒng),對(duì)進(jìn)入的數(shù)字運(yùn)動(dòng)視頻序列進(jìn)行不同的相應(yīng)予處理,對(duì)序列中的圖象分配二進(jìn)制位,以及在視頻序列中的不同圖象區(qū)域合適地量化變換系數(shù),以使分配給這圖象的位數(shù)能獲得最優(yōu)的視覺質(zhì)量。美國(guó)專利NO.5,267,334公開了在運(yùn)動(dòng)圖象序列的計(jì)算機(jī)系統(tǒng)中除去幀冗余的方法。此法包括檢測(cè)運(yùn)動(dòng)圖象序列中第一場(chǎng)景的變化,以及產(chǎn)生包含第一圖象完整場(chǎng)景信息的第一關(guān)鍵幀。在優(yōu)選實(shí)施方式中,這第一關(guān)鍵幀稱作“向前”(“forword-facing”)關(guān)鍵幀或者基幀(intraframe),并且通常以CCITT壓縮視頻數(shù)據(jù)形式而呈現(xiàn),而后壓縮處理,生成至少一個(gè)中間壓縮幀,此至少一幀的中間壓縮幀包含與第一圖象不同的信息,盡管在運(yùn)動(dòng)圖象序列中至少一幅圖象時(shí)間上緊跟這第一圖象。此至少一幀被稱為中間幀。最后,檢測(cè)運(yùn)動(dòng)圖象序列中的第二場(chǎng)景信號(hào)并產(chǎn)生第二關(guān)鍵幀,此關(guān)鍵幀包含的整個(gè)場(chǎng)景信息是為顯示正好在第二場(chǎng)景變化前一時(shí)間的圖象,此幀稱為“向后”(“backward-facing”)關(guān)鍵幀。第一關(guān)鍵幀和這至少一個(gè)的中間壓縮幀連在一起實(shí)現(xiàn)向前播放,而第二關(guān)鍵幀和中間壓縮幀反向連結(jié)為反向播放。當(dāng)圖象是前向播放時(shí),此基幀還可能被用于產(chǎn)生完整的場(chǎng)景信息。當(dāng)序列為反向演播時(shí),向后關(guān)鍵幀被用于產(chǎn)生完整的場(chǎng)景信息。美國(guó)專利NO.5,267,513公開了第一電路裝置,它包括給定數(shù)目的現(xiàn)有技術(shù)圖象金字塔(image-pyramid)級(jí),與包括同樣給定數(shù)目的新運(yùn)動(dòng)矢量級(jí)的第二電路裝置在一起,實(shí)現(xiàn)有效成本,具有最小的系統(tǒng)處理延遲和/或使用最小的系統(tǒng)延遲,和/或使用最小的硬件結(jié)構(gòu)的實(shí)時(shí)分層運(yùn)動(dòng)分析(HMA)。特別地,此第一和第二電路裝置響應(yīng)的是相對(duì)高清晰度的圖象數(shù)據(jù)。它來自一個(gè)以相對(duì)高的幀速率(例如,每秒30幀)發(fā)生的連續(xù)的給定象元-密度、圖象-數(shù)據(jù)幀的正在進(jìn)行的輸入序列,在一定的處理系統(tǒng)延遲后,得到一個(gè)以同樣鉿定幀速率發(fā)生的連續(xù)的給定象元-密度、向量-數(shù)據(jù)幀的正在進(jìn)行的輸出序列。每個(gè)向量-數(shù)據(jù)幀表明對(duì)連續(xù)圖象幀之間發(fā)生的圖象運(yùn)動(dòng)。美國(guó)專利NO.5,283,646公開了一個(gè)實(shí)現(xiàn)實(shí)時(shí)視頻編碼系統(tǒng)的方法和裝置。該系統(tǒng)能精確發(fā)出每幀需要的位數(shù),當(dāng)圖象只編碼一次時(shí),更新用于量化系數(shù)的量化步長(zhǎng),量化系數(shù)描述例如,一幅要在通信通道上傳送的圖象。數(shù)據(jù)分成段,每段包含許多塊。塊被編碼,例如,用DCT編碼,產(chǎn)生為每個(gè)塊的系數(shù)序列。這些系數(shù)可以被量化,根據(jù)量化步驟,描述數(shù)據(jù)要求的位數(shù)可以有很大的變化。在每段數(shù)據(jù)傳送結(jié)束時(shí),為了與特定數(shù)據(jù)組有聯(lián)系的已選擇的段數(shù),把累加的實(shí)際擴(kuò)充位數(shù)與累加的要求擴(kuò)充數(shù)相比較。然后系統(tǒng)以許多段,例如描述一幅圖象,所需的數(shù)據(jù)位數(shù)為目標(biāo)重新調(diào)節(jié)量化步長(zhǎng)。對(duì)更新量化步長(zhǎng)和決定要求的位的分配可以有各種描述方法。Chong,YongM.寫的論文,為數(shù)字圖象處理的一個(gè)數(shù)據(jù)流結(jié)構(gòu),Wescon技術(shù)論文集NO.210月/11月1984,公開了一個(gè)為圖象處理特別設(shè)計(jì)的實(shí)時(shí)信號(hào)處理系統(tǒng)。更特別地,公開了一個(gè)基于令牌的數(shù)據(jù)流結(jié)構(gòu),在那里令牌寬度固定為一個(gè)字,有一固定寬度地址字段。系統(tǒng)包含連結(jié)成環(huán)狀的許多同樣的流處理器。令牌包含一個(gè)數(shù)據(jù)字段,一個(gè)控制字段和一個(gè)標(biāo)記。令牌的標(biāo)記字段進(jìn)一步分為處理器字段和識(shí)別字段。處理器字段用來指引令牌到正確的數(shù)據(jù)流處理器,而識(shí)別字段用來標(biāo)明數(shù)據(jù)使數(shù)據(jù)流處理器知道對(duì)數(shù)據(jù)做什么。在這種方式,識(shí)別字段對(duì)數(shù)據(jù)流處理器起指令的作用。系統(tǒng)用模塊號(hào)(MN)指引每個(gè)令牌到一指定數(shù)據(jù)流處理器。如果MN與特定級(jí)的MN匹配,則對(duì)數(shù)據(jù)執(zhí)行合適的操作。如果不被識(shí)別,令牌被指引到輸出數(shù)據(jù)總線。論文,Kimori,s.etal.一個(gè)用自定時(shí)線路的靈活的流水線裝置作用原理機(jī)理,IEEEJ.固態(tài)線路,Vol23,NO.1,1988年2月,公開了一個(gè)有自定時(shí)線路的靈活的流水線。這個(gè)異步流水線由許多流水線級(jí)組成。每個(gè)流水線包含許多流水線級(jí)。每個(gè)流水線級(jí)包含一組輸入數(shù)據(jù)鎖存器,后面跟著執(zhí)行對(duì)該流水線特定邏輯操作的組合邏輯電路。一些數(shù)據(jù)鎖存器和與該級(jí)有聯(lián)系的數(shù)據(jù)傳送控制線路產(chǎn)生的一個(gè)觸發(fā)信號(hào)同時(shí)被提供。數(shù)據(jù)傳送控制線路內(nèi)部連結(jié)形成一條鏈,發(fā)送和接收信號(hào)線路通過此鏈控制連續(xù)流水線級(jí)之間的互連信號(hào)方式數(shù)據(jù)傳送。此外,通常在每級(jí)中提供一解碼器以選擇將要在本級(jí)運(yùn)算域上完成的操作。還可以在前一級(jí)中布置一解碼器,以預(yù)解碼復(fù)雜的解碼處理,并緩和邏輯電路的critical臨界路徑問題。流水線的靈活性消除了任何集中控制,因?yàn)樽幽K間的所有互相配合由一完全局部分的決定來確定,此外,每個(gè)子模塊可以在同一時(shí)間自發(fā)完成數(shù)據(jù)緩沖和自定時(shí)數(shù)據(jù)傳送控制。最后,為增加流水線的靈活性,在已使用的級(jí)之間穿插了空級(jí),以保證級(jí)之間的數(shù)據(jù)傳送是可靠的。本發(fā)明涉及一個(gè)改進(jìn)的流水線系統(tǒng),該系統(tǒng)有一個(gè)輸入,一個(gè)輸出和在輸入輸出之間的許多處理級(jí),這許多處理級(jí)用兩線接口內(nèi)部連結(jié),為了沿流水線傳送令牌和通用的匹配單元形式的控制令牌和/或數(shù)據(jù)令牌,為了與流水線中所有的級(jí)接口以及與流水線中選定的級(jí)交互,為了在處理級(jí)中的控制數(shù)據(jù)和/或組合的控制-數(shù)據(jù)功能,使得在流水線中的處理級(jí)在配置和處理方面增強(qiáng)了靈活性。根據(jù)本發(fā)明,一些處理級(jí)在響應(yīng)至少一個(gè)令牌的識(shí)別時(shí)可以被重新配置。舉例和進(jìn)一步說明本發(fā)明,現(xiàn)在要參考圖來描述。附圖的說明圖1所示為對(duì)2種內(nèi)部控制信號(hào)的不同組合的6級(jí)流水線的6個(gè)周期;圖2a和2b圖示了一流水線,其中每一步包括輔助數(shù)據(jù)存貯器。它們還給出一種方式,在這種方式中流水線的級(jí)隨在流水線中的延遲而能“壓縮”和“擴(kuò)展”;圖3a(1),3a(2),3b(1),3b(2)示出使用雙線接口和多相時(shí)鐘的優(yōu)選實(shí)施例的流水線級(jí)之間數(shù)據(jù)傳送控制;圖4是一個(gè)方框圖,這圖顯示出引入一雙線傳輸控制的流水線級(jí)的基本實(shí)施例,并且還顯示2個(gè)具有二線傳送控制的2個(gè)連貫流水線處理級(jí);圖5a和5b合起來描述一時(shí)序圖的例子,這圖顯示了在定時(shí)信號(hào),輸入和輸出數(shù)據(jù)以及用于圖4所示流水線級(jí)中內(nèi)部控制信號(hào)之間的關(guān)系;圖6是一流水線級(jí)的例子的框圖,它在擴(kuò)充位的控制下保持它的狀態(tài);圖7是流水線級(jí)的方框圖,這些流水線級(jí)解碼級(jí)的激活數(shù)據(jù)字;圖8a、8b共同形成方框圖,顯示在“數(shù)據(jù)復(fù)制(dataduplica-tion)”流水線級(jí)例子中雙線傳送控制的使用;圖9a、9b共同描述時(shí)序圖的一個(gè)例子,這圖顯示雙相時(shí)鐘,雙線傳輸控制信號(hào)及用在圖8a、8b實(shí)施例中其它內(nèi)部數(shù)據(jù)和控制信號(hào);圖10是一個(gè)可重新組合處理級(jí)的方框圖11是空間解碼器方框圖12是時(shí)間解碼器方框圖13是視頻格式器方框圖14a~c顯示用在本發(fā)明中存貯器塊的各種排列圖14a是存貯器變換圖,它顯示了宏塊的第一種排列;圖14b是存貯器變換器,它顯示了宏塊的第二種排列;圖14c是存貯器變換圖,它顯示了宏塊的另外一種排列;圖15顯示了文氏圖的可能表選擇值;圖16顯示了用在本發(fā)明中圖象數(shù)據(jù)的可變長(zhǎng)度;圖17為包括預(yù)測(cè)濾波器的時(shí)間解碼器的方框圖18是預(yù)測(cè)濾波過程圖示的表示;圖19為宏塊結(jié)構(gòu)的一般表示;圖20顯示了起始碼檢測(cè)器的一般框圖21說明在數(shù)據(jù)流中數(shù)據(jù)碼的例子;圖22是描述標(biāo)記發(fā)生器,解碼指針,頭標(biāo)發(fā)生器,外加字發(fā)生器和輸出鎖存器之間關(guān)系的方框圖23是空間解碼器DRAM接口的方框圖24是寫交替緩沖器的方框圖25是說明從正被處理塊預(yù)測(cè)數(shù)據(jù)偏移的示意圖26是說明預(yù)測(cè)數(shù)據(jù)偏移了(1,1)的示意圖27是說明霍爾曼解碼器及空間解碼器的分析程序狀態(tài)機(jī)的框圖28是說明預(yù)測(cè)濾波框圖29顯示典型的解碼系統(tǒng);圖30顯示了JPEG靜止圖象解碼器;圖31顯示了JPEG視頻解碼器;圖32顯示了多標(biāo)準(zhǔn)視頻解碼器;圖33顯示了令牌的起始和結(jié)束;圖34顯示了令牌地址和數(shù)據(jù)域;圖35顯示了在接口上超過8位寬的令牌;圖36顯示了宏塊結(jié)構(gòu);圖37顯示了雙線接口協(xié)議;圖38顯示了外部的雙線接口的位置;圖39顯示了時(shí)鐘分析圖40顯示了雙線接口時(shí)序;圖41顯示了存取結(jié)構(gòu)例子;圖42顯示了讀傳送周期;圖43顯示了存取起始時(shí)序;圖44顯示了用2個(gè)寫傳送的存取例子;圖45顯示了讀傳送周期;圖46顯示了寫傳送周期;圖47顯示了刷新周期;圖48顯示了一個(gè)32位數(shù)據(jù)總線及256k位深的DRAM(9位行地址);圖49顯示了任何選通信號(hào)的定時(shí)參數(shù);圖50顯示了任何二個(gè)選通信號(hào)間的定時(shí)參數(shù);圖51顯示了總線和選通之間的定時(shí)參數(shù);圖52顯示了總線和選通之間的定時(shí)參數(shù);圖53顯示了MPI讀時(shí)序;圖54顯示了MPI寫時(shí)序;圖55顯示了在存貯器變換圖中大量整數(shù)的組織;圖56顯示了典型的解碼時(shí)鐘方式;圖57顯示了輸入時(shí)鐘要求;圖58顯示了空間解碼器;圖59顯示了輸入電路的輸入和輸出;圖60顯示了編碼端口的協(xié)議;圖61顯示了起始碼檢測(cè)器;圖62顯示了起始碼的檢測(cè)及轉(zhuǎn)換成令牌;圖63顯示了起始碼檢器傳遞令牌;圖64顯示了重迭MPEG起始碼(字節(jié)定位);圖65顯示了重迭MPEG起始碼(非字節(jié)定位);圖66顯示了二個(gè)視頻序列之間的跳轉(zhuǎn);圖67顯示了附加令牌插入的序列;圖68顯示了解碼器啟動(dòng)控制;圖69顯示了輸出以前允許數(shù)據(jù)流排隊(duì);圖70顯示空間解碼器緩沖器;圖71顯示了緩沖器指針;圖72顯示了視頻分解器;圖73顯示了一圖象的結(jié)構(gòu);圖74顯示了一個(gè)422宏塊的結(jié)構(gòu);圖75顯示了從pelones計(jì)算宏塊尺寸;圖76顯示了空間解碼;圖77顯示了H.261逆量化的概觀;圖78顯示了JPEG逆量化的概觀;圖79顯示了MPEG逆量化的概觀;圖80顯示了量化表的存貯器變換;圖81顯示了JPEG基線序列結(jié)構(gòu)的概觀;圖82顯示了令牌化的JPEG圖象;圖83顯示了時(shí)間解碼器;圖84顯示了圖象緩沖器說明;圖85顯示了MPEG圖象序列(m=3);圖86顯示了“I”圖象如何存貯和輸出;圖87顯示了“P”圖象如何形成,存儲(chǔ)和輸出;圖88顯示了“B”圖象如何形成和輸出;圖89顯示了“P”圖象格式;圖90顯示了H.261預(yù)測(cè)格式;圖91顯示了H.261“序列”;圖92顯示了H.261句法層次;圖93顯示了H.261圖象層;圖94顯示了H.261塊組的排列;圖95顯示了H.261“片”層;圖96顯示了H.261宏塊的排列;圖97顯示了H.261塊的序列;圖98顯示了H.261宏塊層;圖99顯示了H.261在塊中象元的排列;圖100顯示了MPEG句法的層次性;圖101顯示了MPEG序列層;圖102顯示圖象層的MPEG組;圖103顯示了MPEG圖象層;圖104顯示了MPEG“片”層;圖105顯示了MPEG塊的序列;圖106顯示了MPEG宏塊層;圖107顯示了“OPENGOP”;圖108顯示了存取結(jié)構(gòu)的例子;圖109顯示了存取起始時(shí)序;圖110顯示了一快頁讀周期;圖111顯示了一快頁寫周期;圖112顯示了刷新周期;圖113顯示了從芯片地址中抽取行和列地址;圖114顯示了任何選通信號(hào)的定時(shí)參數(shù);圖115顯示了任何兩個(gè)選通信號(hào)間的定時(shí)參數(shù);圖116顯示了總線和選通間的定時(shí)參數(shù);圖117顯示了一總線和選通之間的定時(shí)參數(shù);圖118顯示了霍爾曼解碼器和分析器;圖119顯示了H.261和MPEGAC系數(shù)解碼流程圖120顯示了JPEG(AC和DC)系數(shù)解碼方框圖121顯示了JPEG(AC和DC)系數(shù)解碼流程圖122顯示了霍爾曼令牌格式器;圖123顯示了令牌格式器方框圖124顯示了H.261和MPEGAC系數(shù)解碼;圖125顯示了霍爾曼ALU的接口;圖126顯示了霍爾曼ALU的基本結(jié)構(gòu);圖127顯示了緩沖器管理器;圖128顯示了imodel和hsppk的方塊圖129顯示了imex狀態(tài)圖130說明緩沖器的啟動(dòng);圖131顯示一DRAM接口;圖132顯示了寫交替緩沖器;圖133顯示了一個(gè)算術(shù)塊;圖134顯示了iq塊圖135顯示了iqca狀態(tài)機(jī);圖136顯示了IDCT一維變換算法;圖137顯示了一IDCT一維變換結(jié)構(gòu);圖138顯示了一令牌流方塊圖139顯示了一標(biāo)準(zhǔn)塊的結(jié)構(gòu);圖140是微處理器測(cè)試存取方塊圖141顯示了一維變換宏結(jié)構(gòu);圖142顯示了一時(shí)間譯碼器方塊圖143顯示了一雙線接口級(jí)的結(jié)構(gòu);圖144顯示了地址發(fā)生器方塊圖145顯示了塊的象素偏移;圖146顯示了多路預(yù)測(cè)濾波器;圖147顯示了單個(gè)預(yù)測(cè)濾波器;圖148顯示了一維預(yù)測(cè)濾波器;圖149顯示了象素的塊;圖150顯示了讀指針的結(jié)構(gòu);圖151顯示了塊和象素偏離;圖152顯示了預(yù)測(cè)例子;圖153顯示了讀周期;圖154顯示了寫周期;圖155顯示了使用定時(shí)基準(zhǔn)的頂層寄存器的方塊圖156顯示了增加呈現(xiàn)號(hào)的控制;圖157顯示了緩沖器管理狀態(tài)機(jī)(完全);圖158顯示了狀態(tài)機(jī)的主循環(huán);圖159顯示了包括SIF圖象的緩沖器0(22×18宏塊);圖160顯示了帶有顯示窗口的SIF分量0;圖161顯示了顯示存貯塊地址一個(gè)例子的圖象格式;圖162顯示了包括SIF圖象的緩沖器0(22×18宏塊);圖163顯示了一地址計(jì)算例子;圖164顯示了一寫地址發(fā)生器狀態(tài)機(jī);圖165顯示了數(shù)據(jù)通路的分割;圖166顯示了數(shù)據(jù)通路的二個(gè)周期的操作;圖167顯示了方式1進(jìn)行濾波;圖168顯示了水平上采樣器數(shù)據(jù)通路;圖169顯示了彩色空間轉(zhuǎn)換器的結(jié)構(gòu)。發(fā)明的簡(jiǎn)要說明簡(jiǎn)要地用普通術(shù)語來說,本發(fā)明提供一個(gè)輸入,一個(gè)輸出和輸入輸出之間的許多處理級(jí)。這許多處理級(jí)用兩線接口內(nèi)部連結(jié),為了沿流水線傳送令牌和通用的匹配單元形式的控制令牌和/或數(shù)據(jù)令牌,為了與流水線中所有的級(jí)接口和與流水線中選定的級(jí)交互,為了在處理級(jí)中的控制數(shù)據(jù)和/或結(jié)合的控制-數(shù)據(jù)功能,利用這些流水線中的處理級(jí)在配置和處理方面增強(qiáng)了靈活性。流水線中每個(gè)處理級(jí)可包含主要的和輔助的存儲(chǔ)器兩者。流水線中的級(jí)根據(jù)被選中令牌的識(shí)別可以重配置。流水線中的一些令牌是動(dòng)態(tài)自適應(yīng)的,為了完成功能,位置可與處理級(jí)有關(guān)也可無關(guān)。根據(jù)本發(fā)明,在一流水線機(jī)器中,一些令牌可以被一些級(jí)的接口改變,一些令牌可以與流水線中所有的處理級(jí)交互,或者僅和上述的某些處理級(jí)交互,而不是全部。流水線中的令牌可以與相鄰處理級(jí)交互,或者與不相鄰處理級(jí)交互,并且令牌可以重配置處理級(jí)。在流水線中這些令牌對(duì)某些功能可以是位置有關(guān)的,對(duì)另一些功能可以是位置無關(guān)的。令牌和可重配置處理級(jí)結(jié)合,提供流水線系統(tǒng)的基本結(jié)構(gòu)單元。令牌與流水線中的一個(gè)處理級(jí)交互可以由該處理級(jí)以前的處理歷史決定。令牌可以用地址字段表明它的特征,而與一個(gè)處理級(jí)的交互可以用這些地址字段決定。根據(jù)本發(fā)明,在一個(gè)改進(jìn)的流水線機(jī)器中,這些令牌可以為每個(gè)令牌包含一個(gè)擴(kuò)展位,擴(kuò)展位表明在那個(gè)令牌中存在附加的一些字,并標(biāo)記那個(gè)令牌最后的字。地址字段長(zhǎng)度可變,也可以是Huffman編碼。在改進(jìn)的流水線機(jī)器中令牌可以被處理級(jí)產(chǎn)生。令牌可以包括傳送到處理級(jí)的數(shù)據(jù),也可以沒有數(shù)據(jù)。某些令牌可以被識(shí)別為數(shù)據(jù)令牌,提供數(shù)據(jù)給流水線中的處理級(jí),而另一些令牌被識(shí)別為控制令牌,只使流水線中的處理級(jí)達(dá)到所要求的規(guī)定,這些規(guī)定包括處理級(jí)的重新配置。還有一些令牌可以對(duì)流水線中的處理級(jí)提供數(shù)據(jù)和規(guī)定兩者。上述的某些令牌可以識(shí)別對(duì)流水線中處理級(jí)的編碼標(biāo)準(zhǔn),而另一些令牌可以在處理級(jí)中與任何編碼標(biāo)準(zhǔn)無關(guān)地工作。令牌能夠被流水線中的處理級(jí)連續(xù)地改變。根據(jù)本發(fā)明,流水線中固有的結(jié)構(gòu)因令牌的交互靈活性和處理級(jí)協(xié)作使處理級(jí)更多功能的多樣化變得容易,令牌的靈活性使系統(tǒng)擴(kuò)充和/或改變變得容易。令牌可以有能力使流水線中任何處理級(jí)內(nèi)的許多功能變得方便。流水線令牌可以基于硬件或軟件。因此,令牌方便了流水線中系統(tǒng)帶寬的更有效的利用。令牌可以對(duì)流水線中的處理級(jí)同時(shí)提供數(shù)據(jù)和控制。本發(fā)明可包括一個(gè)流水線處理機(jī),為了處理已安排成數(shù)字位單個(gè)串行位流的許多獨(dú)立編碼的位流,處理機(jī)有一些獨(dú)立編碼的控制碼對(duì)和串行位流中攜帶的相應(yīng)的數(shù)據(jù),并使用許多由兩線接口作內(nèi)部連接的級(jí)。處理機(jī)進(jìn)一步的特征用起始碼檢測(cè)器表示,檢測(cè)器響應(yīng)單個(gè)串行位流產(chǎn)生應(yīng)用于兩線接口的控制令牌和數(shù)據(jù)令牌,用一個(gè)放在某些級(jí)的令牌解碼線路來識(shí)別某些令牌作為適合于那級(jí)的控制令牌,使不被識(shí)別的令牌沿流水線通過,并且一個(gè)可重配置的解碼和分析處理裝置,響應(yīng)一個(gè)已識(shí)別的令牌,重新配置一特定級(jí)去處理一個(gè)已識(shí)別的數(shù)據(jù)令牌。流水線機(jī)也可以包含第一和第二寄存器,第一寄存器放在作為解碼和分析裝置輸入的位置,第二寄存器放在作為解碼和分析裝置輸出的位置。處理級(jí)之一可以是一個(gè)空間解碼器,第二級(jí)是一令牌發(fā)生器,用于產(chǎn)生沿兩線接口通過的控制令牌和數(shù)據(jù)令牌。一個(gè)令牌解碼裝置放在空間解碼器中為了識(shí)別某些令牌作為適合空間解碼器的控制令牌,并為了重新配置空間解碼器對(duì)跟在控制令牌后面的數(shù)據(jù)令牌進(jìn)行空間解碼使成為第一已解碼格式。一個(gè)另外的級(jí)可以是時(shí)間解碼器,位于流水線中空間解碼器的下游,用一個(gè)放在時(shí)間解碼器中的第二令牌解碼裝置去識(shí)別那些適合作為時(shí)間解碼器控制的令牌,把跟在控制令牌后面的數(shù)據(jù)令牌進(jìn)行時(shí)間解碼使成為第一解碼格式。時(shí)間解碼器可利用一個(gè)可重新配置預(yù)測(cè)濾波器。用預(yù)測(cè)令牌可重新配置預(yù)測(cè)濾波器。數(shù)據(jù)可以8×8數(shù)據(jù)塊為單位在時(shí)間解碼器內(nèi)沿兩線接口移動(dòng),為了沿塊邊界檢索和存貯數(shù)據(jù)塊提供地址裝置,地址裝置可以越過塊邊界存貯和檢索數(shù)據(jù)塊。地址裝置重新安排上述的一些塊作為顯示用的圖象數(shù)據(jù)。這些被存貯和檢索的數(shù)據(jù)塊可大于和/或小于8×8象素?cái)?shù)據(jù)塊。也可以提供把時(shí)間解碼器的輸出顯示或?qū)懟氐揭粋€(gè)圖象存儲(chǔ)單元的線路裝置。解碼格式可以是靜止圖象格式或運(yùn)動(dòng)圖象格式。以上所說和本發(fā)明的其它目的和優(yōu)點(diǎn)通過下面更詳細(xì)的描述會(huì)變得顯而易見。在本發(fā)明的實(shí)施的后面的說明中,下列條目是頻繁使用的,所以對(duì)下面的詞匯表作一般性定義詞匯表塊一個(gè)8行×8列象素矩陣或64DCT系數(shù)(源,量化或反量化)。色度(分量)表示二種色差信號(hào)之一同在位流中所定義狀態(tài)內(nèi)的基色有關(guān)的矩陣、塊或單個(gè)象素,色差信號(hào)用符號(hào)Cr和Cb表示。編碼的表示一個(gè)數(shù)據(jù)元素在它的編碼形式內(nèi)的表示。編碼的視頻位流在本說明中所定義的系列一幅或多幅圖象的編碼表示。編碼的次序列圖象傳送和解碼的次序。這個(gè)次序不需要同顯示次序相同。分量矩陣、塊或信號(hào)象素,它的來自形成圖象的3個(gè)矩陣(亮度和2個(gè)色度)中一個(gè)。壓縮減少位數(shù)用以表示數(shù)據(jù)項(xiàng)。解碼器一個(gè)解碼處理的實(shí)體。解碼(處理)本說明所定義的處理是讀輸入編碼位流并生成解碼圖象或音頻采樣。顯示次序所顯示解碼圖象次序。一般,這同解碼器的輸入中表示的次序相同。編碼(處理)一種處理,在本說明中沒有詳細(xì)說明。讀輸入圖象或音頻采樣的流并生成一個(gè)如本說明所定義的有效編碼位流?;幋a宏塊和圖象的編碼所用信息僅來自宏塊和圖象。亮度(分量)表示單色表示的信號(hào)同在位流中所定義方式下的基色的關(guān)系的矩陣,塊或單個(gè)的象素,亮度用符號(hào)Y表示。宏塊4個(gè)8×8亮度數(shù)據(jù)塊及2個(gè)(為420色度格式)4個(gè)(為422色度格式)或8個(gè)(為444色度格式)相當(dāng)于8×8色度數(shù)據(jù)塊來自圖象亮度成份的16×16部分,宏塊在某些時(shí)候指象素?cái)?shù)據(jù),某些時(shí)候指象數(shù)值及本說明部分定義的句法的宏塊頭標(biāo)中所立定的其它數(shù)據(jù),對(duì)于一位具有本領(lǐng)域一般技巧者,從上下文看其用法是清楚的。運(yùn)動(dòng)補(bǔ)償使用運(yùn)動(dòng)矢量是為了改進(jìn)象素值的預(yù)測(cè)效率,預(yù)測(cè)是用運(yùn)動(dòng)矢量給過去的和/或?qū)韰⒖紙D象提供偏置。參考圖象包括前面的用于形成預(yù)測(cè)錯(cuò)誤信號(hào)的解碼象素值。運(yùn)動(dòng)矢量用于運(yùn)動(dòng)補(bǔ)償?shù)亩S矢量,為此提供一從當(dāng)前圖象中坐標(biāo)位置到參考圖象中的坐標(biāo)的偏置。非基編碼宏塊或圖象的編碼既用自己的信息亦用發(fā)生在其它時(shí)間的宏塊和圖象的信息。象素圖象的元素。圖象原始的,編碼或重構(gòu)的圖象數(shù)據(jù)。原始的或重構(gòu)的圖象由3個(gè)表亮度和2個(gè)色度信號(hào)的8位數(shù)矩形矩陣組成,對(duì)逐行視頻一個(gè)圖象等同于一幀,而對(duì)隔行視頻,一個(gè)圖象能以一幀來表示或者根據(jù)其前后關(guān)系,表示成一幀的頂場(chǎng)或底場(chǎng)。預(yù)測(cè)用一預(yù)測(cè)器來提供象素值或當(dāng)前解碼的數(shù)據(jù)元素的估計(jì)??芍貥?gòu)的處理級(jí)(RPS)是一個(gè)步級(jí),在此級(jí)中響應(yīng)于識(shí)別的令牌重構(gòu)自身以實(shí)現(xiàn)各種操作。一系列宏塊令牌一通用適匹單元,它以交互接口信息包的形式表示控制和/或數(shù)據(jù)功能。起始碼(系統(tǒng)和視頻)嵌入在編碼位流中的唯一32位碼。它們用作幾個(gè)目的,包括在編碼句法中某些結(jié)構(gòu)的標(biāo)識(shí)??勺冮L(zhǎng)度編碼;VLC對(duì)編碼的可述過程對(duì)頻度高的事件賦給較短的編碼字,而對(duì)頻度數(shù)低的事件賦給較長(zhǎng)的編碼字。視頻順序一系列的一個(gè)或多個(gè)圖象。實(shí)施例的詳細(xì)說明作為本發(fā)明的優(yōu)選實(shí)例中所用的流水線系統(tǒng)的最基本特征的說明,圖1是大大簡(jiǎn)化的六級(jí)流水線的六周期的實(shí)例圖。(如下面更詳細(xì)地說明所述,此流水線的優(yōu)選實(shí)施例包括若干圖1中未示出的有益的特征)?,F(xiàn)在參看附圖,其中同樣的參考數(shù)字在附圖的各個(gè)圖中代表同樣的或相應(yīng)的元件,特別是圖1示出本發(fā)明實(shí)例中六周期的方框圖。每行邏輯框例示出一周期,每個(gè)不同的級(jí)分別用A~F標(biāo)記。每個(gè)陰影邏輯框表明相應(yīng)的級(jí)保持有效數(shù)據(jù),即在一個(gè)流水線級(jí)中被處理的數(shù)據(jù)。在處理(可以包括只不過是不進(jìn)行數(shù)據(jù)計(jì)算的簡(jiǎn)單傳輸)后,有效數(shù)據(jù)作為有效輸出數(shù)據(jù)被輸送出。應(yīng)注意,實(shí)際流水線應(yīng)用可以多于或小于六個(gè)流水線級(jí)。應(yīng)理解為本發(fā)明可以應(yīng)用任意數(shù)量的流水線級(jí)。因此,數(shù)據(jù)可以在多級(jí)中進(jìn)行處理,不同級(jí)的處理時(shí)間可以不同。除了時(shí)鐘和數(shù)據(jù)信號(hào)(下面將說明)外,流水線包括二個(gè)傳輸控制信號(hào)-“有效”信號(hào)和“接收”信號(hào)。這些信號(hào)用以控制流水線中數(shù)據(jù)的傳輸。圖例中作為連接相鄰級(jí)的兩行中的上游的有效信號(hào)沿向前或向下方向從每個(gè)流水線級(jí)通過并到達(dá)最接近的相鄰裝置。此裝置可以是另外的流水線級(jí)或某些其它系統(tǒng)。例如,最終的流水線級(jí)可以將其數(shù)據(jù)傳到下面的處理電路。圖例中作為連接相鄰級(jí)二行中下游的接收信號(hào),沿其它向上的方向通過并達(dá)到上一裝置。本發(fā)明實(shí)際使用的典型的數(shù)據(jù)流水線系統(tǒng)在優(yōu)選實(shí)施例中有如下的一個(gè)或多個(gè)特征1、此流水線是“有伸縮性”的,以致在特定流水線級(jí)上的延遲對(duì)其它流水線級(jí)的可能干擾最小。隨后的流水線級(jí)能繼續(xù)處理,這就意味著在延遲級(jí)之后的數(shù)據(jù)流中,間斷打通了。同樣,上述流水線級(jí)也可以在可能處繼續(xù)工作。在這種情況下,數(shù)據(jù)流中任何間斷可以在凡是可能的地方從數(shù)據(jù)流中去掉。2、調(diào)停流水線的控制信號(hào)是這樣組織的它們僅傳播到最接近的鄰近流水線級(jí)。對(duì)于流動(dòng)方向與數(shù)據(jù)流相同的信號(hào)來說,這是緊接著的下一級(jí)。對(duì)于與數(shù)據(jù)流流動(dòng)方向相反的信號(hào)來說,這是緊接著的上一級(jí)。3、流水線中的數(shù)據(jù)被這樣地編碼,使得在流水線中可處理許多不同類型的數(shù)據(jù)。這種編碼適合于可變大小的數(shù)據(jù)包而不必預(yù)先知道包的大小。4、與說明數(shù)據(jù)類型有關(guān)的輔助操作盡可能地小。5、對(duì)每個(gè)流水線級(jí)來說,僅識(shí)別其所要求功能所需要的最少數(shù)目的數(shù)據(jù)類型是可能的。然而,它還應(yīng)能將所有數(shù)據(jù)類型傳給下一級(jí),盡管它未識(shí)別它們。這就使不相鄰的流水線級(jí)之間的通信成為可能。雖然在圖1中未示出,但有一些數(shù)據(jù)線,即單線或若干平行線,它們形成也從每個(gè)流水線級(jí)引入和引出的數(shù)據(jù)母線。如下面更詳細(xì)地舉例說明那樣,在這些數(shù)據(jù)線上,數(shù)據(jù)傳輸進(jìn)、傳輸出流水線級(jí)和在流水線級(jí)之間傳輸。應(yīng)當(dāng)指出,第一流水線級(jí)可以由任何形式的上述裝置接收數(shù)據(jù)和控制信號(hào)。例如,數(shù)字圖象傳輸系統(tǒng)的接收電路、其它的流水線或類似裝置。另一方面,它自身可產(chǎn)生在流水線中被處理的全部數(shù)據(jù)或部分?jǐn)?shù)據(jù)。實(shí)際上如下所述,“級(jí)”可以包括任意處理電路,所說的處理電路包括根本沒有系統(tǒng)(只是為了通過數(shù)據(jù))或全部系統(tǒng)(例如,另一個(gè)流水線甚至多個(gè)系統(tǒng)或多個(gè)流水線),而且它可以產(chǎn)生、改變和刪除所要求的數(shù)據(jù)。當(dāng)流水線級(jí)包括沿流水線向下傳輸?shù)挠行?shù)據(jù)時(shí),表明數(shù)據(jù)有效性的VALID(有效)信號(hào)只需要再傳輸?shù)阶罱咏南乱涣魉€級(jí),而不必傳得更遠(yuǎn)。因此,二線接口包含在系統(tǒng)中每對(duì)流水線級(jí)之間。這包括前置部件和第一級(jí)之間的二線接口,及后置部件和最后級(jí)的二線界面,如果有這樣的前后部件,并且數(shù)據(jù)要在它們和流水線之間傳送的話。每個(gè)信號(hào),即“接收”和“有效”,都有一高和低的電平值。這些值分別簡(jiǎn)寫為“H”和“L”。在所實(shí)施的發(fā)明中,流水線的最普通的應(yīng)用,最典型的是數(shù)字式的。在這樣的數(shù)字式實(shí)現(xiàn)中,高的值可以,例如是邏輯“1”,低的值可以是邏輯“0”。然而,此系統(tǒng)不限于數(shù)字式實(shí)現(xiàn),在模擬式實(shí)現(xiàn)中,高的值可以是一電壓或高于(或低于)一設(shè)定門限值的其它的類似量,低的值用低于(或高于)該值或另一門限值的相應(yīng)的信號(hào)表示。對(duì)數(shù)字式應(yīng)用來說,本發(fā)明可以利用任何公知技術(shù),例如CMOS、雙極型等來完成。不必使用各別的存儲(chǔ)裝置和走線來實(shí)現(xiàn)有效信號(hào)的存儲(chǔ)。甚至在數(shù)字式實(shí)施例中亦是如此。全部要求是數(shù)據(jù)“有效性”的指示與數(shù)據(jù)一起被儲(chǔ)存。僅作為例子,在用數(shù)字值表示的數(shù)字式電視圖象中,像在國(guó)際標(biāo)準(zhǔn)CCIR601中規(guī)定的那樣,某些特殊值是不允許的。在此系統(tǒng)中,使用二進(jìn)制數(shù)的8比特代表圖象的采樣值。數(shù)值零和255不可以使用。如果這樣的圖象是在本發(fā)明實(shí)踐中建立的流水線中被處理,則可能應(yīng)用這些數(shù)值中的一個(gè)(例如零)指出在流水線內(nèi)的特定級(jí)中的數(shù)據(jù)是無效的。因此,任何非零數(shù)據(jù)都應(yīng)認(rèn)為是有效的。在這個(gè)例子中,不存在可被識(shí)別并存儲(chǔ)有關(guān)數(shù)據(jù)“有效”的特殊鎖存器,盡管如此,數(shù)據(jù)有效性還是與數(shù)據(jù)一起被存儲(chǔ)。如圖1所示,進(jìn)入每級(jí)的有效信號(hào)的狀態(tài)用在上部的向右指的箭頭上的“H”或“L”指出。因此,從A級(jí)進(jìn)入B級(jí)的有效信號(hào)是低電平,而從D級(jí)進(jìn)入E級(jí)的有效信號(hào)是高電平。進(jìn)入每級(jí)的接收信號(hào)的狀態(tài)用在下部的向左指的箭頭上的“H”或“L”指出。因此,從E級(jí)進(jìn)入D級(jí)的接收信號(hào)是高電平,而從聯(lián)接流水線下游的裝置進(jìn)入F級(jí)的接收信號(hào)是低電平。每當(dāng)下接級(jí)進(jìn)入其上接鄰近級(jí)的接收信號(hào)是高電平時(shí),在一周期期間(下面說明)數(shù)據(jù)從一級(jí)傳輸?shù)搅硪患?jí)。如果在兩級(jí)之間接收信號(hào)是低電平,則數(shù)據(jù)不在這些級(jí)之間傳輸。再參看圖1,如果邏輯框被畫上陰影線,作為例子,相應(yīng)流水線級(jí)被認(rèn)為包括有效輸出數(shù)據(jù)。同樣,從該級(jí)傳送到下一級(jí)的有效信號(hào)是高電平。圖1例示出B、D和E級(jí)包括有效數(shù)據(jù)時(shí)的流水線。A、C和F級(jí)不包括有效數(shù)據(jù)。在起始時(shí),進(jìn)入流水線級(jí)A的有效信號(hào)是高電平,這意味著在傳輸線上進(jìn)入流水線的數(shù)據(jù)是有效的。也在這時(shí),進(jìn)入流水線級(jí)F的接收信號(hào)是低電平,因此,沒有數(shù)據(jù),無論是有效的或無效的,從F級(jí)輸出。應(yīng)注意到有效和無效數(shù)據(jù)兩者都在流水線級(jí)之間傳輸。不值得儲(chǔ)存的無效數(shù)據(jù)可以改寫,從而將其從流水線中除去。然而,有效數(shù)據(jù)不必改寫,因?yàn)樗怯靡赃M(jìn)行處理或在下接裝置中應(yīng)用的必須存儲(chǔ)的數(shù)據(jù),所說的下接裝置是流水線、裝置或連接到流水線并從流水線接收數(shù)據(jù)的系統(tǒng)。在圖1所例舉的流水線中,E級(jí)包括有效數(shù)據(jù)D1,D級(jí)包括有效數(shù)據(jù)D2,B級(jí)包括有效數(shù)據(jù)D3,而與上游流水線連接的裝置(未繪出)包括傳輸進(jìn)流水線并在其中進(jìn)行處理的數(shù)據(jù)D4。除了上接的裝置之外,B、D和E級(jí)包括有效數(shù)據(jù),因此,從這些級(jí)或裝置分別進(jìn)入它們下一級(jí)裝置的有效信號(hào)是高電平。然而,由于這些級(jí)不包括有效數(shù)據(jù),所以來自A、C和F級(jí)的有效信號(hào)是低電平?,F(xiàn)在假定從流水線向下連接的裝置不準(zhǔn)備接收流水線的數(shù)據(jù)。該裝置將相應(yīng)的低電平接收信號(hào)置進(jìn)F級(jí)作告示。然而F級(jí)自身不包括有效數(shù)據(jù),因此能從上述E級(jí)接收數(shù)據(jù)。所以由F級(jí)進(jìn)入E級(jí)的接收信號(hào)設(shè)置成高電平。同樣,E級(jí)包括有效數(shù)據(jù)而且F級(jí)準(zhǔn)備接收此數(shù)據(jù)。因此,只要有效數(shù)據(jù)D1首先傳輸?shù)紽級(jí),E級(jí)就能接收新的數(shù)據(jù)。換言之,盡管F級(jí)不能向下傳輸數(shù)據(jù),但所有其它級(jí)都能傳輸,而無任何有效數(shù)據(jù)被改寫或損失。在周期1末端,數(shù)據(jù)能被“移位”一步到右邊。這種情況示于周期2中。在已例舉的實(shí)例中,在周期2中,下接裝置還不準(zhǔn)備接收新數(shù)據(jù),因此,進(jìn)入F級(jí)的接收信號(hào)仍是低電平。由于這樣做會(huì)引起有效數(shù)據(jù)D1改寫和損失,所以F級(jí)不能接收新數(shù)據(jù)。所以由F級(jí)進(jìn)入E級(jí)的接收信號(hào)成為低電平;同樣,由于E級(jí)也包括有效數(shù)據(jù)D2,使接收信號(hào)也從E級(jí)進(jìn)入D級(jí)。然而,所有的A~D級(jí)都能接收新數(shù)據(jù)(因?yàn)樗鼈儾话ㄓ行?shù)據(jù),或者因?yàn)樗鼈兡苁顾鼈兊挠行?shù)據(jù)向下面轉(zhuǎn)移并接收新數(shù)據(jù)),它們通過將它們的相應(yīng)接收信號(hào)設(shè)置為高電平,而傳輸這種條件信號(hào)到它們的前置最鄰近級(jí)。周期2之后的流水線級(jí)例示在圖1中標(biāo)記周期3的那一行。作為實(shí)例,假定下接的裝置還不準(zhǔn)備從F級(jí)接收新數(shù)據(jù)(進(jìn)入F級(jí)的接收信號(hào)是低電平)。由此,E和F級(jí)仍然被“阻塞”,但在周期3中,D級(jí)已接收有效數(shù)據(jù)D3,其原先在該級(jí)中的無效數(shù)據(jù)已被改寫。由于在周期3中D級(jí)不能傳輸數(shù)據(jù)D3,它就不能接收新數(shù)據(jù),所以將進(jìn)入C級(jí)的接收信號(hào)設(shè)置為低電平。然而,A~C級(jí)準(zhǔn)備接收新數(shù)據(jù),通過將它們相應(yīng)的接收信號(hào)置于高電平來作告示。應(yīng)當(dāng)指出數(shù)據(jù)D4已被從A級(jí)移位到B級(jí)?,F(xiàn)在假定下接的裝置變成準(zhǔn)備在周期4中接收新數(shù)據(jù)。通過將進(jìn)入F級(jí)的接收信號(hào)置于高電平來將此信息傳遞到流水線。雖然C~F級(jí)包括有效數(shù)據(jù),現(xiàn)在它們能使數(shù)據(jù)向下移位,從而能接收新數(shù)據(jù)。因?yàn)槊恳患?jí)都能因此使數(shù)據(jù)向下面移位一步,它們將其各自輸出接收信號(hào)置于高電平。只要進(jìn)入最后流水線級(jí)(在此例中為F級(jí))的接收信號(hào)為高電平,則圖1所示的流水線就充當(dāng)固定連接的流水線,并只是在每個(gè)周期將數(shù)據(jù)向下移位一步。因此,在周期5中,周期4的F級(jí)中所包括的數(shù)據(jù)D1移出流水線到下一個(gè)裝置,所有的其它數(shù)據(jù)向下移位一步?,F(xiàn)在假定在周期5中進(jìn)入F級(jí)中的接收信號(hào)成為低電平。再重復(fù)一次,這意味著D~F級(jí)不能接收新數(shù)據(jù)。從這些級(jí)輸出并進(jìn)入最鄰近的上級(jí)的接收信號(hào)成為低電平。因此,數(shù)據(jù)D2、D3和D4不能向下移位,然而數(shù)據(jù)D5能夠。在周期5之后流水線的相應(yīng)狀態(tài)如圖1中周期6所示。按照本發(fā)明的優(yōu)選實(shí)施例,因?yàn)榱魉€中的處理級(jí)變得互相隔離,流水線的“填充”未占用的處理級(jí)的能力是非常有益的。換句話說,雖然流水線級(jí)不立即接收數(shù)據(jù),整個(gè)流水線也不必停止和等待延遲級(jí)。相反,當(dāng)一級(jí)不能接收有效數(shù)據(jù)時(shí),它在流水線中簡(jiǎn)單地形成一臨時(shí)“壁”。盡管如此,“壁”的下接各級(jí)繼續(xù)傳輸有效數(shù)據(jù),甚至到與流水線連接的電路,“壁”左邊各級(jí)仍然能接收和向下傳輸有效數(shù)據(jù)。甚至當(dāng)一些流水線級(jí)暫時(shí)不能接收新數(shù)據(jù)時(shí),其它級(jí)仍能繼續(xù)正常工作。尤其是只要A級(jí)尚未包括由于下一級(jí)不立即接收新數(shù)據(jù)而不能前進(jìn)的有效數(shù)據(jù),流水線就能繼續(xù)接收數(shù)據(jù)進(jìn)入其最初的A級(jí)。如此例所述,甚至當(dāng)一個(gè)或多個(gè)處理級(jí)阻塞時(shí),數(shù)據(jù)仍能傳輸入流水線和各級(jí)之間。在圖1所示的實(shí)施例中,假定各個(gè)流水線級(jí)不存儲(chǔ)它們從其最鄰近的下一級(jí)收到的接收信號(hào)。代之的是,每當(dāng)進(jìn)入下一級(jí)的接收信號(hào)成為低電平時(shí),此低電平信號(hào)向上游各級(jí)傳播直到不包括有效數(shù)據(jù)的最鄰近的流水線級(jí)。例如,參看圖1,假定在周期1中進(jìn)入F級(jí)的接收信號(hào)成為低電平。在周期2中,此低電平信號(hào)從F級(jí)傳回到D級(jí)。在周期3中,當(dāng)數(shù)據(jù)D3被鎖進(jìn)D級(jí)時(shí),接收信號(hào)向上游傳送四級(jí)到C級(jí)。當(dāng)在周期4中進(jìn)入F級(jí)的接收信號(hào)成為高電平時(shí),它必須向上游傳送直到C級(jí)。換句話說,接收信號(hào)中的變化必須返傳回四級(jí)。然而,如果存在某些能接收新數(shù)據(jù)的中間級(jí),在圖1例示的實(shí)施例中,接收信號(hào)就不必向回傳送到流水線的起點(diǎn)。在圖1所例舉的實(shí)施例中,每個(gè)流水線級(jí)將仍然需要獨(dú)立的輸入、輸出數(shù)據(jù)鎖存器,以使數(shù)據(jù)在級(jí)間傳送而沒有無意識(shí)地改寫。而且雖然當(dāng)下接的流水線被阻塞,即它們不能傳送所含的數(shù)據(jù)時(shí),圖1中所例舉的流水線能“壓縮”,但此流水線并不為了在包括有效數(shù)據(jù)的各級(jí)之間提供不包括有效數(shù)據(jù)的級(jí)而“擴(kuò)展”。確切些說,壓縮能力取決于存在一些周期,在這些周期期間第一流水線級(jí)前不出現(xiàn)有效數(shù)據(jù)。例如,在周期4中,如果進(jìn)入F級(jí)的接收信號(hào)保持低電產(chǎn),并且有效數(shù)據(jù)充填流水線級(jí)A和B,只要有效數(shù)據(jù)繼續(xù)出現(xiàn)在A級(jí)輸入處,流水線將不能做任何進(jìn)一步壓縮,有效輸入數(shù)據(jù)可能會(huì)丟失。盡管如此,圖1中所例示的流水線,由于只要存在不包括有效數(shù)據(jù)的流水線級(jí),它就能壓縮,所以減少了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。圖2例示出流水線的另一實(shí)施例,它能以邏輯方式壓縮和伸展,并包括限制接收信號(hào)向最鄰近的前級(jí)傳送的電路。下面將對(duì)用以實(shí)施此實(shí)施的電路進(jìn)行詳細(xì)地圖示和說明,圖2只用以說明其工作原理。只是為了便于比較,進(jìn)入圖2所示流水線實(shí)施例中的輸入數(shù)據(jù)和接收信號(hào)與進(jìn)入圖1所示流水線實(shí)施例中的相同。因此,E、D和B級(jí)分別包括有效數(shù)據(jù)D1、D2和D3。進(jìn)入F級(jí)接收信號(hào)是低電平,數(shù)據(jù)D4出現(xiàn)在起始的流水線級(jí)A之前。在圖2中示出連接每個(gè)鄰近的流水線級(jí)對(duì)的三條線??梢允且荒妇€的最上邊的線為數(shù)據(jù)線。中間那條線是傳輸有效信號(hào)的線,底下那條線是傳輸接收信號(hào)的線。而且如上所述,進(jìn)入F級(jí)的接收信號(hào)除了在周期4中之外都保持低電平。因此,在周期4中另外的數(shù)據(jù)D5出現(xiàn)在流水線前。在圖2中,每個(gè)流水線級(jí)用分成兩半的方框表示,以說明在此流水線實(shí)施例中的每級(jí)都包括初級(jí)和次級(jí)數(shù)據(jù)存儲(chǔ)單元。在圖2中每級(jí)的右半部分表示初級(jí)數(shù)據(jù)存儲(chǔ)單元。要知道這種描述只是為了說明,而不作為限定。如圖2所示,只要進(jìn)入某級(jí)的接收信號(hào)是高電平,數(shù)據(jù)就在任意給定的周期期間從該級(jí)的初級(jí)存儲(chǔ)單元傳輸?shù)较乱患?jí)的次級(jí)存儲(chǔ)單元。因此,雖然進(jìn)入F級(jí)的接收信號(hào)是低電平,但進(jìn)入所有其它各級(jí)的接收信號(hào)是高電平,所以在周期2中數(shù)據(jù)D1、D2和D3向前移位一步,而數(shù)據(jù)D4移位進(jìn)第一級(jí)A中。到這時(shí)為止,圖2所示的流水線實(shí)施例以類似圖1所示的流水線實(shí)施例的方式起作用。然而,盡管進(jìn)入F級(jí)的接收信號(hào)是低電平,從F級(jí)進(jìn)入E級(jí)的接收信號(hào)是高電平。像下面所說明的那樣,因?yàn)橛写渭?jí)存儲(chǔ)單元,除了F級(jí)之外,低電平的接收信號(hào)就不需要向更前級(jí)傳輸。而且,通過讓進(jìn)入E級(jí)的接收信號(hào)繼續(xù)為高電平,F(xiàn)級(jí)告示它可立即接收新數(shù)據(jù)。由于在周期3中F級(jí)不能向下傳輸在其初級(jí)存儲(chǔ)單元中的數(shù)據(jù)D1(進(jìn)入F級(jí)的接收信號(hào)是低電平),所以E級(jí)必須將數(shù)據(jù)D2傳輸進(jìn)F級(jí)的次級(jí)存儲(chǔ)單元。由于F級(jí)的初級(jí)和次級(jí)存儲(chǔ)單元兩者都包括不能傳送的有效數(shù)據(jù),所以從F級(jí)進(jìn)入E級(jí)的接收信號(hào)置于低電平。因此,這表示低電平接收信號(hào)相對(duì)于周期2反向回傳送一級(jí),而此接收信號(hào)在圖1所示的實(shí)施例中必須向回傳送直到C級(jí)。由于A~E級(jí)能傳送其數(shù)據(jù),從這些級(jí)進(jìn)入其最鄰近的前級(jí)的接收信號(hào)置于高電平。因而數(shù)據(jù)D3和D4向右移位一級(jí),使得在周期4中,它們被分別加載進(jìn)E級(jí)和C級(jí)的初級(jí)數(shù)據(jù)存儲(chǔ)單元。盡管現(xiàn)在E級(jí)在其初級(jí)存儲(chǔ)單元中包括有效數(shù)據(jù)D3,但其次級(jí)存儲(chǔ)單元仍然能用以存儲(chǔ)其它數(shù)據(jù)而不會(huì)有改寫任何有效數(shù)據(jù)的危險(xiǎn)。如上所述,現(xiàn)在假定在周期4中進(jìn)入F級(jí)的接收信號(hào)變成高電平。這表示流水線向其傳送數(shù)據(jù)的下接裝置可立即從流水線接收數(shù)據(jù)。然而F級(jí)已將其接收信號(hào)置于低電平,因而向E級(jí)表示F級(jí)不準(zhǔn)備接收新數(shù)據(jù)。要注意到每個(gè)周期的接收信號(hào)指出在下一個(gè)周期中將“發(fā)生”什么,也就是說指出數(shù)據(jù)是否會(huì)傳送(接收信號(hào)為高電平),或者數(shù)據(jù)是否必須保持在原來位置(接收信號(hào)為低電平)。因此,從周期4到周期5,數(shù)據(jù)D1從F級(jí)傳送到下面的裝置,數(shù)據(jù)D2在F級(jí)中從次級(jí)移位到初級(jí)存儲(chǔ)器,但E級(jí)中的數(shù)據(jù)D3未傳送到F級(jí)。由于下幾級(jí)有高電平接收信號(hào),所以數(shù)據(jù)D4和D5能像通常那樣傳送進(jìn)下一個(gè)流水線級(jí)。比較周期4和周期5中流水線的狀態(tài),可見次級(jí)存儲(chǔ)單元的設(shè)置能使圖2所示的流水線實(shí)施例擴(kuò)展,也就是說隨意增加有效數(shù)據(jù)能前進(jìn)其中的數(shù)據(jù)存儲(chǔ)單元。例如在周期4中,由于在進(jìn)入F級(jí)的接收信號(hào)成為高電平之前,它們的數(shù)據(jù)不能傳送,數(shù)據(jù)塊D1、D2和D3形成一個(gè)“堅(jiān)壁”。然而一旦此信號(hào)變成高電平,則數(shù)據(jù)D1移出流水線,數(shù)據(jù)D2移位進(jìn)F級(jí)的初級(jí)存儲(chǔ)單元,并且如果下面的裝置不能接收數(shù)據(jù)D2,F(xiàn)級(jí)的次級(jí)存儲(chǔ)單元就成為空閑的以接收新數(shù)據(jù)。流水線必須再次“壓縮”。這表明在周期6中,數(shù)據(jù)D3已移位到F級(jí)的次級(jí)存儲(chǔ)單元,數(shù)據(jù)4已像通常那樣從D級(jí)傳輸?shù)紼級(jí)。圖3a(1)、3a(1)、3b(1)和3b(2)(它們總起來用圖3表示)例舉出流水線的優(yōu)選實(shí)施例。此優(yōu)選實(shí)施例使用具有φ0和φ1相位的二相位不重疊時(shí)鐘脈沖實(shí)現(xiàn)圖2中所示的結(jié)構(gòu)。盡管推薦了二相時(shí)鐘脈沖,但應(yīng)理解到使用具有多于二相的時(shí)鐘脈沖來驅(qū)動(dòng)本發(fā)明的各個(gè)實(shí)施例也是可能的。如圖3所示,每個(gè)流水線級(jí)用有二個(gè)分離的代表初級(jí)和次級(jí)存儲(chǔ)單元的邏輯框表示。而且,雖然有效信號(hào)和數(shù)據(jù)線像上述那樣連接不同的流水線級(jí),但為了便于說明,在圖3中僅示出接收信號(hào)。在某些接收信號(hào)的時(shí)鐘脈沖相位期間,狀態(tài)的變化在圖3中使用向上的箭頭表示從低電位到高電位的變化。同樣,向下的箭頭表示從高電位到低電位的變化。數(shù)據(jù)從一個(gè)存儲(chǔ)單元到另一存儲(chǔ)單元的傳輸用t的中空的箭頭表示。假定每當(dāng)任何給定級(jí)的初級(jí)或次級(jí)存儲(chǔ)單元內(nèi)含有效數(shù)據(jù)時(shí),從這些存貯單元輸出的有效信號(hào)處于高電位。在圖3中,每個(gè)周期用不重疊的時(shí)鐘脈沖相位φ0和φ1的整個(gè)期間表示。像在下面更詳細(xì)的說明那樣,數(shù)據(jù)在時(shí)鐘脈沖周期φ1期間從次級(jí)存儲(chǔ)單元(在每級(jí)中用左邊的邏輯框表示)傳送到初級(jí)存儲(chǔ)單元(在每級(jí)中用右邊的邏輯框表示),而在時(shí)鐘脈沖周期φ0期間,數(shù)據(jù)從一級(jí)的初級(jí)存儲(chǔ)單元傳送到下一級(jí)的次級(jí)存儲(chǔ)單元。圖3也表明每級(jí)中的初級(jí)和次級(jí)存儲(chǔ)單元進(jìn)一步經(jīng)由一內(nèi)部接收線連接,以便用接收信號(hào)從一級(jí)傳到一級(jí)的同樣方式通過該內(nèi)部接收信號(hào)。這樣,次級(jí)存儲(chǔ)單元將知道什么時(shí)候其數(shù)據(jù)能傳到初級(jí)存儲(chǔ)單元。圖3示出周期1的φ1相位,其中已在先前分別移位入E、D和b級(jí)的次級(jí)存儲(chǔ)單元的數(shù)據(jù)D1、D2和D3被移位入各相應(yīng)級(jí)的初級(jí)存儲(chǔ)單元。因此,在周期1的φ1相位期間,流水線呈現(xiàn)像在圖2的周期1那樣的相同結(jié)構(gòu)。如上所述,進(jìn)入F級(jí)的接收信號(hào)假定是低電位。然而如圖3所示,進(jìn)入F級(jí)的初級(jí)存儲(chǔ)單元的接收信號(hào)是低電位,但由于此存儲(chǔ)單元不包括有效數(shù)據(jù),所以將進(jìn)入其次級(jí)存儲(chǔ)單元的接收信號(hào)置于高電位。由于F級(jí)的次級(jí)存儲(chǔ)單元不包括有效數(shù)據(jù),從F級(jí)的次級(jí)存儲(chǔ)單元進(jìn)入E級(jí)的初級(jí)存儲(chǔ)單元的接收信號(hào)也置于高電位。如上所述,由于F級(jí)的初級(jí)存儲(chǔ)單元能接收數(shù)據(jù),所有上游的初級(jí)和次級(jí)存儲(chǔ)單元中的數(shù)據(jù)都能向下移位而沒有任何有效數(shù)據(jù)被改寫。在周期2中的下一個(gè)φ0相位期間發(fā)生從一級(jí)到下一級(jí)的數(shù)據(jù)移位。例如,在E級(jí)的初級(jí)存儲(chǔ)單元中包括的有效數(shù)據(jù)D1移位入F級(jí)的次級(jí)存儲(chǔ)單元,數(shù)據(jù)D4移位入流水級(jí),即移位入A級(jí)的次級(jí)存儲(chǔ)單元等等。F級(jí)的初級(jí)存儲(chǔ)單元在周期2中的φ0相位期間仍然不包括有效數(shù)據(jù),因此從初級(jí)存儲(chǔ)單元進(jìn)入F級(jí)的次級(jí)存儲(chǔ)單元的的接收信號(hào)維持高電位。在周期2中的φ1相位期間,數(shù)據(jù)因此能又向右移位一步,即從每一級(jí)中的次級(jí)到初級(jí)存儲(chǔ)單元。然而,如果從下接的裝置進(jìn)入F級(jí)的接收信號(hào)仍然是低電平,一旦有效數(shù)據(jù)加載進(jìn)F級(jí)的初級(jí)存儲(chǔ)單元,要將數(shù)據(jù)移位出F級(jí)的次級(jí)存儲(chǔ)單元而又不改寫和破壞有效數(shù)據(jù)D1是不可能的。從F級(jí)初級(jí)存儲(chǔ)單元進(jìn)入次級(jí)存儲(chǔ)單元的接收信號(hào)因而成為低電平。然而由于它不包括有效數(shù)據(jù)和其輸出的接收信號(hào)是高電平,數(shù)據(jù)D2仍然能被移位入F級(jí)的次級(jí)存儲(chǔ)器。在周期3的φ1相位期間,盡管數(shù)據(jù)能在所有上述各級(jí)內(nèi)被移位,但要將數(shù)據(jù)D2移位入F級(jí)的初級(jí)存儲(chǔ)單元是不可能的。一旦有效數(shù)據(jù)加載進(jìn)F級(jí)的次級(jí)存儲(chǔ)單元,F(xiàn)級(jí)就不能傳送此數(shù)據(jù)。它將其輸出接收信號(hào)設(shè)置于低電平,從而告示這一事件的發(fā)生。假定進(jìn)入F級(jí)的接收信號(hào)保持低電平,F(xiàn)級(jí)上方的數(shù)據(jù)在各個(gè)時(shí)鐘脈沖相位期間能繼續(xù)在級(jí)間和級(jí)內(nèi)移位,直到下一個(gè)有效數(shù)據(jù)塊D3達(dá)到E級(jí)的初級(jí)存儲(chǔ)單元。如所說明那樣,在周期4的φ1相位期間達(dá)到這種情況。在周期5的φ0相位期間,數(shù)據(jù)D3已加載進(jìn)E級(jí)的初級(jí)存儲(chǔ)單元。由于此數(shù)據(jù)不能再被移位,E級(jí)的初級(jí)存儲(chǔ)單元的輸出接收信號(hào)置于低電產(chǎn)。上游的數(shù)據(jù)能像通常那樣移位?,F(xiàn)在像在圖2的周期5中那樣,假定連接流水線下方的裝置能接收流水線數(shù)據(jù)。它在周期4的φ1相位期間將進(jìn)入流水線級(jí)F的接收信號(hào)置于高電平,從而發(fā)出這種情況的信息。F級(jí)的初級(jí)存儲(chǔ)單元現(xiàn)在能向右移位數(shù)據(jù)并且它們也能接收新數(shù)據(jù)。此后,在周期5的φ0相位期間數(shù)據(jù)D1已被移位出去,所以F級(jí)的初級(jí)存儲(chǔ)單元不再包含必須保存的數(shù)據(jù)。在周期5的φ1相位期間,在F級(jí)內(nèi)數(shù)據(jù)D2被從次級(jí)存儲(chǔ)單元移位到初級(jí)存儲(chǔ)單元。F級(jí)的次級(jí)存儲(chǔ)單元也能接收新數(shù)據(jù),并將進(jìn)入E級(jí)的初級(jí)存儲(chǔ)單元的接收信號(hào)置于高電平,從而傳出此信息。在級(jí)內(nèi)數(shù)據(jù)傳送期間,也就是從其次級(jí)到其初級(jí)存儲(chǔ)單元,兩組存儲(chǔ)單元將包含同樣的數(shù)據(jù),但由于這數(shù)據(jù)也將保持在初級(jí)存儲(chǔ)單元中,在次級(jí)存儲(chǔ)單元中的數(shù)據(jù)能被無數(shù)據(jù)損失地改寫。這種情況適用于數(shù)據(jù)從一級(jí)的初級(jí)存儲(chǔ)單元傳輸入下一級(jí)的次級(jí)存儲(chǔ)單元?,F(xiàn)在假定在周期5中的φ1相位期間進(jìn)入F級(jí)的初級(jí)存儲(chǔ)單元的接收信號(hào)成為低電平。這意味著F級(jí)不能使數(shù)據(jù)D2傳送出流水線。因此,F(xiàn)級(jí)將從其初級(jí)存儲(chǔ)單元到其次級(jí)存儲(chǔ)單元的接收信號(hào)設(shè)置于低電平,以防止改寫有效數(shù)據(jù)D2。然而存儲(chǔ)在F級(jí)的次級(jí)存儲(chǔ)單元的數(shù)據(jù)D2能被無損失地改寫,而且因此數(shù)據(jù)D3在周期6的φ0相位期間被傳送進(jìn)F級(jí)的次級(jí)存儲(chǔ)單元。數(shù)據(jù)D4和D5能像通常那樣向下移位。只要進(jìn)入F級(jí)初級(jí)存儲(chǔ)單元的接收信號(hào)是低電平,一旦有效數(shù)據(jù)D3與數(shù)據(jù)D2一起存儲(chǔ)在F級(jí),則沒有一個(gè)次級(jí)存儲(chǔ)單元能接收新數(shù)據(jù),并且通過將進(jìn)入E級(jí)的接收信號(hào)置于低電平來告示這種信息。當(dāng)從下接的裝置進(jìn)入流水線的接收信號(hào)從低電平到高電平或者相反地變化時(shí),這種變化除了到最鄰近的上一存儲(chǔ)單元(在同一級(jí)內(nèi)或在上一流水線級(jí)內(nèi))外,不必在流水線內(nèi)向上方傳送。相反地,這種變化在流水線內(nèi)每個(gè)時(shí)鐘脈沖相位向上方傳送一個(gè)存儲(chǔ)單元部分。如此例所述,在圖3所例舉的流水線結(jié)構(gòu)中“級(jí)”的概念在某種程度上只是理解問題。因?yàn)閿?shù)據(jù)在級(jí)內(nèi)(從次級(jí)存儲(chǔ)單元到初級(jí)存儲(chǔ)單元)傳輸,像它在極間(從上一級(jí)的初級(jí)存儲(chǔ)單元進(jìn)入相鄰的下一級(jí)的次級(jí)存儲(chǔ)單元)傳輸一樣,人們同樣能認(rèn)為級(jí)是包括“初級(jí)”存儲(chǔ)單元,其后是“次級(jí)存儲(chǔ)單元”而不是像在圖3中所說的那樣。因此“初級(jí)”和“次級(jí)”存儲(chǔ)單元的概念主要是稱謂問題。在圖3中,“初級(jí)”存儲(chǔ)單元也能稱為“輸出”存儲(chǔ)單元,因?yàn)樗鼈兪鞘箶?shù)據(jù)從一級(jí)傳出進(jìn)入下一級(jí)或下一裝置的存貯單元,而“次級(jí)”存儲(chǔ)單元應(yīng)是同一級(jí)的“輸入”存儲(chǔ)單元。在說明上述實(shí)施例中,如圖1~3所示,僅敘述了在接收和有效信號(hào)控制下數(shù)據(jù)的傳輸。應(yīng)進(jìn)一步理解為每個(gè)流水線級(jí)也可以在它接收的隨機(jī)數(shù)據(jù)在流水線的內(nèi)部存儲(chǔ)單元之間傳輸之前,或者在傳送到下一個(gè)流水線級(jí)之前處理該數(shù)據(jù)。因此,再次參看圖3,能將流水線級(jí)定義為含有輸入和輸出存儲(chǔ)單元并隨意地處理存儲(chǔ)在其存儲(chǔ)單元中的數(shù)據(jù)的那部分流水線。此外,從流水線F級(jí)向下的“裝置”不需要是某些其它類型的硬件結(jié)構(gòu),相反,它能是同一流水線的另一部分或另一流水線的一部分。像下述那樣,流水線級(jí)不僅當(dāng)全部下接的存儲(chǔ)單元都裝有效數(shù)據(jù)時(shí)能將本級(jí)的接收(ACCEPT)信號(hào)置成低電平,而且當(dāng)為完成數(shù)據(jù)處理流水線級(jí)需要大于一個(gè)時(shí)鐘脈沖相位時(shí),也能將它置低。當(dāng)流水線級(jí)在其一個(gè)或二個(gè)存儲(chǔ)單元中建立有效數(shù)據(jù)時(shí),這種情況也能存在。換句話說,某級(jí)不需要僅僅根據(jù)下接的最鄰近的存儲(chǔ)單元是否包括不能傳送的有效數(shù)據(jù)來傳送接收信號(hào)。相反,為了控制數(shù)據(jù)在相鄰的存儲(chǔ)單元之間傳輸,也可以在級(jí)內(nèi)或者由外本級(jí)之外的電路使接收信號(hào)本身改變。有效(VALID)信號(hào)也可以用類似方法處理。二線接口(有效和接收信號(hào)各一線)的很大的優(yōu)點(diǎn)是它不用控制信號(hào)就能控制流水線,所說的控制信號(hào)必須逆著流水線的方向傳送直到其起始級(jí)。再次參看圖1,例如在其周期3,F(xiàn)級(jí)“通知”E級(jí)它不能接收數(shù)據(jù),E級(jí)通知D級(jí),D級(jí)又通知C級(jí)。的確,如果真有更多級(jí)包括有效數(shù)據(jù),則這信號(hào)會(huì)沿流水線向回傳送得更遠(yuǎn)。在圖3所示的實(shí)施例中,在周期3,此低電平接收信號(hào)傳回到E級(jí)為止,而且接著只傳到其初級(jí)存儲(chǔ)單元。如上所述,此實(shí)施例無須大大增加完成設(shè)計(jì)所需要的硅片面積就能達(dá)到這種靈活性。具有代表性地是,流水線中用于數(shù)據(jù)存儲(chǔ)器的每個(gè)鎖存器僅需要一個(gè)單獨(dú)的附加晶體管(它非常有效地設(shè)置在硅片中)。此外,最好再增加二個(gè)附加鎖存器和小量門電路,用以處理與每半級(jí)中數(shù)據(jù)鎖存器有關(guān)的接收和有效信號(hào)。圖4例示出完成圖3中所示級(jí)的硬件結(jié)構(gòu)。僅作為例子,假定8比特?cái)?shù)據(jù)通過流水線并行傳輸(在任意組合邏輯電路中具有或沒有進(jìn)一步的處理)。然而應(yīng)理解到在實(shí)施本發(fā)明中也能應(yīng)用多于或小于8比特的數(shù)據(jù)。此外,按照此實(shí)施例二線接口適用于任何數(shù)據(jù)母線寬度,而且如果特殊應(yīng)用需要,此數(shù)據(jù)母線寬度甚至可以從一級(jí)變化到下一級(jí)。按照此實(shí)施例,該界面也能用來處理模擬的信號(hào)。如前所述,當(dāng)使用其它常規(guī)定時(shí)裝置時(shí),最好用二相不重疊時(shí)鐘控制接口。在圖4~9中,這些時(shí)鐘相位信號(hào)記為PH0和PH1。在圖4中,每個(gè)時(shí)相位拍信號(hào)用線表示。輸入數(shù)據(jù)經(jīng)過多位數(shù)據(jù)線母線IN-DATA入流水線級(jí),并經(jīng)過輸出數(shù)據(jù)母線OUT-DATA傳輸?shù)较旅娴牧魉€級(jí),或者傳輸?shù)诫S后的接收電路。該輸入數(shù)據(jù)首先以下述方法加載進(jìn)一組統(tǒng)稱為L(zhǎng)DIN的輸入鎖存器(每個(gè)輸入數(shù)據(jù)信號(hào)一個(gè)),它們構(gòu)成上述的次級(jí)存儲(chǔ)單元。在本實(shí)施例所例舉的實(shí)例中,假定全部鎖存器的Q輸出跟蹤它們的D輸入,也就是說當(dāng)時(shí)鐘脈沖輸入是高電平,即在邏輯“1”電平時(shí)它們被“加載”。此外,Q輸出保持其最終值。換言這之,該Q輸出被“鎖存”在它們各自的時(shí)鐘脈沖信號(hào)的下降沿上。每個(gè)鎖存器都有二個(gè)不重疊時(shí)鐘脈沖信號(hào)PH0和PH1中的任一個(gè)(如圖5所示),或者是這些時(shí)鐘脈沖信號(hào)PH0、PH1和一個(gè)邏輯信號(hào)的邏輯“與”組合。通過提供在時(shí)鐘脈沖信號(hào)上升沿上鎖存的鎖存器或任何其它已知的鎖存裝置,只要常規(guī)方法被用來保證鎖存工作的正確定時(shí),本發(fā)明同樣能工作。來自輸入數(shù)據(jù)鎖存器LDIN的輸出數(shù)據(jù)經(jīng)由適當(dāng)?shù)暮腿我獾慕M合邏輯電路B1傳輸,此電路B1將來自輸入寄存器LDIN的輸出數(shù)據(jù)轉(zhuǎn)換成中間數(shù)據(jù),然后此中間數(shù)據(jù)以后加載到由上述初級(jí)存儲(chǔ)單元組成的輸出數(shù)據(jù)鎖存器LDOUT中。此來自輸出數(shù)據(jù)鎖存器LDOUT的輸出在作為OUT_DATA向前傳輸?shù)较掠蔚南乱患?jí)之前,同樣可以通過適當(dāng)?shù)暮腿我獾慕M合邏輯電路B2。這可以是另外的流水線級(jí)或任何連接到該流水線的其它裝置。在本發(fā)明的實(shí)踐中,流水線的每級(jí)也包括有效輸入鎖存器LVIN、有效輸出鎖存器LVOUT、接收輸入鎖存器LAIN和接收輸出鎖存器LAOUT。這四個(gè)寄存器中的每一個(gè)最好都是簡(jiǎn)單的單級(jí)鎖存器。由鎖存器LVIN、LVOUT、LAIN和LAOUT的輸出分別是QVIN、QVOUT、QAIN、QAOUT。由有效輸入寄存器輸出的輸出信號(hào)QVIN可作為輸入直接連接到有效輸出寄存器LVOUT,或者經(jīng)由可以改變信號(hào)的中間邏輯裝置或電路。同樣,給定級(jí)的輸出有效信號(hào)QVOUT可以直接連接到下一級(jí)的有效輸入鎖存器QVIN的輸入端,或者經(jīng)由可改變有效信號(hào)的中間裝置或邏輯電路。此輸入QVIN也連接到邏輯門電路(將在下面說明),其輸出連接到接收輸入鎖存器LAIN的輸入。由接收輸出鎖存器LAOUT的輸出QAOUT可選擇地經(jīng)由另一邏輯門電路連接到同樣的邏輯門電路(下面說明)。如圖4所示,輸出有效信號(hào)QVOUT形成一能作為IN_VALID信號(hào)被后一級(jí)接收的OUT_VALIND信號(hào),或者簡(jiǎn)單地指示連接到流水線的后續(xù)電路的有效數(shù)據(jù)。用信號(hào)OUT_ACCEPT向每級(jí)指出用以接收數(shù)據(jù)的下接電路或級(jí)的準(zhǔn)備的狀態(tài),所說的信號(hào)OUT_ACCEPT作為輸入,最好經(jīng)下述邏輯電路連接到接收輸出鎖存器LAOUT。同樣,接收輸出鎖存器LAOUT的輸出QAOUT作為輸入,最好經(jīng)下述邏輯電路連接到接收輸入寄存器LAIN。在實(shí)施本發(fā)明當(dāng)中,來自有效寄存器LVIN、LVOUT的輸出信號(hào)QVIN、QVOUT分別與接收信號(hào)QAOUT、OUT_ACCEPT組合,以分別形成對(duì)接收鎖存器LAIN、LAOUT的輸入。在圖4所例舉的實(shí)施例中,這些輸入信號(hào)作為各個(gè)有效信號(hào)QVIN、QVOUT與各個(gè)接收輸出信號(hào)QAOUT、OUT_ACCEPT的邏輯取反的邏輯“與非”組合而形成。常規(guī)邏輯門NAND1和NAND2執(zhí)行“與非”工作,倒相器INV1、INV2形成各個(gè)接收信號(hào)的邏輯取反。如在數(shù)字設(shè)計(jì)技術(shù)中所公知,當(dāng)任何或所有它的輸入信號(hào)為邏輯“0”狀態(tài)時(shí),來自“與非”門的輸出是邏輯“1”。所以,僅當(dāng)其全部輸入為邏輯“1”狀態(tài)時(shí),從“與非”門的輸出是邏輯“0”。本行業(yè)務(wù)所公知的是,當(dāng)其輸入信號(hào)是“0”時(shí),數(shù)字倒相器例如INV1的輸出是邏輯“1”,當(dāng)其輸入信號(hào)是“1”時(shí),它的輸出是“0”。到“與非”門NAND1的輸入是QVIN和NOT(QAOUT),其“NOT”指的是二進(jìn)制倒相。使用公知技術(shù),到接收鎖存器LAIN的輸入能按下式解決NAND(QVIN,NOT(QAOUT))=NOT(QVIN)ORQAOUT換言之,當(dāng)信號(hào)QVIN是“0”或者當(dāng)信號(hào)QAOUT是“1”,或者兩者同時(shí)出現(xiàn)時(shí),倒相器INV1和“與非”門NAND1的組合是邏輯“1”。門電路NAND1和倒相器INV1能用單個(gè)“或”門來完成,它的輸入之一直接依賴接收鎖存器LAOUT的QAOUT輸出,另一個(gè)輸入,依賴有效輸入鎖存器LAIN的輸出信號(hào)QVIN的反值。如在數(shù)字設(shè)計(jì)技術(shù)中所公知,適于用作有效和接收鎖存器的許多鎖存器可以有兩個(gè)輸出Q和NOT(Q),即Q和它的邏輯反值。如果選擇這樣的鎖存器,則到“或”門的一個(gè)輸入能直接依賴有效鎖存器LVIN的NOT(Q)輸出。門電路NAND1和倒相器INV1能使用常規(guī)公知技術(shù)來完成。然而依靠所用的鎖存器結(jié)構(gòu),使用無反相輸出的鎖存器可以更有效,代替的是提供門電路NAND1和倒相器INV1,這兩者也能在硅器件中有效地完成。因此,任何公知的裝置都可以用來產(chǎn)生Q信號(hào)和/或它的邏輯反值。當(dāng)時(shí)鐘脈沖信號(hào)(在輸入側(cè)是PH0,在輸出側(cè)是PH1)和來自同一側(cè)的接收鎖存器的輸出兩者都是邏輯“1”時(shí),數(shù)據(jù)和有效鎖存器LDIN、LDOUT、LVIN和LVOUT加載它們各自的數(shù)據(jù)輸入。這樣,時(shí)鐘脈沖信號(hào)(輸入鎖存器LDIN和LVIN的PH0)和各個(gè)接收鎖存器(在這種情況下是LAIN)的輸出以邏輯“與”方式應(yīng)用,當(dāng)它們兩者都是邏輯“1”時(shí),僅加載數(shù)據(jù)。在特殊應(yīng)用中,例如鎖存器的CMOS裝置,控制鎖存器加載(經(jīng)已圖示出的CK或使能“輸入”)的邏輯“與”操作,能通過使各個(gè)使能輸入信號(hào)(例如PH0和為鎖存器LVIN和LDIN的QAIN)連接到在鎖存器的輸入線中串聯(lián)連接的MOS晶體管門電路用的常規(guī)方式很容易地完成。因此,必須提供實(shí)際的邏輯“與”門,它可能由于在高速應(yīng)用中延遲傳送產(chǎn)生定時(shí)問題。所以,圖中所示的“與”門僅表明在產(chǎn)生各種鎖存器的使能信號(hào)中完成的邏輯功能。因而,僅當(dāng)PH0和QAIN兩者都是邏輯“1”時(shí),數(shù)據(jù)鎖存器LDIN加載輸入數(shù)據(jù)。當(dāng)兩個(gè)信號(hào)中的任何一個(gè)變成“0”時(shí),它將鎖存此數(shù)據(jù)。盡管僅時(shí)鐘脈沖相位信號(hào)PH0或PH1中的一個(gè)被用作時(shí)鐘加到流水線級(jí)的輸入(和輸出)側(cè)的數(shù)據(jù)鎖存器和有效鎖存器,另一個(gè)時(shí)鐘脈沖相位信號(hào)卻直接被用作時(shí)鐘加到同一側(cè)的接收鎖存器。換言之,最好在流水線任一側(cè)(輸入和輸出)的接收鎖存器的時(shí)鐘與同一側(cè)的數(shù)據(jù)鎖存器和有效鎖存器“不同相”。例如,盡管在為數(shù)據(jù)鎖存器LDIN和有效鎖存器LVIN產(chǎn)生時(shí)鐘信號(hào)CK中應(yīng)用PH0,PH1卻被用作接收輸入鎖存器的時(shí)鐘。作為通過雙線有效和接收電路擴(kuò)展了的流水線的工作實(shí)施例,假定最初在線路的輸入端不存在從以前的流水線級(jí),或者從傳輸裝置來的有效數(shù)據(jù)。換言之,假定從系統(tǒng)最近復(fù)位后,到所例舉的級(jí)的有效輸入信號(hào)IN_VALID未變成“1”。還假定從系統(tǒng)上次復(fù)位后過了幾個(gè)時(shí)鐘脈沖周期,相應(yīng)地,電路已達(dá)到穩(wěn)定狀態(tài)的條件。在時(shí)鐘脈沖PH0的下一個(gè)正周期期間,來自有效鎖存器LVIN的有效輸入信號(hào)QVIN被作為“0”裝載。在時(shí)鐘脈沖信號(hào)PH1的下一個(gè)正周期期間,到接收輸入鎖存器LAIN(經(jīng)門電路NAND1或另一個(gè)等效門電路)的輸入被作為“1”裝載。換言之,因?yàn)樵跀?shù)據(jù)輸入鎖存器LDIN中的數(shù)據(jù)不是有效的,所以該級(jí)發(fā)出它準(zhǔn)備接收輸入數(shù)據(jù)的信息(因?yàn)樗幢3秩魏沃档帽4娴臄?shù)據(jù))。在此例中應(yīng)指出,信號(hào)IN_ACCEPT被用以使能數(shù)據(jù)和有效鎖存器LDIN和LVIN。由于這時(shí)IN_ACCEPT是“1”,這些鎖存器像常規(guī)透明鎖存器那樣有效地工作,使得不管在IN_DATA總線上是什么數(shù)據(jù),一等到時(shí)鐘脈沖信號(hào)PH0變成“1”,就都裝進(jìn)數(shù)據(jù)鎖存器LDIN。當(dāng)然,只要來自其接收鎖存器的輸出QAOUT是“1”,此有效數(shù)據(jù)也將裝進(jìn)下一流水線級(jí)的下一個(gè)數(shù)據(jù)鎖存器LDOUT。因此,只要數(shù)據(jù)鎖存器不包含有效數(shù)據(jù),在其各個(gè)時(shí)鐘信號(hào)的下一個(gè)正周期期間,它接收或“裝載”任何提供給它的數(shù)據(jù)。在另一方面,這樣的無效數(shù)據(jù)不裝入任何來自其相應(yīng)接收鎖存器的接收信號(hào)是低電平(即“0”)的那些級(jí)。此外,來自有效鎖存器(它對(duì)下一有效鎖存器形成有效輸入信號(hào))的輸出信號(hào)只要相應(yīng)的IN_VALID(或QUIN)信號(hào)對(duì)有效鎖存器是低電平,就保持“0”。當(dāng)?shù)綌?shù)據(jù)鎖存器的輸入數(shù)據(jù)有效時(shí),有效信號(hào)IN_VALID通過提高到“1”指出此狀態(tài)。然后相應(yīng)的有效鎖存器的輸出在其各自時(shí)鐘脈沖相位信號(hào)的下一個(gè)上升沿時(shí)刻提高到“1”。例如,當(dāng)在時(shí)鐘脈沖相位信號(hào)PH0的下一個(gè)上升沿時(shí)刻相應(yīng)的信號(hào)IN_VALID成為高電平(即提高到“1”)時(shí),鎖存器LVIN的有效輸入信號(hào)QVIN就提高到“1”?,F(xiàn)在假定代之以數(shù)據(jù)輸入鎖存器LDIN包含有效數(shù)據(jù)。如果數(shù)據(jù)輸出鎖存器LDOUT準(zhǔn)備接收新數(shù)據(jù),其接收信號(hào)QAOUT將是“1”。在這種情況下,在時(shí)鐘脈沖信號(hào)PH1的下一個(gè)正周期期間,數(shù)據(jù)鎖存器LDOUT和有效鎖存器LVOUT將被使能,數(shù)據(jù)鎖存器LDOUT將裝載在其輸入端存在的數(shù)據(jù)。由于時(shí)鐘脈沖信號(hào)是不重疊的,這將在另一時(shí)鐘脈沖信號(hào)PH0的下一個(gè)上升沿前面發(fā)生。因此,在PH0的下一個(gè)上升沿,上述數(shù)據(jù)鎖存器(LDIN)在數(shù)據(jù)輸出鎖存器LDOUT安全地鎖存從鎖存器LDIN傳來的數(shù)據(jù)之前將不鎖存來自前級(jí)的新的輸入數(shù)據(jù)。因此,每個(gè)相鄰的能接收數(shù)據(jù)的數(shù)據(jù)鎖存器對(duì)(在一級(jí)內(nèi)或相鄰級(jí)之間)采用同樣的工序,因?yàn)樗鼈儗⒏鶕?jù)時(shí)鐘脈沖的交替的相位工作。任何不準(zhǔn)備接收新數(shù)據(jù)的數(shù)據(jù)鎖存器,因?yàn)樗巡荒軅魉偷挠行?shù)據(jù),將有一低電平的輸出接收信號(hào)(來自其接收鎖存器LA的QA輸出),而且將不裝載其數(shù)據(jù)鎖存器LDIN或LDOUT,此后,只要給定級(jí)或級(jí)的每側(cè)(輸入或輸出)的接收信號(hào)(來自接收鎖存器的輸出)是低電平的,將不裝載其相應(yīng)數(shù)據(jù)鎖存器。圖4也示出優(yōu)選實(shí)施例中所包括的一個(gè)復(fù)位特性。在所例舉的實(shí)例中,復(fù)位信號(hào)NOTRESET0連接到有效輸出鎖存器LVOUT的倒相復(fù)位輸入端R(反相像常規(guī)那樣用小圓圈表示)。眾所周知,這意味著每當(dāng)復(fù)位信號(hào)NOTRESET0成為“0”,有效寄存器LVOUT將被迫輸出“0”。當(dāng)復(fù)位信號(hào)成為低電平時(shí)(成為“0”)再使鎖存器復(fù)位的一個(gè)好處是傳輸中的間歇將使該鎖存器復(fù)位。然后每當(dāng)有效傳輸開始和復(fù)位信號(hào)成為高電平,它們將處在它們的“零位”或復(fù)位狀態(tài)。因此,復(fù)位信號(hào)NOTRESET0起數(shù)字式“ON/OFF”開關(guān)作用,為了驅(qū)動(dòng)流水線,它必須處于高電位值。應(yīng)指出,不必使流水線中所有持有有效數(shù)據(jù)的鎖存器復(fù)位。如圖4中所描繪,有效輸入鎖存器LVIN不是直接用復(fù)位信號(hào)NOTRESET0復(fù)位,而寧可說是間接復(fù)位。假定復(fù)位信號(hào)NOTRESET0跌落到“0”。有效輸出信號(hào)QVOUT也降落到“0”,與其以前的狀態(tài)無關(guān),隨后到接收輸出鎖存器LAOUT(經(jīng)門電路NAND1)的輸入成為高電平。接收輸出信號(hào)QAOUT也提高到“1”。然后,此QAOUT值“1”作為“1”被傳送到接收輸入鎖存器LAIN的輸入端而與有效輸入信號(hào)QVIN的狀態(tài)無關(guān)。然后在時(shí)鐘脈沖信號(hào)PH1的下一個(gè)上升沿,接收輸入QAIN提高到“1”。假定有效信號(hào)IN_VALID已準(zhǔn)確地復(fù)位到“0”,則在時(shí)鐘脈沖信號(hào)PH0的下一個(gè)上升沿,來自有效鎖存器LVIN的輸出將變成“0”,就像它直接復(fù)位一樣。如此例所述,必須僅在每級(jí)(包括最后級(jí))的一側(cè)復(fù)位有效鎖存器,以便復(fù)位全部的有效鎖存器。實(shí)際上,在許多應(yīng)用中將不必復(fù)位每個(gè)其它有效寄存器如果在時(shí)鐘脈沖的兩個(gè)相位PH0、PH1的大于一個(gè)完整周期期間能保證復(fù)位信號(hào)NOTRESET0是低電平,則在前面的流水線級(jí)中有效鎖存器將發(fā)生“自動(dòng)復(fù)位”(向回傳送復(fù)位信號(hào))。實(shí)際上,如果在時(shí)鐘脈沖兩相位至少有流水線級(jí)數(shù)那么多的整個(gè)周期數(shù)內(nèi)復(fù)位信號(hào)保持低電平,就只須在最后的流水線級(jí)中直接將有效輸出鎖存器復(fù)位。圖5a和5b(統(tǒng)稱為圖5)例示出時(shí)序圖,它示出不重疊的時(shí)鐘脈沖信號(hào)PH0、PH1之間的關(guān)系,復(fù)位信號(hào)的作用,和不同排列的有效和接收信號(hào)的數(shù)據(jù)的保持和傳輸,所說的保持和傳輸是在圖4所示實(shí)施例中配置的流水線級(jí)兩側(cè)的和在它們之間的。在圖5的時(shí)間圖中例示的實(shí)例中,假定來自數(shù)據(jù)鎖存器LDIN、LDOUT的輸出無須通過插入邏輯方框B1、B2的進(jìn)一步處理來傳輸。這是作為舉例而非限制。應(yīng)理解到在連續(xù)的流水線級(jí)的數(shù)據(jù)鎖存器間,或者在單獨(dú)流水線級(jí)的輸入和輸出側(cè)之間可以包括任何組合邏輯結(jié)構(gòu)。所例舉的實(shí)際輸入數(shù)據(jù)的值(例如十六進(jìn)制數(shù)據(jù)字“aa”或“04”)也僅是說明性的。如上所述,只要數(shù)據(jù)鎖存器其它存儲(chǔ)器件能接納和鎖存,或者存儲(chǔ)每比特或輸入字的值,則輸入數(shù)據(jù)總線可以有任意寬度(而且甚至可以是模擬的)。優(yōu)選的數(shù)據(jù)結(jié)構(gòu)-“令牌”在圖4所示的應(yīng)用實(shí)例中,由于任何級(jí)都不包括避免使輸入數(shù)據(jù)通過它的組合邏輯塊B1、B2等等的控制電路,所以每一級(jí)處理所有的輸入數(shù)據(jù)。為提供更大的適應(yīng)性,本發(fā)明包括一數(shù)據(jù)結(jié)構(gòu),其中的“令牌”用以在整個(gè)系統(tǒng)中分配數(shù)據(jù)和控制信息。每個(gè)令牌都由分開進(jìn)入一個(gè)或多個(gè)令牌字塊的一系列二進(jìn)制比特組成。此外,比特為三種類型中的一種地址比特(A)、數(shù)據(jù)比特(D)、擴(kuò)展比特(E)。作為例子而不是作為限定,假定數(shù)據(jù)在帶有1比特?cái)U(kuò)展比特線的8比特母線作為字傳輸。四字令牌的實(shí)例是按傳輸排列第一字EAAADDDDD第二字EDDDDDDDD第三字EDDDDDDDD第四字EDDDDDDDD應(yīng)指出,擴(kuò)展比特E(最好)用來作為對(duì)每個(gè)數(shù)據(jù)字的補(bǔ)充。此外,地址字段的長(zhǎng)度是可變的,最好是在第一字的擴(kuò)展比特之后就傳送。因此,在本發(fā)明中令牌由(二進(jìn)制)數(shù)字式數(shù)據(jù)的一個(gè)或多個(gè)字組成。每個(gè)這種字順次地而且最好是并行地傳送,雖然這種傳送方法不是必須的某些使用公知技術(shù)的串行數(shù)據(jù)傳送也是可能的。例如,在視頻分析器中,并行傳輸控制信息,而串行傳輸數(shù)據(jù)。如該例所說明,每個(gè)令牌在起始端最好有一用以識(shí)別令牌中所包括的數(shù)據(jù)類型的地址字段(A比特起始的串)。在大多數(shù)應(yīng)用中,為傳送整個(gè)地址字段、單個(gè)字或一個(gè)字的部分是足夠的,但根據(jù)本發(fā)明這不是必要的,只要相應(yīng)的流水線級(jí)包含邏輯電路,該邏輯電路就能存儲(chǔ)某些足夠長(zhǎng)的部分地址字段的表示,以便這些級(jí)接收和解碼整個(gè)地址字段。應(yīng)指出,傳送地址字段不需要專用線或寄存器。使用數(shù)據(jù)位傳輸。如下所述,如果不想用特定的地址字段驅(qū)動(dòng),流水線就不會(huì)慢下來,也就是說,流水線級(jí)將能無延遲地傳送令牌。在令牌中跟隨地址字段的數(shù)據(jù)剩余部分不受使用令牌的約束。這些D-數(shù)據(jù)位可以采用任意值,而且這些位所表示的意義在這里是不重要的。也就是說,數(shù)據(jù)的意義能改變,例如,取決于某一特定時(shí)刻數(shù)據(jù)在系統(tǒng)內(nèi)被安放的位置。在地址字段后附加的數(shù)據(jù)D的數(shù)量能根據(jù)需要或長(zhǎng)或短,在不同令牌中數(shù)據(jù)字的數(shù)可以極大地變化。地址字段和擴(kuò)展位被用來將控制信號(hào)傳送到流水線級(jí)。因?yàn)閿?shù)據(jù)線(D比特串)中的字?jǐn)?shù)可以是任意的,在數(shù)據(jù)字段中傳遞的信息也能相應(yīng)地變化。因此,下面的說明是針對(duì)地址位和擴(kuò)展位的使用。在本發(fā)明中,當(dāng)若干電路方框圖在比較簡(jiǎn)單的結(jié)構(gòu)中連接到一起時(shí),令牌是特別有用的。最簡(jiǎn)單的結(jié)構(gòu)是處理步驟的流水線。例如圖1所示的結(jié)構(gòu)。然而,令牌不限于只用在流水線結(jié)構(gòu)上。再次假定每個(gè)邏輯框代表一完整的流水線級(jí)。在圖1的流水線中,數(shù)據(jù)在圖中從左向右流動(dòng)。數(shù)據(jù)進(jìn)入機(jī)器并傳送進(jìn)處理級(jí)A。該級(jí)可以修改或不修改該數(shù)據(jù),然后將此數(shù)據(jù)傳送到B級(jí)。這種修改如果有的話會(huì)是隨機(jī)復(fù)雜的,而且通常送進(jìn)各級(jí)的數(shù)據(jù)項(xiàng)數(shù)與輸出的不同。B級(jí)再次改變了數(shù)據(jù)并送到C級(jí),如此等等。在諸如這種方案中,數(shù)據(jù)不能向相反方向傳送,使得C級(jí)不能將數(shù)據(jù)傳送到A級(jí)。這種限制常常是完全允許的。在另一方面,雖然兩級(jí)之間沒有直接的連接,很希望A級(jí)能和C級(jí)通訊。A級(jí)和C級(jí)通訊只能通過B級(jí)。令牌的優(yōu)點(diǎn)之一是它們有能力實(shí)現(xiàn)這類通訊。因?yàn)槿魏翁幚砑?jí)對(duì)其不認(rèn)識(shí)的令牌只是簡(jiǎn)單地讓它不改變地送往下級(jí)。按照這個(gè)例子,在每個(gè)令牌中,一個(gè)擴(kuò)展位和地址及數(shù)據(jù)字段一起傳送,使得一個(gè)處理級(jí)能通過一個(gè)令牌(它可以是任意長(zhǎng)度)而完全不必對(duì)它的地址解碼。按照這個(gè)例子,任何一個(gè)擴(kuò)展位是HIGH(一個(gè)“1”)的令牌,后面跟著是同一令牌的一部分的一個(gè)隨后的字。這個(gè)字也有一個(gè)擴(kuò)展位,它表明在令牌中是否有一個(gè)另外的字。當(dāng)一級(jí)遇到一個(gè)擴(kuò)展位是LOW(一個(gè)“0”)的令牌,就知道這是令牌的最后一個(gè)字。于是,下一個(gè)字被看作一個(gè)新令牌的第一個(gè)字。注意,雖然處理級(jí)的簡(jiǎn)單流水線特別有用,但應(yīng)理解令牌可用于處理單元的更復(fù)雜的結(jié)構(gòu)。一個(gè)更復(fù)雜的處理單元的例子描述于下。根據(jù)本發(fā)明,不必要用擴(kuò)展位的狀態(tài),即把擴(kuò)展位置“0”,來作為一個(gè)給定令牌的最后字的信號(hào)。代替本優(yōu)先方案的另一方法是改變擴(kuò)展位的位置,使它表明是令牌的第一個(gè)字而不是最后的字。在解碼硬件中作相應(yīng)的改變就可以實(shí)現(xiàn)這點(diǎn)。用本發(fā)明的擴(kuò)展位作為令牌中最后一個(gè)字而不是第一個(gè)字的信號(hào)的優(yōu)點(diǎn)是,對(duì)于修改一塊線路的特性常常有用。這個(gè)修改取決于令牌是否有擴(kuò)展位。這種例子之一是,一個(gè)令牌使處理視頻量化值的那一級(jí)起作用。視頻量化值儲(chǔ)存在一個(gè)量化表中(典型地是一個(gè)存儲(chǔ)器器件)。例如,一張包含64個(gè)8位任意二進(jìn)制整數(shù)的表。為了裝一個(gè)新的量化表到流水線的量化器級(jí),一個(gè)“QUANT_TABLE”令牌被送到量化器。在這一情況下,假定令牌包含65個(gè)令牌字。第一個(gè)字包含“QUANT_TABLE”碼,即建立一量化表。這后面跟著64個(gè)字,它們是量化表中的整數(shù)。當(dāng)為視頻數(shù)據(jù)編碼時(shí),偶爾必須傳送這樣一張量化表。為了實(shí)現(xiàn)這一功能,一個(gè)不帶擴(kuò)展字的QUANT_TABLE令牌可以送到量化器級(jí)。見到這個(gè)令牌并注意到它的第一個(gè)字的擴(kuò)展位為低,量化器級(jí)可讀出它的量化表,并建一個(gè)QUANT_TABLE令牌。這個(gè)令牌包含64個(gè)量化表值。第一個(gè)字的擴(kuò)展位(它原來是LOW)變?yōu)镠IGH,令牌繼續(xù)帶著一些HIGH擴(kuò)展位,直到令牌的新的結(jié)束為止。用第64個(gè)量化表值的擴(kuò)展位為L(zhǎng)OW表明令牌的新結(jié)束。在整個(gè)系統(tǒng)中以這種典型的方式進(jìn)行并編碼成位流。繼續(xù)看這個(gè)例子,量化器根據(jù)QUANT_TABLE令牌的第一個(gè)字的擴(kuò)展位是否置1,裝一新量化表到它自己的存儲(chǔ)器件,或者從存貯器件中讀出它的表。所以,選擇是否在一令牌中用擴(kuò)展位作為第一個(gè)或最后一個(gè)令牌字的信號(hào),取決于將要用流水線的系統(tǒng)。根據(jù)本發(fā)明,兩種可供選擇的方法都是可能的。對(duì)優(yōu)先使用的擴(kuò)展位方案的另一可供選擇的方法是在令牌開始包含一長(zhǎng)度計(jì)數(shù)。這種安排在令牌很長(zhǎng)時(shí),可以有好處,比如,效率高。例如,在一已知應(yīng)用中,假定一典型令牌是1000字長(zhǎng)。用上面說明的擴(kuò)展位方案(用附于每個(gè)令牌字的位),為了包含所有的擴(kuò)展位,令牌就得需要1000個(gè)額外的位。然而,把令牌長(zhǎng)度以二進(jìn)制形式編碼只需要10位。所以,雖然長(zhǎng)令牌有一些用處,經(jīng)驗(yàn)表明,短令牌也有許多用處。在這里,本優(yōu)先使用的擴(kuò)展位方案是有利的。如果一個(gè)令牌只有一個(gè)字長(zhǎng),則只需一位來作此標(biāo)志。然而,一個(gè)計(jì)數(shù)方案典型地就得和前面一樣要求同樣的10位。長(zhǎng)度計(jì)數(shù)方案的缺點(diǎn)包括以下方面1)對(duì)短令牌效率不高;2)對(duì)令牌加了一個(gè)最大長(zhǎng)度限制(只用10位,不能對(duì)大于1023字計(jì)數(shù));3)在產(chǎn)生計(jì)數(shù)(這大概是在令牌開始時(shí)刻)以前必須已知令牌長(zhǎng)度;4)處理令牌的每塊線路可能需要有對(duì)字計(jì)數(shù)的硬件;和5)如果計(jì)數(shù)萬一被破壞(由于一個(gè)數(shù)據(jù)傳送錯(cuò)誤),就不清楚是否能得到恢復(fù)。根據(jù)本發(fā)明,擴(kuò)展位方案的優(yōu)點(diǎn)包括1)流水線級(jí)不需要包含對(duì)每個(gè)令牌解碼的線路塊,因?yàn)閷?duì)未被識(shí)別的令牌只考慮擴(kuò)展位而能讓它正確地通過;2)對(duì)所有令牌,擴(kuò)展位的編碼是同樣的;3)對(duì)令牌長(zhǎng)度沒有限制;4)對(duì)短令牌此方案效率高(在表示令牌長(zhǎng)度的總開銷方面);5)可自然地完成糾錯(cuò)。如果一個(gè)擴(kuò)展位被破壞,則將產(chǎn)生一隨機(jī)令牌(當(dāng)一個(gè)擴(kuò)展位的破壞是從“1”變成“0”時(shí))或者丟失一個(gè)令牌(擴(kuò)展位的破壞是從“0”變成“1”)。另外,問題局限于所涉及的一些令牌。在那個(gè)令牌以后,自動(dòng)地重新開始正確運(yùn)行。另外,地址字段的長(zhǎng)度可以改變。這是非常有利的,因?yàn)樗试S最常用的令牌壓縮到最小的字?jǐn)?shù)。這在視頻數(shù)據(jù)流水線系統(tǒng)中同樣是很重要的,因?yàn)樗WC所有處理級(jí)能在全帶寬連續(xù)運(yùn)行。根據(jù)本發(fā)明,為了允許地址字段的長(zhǎng)度是可變的,地址是這樣選擇的,使得后面跟著隨機(jī)數(shù)據(jù)的短地址永遠(yuǎn)不會(huì)和一個(gè)較長(zhǎng)的地址相混淆。對(duì)地址字段編碼優(yōu)先使用的技術(shù)是被Huffman第一個(gè)發(fā)現(xiàn)的著名技術(shù),因此,通用名字叫“HuffmanCode”。(地址字段也用作激活一個(gè)預(yù)期的流水線級(jí)的“碼”)。然而有本行一般技能的人會(huì)知道,其他編碼方案也可以被成功地使用。雖然在數(shù)字設(shè)計(jì)領(lǐng)域Huffman編碼是大家很熟悉的,下面的例子提供一個(gè)概略的背景Huffman碼包含由一個(gè)符號(hào)串組成的字(在數(shù)字系統(tǒng)的情況下,就如本發(fā)明中,符號(hào)通常是二進(jìn)制數(shù)字)。碼字的長(zhǎng)度可變。Huffman碼字的特殊特性在于碼字是這樣選擇的,使得沒有一個(gè)較長(zhǎng)的碼字是用形成一個(gè)較短的碼字的符號(hào)開始的。根據(jù)本發(fā)明,令牌地址字段優(yōu)先選用著名的Huffman編碼技術(shù)(雖然不是必要的)。在本項(xiàng)發(fā)明中,地址字段也優(yōu)先從第一個(gè)字令牌的最高有效位(MSB)開始。(注意,MSB的指定是任意的,本方案可以修改以適應(yīng)對(duì)MSB的不同指定)。地址字段延伸到鄰近的一些較低有效位。在一已知應(yīng)用中,如一個(gè)令牌地址要求多于一個(gè)令牌字,即超出了任一給定字中的最低有效位,此地址字段將延續(xù)到下個(gè)字的最高有效位。地址字段的最小長(zhǎng)度是一位。在本發(fā)明中,若干已知的硬件結(jié)構(gòu)中的任一個(gè)可用來產(chǎn)生令牌。這類結(jié)構(gòu)之一是微編程狀態(tài)機(jī)。然而,大家知道的微處理器或其它設(shè)備也可用。按照本發(fā)明,令牌方案的主要優(yōu)點(diǎn)在于它對(duì)預(yù)想不到的需要的適應(yīng)能力。例如,假使引入一個(gè)新令牌,最大的可能性是這將只影響少量流水線級(jí)。最可能的情況是,只影響兩級(jí)或兩塊線路,即首先產(chǎn)生令牌的那一塊和已經(jīng)被新設(shè)計(jì)或修改來處理新令牌的那一塊或那一級(jí)。注意,不必要去修改任何其它流水線級(jí)。更確切地說,這些級(jí)不需對(duì)它們的設(shè)計(jì)作修改就能夠處理新令牌,因?yàn)樗鼈儾蛔R(shí)別新令牌,就相應(yīng)地讓那個(gè)令牌不被修改地通過。本發(fā)明有能力保持大量的已存在的、已設(shè)計(jì)的器件不受影響。這種能力有明顯的優(yōu)點(diǎn)。保持一組芯片中的某些半導(dǎo)體芯片完全不受該組中其它芯片改進(jìn)設(shè)計(jì)的影響是可能的。從用戶和芯片制造者的觀點(diǎn)看都是有利的。即使修改意味著由于設(shè)計(jì)改變影響到所有的芯片(由于集成度的增加,一個(gè)系統(tǒng)內(nèi)的芯片數(shù)目減少,所以這一情況變得越來越可能),在投放市場(chǎng)的時(shí)間方面仍比用別的辦法會(huì)有可觀的優(yōu)勢(shì),因?yàn)橥瑯拥脑O(shè)計(jì)可以被重復(fù)使用。特別注意當(dāng)必須把令牌組擴(kuò)展到包含兩個(gè)字地址時(shí)發(fā)生的情況。甚至在這種情況,仍舊不必要修改一個(gè)已存在的設(shè)計(jì)。在流水線級(jí)中的令牌解碼器會(huì)企圖對(duì)這樣一個(gè)令牌的第一個(gè)字解碼,而會(huì)決斷出它不能識(shí)別這個(gè)令牌。然后它會(huì)把未改變的令牌傳送過去,利用擴(kuò)展位正確地進(jìn)行這一操作。它不會(huì)企圖對(duì)令牌的第二個(gè)字解碼(即使這包含著地址位),因?yàn)樗鼤?huì)“假定”第二個(gè)字是它不能識(shí)別的令牌數(shù)據(jù)字段的一部分。在許多情況下,一個(gè)流水線級(jí)或一個(gè)有聯(lián)系的線路塊會(huì)修改令牌。這通常地,但不是必定地,采取修改一個(gè)令牌的數(shù)據(jù)字段的方式。另外,普通的情況是修改令牌中數(shù)據(jù)字的數(shù)目,或者去除某些數(shù)據(jù)字或者添加一些新字。在某些情況,把一些令牌完全從令牌流中刪去。在大多數(shù)應(yīng)用中,流水線級(jí)會(huì)典型地只對(duì)少數(shù)令牌解碼(只被少數(shù)令牌起動(dòng));此級(jí)不識(shí)別其它令牌而不改變地讓它們通過。在許多情況下,只有一個(gè)令牌被解碼,即數(shù)據(jù)令牌字本身。在許多應(yīng)用中,一特定級(jí)的操作常常取決于它自己過去操作的結(jié)果。因此,這一級(jí)的“狀態(tài)”取決于它以前的狀態(tài)。換句話說,這一級(jí)取決于存儲(chǔ)的狀態(tài)信息。另外一種說法是,它必須保留一個(gè)或更多的周期以前有關(guān)它自己歷史的某些信息。本發(fā)明不僅適用于在數(shù)據(jù)通路中鎖存器是簡(jiǎn)單的流水線鎖存器的應(yīng)用,也很好地適用于包含這樣的“狀態(tài)機(jī)”級(jí)的流水線。按照本發(fā)明,兩線接口對(duì)上述的狀態(tài)機(jī)線路的適用性是本發(fā)明的一個(gè)很大的優(yōu)點(diǎn)。在用狀態(tài)機(jī)控制數(shù)據(jù)通路的地方尤其是這樣。在這種情況,上述的兩線接口技術(shù)可用來保證狀態(tài)機(jī)的“當(dāng)前狀態(tài)”保持和流水線中控制著的數(shù)據(jù)同步。圖6表示線路的一個(gè)例子的簡(jiǎn)化方框圖。這個(gè)線路包含在一個(gè)為令牌地址字段解碼的一個(gè)流水線級(jí)中。它表示一個(gè)具有“狀態(tài)機(jī)”特性的流水線級(jí)。令牌的每個(gè)字包含一個(gè)“擴(kuò)展位”,在令牌中有更多的字時(shí),擴(kuò)展位為高(HIGH),如為令牌的最后一個(gè)字則擴(kuò)展位為低(LOW)。如果這是令牌的最后一個(gè)字,下一個(gè)有效數(shù)據(jù)字是新令牌的開始,所以它的地址必須被解碼。在任何給定字中是否要對(duì)令牌地址解碼的決定,取決于知道前面的擴(kuò)展位的值。只是為了簡(jiǎn)化的原因,兩線接口(以及接受和使有效信號(hào)及鎖存器)在圖中未說明,所有處理線路復(fù)位的細(xì)節(jié)也被略去。和以前一樣,假定為一個(gè)8位字只是為了舉例,不是為了限制。這個(gè)示范的流水線使數(shù)據(jù)位和擴(kuò)展位延遲了一個(gè)流水線級(jí)。它也對(duì)數(shù)據(jù)令牌解碼。當(dāng)數(shù)據(jù)令牌的第一個(gè)字出現(xiàn)在線路的輸出時(shí),信號(hào)“DATA_ADDR”被產(chǎn)生并設(shè)置為“HIGH”。數(shù)據(jù)位被LDIN和LDOUT鎖存器延遲。對(duì)于用于本例的8個(gè)數(shù)據(jù)位,兩個(gè)鎖存器中的每一個(gè)重復(fù)8次(對(duì)應(yīng)一個(gè)8-輸入,8-輸出鎖存器)。類似地,擴(kuò)展位被擴(kuò)展位鎖存器LEIN和LEOUT延遲。在本例中,鎖存器LEPREV被提供作存儲(chǔ)擴(kuò)展位的最近狀態(tài)之用。擴(kuò)展位的值裝入LEIN,然后在不重疊(non_overlapping)時(shí)鐘相位信號(hào)PH1的下一個(gè)上升沿到來時(shí)裝入LEOUT。所以,只在非重疊兩相時(shí)鐘的第二個(gè)一半期間,鎖存器LEOUT包含當(dāng)前擴(kuò)展位的值。然而,鎖存器LEPREV在時(shí)鐘信號(hào)PH0的下一個(gè)上升沿來到時(shí)裝入這個(gè)擴(kuò)展位的值。這個(gè)時(shí)鐘信號(hào)與擴(kuò)展位輸入鎖存器LEIN的使能信號(hào)是同一個(gè)信號(hào)。所以,在上一PH0時(shí)鐘相位期間,鎖存器LEPREV的輸出QEPREV會(huì)持?jǐn)U展位的值。從反相(inverting)Q輸出的數(shù)據(jù)字的5位,加上鎖存器LDIN不反相MD[2],與前面的擴(kuò)展位值QEPREV一起,在一系列邏輯門NAND1、NAND2和NOR1中被組合。這些邏輯門的操作在數(shù)字設(shè)計(jì)技術(shù)中是大家熟知的。符號(hào)表示“N-MD[m]”表明中間數(shù)據(jù)字MD[70]的m位的邏輯反。用大家知道的布爾代數(shù)的技術(shù),可以表明只有當(dāng)上一次擴(kuò)展位是“0”(QRPEV=“0”)和非反相Q鎖存器LDIN的輸出處的數(shù)據(jù)字(原來的輸入字)的結(jié)構(gòu)是“000001xx”時(shí),從這個(gè)邏輯部件的輸出信號(hào)SA(從NOR1的輸出)是HIGH(一個(gè)“1”)?!?00001xx”這個(gè)結(jié)構(gòu)表示MD[7]-MD[3]這5個(gè)高次序位都是“0”,MD[2]位是“1”,在0~1位置的位為任何任意值。因此,有4個(gè)可能的數(shù)據(jù)字(“xx”有四種排列)會(huì)使SA變HIGH。SA連接到地址信號(hào)鎖存器LADDR的輸入端,所以也使LADDR鎖存器的輸出變高。換句話說,僅當(dāng)四個(gè)可能合適的令牌之一出現(xiàn)和僅當(dāng)前面的擴(kuò)展位是零時(shí),這一級(jí)才提供一個(gè)起動(dòng)信號(hào)(DATA_ADDR=“1”)。上次擴(kuò)展位是零,就是說上次的數(shù)據(jù)字是上次令牌字串中的最后一個(gè)字,這意味著當(dāng)前令牌字是當(dāng)前令牌的第一個(gè)字。當(dāng)從鎖存器LEPREV來的信號(hào)QPREV為L(zhǎng)OW時(shí),在鎖存器LDIN輸出處的值便是一個(gè)新令牌的第一個(gè)字。邏輯門NAND1、NAND2和NOR1對(duì)數(shù)據(jù)令牌(000001xx)解碼。然而,這個(gè)地址解碼信號(hào)SA在鎖存器LADDR中被延遲,使得信號(hào)DATA_ADDR與輸出數(shù)據(jù)OUT_DATA和OUT_EXTN有同樣的定時(shí)。按照本發(fā)明,圖7是另一個(gè)狀態(tài)有關(guān)流水線級(jí)的例子,它產(chǎn)生1AST_OUT_EXTN信號(hào)以表明前一個(gè)輸出擴(kuò)展位OUT_EXTN的值。加到現(xiàn)在的和上一個(gè)擴(kuò)展位鎖存器(它們分別是LEOUT和LEPREV)上的兩個(gè)使能使號(hào)(在CK輸入處)之一是從邏輯門AND1得到的,使得這些鎖存器只在數(shù)據(jù)有效和數(shù)據(jù)正被接收時(shí)才為它們自己裝入新值(輸出有效鎖存器LVOUT和輸出接受鎖存器LAOUT的Q輸出都為高)。這樣,它們只保持有效擴(kuò)展位而不裝入與無效數(shù)據(jù)有聯(lián)系的不符合邏輯的值。在圖7所示的具體裝置中,兩線的有效/接收邏輯包括OR1門和OR2門,它們的輸入信號(hào)是下游的接收信號(hào)和分別叫LVIN和LVOUT的有效鎖存器的倒相輸出。這列舉了一種方法如果鎖存器有反相輸出,圖4中的NAND1/2門和INV1/2門可被取代。雖然這是一個(gè)“狀態(tài)有關(guān)”的流水線級(jí)的極其簡(jiǎn)單的例子,即,它僅依賴于一個(gè)單個(gè)位的狀態(tài),但僅當(dāng)數(shù)據(jù)真正在流水線之間傳送時(shí),所有鎖存器中保持的狀態(tài)才會(huì)被更新。這一點(diǎn)是普遍正確的。換句話說,僅當(dāng)數(shù)據(jù)是既有效又正在被下一級(jí)接收時(shí),鎖存器中的狀態(tài)才會(huì)被更新。相應(yīng)地,必須小心保證這些鎖存器合適地復(fù)位。按照本發(fā)明,令牌的產(chǎn)生和使用同大家知道的數(shù)據(jù)通過流水線傳送的編碼技術(shù)相比有幾個(gè)優(yōu)點(diǎn)。第一,如上所述,令牌使不同長(zhǎng)度的地址字段(并且,例如,可利用Huffman編碼來)提供效率高的常用令牌的表示法。第二,令牌長(zhǎng)度的一致編碼使得令牌的結(jié)束(因而下一令牌的開始)被正確處理(包括簡(jiǎn)單的不處理傳送)。即使在給定的流水線級(jí)中令牌解碼器線路不能識(shí)別的令牌也可正確處理。第三,對(duì)不被識(shí)別的令牌(即不改變地傳送它們)處理的規(guī)則和硬件結(jié)構(gòu)使得流水線中的一級(jí)可以與不是它緊鄰的下游級(jí)之間通訊。這也增加了流水線的可擴(kuò)充能力和效率高的適應(yīng)能力,因?yàn)樗箤砀淖兞钆平M時(shí)不需要對(duì)現(xiàn)有的流水線級(jí)作大規(guī)模地重設(shè)計(jì)。本發(fā)明的令牌在和上面和下面都說到過的兩線接口一起使用時(shí)更是特別有用。作為上述的一個(gè)例子,圖8a和8b取在一起(下面集體地稱之為圖8),描述一個(gè)流水線級(jí)的方塊圖。其功能如下。如果這級(jí)正在處理一預(yù)定的令牌(在此例中已知為數(shù)據(jù)令牌),則它會(huì)復(fù)制令牌中的每個(gè)字,除掉第一個(gè)字以外。第一個(gè)字中包含數(shù)據(jù)令牌的地址字段。另一方面,如果這級(jí)正在處理任何其它類型的令牌,它會(huì)刪除每個(gè)字。在輸出端的最終效果是只出現(xiàn)數(shù)據(jù)令牌而且這些令牌中的每個(gè)字重復(fù)兩次。本示例系統(tǒng)中的許多組成部分可能和那些已描述過的示于圖4、6和7中的簡(jiǎn)單得多的結(jié)構(gòu)中的組成部分一樣。這說明了一個(gè)很大的優(yōu)點(diǎn)。更加復(fù)雜的流水線級(jí)會(huì)仍舊享有同樣的靈活性和伸縮性的好處,因?yàn)橥瑯拥膬删€接口可以不需改制或很少改制而被使用。圖8所示的數(shù)據(jù)復(fù)制級(jí)僅是在任何已知應(yīng)用中流水線級(jí)能夠完成的無數(shù)種不同類型的操作的一個(gè)例子。然而,這個(gè)“復(fù)制級(jí)”是能夠形成“瓶頸”的級(jí),使得按照這個(gè)具體實(shí)現(xiàn),流水線會(huì)“擠在一起”。“瓶頸”可以是任何級(jí),或者它要相對(duì)長(zhǎng)的時(shí)間來完成操作,或者在流水線中它生成的數(shù)據(jù)比它接收的更多。這個(gè)例子也說明,按照這個(gè)具體實(shí)現(xiàn),兩線接收/有效接口可以很容易地適應(yīng)不同的應(yīng)用。圖8所示的復(fù)制級(jí)也有兩個(gè)鎖存器LEIN和LEOUT,如同圖6所示的例子,它們分別把在這一級(jí)的輸入端和輸出端的擴(kuò)展位的狀態(tài)鎖住。如圖8a所示,輸入擴(kuò)展位鎖存器LEIN和輸入數(shù)據(jù)鎖存器LDIN及使有效信號(hào)IN_VALID是時(shí)鐘同步的。為了易于參閱,包含在復(fù)制級(jí)的各種鎖存器和它們各自的輸出信號(hào)配對(duì)如下在復(fù)制級(jí),從數(shù)據(jù)鎖存器LDIN的輸出,形成被稱作MID_DATA的中間數(shù)據(jù)。這個(gè)中間數(shù)據(jù)字僅當(dāng)中間接受信號(hào)(在圖8a中標(biāo)為“MID_ACCEPT”)設(shè)置為HIGH時(shí),才裝入數(shù)據(jù)輸出鎖存器LDOUT。圖8中在接收鎖存器LAIN和LAOUT下面所示的線路系統(tǒng)是被加到基本流水線結(jié)構(gòu)的線路,以產(chǎn)生各種內(nèi)部控制信號(hào)。這些信號(hào)用來復(fù)制數(shù)據(jù),包括“DATA_TOKEN”信號(hào),它表明線路當(dāng)前正在處理的是一個(gè)有效數(shù)據(jù)令牌,還包括NOT_DUPLICATE信號(hào),它用來控制數(shù)據(jù)的復(fù)制。當(dāng)線路正在處理數(shù)據(jù)令牌時(shí),NOTDUPLICATE信號(hào)在一個(gè)HIGH和一個(gè)LOW狀態(tài)之間變動(dòng),這使令牌中的每個(gè)字被復(fù)制一次(但不是多次)。當(dāng)線路不是正在處理一個(gè)有效數(shù)據(jù)令牌,則NOT_DUPLICATE信號(hào)保持在HIGH狀態(tài)。相應(yīng)地,這意味著正在處理的令牌字不被復(fù)制。如圖8a說明,中間數(shù)據(jù)字8位中的較高的6位和從鎖存器LI1來的輸出信號(hào)形成邏輯門組NOR1、NOR2、NAND18的輸入。從邏輯門NAND18來的輸出信號(hào)標(biāo)明為S1。用眾所周知的布爾代數(shù)可以看出,僅當(dāng)輸出信號(hào)QI1是“1”和NID_DATA字有以下結(jié)構(gòu)“000001xx”時(shí),信號(hào)S1才是“0”。結(jié)構(gòu)“000001xx”表明較高的五位都是“0”,MID_DATA[2]是“1”,在MID_DATA[1]和MID_DATA位置上有任何任意值。所以信號(hào)S1充當(dāng)“令牌識(shí)別信號(hào)”,僅當(dāng)MID_DATA有一預(yù)定的結(jié)構(gòu)和從鎖存器LT1來的輸出是“1”時(shí)S1才是低。鎖存器LI1和它的輸出QI1的特性進(jìn)一步說明如下。鎖存器LO1完成對(duì)中間的擴(kuò)展位(標(biāo)為“MID_EXTN”和作為信號(hào)S4)的最后值鎖存的功能,在時(shí)鐘相伴隨PH0的下一個(gè)上升沿來到時(shí)它的把這個(gè)值裝入鎖存器LI1。LI1的輸出是位QI1,它也是形成信號(hào)S1的令牌解碼邏輯組的輸入之一。如上面說明的,信號(hào)S1只有在信號(hào)QI1是“1”(并且MID_DATA信號(hào)有預(yù)定的結(jié)構(gòu))時(shí),才可以降低為“0”。所以,每當(dāng)上一擴(kuò)展位是“0”,表明上一令牌已結(jié)束時(shí),信號(hào)S1才可降低到“0”。所以,MID_DATA字是一個(gè)新令牌的第一個(gè)數(shù)據(jù)字。鎖存器LO2和LI2和與非門NAND20、NAND22一起為DATA_TOKEN信號(hào)形成存儲(chǔ)器。在正常情況,NAND20輸入端的信號(hào)QI1和NAND22輸入端的信號(hào)S1兩者都會(huì)是在邏輯“1”狀態(tài)。再用布爾代數(shù)技術(shù)可以看出,在這一情況下這些與非門的工作方式和倒相器一樣,即鎖存器LI2的輸出信號(hào)QI2在NAND20中倒相,然后這個(gè)信號(hào)又被NAND22倒相,形成信號(hào)S2。在這一情況下,因?yàn)橥分杏袃纱芜壿嫷瓜?,信?hào)S2會(huì)有與QI2相同的值。也可看出DATA_TOKEN信號(hào)在鎖存器LO2的輸出端形成對(duì)鎖存器LI2的輸入。作為結(jié)果,只要QI1和S1兩者都是HIGH的情況保持不變,信號(hào)DATA_TOKEN就會(huì)保持它的狀態(tài)(無論是“0”或“1”)。即使時(shí)鐘信號(hào)PH0和PH0正在對(duì)鎖存器(分別是LI2和LO2)鎖存時(shí),這也是正確的。只有當(dāng)信號(hào)QI1和S1兩者都是“0”或其中之一是“0”時(shí),DATA_TOKEN的值才能改變。如早些時(shí)說明的,當(dāng)前面的擴(kuò)展位是“0”時(shí),信號(hào)QI1總是“0”。所以每當(dāng)MID_DATA值是令牌的第一個(gè)字時(shí)(所以也包括令牌的地址字段),信號(hào)QI1總是“0”。在這一情況,信號(hào)S1可以是“0”或者“1”。如早些時(shí)說明的,如果MID_DATA字有在本例中指明為“數(shù)據(jù)”令牌的預(yù)定結(jié)構(gòu),信號(hào)S1就會(huì)是“0”。如果MID_DATA字有其它任何結(jié)構(gòu)(指明令牌是某種別的令牌,不是一個(gè)數(shù)據(jù)令牌),S1就會(huì)是“1”。如果QI1是“0”和S1是“1”,這表明有某個(gè)不同數(shù)據(jù)令牌的令牌。在數(shù)字電子學(xué)領(lǐng)域,眾所周知,NAND20的輸出必定是“1”。與非門NAND22會(huì)把它反相(如前面說明的),所以信號(hào)S2將是“0”。作為結(jié)果,在下一個(gè)PH1時(shí)鐘相位開始時(shí),這個(gè)“0”值會(huì)被裝入鎖存器LO2,DATA_TOKEN信號(hào)會(huì)變成“0”,表明線路正在處理的不是數(shù)據(jù)令牌。如果QI1是“0”和SO是“0”,從而表明是一個(gè)數(shù)據(jù)令牌,于是信號(hào)S2將是“1”(不管從NAND20輸出來的NAN22其它輸入是什么)。結(jié)果,在下一個(gè)PH1時(shí)鐘相位開始時(shí),這個(gè)“1”值會(huì)被裝入鎖存器LO2,DATA_TOKEN號(hào)會(huì)變成“1”,表明線路正在處理一個(gè)數(shù)據(jù)令牌。NOT_DUPLICATE信號(hào)(輸出信號(hào)QO3)類似地在時(shí)鐘PH0的下一個(gè)上升沿到來時(shí)被裝入鎖存器LI3。鎖存器LI3的輸出信號(hào)QI3和輸出信號(hào)QI2在邏輯門NAND24中被組合成信號(hào)S3。和以前一樣,布爾代數(shù)能被用來表明,僅當(dāng)兩個(gè)信號(hào)QI2和QI3都有值“1”時(shí),信號(hào)S3才會(huì)是“0”。如果信號(hào)QI2變成“0”,即數(shù)據(jù)令牌信號(hào)是“0”,則信號(hào)S3變成“1”。換句話說,如果沒有一個(gè)有效數(shù)據(jù)令牌(QI2=0)或數(shù)據(jù)字不是一個(gè)復(fù)制品(QI3=0),則信號(hào)S3變高?,F(xiàn)在假定,在多于一個(gè)時(shí)鐘信號(hào)期間,數(shù)據(jù)令牌信號(hào)保持為高。因?yàn)镹OT_DUPLICATE信號(hào)(QO3)“反饋”到鎖存器LI3,并會(huì)被邏輯門NAND24倒相(因?yàn)樗牧硪粋€(gè)輸入QI2保持HIGH),輸出信號(hào)QO3將在“0”和“1”之間跳變。然而如果沒有有效數(shù)據(jù)令牌,信號(hào)QI2會(huì)是“0”,而信號(hào)S3和輸出QO3會(huì)被強(qiáng)迫為HIGH,直到DATA_TOKEN信號(hào)再次變成“1”為止。輸出QO3(NOT_DUPLICATE信號(hào))也被反饋并在一系列邏輯門(NAND16和INV16,它們共同形成與門)中與接受鎖存器LAIN的輸出QA1相結(jié)合。僅當(dāng)QA1和QO3兩者的值都是“1”時(shí),邏輯門的輸出才是“1”。如圖8a所示,與門(邏輯門NAND16后面跟著邏輯門INV16)的輸出也形成接收信號(hào)IN_ACCEPT。如上面描述過的,這個(gè)信號(hào)用于兩線接口結(jié)構(gòu)。接收信號(hào)IN_ACCEPT也用作對(duì)鎖存器LDIN,LEIN和LVIN的使能信號(hào)。結(jié)果,如果NOT_DUPLICATE信號(hào)是低,接收信號(hào)IN_ACCEPT也會(huì)是低,而所有這三個(gè)鎖存器會(huì)被禁止,會(huì)在它們的輸出端保持存貯的值。在NOT_DUPLICATE信號(hào)變高以前,本級(jí)將不接收新數(shù)據(jù)。為了強(qiáng)迫接收鎖存器LAIN的輸出為高,除了前述的一些要求外,還以此作補(bǔ)充。只要有一個(gè)有效數(shù)據(jù)令牌(DATA_TOKEN信號(hào)QO2是“1”),信號(hào)QO3就會(huì)在HIGH和LOW狀態(tài)之間跳變,使得輸入鎖存器能夠并至多可能在兩個(gè)時(shí)鐘相位PH0和PH1各自的隔周完整周期內(nèi)接受數(shù)據(jù)。用“HIGH”O(jiān)UT_ACCEPT信號(hào)表明的下一級(jí)已準(zhǔn)備好接收數(shù)據(jù),這個(gè)附加條件當(dāng)然必須仍舊被滿足。所以輸出鎖存器LDOUT要把同樣的數(shù)據(jù)字放到輸出總線OUT_DATA上,這至少持續(xù)兩個(gè)完全時(shí)鐘周期。僅當(dāng)數(shù)據(jù)令牌有效(QO2HIGH),使有效信號(hào)QVOUT又是HIGH時(shí),OUT_VALID信號(hào)才會(huì)是“1”。信號(hào)QEIN是對(duì)應(yīng)MID_DATA的擴(kuò)展位。它和信號(hào)S3在一系列邏輯門(INV10和NAND10)中被組合而形成信號(hào)S4。在一個(gè)數(shù)據(jù)令牌出現(xiàn)期間,每個(gè)數(shù)據(jù)字MID_DATA被重復(fù)。方法是把它裝入輸出鎖存器兩次。在這樣做的第一次期間,由于NAND10的作用,S4會(huì)被迫為“1”。在MID_DATA被裝入LDOUT形成OUT_DATA[70]的同時(shí),信號(hào)S4被裝入鎖存器LEOUT,形成OUTEXIN。所以,給定的MID_DATA第一次被裝入LEOUT時(shí),有關(guān)的OUTEXTN會(huì)被迫變高,而在第二次時(shí),OUTEXTN會(huì)和信號(hào)QEIN一樣?,F(xiàn)在考慮這種情況,在一個(gè)令牌的最后字期間已知QEIN是低。在第一次期間,MID_DATA裝入LDOUT,OUTEXTN會(huì)是“1”;而在第二次期間OUTEXTN會(huì)是“0”,表明令牌的真正結(jié)束。使有效鎖存器LVIN的輸出信號(hào)QVIN和信號(hào)QI3一起在類似的門組合(INV12和NAND12)中被組合,形成信號(hào)S5。用已知的布爾技術(shù)可以看出,不論在使有效信號(hào)QVIN為高,還是在信號(hào)QI3為低(表明數(shù)據(jù)是復(fù)制品)時(shí),信號(hào)S5是高。信號(hào)S5裝入使有效輸出鎖存器LVOUT,同時(shí),MID_DATA裝入LDOUT,中間擴(kuò)展位(信號(hào)S4)裝入LEOUT。信號(hào)S5和信號(hào)QO2(數(shù)據(jù)令牌信號(hào))也在邏輯門NAND30和INV30中組合,形成輸出使有效信號(hào)OUT_VALID。如早些時(shí)所說的,僅當(dāng)有效令牌和使有效信號(hào)QVOUT為高時(shí),OUT_VALID才為高。在本發(fā)明中,MID_ACCEPT信號(hào)和信號(hào)S5在一系列邏輯門(NAND26和INV26)中組合,形成信號(hào)S6。這些邏輯門實(shí)現(xiàn)大家知道的與功能。信號(hào)S5用作對(duì)鎖存器LO1,LO2和LO3的兩個(gè)使能信號(hào)之一。當(dāng)MID_ACCEPT信號(hào)為高以及不論使有效信號(hào)QVIN為高還是令牌是一個(gè)復(fù)制品(QI3是“0”)時(shí),信號(hào)S6上升到“1”。所以,如果信號(hào)MID_ACCEPT為高,當(dāng)時(shí)鐘信號(hào)PH1為高,每當(dāng)有效輸入數(shù)據(jù)裝到這一級(jí)的輸入或當(dāng)被鎖存的數(shù)據(jù)是復(fù)制品時(shí),鎖存器LO1~LO3會(huì)被使能。從以上討論可以看出,在圖8a和8b中所示的這一個(gè)級(jí)能在使有效信號(hào)和接收信號(hào)的控制下接收和傳送數(shù)據(jù),如在前面的具體裝置中那樣。但有一個(gè)例外,就是在輸入方的接收鎖存器LAIN的輸出信號(hào)和跳變的復(fù)制信號(hào)組合,使得在新字將被接收以前,一個(gè)數(shù)據(jù)字會(huì)被輸出兩次。當(dāng)然,各種邏輯門,諸如NAND16和INV16,可以用等效的邏輯電路(在這一情況,一個(gè)單個(gè)的與門)替換。類似地,例如,如果鎖存器LEIN和LVIN有倒相輸出,倒相器INV10和INV12就是不必要的。更確切地說,門NAND10和NAND12的相應(yīng)輸入可以直接接到這些鎖存器的倒相輸出端。只要完成合適的邏輯操作,這級(jí)就能在同樣的狀態(tài)下工作。數(shù)據(jù)字和擴(kuò)展位仍舊會(huì)被復(fù)制。必須注意,示例級(jí)所完成的復(fù)制功能會(huì)不被完成,除非令牌的第一個(gè)數(shù)據(jù)字在字的第三個(gè)位置是“1”,并且在5個(gè)高次序位上都是“0”。(當(dāng)然,選擇別的邏輯門和互連而不是如圖中所示的NOR1,NOR2,NAND18邏輯門,可以很容易地改變和設(shè)置所需的模式)。另外,如圖8所示,在整個(gè)令牌期間,OUT_VALID信號(hào)可被迫為低,除非第一個(gè)數(shù)據(jù)字有上述的結(jié)構(gòu)。其效果是,除了產(chǎn)生復(fù)制過程的那一個(gè)令牌外,所有的令牌都會(huì)從令牌流中刪除,因?yàn)檫B接到輸出端(OUTDATA,OUTEXIN和OUTAVLID)的一個(gè)器件不能把這些令牌字作為有效數(shù)據(jù)來識(shí)別。同前,本級(jí)的使有效鎖存器LVIN,LVOUT兩者都可用一根單個(gè)導(dǎo)線NOT_RESETO和用一個(gè)在下游鎖存器LVOUT上的單個(gè)使復(fù)位輸入R來復(fù)位。同時(shí),復(fù)位信號(hào)反向傳播使上游的使有效鎖存器在下個(gè)時(shí)鐘周期被強(qiáng)迫變低。應(yīng)當(dāng)注意,在圖8所示的例中,包含在數(shù)據(jù)令牌中的數(shù)據(jù)的復(fù)制只用作一個(gè)方法的例子。在這個(gè)方法中,線路可處理ACCEPT和VALID信號(hào),使不斷離開流水線級(jí)的數(shù)據(jù)比不斷到達(dá)輸入端的數(shù)據(jù)更多。類似地,圖8中的例子排除所有非數(shù)據(jù)令牌,純粹是作如方法的一個(gè)說明,在這個(gè)方法中線路可以操縱VALID信號(hào)從流中除去數(shù)據(jù)。然而,在大多數(shù)典型的應(yīng)用中,流水線級(jí)能讓它未識(shí)別的任何令牌簡(jiǎn)單地不改變地通過,使得在流水線再下面的其它級(jí)在需要時(shí)可以對(duì)它們起作用。圖9a和9b取在一起說明一個(gè)定時(shí)圖解的例子。這個(gè)圖解是為圖8a和8b中所示的數(shù)據(jù)復(fù)制線路而作的。同前,定時(shí)圖解表明兩相時(shí)鐘信號(hào)之間的關(guān)系,各種內(nèi)部和外部控制信號(hào),在本級(jí)輸入方和輸出方之間數(shù)據(jù)被鎖存的方式和數(shù)據(jù)被復(fù)制的方式?,F(xiàn)在更詳細(xì)地參考圖10,圖中表示根據(jù)本發(fā)明的一個(gè)方面而提供的可重構(gòu)處理級(jí)。輸入鎖存器34在第一個(gè)總線31上收到輸入。輸入鎖存器的第一個(gè)輸出通過線32送到令牌解碼子系統(tǒng)33。輸入鎖存器的第二個(gè)輸出通過線35送到處理單元36作為其第一個(gè)輸入。令牌解碼子系統(tǒng)33的第一個(gè)輸出通過線37送到處理單元36作為其第二個(gè)輸入。令牌解碼子系統(tǒng)33的第二個(gè)輸出通過線40送到動(dòng)作識(shí)別單元39。動(dòng)作識(shí)別單元39也通過線46從寄存器43和44接收輸入。寄存器43和44總起來保存機(jī)器的狀態(tài)。這個(gè)狀態(tài)由以前接收的令牌的歷史決定。動(dòng)作識(shí)別單元39的輸出通過線38送到處理單元36作為其第三個(gè)輸入。處理單元36的輸出送到輸出鎖存器41。輸出鎖存器41的輸出送到第二總線42?,F(xiàn)在參看圖11,起始碼解碼器(SCD)51通過兩線接口52接收輸入。這個(gè)輸入可以或者是數(shù)據(jù)令牌形式或者是數(shù)據(jù)流中的數(shù)據(jù)位。起始碼解碼器51的第一個(gè)輸出通過線53送到第一個(gè)先進(jìn)先出緩存器(FIFO)54。第一個(gè)FIFO54的輸出合乎邏輯地通過線55送到Huffman解碼器56作為其第一輸入。起始碼解碼器51的第二個(gè)輸出通過線57送到DRAM接口58作為其第一個(gè)輸入。DRAM接口58通過線60也接收從緩存器管理器59來的輸入。用DRAM接口58通過線61向外部DRAM(圖中未畫出)發(fā)送信號(hào)或接收信號(hào)。DRAM接口58的第一個(gè)輸出通過線62送到Huffman解碼器56作為其第一個(gè)物理輸入。Huffman解碼器56的輸出通過線63作為一個(gè)輸入送到數(shù)據(jù)索引單元(ITOD)64。Huffman解碼器和ITOD64作為一個(gè)單個(gè)邏輯單元一起工作。ITOD64的輸出通過線65送到算邏單元(ALU)66。ALU66的第一個(gè)輸出通過線67送到只讀存儲(chǔ)器(ROM)狀態(tài)機(jī)68。ROM狀態(tài)機(jī)68的輸出通過線69送到Huffman解碼器56作為其第二個(gè)物理輸入。ALU66的第二個(gè)輸出通過線70送到令牌格式化器(T/F)71。本發(fā)明的T/F71的第一個(gè)輸出72通過線72送到第二個(gè)FIFO73。第二個(gè)FIFO73的輸出通過線74送到逆向造型器75作為其第一個(gè)輸入。T/F71的第二個(gè)輸出通過線76送到DRAM接口58作為其第三個(gè)輸入。DRAM接口58的第三個(gè)輸出通過線77送到逆向造型器75作為其第二個(gè)輸入。逆向造型器75的輸出通過線78作為一個(gè)輸入送到逆向量化器79。逆向量化器79的輸出通過線80作為輸入送到逆向zig_zag(IZZ)81。IZZ81的輸出通過線82作為輸入送到逆向離散余弦變換器(IDCT)83。IDCT83的輸出通過線84送到時(shí)間解碼器(未畫出)?,F(xiàn)在更詳細(xì)地參看圖12,按照本發(fā)明的一個(gè)時(shí)間解碼器被展示。岔口91通過線92接收IDCT83(示于圖11)的輸出作為它的輸入。作為岔口91的第一輸出的控制令牌,例如移動(dòng)矢量等等,通過線93送到地址發(fā)生器94。為了計(jì)數(shù)的目的,數(shù)據(jù)令牌也送到地址發(fā)生器94。作為岔口91的第二個(gè)輸出,數(shù)據(jù)通過線95送到FIFO96。然后FIFO96的輸出通過線97作為第一個(gè)輸入送到加法器98。從地址發(fā)生器94的輸出通過線99作為第一個(gè)輸入送到DRAM接口100。用DRAM接口100通過線101對(duì)外部的DRAM(未示出)發(fā)送信號(hào)或接收信號(hào)。DRAM接口100的第一個(gè)輸出通過線102送到預(yù)測(cè)濾波器103。預(yù)測(cè)濾波器103的輸出通過線104作為第二個(gè)輸入送到加法器98。加法器98的第一個(gè)輸出通過線105送到輸出選擇器106。加法器98的第二個(gè)輸出通過線107作為第二個(gè)輸入送到DRAM接口100。DRAM接口的第二個(gè)輸出通過線108作為第二個(gè)輸入送到輸出選擇器106。輸出選擇器106的輸出通過線109送到視頻格式化器(在圖12中未示出)。現(xiàn)在參看圖13,岔口111通過線112從輸出選擇器106(示于圖12)接收輸入。作為岔口111的第一個(gè)輸出,控制令牌通過線113送到地址發(fā)生器114。地址發(fā)生器114的輸出通過線115作為第一輸入送到DRAM接口116。作為岔口111的第二個(gè)輸出,數(shù)據(jù)通過線117作為第二個(gè)輸入送到DRAM接口116。用DRAM接口116通過線118對(duì)外部的DRAM(未示出)發(fā)送或接收數(shù)據(jù)。DRAM接口116的輸出通過線119送到一個(gè)顯示管道120。從以上描述顯見必要時(shí)每根線可包含許多根線?,F(xiàn)在參看圖14a,在MPEG標(biāo)準(zhǔn)中,一幅圖象131作為一片(slic)或多片132來編碼。每片132又包含許多塊133,并一行一行地編碼,在每行中從左到右。如圖所示,每片132可以恰好復(fù)蓋塊133的一整行,或少于一行如塊133的B或D,或多行如塊133的C。參看圖14b,在JPEG和H.261標(biāo)準(zhǔn)中,采取了常用中間格式(CIF),在那里一幅圖象141作為6行來編碼,每行包含兩個(gè)塊組(GOBS)142。每個(gè)塊組又由數(shù)目不確定的塊143內(nèi)的3行或6行組成。每個(gè)GOB142按箭頭144所指的曲折方向編碼。各塊組142依次逐行處理,每行從左到右?,F(xiàn)在參看圖14C,可以看出,對(duì)MPEG和CIF兩者,編碼器的輸出都是以數(shù)據(jù)流151的形式表示。解碼器接收這個(gè)數(shù)據(jù)流151。于是解碼器可根據(jù)編碼的格式重建圖象。為了使解碼器識(shí)別每種標(biāo)準(zhǔn)的起始點(diǎn)和結(jié)束點(diǎn),數(shù)據(jù)流151被分成長(zhǎng)度為33塊的一些段。參看圖15的Venn圖,它表明根據(jù)本發(fā)明的Huffman解碼器56(示于圖11)作出的表選(tableselection)值的可能范圍。MPEG解碼器可能的值和H.261解碼器可能的值有些是重疊的,表明一個(gè)單個(gè)的表選擇能對(duì)某些MPEG格式和某些H.261格式兩者都解碼。同樣,MPEG解碼器可能的一些值和JPEG解碼器可能的一些值重疊,這表明一個(gè)單個(gè)表選擇會(huì)對(duì)某些JPEG格式和某些MPEG格式兩者都解碼。另外,圖中表明H.261的值和JPEG的值不重疊,這表明不存在對(duì)兩種格式都能解碼的單個(gè)表選擇?,F(xiàn)在更詳細(xì)地參看圖16,它是根據(jù)本發(fā)明實(shí)踐的可變長(zhǎng)圖象數(shù)據(jù)的圖解表示。要處理的第一幅圖象161包含第一個(gè)PICTURE_START令牌162,第一個(gè)不定長(zhǎng)圖象信息163,和第一個(gè)PICTURE_END令牌164。要處理的第二幅圖象165包含第二個(gè)PICTURE_START令牌166,第二個(gè)不定長(zhǎng)圖象信息167,和第二個(gè)PICTURE_END令牌168。PICTURE_START令牌162和166對(duì)處理器表明圖象161和165的開始。同樣,PICTURE_END令牌164和168對(duì)處理器指明圖象161和165的結(jié)束。這樣使得處理器可以處理可變長(zhǎng)的圖象信息163和167。參看圖17,分割器(split)171通過線172接收輸入。分割器171的第一個(gè)輸出通過線173送到地址發(fā)生器174。地址發(fā)生器174產(chǎn)生的地址通過線175到DRAM接口176。用DRAM接口176通過線177對(duì)外部DRAM(未示出)發(fā)送信號(hào)或接收信號(hào)。DRAM接口176的第一個(gè)輸出通過線178送到預(yù)測(cè)濾波器179。預(yù)測(cè)濾波器179的輸出通過線180作為第一輸入送到加法器181。分割器171的第二個(gè)輸出通過線182作為輸入送到先進(jìn)先出(FIFO)183。從FIFO183的輸出通過線184作為第二輸入送到加法器181。加法器181的輸出通過線185送到寫信號(hào)發(fā)生器186。寫信號(hào)發(fā)生器186的第一個(gè)輸出通過線187送到DRAM接口176。寫信號(hào)發(fā)生器的第二個(gè)輸出通過線188作為第一個(gè)輸入送到讀信號(hào)發(fā)生器189。DRAM接口176的第二個(gè)輸出通過線190作為第二個(gè)輸入送到讀信號(hào)發(fā)生器189。讀信號(hào)發(fā)生器189的輸出通過線191送到視頻格式化器(在圖17中未畫出)。現(xiàn)在參看圖18來說明預(yù)測(cè)濾波過程。一個(gè)前向圖象201通過線202作為第一輸入送到加法器203。一個(gè)后向圖象204通過線205作為第二輸入送到加法器203。加法器203通過線206輸出。參看圖19,一個(gè)片211包含一個(gè)或多個(gè)宏塊212。依次,每個(gè)宏塊212包含四個(gè)亮度塊213和兩個(gè)彩色信號(hào)塊214,并包含一個(gè)原來的16×16象素塊的信息。四個(gè)亮度塊213的每一個(gè)和兩個(gè)彩色信號(hào)塊214的大小都是8×8象素。四個(gè)亮度塊213包含從原來的16×16象素塊一個(gè)象素對(duì)一個(gè)象素地映射得來的亮度(Y)信息。一個(gè)彩色信號(hào)塊214包含藍(lán)彩色信號(hào)(CU/b)的色度等級(jí)的信息,另一個(gè)彩色信號(hào)塊214包含紅彩色信號(hào)(CV/r)的色度等級(jí)的信息。每個(gè)色度等級(jí)被二次抽樣(subsampled)使得每個(gè)8×8彩色信號(hào)塊214包含整個(gè)原來的16×16象素塊彩色信號(hào)的色度等級(jí)?,F(xiàn)在參看圖20,起始碼解碼器的結(jié)構(gòu)和功能就會(huì)變得顯而易見。值寄存器221通過線222接收?qǐng)D象數(shù)據(jù)。線222是8位寬,它允許每次并行傳送8位。值寄存器221的輸出以串行方式通過線223送到解碼寄存器224。解碼寄存器224的第一輸出通過線226送到檢測(cè)器225。線226是24位寬,它允許每次并行傳送24位。檢測(cè)器225檢測(cè)映象是否存在。映像對(duì)應(yīng)于一個(gè)與標(biāo)準(zhǔn)無關(guān)的起始碼,以23個(gè)“0”值跟著一個(gè)單個(gè)的“1”值表示。8位數(shù)據(jù)值的映象跟在有效起始碼映象后面。在檢測(cè)到起始碼映象時(shí),檢測(cè)器225通過線227傳送一個(gè)起始映象到值解碼器228。解碼寄存器224的第二輸出以串行方式通過線229到值解碼移位寄存器230。值解碼移位寄存器230能保存15位長(zhǎng)的數(shù)據(jù)值映象。跟在起始碼映象后面的8位的數(shù)據(jù)值被移位到值解碼移位寄存器230的右邊,如區(qū)域231所指。這種處理消除重疊的起始碼映象,討論見后。值解碼移位寄存器230的第一輸出通過線232送到值解碼器228。線232是15位寬,它允許每次并行傳送15位。值解碼器228用第一查找表(未示出)對(duì)值映象解碼。值解碼移位寄存器230的第二輸出傳送到值解碼器228,它通過線235傳送一個(gè)標(biāo)識(shí)到令牌索引變換器234。值解碼器228也通過線236傳送信息到令牌索引變換器234。信息或者是數(shù)據(jù)值映象或者是起始碼索引映象,它是從第一查找表得到的。標(biāo)志表明傳送的是哪一種信息形式。線236是15位寬,它允許每次并行傳送15位。雖然本發(fā)明中選擇的寬度為15位,可以看到其它長(zhǎng)度的位數(shù)也可用。令牌索引變換器234用第二查找表(未示出)把信息變換成令牌映象。第二查找表類似用戶手冊(cè)已給出的表12-3。然后,由令牌索引變換器234產(chǎn)生的令牌映象通過線237輸出。線237是15位寬,它允許每次并行傳送15位。參看圖21,包含一些各別位242的數(shù)據(jù)流241輸入到起始碼檢測(cè)器(在圖21中未示出)。起始碼檢測(cè)器檢測(cè)到第一個(gè)起始碼映象。然后起始碼檢測(cè)器接收第一個(gè)數(shù)據(jù)值映象244。在處理第一個(gè)數(shù)據(jù)值244以前,起始碼檢測(cè)器可能檢測(cè)到第二個(gè)起始碼映象245,它和第一數(shù)據(jù)值映象244在一段長(zhǎng)度246上重疊。如果發(fā)生這種情況,起始碼檢測(cè)器不處理第一數(shù)據(jù)值映象244,而接收和處理第二數(shù)據(jù)值映象247?,F(xiàn)在參看圖22,標(biāo)識(shí)發(fā)生器251通過線252作為第一輸入接收數(shù)據(jù)。線252是15位寬,它允許一次并行傳送15位。標(biāo)識(shí)發(fā)生器251也通過線253接收標(biāo)識(shí)作為第二輸入,并通過第一個(gè)兩線接口254接收輸入有效映象。標(biāo)識(shí)發(fā)生器251的第一輸出通過線255送到輸入有效寄存器(未示出)。標(biāo)識(shí)發(fā)生器251的第二輸出通過線256送到解碼指針257。解碼指針257產(chǎn)生四個(gè)輸出;一個(gè)圖象起始映象通過線258傳送,一個(gè)圖象號(hào)映象通過線259傳送,一個(gè)插入映象通過線260傳送,和一個(gè)替代映象通過線261傳送。頭標(biāo)發(fā)生器263用查找表產(chǎn)生替代映象,它通過線262b傳送。一個(gè)額外的字發(fā)生器264用MPU產(chǎn)生插入映象,它通過線262c傳送。線262a和線262c合并成線262,它是輸出鎖存器265的第一輸入。輸出鎖存器265通過線266傳送數(shù)據(jù)。線266是15位寬,它允許一次并行傳送15位。輸入有效寄存器(未示出)通過線268傳送一個(gè)映象作為第一輸出送到第一或門267。插入映象通過線269作為第二輸入送到第一或門267。第一或門267的輸出通過線271作為第一輸入送到第一與門270。取消映象(removeimage)的邏輯反通過線272作為第二輸入送到第一與門270,又通過線273作為第二輸入送到輸出鎖存器265。輸出鎖存器265通過第二個(gè)兩線接口274傳送輸出有效映象。用輸出接收鎖存器275通過第二兩線接口274接收輸出接收信號(hào)。輸出接收鎖存器275的輸出通過線276送到輸出接收寄存器(未示出)。輸出接收寄存器(未示出)通過線278傳送一個(gè)映象作為第一輸入送到第二或門277。輸入有效寄存器輸出的邏輯反通過線279作為第二輸入送到第二或門277。取消映象通過線280作為第三輸入送到第二或門277。第二或門277的輸出通過線282作為第一輸入送到第二與門281。插入映象的邏輯反通過線283作為第二輸入送到第二與門281。第二與門281的輸出通過線284送到輸入接收鎖存器285。輸入接收鎖存器285的輸出通過第一兩線接口254傳送。表600格式接收的映象產(chǎn)生的令牌1.H.261SEQUENCESTARTSEQUENCESTARTMPEGPICTURESTARTGROUPSTARTJPEG(None)PICTURESTARTPICTUREDATA2.H.261(None)PICTUREENDMPEG(None)PADDINGJPEG(None)FLUSHSTOPAFTERPICTURE表600表示在某些與機(jī)器無關(guān)的控制令牌中,沒有標(biāo)準(zhǔn)信號(hào)與有標(biāo)準(zhǔn)信號(hào)之間的關(guān)系。如該表所示,起始碼檢測(cè)器51對(duì)映象的檢測(cè)產(chǎn)生一系列機(jī)器無關(guān)控制令牌。列在“接收的映象”欄的每個(gè)映象,啟動(dòng)列在“產(chǎn)生的令牌”欄的機(jī)器無關(guān)控制令牌的產(chǎn)生。所以,如表600第一行所示,在H.261處理期間每當(dāng)收到一個(gè)“序列起始”映象或在MPEG處理期間每當(dāng)收到一個(gè)“圖象起始”映象時(shí),就產(chǎn)生整組四個(gè)控制令牌,每個(gè)令牌后面跟著它的相應(yīng)的一個(gè)數(shù)據(jù)值或一些數(shù)據(jù)值。另外,如表600的第二行表示,第二組的四個(gè)控制令牌在合適的時(shí)間產(chǎn)生,不管起始碼檢測(cè)器51收到的映象是什么。表601顯示次序11B2B3P4B5B6P7B8B9110傳送次序I1P4B2B3P7B5B6I10B8B9如表601行1所示,它表明傳送的圖象和顯示的圖象之間的定時(shí)關(guān)系,圖象幀按數(shù)字次序顯示。然而,為了減少幀的數(shù)目它必須存在存貯器中,一些幀以不同次序傳送。從基幀(I幀)開始分析是有用的。I1幀是按照待顯示的次序傳送的。下一個(gè)預(yù)測(cè)幀(P幀)P4然后被傳送。然后,傳送要在I1幀和P4幀之間顯示的任何雙向內(nèi)插幀(一些B幀),用幀B2和B3表示。這就使被傳送的B幀能夠以過去幀(前向預(yù)測(cè))為基準(zhǔn),或者以末來幀(后向預(yù)測(cè))為基準(zhǔn)。在傳送了所有的要在I1幀和P4幀之間顯示的B幀以后,傳送下一個(gè)P幀P7。下面,所有要在P4幀和P7幀之間被顯示的B幀,對(duì)應(yīng)為B5和B6,被傳送。然后,下一個(gè)I幀,I10,被傳送。最后,所有要在P7幀和I10幀之間顯示的B幀,相應(yīng)為幀B8和B9,被傳送。這個(gè)傳送幀的次序在任一時(shí)刻只要求在存儲(chǔ)器中保持兩幀,而不要求解碼器等待下一個(gè)P幀或I幀的發(fā)送以顯示一個(gè)相鄰的B幀。更多的關(guān)于本發(fā)明的結(jié)構(gòu)和操作,還有特性、目的和優(yōu)點(diǎn)等方面的信息,在隨后對(duì)發(fā)明直觀的具體化的更詳細(xì)的描述中,對(duì)本行有一般技術(shù)的人會(huì)變得更顯而易見。為了使說明清楚和方便的目的,將它歸類和表示如下1、多標(biāo)準(zhǔn)配置2、JPEG靜止圖象解碼3、活動(dòng)圖象去壓縮4、RAM存儲(chǔ)器圖5、位流特性6、可重構(gòu)處理級(jí)7、多標(biāo)準(zhǔn)編碼8、多標(biāo)準(zhǔn)處理線路—操作的第二方式9、起始碼解碼器10、令牌11、DRAM接口12、預(yù)測(cè)濾波器13、寄存器的存取14、微處理器接口(MPI)15、MPI讀時(shí)序16、MPI寫時(shí)序17、鎖眼地址定位18、圖象結(jié)束19、清除操作20、清除功能21、圖象后停止22、多標(biāo)準(zhǔn)搜索方式23、逆向造型器24、逆向量化器25、Huffman解碼器和程序分析器26、各種離散余弦變換器27、緩存器管理器1、多標(biāo)準(zhǔn)配置因?yàn)楦鞣N壓縮標(biāo)準(zhǔn),即JPEG,MPEG和H.261是眾所周知的,如作為例子在前面敘述過的美國(guó)專利NO.5,212,742,,那些標(biāo)準(zhǔn)的詳細(xì)說明這里不再重復(fù)。如前面所說,本發(fā)明能夠?qū)υS多種不同編碼的數(shù)據(jù)位流去壓縮。在每個(gè)不同的編碼標(biāo)準(zhǔn)中,需要某些形式的輸出格式化器去取數(shù)據(jù)。這些數(shù)據(jù)出現(xiàn)在單獨(dú)操作空間解碼器輸出端,或者出現(xiàn)在一個(gè)空間解碼器和時(shí)間解碼器組合操作操作的串連輸出端,(如本文中隨后更加詳細(xì)敘述的)。兩解碼器還對(duì)該輸出重新格式化,以便使用和在計(jì)算機(jī)或其它顯示系統(tǒng)(包括視頻顯示系統(tǒng))上顯示。這個(gè)格式化的實(shí)現(xiàn)因編碼標(biāo)準(zhǔn)和/或所選擇的顯示類型而變化很大。根據(jù)本發(fā)明,在第一個(gè)具體實(shí)現(xiàn)中,如前面描述的參考圖10~12,地址發(fā)生器用來存儲(chǔ)一個(gè)已格式化的數(shù)據(jù)塊。這個(gè)數(shù)據(jù)塊或者是第一解碼器(空間解碼器)的輸出或者是第一解碼器(空間解碼器)和第二解碼器(時(shí)間解碼器)的組合輸出。地址發(fā)生器還用于以光柵的順序?qū)⒔?jīng)過解碼的信息向存貯器存和/或取。下文描述的視頻格式化器提供大量的輸出信號(hào)的組合。本發(fā)明優(yōu)先的多標(biāo)準(zhǔn)視頻解碼器具體實(shí)施中,空間解碼器和時(shí)間解碼器要求既實(shí)現(xiàn)MPEG編碼信號(hào)又實(shí)現(xiàn)H.261視頻解碼系統(tǒng)。在兩個(gè)設(shè)備上的DRAM接口是可配置的,使得當(dāng)工作在一些小圖象格式和低編碼數(shù)據(jù)率時(shí)所需的DRAM量可以減少。這些DRAM的重構(gòu)在下文DRAM接口中將進(jìn)一步描述。典型情況下,每個(gè)時(shí)間解碼器和空間解碼器線路要求一個(gè)單個(gè)的4兆字節(jié)DRAM。本發(fā)明的空間解碼器完成在一個(gè)單幅圖象內(nèi)所有必需的處理。這就減少一幅圖象內(nèi)的冗余度。時(shí)間解碼器減少主題圖象(subjeotpicture)和在主題圖象到達(dá)前到達(dá)的一幅圖象之間的冗余度,還減少主題圖象和在它到達(dá)以后到達(dá)的一幅圖象之間的冗余度。時(shí)間解碼器的一個(gè)方面是要提供一個(gè)地址解碼網(wǎng)絡(luò),它處理復(fù)雜的尋址需要,以最少的電路數(shù)目,高速度和改進(jìn)的精確度讀出與所有這些圖象有關(guān)的數(shù)據(jù)。如前所述,參考圖11,數(shù)據(jù)到來前,先通過起始碼解碼器,位于Huffman解碼器和分析器(parser)之前的FIFO寄存器再通過第二FIFO寄存器,逆向造型器,逆向量化器,逆向zigzag和逆向DCT。這兩個(gè)FIFO不需要放在芯片上。在一種具體實(shí)施中,數(shù)據(jù)不流過在芯片上的FIFO。數(shù)據(jù)加到DRAM接口,F(xiàn)IFO-IN存貯寄存器和FIFO-OUT寄存器。兩者都是在芯片外的。這些操作完全與標(biāo)準(zhǔn)無關(guān)的寄存器在本文中隨后會(huì)更詳細(xì)地?cái)⑹?。示于圖11的大多數(shù)子系統(tǒng)和大多數(shù)級(jí)是真正與所用特定標(biāo)準(zhǔn)無關(guān)的,它們包括DRAM接口58,產(chǎn)生DRAM接口地址的緩存器管理器59,逆向造型器75,逆向zig-zag81,和逆向DCT83。在Huffman解碼器和分析器之內(nèi)的與標(biāo)準(zhǔn)無關(guān)的單元包括ALU66和令牌格式化器71?,F(xiàn)在參考圖12,與標(biāo)準(zhǔn)無關(guān)的單元包括DRAM接口100,岔口91,F(xiàn)IFO寄存器96,加法器98和輸出選擇器106。與標(biāo)準(zhǔn)有關(guān)的單元是地址發(fā)生器94,它在H.261和MPEG中是不同的,還有預(yù)測(cè)濾波器103,它是可重構(gòu)的,有能力在H.261和MPEG兩種標(biāo)準(zhǔn)都工作。JPEG數(shù)據(jù)能夠完全不改變地流過整個(gè)機(jī)器。圖13描述視頻格式化器芯片的一個(gè)高層框圖。芯片的很大部分與標(biāo)準(zhǔn)無關(guān)。受標(biāo)準(zhǔn)影響的僅有的一些項(xiàng)目是在H.261情況下數(shù)據(jù)寫入DRAM的方式,這種方式與在MPEG或JPEG時(shí)不同;并且在H.261中不必要對(duì)每個(gè)單一圖象編碼。有某些定時(shí)信息稱為時(shí)間標(biāo)準(zhǔn)(temp-oralreference),當(dāng)圖象要被顯示時(shí)它提供某些有關(guān)信息。這件事也用視頻格式化器中邏輯的地址發(fā)生類型來處理。在視頻格式化器中實(shí)現(xiàn)的線路剩余部分與所用的特定壓縮標(biāo)準(zhǔn)完全無關(guān),這些部分是所有的彩色空間變換,過采樣(up-sampl-ing)濾波器和所有的γ校正RAM。本發(fā)明的起始碼解碼器是與壓縮標(biāo)準(zhǔn)有關(guān)的,它必須對(duì)位流中每種標(biāo)準(zhǔn)不同的起始碼模式加以識(shí)別。例如,H.261有一個(gè)16位起始碼,MPEG有一個(gè)24位起始碼而JPEG用標(biāo)記碼,它與其它起始碼完全不同。一旦起始碼解碼器已經(jīng)識(shí)別出那些不同的起始碼,它的操作實(shí)質(zhì)上就與壓縮標(biāo)準(zhǔn)無關(guān)。例如,在搜索期間,除了識(shí)別不同類型的標(biāo)記的線路以外,在三種不同的壓縮標(biāo)準(zhǔn)之間大部分操作是很相似的。下一個(gè)單元是狀態(tài)機(jī)68(圖11)位于Huffman解碼器和分析器之內(nèi)。這里,用于三個(gè)壓縮標(biāo)準(zhǔn)的每一個(gè)的實(shí)際線路是差不多全同的。事實(shí)上,操作中受標(biāo)準(zhǔn)影響的唯一元件是機(jī)器的復(fù)位地址。如果只是分析器被復(fù)位,則它對(duì)應(yīng)每個(gè)標(biāo)準(zhǔn)跳到不同的地址。實(shí)際上,被識(shí)別的有四個(gè)標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)是H.261,JPEG,MPEG和另外一種。在此第四標(biāo)準(zhǔn)中,分析器引入一段用于測(cè)試的碼。這說明線路在差不多每個(gè)方面是全同的,但差別在于對(duì)每種標(biāo)準(zhǔn)的微碼程序。所以當(dāng)一個(gè)用H.261操作的程序正在運(yùn)行時(shí),和當(dāng)一個(gè)不同標(biāo)準(zhǔn)的程序正在運(yùn)行時(shí),它們之間沒有重疊。對(duì)JPEG這同樣保持正確,JPEG是第三個(gè)完全獨(dú)立的程序。下一個(gè)單元是Huffman解碼器56,它和數(shù)據(jù)索引單元64一起工作。那兩個(gè)單元互相合作完成Huffman解碼。這里不管壓縮標(biāo)準(zhǔn)是哪種,對(duì)Huffman解碼用的算法是一樣的。不同點(diǎn)在于用哪一種表和數(shù)據(jù)進(jìn)入Huffman編碼器是否倒相。Huffman解碼器本身還包含狀態(tài)機(jī),它理解編碼標(biāo)準(zhǔn)的某些方面。這些不同操作的選擇對(duì)應(yīng)于從分析器狀態(tài)機(jī)來的一個(gè)指令。分析器狀態(tài)機(jī)對(duì)三種壓縮標(biāo)準(zhǔn)的每一個(gè)用不同的程序工作,并在和運(yùn)行標(biāo)準(zhǔn)相一致的不同時(shí)間向Huff-man解碼器發(fā)出正確的命令。在芯片上最后的一個(gè)單元是與壓縮標(biāo)準(zhǔn)有關(guān)的逆向量化器79,在這里,逆向量化器為每種不同的標(biāo)準(zhǔn)所完成的運(yùn)算是不同的。在這點(diǎn)上,一個(gè)CODING_STANDARD令牌被解碼,逆向量化器79記住正在運(yùn)行的是哪一種標(biāo)準(zhǔn)。然后,在那個(gè)事件以后但在另一個(gè)CODING_STANDARD可能出現(xiàn)以前,隨后的數(shù)據(jù)令牌就用被逆向量化器內(nèi)部已記住的CODING_STANDARD指明的方式來處理。在更詳細(xì)的描述中,有一張表說明不同標(biāo)準(zhǔn)中的不同參數(shù)和哪種線路對(duì)應(yīng)那些不同參數(shù)或計(jì)算。在H.261中,對(duì)圖12和圖13中所示的每個(gè)子系統(tǒng),地址的產(chǎn)生有所不同。在圖11中,在Huffman解碼器前、后的兩個(gè)FIFO的地址產(chǎn)生,不因編碼標(biāo)準(zhǔn)而改變。即使在H.261中,在那個(gè)芯片上發(fā)生的地址的產(chǎn)生也是不改變的。實(shí)質(zhì)上,這些標(biāo)準(zhǔn)之間的差別是與MPEG和JPEG的差別,有一個(gè)若干宏塊的組織,這些宏塊是以直線行方式水平地從圖象的一邊伸展到另一邊。在圖14a中可以最好地觀察到,第一個(gè)宏塊A覆蓋一整行。宏塊B覆蓋少于一行。宏塊C覆蓋多行。在MPEG中的分割是分成若干片132,一片可以是一個(gè)水平行A,或者可以是水平行的一部分B,或者它也可以從一行擴(kuò)展到下一行,C。這些片132的每一個(gè)組成宏塊的一行。在H.261中,組織相當(dāng)?shù)夭煌?,因?yàn)閳D象被分成一些塊組(GOB)。一個(gè)塊組是三行宏塊高乘11宏塊寬。如果是一幅CIF圖象,有12個(gè)這樣的塊組。然而,它們不是一個(gè)放在另一個(gè)上面這樣組織的。而是有兩個(gè)塊組互相靠著,并且有6個(gè)高,即垂直方向有6個(gè)塊組,水平方向有2個(gè)塊組。在所有其它標(biāo)準(zhǔn)中,當(dāng)進(jìn)行尋址時(shí),宏塊是按上述次序編址的。更具體地,尋址沿著行進(jìn)行,到達(dá)行尾后開始下一行。在H.261中,在一個(gè)塊組內(nèi),塊的次序和描述的一樣,但在移向下一個(gè)塊組時(shí),次序差不多是之字形(zig-zag)。本發(fā)明提供線路處理后者的影響。在空間解碼器和視頻格式化器中地址的產(chǎn)生就是那樣因H.261而變化的。每當(dāng)信息寫到DRAM時(shí)就完成這樣的變化。它是用前面所說的地址發(fā)生序列的知識(shí)來寫的,所以序列在RAM中物理定位的位置,和假如這是一幅同樣大小的MPEG圖象時(shí)應(yīng)在的位置是恰好一樣的。因此,從DRAM讀數(shù)據(jù)的所有地址產(chǎn)生線路,例如,當(dāng)形成預(yù)測(cè)時(shí),不必要理解那是H.261標(biāo)準(zhǔn),因?yàn)樾畔⒃诖鎯?chǔ)器中的物理位置和假如是在MPEG序列中它應(yīng)在的位置是一樣的。所以在所有情況下,只有數(shù)據(jù)的寫被影響。在時(shí)間解碼器中,對(duì)H.261有抽象化,電路系統(tǒng)自認(rèn)為某些事情和實(shí)際上正在發(fā)生的不一樣。那就是,每個(gè)塊組在概念上被延伸出去,使得它不是一個(gè)11×3宏塊的矩形,而是宏塊被延伸出去成為一個(gè)33塊長(zhǎng)度(見圖14C)的塊組,它的高是一個(gè)宏塊。由于那樣做了,與在時(shí)間解碼器中為計(jì)算通過的塊組所用的計(jì)數(shù)機(jī)構(gòu),完全相同地也用于MPEG。H.261塊組線路設(shè)計(jì)的方法和MPEG片線路設(shè)計(jì)方法相對(duì)應(yīng)。當(dāng)H.261數(shù)據(jù)在起始碼解碼器以后被處理,每個(gè)塊組前面有一個(gè)slice_start_code。下一個(gè)塊組前面有下一個(gè)slice_start_code。為了對(duì)此結(jié)構(gòu)從頭到尾計(jì)數(shù)而在時(shí)間解碼器內(nèi)部進(jìn)行著的計(jì)數(shù),自認(rèn)為這是一個(gè)宏塊高,33個(gè)宏塊長(zhǎng)的塊組。這就足夠了,雖然電路也每隔11個(gè)宏塊進(jìn)行計(jì)數(shù)。當(dāng)它數(shù)到第11個(gè)宏塊或第22個(gè)宏塊,它使某些計(jì)數(shù)器復(fù)位。這用另一個(gè)計(jì)數(shù)器的簡(jiǎn)單線路來實(shí)現(xiàn),這個(gè)計(jì)數(shù)器對(duì)每個(gè)宏塊計(jì)數(shù),當(dāng)它得到11時(shí),它復(fù)位為零。微碼詢問并做那個(gè)工作。本發(fā)明的時(shí)間解碼器中的所有線路就宏塊的物理布局來說實(shí)質(zhì)上是與壓縮標(biāo)準(zhǔn)無關(guān)的。在多標(biāo)準(zhǔn)適應(yīng)性方面,有許多不同的表和線路,在合適的時(shí)候?yàn)楹线m的標(biāo)準(zhǔn)選擇合適的表。每種標(biāo)準(zhǔn)有許多表;電路系統(tǒng)在任何給定時(shí)間從表集中作選擇。在任何一種標(biāo)準(zhǔn)中,電路一次選擇一張表,另一張表則在另一個(gè)時(shí)刻選擇。在不同的標(biāo)準(zhǔn)中,電路選擇不同的表集。在那些表之間有某些交叉,如在前面討論圖15時(shí)所指出的。例如,用在MPEG中的一張表也用于JPEG。這些表不是完全孤立的集。圖15說明一個(gè)H.261集,一個(gè)MPEG集和一個(gè)JPPEG集。注意,在H.261集和MPEG集之間有一個(gè)大得多的重疊。就他們所用的表而言,兩集是相當(dāng)共同的。在MPEG和JPEG之間有少量重疊,在H.261和JPEG之間完全不重疊,因而這些標(biāo)準(zhǔn)有完全不同的表集。如前面指出的,系統(tǒng)單元的最大部分與壓縮標(biāo)準(zhǔn)無關(guān)。如果一個(gè)單元與標(biāo)準(zhǔn)無關(guān),則這樣的單元不需要記住正在處理的是什么CODING_STANDARD。所有與標(biāo)準(zhǔn)有關(guān)的單元在CODING_STANDARD流過它們時(shí)記住壓縮標(biāo)準(zhǔn)。當(dāng)在第一個(gè)編碼標(biāo)準(zhǔn)中編碼/解碼的信息被分布到整個(gè)機(jī)器,而某個(gè)機(jī)器正在改變標(biāo)準(zhǔn)時(shí),在微處理器控制下的在前面的機(jī)器就會(huì)正常地選擇按照H.261壓縮標(biāo)準(zhǔn)工作。在這些在前面的機(jī)器中的MPU就產(chǎn)生信號(hào),在機(jī)器內(nèi)部的多處不同的地方表示壓縮標(biāo)準(zhǔn)正在改變。MPU在不同的時(shí)候作出改變,另外,它可以清除整個(gè)流水線。按照本發(fā)明,位于流水線中第一個(gè)單元的起始碼解碼器發(fā)出CODLNG_STANDARD令牌的改變,這使壓縮標(biāo)準(zhǔn)的改變很容易處理。令牌宣稱某種編碼標(biāo)準(zhǔn)即將開始,于是那個(gè)控制信息沿機(jī)器往下流,并在合適的時(shí)間配置所有其它寄存器。MPU不需規(guī)劃每個(gè)寄存器。預(yù)測(cè)令牌通知如何用位流中的一些位來形成預(yù)測(cè)。電路系統(tǒng)把在標(biāo)準(zhǔn)中找到的信息,即從位流中找到的信息轉(zhuǎn)化成一個(gè)預(yù)測(cè)方式令牌。這取決于正在運(yùn)行哪一個(gè)壓縮標(biāo)準(zhǔn)。這個(gè)處理是用Huffman解碼器和分析器狀態(tài)機(jī)完成的,在這里容易處理基于某些條件的一些位。起始碼解碼器產(chǎn)生這個(gè)預(yù)測(cè)方式令牌。于是令牌沿機(jī)器往下流到時(shí)間解碼器線路,它負(fù)責(zé)形成預(yù)測(cè)??臻g解碼器電路不必知道它正在運(yùn)行的是什么標(biāo)準(zhǔn)就能解釋令牌,因?yàn)樵谌齻€(gè)不同標(biāo)準(zhǔn)中,令牌中的各位是不變的??臻g解碼器只是按令牌所告知的去做。有了這些令牌并適當(dāng)?shù)乩盟鼈儯瑱C(jī)器中其它單元的設(shè)計(jì)就被簡(jiǎn)化了。雖然在程序中可能有某些復(fù)雜情況,但是本來難于設(shè)計(jì)成多標(biāo)準(zhǔn)的某些硬線邏輯可以在此使用,所以得到了好處。2、對(duì)JPEG靜止圖象的解碼如前面指出的,本發(fā)明關(guān)系到信號(hào)的去壓縮,尤其關(guān)系到不管使用什么壓縮標(biāo)準(zhǔn)對(duì)已編碼視頻信號(hào)的去壓縮。本發(fā)明的一個(gè)方面是在流水線處理系統(tǒng)中提供一個(gè)第一解碼線路(空間解碼器)去對(duì)第一編碼信號(hào)(JPEG編碼視頻信號(hào))解碼,還提供一個(gè)第二解碼線路(時(shí)間解碼器)去對(duì)第一編碼信號(hào)(MPEG或H.261編碼視頻信號(hào))解碼。為了JPEG解碼不需要時(shí)間解碼器。在這點(diǎn)上,本發(fā)明通過用一個(gè)簡(jiǎn)單流水線解碼器和去壓縮系統(tǒng),使眾多的不同編碼信號(hào)的去壓縮變得容易。解碼和去壓縮流水線處理器以獨(dú)特的結(jié)構(gòu)組成,這種結(jié)構(gòu)使得能通過使用所有與單個(gè)流水線解碼器和處理系統(tǒng)兼容的技術(shù)來處理多標(biāo)準(zhǔn)視頻信號(hào)??臻g解碼器和時(shí)間解碼器結(jié)合,視頻格式化器用于驅(qū)動(dòng)視頻顯示器。本發(fā)明的另一方面是用了空間解碼器和視頻格式化器的組合,它只用于靜止圖象。與壓縮標(biāo)準(zhǔn)無關(guān)的空間解碼器完成一個(gè)單個(gè)圖象范圍內(nèi)所有數(shù)據(jù)的處理。這樣一個(gè)解碼器處理了內(nèi)部圖象數(shù)據(jù)的空間去壓縮,那些數(shù)據(jù)通過流水線并分配在有關(guān)的RAM內(nèi)。與標(biāo)準(zhǔn)無關(guān)的地址發(fā)生器線路處理在存儲(chǔ)器內(nèi)信息的存儲(chǔ)和檢索。靜止圖象數(shù)據(jù)在空間解碼器的輸出被解碼,這個(gè)輸出用作多標(biāo)準(zhǔn),可重配置視頻格式化器的輸入,然后格式化器向顯示終端提供輸出。在相似圖象的第一個(gè)序列中,每個(gè)在空間解碼器輸出端的已去壓縮的圖象的位的長(zhǎng)度,在圖象到達(dá)空間解碼器輸出時(shí),都是一樣的。一些圖象的第二個(gè)序列可能有完全不同的圖象大小,因此,和第一個(gè)長(zhǎng)度比較有不同的長(zhǎng)度。還有,相似圖象的所有這些第二序列的位的長(zhǎng)度,在這些圖象達(dá)到空間解碼器的輸出時(shí),也都是一樣的。發(fā)明的另一方面是在內(nèi)部將進(jìn)入的與標(biāo)準(zhǔn)有關(guān)的位流組織成為控制令牌和數(shù)據(jù)令牌的序列。與此組合,還有眾多的順序安放的,可重配置的,經(jīng)過選擇和組織的處理級(jí),組作為一個(gè)與標(biāo)準(zhǔn)無關(guān)、可重配置的流水線處理器。就JPEG解碼而論,一個(gè)單個(gè)沒有芯片外DRAM的空間解碼器能很快對(duì)基本的JPEG圖象解碼。空間解碼器支持基本JPEG編碼標(biāo)準(zhǔn)的所有特性。然而,能解碼的圖象大小可能限于能提供的緩存器輸出的大小??臻g解碼器電路也包括一個(gè)隨機(jī)存取存儲(chǔ)器電路,還具有與機(jī)器有關(guān),但與標(biāo)準(zhǔn)無關(guān)的地址發(fā)生器線路。此線路用于處理將信息存貯到存儲(chǔ)器中去。如前面指出的,時(shí)間解碼器不要求對(duì)JPEG編碼視頻信號(hào)解碼。相應(yīng)地,當(dāng)配置時(shí)間解碼器為JPEG運(yùn)行時(shí),數(shù)據(jù)令牌所攜帶的信號(hào)直接通過時(shí)間解碼器而不作進(jìn)一步的處理。本發(fā)明的另一個(gè)方面是在空間解碼器中提供一對(duì)存儲(chǔ)器電路,諸如緩存器存儲(chǔ)器電路,這是為了與Huffman解碼器/視頻信號(hào)分離器線路(HD和VDM)組合起來工作。第一個(gè)緩沖器存儲(chǔ)器放在HD和VDM前面,第二個(gè)緩存器存儲(chǔ)器放在HD和VDM后面。HD和VDM對(duì)在標(biāo)準(zhǔn)編碼位流中的二進(jìn)制1和0的位流解碼,把這些流轉(zhuǎn)換成用于下游的數(shù)字。雙緩存器系統(tǒng)是為了實(shí)現(xiàn)一個(gè)多標(biāo)準(zhǔn)的去壓縮系統(tǒng)。這兩個(gè)緩存器與證實(shí)了實(shí)現(xiàn)的Huffman解碼器的組合,在下文中將更詳細(xì)地描述。本多標(biāo)準(zhǔn)去壓縮電路再一個(gè)方面是起始碼解碼器和Huffman解碼器的組合。起始碼解碼器位于第一前向緩存器的上游。這個(gè)組合的一個(gè)優(yōu)點(diǎn)是在處理輸入位流,特別是在處理位流中必須加入的填充時(shí)增加了靈活性。這些證實(shí)了的部件,起始碼解碼器,存儲(chǔ)緩存器和Huffman解碼器的布署增強(qiáng)了對(duì)輸入位流中的某些序列的處理。另外,芯片外DRAM用于實(shí)時(shí)解碼JPEG編碼的視頻圖象。和DRAM一起用的一些緩存器的大小和速度取決于視頻編碼數(shù)據(jù)的速率。編碼標(biāo)準(zhǔn)識(shí)別出所有與標(biāo)準(zhǔn)有關(guān)的類型的信息,為了存儲(chǔ)在與空間解碼器有連系的DRAM中,那些信息是必要的??臻g解碼器用的是與標(biāo)準(zhǔn)無關(guān)的電路。3、活動(dòng)圖象去壓縮在本發(fā)明中,如果活動(dòng)圖象要通過解碼步序去壓縮,就必須再有一個(gè)時(shí)間解碼器。時(shí)間解碼器將在空間解碼器中已解碼的數(shù)據(jù)和前面已解碼的一些圖象結(jié)合起來。這些圖象預(yù)定或者在當(dāng)前正在解碼的圖象以前或者以后顯示。時(shí)間解碼器在圖象編碼數(shù)據(jù)流中接收信息,去識(shí)別這個(gè)時(shí)間錯(cuò)開的信息。時(shí)間解碼器被組織去對(duì)時(shí)間和空間錯(cuò)開的信息編址,檢索這些信息和組合這些信息,組合以這樣一種方式進(jìn)行,用當(dāng)前正在解碼的圖象去解碼位于一幅圖象中的信息,并且用一幅合成圖象作為結(jié)束。這幅圖象是完整的,而且適用于傳送到視頻格式化器以驅(qū)動(dòng)顯示屏幕的。換句話說,合成的圖象能存起來為以后對(duì)隨后來的圖象作時(shí)間解碼時(shí)使用。一般說,時(shí)間解碼器進(jìn)行圖象和圖象之間的處理。這些圖象在時(shí)間上比當(dāng)前正在解碼的圖象早一些和/或晚一些。時(shí)間解碼器重新引入那些在圖象的編碼表示法內(nèi)設(shè)有編碼的信息,因?yàn)樗侨哂嗟?,并且在解碼器已經(jīng)可以得到。更明確地說,以下情況是可能的,即任何給定圖象能包含和另一些在時(shí)間上或前或后的圖象相似的信息。如果加了活動(dòng)補(bǔ)償,這種相似性會(huì)變得更大。時(shí)間解碼器和去壓縮電路也減少在相關(guān)圖象之間的冗余度。在本發(fā)明的另一方面中,時(shí)間解碼器用于處理從空間解碼器來的與標(biāo)準(zhǔn)有關(guān)的輸出信息。這個(gè)單幅圖象的與標(biāo)準(zhǔn)有關(guān)的信息分布在DRAM的幾個(gè)區(qū)域當(dāng)中。這是在以下意義上說的,用空間解碼器處理的去壓縮輸出信息,是用別的RAM存儲(chǔ)在別的一些DRAM寄存器內(nèi)的。這些RAM還有另外一些與機(jī)器有關(guān)而與標(biāo)準(zhǔn)無關(guān)的地址發(fā)生器電路。地址發(fā)生器線路用于組合空間已解碼圖象信息的空間已解碼信息包中的一幅圖象。這幅圖象在時(shí)間上與第一幅圖象的時(shí)間位置錯(cuò)開。在有能力對(duì)MPEG編碼信號(hào)解碼的多標(biāo)準(zhǔn)線路中,可能要求更大的邏輯DRAM緩存器以支持用MPEG時(shí)可能更大的一些圖象格式。圖象信息以8象素×8象素塊為單位流過串行流水線。在本發(fā)明的一種形式中,地址解碼電路沿這些塊的邊界處理這些象素塊(存儲(chǔ)和檢索)。地址解碼線路也從這些邊界的一頭到另一頭處理這些8×8象素塊的存儲(chǔ)和檢索。這個(gè)多方面的適應(yīng)性的下文中更完全地描述。第二個(gè)時(shí)間解碼器也可以被提供,它把第一個(gè)解碼器電路(空間解碼器)的輸出直接傳送到視頻格式化器,為了在處理時(shí)沒有信號(hào)處理延遲。時(shí)間解碼器也重排圖象數(shù)據(jù)塊的次序以便用顯示電路顯示。下文中描述的地址解碼電路提供這個(gè)重排序的處理。如前所述,時(shí)間解碼器的一個(gè)重要特性是把從一些圖象中選擇的圖象信息加在一起。這些圖象比正在處理的圖象早一些或晚一些到達(dá)。在這個(gè)意義上描述圖象時(shí),可能總味著下面的任何一點(diǎn)1、圖象的編碼數(shù)據(jù)表示;2、結(jié)果,即解碼器完成的處理步驟相加的結(jié)果所形成的最后解碼圖象。3、從DRAM讀出的在以前解碼的圖象;4、空間解碼的結(jié)果,即在一個(gè)PICTURE_START令牌和一個(gè)隨后的PICTURE_END令牌之間的一大片數(shù)據(jù)。在用時(shí)間解碼器處理圖象數(shù)據(jù)信息以后,數(shù)據(jù)或者被顯示或者寫回到圖象存儲(chǔ)器單元。然后這個(gè)信息被保存以便在處理另一幅不同的編碼數(shù)據(jù)圖象時(shí)作進(jìn)一步參考。為了可見的顯示而對(duì)MPEG編碼圖象的重排序含有用改變時(shí)間解碼器和重排序特性的方法,得到一幅要求的編碼圖象的可能性。4、RAM存儲(chǔ)器圖空間解碼器,時(shí)間解碼器和視頻格式化器都用外部DRAM。最好,所有三個(gè)器件都用同一個(gè)DRAM。雖然所有三個(gè)器件都用DRAM,并且所有三個(gè)器件都用與地址發(fā)生器連結(jié)的DRAM接口,但是在DRAM中每一個(gè)器件完成什么是不同的。就是說,每個(gè)芯片,例如空間解碼器和時(shí)間解碼器,即使它們用相似的物理外部DRAM,它們的DRAM接口和地址發(fā)生器線路是不同的。簡(jiǎn)要地說,空間解碼器在公共DRAM中裝入兩個(gè)FIFO。再參看圖11,一個(gè)FIFO54放在Huffman解碼器56和分析器前面,另一個(gè)放在Huffman解碼器和分析器后面。FIFO以一種相對(duì)簡(jiǎn)單的方式實(shí)現(xiàn)。為每個(gè)FIFO,DRAM的一個(gè)特定部分?jǐn)R在一邊作為物理存儲(chǔ)器。FIFO將裝在其中。與空間解碼器DRAM接口58有聯(lián)系的地址發(fā)生器用兩個(gè)指針保持對(duì)FIFO地址的跟蹤。一個(gè)指針指向存在FIFO中的第一個(gè)字,另一個(gè)指針指向存在FIFO中的最后一個(gè)字,所以能在適當(dāng)?shù)淖稚线M(jìn)行讀/寫操作。當(dāng)在讀或?qū)懙倪^程中達(dá)到物理存儲(chǔ)器的終端,地址發(fā)生器就“疊繞”到物理存儲(chǔ)器的始端。簡(jiǎn)要地說,本發(fā)明的時(shí)間解碼器必須能存兩整幅圖象或幀,無論指定的是什么編碼標(biāo)準(zhǔn)(MPEG或H.261)。為簡(jiǎn)單起見,在DRAM中存儲(chǔ)兩幀的物理存儲(chǔ)器分成兩半,每一半專用(用適當(dāng)?shù)闹羔?于兩幅圖象中指定的一幅。MPEG用三種不同的圖象類型基(I),預(yù)測(cè)的(P)和雙向內(nèi)插的(B)。如前所述,B圖象基于根據(jù)兩幅圖象作出的預(yù)測(cè)。一幅是未來的,一幅是過去的。I圖象不需要用時(shí)間解碼器進(jìn)一步編碼,但必須存在兩個(gè)圖象緩存器之一,為以后對(duì)P和B圖象解碼時(shí)用。P圖象的解碼要求從一幅前面已解碼的P或I圖象形成預(yù)測(cè)。已解碼的P圖象存在圖象緩存器中,這是為了用于P和B圖象的解碼。B圖象可以要求兩個(gè)圖象緩存器都提供預(yù)測(cè)。然而B圖象不存在外部DRAM中。注意,I和P圖象解碼后不從時(shí)間解碼器輸出。而是,I和P圖象寫入圖象緩存器之一,并且僅當(dāng)隨后的要解碼的I或P圖象到達(dá)時(shí)才被讀出。換句話說,時(shí)間解碼器依靠隨后的P或I圖象把兩個(gè)圖象緩存器中前面的圖象清除,如下文中清除部分進(jìn)一步討論的。簡(jiǎn)要地說,空間解碼器在視頻序列結(jié)束處能提供偽造的I或P圖象用來把上次的P或I圖象清除出去。在隨后的視頻序列開始時(shí),這幅假圖象又被清除。當(dāng)對(duì)B圖象解碼時(shí),發(fā)生最大存儲(chǔ)器帶寬負(fù)荷。最壞的情況是可能根據(jù)從兩個(gè)圖象緩存器的預(yù)測(cè)來形成B幀,而所有預(yù)測(cè)的精度要達(dá)到半個(gè)象素。如前所述,時(shí)間解碼器能被配置以提供MPEG圖象重排序。由于這個(gè)圖象重排序,P和I圖象的輸出被延遲,直到數(shù)據(jù)流中的下一個(gè)P或I圖象開始被時(shí)間解碼器解碼為止。因?yàn)镻或I圖象被重排序,當(dāng)圖象寫到圖象緩存器時(shí),某些令牌暫時(shí)存在芯片上。當(dāng)圖象為了顯示而被讀出時(shí),這些存儲(chǔ)的令牌被收回。在時(shí)間解碼器的輸出,新解碼的P或I圖象的數(shù)據(jù)令牌被老的P或I的圖象的數(shù)據(jù)令牌所代替。可是,H.261只從剛解碼的圖象作出預(yù)測(cè)。因?yàn)槊糠鶊D象被解碼,它被寫入兩個(gè)圖象緩存器之一,所以它能被用于下一幅圖象的解碼。對(duì)DRAM存儲(chǔ)器操作只要求寫8×8塊和以整數(shù)精確度的移動(dòng)矢量形成預(yù)測(cè)。簡(jiǎn)要地說,視頻格式化器存三幀式三幅圖象。需要存三幅圖來適應(yīng)如重復(fù)圖象或跳越圖象這樣的特性。5、位流特性在現(xiàn)在特別涉及本發(fā)明的空間解碼器時(shí),回顧編碼數(shù)據(jù)流的位流(bitstream)特性很有幫助,因?yàn)榭臻g解碼器及時(shí)間解碼器的電路系統(tǒng)必須討論這些特性。例如,在一種或更多種標(biāo)準(zhǔn)之下,該標(biāo)準(zhǔn)的壓縮比靠改變某幅圖象各圖使用的編碼位數(shù)來實(shí)現(xiàn)。位數(shù)可以大范圍地改變。具體說,這意味著對(duì)一幅圖象的基準(zhǔn)圖編碼用的位流長(zhǎng)度可以確定為一個(gè)單位長(zhǎng),而該圖象另一張圖可以是幾個(gè)單位長(zhǎng),第三張圖則可以是不到一個(gè)單位長(zhǎng)?,F(xiàn)有各標(biāo)準(zhǔn)(MPEG1.2,JPEG,H.261)都沒有規(guī)定結(jié)束一張圖的方法,其隱含意義是,下一張圖開始時(shí),當(dāng)前的那張已經(jīng)結(jié)束。此外,各標(biāo)準(zhǔn)(尤其是H.261)允許編碼器產(chǎn)生不完整圖象。根據(jù)本發(fā)明,提供了一張圖象結(jié)束的方法,這就是使用其令牌之一PICTURE_END。從起始碼檢測(cè)器出來的仍為編碼的圖象數(shù)據(jù)包括各張由PICTURE_START令牌開始至PICTURE_END令牌結(jié)束的圖,它們的長(zhǎng)度變化仍很大??赡苓€(在第一張和第二張圖之間)送出別的信息,但是第一張圖確知已經(jīng)送完。在空間解碼器輸出的數(shù)據(jù)流表示一些仍保持圖象開始和圖象結(jié)束標(biāo)志的圖象,但是對(duì)于給定序列,它們的長(zhǎng)度(位數(shù))相同。一次圖象開始和一次圖象結(jié)束之間的時(shí)間長(zhǎng)短可變。視頻格式化器取這些時(shí)間長(zhǎng)短不一的圖象,并將它們?cè)谄聊簧巷@示,圖象顯示速度是固定的,具體數(shù)字取決于被驅(qū)動(dòng)的顯示器類型。全世界使用了不同的顯示速度,例如有PAL、NTSC等電視標(biāo)準(zhǔn)。以獨(dú)特方式兼顧了這種差異有選擇地刪去或重復(fù)一些圖象。通常的“幀速變換器”,如將3幀減為2幀(2-3pulldown),以固定的輸入圖象速率工作,但是視頻格式化器卻可以處理可變的輸入圖象速率。6、可重配置的處理級(jí)(RECONFIGURABNLEPROCESSINGSTAGE)再次參閱圖10,可重配置處理級(jí)(RPS)由令牌解碼電路33組成,它用于接收來自雙線接口37和輸入鎖存器34的令牌。令牌解碼電路33的輸出通過雙線接口37加到處理單元36,輸出也加到動(dòng)作識(shí)別(actionidentification)電路。處理結(jié)束后,處理單元36經(jīng)過輸出寄存器41將如此完成的信號(hào)送到輸出雙線接口總線42。動(dòng)作識(shí)別解碼電路39的輸入,經(jīng)過雙線接口總線40,從令牌解碼電路33來,與/或經(jīng)過雙線接口總線46從存貯器電路43和44來。來自令牌解碼電路33的令牌同時(shí)加到動(dòng)作識(shí)別電路39和處理單元36。RPS和動(dòng)作識(shí)別的功能將在本說明的后面部分用圖表進(jìn)一步闡述。圖10中的功能框圖說明了圖11、12、13中那些不是標(biāo)準(zhǔn)獨(dú)立電路的各級(jí)的工作。數(shù)據(jù)先后流過令牌解碼電路33、處理單元36、輸出鎖存器41,到達(dá)雙線接口電路42。如果控制令牌(ControlToken)被RPS識(shí)別,它就在令牌解碼電路33內(nèi)被解碼,此后將發(fā)生適當(dāng)?shù)膭?dòng)作。如果未被識(shí)別,它就不加改變地經(jīng)過輸出電路41送到輸出雙線接口42。本發(fā)明起到流水線處理的作用,它配有雙線接口以控制控制令牌在流水線內(nèi)的移動(dòng)。發(fā)明的這一特點(diǎn)在以前申請(qǐng)的歐洲專利局(EPO)專利申請(qǐng)?zhí)?2306038.8中有更詳細(xì)的敘述。在本發(fā)明中,令牌解碼電路33用于識(shí)別目前進(jìn)入雙線接口42的令牌究竟是數(shù)據(jù)令牌還是控制令牌。如果由令牌解碼電路正在考察的令牌被認(rèn)出,它就退出到動(dòng)作識(shí)別電路39,同時(shí)出現(xiàn)適當(dāng)?shù)闹甘痉?index)信號(hào)或標(biāo)志信號(hào)以指示該動(dòng)作已被采用。與此同時(shí),令牌解碼電路33也提供適當(dāng)?shù)臉?biāo)志或指示符信號(hào)到處理單元36,以提醒后者注意有令牌正在動(dòng)作識(shí)別電路39中處理??刂屏钆埔部梢越邮芟鄳?yīng)的處理。將在下文中對(duì)本發(fā)明可用的各種令牌類型作更詳細(xì)的說明。就這部分說明的目的來說,只要注意到控制令牌所攜帶的地址在解碼器33中解碼,并用于訪問在動(dòng)作識(shí)別電路39內(nèi)的寄存器,這就足夠了。當(dāng)正受考察的令牌是被認(rèn)出的控制令牌時(shí),動(dòng)作識(shí)別電路39用它的重配置狀態(tài)電路(reconfigurationstatecircuit)在整個(gè)狀態(tài)機(jī)內(nèi)分配各控制信號(hào)。如前所述,這就使動(dòng)作識(shí)別解碼器39的狀態(tài)機(jī)開動(dòng)起來,于是解碼器39對(duì)它本身進(jìn)行重配置。例如,它可以改變編碼標(biāo)準(zhǔn)。由此可見,動(dòng)作識(shí)別電路39解出了為處理目前正通過狀態(tài)機(jī)的特定標(biāo)準(zhǔn)所需的動(dòng)作,參看圖10。與此相似,在動(dòng)作識(shí)別電路39控制下的處理單元36,現(xiàn)在隨時(shí)可以處理包含在數(shù)據(jù)令牌數(shù)據(jù)字段中的信息,只要時(shí)機(jī)適宜的話。在許多場(chǎng)合下,控制令牌首先來到,將動(dòng)作識(shí)別電路39重配置;數(shù)據(jù)令牌緊跟其后,然后在處理單元36中接受處理??刂屏钆魄『迷谔幚韱卧?6處理完畢的數(shù)據(jù)令牌之前退出輸出鎖存器電路41并到達(dá)輸出雙線接口42的另一側(cè)。在本發(fā)明中,動(dòng)作識(shí)別電路39是一個(gè)保持歷史狀態(tài)(historystate)的狀態(tài)機(jī)。寄存器43和43保持著已從令牌解碼器解出、并貯存在該寄存器內(nèi)的信息。這樣的寄存器可以根據(jù)需要設(shè)在芯片內(nèi)或芯片外。這些眾多的狀態(tài)寄存器含有與當(dāng)前正在動(dòng)作識(shí)別電路39中識(shí)別的動(dòng)作識(shí)別有關(guān)的動(dòng)作信息。連接40直接從令牌解碼器33到達(dá)動(dòng)作識(shí)別部件39。其目的是表示動(dòng)作也可以受當(dāng)前正被令牌解碼電路33處理的令牌的影響。至此大體指出了根據(jù)本發(fā)明所進(jìn)行的令牌解碼和數(shù)據(jù)處理。數(shù)據(jù)處理按照動(dòng)作識(shí)別電路39構(gòu)成的方式來進(jìn)行。動(dòng)作受到許多條件的影響,它還被以下因素所影響一般說從以前解出的令牌中得到的信息,更具體地說從以前解出的令牌中得到的貯存在寄存器43和44中的信息,正在處理中的當(dāng)前令牌,以及動(dòng)作識(shí)別單元39本身已獲得的狀態(tài)和歷史信息。我們借此來指出控制令牌和數(shù)據(jù)令牌之間的差別。在任一RPS(可重配置處理級(jí))中,一些令牌被該RPS單元看成是控制令牌,這是由于它們?cè)谀硞€(gè)后繼時(shí)刻大概會(huì)影響RPS的工作。而另一些令牌則被該RPS看作數(shù)據(jù)令牌,這樣的數(shù)據(jù)令牌含有由該RPS處理的某種信息,處理方式取決于個(gè)別(particular)電路系統(tǒng)的設(shè)計(jì),以前被解碼的令牌和動(dòng)作識(shí)別電路39的狀態(tài)。雖然某個(gè)別的RPS認(rèn)出某些令牌用作該個(gè)別RPS的控制,認(rèn)出另一些令牌是數(shù)據(jù)令牌,這是該個(gè)別RPS的見解。另一個(gè)RPS可以對(duì)同一令牌有不同看法。一個(gè)RPS單元可能將某個(gè)令牌看成是數(shù)據(jù)令牌,而另一個(gè)RPS單元?jiǎng)t可能決出它實(shí)際上是控制令牌。例如,就Huffman解碼器和狀態(tài)機(jī)而言,量化表信息是數(shù)據(jù),它被格式化成一系列8位字,這些字又形成稱作量化表令牌(QUANT_TABLE)的令牌,下傳到處理流水線。就該機(jī)器而言,這些全都是數(shù)據(jù);處理數(shù)據(jù),將一類數(shù)據(jù)轉(zhuǎn)換成另一類,這明白無疑是機(jī)器這部分進(jìn)行處理的一種功能。然而,當(dāng)該信息到達(dá)逆向量化器時(shí),逆向量化器將該令牌內(nèi)的信息存入眾多的寄存器。事實(shí)上,因?yàn)橛?4個(gè)8位數(shù),所以有許多寄存器,一般說,可以有眾多的寄存器。這個(gè)信息被看作是控制信息。然后,該控制信息會(huì)影響對(duì)后繼數(shù)據(jù)令牌的處理,因?yàn)樗绊憣?duì)每一數(shù)據(jù)字的乘數(shù)。以上就是一級(jí)可能將令牌看作數(shù)據(jù)而另一級(jí)可能將它看作控制的例子。根據(jù)本發(fā)明,令牌數(shù)據(jù)在整個(gè)機(jī)器中幾乎一律被看作數(shù)據(jù)。重要方面之一是,一般說,具有令牌解碼器的每一級(jí)電路系統(tǒng)必須尋找某些令牌,它識(shí)別不出的任何令牌必須按原樣通過本級(jí)從流水線往下傳,使得在當(dāng)前級(jí)下游的各后繼級(jí)有權(quán)看到這些令牌,并可能對(duì)之作出響應(yīng)。這是一個(gè)很重要特點(diǎn),即,使用令牌技巧可以實(shí)現(xiàn)彼此不相鄰的各部件之間的通信。本發(fā)明的另一重要特點(diǎn)是,電路系統(tǒng)的每一級(jí)都有內(nèi)部處理能力,以進(jìn)行每一種標(biāo)準(zhǔn)下的必要操作,并進(jìn)行以令牌形式來到的控制,去決定在某給定時(shí)刻應(yīng)該完成哪些操作。為了提供上述能力,有一個(gè)處理元件,但它在不同級(jí)都有差異。在Parser的狀態(tài)機(jī)ROM中,有三種分開的完全不同的程序,每一種程序適應(yīng)一個(gè)所涉及的標(biāo)準(zhǔn)。執(zhí)行哪種程序取決于CODING_STANDRAD令牌。換言之,三種程序的每一種都在其內(nèi)部具有處理解碼和處理CODING_STANDARD標(biāo)準(zhǔn)令牌的雙重能力。當(dāng)三種程序的每一種看到下一個(gè)要解碼的編碼標(biāo)準(zhǔn)是哪個(gè)時(shí),它們就如實(shí)地跳到為該特定程序設(shè)置的微碼ROM內(nèi)的起始地址。以上是各級(jí)如何對(duì)待多標(biāo)準(zhǔn)性。有兩件東西受到不同標(biāo)準(zhǔn)的影響。第一是位流中被認(rèn)為是起始碼或標(biāo)志碼的各位的式樣,以便對(duì)移位寄存器重配置,去檢測(cè)起始標(biāo)志碼的長(zhǎng)度。第二是在微碼中表示該起始碼或標(biāo)志碼意義的一則信息。請(qǐng)回憶起,三種標(biāo)準(zhǔn)下各位的編碼不同。因此,微碼在為該壓縮標(biāo)準(zhǔn)特定的表內(nèi)查找與標(biāo)準(zhǔn)無關(guān)的某種東西,即代表到來碼的一種令牌。由于在大多數(shù)情況下,每一種不同的標(biāo)準(zhǔn)都提供某個(gè)碼去產(chǎn)生此令牌,它一般與標(biāo)準(zhǔn)無關(guān)。逆向量化器79具有數(shù)學(xué)運(yùn)算能力。量化器做乘法和加法,并有能力適應(yīng)由一些參數(shù)形成的所有三種壓縮標(biāo)準(zhǔn)。例如,在受控ROM中的一個(gè)標(biāo)志位會(huì)告知逆向量化器是否加某一常數(shù)K。另一標(biāo)志告知它是否加另一常數(shù)。當(dāng)CODING_STANDARD令牌流過逆向量化器時(shí),量化器將它存在寄存器中。當(dāng)數(shù)據(jù)令牌此后通過時(shí),逆向量化器將這是哪一種標(biāo)準(zhǔn)存貯下來,并查找它加到處理元件上的、為進(jìn)行適當(dāng)操作所需的各個(gè)參數(shù)。例如,逆向量化器將查找適合某一特定壓縮標(biāo)準(zhǔn)的K是置零還是置1,并將此加到處理電路。與此類似,在Huffman解碼器內(nèi)有許多表,有些為JPEG,有些為MPEG,有些為H.261而設(shè)置。事實(shí)上,這些表格多數(shù)能為一種以上的這些壓縮標(biāo)準(zhǔn)服務(wù)。使用哪些表取決于這個(gè)標(biāo)準(zhǔn)的語法(synt-ax)。當(dāng)接到來自狀態(tài)機(jī)的命令后,Huffman解碼器就工作,狀態(tài)機(jī)告知解碼器要使用哪些表。因此,并不是有一個(gè)狀態(tài)直接進(jìn)入Huffman解碼器本身,在那里貯存下來,并告知它要處理的是什么樣的編碼。相反,是Parser狀態(tài)機(jī)和Huffman解碼器結(jié)合在一起將信息包含在它們的內(nèi)部。至于本發(fā)明的空間解碼器,地址的產(chǎn)生有變動(dòng),這與圖10所示相似,即從令牌中解碼許多信息,比如編碼標(biāo)準(zhǔn)。編碼標(biāo)準(zhǔn)和附加信息被錄入寄存器,而這就影響了地址發(fā)生器狀態(tài)機(jī)的前進(jìn),因?yàn)樗徊揭徊降刈哌^,并逐個(gè)地對(duì)系統(tǒng)中的宏塊計(jì)數(shù)。最后一級(jí)可能是預(yù)測(cè)濾波器179(圖17),它工作在兩種方式之一,或是H.261或是MPEG,而這是容易識(shí)別的。7、多標(biāo)準(zhǔn)編碼本發(fā)明的系統(tǒng)還提供與標(biāo)準(zhǔn)無關(guān)的一些指示符(indices)產(chǎn)生電路的組合,這些電路與令牌解碼電路結(jié)合在一起被策略地遍布全系統(tǒng)。例如,本系統(tǒng)被用于特定地對(duì)H.261視頻標(biāo)準(zhǔn),或MPEG視頻標(biāo)準(zhǔn),或JPEG視頻標(biāo)準(zhǔn)解碼。這三種壓縮編碼標(biāo)準(zhǔn)類似地規(guī)定了對(duì)到來數(shù)據(jù)應(yīng)處理的步驟,但數(shù)據(jù)流結(jié)構(gòu)卻不相同。如前所述,起始碼檢測(cè)器的功能之一就是檢測(cè)MPEG起始碼、H.261起始碼和JPEG標(biāo)記碼,并將它們?nèi)嫁D(zhuǎn)換成一種形式,即一種含有體現(xiàn)當(dāng)前編碼標(biāo)準(zhǔn)的令牌流的控制令牌。控制令牌通過流水線處理器,并在與之有關(guān)的狀態(tài)機(jī)內(nèi)被使用(即被解碼)??刂屏钆埔餐ㄟ^與之無關(guān)的其它狀態(tài)機(jī)。就此而言,也以同樣方式對(duì)待數(shù)據(jù)令牌,因?yàn)樗鼈冎辉谀切┠鼙豢刂屏钆茦?gòu)成處理它們的狀態(tài)機(jī)中接受處理。在其余的狀態(tài)機(jī)內(nèi),它們?cè)瓨硬蛔兊赝ㄟ^。更具體一點(diǎn)說,根據(jù)本發(fā)明,控制令牌內(nèi)可以包括一個(gè)以上的字。如果如此,被稱為擴(kuò)展位的那一位被置1,從而規(guī)定在令牌中使用附加的字以攜帶附加信息。這些附加控制位的某些位相當(dāng)于指示符(indices),用來指示要在相應(yīng)的狀態(tài)機(jī)中使用的信息,以產(chǎn)生一組與標(biāo)準(zhǔn)無關(guān)的指示符信號(hào)。令牌的其余部分用來指示和識(shí)別內(nèi)部處理控制功能(internalprocessingcontrolfunction),后者對(duì)所有通過流水線處理的數(shù)據(jù)流都是標(biāo)準(zhǔn)的。在本發(fā)明的一種形式中,令牌擴(kuò)展用于傳送(carry)編碼標(biāo)準(zhǔn),該標(biāo)準(zhǔn)由遍布整機(jī)的有關(guān)令牌解碼電路解出。凡是在適于以新的編碼標(biāo)準(zhǔn)操作的地方,令牌擴(kuò)展也用于對(duì)遍布整機(jī)的各級(jí)的動(dòng)作識(shí)別電路39進(jìn)行重配置。此外令牌解碼電路能指出某控制令牌是否與選定標(biāo)準(zhǔn)之一有關(guān),這些標(biāo)準(zhǔn)是電路設(shè)計(jì)好能處理的。更具體說,MPEG起始碼和JPEG標(biāo)記的后面是一個(gè)8位數(shù)值。H.261起始碼的后面是一個(gè)4位數(shù)值。由于這個(gè)原因,起始碼檢測(cè)器51用檢測(cè)MPEG起始碼或JPEG標(biāo)記(marker)的辦法來指示后續(xù)的8位就是與起始碼有關(guān)聯(lián)的值。與上面這件事無關(guān),它接著產(chǎn)生一個(gè)信號(hào)去指出這不是H.261起始碼而是MPEG起始碼或者是JPEG標(biāo)記。首先,8位值進(jìn)入解碼電路,8位的一部分產(chǎn)生表示指示符和標(biāo)志(flag)的信號(hào),該信號(hào)在當(dāng)前電路中用于處理通過本電路的令牌。這也被用于插入控制令牌的一些片斷,以后要檢查這些片斷,以確定正在處理的是哪個(gè)標(biāo)準(zhǔn)。從這個(gè)意義上說,控制令牌中一部分指出對(duì)伴隨的數(shù)據(jù)應(yīng)作哪種類型的操作,也有一部分指出它與MPEG標(biāo)準(zhǔn)有關(guān)。如前所述,該操作信息在系統(tǒng)中用于對(duì)處理級(jí)重配置,而處理級(jí)用于完成不同標(biāo)準(zhǔn)所要求的不同功能,各種標(biāo)準(zhǔn)就是為此目的而建立的。例如,以H.261起始碼為準(zhǔn),它與緊跟其后的4位值有關(guān)。起始碼檢測(cè)器將此值送入令牌發(fā)生器狀態(tài)機(jī)。數(shù)值被加到8位解碼器,后者就產(chǎn)生3位的起始號(hào)。起始號(hào)用來識(shí)別一幅圖象的開始,圖號(hào)就是用起始號(hào)的數(shù)值指示的。本系統(tǒng)還包括多級(jí)并行處理流水線,該流水線按照前述的雙線接口的原理工作。每級(jí)由通常采用圖10所示形式的機(jī)器組成。令牌解碼電路33用于引導(dǎo)當(dāng)前進(jìn)入狀態(tài)機(jī)的令牌到動(dòng)作識(shí)別電路39,或到處理單元36,以適宜為準(zhǔn)。處理單元在以前已被更前面的控制令牌重配置成處理當(dāng)前編碼標(biāo)準(zhǔn)所需的形式,當(dāng)前編碼標(biāo)準(zhǔn)現(xiàn)在正進(jìn)入處理級(jí),并為下一個(gè)數(shù)據(jù)令牌所攜帶。此外,根據(jù)發(fā)明的這種情況,在處理流水線內(nèi)的各后繼狀態(tài)機(jī)可以以一種編碼標(biāo)準(zhǔn)(即H.261)工作著,而其前級(jí)可以用另外的標(biāo)準(zhǔn)(如MPEG)工作著。同一個(gè)雙線接口用于傳送控制令牌和數(shù)據(jù)令牌。本發(fā)明的系統(tǒng)還利用了控制令牌,這些控制令牌被要求用固定數(shù)目的可重配置處理級(jí)對(duì)一些編碼標(biāo)準(zhǔn)解碼。更具體一點(diǎn)說,使用了PICTURE_END控制令牌,因?yàn)椋袌D象真正結(jié)束時(shí)刻的指示非常重要。與此相應(yīng),在多標(biāo)準(zhǔn)機(jī)的設(shè)計(jì)中,必須在多標(biāo)準(zhǔn)的流水線處理機(jī)內(nèi)部產(chǎn)生額外的一些控制令牌,使處理機(jī)能指示要使用哪種標(biāo)準(zhǔn)解碼技術(shù)。這樣的一個(gè)控制令牌就是PICTURE_END令牌。該P(yáng)ICTURE_END令牌用來指示當(dāng)前的圖象已經(jīng)完畢,用來強(qiáng)使緩存器沖洗干凈并用來把當(dāng)前圖象從解碼器推送到顯示器。8、多標(biāo)準(zhǔn)處理電路-第二種工作方式以前述的起始碼檢測(cè)器的形式組成的、與編碼標(biāo)準(zhǔn)有關(guān)的壓縮電路,經(jīng)過某個(gè)適當(dāng)?shù)目偩€,被相配地互連到與標(biāo)準(zhǔn)無關(guān)的壓縮電路。與標(biāo)準(zhǔn)有關(guān)的電路還通過同一總線,連接到與標(biāo)準(zhǔn)無關(guān)的組合電路,以及連到附加總線。與標(biāo)準(zhǔn)無關(guān)的電路將附加的輸入加到與標(biāo)準(zhǔn)有關(guān)的電路,而后者又將信息送回與標(biāo)準(zhǔn)無關(guān)的電路。從與標(biāo)準(zhǔn)無關(guān)的電路出來的信息通過另一條適當(dāng)?shù)目偩€加到輸出端。表600說明了作為與標(biāo)準(zhǔn)有關(guān)的起始碼檢測(cè)器51輸入的多種標(biāo)準(zhǔn)包含著某些位流,后者在每一編碼位流中具有與標(biāo)準(zhǔn)有關(guān)的意義。9、起始碼檢測(cè)器如前指出,根據(jù)本發(fā)明,起始碼檢測(cè)器能提取MPEG、JPEG和H.261的位流,并能由此產(chǎn)生一個(gè)專有(proprietary)令牌序列,這些專有令牌對(duì)于解碼器的其余部分是富有意義的。作為一個(gè)多種標(biāo)準(zhǔn)解碼如何完成的例子,MPEG(1和2)picture_start_code,H.261picture_start_cide和JPEGstart_of_scan(SOS)標(biāo)記被起始碼檢測(cè)器當(dāng)作等價(jià)的信號(hào),它們?nèi)籍a(chǎn)生一個(gè)內(nèi)部PICTURE_START令牌。與此相似,MPEGsequence_start_code和JPEGSOI(start_of_image)標(biāo)記也都產(chǎn)生一個(gè)機(jī)器sequence_start令牌。然而,H.261標(biāo)準(zhǔn)沒有等價(jià)的起始碼。因此,作為對(duì)第一個(gè)H.261picture_start_code的響應(yīng),起始碼檢測(cè)器將產(chǎn)生一個(gè)sequence_start令牌。上述各種圖象沒有一個(gè)被直接使用,在起始碼檢測(cè)器(SCD)內(nèi)的使用除外。相反,機(jī)器PICTURE_START令牌,舉例說,已被認(rèn)為與包含在位流中的各PICTURE_START映象(inages)等同。此外,必須記住,機(jī)器PICTURE_START本身并不是在標(biāo)準(zhǔn)內(nèi)的PICTURE_START的直接映象(directimage)。相反,它是一個(gè)控制令牌,用于同其它控制令牌組合后提供與標(biāo)準(zhǔn)無關(guān)的解碼,這模擬了在每一壓縮編碼標(biāo)準(zhǔn)下對(duì)圖象的操作。各控制令牌的配合,加上與各別狀態(tài)機(jī)令牌解碼電路部分產(chǎn)生的指示符和/或標(biāo)志的進(jìn)一步配合,在本質(zhì)上是獨(dú)特的。各控制令牌的配合,加上隨控制令牌所攜帶的信息對(duì)電路的重配置,這在本質(zhì)上同樣是獨(dú)特的。一個(gè)典型的可重配置狀態(tài)機(jī)將在以后加以敘述。再次參看表600,在表的左欄示出的是一組標(biāo)準(zhǔn)圖象的名稱,右欄示出的是與機(jī)器有關(guān)的一些控制令牌,它們被用來對(duì)標(biāo)準(zhǔn)編碼信號(hào)仿真,該標(biāo)準(zhǔn)編碼信號(hào)在標(biāo)準(zhǔn)圖象中不存在或未被采用。參考表600,可以看出當(dāng)起始碼檢測(cè)器對(duì)該表所示的任一標(biāo)準(zhǔn)信號(hào)解碼時(shí),如前所述,它就產(chǎn)生一次機(jī)器sequence_start信號(hào)。起始碼檢測(cè)器產(chǎn)生sequence_start,group_start,sequence_end,slice_start,user_data,extra_data和PICTURE_START等令牌,它們被應(yīng)用于遍及全系統(tǒng)的雙線接口。與這些控制令牌配合工作的每一級(jí)的結(jié)構(gòu)由令牌內(nèi)容來決定,或由令牌內(nèi)容所產(chǎn)生的指示符決定。各級(jí)都準(zhǔn)備好處理當(dāng)圖象數(shù)據(jù)令牌來到該級(jí)時(shí)預(yù)期要收到的數(shù)據(jù)。如前所述,壓縮標(biāo)準(zhǔn)之一,例如H,261,在它在數(shù)據(jù)流中沒有sequence_start的映象,也沒有PICTURE_END的映象。起始碼檢測(cè)器指示出在進(jìn)入的位流中PICTURE_END的處所,并產(chǎn)生PICTURE_END令牌。在這方面,本發(fā)明的系統(tǒng)的意圖是傳送充分組合的數(shù)據(jù)字,使得本發(fā)明實(shí)施中選用的每個(gè)寄存器位置上都有一位信息。為此,選擇了15位作為在兩個(gè)起始碼之間傳送的位數(shù)。當(dāng)然,一個(gè)具有本行一般技能的人也能意識(shí)到可以作出多于或少于15位的選擇。換言之,正從起始碼檢測(cè)器送入DRAM接口的數(shù)據(jù)字的全部15位對(duì)于正常工作都是必需的。因此,起始碼檢測(cè)器要產(chǎn)生稱為裝填的額外一些位,以插入數(shù)據(jù)令牌的最后字中。為了示例的目的,選擇了15位。為了實(shí)現(xiàn)裝填操作,根據(jù)本發(fā)明,二進(jìn)制0后繼若干二進(jìn)制1被自動(dòng)插入,以填滿15位數(shù)據(jù)字。此數(shù)據(jù)然后通過編碼數(shù)據(jù)緩存器,送到Huffman解碼器,該解碼器又把裝填除去。如此,任意位數(shù)就可以通過固定大小和寬度的緩存器。在一種具體實(shí)現(xiàn)中,slice_start控制令牌被用來識(shí)別一片(slice)圖象。使用slice_start控制令牌,以便將圖象分切成更小的區(qū)域。區(qū)域的大小由編碼器選擇。起始碼檢測(cè)器識(shí)別出這個(gè)獨(dú)特格式的slice_start碼,以便位于起始碼檢測(cè)器下游的、與機(jī)器有關(guān)的各狀態(tài)級(jí)將正在收到的圖象分切成一些更小的區(qū)域。區(qū)域的尺寸由編碼器選擇,由起始碼檢測(cè)器識(shí)別,由重新組成(recombinat-ion)電路系統(tǒng)和控制令牌使用,以便對(duì)編碼圖象解壓縮(decompre-ss)。slice_start碼主要用于出錯(cuò)后的復(fù)原。起始碼提供一種起動(dòng)解碼器的獨(dú)特方法,這將在以后作更詳細(xì)的討論。將起始碼檢測(cè)器放在編碼數(shù)據(jù)緩存器之前,而不是放在其后并放在Huffman解碼器及視頻信號(hào)分離器(videodemultiplexor)之前,這有許多好處。將起始碼檢測(cè)器位于第一緩存器可使它1)收集(assemble)令牌,2)對(duì)標(biāo)準(zhǔn)控制信號(hào)解碼,如對(duì)起始碼解碼,3)在數(shù)據(jù)進(jìn)入緩存器之前裝填位流。4)產(chǎn)生合適的控制令牌序列,以出空緩存器,同時(shí)將現(xiàn)有數(shù)據(jù)從緩存器推入Huffman解碼器。由起始檢測(cè)器輸出的控制令牌的大部分直接反映了不同圖象的語法元素(syntacticelements)和視頻編碼標(biāo)準(zhǔn)。起始碼檢測(cè)器將語法元素變換成控制令牌。除了這些自然令牌之處,還產(chǎn)生了一些獨(dú)特的和/或與機(jī)器有關(guān)的令牌。這些獨(dú)特的令牌包括一些專門為在本發(fā)明的系統(tǒng)中使用而設(shè)計(jì)的令牌,后者在本質(zhì)上是獨(dú)特的,有助于體現(xiàn)本發(fā)明的適應(yīng)多標(biāo)準(zhǔn)的性質(zhì)。這些獨(dú)特令牌的例子有PICTURE_END和CODING_STANDARD。還引入了一些令牌,以去除各編碼標(biāo)準(zhǔn)之間的某些語法差異,及具備與出錯(cuò)條件協(xié)作的功能。令牌的自動(dòng)產(chǎn)生是在對(duì)與標(biāo)準(zhǔn)有關(guān)的數(shù)據(jù)作了一系列分析之后才完成的。因此空間解碼器對(duì)兩類令牌的響應(yīng)相同。一類是那些已經(jīng)直接提供到空間解碼器即SCD輸入端的令牌,一類是那些在編碼數(shù)據(jù)中檢測(cè)到起始碼之后已經(jīng)產(chǎn)生的令牌。一連串額外的令牌被插入雙線接口,以便控制本發(fā)明的多標(biāo)準(zhǔn)特性。MPEG和H.261編碼視頻流具有與標(biāo)準(zhǔn)有關(guān)的、非數(shù)據(jù)的、可識(shí)別的位模型,其中之一今后被稱作起始映象(startimage)和/或與標(biāo)準(zhǔn)有關(guān)碼。在JPEG中起類似作用的碼叫標(biāo)記碼(markercodes)。這些起始/標(biāo)記碼用來識(shí)別編碼數(shù)據(jù)流語法的重要部分。由起始碼檢測(cè)器完成的起始/標(biāo)記碼的分析是對(duì)編碼數(shù)據(jù)作語法分析(parsing)的第一步。起始/標(biāo)記碼的模型設(shè)計(jì)得使它們可以在不必對(duì)整個(gè)位流解碼就被識(shí)別出來。所以根據(jù)本發(fā)明,它們可以用來協(xié)助做出錯(cuò)復(fù)原和編碼器起動(dòng)的工作。起始碼檢測(cè)器提供在編碼數(shù)據(jù)結(jié)構(gòu)中檢測(cè)錯(cuò)誤的設(shè)施,并幫助解碼器起動(dòng)。解碼器起動(dòng)過程及起始碼檢測(cè)器檢測(cè)錯(cuò)誤的能力都將在以后作更詳細(xì)的討論。以上的說明主要涉及到了與機(jī)器有關(guān)的位流的特性及其與本發(fā)明的尋址特性的關(guān)系。以下將參照起始碼檢測(cè)器說明與標(biāo)準(zhǔn)有關(guān)的編碼數(shù)據(jù)的位流特性。每一個(gè)標(biāo)準(zhǔn)的壓縮編碼系統(tǒng)都使用了一種獨(dú)特的起始碼構(gòu)形(configuration)或其映象,選定使用它是為了識(shí)別該系統(tǒng)特定的規(guī)范。每種起始碼也都隨身帶有起始碼值。起始碼值用于在本標(biāo)準(zhǔn)的語言范圍內(nèi)識(shí)別與該起始碼有關(guān)的操作類型。在本發(fā)明的多標(biāo)準(zhǔn)解碼器中,如前所述,兼容性基于控制令牌和數(shù)據(jù)令牌的構(gòu)形。指示符信號(hào),包括標(biāo)志信號(hào),在每個(gè)狀態(tài)機(jī)內(nèi)部由電路產(chǎn)生,它們將在今后適宜時(shí)加以說明。在各標(biāo)準(zhǔn)中包含的起始碼和/或標(biāo)記碼,以及與數(shù)據(jù)字相對(duì)立的其它標(biāo)準(zhǔn)字,有時(shí)被認(rèn)為是映象,以避免與使用的碼和/或與機(jī)器有關(guān)的碼相混淆,后者是指在機(jī)器內(nèi)使用的控制令牌和/或數(shù)據(jù)令牌的內(nèi)容。再者,起始碼這個(gè)詞時(shí)常作為類屬詞(genericterm)使用,指MPEG和H.261起始碼,也指JPEG標(biāo)記碼。標(biāo)記碼和起始碼的用途相同。再有,“沖洗”一詞既用來指FLUSH令牌,也作為動(dòng)詞使用,例如當(dāng)說到?jīng)_洗起始碼檢測(cè)器的移位寄存器時(shí)(包括信號(hào)“已被沖洗”中的“flushed”)。為避免混淆,沖洗令牌中的沖洗(英文詞)總是用大寫體書寫。該詞的其它用法(動(dòng)詞或名詞)用小寫體。與標(biāo)準(zhǔn)有關(guān)的編碼輸入圖象輸入流由不同長(zhǎng)度的數(shù)據(jù)和起始映象組成。起始映象隨身帶著數(shù)值,該數(shù)值告知用戶根據(jù)本標(biāo)準(zhǔn)對(duì)緊接其后的數(shù)據(jù)將進(jìn)行哪種操作。然而,在本發(fā)明的多標(biāo)準(zhǔn)流水線處理系統(tǒng)中,要求對(duì)多種標(biāo)準(zhǔn)有兼容性,系統(tǒng)已經(jīng)過優(yōu)化,可以用所有標(biāo)準(zhǔn)進(jìn)行所有的操作。因此,在許多場(chǎng)合下,必須建立獨(dú)特的起始控制令牌,不但它們與包含在編碼信號(hào)標(biāo)準(zhǔn)映象的數(shù)值內(nèi)的數(shù)值兼容,它們還能控制各級(jí)去模擬本標(biāo)準(zhǔn)的操作,每種標(biāo)準(zhǔn)都有指定的本行熟知的參數(shù)來表示其操作。所有這樣的標(biāo)準(zhǔn)都根據(jù)參考資料體現(xiàn)在本說明書中。重要的是理解令牌之間的關(guān)系,這些令牌單獨(dú)地或與其它控制令牌結(jié)合地模擬包含在標(biāo)準(zhǔn)位流內(nèi)的非數(shù)據(jù)信息。每個(gè)狀態(tài)機(jī)各自產(chǎn)生一套指示符信號(hào),包括標(biāo)志信號(hào),以在該狀態(tài)機(jī)內(nèi)部作某種處理。在各標(biāo)準(zhǔn)中附帶的數(shù)值可以用來訪問與機(jī)器有關(guān)的各控制信號(hào),以便模擬對(duì)標(biāo)準(zhǔn)數(shù)據(jù)和非數(shù)據(jù)信號(hào)的操作。例如,slice_start令牌是雙字令牌,然后它進(jìn)入前述的雙線接口。輸入到本發(fā)明的系統(tǒng)的數(shù)據(jù)可以是從任何合適的數(shù)據(jù)源,例如磁盤、磁帶等等,來的數(shù)據(jù)。數(shù)據(jù)源將8位數(shù)據(jù)提供給空間解碼器第一個(gè)功能級(jí),起始碼檢測(cè)器(圖11)。起始碼檢測(cè)器包括三個(gè)移位寄存器;第一個(gè)移位寄存器8位寬,下一個(gè)24位寬,再下一個(gè)15位寬。每個(gè)移位寄存器都是雙線接口的一部分。從數(shù)據(jù)源來的數(shù)據(jù)在一個(gè)定時(shí)周期內(nèi)以單個(gè)8位的字節(jié)裝入第一寄存器。此后,第一移位寄存器的內(nèi)容一次一位地移入解碼(第二)移位寄存器。在24個(gè)周期后,24位寄存器就滿了。8位字節(jié)每8個(gè)周期一次地裝入第一移位寄存器。每個(gè)字節(jié)被裝入值移位寄存器221(圖20),然后用8個(gè)附加周期將它出空,并對(duì)移位寄存器224裝入。出空它用了8個(gè)周期,所以在三次這樣的操作或24周以后,在24位寄存器內(nèi)仍有三個(gè)字節(jié)的內(nèi)容。值解碼移位寄存器230仍舊是空的。假定現(xiàn)在在24位移位寄存器內(nèi)有一個(gè)PICTURE_START字,檢測(cè)周期認(rèn)出了該P(yáng)ICTURE_START碼的格式,并提供起始信號(hào)作為其輸出。一旦檢測(cè)器檢測(cè)到一次起始,在此信號(hào)之后的字節(jié)便是與該起始碼有關(guān)的值,該字節(jié)當(dāng)前正占在值寄存器221內(nèi)。由于檢測(cè)移位寄存器的內(nèi)容已被識(shí)別為起始碼,其內(nèi)容必須從雙線接口中除去,以確保不再用這三個(gè)字節(jié)進(jìn)行進(jìn)一步的處理。解碼寄存器被出空,值解碼移位寄存器等待著要全部經(jīng)過這樣的寄存器移過來的值。值解碼移位寄存器的低位位置上現(xiàn)在有一個(gè)與PICTURE_START相關(guān)的值??臻g解碼器內(nèi)與標(biāo)準(zhǔn)的PICTURE_START信號(hào)對(duì)應(yīng)的信號(hào)稱作SDPICTURE_START。SDPICTURE_START信號(hào)本身現(xiàn)在即將包含在令牌頭內(nèi),值也即將包含在令牌頭的擴(kuò)展字內(nèi)。10、令牌在本發(fā)明的實(shí)踐中,令牌是一種用途廣泛的適應(yīng)單元(adapta-tionunit),其形式是一交互接口信息包(aninteractiveinterfacingmessengerpackage),用于控制和/或數(shù)據(jù)。它適應(yīng)于可重配置處理級(jí)的使用。后者(RPS)在響應(yīng)某一已識(shí)別的令牌時(shí),對(duì)自己重配置以進(jìn)行各種各樣的操作。為了實(shí)現(xiàn)不同的功能,令牌可以或者與處理級(jí)的位置有關(guān),或者與位置無關(guān)。令牌也可以是變形的,它們可以被某一處理級(jí)修改,然后下傳到流水線以執(zhí)行更多的功能。令牌可以同所有各級(jí)或少于所有各級(jí)互相配合,從這個(gè)意義上說,令牌可以同相鄰級(jí)和/或不相鄰級(jí)互相配合。令牌對(duì)某些功能可以與位置有關(guān),而對(duì)另一些功能卻與位置無關(guān);令牌與某一級(jí)的具體相互作用可以以某級(jí)過去的處理歷史為條件。PICTURE_END令牌是在多標(biāo)準(zhǔn)解碼器中標(biāo)志圖象結(jié)束的一種方法。多標(biāo)準(zhǔn)令牌是將MPEG、JPEG和H.261數(shù)據(jù)流映射到單一解碼器的一種方法。該解碼器使用與標(biāo)準(zhǔn)有關(guān)和與標(biāo)準(zhǔn)無關(guān)的硬件與控制令牌的混合體。SEARCH_MODE令牌是一種搜索MPEG、JPEG和H.261數(shù)據(jù)流的技巧,它允許隨機(jī)訪問和增強(qiáng)的出錯(cuò)復(fù)原。STOP_AFTER_PICTURE令牌是清楚地結(jié)束解碼的一種方法,它標(biāo)志一幅圖象的結(jié)束并清除解碼器流水線,即通道變換(channelchange)。此外,對(duì)令牌裝填是將任意位數(shù)通過固定大小、固定寬度緩存器的一種方法。本發(fā)明的目標(biāo)是一種使用令牌和雙線裝置的、配置可變的流水線處理系統(tǒng)。采用控制令牌和數(shù)據(jù)令牌并與雙線裝置相結(jié)合,使多標(biāo)準(zhǔn)系統(tǒng)變得容易。與不使用控制令牌的系統(tǒng)相比,它具有擴(kuò)展的操作能力??刂屏钆朴山獯a器處理器內(nèi)部的電路系統(tǒng)產(chǎn)生,它們模擬許多不同類型的與標(biāo)準(zhǔn)有關(guān)的信號(hào)的工作,這些信號(hào)送入串行的流水線處理器接受處理。所使用的方法是研究被串行處理器選用的那些多標(biāo)準(zhǔn)的所有參數(shù),注意1)這些標(biāo)準(zhǔn)的相似點(diǎn),2)它們的不同點(diǎn),3)它們的需要和要求,4)選擇正確的令牌功能,以有效地處理所有送入串行處理器的標(biāo)準(zhǔn)信號(hào)。令牌的作用是對(duì)標(biāo)準(zhǔn)作模擬。控制令牌的作用部分地用作與標(biāo)準(zhǔn)有關(guān)的信號(hào)之間的仿真/轉(zhuǎn)換,部分地用作在流水線處理器內(nèi)傳送控制信息的要素。在先有技術(shù)的系統(tǒng)中,是按照熟知方法設(shè)計(jì)能辨認(rèn)標(biāo)準(zhǔn)的專用機(jī),然后靠微處理器接口確立專用的線路系統(tǒng)。從微處理器來的信號(hào)被用于控制數(shù)據(jù)在專用下游組件中的流動(dòng)。這一解壓縮功能的選擇、定時(shí)和組織都處于固定的邏輯電路的控制之下,有微處理器的信號(hào)參加控制。與上述對(duì)照,本發(fā)明的系統(tǒng)則在控制令牌的控制下對(duì)下游的各功能級(jí)配置。從MPU(微處理器單元)得到必需的和/或其替換的控制,這作為任選項(xiàng)提供。令牌為在解壓縮電路流水線處理器中傳送信息提供并制定了切合實(shí)際的格式。在下文選定的、優(yōu)先實(shí)施例用的設(shè)計(jì)中,每個(gè)令牌字至少8位寬,一個(gè)令牌可以延續(xù)一個(gè)或更多字。地址字段的長(zhǎng)度可變,并可能延續(xù)多個(gè)字。在優(yōu)選實(shí)施例中,地址不長(zhǎng)于8位。然而,這不是對(duì)本發(fā)明適用范圍的限制,這只是限制了利用這些令牌而必須完成的、選定的處理步驟數(shù)目。注意在擴(kuò)展位識(shí)別標(biāo)牌項(xiàng)下,在字1和字2中的擴(kuò)展位為1,其意義是,此后將出現(xiàn)一些附加字。字3中的擴(kuò)展位為0,因此指示該令牌的結(jié)束。令牌也能是可變位長(zhǎng)的。例如,令牌字為9位,加上擴(kuò)展位,總共就是10位。在本發(fā)明的設(shè)計(jì)中,各輸出總線的寬度也是可變的??臻g解碼器的輸出是9位寬,或者,當(dāng)包括擴(kuò)展位在內(nèi)時(shí),是10位。在優(yōu)先實(shí)施例中,利用這些擴(kuò)展位的唯一令牌是數(shù)據(jù)令牌;所有其它令牌都忽視該擴(kuò)展位。應(yīng)該明白,這不是限制,這只是一種實(shí)現(xiàn)。通過應(yīng)用數(shù)據(jù)令牌和控制令牌的構(gòu)形特點(diǎn),就可能改變正由這些數(shù)據(jù)令牌傳送的數(shù)據(jù)的長(zhǎng)度,這是從字內(nèi)位數(shù)的意義上說的。例如,曾經(jīng)討論過,數(shù)據(jù)令牌某字中的一些數(shù)據(jù)位可以和同一數(shù)據(jù)令牌另一字中的一些數(shù)據(jù)位相結(jié)合,以形成11位或10位地址,用于訪問遍布在本串行解壓縮處理器中的各個(gè)隨機(jī)存貯器。這就增加了可變性的程度,也就使大大擴(kuò)充多功能性變得容易了。如前所述,數(shù)據(jù)令牌將數(shù)據(jù)從一個(gè)處理級(jí)傳送到下一個(gè)。因此,這個(gè)令牌的特性在它通過解碼器時(shí)改變了。例如,在空間解碼器的輸入處,數(shù)據(jù)令牌攜帶的是8位字組成的位序列(bitserial)編碼視頻數(shù)據(jù)。此處,對(duì)每個(gè)令牌的長(zhǎng)度沒有限制。然而,為了舉例說明本發(fā)明在這方面的多功能性(在空間解碼器電路的輸出),每個(gè)數(shù)據(jù)令牌恰好具有64字,每字為9位寬。更具體地說,標(biāo)準(zhǔn)編碼信號(hào)允許不同長(zhǎng)度的消息對(duì)圖象的不同密度和不同細(xì)節(jié)編碼。一組圖象中的第一幅通常具有最長(zhǎng)的數(shù)據(jù)位數(shù),因?yàn)樗枰蛱幚韱卧峁┳疃嗟男畔?,使得它能用盡可能多的信息去開始解壓縮。在典型情況下,后繼字的長(zhǎng)度較短,因?yàn)樗鼈兯氖菍⒌谝蛔趾蛼呙栊畔⒆侄紊系牡诙恢帽容^后得出的差別信號(hào)。正如標(biāo)準(zhǔn)編碼系統(tǒng)所要求的,這些字互相夾雜,使得能為空間解碼器輸入提供不同數(shù)量的數(shù)據(jù)。然而,在空間解碼器完成作用之后,其輸出端信息卻是以適宜在屏幕上顯示的圖象格式速率提供的。為了與全世界不同顯示制式接軌(如NTSC、PAL和SECAM),以空間解碼器時(shí)間表示的輸出速率可以改變。視頻格式化器將此可變圖象速率轉(zhuǎn)換成適于顯示的固定圖象速率。但是,圖象數(shù)據(jù)仍舊由64字的數(shù)據(jù)令牌傳送。11、DRAM接口在三個(gè)解碼器芯片中的每一個(gè),都使用了單獨(dú)的高性能可配置的DRAM接口。一般說,在每個(gè)芯片上的DRAM接口基本上是一樣的,但是這些接口在如何處理通道優(yōu)先次序方面卻各不相同。本接口被設(shè)計(jì)成能直接驅(qū)動(dòng)為空間解碼器、時(shí)間解碼器和視頻格式化器所用的DRAM。典型情況下,在那些系統(tǒng)中,DRAM接口到DRAM之間的連接總是不需要外部邏輯、緩存器或別的組件。根據(jù)本發(fā)明,接口可以可從兩方面配置1、接口的詳細(xì)定時(shí)關(guān)系可配置,以適合各種不同類型的DRAM。2、數(shù)據(jù)接口至DRAM的寬度可配置,以便在不同應(yīng)用中達(dá)到價(jià)格/性能的折衷。一般說,DRAM接口是裝在本系統(tǒng)三種芯片的每片上與標(biāo)準(zhǔn)無關(guān)的部分。再次重復(fù),它們是空間解碼器、時(shí)間解碼器和視頻格式化器。再次參看圖11、12和13,這些圖分別展示了DRAM接口和空間解碼器、時(shí)間解碼器、視頻格式化器剩余部分的關(guān)系框圖。在每種芯片上,DRAM接口將芯片接至某個(gè)外部DRAM。使用DRAM是因迄今為止在片內(nèi)制造所需的數(shù)量相對(duì)龐大的DRAM還不合實(shí)際。注意每個(gè)芯片有它自己的外部DRAM和它自己的DRAM接口。此外,雖然DRAM接口是與壓縮標(biāo)準(zhǔn)無關(guān)的,它仍必須配置以實(shí)現(xiàn)多標(biāo)準(zhǔn)中的每一種標(biāo)準(zhǔn),H.261、JPEG和MPEG。至于如何對(duì)DRAM接口重配置以實(shí)現(xiàn)多標(biāo)準(zhǔn)操作,這將在本說明書后面作進(jìn)一步說明。了解DRAM接口的工作,相應(yīng)地需要了解DRAM接口和地址產(chǎn)生器的關(guān)系,以及了解二者如何用雙線接口來通信。一般說,顧名思義,地址產(chǎn)生器產(chǎn)生DRAM接口對(duì)DRAM尋址(即讀出或?qū)懭隓RAM的特定地址)所需的地址。有了雙線接口,只有當(dāng)DRAM接口同時(shí)有數(shù)據(jù)(來自流水線各前級(jí))和有效地址(來自地址產(chǎn)生器)時(shí)才發(fā)生讀和寫。正如以下進(jìn)一步討論的,使用分開的地址發(fā)生器既簡(jiǎn)化了地址發(fā)生器的結(jié)構(gòu),也簡(jiǎn)化了DRAM接口的結(jié)構(gòu)。在本發(fā)明中,DRAM接口可以在一種時(shí)鐘下運(yùn)行,該時(shí)鐘與地址發(fā)生器異步,它也和數(shù)據(jù)通過的各級(jí)的時(shí)鐘異步。采用了特別技巧來對(duì)待操作的這種異步特性。數(shù)據(jù)典型地以64字節(jié)的塊為單位在DRAM接口和芯片其余部分之間傳送(唯一例外是時(shí)間解碼器內(nèi)的預(yù)測(cè)數(shù)據(jù))。傳送靠一種稱為“交替緩存器”的器件來實(shí)現(xiàn)。這主要是一對(duì)以雙緩存形式工作的RAM,在DRAM接口裝滿或出空一個(gè)RAM的同時(shí),芯片另一部分出空或裝滿另一個(gè)RAM。每個(gè)交替緩存器都配有分別的總線,以傳送從地址發(fā)生器來的地址。在本發(fā)明中,每種芯片都有四個(gè)交替緩存器,但每種情況下這些交替緩存器的作用都不相同。在空間解碼器中,一個(gè)交替緩存器用來將編碼數(shù)據(jù)傳送到DRAM,另一個(gè)用來從DRAM讀取編碼數(shù)據(jù),第三個(gè)用來將令牌化數(shù)據(jù)傳送到DRAM,第四個(gè)用來從DRAM讀令牌化數(shù)據(jù)。在時(shí)間解碼器中,則是一個(gè)交替緩存器用來將基(intra)或預(yù)測(cè)的圖象數(shù)據(jù)寫入DRAM,第二個(gè)從DRAM讀基或預(yù)測(cè)的圖象數(shù)據(jù),其余兩個(gè)讀前向或后向預(yù)測(cè)數(shù)據(jù)。在視頻格式化器中,一個(gè)交替緩存器用來將數(shù)據(jù)傳送到DRAM,其余三個(gè)用于從DRAM讀數(shù)據(jù),每個(gè)各讀亮度(Y)和紅、蘭色差數(shù)據(jù)(分別是Cr和Cb)中的一個(gè)。以下將說明具有一個(gè)寫交替緩存器和一個(gè)讀交替緩存器的假想DRAM接口的工作。它基本上和空間解碼器的DRAM接口的工作相同。工作情況在圖23中說明。圖23表明地址產(chǎn)生器301、DRAM接口302和傳送數(shù)據(jù)的芯片其它各級(jí)之間的控制接口都是雙線接口。地址產(chǎn)生器301可以產(chǎn)生作為接收控制令牌結(jié)果的地址,也可以僅僅產(chǎn)生固定的地址序列(例如,用于空間解碼器的FIFO緩存器)。DRAM接口以特殊方式對(duì)待與地址產(chǎn)生器301有關(guān)的雙線接口。當(dāng)準(zhǔn)備好接受地址時(shí),它并不使接受(accept)線保持為高,而是等待地址產(chǎn)生器提供有效地址,處理該地址,然后在一個(gè)時(shí)鐘周期期間置接受線為高。如此,它實(shí)現(xiàn)了請(qǐng)求/響應(yīng)(REQ/ACK)協(xié)議。DRAM接口302的一個(gè)獨(dú)有特點(diǎn)是它能獨(dú)立地和地址產(chǎn)生器301及與提供或接受數(shù)據(jù)的各級(jí)通信。例如,地址產(chǎn)生器可以產(chǎn)生與寫交替緩存器內(nèi)數(shù)據(jù)有關(guān)的地址(圖24),但是不會(huì)有動(dòng)作發(fā)生,直到寫交替緩存器發(fā)信號(hào)表明已有一塊數(shù)據(jù)準(zhǔn)備好待寫入外部DRAM。類似地說,寫交替緩存器可以含有一塊已準(zhǔn)備好待寫入外部DRAM的數(shù)據(jù),但是沒有動(dòng)作發(fā)生,直到有地址從地址產(chǎn)生器301加到適當(dāng)?shù)目偩€上。此外,一旦寫交替緩存器中的一個(gè)RAM已經(jīng)充滿數(shù)據(jù),另一個(gè)RAM可能完全出空,并在數(shù)據(jù)輸入被停止(雙線接口的接受信被置為低)之前就被“交替”到DRAM接口方。在理解本發(fā)明的DRAM接口302工作的過程中,重要的是在一個(gè)配置適當(dāng)?shù)南到y(tǒng)內(nèi),DRAM接口必須能使交替緩存器與外部DRAM303之間傳送數(shù)據(jù)的速度至少和交替緩存器和芯片其余部分之間傳送數(shù)據(jù)的所有平均速度之和一樣快。每個(gè)DRAM接口302決定它下次將使用哪個(gè)交替緩存器。一般說,這將是一次“循環(huán)”(roundrobin)(即,下次使用的交替緩存器是最近最少輪到而下次又可以得到的那個(gè)),或是一個(gè)優(yōu)選次序編碼器(即,在其中,某些交替緩存器比另一些具有更高的優(yōu)先級(jí))。在這兩種情況下,刷新請(qǐng)求發(fā)生器(refreshrequestgenerator)都會(huì)送出一次額外請(qǐng)求,該請(qǐng)求比所有其它請(qǐng)求的優(yōu)先級(jí)都高。刷新請(qǐng)求由刷新計(jì)數(shù)器產(chǎn)生,后者可以通過微處理器接口編程。現(xiàn)在參看圖24,在那里是寫交替緩存器的框圖。寫交替緩存器接口含有兩個(gè)RAM,RAM1311和RMA2312。正如本文進(jìn)一步要討論的,在寫地址313和控制314的控制下,從前級(jí)來的數(shù)據(jù)被寫入RAM1311和RAM2312。數(shù)據(jù)從RAM1311和RAM2312。數(shù)據(jù)從RAM1311和RAM2312寫入DRAM315。當(dāng)將數(shù)據(jù)寫入DRAM315時(shí),DRAM的行地址由地址產(chǎn)生器提供,列地址則由寫地址和控制信號(hào)提供,這在今后還要敘述。在工作期間,有效數(shù)據(jù)在輸入316處出現(xiàn)(數(shù)據(jù)輸入)。典型情況下,從前級(jí)接收數(shù)據(jù)。隨著每個(gè)數(shù)據(jù)從前級(jí)收到,它被寫入RAM1311,然后寫地址控制使RAM1的地址增值,以允許下一數(shù)據(jù)寫入RAM1。數(shù)據(jù)繼續(xù)被寫入RAM1311,直到或是不再有數(shù)據(jù),或是RAM1已滿。當(dāng)RAM1滿時(shí),輸入方放棄控制并發(fā)信號(hào)至讀方,以指示RAM1現(xiàn)在已準(zhǔn)備好被讀出。該信號(hào)在兩種異步時(shí)鐘體系之間通過,因此通過三個(gè)同步用的觸發(fā)器。如果RAM2312為空,在輸入方來到的下一數(shù)據(jù)就被寫入RAM2。否則,當(dāng)RAM2312出空后才寫入。當(dāng)循環(huán)或優(yōu)先級(jí)編碼器(視個(gè)別芯片使用哪個(gè)而定)指出現(xiàn)在輪到讀取本交替緩存器時(shí),DRAM接口就讀取RAM1311的內(nèi)容并將它們寫到外部DRAM315。接著,越過異步接口送回一個(gè)信號(hào),以表示RAM1311現(xiàn)在準(zhǔn)備好可再次被填充。如果DRAM接口出空RAM1311并在輸入方充滿RAM2312之前“交替”到RAM1,則數(shù)據(jù)可以由交替緩存器不斷地接受。否則,當(dāng)RAM2滿時(shí),交替緩存器會(huì)將其接受信號(hào)置低,直到RAM1己被“交替”回來以供輸入方使用。根據(jù)本發(fā)明,讀交替緩存器的工作與此相似,不過要巔倒輸入和輸出總線。本發(fā)明的DRAM接口的設(shè)計(jì)使它具有最大可得的存貯器帶寬。每個(gè)8×8的數(shù)據(jù)塊存在同一DRAM頁內(nèi)。因此,可充分地使用DRAM快速頁訪問的各種方式,該方式先提供一個(gè)行地址,接著提供許多列地址。特別是,行地址由地址產(chǎn)生器供給,而列地址由DRAM接口供給。這在以后還將進(jìn)一步討論。此外,該接口還有這樣的裝置,它允許接到外部DRAM的數(shù)據(jù)總線的寬度是8、16或32位。因此,所使用的DRAM數(shù)量可以同特定應(yīng)用所需的大小和帶寬相配。在本例(它和空間解碼器內(nèi)的DRAM接口工作原理完全相同)中,地址產(chǎn)生器給DRAM接口提供每個(gè)讀和寫交替緩存器的器件地址。該地址用作DRAM的行地址。六位的列地址由DRAM接口本身提供,這六位也用作交替緩存器RAM的地址。至交替緩存器的數(shù)據(jù)總線為32位寬。因此,如果至外部DRAM的總線寬度小于32位,則在下一字從寫交替緩存器讀出或下一字寫入讀交替緩存器之前(讀和寫是指相對(duì)于外部DRAM的傳送方向),必須進(jìn)行兩次或四次外部DRAM的訪問。如果是時(shí)間解碼器和視頻格式化器,情況就更復(fù)雜。時(shí)間解碼器的尋址更為復(fù)雜是由于它的預(yù)測(cè)方面,這在本節(jié)進(jìn)一步討論。視頻格式化器的尋址更為復(fù)雜是由于視頻輸出的多標(biāo)準(zhǔn)方面,這在與視頻格式化器有關(guān)的各節(jié)中進(jìn)一步討論。如前所述,時(shí)間解碼器有四個(gè)交替緩存器其中兩個(gè)用于讀和寫解碼的基(I)和預(yù)測(cè)(P)的圖象數(shù)據(jù)。這個(gè)的工作如同前述。另兩個(gè)用于接收預(yù)測(cè)數(shù)據(jù)。這兩個(gè)緩存器較為有趣。一般說,預(yù)測(cè)數(shù)據(jù)將根據(jù)動(dòng)動(dòng)矢量規(guī)定的x和y值,從正在處理的本塊位置偏移。因此有待檢索(toberetrieved)的那塊數(shù)據(jù)一般不和原來編碼(并寫入DRAM)時(shí)的數(shù)據(jù)塊的邊界相符。這一點(diǎn)在圖25中表示,帶陰影的面積代表正在形成的塊,而虛線輪廓代表正在推算的塊。地址產(chǎn)生器將動(dòng)動(dòng)矢量所規(guī)定的地址轉(zhuǎn)換成塊偏移(整塊數(shù),用大箭表示)和象素偏移(用小箭表示)。在地址產(chǎn)生器中,幀指針、基塊地址和矢量偏移三者相加,以形成有待從DRAM檢索的塊的地址。如果象素偏移為零,就只產(chǎn)生一次請(qǐng)求。如果有x方向或y方向的偏移,就產(chǎn)生兩次請(qǐng)求,即原來的塊地址及緊接在下面的地址。如果既有x偏移又有y偏移,則產(chǎn)生四次請(qǐng)求。對(duì)于每個(gè)要檢索的塊,地址產(chǎn)生器計(jì)算出起始和停止地址,這最好用例子說明。設(shè)想有(1,1)的象素偏移,用圖26的陰影面積表示。地址產(chǎn)生器作出四次請(qǐng)求,在圖中的標(biāo)號(hào)為A至D。要解決的問題是如何快速提供行地址序列。答案是使用“起始/停止”技術(shù),說明如下。考察圖26中的塊A。讀取必須在位置(1,1)開始和在位置(7,7)結(jié)束。暫定一次正在讀一個(gè)字節(jié)(即,8位的DRAM接口)。在坐標(biāo)(co_ordinatepair)對(duì)中的x值形成地址的三個(gè)最低有效位,y值形成三個(gè)最高有效位。x和y的起始值都是1,因此地址為9。數(shù)據(jù)從該地址讀出,然后x增值。這一過程重復(fù),直到x值到達(dá)停止值。這時(shí)y值增1,x的起始值重新裝入,給出地址17。當(dāng)每個(gè)數(shù)據(jù)字節(jié)讀出后,x值再次增加直到到達(dá)它的停止值。此過程重復(fù),直到x和y值都到達(dá)停止值。于是產(chǎn)生了地址序列9、10、11、12、13、14、15、17......、23、25、......、31、33、......、......57、......、63。類似地,塊B的起始和停止坐標(biāo)是(1,0)和(7,0),塊C是(0,1)和(0,7),塊D是(0,0)和(0,0)。下一問題是此數(shù)據(jù)應(yīng)該寫入何處。很明顯,看塊A,從地址9讀出的數(shù)據(jù)應(yīng)該寫入交替緩存器中的地址0,而從地址10讀出數(shù)據(jù)應(yīng)該寫入交替緩存器中的地址1,等等。與此相似,從塊B內(nèi)地址8讀出的數(shù)據(jù)應(yīng)該寫入交替緩存器內(nèi)的地址15,而從地址16讀出的數(shù)據(jù)應(yīng)該在交替緩存器內(nèi)寫入地址15。這一功能證明可以有非常簡(jiǎn)單的實(shí)現(xiàn),概述如下??疾靿KA。在讀開始時(shí),交替緩存器地址寄存器裝入停止值的反值(inverse)。y反停止值形成3個(gè)最高有效位,x反停止值形成3個(gè)最低有效位。在這情況下,當(dāng)DRAM接口在外部DRAM讀地址9時(shí),交替緩存器地址為零。然后,當(dāng)外部DRAM地址寄存器增值時(shí),交替緩存器地址寄存器增值,這與恰當(dāng)?shù)念A(yù)測(cè)尋址是一致的。到此為止,討論集中在8位DRAM接口上。如果是16位或32位接口,必須作少量局部的修改。首先,必須對(duì)象素偏移矢量“修剪”(clip),使它指到16或32位的邊界。在我們一直使用的例中,對(duì)于塊A,第一個(gè)DRAM讀將指向地址0,在地址0至3中的數(shù)據(jù)將被讀取。其次,必須拋棄不需要的數(shù)據(jù)。這靠將所有數(shù)據(jù)寫入交替寄存器(其物理容量必須比8位時(shí)的所需量大)并加上偏移后讀取。當(dāng)進(jìn)行MPEG半象素內(nèi)插時(shí),用x和/或y表示的9個(gè)字節(jié)必須從DRAM接口讀出。在此情況下,地址產(chǎn)生器提供合適的起始和停止地址。在DRAM接口內(nèi)使用了一些額外的邏輯,但是DRAM接口的工作方式?jīng)]有根本的變動(dòng)。對(duì)本發(fā)明的時(shí)間解碼器DRAM接口最后要注意的一點(diǎn)是,必須給預(yù)測(cè)濾波器提供附加信息以指示對(duì)數(shù)據(jù)作何種處理。該信息由以下組成“最后字節(jié)”信號(hào),以指示一次傳送(64、72或81字節(jié))的最后一個(gè)字節(jié);H.261標(biāo)志;雙向預(yù)測(cè)標(biāo)志;兩個(gè)二進(jìn)制位以表示塊的尺寸(用x和y表示的8個(gè)或9個(gè)字節(jié));以及由兩個(gè)二進(jìn)制位形成的數(shù),以指示各塊次序。最后字節(jié)的標(biāo)志可以在數(shù)據(jù)從交替緩存器讀出時(shí)產(chǎn)生。其余信號(hào)從地址產(chǎn)生器得到,并通過DRAM接口傳送,使得當(dāng)數(shù)據(jù)被預(yù)測(cè)濾波器從交替緩存器讀出時(shí),這些信號(hào)和正確的數(shù)據(jù)塊相關(guān)聯(lián)。在視頻格式化器中,數(shù)據(jù)一塊一塊地寫入外部DRAM,但是按光柵次序讀出。寫入與前已說明的空間解碼器的方法完全相同。但是讀出稍微復(fù)雜一些。在視頻格式化器外部DRAM中的數(shù)據(jù)作如此安排,使得在一個(gè)單頁內(nèi)至少裝入8塊數(shù)據(jù)。這8塊是8個(gè)連續(xù)的水平塊。當(dāng)光柵掃描時(shí),必須從這8個(gè)連續(xù)塊的每一塊中讀出8個(gè)字節(jié),并將其寫入交替緩存器(即,在八塊中每塊的同一行)??疾熳罡咝?假定接口為一個(gè)字節(jié)寬),x地址(最低的三個(gè)有效位)被置成零,y地址(最高的3個(gè)有效位)也同樣置零。然后,當(dāng)每次頭8個(gè)字節(jié)被讀出時(shí),x地址增值。這時(shí),地址的的高位部分(即位6及以上的位,因?yàn)樽畹陀行皇俏?)增值,而x地址(最低的3個(gè)有效位)被復(fù)位至零。此過程不斷重復(fù),直到64字節(jié)全部讀完。如果至外部DRAM的接口寬度為16或32位,只須分別將x地址增二或增四,而不是增一。在本發(fā)明中,地址產(chǎn)生器可以發(fā)信號(hào)給DRAM接口要求讀少于64字節(jié)(在一個(gè)光柵行的頭或尾處可能有此需要),雖然它總是讀8字節(jié)的倍數(shù)。這可以使用起始值和停止值來達(dá)到。起始值用于地址的高位(位6及以上的位),停止值與起始值比較,以產(chǎn)生信號(hào)指示何時(shí)應(yīng)該停止讀取。在本發(fā)明中的DRAM接口定時(shí)部件使用了定時(shí)鏈,以使DRAM信號(hào)的邊沿精確到系統(tǒng)時(shí)鐘的四分之一周期。使用了由鎖相環(huán)來的相位互差90°的時(shí)鐘。將它們組合成名義上的兩倍時(shí)鐘。然后每個(gè)鏈用兩個(gè)并行的移位寄存器組成,以互為反相的兩倍時(shí)鐘工作。首先,有一個(gè)鏈產(chǎn)生頁起始周期,另一個(gè)產(chǎn)生讀/寫/刷新各周期。每個(gè)周期的長(zhǎng)度可通過微處理器來編程。經(jīng)過這樣的編程后,頁起始鏈具有固定的長(zhǎng)度;而另一個(gè)周期鏈的長(zhǎng)度在一個(gè)頁起始期間可變,以適宜為準(zhǔn)。在復(fù)位時(shí),各鏈被清除,產(chǎn)生一個(gè)脈沖。脈沖沿著各鏈前進(jìn),并且受從DRAM接口來的狀態(tài)信息的控制。該脈沖產(chǎn)生DRAM接口的時(shí)鐘。每個(gè)DRAM接口的時(shí)鐘周期對(duì)應(yīng)于DRAM的一周,因此,由于DRAM周期有不同長(zhǎng)度,DRAM接口時(shí)鐘的速度不是恒定的。此外,另有一些定時(shí)鏈將從上述各鏈來的脈沖與從DRAM接口來的信息相組合,產(chǎn)生輸出選通和使能信號(hào),如notcas、notras、notwe、notbe。12、預(yù)測(cè)濾波器再次參閱圖12、17、18,特別是圖12,在那里示出了時(shí)間解碼器的框圖。它包括預(yù)測(cè)濾波器。預(yù)測(cè)濾波器和時(shí)間濾波器其余部分的關(guān)系,在圖17中更詳細(xì)地示出。預(yù)測(cè)濾波器的結(jié)構(gòu)要素見圖18和圖28。預(yù)測(cè)濾波器工作的詳細(xì)說明可在“本發(fā)明更詳細(xì)的說明”一節(jié)中找到。一般說,根據(jù)本發(fā)明,預(yù)測(cè)濾波器在MPEG和H.261方式而不在JPEG方式下使用。請(qǐng)記起,在JPEG方式,時(shí)間解碼器只是將數(shù)據(jù)送往視頻格式化器,它不做任何實(shí)質(zhì)的解碼,除了空間解碼器所做的那種的解碼以外。再次參閱圖18,在MPEG方式,前向和后向預(yù)測(cè)濾波器是等同的,它們分別對(duì)MPEG前向和后向預(yù)測(cè)塊進(jìn)行濾波。然而,在H.261方式,只使用前向預(yù)測(cè)濾波器,因?yàn)镠.261不用后向預(yù)測(cè)。本發(fā)明的兩個(gè)預(yù)測(cè)濾波器實(shí)質(zhì)上是相同的。再次參閱圖18和28,特別是圖28,在那里是預(yù)測(cè)濾波器結(jié)構(gòu)的框圖。每個(gè)預(yù)測(cè)濾波器由串聯(lián)的四級(jí)組成。數(shù)據(jù)進(jìn)入格式級(jí)331,被放入容易進(jìn)行濾波的格式之中。在下一級(jí)332中,對(duì)x-座標(biāo)進(jìn)行I-D推算。在維緩存器(dimensionbuffer)級(jí)333完成必要的轉(zhuǎn)置之后,在級(jí)334進(jìn)行對(duì)Y-座標(biāo)的預(yù)測(cè)。如何進(jìn)行預(yù)測(cè)將在以后更詳細(xì)地說明。需要哪些濾波操作,這由壓縮標(biāo)準(zhǔn)來定義。如果是H.261,所進(jìn)行的濾波與低通濾波器的類似。再一次參閱圖17,多標(biāo)準(zhǔn)操作要求預(yù)測(cè)濾波器可以被重新配置,以便或是進(jìn)行MPEG或H.261濾波,或是在JPEG方式根本不進(jìn)行濾波。如同三芯片系統(tǒng)其它許多可重新配置的方面一樣,預(yù)測(cè)濾波器也是用令牌的方法被重新配置的。令牌還用來告知地址產(chǎn)生器本特定工作方式。用這種辦法,地址產(chǎn)生器就可以給預(yù)測(cè)濾波器提供所需數(shù)據(jù)的地址,這些地址在MPEG和JPEG之間差別很大。13、對(duì)寄存器的訪問在微處理器接口(microprocessorinterface,MPI)中的大多數(shù)寄存器只能當(dāng)它們與之有關(guān)的級(jí)停止時(shí)才能被修改內(nèi)容。因此,各組寄存器總是典型地與訪問寄存器聯(lián)系在一起。在訪問寄存器內(nèi)的值零指明與該訪問寄存器有關(guān)的那組寄存器不該被修改。在訪問寄存器內(nèi)寫入1,就請(qǐng)求某級(jí)停止工作。然而,該級(jí)并不立即停止,所以級(jí)訪問寄存器將保持值零,直到該級(jí)停止。任何與MPI有關(guān)及靠MPI來完成工作的用戶軟件都必須“在向某個(gè)請(qǐng)求訪問寄存器寫1之后”等待著,直到從該訪問寄存器讀出1。如果在其訪問寄存器置零期間,用戶將值寫到某個(gè)配置寄存器(configurationregister),其結(jié)果是不確定的。14、微處理器接口在空間解碼器和時(shí)間解碼器內(nèi)的所有電路上,都使用了標(biāo)準(zhǔn)的一字節(jié)寬的微處理器接口(MPI)。MPI的工作與空間解碼器和時(shí)間解碼器的各種時(shí)鐘都不同步。參看后面更詳細(xì)說明中的表A.6.1,它示出了用在該接口上的各種不同的MPI信號(hào)。信號(hào)的字符在輸入/輸出欄內(nèi)示出,信號(hào)名稱在信號(hào)名稱欄內(nèi)示出,信號(hào)功能的說明在說明欄內(nèi)示出。MPI的電技術(shù)條件見表A.6.2。所有技術(shù)條件都按照類型來分類,這些類型在標(biāo)題為符號(hào)的欄內(nèi)示出。對(duì)這些符號(hào)代表什么的說明在參數(shù)欄內(nèi)示出。實(shí)際的技術(shù)條件在相應(yīng)的最小、最大和單位各欄內(nèi)示出。各DC(直流)工作條件可參看表A.6.3。表中各欄的標(biāo)題與表A.6.2的相同。Dc電特性用表A.6.4示出,其它各欄標(biāo)題與表A.6.2和A.6.3描述的相同。15、MPI的讀定時(shí)MPI讀定時(shí)圖的AC(交流)特性用圖54示出。圖中的每一行都用相應(yīng)的信號(hào)名稱標(biāo)出,定時(shí)以毫微秒為單位給出。微處理器接口詳盡的讀定時(shí)特性用表A.6.5表示。標(biāo)題為號(hào)碼(Number)的欄目用來表示相應(yīng)于特性欄中示出的信號(hào)名稱的那個(gè)信號(hào)。以MIN和MAX為標(biāo)記的欄目分別給出信號(hào)存在的最短時(shí)間和信號(hào)可用的最長(zhǎng)時(shí)間。單位一欄給出用來描述信號(hào)的測(cè)量單元。16、MPI的寫定時(shí)MPI寫定時(shí)圖的總體說明見圖54。該圖示出了與MPI寫定時(shí)有關(guān)的每一各別信號(hào)的名稱。信號(hào)的名稱、特征和其他種種物理特性在表6.6中示出。17、鍵孔地址單元(KEYHOLEADDRESSLOCATIONS)在本發(fā)明中,在鍵孔寄存器之后放置了某些較不經(jīng)常訪問的存貯器映射單元。鍵孔寄存器有兩個(gè)與它有關(guān)的寄存器。第一個(gè)寄存器是鍵孔地址寄存器。第二個(gè)寄存器是鍵孔數(shù)據(jù)寄存器。鍵孔地址規(guī)定了在擴(kuò)展地址空間內(nèi)部的某個(gè)存貯單元(location)。對(duì)鍵孔數(shù)據(jù)寄存器的一次讀操作或?qū)懖僮骶驮L問了由鎖孔地址寄存器指定的這些單元。在訪問鎖孔數(shù)據(jù)寄存器之后,與之有關(guān)的鎖孔地址寄存器增值。每次訪問,只有將新值寫到鍵孔地址寄存器,才可能在擴(kuò)展的地址空間內(nèi)部進(jìn)行隨機(jī)訪問。在本發(fā)明內(nèi)的電路可以有不止一個(gè)鍵孔存貯器映射。不過,不同鍵孔之間不存在相互影響。18、PICTURE_END再次參考圖11,圖示在本發(fā)明中使用的空間解碼器的總框圖。將通過使用該框圖來說明PICTURE_END的作用。PICTURE_END功能具有適應(yīng)多標(biāo)準(zhǔn)的優(yōu)點(diǎn),它能處理H.261編碼圖象信息、MPEG信號(hào)和JPEG信號(hào)。如前所述,圖11的系統(tǒng)用前述的雙線接口互連。每個(gè)功能部件安排得使它們按照?qǐng)D10所示的狀態(tài)機(jī)配置那樣工作。一般說,根據(jù)本發(fā)明,PICTURE_END的功能在起始碼檢測(cè)器處開始,后者產(chǎn)生PICTURE_END控制令牌。PICTURE_END控制令牌不加改變地通過起動(dòng)控制電路到DRAM接口。在這里它被用來把DRAM接口中的寫交替緩存器清除干凈。請(qǐng)記起,只有當(dāng)交替緩存器滿時(shí),其內(nèi)容才被寫到RAM去。然而,一幅圖象可能在緩存器不滿處結(jié)束,因而導(dǎo)致圖象數(shù)據(jù)的堵塞。PICTURE_END令牌強(qiáng)使此數(shù)據(jù)從交替緩存器輸出。由于本發(fā)明是多標(biāo)準(zhǔn)機(jī),對(duì)于每一壓縮標(biāo)準(zhǔn),機(jī)器的操作不一樣。更詳細(xì)一些說,對(duì)機(jī)器作了這樣充分的敘述它是按照與機(jī)器有關(guān)的各動(dòng)作周期來工作的。對(duì)于每一個(gè)壓縮標(biāo)準(zhǔn),可以由控制令牌和/或從MPU來的輸出信號(hào)的組合,從總的可得到的動(dòng)作周期中選出某個(gè)數(shù)目的周期;或者,可以由這些令牌本身的設(shè)計(jì)將它們選出。從此意義上說,本發(fā)明是這樣組織的,使信息推遲進(jìn)入后繼部件,直到在上游部件內(nèi)所有信息已經(jīng)收集完畢。本系統(tǒng)處于等待狀態(tài),直到數(shù)據(jù)已準(zhǔn)備好傳至下級(jí)。PICTURE_END信號(hào)以這種方式加到編碼數(shù)據(jù)緩存器,PICTURE_END信號(hào)的控制部分使數(shù)據(jù)緩存器的內(nèi)容被讀出和被加到Huffman解碼器和視頻信號(hào)分離(videodemultiple-xor)電路。PICTURE_END控制令牌的另一好處是,為了Huffman解碼器和信號(hào)分離器使用上的原因,將圖象的結(jié)束識(shí)別出來,即使圖象沒有典型地達(dá)到預(yù)期的滿程和/或沒有典型所預(yù)期的那么多信號(hào)加到Huuf-man解碼器和視頻信號(hào)分離電路。在這種場(chǎng)合,編碼數(shù)據(jù)緩存器內(nèi)的信息作為一幅完全的圖象被加到Hufman解碼器和視頻信號(hào)分離器。因此,Huffman解碼器和視頻信號(hào)分離器仍能根據(jù)系統(tǒng)的設(shè)計(jì)處理這些數(shù)據(jù)。PICTURE_END控制令牌的另一個(gè)好處是它能完全出空編碼數(shù)據(jù)緩存器,使得不會(huì)有零星信息偶然地遺留在片外DRAM中或交替緩存器中。PICTURE_END功能的再一個(gè)好處是它用于出錯(cuò)復(fù)原。例如,假定在編碼數(shù)據(jù)緩存器正被保持的數(shù)據(jù)量少于典型地使用的量,后者用于描述以一幅單一圖象為準(zhǔn)的空間信息。因此,最后的那幅圖象會(huì)被保留在數(shù)據(jù)緩存器直到交替緩存器滿;然而,根據(jù)定義,該緩存器不會(huì)再注入。在某個(gè)時(shí)刻,機(jī)器會(huì)決定出存在某個(gè)出錯(cuò)條件。因此,只要PICTURE_END令牌被解碼,并且它強(qiáng)制在編碼數(shù)據(jù)緩存器內(nèi)的數(shù)據(jù)加到Huffman解碼器和視頻信號(hào)分離器,最后的圖象就可解碼,信息也能從緩存器出空。其結(jié)果是,機(jī)器不會(huì)進(jìn)入出錯(cuò)復(fù)原方式,并會(huì)成功地繼續(xù)處理編碼數(shù)據(jù)。使用PICTURE_END令牌的另一個(gè)好處是,串行流水線處理器能繼續(xù)處理未被中斷的數(shù)據(jù)。由于使用了PICTURE_END令牌,串行流水線處理器被配置到能處理比預(yù)期數(shù)量少的數(shù)據(jù),所以處理能繼續(xù)下去。由于具備出錯(cuò)條件,使用先有技術(shù)的機(jī)器本身就會(huì)停止,這是典型情況。如前所述,當(dāng)宏塊進(jìn)入編碼數(shù)據(jù)緩存器的貯存區(qū)域時(shí),該緩存器就對(duì)宏塊計(jì)數(shù)。此外,Huffman解碼器和視頻信號(hào)分離器通常知道對(duì)每幅圖象解碼預(yù)期的信息量,即,Huffman解碼器和視頻信號(hào)分離器的狀態(tài)機(jī)部分知道在每幅圖象的恢復(fù)周期內(nèi)它要處理的塊數(shù)。當(dāng)從編碼數(shù)據(jù)緩存器到來的塊數(shù)不對(duì)時(shí),本來會(huì)典型地產(chǎn)生出錯(cuò)恢復(fù)的過程。然而,由于PICTURE_END控制令牌已經(jīng)重新配置了Huffman解碼器和視頻信號(hào)分離器,狀態(tài)機(jī)可以繼續(xù)工作,這是因?yàn)橹匦屡渲酶嬷薍uffman解碼器和視頻信號(hào)分離器,狀態(tài)機(jī)的確是在處理適量的信息。再參閱圖10,緩存管理器的令牌解碼部分檢測(cè)由起始碼檢測(cè)器產(chǎn)生的PICTUREEND控制令牌。在正常工作情況下,正如以前述及的交替緩存器的正常工作情況,緩存寄存器先是裝滿然后出空。再說一次,部分裝入數(shù)據(jù)的交替緩存器不會(huì)出空,直到它完全裝滿和/或它知道出空時(shí)間已到。PICTURE_END控制令牌在緩存管理器的令牌解碼部分被解碼,它強(qiáng)制只有部分裝入的交替緩存器將自己出空,將內(nèi)容送入編碼數(shù)據(jù)緩存器。該內(nèi)容直接或通過DRAM接口送到Huffman解碼器和視頻信號(hào)分離器。19、清除操作PICTURE_END控制令牌的另一優(yōu)點(diǎn)是它和FLUSH令牌的聯(lián)合工作。FLUSH指令既與控制狀態(tài)機(jī)的重新配置無關(guān),也與向系統(tǒng)提供數(shù)據(jù)無關(guān)。但是,它將以前的部分信息補(bǔ)全,以供與機(jī)器有關(guān)的狀態(tài)機(jī)使用。每個(gè)這樣的狀態(tài)機(jī)將FLUSH控制令牌看作是不予處理的信息。因此,F(xiàn)LUSH令牌被用于將編碼數(shù)據(jù)緩存器留下的空余部分裝滿,并允許一組完整的信息發(fā)送到Huffman解碼器和視頻信號(hào)分離器。因此,F(xiàn)LUSH令牌與緩存器的裝填(padding)相似。在Huffman電路內(nèi)的令牌解碼器認(rèn)得FLUSH令牌,但是忽視由FLUSH令牌強(qiáng)使進(jìn)入它的偽數(shù)據(jù)。于是Huffman解碼器只對(duì)PICTURE_END令牌和FLUSH令牌到來之前就存在的最后圖象緩存器的那些數(shù)據(jù)內(nèi)容進(jìn)行操作。單獨(dú)使用PICTURE_END令牌或與FLUSH令牌聯(lián)合使用的另一個(gè)好處是Huffman解碼器電路的重新配置和/或重組(reorgan-ization)。由于PICTURE_END令牌的到來,Huffman解碼器電路知道它將有少于正常預(yù)期的信息來對(duì)最后圖象解碼。Huffman解碼電路結(jié)束對(duì)包含在最后圖象內(nèi)的信息的處理,并將此信息經(jīng)過DRAM輸出至逆向模式化器內(nèi)。在最后圖象的識(shí)別之后,Huffman解碼器立即進(jìn)入其清除方式并且為下一圖象信息的來臨作重新調(diào)整。20、清除作用根據(jù)本發(fā)明,F(xiàn)LUSH令牌用以通過整個(gè)流水線處理器,并確保各緩存器被出空、其它電路被重新配置以等待新數(shù)據(jù)的到來。更具體地說,本發(fā)明包含PICTURE_END令牌、裝填字和FLUSH令牌的結(jié)合,它向串行流水線處理器指出對(duì)當(dāng)前圖象形式的圖象處理已經(jīng)完畢。此后,各狀態(tài)機(jī)需要重新配置以等待新數(shù)據(jù)到來接受新處理。還要注意,F(xiàn)LUSH令牌充當(dāng)本系統(tǒng)的特別復(fù)位。FLUSH令牌在它通過每一級(jí)時(shí)將它復(fù)位,但是允許后面的各級(jí)繼續(xù)運(yùn)行。這就防止了數(shù)據(jù)丟失。換言之,F(xiàn)LUSH令牌是一種可變復(fù)位而不是絕對(duì)復(fù)位。21、STOP_AFTER_PICTURESTOP_AFTER_PICTURE功能用于在串行流水線去壓縮電路運(yùn)行中的某一邏輯點(diǎn)上停止它的工作。此時(shí),產(chǎn)生PICTURE_END令牌,指示數(shù)據(jù)已結(jié)束從數(shù)據(jù)輸入線進(jìn)入,并且裝填操作也已完成。裝填操作將部分空缺的數(shù)據(jù)令牌裝滿。然后,產(chǎn)生FLUSH令牌,它通過串行流水線系統(tǒng),將所有信息從寄存器推出,強(qiáng)制這些寄存器回到它們中性的備用狀態(tài)。換言之,PICTURE_END令牌發(fā)出圖象結(jié)束的信號(hào),而STOP_AFTER_PICTURE則發(fā)出所有當(dāng)前操作結(jié)束的信號(hào)。22、多標(biāo)準(zhǔn)搜索方式本發(fā)明的另一特色是使用了SEARCH_MODE控制令牌,它用來重新配置串行流水線處理器的輸入,以檢查進(jìn)入的位流。當(dāng)設(shè)定搜索方式時(shí),起始碼檢測(cè)器只搜索用于任一壓縮標(biāo)準(zhǔn)的特定起始碼或標(biāo)記。然而,必須理解,為實(shí)現(xiàn)此目的,也可利用來自其它數(shù)據(jù)位流的其它圖象。因此,這些圖象可在整個(gè)本發(fā)明中使用,以變成另一種實(shí)現(xiàn),后者除了有可重新配置的電路之外還能混合使用控制令牌和數(shù)據(jù)令牌以得到類似的操作。在本發(fā)明中,搜索方式的使用在許多場(chǎng)合下是適宜的,其中有1)如果發(fā)生數(shù)據(jù)位流的中斷;2)當(dāng)用戶用有意改變通道(例如,用傳送壓縮數(shù)字視頻信號(hào)的電纜送來數(shù)據(jù))的辦法中斷數(shù)據(jù)位流時(shí);或3)當(dāng)用戶從可控?cái)?shù)據(jù)源(如光盤或視盤)啟動(dòng)快進(jìn)或快倒時(shí)。一般說,當(dāng)用戶在機(jī)器不期望發(fā)生中斷的地方中斷串行流水線正常運(yùn)行時(shí),搜索方式就是適宜的。當(dāng)任一種搜索方式被設(shè)置時(shí),起始碼檢測(cè)器就尋找適于產(chǎn)生與機(jī)器無關(guān)的令牌的輸入起始映象。在識(shí)別與標(biāo)準(zhǔn)有關(guān)的起始映象之前進(jìn)入起始碼檢測(cè)器的所有數(shù)據(jù)都被認(rèn)為無意義而拋棄,在等待此信息時(shí)機(jī)器處于空閑狀態(tài)。起始碼檢測(cè)器可以采取許多配置中的任一種。例如,這些配置之一允許搜索一組圖象或允許更高程度的起始碼。這一模式使起始碼檢測(cè)器丟棄它的所有輸入,而去尋找group_start標(biāo)準(zhǔn)映象。當(dāng)識(shí)別到這樣的映象時(shí),起始碼檢測(cè)器就產(chǎn)生GROUP_START令牌,然后搜索方式自動(dòng)復(fù)位。重要的是注意到,Huffman解碼器和視頻信號(hào)分離器是根據(jù)多種輸入信號(hào)工作的單一電路。這些輸入信號(hào)有CODING_STANDATD信號(hào),也有與標(biāo)準(zhǔn)無關(guān)的各個(gè)設(shè)定(set-up)信號(hào)。CODING_STANDA-RD信號(hào)將直接傳送來自輸入位流、為Huffman解碼器和視頻信號(hào)分離器所需的信息。然而,Huffman解碼器和視頻信號(hào)分離電路是在與標(biāo)準(zhǔn)無關(guān)的信號(hào)序列的運(yùn)行下工作的。選擇這種工作方式是因?yàn)樗钣行?,而且按照它本來的設(shè)計(jì),可以用在特別控制令牌的場(chǎng)合。使用這些特別令牌,可以將與標(biāo)準(zhǔn)有關(guān)的信號(hào)送入Huffman解碼器和視頻信號(hào)分離器而不是傳送這些實(shí)際信號(hào)本身。23、逆向模式化逆向模式化是所有三種標(biāo)準(zhǔn)的一個(gè)共同特點(diǎn),它對(duì)于所有三種標(biāo)準(zhǔn)是相同的。一般說,在令牌緩存器內(nèi)的數(shù)據(jù)令牌含有被量化系數(shù)(quantizedcoefficients)的值的信息,也含有系數(shù)間表現(xiàn)出來的零的個(gè)數(shù)的信息(這是一種游程長(zhǎng)度編碼的形式)。本發(fā)明的逆向模式化器已經(jīng)適應(yīng)與令牌一起使用,它只是擴(kuò)充了有關(guān)零的游程的信息,使數(shù)據(jù)令牌含有必需的64個(gè)值。此后,在數(shù)據(jù)令牌中的值就是可被逆向量化器使用的經(jīng)過量化的系數(shù)。24、逆向量化器本發(fā)明的逆向量化器是對(duì)序列解碼的必需部件,但它已經(jīng)實(shí)現(xiàn)成允許整個(gè)集成電路組處理多標(biāo)準(zhǔn)數(shù)據(jù)。此外,逆向量化器已經(jīng)適合與令牌一起使用。逆向量化器位于逆向模式化器和反DCT(IDCT)之間。例如,在本發(fā)明中,在逆向量化器中的加法器用于在數(shù)據(jù)送到IDCT上之前加某個(gè)數(shù)到象素解碼號(hào)。IDCT使用了象素解碼號(hào),此號(hào)隨著信息編碼所使用的每個(gè)標(biāo)準(zhǔn)而變化。為了對(duì)信息正確地解碼,在數(shù)據(jù)繼續(xù)傳送到IDCT之前,由逆向量化器將1024的值加到解碼號(hào)上。加法器已經(jīng)在逆向量化器中。使用這些加法器使量化器之前的數(shù)據(jù)到達(dá)IDCT時(shí)標(biāo)準(zhǔn)化了。這就在處理被不同標(biāo)準(zhǔn)壓縮的數(shù)據(jù)時(shí)省去了集成電路內(nèi)額外的電路系統(tǒng)或軟件。其它允許多標(biāo)準(zhǔn)運(yùn)行的操作在“量化后操作”期間完成,討論見后。附有數(shù)據(jù)的控制令牌被解碼,需要逆向量化器完成的各種實(shí)現(xiàn)標(biāo)準(zhǔn)化的程序被識(shí)別,識(shí)別的詳情見后。這些“量化后”操作的實(shí)現(xiàn),都避免了電路的重復(fù),也都允許本集成電路處理多標(biāo)準(zhǔn)編碼數(shù)據(jù)。25、Huffman解碼器和Parser機(jī)再參閱圖11和27,空間解碼器包括Huffman解碼器,后者用來對(duì)被不同壓縮標(biāo)準(zhǔn)作過Huffman編碼的數(shù)據(jù)進(jìn)行解碼。JPEG、MPEG和H.261標(biāo)準(zhǔn)的每一種都需要對(duì)某些數(shù)據(jù)作Huffma-n編碼,但是每種標(biāo)準(zhǔn)所要求的Huffman解碼卻在一些重要方面各不相同。在本發(fā)明的空間解碼器內(nèi),并不是設(shè)計(jì)并制造三個(gè)各別的Huffman解碼器,每種標(biāo)準(zhǔn)一個(gè);本發(fā)明識(shí)別出每種Huffman解碼器的共同方面,只制造這些方面一次,用這樣的方法來節(jié)約貴重的片芯空間。此外,使用了巧妙的多部分(multi-part)算法,使每種標(biāo)準(zhǔn)的Huffman解碼器的更多方面也能與其它標(biāo)準(zhǔn)共同,否則就做不到這點(diǎn)。簡(jiǎn)單地說,Huffman解碼器321與其它單元一起工作,見圖27。這些其它單元是Parser狀態(tài)機(jī)322,輸入移位器323,數(shù)據(jù)索引單元324,算術(shù)邏輯單元325,和令牌格式化器326。如前所述,這些部分之間的連接由雙線接口來控制。關(guān)于這些單元的工作情況將在以后作更詳細(xì)介紹,這里重點(diǎn)說明根據(jù)本發(fā)明Huffman解碼器在支持多標(biāo)準(zhǔn)操作方面的一些情況。本發(fā)明的Parser狀態(tài)機(jī)是可編程狀態(tài)機(jī),其作用是協(xié)調(diào)視頻Parser(VideoParser)的其余部分。作為對(duì)數(shù)據(jù)的響應(yīng),Parser狀態(tài)機(jī)產(chǎn)生與此數(shù)據(jù)并排的控制字,控制字被傳到系統(tǒng)的其它部件,對(duì)這些其它部件起作用,從而達(dá)到控制的目的。由于這些部件通過雙線接口連接,并排地傳送控制字和有關(guān)數(shù)據(jù)不但有用而且必不可少。這樣,數(shù)據(jù)和控制就同時(shí)到達(dá)。在圖27中,控制字的傳送用控制線327表示,它位于連接各部件的數(shù)據(jù)線328之下。除其它任務(wù)之外,這個(gè)碼字識(shí)別正在被解碼的那個(gè)特定標(biāo)準(zhǔn)。Huffman解碼器321也具有某些控制功能。特別是,Huffman解碼器321含有能控制數(shù)據(jù)索引單元324和算邏單元325某些功能的狀態(tài)機(jī)。由Huffman解碼器來控制這些單元是必要的,以便對(duì)部件級(jí)信息作出恰當(dāng)?shù)慕獯a。如果讓Parser狀態(tài)機(jī)322來做這些決定,就要花太多的時(shí)間。本發(fā)明的Huffman解碼器的一個(gè)重要方面是能對(duì)讀入Huffman解碼器的各編碼數(shù)據(jù)位取反。這在對(duì)H.261型的Huffman碼解碼時(shí)是必要的,因?yàn)镠.261(事實(shí)上還有MPEG)所使用的Huffman碼的那種特別類型和JPEG所使用的碼有相反的極性。因此,使用倒相器事實(shí)上就允許了Huffman解碼器對(duì)三種標(biāo)準(zhǔn)使用同一張表。Huffman解碼器如何實(shí)現(xiàn)所有三種標(biāo)準(zhǔn)的其它方面在“對(duì)本發(fā)明更詳細(xì)的說明”中更詳細(xì)地討論。數(shù)據(jù)索引單元324完成多部(muti-part)算法中的第二部。該單元有一張?zhí)峁?shí)際Huffman解碼(decoded)數(shù)據(jù)的查找表。對(duì)各表項(xiàng)的組織以Huffman解碼器產(chǎn)生的索引號(hào)為基礎(chǔ)。算邏單元(ALU)325實(shí)現(xiàn)多部算法的各剩余部分。特別是,ALU處理信號(hào)擴(kuò)展。ALU還包括保持矢量預(yù)測(cè)和DC預(yù)測(cè)的寄存器組(registerfile),它們的使用在與預(yù)測(cè)濾波器有關(guān)的各節(jié)中討論。此外,ALU還有一些計(jì)數(shù)器,它們對(duì)正由空間解碼器解碼的圖象的結(jié)構(gòu)從頭到尾地計(jì)數(shù),尤其是,圖象的尺寸被編程,送入與計(jì)數(shù)器有關(guān)的寄存器中,這就方便了“圖象起始”的檢測(cè)和各宏塊碼的起始。根據(jù)本發(fā)明,令牌格式化器326(Tokenformatter,TF)將經(jīng)過解碼的數(shù)據(jù)裝配到數(shù)據(jù)令牌中去,然后令牌被傳送到空間解碼器的其它級(jí)或其它部分。在本發(fā)明中,輸入移位器323接收來自FIFO(先進(jìn)先出)的數(shù)據(jù)。FIFO緩存通過起始碼檢測(cè)器的數(shù)據(jù)。由輸入移位器接收的數(shù)據(jù)一般屬于兩種類型數(shù)據(jù)令牌和起始碼。起始碼檢測(cè)器已經(jīng)將這些起始碼用各自的令牌代換,這在令牌一節(jié)中進(jìn)一步討論。注意數(shù)據(jù)中出現(xiàn)最多的,大概是需要解碼的數(shù)據(jù)令牌。輸入移位器323將數(shù)據(jù)串行地送到Huffman解碼器321。另一方面,它并行地傳送控制令牌。在Huffman解碼器中,Huffman編碼數(shù)據(jù)按照多部算法的第一部分被解碼。尤其是,特定的Huffman碼被識(shí)別,然后用索引號(hào)替換它。Huffman解碼器321還識(shí)別某些需要由圖27中其它部件作特殊處理的數(shù)據(jù)。這種數(shù)據(jù)包括塊結(jié)束和退出。在本發(fā)明中,在Huffman解碼器321內(nèi)檢測(cè)它們,而不是數(shù)據(jù)索引單元324中檢測(cè)它們,這就節(jié)省了時(shí)間。這個(gè)索引號(hào)然后被傳送到數(shù)據(jù)索引單元324。數(shù)據(jù)索引單元本質(zhì)上是查找表。根據(jù)算法的一個(gè)方面,查找表與JPEG規(guī)定的Huffm-an碼表相差無幾。一般說,查找表使用壓縮(condensed)數(shù)據(jù)格式,這種格式是JPEG傳送替代的JPEG表時(shí)所規(guī)定的。經(jīng)過解碼的索引號(hào)或其它數(shù)據(jù)與伴隨的控制字一起,從數(shù)據(jù)索引單元324送到ALU325,后者進(jìn)行前述的各項(xiàng)操作。從ALU325出來,數(shù)據(jù)和控制字被送到令牌格式化器326(TF)。在令牌格式化器中,數(shù)據(jù)根據(jù)需要與控制字組合以形成令牌,令牌然后被傳送到空間解碼器的下面各級(jí)。注意,在此時(shí)此處,系統(tǒng)要用的令牌都有了。26、逆向離散余弦變換(InverseDiscretcCosineTramform)根據(jù)本發(fā)明,逆向離散余弦變換(IDCT)對(duì)與圖象DC成份的頻率有關(guān)的數(shù)據(jù)進(jìn)行去壓縮。當(dāng)一幅特定的圖象正被壓縮時(shí),圖象中亮光的頻率被量化,因而減少了需要存貯的信息量。IDCT取此經(jīng)過量化的數(shù)據(jù),將它去壓縮,還原成頻率信息。IDCT對(duì)圖象的一部分操作。這一部分的大小是8×8象素。對(duì)該數(shù)據(jù)的數(shù)學(xué)運(yùn)算主要由對(duì)數(shù)據(jù)編碼所用的特定標(biāo)準(zhǔn)來決定。然而,在本發(fā)明中,有效地利用了各標(biāo)準(zhǔn)共同的數(shù)學(xué)操作以避免電路系統(tǒng)不必要的重復(fù)。由于使用了特定的定標(biāo)次序(scalingorder),算法上下兩部分的對(duì)稱性改善了,所以共同的數(shù)學(xué)操作可以再次使用,消除了額外的電路系統(tǒng)。IDCT響應(yīng)許多多標(biāo)準(zhǔn)令牌。IDCT的第一部分檢查進(jìn)來的數(shù)據(jù),以確保數(shù)據(jù)令牌的大小正確,適合處理。事實(shí)上,在某此場(chǎng)合,如果誤差不太大,令牌流可以被改正。27、緩存管理器在本發(fā)明緩存管理器接受輸入的視頻信息,它還給地址產(chǎn)生器提供數(shù)據(jù)來臨、顯示和幀頻的定時(shí)信息。使用了多個(gè)緩存器以允許出現(xiàn)(presentation)率和顯示(display)率的變化。在典型情況下,出現(xiàn)率和顯示率總是隨此前已編碼的數(shù)據(jù)和正在顯示信息的監(jiān)視器而變化。數(shù)據(jù)到來的速度通常隨編碼、解碼中的錯(cuò)誤或隨產(chǎn)生數(shù)據(jù)的源材料而變化。當(dāng)信息來到緩存管理器時(shí),它被去壓縮。然而,數(shù)據(jù)是按照對(duì)去壓縮電路有用的次序排列的,而不是對(duì)特定的顯示單元有用的次序排列的。當(dāng)一塊數(shù)據(jù)進(jìn)入緩存管理器時(shí),緩存管理器向地址產(chǎn)生器提供信息,使該數(shù)據(jù)塊能按照顯示裝置能夠使用的次序放置。緩沖管理器將調(diào)整輸入數(shù)據(jù)塊所需要的幀速變換考慮進(jìn)去,以使數(shù)據(jù)塊能在所使用的特定顯示裝置上顯示出來。在本發(fā)明中,緩存管理器的主要任務(wù)是向地址產(chǎn)生器提供信息。盡管如此,也還要它同本系統(tǒng)的其它部件連接。例如,有一個(gè)接口同輸入FIFO相連,F(xiàn)IFO將令牌傳送到緩存管理器,緩存管理器再將這些令牌傳到寫地址產(chǎn)生器。緩存管理器還同顯示器的地址產(chǎn)生器連接,以接收該顯示裝置是否準(zhǔn)備好顯示新數(shù)據(jù)的信息。緩存管理器還確認(rèn)顯示器的地址產(chǎn)生器已經(jīng)清除了緩存器內(nèi)的顯示信息。本發(fā)明的緩存管理器始終監(jiān)視著特定的緩存器是否空、滿、準(zhǔn)備使用或正在使用。它還始終監(jiān)視著與每個(gè)緩存器內(nèi)特定數(shù)據(jù)有關(guān)的出現(xiàn)號(hào)(presentationnumber)。因此,緩存管理器用一次只使一個(gè)緩存器準(zhǔn)備好顯示的方法,部分地決定這些緩存器的狀態(tài)。一旦某一緩存器被顯示,該緩存器就處于“空閑”狀態(tài)。當(dāng)緩存管理器接收到PICTURE_START、FLUSH、有效或訪問令牌時(shí),它就決定每個(gè)緩存器的狀態(tài)及其接受新數(shù)據(jù)的準(zhǔn)備情況。例如,PICTURE_STA-RT令牌使緩存管理器巡視每個(gè)緩存器,以發(fā)現(xiàn)哪一個(gè)可以接受新數(shù)據(jù)。緩存管理器也可配置成能處理它收到的令牌所要求的多種標(biāo)準(zhǔn)。例如,在H.261標(biāo)準(zhǔn)中,在顯示期間,數(shù)據(jù)可能被跳過。如果這樣的令牌到緩存管理器,要跳過的數(shù)據(jù)就會(huì)從貯存它的緩存器中被清除掉。因此,通過對(duì)緩存器的管理,可以根據(jù)用以對(duì)數(shù)據(jù)編碼的壓縮標(biāo)準(zhǔn)、根據(jù)數(shù)據(jù)解碼的速率和根據(jù)所使用特定類型的顯示裝置,將數(shù)據(jù)有效地顯示出來。相信上述說明對(duì)本發(fā)明的總體概念、系統(tǒng)實(shí)現(xiàn)和各方面工作做了足夠詳細(xì)的適當(dāng)敘述,使得具有本行一般技能的人能借助它所有的特點(diǎn)、目標(biāo)和優(yōu)點(diǎn)來制作和實(shí)際使用本發(fā)明。然而,為了便于對(duì)本發(fā)明有進(jìn)一步更深入細(xì)致的了解,為了便于獲得與本發(fā)明各實(shí)施例更具體、更商品化的實(shí)現(xiàn)有關(guān)的補(bǔ)充細(xì)節(jié),建議閱讀以下的進(jìn)一步說明和解釋。這是對(duì)一個(gè)多標(biāo)準(zhǔn)視頻解碼器芯片集的更詳細(xì)的說明。它被分為三個(gè)主要部分A、B和C。為了便于組織、簡(jiǎn)潔以及說明的方便,這個(gè)附加的公開在下面的部分中被建立。·芯片集中芯片的公共特征描述·令牌(TOKEN)·雙線接口·DRAM接口·微處理器接口·時(shí)鐘·空間解碼芯片的說明·時(shí)間解碼芯片的說明A.1第一說明部分包括了絕大部分與便用芯片集相關(guān)的電路設(shè)計(jì)問題。A.1.1排印約定為了強(qiáng)調(diào)某些類型的信息使用了印刷排印約定小集NAMES_OF_TOKENS令牌名Wire_name信號(hào)高電平有效Wire_name信號(hào)低電平有效register_name寄存器名A.2視頻解碼器系列·30MHz操作·解碼MPEG,JPEG和H.261·編碼數(shù)據(jù)率到25Mb/S·視頻數(shù)據(jù)率到21MB/S·MPEG分辨率達(dá)704×480,30Hz,420·可變色度采樣格式·全JPEG基線(baseline)解碼·少貼粘(Glue-less)頁模式DRAM接口·208條引腿的PQFP型封裝·獨(dú)立編碼數(shù)據(jù)和解碼器時(shí)鐘·重排(Re=orders)MPEG圖象序列·視頻解碼器系列提供一低芯片數(shù)方案來實(shí)現(xiàn)高分辨率數(shù)字視頻解碼器。為支持三種不同的視頻和圖象編碼系統(tǒng)JPEG,MPEG和H.261,芯片集通常是可配置的。全JPEG基線圖象解碼被支持。720×480,30Hz,422的JPEG編碼的視頻可以被實(shí)時(shí)解碼。CIF(公共交換格式)和QCIFH.261視頻可以被解碼。具有高達(dá)740×480,30Hz,420格式的全特征(featrue)MPEG視頻可被解碼。注意上述值只是對(duì)本發(fā)明一個(gè)實(shí)施例的舉例說明而不必限制于此。相應(yīng)地,其它取值和/或范圍的使用將受到賞識(shí)。A.2.1系統(tǒng)構(gòu)造A.2.1.1輸出格式在下面給出的例子當(dāng)中,每一例都需要某種形式的輸出格式化器,以取得空間解碼器或時(shí)間解碼器的輸出中出現(xiàn)的數(shù)據(jù),并為計(jì)算機(jī)或顯示系統(tǒng)對(duì)其重新格式化。這一格式化的細(xì)節(jié)對(duì)不同的應(yīng)用是不同的。在某種簡(jiǎn)單情況下,全部所需的只是一個(gè)地址產(chǎn)生器,以取得由解碼器芯片輸出的塊格式化數(shù)據(jù),并以一光柵順序?qū)⑵鋵懭氪尜A器。圖象格式化器是一單芯片VLSI設(shè)備,它提供大范圍的輸出格式化功能。A.2.1.2JPEG靜止圖象解碼一個(gè)沒有芯片外DRAM的單一空間解碼器可以迅速解碼基線JPEG圖象??臻g解碼器將支持基線JPEG的所有特征。然而,可被解碼的圖象尺寸將受到用戶提供的輸出緩沖器大小的限制。輸出格式化器的特性可能會(huì)限制能被支持的色度取樣格式和彩色空間。A.2.1.3JPEG視頻解碼給空間解碼器加上芯片外DRAM可使其能實(shí)時(shí)解碼JPEG方式編碼的視頻圖象。所需要的緩沖器的大小和速度將依視頻和編碼數(shù)據(jù)率而定。時(shí)間解碼器不需要解碼JPEG方式編碼的視頻。然而,如果時(shí)間解碼器出現(xiàn)于一多標(biāo)準(zhǔn)解碼器芯片集中,當(dāng)系統(tǒng)為JPEG操作而配置時(shí),它僅使數(shù)據(jù)通過時(shí)間解碼器而不作任何改變或修改。A.2.1.4H.261解碼要實(shí)現(xiàn)一個(gè)H.261視頻解碼器,空間解碼器和時(shí)間解碼器均是需要的。這DRAM對(duì)上述兩種器件的接口是可配置的,以便在使用小圖象格式和低編碼數(shù)據(jù)率工作時(shí)完成適當(dāng)操作所需的DRAM數(shù)量可以減少。典型地說,每一空間解碼器和時(shí)間解碼器需要一個(gè)單個(gè)4Mb(也就是512K×8)DRAM。A.2.1.5MPEG解碼完成MPEG操作所需的配置與H.261所需的相同。然而,要支持MPEG可能出現(xiàn)的更大圖象格式可能需要更大的DRAM緩沖器,如同具有本領(lǐng)域一般技能的人所共識(shí)的。A.3令牌A.3.1令牌格式相應(yīng)于本發(fā)明,令牌為通過解碼器芯片集的通信信息提供了廣泛的格式。雖然在本發(fā)明中,令牌的每一個(gè)字都至少有8個(gè)比特寬,具有本領(lǐng)域中一般技能的人所共識(shí)的,令牌可以為任意寬度。此外一單一令牌可以跨一個(gè)或幾個(gè)字;這可以通過在每個(gè)字中使用一擴(kuò)展位而實(shí)現(xiàn)。令牌的格式總結(jié)在表A.3.1中。擴(kuò)展位指示一個(gè)令牌是否繼續(xù)到另一個(gè)字。在令牌的所有字中除最后一個(gè)字以外擴(kuò)展位都被設(shè)置為1。如果令牌的第一個(gè)字具有為0的擴(kuò)展位,就說明此令牌只有一個(gè)字長(zhǎng)。每個(gè)令牌由一個(gè)地址字段識(shí)別,它從令牌第一個(gè)字的第7比特開始。此地址字段長(zhǎng)度可變,并可以長(zhǎng)達(dá)多個(gè)字(在當(dāng)前芯片中沒有長(zhǎng)度超過8比特的地址,然而一個(gè)具此領(lǐng)域一般技能的人將再次認(rèn)識(shí)到地址可以是任何長(zhǎng)度的)。某些接口傳送超過8比特的數(shù)據(jù)。舉例說,空間解碼器的輸出有9比特寬(包括擴(kuò)展位則是十比特)。唯一從這些額外比特取得好處的令牌是數(shù)據(jù)令牌。為在系統(tǒng)中某特定位置執(zhí)行處理,數(shù)據(jù)令牌可以根據(jù)需要具有任意多的比特。所有的其它令牌均忽略額外的比特。A.3.2數(shù)據(jù)令牌數(shù)據(jù)令牌將數(shù)據(jù)從一個(gè)處理級(jí)帶到下一個(gè)。因此,這個(gè)令牌的特性在其通過解碼器時(shí)發(fā)生改變。而且,數(shù)據(jù)令牌攜帶的數(shù)據(jù)含義根據(jù)數(shù)據(jù)令牌在系統(tǒng)中的位置而變化,也就是說,數(shù)據(jù)是依位置而定的。在這一點(diǎn)上,根據(jù)數(shù)據(jù)令牌在空間解碼器中的位置,數(shù)據(jù)既可以是頻域也可以是像素域數(shù)據(jù)。例如,在空間解碼器的輸入,數(shù)據(jù)令牌攜帶組裝于8比特字中的比特串編碼視頻數(shù)據(jù)。在這里,每令牌的長(zhǎng)度沒有限制。然而,與之相比,在空間解碼器的輸出,每一數(shù)據(jù)令牌恰好攜帶64個(gè)字且每個(gè)字都是9比特寬。A.3.3使用令牌格式化的數(shù)據(jù)在某些應(yīng)用當(dāng)中,電路需要與解碼器或芯片集的輸入端或輸出端直接相連。在多數(shù)情況下,收集數(shù)據(jù)令牌并查出幾個(gè)提供同步信息(如PICTURE_START)的令牌已經(jīng)足夠。在這點(diǎn)上,請(qǐng)參見后面的A.16部分,“連接空間解碼器的輸出端”和A.19部分“連接時(shí)間解碼器的輸出端”。如上所討論,觀察擴(kuò)展位的活動(dòng)足以識(shí)別何時(shí)一個(gè)新的令牌開始。再則,擴(kuò)展位標(biāo)志了當(dāng)前令牌的最后的字。此外,地址字段可被測(cè)試以識(shí)別令牌。不需要或不能識(shí)別的令牌可以被消滅(并丟棄)而不需知道它們的內(nèi)容。然而,被識(shí)別的令牌會(huì)引起一個(gè)適當(dāng)行為的出現(xiàn)。此外,輸入給空間解碼器的數(shù)據(jù)可以作為被編碼的數(shù)據(jù)字節(jié)或者以數(shù)據(jù)令牌(見A.10部分,“編碼數(shù)據(jù)輸入”)的形式被提供。通過編碼數(shù)據(jù)端口或通過微處理器接口提供令牌可以使解碼器芯片集的許多特點(diǎn)從數(shù)據(jù)流被設(shè)置。這提供了通過微處理器接口完成配置的另一種途徑。表A.3.1令牌一覽表表A.3.1令牌一覽表(續(xù))表A.3.1令牌一覽表(續(xù))表A.3.1令牌一覽表(續(xù))A.3.4令牌說明本部分作為資料給出了根據(jù)本發(fā)明在空間解碼器和時(shí)間解碼器內(nèi)被提供的令牌。見表A.3.2注意·“r”表示那些當(dāng)前被保留且取值為0的比特。·所有的整數(shù)都是無符號(hào)數(shù),除非特別指明。表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))表A.3.2在空間解碼器和時(shí)間解碼器內(nèi)提供的令牌(續(xù))A.3.5令牌中的數(shù)字標(biāo)示A.3.5.1分量標(biāo)識(shí)號(hào)碼相應(yīng)于本發(fā)明,分量ID號(hào)碼是一個(gè)指明一顏色分量的2比特整數(shù)典型地說,這個(gè)2位字段被作為頭標(biāo)的一部分置于數(shù)據(jù)令牌中。對(duì)于MPMG和H.261,其關(guān)系是很簡(jiǎn)單的見表A.3.3表A.3.3對(duì)MPEG和H.261的分量ID對(duì)于JPEG,情況要更復(fù)雜,因?yàn)镴PEG不限制可以使用的顏色分量。解碼器芯片在每一掃描中允許高達(dá)四種不同顏色。ID在顏色分量的說明到達(dá)解碼器時(shí)被連續(xù)分配。A.3.5.2水平和垂直采樣數(shù)對(duì)于四個(gè)顏色分量中的每一個(gè),對(duì)水平或垂直排列于宏塊中的塊數(shù)都有一詳細(xì)說明,此說明包括一個(gè)比塊數(shù)小1的兩比特整數(shù)。例如,在MPEG(或H.261)中在具420色度采樣(圖A.15.4)和分量ID如表A.3.3被分配。表A.3.4對(duì)420/MPEG的采樣數(shù)見A.3.5.1注意JPEG在處理422數(shù)據(jù)時(shí)對(duì)其宏塊要求一211結(jié)構(gòu)。表A.3.5對(duì)于422JPEG的采樣數(shù)A.3.6.特殊令牌格式相應(yīng)于本發(fā)明,諸如數(shù)據(jù)令牌和量化表令牌的令牌在解碼器芯片集中以其“擴(kuò)展形式”被使用。在擴(kuò)展形式中,令牌包括一些數(shù)據(jù)。在數(shù)據(jù)令牌的情況中,它們可以包括編碼數(shù)據(jù)或像素?cái)?shù)據(jù)。在量化表令牌的情況中,它們包括量化表信息。另外,這些令牌的“非擴(kuò)展形式”在本發(fā)明中被定義為“空”。這一令牌格式在令牌串中提供了一個(gè)可以被同一令牌的擴(kuò)展版本隨后填充的地方。這種格式主要應(yīng)用于編碼器,因而在此不再進(jìn)一步作為資料給出。表A.3.6對(duì)不同標(biāo)準(zhǔn)的令牌表A.3.6對(duì)不同標(biāo)準(zhǔn)的令牌(續(xù))A.3.7不同標(biāo)準(zhǔn)的令牌使用相應(yīng)于本發(fā)明,每種標(biāo)準(zhǔn)使用一個(gè)不同的被定義令牌的子集。見表A.3.6。A.4雙線接口A.4.1雙線接口和令牌端口一個(gè)簡(jiǎn)單的雙線有效/接受協(xié)議在芯片集中的全部級(jí)別上被使用以控制信息的流動(dòng)。只有在當(dāng)時(shí)鐘上升沿時(shí)觀察到發(fā)送方和接收方都準(zhǔn)備好時(shí)數(shù)據(jù)才在塊之間被發(fā)送。1)數(shù)據(jù)傳送2)接收方未準(zhǔn)備好3)發(fā)送方未準(zhǔn)備好如果發(fā)送方未準(zhǔn)備好(如上面3的發(fā)送方未準(zhǔn)備好),接收方的輸入端必須等待。如果接收方未準(zhǔn)備好(如上面2中的接收方未準(zhǔn)備好),發(fā)送方將繼續(xù)把同樣數(shù)據(jù)放在其輸出端,直到它被接收方接收。當(dāng)令牌信息被在器件之間傳送時(shí),器件之間的雙線接口被稱做一個(gè)令牌端口。A.4.2使用字段所相應(yīng)于本發(fā)明,解碼器芯片集使用雙線接口來連接三個(gè)芯片。此外,輸入到空間解碼器的編碼數(shù)據(jù)也是一個(gè)雙線界面。A.4.3總線信號(hào)由雙線接口傳送的數(shù)據(jù)字寬度依相關(guān)接口的需要而變化(見圖35,“寬于8比特的接口上的令牌”)。例如,12比特系數(shù)被輸入給離散余弦逆變換(IDCT),但只有9比特被輸出。表A.4.1雙線接口數(shù)據(jù)寬度除了數(shù)據(jù)信號(hào)還有另外三個(gè)通過雙線接口傳送的信號(hào)·有效·接收·擴(kuò)展A.4.3.1擴(kuò)展信號(hào)擴(kuò)展信號(hào)與前面說明的令牌擴(kuò)展比特相對(duì)應(yīng)。A.4.4設(shè)計(jì)考慮雙線接口的目的在于芯片之間的短程點(diǎn)到點(diǎn)通信。解碼器芯片應(yīng)當(dāng)被彼此相連地放置,以使芯片之間的PCB連線長(zhǎng)度最短。在可能的地方,連線長(zhǎng)度應(yīng)保持小于25mm。PCB連線電容應(yīng)保持在最小值。時(shí)鐘的分配應(yīng)設(shè)計(jì)為使芯片之間不出現(xiàn)時(shí)鐘不齊。如果有任何時(shí)鐘不齊,應(yīng)當(dāng)安排使“接收芯片”在“發(fā)送芯片”之前看到時(shí)鐘。所有通過雙線接口的芯片通信應(yīng)由同一數(shù)字電源操作。A.4.5接口定時(shí)表A.4.2雙線接口定時(shí)a、在表A.4.2中圖可以隨設(shè)計(jì)不同而不同b、最大信號(hào)裝載是2095(20微微法)注釋1圖A.16.3顯示了系統(tǒng)分配器芯片和從主解碼器時(shí)鐘操作的空間解碼器編碼數(shù)據(jù)通道之間的雙線接口。這是可選的,因?yàn)榇穗p線接口可以從能與解碼器時(shí)鐘同步的編碼數(shù)據(jù)時(shí)鐘工作。參見A.10.5部分,“編碼數(shù)據(jù)時(shí)鐘”。類似地,圖象格式化器的顯示接口可以從與主解碼器時(shí)鐘同步的一個(gè)時(shí)鐘被操作。A.4.6信號(hào)電平雙線接口使用CMOS輸入和輸出。V1Hmin大約是VDD的70%且V1LMax大約是VDD的30%。表A.4.3所示的數(shù)值是V1H和V1L在其各自最差VDD情況下的。VDD=5.0±0.25V。表A.4.3直流電特性a.IOH≤1毫安b.IOH≤4毫安c.IOL≤1毫安d.IOL≤4毫安A.4.7控制時(shí)鐘通常說來,控制通過雙線接口傳送的時(shí)鐘是芯片的解碼器時(shí)鐘(decoder_clock)。到空間解碼器的編碼數(shù)據(jù)端口輸入是個(gè)例外。它由編碼時(shí)鐘(coded_clock)控制的。下面將進(jìn)一步描述時(shí)鐘信號(hào)。A.5DRAM接口A.5.1DRAM接口一單一高性能可配置的DRAM接口被使用在每一個(gè)視頻解碼器芯片。通常,每個(gè)芯片上的DRAM接口實(shí)質(zhì)上是相同的;然而,在如何處理通道優(yōu)先級(jí)上接口之間是不同的。接口被設(shè)計(jì)用于直接驅(qū)動(dòng)每一個(gè)解碼器芯片所用的DRAM。典型情況下,在大多數(shù)系統(tǒng)中,不需要外部邏輯、緩沖器或元件來連接DRAM接口于DRAM。A.5.2接口信號(hào)表A.5.1DRAM接口信號(hào)相應(yīng)于本發(fā)明,接口可以以兩種方式配置·接口的細(xì)節(jié)時(shí)序可被配置以適應(yīng)多種不同的DRAM類型·DRAM接口的“寬度”可被配置以在不同應(yīng)用中提供價(jià)格/性能的折衷。A.5.3DRAM接口的配置通常,有三組寄存器與DRAM接口相聯(lián)系接口定時(shí)配置寄存器,接口總線配置寄存器和刷新配置寄存器。刷新配置寄存器(表A.5.4中的寄存器)應(yīng)當(dāng)被最后配置。A.5.3.1復(fù)位后的狀況復(fù)位后,根據(jù)本發(fā)明,DRAM接口啟動(dòng)操作,伴有一系列缺省定時(shí)參數(shù)(與操作的最慢方式相應(yīng))。開始,DRAM接口將連續(xù)執(zhí)行刷新周期(包括所有的其它傳送)。這將繼續(xù)到一個(gè)值被寫入刷新間隔寄存器。然后DRAM接口將能夠在刷新周期之間執(zhí)行其它類型的傳送。A.5.3.2總線配置總線配置(表A.5.3中的寄存器)應(yīng)只在接口不進(jìn)行數(shù)據(jù)傳送時(shí)完成。緊接在復(fù)位之后且在一個(gè)值被寫入刷新間隔寄存器之前,接口被置于此狀態(tài)。如果需要,僅在無傳送被嘗試時(shí)接口可以在以后重新配置。見時(shí)間解碼器芯片存取寄存器(A.18.3.1)和空間解碼器緩沖器管理存取寄存器(A.13.1.1)。A.5.3.3接口定時(shí)配置根據(jù)本發(fā)明,接口定時(shí)配置信息由接口定時(shí)存取(interface_timing_access)寄存器控制。為此寄存器寫入1使得接口定時(shí)寄存器(表A.5.2中)可被修改。當(dāng)interface_timing_access=1,DRAM接口繼續(xù)以它前面的配置操作。在寫入1后,用戶應(yīng)在寫任何接口定時(shí)寄存器之前等待直至1可以從interface_timing_access被讀回。當(dāng)配置結(jié)束后,0應(yīng)當(dāng)被寫入interface_timing_access。新的配置然后將被傳送給DRAM接口。A.5.3.4刷新配置本發(fā)明DRAM接口的刷新間隔在復(fù)位后只能配置一次。接口繼續(xù)執(zhí)行刷新循環(huán),直到refresh_interval被配置。這防止了任何其它的數(shù)據(jù)傳送。數(shù)據(jù)傳送可在一個(gè)值被寫入refresh_interval之后開始。如此領(lǐng)域中所被熟知的,在首次加電之后DRAM典型需要一個(gè)100μs到500μs之間的“暫?!?,接著地是正常運(yùn)行前可能的大量刷新周期。相應(yīng)地,這些DRAM起動(dòng)要求應(yīng)在給refresh_interval一個(gè)值之前被滿足。A.5.3.5對(duì)配置寄存器的讀操作本發(fā)明的所有DRAM接口寄存器都可在任意時(shí)刻被讀。A.5.4接口定時(shí)(ticks脈沖)DRAM接口定時(shí)由一個(gè)時(shí)鐘獲得,此時(shí)鐘以四倍于設(shè)備的輸入時(shí)鐘的速率運(yùn)轉(zhuǎn)(解碼器時(shí)鐘)。此時(shí)鐘由一個(gè)芯片內(nèi)鎖相環(huán)產(chǎn)生。為了簡(jiǎn)便,此高速時(shí)鐘的周期被表示為“ticks脈沖”。A.5.5接口寄存器表A.5.2接口定時(shí)配置寄存器表A.5.3接口總線配置寄存器A.5.6接口操作DRAM接口使用快速頁面模式。有三種不同類型的存取被支持·讀·寫·刷新每一讀或?qū)懘嫒∠蛞粏蝹€(gè)DRAM頁面地址傳送1到64字節(jié)的脈沖串。在一單一存取中讀和寫傳送是不相混雜的,且每一連續(xù)的存取都作為對(duì)一新DRAM頁面的隨機(jī)存取處理。表A.5.4刷新配置寄存器A.5.7存取結(jié)構(gòu)每一存取包括兩部分·存取起始·數(shù)據(jù)傳送本發(fā)明中,每一存取由一個(gè)存取起始開始,其后跟隨一個(gè)或多個(gè)數(shù)據(jù)傳送周期。此外,對(duì)存取起始和數(shù)據(jù)傳送周期都有一個(gè)讀、寫和刷新變體。當(dāng)對(duì)一特定存取完成了最后數(shù)據(jù)傳送時(shí),接口進(jìn)入其缺省狀態(tài)(見A.5.7.3)且保持此狀態(tài),直到一個(gè)新的存取做好開始的準(zhǔn)備。如果一個(gè)新的存取在上一個(gè)存取已經(jīng)結(jié)束時(shí)準(zhǔn)備開始,那么此新存取將立即開始。A.5.7.1存取起始存取起始為讀或?qū)憘魉吞峁╉撁娴刂凡⒔⒛承┏跏夹盘?hào)條件。相應(yīng)于本發(fā)明,有三種不同的存取起始·讀起始·寫起始·刷新起始表A.5.5DRAM接口定時(shí)參數(shù)a.這個(gè)值可以小于RAS_falling,以保證CAS在RAS刷新之前出現(xiàn)。在每種情況下,RAS的時(shí)序和行地址都是由寄存器RAS_falling和Page_start_length控制的。OE和DRAM_data[31∶0]狀態(tài)從前一數(shù)據(jù)傳送的結(jié)束起被保持,至到RAS變?yōu)榈碗娖健.?dāng)RAS變?yōu)榈碗娖綍r(shí),三種不同存取起始類型只在它們?nèi)绾悟?qū)動(dòng)OE和DRAM_data[31∶0]上有所差別。見圖43。A.5.7.2數(shù)據(jù)傳送在本發(fā)明中,數(shù)據(jù)傳送周期有不同類型·快速頁面讀周期·快速頁面后寫周期·刷新周期一個(gè)刷新起始可以只跟隨有一單一刷新周期。一個(gè)讀(或?qū)?起始可以跟隨有一個(gè)或多個(gè)快速頁面讀(或?qū)?周期。在讀周期的起始CAS被驅(qū)動(dòng)為高電平且新的列地址被驅(qū)動(dòng)。進(jìn)一步,一個(gè)早寫周期被使用。在第一次寫傳送的起始WE被驅(qū)動(dòng)為低電平并保持低電平直到最后一個(gè)寫傳送的結(jié)束。輸出數(shù)據(jù)依照地址被驅(qū)動(dòng)。由于在RAS刷新周期之前的CAS是由刷新周期的起始引發(fā)的,在刷新周期內(nèi)沒有接口信號(hào)活動(dòng)。刷新周期的目的在于滿足DRAM所需的最小RAS低電平期。A.5.7.3接口缺省狀態(tài)本發(fā)明中接口信號(hào)在一次存取的結(jié)尾進(jìn)入一缺省狀態(tài)RAS,CAS和WE高電平*數(shù)據(jù)和OE保持在它們的以前狀態(tài)·地址保持穩(wěn)定A.5.8數(shù)據(jù)總線寬度二位寄存器DRAM_data_width允許DRAM接口的數(shù)據(jù)路徑寬度被配置。這使得在小圖象格式工作時(shí)DRAM成本可降至最低。表A.5.6配置DRAM_data_width(DRAM數(shù)據(jù)寬度寄存器)a、復(fù)位后的缺省b、未使用的信號(hào)被保持在高阻抗A.5.9行地址寬度為提供行地址而從24比特內(nèi)部地址的中間部分取出的比特?cái)?shù)由寄存器row_address_bits配置。表A.5.7配置row_address_bits(行地址比特)A.5.10地址位一個(gè)24位地址被在芯片上產(chǎn)生。這個(gè)地址被如何用來產(chǎn)生行和列地址要依據(jù)數(shù)據(jù)總線的寬度和為行地址選擇的位數(shù)而定。某些配置不允許所有的內(nèi)部地址位都被使用,且因此產(chǎn)生“隱藏位”。類似地,行地址被從地址的中間部分抽取出。相應(yīng)地,這使DRAM以最大速率被自然刷新。表A.5.8內(nèi)部和外部地址之間的映射A.5.10.1低位列地址位列地址中最低有效位的4到6位被用于為多達(dá)64字節(jié)的快速頁面方式傳送提供地址??刂七@些傳送所需的地址位數(shù)將依據(jù)數(shù)據(jù)總線的寬度而定(見A.5.8)。A.5.10.2解碼行地址以存取更多的DRAM體在只使用DRAM的一個(gè)單一體的地方,所使用的行地址將取決于使用的DRAM類型。對(duì)于那些需要多于一個(gè)單一DRAM體所能典型提供的存貯量的應(yīng)用,可以配置一個(gè)更寬的行地址,且然后解碼某些行地址位以選擇一單一DRAM體。注意行地址是從內(nèi)部地址的中間抽取出來的。如果行地址的某些位被解碼以選擇DRAM的體,那么這些“體選擇位”的所有可能值必須選擇一個(gè)DRAM體。否則,地址空間就可能留下空洞。A.5.11DRAM接口使能在本發(fā)明中,有兩個(gè)方法可使DRAM接口上的所有輸出信號(hào)變成高阻抗,也就是,通過設(shè)置DRAM_enable寄存器和DRAM_enable信號(hào)。為使DRAM接口上的驅(qū)動(dòng)器運(yùn)行,寄存器和信號(hào)都必須處于邏輯1。如果任何一個(gè)是低的,那么接口被置成高阻抗。注意當(dāng)DRAM接口在高阻抗時(shí)芯片上數(shù)據(jù)處理并未結(jié)束。因而,如果芯片試圖在接口處于高阻抗時(shí)存取DRAM就可能發(fā)生錯(cuò)誤。相應(yīng)于本發(fā)明,將DRAM接口置成高阻抗的能力被提供,以使得在空間解碼器(或時(shí)間解碼器)未被使用時(shí)其它設(shè)備能測(cè)試或使用由空間解碼器(或時(shí)間解碼器)控制的DRAM。這不是為了在正常運(yùn)行中讓其它設(shè)備共享存貯器。A.5.12刷新除非對(duì)寄存器no_refresh寫入以禁止刷新,DRAM接口將在由寄存器refresh_interval決定的一個(gè)間隔內(nèi)在RAS刷新周期之前使用一個(gè)CAS自動(dòng)地對(duì)DRAM刷新。refresh_interval中的值以16個(gè)decoder_clock周期來指明刷新周期之間的間隔。在1到255范圍內(nèi)的值可被配置。在復(fù)位后0值被自動(dòng)裝載并迫使DRAM接口繼續(xù)執(zhí)行刷新周期(一旦允許),直到一個(gè)有效刷新間隔被配置。我們建議,refresh_interval在每次復(fù)位后應(yīng)當(dāng)只被配置一次。當(dāng)reset信號(hào)出現(xiàn)時(shí),DRAM接口不能刷新DRAM。然而,解碼器芯片所需的復(fù)位時(shí)間足夠短,因而應(yīng)當(dāng)可以復(fù)位它們,且在DRAM的內(nèi)容耗失之前重新配置DRAM接口。A.5.13信號(hào)強(qiáng)度DRAM接口的輸出的驅(qū)動(dòng)強(qiáng)度可以由用戶使用3位的寄存器CAS_strength,RAS_strength,addr_strength,DRAM_data_strength和OEWE_strength來配置。這個(gè)3比特值的最高位選擇邊沿速率的快或慢。兩個(gè)低有效位為不同的負(fù)載能力配置輸出。復(fù)位后的缺省強(qiáng)度是6,它配置輸出如果負(fù)載電容為24pf,大約以10ns來驅(qū)動(dòng)一個(gè)介于GND和VDD之間的信號(hào)。表A.5.9輸出強(qiáng)度配置a、復(fù)位后缺省當(dāng)一個(gè)輸出為了它所驅(qū)動(dòng)的負(fù)載而被適當(dāng)配置,它將符合表A.5.13到A.5.16中指示的交流電特性。在配置適當(dāng)時(shí),每個(gè)輸出都與其負(fù)載大致匹配,因此在一個(gè)信號(hào)跳變之后將出現(xiàn)最小程度的過沖。A.5.14電特性此部分提供的所有信息僅是本發(fā)明一個(gè)實(shí)施方式的說明,是包括在范例之內(nèi)而不必作為限制。表A.5.10最大額定值表A.5.10僅為說明實(shí)施方式設(shè)置了最大額定值。對(duì)這個(gè)下面強(qiáng)調(diào)的特定實(shí)施方式,表中列出的應(yīng)被采用,以保證運(yùn)行的可靠性。表A.5.11直流操作條件a、帶有TBA線狀英尺/分鐘橫向氣流表A.5.12直流電特性a、AC參數(shù)被以K0Lmax=0.8V為測(cè)量級(jí)別而指出b、這是接口的穩(wěn)態(tài)驅(qū)動(dòng)能力。瞬間電流可能會(huì)大得多。A.5.14.1AC特性表A.5.13選通脈沖相對(duì)名義值的偏差a、信號(hào)的驅(qū)動(dòng)強(qiáng)度必須相應(yīng)其負(fù)載而被配置,如具有本領(lǐng)域中一般技能的人能認(rèn)識(shí)到的。表A.5.14兩次選通之間對(duì)名義值的偏差表A.5.14兩次選通之間對(duì)名義值的偏差(續(xù))a、兩個(gè)信號(hào)的驅(qū)動(dòng)器強(qiáng)度必須適應(yīng)它們的負(fù)載而被配置表A.5.15總線和選通之間相對(duì)于名義值的偏差a、總線和選通的驅(qū)動(dòng)器強(qiáng)度必須適應(yīng)它的負(fù)載而被配置表A.5.16總線和選通之間相對(duì)于名義值的偏差在讀DRAM時(shí),DRAM接口在CAS信號(hào)升為高電平時(shí)采樣DRAM_data[310]。表A.5.17“標(biāo)準(zhǔn)”DRAM參數(shù)名和定時(shí)參數(shù)值之間的相互參照A.6微處理器接口(MPI)一標(biāo)準(zhǔn)字節(jié)寬度的微處理器接口(MPI)被用于視頻解碼器芯片集內(nèi)的所有芯片上,然而,一個(gè)具本領(lǐng)域中一般技能的人將認(rèn)識(shí)到,其它寬度的微處理器接口也可被使用。MPI與多種解碼器芯片時(shí)鐘同步運(yùn)行。A.6.1MPI信號(hào)表A.6.1MPI接口信號(hào)A.6.2MPI電學(xué)特性表A.6.2絕對(duì)最大額定值表A.6.3DC操作條件a、AC輸入?yún)?shù)是在1.4V測(cè)量級(jí)別上測(cè)量的。b、帶有TBA線狀英尺/分鐘橫向氣流。表A.6.4DC電特性表A.6.4DC電特性(續(xù))a、I0≤I0minb、這是接口的穩(wěn)態(tài)驅(qū)動(dòng)能力,瞬時(shí)電流可能會(huì)高得多。c、當(dāng)OC輸出irg置位,且下拉阻抗≤100Ω時(shí)。A.6,2.1AC特性表A.6.5微處理器接口讀定時(shí)表A.6.5微處理器接口讀定時(shí)(續(xù))a、在此例中,選擇來起始周期和選擇來結(jié)束之是任意的。這些信號(hào)的地位相同。b、存取時(shí)間是對(duì)于每一數(shù)據(jù)[7.0]上最大負(fù)載為50pF而指定的。更大的負(fù)載可能會(huì)增長(zhǎng)存取時(shí)間。表A.6.6微處理器接口寫定時(shí)a、在本例中,選擇來起始周期和選來結(jié)束周期是任意的。這些信號(hào)的地位相同。A.6.3中斷根據(jù)本發(fā)明,“事件”是一個(gè)用于描述一種用戶可能想要監(jiān)視的芯片上狀態(tài)的術(shù)語。一個(gè)事件可以指示一個(gè)錯(cuò)誤或者可為用戶的軟件提供信息。有兩個(gè)單一位寄存器與每個(gè)中斷或“事件”相聯(lián)系。它們是狀態(tài)事件寄存器和狀態(tài)屏蔽寄存器。A.6.3.1狀態(tài)事件寄存器狀態(tài)事件寄存器是一個(gè)一位讀/寫寄存器,它的值被一個(gè)出現(xiàn)于電路內(nèi)部的狀態(tài)設(shè)置為1。甚至在此狀態(tài)是瞬間且現(xiàn)已消逝的情況下寄存器也被設(shè)置為1。然后寄存器被保證設(shè)置為1,直到用戶的軟件對(duì)其復(fù)位(或整個(gè)芯片被復(fù)位)?!ご思拇嫫魍ㄟ^寫0值而被設(shè)置為0?!そo寄存器寫0使寄存不被改變·寄存器必須在再次觀察到這種狀態(tài)的出現(xiàn)之前由用戶軟件設(shè)置為0?!ぜ拇嫫鲗⒃趶?fù)位時(shí)被復(fù)位為0A.6.3.2狀態(tài)屏蔽寄存器狀態(tài)屏蔽寄存器是一個(gè)一位讀/寫寄存器,如果相應(yīng)的狀態(tài)事件寄存器被設(shè)置,它允許一個(gè)中斷請(qǐng)求被產(chǎn)生。如果當(dāng)1被寫入狀態(tài)屏蔽寄存器時(shí)狀態(tài)事件已被設(shè)置,一個(gè)中斷請(qǐng)求會(huì)馬上發(fā)出?!ぶ?允許中斷·在復(fù)位時(shí)寄存器清0。除非已說明為別種情況,一個(gè)塊在產(chǎn)生一中斷請(qǐng)求后將停止操作并將在狀態(tài)事件或狀態(tài)屏蔽寄存器被清0后重新開始操作。A.6.3.3事件和屏蔽位事件位和屏蔽位常被歸組為存貯器映象中連續(xù)字節(jié)中的相應(yīng)位的位置(見表A.9.6和A.17.6)。這使得中斷服務(wù)軟件可以使用從屏蔽寄存器讀出的值作為事件寄存器中值的屏蔽;以識(shí)別哪一事件產(chǎn)生了中斷。A.6.3.4芯片事件和屏蔽每個(gè)芯片具有一單一“總體”事件位,它概括了芯片上事件的活動(dòng)性。芯片事件寄存器提供了所有在其屏蔽位有1的芯片上事件的或。芯片屏蔽位中的一個(gè)1使芯片可以產(chǎn)生中斷。芯片屏蔽位中的一個(gè)0阻止任何芯片上事件產(chǎn)生中斷請(qǐng)求。給芯片事件寫入1到0不產(chǎn)生任何影響,在所有事件(由它們屏蔽位中的一個(gè)1而使能)都已被清除時(shí),它才被清除。A.6.3.5irq信號(hào)如果芯片事件位和芯片事件屏蔽兩者都被設(shè)置,信號(hào)被置位。信號(hào)是一個(gè)低電平有效、“集電極開路”輸出,它要求一個(gè)芯片外上拉電阻。當(dāng)有效時(shí)輸出被一個(gè)100Ω或更小的阻抗下拉。我們認(rèn)為大約4KΩ的上拉電阻將適用于大多數(shù)應(yīng)用。A.6.4存取寄存器A.6.4.1停止電路允許存取在本發(fā)明中,如果與之相關(guān)聯(lián)的塊被停止,大多數(shù)寄存器才能被修改。因而,寄存器組通常與一存取寄存器相聯(lián)系。存取寄存器中的0值指示與該存取寄存器相關(guān)聯(lián)的寄存器組不應(yīng)被修改。向一存取寄存器寫1要求一個(gè)塊被停止。然而,塊可能不會(huì)立即停止且塊的存取寄存器將保持0值直到它被停止。相應(yīng)地,用戶軟件將等待(在寫入1來請(qǐng)求存取后)直到從存取寄存器讀出1。如果用戶在其存取寄存器被設(shè)置為0時(shí)向配置寄存器寫入一個(gè)值,結(jié)果是未定義的。A.6.4.2寄存器中持有的整數(shù)在存貯器映象中任何字節(jié)的最低有效位是與信號(hào)數(shù)據(jù)相聯(lián)系的。那些保持有大于8位的整數(shù)值的寄存器被在存貯器映象中分裂為2或4個(gè)連續(xù)字節(jié)位置。字節(jié)順序是如圖55所示的“大數(shù)結(jié)尾”。然而,不存在任何關(guān)于字節(jié)被寫入多字節(jié)寄存器這類有關(guān)順序的假設(shè)。存貯器映象中不用的位在被讀時(shí)將返回0,除非寄存器中不用的位保持帶符號(hào)整數(shù)。在這種情況下,寄存器的高有效位將被符號(hào)擴(kuò)展。例如,一個(gè)12位符號(hào)寄存器將被符號(hào)擴(kuò)展以填充一個(gè)16位的存貯映象位置(2字節(jié))。一個(gè)保持有一個(gè)12位無符號(hào)整數(shù)的16位存貯器映象位置將從其高有效位返回0。A.6.4.3鎖眼(Keyhole)地址定位在本發(fā)明中,某些較不常被存取的存貯映象位置已被置于“鎖眼(Keyhole)”后面。一個(gè)“鎖眼”有兩個(gè)與之相關(guān)的寄存器,一個(gè)是鎖眼地址寄存器,一個(gè)是鎖眼數(shù)據(jù)寄存器。鎖眼地址指明在一擴(kuò)展地址空間內(nèi)的單元。一個(gè)對(duì)鎖眼數(shù)據(jù)寄存器讀或?qū)懙牟僮鞔嫒∮涉i眼地址寄存器指定的單元。在存取了一個(gè)鎖眼數(shù)據(jù)寄存器后與之相關(guān)的鎖眼地址寄存器產(chǎn)生增量。在擴(kuò)展地址空間內(nèi)的隨機(jī)存取只有通過為每一存取向鎖眼地址寄存器寫入新值才是可能的。一個(gè)相應(yīng)于本發(fā)明的芯片可以具有不止一個(gè)“鎖眼”存貯變換圖。不同鎖眼之間沒有相互作用。A.6.5特殊寄存器A.6.5.1未使用的寄存器被描述為“未使用”的寄存器或位就是存貯器變換中那些沒有在當(dāng)前的設(shè)備實(shí)施中使用的位置。通常,可以從這些位置讀到0值。向這些位置寫入零沒有任何作用。正如一個(gè)具有本領(lǐng)域中一般技藝的人所將了解的那樣,為了保持與這些產(chǎn)品將來有可能出現(xiàn)的變異相兼容,用戶軟件最好不要依賴于從未使用位置讀出的值。類似地,當(dāng)配置設(shè)備時(shí),這些位置應(yīng)該避免或設(shè)置為0值。A.6.5.2保留寄存器類似地,在本發(fā)明中被描述為“保留”的寄存器或位沒有作為資料給出它對(duì)于設(shè)備性能的影響,不應(yīng)當(dāng)被存取。A.6.5.3檢測(cè)寄存器進(jìn)一步,被描述為“檢測(cè)寄存器”的寄存器或位控制著設(shè)備可檢測(cè)性的多種方面。因而,這些寄存器在設(shè)備的一般使用中不被應(yīng)用,且不需要被一般設(shè)備配置和控制軟件存取。A.7時(shí)鐘相應(yīng)于本發(fā)明,在視頻解碼器系統(tǒng)中有許多不同時(shí)鐘可被識(shí)別。時(shí)鐘的例子在圖56中有所說明。當(dāng)數(shù)據(jù)穿過視頻解碼器芯片集中的不同時(shí)鐘區(qū)域時(shí),它被與每個(gè)新時(shí)鐘再同步(在芯片上)。在本發(fā)明中,任何輸入時(shí)鐘的最大頻率是30MHz。然而,具有本領(lǐng)域中一般技術(shù)的人將認(rèn)識(shí)到,其它頻率,包括那些大于30MHz的,也可以被使用。在每個(gè)芯片上,微處理器接口(MPI)與芯片時(shí)鐘同步操作。此外,圖象格式化器可以產(chǎn)生一個(gè)與被解碼視頻的圖象率同步的低頻音頻時(shí)鐘。相應(yīng)地,這個(gè)時(shí)鐘可以被用于提供音頻/視頻同步。A.7.1空間解碼器時(shí)鐘信號(hào)空間解碼器有兩種不同的(且潛在井步的)時(shí)鐘輸入表A.7.1空間解碼器時(shí)鐘A.7.2時(shí)間解碼器時(shí)鐘信號(hào)時(shí)間解碼器只有一個(gè)時(shí)鐘輸入表A.7.2時(shí)間解碼器時(shí)鐘A.7.3電學(xué)特性表A.7.3輸入時(shí)鐘要求表A.7.4時(shí)鐘輸入條件A.7.3.1CMOS的電平時(shí)鐘輸入信號(hào)是CMOS輸入。V1Hmin大約是俄VDD的70%且V1Lmax大約是VDD的30%。表A.7.4中所示的值是那些V1H和V1L在其各自的最差VDD情況下的。VDD=5.0±0.25VA.7.3.2時(shí)鐘穩(wěn)定性在本發(fā)明中,用于驅(qū)動(dòng)DRAM接口和芯片到芯片接口的時(shí)鐘是從輸入時(shí)鐘信號(hào)獲得的。這些接口的時(shí)序技術(shù)要求假設(shè)輸入時(shí)鐘定時(shí)在±100PS(微微秒)范圍內(nèi)是穩(wěn)定的。A.8JTAG隨著電路板排布越來越密集,利用傳統(tǒng)的方法越來越難查對(duì)元件之間的聯(lián)連,如使用釘床(bed-of-nails)手段的電路內(nèi)測(cè)試。從方法論上在解決存取問題和標(biāo)準(zhǔn)化的嘗試中,聯(lián)合測(cè)試行動(dòng)組(JTAG)產(chǎn)生了。此小組的工作歸結(jié)為“標(biāo)準(zhǔn)測(cè)試存取端口和邊界掃描結(jié)構(gòu)”,現(xiàn)已被IEEE作為標(biāo)準(zhǔn)1149.1而采用??臻g解碼器和時(shí)間解碼遵從此標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)使用一個(gè)邊界掃描鏈,它與設(shè)備上每個(gè)數(shù)字掃描引腳順序相連。在一般操作中測(cè)試電路系統(tǒng)是透明的,但在測(cè)試方式中邊界掃描鏈允許測(cè)試模式被改變,并施加于設(shè)備的引腳。所得到的出現(xiàn)于電路板上JTAG設(shè)備輸入的信號(hào)可以被掃描出并被相對(duì)簡(jiǎn)單的測(cè)試裝備檢測(cè)。通過這種方法,元件之間的聯(lián)系可被測(cè)試,就如同電路板上的邏輯區(qū)域可被測(cè)試一樣。所有JTAG操作是通過由5個(gè)引腳構(gòu)成的測(cè)試存取端口(TAP)完成的。(測(cè)試復(fù)位)引腳對(duì)JTAG電路系統(tǒng)復(fù)位以保證設(shè)備在測(cè)試方式中沒有上電。tck(測(cè)試時(shí)鐘)引腳被用于以時(shí)鐘驅(qū)動(dòng)系列測(cè)試模式到tdi(測(cè)試數(shù)據(jù)輸入)引腳,并從tdo(測(cè)試數(shù)據(jù)輸出)引腳出去,最后,JTAG電路系統(tǒng)的操作模式通過將適當(dāng)順序的位以時(shí)鐘驅(qū)動(dòng)進(jìn)入tms(測(cè)試方式選擇)引腳而被設(shè)置。JTAG標(biāo)準(zhǔn)是可擴(kuò)展的,以適應(yīng)芯片制造商酌情附加的特性。在空間解碼器和時(shí)間解碼器上有9個(gè)用戶指令,包括3個(gè)JTAG命令性指令。附加指令允許某種程度的內(nèi)部設(shè)備測(cè)試被執(zhí)行,并提供了附加的外部測(cè)試靈活性。例如,所有的設(shè)備輸出可被一簡(jiǎn)單的JTAG序列所容納。要了解關(guān)于可獲得的設(shè)備和關(guān)于如何使用JTAG端口的指令的全部細(xì)節(jié),參見下面的JTAG應(yīng)用注釋。A.8.1JTAG引腳與非JTAG系統(tǒng)的連結(jié)表A.8.1如何連結(jié)JTAG輸入A.8.2與IEEE1149.1的符合級(jí)別A.8.2.1規(guī)則所有規(guī)則都被堅(jiān)持,盡管下面的情況應(yīng)當(dāng)被注意表A.8.2JTAG規(guī)則表A.8.2JTAG規(guī)則(續(xù))A.8.2.2建議表A.8.3可滿足的建議表A.8.4未實(shí)現(xiàn)的建議A.8.2.3允許表A.8.5可滿足的允許A.9空間解碼器·30MHz操作·解碼MPEG,JPEG,和H.261·編碼數(shù)據(jù)率達(dá)25Mb/S·視頻數(shù)據(jù)率達(dá)21MB/S·可變色度采樣格式·完全JPEG基線解碼·無粘結(jié)(Glue-less)的DRAM接口·單一+5V電源·208引腳的PQFP型封裝·最大功率消耗2.5W·獨(dú)立編碼數(shù)據(jù)和解碼器時(shí)鐘·使用標(biāo)準(zhǔn)頁面模式PRAM空間解碼器是一個(gè)可配置的VLSI解碼器芯片,使用于多種JPEG,MPEG和H,261圖象和視頻解碼應(yīng)用。在一個(gè)不含有芯片外DRAM的最小配置中,空間解碼是一個(gè)單芯片的高速JPEG解碼器。加入DRAM使得空間解碼器可以解碼JPEG編碼的視頻圖象。720×480,30Hz,4∶2∶2的“JPEG視頻"可以被實(shí)時(shí)解碼。有了時(shí)間解碼器,空間解碼器可被用于解碼H.261和MPEG(以及JPEG)。704×480,30Hz,4∶2∶0的MPEG視頻可以被解碼。再次指出,上述值只是用于說明相應(yīng)于本發(fā)明的一種實(shí)施方式的典型值,僅為舉例而無需以此為限制。相應(yīng)地,那些具有本領(lǐng)域中一般技藝的人仍將認(rèn)識(shí)到其它數(shù)值和/或范圍也可被使用。A.9.1空間解碼器信號(hào)表A.9.1空間解碼器信號(hào)表A.9.1空間解碼器信號(hào)(續(xù))表A.9.1空間解碼器信號(hào)(續(xù))表A.9.2空間解碼器測(cè)試信號(hào)表A.9.2空間解碼器信號(hào)(續(xù))表A.9.3空間解碼器引腳分配表A.9.3空間解碼器引腳分配(續(xù))表A.9.3空間解碼器引腳分配(續(xù))A.9.1.1“nc”無連接引腳表A.9.3中標(biāo)有nc的引腳當(dāng)前不被使用。這些引腳應(yīng)當(dāng)不被連接。A.9.1.2VDD和GND引腳如具本領(lǐng)域中一般技藝的人所將認(rèn)識(shí)到的,被提供的所有VDD和GND引腳都應(yīng)與適當(dāng)?shù)碾娫聪噙B接。除非所有的VDD和GND引腳都被正確使用,否則不能保證正確的設(shè)備運(yùn)行。A.9.1.3正常操作的測(cè)試引腳連結(jié)空間解碼器上的9條引腳保留用于內(nèi)部測(cè)試。表A.9.4缺省測(cè)試引腳連接A.9.1.4正常操作的JTAG引腳見A.8.1部分A.9.2空間解碼器存貯映象表A.9.5空間解碼器存貯器映象一覽表表A.9.6中斷服務(wù)區(qū)寄存器表A.9.6中斷服務(wù)區(qū)寄存器(續(xù))表A.9.7起始碼檢測(cè)器和輸入電路寄存器表A.9.7起始碼檢測(cè)器和輸入電路寄存器(續(xù))表A.9.8緩沖器啟動(dòng)寄存器表A.9.9DRNM接口設(shè)置寄存器表A.9.9DRAM接口設(shè)置寄存器(續(xù))表A.9.10緩沖管理器存取和鎖眼寄存器表A.9.11緩沖管理器擴(kuò)展地址空間表A.9.11緩沖管理器擴(kuò)展地址空同(續(xù))表A.9.12視頻分離器寄存器表A.9.12視頻分離器寄存器(續(xù))表A.9.13視頻分離器擴(kuò)展地址空間表A.9.13視頻分離器擴(kuò)展地址空間(續(xù))表A.9.13視頻分離器擴(kuò)展地址空間(續(xù))表A.9.13視頻分離器擴(kuò)展地址空間(續(xù))表A.9.13視頻分配器擴(kuò)展地址空間(續(xù))表A.9.13視頻分配器擴(kuò)展地址空間(續(xù))表A.9.14逆量化器寄存器表A.9.14逆量化器寄存器(續(xù))表A.9.15Iq(逆量化)表擴(kuò)充地址空間A.10編碼數(shù)據(jù)輸入相應(yīng)于本發(fā)明的系統(tǒng)必須知道何種視頻標(biāo)準(zhǔn)正在為處理而被輸入。此后,系統(tǒng)可以接受預(yù)先存在的令牌或者原始字?jǐn)?shù)據(jù),原始字節(jié)數(shù)據(jù)然后被起始碼檢測(cè)器放入令牌中。因而,編碼數(shù)據(jù)和設(shè)置令牌可以通過兩種途徑被提供給空間解碼器·編碼數(shù)據(jù)輸入端口·微處理器接口(MPI)選擇使用哪條路徑將依賴于應(yīng)用和系統(tǒng)環(huán)境。例如,在低數(shù)據(jù)率時(shí)有可能使用一單一微處理器來同時(shí)控制解碼器芯片集和完成系統(tǒng)比特串的多路分配。在這種情況下,有可能通過MPI完成編碼數(shù)據(jù)的輸入。作為另一種選擇,一個(gè)高編碼數(shù)據(jù)率可能要求編碼數(shù)據(jù)通過編碼數(shù)據(jù)端口被提供。在某些應(yīng)用中,可能適合采取MPI和編碼數(shù)據(jù)端口混合輸入。A.10.1編碼數(shù)據(jù)端口表A.10.1編碼數(shù)據(jù)端口信號(hào)相應(yīng)于本發(fā)明的編碼數(shù)據(jù)端口可以兩種模式被操作令牌模式和字節(jié)模式。A.10.1.1令牌模式在本發(fā)明中,如果byte_mode是低電平,那么編碼數(shù)據(jù)端口在一般方法中作為一令牌端口運(yùn)行,并且在coded_valid和coded_accept控制下接受令牌。此接口的電操作細(xì)節(jié)見A.4部分。信號(hào)byte_mode與data[7:0],coded_extn和coded_valid同時(shí)即在coded_clock的上升沿被采樣。A.10.1.2字節(jié)模式然而,如果byte_mode處于高電平,那么數(shù)據(jù)的一個(gè)字節(jié)在雙線接口控制信號(hào)coded_valid和coded_accept的控制下被傳送到data[7:0]上。在此情況下,coded_extn被忽略。字節(jié)被在芯片上連續(xù)裝配入DATA令牌,直到輸入模式被改變。1)在令牌模式中提供的令牌的第一個(gè)字(“頭”)。2)提供的令牌最后一個(gè)字(coded_extn變?yōu)榈碗娖?。3)在字節(jié)模式中提供的數(shù)據(jù)的第一個(gè)字節(jié)。一個(gè)新的DATA令牌被在芯片上自動(dòng)產(chǎn)生。A.10.2通過MPI提供數(shù)據(jù)令牌可以通過存取編碼數(shù)據(jù)輸入寄存器經(jīng)MPI提供給空間解碼器。A.10.2.1通過MPI寫標(biāo)志本發(fā)明中的編碼數(shù)據(jù)寄存器被組裝成存貯器映象中的兩個(gè)字節(jié)以便于有效的數(shù)據(jù)傳送。8個(gè)數(shù)據(jù)位,coded_data[7:0]在一個(gè)存貯單元,而控制寄存器,coded_busy,enable_mpi_input和coded_extn在第二個(gè)存貯單元內(nèi)(見表A.9.7)。為通過MPI的令牌輸入而配置時(shí),每當(dāng)一個(gè)值被寫入coded_data[7:0],當(dāng)前令牌就被以coded_extn的當(dāng)前值擴(kuò)展。軟件應(yīng)在任意令牌的最后一個(gè)字被寫入coded_data[7:0]之前將coded_extn設(shè)置為0。例如,向coded_extn寫入1然后向coded_data[7:0]寫入0×04可以起始一個(gè)DATA令牌。然后,這個(gè)新DATA令牌的起始被傳遞給空間解碼器以作處理。每當(dāng)一個(gè)新的8位值被寫入coded_data[7:0],當(dāng)前令牌就被擴(kuò)展。當(dāng)結(jié)束當(dāng)前令牌,例如引入另一令牌時(shí),coded_extn只需被再次存取。通過向coded_extn寫入0然后向coded_data[7:0]寫入當(dāng)前令牌的最后一個(gè)字,當(dāng)前令牌的最后一個(gè)字可被提出。表A.10.2編碼數(shù)據(jù)輸入寄存器在每次寫coded_data[7:0]之前,coded_busy應(yīng)當(dāng)被檢查以看接口是否已準(zhǔn)備好接受更多的數(shù)據(jù)。A.10.3輸入模式之間的轉(zhuǎn)換假設(shè)適當(dāng)?shù)念A(yù)告被觀察到,則有可能動(dòng)態(tài)地改換數(shù)據(jù)輸入模式。通常說來,通過任何一種途徑進(jìn)行的令牌傳送應(yīng)當(dāng)在轉(zhuǎn)換模式之前結(jié)束。表A.10.3轉(zhuǎn)換數(shù)據(jù)輸入模式用字節(jié)模式提供的第一字節(jié)導(dǎo)致一個(gè)DATA令牌頭在芯片上被產(chǎn)生。任何以字節(jié)模式傳送的其它字節(jié)都在此后被附加于這個(gè)DATA令牌,直到輸入模式發(fā)生改變。再回憶一下,DATA令牌可包括所需的任意多位。MPI寄存器位,coded_busy和信號(hào)coded_accept指示空間解碼器將愿意從哪個(gè)接口接受數(shù)據(jù)。這些信號(hào)的正確監(jiān)測(cè)可以保證沒有數(shù)據(jù)被丟失。A.10.4編碼數(shù)據(jù)接受速率在本發(fā)明中,輸入電路將令牌傳送到起始碼檢測(cè)器(見A.11部分)。起始碼檢測(cè)器連續(xù)地分析DATA令牌中的數(shù)據(jù)位。檢測(cè)器的正常處理速率是每個(gè)時(shí)鐘周期(coded_clock的)一位。相應(yīng)地,典型地說它將每8個(gè)coded_clock周期解碼一個(gè)字節(jié)的編碼數(shù)據(jù)。然而,有時(shí)還需要附加的處理周期,例如當(dāng)一個(gè)非DATA令牌被提供或在編碼數(shù)據(jù)中碰到一個(gè)起始碼時(shí)。當(dāng)這種情況發(fā)生時(shí),起始碼檢測(cè)器在一短暫時(shí)間內(nèi)將不能接受更多的信息。在起始碼檢測(cè)器之后,數(shù)據(jù)進(jìn)入一個(gè)第一邏輯編碼數(shù)據(jù)緩沖器。如果這個(gè)緩沖器已滿,那么起始碼檢測(cè)器將不能接受更多的信息。因而,當(dāng)起始碼檢測(cè)器不能接收更多信息時(shí),從編碼數(shù)據(jù)端口或是從MPI都不會(huì)有更多編碼數(shù)據(jù)(或其它令牌)被接受。這將由信號(hào)(coded_accept的狀態(tài)和寄存器coded_busy所指示。通過使用coded_accept和/或coded_busy,用戶被保證不會(huì)有編碼信息被丟失。然而,如具有本領(lǐng)域中一般技藝的人所將認(rèn)識(shí)到的,如果空間解碼器不能夠接受數(shù)據(jù),系統(tǒng)必須能夠緩沖新到達(dá)的編碼數(shù)據(jù)(或停止新數(shù)據(jù)的到達(dá))。A.10.5編碼數(shù)據(jù)時(shí)鐘相應(yīng)于本發(fā)明,編碼數(shù)據(jù)端口、輸入電路和空間解碼器內(nèi)的其它功能被coded_clock所控制。進(jìn)一步,這個(gè)時(shí)鐘可以與主decoder_clock異步。數(shù)據(jù)傳送被與芯片上decoder_clock同步。A.11起始碼檢測(cè)器A.11.1起始碼如本領(lǐng)域中人所熟知的,MPEG和H.261編碼的視頻串包含有被稱為起始碼的可識(shí)別位模型。在JPEG中記號(hào)碼起著類似功能。起始/記號(hào)碼識(shí)別編碼數(shù)據(jù)串語法的有效部分。起始碼檢測(cè)器完成的起始/記號(hào)碼的分析是編碼數(shù)據(jù)語法分析中的第一步。起始碼檢測(cè)器是空間解碼器上跟在輸入電路后面的第一個(gè)塊。起始/記號(hào)碼模型被設(shè)計(jì)為使其能被識(shí)別而無需解碼整個(gè)位串。這樣,它們可以相應(yīng)于本發(fā)明被使用以幫助發(fā)現(xiàn)錯(cuò)誤和起動(dòng)解碼器。起始碼檢測(cè)器提供設(shè)施以在編碼數(shù)據(jù)結(jié)構(gòu)中檢測(cè)錯(cuò)誤并協(xié)助解碼器的起動(dòng)。A.11.2起始碼檢測(cè)器寄存器如前所述,許多起始碼檢測(cè)器寄存器被起始碼檢測(cè)器經(jīng)常性地使用著。因此,如果起始碼檢測(cè)器正在處理數(shù)據(jù),存取這些寄存器將是不可靠的。用戶有責(zé)任保證在存取其寄存器之前起始碼檢測(cè)器被停止。寄存器start_code_detector_access被用于停止起始碼檢測(cè)器并從而允許存取其寄存器。在它產(chǎn)生一個(gè)中斷后,起始碼寄存器將停止。在起始碼找尋和丟棄所有數(shù)據(jù)模式何時(shí)可被引發(fā)上還有進(jìn)一步的限制。這些在A.11.8和A.11.5.1中有所描述。表A.11.1起始碼檢測(cè)器寄存器表A.11.1起始碼檢測(cè)器寄存器(續(xù))表A.11.1起始碼檢測(cè)器寄存器(續(xù))表A.11.1起始碼檢測(cè)器寄存器(續(xù))A.11.3起始碼向令牌的轉(zhuǎn)變?cè)谡2僮髦?,起始碼檢測(cè)器的功能是在數(shù)據(jù)串上識(shí)別起始碼,然后將它們轉(zhuǎn)變成適當(dāng)?shù)钠鹗即a令牌。在最簡(jiǎn)單的情況下,數(shù)據(jù)以單個(gè)長(zhǎng)DATA令牌形式提供給起始碼檢測(cè)器。起始碼檢測(cè)器的輸出是大量其間插以起始碼令牌的較短DATA令牌。相應(yīng)于本發(fā)明,可供選擇的另一方法是,起始碼檢測(cè)器的輸入數(shù)據(jù)可以被分為大量較短的DATA令牌。對(duì)于編碼數(shù)據(jù)被如何分成DATA令牌沒有限制,除了每個(gè)DATA令牌必須包括8×n位,在此n為一個(gè)整數(shù)。其它令牌可以被直接提供給起始碼檢測(cè)器的輸入。在這種情況下,令牌不作任何處理地穿過起始碼檢測(cè)器到達(dá)空間解碼器的其它階段。這些令牌只能被插入到緊靠編碼數(shù)據(jù)中一個(gè)起始碼位置之前處。A.11.3.1起始碼格式本發(fā)明中的起始碼檢測(cè)器可以識(shí)別三種不同的起始碼格式。這是通過寄存器start_code_detector_coding_standard而被配置。表A.11.3起始碼格式A.11.3.2起始碼令牌的等同物在檢測(cè)到一個(gè)起始碼后,起始碼檢測(cè)器研究與起始碼相關(guān)聯(lián)的值,并產(chǎn)生一個(gè)適當(dāng)?shù)牧钆?。通常,令牌是仿造合適的MPEG文法被命名,然而,具有本領(lǐng)域中一般技藝的人將認(rèn)識(shí)到令牌可以遵從其它的命名格式。當(dāng)前所選擇的編碼標(biāo)準(zhǔn)配置了起始碼值和所產(chǎn)生令牌之間的關(guān)系。這種關(guān)系如表A.11.4中所示。表A.11.4來自起始碼值的令牌a、令牌包含一8bit的數(shù)據(jù)段,它被加載的值是由起始碼決定的值。b、指出基線DCT編碼數(shù)據(jù)開始。A.11.3.3編碼標(biāo)準(zhǔn)的擴(kuò)展特征編碼標(biāo)準(zhǔn)提供了大量手法以使數(shù)據(jù)被嵌入數(shù)據(jù)串中,數(shù)據(jù)串的使用當(dāng)前不被編碼標(biāo)準(zhǔn)所定義。這可以是為一特定制造商提供額外設(shè)施的針對(duì)應(yīng)用的“用戶數(shù)據(jù)”。作為選擇,它也可是“擴(kuò)展數(shù)據(jù)”。編碼標(biāo)準(zhǔn)當(dāng)局保留了在將來使用擴(kuò)展數(shù)據(jù)為編碼標(biāo)準(zhǔn)增添特征的權(quán)利。兩種獨(dú)特的技巧被采用,JPEG優(yōu)先用戶塊和具有記號(hào)碼的擴(kuò)展數(shù)據(jù)。然而,H.261插入了由編碼數(shù)據(jù)中一個(gè)額外信息位指示的“額外信息”。MPEG可以使用這兩種技法。相應(yīng)于本發(fā)明MPEG/JPEG用戶塊和在起始/記號(hào)碼后面的擴(kuò)展數(shù)據(jù)可被起始碼檢測(cè)器檢測(cè)出來。H.261/MPEG“額外信息”被本發(fā)明的Huffman解碼器檢測(cè)。參見A.14.7“額外信息的接收”。寄存器discard_extension_data和discard_user_data允許起始碼檢測(cè)器被配置以丟棄用戶數(shù)據(jù)和擴(kuò)展數(shù)據(jù)。如果這個(gè)數(shù)據(jù)沒有在起始碼檢測(cè)器被丟棄,它可在到達(dá)視頻分離器時(shí)被存取。參見A.14.6.“用戶和擴(kuò)展數(shù)據(jù)的接收”。本發(fā)明的空間解碼器支持JPEG的基線特征。JPEG的非基線特征被空間解碼器視為擴(kuò)展數(shù)據(jù)。因此,所有在非基線JPEG數(shù)據(jù)之前的JPEG記號(hào)碼都被作為擴(kuò)展數(shù)據(jù)對(duì)待。A.11.3.4JPEG表定義JPEG支持遠(yuǎn)程裝入的Huffman和量化表。在JPEG數(shù)據(jù)中,屬于這些表的定義之前的是記號(hào)碼DNL和DQT。當(dāng)這些記號(hào)碼被檢測(cè)時(shí),起始碼檢測(cè)器產(chǎn)生令牌DHT_MARKER和DQT_MARKER。這些令牌向視頻分離器指示后面的DATA令牌包含說明Huffman或量化表的編碼數(shù)據(jù)(使用JPEG中說明的格式)。A.11.4錯(cuò)誤檢測(cè)起始碼檢測(cè)器可以檢測(cè)編碼數(shù)據(jù)中的某些錯(cuò)誤,并提供某些設(shè)施以使解碼器在一個(gè)錯(cuò)誤被檢測(cè)出后恢復(fù)(見A.11.8,“起始碼找尋”)。A.11.4.1非法JPEG長(zhǎng)度計(jì)數(shù)多數(shù)JPEG記號(hào)碼具有一個(gè)與之相聯(lián)系的16位長(zhǎng)度計(jì)數(shù)字段。這個(gè)字段指示有多少數(shù)據(jù)與此記號(hào)碼相關(guān)聯(lián)。0或1的長(zhǎng)度計(jì)數(shù)是非法的。非法長(zhǎng)度只應(yīng)當(dāng)在一數(shù)據(jù)錯(cuò)誤之后發(fā)生,在本發(fā)明中,如果illegal_length_count_mask被設(shè)置為1,這將產(chǎn)生一個(gè)中斷。由于在JPEG數(shù)據(jù)中尋找起始碼的困難性,從JPEG數(shù)據(jù)中的錯(cuò)誤中恢復(fù)有可能還需要其它指明應(yīng)用的數(shù)據(jù)(參見A.11.8.1)。A.11.4.2重疊起始/記號(hào)碼在本發(fā)明中,重疊起始碼應(yīng)當(dāng)只在數(shù)據(jù)錯(cuò)誤后面出現(xiàn)。一個(gè)MPEG、字節(jié)定位的重疊起始碼在圖64中有所說明。在此,起始碼檢測(cè)器首先見到一種看起來類似一圖象起始碼的模式。然后,起始碼檢測(cè)器看到此圖象起始碼被與一組起始重疊。相應(yīng)地,起始碼檢測(cè)器產(chǎn)生一重疊起始事件。進(jìn)而,起始碼檢測(cè)器將產(chǎn)生一個(gè)中斷且停止,如果overlapping_start_mask被設(shè)置為1。區(qū)別兩個(gè)起始碼中哪一個(gè)是正確的而哪一個(gè)是由一數(shù)據(jù)錯(cuò)誤引起是很重要的。然而,相應(yīng)于本發(fā)明的起始碼檢測(cè)器丟棄第一個(gè)起始碼,并將在重疊起始碼事件被服務(wù)后繼續(xù)解碼第二個(gè)起始碼,“就象它是正確的”。如果存在一系列的重疊的起始碼,起始碼檢測(cè)器將丟棄除最后一個(gè)之外所有的(為每次重疊起始碼產(chǎn)生一個(gè)事件)。在非字節(jié)定位系統(tǒng)中類似的錯(cuò)誤也是可能的(H.261或可能MPEG)。在這種情況下,ignore_non_aligned狀態(tài)也必須被考慮。圖65描述了一個(gè)例子,其中,所找到的第一起始碼是字節(jié)定位的,但它與一非定位起始碼重疊。如果ignore_non_aligned被設(shè)置為1,那么第二個(gè)重疊起始碼將被起始碼檢測(cè)器作為數(shù)據(jù)對(duì)待,且因而不會(huì)發(fā)生重疊起始碼事件。這隱藏了一種可能的數(shù)據(jù)通信錯(cuò)誤。如果ignore_non_aligned被設(shè)置為0,起始碼檢測(cè)器將看到第二個(gè)非定位的起始碼并將看到它與第一起始碼相重疊。A.11.4.3不可識(shí)別的起始碼當(dāng)一個(gè)不可識(shí)別的起始碼被檢測(cè)到,起始碼檢測(cè)器可以產(chǎn)生一個(gè)中斷,如果(unrecognized_start_mask=1)。引起這個(gè)中斷的起始碼的值可以從寄存器start_value中被讀。起始碼值0×B4(序列錯(cuò)誤)在MPEG解碼器系統(tǒng)中被用于指示一個(gè)通道或媒體錯(cuò)誤。例如,這個(gè)起始碼可以被一ECC電路插入數(shù)據(jù)中,如果它檢測(cè)出一個(gè)它不能改正的錯(cuò)誤。A.11.4.4事件產(chǎn)生的順序在本發(fā)明中,某些編碼數(shù)據(jù)模型(可能指示一錯(cuò)誤情況)將導(dǎo)致不只一個(gè)上述錯(cuò)誤情況在一短暫時(shí)間空隙內(nèi)出現(xiàn)。因而,起始碼檢測(cè)器對(duì)編碼數(shù)據(jù)檢測(cè)錯(cuò)誤情況的順序是1)非定位的起始碼2)重疊起始碼3)不可識(shí)別的起始碼這樣,如果一個(gè)非定位起始碼與其它后面的起始碼重疊,所產(chǎn)生的第一事件將是與非定位起始碼相聯(lián)系的。當(dāng)這個(gè)事件被服務(wù)之后,起始碼檢測(cè)器的操作將繼續(xù),在短時(shí)間后檢測(cè)重疊起始碼。起始碼檢測(cè)器僅在所有非定位和重疊起始碼的檢測(cè)完成之后才試圖識(shí)別起始碼。A.11.5解碼器起動(dòng)和關(guān)閉起始碼檢測(cè)器提供設(shè)施以使當(dāng)前解碼任務(wù)被干凈地完成以便一個(gè)開始一項(xiàng)新任務(wù)。這些技術(shù)的使用具有一些限制,由于JPEG編碼視頻作為數(shù)據(jù)片斷可以包含模擬記號(hào)碼的值(見A.11.8.1)。A.11.5.1干凈結(jié)束解碼起始碼檢測(cè)器可被配置一旦當(dāng)前圖象的數(shù)據(jù)完成產(chǎn)生一個(gè)中斷,并停止工作。這通過設(shè)置stop_after_picture為1和stop_after_picture_mask為1來達(dá)到。一旦一幅圖象的結(jié)尾通過起始碼檢測(cè)器,一個(gè)FLUSH令牌即被產(chǎn)生(見A.11.7.2),一個(gè)中斷被產(chǎn)生,且起始碼檢測(cè)器停止。注意剛被完成的圖象將被以正常方式解碼。然而,在某些應(yīng)用中,宜于檢測(cè)到達(dá)解碼器芯片集輸出的FLUSH,因?yàn)樗鼘⒅甘井?dāng)前視頻序列的結(jié)束。例如,顯示將凍結(jié)于最后圖象的輸出。當(dāng)起始碼檢測(cè)器停止后,可能會(huì)有來自“老”視頻序列的數(shù)據(jù)“陷”于媒體和解碼芯片之間的用戶實(shí)現(xiàn)的緩沖器內(nèi)。設(shè)置寄存器discard_all_data將使空間解碼器消耗和丟棄這個(gè)數(shù)據(jù)。這將繼續(xù)到一個(gè)FLUSH令牌到達(dá)起始碼檢測(cè)器或discard_all_data通過微處理機(jī)接口被復(fù)位。在從“老”序列丟棄了任何數(shù)據(jù)之后,解碼器現(xiàn)已準(zhǔn)備好針對(duì)一新序列開始工作。A.11.5.2何時(shí)起始全丟棄模式全丟棄模式將在一個(gè)1被寫入discard_all_data寄存器后馬上開始。如果這是在起始碼檢測(cè)器正在活躍地處理數(shù)據(jù)時(shí)進(jìn)行的,那么結(jié)果無法預(yù)測(cè)。全丟棄模式可以在任何一個(gè)起始碼檢測(cè)器事件(非定位起始事件等),產(chǎn)生了一個(gè)中斷被安全地引發(fā)。A.11.5.3起始一新序列如果還不知道一個(gè)新編碼視頻序列的起始位于某編碼數(shù)據(jù)的何處,那么可以使用起始碼找尋的機(jī)制。這種方法丟棄在序列起始之前的任何不需要的數(shù)據(jù)。A.11.5.4序列間跳躍此部分描述了某些上述技術(shù)的應(yīng)用,目的在于從編碼視頻序列的一部分“跳”到另一部分。在本例中,文件編排系統(tǒng)只允許存取數(shù)據(jù)“塊”。這個(gè)塊結(jié)構(gòu)可以從一個(gè)盤的扇區(qū)大小或一個(gè)錯(cuò)誤改正系統(tǒng)塊的大小得來。這樣,進(jìn)入點(diǎn)與出口點(diǎn)在編碼視頻數(shù)據(jù)中的位置可以與文件編排系統(tǒng)塊結(jié)構(gòu)無關(guān)。stop_after_picture和discard_all_data機(jī)構(gòu)允許來自老視頻序列的不需要數(shù)據(jù)被丟棄。在上一文件編排系統(tǒng)數(shù)據(jù)塊的末尾處插入一FLUSH令牌可復(fù)位discard_all_data模式。那么起始碼找尋模式即可被使用,以丟棄下一數(shù)據(jù)塊中處于適當(dāng)進(jìn)入點(diǎn)之前的任何數(shù)據(jù)。A.11.6字節(jié)定位如在本領(lǐng)域中熟為人知的,不同的編碼方案對(duì)于數(shù)據(jù)串中起始/記號(hào)碼的字節(jié)定位有完全不同的看待。例如,H.261把通信看作是位串,這樣,就不存在起始碼字節(jié)定位的概念。通過設(shè)置ignore_non_aligned為0,起始碼檢測(cè)器能夠檢測(cè)具有任意位排列的起始碼。通過設(shè)置non_aligned_start_mask為0。起始碼非定位中斷被抑制。然而,相比之下,JPEG是為一種字節(jié)定位被保證的計(jì)算機(jī)環(huán)境設(shè)計(jì)的。因此,記號(hào)碼應(yīng)當(dāng)只在字節(jié)定位時(shí)被檢測(cè)。當(dāng)編碼標(biāo)準(zhǔn)被配制為JPEG,寄存器ignore_non_aligned被忽略,且非定位起始事件將永不被產(chǎn)生。然而,建議設(shè)置ignore_non_aligned=1和non_aligned_start_mask=0來保證與未來產(chǎn)品的兼容性。另一方面,MPEG是為了同時(shí)滿足通信(位串)和計(jì)算機(jī)(面向字節(jié)的)系統(tǒng)的需要而設(shè)計(jì)的。MPEG數(shù)據(jù)中的起始碼一般應(yīng)按字節(jié)正常排列。然而,標(biāo)準(zhǔn)是為起始碼的位串行找尋而設(shè)計(jì)的(除非它就是起始碼,沒有其它具有任何位定位的MPEG位模型將看起來象一起始碼)。這樣,一個(gè)MPEG解碼器可被設(shè)計(jì)為將容忍在串行數(shù)據(jù)通信中字節(jié)定位的丟失。如果一個(gè)非定位起始碼被找到,通常它將指示一個(gè)以前出現(xiàn)過的通信錯(cuò)誤。如果錯(cuò)誤是一個(gè)在一位串行通信系統(tǒng)中的“位偏移”,那么包含有此錯(cuò)誤的數(shù)據(jù)已被傳送給解碼器。這個(gè)錯(cuò)誤有可能會(huì)引起解碼器中的其它錯(cuò)誤。然而,到達(dá)起始碼檢測(cè)器的新數(shù)據(jù)可以在這個(gè)字節(jié)定位的丟失之后能夠繼續(xù)被解碼。通過設(shè)置ignore_non_aligned=0和non_aligned_start_mark=1,如果一個(gè)非定位起始碼被檢測(cè)出,一個(gè)中斷可以被產(chǎn)生。響應(yīng)將依賴于應(yīng)用。所有后面的起始碼將是非定位的(直到字節(jié)定位被恢復(fù))。相應(yīng)地,在字節(jié)定位已被丟失之后設(shè)置non_aligned_start-mask=0也許是恰當(dāng)?shù)摹1鞟.11.5字節(jié)定位的配置A.11.7自動(dòng)產(chǎn)生令牌在本發(fā)明中,大多數(shù)由起始碼檢測(cè)器輸出的令牌直接反映了多種圖象和視頻編碼標(biāo)準(zhǔn)的語法元素(syntacticelements)。除這些“天然”令牌之外,某些有用的“發(fā)明”令牌被產(chǎn)生。例如這些專有的令牌是PICTURE_END和CODING_STANDARD。令牌也被引入以消除編碼標(biāo)準(zhǔn)之間的某些語法差別,并在出錯(cuò)誤的情況下去“收拾”局面。這個(gè)自動(dòng)令牌產(chǎn)生是在編碼數(shù)據(jù)的序列分析之后被完成的(見圖61,“起始碼檢測(cè)器”)。因此,對(duì)于通過起始碼檢測(cè)器直接提供給空間解碼器輸入端的令牌和已經(jīng)被起始碼檢測(cè)器在編碼數(shù)據(jù)中檢測(cè)出起始碼所產(chǎn)生的令牌,系統(tǒng)的反映是相同的。A.11.7.1指示一圖象的結(jié)束通常,編碼標(biāo)準(zhǔn)不明確地標(biāo)志出一圖象的結(jié)束。然而,本發(fā)明中的起始碼檢測(cè)器在檢測(cè)到指示當(dāng)前圖象已被結(jié)束時(shí)產(chǎn)生一個(gè)PICTURE_END令牌。使PICTURE_END被產(chǎn)生的令牌是SEQUENCE_START,GROUP_START,PICTURE_START,SEQUENCE_END和FLUSH。A.11.7.2圖象結(jié)束選擇后的停止如果寄存器stop_after_picture置位,那么起始碼檢測(cè)器將在一PICTURE_END令牌通過后停止。然后,一個(gè)FLUSH令牌被插入到PICTURE_END之后以“推動(dòng)”編碼數(shù)據(jù)的末端通過解碼器和使系統(tǒng)復(fù)位。(見A.11.5.1)。A.11.7.3為H.261插入序列起始H.261不具備一個(gè)相當(dāng)于序列起始的語法元素(見表A.11.4)。如果寄存器insert_sequence_start被設(shè)置,那么起始碼檢測(cè)器將保證在下一PICTURE_START之前有一SEQUENCE_START令牌,也就是說,如果起始碼檢測(cè)器沒有在一個(gè)PICTURE_START之前看到一個(gè)SEQUENCE_START,將會(huì)插入一個(gè)。如果已經(jīng)有一個(gè)SEQUENCE_START存在,將不會(huì)再引入。這一功能對(duì)MPEG和JPEG不應(yīng)使用。A.11.7.4為每一序列設(shè)置編碼標(biāo)準(zhǔn)所有離開起始碼檢測(cè)器的SEQUENCE_START令牌之前總有一個(gè)CODING_STAndARD令牌。這個(gè)令牌被裝載有起始碼檢測(cè)器的當(dāng)前編碼標(biāo)準(zhǔn)。它為每一新視頻序列對(duì)整個(gè)解碼器芯片集設(shè)置了編碼標(biāo)準(zhǔn)。A.11.8起始碼找尋根據(jù)本發(fā)明的起始碼檢測(cè)器可以被用于在一編碼數(shù)據(jù)流中找尋一特定類型的起始碼。這使得解碼器在某些編碼數(shù)據(jù)的體系中從一指定級(jí)別重新開始解碼(在丟棄它前面的任何數(shù)據(jù)之后)。它的應(yīng)用包括·在跳入一編碼數(shù)據(jù)文件后在一未知位置起動(dòng)一解碼器(例如,隨機(jī)存取)?!ぴ跀?shù)據(jù)中找尋一已知點(diǎn)以幫助一處數(shù)據(jù)錯(cuò)誤后的復(fù)原。例如,表A.11.6顯示為start_code_search的不同配置而找尋的MPEG起始碼。等效的H.261和JPEG起始/記號(hào)碼可以在表A.11.4中看見。表A.11.6起始碼找尋模式a.在此找尋模式中,F(xiàn)LUSH令牌位于起始碼檢測(cè)器。b.這是復(fù)位后的缺省模式。當(dāng)一非零值被寫入start_code_search寄存器,起始碼檢測(cè)器將開始丟棄所有的到達(dá)數(shù)據(jù),直到指定的起始碼被找到。然后start_code_search寄存器將復(fù)位為0且正常運(yùn)行將繼續(xù)。起始碼找尋將在一個(gè)非零值被寫入start_code_search寄存器之后馬上開始。如果這是在起始碼檢測(cè)器正在活躍處理數(shù)據(jù)時(shí)完成,則其結(jié)果將無法預(yù)測(cè)。因此,在引發(fā)一起始碼找尋之前,起始碼檢測(cè)器應(yīng)當(dāng)被停止,此時(shí)沒有數(shù)據(jù)在被處理。如果任何的起始碼檢測(cè)器事件(非定位起始事件等)剛產(chǎn)生了一個(gè)中斷,起始碼檢測(cè)器將總處于這種狀態(tài)。A.11.8.1對(duì)JPEG使用起始碼找尋的限制大多數(shù)JPEG記號(hào)碼具有一個(gè)與之相聯(lián)系的16位長(zhǎng)度計(jì)數(shù)字段。這個(gè)字段指示與記號(hào)碼相聯(lián)系的一個(gè)數(shù)據(jù)分段的長(zhǎng)度。這個(gè)分段可以包含仿效記號(hào)碼的值。在正常運(yùn)行中,起始碼檢測(cè)器不在這些數(shù)據(jù)分段中尋找起始碼。在對(duì)這樣一個(gè)分段中的某些JPEG編碼數(shù)據(jù)“領(lǐng)地(1ands)”的隨機(jī)存取中,起始碼找尋的機(jī)制不能被可靠使用。通常,JPEG編碼的視頻將需要附加的外部信息來為隨機(jī)存取識(shí)別進(jìn)入點(diǎn)。A.12解碼器起動(dòng)控制A.12.1解碼器起動(dòng)的概述在一解碼器中,視頻顯示通常在編碼數(shù)據(jù)首次獲得之后被延遲一小段時(shí)間。在這個(gè)延遲當(dāng)中,編碼數(shù)據(jù)在解碼器內(nèi)的緩沖器中累積。這一緩沖器的預(yù)填充保證了在解碼中緩沖器從不會(huì)空,且這從而保證了解碼器能在標(biāo)準(zhǔn)間隔內(nèi)能夠解碼新的圖象。通常,正確起始一解碼器需要兩種手法。第一,必須有一種手段來測(cè)量已有多少數(shù)據(jù)被提供給解碼器。第二,必須有一種手法來防止一新視頻串的顯示。本發(fā)明中的空間解碼器在其輸入端附近提供了一個(gè)位計(jì)數(shù)器,以測(cè)量有多少數(shù)據(jù)已到達(dá),在其輸出端附近提供了一個(gè)輸出門以防止正在被輸出的新視頻串的起始。這些手法的控制有三種復(fù)雜級(jí)別·輸出門總打開·基本控制·高級(jí)控制若輸出門總是開的,圖象輸出將在編碼數(shù)據(jù)開始到達(dá)解碼器之后盡快開始。這對(duì)于靜止圖象的解碼或顯示正被某種其它手法延遲的情況是適宜的?;竞透呒?jí)控制之間的差別取決于任何時(shí)刻解碼器緩沖器可以容納多少短視頻串。在大多數(shù)應(yīng)用中基本控制已經(jīng)足夠。然而,高級(jí)控制使用戶軟件能幫助解碼器管理幾個(gè)很短的視頻串的起動(dòng)。A.12.2MPEG視頻緩沖器檢驗(yàn)器MPEG描述了一種為恒數(shù)據(jù)率系統(tǒng)使用的“視頻緩沖器檢驗(yàn)器”(VBV)。使用(VBV)信息使解碼器在其開始顯示圖象之前預(yù)填充其緩沖器。再則,這種預(yù)填充保證了解碼器的緩沖器在解碼期間總不會(huì)空??偟卣f來,每一MPEG圖象攜帶一個(gè)vbv_delay參數(shù)。這個(gè)參數(shù)指定了在第一幅圖象被解碼之前,一“理想解碼器加”的編碼緩沖器的多長(zhǎng)應(yīng)被編碼數(shù)據(jù)填充。在觀察到第一幅圖象的起動(dòng)延遲后,所有后面圖象的要求都將自動(dòng)被滿足。因而,MPEG將起動(dòng)要求規(guī)定為延遲。然而,在一恒定比特率系統(tǒng)中,一延遲將被很容易地轉(zhuǎn)換成位計(jì)數(shù)。這就是本發(fā)明中空間解碼器的起動(dòng)控制得以運(yùn)行的基礎(chǔ)。A.12.3流的定義在此應(yīng)用中,術(shù)語“流(stream)”被使用以避免與MPEG術(shù)語“序列(sequence)”混淆,因此,流代表一個(gè)應(yīng)用所“感興趣”的大量視頻數(shù)據(jù)。因而,一個(gè)流可以是許多MPEG序列,或者可以是一單一圖象。本章中所描述的解碼器起動(dòng)設(shè)施與滿足一個(gè)流中第一幅圖象的VBV要求有關(guān),該流中后面圖象的要求被自動(dòng)滿足。A.12.4起始控制寄存器表A.12.1解碼器起動(dòng)寄存器表A.12.1解碼器起動(dòng)寄存器(續(xù))表A.12.1解碼器起動(dòng)寄存器(續(xù))A.12.5常開啟的輸出門輸出門可被設(shè)置為保持開啟。在靜止圖象被解碼或在可獲得某些其它機(jī)制來管理視頻解碼器的起動(dòng)時(shí),這種配置是適宜的。復(fù)位之后需要下面的配置(已經(jīng)通過向startup_access)寫入1獲得了對(duì)起動(dòng)控制邏輯的訪問)·設(shè)置offchip_queue=1·設(shè)置enable_stream=1·保證所有的解碼器起動(dòng)事件屏蔽寄存器被設(shè)置為0使它們不能中斷(這是復(fù)位后的缺省狀態(tài))。(見A.12.7.1對(duì)為何這樣可保持輸出門開啟的解釋)。A.12.6基本操作在本發(fā)明中,起動(dòng)邏輯的基本控制對(duì)于大多數(shù)MPEG視頻應(yīng)用已經(jīng)足夠了。在此方式中,位計(jì)數(shù)器直接與輸出門通信。當(dāng)一視頻流的結(jié)尾通過并由一個(gè)FLUSH令牌所指示時(shí),輸出門將自動(dòng)關(guān)閉。門將保持關(guān)閉,直到當(dāng)一個(gè)流已達(dá)到其起動(dòng)位計(jì)數(shù)時(shí),一個(gè)允許信號(hào)由位計(jì)數(shù)器提供。在復(fù)位后需要如下配置(已經(jīng)通過向startup_access寫入1獲得了對(duì)起始控制邏輯的訪問)·為編碼數(shù)據(jù)率的預(yù)期范圍大致設(shè)置bit_count_prescale?!ぴO(shè)置counter_flushed_too_early_mask=1來使此錯(cuò)誤狀態(tài)能被檢測(cè)出。需要兩種中斷服務(wù)例行程序·視頻分配器服務(wù)以為每一新流中的第一幅圖象獲得vbv延遲的值?!び?jì)數(shù)器過早清除(flush)服務(wù)以響應(yīng)這種狀態(tài)。視頻分配器(也被稱為視頻解析器)可以在其為一新視頻流(也就是在FLUSH之后第一幅到達(dá)視頻分配器的圖象)解碼vbv_delay時(shí)產(chǎn)生一個(gè)中斷。中斷服務(wù)例程應(yīng)當(dāng)為bit_count_target計(jì)算一適當(dāng)值并寫它。當(dāng)位計(jì)數(shù)器達(dá)到這一目標(biāo)時(shí),它將在位計(jì)數(shù)器和輸出門之間的一個(gè)短隊(duì)中插入一個(gè)使能。當(dāng)輸出門打開時(shí),它從這個(gè)隊(duì)中移走一個(gè)使能。A.12.6.1在另一流結(jié)束后馬上開始一個(gè)新流舉例說,將要結(jié)束的MPEG流被稱為A而將要開始的MPEG流被稱為B。在A的結(jié)尾之后一個(gè)FLUSH令牌應(yīng)當(dāng)被插入。它推動(dòng)其編碼數(shù)據(jù)的最后一個(gè)通過解碼器,并通告解碼器的多個(gè)部分期待一新流。通常,在A已經(jīng)滿足其起動(dòng)條件時(shí),位計(jì)數(shù)器將已復(fù)位為零。在FLUSH之后,位計(jì)數(shù)器將開始計(jì)數(shù)流B中的位。當(dāng)視頻分配器已經(jīng)解碼了來自流B中第一幅圖象的vbv_delay后,一個(gè)中斷將被產(chǎn)生,以使得位計(jì)數(shù)器被配置。當(dāng)標(biāo)志了流A的結(jié)尾的FLUSH通過輸出門時(shí),門將關(guān)閉。門將一直關(guān)閉直到B符合其起動(dòng)條件。根據(jù)很多參數(shù),諸如流B的起動(dòng)延遲和緩沖器深度,有可能在輸出門關(guān)閉時(shí)B將已經(jīng)滿足了其起動(dòng)條件。在此情況下,在隊(duì)中將有一個(gè)使能在等待,且輸出門將立即打開。否則,流B將必須等待直到它滿足了其起動(dòng)條件。A.12.6.2若干短流的連續(xù)位于位計(jì)數(shù)器和輸出門之間的隊(duì)的容量足以使3個(gè)分別的視頻流達(dá)到它們的起動(dòng)條件并等待著一個(gè)前面的流結(jié)束被解碼。在本發(fā)明中,只有當(dāng)一些很短的流在被解碼或者芯片外緩沖器與正在被解碼的圖象格式相比是很大的時(shí)才會(huì)發(fā)生這種情況。在圖69中,流A正在被解碼且輸出門開啟。流B和C已經(jīng)滿足了它們的起動(dòng)條件并且被整個(gè)包含于由空間解碼器管理的緩沖器中。流D仍正在到達(dá)空間解碼器的輸入端。流B和C的使能在隊(duì)中。因此,當(dāng)流A被完成后B將能夠立即開始。類似地,C以緊跟在B后。如果當(dāng)D滿足其起動(dòng)目標(biāo)時(shí)A仍在通過輸出門,一個(gè)使能將被加到隊(duì)列中以填充隊(duì)列。如果當(dāng)D的尾端通過位計(jì)數(shù)器時(shí)(也就是,A仍然在通過輸出門)還沒有使能被從隊(duì)列中移走,將沒有新的流開始通過位計(jì)數(shù)器。因此,編碼數(shù)據(jù)將在輸入端停留直到A結(jié)束且當(dāng)輸出門被打開以使B通過時(shí)一個(gè)使能被從隊(duì)列移走。A.12.7高級(jí)操作相應(yīng)于本發(fā)明,起動(dòng)邏輯的高級(jí)控制可以使用戶軟件能無限擴(kuò)展A.12.6“基本操作”中所描述的使能隊(duì)列的長(zhǎng)度。這一級(jí)別的控制只在視頻解碼器必須容納一系列比A.12.6.2“若干短流的連續(xù)”中描述的流更長(zhǎng)的短視頻流時(shí)才需要。除了系統(tǒng)基本操作所需的配置,下面的配置在復(fù)位后被需要(已經(jīng)通過向start_up存取寫入1而獲得了對(duì)起始控制邏輯的訪問·設(shè)置offchip_queue=1·設(shè)置acoept_enable_mask=1,以在一個(gè)使能已被隊(duì)列移走時(shí)允許發(fā)出中斷。·設(shè)置target_met_mask=1,以在一個(gè)流的位計(jì)數(shù)目標(biāo)被滿足時(shí)允許發(fā)出中斷。還需要兩個(gè)附加的中斷服務(wù)例程·接受使能中斷·目標(biāo)滿足中斷當(dāng)一個(gè)目標(biāo)滿足中斷出現(xiàn)時(shí),服務(wù)例程應(yīng)向其芯片外使能隊(duì)列增加一個(gè)使能。A.12.7.1輸出門邏輯行為向enable_stream寄存器寫入一個(gè)1即向向一短隊(duì)列裝入了一個(gè)使能。當(dāng)一個(gè)FLUSH(標(biāo)志著流的末端)通過輸出門,門將關(guān)閉。如果在隊(duì)列的末端可獲得一個(gè)使能,門將打開并產(chǎn)生一個(gè)accept_enable_event。如果accept_enable_mask被設(shè)置為1,一個(gè)中斷可以被產(chǎn)生且一個(gè)使能被從隊(duì)列的末端移去(寄存器enable_stream被得位)。然而,如果accept_enable_mask被設(shè)置為零,沒有中斷在accept_enable_event之后被產(chǎn)生,且使能不被從隊(duì)列的末端移走。這種技巧可以用于如A.12.5中描述的那樣保持輸出門的開啟。A.12.8位計(jì)數(shù)當(dāng)一個(gè)FLUSH令牌通過位計(jì)數(shù)器后,它開始計(jì)數(shù)。這個(gè)FLUSH令牌指示當(dāng)前視頻流的末端。在這一點(diǎn)上,位計(jì)數(shù)器繼續(xù)計(jì)數(shù)直到它滿足設(shè)置于bit_count_target寄存器內(nèi)的位計(jì)數(shù)目標(biāo)。然后一個(gè)目標(biāo)滿足事件被產(chǎn)生,位計(jì)數(shù)器復(fù)位為。并等待下一個(gè)FLUSH令牌。位計(jì)數(shù)器還將在它達(dá)到其最大計(jì)數(shù)(255)時(shí)停止增加。A.12.9位計(jì)數(shù)預(yù)先標(biāo)度(prescale)在本發(fā)明中,2(bit_count_prescale+1)×512位被需要用以增加一次位計(jì)數(shù)器。此外,bit_count_prescale是一個(gè)可以取0至7之間值的3位寄存器。表A.12.2位計(jì)數(shù)器范圍示例位計(jì)數(shù)是大致的,因?yàn)橐曨l流的某些元素已經(jīng)被令牌化(如起始碼),因此包括非數(shù)據(jù)令牌。A.12.10過早被清除的(flushed)計(jì)數(shù)器如果一個(gè)FLUSH令牌在達(dá)到位計(jì)數(shù)目標(biāo)之前到達(dá)位計(jì)數(shù)器,一個(gè)可以導(dǎo)致一中斷的事件被產(chǎn)生(如果counter_flushed_too_early_mask=1)。如果中斷被產(chǎn)生,那么位計(jì)數(shù)器電路將停止,以防止進(jìn)一步的數(shù)據(jù)輸入。將由用戶軟件負(fù)責(zé)判斷在這一事件出現(xiàn)后何時(shí)開啟輸出門。輸出門可以通過將位計(jì)數(shù)目標(biāo)寫為。而被開啟。只有當(dāng)試圖解碼只持續(xù)幾幅圖象的視頻流時(shí)才應(yīng)當(dāng)出現(xiàn)這些情況。A.13緩沖器管理空間解碼器管理兩個(gè)邏輯數(shù)據(jù)緩沖器編碼數(shù)據(jù)緩沖器(CDB)和令牌緩沖器(TB)。CDB對(duì)起始碼檢測(cè)器和Huffman解碼器的輸入之間的編碼數(shù)據(jù)進(jìn)行緩沖。這樣就為低數(shù)據(jù)率的編碼視頻數(shù)據(jù)提供了緩沖。TB緩沖Huffman解碼器的輸出和空間視頻解碼電路(逆向模式化器,量化器和DCT)的輸入之間的數(shù)據(jù)。這第二個(gè)邏輯緩沖器使處理時(shí)間包括一個(gè)擴(kuò)展,以適應(yīng)處理具有變化數(shù)據(jù)量的圖象。這兩種緩沖器物理上都包含于芯片外一個(gè)單一DRAM陣列中。這些緩沖器的地址由緩沖器管理器產(chǎn)生。A.13.1緩沖器管理器的寄存器空間解碼器緩沖管理器打算在設(shè)備復(fù)位后立即被配置。在正常操作中,不需要配置緩沖器管理器。在復(fù)位從空間解碼器去除后,緩沖器管理器被停止(同時(shí)其存取寄存器buffer_manager_access被設(shè)置為1)等待配置。當(dāng)寄存器被置好之后,buffer_manager_access可被設(shè)置為0且解碼可開始。當(dāng)緩沖器管理器在運(yùn)行時(shí),緩沖器管理器中使用的大多數(shù)寄存器不能被可靠地訪問。在任何緩沖器管理器的寄存器被存取之前,buffer_manager_access必須被設(shè)置為1。這使得遵守等待協(xié)議很重要,直到可以從buffer_manager_access讀出值1。獲得和脫離訪問所花的時(shí)間,在詢問這些寄存器,象cdb_full和cdb_empty,以監(jiān)視緩沖器狀況時(shí)應(yīng)當(dāng)被考慮。表A.13.1緩沖管理器寄存器(續(xù))表A.13.1緩沖管理器寄存器(續(xù))A.13.1.1緩沖器管理器指針值典型地說,數(shù)據(jù)以64字節(jié)突發(fā)方式(使用DRAM的快頁面方式)在空間解碼器和芯片外DRAM之間被傳送。所有的緩沖器指針和長(zhǎng)度寄存器都涉及這些64字節(jié)(512位)的數(shù)據(jù)塊。因此,緩沖器管理器的18位寄存器描述一256K塊的線性地址空間(也就是128Mb)。64字節(jié)傳送與DRAM接口寬度(8、16或32位)無關(guān)。A.13.2緩沖器管理器的寄存器的使用空間解碼器的緩沖管理器有兩套定義兩種類似緩沖器的寄存器。緩沖限制寄存器(buffer_limit)定義存貯空間的物理上限。所有的地址以此數(shù)為模而被計(jì)算。在可獲得的存貯器的限制之內(nèi),每個(gè)緩沖器的范圍由兩個(gè)寄存器定義緩沖器基地址(cdb_base和tb_base)和緩沖器長(zhǎng)度(cdb_length和th_length)。至此所描述的所有寄存器必須在緩沖器可被使用之前被配置。每一緩沖器的當(dāng)前狀態(tài)都可在4個(gè)寄存器內(nèi)被觀察到。緩沖器讀寄存器(cdb_read和tb_read)指示相對(duì)于緩沖器基地址的一個(gè)偏移量,這個(gè)編移地址下一個(gè)數(shù)據(jù)將被讀出。緩沖器數(shù)量寄存器(cdb_number和tb_number)指示當(dāng)前由緩沖器保留的數(shù)據(jù)量。狀態(tài)位cdb_full,tb_full,cdb_etmpty和tb_empty指示緩沖器是空或是滿。如A.13.1.1中所述,所有上面提到的寄存器的單元是一個(gè)512位數(shù)據(jù)塊。相應(yīng)地,從cdb_number讀出的值應(yīng)當(dāng)被512乘,以獲得編碼數(shù)據(jù)緩沖器中的位數(shù)。A.13.3零緩沖器不具有“實(shí)時(shí)”要求的靜止圖象應(yīng)用(例如使用JPEG)將不需要由緩沖器管理器支持的大的芯片外緩沖器。在這種情況下,DRAM接口能夠被配置(通過向zero_buffers寄存器寫入)以忽略緩沖器管理器,從而為編碼數(shù)據(jù)緩沖器和令牌緩沖器提供一128位流片內(nèi)FIFO(先進(jìn)先出)。零緩沖器選擇也可以適合于以低數(shù)據(jù)率和小圖象格式操作的應(yīng)用。注意zero_buffers寄存器是DRAM接口的一部分,因此應(yīng)當(dāng)僅在DRAM接口的復(fù)位后配置期間被設(shè)置。A.13.4緩沖器操作通過緩沖器進(jìn)行的數(shù)據(jù)傳送由一握手協(xié)議控制。因此保證了如果緩沖器充滿或全空也不會(huì)有數(shù)據(jù)錯(cuò)誤產(chǎn)生。如果一個(gè)緩沖器被充滿,那么試圖向緩沖器送數(shù)據(jù)的電路將被停止,直到緩沖器中有了空間。如果緩沖器持續(xù)為滿,緩沖器“上游”(“upstream”)的更多處理階段將停止直到空間解碼器不能夠在其輸入端口接收數(shù)據(jù)。類似地,如果一個(gè)緩沖器全空,那么試圖從緩沖器移走數(shù)據(jù)的電路將停止,直到數(shù)據(jù)可以獲得。如A.13.2中所述,編碼數(shù)據(jù)和令牌緩沖器的位置和大小由緩沖器基地址和長(zhǎng)度寄存器指定。用戶有責(zé)任配置這些寄存器并保證兩個(gè)緩沖器間的存貯使用中沒有沖突。A.14視頻多路分配器(Demux)視頻分配器,或者被稱作視頻分析器(parser),完成由起始碼檢測(cè)器起始的將編碼數(shù)據(jù)轉(zhuǎn)換成令牌的任務(wù)。在視頻分配器中有四個(gè)主要處理塊分析器狀態(tài)機(jī),Huffman解碼器(包括一ITOD),宏塊計(jì)數(shù)器和ALU。分析器或狀態(tài)機(jī)遵守編碼視頻數(shù)據(jù)的語法并指令其它單元。Huffman解碼器將多種長(zhǎng)度編碼(VLC)數(shù)據(jù)轉(zhuǎn)換成整數(shù)。宏塊計(jì)數(shù)器追蹤圖象的哪一部分正在被解碼。ALU完成需要的數(shù)學(xué)計(jì)算。A.14.1視頻分配器寄存器表A.14.1頂層視頻分配器寄存器表A.14.1頂層視頻分配器寄存器(續(xù))表A.14.1頂層視頻分配器寄存器(續(xù))表A.14.2視頻分配器圖象結(jié)構(gòu)寄存器表A.14.2視頻分配器圖象結(jié)構(gòu)寄存器(續(xù))A.14.1寄存器裝載和令牌產(chǎn)生視頻分配器中的很多寄存器具有與編碼圖象/視頻數(shù)據(jù)中通常通信的參數(shù)直接相關(guān)的值。例如,horiz_pels寄存器相應(yīng)于MPEG序列頭信息,horizontal_size和JPEG幀頭參數(shù)x。當(dāng)適當(dāng)?shù)木幋a數(shù)據(jù)被解碼時(shí)這些寄存器被視頻解碼器裝載。這些寄存器也與某個(gè)令牌有關(guān)。例如,寄存器horiz_pels與令牌HORIZONTAL_SIZE相關(guān)。當(dāng)編碼數(shù)據(jù)被解碼時(shí)(或在此之后不久)令牌被視頻解碼器產(chǎn)生。令牌也可被直接提供給空間解碼器的輸入。在這種情況下,由令牌攜帶的值將配置與之相關(guān)的視頻解碼器寄存器。表A.14.3視頻多路分配器Huffman表寄存器表A.14.3視頻多路分配器Huffman表寄存器(續(xù))表A.14.3其他視頻分配器寄存器表A.14.4其他視頻分配器表寄存器(續(xù))表A.14.1頂層視頻分配器寄存器(續(xù))表A.14.5寄存器對(duì)令牌的交叉訪問表A.14.5寄存器對(duì)令牌的交叉訪問(續(xù))表A.14.5寄存器對(duì)令牌的交叉訪問(續(xù))表A.14.5寄存器對(duì)令牌的交叉訪問(續(xù))表A.14.5寄存器對(duì)令牌的交叉訪問(續(xù))A.14.2圖象結(jié)構(gòu)在本發(fā)明中,圖象維數(shù)被以兩種不同單元向空間解碼器說明象素和宏塊。JPEG和MPEG都使用象素進(jìn)行圖象維數(shù)的通信。以象素進(jìn)行的維數(shù)通信確定包含有合法數(shù)據(jù)的緩沖器面積;這可能比緩沖器總體尺寸要小。以宏塊進(jìn)行的維數(shù)通信確定解碼器所需的緩沖器大小。宏塊維數(shù)必須由用戶從象素維數(shù)得來。與這一信息相關(guān)的空間解碼器寄存器為horiz_pels,vert_pels,horiz_macroblocks和vert_macrobloks??臻g解碼器寄存器blocks_h_n,blocks_v_n,max_h,max_v和max_component_id指示宏塊的構(gòu)成(JPEG中最小的編碼單元)。每一個(gè)是一個(gè)2位寄存器,可以保存0到3范圍內(nèi)的值。除max_component_id以外所有的均指示一個(gè)1到4的塊計(jì)數(shù)。例如,如果寄存器max_h取1,那么一個(gè)宏塊為2個(gè)塊寬。類似地,max_component_id指示所涉及的不同顏色成分的數(shù)目。表A.14.6各種宏塊格式的配置A.14.3Huffman表A.14.3.1JPEG類型的Huffman表說明本發(fā)明中,Huffman表說明被通過JPEG使用的格式提供給空間解碼器以連通在編碼器和解碼器之間的表說明。每一表說明有兩個(gè)元素BITS和HUFFVAL。對(duì)于一個(gè)如何編碼表的全面描述,用戶可以參閱JPEG說明書。A.14.3.1.1BITSBITS是一張數(shù)值表,說明對(duì)VLC的每一長(zhǎng)度有多少不同符號(hào)被編碼。每一入口是一8位值。JPEG允許VCL有16位長(zhǎng),故每張表內(nèi)有16個(gè)入口。BIT說明存在多少不同的1位VLC,而BIT[1]說明存在多少不同的2位VLC,以此類推。A.14.1.2HUFFVALHUFFVAL是一張8位數(shù)據(jù)取值表,按VLC長(zhǎng)度遞增的順序排列。這個(gè)表的大小將依據(jù)可被VLC編碼的不同符號(hào)數(shù)目而定。JPEG說明書對(duì)于Huffman編碼表能被如何編碼或解碼為這種格式做了進(jìn)一步詳細(xì)說明。A.14.3.1.3令牌的配置在一JPEG位流中,DHT記號(hào)位于用于編碼AC和DC系數(shù)的Huffman表說明之前。當(dāng)起始碼檢測(cè)器識(shí)別出一個(gè)DHT記號(hào)時(shí),它產(chǎn)生一個(gè)DHT_MARKER令牌并將Huffman表說明放入下一個(gè)DATA令牌中(見A.11.3.4)。AC和DC系數(shù)Huffman表在空間解碼器中的配置可以在空間解碼器被為JPEG操作配置時(shí)通過向空間解碼器的輸入端提供DATA和DHT_MARKER令牌而被實(shí)現(xiàn)。這一手法可被用于MPEG操作所需的DC系數(shù)Huffman表,然而空間解碼器的編碼標(biāo)準(zhǔn)必須在當(dāng)表被向下裝載(downloaded)時(shí)被設(shè)置為JPEG。表A.14.7經(jīng)過令牌對(duì)Huffman表配置表A.14.7經(jīng)過令牌對(duì)Huffman表配置(續(xù))A.14.3.1.4MPI進(jìn)行配置AC和DC系數(shù)Huffman表也可被通過MPI直接寫給寄存器。見表A.14.3?!ぜ拇嫫鱠c_bits_0[15∶0]和dc_bits_l[15∶0]保存表0×00和0×01的BITS值?!ぜ拇嫫鱝c_bits_0[15∶0]和ac_bits_1[15∶0]保存表0×10和0×11的BITS值?!ぜ拇嫫鱠c_huffval_0[11∶0]和dc_huffvla[11∶0]保存表0×00和0×01的HUFFVAL值?!ぜ拇嫫鱝c_huffval_0[161∶0]和ac_huffval_1[161∶0]保存表0x10和0×11r的HUFFVAL值。A.144不同標(biāo)準(zhǔn)的配置視頻分配器支持MPEG,JPEG和H.261的需要。編碼標(biāo)準(zhǔn)被起始碼檢測(cè)器產(chǎn)生的CODING_STANDRAD令牌自動(dòng)配置。A.14.4.1H.261Huffman表解碼H.261所需的所有Huffman表被保存在空間解碼器內(nèi)的ROM中,更確切地說,是在視頻分配器的分析器(Parser)狀態(tài)機(jī)器中,因此不需要用戶的干涉。A.14.4.2H.261圖象結(jié)構(gòu)H.261被定義為只支持兩種圖象格式CIF和QCIF。被使用中的圖象格式在位流的PTYPE部分用信號(hào)說明。當(dāng)這個(gè)數(shù)據(jù)被空間解碼器解碼,它被置于h_261_pic_type寄存器和PICTURE_TYPE令牌中。此外,所有的圖象和宏塊結(jié)構(gòu)寄存器被自動(dòng)配置。在各種寄存器內(nèi)的信息也被放在它們的相關(guān)令牌中(見表A.14.5),而且這樣保證了其它解碼器芯片(如時(shí)間解碼器)被正確配置。A.14.4.3MPEGHuffman表解碼MPEG所需的大部分Huffman編碼表被保存在空間解碼器中的ROM中(又是在分析器狀態(tài)機(jī)器中),因此不需用戶的干涉。解碼內(nèi)部宏塊的DC系數(shù)所需的表是個(gè)例外。兩個(gè)表被需要,一個(gè)為了色度,另一個(gè)為亮度。這些必須在解碼開始之前由用戶軟件配置。表A.14.8對(duì)H.261的自動(dòng)設(shè)定表A.14.10顯示了配置空間解碼器內(nèi)的DC系數(shù)Huffman表所需的令牌序列。作為選擇,相同的結(jié)果也可通過將此信息經(jīng)MPI寫給寄存器而獲得。寄存器dc_huff_n控制對(duì)每一顏色成分使用哪一DC系數(shù)Huffman表。表A.14.9顯示了它們應(yīng)當(dāng)如何為MPEG操作而配置。這可以通過MPI直接完成或通過使用MPEG_DCH_TABLE令牌完成。表A.14.9由MPI對(duì)MPEGDCHuffman表選擇表A.14.10MPEGDCHuffman表配置表14.10MPEGDCHuffman表配置(續(xù))表14.10MPEGDCHuffman表配置(續(xù))表14.10MPEGDCHuffman表配置(續(xù))表14.10MPEGDCHuffman表配置(續(xù))表14.10MPEGDCHuffman表配置(續(xù))A.14.4.4MPEG圖象結(jié)構(gòu)為MPEG定義的宏塊結(jié)構(gòu)與H.261所使用的相同。圖象的維數(shù)被編碼于編碼數(shù)據(jù)內(nèi)。對(duì)標(biāo)準(zhǔn)4∶2∶0操作,宏塊特性應(yīng)當(dāng)如表A.14.8中指示的那樣被配置。這可以通過如指示地那樣寫寄存器或?qū)⑾嗤牧钆?見表A.14.5)提供給空間解碼器的輸入端而完成。配置圖象維數(shù)的方法令牌將依應(yīng)用而定。如果圖象格式在解碼開始之前已經(jīng)知道,那么列于表A.14.8中的圖象結(jié)構(gòu)寄存器可以被適當(dāng)?shù)闹党跏蓟W鳛檫x擇,圖象維數(shù)可以從編碼數(shù)據(jù)中被解碼并配置空間解碼器。在此情況下,用戶必須修理分析器錯(cuò)誤ERR_MPEG_SEQUENCE,見A.14.8“在MPEG序列層的變化”。A.14.4.5JPEG在基線JPEG中,有大量的編碼選擇,它們顯著改變操作解碼器所需的控制軟件的復(fù)雜程度。通常,空間解碼器被設(shè)計(jì)為在下列條件被滿足時(shí)所需的支持最小·每一幀的顏色成分?jǐn)?shù)目小于5(Nf≤4)A.14.4.6JPEGHuffman表進(jìn)一步,JPEG允許Huffman編碼表被向下裝載給解碼器。當(dāng)解碼說明系數(shù)的VLC時(shí)這些表被使用。每一掃描允許兩個(gè)表解碼DC系數(shù),2個(gè)表解碼AC系數(shù)。JPEG文件有三種不同類型互換格式,為壓縮圖象數(shù)據(jù)的縮略格式和為表數(shù)據(jù)的縮略格式。在一互換格式文件中既有壓縮圖象數(shù)據(jù)也有解碼圖象數(shù)據(jù)所需的所有表(Huffman、量化等)的定義,縮略圖象數(shù)據(jù)格式文件省略了表的定義??s略表格式文件只包含表的定義??臻g解碼器將接受所有的三種格式。然而,縮略圖象數(shù)據(jù)文件只在所有所需的表都已被定義的情況下才能被解碼。這個(gè)定義可以通過另兩種JPEG文件類型的任一種而被完成,或者,表可以被用戶軟件設(shè)置。如果每次掃描使用一套不同的Huffman表,那么表的定義在每次掃描之前被放入(由編碼器)編碼數(shù)據(jù)中。這些被空間解碼器自動(dòng)裝載以在這一個(gè)或任何后續(xù)掃描中被使用。為提高Huffman解碼的性能,某些經(jīng)常使用的符號(hào)被特別裝入。它們是數(shù)值為0的DC系數(shù),塊AC系數(shù)的結(jié)尾和16個(gè)零AC系數(shù)的管理。這些特殊場(chǎng)合的值應(yīng)被寫入適當(dāng)?shù)募拇嫫鳌.14.4.6.1表的選擇寄存器dc_buff_n和ac_huff_n控制著對(duì)何種顏色成分使用哪個(gè)AC或DC系數(shù)Huffman表。在JPEG操作中,這些關(guān)系由掃描頭標(biāo)語法的TDj和Taj字段定義。A.14.4.7JPEG圖象結(jié)構(gòu)存在著兩種顯著的由空間解碼器支持的基線JPEG解碼級(jí)別每幀小于等于四種成分(Nf≤4)和每幀大于四種成分(Nf>4)。如果使用(Nf>4),控制軟件需要變得更復(fù)雜。A.14.4.7.1Nf≤4包含于JPEG幀標(biāo)題內(nèi)的幀分量規(guī)格參數(shù)在它們被解碼時(shí)配置宏塊結(jié)構(gòu)寄存器(見表A.14.8)。不需要用戶干預(yù),解碼4種不同顏色成分所需的所有說明都如定義。為獲JPEG提供的選擇的更多詳情,讀者應(yīng)學(xué)習(xí)JPEG說明書。同時(shí),在A.16.1中的JPEG圖象格式中也有簡(jiǎn)短說明。A.14.4.7.2具有四種以上成分的JPEG空間解碼器可以解碼具有多達(dá)256種不同彩色分量(JPEG所允許的最大值)的JPEG文件。然而,如果要解碼4種以上分量,附加的用戶干預(yù)是需要的。JPEG在任何掃描中最多只允許四種分量。A.14.4.8非標(biāo)準(zhǔn)變型如上所述,空間解碼器支持某些超出JPEG和MPEG所定義的圖象格式范圍。JPEG限制最小編碼單元,因此它們每次掃描包括的塊不超過10個(gè)。這一限制不適用于空間解碼器,因?yàn)樗梢酝ㄟ^blocks_h_n,blocks_v_n,max_h和max_v說明能處理的任何的最小編碼單元。MPEG只是為4∶2∶0的宏塊(見表A.14.8)作定義。然而,空間解碼器可以處理三種其它成分宏塊結(jié)構(gòu)(例如4∶2∶2)。A.14.5視頻事件和錯(cuò)誤視頻分配器可以產(chǎn)生兩類事件分析器事件和Huffman事件。關(guān)于如何處理事件和中斷的描述,參見A.6.3“中斷”。A.14.5.1Huffman事件Huffman事件由huffman解碼器產(chǎn)生。由huffmanevent和huff-man_mask指示的事件判斷是否產(chǎn)生了一個(gè)中斷。如果huffman_mask被設(shè)置為1,一個(gè)中斷將被產(chǎn)生,且Huffamn解碼器將停止。寄存器huffman_errov_code[2∶0]將保存一個(gè)指示事件原因的值。如果在中斷服務(wù)之后1被寫給huffman_event,Huffman解碼器將試圖從錯(cuò)誤中恢復(fù)。同樣,如果huffman_mask被設(shè)置為0。(中斷屏蔽且不停止Huffman解碼器),Huffman解碼器將試圖從錯(cuò)誤自動(dòng)恢復(fù)。A.14.5.2分析器事件(Parserevents)分析器事件由分析器產(chǎn)生。事件由Parser_event指示。此后parser_mask判斷是否一個(gè)中斷被產(chǎn)生。如果parser_mask被設(shè)置為1,一個(gè)中斷將被產(chǎn)生且分析器將停止。寄存器parser_error_code[7∶0]將保存一個(gè)指示事件原因的值。如果在中斷服務(wù)之后1被寫入huffman_event,Huffman解碼器將試圖從錯(cuò)誤恢復(fù)。同樣,如果huffman_mask被設(shè)置為0,(中斷屏蔽且不停止Huffman解碼器),Huffman解碼器將試圖從錯(cuò)誤中自動(dòng)恢復(fù)。如果在中斷服務(wù)后1被寫入parser_event,分析器將再次開始運(yùn)行。如果事件指示一個(gè)位流錯(cuò)誤,視頻分配器將試圖從錯(cuò)誤中恢復(fù)。如果分析器被設(shè)置為0,分析器將設(shè)置其事件位,但是不會(huì)產(chǎn)生一個(gè)中斷或停止。它將繼續(xù)操作并試圖從錯(cuò)誤自動(dòng)恢復(fù)。表A.14.11Huffman錯(cuò)誤碼表A.14.12Parser錯(cuò)誤碼表A.14.12Parser錯(cuò)誤碼(續(xù))表A.14.12Parser錯(cuò)誤碼(續(xù))表A.14.12Parser錯(cuò)誤碼(續(xù))表A.14.12Parser錯(cuò)誤碼(續(xù))表A.14.12Parser錯(cuò)誤碼(續(xù))表A.14.12Parser錯(cuò)誤碼(續(xù))每種標(biāo)準(zhǔn)使用定義的分析器錯(cuò)誤碼的一個(gè)不同子集。表A.14.13分析器錯(cuò)誤碼及不同標(biāo)準(zhǔn)表A.14.13分析器錯(cuò)誤碼及不同標(biāo)準(zhǔn)(續(xù))A.14.6接收用戶和擴(kuò)展數(shù)據(jù)MPEG和JPE使用類似手法以存放用戶和擴(kuò)展數(shù)據(jù)。數(shù)據(jù)前面有一起始/記號(hào)碼。如果應(yīng)用這類數(shù)據(jù)不感興趣,起始碼檢測(cè)器將刪除這個(gè)數(shù)據(jù)(見A.11.3.3)。A.14.6.1識(shí)別數(shù)據(jù)來源分析器事件,ERR_EXTENSION_TOKEN和ERR_USER_TOKEN在視頻分配器指示EXTENSION_DATA或USER_DATA令牌的到達(dá)。如果這些令牌已經(jīng)被起始碼檢測(cè)器產(chǎn)生(見A.11.3.3),它們將攜帶起始/記號(hào)碼的值使起始碼檢測(cè)器產(chǎn)生令牌(見表A.11.4)。這個(gè)值可以在分析器中斷服務(wù)時(shí)通過讀rom_revision寄存器讀出。視頻分配器將保持停止直到1被寫2入parser_evetn(見A.6.3“中斷”)。A.14.6.2讀數(shù)據(jù)EXTENSION_DATA和USER_DATA令牌后面應(yīng)當(dāng)緊緊跟隨一個(gè)攜帶擴(kuò)展或用戶數(shù)據(jù)的DATA令牌。這個(gè)DATA令牌到達(dá)視頻分配器將產(chǎn)生一個(gè)ERR_EXTENSION_DATA或一個(gè)ERR_USER_DATA語法分析器事件。DATA令牌的第一字節(jié)可以在中斷服務(wù)時(shí)通過讀rom_revision寄存器而被讀。當(dāng)事件被清除后,視頻分配器寄存器的狀態(tài)“continue”決定著狀態(tài)。如果這個(gè)寄存器保存0值,那么DATA令牌中任何剩余數(shù)據(jù)都可被視頻分配器消除且不產(chǎn)生任何事件。如果continue被設(shè)置為1,擴(kuò)展或用戶數(shù)據(jù)的每一字節(jié)到達(dá)視頻解碼器時(shí)都會(huì)有一個(gè)事件被產(chǎn)生。這將繼續(xù)直到DATA令牌被消耗或continue被設(shè)置為0。注意1)擴(kuò)展/用戶數(shù)據(jù)的第一字節(jié)總是通過rom_revision寄存器被表達(dá)而不管continue的狀態(tài)。2)不存在指示擴(kuò)展/用戶數(shù)據(jù)的最后一個(gè)字節(jié)已被讀的事件。A.14.7接收外部信息H.261和MPEG允許擴(kuò)大編碼標(biāo)準(zhǔn)的信息被裝入圖象和塊組(H.261)或片(MPEG)中。其手法不同于對(duì)擴(kuò)展和用戶數(shù)據(jù)所使用的(在A.14.6部分中有說明)。在數(shù)據(jù)前面沒有起始碼,因此,它不能被起始碼檢測(cè)器刪除。在H.261操作中,分析器事件ERR_PSPARE和ERR_GSPARE指示檢測(cè)到此信息。在MPEG中的相應(yīng)事件是ERR_EXTRA_PICTURE和ERR_EXTRA_SLICE。當(dāng)分析器事件被產(chǎn)生,附加信息的第一字節(jié)被通過寄存器romrevision被呈現(xiàn)。視頻分配器寄存器continue判斷事件被清除后的行為。如果這個(gè)寄存器取值為0,那么任何剩余的附加信息都將被視頻譯碼器消除而不會(huì)有事件產(chǎn)生。如果繼續(xù)被設(shè)置為1,附加信息的每一字節(jié)到達(dá)視頻分配器時(shí)都會(huì)有一個(gè)事件被產(chǎn)生。這將持續(xù)到附加信息被用完或continue被設(shè)置為0。注意1)無論continue的狀態(tài)如何,擴(kuò)展/用戶數(shù)據(jù)的第一字節(jié)總是逼過rom_revision寄存器顯現(xiàn)。2)不存在指示擴(kuò)展/用戶數(shù)據(jù)的最后一字節(jié)已經(jīng)被讀的事件。A.14.7.1FIELD_INFO令牌的產(chǎn)生在MPEG操作中,如果寄存器field_info被設(shè)置為1,任何extra_information_picture的第一字節(jié)被放于FIELD_INFO令牌中。這一行為不被MPEG的標(biāo)準(zhǔn)化活動(dòng)所包括。表A.3.2顯示了FIELD_INFO令牌的定義。如果FIELLINFO被設(shè)置為1,對(duì)extra_information_picture的第一字節(jié)不會(huì)有分析器事件被產(chǎn)生。然而,對(duì)于extra_infor-mation_picture的任何后續(xù)字節(jié)會(huì)有事件產(chǎn)生。如果extra_infor-mation_picture只有一個(gè)單一字節(jié),不會(huì)有分析器事件產(chǎn)生。A.14.8MPEG序列層的變化MPEG序列標(biāo)題描述了將要被解碼的視頻的如下特性·水平和垂直尺寸·象素寬高比·圖象率·編碼數(shù)據(jù)率·視頻緩沖器檢驗(yàn)器緩沖大小如果當(dāng)空間解碼器解碼一個(gè)序列標(biāo)題時(shí)這些參數(shù)中的任何一個(gè)有變化,分析器ERR_MPEG_SEQUENCE將被產(chǎn)生。A.14.8.1圖象大小的改變?nèi)绻麍D象大小有所變化,用戶軟件應(yīng)當(dāng)讀horiz_pels和vert_pels的值,并且計(jì)算將被裝入寄存器horiz_macroblocks和vevt_macroblocks的新值。A.15空間解碼相應(yīng)于本發(fā)明,空間解碼發(fā)生于令牌緩沖器的輸出和空間解碼器的輸出之間。有三種負(fù)責(zé)空間解碼的主要單元逆向模式化器,逆向量化器和逆向離散余弦變換器。在進(jìn)入這部分(從令牌緩沖器)輸入端,DATA令牌包含一個(gè)游程和級(jí)表示的量化系數(shù)。在輸出端(逆向DCT的),DATA令牌8×8塊象素信息。A.15.1逆向模式化器(TheInverseModeler)令牌緩沖器內(nèi)的DATA令牌包含關(guān)于量化系數(shù)的值和被代表的系數(shù)中0的數(shù)目的信息。逆向模式化器關(guān)于0的游程擴(kuò)展信息,以使每個(gè)DATA令牌包含64個(gè)值。在這點(diǎn)上,DATA令牌中的值是量化系數(shù)。無論當(dāng)前使用的編碼標(biāo)準(zhǔn)是什么,逆向模式化器處理都是相同的,不需要進(jìn)行配置。為了更好地理解模式化和逆向模式功能所有需要,讀者可以查看任何一種圖象編碼標(biāo)準(zhǔn)。A.15.2逆向量化器在一編碼器中,量化器除DCT的輸出以降低DCT系數(shù)的分辨率。在一解碼器中,逆向量化器的功能是乘這些量化的DCT系數(shù)以恢復(fù)它們近似的原始值。A.15.2.1標(biāo)準(zhǔn)量化方案綜述每種不同編碼標(biāo)準(zhǔn)使用的量化方案有顯著不同。為獲得對(duì)于每種標(biāo)準(zhǔn)所使用的量化方案的詳細(xì)了解,讀者可研究相關(guān)編碼標(biāo)準(zhǔn)文件。寄存器iq_coding_standard配置逆向量化器的操作以滿足不同標(biāo)準(zhǔn)的需要。在一般操作中,這個(gè)寄存器被CODING_STANDARD令牌自動(dòng)裝載。要獲得關(guān)于編碼標(biāo)準(zhǔn)配置的更多信息,參見A.21.1部分。量化方案之間的主要差異在于量化系數(shù)要被乘以的數(shù)字的來源。這些在下面被概述。在所需的代數(shù)運(yùn)算上(舍入等)也有細(xì)微差異,此處不做說明。A.15.2.1.1H.261IQ總述在H.261中,一個(gè)單一“標(biāo)度因子”被用于標(biāo)度系數(shù)。編碼器可以周期性改變此標(biāo)度因子以調(diào)整產(chǎn)生的數(shù)據(jù)率。在內(nèi)部編碼塊中略有不同的規(guī)則被施加于“DC”系數(shù)。A.15.2.1.2JPEGIQ總述基線JPEG允許一幅圖象在每次掃描中包含多達(dá)4種不同的顏色成分。對(duì)這4種顏色分成的每一種可以指定一個(gè)64入口的量化表。這些表的每一個(gè)入口被用作64個(gè)量化系數(shù)中一個(gè)的“標(biāo)度”因子。JPEG量化表的值被包括于編碼JPEG數(shù)據(jù)中并將被自動(dòng)裝入量化表。A.15.2.1.3MPEGIQ總述MPEG使用H.261和JPEG量化技術(shù)。象JPEG那樣,MPEG可以使用4個(gè)量化表,每一量化表有64個(gè)入口。然而,表的使用截然不同。考慮兩“類”數(shù)據(jù)內(nèi)部和非內(nèi)部數(shù)據(jù)。每種數(shù)據(jù)類型使用一個(gè)不同的表。兩個(gè)缺省表被MPEG定義。一個(gè)用于內(nèi)部數(shù)據(jù)而另一個(gè)用于非內(nèi)部數(shù)據(jù)(見表A.15.2和表A.15.3)。這些缺省表必須在MPEG解碼成為可能之前被寫入空間解碼器的量化表存貯器。MPEG還允許兩個(gè)“向下裝載”量化表。一個(gè)是為了內(nèi)部數(shù)據(jù),另一個(gè)是為了非內(nèi)部數(shù)據(jù)。這些表的值被包含于MPEG數(shù)據(jù)流中并將被自動(dòng)裝載入量化表存貯器中。從表中輸出的值被標(biāo)度因子修正。A.15.2.2逆向量化器寄存器表A.15.1逆相量化器寄存器在本發(fā)明中,iq_acces寄存器必須在量化表存貯器被存取之前被設(shè)置。如果當(dāng)iq_access被設(shè)置為0時(shí)試圖讀量化表存貯器,它將返回零值。A.15.2.3配置逆向量化器在一般操作中,不需配置逆向量化器的編碼標(biāo)準(zhǔn),因?yàn)樗鼘⒈籆ODING_STANDARD令牌自動(dòng)配置。對(duì)H.261操作,量化表不被使用。不需要任何特殊配置。對(duì)JPEG操作,逆向量化器需要的表應(yīng)當(dāng)和從編碼數(shù)據(jù)中抽取的信息一起被自動(dòng)裝載。MPEG操作需要裝載缺x量化表。這應(yīng)當(dāng)在iq_access被設(shè)置為1時(shí)完成。表A.15.2中的值應(yīng)當(dāng)被寫入逆向量化器的擴(kuò)展地址空間的0×00到0×3F位置(可通過鍵孔寄存器iq_keyhole_address和iq_keyhole_data存取)。類似地,表A.15.3中的值應(yīng)當(dāng)被寫入逆向量化器的擴(kuò)展地址空間的0×40到0×7F的位置。表A.15.2對(duì)基編碼塊的缺省MPEG表a相對(duì)于量化表存儲(chǔ)器的起始偏移b量化表值表A.15.3對(duì)非基編碼塊的缺省MPEG表A.15.2.4令牌配置表作為通過MPI配置逆向量化表的一種替代,它們也可由令牌初始化。這些令牌通過編碼數(shù)據(jù)端口或MPI被提供。QUANT_TABLE令牌在表A.3.2中說明。它有一個(gè)兩位字段比,指明4張(0到3)表位置中的哪一個(gè)被令牌定義。對(duì)MPEG操作,表0和1的缺省定義需要被裝載。A.15.2.5量化表值對(duì)于JPEG和MPEGA,量化表入口都是8位數(shù)。255到1的值是合法的0值不合法。A.15.2.6量化表的數(shù)字順序量化表值以“Z型(zlg-zag)”掃描順序(見編碼標(biāo)準(zhǔn))被使用。表應(yīng)當(dāng)被看成一個(gè)64個(gè)值的一維排列(而不是8×8矩陣)。表在相應(yīng)于低頻率DCT系數(shù)的低地址進(jìn)入。當(dāng)量化表值由QUANT_TABLE令牌攜帶時(shí),令牌標(biāo)題后的第一個(gè)值是“DC”系數(shù)的表入口。A.15.2.7逆向量化器檢測(cè)寄存器表A.15.4向量化測(cè)試寄存器表A.15.4反向量化測(cè)試寄存器(續(xù))A.15.3逆向離散余弦變換本發(fā)明中的逆向離散變換處理器符合CCITT推薦H.261,IEEE說明書P1180的要求,并符合當(dāng)前MPE修改草案中描述的要求。無論使用何處編碼標(biāo)準(zhǔn),逆向離散余弦變換處理器是相同的。不需用戶進(jìn)行配置。有兩個(gè)事件與逆向離散變換處理器有關(guān)。表A.15.5反相DCT事件寄存器表A.15.5反相DCT事件寄存器(續(xù))為更好地理解DCT和逆向DCT功能,讀者可以查看任何圖象編碼標(biāo)準(zhǔn)。A.16連接空間解碼器的輸出端空間解碼器的輸出端是一個(gè)具有9位寬數(shù)據(jù)字的標(biāo)準(zhǔn)令牌端口。欲知接口電性能的更多信息,參見A.4部分。輸出端顯示的令牌將依賴于使用的編碼標(biāo)準(zhǔn)。例如,公布的這一部分是為JPEG操作配置時(shí)考慮空間解碼器的輸出的。這一部分還描述了JPEG操作時(shí)在時(shí)間解碼器的輸出端觀察到的令牌序列,因?yàn)闀r(shí)間解碼器不改變從解碼JPEG得來的令牌序列。然而,MPEG和H.261都需要時(shí)間解碼器的使用。欲知關(guān)于在為MPEG和H.261操作而配置時(shí)的時(shí)間解碼器的輸出端連結(jié)的信息,參見A.19部分。此外,此部分確定在空間解碼器的輸出端可獲得哪個(gè)令牌,以及哪個(gè)令牌在設(shè)計(jì)電路以顯示輸出時(shí)最有用。其它令牌也出現(xiàn),但不需用于顯示輸出,因此在此不作討論。這部分主要顯示·如何識(shí)別序列的開始和結(jié)束。·如何識(shí)別圖象的開始和結(jié)束。·如何確定何時(shí)顯示圖象。如何確定圖象數(shù)據(jù)應(yīng)被放入顯示的何處。A.16.1JPEG圖象的結(jié)構(gòu)這部分提供了JPEG體系的某些特征的總述。欲知全部細(xì)節(jié),請(qǐng)參見編碼標(biāo)準(zhǔn)。JPEG為編碼單個(gè)圖象提供了多種手法。JPEG并不試圖說明如何一起編碼大量圖象以提供編碼視頻的一種手法。按照于本發(fā)明,空間解碼器支持JPEG的基線連續(xù)(baselinesequential)操作方式。體系中有三個(gè)主要級(jí)別圖象,幀和掃描。一幅連續(xù)圖象只包括一單一幀。一幀可以包括1到256種不同的圖象(顏色)分量。這些圖象分量可以用多種方式被分組成為掃描。每一掃描可以包括1到4種圖象分量(見圖81,“JPEG基線連續(xù)結(jié)構(gòu)總述”)。如果一掃描包含一單一圖象分量,它是非隔行的;如果它包含超過一種圖象分量,它是一隔行掃描。一幀可以包括隔行和非隔行掃描的混合。一幀可以包括的掃描數(shù)由一幀可包括的圖象分量數(shù)的256限制而決定。在隔行掃描中,數(shù)據(jù)被組織成最小的編碼單元(MCU),這些編碼單元與MPEG和H.261中使用的宏塊相似。這些MCU在一幅圖象中按光柵排列。在一非隔行掃描中,MCU是一單一8×8塊。這些同樣也是光柵排列的。空間解碼器能夠輕易解碼包含1至44種不同顏色成分的JPEG數(shù)據(jù)。描述更多成分量數(shù)的信息也可被解碼。然而,為適應(yīng)下一組將要被解碼的分量,可將需要掃描之間的某些重新配置。A.16.2令牌序列JPEG標(biāo)記碼被起始碼檢測(cè)器轉(zhuǎn)換成一個(gè)相似的MPEG命名的令牌(見表A.11.4,見圖82“令牌化JPEG圖象”)。A.17時(shí)間解碼器·30MHz操作·為MPEG和H.261視頻解碼器提供時(shí)間解碼·HV261CIF和QCIF格式·MPEG視頻分辨率達(dá)740×480,30Hz,4∶2∶0·靈活的色度采樣格式·能夠重排MPEG圖象序列·Gue_LessDRAM接口·單一正5伏電源·208引腳PQFP封裝·最大耗電2.5W·使用標(biāo)準(zhǔn)頁式DRAM時(shí)間解碼器是空間解碼器的一個(gè)成對(duì)芯片。它提供H.261和MPEG所需的時(shí)間解碼。時(shí)間解碼器完成MPEG和H.261所需的所有預(yù)測(cè)形成特性。借助于一個(gè)單一4MbDRAM(例如,512kx8),時(shí)間解碼器可以解碼CIF和QCIFH.261視頻。借助于8MbDRAM(例如,2256kx16),740×480,30Hz,4∶2∶0MPEG視頻可被解碼。對(duì)于內(nèi)部編碼方案(如JPEG)不需要時(shí)間解碼器。如果時(shí)間解碼器包括在一多標(biāo)準(zhǔn)解碼器內(nèi),它將使被解碼的JPEG圖象通過其輸出。注意上述值僅是舉例作為本發(fā)明一種實(shí)施方案的說明,不需要以此為限制。不偏離本發(fā)明而使用其它的數(shù)值和范圍也將是被欣賞的。A.17.1時(shí)間解碼器信號(hào)表A.17.1時(shí)間解碼器信號(hào)表A.17.1時(shí)間解碼器信號(hào)(續(xù))表A.17.1時(shí)間解碼器信號(hào)(續(xù))表A.17.2時(shí)間解碼器測(cè)試信號(hào)表A.17.2時(shí)間解碼器測(cè)試信號(hào)(續(xù))表A.17.3時(shí)間解碼器引腳分配表A.17.3時(shí)間解碼器引腳分配(續(xù))表A.17.3時(shí)間解碼器引腳分配(續(xù))A.17.1.1“nc”不連結(jié)引腳表A.17.3中標(biāo)有nc的引腳是本發(fā)明中當(dāng)前未使用且為將來產(chǎn)品保留的。這些引腳應(yīng)不被連接。它們不應(yīng)連結(jié)于VDD,GND,不應(yīng)彼此連接或連于任何其它信號(hào)。A.17.2VDD和GND引腳正如人們了解的,所提供的所有VDD和GND引腳必須連結(jié)于相應(yīng)電源。所有VDD和GND引腳均需正確使用,否則器件將不會(huì)正常運(yùn)行。A.17.1.3一般操作的引腳連結(jié)測(cè)試時(shí)間解碼器的9條引腳被留作內(nèi)部測(cè)試使用。表A.17.4缺省測(cè)試引腳連結(jié)A.17.1.4一般操作的JTAG引腳見A.8.1部分表A.17.5時(shí)間解碼器存儲(chǔ)器映象一覽表A.17.6中斷服務(wù)區(qū)寄存器表A.17.7芯片存取電阻表A.17.8圖象定序表A.17.9DRAM接口配置寄存器表A.17.9DRAM接口配置寄存器(續(xù))表A.17.10緩沖器配置寄存器表A.17.10緩沖器配置寄存器(續(xù))表A.17.11測(cè)試寄存器表A.17.11測(cè)試寄存器(續(xù))A.18時(shí)間解碼器操作A.18.1數(shù)據(jù)輸入時(shí)間解碼器的輸入數(shù)據(jù)端口是一個(gè)具有8位寬數(shù)據(jù)字的標(biāo)準(zhǔn)令牌端口。在大多數(shù)應(yīng)用中,這將直接與空間解碼器的輸出令牌端口相連。欲獲得關(guān)于此接口電特性的更多信息,參見A.4部分。A.18.2自動(dòng)配置與編碼視頻的圖象格式相關(guān)的參數(shù)被空間解碼器產(chǎn)生的令牌自動(dòng)裝入時(shí)間解碼器內(nèi)的寄存器。表A.18.1經(jīng)過令牌的時(shí)間解碼器的配置A.18.3人工配置用戶必須配置(通過微處理器接口)視應(yīng)用而定的參數(shù)。A.18.3.1何時(shí)配置時(shí)間解碼器應(yīng)該僅在不進(jìn)行數(shù)據(jù)處理時(shí)被配置。這就是在復(fù)位被移去之后的缺省狀態(tài)。時(shí)間解碼器可以被停止,以通過面chip_access寄存器寫1來重新配置。當(dāng)配置完成后,應(yīng)當(dāng)在chip_access中寫入0。關(guān)于何時(shí)配置DRAM接口的細(xì)節(jié),參見A.5.3部分。A.18.3.2DRAM接口DRAM接口時(shí)序必須在有可能預(yù)測(cè)性解碼編碼視頻(例如H.261或MPEG)之前被配置。見A.5部分,“DRAM接口”。表A.18.2時(shí)間解碼器寄存器表A.18.2時(shí)間解碼器寄存器(續(xù))A.18.3.3圖象緩沖器寄存器內(nèi)的數(shù)圖象緩沖器指針(18位)和分量偏移(17位)寄存器指示一個(gè)塊(8×8字節(jié))地址而不是一個(gè)字節(jié)地址。A.18.3.4圖象緩沖器分配為了解碼預(yù)測(cè)性地編碼的視頻(H.261或MPEG),時(shí)間解碼器必須管理兩個(gè)圖象緩沖器。欲獲得更多關(guān)于如何使用這些緩沖器的信息,參見A.18.4和A.18.4.4部分。用戶必須保證在每一個(gè)圖象緩沖器指針(picture_buffer_0和picture_buffer_1)上有足夠的存貯空間以存貯一幅所需視頻格式的單一圖象(不與其它圖象緩沖器重疊)。通常,圖象緩沖器指針中的一個(gè)將被設(shè)置為0(即存貯器底),而另一個(gè)將被設(shè)置為指向存貯空間的中部。A.18.3.4.1MPEG或H.261的一般配置H.261和MPEG均在不同彩色分量之間使用一4∶1∶1比率(即,亮度象素?cái)?shù)目四倍于經(jīng)一色度成分中的象素?cái)?shù)目)。如A.3.5.1“分量識(shí)別號(hào)碼”中所述的,分量0將是亮度成分,而分量1和2將是色度。分量偏置寄存器的一種范例配置即為,設(shè)置component_offset_0為0以使分量0在圖象緩沖器指針處開始。類似地,component_offset_l可以被設(shè)置為圖象緩沖器大小的4/6,component_offset_2可以被設(shè)置為圖象緩沖器大小的5/6。A.18.3.5圖象序列重排MPEG使用三種不同的圖象類型內(nèi)部(I)、預(yù)測(cè)(P)和雙向插入(B)。B類圖象是基于來源于兩幅圖象的預(yù)測(cè)的一幅來自將來,一幅來自過去。圖象順序在編碼器被修改,以使I和P類圖象在其被要求解碼B類圖象前可從編碼數(shù)據(jù)被解碼。圖象序列必須在這些圖象可被顯示之前更正。時(shí)間解碼器可以提供這種圖象重排(通過設(shè)置寄存器MPEG_reodering=1)。作為選擇,用戶可能希望將圖象重排作為他顯示接口功能的一部分來完成。配置時(shí)間解碼器以提供圖象重排可能會(huì)降低可被解碼的視頻分辨率,參見A.18.5部分。A.18.4預(yù)測(cè)形成H.261解碼和MPEG解碼的預(yù)測(cè)形成要求是截然不同的。CODING_STANDARD令牌自動(dòng)配置時(shí)間解碼器,以適應(yīng)不同標(biāo)準(zhǔn)的預(yù)測(cè)要求。A.18.4.1JPEG操作在為JPEG操作配置時(shí),由于JPEG不需要任何時(shí)間解碼,因此不進(jìn)行預(yù)測(cè)。A.18.4.2H.261操作在H.261中,預(yù)測(cè)僅來自剛被解碼的圖象。運(yùn)動(dòng)向量?jī)H指整數(shù)的象素精度。編碼器將指示一個(gè)低通濾波器被用于預(yù)測(cè)的結(jié)果。由于每幅圖象都已被解碼,它被寫入芯片外DRAM內(nèi)的一個(gè)圖象緩沖器,以便DRAM可被用于解碼下一圖象。被解碼的圖象當(dāng)它們被寫入芯片外的DRAM時(shí)出現(xiàn)于時(shí)間解碼器的輸出端。關(guān)于預(yù)測(cè)的詳情以及涉及的數(shù)學(xué)運(yùn)算,讀者可參考H.261標(biāo)準(zhǔn)。本發(fā)明的時(shí)間解碼器與H.261的要求是完全相符合的。A.18.4.3MPEG操作(不重排)對(duì)于三種不同MPEG圖象類型(I,P和B)的每一種,時(shí)間編碼器的運(yùn)行有所變化?!癐”類圖象不需時(shí)間解碼器的進(jìn)一步解碼,但必須被存貯于一個(gè)圖象緩沖器(幀存貯),以便將來在解碼P和B類圖象中使用。解碼P類圖象需要從一幅前面被解碼的P或工類圖象形成預(yù)測(cè)。被解碼的P類圖象被存貯于一圖象緩沖器中以在解碼P和B類圖象中使用。MPEG允許運(yùn)動(dòng)向量指示半象素精度。芯片內(nèi)濾波器提供插入以支持這種半象素精度。B類圖象需要來自兩種圖象緩沖器的預(yù)測(cè)。類似P類圖象,半象素運(yùn)動(dòng)向量分辨率精度需要圖象信息的芯片上插值。B類圖象不被存貯于芯片外緩沖器中。它們只是瞬時(shí)的。所有的圖象在其被解碼時(shí)出現(xiàn)于時(shí)間解碼器的輸出端。這樣,圖象序列將與其在編碼MPEG數(shù)據(jù)中的序列相同(見圖85的上部)。關(guān)于預(yù)測(cè)詳情以及涉及的數(shù)學(xué)運(yùn)算,讀者可參考提出的MPEG標(biāo)準(zhǔn)草案。這些要求由本發(fā)明的時(shí)間解碼器滿足。A.18.4.4MPEG操作(用重排)當(dāng)為圖象重排的MPEG操作配置時(shí),(MPEG_reordering=1),形成預(yù)測(cè)的操作如上面在A.18.4.3部分中所描述的。然而,附加的數(shù)據(jù)傳送被進(jìn)行以便重排圖象序列。B類圖象的解碼如A.18.4.3部分中所描述的。然而,I和B類圖象在它們被解碼時(shí)不被輸出。它們被寫入芯片外緩沖器(如前所述),并只在一幅后續(xù)I或P類圖象到達(dá)以被解碼時(shí)才被讀出。A.18.4.4.1解碼器起動(dòng)特性第一幅I類圖象的輸出被延遲,直到后面的P(或I)類圖象開始解碼。這應(yīng)當(dāng)在估計(jì)視頻解碼器起動(dòng)特性時(shí)被考慮。A.18.4.4.2解碼器關(guān)閉特性時(shí)間解碼器依靠后面P或I類圖象來將前面的圖象清除(Flush)出芯片外緩沖器(幀存貯)。這在視頻序列的結(jié)尾在和在開始新的視頻序列時(shí)有重要性。空間解碼器提供設(shè)備,以在視頻序列的結(jié)尾產(chǎn)生一個(gè)“偽”P/I圖象以清除最后的P(或I)圖象。然而,這個(gè)“偽”圖象將在一個(gè)后序視頻序列開始時(shí)被清除??臻g解碼器提供選擇以排除這個(gè)“偽”圖象。在已知道當(dāng)一個(gè)舊序列被結(jié)束后將馬上有一個(gè)新的視頻序列被提供給解碼器處,這將是有用的。這個(gè)新序列的第一幅圖象將把前一序列的最后一幅圖象刷除。A.18.5視頻分辨率在解碼MPEG時(shí)時(shí)間解碼器可以支持的視頻分辨率受到其DRAM接口的存貯器帶寬的限制。對(duì)于MPEG,需要考慮兩種情況用和不用MPEG圖象重排。A.18.5.2和A.18.5.3部分討論了MPEG說明書當(dāng)前草案所需的最差情況的要求。MPEG的子集可以期望有較低的存貯器帶寬要求。例如,只使用整數(shù)分辨率運(yùn)動(dòng)向量,或者,作為選擇,不使用B類圖象,可以顯著地降低存貯器帶寬要求。這些子集在此不做分析。A.18.5.1DRAM接口特性通過DRAM接口傳送數(shù)據(jù)所采取的周期數(shù)依賴于許多因素·DRAM接口為適應(yīng)選用DRAM所用的時(shí)間配置·數(shù)據(jù)總線寬度(8,16或32位)·數(shù)據(jù)傳送的類型·8×8塊讀或?qū)憽轭A(yù)測(cè)半象素精度·為預(yù)測(cè)整數(shù)象素精度關(guān)于DRAM接口配置的詳細(xì)信息,參見A.5部分“DRAM接口”。表A.18.3顯示了對(duì)于每種類型的數(shù)據(jù)傳送需要多少DRAM接口“周期”。表A.18.3時(shí)間解碼器的數(shù)據(jù)傳送時(shí)間表A.18.4采用了表A.18.3中的數(shù)值并對(duì)一個(gè)“典型的”DRAM評(píng)價(jià)它們。在本例中,假設(shè)了一個(gè)27兆赫的時(shí)鐘。應(yīng)當(dāng)了解的是,盡管在此用27兆赫,它并不作為一種限制。存取起始占據(jù)了11個(gè)小標(biāo)記(Tick)(102ns)而數(shù)據(jù)傳送占據(jù)了6個(gè)小標(biāo)記(56ns)。A.18.5.2無重排的MPEG分辨率當(dāng)解碼B類圖象時(shí)發(fā)生存貯器峰值帶寬負(fù)載。在一“最差情況”方案中,B幀可以通過預(yù)測(cè)形成,而預(yù)測(cè)來源于2個(gè)圖象緩沖器,且所有的預(yù)測(cè)都是半象素精度。表A.18.4“典型”DRAM說明使用表A.18.4中的舉例數(shù)據(jù)可以看出,為讀x兩種準(zhǔn)確半象素精度預(yù)測(cè)所需的數(shù)據(jù)(通過一個(gè)32位寬的接口),DRAM接口將花費(fèi)3815ns。時(shí)間解碼器能夠支持的分辨率由在一個(gè)圖象時(shí)間內(nèi)可以完成的這些預(yù)測(cè)的數(shù)量所決定。在此例中,時(shí)間解碼器在一單一的33毫秒的圖象周期中可以處理8737個(gè)8×8塊(例如,對(duì)一個(gè)30赫的視頻)。如果所需的視頻格式是704×480,那么每幅圖象包括7920個(gè)8×8塊(考慮4∶2∶0色度采樣)??梢钥闯觯艘曨l格式占用可獲得的DRAM接口帶寬的大約91%(在考慮進(jìn)諸如DRAM刷新等因素之前)。相應(yīng)地,時(shí)間解碼器可以支持此視頻格式。A.18.5.3具有重排的MPEG分辨率當(dāng)采用MPEG圖象重排時(shí),在解碼P類圖象時(shí)會(huì)遇到最差情況方案。在這種時(shí)候,DRAM接口上有3種負(fù)載·形成預(yù)測(cè)·寫回結(jié)果·讀出前面的P或I圖象使用來自表A.18.3的舉例數(shù)字,我們可以找到在可獲得一個(gè)32位寬的接口時(shí),這種工作中每一個(gè)所要花費(fèi)的時(shí)間。形成預(yù)測(cè)花費(fèi)1907ns/n,而讀和寫各要用991ns,總共是3899ns。這使得時(shí)間解碼器能夠在33ms的周期內(nèi)處理8485個(gè)8×8的塊。因此,處理704×480的視頻將使用可獲得存貯器帶寬的大約93%(忽略刷新)。A.18.5.4H.261H.261僅支持兩種圖象格式(CIF(352×288)和QCIF(172×144)且圖象速率達(dá)30赫。一幅CIF圖象包括2376個(gè)8×8塊。所需的唯一存貯器操作是寫8×8的塊并以整數(shù)精度運(yùn)動(dòng)矢量形成預(yù)測(cè)。對(duì)于一個(gè)8位寬的存貯器接口使用來自表A.18.4中的舉例數(shù)字,可以看出寫每一個(gè)塊將用3657ns,而為一個(gè)塊形成預(yù)測(cè)將用3963ns/n,故每一個(gè)塊將花費(fèi)7620ns。因此,每個(gè)單一CIF圖象的處理時(shí)間是大約18ms,遠(yuǎn)小于支持30赫視頻所需的33ms。A.18.5.5JPEG可被支持的JPEG“視頻”分辨率將由本發(fā)明的空間解碼器的容量或顯示器接口決定。時(shí)間解碼器不影響JPEG分辨率。A.18.6事件和錯(cuò)誤A.18.6.1芯片停止在本發(fā)明中,為給chip_access寫入1,要求時(shí)間解碼器停止操作以便于重新配置。一但被接收到,時(shí)間解碼器將繼續(xù)正常運(yùn)行,直到其到達(dá)當(dāng)前視頻序列的末端。然后,時(shí)間解碼器被停止。當(dāng)芯片停止時(shí),一個(gè)芯片停止事件將發(fā)生。如果chip_stopped_mask=1,將有一個(gè)中斷產(chǎn)生。A.8.6.2計(jì)數(shù)錯(cuò)誤本發(fā)明的時(shí)間解碼器包括一個(gè)加法器,將預(yù)測(cè)加到錯(cuò)誤數(shù)據(jù)中去。如果錯(cuò)誤數(shù)據(jù)的字節(jié)數(shù)與預(yù)測(cè)數(shù)據(jù)的字節(jié)數(shù)之間有差別,那么會(huì)產(chǎn)生一個(gè)計(jì)數(shù)錯(cuò)誤事件。如果count_error_mask=1,一個(gè)中斷將被產(chǎn)生,且預(yù)測(cè)的形成將停止。向count_error_event寫入1就清除了事件,并使時(shí)間解碼器繼續(xù)。因而導(dǎo)致錯(cuò)誤產(chǎn)生的DATA令牌將繼續(xù)。然而,引起錯(cuò)誤的DATA令牌將不會(huì)是正確長(zhǎng)度(64字節(jié))的。這有可能會(huì)導(dǎo)致進(jìn)一步的問題。因此,只有在一個(gè)顯著硬件錯(cuò)誤已發(fā)生時(shí)才會(huì)產(chǎn)生一個(gè)計(jì)數(shù)錯(cuò)誤。A.19連到時(shí)間解碼器的輸出端時(shí)間解碼器的輸出端是一具有8位寬數(shù)據(jù)字的標(biāo)準(zhǔn)令牌端口。關(guān)于接口電特性的進(jìn)一步信息,請(qǐng)參見A.4部分。出現(xiàn)在時(shí)間解碼器輸出端的令牌將取決于所使用的編碼標(biāo)準(zhǔn),在MPEG的情況下,則依賴于圖象是否正在被重排。此部分識(shí)別令牌中的哪一個(gè)可以在時(shí)間解碼器的輸出端獲得,以及哪一個(gè)在設(shè)計(jì)電路以顯示那個(gè)輸出時(shí)最有用。其它的令牌將出現(xiàn),但無需顯示輸出,因此在此不做討論。這部分著重顯示·如何識(shí)別序列的起始和末端·如何識(shí)別圖象的起始和末端·如何識(shí)別何時(shí)顯示圖象·如何識(shí)別圖象數(shù)據(jù)應(yīng)被放于顯示中的何處A.19.1JPEG輸出在解碼JPEG數(shù)據(jù)時(shí),由時(shí)間解碼器輸出的令牌序列與空間解碼器的輸出端被看見的一樣?;叵肫饋?,JPEG不需要時(shí)間解碼器進(jìn)行的處理。然而,時(shí)間解碼器測(cè)試內(nèi)部數(shù)據(jù)令牌(來自空間解碼器中IDCT的有限數(shù)學(xué)精確的結(jié)果),對(duì)負(fù)值以零代替。關(guān)于在JPEG操作中觀察到的輸出序列的進(jìn)一步討論,參見A.16部分。A.19.2H.261輸出A.19.2.1過程的起始和結(jié)束H.261在視頻數(shù)據(jù)中視頻流中沒有起始和結(jié)束信號(hào)。不過,這將由應(yīng)用隱含。例如,當(dāng)電信連結(jié)時(shí)序列開始,當(dāng)線路中斷時(shí)結(jié)束。這樣,視頻體系中最高的層是“圖象層”。根據(jù)本發(fā)明,空間解碼器的起始碼檢測(cè)器使得SEQUENCE_START和CODING_STANDARD令牌被自動(dòng)插入到第一個(gè)PICTURE_START之前。參見A.11.7.3和A.11.7.4。在H.261過程的最后(也就是當(dāng)線路關(guān)閉),用戶應(yīng)當(dāng)在編碼數(shù)據(jù)末端的后面插入一個(gè)FLUSH令牌。這具有許多作用(參見附錄A.31.1)·它保證了PICTURE_END被產(chǎn)生,以標(biāo)志最后一幅圖象的結(jié)束?!にWC了編碼數(shù)據(jù)的末端被推動(dòng)經(jīng)過解碼器。A.19.2.2圖象的獲得每一圖象在體系中的層由稱為分層的元素組成。在解碼H.261時(shí),在時(shí)間解碼器輸出端的令牌序列反映出這一結(jié)構(gòu)。A.19.2.1圖象層每一圖象的前面有一PICTURE_START令牌,且后面緊跟著一個(gè)PICTURE_END令牌。H.261本來不包括一個(gè)圖象結(jié)束。這個(gè)令牌是由空間解碼器的起始碼檢測(cè)器自動(dòng)插入的。在PICTURE_START令牌后,將有TEMPORAL_REFERENCE和PICTURE_TYPE令牌。TEMPORAL_REFERENCE令牌攜帶一個(gè)10位數(shù)(其中只有5個(gè)最低位(LSB)被在H.261中使用),此數(shù)指示圖象應(yīng)在何時(shí)被顯示,這應(yīng)當(dāng)被任何一種顯示系統(tǒng)所考慮,因?yàn)镠.261編碼器可能會(huì)從序列中省略圖象(以實(shí)現(xiàn)更低的數(shù)據(jù)率)。由于時(shí)間標(biāo)記在兩連續(xù)圖象之間增加了不只一號(hào),圖象的省略可被檢測(cè)出來。下一步,PICTURE_TYPE令牌攜帶關(guān)于圖象格式的信息。一顯示系統(tǒng)可以考慮此信息以查看CIF或QCIF圖象是否正在被解碼。然而,關(guān)于圖象格式的信息也可通過研究Huffman解碼器內(nèi)的寄存器而獲得。(請(qǐng)參考Huffman解碼四部分)A.19.2.2.2塊層組每幅H.261圖象是由大量“塊組”構(gòu)成的。它們中的每一個(gè)前面都有一個(gè)SLICE_START令牌(由H.261組號(hào)和組起始碼得到)。此令牌攜帶一8位的值,此8位值指示塊組應(yīng)被放在顯示中的何處。這就為解碼器提供了一個(gè)機(jī)會(huì)使其在數(shù)據(jù)錯(cuò)誤之后再次同步化。此外,如果有不需要附加信息來描述它們的圖象區(qū)域,上述方式還為編碼器提供了一種跳塊的手法。當(dāng)SLICE_START到達(dá)時(shí)間解碼器輸出端時(shí),這一信息就成為十分多余的,因?yàn)榭臻g解碼器和時(shí)間解碼器已經(jīng)使用了此信息以保證每幅圖象包含正確的塊數(shù)且這些塊處于正確的位置。因此,僅僅通過計(jì)算從圖象的起始開始后已被輸出的塊的數(shù)目,就有可能計(jì)算在何處放置由時(shí)間解碼器輸出的數(shù)據(jù)塊。由SLICE_START攜帶的號(hào)碼比H.261組的塊數(shù)小1(關(guān)于更多信息,參見H.261標(biāo)準(zhǔn))。圖94顯示了在CIF和QCIF圖象中H.61塊組的定位。注意在本發(fā)明中,所示的塊編號(hào)與由SLICE_START攜帶的號(hào)碼相同。對(duì)于編號(hào)這些組不同于H.261慣例。在SLICE_START(它指示每一塊組的起始)和第一宏塊之間還可能有其它令牌。這些可以忽略,因?yàn)轱@示圖象數(shù)據(jù)并不需要它們。A.19.2.2.3宏塊層每一塊組中的宏塊序列是由H.261定義的。不存在描述每一宏塊位置的特別令牌信息。用戶應(yīng)當(dāng)通過宏塊序列計(jì)算,確定在何處顯示每一條信息。圖96顯示了每一塊組中宏塊被放置的順序。每一宏塊包括6個(gè)數(shù)據(jù)令牌。每6個(gè)一組的DATA令牌順序是由H.261宏塊結(jié)構(gòu)所定義的。每一個(gè)DATA令牌對(duì)于一單一彩色分量的8×8象素區(qū)域應(yīng)當(dāng)恰好包括64數(shù)據(jù)字節(jié)。彩色分量由DATA令牌內(nèi)的一個(gè)2位數(shù)攜帶(參見A.3.5.1)。然而,在H.261中彩色分量的順序已被定義。每一組DATA令牌之前都有大量令牌,這些令牌通訊關(guān)于運(yùn)動(dòng)向量、量化比例因子等的信息。顯示圖象不需要這些令牌,因此可被忽略。每一DATA令牌對(duì)其8×8的單一彩色分量包括64個(gè)數(shù)據(jù)字節(jié)。以光柵順序存放。A.19.3MPEG輸出MPEG的體系中具有更多層。它們接受諸如視頻序列和圖象組。A.19.3.1MPEG序列層一個(gè)序列可以有多個(gè)入口點(diǎn)(序列起始),但應(yīng)只有一個(gè)出口點(diǎn)(序列結(jié)束)。當(dāng)一個(gè)MEPG序列的標(biāo)題碼被解碼,空間解碼器產(chǎn)生一個(gè)CODING_STANDARD令牌,其后是一個(gè)SEQUENCE_START令牌。在SEQUENCE_START之后,將有大量序列標(biāo)題信息的令牌,它們說明視頻格式等。關(guān)于序列標(biāo)題中所指的信息,參見MPEG標(biāo)準(zhǔn)草案;關(guān)于這個(gè)數(shù)據(jù)如何被轉(zhuǎn)換成令牌的信息,參見表A.3.2。這說明視頻格式的信息也可在Huffman解碼器內(nèi)的寄存器內(nèi)獲得。如果一個(gè)MPEG序列有幾個(gè)入口點(diǎn),這個(gè)序列標(biāo)準(zhǔn)信息可以在此序列中出現(xiàn)幾次。A.19.3.2圖象層組一個(gè)MPEG圖象組在序列起始提供不同類型的“入口”點(diǎn)。序列標(biāo)題提供關(guān)于圖象/視頻格式的信息。相應(yīng)地,如果解碼器不知道一個(gè)序列中使用的視頻格式,它必須在一個(gè)序列起始處開始,然而,一旦視頻格式被配置入解碼器,應(yīng)該可以在任何一個(gè)圖象組中開始解碼。MPEG不把圖象號(hào)碼限制在組內(nèi)。然而,在許多應(yīng)用當(dāng)中,一個(gè)組相應(yīng)于約0.5秒,因?yàn)樗峁╇S機(jī)存取的合理單元。一組圖象的起始由一個(gè)GROUP_START令牌指示。在GROUP_START之后提供的頭信息包括兩種有用的令牌TIME_CODE和BROKEN_CLOSED。TIME_CODE攜帶SMPTE時(shí)間碼信息的一個(gè)子集。這在使視頻解碼器與其它信號(hào)同步化當(dāng)中是有用的。BROKEN_CLOSED攜帶MPEGclosed_gap和broken_link位。關(guān)于隨機(jī)存取和解碼已被編輯的視頻序列的實(shí)施的更多信息,可參見A.19.3.8。A.19.3.3圖象層一幅新圖象的起始由PICTURE_START令牌指示。在此令牌之后,將有TEMPORAL_REFERENCE和PICTURE_TYPE令牌。如果時(shí)間解碼器不是為了提供圖象重排而配置,時(shí)間標(biāo)記信息可能是有用的。如果一個(gè)顯示系統(tǒng)希望在一個(gè)開放GOP的起始特別處理B類圖象,圖象類型信息可能是有用的(見A.19.3.8)。每一圖象是由許多片構(gòu)成的。A.19.3.4片層A.19.2.2.2討論了H.261中所使用的塊組。MPEG中的片起著類似的作用。然而,片結(jié)構(gòu)不是由標(biāo)準(zhǔn)所確定的,由SLICE_START令牌攜帶的8位值比扛XMPEG通訊的“片垂直位置”小1。關(guān)于片層的說明,參見MPEG標(biāo)準(zhǔn)草案。當(dāng)SLICE_START到達(dá)時(shí)間解碼器的輸出時(shí),這一信息作用是多余的,因?yàn)榭臻g解碼器和時(shí)間解碼器已經(jīng)使用了該信息以保證每一幅圖象在正確的位置包含了正確數(shù)目的塊。因此,僅通過從圖象開始之后數(shù)已被輸出的塊的數(shù)量,就應(yīng)該可以計(jì)算將時(shí)間解碼器輸出的數(shù)據(jù)塊置于何處。關(guān)于使用MPEG圖象重排的效果的討論,參見A.19.3.7。A.19.3.5宏塊層每一宏塊包括6個(gè)塊。它們以光柵順序出現(xiàn)在時(shí)間解碼器的輸出端(如MPEG說明書草案所指出的)。A.19.3.6塊層每一宏塊包括6個(gè)DATA令牌。每一個(gè)含6個(gè)令牌的組中,DATA令牌的序列是由MPEG說明書草案所定義的(這與H.261宏塊結(jié)構(gòu)相同)。對(duì)一單個(gè)彩色分量,每一數(shù)據(jù)令牌應(yīng)當(dāng)在8×8的象素區(qū)域包括恰好64個(gè)數(shù)據(jù)字節(jié)。彩色分量由DATA令牌中的一個(gè)2位數(shù)攜帶(見A.3.5.1)。然而,MPEG中的彩色分量序列已被定義。每一組DATA令牌之前都有大量令牌,這些令牌對(duì)關(guān)于運(yùn)動(dòng)向量、量化比例因子等的信息進(jìn)行通訊。顯示圖象不需要這些令牌,因此它們被忽略。A.19.3.7MPEG圖象重排的效果如A.18.3.5中所述,時(shí)間解碼器可以被配置以提供MPEG圖象重排(MPEG_reordering=1)。P和I類圖象的輸出被延遲,直到時(shí)間解碼器開始解碼數(shù)據(jù)流中的下一P/I圖象。在時(shí)間解碼器的輸出端,來自舊P/I圖象的DATA令牌代替新解碼的P/I圖象的DATA令牌。在重排P/I圖象時(shí),當(dāng)圖象被寫入芯片外圖象緩沖器時(shí),圖象PICTURE_START,TEMPORAL_REFERENCE和PICTURE_TYPE令牌被暫時(shí)存貯于芯片上。當(dāng)圖象被讀出以顯示時(shí),這些存貯的令牌被恢復(fù)。相應(yīng)地,重排的P/I圖象具有正確的PICTURE_START,TEMPORAL_REFERENCE和PICTURE_TYPE值。在圖象層下面的所有其它令牌不被重排。當(dāng)重排后的P/I圖象被讀出以顯示時(shí),它拾取剛被重排的圖象的低級(jí)別非DATA令牌。因而,這些子圖象層的令牌應(yīng)當(dāng)被忽略。A.19.3.8隨機(jī)存取和編輯序列空間解碼器提供設(shè)備以幫助對(duì)于編輯后的MPEG視頻數(shù)據(jù)和經(jīng)隨機(jī)存取以后形成的視頻數(shù)據(jù)進(jìn)行正確的視頻解碼。A.19.3.8.1開放GOP(OpenGops)一圖象組(GOP)可以以B類圖象開始,此B圖象是由前一個(gè)GOP中的P類圖象預(yù)測(cè)得來的,這稱為“OpenGOP”。圖107對(duì)其進(jìn)行了說明。圖17和18是第二個(gè)GOP開始的B圖象。如果COP是“開放”的,那么編碼器可能已經(jīng)使用來自P圖象16和I圖象19的預(yù)測(cè)對(duì)這兩幅圖象進(jìn)行了編碼。作為選擇,編碼器也可以限制于只使用來自I圖象19的預(yù)測(cè)。在這種情況下,第二個(gè)GOP是一個(gè)“關(guān)閉GOP”。如果一個(gè)解碼器在第一個(gè)GOP就開始對(duì)視頻解碼,當(dāng)它遇到第二個(gè)GOP時(shí)將不會(huì)有任何問題,即使GOP是開放的。因?yàn)樗呀?jīng)解碼了P圖象16。然而,如果解碼器進(jìn)行了一次隨機(jī)存取并且在第二個(gè)GOP開始解碼,它將不能解碼B17和B18,如果這兩個(gè)圖象是依靠P16的(也就是說,如果GOP是開放的)。如果本發(fā)明的空間解碼器在一次復(fù)位后遇到的第一個(gè)GOP是開放GOP,或者它接收到一個(gè)FLUSH令牌,它將假定已經(jīng)發(fā)生了一個(gè)對(duì)開放GOP的隨機(jī)存取。在這種情況下,Huffman解碼器將以一般方式為B圖象使用數(shù)據(jù)。然而,它將輸出用(0,0)運(yùn)動(dòng)向量在I圖象外預(yù)測(cè)的B圖象。結(jié)果將是,圖象B17和B18(上例中的)將與I19相同。這種特性保證了MPEGVBV規(guī)則的工作。同時(shí),它保證了B圖象存在于輸出中,且在輸出流中處于其它數(shù)據(jù)通道所期望的位置。例如,MPEG系統(tǒng)層提供了使音頻數(shù)據(jù)與視頻數(shù)據(jù)相聯(lián)系的顯示時(shí)間信息。視頻顯示時(shí)間標(biāo)記指在一個(gè)GOP中第一幅被顯示的圖象,即時(shí)間基準(zhǔn)為0的圖象。在上面的例子中,在對(duì)第二個(gè)GOP進(jìn)行隨機(jī)存取后的第一幅顯示圖象是B17。BROKEN_CLOSED令牌攜帶MPEGclosed_gop位。因此,在時(shí)間解碼器的輸出端可以判斷出,輸出的B圖象是真的或者空間解碼器已經(jīng)引入的“替代品”。在某些應(yīng)用中,當(dāng)這些“替代”圖象出現(xiàn)時(shí)可能希望采取某些特殊測(cè)量。A.19.3.8.2被編輯的視頻如果一個(gè)應(yīng)用對(duì)一MPEG視頻序列進(jìn)行編輯,它可能會(huì)打斷兩個(gè)GOP之間的聯(lián)系。如果GOP在編輯之后是一個(gè)開放GOP,它將不可能正確解碼位于GOP起始處的B圖象。在編輯之后,編輯MPEG數(shù)據(jù)的應(yīng)用可以設(shè)置GOP中的broken_link以指示解碼器它將不能解碼這些B圖象。如果空間解碼器遇到一個(gè)具有一已被打斷的連結(jié)的GOP,Huff-man解碼器將以一般方式為B圖象解碼數(shù)據(jù)。然而,它將輸出用(0,0)運(yùn)動(dòng)向量在I圖象之外預(yù)測(cè)的B圖象。結(jié)果將是。圖象B17和B18(在上例中)將與I19相同。BROKEN_CLOSED令牌攜帶MPEGbroken_link位。因此,在時(shí)間解碼器的輸出端就有可能判斷輸出的B圖象是真的還是由空間解碼器引入的“替代物”。當(dāng)出現(xiàn)“替代”圖象時(shí),某些應(yīng)用可能希望采取某些特殊測(cè)量。A.20遲寫DRAM接口(LateWriteDRAMInterface)接口可以以兩種方法配置·接口的詳細(xì)定時(shí)可以被配置適應(yīng)多種不同的DRAM類型。·DRAM接口的“寬度”可以被配置以提供優(yōu)越的價(jià)格/性能比。表A.20.1DRAM接口信號(hào)表A.20.2DRAM接口配置寄存器(續(xù))表A.20.2DRAM接口配置寄存器(續(xù))表A.20.2DRAM接口配置寄存器(續(xù))A.20.1接口定時(shí)(小標(biāo)記)在本發(fā)明中,DRAM接口定時(shí)來自一個(gè)時(shí)鐘,此時(shí)鐘以四倍于設(shè)備的輸入時(shí)鐘率的速度運(yùn)行(decoder_clock)。這個(gè)時(shí)鐘由一個(gè)芯片上PLL產(chǎn)生。為了簡(jiǎn)便起見,這個(gè)高速時(shí)鐘的周期被稱為小標(biāo)記(tick)。A.20.2接口操作接口使用DRAM快速頁面模式。三種不同類型的存取可被支持·讀·寫·刷新每一讀或?qū)懘嫒魉鸵淮谝粏我籇RAM頁面地址的1到64字節(jié)之間的脈沖。在一個(gè)單一存取中,讀和寫的傳送不相混合。對(duì)于一個(gè)新的DRAM頁面,每次連續(xù)存取都被以一次隨機(jī)存取對(duì)待。A.20.3存取結(jié)構(gòu)每一存取由兩部分構(gòu)成·存取開始·數(shù)據(jù)傳送每一次存取是以一個(gè)存取起始開始,其后跟隨一個(gè)或多個(gè)數(shù)據(jù)傳送周期。存取起始和數(shù)據(jù)傳送周期中的任何一個(gè)都有讀、寫和刷新。在一次存取的最后一個(gè)數(shù)據(jù)傳送的結(jié)尾,接口進(jìn)入其缺省狀態(tài)并保持此狀態(tài),直到一個(gè)新的存取準(zhǔn)備開始。如果當(dāng)上一次存取結(jié)束時(shí)新的存取已做好開始的準(zhǔn)備,那么新的存取將立即開始。A.20.3.1存取起動(dòng)(Accessstart)存取起動(dòng)為讀或?qū)憘魉吞峁╉撁娴刂罚⒔⒛承┢鹗夹盘?hào)條件。有三種不同的存取起動(dòng)·讀起動(dòng)·寫起動(dòng)·刷新起動(dòng)在每種情況下,和行地址時(shí)序都由RAS_falling和page_start_length寄存器控制。和DRAM_data[31∶0]的狀態(tài)將從上一數(shù)據(jù)傳送的結(jié)束一直保持到變成低電平。三種不同的存取起始類型的差異僅在于當(dāng)RAS處于低電平時(shí)它們是如何驅(qū)動(dòng)和DRAM_data[31∶0]的。參見圖109。表A.20.3訪問起動(dòng)參數(shù)a、此值必須小于RAS_falling以確保在前刷新發(fā)生。A.20.3.2數(shù)據(jù)傳送有三種不同類型的數(shù)據(jù)傳送周期·快速頁面讀周期·快速頁面后寫周期·刷新周期一個(gè)刷新起始后面僅有一個(gè)刷新周期。一個(gè)讀(或?qū)?起始后面可以跟隨一個(gè)或多個(gè)快速頁面讀(或?qū)?周期。在讀周期的開始,被驅(qū)動(dòng)為高電平,且新的列地址被驅(qū)動(dòng)。一個(gè)后寫周期被使用。比遲一個(gè)標(biāo)簽被驅(qū)動(dòng)為低電平。輸出數(shù)據(jù)比地址遲一個(gè)小標(biāo)記(Tick)被驅(qū)動(dòng)。由于在刷新周期前的一個(gè)被刷新周期起始所初始化,在刷新周期內(nèi)不存在接口信號(hào)有效。刷新周期的目的在于達(dá)到DRAM所需的最小低電平周期。A.20.3.3接口缺省狀態(tài)在一次存取的結(jié)尾,接口信號(hào)進(jìn)入一缺省狀態(tài)和高電平·數(shù)據(jù)和OE保持其原來狀態(tài)·addr保持穩(wěn)定A.20.4數(shù)據(jù)總線寬度兩位寄存器DRAM_data_width使得DRAM接口數(shù)據(jù)路徑的寬度能被配置。這使得DRAM的價(jià)格在其以小圖象格式工作時(shí)最低。表A20.4設(shè)置DRAM_data_widtha、在復(fù)位后的缺省值b、不使用的信號(hào)保持高阻抗A.20.5地址位一個(gè)24位的地址在芯片上被產(chǎn)生。這個(gè)地址被如何用于形成行和列地址取決于數(shù)據(jù)總線的寬度和為行地址選擇的位數(shù)。某些配置不允許使用所有的內(nèi)部地址位(并因此產(chǎn)生“隱藏位”)。行地址從地址的中間部分抽出。這使DRAM被自然刷新的速率最大。A.20.5.1低位列地址位(Lowordercolumnaddressbits)列地址低4至6位被用于為多達(dá)64字節(jié)的快速頁面模式傳送提供地址。控制傳送所需的地址位數(shù)取決于數(shù)據(jù)總線的寬度(見A.20.4)。A.20.5.2行地址位從24位內(nèi)部地址的中間部分取出的、用于提供行地址的位的數(shù)目由寄存器row_address_bits配置。表A.20.5設(shè)置row_address_bits所使用的行地址的寬度將依賴于所使用的DRAM類型,以及行地址的MSB是否被在芯片外解碼以存取DRAM的多個(gè)體。注意行地址是從內(nèi)部地址的中間抽出的。如果行地址的某些位被解碼以選擇DRAM體,那么這些“體選擇位”的所有可能值必須選擇一個(gè)DRAM體。否則,地址空閫將出現(xiàn)空洞。表A.20.6對(duì)row_address_bits的取值選擇A.20.6DRAM接口使能有兩種辦法可以使DRAM接口上的所有信號(hào)變?yōu)楦咦杩埂RAM_enable寄存器和DRAM_enable信號(hào)。寄存器和信號(hào)兩者對(duì)于DRAM接口都必須是邏輯為1才能運(yùn)行。如果任意一個(gè)為低電平,那么接口就成為高阻抗,且通過接口進(jìn)行的數(shù)據(jù)傳送被中止。提供今DRAM接口采取高阻抗的能力是為了使其它部件在空間解碼器(或時(shí)間解碼器)不被使用時(shí)能測(cè)試或使用由空間解碼器(或時(shí)間解碼器)控制的DRAM。在正常運(yùn)行中,并不希望其它部件來共享存貯器。A.20.7刷新DRAM接口將在由寄存器refresh_interval決定的間歇期內(nèi)用自動(dòng)刷新DRAM,除非由于寫入寄存器no_refesh而使其不能這樣做。refresh_interval內(nèi)的值指明了在一個(gè)具有16個(gè)decoder_clock周期的階段中,刷新周期之間的間隔??梢耘渲脧?到255的值。在復(fù)位之后,0值被自動(dòng)裝載,迫使DRAM接口持續(xù)地執(zhí)行刷新周期(一旦可以執(zhí)行),直到一個(gè)合法的刷新間隔被配置。建議在每次復(fù)位后只對(duì)refresh_interval配置一次。A.20.8信號(hào)強(qiáng)度DRAM接口的輸出驅(qū)動(dòng)強(qiáng)度可由用戶配置,配置時(shí)使用3位寄存器CAS_strength,RAS_strength,addr_strength,DRAM_data_strength,OEWE_strength。這個(gè)3位值的最高有效位的值選擇快速或慢速邊界率。兩個(gè)有效性較低的位對(duì)不同負(fù)載電容的輸出進(jìn)行配置。在復(fù)位之后的缺省強(qiáng)度為6,它配置輸出,如果負(fù)載是12pF的話,GND和VDD之間的驅(qū)動(dòng)信號(hào)大約為10ns。表A.20.7輸出強(qiáng)度設(shè)置a、復(fù)位后缺省值當(dāng)一個(gè)輸出按其驅(qū)動(dòng)的負(fù)載被大致配置,它將符合表A.20.1l至A.20.12中指出的AC電特性。在配置恰當(dāng)時(shí),每一輸出都與其負(fù)載大致匹配,因而在信號(hào)轉(zhuǎn)換后將出現(xiàn)最少的過沖。A.20.9復(fù)位之后復(fù)位之后,DRAM接口配置寄存器將都復(fù)位到它們的缺省值。這些缺省配置中最有意義的是·DRAM接口被使不能且被允許變成高阻抗·刷新間隔新配置為特殊值0,它意味著在接口被重新使能后持續(xù)執(zhí)行刷新周期?!RAM接口被設(shè)置成為其最慢配置。大多數(shù)DRAM在可以進(jìn)行一般操作之前需要在電源被首次施加之后有一個(gè)100μs到500μs之間的“暫?!?,其后是許多刷新周期。在復(fù)位之后,DRAM接口立即處于靜止?fàn)顟B(tài),直到DRAM_enable寄存器和DRAM_enable信號(hào)被設(shè)置。當(dāng)這些被設(shè)置之后,DRAM接口將執(zhí)行刷新周期(約每400ns一次,視所使用的時(shí)鐘頻率而定),直到DRAM接口被配置。用戶應(yīng)當(dāng)負(fù)責(zé)保證DRAM在通電之后的“暫?!币约霸谑鼓蹹RAM接口之后有足夠的時(shí)間,以保證在數(shù)據(jù)傳送之前有所需數(shù)目的刷新周期出現(xiàn)。當(dāng)確認(rèn)復(fù)位后,DRAM接口不能刷新DRAM。然而,解碼器芯片所需的復(fù)位時(shí)間足夠短,因此應(yīng)該可以在DRAM的內(nèi)容消失之前復(fù)位它們,然后重新使能DRAM接口。這在調(diào)試(debugging)過程中可能是需要的。表A.20.8最大額定值表A.20.9DC工作條件a、帶有TBA線狀英尺/分鐘的橫向氣流表A.20.10DC電特性a、AC參數(shù)用VOLmax=0.8V作為測(cè)量電平而被指定b、這是接口的穩(wěn)定狀態(tài)驅(qū)動(dòng)能力,瞬間電流可以大很多。A.20.10.1AC特性表A.20.11對(duì)選通的標(biāo)稱值的差a.信號(hào)的驅(qū)動(dòng)強(qiáng)度必須被配置以適應(yīng)它的負(fù)載。表A.20.12兩個(gè)選通之間標(biāo)稱值的差a、2個(gè)信號(hào)的驅(qū)動(dòng)強(qiáng)度須被配置以適應(yīng)它們的負(fù)載。B.1起始碼檢測(cè)器(StartCodeDetector)B.1.1概述如前在圖11中所示,起始碼檢測(cè)器(SCD)是空間解碼器中的第一個(gè)塊。它的主要用途是在輸入數(shù)據(jù)流中檢測(cè)MPEG,JPEG和H.261的起始碼并用恰當(dāng)?shù)牧钆铺鎿Q它們。它也允許用戶通過微處理器接口訪問輸入數(shù)據(jù)流,并完成預(yù)格式化和“整理”(tidyingup)令牌數(shù)據(jù)流。記住,起始碼檢測(cè)器對(duì)未加工的字節(jié)數(shù)據(jù)或已匯編成令牌格式的數(shù)據(jù)兩者都可以接受。MPEG,H.261和JPEG的典型的起始碼分別為24、16、和8位寬度。起始碼檢測(cè)器對(duì)輸入數(shù)據(jù)按字節(jié)讀取,無論這些數(shù)據(jù)是從微處理器接口(upi)來或從令牌/字節(jié)端口來的,并通過三個(gè)移位寄存器使輸入數(shù)據(jù)移位。第一個(gè)寄存器是8位并行輸入串行輸出。第二個(gè)寄存器可編程長(zhǎng)度為16或24位,在這里起始碼被檢測(cè)。第三個(gè)寄存器寬度為15位,用來把數(shù)據(jù)重新格式化成15位的令牌。還有兩個(gè)“標(biāo)記”移位寄存器(SR)與第二和第三移位寄存器并行運(yùn)行。這些寄存器包含標(biāo)記以指明數(shù)據(jù)寄存器中的有關(guān)位是否良好。到來的字節(jié)不是數(shù)據(jù)令牌的一部分,起始碼檢測(cè)器不能識(shí)別它們。這些字節(jié)被允許繞過移位寄存器,而當(dāng)所有三個(gè)移位寄存器被清除(出空)時(shí)被輸出,這些內(nèi)容成功地被輸出。被識(shí)別的非數(shù)據(jù)令牌用來配置起始碼檢測(cè)器,跳過陷阱,或設(shè)置標(biāo)識(shí)。它們也繞過移位寄存器,并被不改變地輸出。B.1.2主要的電路塊起始碼檢測(cè)器的硬件包括10個(gè)狀態(tài)機(jī)(Statemachines)。B.1.2.1輸入電路(scdipc.sch.iplm.M)輸入電路有三種操作方式令牌、字節(jié)和微處理器接口。這些方式允許數(shù)據(jù)以下面的的任一種形式輸入作為一個(gè)未加工的字節(jié)流(但仍用兩線接口),作為令牌流或由用戶通過微處理器接口輸入。在所有情況下,輸入電路在合適的地方產(chǎn)生數(shù)據(jù)令牌頭,所以它總會(huì)輸出正確的數(shù)據(jù)令牌。轉(zhuǎn)換到微處理器接口方式或從微處理器方式轉(zhuǎn)換到其它方式是與系統(tǒng)時(shí)鐘同步的。微處理器接口可以被強(qiáng)制等待,直到數(shù)據(jù)流中的一個(gè)安全點(diǎn)到達(dá)后才獲得訪問。字節(jié)方式引腳決定輸入電路是在令牌方式還是在字節(jié)方式。此外,在三種方式的任一方式下,都可以做到在開始時(shí)通知系統(tǒng)正要對(duì)哪一種標(biāo)準(zhǔn)譯碼。(因此可產(chǎn)生一個(gè)CODING_STANDARD令牌)。B.1.2.2令牌解碼器(scdipnew.sch,scdipnem.M)此塊解譯到來的令牌并向其它塊發(fā)出命令。表B.1.1所識(shí)別的輸入令牌注在移位寄存器被刷清后,編碼標(biāo)準(zhǔn)的改變將通過兩線接口傳送到所有塊。這樣保證了從一個(gè)數(shù)據(jù)流到另一個(gè)數(shù)據(jù)流的改變發(fā)生在整個(gè)起始碼檢測(cè)器中某個(gè)正確點(diǎn)上。此原則適用于整個(gè)說明,所以編碼標(biāo)準(zhǔn)的改變可在新流之前流過整個(gè)芯片。B.1.2.3JPEG(scdjpeg.schscdjpegm.M)JPEG中的起始碼(標(biāo)志)是很不同的,以致于JPEG有一個(gè)完全屬于它自己的狀態(tài)機(jī)。在本項(xiàng)發(fā)明中,此狀態(tài)機(jī)處理JPEG標(biāo)志的檢測(cè),長(zhǎng)度計(jì)算/校核,和清除數(shù)據(jù)等全部工作。被檢測(cè)到的JPEG標(biāo)志被標(biāo)記為起始碼(帶有v_not_t-見后面的文本),而從scdipnew來的命令被廢棄(overridden)并被迫旁路。最好用代碼來描述其作用過程。switch(state)(case(LOOKlNG):if(input==0×ff{state=GETVALUE;/*Foundamarker*/remove;/*Markergetsremoved*/}state=LOOKING;break;case(GETVALUE);if(input==0×ff){state=GETVALUE;/*Overlappingmarkers*/remove;}elseif(input==0×00){state=LOOKING;/*Wasn’tamarker*/insert(0×ff);/*Putthe0×ffback*/}else{command=BYPASS;/*overridecommand*/if(lc)/*Doesthemarkerhavealengthcount*/state=GETLCO;elsestate=LOOKING;break;case(GETLC0)Ioadlc0;/*Loadthetoplengthcountbyte*/state=GETLCl;remove;break;case(GETLC1)loadlcl;remove;state=DECLC;break;case(DECLC)lcnt=lcnt_2state=CHECKLC;break;case(CHECKLC)if(lcnt==0)state=LOOKING;/*Nomoretodo*/elseif(lcnt<0)state=LOOKING;/*generateIllegal_Lengdth_Error*/elsestate=COUNT;break;case(COUNT)decrementlengthcountuntil1if(lc<1)state=LOOKLNG;B.1.2.4輸入移位器(scinshft.sch,scinshm.M)本塊的基本作用很簡(jiǎn)單。它從輸入電路取數(shù)據(jù)的一個(gè)字節(jié),把它裝入移位寄存器,移位后輸出。然而,它也服從輸入解碼器來的命令,并處理從其它方式到旁路方式或從旁路方式到其它方式的變換(刷清其它移位寄存器)在接受到一個(gè)旁路命令時(shí),不把有關(guān)字節(jié)裝入移位寄存器。而將u垃圾(rubbish)”(tag1)移出,使其它移位寄存器中保留的任何數(shù)據(jù)被迫輸出。然后此塊等待q已刷清開信號(hào),此信號(hào)指明此u垃圾”已出現(xiàn)在令牌重建器。輸入字節(jié)于是直接傳到令牌重建器。B.1.2.5起始碼檢測(cè)器(scdetect.sch,scdetm.M)此塊包括兩個(gè)移位寄存器,起始碼檢測(cè)邏輯和“有效內(nèi)容"檢測(cè)邏輯。兩個(gè)移位寄存器的寬度可編程為16或24位。MPEG起始碼要求全部24位,而H.261只要求16位。在本發(fā)明中,第一個(gè)移位寄存器是為數(shù)據(jù)用的。第二個(gè)移位寄存器攜帶標(biāo)志。這些標(biāo)志表明數(shù)據(jù)移位寄存器中的各位是否有效一在移位寄存器中沒有間隙和停止(從兩線接口的意義上說)。但是當(dāng)它們正被刷清時(shí),它們包含的位可以是無效的(垃圾)。在檢測(cè)到一個(gè)起始碼時(shí),標(biāo)志移位寄存器的一些位被設(shè)置,以便使檢測(cè)器移位寄存器的內(nèi)容為無效。只有在移位寄存器的所有內(nèi)容都有效時(shí)才能檢測(cè)到起始碼。非字節(jié)排列好的起始碼可被檢測(cè)到并被作出標(biāo)記。此外,在檢測(cè)到一個(gè)起始碼時(shí),在重疊起始碼已被校驗(yàn)以前,此起始碼不能被確切地標(biāo)識(shí)。為了實(shí)現(xiàn)這一功能,被檢測(cè)到的起始碼的“值”(跟隨在起始碼之后的一個(gè)字節(jié))被移位,直接經(jīng)過scinshift,scdetect,進(jìn)入scoshift。由于它已經(jīng)到達(dá)scoshift而不去檢測(cè)另一起始碼,重疊的起始碼已被消除。這個(gè)起始碼就被標(biāo)識(shí)為有效起始碼。B.1.2.6輸出移位器(scoshift.sch,scoshm.M)輸出移位器的基本作用是從scdetect取串行數(shù)據(jù)(及標(biāo)記),把數(shù)據(jù)組合(pack)成15位字并輸出。其它功能為B.1.2.6.1數(shù)據(jù)填充(Datapadding)輸出由15位字所組成,但輸入?yún)s可以是任意位數(shù)。所以為了刷清(flush),需要增加位數(shù)使最后的字達(dá)到15位。這些額外的位稱作填充,它們必須被霍夫曼(Huffman)塊識(shí)別并清除。填充被定義為在數(shù)據(jù)的最后一位以后,插入一個(gè)“零”,后面隨著足夠多的“1”,形成一個(gè)15位的字。包含填充的數(shù)據(jù)字輸出時(shí)帶有一個(gè)低擴(kuò)展位,表明它是數(shù)據(jù)令牌的結(jié)尾。B.1.2.6.2“已刷清”(flushed)的產(chǎn)生根據(jù)此項(xiàng)發(fā)明,產(chǎn)生“已刷清”信號(hào)的作用包括檢測(cè)所有移位寄存器都被刷清的時(shí)刻,并對(duì)輸入移位寄存器發(fā)信號(hào)。當(dāng)輸入移位器插入的“垃圾”達(dá)到輸出移位器的終點(diǎn),而輸出移位寄存器已完成它的填充時(shí),就產(chǎn)生一個(gè)“已刷清”信號(hào)。在輸入移位器能安全進(jìn)入旁路方式以前,此“已刷清”信號(hào)必須通過令牌重建器。B.1.2.6.3有效起始碼的標(biāo)識(shí)如果scdetect表明它已發(fā)現(xiàn)一起始碼,填充被完成,當(dāng)前數(shù)據(jù)被輸出。起始碼的值(下一字節(jié))通過檢測(cè)器被移位,以消除重疊起始碼。如果此“值”達(dá)到輸出移位器時(shí),沒有檢測(cè)到其它起始碼,則它不被重疊。此值將帶著v_not_t(ValueNot.Token)標(biāo)識(shí)輸出,以表明它是一個(gè)起始碼值。但是,如當(dāng)輸出移位器正等待該值時(shí),檢測(cè)到另一起始碼(用scdetect檢測(cè)到),則產(chǎn)生一重疊起始(overlapping_start_error)錯(cuò)誤。在此情況下,第一個(gè)值被作廢,系統(tǒng)隨后等待第二個(gè)值。第二個(gè)值也可能被重疊。這樣重復(fù)以上步驟,直到發(fā)現(xiàn)一個(gè)未重疊的起始碼為止。B.1.2.6.4起始碼以后的整理工作在已檢測(cè)到并輸出了一個(gè)好的起始碼以后,當(dāng)數(shù)據(jù)(不是垃圾)開始到達(dá)時(shí),產(chǎn)生一新數(shù)據(jù)頭。B.1.2.7數(shù)據(jù)流重建器(sctokrec.sch,sctokrem.M)數(shù)據(jù)流重建器有雙線接口輸入一個(gè)為旁路的令牌從scinshift輸入,另一個(gè)為組合數(shù)據(jù)和啟始碼從scoshift輸入。只有當(dāng)前令牌(從兩個(gè)來源中的任一個(gè))已被完成(低擴(kuò)展位已到達(dá))時(shí),才允許在兩個(gè)來源之間交換。B.1.2.8起始值轉(zhuǎn)換成起始號(hào)(scdromhw.sch,schrom.M)把起始值變換為令牌的步驟分為兩步。本塊主要處理依賴編碼標(biāo)準(zhǔn)的問題,它把520多個(gè)可能的碼減少到16個(gè)與編碼標(biāo)準(zhǔn)無關(guān)的索引號(hào)。如前所述,起始值(包括JPEG的起始值)和所有其它數(shù)值的不同處在于標(biāo)記(Value_not_token)。如v_not_t是高,本塊就根據(jù)CODING_STANDARD把4位或8位值變換為與標(biāo)準(zhǔn)無關(guān)的4位起始號(hào),并對(duì)任何未被識(shí)別的起始碼作出標(biāo)識(shí)。起始碼號(hào)列出如下表B.1.2起始碼號(hào)(索引)表B.1.2起始碼號(hào)(索引)B.1.2.9起始碼號(hào)到令牌的轉(zhuǎn)換(sconvert.sch,sconverm.M)變換的第二步是把上述的起始碼號(hào)(或索引)轉(zhuǎn)換成令牌。在合適的地方本塊也處理令牌擴(kuò)展,廢棄擴(kuò)展,用戶數(shù)據(jù)和檢索方式。檢索方式是在某一隨機(jī)點(diǎn)進(jìn)入數(shù)據(jù)流的一種方法。檢索方式可被設(shè)置為下面八個(gè)值之一0正常操作——查找下一起始碼。1/2未在空間解碼器上實(shí)現(xiàn)的系統(tǒng)的級(jí)檢索。3檢索序列或更高者4檢索組或更高者5檢索圖象或更高者6檢索片(slice)或更高者7檢索下一起始碼在需要的起始碼(或句法上(inthesyntax)的更高者)被檢測(cè)到以前,任何非零檢索方式都使數(shù)據(jù)被廢棄。此部件也對(duì)圖和片的起始令牌加上令牌擴(kuò)展PICTURE_START用PICTURE_NUMBER作為擴(kuò)展。PICTURE_NUMBER是圖象的一個(gè)四位的計(jì)數(shù)值。SLICE_START用SVP(片垂直位置)作為擴(kuò)展。它是起始碼的u值”減1(MPEG,H.261),或是起始碼的u值”減OXDO(JPEG)。B.1.2.10數(shù)據(jù)流的格式化(scinsert.sch,scinserx.M)在本項(xiàng)發(fā)明中,數(shù)據(jù)流的格式化關(guān)與PICTURE_END,F(xiàn)LUSH,CODING_STANDARD,SEQUENCE_START令牌的有條件插入和STOP_AFTER_PICTURE事件的產(chǎn)生有關(guān)。它的功能最好用下面的軟件加以簡(jiǎn)化和描述switch(input_data)case(FLUSH)1.if(in_picture)output=PICTURE_END2.output=FLUSH3.if(in_picture&stop_after_picture)sap_error=HIGHin_picture=FALSE;4.in_picture=FALSE;breakcase(SEQUENCE_START)1.if(in_picture)output=PICTURE_END2.if(in_picture&stop_after_picture)2a.output=FLUSH2b.sap_error=HIGHin_picture=FALSE3.output=CODING_STANDARD4.output=standard5.output=SEQUENCE_START6.in_picture=FALSE;breakcase(SEQUECE_END)case(GROUP_START)1.if(in_picture)output=PICTURE_END2.if(in_picture&stop_after_picture)2a.output=FLUSH2b.sap_error=HIGHin_picture=FALSE3.output=SEQUENCE_ENDorGROUP_START4.in_picture=FALSE;breakcase(PICTURE_END)1.output=PICTURE_END2.if(stop_after_picture)2a.output=FLUSH2b.sap_error=HIGH3.in_picture=FALSEbreakcase(PICTURE_START)1.if(in_picture)output=PICTURE_END2.if(in_picture&stop_after_picture)2a.output=FLUSH2b.sap_error=HIGH3.if(insert_sequence_starx)3a.output=CODING_STANDARD3b.output=standard3c.output=SEQUENCE_STARTinsert_sequence_start=FALSE4.output=PICTURE_STARTin_picture=TRUEbreakdefaultJustpassitthroughB.2霍夫曼(Huffman)解碼器和ParserB.2.1引言本節(jié)按照本項(xiàng)發(fā)明描述Huffman解碼器和Parser電路。圖118是Huffman解碼器和Parser的高級(jí)框圖。為了清晰起見,許多信號(hào)和總線在此圖上都被略去了,特別是在數(shù)據(jù)被向后饋送的幾個(gè)地方(在圖示的大循環(huán)之內(nèi))。實(shí)質(zhì)上,本項(xiàng)發(fā)明的Huffman解碼器和Parser由許多專用處理部件組成(沿圖的底部示出)。這些部件被一可編程狀態(tài)機(jī)所控制。用“輸入移位”塊從已編碼數(shù)據(jù)緩存器中接受數(shù)據(jù)。在這里,主要將遇到兩類信息已編碼數(shù)據(jù)和起始碼。已編碼數(shù)據(jù)由數(shù)據(jù)令牌所攜帶的。起始碼已被起始碼檢測(cè)器用它們各自的令牌所替換。也可能遇到其它令牌,但所有令牌(除數(shù)據(jù)令牌以外)都被同樣對(duì)待。令牌(起始碼)作為特殊情況對(duì)待,數(shù)據(jù)的絕大多數(shù)仍將被編碼(在H.261,JPEG或MPEG中)。在本項(xiàng)發(fā)明中,由數(shù)據(jù)令牌攜帶的所有數(shù)據(jù)被傳送到Huffman解碼器,它們是用串行方式(一位一位)地傳送的。當(dāng)然,此數(shù)據(jù)包括許多不是Huffman編碼的字段,但它們是以固定長(zhǎng)度編碼的。然而,這個(gè)數(shù)據(jù)仍以串行方式送到Huffman解碼器。如果是Huffman編碼數(shù)據(jù),則Huffman解碼器只完成解碼的第一步。在這一步中,真正的Huffman碼被一索引號(hào)所代替。如果在要解碼的特定碼表中有N個(gè)不同的Huffman碼,則這個(gè)“Huffman索引"在。到N-1的范圍內(nèi)。另外,Huffman解碼器有一種“noop”,即“不操作”方式。此方式允許Huffman解碼器對(duì)數(shù)據(jù)或令牌信息不作任何處理而傳送到下一級(jí)去。數(shù)據(jù)索引單元(IndextoDataUnit)是線路中相對(duì)簡(jiǎn)單的一個(gè)塊。它完成查找表操作。它從Huffman解碼處理的第二級(jí)中得出它的名字。在這一級(jí)中,由Huffman解碼器中得到的索引號(hào)用一簡(jiǎn)單的查找表變換成真正的已解碼數(shù)據(jù)。數(shù)據(jù)索引單元與Huffman解碼器合作,作為單一邏輯單元工作。下一個(gè)塊是ALU,它用來實(shí)現(xiàn)對(duì)已解碼數(shù)據(jù)的其它變換。數(shù)據(jù)索引單元適宜作相對(duì)地任意映射,ALU可用在算法更合適的地方。ALU包含一個(gè)寄存器組。ALU能操作它來實(shí)現(xiàn)解碼算法的各種部分。特別是保持矢量預(yù)測(cè)和DC預(yù)測(cè)的寄存器也包含在這塊中。ALU基于一帶操作數(shù)選擇邏輯的簡(jiǎn)單加法器。它也包含符號(hào)擴(kuò)展類型運(yùn)算的專用電路。很可能提供移位操作,但這可能在串行方式下完成,不會(huì)有桶形移位器(barrelshifter)。按照本項(xiàng)發(fā)明,令牌格式化器是視頻Parser的最后部分。其任務(wù)是把已解碼的數(shù)據(jù)最后地裝配到令牌。這些令牌可被傳送到解碼器的其余部分。至此,解碼器為這幅特定圖象要用到的令牌全都有了。Parser狀態(tài)機(jī)寬度為18位,為了與雙線接口一起工作而采用它。其任務(wù)是協(xié)調(diào)其它部件的操作。實(shí)質(zhì)上,它是一個(gè)很簡(jiǎn)單的狀態(tài)機(jī),它產(chǎn)生一很寬的“微碼”控制字。此控制字被傳送到其它部件。圖118表明指令字與數(shù)據(jù)一起從一個(gè)塊傳送到另一塊。情況確實(shí)是這樣。了解通過雙線接口控制不同塊之間的傳輸是很重要的。在本項(xiàng)發(fā)明中,在視頻Parser中每個(gè)塊之間有一個(gè)雙線接口。另外,Huffman解碼器對(duì)串行數(shù)據(jù),即輸入移位器(inshifter)一次一位地輸入數(shù)據(jù),和控制令牌這兩者都可工作。相應(yīng)地,有兩種操作方式。如通過數(shù)據(jù)令牌對(duì)Huffman解碼器輸入數(shù)據(jù),則數(shù)據(jù)一次一位地通過移位器。再有,在輸入移位器和Huffman解碼器之間有兩線接口。然而,其它令牌不是一次一位(串行)移位的,而是在令牌的頭部移位。如輸入一個(gè)數(shù)據(jù)令牌,則包含地址信息的頭部被刪除,在地址后面的數(shù)據(jù)被一次一位地移位。如輸入不是一個(gè)數(shù)據(jù)令牌,則整個(gè)令牌,即頭部和全體,立即全都送到Huffman解碼器。在本項(xiàng)發(fā)明中,了解視頻Parser的兩線接口的與眾不同在于它有兩根有效線。這一點(diǎn)是重要的。一根線是串行有效,另一根線是令牌有效。另外,兩根線不能被同時(shí)確認(rèn)。一根或另一根可以被認(rèn)定,或者,如不存在有效數(shù)據(jù),則雖有兩根有效線,兩者都不可能被認(rèn)定。應(yīng)該知道,在另一方向只有一根接受線。然而,這不是一個(gè)問題。Huffman解碼器知道它需要串行數(shù)據(jù)還是令牌信息,這取決于當(dāng)前語法下一步該做什么。因而,有效信號(hào)和接受信號(hào)被相應(yīng)地設(shè)置。從Huffman解碼器送一個(gè)接受信號(hào)Accept到輸入移位器(inshifters)。如果有合適的數(shù)據(jù)或令牌存在,輸入移位器就送出一個(gè)有效信號(hào)。例如,一個(gè)典型的指令可以對(duì)一個(gè)Huffman碼解碼,在數(shù)據(jù)索引單元theIndextoDataUnit中對(duì)它作變換,在ALU中修改其結(jié)果,然后此結(jié)果被形成一個(gè)令牌字。一個(gè)單一的微碼指令字被產(chǎn)生。這個(gè)字包含了做這項(xiàng)工作的全部信息。命令直接送到Huffman解碼器,后者請(qǐng)求從“輸入移位器”部件傳來的數(shù)據(jù)一位一位地傳送,直到它把一個(gè)完整的符號(hào)解碼完畢??刂屏钆剖遣⑿休斎氲?。一旦有輸入時(shí),已解碼的索引值和原來的微碼字一起被傳送到數(shù)據(jù)索引單元(theIndextoDataUnit)。注意,Huffman解碼器將需要幾個(gè)周期來完成這項(xiàng)操作。實(shí)際上,需要的周期數(shù)確實(shí)是由要被解碼的數(shù)據(jù)決定的。數(shù)據(jù)索引單元將用一張表來映射這個(gè)值。這張表在微碼指令字中被識(shí)別。此值又被傳送到下一個(gè)部件,ALU。原來的微碼字被一起傳送過去。一旦ALU完成了適當(dāng)?shù)牟僮?周期數(shù)又可與數(shù)據(jù)有關(guān)),就把合適的數(shù)據(jù)和微碼字一起傳送到令牌格式化部分。微碼字控制令牌字形成的方式。ALU有許多狀態(tài)線或稱“條件碼”,這些碼送回到Parser狀態(tài)機(jī)。這就允許該狀態(tài)機(jī)執(zhí)行條件轉(zhuǎn)移指令。實(shí)際上,所有指令都是條件轉(zhuǎn)移指令??蛇x擇的條件之一是硬接線到“False(假)”。用選擇這一條件的方法,可構(gòu)成一“非轉(zhuǎn)移”指令。按照本項(xiàng)發(fā)明,令牌格式化器有兩個(gè)輸入從ALU來的一個(gè)數(shù)據(jù)字段和/或從Parser狀態(tài)機(jī)來的常數(shù)字段。另外,有一個(gè)指令,它告訴令牌格式化器從一個(gè)源應(yīng)取多少位,然后從另一源取來總共湊足8位時(shí)所需的其它位。例如,HORIZONTAL_SIZE有一個(gè)8位字段,它是一個(gè)不變的地址,表明它是一個(gè)HORIZONTAL_SIZE令牌。在這一情況下,8位都從常數(shù)字段來,沒有數(shù)據(jù)從ALU來。然而,如果是一個(gè)數(shù)據(jù)令牌,大概將有6位從常數(shù)字段來,而表明彩色分量的低兩位則從ALU來。相應(yīng)地,令牌格式化器取此信息并把它放入一令牌,以供系統(tǒng)的其它部分所用。注意,上例中來自每個(gè)源的位數(shù)只是為了說明的目的,一個(gè)對(duì)本行具有一般技能的人會(huì)理解到,任一源來的位數(shù)都是可變的。ALU有一組(bank)計(jì)數(shù)器。計(jì)數(shù)器用來對(duì)整個(gè)圖象的構(gòu)造計(jì)數(shù)。圖象的尺寸被編程送入與計(jì)數(shù)器有關(guān)的寄存器?!拔⒊绦蛟O(shè)計(jì)員”把這些計(jì)數(shù)器看作寄存器組的一部分。若干條件碼是從這個(gè)計(jì)數(shù)器組輸出的。計(jì)數(shù)器組允許基于“圖象開始”“宏塊開始”等情況的條件轉(zhuǎn)移。注意,Parser狀態(tài)機(jī)也稱作“多路分路狀態(tài)機(jī)“DemultiplexStateMachine”。本文件中兩個(gè)名詞都用。輸入移位器在本項(xiàng)發(fā)明中,輸入移位器是線路中很簡(jiǎn)單的一塊。它由兩級(jí)流水線數(shù)據(jù)通路(“hfidp”)和控制用的Zcells(“hfi”)組成。在第一級(jí)流水線,進(jìn)行令牌解碼。在這一級(jí)只有數(shù)據(jù)令牌可被識(shí)別。數(shù)據(jù)令牌中包含的數(shù)據(jù)一次一位地移入Huffman解碼器。第二級(jí)流水線是移位寄存器。在數(shù)據(jù)令牌最末后的字中采用了特殊編碼,所以可能通過已編碼數(shù)據(jù)緩存器發(fā)送任意數(shù)目的位。下面是最后數(shù)據(jù)字的所有可能的模式。表B.2.1在最后數(shù)字位中的可能模型當(dāng)在移位寄存器中,數(shù)據(jù)位一位一位向左移時(shí),“0后跟隨的都是1”的位模式是期待的(填充)。這表明在移位寄存器中剩余的各位是無效的。他們被廢棄。注意,這一動(dòng)作只發(fā)生在數(shù)據(jù)令牌的最后字。如前所述,所有其它令牌是并行傳入Huffman解碼器的。他們?nèi)耘f被裝入第二級(jí)流水線,但不發(fā)生位移。注意,數(shù)據(jù)頭被廢棄,完全不送到Huffman解碼器。提供兩條“有效”線(out_valid和serial_valid)。在給定時(shí)間只有一條線被認(rèn)定,它表明在該時(shí)刻哪種類型的數(shù)據(jù)被提供。B.2.2Huffman解碼器Huffman解碼器有許多操作方式。最顯著的是它能對(duì)Huffman碼解碼,把它們變成Huffman索引號(hào)。另外,它能對(duì)其長(zhǎng)度(以一些位表示)由指令字決定的固定長(zhǎng)碼解碼。Huffman解碼器也從輸入移位(inshift)塊接受令牌。Huffman解碼器包含一很小的狀態(tài)機(jī)。它在對(duì)塊級(jí)(block-level)信息解碼時(shí)使用。這是因?yàn)镻arser狀態(tài)機(jī)作出決定所需要的時(shí)間太長(zhǎng)。(因?yàn)樗仨毜葦?shù)據(jù)流過數(shù)據(jù)索引單元(theIndextoDataUnit)和ALU以后,才能對(duì)該數(shù)據(jù)作出決定并發(fā)出一條新命令)。在使用本狀態(tài)機(jī)時(shí),Huffman解碼器自己向數(shù)據(jù)索引單元和ALU發(fā)命令。Huffman解碼器的狀態(tài)機(jī)不能控制所有的微碼指令位,所以它不能對(duì)其它部件發(fā)出全范圍的命令。B.2.2.1操作原理本項(xiàng)發(fā)明的Huffman解碼器在解Huffman碼時(shí),采用一種計(jì)算方法把到來的碼解碼成Huffman索引號(hào)。這個(gè)號(hào)在0到N-1之間(對(duì)一個(gè)有N個(gè)項(xiàng)(entries)的碼表)。從輸入移位器一位一位地接收位信號(hào)。為了便于控制機(jī)構(gòu)的操作,需要許多表。這些表規(guī)定對(duì)于一個(gè)碼中每個(gè)可能的位數(shù)(1到16位),具有該長(zhǎng)度的碼有多少個(gè)??梢粤系?,這個(gè)信息用來規(guī)定一個(gè)普通的Huffman碼在典型情況下是不夠充分的。然而,在MPEG,H.261和JPEG中,選用的是Huffman碼,以致單是這一信息就能夠規(guī)定Huffman碼表。對(duì)此只有一個(gè)不幸的例外從H.261來的T系數(shù)表(TCoeefficienttable)。此表也用在MPEG中。這就要求有一張附加的表,此表在別處被說明。(在H.261中有意引入這個(gè)例外,以避免起始碼仿效)。Huffman解碼器中所用的一些表與在JPEG中傳送的表精確地相同,了解這一點(diǎn)是很重要的。這就允許直接使用這些表。而如果是其它Huffman解碼器設(shè)計(jì),則將要求從傳送的表生成內(nèi)部表。這種轉(zhuǎn)換就可能要求額外的存儲(chǔ)器和額外的處理。因?yàn)樵贛PEG和H.261(它具有上述的例外)中的表可以用同樣方式描述,一個(gè)多標(biāo)準(zhǔn)解碼器變成可實(shí)行的了。下面的一段“u”程序說明解碼過程inttotal=0;ints=0;intbit=0;unsignedlongcode=0;intindex=0;while(index>=total){if(bit>=max_bits)fail(“huffdecode:ranoffendofhufftable\n”);code=(code<<1)Inext_bit0;index=code-s+total;total+=codes_per_bit(bit);s=(s+codes_per_bit(bit))<<1;bit++;}一般說,此過程被直接變換成硅片的實(shí)現(xiàn),雖然還可利用這樣的事實(shí),即在需要某些中間數(shù)值之前,可以先以時(shí)鐘相位將它們計(jì)算出來。從源碼段我們看到EQ1.totaln+1=totaln+cpbnEQ2.′sn+1=2(′sn+cpbn)EQ3.coden+1=2coden+bitnEQ4.indexn+1=2coden+bitn+totaln-′sn然而,在硬件中證明一個(gè)修改過的方程組更容易使用。在此方程組中變量“shifted”被用來代替變量“s”。在這一情況下EQ5.shinedn+1=2shinedn+cpbn其結(jié)果是EQ6.3n=2shinedn將它如此地代回方程4,可看出EQ7.indexn+1=2(coden-shiftedn)+totaln+bitn除了計(jì)算連續(xù)的“索引”值以外,還必須知道計(jì)算何時(shí)完成。從“c”源碼段,可看出當(dāng)EQ8.indexn+1<totaln+1時(shí)我們就完成了。用公式7和公式1代入,可看出,當(dāng)EQ9.2(coden-shinedn)+bitn-cpbn<0時(shí),我們就完成了。在本發(fā)明的硬件實(shí)施過程中,方程7和方程9中的公共項(xiàng)(coden-shiftedn)比這些方程的其余部分先一相位計(jì)算,以給出最后結(jié)果和計(jì)算“已完成”的信息。一點(diǎn)警告在不同的“c”碼片段中,特別在特性編譯碼(behavioralcompiledcode)Huffman解碼器和在Sm4code方案(projects)中,“c”程序段幾乎是直接被使用的,但變量“us”實(shí)際上被稱作“shifted”。所以有兩個(gè)不同的變量被稱作“shifted”。一個(gè)是在“c”碼中,而另一個(gè)是在硬件實(shí)現(xiàn)中。這兩個(gè)變量相差一個(gè)因子2。B.2.2.1.1數(shù)據(jù)位的取反(inverting)對(duì)Huffman碼正確解碼還需要另外一點(diǎn)知識(shí)。這就是已編碼數(shù)據(jù)的極性。原來H.261和JPEG采用相反的約定。它本身反映在這一事實(shí)中,H.261的起始碼各位為0,而在JPEG中的標(biāo)志字節(jié)各位為1。為了對(duì)兩種約定都能處理,當(dāng)已編碼數(shù)據(jù)被讀PkHuffman解碼器時(shí),必須把已編碼數(shù)據(jù)的各位取反,以便對(duì)H.261風(fēng)格的Huffman碼解碼。顯而易見,用一個(gè)異或門就可完成。注意只對(duì)Huffman碼翻轉(zhuǎn),在對(duì)固定長(zhǎng)碼解碼時(shí)數(shù)據(jù)是不反相的。MPEG采用兩種約定的混合。對(duì)從H.261來的方式,采用H.261的協(xié)定。對(duì)那些從JPEG來的(DC內(nèi)部系數(shù)的解碼),采用JPEG協(xié)定。B.2.2.1.2變換系數(shù)表使用H.261及MPEG中的變換系數(shù)表時(shí),會(huì)有若干異常情況。首先,MPEG中的表是H.261表的一個(gè)超集(super-set)。在本發(fā)明的硬件實(shí)現(xiàn)中對(duì)這兩種標(biāo)準(zhǔn)不分彼此;這意味著,含有來自表的擴(kuò)展部的碼(即MPEG碼)的H.261碼流將被“正確”地解碼。當(dāng)然,壓縮標(biāo)準(zhǔn)的其它方面很可能受損。例如這些擴(kuò)展碼會(huì)在H.261內(nèi)引發(fā)起始碼的仿真。其次,變換系數(shù)表具有一種異常,該異常在碼長(zhǎng)為六位時(shí)出現(xiàn),它意味著不能正常地用按位碼(codes_per_bit)表來描述。這些六位碼字有規(guī)則地被代用碼字所代替。在編碼器中,首先以正常方式編碼獲得正確結(jié)果。然后,對(duì)于所有六位或更長(zhǎng)的碼,用一次簡(jiǎn)單的查表操作將其前六位用另外的六位替代。根據(jù)本發(fā)明,在解碼器中,就在第六位解出之前,解碼過程中斷,使用查表方法替換碼字,然后繼續(xù)解碼。在本情況下,只有十種可能出現(xiàn)的六位碼,因而所需的查找表容量極小。對(duì)操作更為有利的是,經(jīng)過操作之后,碼的高兩位不變。因此無必要使用真的查找表,由少量門搭成的電路即可完成適當(dāng)?shù)淖儞Q。做此工作的模塊稱作“hftcfrng”。這種類型碼的替換在此可稱為“環(huán)”,因?yàn)榭赡艽a集的每個(gè)碼都用該集另一個(gè)碼替代(不引入新碼,也不消去舊碼)。此外,對(duì)塊首第一個(gè)系數(shù)使用了獨(dú)特的實(shí)現(xiàn)方法。既然如此,就不可能出現(xiàn)‘本塊終止’的碼,因此,對(duì)變換系數(shù)表進(jìn)行了改進(jìn),使得最經(jīng)常出現(xiàn)的符號(hào)可以使用這個(gè)在其它情況下被認(rèn)為是本塊終止的碼。這就可以省去一位。結(jié)果表明,使用本發(fā)明的解碼結(jié)構(gòu)體系,容易適應(yīng)上述改進(jìn)。簡(jiǎn)言之,對(duì)于第一系數(shù)的第一位,如果“索引”(“index“)為零值,則認(rèn)為解碼“已經(jīng)完成”。此外,對(duì)單獨(dú)的一位解碼之后,“索引“只有兩個(gè)可能值,不是0就是1,只須測(cè)試一位即可。B.2.2.1.3寄存器和加法器的位數(shù)本發(fā)明的Huffman解碼器可處理可能長(zhǎng)達(dá)16位的Huffman碼。然而,解碼機(jī)只有8位寬度。這是可能做到的,因?yàn)橐阎慕獬龅腍uffman索引的最大值是255。事實(shí)上,這只在擴(kuò)展的JPEG中才出現(xiàn);在當(dāng)前應(yīng)用中,最大極限比此稍低(但是大于128,因此7位仍嫌不足)。結(jié)果表明,對(duì)于所有合法的Huffman碼,不但“索引”的最終值,而且所有中間值也都在0至255的范圍內(nèi)。但是,對(duì)于非法碼,即企圖對(duì)一個(gè)不在當(dāng)前碼表內(nèi)的碼進(jìn)行解碼時(shí)(該碼可能因數(shù)據(jù)出錯(cuò)所致),索引值就可能超出255。由于我們用的是八位機(jī),有可能在譯碼終了時(shí),因?yàn)楦嬷鲥e(cuò)的各較高有效位被丟棄,“索引”的終值并未超出255。因此在解碼中不論何時(shí)如果指數(shù)值大于255(即形成索引的加法器進(jìn)位),就出現(xiàn)錯(cuò)誤并放棄解碼?!按a”的12位被保存下來。對(duì)于譯Huffman碼來說,這并無必要,8位寄存器本應(yīng)已經(jīng)夠用。需要這些高位是為了可以讀出多至12位的固定長(zhǎng)度碼。B.2.2.1.4對(duì)于固定長(zhǎng)度碼的操作就固定長(zhǎng)度的碼而言,“按位碼竹的值強(qiáng)制為零。這就是說,“total”和“shifted”在整個(gè)操作過程中保持為零,因而“index”與碼相同。事實(shí)上,加法器等等只準(zhǔn)為“index”產(chǎn)生一個(gè)8位的值。因此,在對(duì)固定長(zhǎng)度碼解碼時(shí),輸出字的各個(gè)高位直接取自“碼”寄存器。當(dāng)解Huffman碼時(shí),這些高位被強(qiáng)制為零。以明顯的方式推測(cè)是否已從輸入端讀取足夠的位數(shù)。比較器將所希望的位數(shù)與“位”計(jì)數(shù)器相比較。B.2.2.2對(duì)系數(shù)數(shù)據(jù)的譯碼根據(jù)本發(fā)明,Parser狀態(tài)機(jī)一般只用于相當(dāng)高級(jí)的解碼。8乘8數(shù)據(jù)塊以內(nèi)的最低級(jí)譯碼,不用該狀態(tài)機(jī)直接處理。Parser狀態(tài)機(jī)以“對(duì)一個(gè)塊進(jìn)行解碼”的形式向Huffman解碼器發(fā)命令。在一個(gè)專用的狀態(tài)機(jī)(實(shí)質(zhì)上它在Huffman解碼器之內(nèi))的控制下,Huffman解碼器、數(shù)據(jù)索引單元(IndextoDataUnit)和算述邏輯單元協(xié)調(diào)一致地工作。這種安排容許對(duì)以熵編碼的系數(shù)數(shù)據(jù)進(jìn)行性能極高的解碼。在這種操作方式下,還有另外一些反饋路徑在起作用。例如在對(duì)VLC解碼以獲得SIZE(碼寬)和RUN(運(yùn)行)信息的JPEG的解碼中,SIZE信息直接由數(shù)據(jù)索引單元的輸出反饋至Huffman譯碼器,以告知Huffman解碼器有多少FLC位要讀。此外,還有若干加速器作補(bǔ)充。例如,用同一個(gè)例子,在數(shù)據(jù)索引單元這一級(jí)之前觀察Huffman索引值,用這種方法抑制所有VLC值產(chǎn)生SIZE為零值。這就是說,只要SIZE值非零,Huffman解碼器可以在獲知SIZE的實(shí)際值之前就進(jìn)行讀取FLC的一位。也就是說,不浪費(fèi)時(shí)鐘周期,因?yàn)樽xFLC第一位與在數(shù)據(jù)索引單元內(nèi)完成查找所需的單個(gè)時(shí)鐘周期相重疊。B.2.2.2.1MPEG與H.261AC系數(shù)數(shù)據(jù)圖127表示在MPEG及H.261中AC系數(shù)的解碼方法。展示Huffman解碼器操作詳情的流程圖見圖119。過程從讀取VLC碼開始。在事件的正常進(jìn)程中,Huffman索引被直接映射成表示六位RUN和表示系數(shù)絕對(duì)數(shù)的值。然后讀取一位FLC以給出系數(shù)的符號(hào)。ALU將該符號(hào)位與系數(shù)絕對(duì)值組合,得到系數(shù)的終值。注意,此處的數(shù)據(jù)格式為符號(hào)一數(shù)值,這一操作不會(huì)有什么困難。RUN值被轉(zhuǎn)送到六位輔助總線,而系數(shù)值(LEVEL)則送到正常的數(shù)據(jù)總線。存在兩種特殊情況且在由索引變?yōu)閿?shù)據(jù)的操作之前先觀察經(jīng)過解碼的索引值,這兩種情況會(huì)入陷,它們是塊終止(EOB)和ESC(Escape)編碼數(shù)據(jù)。如果是EOB,出現(xiàn)此情況的事實(shí)傳入數(shù)據(jù)索引單元及ALU單元,所以令牌格式化器(TokenFormatter)可以正確地關(guān)閉開著的DATA令牌。Escape編碼數(shù)據(jù)較為復(fù)雜。RUN的首六位被讀取,并直接傳入數(shù)據(jù)索引單元并存入ALU單元。然后讀取FLC的一位。這就是在MPEG及H.261中描述的8位Escape碼的最高有效位,它給出電平(level)的符號(hào)。符號(hào)直接讀入本裝置,這是因?yàn)閷?duì)于負(fù)值和正值,必須向ALU發(fā)出不同的命令,從而容許ALU將位流中二的補(bǔ)碼值變換為符號(hào)數(shù)值。不論是正是負(fù),接著讀取FLC的余下七位。如果其值為零,就必須再讀8位。在本發(fā)明中,Huffman譯碼器的內(nèi)部狀態(tài)機(jī)負(fù)責(zé)產(chǎn)生既控制自己也控制數(shù)據(jù)索引單元、ALU及令牌格式化器的各種命令。如圖124所示,Huffman解碼器的指令來源于下列三者之一Parser狀態(tài)機(jī),Huffman狀態(tài)機(jī),貯存在某寄存器中的一條指令而該指令此前從Parser狀態(tài)機(jī)接收。簡(jiǎn)而言之,來自Parser狀態(tài)機(jī)的原始指令(它使Huffman狀態(tài)機(jī)接過控制并讀取系數(shù)值)保留在寄存器內(nèi),即每次需要新VLC時(shí)就用到它。譯碼用的所有其余的指令都由Huffman狀態(tài)機(jī)提供。B.2.2.2.2MPEGDC系數(shù)數(shù)據(jù)這些數(shù)據(jù)的處理方法同JPEGDC系數(shù)數(shù)據(jù)。使用相同的(可裝入)表,由控制的微處理器負(fù)責(zé)確保各表的內(nèi)容正確。與MPEG標(biāo)準(zhǔn)的唯一真正差別在于各個(gè)予測(cè)器復(fù)位至零(如同在JPEG內(nèi)),而為此進(jìn)行的校正則在反向量化器中完成。B.2.2.2.3JPEG系數(shù)數(shù)據(jù)圖120是本發(fā)明對(duì)JPEGAC系數(shù)解碼的硬件框圖。由于DC系數(shù)的過程在本質(zhì)上是JPEG過程的簡(jiǎn)化,本方塊圖對(duì)AC及DC系數(shù)均適用。對(duì)前述MPEGAC系數(shù)方塊圖的唯一真正補(bǔ)充是,“SSSS”字段被反饋回來而可能被當(dāng)作Huffman解碼器命令的部分,以規(guī)定要讀取的FLC位數(shù)。命令的余部由Huffman狀態(tài)機(jī)提供。圖121展示對(duì)AC和DC系數(shù)作Huffman解碼的流程圖。首先來處理AC系數(shù)的解碼過程。本過程從使用適當(dāng)?shù)谋?有兩張AC表)讀取一個(gè)VLC值開始。在數(shù)據(jù)索引單元中,Huffman索引變換成RUN及SIZE值。在Huffman索引級(jí)(stage),有兩個(gè)值被抑制(trapped),它們分別與EOB及ZRL對(duì)應(yīng)。這是不讀取FLC各位的唯一的兩個(gè)值。如果解碼索引不是該兩值之一時(shí),Huffman解碼器立即讀取FLC的一位,與此同時(shí),它等待數(shù)據(jù)索引單元完成查表操作,以確定真正需要幾位。如果是EOB,在Huffman解碼器內(nèi)的Huffman狀態(tài)機(jī)不再作進(jìn)一步的處理,而從Parser狀態(tài)機(jī)讀取另一條命令。如果是ZRL,就不需要各個(gè)FCL位,但是塊尚未結(jié)束。假若如此,Huffman譯碼器立即開始再對(duì)下一個(gè)VLC解碼(使用如前的同一張表)在檢測(cè)伴隨ZRL及EOB而產(chǎn)生的索引值方面,有一個(gè)特殊的問題。這是由于(與H.261及MPEG不同)Huffman各表是可上級(jí)裝入(down-loadable)的。對(duì)JPEG的兩張AC表,各提供兩個(gè)寄存器(一個(gè)給ZRL,一個(gè)給EOB)。當(dāng)表上級(jí)裝入時(shí),兩寄存器便裝入。它們保持索引值與適當(dāng)符號(hào)有關(guān)。ALU必須將SIZE位FLC碼變換成適當(dāng)?shù)姆?hào)一數(shù)值。當(dāng)表上級(jí)裝入時(shí),符號(hào)數(shù)值便裝入。它們保持索引值與適當(dāng)符號(hào)有關(guān)。ALU必須將SIZE位FLC碼變換成適當(dāng)?shù)姆?hào)-數(shù)值。這可以這樣來完成,首先將符號(hào)有錯(cuò)的值進(jìn)行符號(hào)擴(kuò)展。如果符號(hào)位被置位,則將其余各位求反(的補(bǔ)碼)。如果是一些DC系數(shù),則在Huffman解碼階段的決策稍為容易,因?yàn)闆]有與ZRL字段相當(dāng)?shù)臇|西。使要讀取的FLC各位為零的唯一符號(hào)是指示DC差值為零的那個(gè)符號(hào)。這又一次在Huffman索引階段受到抑制(trapped),因?yàn)闉槊繌?可上級(jí)裝入的(downloadable))JPEGDC表提供了一只寄存器,以保持該索引。本發(fā)明的ALU有任務(wù)保留最后的DC系數(shù)值的一份拷貝,用來形成最終的經(jīng)過解碼的DC系數(shù)(這通常叫預(yù)測(cè))。需要四個(gè)預(yù)測(cè)值,為四個(gè)有效彩色分量各設(shè)一個(gè)。當(dāng)DC差值已被解碼時(shí),ALU加上適當(dāng)?shù)念A(yù)測(cè)值以形成解碼后的值。這值又一次貯存起來,作為該彩色分量下一DC差的預(yù)測(cè)值。由于DC系數(shù)有正有負(fù)(因?yàn)橛蠨C偏置),要求從二的補(bǔ)碼變換到符號(hào)-數(shù)值。然后,該值輸出,隨同的RUN為零。事實(shí)上,完成這最后幾個(gè)階段工作的某幾階段,其指令并非由Huffman狀態(tài)機(jī)提供。它們只是由Parser狀態(tài)機(jī)執(zhí)行的。與AC系數(shù)情況相似,ALu必須由FLC的各SIZE位形成DC差。但是,在本情況下,需要一個(gè)二的補(bǔ)碼值加到預(yù)測(cè)值上去。這可以形成如下首先如前用錯(cuò)誤的符號(hào)進(jìn)行符號(hào)擴(kuò)展。如結(jié)果為負(fù),則必須加1以產(chǎn)生正確的值。當(dāng)然,可以將進(jìn)位位塞進(jìn)加法器,用這樣的方法在加預(yù)測(cè)值的同時(shí)把1加進(jìn)去。B.2.2.3出錯(cuò)處理出錯(cuò)處理值得一提。所發(fā)現(xiàn)的錯(cuò)誤來源實(shí)際上有以下四種·超出表的尾。·希望是令牌,卻是串行數(shù)據(jù)?!はM谴袛?shù)據(jù),卻是令牌。·一塊中的系數(shù)過多。第一種錯(cuò)誤在兩種場(chǎng)合下出現(xiàn)。如果位計(jì)數(shù)器到達(dá)16(合法值是0至15),則出錯(cuò),因?yàn)樽铋L(zhǎng)的合法Huffman碼是16位。如果索引的任一中間值超過255,則出現(xiàn)如B.2.2.1.3所述的錯(cuò)誤。第二種錯(cuò)誤出現(xiàn)在當(dāng)希望是令牌時(shí),卻遇到串行數(shù)據(jù)。第三種錯(cuò)誤出現(xiàn)在相反的情況。最后一種錯(cuò)誤出現(xiàn)在一個(gè)塊內(nèi)有過多系數(shù)的情況下。這實(shí)際上是在數(shù)據(jù)索引單元內(nèi)檢測(cè)到的。不論哪種情況出現(xiàn),錯(cuò)誤在Huffman錯(cuò)誤寄存器內(nèi)記下,Pars-er狀態(tài)機(jī)被中斷。處理錯(cuò)誤并發(fā)出必要的修復(fù)命令,這是Parser狀態(tài)機(jī)的責(zé)任。為了確保正確的操作,在中斷時(shí)刻,Hfffman狀態(tài)機(jī)與Parser狀態(tài)機(jī)結(jié)合。當(dāng)Huffman解碼器中斷Parser狀態(tài)機(jī)時(shí),可能有一條新的命令正在Parser狀態(tài)機(jī)的輸出等待著被接受。Huffman解碼器不會(huì)在它中斷Parser狀態(tài)機(jī)之后的兩個(gè)完整周期內(nèi)接受這條命令。這就容許Parser狀態(tài)機(jī)除去曾在那里的命令(它不應(yīng)在現(xiàn)在執(zhí)行),而將它換成一務(wù)合適的命令。在這兩個(gè)周期過去后,Huffman解碼器恢復(fù)正常操作。如果那里有一條有效命令,就接受該命令。否則就什么也不做,直到Parser狀態(tài)機(jī)提供一條有效命令。不論出現(xiàn)何種錯(cuò)誤,“Huffman錯(cuò)誤”的事件位(eventbit)被置位。如果屏蔽位(maskbit)被置位,則塊將停止,控制的微處理器也將以正常方式被中斷。在某些場(chǎng)合下,看起來象是錯(cuò)誤的東西,實(shí)際上卻不是錯(cuò)誤,這就帶來了復(fù)雜情況。這種情況出現(xiàn)的最重要場(chǎng)合是在讀取宏塊的地址時(shí)。在MPEG、H.261和JPEG的句法中,在預(yù)期為宏塊地址的地方出現(xiàn)令牌是合法的。如果這種情況合法地出現(xiàn),Huffman錯(cuò)誤寄存器被裝入零(意為無錯(cuò)誤),但是Parser狀態(tài)機(jī)仍舊被中斷。Parse狀態(tài)機(jī)的碼必須識(shí)別出這是“無錯(cuò)誤”狀態(tài),并且按此作出響應(yīng)。在這種情況下,則“Huffman錯(cuò)誤”的事件位將不置位,塊也不停止作處理。必須對(duì)付幾種情況。第一種,令牌立即出現(xiàn),前面沒有一些串行位。如果真如此,本來會(huì)出現(xiàn)“希望串行數(shù)據(jù),卻是令牌的錯(cuò)誤”。但是,實(shí)際上出現(xiàn)剛才描述的“無錯(cuò)誤”錯(cuò)誤。第二種,令牌之前有少數(shù)幾個(gè)串行位。在此情況下,形成一決定。如果令牌之前的各位都是1(別忘了在H.261及MPEG內(nèi)編碼數(shù)據(jù)是反的,所以在編碼數(shù)據(jù)文件中,這些位都是零),因此不出錯(cuò)。但是如果其中有零,它們就不是有效的裝填位,于是已出錯(cuò),并且確實(shí)是“希望串行數(shù)據(jù),卻是令牌”的錯(cuò)誤。第三種,令牌之前有許多位。在此情況下,進(jìn)行相同的決定。如果所有16位都是1,它們被當(dāng)作裝填位,就出現(xiàn)一次“無錯(cuò)誤”錯(cuò)誤。如果其中有零,則出現(xiàn)“超出Huffman表范圍”的錯(cuò)誤。另一種不希望出現(xiàn)令牌的場(chǎng)合是在JPEG中。當(dāng)處理一些Huff-man表或量化器表時(shí),在同一標(biāo)記段(Markersegment)內(nèi)可以出現(xiàn)任意數(shù)量的表。Huffman解碼器不知道此數(shù)量。因此在完成每一張表后,它讀取另一個(gè)4位FLC,認(rèn)為這是新表的號(hào)碼。但是如果新的標(biāo)記段開始的話,會(huì)遭遇令牌而不是4位FcL。這一要求不可預(yù)見,因此加入了一個(gè)“無視錯(cuò)誤(Ignoreerrors)”的命令位。B.2.2.4Huffman命令這里是Parser狀態(tài)機(jī)用以控制Huffman解碼器部件的一些位及其定義。注意,數(shù)據(jù)索引單元的一些命令位也包含在本表內(nèi)。從微程序編程員的觀點(diǎn)看,Huffman解碼器和數(shù)據(jù)索引單元象一個(gè)緊湊的邏輯部件那樣工作。表B.2.2Huffman解碼器命令表B.2.2Huffman解碼器命令(續(xù))B.2.2.4.1讀FLC在本方式中IgnoreErrors,Download,ALutab,Token,F(xiàn)irstCoeff,Special和VLC均為零,Bypass被置位,因?yàn)闊o索引到數(shù)據(jù)的變換存在。在表[3∶0]中的二進(jìn)制數(shù)指出要讀那幾位。數(shù)字0到12是合法的,值零確實(shí)讀0位(如所希望的)且該指令是Huffman解碼器NOP指令,值13、14和15意味不工作,當(dāng)Huffum狀態(tài)機(jī)表示用“SSSS”作為FLC的位數(shù)去讀時(shí),其值為15。B.2.2.4.2讀VLC在本方式中,IgnoreErrors,Download,Alutab,Token,F(xiàn)irstCoefficient和Special為零。VLC為1。Bypass通常是0,因此從索引到數(shù)據(jù)的變換存在。在本方式中,Token,F(xiàn)irstCoefficient和Special均為零,VLC為1。Table[3∶0]中的二進(jìn)制數(shù)指示要用表,如下表B.2.3Huffman表請(qǐng)注意,如果保持在RAM內(nèi)表(即JPEG表),不使用位1,因此表的選擇出現(xiàn)兩次。如果構(gòu)成的是非基線(non-baseline)JPEG譯碼器,就有四張DC表和四張AC表,就需要Table[1]。如果Table[3]為零,則輸入數(shù)據(jù)取反,例如,為了將各表正確地如H.261形式讀出。如果Table[3∶0]=0,則也進(jìn)行適當(dāng)?shù)腞ing(環(huán))修正。B.2.2.4.3NOP指令正如前述,讀一個(gè)各位為零的FLC的動(dòng)作被當(dāng)作一個(gè)不操作(N0Operation)指令來使用。沒有數(shù)據(jù)從輸入端口讀出(令牌也好,串行數(shù)據(jù)也好),Huffman解碼器隨同指令字輸出數(shù)值為零的數(shù)據(jù)。B.2.2.4.4TCoefficient首系數(shù)H.261和MPEGTCoefficient表有一個(gè)特殊的非Huffman碼,它用作塊內(nèi)最頭上的首系數(shù)。為了在塊的始端解出TCoefficient,首系數(shù)位(FirstCoefficientbit)可以隨同用表零(Table)得到的一條VLC指令被置位。首系數(shù)位的許多作用之一是使這個(gè)碼被解出。注意,在正常操作下,不常發(fā)出讀TCoefficientVLC的“簡(jiǎn)單”命令。這是因?yàn)橥ǔ?duì)特殊位(SpecialBit)置位來把控制權(quán)交給Huffman解碼器。B.2.2.4.5讀令牌字(TokenWords)為了讀令牌字,令牌位(Tokenbit)必須置1。特殊位和首系數(shù)位必須為零。如果要Table位正確工作,VLC位也必須置位。在本方式中,Table位及Table[1]位用來改變讀令牌的特性如下如果Table及Table[1]都是零,則在令牌之前出現(xiàn)串行數(shù)據(jù)被認(rèn)為是錯(cuò)誤,會(huì)記下出錯(cuò)標(biāo)記。如果Table[1]置位,則所有串行數(shù)據(jù)被丟棄,直到遇到令牌字。這些串行數(shù)據(jù)的出現(xiàn)不會(huì)產(chǎn)生錯(cuò)誤。如果Table置位,則各裝填位被丟棄。當(dāng)然,必須知道各裝填位的極性。這由Table[3]決定,和讀VLC數(shù)據(jù)時(shí)完全相同。如果Table[3]是零,首先將輸入數(shù)據(jù)取反,然后丟棄任何是“1”的位。如果Table[3]置1,輸入數(shù)據(jù)并不取反,但丟棄各個(gè)“1”位。因?yàn)楦鶕?jù)Table[3]位對(duì)數(shù)據(jù)取反這一動(dòng)作取決于VLC位,此位必須置1。如果遇到的位不是裝填位(即,在H.261及MPEG中的各個(gè)“1”位),報(bào)告錯(cuò)誤。注意在這些指令中,只讀取一個(gè)單獨(dú)的令牌字。不去理會(huì)擴(kuò)展位(extensionbit)的狀態(tài),測(cè)試該位并且據(jù)此動(dòng)作是Demux的責(zé)任。本發(fā)明還提供讀取多個(gè)字的一些指令-見特殊指令一節(jié)。B.2.2.4.6ALU寄存器指定表如果“Alutab”位置位,在ALU的寄存器組內(nèi)的各寄存器可以用來決定要使用的實(shí)際表號(hào)(tablenumber)。在命令中提供的表號(hào),連同VLC位,決定使用了哪些ALU寄存器。表B.2.4ALU寄存器的選擇如果是一些固定長(zhǎng)度的碼,就讀出用于對(duì)各向量解碼的位數(shù)。如果r_size是零,就產(chǎn)生一個(gè)NOP不操作指令。如果是一些Huffman碼,則所產(chǎn)生的表號(hào)令table[3]置l,因此,結(jié)果得出的號(hào)是指各JPEG表中的一個(gè)。B.2.2.4.7特別指令到此為止描述的指令(或操作方式)全部被認(rèn)為是一些“簡(jiǎn)單”指令。對(duì)于每一個(gè)收到的命令,輸入數(shù)據(jù)(串行數(shù)據(jù)或令牌數(shù)據(jù))的適當(dāng)數(shù)量被讀取,結(jié)果數(shù)據(jù)被輸出。如果沒有查到錯(cuò)誤,每個(gè)命令就恰好產(chǎn)生一個(gè)輸出。在本發(fā)明中,特別指令具有這樣的特點(diǎn)一個(gè)單一指令可以產(chǎn)生一個(gè)以上的輸出字。為了實(shí)現(xiàn)這一功能,Huffman解碼器的內(nèi)部狀態(tài)機(jī)取得控制,并會(huì)自己發(fā)出必需的一些指令,直到它判定Parser所請(qǐng)求的指今已經(jīng)完成。在所有特別指令中,序列的有待執(zhí)行的第一真正指令(firstrealinstruction)隨著特殊位(Specialbit)置1而發(fā)出。這意味著所有序列都必須有一條單值的首指令。這種方案的好處是可以獲得序列的首條真正指令,而不必進(jìn)行基于從Parser收到的命令而做的查找操作。認(rèn)可的特別指令有以下四種·TCoefficient·JPEGDC·JPEGAC·Token第一種指令讀取H.261及MPEG的變換系數(shù)(Transformcoeffic-ients)等等,直到讀到本塊終止的符號(hào)。如果本塊是非內(nèi)塊(non_intrablock),這條命令會(huì)讀取整個(gè)塊。在此情況下,“首系數(shù)”位(“Firstcoefficient”bit)應(yīng)當(dāng)置位,以應(yīng)用首系數(shù)技巧。如果本塊是內(nèi)塊(intrablock),則DC項(xiàng)應(yīng)該已讀取,所以“首系數(shù)”位應(yīng)該為零。如果在H.261內(nèi)是內(nèi)塊,DC項(xiàng)用一條“簡(jiǎn)單”指令讀出,以便讀取8位FLC值。在MPEG內(nèi),如下說明“JPEGDC”特別指令被使用?!癑PEGDf”命令用來讀取JPEG形式的DC項(xiàng)(包括由VLC指示的SSSS位FLC在內(nèi))。此命令也在MPEG內(nèi)使用。首系數(shù)位必須置位,以便在數(shù)據(jù)索引單元內(nèi)的計(jì)數(shù)器(計(jì)算系數(shù)的個(gè)數(shù))被復(fù)位?!癑PEGAC”命令用來在讀DC項(xiàng)之后讀取塊的余部,直到遭遇EOB,或是直到讀出第64個(gè)系數(shù)?!癟oken”命令用來讀取完整的令牌。令牌字(tokenwords)被讀取,直到擴(kuò)展位清零。這是一種處理一些未被認(rèn)出的令牌的方便方法。B.2.2.4.8上級(jí)裝入表在本發(fā)明,Huffman解碼器的表都能用“上級(jí)裝入”位(“Download”bit)進(jìn)行上級(jí)裝入。第一步是指示哪張表要上級(jí)裝入。在上級(jí)裝入位及首系數(shù)位都置位的情況下,發(fā)出一條讀FLC的命令就算完成。因?yàn)楫?dāng)作NOP處理,所以實(shí)際上并未讀取各位,但是表號(hào)被存入某個(gè)寄存器并用來識(shí)別順序的上級(jí)裝入中哪張表正在裝入。表B.2.5JPEG表如上表所示,或是AC表或是DC表能被裝入,而table[3]則決定所裝入的是按位碼表(codes-per-bittable)還是數(shù)據(jù)索引表(IndextoDatatable)。一旦表被指定,數(shù)據(jù)便上級(jí)裝入其中。其方法是上級(jí)裝入位置位(及首系數(shù)位置零)的情況下發(fā)出一條命令以讀取所需的FLC數(shù)(總是8位數(shù))。這就使經(jīng)過解碼的數(shù)據(jù)寫入所指定的表內(nèi)。根據(jù)地址計(jì)數(shù)器值在當(dāng)前地址寫入數(shù)據(jù),然后地址計(jì)數(shù)器增值。在每當(dāng)一張表被指定地址計(jì)數(shù)器復(fù)位至零。當(dāng)上級(jí)裝入索引到數(shù)據(jù)各表時(shí),監(jiān)視著數(shù)據(jù)和地址。注意,地址是Huffman索引號(hào),而裝入該地址的是最終經(jīng)過解碼的符號(hào)。此信息用來自動(dòng)裝入寄存器,這些寄存器對(duì)感興趣的符號(hào)保持了Huffman索引號(hào)。因此,在一張JPEGAC表中,當(dāng)具有與ERL相應(yīng)值的數(shù)值被識(shí)別時(shí),當(dāng)前地址就寫入由表號(hào)指明的寄存器CED_H_KEY_ZRL_INDEXO或CED_H_KEY_ZRL_INDEX1。由于經(jīng)過解碼的數(shù)據(jù)是在解碼后一相位(pbase)才寫入按位碼(codes-per-bit)表的,不可能在該位期間從表中讀數(shù)據(jù)。因此在上級(jí)裝入指令之后立即發(fā)出企圖讀VLC的指令將會(huì)失敗。在任何實(shí)際應(yīng)用中(即進(jìn)行JPEG時(shí)),這樣的序列沒有理由應(yīng)該出現(xiàn)。但是,有可能建立這么做的模擬試驗(yàn)。B.2.2.5Huffman狀態(tài)機(jī)根據(jù)本發(fā)明,Huffman狀態(tài)機(jī)為Huffman解碼器提供各種命令,在某些情況下這些命令是內(nèi)部產(chǎn)生的。用內(nèi)部狀態(tài)機(jī)可能產(chǎn)生的所有命令也都可能用Demux提供給Huffman解碼器。狀態(tài)機(jī)的基本結(jié)構(gòu)如下。當(dāng)某一命令發(fā)送至Huffman解碼器,它也貯存在一系列輔助的鎖存器內(nèi),所以可以在以后再使用。該命令也由Huffman解碼器執(zhí)行并由Huffman狀態(tài)機(jī)分析。如果命令被認(rèn)出是一已知的指令序列并且特殊位(SPECIALbit)置位,則Huffman解碼器狀態(tài)機(jī)從Parser狀態(tài)機(jī)接收對(duì)Huffman解碼器的控制。這里,給Huffman譯碼器的各種指令有三個(gè)來源1)Parser狀態(tài)機(jī)一在特別指令結(jié)束后(如EOB已被解碼之時(shí)),就作此選擇,并且下一demux命令被接受。2)Huffman狀態(tài)機(jī)。Huffma叫犬態(tài)機(jī)可以給自己提供某條任意的命令。3)由Parser狀態(tài)機(jī)發(fā)出的初始指令,以啟動(dòng)指令。在情況(2),有可能表號(hào)由來自數(shù)據(jù)索引單元的反饋所提供,這就會(huì)更換在Huffman狀態(tài)機(jī)ROM中的字段(field)。在情況(1),某些場(chǎng)合下,各表號(hào)由ALU寄存器組得到的值提供(例如,如果是AC和DC表號(hào)和F一表號(hào))。這些值貯存在輔助的命令貯存器內(nèi),所以當(dāng)該命令在以后重新使用時(shí),表號(hào)就是已經(jīng)貯存的那一個(gè)。此表號(hào)不再?gòu)腁LU復(fù)原,因?yàn)橐话銇碚f,各計(jì)數(shù)器為了指向下一塊已經(jīng)前進(jìn)了。由于對(duì)將要使用的下一條指令的選擇取決于正在被解碼的數(shù)據(jù),必須在一個(gè)周期的后期作出決斷。因此,大體結(jié)構(gòu)是這樣的所有可能的指令都以并行方式準(zhǔn)備好,并且復(fù)合組合,在周期的后期決定出實(shí)際指令。注意在每種情況下,狀態(tài)機(jī)的ROM除了決定在下一周期將由Huffman解碼器使用的指令外,還決定將要依附當(dāng)前數(shù)據(jù)的指令,因?yàn)樵摂?shù)據(jù)傳到數(shù)據(jù)索引單元,然后加到ALU上。所有三種指令都完全相同地以并行方式作好準(zhǔn)備,然后在周期的后期作出選擇。另外,指令的這一部分也有三種選擇對(duì)應(yīng)于下一Huffman解碼器指令的三種選擇1)適用于塊結(jié)束的恒常(constant)指令。2)Huffman狀態(tài)機(jī)。Huffman狀態(tài)機(jī)可能為數(shù)據(jù)索引單元提供某條任意指令。3)由Parser已發(fā)出的初始指令,以啟動(dòng)指令。B.2.2.5.1EOB比較器EOB比較器的輸出實(shí)質(zhì)上強(qiáng)制選擇恒常指令,將它送給數(shù)據(jù)索引單元,它也會(huì)使下一Huffman指令是來自Parser的下一指令。比較器的確切功能由Huffman狀態(tài)機(jī)ROM內(nèi)的一些位來控制。作為比較器的后盾,有四個(gè)寄存器,它們將EOB符號(hào)的索引保持在各AC和DCJPEG表中。如果是DC表,當(dāng)然沒有塊結(jié)束符,但是有零-寬度(zero-size)符,它是由零DC差產(chǎn)生的。因?yàn)檫@同EOB符號(hào)完全一樣地使要讀取的FLC位數(shù)為零,所以對(duì)它們的處理全同。除了保持在各寄存器內(nèi)的四個(gè)索引值外,常數(shù)值1也可以使用。這是在H.261及MPEG中的EOB符號(hào)的索引。B.2.2.5.2ZRL比較器在本發(fā)明中,這是更為通用的比較器。它用來選擇Huffman狀態(tài)機(jī)指令或是數(shù)據(jù)索引要用到的初始指令。有四個(gè)值作ZRL比較器的后盾。其中兩個(gè)在寄存器內(nèi),它們將ZRL碼的索引保持在AC表中。另兩個(gè)值是常數(shù),一是數(shù)值零,另一是12(在MPEG及H.261內(nèi)ESCAPE的索引)。常數(shù)零用于出現(xiàn)FLC的情況。當(dāng)表號(hào)小于8(和VLC)時(shí),使用常數(shù)12。如果表號(hào)大于7(和VLC),則使用兩寄存器之一,這由表號(hào)的低位決定。狀態(tài)機(jī)ROM中的一位提供給使能比較器,另一位用來起反相作用。如果指令中的令牌位置位,則比較器的輸出被忽視,而用擴(kuò)展(extn)位來替代。這就容許運(yùn)行到令牌結(jié)束為止。B.2.2.5.3Huffman狀態(tài)機(jī)的ROMHuffman狀態(tài)機(jī)內(nèi)的各指令字段如下nxtstate[4∶0]這是下一周期要使用的地址。它可以改動(dòng)。statectl允許對(duì)下一狀態(tài)地址作改動(dòng)。如果為零,狀態(tài)機(jī)地址不改變,否則地址的最低有效位被兩個(gè)比較器之一的值所替代如下注意在任何情況下,如果下一個(gè)Huffman指令被選為“重新運(yùn)行原來的命令(re-runoriginalcommand)”,狀態(tài)將轉(zhuǎn)到對(duì)命令適宜的位置0、1、2或3。eobct[1∶0]它根據(jù)EOB比較器和擴(kuò)展位去控制下一Huffman指令的選擇,如下Zrlct[1∶0]它根據(jù)ZRL比較器去控制下一個(gè)Huffman指令的選擇。如果滿足條件,它就取狀態(tài)機(jī)指令,否則它重新運(yùn)行原來的指令。不論哪種情況發(fā)生,如某一eobctl*+條件采用一條demux指令,則此(eobctl*+)取如下的優(yōu)先級(jí)smtab[3∶0]在本發(fā)明中,如果所選擇的指令是狀態(tài)機(jī)指令,則表號(hào)就是Huffman解碼器將要使用的表號(hào)。但是,如果ZRL比較器相符(mat-ches),優(yōu)先使用zrbtab[3∶0]字段。如果不要求視ZRL符合與否使用不同的表號(hào),則smtab[3∶0]和zrltab[3∶0]會(huì)具有同值。但是,注意這可以在Lsim中引起一些奇怪的模擬問題。如果是MPEG,不存在明顯的要求去裝入那些指示ZRL的Huffman索引號(hào)的寄存器(一種JPEG唯一具有的結(jié)構(gòu)-aJPEGonlyconstruction)。但是,這些寄存器依然被選中,ZRL比較器的輸出變成“未知”,而盡管在ZRL比較器可能為“未知”的所有情況中,smtab[3∶0]和zrltab[3∶0]兩者都有相同的值(所以哪個(gè)被選中無關(guān)緊要),下一個(gè)狀態(tài)依歸屬于“未知”。zrltab[3∶0]如果選擇的指令是狀態(tài)機(jī)指令并且ZRL比較器相符,這就是Huffman解碼器將要使用的表號(hào)。smvlc如果選擇的指令是狀態(tài)機(jī)指令,這就是Huffman解碼器使用的各VLC位。aluzrl[1∶0]此字段控制傳往ALU的指令的選擇。指令或者是來自Parser狀態(tài)機(jī)的命令(它是在指令序列開始時(shí)貯存下來的),或者是來自狀態(tài)機(jī)的命令alueoq本線根據(jù)EOB比較器的情況控制傳往ALU的指令的改動(dòng)。它簡(jiǎn)單地將ALU的輸出方式強(qiáng)制成“zinput”。這是一種隨意選擇;任何輸出方式只要不是“什么也不是(none)”就足夠了。這是為了確保將塊結(jié)束命令字傳到令牌格式化器塊(TokenFormatterblock),在那里此命令字控制各數(shù)據(jù)令牌(DATATokens)的正確格式化各種字段的其余部分是ALU指令字段。在ALU的說明中恰當(dāng)?shù)靥峁┝擞嘘P(guān)的資料。B.2.2.5.4Huffman狀態(tài)機(jī)的變型在狀態(tài)機(jī)的一種具體實(shí)施例中,數(shù)據(jù)索引單元需要“知道”何時(shí)一個(gè)escape碼(escape-coded)的TCoefficient的RUN部分正在傳往數(shù)據(jù)索引單元。雖然在控制ROM中使用某個(gè)合適的位可以做到這點(diǎn),但是為了避免修改ROM,使用了一種替代方法。這就是,監(jiān)視進(jìn)A.ROM的地址并查出地址值5。它就是在ROM中指定處理的RUN字段的合適位置。當(dāng)然,顯然ROM在編程時(shí)使用一些別的選定的地址值。此外,以前敘述過的在控制ROM中使用某一位的方法本來也可以利用。B.2.2.6簡(jiǎn)圖瀏覽在本發(fā)明中,Huffman譯碼器稱作“hd”。從邏輯上說,“hd”實(shí)際上包括數(shù)據(jù)索引單元(這是經(jīng)過編譯的代碼生成的各種限制所要求的)。因此,“hd”包含以下主要部件表B.2.6Huffman模塊通過對(duì)各個(gè)子系統(tǒng)區(qū)域(areas)的大體解釋來完成對(duì)各Huffman模塊的如下說明。這些子系統(tǒng)在圖中作了更詳細(xì)的展示。這些圖對(duì)具有本行一般技能的人容易理解。B.2.2.6.1“hd”的說明雙線(two-wire)接口控制用的邏輯通常包括由雙線接口控制的三個(gè)端口數(shù)據(jù)輸入、數(shù)據(jù)輸出和命令。此外,有兩根從輸入移位器來的“有效”線;令牌_有效(token_valid),它指示某令牌正出現(xiàn)在in_data[7∶0]上,而串行_有效(serial_valid)它,指示數(shù)據(jù)正在串行傳送。所產(chǎn)生的信號(hào)中,最重要的是那些送往各鎖存器的使能信號(hào)。而其中最重要的又是給各個(gè)phl鎖存器用的使能信號(hào)。大多數(shù)pho鎖存不是使能的,只有其中兩個(gè)有使能,它們是與串行數(shù)據(jù)有關(guān)的eo和與令牌數(shù)據(jù)有關(guān)的eot。在本發(fā)明中,與“完成”有關(guān)的信號(hào)(done,notdone及phO派生的doneO及notdoneO)指示原來的Huffman的命令何時(shí)完成。在Hufffman狀態(tài)機(jī)命令被執(zhí)行的情況下,組成整個(gè)狀態(tài)機(jī)命令的每個(gè)原來的命令完成時(shí),“done”被認(rèn)定。notnew信號(hào)防止接受來自Parser狀態(tài)機(jī)的新命令,直到整個(gè)Huffman狀態(tài)機(jī)命令完成。至于從數(shù)據(jù)索引單元收到的信息的控制,在JPEG系數(shù)解碼期間,“size”字段的控制邏輯被反饋到Huffman譯碼器。實(shí)際上可以出現(xiàn)兩種情況。如果寬度(size)正好是1,就以專用信號(hào)notfboneO進(jìn)行反饋。否則,寬度由數(shù)據(jù)索引單元的輸出(out_data[3∶0])反饋,信號(hào)fbvalidl指示正發(fā)生這件事。信號(hào)muxsize出現(xiàn),以控制將反饋數(shù)據(jù)多路組合進(jìn)入命令寄存器(見sheet10)。此外還有正好64個(gè)系數(shù)已經(jīng)解碼的反饋。由于在JPEG內(nèi),在此情況下EOB不受編碼,所以產(chǎn)生信號(hào)forceeob。事實(shí)上這有兩種方法來完成,與上述的將寬度反饋的兩種信號(hào)相類似。或是使用jpegeob(這是一種phl信號(hào)),或是使用jpegebo0。注意,如果進(jìn)行的是正常反饋(jpegebo),鎖存器i-971只是作被反饋數(shù)據(jù)裝入,直到接納一條新的Parser狀態(tài)機(jī)命令后才清零。只有在Huffman碼被解碼之后,信號(hào)forceeob才實(shí)際上產(chǎn)生出來。因此,固定長(zhǎng)度碼(即size的各位)不受影響,但是下一個(gè)Huffman編碼信息被強(qiáng)制的塊結(jié)束所替代。當(dāng)寬度為1及使用jpegebo0時(shí),只讀取1位,因此i_1255和i_1256將信號(hào)延遲到正確時(shí)刻。注意在本情況下,不可能出現(xiàn)寬度為零,因?yàn)榫哂袑挾攘愕姆?hào)只有EOB和ZRL。對(duì)產(chǎn)生tcoeff_tabO(使用Tcoeff表的Huffman解碼),mba-tabo(使用MBA表的Huffman解碼)和nop(不操作)命令的解碼是相當(dāng)隨機(jī)的。產(chǎn)生nop有好幾個(gè)理由。其一是固定碼碼寬為零,其二是forceeob信號(hào)(因?yàn)榧词褂休敵鼋o信號(hào)EOB,也不該從輸入移位器讀數(shù)據(jù)),最后,表上級(jí)裝入命名是其三。notfrczero(由寬度零的FLC或由NOP產(chǎn)生)確保當(dāng)使用NOP指令時(shí)結(jié)果為零。此外,invert指示何時(shí)串行數(shù)據(jù)應(yīng)在Huffman解碼之前取反(見B.2.2.1.1一節(jié)),ring指示何時(shí)應(yīng)加上變換系數(shù)ring(見B.2.2.1.2節(jié))。解碼的完成也與尋址code_Pr_bitROM有關(guān)。code_per_bitROM由短數(shù)據(jù)路線(smalldataPath)的一些ROM制成。對(duì)各信號(hào)(如csha和csla)復(fù)制,純粹是為了獲得足夠的驅(qū)動(dòng),后者靠將各ROM一分為二來達(dá)到。地址可取自位計(jì)數(shù)器(bit[3∶0])或取自微處理器接口地址(key_addr[3∶0]),這取決于UPI訪問那個(gè)被選中的部分。附加的解碼牽涉到一些寄存器的UPI讀取,諸如為一些JPEG表保持Huffman索引值的寄存器(EOB,ZRL等)。還包括這些寄存器有關(guān)的三態(tài)驅(qū)動(dòng)器控制及各按位碼RAM的UPI讀取。還為某些重要的位號(hào)也提供算術(shù)的數(shù)據(jù)路徑解碼。first_bit的使用與Tcoeff首系數(shù)技巧有關(guān),bit_five牽連到在Tcoeff表中應(yīng)用ring(環(huán))。注意forceeob的用法,它模擬EOB比較器與解碼后的索引值相符合的動(dòng)作。至于擴(kuò)展位,如果從輸入移位器讀出的是令牌,則連帶的擴(kuò)展位隨令牌一起被讀出。否則,擴(kuò)展的最后值被保存下來。這就允許在讀出令牌之后任何時(shí)候用微碼程序測(cè)試擴(kuò)展(extn)位。當(dāng)認(rèn)定的是zerodat時(shí),Huffman輸出數(shù)據(jù)的高4位被強(qiáng)制為零。由于這些位只有在解固定長(zhǎng)度碼時(shí)才有有效值,在解碼VLC或令牌時(shí)或因任何理由NOP執(zhí)行指令時(shí)將它們置零。當(dāng)每個(gè)命令完成時(shí),另外的電路檢測(cè)到并產(chǎn)生“done(已完成)”信號(hào)。實(shí)質(zhì)上,成為“done”的理由共分兩類,它們是正常原因和例外原因。各由兩個(gè)三路的多路開關(guān)選擇器之一處理。下面多路開關(guān)選擇器(i-1275)處理正常原因。如果是FLC的情況,就使用ndnflc信號(hào)。這是位計(jì)數(shù)器與表號(hào)相比較的比較器輸出。如果是VLC的情況,就使用ndnvlc信號(hào)。這是算術(shù)數(shù)據(jù)路徑(arith-meticdatapath)的輸出,它直接反映了公式9。如果是NOP指令或令牌的情況,只要求一個(gè)周期,因此,本系統(tǒng)無條件地“完成”。在本發(fā)明中,上多路開關(guān)選擇器(i-1274)處理例外情況。如果解碼器在JPEG解碼中正期待size的反饋(fbexpctdO)自size為1(notfboneo),則解碼器已完成,因?yàn)橹恍枰晃弧H绻獯a器正在用Tcoeff表做首系數(shù)的第一位,則如果當(dāng)前索引的位。為零,解碼就算完成(見B.2.2.1.2節(jié))。如果這些條件無一滿足,則不存在已經(jīng)的完成的例外理由。NOR門(i-1293)最后解決“完成”的條件。由i_570產(chǎn)生的條件(即數(shù)據(jù)無效的條件)強(qiáng)制“完成”。這可能看來有點(diǎn)奇怪。它主要在剛復(fù)位之后使用,以強(qiáng)制機(jī)器在準(zhǔn)備第一條命令時(shí)進(jìn)入“完成”狀態(tài)(“完成”將所有計(jì)數(shù)器、寄存器等復(fù)位)。注意,任何錯(cuò)誤條件也都強(qiáng)行“完成”。在檢測(cè)各種錯(cuò)誤時(shí),需要用到notdonex信號(hào)。不能使用各正常的“完成”信號(hào),這是因?yàn)樵跈z測(cè)錯(cuò)誤時(shí),也強(qiáng)制在“完成”狀態(tài)。使用“完成”可能會(huì)造成組合的(combinatorial)反饋回路。錯(cuò)誤檢測(cè)及處理在能檢測(cè)所有可能錯(cuò)誤條件的電路中完成。這些條件在i_1190中‘或’在一起。在此情況下,i_1193、i_585、i_584組成三位的Huffman錯(cuò)誤寄存器。請(qǐng)注意i_1253和i-1254,它們?cè)跊]有“真正的”錯(cuò)誤的各種情況下禁止錯(cuò)誤(見B.2.2.3節(jié))。此外,i_580、i_579及其相聯(lián)電路成為一部簡(jiǎn)單的狀態(tài)機(jī),它在檢測(cè)到錯(cuò)誤后控制第一條命令的接收。如前所示,對(duì)各控制信號(hào)加以延時(shí),以配合在數(shù)據(jù)索引單元及ALU中的一些流水線延遲。Itod_bypass是傳到數(shù)據(jù)索引單元的實(shí)際旁路信號(hào)。每當(dāng)固定長(zhǎng)度碼被解碼時(shí),Huffman狀態(tài)機(jī)處于控制地位,它強(qiáng)制旁路,此時(shí)Itod_bypass就被改動(dòng)。Aluinstr[32]是使ALU得以(將各條件碼)反饋到Parser狀態(tài)機(jī)的位。此外,當(dāng)Huffma叫犬態(tài)機(jī)控制在手時(shí),重要的是各信號(hào)只被認(rèn)定一次(而不是在每次原來命令之一完成時(shí))。Aluinstr[36]是允許ALU步進(jìn)(step)塊計(jì)數(shù)器的位(如果其它一些ALU指令位也指定增量的話)。這也只許被認(rèn)定一次。此外,這些位的要求只能適用于將數(shù)據(jù)輸出到令牌格式化器的那些ALU指令。否則,各計(jì)數(shù)器可能在第一次輸出到令牌格式化器之前就增量,造成某DATA令牌中不正確的“CC”值。在本發(fā)明有圖示的實(shí)施例中,如果ALU有榆出給令牌格式化器,alunode[1]或alunode[O]就為低。圖118與圖27類似,示出被稱為“hdstdp”的Huffma狀態(tài)機(jī)數(shù)據(jù)路徑。還有一個(gè)UPI譯碼器,用于讀取Huffman狀態(tài)機(jī)ROM的輸出。為了處理由ALU寄存器單元指定(見B.2.4.6)表號(hào)的這種情況,提供了多路技術(shù)。aluinstr[3∶2]的改動(dòng)用來將ALUoutsrc指令字段強(qiáng)制為并非什么也不是(non_none)(見B.2.2.5.3節(jié)alueob的說明)。至于為Huffman解碼器塊(X)而設(shè)的命令寄存器,命令的每一位都有用來選擇命令各種可能來源的有關(guān)多路開關(guān)選擇器。四個(gè)控制信號(hào)控制這一選擇Selhold,它使寄存器保留其當(dāng)前狀態(tài)。Selnew,它使一條來自Parser狀態(tài)機(jī)的新命令被裝入。它也使能各寄存器的裝入,這些寄存器保留原來的Parser狀態(tài)機(jī)命令以備后用。Selold,它導(dǎo)致從上述各寄存器來的原來Parser狀態(tài)機(jī)命令的裝入。/selsm,它導(dǎo)致來自Huffman狀態(tài)機(jī)ROM的命令的裝入。如果是表號(hào),則情況稍為復(fù)雜,因?yàn)楸硖?hào)也可能用數(shù)據(jù)索引單元的輸出數(shù)據(jù)裝入(selboldt及muxsize)鎖存器保持在Huffman狀態(tài)機(jī)ROM中的當(dāng)前地址。邏輯電路檢測(cè)正在執(zhí)行的命令是可能的四條中的哪一條。如果是一條新命令,則這些信號(hào)相混合以形成起始地址的低二位。邏輯電路還檢測(cè)何時(shí)狀態(tài)機(jī)ROM的輸出無意義(通常因?yàn)槊钍且粭l“簡(jiǎn)單”命令)。信號(hào)notignorerom有效地禁止?fàn)顟B(tài)機(jī)的操作,尤其是禁止通往ALU的指令作任何改動(dòng)。產(chǎn)生fiXStateO的電路控制本狀態(tài)機(jī)有限的轉(zhuǎn)移能力。還提供解碼以驅(qū)動(dòng)信號(hào)到Huffman狀態(tài)機(jī)的RoM。該ROM是數(shù)據(jù)路徑形式的組合ROM。escape_run的產(chǎn)生在B.2.2.5.4節(jié)中敘述。對(duì)于那些保持諸如ZRL和EOB符號(hào)的索引號(hào)的寄存器,也為它們提供解碼。這些寄存器可以由UPI或數(shù)據(jù)路徑裝入。在中央(es[4∶0]及ZS[3∶0]的解碼為多路器生成選擇信號(hào),這些多路器選擇哪個(gè)寄存器或常數(shù)值要和經(jīng)過解碼的Huffman索引相比較。關(guān)于Huffman狀態(tài)機(jī)用的控制邏輯。此處,來自Huffman狀態(tài)機(jī)ROM的各“指令”位與各種不同條件混合起來,以決定下一步做什么及如何去改動(dòng)為ALU設(shè)置的指令字。在本發(fā)明中,信號(hào)nothew,notsm和notold因sheet10上用于控制Huffman解碼器命令寄存器的操作。很明顯,它們是由狀態(tài)機(jī)ROM(見B.2.2.5.3說明)中的一些控制位狀態(tài)和Huffman索引比較器(neobmatch及nzrlmatch)一起被產(chǎn)生。選擇也是由通向ALU的指令來源作出。實(shí)際的多路傳輸是在Huffman狀態(tài)機(jī)數(shù)據(jù)路徑uhfstdp”中完成的。產(chǎn)生出四種控制信號(hào)。在不曾遇到塊結(jié)束的情況時(shí),會(huì)產(chǎn)生aluseldmx(選用Parser狀態(tài)機(jī)的指令)或aluseism(選用Huffman狀態(tài)機(jī)的指令)之一。在不曾遇到塊結(jié)束的情況下,會(huì)產(chǎn)生aluseleobd(選用Parser狀態(tài)機(jī)的指令)或aluseleobs(選用Huffman狀態(tài)機(jī)的指令)之一。此外ALU指令的“outsrc”字段被改變,以強(qiáng)制它成為“zinput”。在上級(jí)裝入表期間,一個(gè)寄存器保持已命名表的表號(hào)。為各按位碼codes_per_bitRAM提供了解碼。附加的解碼能識(shí)別何時(shí)EOB及ZRL之類的符號(hào)被上級(jí)裝入,因此各Huffman索引號(hào)寄存器可以自動(dòng)裝入。至于位計(jì)數(shù)器,一個(gè)比較器能測(cè)得在讀某FLC時(shí)何時(shí)已經(jīng)讀取正確的位數(shù)。B.2.2.6.2“hddp”的說明各比較器檢測(cè)Huffman索引的確切值。各寄存器為能上級(jí)裝入表保持這些值。多路器(meob[7∶0]及mzr[7∶0]選擇所用的值,選通(gating)和一些異或門組成各比較器。一些加法器和寄存器直接計(jì)算B.2.2.1節(jié)中說明的各公式。這里就不必再做更多說明。使用了一個(gè)異或門,以取反在B.2.2.1.1節(jié)中說明的數(shù)據(jù)(i_807)?!按a”寄存器的寬度為12位。多路結(jié)構(gòu)實(shí)現(xiàn)了B.2.2.1.2節(jié)中說明的“環(huán)”形替換??紤]到經(jīng)過解碼的串行數(shù)據(jù)(index[7∶0])和令牌數(shù)據(jù)(ntokenO[7∶0])之間的數(shù)據(jù)和多路傳輸?shù)母鞣N流水線延時(shí),Huffman的索引值以ZRL和EOB符號(hào)決出。Codes_Per_bitROM和它們的多路復(fù)用用來確定使用哪張表。使用這種結(jié)構(gòu)是因?yàn)楸磉x擇信息到得晚。然后訪問所有的表并選中正確的表??紤]到Codes_Per_bitRAM,(codes_per_bit)ROM的最后多路復(fù)用,Codes_Per_bitRAM的輸出在“hdepbram”塊內(nèi)進(jìn)行。B.2.2.6.3“hdstdp”的說明在本發(fā)明中,“Hdstdp”共有兩個(gè)模塊。“hdstdel”參與將Parser狀態(tài)機(jī)的各控制位延遲到適當(dāng)?shù)牧魉€階段,例如當(dāng)把這些位加到ALU和令牌格式化時(shí)。它只處理大約半個(gè)送往ALU的指令字,其余則由另一模塊“hdstmod”處理。“Hdstmod”包括了Huffman狀態(tài)機(jī)RoM。該指令的某些位歸Huffamn狀態(tài)機(jī)控制邏輯使用。其余各位用于代替在“hdstdel”中不予處理的那部分ALU指令字(它來自Parser狀態(tài)機(jī))?!癏dstmod”是顯而易見的,無需解釋一只有一些流水延時(shí)寄存器?!癏dstdel”也很簡(jiǎn)單,它由一個(gè)ROM和一些改變ALU指令用的一些多路器操縱。電路的剩下部分是關(guān)于UPI對(duì)各Huffman狀態(tài)機(jī)ROM輸出的半數(shù)進(jìn)行讀訪問。還為一些控制信號(hào)使用了緩沖器。B.2.3令牌格式化器根據(jù)本發(fā)明,Huffman解碼器令牌格式化器位于Huffman塊的末端。如其名稱提示,它的功能是將來自Huffman解碼器的數(shù)據(jù)格式化成合適的令牌結(jié)構(gòu)。在微指令字命令字段的控制下,輸入數(shù)據(jù)與微指令字內(nèi)的數(shù)據(jù)多路復(fù)用。本塊有兩種操作方式DATA_WORD及DATA_TOKEN。B.2.3.1微指令字表B.2.7由7個(gè)字段組成的微指令字171615141280微指令字同數(shù)據(jù)字一樣受同一accept的管理B.2.3.2操作方式表B.2.8Bit位的分配B.2.3.2.1數(shù)據(jù)字在本方式下,輸入的最高八位反饋至輸出。最低八是輸入或是微指令字的令牌字段,或是兩者的混合,這取決于屏蔽碼字段。屏蔽碼表示mix內(nèi)的輸入位數(shù),即out_data[16∶8]=in_data[16∶8]out_data[7∶0]=(Token[7∶0]&(ff<<mask))indata[7∶0]當(dāng)屏蔽碼設(shè)為0×8或更大時(shí),輸出數(shù)據(jù)將等于輸入數(shù)據(jù)。本方式用來在一些non_DATA(非數(shù)據(jù))令牌中輸出各種字。屏蔽碼置為0時(shí),out_data[7∶0]將是微指令字的令牌字段。本方式用于輸出各種不包含數(shù)據(jù)的令牌頭(Tokenheaders)。當(dāng)令牌頭包含數(shù)據(jù)時(shí),數(shù)據(jù)的位數(shù)由屏蔽碼字段給出。如果外部Extn(Ee)被置位,則out_extn=in_extn,否則out_extn=DeoBt及Eb均為“不必關(guān)心(don’tcare)”。B.2.3.2.2數(shù)據(jù)令牌本方式用于對(duì)數(shù)據(jù)令牌進(jìn)行格式化,它有兩種功能,取決于信號(hào)first_coefficient。在復(fù)位時(shí),first_coefficient置位。當(dāng)?shù)谝粋€(gè)數(shù)據(jù)系數(shù)與由cmd置1的一個(gè)微指令字一起到來時(shí),out_data[16∶2]被置成0×1,且out_data[1∶0]取微指令字內(nèi)Bt字段的值。這就是數(shù)據(jù)令牌的頭。當(dāng)此字已被接收時(shí),伴隨過命令的系數(shù)被裝入寄存器RL,并且,first_coefficient取Eb的值。當(dāng)下一系數(shù)到來時(shí),out_data[16∶0]取上一貯存在RL內(nèi)的系數(shù)。然后更新RL和first_coefficient。這就確保當(dāng)遇到塊結(jié)束并且Eb置位時(shí),將first_coefficlent置位,為下一數(shù)據(jù)令牌作好準(zhǔn)備,即If(first_coofficient){out_data[16∶2]=0×1out_data[1∶0]=3t[1∶0]RL[16∶0]=in_data[16∶0]}else{out_data[16∶0]=RL[16∶0]RL[16∶0]=in_data[16∶0]}oudt_exdtn=-EbB.2.3.3解釋性討論根據(jù)本發(fā)明,大多數(shù)指令位由Parser狀態(tài)機(jī)正常提供。但是,字段中的兩個(gè)實(shí)際上由其它電路提供。前面提到的“Bt”字段直接與ALU塊的輸出相連。這一兩位字段給出“CC”或“彩色分量(colorcomponent)”的當(dāng)前值。因此,當(dāng)某個(gè)數(shù)據(jù)令牌頭建立時(shí),最低兩位從從ALU計(jì)數(shù)器取彩色分量的。其次,每當(dāng)End_of_block(塊結(jié)束)符被解碼時(shí),(或者,如果是JPEG,當(dāng)假定為1時(shí),因?yàn)閴K的最后系數(shù)是經(jīng)過編碼的)“Eb”位就在Huffman解碼器內(nèi)被確認(rèn)。in_extn信號(hào)在Huffman譯碼器內(nèi)得到。只有當(dāng)擴(kuò)展位連同令牌字一起正常提供時(shí),此信號(hào)才能對(duì)各令牌有意義。B.2.4Parser狀態(tài)機(jī)本發(fā)明的Parser狀態(tài)機(jī)實(shí)際上是非常簡(jiǎn)單的一些電路。復(fù)雜的是微碼ROM的編程,這在B.2.5節(jié)中討論。簡(jiǎn)而言之,本機(jī)由一個(gè)保持當(dāng)前地址的寄存器組成。在微碼ROM中查找此地址以產(chǎn)生微碼字。在一個(gè)簡(jiǎn)單的增量器內(nèi)該地址增量,增量后的地址是下一狀態(tài)要用兩個(gè)可能地址之一。另一地址是在微碼ROM本身中的字段。因此每條指令都可能是轉(zhuǎn)移指令,可轉(zhuǎn)移到程序指定的位置。如果不發(fā)生轉(zhuǎn)移,控制就到ROM的下一單元。提供了一串16個(gè)條件碼位??蛇x擇這些條件的任一個(gè)(由微碼ROM內(nèi)的某字段選擇)。此外,每個(gè)條件碼位可以取反(又是在微碼ROM中的一位)。得出的信號(hào)在增量后的地址或在微碼ROM內(nèi)的轉(zhuǎn)移地址中選擇一個(gè)。條件之一是硬接線的(hard_wired),以判斷為“假”。如果選中該條件,就不會(huì)發(fā)生轉(zhuǎn)移。另一方面,如果選中該條件然后加以取反,則總是發(fā)生跳轉(zhuǎn),即成為無條件轉(zhuǎn)移。表B.2.9條件碼位表B.2.9條件碼位(續(xù))B.2.4.1雙線接口控制根據(jù)本發(fā)明,雙線接口控制在本部件中有點(diǎn)例外。在Parser狀態(tài)機(jī)與Huffman譯碼器之間有一個(gè)雙線接口。它用來控制命令的進(jìn)行。在某一條給定的命令被接受之前,Parser狀態(tài)機(jī)會(huì)一直等待。然后著手從ROM中讀取下一條命令。此外,各條件碼經(jīng)由來自ALU的一根線被反饋回來。在微碼ROM中每條命令都有一位,允許指定它應(yīng)當(dāng)?shù)却答仭H绻鞔酥付ǎ瑒t該指令已被Huffman解碼器接受之后,不再出現(xiàn)新的命令,直到來自ALU的反饋線被確認(rèn)。此線為fb_valid,它表示ALU當(dāng)前正提供的各條件碼在下述意義上是有效的它們反映了與要求等待反饋命令有關(guān)的數(shù)據(jù)。根據(jù)本發(fā)明,這個(gè)特性(feature)是要用來構(gòu)成各種條件轉(zhuǎn)移命令,根據(jù)解碼(或處理)一段特別的數(shù)據(jù)的結(jié)果,它們決定要跳到的下一狀態(tài)。沒有這種設(shè)施,就不可能測(cè)試取決于流水線中數(shù)據(jù)的任何條件,這是因?yàn)殡p線控制意味著某一命令到達(dá)給定的處理塊(在本情況即是ALU)是不確定的。非并所有指令都傳到Huffman解碼器。某些指令可能不需要數(shù)據(jù)流水線就可執(zhí)行。它們往往會(huì)是跳轉(zhuǎn)指令。微碼ROM的一位用來選擇指令是否送給Huffman解碼器。如果不送,就不要Huffman解碼器接收這條指令,因此在這些情況下即使流水線阻塞,執(zhí)行也能繼續(xù)下去。B.2.4.2事件處理在Parser狀態(tài)機(jī)中有兩個(gè)事件位。一個(gè)叫Huffman事件,另一個(gè)叫Parser事件。Parser事件是最簡(jiǎn)單的事件。被該事件正在監(jiān)視的“條件”只是微碼ROM中的一位。因此,一條指令將該位置位就可能造成Par-ser事件。下面是典型情況這指令在rom_control寄存器內(nèi)寫入一個(gè)合適的常數(shù),因而中斷服務(wù)程序能夠決定中斷的原因。在為Parser事件服務(wù)之后(如果屏蔽掉事件,則立即回去),控制再繼續(xù)回到它離開的地方。如果引發(fā)事件的指令有一條轉(zhuǎn)移令(其條件評(píng)定為真),則轉(zhuǎn)移正常進(jìn)行。因此用對(duì)轉(zhuǎn)移編碼的方法,就可能在服務(wù)之后跳到錯(cuò)誤處理程序。Huffman事件則稍為不同。正被監(jiān)視的條件是三個(gè)Huffman錯(cuò)誤位的“或”。事實(shí)上,對(duì)該條件的處理與Parser事件極為相似。但是,每當(dāng)錯(cuò)誤出現(xiàn)時(shí),來自Huffman譯碼器的一條外加線huffintr-pt被認(rèn)定。這就使控制跳到微碼程序中的出錯(cuò)處理。因此,當(dāng)Huffman錯(cuò)誤出現(xiàn)時(shí),序列涉及產(chǎn)生中斷和停止塊。在服務(wù)之后,控制轉(zhuǎn)到出錯(cuò)處理。不存在“調(diào)用”機(jī)制,它不象尋常的中斷,在出錯(cuò)處理之后不可能回到出錯(cuò)前的微碼中的地點(diǎn)。有可能在不產(chǎn)生Huffman錯(cuò)誤的情況下認(rèn)定huffintrpt。這在B.2.2.3節(jié)討論的“無錯(cuò)誤”錯(cuò)誤的情況下發(fā)生。假使如此,不發(fā)出中斷(到微處理器接口),但是控制仍轉(zhuǎn)到(微碼中的)出錯(cuò)處理。因?yàn)樵诖饲闆r下Huffman錯(cuò)誤寄存器清零,所以微碼出錯(cuò)處理器可以決定是要出錯(cuò)處理并作出相應(yīng)的響應(yīng)。B.2.4.3特殊單元(locations)在微碼ROM中有幾個(gè)特殊單元。ROM中的頭四個(gè)單元是主程序的入口點(diǎn)。在復(fù)位時(shí),控制轉(zhuǎn)到這四個(gè)單元的一個(gè)。被轉(zhuǎn)移的單元取決于在ALU寄存器內(nèi)選出的編碼標(biāo)準(zhǔn),coding_std。因?yàn)榇藛卧旧肀徽嬲膹?fù)位復(fù)位到零,控制轉(zhuǎn)到零單元。但是也可能使用在CED_H_TRACE中的UPI寄存器位CED_H_TRACE_RST來單獨(dú)復(fù)位Parser狀態(tài)機(jī)。在此情況下coding_std寄存器并不復(fù)位,控制轉(zhuǎn)到頭四個(gè)單元中合適的那一個(gè)。第二組四個(gè)單元(0×004至0×007)在發(fā)生Huffman中斷時(shí)使用。典型情況是在四單元的每一個(gè)之處放一條轉(zhuǎn)移到實(shí)際的出錯(cuò)處理器的指令。單元也是根據(jù)編碼標(biāo)準(zhǔn)的結(jié)果來選擇的。B.2.4.4跟蹤作為輔助診斷的手段,提供了跟蹤機(jī)構(gòu)。它允許微碼進(jìn)行單步運(yùn)行。在CED_H_TRACE寄存器內(nèi)的CED_H_TRACE_EVENT位和CED_H_TRACE_MASK位控制這種運(yùn)行。顧名思義,它們的操作與一些正常的事件位非常近似。但是,因?yàn)橛腥舾刹町?尤其是從不產(chǎn)生UPI中斷),不將它們與其它事件位歸為一類。當(dāng)CED_H_TRACE_MASK置1時(shí),跟蹤機(jī)構(gòu)接通。在從ROM中讀出每條微碼指令,但在送到Huffman譯碼器去之前,出現(xiàn)一次跟蹤事件。在此情況下,CED_H_TRACE_EVENT為1。必須對(duì)它查詢,因?yàn)椴粫?huì)產(chǎn)生中斷。整個(gè)微碼字可在CED_H_KEY_DMX_WORD_0至CED_H_KEY_DMX_WORD_9的寄存器內(nèi)得到。如果需要,可以在此時(shí)刻改動(dòng)指令。給CED_H_TRACE_EVENT寫1就使指令執(zhí)行并將CED_H_TRACE_EVENT清零。在此刻之后不久,當(dāng)從ROM中讀出下一要執(zhí)行的微碼字時(shí),就出現(xiàn)一個(gè)新的跟蹤事件。B.2.5微碼微碼的編程靠使用匯編器“hpp”這一種非常簡(jiǎn)單的工具,許多提取工作(abstraction)靠使用宏予處理器來完成。為此可使用標(biāo)準(zhǔn)的“c”予處理器“cpp”。碼的說明如下Ucode.u是主文件。首先,它包括定義各令牌的tokens.h。其次,regfile.h定義ALU的寄存器映象(map)。fietds.u定義微碼字中的種種字段,它給出一張下了定義的符號(hào)表,這些符號(hào)對(duì)應(yīng)于字段中每一種可能的位模式。再其次,對(duì)碼中用到的各標(biāo)號(hào)進(jìn)行定義。在做完這步之后,instr.u去定義大量用來定義基本指令的“cpp”宏。然后,errors.h定義用來定義各Parser事件的號(hào)碼。再后,unword.u定義建立微碼字中安放字段的順序。ucode.u的剩余部分是微碼程序本身。B.2.5.1指令本節(jié)敘述在ucode.u中定義的各種指令。此處并不討論所有指令,因?yàn)樵谠S多情況下,它們只是同一主題下的微小變化(尤其是ALU指令)。B.2.5.1.1Huffman及數(shù)據(jù)索引指令在本發(fā)明中,H_NOP指令由Huffman解碼器使用。這是非操作指令。沒有對(duì)數(shù)據(jù)解碼,從這個(gè)意義上說,Huffman沒有做什么事。本指令產(chǎn)生的數(shù)據(jù)總是零。因此,有關(guān)指令被送到ALU上去。其次的一些指令是令牌類H_TOKSRCH,H_TOKSKIP_PAD,H_TOKSKIP_JPAD,H_TOKPASS及H_TOKREAD。這些指令都從輸入移位器讀取一個(gè)或幾個(gè)令牌,并將它們傳到機(jī)器的其余部分。H_TOKREAD讀取一個(gè)單一的令牌字。H_TOKPASS可用來讀一個(gè)完整令牌,直到帶有零擴(kuò)展位的字并包括它在內(nèi)。有關(guān)命令對(duì)每個(gè)令牌字都重復(fù)。H_TOKSRCH拋棄令牌前所有的串行數(shù)據(jù),然后讀一個(gè)令牌字。H_TOKSKIP_PAD跳過所有裝填位(H.261及MPEG),然后讀一個(gè)令牌字。H_TOKSKIP_JPAD對(duì)JPEG裝填位做同樣的事情。H_FLC(NB)讀一個(gè)“NB”位數(shù)的固定長(zhǎng)度碼。H_VLC(TBL)用指出的表讀一個(gè)vlc(表名以助記符傳送,如H_VLC(tcoeff))。H_FLC_IE(NB)與H_FLC相似,但是“無視錯(cuò)誤(ignoreerrors)”位置位。H_TEST_VLC(TBL)類似H_VLC,但是旁路位(bypassbit)置位,所以Huffman索引不改動(dòng)地通過數(shù)據(jù)索引單元。H_FWD_R及H_BWD_R讀一個(gè)FLC,其位寬分別由ALU寄存器r_fwd_r_size及r_bwd_r_size指示。H_DCJ讀JPEG格式的各DC系數(shù),表號(hào)來自ALU。H_DCH讀一個(gè)H.261DC項(xiàng)。H_TCOEFF及LDCTCOEFF讀取各變換系數(shù)。在H_DCTOCOEFF中,首系數(shù)位置位,用于非基塊,而H_TCOEFF則用于DC項(xiàng)已被讀出之后的基塊。H_NOMINATE(TBL)命名一張以后下裝的表。H_DNL(NB)讀各NB位并將它們下裝到已命名的表中。B.2.5.1.2ALU指令不能詳細(xì)解釋所有的ALU指令,因?yàn)樗鼈儗?shí)在太多了。將討論構(gòu)成各助記符的基本方法,這應(yīng)當(dāng)使指令可讀。此外,這些助記符對(duì)于本行業(yè)具有普通技能的人應(yīng)當(dāng)易于理解。大多數(shù)ALU指令與數(shù)據(jù)從一處到他處的傳送有關(guān),因此使用通用的“裝入(load)”指令。在助記符A_LDxy中,當(dāng)然是y的內(nèi)容裝入x,即先列出目的,后列出源。表B.2.10用來指示可能的數(shù)據(jù)源和目的的一些字母作為例子,LDAI將數(shù)據(jù)裝AA寄存器,此數(shù)據(jù)來自ALU輸入端口。如果指定的是ALU寄存器組,則助記符要帶地址,因此LDAF(RA)將寄存器組單元RA的內(nèi)容裝入A。當(dāng)數(shù)據(jù)由源傳送到目的時(shí),ALU能改變它。如果是這種情況,算術(shù)運(yùn)算以源數(shù)據(jù)的一部分表示。因此助記符LDA_AADDF(RA)把A寄存器當(dāng)前的內(nèi)容,加上寄存器組中指定單元的內(nèi)容裝AA中。另一例子是LDA_ISGXR,它取輸入數(shù)據(jù),根據(jù)RUN寄存器指出的那一位進(jìn)行符號(hào)擴(kuò)展,并且將結(jié)果存入A寄存器。在許多情況下,對(duì)同一結(jié)果指定一個(gè)以上的目的。再舉例子,LDF_LFA_ASUBC(RA),它將A減去某一常數(shù)的結(jié)果既裝hA寄存器也裝入寄存器組。另一些助記符表示一些特定的動(dòng)作。如“CLRA”用于清A寄存器,“RMBC“用于使宏塊計(jì)數(shù)器(macroblockcounter)復(fù)位。這些助記符相當(dāng)顯而易見,在instr.u的注解中有它們的說明。一種不按常規(guī)是使用后綴“_0”,它用來指示除了正常行為外,還將操作結(jié)果送到令牌格式器,因此LDFI_O(RA)貯存輸入數(shù)據(jù)并將它送到令牌格式化器。要不,如果愿意,這本可以是LDF_LDO_I(RA)。B.2.5.1.3令牌格式化器指令T_NoP“不操作”指令。這是使用不當(dāng)?shù)拿Q,因?yàn)椴豢赡芙⒁粭l不操作指令。但是每當(dāng)因ALU無輸出至今牌格式化器而指令不重要時(shí),就用它。T_TOK輸出一個(gè)令牌字。T_DAT輸一個(gè)DATA令牌字(只同一些Huffman狀態(tài)機(jī)指令一起使用)。T_GENT8產(chǎn)生一個(gè)基于8位常數(shù)字段的令牌字。T_GENT8E類似于T_GENT8,但是擴(kuò)展位是1。T_OPD(NB)-數(shù)據(jù)的NB位來自輸出的最低NB位,其余位來自常數(shù)字段。T_OPDE(NB)類似于T_OPD,但是擴(kuò)展位為高。T_OPD8-是T_OPD(8)的簡(jiǎn)寫。T_0PD8E-是T_OPDE(8)的簡(jiǎn)寫。B.2.5.1.4Parser狀態(tài)機(jī)指令D_NOP不操作指令地址照常增值,而Parser狀態(tài)機(jī)則不做任何附加的事情。指令的余部送往數(shù)據(jù)流水線。不出現(xiàn)等待。LWAIT與D_Nop類似,但是等待反饋的到來。簡(jiǎn)單轉(zhuǎn)移指今組。如果條件滿足,諸如D_JMP(ADDR)和D_JNX(ADDR)之類的助記符就產(chǎn)生轉(zhuǎn)移。指令并不輸出到Huffman解碼器。外部轉(zhuǎn)移指令組。其助記符如D_XJMP(ADDR)和D_XJNX(ADDR)。它們與上面的簡(jiǎn)單計(jì)數(shù)器部分相似,但是指令輸出到Huffman解碼器。轉(zhuǎn)移和等待指令組。其助記符如D_WJNZ(ADDR)。這些指令被輸出至Huffman解碼器,在評(píng)估條件之前,Parser等待來自ALU的反饋。下列各助記符用于一些條件本身。表B.2.11用于表示條件的助記符表B.2.11用于表示條件的助記符(續(xù))D_EVENT導(dǎo)致產(chǎn)生一個(gè)事件。D_DFLT用于建立一條缺省指令。它導(dǎo)致一個(gè)事件,然后轉(zhuǎn)移到標(biāo)號(hào)為“dflt”的單元。本指令決不應(yīng)該執(zhí)行,因?yàn)樗鼈冇脕碚紳MROM使得轉(zhuǎn)移到一不用單元而入陷。D_ERROR導(dǎo)致一個(gè)事件,然后轉(zhuǎn)移到標(biāo)號(hào)“srch_dispatch”,以企圖從錯(cuò)誤中恢復(fù)過來。B.3Huffman解碼器ALUB.3.1引言根據(jù)本發(fā)明,子部件Huffman解碼器ALU為Huffman解碼器部件提供常規(guī)的算術(shù)和邏輯功能。它能做各種加法和減法操作、各種類型的符號(hào)擴(kuò)展操作和將輸入數(shù)據(jù)格式轉(zhuǎn)成run-sign-level三層(triples)。它還有一個(gè)靈活的結(jié)構(gòu),其準(zhǔn)確的操作和形式由一個(gè)微指令字指定,該微指令字與輸入數(shù)據(jù)同步到達(dá)ALU,即處于雙線接口的控制之下。除了36位指令和12位數(shù)據(jù)的輸入端口外,ALU還有6位的run端口和8位的常數(shù)端口(后者實(shí)際上駐留在令牌總線上)。除微指令字之外,所有這些端口都經(jīng)過ALU數(shù)據(jù)路徑去驅(qū)動(dòng)它們各自寬度的總線。在微指令字中有代表擴(kuò)展位的單獨(dú)一位,擴(kuò)展位連17位的run-sign-level(out_data)一起輸出。在ALU數(shù)據(jù)路徑的兩端各有一個(gè)雙線接口。一組條件碼隨同它們自己的有效信號(hào)cc_valid一起輸出。還有一個(gè)寄存器組,其它的Huffman解碼器子部件通過ALU可以訪問它,微機(jī)接口也可以訪問它。B.3.2.2基本結(jié)構(gòu)HuffmanALU的基本結(jié)構(gòu)如圖126所示。它包括以下部分輸入塊400輸出塊401條件碼塊402“A”寄存器403,其源為多路Run寄存器(6位)404,其源為多路輸入加法器/減法器405,其源為多路輸入符號(hào)擴(kuò)展邏輯406,其源為多路輸入寄存器組407這些塊的每一個(gè)(輸出塊除外)將其輸出驅(qū)動(dòng)到一條貫穿數(shù)據(jù)路徑的總線上,而這些總線反過來又當(dāng)作塊源的多路輸入。例如,加法器有它自己的數(shù)據(jù)路徑總線,該總線是A寄存器的若干的可能輸入之一。與此類似,A寄存器有它自己的總線,該總線形成加法器的若干可能輸入之一。在這方面只存在一個(gè)所有可能性的子集,第7節(jié)微指令字中詳細(xì)說明。在單一周期內(nèi)可能執(zhí)行一條以加法為基礎(chǔ)的指令或是執(zhí)行一條以符號(hào)擴(kuò)展為基礎(chǔ)的指令。此外還可允許在單周期內(nèi)同時(shí)執(zhí)行這兩條指令,只要它們的操作嚴(yán)格并行。這就是說,不允許有先相加后擴(kuò)展符號(hào)或是先擴(kuò)展符號(hào)后相加的指令序列。在單周期內(nèi),寄存器組可以或者讀出或者寫入,但不能同時(shí)讀和寫。輸出數(shù)據(jù)有三個(gè)字段·run-6位·slng-1位·level-10位如果數(shù)據(jù)有待直接通過ALU,輸入數(shù)據(jù)寄存器的最低有效11位被鎖存入sign和level字段。有可能對(duì)ALU的有限個(gè)多周期操作進(jìn)行編程。在這方面,所需的周期數(shù)由寄存器組所在單元的內(nèi)容給出,寄存器組位置的地址則由微指令指定;當(dāng)?shù)?jì)數(shù)器減至1時(shí),同一操作重復(fù)進(jìn)行。這一便利條件典型地用于實(shí)現(xiàn)左移使用加法器將A寄存器內(nèi)容自身相加,然后將結(jié)果存回到A寄存器內(nèi)。B.3.3加法器/減法器子塊這是一個(gè)12位寬的加法器,對(duì)其input2可以選擇將正值置為負(fù)值,對(duì)進(jìn)位計(jì)入(carry-inbit)可以選擇置位或不置位。輸出是一個(gè)12位的和,不利用它的進(jìn)位輸出(carry-out)。有七種操作方式·ADD帶進(jìn)位加法,進(jìn)位位置零input1+input2·ADC帶進(jìn)位加法,進(jìn)位位置1input1+input2+1·SBCinput2取反,進(jìn)位位置零input1-input2-1·SUBinput2取反,進(jìn)位位置1input1-input2·TCI如果input2<0,使用SUB,否則使用ADD。這一方式用于從二的補(bǔ)碼值得出數(shù)量的大小,使用時(shí)將input1置為零?!CD(DC差)如果inpt2<0則進(jìn)行ADC,否則進(jìn)行ADD?!RA(向量殘值加)如果input1<0則進(jìn)行ADC,否則進(jìn)行SBC。B.3.4符號(hào)擴(kuò)展子塊這是一個(gè)12位的單元,它根據(jù)size輸入以不同方式對(duì)輸入數(shù)據(jù)進(jìn)行符號(hào)擴(kuò)展。size是一個(gè)4位二進(jìn)制數(shù),其值為0至11(0對(duì)應(yīng)于最低有效位,11對(duì)應(yīng)于最高有效位)。輸出是變動(dòng)了的12位數(shù)據(jù)值,加上“符號(hào)”位。在SG×MODE=NORMAL方式,所有在第size位以上(含第size位)的各位取第size位的值。所有以下各位保留不變。符號(hào)取第size位的值。例如data(數(shù)據(jù))=101010101010size=2output(輸出)000000000010,sign(符號(hào))=0在SG×MODE=iNVERSE方式,所有在第size位以上(含第size位)的各位取第size位的反值,而所有以下各位保留不變。符號(hào)取第size位的反值。例如data=101010101010size=Ooutput111111111111,sign=1在SG×MODE=DIFMAG方式,如果第size位為零,則所有在第size位以下(含第size位)的各位取反,而所有以上各位保留不變。如果第size為1,所有各位保留不變。在兩種情況,符號(hào)都取第size位的反值。本方式用于獲得各AC差值的大小。例如data=000010101010size=2output=000010101101,sign=1data=000010101010size=1output=000010101010,sign=0在SG×MODE=DIFCOMP方式,所有在第size位以上(不含第size位)的各位取第size位的反值,而所有以下各位(含第size)保留不變。符號(hào)取第size位的反值。本方式用于獲得各DC差值的二的補(bǔ)碼值。例如data=101010101010size=0output=1111111l1110,sign=1B.3.5條件碼Huffman塊所使用的各條件碼有兩個(gè)字節(jié)(16位),其中某些位由ALU/寄存器組產(chǎn)生。這些條件碼是Sign(符號(hào))條件碼、Zero(零)條件碼、Extension(擴(kuò)展)條件碼和變化檢測(cè)位(changeDetectbit)。因?yàn)镻arser對(duì)最后兩種碼的用法與其它幾種不同,這最后兩種不是真正的條件碼。sign、Zero及Extension條件碼在Parser發(fā)出一條更新指令時(shí)更新;對(duì)應(yīng)于這些指今的每一條,條件碼有效信號(hào)形成一個(gè)正脈沖。Sign條件碼只不過是符號(hào)擴(kuò)展的sign輸出的鎖存,而如果A寄存器輸入為零則zero條件碼置1。Extension條件碼是鎖存的輸入擴(kuò)展位,與OUTSRC無關(guān)。條件碼可以用來評(píng)定某些條件類型·結(jié)果等于常數(shù)-使用減法和Zero條件·結(jié)果等于寄存器值-使用減法和Zero條件·寄存器等于常數(shù)-使用減法和Zero條件·寄存器位置位-使用Sign(符號(hào))擴(kuò)展和Sign條件·結(jié)果位置位-使用Sign(符號(hào))和Sign條件注意當(dāng)使用符號(hào)擴(kuò)展和Sign條件碼的組合時(shí),只可能評(píng)定單個(gè)指定位而不是用慣常邏輯‘與’那樣地評(píng)定多個(gè)位。在本發(fā)明中變化檢測(cè)位由與Zero條件碼同樣的邏輯產(chǎn)生,但是它沒有伴隨的有效信號(hào)。微指令中的一位指示出如果當(dāng)前正在寫入寄存器組的值與已存在的值不同(這意味著需要兩個(gè)時(shí)鐘周期,第一周期將REG-MODE置到READ,第二周期將REGMODE置到WRITE),就應(yīng)該更新變化檢測(cè)位。如果檢測(cè)到一個(gè)變化值,就隨后開始微處理器中斷。變化檢測(cè)位靠通常的使其有效的方法來復(fù)位,但此時(shí)REGMODE被置到READ。硬接線的宏塊計(jì)數(shù)器結(jié)構(gòu)(寄存器組的一部分-見下面的說明)還產(chǎn)生如下的條件碼Mb_Start,Pattern_Code,Restart和Pic_Start。B.3.6寄存器組(RegisterFile)寄存器組的地址變換表如下示。它使用了ALU數(shù)據(jù)路徑和UPI共用七位的地址空間,有些地址是ALU不訪問的,因?yàn)檫@些通常是硬接線的宏塊結(jié)構(gòu)內(nèi)的計(jì)數(shù)器或在ALU自身內(nèi)部的寄存器。后者有專用訪問地址,但是它是UPI地址變換表的組成部分。有些多字節(jié)單元(表中用加大尺寸的“0”表示,有單個(gè)ALU地址,但是有多個(gè)UPI地址。類似地,有幾類用分量計(jì)數(shù)(componentcount)CC(在表中用III表示)索引的寄存器被ALU當(dāng)作單地點(diǎn)對(duì)待。這就為初始化、重置(resetting)和宏塊操作的微編程帶來方便。除了一些專用的(UPI只讀的)ALU寄存器外,所有單元是讀寫兩用的,所有計(jì)數(shù)器都由指令字中的一位復(fù)位至零。模式碼(Patterncode)寄存器有右移能力,其最低有效位形成Pattern_Code條件位。所有在硬接線的宏塊結(jié)構(gòu)中的寄存器在表中用Macro的縮寫“M”表示,那些兼作計(jì)數(shù)器(n位)用的寄存器附注為Cn。在本發(fā)明中,某些單元的內(nèi)容被硬接線至Huffman子系統(tǒng)編碼(subsysrem_coding)標(biāo)準(zhǔn)的其它部分,它們是兩個(gè)r-size地點(diǎn),和到HuffmanDecoder去的每張achuff表和dchuff表的單個(gè)單元(2位字)。用黑體表示的一些地址可被ALU和UPI存取,其它的只能由UPI存取。不是由ALU指引通過CC的一些寄存器類可以有一個(gè)被指令字指定的單一ALU地址,CC將選擇要存取哪個(gè)物理單元。ALU地址可是本類寄存器任一個(gè)的地址,雖然慣常應(yīng)該用第一個(gè)的地址。多字節(jié)單元的情況也如此,應(yīng)該使用地址對(duì)(pair)中最低的那個(gè),雖然實(shí)際上用兩個(gè)地址均足滿足。注意,單元2E和2F可以在最高級(jí)(top-level)地址轉(zhuǎn)換表中被存取(用“T”表示),即不僅僅通過一些keyhole(鎖孔,顯示內(nèi)情的)寄存器。這兩處單元也被復(fù)位至零。為了提高存取速度,寄存器組在物理上被分成四“組”(ban-ks),但這對(duì)尋址毫無影響。主表指出適用于MPEG的地址分配,隨后兩個(gè)有重復(fù)的部分表格分別給出用于JPEG及H.261的不同之處。表B.3.1表1Htiffman寄存器組地址轉(zhuǎn)移表表B.3.1表1Htuffman寄存器組地址轉(zhuǎn)移表(續(xù))JPEG不同點(diǎn)表B.3.2JPEG不同點(diǎn)H.261不同點(diǎn)表B.3.3H.261不同點(diǎn)B.3.7微指令字根據(jù)本發(fā)明,ALU微指令字分割為幾個(gè)字段,每一字段控制著上述結(jié)構(gòu)的一個(gè)不同方面。指令字中使用的總位數(shù)是36(另加1位作擴(kuò)展位輸入),采用最少的跨字段編碼,所以保持了硬件配置的最大靈活性。指令字分割的詳述見后。缺省的字段值,即那些不改變ALU或寄存器組狀態(tài)的值用斜體字樣給出。表B.3.4表2HuffmanALU微指令字段表B.3.4表2HuffmanALU微指令字段(續(xù))表B.3.4表2HuffmanALU微指令字段(續(xù))表B.3.4表2HuffmanALU微指令字段(續(xù))表B.3.4表2HuffmanALU微指令字段(續(xù))B.4緩存器管理器(BufferManager)B.4.1引言根據(jù)本發(fā)明,本文件說明緩存器管理器(bman)的用途、作用及其具體裝置。B.4.2概述緩存器管理器為DRAM接口提供四個(gè)地址。這些地址是DRAM中的頁地址。DRAM接口含有在DRAM內(nèi)的兩個(gè)FIFO、編碼數(shù)據(jù)緩沖器及令牌數(shù)據(jù)緩沖器。因此,為這四個(gè)地址,每個(gè)緩存器各有一個(gè)讀地址和一個(gè)寫地址。B.4.3接口緩存器管理器只接到DRAM接口和微處理器。微處理器只是用來設(shè)置各“初始化寄存器”(見表B.4.4)。與DRAM接口的接口是四個(gè)18位地址,每個(gè)地址由請(qǐng)求/響應(yīng)(REQuest/ACKnowledge)協(xié)定控制。(因?yàn)榫彺嫫鞴芾砥鞑辉跀?shù)據(jù)路徑之中,所以緩存器管理器沒有雙線接口。)此外,緩存器管理器的操作不用(operaresoff)DRAM接口時(shí)鐘發(fā)生器,但使用(on)DRAM接口掃描鏈(scanchain)。B.4.4地址計(jì)算每個(gè)緩存器的讀地址和寫地址由9個(gè)18位的寄存器產(chǎn)生初始化寄存器(按照微處理器讀寫)·BASECB-編碼數(shù)據(jù)基地址緩存器·LENGTHCB-編碼數(shù)據(jù)緩存器的最大容量(單位頁)·BASETB-令牌數(shù)據(jù)基地址緩存器·LENGTHTB-令牌數(shù)據(jù)緩存器的最大容量(單位頁)·LIMIT-DRAM容量(單位頁)動(dòng)態(tài)寄存器(從微處理器只讀)·READCB-相對(duì)于BASECB的編碼數(shù)據(jù)緩存器讀指針·NUMBERCB-相對(duì)于READCB的編碼數(shù)據(jù)緩存器寫指針·READTB-相對(duì)于BASETB的令牌數(shù)據(jù)緩存器讀指針·NUMBERTB-相對(duì)于READTB的令牌數(shù)據(jù)緩存器寫指針地址計(jì)算公式readaddr(讀地址)=(BASE+READ)modLIMITwriteaddr(讀地址)=(((READ+NUMBER)modLENGTH)+BASE)modLIMIT所用“modLIMIT”項(xiàng)是因?yàn)榫彺嫫骺梢試@DRAM重疊(wraparoundDRAM)。B.4.5塊說明在本發(fā)明中,如圖127所示,緩存器管理器由三個(gè)接成環(huán)形的頂層(toplevel)模塊組成,環(huán)的窺測(cè)器(snooper)監(jiān)視著DRAM接口的連接情況。這些模塊是bmprtize(優(yōu)先化),bminstr(指令)和bmrecalc(重新計(jì)算),它們按此順序安排在一個(gè)環(huán)內(nèi),還有bmsnoop(窺測(cè)器)安排在各地址輸出端。模塊Bmprtize處理REQ/ACK協(xié)議和各緩存器的FULL/EMPTY(滿/空)標(biāo)志,它還含有每個(gè)地址的狀態(tài),即“這是有效地址嗎”。根據(jù)這個(gè)信息,它規(guī)定bminstr應(yīng)該重新計(jì)算哪個(gè)地址(假定有的話)。它還管理BUF_CSR(狀態(tài))微處理器寄存器,指示各FULL/EMPTY標(biāo)志;并管理buf_access微處理器寄存器,以及控制微處理器對(duì)緩存器管理器各寄存器的寫訪問。一經(jīng)bmprtize告知計(jì)算地址,模塊Bminstr就發(fā)出六條指令(每?jī)蓚€(gè)周期發(fā)一條)以控制bmrecalc去計(jì)算某個(gè)地址。模塊Bmrecalc在bminstr的指令下重新計(jì)算地址。此模塊每?jī)蓚€(gè)周期運(yùn)行一條指令,它包含所有的初始化寄存器和動(dòng)態(tài)寄存器,還包括一個(gè)能做加法、減法和模數(shù)運(yùn)算的簡(jiǎn)單ALU。當(dāng)它完成地址計(jì)算或它檢測(cè)到FULL/EMPTY狀態(tài)時(shí),就把這些狀態(tài)告知bmprtize。B.4.6塊的具體實(shí)現(xiàn)B.4.6.1Bmprtize在復(fù)位狀態(tài),buf_access微處理器寄存器被置為1以允許各初始化寄存器的設(shè)置。當(dāng)buf_access讀回1時(shí),不啟動(dòng)地址的計(jì)算,因?yàn)闆]有有效的初始化寄存器這些計(jì)算就毫無意義。一旦buf_access被去除確認(rèn)(de_asserted)(對(duì)它寫入零),bmprtize就著手使所有地址為有效(用重新計(jì)算這些地址),因?yàn)樗挠猛揪褪潜3炙兴膫€(gè)地址都有效。目前,緩沖器管理器正在“啟動(dòng)”(即所有地址還未算出),因此請(qǐng)求不被確認(rèn)。一旦所有地址成為有效,啟動(dòng)階段即告結(jié)束,所有請(qǐng)求被確認(rèn)。從此之后,當(dāng)某地址成為無效時(shí)(因?yàn)樗驯挥眠^和響應(yīng)過),該地址就重新計(jì)算。永遠(yuǎn)不會(huì)需要對(duì)各地址定優(yōu)先級(jí)別,因?yàn)镈RAM接口的能力是最快每17個(gè)周期使用一個(gè)地址,而緩存器管理器的能力是每12個(gè)周期重新計(jì)算一個(gè)地址。所以每次啟動(dòng)后總是只有一條地址無效。因此bmprtize將會(huì)重新計(jì)算任何不是當(dāng)前計(jì)算的無效地址。在本發(fā)明中,當(dāng)buf_access被確認(rèn)時(shí),啟動(dòng)將會(huì)重新進(jìn)入,因此,在微處理器各次訪問期間,不會(huì)有地址提供給DRAM接口。B.4.b.2sminscrBminstr模塊含有一個(gè)模12周期的計(jì)數(shù)器(產(chǎn)生一條地址所用的周期數(shù))。注意,偶數(shù)周期啟動(dòng)一條指令,而奇數(shù)周期結(jié)束一條指令。最高的3位連同這是讀計(jì)算還是寫計(jì)算一起被解碼成bmreca-lc的如下指令用于讀地址表B.4.1讀地址的計(jì)算用于寫地址的表B.4.2用于寫地址的計(jì)算注最后一次操作的結(jié)果總是保留在累加器內(nèi)。當(dāng)沒有需要重新計(jì)算的地址時(shí),周期計(jì)數(shù)器空閑在零值,因此產(chǎn)生一條不寫入任何寄存器的指令。這不產(chǎn)生什么影響。B.4.6.3Bmrecalc模塊Bmrecalc每?jī)蓚€(gè)時(shí)鐘周期完成一次操作。在一個(gè)偶數(shù)計(jì)數(shù)器周期(start_alu_cyc)內(nèi),它將由bminstr來的指令(以及是哪個(gè)緩沖器,是輸入還是輸出)鎖存進(jìn)來,在一個(gè)奇數(shù)計(jì)數(shù)器周期(end_alu_cyc)內(nèi)鎖存操作結(jié)果。操作結(jié)果除了貯存在指令所指定的寄存器內(nèi)之外,還總是貯存在名叫“Accum”的寄存器內(nèi)。此外,在end_alu_cyc周期,bmrecalc告知bmprtize剛計(jì)算出來的地址的使用會(huì)使緩存器滿還是空,以及何時(shí)地址及滿/空已經(jīng)成功地算出load_addr)。滿/空是利用操作結(jié)果的符號(hào)位來計(jì)算的。模塊操作并不是真正的模運(yùn)算,AmodB是這樣實(shí)現(xiàn)的(A>B?(A-B)A)然而這只是在以下場(chǎng)合才出錯(cuò)A>(2B一1)這永遠(yuǎn)不會(huì)出現(xiàn)。B.4.6.4Bmsnoop模塊Bmsnoop由四個(gè)18位的超級(jí)窺探器(snoopers)組成,它們監(jiān)視著給DRAM接口提供的各個(gè)地址。窺探器必須是“超級(jí)的”(即可以在時(shí)鐘運(yùn)行時(shí)被訪問).以允許對(duì)外部DRAM的芯片上測(cè)試。這些窺探器必須以REQ/ACK(請(qǐng)求/響應(yīng))方式工作,所以在器件使用上與別的窺探器不同。在本接口使用REQ/ACK而不用雙線協(xié)議,因?yàn)樗l(fā)送信息(即響應(yīng))返回到發(fā)送方而不接收。所以,這就嚴(yán)格地監(jiān)視了各FIF0指針。B.4.7寄存器為了獲得微處理器對(duì)各初始化寄存器的寫訪問,應(yīng)該對(duì)buf_access寫入1,然后當(dāng)bur_access讀回1時(shí)才給予存取。反之,要放棄微處理器的寫訪問,應(yīng)該給buf_access寫入零。當(dāng)buf_access讀回零時(shí)才給予訪問。注意,buf_access復(fù)位為1。本發(fā)明的各動(dòng)態(tài)寄存器和初始化寄存器可以在任何時(shí)候讀取。但是為了確保各動(dòng)態(tài)寄存器不致逐漸改變(arenotchanging)微處理器,就必須獲得寫訪問。只打算對(duì)各初始化寄存器寫入一次。對(duì)它們重新寫入可能導(dǎo)致各緩沖器操作不正確。但是可以予計(jì)on-the-fly時(shí)要增加緩沖器長(zhǎng)度(1ength)并予計(jì)在適當(dāng)時(shí)要讓緩存器管理器使用新的長(zhǎng)度。從來不對(duì)各初始化寄存器內(nèi)的值時(shí)行檢查以確保其切合實(shí)際(如確保各緩存器不互相重迭)。這是用戶的責(zé)任。表B.4.3緩存器管理器非鎖孔寄存器表中D表示寄存器位,X表示不是寄存器位。表B.4.4在緩存器管理器鎖孔內(nèi)的寄存器B.4.8校驗(yàn)校驗(yàn)在Lsim中進(jìn)行,用一些小型FIFO加到模擬的(dummy)DRAM接口上使用C碼作為頂層芯片模擬的一部分。B.4.9測(cè)試覆蓋bman的測(cè)試是通過bmsnoop內(nèi)的各窺探器(srloopers)、各動(dòng)態(tài)寄存器(見B.4.4節(jié))及使用掃描鏈來進(jìn)行。該掃描是DRAM接口掃描鏈的一部分。B.5逆向模型器(InverseModeler)B.5.1引言本文件根據(jù)本發(fā)明說明逆向造型器(imodel)和令牌格式化器(hsppk)的用途、作用和具體實(shí)現(xiàn)。表B.4.4在緩存器管理器鎖孔內(nèi)的寄存器注hsppk在體制上是Huffman解碼器的一部分,但在功能上卻是逆向造型器的一部分。所以在本節(jié)中加以討論比較好。B.5.2概述令牌緩沖器處于imodel和hsppk之間,它可以容納大量數(shù)據(jù),這些數(shù)據(jù)全都在片外(off_ohip)的DRAM中。為了確保有效地使用該存貯器,數(shù)據(jù)必須是16位格式的。格式化器將來自Huffman解碼器的數(shù)據(jù)“打包”(paoks)成適合于今牌緩存器的這種格式。其后,逆向模型器將數(shù)據(jù)從令牌緩存器格式中“解包(unpaoks)”出來。然而,逆向模型器的主要功能是將各“run/level(運(yùn)行/電平)碼擴(kuò)充出來,成為一個(gè)零數(shù)據(jù)的run,后繼一個(gè)level。此外,逆向模型器確保各DATA+牌至少有64個(gè)系數(shù),它還提供一個(gè)“門(gate)”用于停止不曾滿足它們的啟動(dòng)準(zhǔn)則的那些流(streams)。B.5.3接口B.5.3.1HSppk在本發(fā)明中,Hsppk有Huffman解碼器作為輸入和令牌緩存器作為輸出。這兩個(gè)接口都是雙線類型的,輸入是一個(gè)17位令牌端口(Port),輸出是16位“打包數(shù)據(jù)”,加上一個(gè)FLUSH信號(hào)。此外Hsppk的時(shí)鐘來自Huffman時(shí)鐘產(chǎn)生器,因此被連接到Huffman掃描鏈。B.5.3.2ImodelImodel有令牌緩存器啟動(dòng)輸出門邏輯(start_upoutputgatelogic)(bsogl)作為輸入和逆向量化器(InverseQuantizer)作輸出。來自令牌緩存器的輸入是16位“打包的數(shù)據(jù)”,加上blook_end(塊結(jié)束)信號(hào),從bsogl來的是一個(gè)wirestream_enable信號(hào)。輸出是一個(gè)11位令牌端口。所有接口都受雙線接口協(xié)議(protoool)控制。Imodel有它自己的時(shí)鐘產(chǎn)生器和掃描鏈。微處理器對(duì)Imodel和Hsppk這兩個(gè)塊只訪問到它們輸出處的各個(gè)窺探器。B.5.4塊說明B.5.4.1HsppkHsppk從Huffman取入17位數(shù)據(jù),而輸出16位數(shù)據(jù)至令牌緩存器。這一過程是這樣完成的首先,將輸入數(shù)據(jù)截?cái)?trunoating)或分割(splitting)成一些12位的字,其次將這些字打包成16位的格式。B.5.4.1.1分割Hsppk從InverseHuffman接受17位數(shù)據(jù)。運(yùn)用以下各種格式將此數(shù)據(jù)格式化成12位。其中F=指定格式;E=擴(kuò)展位;R=運(yùn)行位;L=長(zhǎng)度位(按照符號(hào)量值排列)或非數(shù)據(jù)令牌位;x=無須關(guān)心。FLLLLLLLLLLLFormat0ELLLLLLLLLLLFormat0aFRRRRRR00000Format1正常的令牌只占據(jù)最低12位,其形式為ExxxxxxLLLLLLLLLLL這被截?cái)喑筛袷?a。但是數(shù)據(jù)令牌在每個(gè)字中有一個(gè)run和一個(gè)level,其形式為ERRRRRPLLLLLLLLLLL這被分成以下格式ERRRRRRLLLLLLLLLLL→FRRRRRR00000Format1ELLLLLLLLLLLFormat0a或者,如果run為零,則使用格式0EOOOOOOLLLLLLLLLLL→FLLLLLLLLLLLFormat0可以看出在格式0中,擴(kuò)展位不見了,假定它是1。因此,當(dāng)擴(kuò)展位為零時(shí)就不能用格式0。在此情況下,無條件地使用格式1。B.5.4.1.2打包(paoking)在分割之后的所有數(shù)據(jù)字都是12位的寬度。每四個(gè)12位字被打包成三個(gè)16位字表B.5.1打包方法B.5.4.1.3緩沖器的沖洗(flushin9)本發(fā)明的DRAM接口在收集一塊(32個(gè)16位“經(jīng)過打包”的字)之后,再將它寫入緩存器。這意味著如果塊只是部分地齊全的話,數(shù)據(jù)可以在一個(gè)流(stream)的末尾被堵在DRAM接口內(nèi)。因此需要一種沖洗技巧。據(jù)此,Hsppk發(fā)信號(hào)通知DRAM接口無條件地寫它當(dāng)前的部分齊全的塊。B.5.4.2.1Imup(UnPoker,解包器)Imup完成三個(gè)功能1)對(duì)數(shù)據(jù)解包,從它的16位格式變成12位字。表B.5.2解包的方法2)在令牌緩存器清除期間保持正確的數(shù)據(jù)。當(dāng)DRAM接口用無條件地寫當(dāng)前部分齊全的塊的方法flush時(shí),垃圾(rubbish)數(shù)據(jù)保留在塊內(nèi)。imup必須刪除垃圾數(shù)據(jù),即刪除所有來自FLUSH令牌的數(shù)據(jù),一直到塊的末尾。3)將數(shù)據(jù)保存在原地直到起動(dòng)判據(jù)(statr_upCIiteria)被滿足從本塊輸出數(shù)據(jù)的條件是對(duì)每一個(gè)不同的流,收到來自緩沖器起動(dòng)(BufferStartup)的“有效”信號(hào)(stream_enable)。于是,12位數(shù)據(jù)被輸出到hsppk。B.5.4.2.2Imex(Expander擴(kuò)充器)在本發(fā)明中,Imex將所有的游程長(zhǎng)度碼(runlengthoodes)擴(kuò)充為一些數(shù)值是零的run,后繼一個(gè)level。B.5.4.2.3Impad(PADder,裝填器)Impad確保所有的數(shù)據(jù)令牌體含有64(或更多的)字。它是在令牌的最后字中裝填一些0來做到這點(diǎn)的。對(duì)數(shù)據(jù)令牌是不檢查它在體內(nèi)有64個(gè)以上的字的。B.5.5塊的實(shí)現(xiàn)B.5.5.1Hsppk典型情況下,分割和打包在單一周期內(nèi)完成。B.5.5.1.1分割(splitting)首先必須決定格式IF(datatoken)IF(lastformat=1)useformat0a;ELSEIF(run=0)useformat0;ELSEuseformat1;ELSEuseformat0a;其次必須決定格式位format0formatbit=0;format0aformatbit=extensionbit;format1formatbit=1;如果使用格式1,在下一周期不應(yīng)該接受新的數(shù)據(jù),因?yàn)榇a的level還有必須輸出。B.5.5.1.2打包每四個(gè)有效數(shù)據(jù)輸入打包過程循環(huán)一次。16位的字輸出由保留的最后有效字和它的后繼字組成。如果這種組成無效,則輸出也無效。過程為表B.5.3打包過程表中x表示未定義的位。在有效周期0期間,沒有字輸出,因?yàn)樵撟譄o效。有效周期數(shù)用環(huán)形計(jì)數(shù)器維待。計(jì)數(shù)器的增量由分割器的有效數(shù)據(jù)和一個(gè)已接受的輸出來控制。當(dāng)收到FLUsH令牌(或pioture_end)且令牌本身準(zhǔn)備好輸出時(shí),F(xiàn)LUSH信號(hào)也輸出到DRAM接口以便將有效周期復(fù)位到零。如果FLUSH令牌在除周期3以外的任何時(shí)間來到,則FLUSH信號(hào)被延遲一周,以確保令牌本身的輸出。B.5.5.2ImodelB.5.5.2.1Imup(UnPaoker解包器)與打包器情況相同,最后的有效輸入被貯存,并與下一個(gè)輸入結(jié)合,然后允許解包。表B.5.4解包的過程這里x表示未經(jīng)定義的位。有效周期由一個(gè)環(huán)形計(jì)數(shù)器來維持。解包的數(shù)據(jù)包含令牌的數(shù)據(jù),F(xiàn)LUSH和由FLUSH解碼的PICTURE_END信號(hào)。此外,格式和擴(kuò)展位也由解包數(shù)據(jù)解碼出來。用于令牌解碼并傳送到imex.當(dāng)某一FLUSH(或pioture_end)令牌被解包出來并輸出至imex時(shí),所有數(shù)據(jù)被刪除(Valic啵強(qiáng)制為低),直至從DRAM接口收到塊結(jié)束信號(hào)。B.5.5.2.2Imex(擴(kuò)展器)根據(jù)本發(fā)明,imex是將run/level碼擴(kuò)充出來的四狀態(tài)機(jī)。該狀態(tài)機(jī)是·狀態(tài)0從run碼裝入rum計(jì)數(shù)?!顟B(tài)1rnn減計(jì)數(shù),輸出各位零?!顟B(tài)2輸入數(shù)據(jù)和輸出levels;缺省狀態(tài)?!顟B(tài)3非法狀態(tài)。formatbit_is_e×tn=(lastformnat=1)11databodyB.5.5.2.3Impad(裝填器)數(shù)據(jù)令牌頭由imex告知Impad。下一步,impad對(duì)令牌體的系數(shù)數(shù)目進(jìn)行計(jì)數(shù)。如果令牌在達(dá)到64個(gè)系數(shù)之前結(jié)束,則在令牌結(jié)束處插入數(shù)值為零的系數(shù),使令牌有64個(gè)系數(shù)。例如,未擴(kuò)展的數(shù)據(jù)頭在其后有64個(gè)零系數(shù)插入。具有64個(gè)或更多系數(shù)的數(shù)據(jù)令牌不受impad的影響。B.5.6寄存器本發(fā)明的imodel和hsppk沒有微處理器寄存器,但是它們的窺測(cè)器除外。表B.5.5Imodel和hsppk的寄存器這里V=有效位;A=接受位;E=擴(kuò)展位;D=數(shù)據(jù)位。B.5.7校驗(yàn)選定的流通過Lsim模擬運(yùn)行。B.5.8測(cè)試在輸入是通過令牌緩存輸出窺測(cè)器,在輸出是通過imodel自身的窺測(cè)器來達(dá)到對(duì)imodel的測(cè)試。通過imodel自身的掃描鏈來達(dá)到邏輯。hsspk的輸出可以通過huffman輸出窺測(cè)器來訪問。邏輯可以通過huffman掃描鏈來觀察。B.6緩存起動(dòng)(ButferStart_up)B.6.1引言本節(jié)根據(jù)本發(fā)明說明緩存起動(dòng)的方法和實(shí)現(xiàn)。B.6.2概述為保證圖象流可以流暢和連續(xù)地顯示,在解碼能開始之前必須收集一定數(shù)量的數(shù)據(jù)。這稱做起動(dòng)條件。編碼標(biāo)準(zhǔn)指定了一個(gè)VBV延遲,此延遲可以大致地轉(zhuǎn)換成需要收集的數(shù)據(jù)量。“緩存起動(dòng)”的用途就是確保在每一個(gè)流中的數(shù)據(jù)從令牌緩存器前進(jìn)以容許解碼之前,該流滿足它的啟動(dòng)條件。流被一個(gè)名義上的(notional)門(輸出門)保持在各緩存器中。這個(gè)門位于令牌緩存器的輸出處(即在逆向模型器內(nèi)),它只在流的啟動(dòng)條件已得到滿足時(shí)才為流打開。B.6.3接口Bsontbit(BufferStart_upbitcounter,緩存啟動(dòng)位計(jì)數(shù)器)在數(shù)據(jù)通路內(nèi),用雙線接口通信。它接到微處理器。它也用雙線接口分接到bsogl(BufferStart_upOutputgateLogic,緩存啟動(dòng)輸出門邏輯)去。Bsogl通過雙線邏輯去控制imup(InverseModelerUnPacker,逆向模型器解包器),imup實(shí)現(xiàn)輸出門。B.6.4塊結(jié)構(gòu)如圖130所示,Bscnbit位于數(shù)據(jù)通路之內(nèi)。該通路在起始碼檢測(cè)器和編碼數(shù)據(jù)緩存器之間。Bsontbit這個(gè)單周期部件對(duì)離開本塊的數(shù)據(jù)的有效字計(jì)數(shù),并將這個(gè)數(shù)字與必須由微處理器裝入的啟動(dòng)條件(或叫目標(biāo))相比較。一旦目標(biāo)被達(dá)到,就通知bsogl。數(shù)據(jù)不受bsontbit的影響。Bsogl位于bsontbit和(在逆向模型器內(nèi)的)imape_間。在效果上,它是一個(gè)指示符(indicators)隊(duì)列,用來指示各流已滿足它們的目標(biāo)。隊(duì)列靠離開緩存器的流(即,在imup處的數(shù)據(jù)流中收到的FLUSH令牌)來向前移動(dòng),隨后另一個(gè)“指示符”被imup接受。如果隊(duì)列為空(即在緩存器中沒有已滿足啟動(dòng)目標(biāo)的流),則在imup中,流被停止。隊(duì)列只有一定的深度,然而,可在bsogl內(nèi)將隊(duì)列斷開,并允許微處理器監(jiān)控隊(duì)列,用這種方法,深度就可以無窮地?cái)U(kuò)充。這些隊(duì)列機(jī)構(gòu)分別稱作內(nèi)隊(duì)列和外隊(duì)列。B.6.5功能塊的實(shí)現(xiàn)B.6.5.1Bsbitont(緩存起動(dòng)位計(jì)數(shù)器)Bsontbit對(duì)所有輸入到緩存起動(dòng)的有效字計(jì)數(shù)。計(jì)數(shù)器(bsctr)是一個(gè)可編程16~24位寬度的計(jì)數(shù)器。此外,bsotr具有超前進(jìn)位(aarrylookahead)線路以給予足夠快的速度。Bsotr的寬度用aed_bs_prescale來編程。方法是強(qiáng)制8至16位為高,這就使這些位總能傳送一個(gè)進(jìn)位。所以實(shí)際上沒有使用它們。只有bsotr的最高8位用來與目標(biāo)(aed_bs_target)作比較。比較(oed_bs_oount>=ced_bs_target)是由bscmp完成的。目標(biāo)是在流處于Huffman解碼器中的時(shí)候從流中得來的,它又是用微處理器計(jì)算的。所以它只是在流開始之后的某個(gè)時(shí)候才被設(shè)置。在起動(dòng)之前,target_valid被置為低。對(duì)aeLbs_target的寫入使target_valid被置為高,并允許在bsomp中進(jìn)行比較。當(dāng)比較結(jié)果顯示aed_bs_aount>=aed_bs_target時(shí),target_valid被置為低。目標(biāo)已經(jīng)滿。當(dāng)目標(biāo)被滿足時(shí),計(jì)數(shù)被復(fù)位。注意,它并不是在流的末端復(fù)位的。此外,在目標(biāo)被滿足之后禁止計(jì)數(shù),如果這是在流末之前的話。計(jì)數(shù)的飽和值是255。當(dāng)在bsbitont中檢測(cè)到一次流的結(jié)束(即一次FLUSH)時(shí),就產(chǎn)生abs_flusLevent。如果流在目標(biāo)滿足之前結(jié)束,還產(chǎn)生另外一個(gè)事件(bs_flusLbefore_target_met_event)。當(dāng)這些事件的任一個(gè)出現(xiàn)時(shí),塊被停龜這就允許用戶去重新開始搜索下一個(gè)流的目標(biāo),或者,如果是bs_flush_befoIe_target_meLevent事件,則或者1)寫入零目標(biāo),強(qiáng)使一次target_met或者2)注意到目標(biāo)在以前沒有達(dá)到,允許下一個(gè)流前進(jìn),直到它和上一個(gè)流一起達(dá)到目標(biāo)。這下一個(gè)流的目標(biāo)可以/應(yīng)該作相應(yīng)的調(diào)整。B.6.5.2BSOGL(緩存起動(dòng)輸出門邏輯)如前所述,Bsogl是一個(gè)用來指示流已經(jīng)滿足目標(biāo)的指示符隊(duì)列。隊(duì)列類型用aed_bs_queue設(shè)置(內(nèi)部隊(duì)列為0,外部隊(duì)列為1)。復(fù)位時(shí)選擇內(nèi)部隊(duì)列。隊(duì)列深度決定了滿足條件的流的最大數(shù)。流可以在編碼數(shù)據(jù)緩存器、Huffman或令牌緩存器內(nèi)。當(dāng)達(dá)到此數(shù)(即隊(duì)列滿)時(shí),bsogl會(huì)強(qiáng)制數(shù)據(jù)通路停在bsbitont處。使用內(nèi)部隊(duì)列不需要來自微處理器的動(dòng)作。然而,如果有必要增加隊(duì)列深度,則可以設(shè)置外部隊(duì)列(方法是aed_bs_aooess被置位,以獲得對(duì)aed_bs_gueue的訪問,后者應(yīng)被置位,target_met_event和stream_end_event被使能,然后訪問被撤回)。外部隊(duì)列(由微處理器照管(maintain)的計(jì)數(shù)值)被插入內(nèi)部隊(duì)列。外部隊(duì)列由兩個(gè)事件target_met_event和stream_end_event和一個(gè)寄存器aed_bs_enable_nxt_stream來照管(maintain)。這兩個(gè)事件可以簡(jiǎn)單地分別稱作servioe_queue_input和service_queue_output。事實(shí)上,target_met_event是提供(supply)隊(duì)列的內(nèi)部隊(duì)列上流端(upstreamend)。類似地,aed_bs_enable_nxt_stream是吸收(oonsume)隊(duì)列的內(nèi)部隊(duì)列下流端(downstreamend)類似地,stream_end_event是對(duì)提供下流隊(duì)列(downstreamquenoe)的請(qǐng)求;stream_end_event使[ced_bs_enable_nxt_stream復(fù)位。對(duì)這兩個(gè)事件的使用應(yīng)當(dāng)如下/*TARGET_MET_EVENT*/j=micro_read(CED_BS_ENABLE_NXT_STM);if(j==0)/*Isnextstdeamenabled?*/{/*no,enableit*/micro_write(CED_BS_ENABLE_NXT_STM,1);printf(*enablenextstream(queue=0×3x)\n*,(context→queue));}else/*yes,incrementthequeueof*target*streams*/{queue++pritf(*streamalreadyenabled(queue=0×3x)\n*,(conseke->queue));}/*STREAM_EVENT*/if(queue>0)/*arethereany*target_mets*left?*/(/*yes,decrementthequeueandenableanotheratream*/queue--micro_write(CED_BS_ENABLE_NXT_STM,1);printf(*enablenextscream(queue=0×3x)\n*,(context→queue));}elseprintf(*queueemptycannotenablenextstream(queue=0×3x)\n*-r__.(~_~e'-'e=Ox%x)\n~.queue);micro_write(CED_EVENT_1.1<<BS_STREAM_END_EVENT);/*clearevent*/隊(duì)列類型可以在任何時(shí)候由內(nèi)部轉(zhuǎn)為外部(用上述方法),但是只有當(dāng)外隊(duì)列空(根據(jù)上述的柘queue=0”)時(shí),才能將隊(duì)列類型由外隊(duì)列轉(zhuǎn)成內(nèi)隊(duì)列。轉(zhuǎn)換的方法是aed_bs_aooess被置位,以獲得對(duì)oed_bs_queue的訪問,后者應(yīng)被置位,target_met_event和stzeam_end_event被屏蔽,然后訪問被撤回。另一方面,不能對(duì)流起動(dòng)條件的檢查,對(duì)aed_bs_queue(外部)置位,將target_met_event和stream_end_event屏蔽掉,然后對(duì)aed_bs_enable_nxt_stream置位。這樣,所有的流就將總是被使能。B.6.6微處理器寄存器表B.6.1BSCNTbit寄存器表B.6.2Bsogl寄存器這里·D是一個(gè)寄存器位·x是一個(gè)不存在的寄存器位·r是一個(gè)保留的寄存器位·為了獲得對(duì)這些寄存器的存取,ced_bs_access必須置成1并被查詢直到它讀回1,除非是在某個(gè)中斷服務(wù)程序中。將ced_bs_aooess置成零來放棄存取。B.7DRAM接口B.7.1概述在本發(fā)明中,空間解碼器、時(shí)間解碼和視頻格式化器各有一個(gè)特殊芯片的DRAM接口部件。在所有的三種裝置中,DRAM接口的用途是通過地址發(fā)生器提供的塊地址將數(shù)據(jù)從芯片傳送到外部DRAM和從外部DRAM傳送到芯片。在典型情況下,DRAM接口用以工作的時(shí)鐘既和地址發(fā)生器異步,也和數(shù)據(jù)通過的不同部件的時(shí)鐘異步。然而,這種異步容易得到處理,因?yàn)楦鲿r(shí)鐘都大致工作在相同頻率上。數(shù)據(jù)通常在DRAM接口和芯片其余部分之間以64字節(jié)的塊為單位進(jìn)行傳送(唯一的例外是時(shí)間解碼器中的預(yù)測(cè)數(shù)據(jù))。傳送靠使用一種叫作“交替緩存器”的裝置。這在本質(zhì)上是一對(duì)以雙緩存結(jié)構(gòu)形式工作的RAM,在DRAM接口填滿(filling)或出空(emptying)一個(gè)RAM的同時(shí),芯片另一部分則出空或填滿另一個(gè)RAM。每個(gè)交替緩存器都掛在各自分別的總線上,該各別總線的地址由地址發(fā)生器產(chǎn)生。每一種芯片都有四個(gè)交替緩存器,但這些緩存器的功能在每種芯片是不同的。在空間解碼器中,一個(gè)交替緩存器用于將已編碼數(shù)據(jù)傳送到DRAM,另一個(gè)用于從DRAM讀取已編碼數(shù)據(jù),第三個(gè)用于將已令牌化數(shù)據(jù)傳送到DRAM,第四個(gè)用于從DRAM讀取已令牌化數(shù)據(jù)。在時(shí)間解碼器中,一個(gè)交替緩存器用于將基(Intra)或預(yù)測(cè)的(Predioted)圖象數(shù)據(jù)寫入DRAM,第二個(gè)用從DRAM讀取基或預(yù)測(cè)的數(shù)據(jù),另兩個(gè)用于讀取前向和后向預(yù)測(cè)數(shù)據(jù)。在視頻格式化器中,一個(gè)交替緩存器用于將數(shù)據(jù)傳送到DRAM,另三個(gè)用于ALDRAM讀取數(shù)據(jù)。亮度(Y)和紅藍(lán)色色差數(shù)據(jù)(分別是cr和cb)各用三個(gè)中的一個(gè)交替緩存器。下節(jié)將根據(jù)本發(fā)明描述具有一個(gè)寫交替緩存器和一個(gè)讀交替緩存器的DRAM接口的工作,這基本上和空間解碼器DRAM接口的工作情況相同。用圖131“DRAM接口”作說明。B.7.2一般性的DRAM接口參閱圖131,與地址發(fā)生器420的接口和與供求數(shù)據(jù)的各塊的接口都是雙線接口。地址發(fā)生器420或者可以產(chǎn)生地址作為接收控制令牌的結(jié)果,或者僅僅產(chǎn)生固定的地址序列。DRAM接口421以特殊方式處理與地址發(fā)生器有關(guān)的那些雙線接口。它不是在準(zhǔn)備接收地址的時(shí)候?qū)⒔邮芫€(aaaeptline)保持為高,而等待地址發(fā)生器提供一個(gè)有效地址,處理這個(gè)地址,然后在一個(gè)時(shí)鐘周期內(nèi)將接受線置為高。因此,它是實(shí)現(xiàn)請(qǐng)求/響應(yīng)(REQ/ACK)協(xié)議。DRAM接口的一個(gè)獨(dú)特的特性是它有能力與地址發(fā)生器通信,也能與那些完全獨(dú)立供應(yīng)或接受數(shù)據(jù)的部件通信。例如,地址發(fā)生器能夠產(chǎn)生一個(gè)與寫艾替緩沖器內(nèi)數(shù)據(jù)有關(guān)的地址,但是沒有動(dòng)作,直到寫交替緩存器發(fā)出信號(hào)表示有一塊數(shù)據(jù)已準(zhǔn)備好寫入外部DRAM422。然而,沒有動(dòng)作發(fā)生,直到地址發(fā)生器將地址提供到適當(dāng)?shù)目偩€上。此外,一旦寫交替緩存器中的RAM之一已經(jīng)裝進(jìn)數(shù)據(jù),另一個(gè)RAM可能在數(shù)據(jù)輸入被停止之前完全裝滿并被“交替”到DRAM接口一邊(雙線接口的agoept信號(hào)置低)。在了解本發(fā)明的DRAM接口的工作情況時(shí),重要的是注意到在一個(gè)配置正確的系統(tǒng)中,DRAM接口在交替緩存器和外部DRAM之間傳送數(shù)據(jù)的速度必須至少能和交替緩存器與芯片其余部分之間各平均數(shù)據(jù)速度的總和一樣快。每個(gè)DRAM接口包括一種決定下一次該為哪個(gè)交替緩存器服務(wù)的方法。一般說,這或是一種“循環(huán)(roundrobin)”,或是一種優(yōu)先級(jí)別編碼器。在“循環(huán)”方法中,被服務(wù)的交替緩存器是下一個(gè)可以得到的最近不曾輪到的那個(gè)交替緩存器。在優(yōu)先編碼器方式中,被服務(wù)的是那些交替緩存器,它們的優(yōu)先級(jí)別比另一些更高。在上述兩種情況下,都有附加的請(qǐng)求從刷新請(qǐng)求發(fā)生器(refreshrequ-estgenerator)來,它比所有其它請(qǐng)求的優(yōu)先級(jí)更高。刷新請(qǐng)求由刷新計(jì)數(shù)器產(chǎn)生,刷新計(jì)數(shù)器可通過微處理器接口給予編程。B.7.2.1交替緩存器圖132表示一個(gè)寫交替緩存器。工作情況如下1)有效數(shù)據(jù)出現(xiàn)在430輸入端(數(shù)據(jù)輸入)。當(dāng)每個(gè)數(shù)據(jù)塊被接受后,它被寫入RAMl并且地址增值。2)當(dāng)RAMl滿時(shí),輸入方(side)放棄控制并把一個(gè)信號(hào)送到讀方,以指示RAMl現(xiàn)在已準(zhǔn)備好被讀出。該信號(hào)在兩種異步時(shí)鐘之間通過,所以通過三個(gè)同步用的觸發(fā)器。3)下一個(gè)來到輸入方的數(shù)據(jù)項(xiàng)被寫入仍舊空著的RAM2。4)當(dāng)循環(huán)方法或優(yōu)先級(jí)編碼器指出該輪到這個(gè)交替緩存器被讀時(shí),DRAM接口就讀取RA趾的內(nèi)容并將它們寫入外部DRAM。然后一個(gè)信號(hào)被通過異步接口送回,如同(2),以指出RAMl現(xiàn)在又一次準(zhǔn)備好被裝入。5)如果DRAM接口將RAM1出空并且在輸入方將RAM2充滿之前將它“交替”,則數(shù)據(jù)可以連續(xù)地被交替緩存器接受;否則當(dāng)RAM2被充滿后,交替緩存器會(huì)將它的接受信號(hào)置為低,直到RAMl已被“交替”回來可以被輸入方使用。6)此過程無限地重復(fù)下去。讀交替緩存器的工作過程類似,但輸入數(shù)據(jù)總線和輸出數(shù)據(jù)總線的位置相反。B.7.2.2外部DRAM和交替緩存器的尋址DRAM接口的設(shè)計(jì)是要使可獲得的存貯器帶寬為最大。因此它安排得使每個(gè)8×8的數(shù)據(jù)塊存貯在DRAM的同頁內(nèi)。因而可以充分利用DRAM快速的頁訪問方式,在這些方式中給出一個(gè)行地址,然后許多列地址。此外還提供一種設(shè)施,允許接到外部RAM數(shù)據(jù)總線的寬度為8、16或32位,使所用的DRAM的多少可以和特定應(yīng)用的尺寸和帶寬要求相符。在本例中(它確實(shí)地說明了在空間解碼器上的DRAM接口是如何工作的),地址發(fā)生器給DRAM接口提供每個(gè)讀和寫交替緩存器的部件地址。該地址被用作DRAM的行地址。列地址的6位由DRAM接口自身提供,這些位也用作交替緩存器RAM的地址。接到各交替緩存器的數(shù)據(jù)數(shù)總線為32位寬,所以如果接到外部DRAM的總線寬度小于32位,則在下一字從某寫交替緩存器讀取或下一字寫入某讀艾替緩存器(讀和寫是對(duì)外部DRAM的傳送方向來說的)時(shí),必須進(jìn)行兩或四次外部DRAM訪問。用時(shí)間解碼器和視頻格式化器時(shí)的情況更為復(fù)雜。它們分別在以后涉及。B.7.3DRAM接口時(shí)序在本發(fā)明中,DRAM接口時(shí)序塊使用時(shí)序鏈,以使各DRAM信號(hào)的邊沿精確到四分之一系統(tǒng)時(shí)鐘周期。使用了來自鎖相環(huán)的兩個(gè)互差四分之一周期的時(shí)鐘。它們結(jié)合起來,形成名義上的兩倍時(shí)鐘(notional2×clock)。然后,任何一個(gè)鏈用兩個(gè)并行的移位寄存器組成,以“雙倍時(shí)鐘”的正相和反相工作。首先,一個(gè)鏈用于頁起動(dòng)周期,另一個(gè)鏈用于讀/寫/刷清各周期。每一周期的長(zhǎng)度可以通過微處理器接口來編程。有鑒于此,頁起動(dòng)鏈具有固定長(zhǎng)度,而周期鏈長(zhǎng)度則在一次頁起動(dòng)中以適宜為準(zhǔn)作變動(dòng)。在復(fù)位狀態(tài),各鏈被清除,同時(shí),有一個(gè)脈沖產(chǎn)生。此脈沖由DRAM接口來的狀態(tài)信息指引,沿著各鏈傳送。DRAM接口時(shí)鐘就是用此脈沖產(chǎn)生的。每個(gè)DRAM接口時(shí)鐘周期對(duì)應(yīng)于DRAM的一個(gè)周期。所以,因?yàn)镈RAM周期有不同的長(zhǎng)度,DRAM接口的時(shí)鐘速度就不是固定不變的。此外,各定時(shí)鏈將從上述鏈來的脈沖與從DRAM接口來的信息相混合,以產(chǎn)生出各輸出選通和使能(notoas,notras,notwe,not-oe)。B.8逆向量化器(InverseQuantizer)B.8.1引言這個(gè)文件根據(jù)本項(xiàng)發(fā)明描述逆向量化器(iq)的目的,作用和實(shí)現(xiàn)。B.8.2概述逆向量化器使用已量化的系數(shù),量化加權(quán)和步長(zhǎng)大小來重建各系數(shù)。所有這些使用的量都是在數(shù)據(jù)流內(nèi)傳送的。B.8.3接口iq在數(shù)據(jù)通路中位于逆向造型器和逆向DCT之間,它連接到微處理器。數(shù)據(jù)通路的連結(jié)是通過雙線接口的。輸入數(shù)據(jù)是10位寬,輸出是11位寬。B.8.4逆向量化的數(shù)學(xué)運(yùn)算B.8.4.1H.261方程對(duì)于用基(intra)方式編碼的塊對(duì)于所有其它方式編碼的塊B.8.4.2JPEG方程C′i=Wi.jQi+1024i=0C′i=Wi.jQi0<i<54C′i=min(mc.c(C′i′-2048).20-47)j=jpeg_table_incicection(c)B.8.4.3MPEG方程對(duì)于以基方式編碼的塊C′i=Wi.jQi+1024i=0C′i=min(max(C′i.-2048)2047)在基DC情況,計(jì)算huffman中的各預(yù)測(cè)值時(shí)要加1024,它們被復(fù)位為零。對(duì)于所有其它已編碼的塊Ci=min(max(C′i.-2048)2047)B.8.4.4JPEG的變異方程Ci=min(max(C′i.-2048)2047)j=jpeg_table_indicection(c)B.8.4.5所有其它令牌除數(shù)據(jù)令牌外,所有令牌必須通過iq不被量化。這里F100r(a)返回一個(gè)整數(shù),所以(a-1)<floor(a)≤aa≥0a≤floor(a)<a<(a+1)a≤0Q是量化系數(shù)。Ci是重建以后的系數(shù)Wi,j是量化表矩陣中的值i是沿z字形的系數(shù)標(biāo)號(hào)j是量化表矩陣號(hào)(0<=j(luò)<=3)B.8.4.6多種標(biāo)準(zhǔn)的綜合可以看出所有以上的標(biāo)準(zhǔn)和它們的變化(也包括須不被iq改變的控制數(shù)據(jù))能被映射到單一的方程中逆向量化后處理功能·加1024·將符號(hào)量值轉(zhuǎn)換成2的補(bǔ)碼表示·往0方向把所有偶數(shù)舍入為最靠近的奇數(shù)。·使結(jié)果飽和為+2407或-2048對(duì)每種標(biāo)準(zhǔn)的變量的變化值k、x和Y及它們所用函數(shù),示于表B.8.1。表B.8.1控制解碼表B.8.1控制解碼(續(xù))B.8.5功能塊的結(jié)構(gòu)從B.8.4.6和表B.8.1,可以看出一個(gè)多標(biāo)準(zhǔn)逆向量化器可使用單一的結(jié)構(gòu)。它的運(yùn)算方塊圖示于圖133“算術(shù)塊算術(shù)塊的控制按功能可分為兩部分·令牌解碼裝入狀態(tài)寄存器或量化表?!顟B(tài)寄存器解碼為控制信號(hào)。令牌在igoa中解碼,iqaa控制下個(gè)周期,即iqab的寄存器存儲(chǔ)單元。它也控制存取在igram中的四個(gè)量化表。算術(shù)部件,即兩個(gè)乘法器和一些后處理功能在igarith內(nèi)。iq的完整的方塊圖示于圖134。B.8.6功能塊的實(shí)現(xiàn)B.8.6.1Iqaa在本發(fā)明中,iqoa是一個(gè)狀態(tài)機(jī),用于把令牌解碼成對(duì)igram和對(duì)在igcb中的寄存器的控制信號(hào)。狀態(tài)機(jī)看作是每個(gè)令牌的狀態(tài)機(jī)更合適,因?yàn)樗幻總€(gè)新令牌復(fù)位。例如對(duì)QUANT_SCALE(見B.8.7.4,“QUANT_SCALET”)和QUANT_TABLE(見B.8.7.6,“QUANT_TABLE”)的代碼如下if(tokenheader==QUANTD_SCALE)(sprintf(preport,*QUANT_SCALE*);reg_addr=ADDR_IQ_QUANT_SCALE;enable=1;}if(tokenheader==QUANT_TABLE)/*QUANT_TABLEcoken*/switch(substate)(case0/*quatisationtableheader*/sprintf(preport,*QUANT_TABLE_BS_sO*,(headerextn?*(full)*∶*(empty)*));nextsubstcte=1;insertnext=(headerextn?0∶1);reg_addr=ADDR_IQ_COMPONENT;rnotw=WRITE;enable=1;break;case1/*quantisationtablebody*/sprintdf(preport,*QUANT_TABLE_Bs_s1*,(headerextn?*(full)*∶*(empty)*));nexcsubstate=1;insertnexc=(headerextn?0(qtm_addr_63==0));req_addr=USE_QTH;rnotw=(headerextn?WRITE∶READ);enable=1;break;defaultsprintf(preport,*ERRORiniqquantisationtabletokendcoder(substateBx)\n*,substate);break;}}這里子狀態(tài)(substate)是在令牌內(nèi)的一個(gè)狀態(tài),例如QUANT_SCALR只有一個(gè)子狀態(tài)。然而,QUANT_TABLE有兩個(gè)子狀態(tài),一個(gè)是頭,第二個(gè)是令牌體。狀態(tài)機(jī)以PLA來實(shí)現(xiàn)。未被識(shí)別的令牌不引起字線(wordline)升高,使PLA輸出一些缺省(無害的)控制。另外,iqaa用體字(Bodyword)計(jì)數(shù)器供給地址給igram,并把字插入流中,例如在一個(gè)未經(jīng)擴(kuò)展的QUANT_TABLE中(見B.8.7.4)。這是用在維持輸出有效時(shí),停止輸入的辦法得到的。在后繼塊中(iqub或iqarith)這些字能以正確的數(shù)據(jù)填入。iqaa是被兩線接口控制的數(shù)據(jù)通路中的一個(gè)單周期。B.8.6.2iqab在本發(fā)明中,iqob保存iqe態(tài)寄存器的值。在iqoa的控制下它把這些值裝入數(shù)據(jù)通路或從甲卸下。狀態(tài)寄存器的值被解碼(見表B.8.1)送到iqarith的控制線,去控制XY乘法器項(xiàng)和后量化(postquantization)功能。數(shù)據(jù)通路的符號(hào)位在這里被分開并送到后量化功能。還有數(shù)據(jù)通道上的零值字也在這里被檢測(cè)到。于是運(yùn)算被忽略而零被多路傳送到數(shù)據(jù)通路。這是遵守iq的“0進(jìn);0出”規(guī)定最容易的方法。只有當(dāng)寄存器iq_aooess已被置1并讀回1時(shí),狀態(tài)寄存器才能從微處理器訪問。在這種情況,iqab已暫停數(shù)據(jù)通路,所以保證寄存器有一穩(wěn)定值,在數(shù)據(jù)通路中沒有數(shù)據(jù)被訛誤。Iqab在數(shù)據(jù)通路中有一個(gè)單周期,數(shù)據(jù)通路由雙線接口控制。B.8.6.3IqramIqram必-須支持四個(gè)量化表矩陣(QTM),每個(gè)有64*8位。所以它是一個(gè)256*8位的六晶體管RAM,每周期可讀一次或?qū)懸淮?。此此RAM裝在雙線接口邏輯內(nèi),接受它的控制和從iqaa來的寫數(shù)據(jù)。它讀出數(shù)據(jù)到iqatitho類似地,iqram占據(jù)數(shù)據(jù)通路中同樣的周期,如同iqab。RAM在iq_aooess讀回1時(shí),可從微處理器讀和寫。RAM被放在一個(gè)鎖眼寄存器,iq_qtm_keyhole后面,用iq_qtm_keyhole_addr尋址。訪問iq_qtm_keyhole將使它所指向的、保存在iq_qtm_keyhole_addr中的地址增加。同樣,iq_qtm_keyhole_addr能被直接寫。B.8.6.4iqarith注意,iqarith是三功能流水線,分在三個(gè)周期上進(jìn)行。其功能討論如下(見圖133)B.8.6.4.1XY乘法器這是一個(gè)5(X)乘8(Y)位進(jìn)位保存無符號(hào)乘法器,饋送到數(shù)據(jù)通路乘法器。乘數(shù)和被乘數(shù)用iqob來的控制線選擇。乘法運(yùn)算在第一個(gè)周期,求解加法器(resolvingadder)在第二個(gè)周期。在乘法器的輸入,從iqram來的數(shù)據(jù)能被多路傳送到數(shù)據(jù)通路上去,以讀出QUANT_TABLE到數(shù)據(jù)通路。B.8.6.4.2(XY)*數(shù)據(jù)通路乘法器這個(gè)13(XY)乘12(數(shù)據(jù)通路)位進(jìn)位保存無符號(hào)乘法器分在塊的三個(gè)周期上。三個(gè)部分積在第一個(gè)周期,7個(gè)在第二個(gè)周期,余下的兩個(gè)在第三個(gè)周期。因?yàn)樗袕某朔ㄆ鞯妮敵錾儆?047(non_ooeffioient非系數(shù))或飽和到+2407/-2048,最高的12位從來不需要求解。相應(yīng)地,求解加法器只有兩位寬。在高次序位的乘余部分,一個(gè)0檢測(cè)足夠作為一個(gè)飽和信號(hào)。B.8.6.4.3量化后處理功能(Postquantizationfunotions)量化后處理功能是·加1024·把符號(hào)量值變?yōu)?的補(bǔ)碼表示?!は?方向把所有偶數(shù)舍為最近的奇數(shù)?!⒔Y(jié)果飽和+2047或-2048?!⑤敵鲈O(shè)置到零(見B.8.6.2)最前三個(gè)功能在一個(gè)12位加法器上實(shí)現(xiàn)(在第二和第三周期上流水進(jìn)行)。從這,可以看到每個(gè)功能要求什么,這些然后合并(aombine)到單個(gè)加法器。表B.8.2量化后處理加法器功能正如一個(gè)具有一般本行技能的人將體會(huì)到的,重編這些功能的程序時(shí)必須小心,因?yàn)樵诤喜r(shí),它們是非?;ハ嘁蕾嚨?。飽和值,0和0+1024在第三周期結(jié)束時(shí)被多路傳送到數(shù)據(jù)通路。B.8.7逆向量化器令牌下面的說明規(guī)定了逆向量化器對(duì)它所響應(yīng)的每個(gè)令牌tp的工作情況。在所有情況,令牌也被傳送到逆向量化器的輸出。在大多數(shù)情況,令牌不被逆向相量化器修改,只有下面所說的一些情況例外。所有未被識(shí)別的令牌不改變地傳送到逆向量化器的輸出。B.8.7.1SEQUENCE_START這個(gè)令牌使寄存器iq_prediotionmode[1∶0]和iq_mpeg_indi-reotion[1∶0]復(fù)位為0。B.8.7.2CODING_STANDARD這個(gè)令牌使iq_standard[1∶0]裝入基于解碼的當(dāng)前標(biāo)準(zhǔn)(MPEG、JPEG或H.261)的合適值。B.8.7.3PRkDICTION_MODE這個(gè)令牌加載iq_prediotion_mode[1∶0]。雖然PREDICTION_MODE攜帶多于兩位,逆向量化器只需訪問最低次序的兩位。這些決定了塊是或不是基編碼的。B.8.7.4QUANT_SCALEF這個(gè)令牌加載iq_quant_sgale[4∶0]。B.8.7.5數(shù)據(jù)在本發(fā)明中,這個(gè)令牌攜帶真正的量化系數(shù)(quantizedaoe-ffigients)。令牌頭包含識(shí)別彩色分量的兩位,這些被裝入iq-oomment[1∶0]。下面的64個(gè)令牌字包含量化系數(shù)。這些被修改成逆向量化器處理的結(jié)果,被重建系數(shù)(regonstrugtedooeffioients)代替。如果令牌中不存在恰好64個(gè)擴(kuò)展字,則逆向量化器的工作情況是不確定的。在逆向量化器輸入端的數(shù)據(jù)令牌攜帶量化系數(shù)。這些系數(shù)以符號(hào)量值格式表示為11位(10位加一符號(hào)位)。值“負(fù)0”應(yīng)當(dāng)不用,但可被正確地解釋為0。在逆向量化器輸出外的數(shù)據(jù)令牌攜帶重建系數(shù)。這些系數(shù)以2的補(bǔ)碼格式用12位表示(11位加一符號(hào)位)。在輸出處的數(shù)據(jù)令牌所具有的令牌擴(kuò)展字?jǐn)?shù)與在逆向相量化器輸入處所具有的數(shù)目是一樣的。B.8.7.6QUANT_TABLE這個(gè)令牌可用于裝入一個(gè)新量化表或讀出一個(gè)已存在的表。典型地說,在逆向量化器中,令牌被用來裝入一個(gè)已從位流中解碼的新表。讀出一個(gè)已存在表的動(dòng)作在編碼器的前向量化器中是有用的,如果這個(gè)表要編碼進(jìn)入位流的話。令牌頭包含兩位,以識(shí)別要用的表號(hào)。這些位放在iq_aompon-ent[1∶0]中。注意,這個(gè)寄存器現(xiàn)在包含一個(gè)“表號(hào)”,而不是一個(gè)彩色分量。如果令牌頭的擴(kuò)展位是1,逆向量化器希望恰好有64個(gè)擴(kuò)展令牌字。每一個(gè)被看作是一個(gè)量化表值,放在適當(dāng)?shù)谋淼倪B續(xù)位置,從位置0開始。每個(gè)擴(kuò)展令牌字的第9位被忽略。令牌也不修改地以正常方式送到逆向量化器的輸出。如果令牌頭的擴(kuò)展位為0,則逆向量化器將讀出適當(dāng)?shù)谋淼倪B續(xù)位置,從位置0開始。每個(gè)位置變成一個(gè)擴(kuò)展令牌字(第9位為0)。這個(gè)操作結(jié)束時(shí),令牌將包含恰好64個(gè)擴(kuò)展令牌字。對(duì)所有的擴(kuò)展數(shù)字,除0和64以外對(duì)應(yīng)于這令牌的逆向量化器的操作沒有定義。B.8.7.7JPEG_TABLE_SELECT這個(gè)令牌用來裝入或卸下由彩色分量轉(zhuǎn)換成表號(hào)去/從iq_ipeg_indireotion.這些轉(zhuǎn)換用于JPEG和其它標(biāo)準(zhǔn)中。令牌頭(TokenHead)包含兩佳用來識(shí)別當(dāng)前感興趣的彩色分量。這些位放在iq_oomponent[1∶0]中。如果令牌頭的擴(kuò)展位是1,令牌應(yīng)包含一個(gè)擴(kuò)展字,其最低兩位被寫入iq_ipeg_indireotion[2*iq_Component[1∶0]+1∶2*iq_Component[1∶0]單元。剛讀出的值變成一令牌擴(kuò)展字(高7位將是零)。在此操作結(jié)束時(shí),令牌將恰好包含一個(gè)令牌擴(kuò)展字。表B.8.3JPEG_TABLE_SELECT的柞用B.8.7.8MPEG_TABLE_SELECT當(dāng)通過MPEG標(biāo)準(zhǔn)進(jìn)行處理時(shí),這個(gè)令牌用來確定用缺省表還是用戶定義的量化表。令牌頭包含兩位。頭的位0決定如果要寫的話哪一位寫入iq_mpeg_indireotion。位l寫到那個(gè)單元。因?yàn)閕q_mpeg_indireotion[1∶0]寄存器被SEQUENCE_START令牌清零,只有在用戶定義的量化表已被發(fā)送到位流中時(shí),才必需用這個(gè)令牌。B.8.8微處理器寄存器B.8.8.1iq_aooess要使得微處理器對(duì)任一個(gè)iq寄存器的訪問,iq_aaaesso必須置1,并對(duì)它查詢直到它讀回1為止(見B.8.6.2)。如做不到這點(diǎn),將使正在被讀的寄存器仍被數(shù)據(jù)通路所控制,所以,是不穩(wěn)定的。關(guān)于igram,訪問被封閉,讀回0。寫0到iq_aooess,就將控制撤回到數(shù)據(jù)通路。B.8.8.2Iq_Coding_Standard[1∶0]這個(gè)寄存器保存編碼標(biāo)準(zhǔn),那是用逆向量化器實(shí)現(xiàn)的標(biāo)準(zhǔn)。表B.8.4編碼標(biāo)準(zhǔn)值這個(gè)寄存由CODING_STANDARD令牌加載。雖然這是一個(gè)兩位寄存器,但是,現(xiàn)在在內(nèi)存映象中卻占用了8位,將來可實(shí)現(xiàn)多于以上標(biāo)準(zhǔn)的處理。B.8.8.3Iq_mpeg_indiieotion[1∶0]在MPEG解碼操作期間,這個(gè)兩位寄存器用來維持一個(gè)量化表要使用的記錄。Iq_mpeg_indireotin控制為基編碼塊用的表。如果它為0,則用量化表0,要求包含缺省量化表。如果它是1,則用量化表2,要求包含為基編碼塊用的用戶定義的量化表。這個(gè)寄存器被MPEG_TABLE_SELECT令牌加載,用SEQUENCE_START4令牌將它復(fù)位到0。B.8.8.4Iq_ipegmindireotion[7∶0]這個(gè)8位寄存器,為在JPEG掃描中發(fā)生的四種可能彩色分量的每一個(gè)分量,決定用四個(gè)量化表中的哪一個(gè)?!の籟1∶0]保存分量0要用的表號(hào)?!の籟3∶2]保存分量1要用的表號(hào)?!の籟5∶4]保存分量2要用的表號(hào)。·位[7∶6]保存分量3要用的表號(hào)。這個(gè)寄存器受JPEG_TABLE_SELECT令牌的影響。B.8.8.5iq_quant_soale[4∶0]這個(gè)寄存器保存量化比例因子的當(dāng)前值。這個(gè)寄存器用QUANT_SCALE令牌加載。B.8.8.6iq_oomponent[1∶0]這個(gè)寄存器通常保存一個(gè)值,該值被轉(zhuǎn)換成量化表矩陣號(hào)(QuantizationTableMatrixnumber)。它被一些令牌加載。數(shù)據(jù)令牌頭使本寄存器用被處理的塊的彩色分量加載。這個(gè)信息只用于在JPEG和JPEG的一些變量中以決定QTM號(hào)通過訪問iq_ipegjndireetion[7∶0]來做這件事。在其它標(biāo)準(zhǔn),iq_Component[1∶0]被忽略。JPEG_TABLE_SELEC令牌使本寄存器裝入一個(gè)彩色分量。它然后被用作一個(gè)指向iq_ipeg_indireotion[7∶0]的指針。ig_ipeg_indireotion[7∶0]用令牌體訪問。QUANT_SCALE令牌使本寄存器裝入QTM號(hào)。這張表于是或者從今牌裝入(如用的是令的擴(kuò)展形式),或者從表中讀出以形成一個(gè)合適的擴(kuò)展令牌。B.8.8.7ig_prediotion_mode[1∶0]這個(gè)兩位寄存器保存后續(xù)的塊要用的預(yù)測(cè)方式。逆向量化器對(duì)這個(gè)信息的唯一利用是決定是否要用基編碼(intraoodillgs)。如果寄存器的兩位都是0,則各后續(xù)塊是基編碼的。這個(gè)寄存器用PREDICTION_MODE令牌加載,用SEQUENCE_START令牌寄存器復(fù)位到0。在JPEG和JPEG變化方式中Iq_prediotion_mode[1∶0]不影響操作。B.8.8.8Iq_ipeg_indireotion[7∶0]Iq_ipeg_indireotior破用作一個(gè)查找表。此表把彩色分量轉(zhuǎn)換成QTM號(hào)。相應(yīng)地,iq_Component用作iq_ipeg_indireotion的指針,如表B.8.3所示。如用令牌的擴(kuò)展形式,這個(gè)寄存器單元用JPEG_TABLE_SRLECT令牌直接寫入。如用令牌的非擴(kuò)展形式,這個(gè)寄存器單元用JPEG_TABLE_SELECT令牌直接讀取。B.8.8.9Iq_quant_table[3∶0][63∶0][7∶0]有四個(gè)量化表,每個(gè)有64個(gè)單元。每個(gè)單元是一個(gè)8位值。在任何單元都不應(yīng)該用數(shù)值0。這些寄存器是當(dāng)作在B.8.6.3“Igram”中描述的一個(gè)RAM來實(shí)現(xiàn)的。這些表可以用QUANT_TABLF玲牌加載。注意,在這些表中的數(shù)據(jù)按Zig-Zag掃描次序存貯。許多文件把量化表的值表示為數(shù)的8×8方陣。通常DC項(xiàng)是在左上角,隨水平頻率從左向右增加,隨垂直頻率從上往下增加。這些表必須沿Zig_zag掃描路徑讀,因?yàn)榱炕淼臄?shù)是按順序“i”放入的。B.8.9微處理器寄存器映象表B.8.5存儲(chǔ)器映象B.8.10測(cè)試要達(dá)到對(duì)逆向量化器的測(cè)試,在輸入是通過逆向模型器的輸出窺測(cè)器,在輸出則是通過逆向量化器自己的窺測(cè)器。邏輯用逆向量化器自己的掃描來達(dá)到。如果ramtest信號(hào)被認(rèn)定,可以獲得對(duì)igram的的存取,而不去訪問iq_aaaess。B.9IDCTB.9.1引言對(duì)反向離散余弦變換(IDCT)塊的這段敘述的目的,是為了提供IDCT的工程信息來源。它包括以下信息·IDCT的目的和主要特性·它是如何設(shè)計(jì)和校驗(yàn)的·結(jié)構(gòu)這段敘述的意圖是對(duì)一個(gè)具有本行一般技能的人提供充分信息以促進(jìn)或幫助下面的任務(wù)。·體會(huì)到IDCT是一個(gè)“硅宏功能處理器”·IDCT集成到另一設(shè)備·為IDCT硅片開發(fā)測(cè)試程序·IDCT的修改、重設(shè)計(jì)或維護(hù)?!ら_發(fā)未來DCT部件。B.9.2概述一個(gè)離散余弦變換/zig—Zag(DCT/ZZ)實(shí)現(xiàn)對(duì)像素塊的變換。在那里每個(gè)塊代表一個(gè)8個(gè)象素高乘8個(gè)象素寬的屏幕區(qū)域。變換的目的是把這個(gè)象素塊在按頻率分選的頻域中表示。因?yàn)檠劬?duì)圖象中的直流分量敏感,但對(duì)高頻分量敏感度就就差得多,頻率數(shù)據(jù)允許每個(gè)分量的大小按照眼睛的靈敏度分別減小。降低幅度的處理稱為量化。量化處理減少了圖象包含的信息,即量化處理是有損耗的。有損耗的處理用消除某些信息的方法達(dá)到總的數(shù)據(jù)壓縮。頻率數(shù)據(jù)被分類,所以高頻全都連續(xù)地出現(xiàn)。高頻絕大部分可能被量化為零。這些連續(xù)的零意味著用游程長(zhǎng)度編碼方法對(duì)量化數(shù)據(jù)進(jìn)行編碼產(chǎn)生更多的數(shù)據(jù)壓縮,雖然游程長(zhǎng)度編碼通常不是有損耗的處理。IDCT塊(它實(shí)際上包含一個(gè)反向Zig_Zag隨機(jī)存儲(chǔ)器(或稱IZZ)和一個(gè)IDCT),把已分類的頻率域數(shù)據(jù)轉(zhuǎn)換為空間數(shù)據(jù)。這種反向分類處理是IZZ的功能。圖象解壓縮系統(tǒng)用整數(shù)指示象素。ICD7塊件是系統(tǒng)的一部分。這意味著IDCT部件必需取和產(chǎn)生整數(shù)值。然而,因?yàn)镮DCT功能不是以整數(shù)為基礎(chǔ)的,內(nèi)部數(shù)的表示用小數(shù)部分來保持內(nèi)部的精確度。用全浮點(diǎn)計(jì)算更適宜,但這里敘述的具體實(shí)現(xiàn)(implementation)用定點(diǎn)計(jì)算。用定點(diǎn)計(jì)算有某些精度損失,但這一實(shí)現(xiàn)的精度超過H.261和IEEE所指定的精度。B.9.3設(shè)計(jì)目的按照本項(xiàng)發(fā)明,設(shè)計(jì)主要目的是要設(shè)計(jì)一個(gè)功能正確的IDCT塊,此塊用的硅片面積最小。設(shè)計(jì)也要求在指定的操作條件下,時(shí)鐘速度為30MHz。此設(shè)計(jì)也考慮到對(duì)未來的適應(yīng)性。未來需要更高的時(shí)鐘速率。凡是可能的地方,設(shè)計(jì)的結(jié)構(gòu)都允許這樣做。B.9.4IDCT接口描述IDCT塊有以下接口·一個(gè)12位寬度的令牌數(shù)據(jù)輸入端口·一個(gè)9位寬度的令牌數(shù)據(jù)輸出端口·一個(gè)微處理器接口端口·一個(gè)系統(tǒng)服務(wù)輸入端口·一個(gè)測(cè)試接口·重新同步信號(hào)兩個(gè)令牌數(shù)據(jù)端口都是以前說過的標(biāo)準(zhǔn)雙線接口類型。所說的寬度是指數(shù)據(jù)表現(xiàn)的位數(shù),不是端口的全部線數(shù)。另外,與輸入令牌數(shù)據(jù)端口有關(guān)的有時(shí)鐘和復(fù)位信號(hào)。復(fù)位信號(hào)用來與前面部件的輸出重新同步。與輸出令牌數(shù)據(jù)端口有關(guān)的還有兩個(gè)重新同步時(shí)鐘,它們?yōu)殡S后的部件所用。微處理器接口是標(biāo)準(zhǔn)的,地址用四位表示。還有三個(gè)在外部已解碼的選擇輸入,它們用來為各事件、各內(nèi)部寄存器和各測(cè)試寄存器選擇地址空間。這個(gè)機(jī)構(gòu)為把IDCT地址空間變換為不同的芯牌中的不同位置提供靈活性。還有一個(gè)單個(gè)事件輸出,idctevent,和兩個(gè)I/O信號(hào),n_derrd和n_serrd。它們是事件三態(tài)數(shù)據(jù)線,用于外接到IDCT和到微處理器非數(shù)據(jù)總線的適當(dāng)位。系統(tǒng)服務(wù)端口包含標(biāo)準(zhǔn)時(shí)鐘和復(fù)位輸入信號(hào),還有二相越權(quán)時(shí)鐘(overrideclocks)和有關(guān)的時(shí)鐘越權(quán)方式選擇輸入。測(cè)試接口JTAG包含時(shí)鐘和復(fù)位信號(hào),掃描路徑數(shù)據(jù)(scan_pathdata)和控制信號(hào)以及RAM測(cè)試(ramtest)和芯片測(cè)試(chiptest)輸入訊號(hào)。在正常工作時(shí),微處理器端口是無效的。因?yàn)镮DCT不要求任何微處理器訪問來得到它的指定功能。類似的,只有在要求測(cè)試或校驗(yàn)時(shí)測(cè)試接口才有效。B.9.5離散余弦變換的數(shù)學(xué)基礎(chǔ)在視頻帶寬壓縮中,輸入數(shù)據(jù)表示圖象的一塊矩形區(qū)域,所以所用變換必須是二維的。兩維變換難以高效率地計(jì)算。但兩維DCT有可被分開的性質(zhì)。分開的變換可對(duì)每一維單獨(dú)計(jì)算而與其它維無關(guān)。本實(shí)現(xiàn)用一個(gè)一維IDCT算法。此算法特別為轉(zhuǎn)換到硬件上而設(shè)計(jì),對(duì)軟件模型不合適。此一維算法逐次的應(yīng)用以得到一二維的結(jié)果。對(duì)一個(gè)N乘N的象素塊,兩維DCT的數(shù)學(xué)定義如下公式10正向DCT公式11反向DCT此處以上定義數(shù)學(xué)上等效于兩個(gè)N乘N矩陣相乘,連續(xù)兩次,在兩次相乘之間,做一次矩陣轉(zhuǎn)置。一維DCT數(shù)學(xué)上等效于兩個(gè)N×N矩陣相乘。數(shù)學(xué)上兩維的情況是Y=[xc]TC此外,C是余弦項(xiàng)組成的矩陣。所以DCT有時(shí)用矩陣處理來描述。矩陣描述對(duì)變換的數(shù)學(xué)上的簡(jiǎn)化比較方便。但必須強(qiáng)調(diào),這僅使符號(hào)表示法容易些。注意2/N項(xiàng)影響DC級(jí)常數(shù)C(j)和C(k),稱為歸一化因子。B.9.6IDCT變換算法如隨后的更詳細(xì)的說明所說,用來計(jì)算真正的IDCT的算法應(yīng)是一種“快速”算法。所用的算法加以優(yōu)化,以得到有效的硬件結(jié)構(gòu)和實(shí)現(xiàn)裝置。算法的主要特點(diǎn)在于利用了_比例,以減少一次乘法,以及一種算法的變換。這種算法設(shè)計(jì)使上半部分和下半部分之間更加對(duì)稱。這種對(duì)稱產(chǎn)生的結(jié)果是使許多代價(jià)最高的計(jì)算元件得到有效地重新利用。在說明此算法的圖中(圖136),上半部和下半部之間的對(duì)稱在圖的中部是明顯的。最后一列的加法器和減法器也有對(duì)稱性,用相對(duì)小的代價(jià)可以把加法器和減法器合并(4加法器/減法器明顯小于圖示的4個(gè)加法器+4個(gè)減法器)。注意,單維變換的所有輸出按_比例增大。意味著最后的二維答案按比例2增大。在最后的飽和舍入級(jí),用移位的方法可以很容易地加以校正。曾經(jīng)將所示算法用雙精度浮點(diǎn)C編碼,計(jì)算結(jié)果與參考的IDCT(用直接的矩陣乘法)比較。然后,進(jìn)一步用C編制出算法的精確到位級(jí)的整數(shù)形式(bit_accurateintegerversion)(不包括定時(shí)信息)。它可以用來校驗(yàn)算法的性能和精度,就象把它在硅片上具體實(shí)現(xiàn)一樣。在H.261標(biāo)準(zhǔn)中規(guī)定了變換的各種允許誤差。這種方法曾經(jīng)用來操練(exercise)精確到位級(jí)的模型和測(cè)量交付使用的精度(deliveredaccuracy)。圖137表明了總的IDCT結(jié)構(gòu),在某種意義上說明了上面部分和下面部分之間的公共性,也顯示一些點(diǎn),在這些點(diǎn)上,中間結(jié)果需要存儲(chǔ)。此線路是時(shí)間多路復(fù)用的(timemultiplexed),允許上面部分和下面部分分開計(jì)算。B.9.7IDCT變換結(jié)構(gòu)如前所述,IDCT算法被優(yōu)化以實(shí)現(xiàn)高效率的結(jié)構(gòu)。所形成的結(jié)構(gòu)的關(guān)鍵特性如下·代價(jià)高的計(jì)算操作被有效地重復(fù)使用·少量的乘法器。這些乘法器全部是常數(shù)系數(shù),而不是為了通用目的(減少乘法器的規(guī)模和排除個(gè)別系數(shù)存儲(chǔ)的需要)·少量的鎖存器,不多于使結(jié)構(gòu)流水線化的需要·操作被安排得使每級(jí)流水線只要求一次單一的求解操作·可安排按自然順序產(chǎn)生結(jié)果·沒有復(fù)雜的縱橫交又的轉(zhuǎn)換或大量的多路復(fù)用(這兩者在最后實(shí)現(xiàn)時(shí)都是代價(jià)很大的)·利用了求解的結(jié)果以便除去兩次進(jìn)位保存操作(一次加法,一次減法)·結(jié)構(gòu)允許每級(jí)采用4個(gè)時(shí)鐘周期,即消除對(duì)很快(大)的計(jì)算操作的要求·結(jié)構(gòu)將支持比當(dāng)前30MHZ象素一時(shí)鐘操作快得多的操作。這只需簡(jiǎn)單地把求解操作從小/慢的脈動(dòng)進(jìn)位,改變?yōu)楦?更快的先行進(jìn)位形式。這些求解操作占用了每級(jí)需要時(shí)間的最大部分,所以只加快這些操作的速度,對(duì)總的操作速度有巨大的影響。而這樣做對(duì)變換的總規(guī)模只有比較小的增加。加大流水線的深度可進(jìn)一步加快速度?!ぷ儞Q數(shù)據(jù)流(transformdata_flow)的控制很簡(jiǎn)單和效率高。一維變換微結(jié)構(gòu)的圖(圖141)說明算法是如何變換到一小組硬件資源的,然后如何進(jìn)入流水線以使必要的性能約束條件得到滿足。將一個(gè)“控制移位寄存器”與數(shù)據(jù)流流水線相配合,用這樣的方法得到對(duì)這一結(jié)構(gòu)的控制。這個(gè)控制設(shè)計(jì)簡(jiǎn)單,在硅片布局上效率高。在圖141上已命名的控制信號(hào)(1atch,sel_byp等)是各種使能信號(hào),用來控制各鎖存器,從而控制信號(hào)流。到鎖存器的時(shí)鐘信號(hào)未示出。變換結(jié)構(gòu)滿足所要求的精度標(biāo)準(zhǔn),而同時(shí)使變換的尺寸為最小,在這方面,若干實(shí)現(xiàn)的細(xì)節(jié)是很有意義的。所用的技術(shù)通常歸為兩個(gè)主要類別。·在每個(gè)中間狀態(tài),用個(gè)別控制定點(diǎn)位置的方法來使固定字寬的數(shù)保持最大動(dòng)態(tài)范圍?!榱擞糜羞x擇的計(jì)算操作來達(dá)到精度(而不是簡(jiǎn)單地增加整個(gè)變換的字寬來增加精度),利用了精度要求的統(tǒng)計(jì)定義。設(shè)計(jì)一個(gè)變換的簡(jiǎn)單方法包括用一足夠大的固定字寬,執(zhí)行簡(jiǎn)單的定點(diǎn)運(yùn)算以得到精度。不幸的是,這個(gè)方法造成過大的字寬,所以也造了更大的變換。在本項(xiàng)發(fā)明中采用的方法,允許定點(diǎn)位置在整個(gè)變換過程中變化,變化以這樣的方式進(jìn)行,使對(duì)任何特定的中間值能最大地利用可得到的動(dòng)態(tài)范圍,從而得到可能的最大精度。因?yàn)樵试S的結(jié)果是統(tǒng)計(jì)說明的,可對(duì)任何中間值截?cái)嗖僮饔羞x擇地調(diào)節(jié),以便改進(jìn)總精度。所選擇的調(diào)節(jié)是LSB(低有效位)計(jì)算的一些簡(jiǎn)單操作。這種處理代價(jià)小或無代價(jià)。這種技術(shù)的另一種方法是增加包含明顯價(jià)值的字寬。調(diào)節(jié)可有效地在給定方向?qū)ψ詈蠼Y(jié)果“加權(quán)”,如果發(fā)現(xiàn)這是在前的,則這些結(jié)果照顧相反的方向。用調(diào)節(jié)結(jié)果的小數(shù)部分的方法可有效地使這些結(jié)果的總平均值變動(dòng)(shifting)。B.9.8IDCT方框圖描述IDCT的方框圖表明所有與令牌流處理有關(guān)的塊。這張圖,圖138,沒有表示時(shí)鐘、測(cè)試和微處理器訪問及事件機(jī)構(gòu)的細(xì)節(jié)。用來提供測(cè)試訪問的窺測(cè)機(jī)構(gòu)在圖中沒有表示。B.9.8.1數(shù)據(jù)錯(cuò)誤校驗(yàn)器第一個(gè)塊是數(shù)據(jù)錯(cuò)誤校驗(yàn)器和校正器,被稱作“dechec”。它拾取和產(chǎn)生一個(gè)12位寬的令牌流,分析這個(gè)流和校驗(yàn)數(shù)據(jù)令牌。所有其它令牌被忽略而直接通過。對(duì)一些擴(kuò)展數(shù)不等于64的數(shù)據(jù)令牌做校驗(yàn)??赡艿腻e(cuò)誤被稱為“不足的(deficient)”(<64擴(kuò)展),即idct_too_few_event,和“多余的(supernumerary)(>64擴(kuò)展),即idct_too_many_event。用標(biāo)準(zhǔn)事件機(jī)構(gòu)對(duì)這些錯(cuò)誤發(fā)出信號(hào)。但此塊也企圖用處理令牌流的方法來使簡(jiǎn)單錯(cuò)誤恢復(fù)。在出現(xiàn)不足錯(cuò)誤時(shí),數(shù)據(jù)令牌被一些“0”值擴(kuò)展所填充(停止接收輸入和執(zhí)行插入),以補(bǔ)足正確的64擴(kuò)展。出現(xiàn)多余錯(cuò)誤時(shí),對(duì)第64的擴(kuò)展強(qiáng)迫置“0”,并從令牌流中去掉所有額外的擴(kuò)展。B.b.8.2反向Zig_Zag在圖138中,空間解碼器的下一個(gè)塊是反向Zig_Zag隨機(jī)存儲(chǔ)器441,izz,它也是獲取和產(chǎn)生一12位寬的令牌流。與所有其它塊一樣,流被分析,但只有數(shù)據(jù)令牌被識(shí)別。所有其它令牌不改變地通過。數(shù)據(jù)令牌也通過,但擴(kuò)展的次序被改變。這個(gè)塊依靠的是正確的數(shù)據(jù)令牌(即只有64個(gè)擴(kuò)展)。如情況不是這樣,則操作未加規(guī)定。按照標(biāo)準(zhǔn)反向Zig_Zag模式進(jìn)行重新排序,在缺省情況下,進(jìn)行重新排序還是為了在IDCT輸出提供水平掃描數(shù)據(jù)。改變排序方法提供垂直掃描輸出也是可能的。除了標(biāo)準(zhǔn)IZZ排序以外,這個(gè)塊對(duì)每個(gè)8字的行完成一額外的重排。這是為IDCT一維變換塊的特定要求而做的。其結(jié)果行輸出的次序是(1、3、5、7、0、2、4、6)而不是(0、1、2、3、4、5、6、7)。B.9.8.3輸入格式器在圖138中的下一個(gè)塊是輸入格式器442,“ip_fmt”,它對(duì)IDCT變換的第一維輸入數(shù)據(jù)進(jìn)行格式化。這個(gè)塊的輸入是12位寬的令牌流,輸出是22位寬的令牌流。數(shù)據(jù)令牌被左移,把整數(shù)部分移到IDCT變換標(biāo)準(zhǔn)22位寬字的正確有效位置(correctsignificance),小數(shù)部分被置零。這意味著在此處有10個(gè)小數(shù)位。所有其它令牌不移位,多余的未用的位被簡(jiǎn)單地置零。B.9.8.4.1維變換-第一維如圖138所示,下一個(gè)塊是第一個(gè)單維IDCT變換塊443,“oned“。這個(gè)塊輸入和輸出22位寬的令牌流。與通常一樣,流被分析,把數(shù)據(jù)令牌識(shí)別出來。其它令牌不改變地通過。數(shù)據(jù)令牌通過一個(gè)流水線化的數(shù)據(jù)通路,在那里完成一次單維8×8反向離散余弦變換。在第一維輸出,數(shù)據(jù)字中有7位小數(shù)。所有其它令牌通過一個(gè)只有移位寄存器的數(shù)據(jù)通路運(yùn)行。此通路只是為了與數(shù)據(jù)變換所需的等待時(shí)間相協(xié)調(diào)。這些令牌在輸出前又被組合成令牌流。B.9.8.5轉(zhuǎn)置隨機(jī)存儲(chǔ)器轉(zhuǎn)置隨機(jī)存儲(chǔ)器444“fram”,與反相Zig-Zag隨機(jī)存儲(chǔ)器441對(duì)令牌流的處理方法在許多方面是類似的。除了被處理的令牌寬度(22位)和執(zhí)行重排序列不同以外,在其它方面,它們以同樣方式工作。實(shí)際上它們共享它們的大部分控制邏輯。各行也要另外重排序。這是IDCT下一維的需要,也是列變行的基本的變換。B.9.8.6一維變換一第二維如圖所示下一個(gè)塊是單維IDCT變換的另一個(gè)場(chǎng)合。在每一方面它都和第一維的情況一樣。這一維的輸出有4位小數(shù)。B.9.8.7舍入和飽和舍入和飽和塊446在圖138,“ras”取22位寬令牌流。流包含22位定點(diǎn)格式的數(shù)據(jù)擴(kuò)展。塊輸出是9位寬令牌流,在這里數(shù)據(jù)擴(kuò)展已被舍入(向正無窮大方向)成整數(shù),而且飽和成為9位2的補(bǔ)碼表示形式。所有其它令牌已被直接通過。B.9.9塊的硬件描述對(duì)所有處理令牌流的塊有一個(gè)標(biāo)準(zhǔn)的概念性(notional)的結(jié)構(gòu),如圖139所示。這把兩線接口鎖存器從執(zhí)行對(duì)令牌流處理部分分開。這個(gè)結(jié)構(gòu)的變化可包括另外的內(nèi)部塊(例如一個(gè)隨機(jī)存儲(chǔ)器核心(RAMcore))。圖中所示的某些塊,在圖解中的結(jié)構(gòu)不很明顯(雖然它確實(shí)仍存在)。這是由于需要把所有數(shù)據(jù)通路“邏輯組合在一起,而把它同所有標(biāo)準(zhǔn)的存儲(chǔ)單元邏輯(standardcelllogic)分開的緣故。在很簡(jiǎn)單的塊中,例如“ras”,可把鎖定的out_acce-pt直接放到輸入雙線鎖存器而不進(jìn)行邏輯處理。B.9.9.2“Decheck”-數(shù)據(jù)錯(cuò)誤校驗(yàn)/恢復(fù)正如方塊圖概述一節(jié)所指出的,令牌流中的第一個(gè)塊440執(zhí)行數(shù)據(jù)校驗(yàn)和改正。被檢測(cè)到的錯(cuò)誤用標(biāo)準(zhǔn)事件機(jī)構(gòu)處理。這意味著事件可被屏蔽掉。這個(gè)塊根據(jù)事件屏蔽狀態(tài)或者可以在錯(cuò)誤被檢測(cè)到時(shí)繼續(xù)其恢復(fù)步驟,或者被停止。IDCT應(yīng)該永遠(yuǎn)看不到不正確的數(shù)據(jù)令牌。所以塊企圖做的恢復(fù)工作只是一個(gè)相當(dāng)簡(jiǎn)單的企圖,它包含可能是一個(gè)嚴(yán)重問題的內(nèi)容。這個(gè)塊的流水線深度為兩級(jí),完全用zcells實(shí)現(xiàn)。輸入雙線接口鎖存器是“前面(front)”型的。意思是說當(dāng)這個(gè)塊(在IDCT的前部)和它的前一個(gè)電源的供給方式是分開的,則所有輸入到達(dá)晶體管門時(shí)允許安全操作。這個(gè)塊的工作是分析令牌流,讓非數(shù)據(jù)令牌直接通過。當(dāng)發(fā)現(xiàn)一個(gè)數(shù)據(jù)令牌時(shí),對(duì)在令牌頭之后發(fā)現(xiàn)的擴(kuò)展數(shù)開始計(jì)數(shù)。如果當(dāng)計(jì)數(shù)不等于63而擴(kuò)展位被發(fā)現(xiàn)是“0”,則產(chǎn)生一個(gè)錯(cuò)誤信號(hào)(它送往事件邏輯)。根據(jù)那個(gè)事件的屏蔽位的狀態(tài),“decheck”或者被停止(即不再接收輸入或產(chǎn)生輸出)或者開始錯(cuò)誤恢復(fù)?;謴?fù)機(jī)構(gòu)對(duì)“不足的”錯(cuò)誤用計(jì)數(shù)器控制,給令牌流插入正確的擴(kuò)展數(shù)(被插入的值總是“0”)。顯然,在插入進(jìn)行時(shí),不接收輸入。當(dāng)發(fā)現(xiàn)在第64擴(kuò)展上的擴(kuò)展位不是“0”時(shí),就產(chǎn)生一個(gè)“多余的(supernumerary)”錯(cuò)誤。用強(qiáng)使第64擴(kuò)展位為“0”的方法完成數(shù)據(jù)令牌。再用繼續(xù)接收數(shù)據(jù)而使其輸出無效的辦法,把所有帶有擴(kuò)展位被置“1”的后續(xù)字都從令牌流中刪掉。注意這兩個(gè)錯(cuò)誤信號(hào)不是持久的(除非這個(gè)塊被停止),這就是說錯(cuò)誤信號(hào)只在從錯(cuò)誤被檢測(cè)到開始、直到恢復(fù)完成為止的這段時(shí)間內(nèi)保持有效。這段時(shí)間最小是一個(gè)完整周期,如果有一個(gè)無窮的多余數(shù)據(jù)令牌則它會(huì)永遠(yuǎn)保持下去。B.9.9.3“izz”和“tram”-重排序隨機(jī)存儲(chǔ)器“izz”441(反向Zig-Zag隨機(jī)存儲(chǔ)器)和“tram”444(轉(zhuǎn)置隨機(jī)存儲(chǔ)器)在這里一起考慮。因二者實(shí)現(xiàn)同樣功能的變化,他們的相似處多于差異。這兩個(gè)塊都獲取令牌流,并對(duì)數(shù)據(jù)令牌的各個(gè)擴(kuò)展重排序,而使所有其它令牌不改變地通過。所處理的擴(kuò)展寬度和重排序的序列是不同的,但每個(gè)隨機(jī)存儲(chǔ)器的控制邏輯的大部分是一樣的,而且實(shí)際上也是被組成一個(gè)“公共控制”塊。這個(gè)塊在每個(gè)隨機(jī)存儲(chǔ)器的圖中有說明。寬度的差異對(duì)這個(gè)控制部分沒有影響。所以只需為每個(gè)帶有RAM核心的隨機(jī)存儲(chǔ)器用不同的“序列地址發(fā)生器”,和有適當(dāng)寬度的兩線接口部件。每個(gè)RAM的總特性主要是FIFO(先進(jìn)先出)的特性。在令牌級(jí)這是絕對(duì)正確的,但對(duì)數(shù)據(jù)令牌的擴(kuò)展字的輸出次序作了特殊修改。FIFO的深度為128級(jí)。為了滿足能承受30MHz通過系統(tǒng)的要求,這是必要的,因?yàn)樵跀?shù)據(jù)令牌輸出的開始被檢測(cè)到后,F(xiàn)IFO的輸出就停止(heldup)。這是因?yàn)樗玫闹嘏判蛐蛄械奶匦裕笤谥嘏判蜉敵隹梢蚤_始以前,在FIFO中采集到一個(gè)64位擴(kuò)展的完整的塊。更精確地說,對(duì)反向Zig_Zag和轉(zhuǎn)置序列要求的最小數(shù)目是不同的,在兩種情況下都略小于64。然而,控制一個(gè)長(zhǎng)度不是2的冪的FIFO是很復(fù)雜的。這意味著對(duì)RAM核心少量節(jié)省會(huì)導(dǎo)致所要求的控制邏輯更加復(fù)雜而得不償失。RAM核心裝置的設(shè)計(jì)允許在30MHz的單一周期內(nèi)完成一次讀和一次寫(對(duì)同一地址或各別的地址)。這意味著RAM以內(nèi)部60MHZ周期時(shí)間在有效地工作。用在0→63范圍內(nèi)產(chǎn)生讀地址特殊序列(“序列地址的產(chǎn)生”)的方法完成重排序操作,但重排序不是按照自然次序進(jìn)行的。需要的序列被指定用標(biāo)準(zhǔn)Zig_Zag序列(對(duì)于8水平或垂直掃描)或用正常矩陣轉(zhuǎn)置所需的序列。因?yàn)镮DCT變換一維塊的要求,這些標(biāo)準(zhǔn)序列此后進(jìn)一步被重排序。重排序是按每行以奇/偶格式(即(1、3、5、7、0、2、4、6)而不(0、1、2、3、4、5、6、7))輸出的要求進(jìn)行的。轉(zhuǎn)置地址序列的產(chǎn)生在算法上是很簡(jiǎn)單的。直接的(straight)轉(zhuǎn)置序列的產(chǎn)生只要求分別產(chǎn)生行和列的地址。兩者都用計(jì)數(shù)器實(shí)現(xiàn)。行重排序的要求只不過意味著地址是用一簡(jiǎn)單的特定狀態(tài)機(jī)而不是自然計(jì)數(shù)器產(chǎn)生的。反相Zig-Zag序列的產(chǎn)生在算法上不那么簡(jiǎn)單。因?yàn)檫@一事實(shí),一個(gè)小的ROM被用來保存全部64個(gè)6位地址值。這個(gè)ROM用行和列計(jì)數(shù)器來尋址。這些計(jì)數(shù)器可被交換,以便在水平和垂直掃描方式之間改變。用一個(gè)ROM構(gòu)成的發(fā)生器可很快設(shè)計(jì)出來。它還有一個(gè)好處,就是要實(shí)現(xiàn)正向Zig-Zag(ROM重編程)或在未來增加其它可能的序列都不需花很大的代價(jià)。B.9.9.4“oned”-單維IDCT變換這個(gè)塊有一個(gè)深度為20級(jí)的流水線,此流水線在受阻塞(sta-lled)時(shí)是堅(jiān)固(rigid)的。這種堅(jiān)固性大大簡(jiǎn)化了設(shè)計(jì)而且不會(huì)不適當(dāng)?shù)赜绊懣偟膭?dòng)態(tài)特性。這是因?yàn)榱魉€深度不是那么大,而且兩個(gè)一維變換器都位于RAM之后,RAM提供一定量的緩沖作用。此部件按照標(biāo)準(zhǔn)結(jié)構(gòu),但對(duì)數(shù)據(jù)令牌擴(kuò)展(它們是要被處理的)和所有其它項(xiàng),內(nèi)部有獨(dú)立的路徑。所有其它項(xiàng)是指那些應(yīng)不改變地通過的項(xiàng)。注意圖解是用一種特殊方式畫出的。第一,因?yàn)橐蟀阉袛?shù)據(jù)通路邏輯組合在一起,第二,因?yàn)橐笤试S產(chǎn)生自動(dòng)編譯碼(這說明了在頂層的控制邏輯)。令牌象通常那樣被分析,然后數(shù)據(jù)擴(kuò)展和其它值在同多路開關(guān)選擇器重組合以前分別按規(guī)定路線通過兩個(gè)不同的并行路徑。而多路傳輸器在輸出兩線接口鎖存部件的前面。并行路徑是需要的,因?yàn)閿?shù)值通過變換數(shù)據(jù)通路傳送不可能不被改變。用一個(gè)簡(jiǎn)單移位寄存器來處理令牌流的其余部分,使變換數(shù)據(jù)通路的等待時(shí)間得到匹配?!皁ned”的控制部分需要分析令牌流和控制令牌的分割和重組合。其另一個(gè)主要部分是控制變換數(shù)據(jù)通路??刂七@一數(shù)據(jù)通路的主要機(jī)構(gòu)是一個(gè)控制移位寄存器。它匹配數(shù)據(jù)通路流水線,并被分接,為數(shù)據(jù)通路流水線的每一級(jí)提供必要的控制信號(hào)?!皁ned”塊有這樣一個(gè)要求,就是它只能在數(shù)據(jù)擴(kuò)展完整行,擴(kuò)展的完整行即8組上開始操作,它不能在各行的中間處理不合法數(shù)據(jù)(“間隙”),雖然事實(shí)上,“izz”和“tram”的工作已確保輸出是完整的數(shù)據(jù)塊。這個(gè)數(shù)據(jù)塊是一個(gè)有64個(gè)有效擴(kuò)展值的不間斷的序列。B.9.9.4.1變換數(shù)據(jù)通路變換數(shù)據(jù)通路的微結(jié)構(gòu),“t_dp”,前面已示于圖141。注意,某些細(xì)節(jié)(例如,時(shí)鐘,移位等等)沒有表示。然而,這張圖說明數(shù)據(jù)通路如何在流水線的任一級(jí)上同時(shí)對(duì)四個(gè)值操作。數(shù)據(jù)通路的基本子結(jié)構(gòu),即三個(gè)主要部分也能被看出(例如,公共塊前,公共塊,公共塊后),所需的計(jì)算資源和鎖存資源也同樣能看到。命名的控制信號(hào)是對(duì)流水線鎖存器(和加/減選擇器)的使能信號(hào)。它們是按控制移位寄存器狀態(tài)的譯碼順序排列的。注意,每一流水線級(jí)實(shí)際上是四個(gè)時(shí)鐘周期長(zhǎng)度。在變換數(shù)據(jù)通道內(nèi)有許多鎖存器級(jí)。它們用來采集輸入,在流水線中存儲(chǔ)中間結(jié)果和使連續(xù)輸出。某些鎖存器是多路輸入型的,即它們可以有條件地被一個(gè)以上的來源加載。所有的鎖存器是使能型的,即有獨(dú)立的時(shí)鐘和使能輸入。這意味著容易用正確時(shí)序產(chǎn)生使能信號(hào),而不必考慮對(duì)不齊(skew)的問題。相比之下,若采用生成的時(shí)鐘方案則要考慮對(duì)不齊問題的發(fā)生。要求的主要計(jì)算元件如下·一些固定系數(shù)乘法器(進(jìn)位保存輸出)·進(jìn)位保存加法器·進(jìn)位保存減法器·求解加法器·求解加法器/減法器所有的計(jì)算以2的補(bǔ)碼表示法完成。這既可以是正常(已求解)形式,也可以是進(jìn)位保存形式(即兩個(gè)數(shù),它們的和表示真正的值)在存入以前所有數(shù)都已求解出來,而且每級(jí)流水線只做一次求解操作,因?yàn)檫@是最費(fèi)時(shí)間的操作。這里所做的求解操作全部用簡(jiǎn)單的脈動(dòng)。這意味著求解器相當(dāng)小,但比較慢。因?yàn)榍蠼庠诿考?jí)的總時(shí)間中占支配地位,使用快速求解運(yùn)算單元,顯然就有機(jī)會(huì)加速整個(gè)變換。B.9.9.5“Ras”-舍入和飽和在本項(xiàng)發(fā)明中,“ras”塊的任務(wù)是從第二維“oned”的輸出獲取22位定點(diǎn)數(shù),把這些數(shù)變成要求的正確舍入和飽和的9位帶符號(hào)整數(shù)結(jié)果。此塊也完成方案中固有的必須的被4除(2/N項(xiàng))和再被2除,以補(bǔ)償兩維的每一維進(jìn)行預(yù)先的按√2比例放大。這個(gè)被8除表明定點(diǎn)位置被看作比預(yù)期的要向左移動(dòng)3位。即把結(jié)果看作15位整數(shù)表示法和7位小數(shù)(而不是4位小數(shù))。實(shí)現(xiàn)的舍入方式是“往正無窮大方向舍入(roundtopositiveinfinity)”,即對(duì)正好是0.5的小數(shù)加1。這樣做主要因?yàn)檫@是可實(shí)現(xiàn)的最簡(jiǎn)單的舍入方式。在舍入(整數(shù)部分的條件增加)完成后,結(jié)果被檢查看這個(gè)9位帶符號(hào)結(jié)果是否要求飽和到這一范圍的最大或最小值。這項(xiàng)工作用對(duì)增量進(jìn)位出與原整數(shù)值的高位一起檢查的方法來完成。和通常一樣,令牌流被分析,而舍入和飽和操作只用于數(shù)據(jù)令牌擴(kuò)展值。這個(gè)塊有一個(gè)兩級(jí)深度的流水線,完全用zcells實(shí)現(xiàn)。B.9.9.6“Idctsels”-IDCT寄存器選擇解碼器這個(gè)部件是一個(gè)簡(jiǎn)單的解碼器,它對(duì)4個(gè)微處理器接口地址線和“sel_test”輸入解碼,成為各別部件(窺測(cè)器和RAMs)測(cè)試訪問的選擇線。這個(gè)部件只包含zcells組合邏輯。已解碼的選擇(selects)示于表B.9.1。表B.9.1IDCT測(cè)試地址空間表B.9.1IDCT測(cè)試地址空間(續(xù))表B.9.1IDCT測(cè)試地址空間(續(xù))a.重復(fù)的地址B.9.9.7“Idctregs”-IDCT控制寄存器和事件本發(fā)明的這個(gè)塊包含標(biāo)準(zhǔn)事件邏輯塊處理數(shù)據(jù)不足錯(cuò)誤和多余錯(cuò)誤的實(shí)例(instances),還有一個(gè)單獨(dú)的內(nèi)存映射位“vscan”,它用來改變“izz”重排序,使IDCZ輸出為垂直掃描方式。此位被復(fù)位為“0”值,即缺省方式是水平掃描輸出。兩個(gè)可能的事件被‘或’在一起形成一個(gè)idctevent信號(hào),這個(gè)信號(hào)可用作中斷信號(hào)。寄存器和事件的地址及位的位置見B.9.10節(jié)。B.9.9.8時(shí)鐘發(fā)生器在IDCT中用了兩個(gè)“標(biāo)準(zhǔn)”類型(“clkgen”)時(shí)鐘發(fā)生器。因此可有兩個(gè)獨(dú)立的掃描路徑。時(shí)鐘發(fā)生器叫作“idctcga”和“idctcgb”。功能上的唯一差別是“idctcgb”不需要產(chǎn)生“not-rstl”信號(hào)。在兩個(gè)時(shí)鐘發(fā)生器中,每個(gè)時(shí)鐘和復(fù)位輸出的緩沖裝置的總量,各自適合每個(gè)時(shí)鐘和復(fù)位所驅(qū)動(dòng)的真實(shí)負(fù)載。匹配的負(fù)載是從最終布局的門和印制線(track)的電容量實(shí)際測(cè)得的。當(dāng)完成了IDCT頂層塊排列和布線(PlaceandRoute)時(shí),我們利用交互式全局布線特點(diǎn)的能力來增加時(shí)鐘分布樹的第一部分導(dǎo)線的寬度,供負(fù)其余重的時(shí)鐘(Pho-b和Phi-b)用,因?yàn)樵谶@些線上將流過更大電流。B.9.9.9JTAG控制塊因?yàn)镮DCT有兩個(gè)獨(dú)立的掃描鏈和兩個(gè)時(shí)鐘發(fā)生器,所以有兩個(gè)標(biāo)準(zhǔn)JTAG控制塊“jspctle”的實(shí)例。這些控制部件在測(cè)試端口和兩個(gè)掃描路徑之間形成接口。B.9.10事件和控制寄存器IDCT能產(chǎn)生兩個(gè)事件,有一個(gè)單獨(dú)的控制位。這兩個(gè)事件是idct_too_few_event和idct_too_many_event。如果不正確的數(shù)據(jù)令牌被檢測(cè)到,在IDCT前面的“decheck“部件就產(chǎn)生這些事件。單獨(dú)的控制位是“vscan”,要求IDCT輸出垂直掃描時(shí),就把它置1。所以這一位控制了“izz”塊。整個(gè)事件邏輯和存儲(chǔ)器變換控制位都放在“idctregs”塊中。從IDCT角度看,這些寄存器放在以下的位置。三態(tài)i/o線n_derrd和n_serrd用來在合適的時(shí)候讀寫這些單元。表B.9.2IDCT控制寄存器地址空間表B.9.3IDCT事件地址空間B.9.11方法問題B.9.11.1邏輯設(shè)計(jì)方法按照本發(fā)明,在設(shè)計(jì)所有IDCT塊中,企圖用統(tǒng)一的簡(jiǎn)單的邏輯設(shè)計(jì)對(duì)策。這一對(duì)策意味著可能用快而簡(jiǎn)單的方式做出“安全”設(shè)計(jì)。對(duì)控制邏輯的大部分,當(dāng)時(shí)只采用了主-從關(guān)系的簡(jiǎn)單方案。異步置位/復(fù)位輸入只連接到正確的系統(tǒng)復(fù)位。雖然,似乎常有可能提出巧妙的非標(biāo)準(zhǔn)線路配置來更有效地完成同樣功能,但這個(gè)方案有以下優(yōu)點(diǎn)?!じ拍詈?jiǎn)單·容易設(shè)計(jì)·操作速度很明顯(與鎖存器→邏輯→鎖存器>邏輯型設(shè)計(jì)比較)和合適于自動(dòng)分析·無波形上的毛刺(glitches)問題(與SR鎖存器比較)·初始化只用系統(tǒng)復(fù)位,·允許掃描路徑正確工作·允許自動(dòng)編譯的C-碼的產(chǎn)生有許多地方采用了透明的-型鎖存器,這些在下面列出。B.9.11.1.1兩線接口鎖存器輸入和輸出雙線接口的標(biāo)準(zhǔn)塊結(jié)構(gòu)采用鎖存器。在輸出兩線鎖存器和后繼的輸入兩線鎖存器之間不存在邏輯。B.9.11.1.2ROM接口由于ROM線路的時(shí)序要求,在ROM輸出處的IZZ序列產(chǎn)生器中用了鎖存器。B.9.11.1.3變換數(shù)據(jù)通路和控制移位寄存器每個(gè)流水線存儲(chǔ)級(jí)有可能用全主-從器件來實(shí)現(xiàn),但出于所要求的存儲(chǔ)量的原因,用鎖存器可以大大節(jié)省。不過,這個(gè)方案要求用戶考慮幾個(gè)因素。·控制移位寄存器用作使能,現(xiàn)在必須產(chǎn)生兩種相位(phases)的控制信號(hào)(即在這個(gè)移位寄存器中需用鎖存器)·采用鎖存器,時(shí)序分析比較復(fù)雜·“t-postc”將不再自動(dòng)產(chǎn)生經(jīng)過編譯的碼,因一個(gè)鎖存器輸出到在同一相位的另一鎖存器(因?yàn)槭鼓艿亩〞r(shí),對(duì)線路來說這不是一個(gè)問題)然而,由于用鎖存器節(jié)省的面積,使本項(xiàng)發(fā)明值得接受這些因素。B.9.11.1.4微處理器接口由于這個(gè)接口的性質(zhì),對(duì)事件和寄存器塊“idctregs”中RAM核心的鎖眼邏輯中的鎖存器(和重同步器)有某種要求。B.9.11.1.5JTAG測(cè)試控制這些標(biāo)準(zhǔn)塊采用鎖存器。B.9.11.2線路設(shè)計(jì)中的問題除了在庫單元設(shè)計(jì)中所做的工作以外,在IDCT中不需要任何晶體管級(jí)線路設(shè)計(jì)。庫單元(1ibrarycells)用于IDCT設(shè)計(jì)(標(biāo)準(zhǔn)單元,數(shù)據(jù)通路庫,RAM,ROM等等)。對(duì)轉(zhuǎn)換數(shù)據(jù)通道中的某些已知的最短路徑做一些線路模擬(使用Hspice),就那些對(duì)接近允許的最大長(zhǎng)度的路徑來說,Hspice也被用來驗(yàn)證最短路徑分析(CPA)工具的結(jié)果。注意,在正常工作時(shí),IDCT是完全靜態(tài)的(即,我們能無限期地停止系統(tǒng)時(shí)鐘),但在可掃描(scanable)鎖存器中有動(dòng)態(tài)節(jié)點(diǎn),在測(cè)試時(shí)鐘被停止(或很慢)時(shí)它們會(huì)消失。由于某些節(jié)點(diǎn)的不可恢復(fù)性,它們顯示一個(gè)Vt降落(例如多路輸出),所以IDCT在靜態(tài)時(shí)可能不是“微功率”(micro-power)的。B.9.11.3布局方法本項(xiàng)發(fā)明布局實(shí)現(xiàn)的總方法當(dāng)時(shí)是用BPR(某種手動(dòng)干預(yù))布置一完全的IDCT。IDCT由許多zcells和少量宏塊組成。這些宏塊有些用手編輯布局(例如,RAM,ROM,時(shí)鐘發(fā)生器,數(shù)據(jù)通路);如果是“oned”塊,則使用BPR把更多的zcells和數(shù)據(jù)通路構(gòu)成。數(shù)據(jù)通路用kdplib單元構(gòu)成。另外,kdplib單元的局部規(guī)定的布局變動(dòng)被定義和采用在對(duì)改善尺寸有好處的地方。在每個(gè)oned塊所用的數(shù)據(jù)通路中,“oned_d”是設(shè)計(jì)中最大的單個(gè)元件,當(dāng)時(shí)作了很大的努力來對(duì)這個(gè)數(shù)據(jù)通路的尺寸(高度)進(jìn)行優(yōu)化。變換數(shù)據(jù)通路“t_dp”的組織是頗為關(guān)鍵的,因?yàn)閿?shù)據(jù)通路內(nèi)的元件的精確排序?qū)⒂绊憙?nèi)部連接的處理方式。減少“overs”(不連接到子塊的垂直線)的數(shù)目是很重要的。這發(fā)生在最擁擠的點(diǎn),因?yàn)橛幸粋€(gè)最大允許值(理想情況是8,10也是可能的,然而很不方便)。數(shù)據(jù)通路在邏輯上分為三個(gè)主要子部分,數(shù)據(jù)通路布局也是這樣做的。在每個(gè)子部分,實(shí)際有四個(gè)并行數(shù)據(jù)流(這些流在不同的地點(diǎn)被合并),所以在每個(gè)子部分內(nèi)有許多組織數(shù)據(jù)流(因而,所有元件的位置)的方法。在每個(gè)子部分中,對(duì)塊的排序,還有邏輯總線的分配物理總線的間距(pitches),在布局開始以前都是小心作出的,以便可能得到一個(gè)能正確連接的布局。B.9.12檢驗(yàn)IDCT在許多層進(jìn)行檢驗(yàn),從頂層的算法檢驗(yàn)到最后的布局檢驗(yàn)。變換結(jié)構(gòu)的初始工作是用C做的。全精度和精確到位整數(shù)模型兩者都被開發(fā)了。各種測(cè)試是在精確到位的模型上做的,以便保證與H.261精度規(guī)定一致,以及在變換結(jié)構(gòu)之內(nèi)測(cè)量各種計(jì)算的動(dòng)態(tài)范圍。在許多情況下,用寫一個(gè)子塊的M性能描述(Mbehavioraldescription)的方法進(jìn)行設(shè)計(jì)(例如,對(duì)數(shù)據(jù)通路和RAM的控制)。在進(jìn)到那個(gè)部件的圖解描述的設(shè)計(jì)以前,這樣的一些M性能描述在Lsim中被模擬。在某些情況下(例如,RAM,時(shí)鐘發(fā)生器)性能描述仍用于頂層模擬。進(jìn)行邏輯模擬的對(duì)策是對(duì)每個(gè)東西的簡(jiǎn)圖模擬,只要該東西在那一層次的模擬可以滿足要求。低層的庫單元(即zcells和kdplib)主要用它們的性能描述來模擬,因這樣可得到更小更快的模擬。另外,性能庫單元提供定時(shí)校驗(yàn)特性,它能使某些線路配置問題突出。作為可靠性檢驗(yàn),某些模擬使用庫單元的晶體管描述來完成。所有的邏輯模擬在零延遲狀態(tài)下進(jìn)行,所以目的是要檢驗(yàn)功能特性。實(shí)時(shí)性能的檢驗(yàn)用其它技術(shù)進(jìn)行。Lsim開關(guān)層模擬(用RC_定時(shí)方式)是作為定時(shí)特性的部分檢驗(yàn)做的,但也提供了對(duì)某些別的潛在的晶體管級(jí)的問題的檢驗(yàn)(例如,對(duì)毛刺敏感的線路)。檢驗(yàn)時(shí)序問題的主要檢驗(yàn)技術(shù)是CPA工具的使用,對(duì)“datechk”的“路徑”選件。這被用來識(shí)別比較長(zhǎng)的信號(hào)路徑(某些已經(jīng)知道)。Hspice用來在某些臨界情況下驗(yàn)證CPA分析。大部分Lsim模擬是用標(biāo)準(zhǔn)的源→部件→漏(sink)方法學(xué)進(jìn)行的,因?yàn)镮DCT特性的大部分是用通過設(shè)備的令牌流來演練的。另外一些模擬也是必要的。用這些模擬來測(cè)試通過微處理器接口所訪問的特性(配置,事件和測(cè)試邏輯)以及那些通過JTAG/掃描所訪問的測(cè)試特性。編譯碼的模擬可由一個(gè)對(duì)整個(gè)IDCT有本行一般技能的人很容易地完成。再一次使用標(biāo)準(zhǔn)的源→塊→漏的方法,和用于Lsim檢驗(yàn)的許多同樣的令牌流。B.9.13測(cè)試和測(cè)試支持本節(jié)研究提供測(cè)試的一些技巧,并分析每個(gè)塊如何測(cè)試。為測(cè)試訪問提供的三種技巧(mechanisms)如下·微處理器對(duì)RAM的訪問·微處理器對(duì)窺測(cè)部件的訪問·訪問控制和數(shù)據(jù)通路邏輯的掃描路徑在IDCT中有兩個(gè)“窺測(cè)器”部件和一個(gè)“特級(jí)窺測(cè)器”部件。圖140示出窺測(cè)器部件的位置和其它的微處理器測(cè)試訪問。為了測(cè)試各個(gè)主部件與令牌流有關(guān)的特性的目的,用上述部件和兩個(gè)RAM塊,可以把每個(gè)主塊孤立起來。用微處理器訪問,可以控制令牌輸入到任一個(gè)塊,然后觀察該孤立部件的令牌端口輸出。另外,有兩個(gè)獨(dú)立的掃描路徑,它們通過每塊的各控制部分的(幾乎)所有的觸發(fā)器和鎖存器,對(duì)于“oned”變換數(shù)據(jù)路徑流水線。它們也通過某些數(shù)據(jù)通路鎖存器。兩個(gè)掃描路徑用“a”和“b”表示,前者從“decheck”塊運(yùn)行到“ip_fmt”部件而后者從第一個(gè)“oned”塊到“ras”塊。用正常地訪問適當(dāng)?shù)膬?nèi)存映射單元的方法去訪問窺測(cè)器是可能的。對(duì)RAM也同樣可行(用認(rèn)為合適的“ramtest”輸入)。掃描路徑正常地通過JTAG端口接受訪問?,F(xiàn)在來討論每個(gè)部件與涉及到的各種測(cè)試問題。B.9.13.1“Dechec”這個(gè)塊有標(biāo)準(zhǔn)結(jié)構(gòu)(見圖139),在這里,輸入和輸出雙線接口用的兩個(gè)鎖存器圍繞著一個(gè)處理塊。與通常一樣,對(duì)兩線鎖存器不提供掃描,因?yàn)樗鼈儽皇鼓軙r(shí)只簡(jiǎn)單地傳送數(shù)據(jù),沒有邏輯的深度要測(cè)試。在這塊中,“控制”部分包含一級(jí)由zcells組成的流水線,這些zcells都在掃描路徑“a”上。控制部分的邏輯比較簡(jiǎn)單,最復(fù)雜的路徑大概是數(shù)據(jù)擴(kuò)展計(jì)數(shù)的產(chǎn)生。在那里用一個(gè)6位增量器。B.9.13.2“IZZ”這個(gè)塊是標(biāo)準(zhǔn)結(jié)構(gòu)的一種變形,包含一個(gè)加到兩線接口鎖存器的RAM塊部件和控制部分??刂撇糠钟脄cells實(shí)現(xiàn),地址序列產(chǎn)生用一個(gè)小RoM。所有的zcells在掃描路徑“a”上,通過zcell鎖存器來訪問ROM的地址和數(shù)據(jù)。還有更多的邏輯,例如,數(shù)的產(chǎn)生,加上增量或減量的能力。另外,有一個(gè)7位全加器用于讀地址的生成。RAM可由微處理器接口經(jīng)過鎖眼寄存器訪問。見表B.9.1。B.9.13.3“l(fā)p-fmt”這個(gè)塊也是標(biāo)準(zhǔn)格式的??刂七壿嬘媚承┫喈?dāng)簡(jiǎn)單的zcell邏輯實(shí)現(xiàn)(全部在掃描路徑“a”上)。但數(shù)據(jù)的鎖存和移位/多路傳送是在沒有直接存取的數(shù)據(jù)通路中完成的,因?yàn)檫@里的邏輯很淺顯和簡(jiǎn)單。B.9.13.4“oned”這個(gè)塊也是采用標(biāo)準(zhǔn)結(jié)構(gòu)。它分為隨機(jī)邏輯和數(shù)據(jù)通路兩部分。zcell邏輯比較簡(jiǎn)單,所有的zcells都在掃描路徑“a”上。變換流水線數(shù)據(jù)通路的控制信號(hào)是從一個(gè)長(zhǎng)移位寄存器得到的。這個(gè)移位寄存器包含zcell鎖存器。鎖存器在掃描路徑上。另外,因?yàn)樵诹魉€的某些級(jí)之間有可觀的邏輯深度(例如乘法器和加法器),所以某些流水線鎖存器被放在掃描路徑上。非數(shù)據(jù)令牌沿一個(gè)移位寄存器傳送,移位寄存器作為一個(gè)數(shù)據(jù)通路來實(shí)現(xiàn),對(duì)任何級(jí)都沒有測(cè)試訪問。B.9.13.5Tram這個(gè)塊與“izz”塊很相似。然而在這種情況下,地址序列的地址產(chǎn)生中不用RoM。這是用算法來完成的。所有的zcell控制狀態(tài)都在數(shù)據(jù)通路“b”上。B.9.13.6Rras這塊采用標(biāo)準(zhǔn)結(jié)構(gòu),而且完全由zcells實(shí)現(xiàn)。最復(fù)雜的邏輯功能是用于舍入的8位增量器。所有其它邏輯相當(dāng)簡(jiǎn)單。所有狀態(tài)在掃描路徑“b”上。B.9.13.7其它頂層塊在IDCT的頂層有幾個(gè)其它塊。窺測(cè)器顯然是測(cè)試訪問邏輯的一部分,各JTAG控制塊也是它的一部分。還有兩個(gè)時(shí)鐘產(chǎn)生器,它們沒有任何特殊測(cè)試訪問(雖然它們支持各種測(cè)試特性)?!癷dcts-els”塊是Zcell邏輯組合成的,用于對(duì)微處理器地址解碼。而“idctregs”塊包含微處理器可訪問事件和與IDCT有關(guān)的控制位。B.10引言B.10.1時(shí)間解碼器概述按照本項(xiàng)發(fā)明,時(shí)間解碼器的內(nèi)部結(jié)構(gòu)示于圖142。芯牌的塊之間的全部數(shù)據(jù)流(以及塊內(nèi)的很大一部分?jǐn)?shù)據(jù)流)用兩線接口控制。(詳見技術(shù)參考和詳細(xì)章節(jié))。圖B.10.1中的每個(gè)箭頭表示一個(gè)兩線接口。輸入的令牌流通過輸入接口,此接口把從相位鎖定環(huán)路(Ph0/Ph1)得到的內(nèi)部時(shí)鐘與從外部系統(tǒng)時(shí)鐘來的數(shù)據(jù)同步。令牌流通過一個(gè)頂層岔口分成兩路,一路進(jìn)入地址發(fā)生器,另一路到一個(gè)256字FIFO。來自前面的工或P幀的數(shù)據(jù),從DRAM中取出時(shí),F(xiàn)IFO對(duì)數(shù)據(jù)起緩沖作用。與此同時(shí),前幾個(gè)I或P幀的數(shù)據(jù)從DRAM中取出,它們?cè)陬A(yù)測(cè)加法器(PredictionAdder)中被加到從空間解碼器(spatialDecoder)來的輸入錯(cuò)誤數(shù)(incomingerr-ordata)上之前,先在推算濾波器中進(jìn)行處理(P和B幀)。在MPEG解碼問,I和P幀的幀重排序數(shù)據(jù)也必須取出,以使輸出幀的次序正確。重排序數(shù)據(jù)在讀指針(ReadRudder)塊中被插入到流中。地址發(fā)生器為前向和后向預(yù)測(cè)、重排序、讀和寫回等產(chǎn)生獨(dú)立的地址。被寫回的數(shù)據(jù)在寫指針塊中從流中分出。最后,數(shù)據(jù)在輸出接口塊中與外部時(shí)鐘重新同步。時(shí)間解碼器中所有主要塊連接到內(nèi)部微處理器接口(UPI)總線。這是從在微處理器接口部件中的外部微處理器接口(MPI)總線得到的。這個(gè)部件在對(duì)與它有關(guān)的芯片中有各部件的地址解碼。事件邏輯也與微處理器接口有關(guān)。時(shí)間解碼器的其它邏輯主要與測(cè)試有關(guān)。首先,IEE1149.1(JTAG)接口460不僅對(duì)內(nèi)部各掃描路徑提供接口,也對(duì)JTAG邊界掃描特性提供接口。其次是各兩線接口級(jí)。它們?cè)试S通過微處理器接甲對(duì)數(shù)據(jù)流作插入式訪問。而在測(cè)試方式下它們包括在流水線結(jié)構(gòu)內(nèi)的各關(guān)鍵處(strategicpoints)。B.11時(shí)鐘、測(cè)試和有關(guān)問題B.11.1時(shí)鐘方式(regimes)在考慮芯片內(nèi)各功能塊以前,對(duì)芯片內(nèi)的時(shí)鐘方式及其相互關(guān)系有個(gè)了解是有幫助的。在正常工作時(shí),芯片的大部分塊與來自鎖相環(huán)路(PLL)塊的信號(hào)pllsysclk同步運(yùn)行。DRAM接口是一個(gè)例外,它的定時(shí)取決于對(duì)iftime子塊同步的需要。iftime子塊產(chǎn)生DRAM控制信號(hào)(notwe,notoe,notcas,notras)。這個(gè)塊的核心是用兩相非重疊時(shí)鐘clko和clkl定時(shí)的。它們是從90°相位差的兩相時(shí)鐘得到的,而這兩個(gè)時(shí)鐘是由PLLcki0,cki1和ckq0,ckq1獨(dú)立供給的。因?yàn)閏lk0,clk1DRAM接口時(shí)鐘與與芯片其余部分的時(shí)鐘是異步的,在DRAM接口和芯片其它部分之間的接口處可能有暫穩(wěn)狀態(tài)(metastablebehavior)。已采取辦法(盡實(shí)際可能)消除這種可能性。同步發(fā)生在兩個(gè)區(qū)域在地址發(fā)生器的輸出接口(addrgen/predread/Psgsync。addrgen/ip_wrtz/sync18和addrgen/ip_rd2/sync18)和在一些部件中。這些部件控制了在DRAM接口(見DRAM接口的有關(guān)章節(jié))中的交替緩沖器(swing-bufferRAMs)的“交替”。在每種情況,用三個(gè)串聯(lián)的暫穩(wěn)硬(metastable-hard)觸發(fā)器完成同步過程。應(yīng)該注意到這意味著clk0/clk1用在地址發(fā)生器的輸出階段。除了這些完全異步的時(shí)鐘方式以外,有許多單獨(dú)的時(shí)鐘發(fā)生器。它們從pllsysclk產(chǎn)生兩相不重疊時(shí)鐘(Ph0,Ph1)。地址發(fā)生器,預(yù)測(cè)濾波器和DRAM接口,各自有它們自己的時(shí)鐘發(fā)生器。芯片的其余部分用一個(gè)公共時(shí)鐘發(fā)生器來運(yùn)行。其理由有兩方面。第一,減少各個(gè)時(shí)鐘發(fā)生器上的容性負(fù)載,從而允許用更小的時(shí)鐘驅(qū)動(dòng)器,以及減少時(shí)鐘走線寬度。第二,每個(gè)掃描路徑用一個(gè)時(shí)鐘發(fā)生器控制,所以增加時(shí)鐘發(fā)生器的數(shù)目就允許用更短的掃描路徑。所傳送的時(shí)鐘方式邊界的信號(hào)必須被重新同步,因?yàn)閺牟煌瑫r(shí)鐘發(fā)生器得到的不重疊時(shí)鐘之間的少許對(duì)不齊(minorskews)可能意味著在各接口處發(fā)生重疊(underlab)。建立在每個(gè)“窺測(cè)器”塊(見B.11.4節(jié))內(nèi)部的電路確保不會(huì)發(fā)生這種情況。窺測(cè)器塊已被放在所有時(shí)鐘方式之間的邊界上。但在地址發(fā)生器的前面是一個(gè)例外,在那里重新同步是在令牌解碼部件內(nèi)完成的。B.11.2時(shí)鐘的控制每個(gè)標(biāo)準(zhǔn)時(shí)鐘發(fā)生器產(chǎn)生許多不同的時(shí)鐘,它們?cè)试S在正常方式和掃描-測(cè)試(scan-test)方式工作。在掃描一測(cè)試方式下,時(shí)鐘的控制在別處已詳細(xì)描述。但值得注意的是一個(gè)時(shí)鐘發(fā)生器產(chǎn)生的若干時(shí)鐘(tpho,tpnl,tckm,tcks)通常在圖解中沒有被連結(jié)到圖中任何基本的符號(hào)(primirivesymbols)。這是因?yàn)閽呙杪窂绞怯梢粋€(gè)后處理器自動(dòng)產(chǎn)生的。這個(gè)后處理器正確地連接這些時(shí)鐘。從功能的觀點(diǎn)看,后處理器已經(jīng)連接與圖示不同的時(shí)鐘這一事實(shí)可以忽視;效應(yīng)(behavior)是一樣的。在正常工作時(shí),可以有許多不同的方法得到主時(shí)鐘。表B.11.1表明如何根據(jù)pllselect引腳和override引腳的狀態(tài)選擇各種方式。表B.11.1時(shí)鐘控制方式B.11.3兩線接口兩線接口的總功能在技術(shù)參考中詳細(xì)描述。然而,兩線接口用于時(shí)間解碼器內(nèi)部所有部件到部件的通訊。大部分塊包含若干流水線級(jí),所有這些流水線級(jí)本身又都是兩線接口級(jí)。所以為了能闡明許多線路圖,理解雙線接口的內(nèi)部實(shí)現(xiàn)是很重要的。一般,這些內(nèi)部流水線級(jí)的構(gòu)造如圖143所示。圖143表明一個(gè)鎖存器-邏輯-鎖存器的表示法,因?yàn)檫@是通常使用的結(jié)構(gòu)。然而當(dāng)許多級(jí)放在一起時(shí),認(rèn)為是鎖存器-鎖存器-邏輯的“級(jí)”同樣是有效的(對(duì)許多工程師來講這是一個(gè)更熟悉的模型)。鎖存器-邏輯-鎖存器結(jié)構(gòu)的使用允許所有內(nèi)部塊通訊是鎖存器至鎖存器,無論在發(fā)或收的塊中都沒有任何插入邏輯。再看圖143,通過去掉邏輯塊就能構(gòu)成一個(gè)簡(jiǎn)單的兩線接口FIFO級(jí)。這時(shí)數(shù)據(jù)和有效信號(hào)在鎖存器之間直接連接,被鎖存的in_valid信號(hào)直接連到在in_accept鎖存器輸入上的或非門,如同out_valid信號(hào)和out_accept信號(hào)被門控制的情況一樣。當(dāng)相應(yīng)的接收信號(hào)為高時(shí),數(shù)據(jù)和有效信號(hào)就傳播。以這種方式,把in_valid和out_accept_reg相或,若in_valid為低,out_accept_reg為低數(shù)據(jù)將被接收。每當(dāng)停止(接收信號(hào)低)發(fā)生時(shí),間隙(帶有效位低的數(shù)據(jù))將從流水線中除去。如圖143所示,把邏輯塊插入后,in_accep和out_valid也同數(shù)據(jù)或塊的狀態(tài)有關(guān)。在所示的配置中,主從設(shè)置中所保持的塊中的任何狀態(tài)是標(biāo)準(zhǔn)的,主設(shè)備用Ph1使能,從設(shè)備用Ph0使能。B.11.4窺測(cè)器塊窺測(cè)器塊,通過微處理器接口,在芯片的不同點(diǎn)上訪問數(shù)據(jù)流。有兩類窺測(cè)器塊。通常的窺測(cè)器塊只在測(cè)試方式能被訪問,在那里時(shí)鐘可以被直接控制。“超級(jí)窺測(cè)器”在時(shí)鐘運(yùn)行時(shí)可以被訪問。它包含的線路使從微處理器總線來的異步數(shù)據(jù)與內(nèi)部芯片時(shí)鐘同步。表B.11.2列出在臨時(shí)解碼器內(nèi)的所有窺測(cè)器的位置和類型。表B.11.2在時(shí)間解碼器中的窺測(cè)器兩種窺測(cè)器的使用細(xì)節(jié)包含在測(cè)試一節(jié)中。JTAG接口的工作的細(xì)節(jié)包含在JTAG文件中。B.12功能塊B.12.1頂層岔口(TopFork)按照本發(fā)明,頂層岔口有兩個(gè)用途。第一,它將數(shù)據(jù)流分岔成兩個(gè)分開的流一個(gè)到地址發(fā)生器,另一個(gè)到FIFO。第二,它提供起動(dòng)和停止芯片的手段,使芯片能被配置。器件岔口部分的樣子十分簡(jiǎn)單。同一數(shù)據(jù)既加到地址發(fā)生器上,也加到FIFO上。在接受信號(hào)被送回上一級(jí)之前,此數(shù)據(jù)就必須已被地址發(fā)生器和FIFO接受到。因此,岔口兩分支的有效信號(hào)都取決于另一分支的接受信號(hào)。如果芯片在已停止?fàn)顟B(tài),加到兩分支的有效信號(hào)都被保持為低。在in_accept保持為低時(shí),芯片起動(dòng),直到配置位被置高。這保證了在用戶已配置芯片之前,沒有數(shù)據(jù)被接受。如果用戶需要在任何其他時(shí)間配置芯片,則他必須設(shè)置配置位和等待,直到芯片完成當(dāng)前的流。停止步驟如下1)如果配置位已被置位,在頂層岔口檢測(cè)到個(gè)FLUSH令牌后,不再接收更多的數(shù)據(jù)。2)FLUSH令牌到達(dá)讀指針時(shí),芯片已結(jié)束流處理。這使信號(hào)seq_done變高。3)當(dāng)seq_done變高時(shí),設(shè)置一事件位,這個(gè)位可用微處理器讀。事件信號(hào)可被事件塊屏蔽。B.12.2地址發(fā)生器在本發(fā)明中,地址發(fā)生器(addrgen)負(fù)責(zé)對(duì)一幀內(nèi)的塊計(jì)數(shù),以及負(fù)責(zé)為DRAM數(shù)據(jù)傳送產(chǎn)生正確的地址序列。地址發(fā)生器的輸入是從令牌輸入端口(通過頂層岔口)來的令牌流。它的輸出到DRAM接口,包含地址和其它信息。這些信息被一個(gè)請(qǐng)求/確認(rèn)協(xié)議控制。地址發(fā)生器的主要部分是·令牌解碼·塊計(jì)數(shù)和DRAM塊地址的產(chǎn)生·運(yùn)動(dòng)矢量數(shù)據(jù)轉(zhuǎn)換為地址偏移量·為預(yù)測(cè)傳送向地址發(fā)生器請(qǐng)求·重排序讀址發(fā)生器·寫地址發(fā)生器B.12.2.1令牌解碼(tokdec)在令牌解碼器中,與編碼標(biāo)準(zhǔn)、幀和塊信息以及與運(yùn)動(dòng)矢量有關(guān)的令牌被解碼。從流中提取的信息存入一組寄存器。通過upi也可以訪問這些寄存器。檢測(cè)到數(shù)據(jù)令牌頭就向后繼的各塊發(fā)信號(hào)使能塊計(jì)數(shù)和地址產(chǎn)生。運(yùn)行JPEG時(shí)什么都不發(fā)生。被解碼的令牌列表如下·CODING_STANDARD·DATA·DEFINE_MAX_SAMPLING·DEFINE_SAMPLING·HORIZONTAL_MBS·MVD_BACKWARDS·MVD_FORWARDS·PICTURE_START·PICTURE_TYPE·PREDICTION_MODE這個(gè)塊也組合從各請(qǐng)求發(fā)生器來的信息去控制幀指針的轉(zhuǎn)換(toggling),和停止輸入流。在輸入處出現(xiàn)一個(gè)新幀時(shí)(以pictu-re_start令牌的形式出現(xiàn)),流被停止,但與前一幀有關(guān)的寫回或重排序讀尚未完成。B.12.2.2宏塊計(jì)數(shù)器(mblkcntr)本發(fā)明的宏塊計(jì)數(shù)器包含四個(gè)基本計(jì)數(shù)器,它們指向幀中宏塊的水平位置和垂直位置以及宏塊中塊的水平和垂直位置。在時(shí)間開始時(shí)和每一次PICTURE_START出現(xiàn)時(shí),所有計(jì)數(shù)器復(fù)位到零。在數(shù)據(jù)令牌頭到達(dá)時(shí),根據(jù)令牌頭中的彩色分量號(hào)和幀的結(jié)構(gòu),這些計(jì)數(shù)器增值和復(fù)位。這個(gè)幀結(jié)構(gòu)在令牌解碼器中用取樣寄存器來描述。對(duì)一給定彩色分量,計(jì)數(shù)進(jìn)行如下。每來一個(gè)同樣分量的新數(shù)據(jù)令牌,水平塊計(jì)數(shù)增加,直到它達(dá)到宏塊的寬度為止,然后被復(fù)位。這個(gè)復(fù)位使垂直塊計(jì)數(shù)增加,直到它達(dá)到宏決的高度,于是它復(fù)位。當(dāng)這發(fā)生時(shí),就期待下一個(gè)彩色分量。因此,宏塊中的每個(gè)分量按此工序重復(fù)進(jìn)行一宏塊的水平和垂直尺寸可能因每個(gè)分量而不同。如果,對(duì)任一分量,接收到的塊數(shù)比預(yù)期的要少,計(jì)數(shù)仍將不出錯(cuò)地繼續(xù)進(jìn)行到下一分量。當(dāng)數(shù)據(jù)令牌的彩色分量比預(yù)期值少,水平宏塊計(jì)數(shù)增加。(注意,對(duì)于一個(gè)給定的彩色分量,如出現(xiàn)多于預(yù)期值的塊數(shù)時(shí),也會(huì)發(fā)生這種情況。因?yàn)槟菚r(shí)各計(jì)數(shù)器會(huì)期待一個(gè)更高的分量指數(shù)(index)。當(dāng)計(jì)數(shù)達(dá)到宏塊中圖象寬度時(shí),水平計(jì)數(shù)復(fù)位。這個(gè)復(fù)位使垂直宏塊計(jì)數(shù)增加。在H.261CIF格式中,有進(jìn)一步的對(duì)宏塊計(jì)數(shù)的能力。在這種情況,在宏塊和圖象之間有一個(gè)稱作塊組(groupofblocks)的額外的層次。這種塊組是11個(gè)宏塊寬,三個(gè)宏塊深,一幅圖象總是兩組寬。令牌解碼器從PICTURE_TYPE令牌提取CIF位。把這傳到宏塊計(jì)數(shù)器,指令它對(duì)塊組計(jì)數(shù)。每個(gè)分量塊數(shù)太多或太少的情況會(huì)引起上述同樣反應(yīng)。B.12.2.3塊計(jì)算(blkcalc)塊計(jì)算把宏塊和宏塊內(nèi)的塊的坐標(biāo)轉(zhuǎn)換成圖象中塊的位置的坐標(biāo),即它打破了層次。當(dāng)然,這必須把不同彩色分量的采樣比考慮在內(nèi)。B.12.2.4基塊地址(bsblkadr)從blkcalc來的信息與彩色分量位移量一起用來計(jì)算在線性DRAM地址空間內(nèi)的塊地址。實(shí)質(zhì)上,對(duì)于一個(gè)給定的彩色分量講,線性塊地址是向下方向的塊數(shù)(numberofblocksdowm)乘以圖象寬度加上長(zhǎng)度方向的塊數(shù)(numberofblockslong)。這被加到彩色分量偏移量去形成基塊地址。B.12.2.5矢量位移(vec_pipe)令牌解碼器給予的運(yùn)動(dòng)矢量位移信息采用水平和垂直象素偏移坐標(biāo)的形式。即對(duì)前向和向后矢量中的每一個(gè)有一個(gè)(x,y)。(x,y)給出從正在形成的塊到另一個(gè)所被預(yù)測(cè)的塊之間的位移。位移是以半個(gè)象素為單位表示的。注意,這些坐標(biāo)可以是正的或負(fù)的。它們首先按照每個(gè)彩色分量和采樣定標(biāo)(scaled),然后被用來形成塊和新象素偏移量的坐標(biāo)。在圖145中,有陰影的區(qū)域表示正被形成的塊。虛線輪廓表示正被預(yù)測(cè)的塊。大箭頭表示塊偏移量-到DRAM塊的水平和垂直矢量。該DIAM塊包含預(yù)測(cè)塊的原點(diǎn)-在這一情況是(1,4)。小箭頭表示新象素偏移量-在那個(gè)DRAM塊內(nèi)的預(yù)測(cè)塊原點(diǎn)的位置。因?yàn)镈RAM塊是8×8字節(jié),象素偏移量指望是(7,2)。乘法器陣列Vmarrla然后把塊矢量偏移量轉(zhuǎn)換為一個(gè)線性矢量偏移量。象素信息作為一個(gè)(x,y)座標(biāo)(pix_info)被送到預(yù)測(cè)請(qǐng)求發(fā)生器。B.12.2.6預(yù)測(cè)請(qǐng)求幀指針、基塊地址和矢量偏移量加在一起形成塊地址。這個(gè)塊是要從DRAM(Inblkad3)中取址的。如果象素偏移量為0,只產(chǎn)生一個(gè)請(qǐng)求。如果在x維或y維有一個(gè)偏移量,則產(chǎn)生兩個(gè)請(qǐng)求一原來的塊地址和立即向右或立即向下兩者之中的一個(gè)地址。在x和y維都有偏移量,則產(chǎn)生四個(gè)請(qǐng)求。芯片時(shí)鐘方式和DRAM接口時(shí)鐘方式之間的同步發(fā)生在第一次加法(Inblkad3)和狀態(tài)機(jī)之間。該狀態(tài)機(jī)產(chǎn)生合適的請(qǐng)求。所以狀態(tài)機(jī)(psgsrate)用DRAM接口時(shí)鐘計(jì)時(shí),它的掃描元件構(gòu)成DRAM接口掃描鏈的一部分。B.12.2.7重排序讀請(qǐng)求和寫請(qǐng)求因?yàn)檫@里不涉及象素偏移量,用基塊地址和有關(guān)的幀指針相加的辦法形成每個(gè)地址。重排序讀使用同一幀存貯器。預(yù)測(cè)和數(shù)據(jù)則被寫回到另一個(gè)幀存貯器。每個(gè)塊包括一個(gè)短的FIFO,用來存地址,因?yàn)樽x和寫數(shù)據(jù)的傳送很可能落后于在相應(yīng)地址上的預(yù)測(cè)數(shù)據(jù)的傳送。(這是因沿著芯片數(shù)據(jù)流,讀/寫數(shù)據(jù)比預(yù)測(cè)數(shù)據(jù)對(duì)流有更多的影響)。每個(gè)塊也包含芯片時(shí)鐘和DRAM接口時(shí)鐘之間的同步。B.12.2.8偏移量DRAM配置有兩個(gè)幀存,每一個(gè)最多包含三個(gè)彩色分量。在每幀內(nèi)的幀存指針和彩色分量偏移量必須通過upi編程。B.12.2.9窺測(cè)器在本發(fā)明中,窺測(cè)器被放的位置如下·在blkcalc和bsblkadr之間-這個(gè)接口包括水平和垂直塊座標(biāo)、適當(dāng)?shù)牟噬至课灰屏亢鸵詨K為單位的圖象寬度(所對(duì)的那個(gè)分量)?!ぴ赽sblkadr后面-基塊地址?!ぴ趘ec_pipe后面-線性塊偏移量,塊內(nèi)的象素偏移量及預(yù)測(cè)方式的信息,彩色分量和H.261操作?!ぴ贗nblkad3后面-物理塊地址,如“預(yù)測(cè)請(qǐng)求”中所述。超級(jí)窺測(cè)器放在重排序讀和寫請(qǐng)求發(fā)生器中,在測(cè)試外部DRAM時(shí)使用。一切細(xì)節(jié)請(qǐng)看DRAM接口節(jié)。B.12.2.10掃描addrgen塊有它自己的掃描鏈,它的定時(shí)用部件自己的時(shí)鐘發(fā)生器(adclkgen)控制。注意,在部件的后端的請(qǐng)求發(fā)生器歸屬DRAM接口時(shí)鐘范圍。B.12.3**預(yù)測(cè)濾波器按照本發(fā)明,預(yù)測(cè)濾波器的總結(jié)構(gòu)示于圖146。前向和后向?yàn)V波器是全同的,它們對(duì)MPEG前向和后向預(yù)測(cè)塊濾波。只有前向?yàn)V波器用在H.261方式(后向?yàn)V波器的h261_on輸入永遠(yuǎn)應(yīng)為低,因?yàn)镠.261流不包含后向預(yù)測(cè))。整個(gè)預(yù)測(cè)濾波器塊由一些兩線接口級(jí)的流水線組成。B.12.3.1預(yù)測(cè)濾波器每個(gè)預(yù)測(cè)濾波器的工作完全與另一個(gè)無關(guān),有效數(shù)據(jù)一出現(xiàn)在它的輸入,它就立即處理數(shù)據(jù)。從圖147可看出一個(gè)預(yù)測(cè)濾波器包括四個(gè)獨(dú)立的塊,其中兩個(gè)是相同的。最好為MPEG和H.261操作獨(dú)立地描述這些塊的工作。H.261更復(fù)雜一些,首先描述它。B.12.3.1.1H.261操作所用的一維濾波方程如下Fi=xi(其它)這個(gè)公式被x預(yù)測(cè)濾波器用于8×8塊的每一行,被y推算濾波器用于每一列。實(shí)現(xiàn)它的機(jī)理示于圖148。這基本上是pfltldd圖的再現(xiàn)。濾波器由三個(gè)兩線接口流水線級(jí)組成。對(duì)一行的第一個(gè)和最后一個(gè)象素,寄存器A和C被復(fù)位,數(shù)據(jù)不改變地通過寄存器B、D和F(B和D的內(nèi)容被加到0)。B×2×mux的控制置位,所以寄存器B的輸出左移一位。這個(gè)移位除一個(gè)位以外,這一位在任何事件中總是被移位。所以,所有值被4乘(更多關(guān)于這方面的說明見后)。所有其它象素Xi+1裝入寄存器C,Xi裝入寄存器B,Xi-1裝入寄存器A。從圖148可看出,H.261濾波方程于是被實(shí)現(xiàn)。因?yàn)榇怪睘V波是三個(gè)水平組為一單位來完成的,(見下面關(guān)于維緩存器的注解)不需要不同地處理一行的第一和最后的象素。在一行內(nèi),控制和象素的計(jì)數(shù)用與每個(gè)1-D濾波器有關(guān)的控制邏輯完成。應(yīng)當(dāng)注意,結(jié)果還沒有被4除。在預(yù)測(cè)濾波器加法器(B.12.4.2)的輸入處完成被16除(右移4位)。這是在水平和垂直濾波都完成以后實(shí)現(xiàn)的。所以計(jì)算精度沒有損失。寄存器DA、DD和DF把控制信號(hào)下送到流水線。這包括h261_on和last_byte。在預(yù)測(cè)濾波器中的其它塊中,格式化器的功能僅僅是保證數(shù)據(jù)以正確次序送到x-濾波器。由上可見,這僅需一個(gè)三級(jí)移位寄存器,第一級(jí)連到寄存器C的輸入,第二級(jí)連到寄存器B而第三級(jí)到寄存器A。在x和y濾波器之間,維緩存器緩沖數(shù)據(jù),使得以三個(gè)垂直象素為一組地送到y(tǒng)-濾波器。然而,這些三象素的組仍舊水平地處理,所以在預(yù)測(cè)濾波器內(nèi)沒有轉(zhuǎn)置發(fā)生。參看圖149,從維緩存器輸出象素的次序,在表B.12.1中說明。表B.12.1H.261維緩沖器序列a、前一塊象素的最小行(1eastrowofpixelsfrompreviousblock),如果沒有前一塊(或如果在塊之間有長(zhǎng)間隙)則是無效數(shù)據(jù)。b、F(x)表示H.261濾波方程中的函數(shù)。B.12.3.1.2MPEG操作在MPEG工作時(shí),預(yù)測(cè)濾波器完成一個(gè)簡(jiǎn)單的半象素(halfpel)內(nèi)插法Fi=xi(0≤i≤7,intdegerpel)除非h261_on輸入為低,這是缺省的濾波操作。如果信號(hào)dim進(jìn)入1-D濾波器為低,則整數(shù)象素(integerpel)內(nèi)插法被執(zhí)行。相應(yīng)地,如果h261-on為低和xdim及ydim為低,所有象素不經(jīng)濾波直接通過。這是一個(gè)明顯的要求,即當(dāng)dim信號(hào)進(jìn)入1-D濾波器為高時(shí),行(或列)將為8個(gè)象素寬(或高)。這被概括在表B.12.2中。參考圖148,“1-D預(yù)測(cè)濾波器”。1-D濾波器對(duì)MPEG中間象素的操作與對(duì)H.261一行中第一和最后象素的操作是一樣的。對(duì)于MPEG半象素操作,寄存器A是永遠(yuǎn)復(fù)位的,寄存器C的輸出左移1位(在任何情況下寄存器B的輸出總是左移一位)。所以,在兩個(gè)時(shí)鐘以后,寄存器F包含(2B+2C),四倍于需要的結(jié)果,但這在預(yù)測(cè)濾波器加法器的輸入處已予注意,在那里數(shù)己流過x和y濾波器兩者,被右移4位。表B.12.21-D濾波器操作在MPEG中格式化器和維緩存器的功能也比較簡(jiǎn)單。格式化器必須先收集兩個(gè)有效象素,在這以的才把它們送到x-濾波器作半象素內(nèi)插;維緩存器只需緩沖一行。值得注意的是,在數(shù)據(jù)已通過x-濾波器以后,一行總是只能有8個(gè)象素,這是因?yàn)闉V波操作把9個(gè)象素的行變換為8象素的行?!笆サ摹毕笏卦跀?shù)據(jù)流中用間隙代替。當(dāng)完成半象素內(nèi)插法以后,x-濾波器在每行終端(在每8個(gè)象素之后)插入一個(gè)間隙;y-濾波器在塊的末尾插入8個(gè)間隙。這是重要的,因?yàn)閴K末尾的8或9個(gè)間隙的組與出于FIFO流中的數(shù)據(jù)令牌頭以及數(shù)據(jù)令牌之間的其它令牌相一致。這使芯片的最壞情況的流通量減到最小。這種情況發(fā)生在9×9塊被濾波時(shí)。B.12.3.2預(yù)測(cè)濾波器加法器在MPEG工作時(shí),推算可以用一幅較早的圖,一幅較遲的圖或兩者的平均來形成。用較早的一幀形成的預(yù)測(cè)稱為前向預(yù)測(cè),用較遲的一幀形成的叫后向預(yù)測(cè)。預(yù)測(cè)濾波器加法器(pladd)的功能是決定用哪一個(gè)已濾波的預(yù)測(cè)值(前向,后向或兩者),并決定通過(passthrough)前向或后向已濾波的預(yù)測(cè)還是通過兩者的平均。(向正無窮大舍入)。預(yù)測(cè)方式只能在塊之間改變,即在啟動(dòng)(power-up)時(shí)或在fwd_lst_byte和/或bwd_lst_byte信號(hào)有效以后,表明是當(dāng)前預(yù)測(cè)塊的最后字節(jié)。如果當(dāng)前塊是一個(gè)前向預(yù)測(cè),則只檢驗(yàn)fwd_lst_byte。如果它是一個(gè)后向預(yù)測(cè),則只檢驗(yàn)bwd_lst_byte。如果它是一個(gè)雙向預(yù)測(cè),則fwd_lst_byte和bwd_lst_byte兩者都要檢驗(yàn)。信號(hào)fwd-on和bwd-on決定用哪一個(gè)預(yù)測(cè)值。在任何時(shí)候,這些信號(hào)可能兩個(gè)都有效或兩個(gè)都無效。啟動(dòng)時(shí),或當(dāng)塊的輸入處沒有有效(valid)數(shù)據(jù)而出現(xiàn)一個(gè)間隙時(shí),塊進(jìn)入兩個(gè)信號(hào)都無效的狀態(tài)。用兩個(gè)準(zhǔn)則為下一個(gè)塊決定預(yù)測(cè)方式信號(hào)fwLima_twin和bwd_ima_twin,它們表明是前向塊還是后向塊構(gòu)成雙向預(yù)測(cè)對(duì)的一部分,和總線fwd_p_num[1∶0]和bwd_p_num[1∶0]。這些總線包含數(shù)字,這些數(shù)字為每一個(gè)預(yù)測(cè)塊或新預(yù)測(cè)塊對(duì)(pair)增加1。這些塊是必要的,因?yàn)?,例如,如有兩個(gè)前向預(yù)測(cè)塊,后面跟著一個(gè)雙向預(yù)測(cè)塊,DRAM接口能夠在前面足夠遠(yuǎn)處取到雙向預(yù)測(cè)塊的后向塊,使得在第二個(gè)前向預(yù)測(cè)塊之前,這個(gè)后向塊達(dá)到預(yù)測(cè)濾波器加法器的輸入。類似地,其它后向和前向預(yù)測(cè)序列能在預(yù)測(cè)濾波器加法器的輸入處從序列中取出。因此,下面預(yù)測(cè)方式如下被決定1)如果有效前向數(shù)據(jù)存在,且fwd_ima_twin為高,則塊就停止,直到隨著bwd_ina-twin的置1,有效后向數(shù)據(jù)到達(dá)。然后通過每對(duì)預(yù)測(cè)值取平均的那些塊。2)如果有效后向數(shù)據(jù)存在,且bwd_ima_twin為高,則塊停止,直到隨著fwd-ima-twin的置1,有效前向數(shù)據(jù)到達(dá),然后象上面一樣處理。如果前向和后向數(shù)據(jù)一起是有效的,則不停止。3)如有效前向數(shù)據(jù)存在,但fwd_ima_twin未置1,則檢查fwd_p_num。如這等于從上一次預(yù)測(cè)出來的數(shù)加1(存貯在pred_num中)則被測(cè)方式設(shè)置為前向。4)如有效反向數(shù)據(jù)存在,但bwd_ima_twin未置1,則檢查bwd_p_num。如這等于從上一次預(yù)測(cè)出來的數(shù)加1(存貯在pred_num中),則預(yù)測(cè)方式設(shè)置為后向。注意,使用了從流水線退回一級(jí)來的“early-valid”信號(hào),這是為了使預(yù)測(cè)濾波器加法器方式能在從新塊來的第一個(gè)數(shù)據(jù)到達(dá)以前設(shè)置。這確保沒有停止被引入流水線。ima_twin和pred_num信號(hào)沒有和已濾波的數(shù)據(jù)一起通過前向和反向預(yù)測(cè)濾波器流水線。這是因?yàn)?)這些信號(hào)只在fwd-1st-byte和/或bwd-lst-byte是有效時(shí)才被檢驗(yàn)。這在每個(gè)預(yù)測(cè)濾波器中差不多節(jié)省了25個(gè)三位的流水線級(jí)。2)在整個(gè)塊中,信號(hào)保持有效,所以,當(dāng)fwd_lst_byte和/或bwd_lst_byte到達(dá)預(yù)測(cè)濾波器加法器時(shí),信號(hào)是有效的。3)信號(hào)在數(shù)據(jù)到達(dá)以前一個(gè)時(shí)鐘周期被檢驗(yàn)。B.12.4預(yù)測(cè)加法器和FIFO預(yù)測(cè)加法器(padder)用把預(yù)測(cè)濾波器的數(shù)據(jù)加上誤差數(shù)據(jù)(errordata)的方法形成所預(yù)測(cè)的幀(predictedframe)。為了補(bǔ)償從輸入經(jīng)過地址發(fā)生器,DRAM接口和預(yù)測(cè)濾波器引起的處延遲,誤差數(shù)據(jù)在到達(dá)Padder以前,經(jīng)過一個(gè)256字的FIFO(sfifo)。CODING_STANDARD,PREDICTION_MODE和數(shù)據(jù)令牌被解碼,以確定什么時(shí)候預(yù)測(cè)塊被形成。在數(shù)據(jù)令牌中,8位預(yù)測(cè)數(shù)據(jù)加9位2的補(bǔ)碼誤差數(shù)據(jù)。其結(jié)果被限制在0到255范圍內(nèi)并送到下一個(gè)塊。注意,這個(gè)數(shù)據(jù)限制也適用于所有內(nèi)部編碼數(shù)據(jù),包括在JPEG中。本發(fā)明的預(yù)測(cè)加法器也包含一個(gè)機(jī)構(gòu)。它用來檢測(cè)從FIFO來的數(shù)據(jù)與從預(yù)測(cè)濾波器來的數(shù)據(jù)之間的不匹配。理論上,從濾波器來的數(shù)據(jù)量應(yīng)與從包含預(yù)測(cè)的FIFO來的數(shù)據(jù)令牌數(shù)完全對(duì)應(yīng)。在嚴(yán)重故障的事件中,padder會(huì)企圖補(bǔ)償。從FIFO和濾波器來的數(shù)據(jù)塊的尾,分別用in-extn和fl-last輸入來標(biāo)識(shí)。當(dāng)濾波器數(shù)據(jù)的結(jié)束在數(shù)據(jù)令牌流的結(jié)束以前被檢測(cè)到時(shí),令牌的剩余部分繼續(xù)不變輸出。另一方面,如果濾波器塊比數(shù)據(jù)令牌長(zhǎng),則輸入被停止,直到所有多余的濾波器數(shù)據(jù)已被接受遺棄為止。在FIFO或預(yù)測(cè)加法器中都沒有窺測(cè)器。因?yàn)槟馨研酒渲贸墒箶?shù)據(jù)從令牌輸入端口直接送到這些塊,以及把它們的輸出直接送到令牌輸出端口。B.12.5寫指針和讀指針B.12.5.1寫指針(wrudder)寫指針把所有來自預(yù)測(cè)加法器的令牌傳送到讀指針。它也傳送MPEG中I或P圖象的所有數(shù)據(jù)塊,及H.261中的所有數(shù)據(jù)塊到DRAM接口,使得這些數(shù)據(jù)塊可以在地址發(fā)生器的控制下被寫進(jìn)外部幀存貯器。所有的主要功能包含在一個(gè)雙線接口級(jí)內(nèi),雖然寫回?cái)?shù)據(jù)在到DRAM接口的途中經(jīng)過一個(gè)窺測(cè)器。寫指針對(duì)以下令牌解碼表B.12.3由寫指針解碼的令牌在數(shù)據(jù)令牌頭被檢測(cè)到以后,所有數(shù)據(jù)字節(jié)輸出到DRAM接口。用in_extn變低表示數(shù)據(jù)令牌結(jié)束已被檢測(cè)到。這使一個(gè)注滿(flu-sh)信號(hào)送到DRAM接口的交替緩沖器。在正常工作情況下,這無論如何會(huì)與交替緩沖器交替的時(shí)刻相一致,但如數(shù)據(jù)令牌不包含64個(gè)字節(jié)數(shù)據(jù),這提供一個(gè)恢復(fù)手段(雖然隨后的很少幾幅輸出圖象是可能不正確的)。B.12.5.2讀指針(rrudder)本項(xiàng)發(fā)明的讀指針有三個(gè)功能,其中兩個(gè)主要功能關(guān)系到在MPEG中圖象序列的重排序1)將從外部幀存貯器已讀回的數(shù)據(jù),在正確位置插入令牌流。2)在I和P圖象中對(duì)圖象頭信息重排序。3)用檢測(cè)FLUSH令牌的方法,檢測(cè)令牌流的結(jié)束(見B.12.1節(jié),“頂層岔口”)。讀指針的結(jié)構(gòu)示于圖150。整個(gè)部件是根據(jù)標(biāo)準(zhǔn)兩線接口技術(shù)組成。在輸入接口鎖存器中的令牌被解碼,這些解碼決定了部件的工作表B.12.4由讀指針解碼的令牌重排序功能由微處理器接口而定,但如編碼標(biāo)準(zhǔn)不是MPEG則被禁止,不管寄存器的狀態(tài)如何。同一個(gè)MPI寄存器控制地址發(fā)生器是否產(chǎn)生一重排序地址。所以,重排序是從這個(gè)塊輸出的。為了了解讀指針如何工作,分別考慮輸入和輸出邏輯。記住,令牌的序列如下面所示·CODING_STANDARD·SEQUENCE_START·PICTURE_START·TEMPORAL_REFERENCE·PICTURE_TYPE·PicturecontainingDATATokensandothertokens·PICTURE_END...·PICTURE_START...B.12.5.2.1輸入控制邏輯啟動(dòng)一開始,所有令牌進(jìn)3kFIF01(稱作當(dāng)前輸3kFIFO)直到遇到工或P圖象的第一個(gè)PICTURE_TYPE令牌為止。然后FIF02變成當(dāng)前輸入FIFO,所有的輸入指向它,直到下一個(gè)工或P圖象的PICTURE_TYPE被遇到為止,而FIF01又變成當(dāng)前輸入FIFO。在工和P圖象中,PICTURE_TYPE和PICTURE_END之間的所有令牌被拋棄,數(shù)據(jù)令牌除外。這是為了防止運(yùn)動(dòng)矢量等在已重排序的流中與錯(cuò)誤圖象聯(lián)系在一起,錯(cuò)誤圖象在那里本來沒有意義。一個(gè)三位碼隨著令牌流放入FIFO,以表明某些令牌頭的存在。這省去了必須在各FIFO輸出完成令牌解碼。B.12.5.2.2輸出控制邏輯啟動(dòng)開始,從FIF01接收令牌(稱作當(dāng)前輸出FIF0)直到遇到一個(gè)圖象起始碼為止。在這以后,F(xiàn)IF02變成當(dāng)前輸出FIFO。返回去參看B.12.5.2.1節(jié),可以看出,在這一級(jí),三個(gè)圖象頭令牌,PICTURE_START,TEMPORAL_REFERENCE和PICTURE_STARTS留在FIFO1。在工或P幀每次遇到一個(gè)圖象起始碼時(shí),當(dāng)前輸出FIFO被交換。相應(yīng)地,三個(gè)圖象頭令牌被存儲(chǔ),直到下一個(gè)I或P幀為止。那時(shí),他們將變成與正確地重排序數(shù)據(jù)有關(guān)。B圖象沒有重排序,因此沒有任何令牌被拋棄而通過。在第一幅圖中,所有令牌,包括PICTURE_END,被拋棄。在I和P圖象期間,令牌流中數(shù)據(jù)令牌包含的數(shù)據(jù)被從DRAM接口來的重排序數(shù)據(jù)所代替。在第一幅圖期間,“經(jīng)過重排序”的數(shù)據(jù)仍舊存在在重排序數(shù)據(jù)輸入,因?yàn)榈刂钒l(fā)生器仍舊請(qǐng)求DRAM接口去取它。這被看作無意義的信息而被拋棄。B.13DRAM接口B.13.1概述在本發(fā)明中,空間解碼器,時(shí)間解碼器和視頻格式化器,每個(gè)包含一個(gè)本特殊芯片的DRAM接口部件。在全部三個(gè)裝置中,DRAM接口的功能是從芯片到外部DRAM和從外部DRAM歪0芯片傳送數(shù)據(jù)。數(shù)據(jù)傳送是通過地址發(fā)生器提供的塊地址進(jìn)行的。DRAM接口典型地用時(shí)鐘工作。這個(gè)時(shí)鐘和地址發(fā)生器及通過數(shù)據(jù)各個(gè)塊的時(shí)鐘間是異步的,然而這個(gè)異步是容易處理的,因?yàn)檫@些時(shí)鐘工作在差不多相同的頻率。數(shù)據(jù)通常在DRAM接口和芯片的其余部分之間以64字節(jié)的塊傳送(唯一的例外是時(shí)間解碼器中的預(yù)測(cè)數(shù)據(jù))。傳送的發(fā)生通過一個(gè)稱為“交替緩存器”的裝置。這實(shí)質(zhì)上是一對(duì)以雙緩沖結(jié)構(gòu)形式運(yùn)行的一對(duì)RAM。用DRAM接口填充或出空一個(gè)RAM時(shí),芯片的另外部分出空或填充另一個(gè)RAM。一個(gè)攜帶從地址發(fā)生器來的地址的獨(dú)立總線與每一交替緩沖器相連。每一芯片有四個(gè)交替緩存器,但在每種情況,這些交替緩存器的功能是不同的。在空間解碼器中,一個(gè)交替緩沖器用于傳送編碼數(shù)據(jù)到DRAM,另一個(gè)從DRAM讀取編碼數(shù)據(jù),第三個(gè)傳送令牌化數(shù)據(jù)到DRAM,而第四個(gè)從DRAM讀取令牌化數(shù)據(jù)。在時(shí)間解碼器中,一個(gè)交替緩沖器用來寫基的或預(yù)測(cè)的圖象數(shù)據(jù)到DRAM,第二個(gè)從DRAM讀取基數(shù)據(jù)或預(yù)測(cè)數(shù)據(jù),另外兩個(gè)讀前向和后向預(yù)測(cè)數(shù)據(jù)。在視頻格式化器中,一個(gè)交替緩沖器用來向DRAM傳送數(shù)據(jù),另外三個(gè)用來從DRAM讀數(shù)據(jù),即,讀亮度(Luminance)(Y),紅、藍(lán)色差數(shù)據(jù)(分別為cr和cb)每個(gè)中的一個(gè)。DRAM的一般特性的工作在空間解碼器文件中描述。下節(jié)描述時(shí)間解碼器特有的特性。B.13.2時(shí)間解碼器DRAM接口如在B.13.1節(jié)中所述,時(shí)間解碼器有四個(gè)交替緩存器兩個(gè)用來讀和寫已解碼的基的和已預(yù)測(cè)的(I和P)圖象數(shù)據(jù)。這些緩存器的工作如前述。另外兩個(gè)用來取預(yù)測(cè)數(shù)據(jù)。通常,預(yù)測(cè)數(shù)據(jù)由x,y形式的運(yùn)動(dòng)矢量來表明正被處理塊的位置偏移。所以被取出的數(shù)據(jù)塊一般不對(duì)應(yīng)于它以前被編碼(和寫入DRAM)的數(shù)據(jù)的塊邊界。這在圖151和圖25中說明。在這里陰影區(qū)域表示正在形成的塊。虛線輪廓表示正被預(yù)測(cè)的塊。地址發(fā)生器把用運(yùn)動(dòng)矢量表明的地址轉(zhuǎn)換為、一個(gè)塊偏移量(整塊數(shù))如大箭頭所示,和一個(gè)象素偏移量,如小箭頭所示。在地址發(fā)生器中,幀指針、基塊地址和矢量偏移量加起來形成要從DRAM中取的塊的地址。若象素偏移量為0,只產(chǎn)生一個(gè)請(qǐng)求。如在x或y維兩者之一中有一個(gè)偏移量,則產(chǎn)生兩個(gè)請(qǐng)求-原來的塊地址和立即向右或立即向下兩者中的一個(gè)地址。x和y兩者都有一個(gè)偏移量時(shí),則產(chǎn)生四個(gè)請(qǐng)求。對(duì)要取的每個(gè)塊,地址產(chǎn)生器計(jì)算起始和停止地址參數(shù)并把這些參數(shù)送到DRAM接口。這些起始和停止地址的使用最好用例子說明,概述如下考慮一個(gè)象素偏移量(1,1),如圖152圖26中陰影區(qū)域所示。地址發(fā)生器造成四個(gè)請(qǐng)求,在圖中標(biāo)號(hào)為A到D。要解決的問題是如何很快地提供所要求的行地址序列。解決的方法是用“啟動(dòng)/停止”技術(shù)。描述如下考慮圖152中的A塊。必須從位置(1,1)開始讀,以位置(7,7)結(jié)束。假定現(xiàn)在正在一次讀一個(gè)字節(jié)(即一個(gè)8位DRAM接口)。坐標(biāo)對(duì)的x值形成地址的三個(gè)最低有效位,y值形成三個(gè)最高有效位。x和y的起始值都是1,給出地址9。數(shù)據(jù)從這地址讀起,x值增加。這個(gè)過程被重復(fù)直到x值達(dá)到它的停止值為止。在此刻,y值增1,x起始值被重裝入,給出地址17。因?yàn)閿?shù)據(jù)的每個(gè)字節(jié)被讀取,x的值又增加,直到達(dá)到它的停止值。這個(gè)過程重復(fù)進(jìn)行直到x和y的值都已達(dá)到它們的停止值。因此,地址序列9、10、11、12、13、14、15、17、......、23、25、......、31、33、......、......、57、......、63被產(chǎn)生。類似地,B塊起始和停止坐標(biāo)是(1,0)和(7,O),C塊是(0,1)和(0,7),D塊是(0,0)和(0,0)。下一問題是這個(gè)數(shù)據(jù)應(yīng)往何處寫。顯然,先看A塊,從地址9讀取的數(shù)據(jù)應(yīng)寫到地址0,0地址在交替緩存器中。從地址10讀取的數(shù)據(jù)應(yīng)寫到交替緩存器中地址15,等等。類似地,從B塊的地址8讀的數(shù)據(jù)應(yīng)寫到交替緩存器的地址15,從地址16讀出的數(shù)據(jù)應(yīng)寫入交替緩存器地址15。這種操作最后有很簡(jiǎn)單的實(shí)現(xiàn),概述如下??紤]塊A。在讀開始時(shí)交替緩存器地址寄存器裝入停止值的反數(shù)(inverse),y的取反停止值形成三個(gè)最高有效位(MBS),x的取反停止值形成三個(gè)最低有效位。在這一情況,當(dāng)DRAM接口正在讀外部DRAM中的地址9時(shí),交替緩存器的地址是0。然后,當(dāng)外部DRAM地址寄存器增加時(shí)交替緩存器的地址寄存器也增加。如表B.13.1所示表B.13.1預(yù)測(cè)尋址的說明到此為止的討論集中在8位DRAM接口。對(duì)于16位或32位接口,必須做少量修改。第一,象素偏移矢量必須被“限制”(clipped),使它指向16或32位邊緣。在我們一直使用的例中,對(duì)A塊,開始DRAM讀將指向地址0,在地址0到3中的數(shù)據(jù)將被讀。下面,不要的數(shù)據(jù)必須被拋棄。把所有數(shù)據(jù)寫入交替緩存器并加上偏移量進(jìn)行讀取,就可做到這點(diǎn)。(現(xiàn)在交替緩存器的物理量比在8位時(shí)所必需的要大些)。當(dāng)做MPEG半象素內(nèi)插法時(shí),在x和/或y方向必須從DRAM接口讀9個(gè)字節(jié)。在此情況,地址發(fā)生器提供合適的起始和停止地址,DRAM接口中某些另外的邏輯被用到。但是DRAM接口的工作方式?jīng)]有根本的改變。關(guān)于時(shí)間解碼器的DRAM接口,最后一點(diǎn)要指出的是,對(duì)預(yù)測(cè)濾波器必須提供另外的信息,以指示對(duì)數(shù)據(jù)需要作哪種處理。這包括以下方面·一個(gè)“最后字節(jié)”信號(hào),指明一次傳送的最后字節(jié)(64,72或81字節(jié))·一個(gè)H.261標(biāo)識(shí)·一個(gè)雙向預(yù)測(cè)標(biāo)識(shí)·用兩位指明塊的尺寸(在x和y方向是8或9個(gè)字)·兩位數(shù)表明各塊的次序最后字節(jié)標(biāo)識(shí)可以在數(shù)據(jù)從交替緩存器讀出時(shí)產(chǎn)生。其它信號(hào)從地址發(fā)生器得到,并通過DRAM接口輸送,以使它們和正確的數(shù)據(jù)塊相聯(lián)系。這是因?yàn)閿?shù)據(jù)是用預(yù)測(cè)濾波器部件從交替緩存器讀出的。B.14UPI文件B.14.1前言本文件意圖使讀者對(duì)本發(fā)明的微處理器接口的工作有一個(gè)了解。UP接口同空間解碼器和時(shí)間解碼器接口,基本上是一樣的,唯一差別是地址線的數(shù)目。這里描述的邏輯純是微處理器內(nèi)部邏輯。有關(guān)的電路圖是UPIUPI101UPI102DINLOGICDINCELLUPINTDETNONOVRLPWRTGENREADGENVREFCKT電路UPI,UPI101,UPI102的不同處在于UPI101有7位地址輸入,其第8位總接地,而UPI和UPI102有8位地址輸入,輸入/輸出信號(hào)這里描述的信號(hào)是一張對(duì)UPI模塊的所有輸入和輸出的列表(輸入、輸出是相對(duì)于UPI來定義的)。表中詳細(xì)說明了這些信號(hào)的源或目的地NOTRSTINPUTGlolal芯片復(fù)位,低電平有效,從暫存(Pad)輸入驅(qū)動(dòng)器來。E1InputEnable信號(hào)1,低電平有效,從暫存(Pad)輸入驅(qū)動(dòng)器(Schmitt)來。E2InputEnable信號(hào)2,低電平有效,從暫存(Pad)輸入驅(qū)動(dòng)器(schmitt)來。RNOTWInputRead不寫信號(hào)從暫存(Pad)輸入驅(qū)動(dòng)器(Schmiff)來。ADDRIN[7∶0]Input地址總線信號(hào),從暫存(Pad)輸入驅(qū)動(dòng)器(Schmitt)來。NOTDIN[7∶0]Input1輸入數(shù)據(jù)總線,從雙向微處理器數(shù)據(jù)引腳(TTLin)的輸入暫存(Pad)驅(qū)動(dòng)器來。INT_RNOTWoutput內(nèi)部讀不寫信號(hào),到被微處理機(jī)接口訪問的內(nèi)部線路(見存儲(chǔ)器圖)。INT_ADDR[7∶0]OutPut內(nèi)部地址總線,到被微處理器接口訪問的所有線路(見存儲(chǔ)器圖)。INTDBUS[7∶0]Input/output內(nèi)部數(shù)據(jù)總線,到被微處理器接口訪問的所有線路(見存儲(chǔ)器圖),以及微處理器數(shù)據(jù)輸出焊盤。內(nèi)部數(shù)據(jù)總線傳送的數(shù)據(jù),與芯片引腳上的數(shù)據(jù)相反(inverse)。READ_STROutputAn是一個(gè)內(nèi)部定時(shí)信號(hào),它指明在設(shè)備存儲(chǔ)器圖中的一個(gè)單元的一次讀取。WRITE_STROutputAn是一個(gè)內(nèi)部信號(hào),它指明內(nèi)部存儲(chǔ)器圖中的一個(gè)單元的一次寫入。TRISTATEDPADOutputAn是一個(gè)內(nèi)部信號(hào),連到微處理器數(shù)據(jù)輸出焊盤,它指明它們應(yīng)該是三態(tài)??傋⑨孶PI原理圖包含6個(gè)較小的模塊NONOVRLP,UPIN,DINLOGIC,VREFCKT,READGN,WRTGENo應(yīng)當(dāng)注意,從信號(hào)總表上,除了微處理器總線定時(shí)信號(hào)以外,沒有與微處理器接口有關(guān)的時(shí)鐘信號(hào)??偩€時(shí)序信號(hào)對(duì)所有其它在芯片上的時(shí)序信號(hào)是異步的。所以,除了那些可被外部控制所強(qiáng)迫的時(shí)序以外,微處理器操作與設(shè)備的其它部分之間沒有定時(shí)關(guān)系。例如,當(dāng)在測(cè)試系統(tǒng)上訪問微處理器接口的同時(shí),停止外部的系統(tǒng)時(shí)鐘。UPI內(nèi)沒有時(shí)鐘的另一含義是某些內(nèi)部時(shí)序是自己安排的。就是說,某些信號(hào)對(duì)UPI部件的延遲是內(nèi)部控制的。UPI的總功能是從外部世界取地址數(shù)據(jù)、使能和讀/寫信號(hào),并把這些信號(hào)格式化,使它們能正確地驅(qū)動(dòng)內(nèi)部電路。定義對(duì)存儲(chǔ)器圖訪問的內(nèi)部信號(hào)是INT_RNOTW_INT_ADDR[...],INTDBUS[...]和READ_STR和WRITE_STR。對(duì)一個(gè)讀周期和一寫周期,這些信號(hào)的時(shí)序關(guān)系在下面表示。應(yīng)當(dāng)注意,雖然數(shù)據(jù)表定義和下面的圖通常表示芯片的一個(gè)使能周期,電路操作是這樣的使能信號(hào)可保持低,地址可以循環(huán)去做連續(xù)的讀操作或?qū)懖僮?。由于有地址轉(zhuǎn)變線路,這個(gè)功能是可能的。此外,INT_RNOTW,READ_STR,WRITE_STR這些信號(hào)的存在確實(shí)反映出某些冗余。它允許內(nèi)部電路用下列二者之一用一個(gè)獨(dú)立的READmSTR和WRITE_STR(忽略工NT_RNOTW),或是用工NT_RNOTW和一個(gè)獨(dú)立的選通信號(hào)(選通信號(hào)由READSTR和WRITE_STR相‘或’得到)。在一個(gè)讀周期內(nèi),內(nèi)部數(shù)據(jù)總線預(yù)先充電到高,它也有上拉電阻,所以對(duì)于各擴(kuò)展周期,當(dāng)內(nèi)部數(shù)據(jù)總線不被驅(qū)動(dòng)時(shí),它將缺省為0×FF狀態(tài)。因?yàn)閮?nèi)部數(shù)據(jù)總線與引腳上的數(shù)據(jù)是反相的,當(dāng)它們被使能時(shí)這在外部的引腳上轉(zhuǎn)化為0×00。這意味著,如果任何外部周期訪問一個(gè)寄存器或寄存器的一位(該寄存器是存儲(chǔ)器圖中無信號(hào)區(qū)),則輸出數(shù)據(jù)是確定的,而且是低。線路細(xì)節(jié)UPIN-這個(gè)電路是總的變化檢測(cè)部件。它包含一個(gè)子電路,稱為TDET。TDET是單個(gè)位變化檢測(cè)電路。對(duì)每個(gè)地址位和rnotw信號(hào),以及每個(gè)使能信號(hào),UPIN都有一個(gè)TDET模塊。UPIN也包含某些組合邏輯把變化檢測(cè)線路的各個(gè)輸出用門組合到一起。這個(gè)門邏輯產(chǎn)生的號(hào)如下TRAN-表明在輸入信號(hào)上的一次轉(zhuǎn)變(transition)。UPD-DONE-表明一些轉(zhuǎn)變已完成,一個(gè)周期可被執(zhí)行。CHIP_EN表明該芯片已被選中。TDEF-這是單個(gè)位的變化檢測(cè)線路。它包含2個(gè)鎖存器和2個(gè)異或門。第一個(gè)鎖存器用信號(hào)SAMPLE計(jì)時(shí),第二個(gè)用信號(hào)UPDATE定時(shí)。這兩個(gè)非重疊信號(hào)是從模塊NONOVRLP來的。一般操作是這樣的,一個(gè)輸入轉(zhuǎn)變引起一次CHANGE,依次引起SAMPLE。當(dāng)SAMPLE為高時(shí),所有輸入變化被接受。當(dāng)輸入變化停止時(shí),則CHANGE變低,并且SAMPLE變低,這引起UPDATE變高。于是傳送數(shù)據(jù)到輸出鎖存器和表明UPD_DONE。NONOVRP-這個(gè)線路基本上是一個(gè)非重疊時(shí)鐘發(fā)生器,它將TRAN輸入,并產(chǎn)生SAMPEL及UPDATE。在UPDATE輸出上,外部門控制阻止UPDATE變高,直到一個(gè)寫脈沖已經(jīng)完成為止。DINLOGIC-這個(gè)模塊包含數(shù)據(jù)輸入電路DINCELL的8種情況和驅(qū)動(dòng)TRISTAT-EPAD信號(hào)的某些門。這表明輸出數(shù)據(jù)端口只在以下情況才驅(qū)動(dòng),Enablel為低,ENable2為低,Rnotw為高和內(nèi)部read_str為高。DINCELL-這個(gè)線路包括數(shù)據(jù)輸入鎖存器和一個(gè)驅(qū)動(dòng)內(nèi)部數(shù)據(jù)總線的三態(tài)驅(qū)動(dòng)器。當(dāng)信號(hào)DATAHOLD為高,以及Enablel和Enable2兩者都是低時(shí),從輸入焊盤來的數(shù)據(jù)被鎖存。每當(dāng)內(nèi)部信號(hào)INT-RNOTW為低時(shí),三態(tài)驅(qū)動(dòng)器驅(qū)動(dòng)內(nèi)部數(shù)據(jù)總線。內(nèi)部數(shù)據(jù)總線對(duì)晶體管預(yù)充電,總線上拉元件(pullup)也包含在這個(gè)模塊中。WRTGEN-這個(gè)模塊產(chǎn)生WRITE_STR,和鎖存信號(hào)DATAHOLD,后者是為數(shù)據(jù)鎖存器用的。寫選通是一個(gè)自定時(shí)信號(hào),然而,自定時(shí)間的延遲是在VREFCKT中確定的。定時(shí)線路RESETWRITE的輸出被用來終止WRITE_STR信號(hào)。應(yīng)當(dāng)注意,寫寄存器的實(shí)際寫脈沖只在一個(gè)訪問周期結(jié)束以后產(chǎn)生。這是因?yàn)檩斎氲叫酒臄?shù)據(jù)只在周期的后沿被采樣。因此,只在一個(gè)正常訪問周期已結(jié)束后數(shù)據(jù)才有效。READGEN-這個(gè)線路,如它的名字暗示的,產(chǎn)生READ_STR信號(hào)。它也產(chǎn)生PRECH信號(hào),此信號(hào)用來預(yù)充電內(nèi)部數(shù)據(jù)總線。PRECH信號(hào)也是一個(gè)自定時(shí)信號(hào),它的周期決定于VREFCKT,也取塊于內(nèi)部數(shù)據(jù)總線上的電壓。READ_STR不是自定時(shí)的,但從預(yù)充電周期結(jié)束開始,一直延續(xù)到本周期結(jié)束為止。預(yù)充電線路用倒相器,它們的轉(zhuǎn)換特性被偏置,使得它們?cè)诘瓜嗲靶枰粋€(gè)差不多是電源的75%的電壓。這個(gè)電路保證,在READ_STR開始以前,內(nèi)部總線被正確地預(yù)充電。為了防止在內(nèi)部總線已經(jīng)預(yù)充電的情況下PRECH脈沖趨向零寬度,定時(shí)線路通過信號(hào)RESETREAD保證一個(gè)最小的寬度。VREFKCT-VREFCKT是控制接口自定時(shí)的唯一線路。兩種延遲,1/WRITE_STR的寬度和2/PRECH的寬度,都被通過一只P晶體管的電流控制。用信號(hào)vREF控制這個(gè)P晶體管,這個(gè)電壓用一個(gè)25kΩ擴(kuò)散電阻來設(shè)定。C1概述C.1.1前言根據(jù)本發(fā)明的圖象格式器的結(jié)構(gòu)示于圖155,這里有分別用于寫和讀的二個(gè)地址發(fā)生器,管理二個(gè)地址發(fā)生器并提供幀頻轉(zhuǎn)換的緩沖器管理器,一個(gè)數(shù)據(jù)處理流水線,包括垂直和水平二者的過采樣器(upsamplers),彩色空間轉(zhuǎn)換器及伽馬校正,還有一調(diào)整處理流水線輸出的最終控制塊。C.1.2緩沖器管理器輸入圖象格式器的令牌被緩沖到先進(jìn)先出(FIFO)存貯器中。然后,傳送到緩沖器管理器,此部件檢測(cè)新圖象的到達(dá)并判斷存貯每個(gè)圖象元緩沖器的可用性。若有可用的緩沖器,它就被分配給到達(dá)圖象,而它的指針就傳到寫地址發(fā)生器,若發(fā)現(xiàn)無可用的緩沖器,進(jìn)來的圖象將延遲直到有一緩沖器變?yōu)榭捎?。所有令牌被送到寫地址發(fā)生器。每當(dāng)讀地址發(fā)生器從顯示系統(tǒng)接收到VSYNC信號(hào),根據(jù)新的顯示緩沖器指針對(duì)緩沖器管理器形成一請(qǐng)求。若有一緩沖器含有完整的圖象數(shù)據(jù)且認(rèn)為那個(gè)圖象已為顯示作好準(zhǔn)備,那么緩沖器的指針將送到顯示地址發(fā)生器,否則,緩沖器管理器就送出被顯示的最后緩沖器的指針。在開始工作時(shí),零作為指針被傳送,直到第一緩沖器滿。若圖象號(hào)碼(每個(gè)圖象輸入時(shí)計(jì)算)大于或等于給定編碼幀頻顯示(呈現(xiàn)號(hào)碼)時(shí)所希望的圖象號(hào)碼,一圖象就準(zhǔn)備好顯示了。所希望的號(hào)碼可通過圖象時(shí)鐘脈沖的計(jì)數(shù)值而確定,圖象時(shí)鐘或者通過時(shí)鐘分頻器在本地產(chǎn)生或外部形成,這種技術(shù)允許幀頻轉(zhuǎn)換(如2~3下拉)。外部的DRAM被用作緩沖器,這種緩沖器在數(shù)量上可以是2個(gè)或3個(gè),若要實(shí)現(xiàn)幀頻轉(zhuǎn)換就需要3個(gè)緩沖器。C.1.3寫地址發(fā)生器寫地址發(fā)生器從緩沖器管理器接收令牌并檢測(cè)每個(gè)新數(shù)據(jù)令牌的到達(dá)。當(dāng)每個(gè)數(shù)據(jù)令牌到達(dá)時(shí),地址發(fā)生器為DRAM接口計(jì)算一新的地址存貯到達(dá)的圖塊,原始數(shù)據(jù)然后傳到DRAM接口,在接口里數(shù)據(jù)被寫入到交替緩沖器。注意DRAM地址為圖塊地址,而在DRAM中圖象按柵格塊組織。然而,輸入的圖象數(shù)據(jù)實(shí)際上以宏塊序列組織,所以地址生成算法對(duì)宏塊內(nèi)較低的塊的行必須考慮行寬(以塊數(shù)計(jì))偏移。通過緩沖器管理器提供的到達(dá)緩沖器指針被用作所存貯整個(gè)圖象的地址偏移,而且,每個(gè)分量在所指定緩沖區(qū)內(nèi)單獨(dú)區(qū)域中被存貯,所以在計(jì)算中亦使用分量偏移。C.1.4讀地址發(fā)生器讀地址發(fā)生器(dispaddr)并不接受或生成令牌,它僅生成地址,響應(yīng)VSYNC,它可以根據(jù)fieid_info,read_start,Sync_mode及l(fā)sb_invert從緩沖器管理器請(qǐng)求緩沖器指針,當(dāng)接收到一個(gè)指針,它就形成3個(gè)地址集,每個(gè)對(duì)應(yīng)一個(gè)分量,以便按光柵順序讀出當(dāng)前圖象。允許不同設(shè)置為隔行/逐行顯示和/或數(shù)據(jù),垂直不采樣,及場(chǎng)同步(對(duì)隔行顯示)。在較低級(jí)別上,讀地址發(fā)生器把基地址轉(zhuǎn)換成順序塊地址,且為三個(gè)分量中的每個(gè)的字節(jié)計(jì)數(shù)是同DRAM的頁結(jié)構(gòu)兼容的,提供給DRAM接口的地址是隨塊起動(dòng)和塊結(jié)束計(jì)數(shù)的頁和行地址。C.1.5輸出流水線來自DRAM接口的數(shù)據(jù)饋給輸出流水線,三個(gè)分量數(shù)據(jù)流首先垂直插值,然后水平插值,插值后,三個(gè)分量具有相同比例(4∶4∶4)而且傳送到彩色空間轉(zhuǎn)換器和彩色查找表/伽馬校正,輸出接口可以在此時(shí)保留數(shù)據(jù)流直到HSYSC到達(dá)而顯示。然后,輸出控制器控制3個(gè)分量到一個(gè)、二個(gè)或三個(gè)8位總線,路數(shù)隨需要而定。C.1.6定時(shí)方式基本上有二種定時(shí)方式與圖象格式器相聯(lián)系,第一種是系統(tǒng)時(shí)鐘,這時(shí)鐘為芯片前端(地址發(fā)生器及緩沖器管理器,加上DRAM接口的前端)提供定時(shí),第二種是象素時(shí)鐘,這時(shí)鐘為后端提供所有定時(shí)(DRAM接口輸出及全部輸出流水線)。上述兩種時(shí)鐘均驅(qū)動(dòng)一些芯片上的時(shí)鐘發(fā)生器。FIFO、緩沖器管理器及讀地址發(fā)生器用同一時(shí)鐘(Dφ)工作,寫地址發(fā)生器用同上相似的但獨(dú)立時(shí)鐘wφ。數(shù)據(jù)用內(nèi)部的DRAM接口時(shí)鐘(outφ)被同步進(jìn)入DRAM接口內(nèi),Dφ、wφ和outφ均由SYSCLK生成。讀和寫地址通過DRAM接口自己的時(shí)鐘在DRAM接口內(nèi)被計(jì)時(shí)。數(shù)據(jù)在bifRφ時(shí)從DRAM接口上讀出,并被傳送到稱為“bushy_ne”的輸出流水線部分(它的物理位置在東北)。由NE中表示的時(shí)鐘操作,從伽馬RAMS向前的流水線部分用獨(dú)立的但同樣的時(shí)鐘Rφ計(jì)時(shí)。bifRφ、NEφ和Rφ均取自象素時(shí)鐘pixin。為了測(cè)試,各塊之間所有主要接口附有窺測(cè)器或超級(jí)窺測(cè)器。這取決于定時(shí)方式及所需訪問類型。用于彼此分開但又有相同定時(shí)方式的塊邊界有重定時(shí)鎖存與之相聯(lián)系。C.2緩存器管理按照本發(fā)明的緩存器管理塊的作用是提供一個(gè)地址發(fā)生器,該地址發(fā)生器用指針標(biāo)識(shí)2個(gè)或3個(gè)外部緩沖器,它們用于圖象數(shù)據(jù)的讀和寫。這些指針的分配受3個(gè)主要因素影響。每個(gè)因素表示在工作中一個(gè)定時(shí)方式的作用。這些因素指圖象數(shù)據(jù)到達(dá)圖象格式器輸入端的速度(編碼數(shù)據(jù)率),數(shù)據(jù)顯示的速度(顯示數(shù)據(jù)率)以及編碼的視頻序列的幀頻(呈現(xiàn)速率(presentationrate))。C.2.2功能概述一個(gè)3緩存器系統(tǒng)允許呈現(xiàn)速率和顯示速率不同(如2~3下拉),所以在幀頻受系統(tǒng)定時(shí)限制時(shí),當(dāng)需要獲得可能最好幀序列時(shí),可以采用重復(fù)幀或跳幀。在譯碼中呈現(xiàn)某些困難的圖象亦可以按照類似方法解決。所以,當(dāng)圖象解碼花費(fèi)時(shí)間比能得到的顯示時(shí)間更長(zhǎng)時(shí),在忙于其它事情的同時(shí),前面的幀將被重復(fù)。在雙緩沖器系統(tǒng)中,3個(gè)定時(shí)方式需鎖住一正是這第3緩沖器因?yàn)檎加锌障?takingupslack)從而提供了靈活性。緩沖器管理器通過保持同每個(gè)外部緩沖器相關(guān)聯(lián)的某些狀態(tài)信息而工作。這些信息包括指示緩沖器是否在使用的各種標(biāo)記,數(shù)據(jù)是否滿,顯示是否準(zhǔn)備好,圖象序列中的圖象號(hào)是否在當(dāng)前存貯的緩沖器中。呈現(xiàn)號(hào)亦被記錄。每當(dāng)接收到一個(gè)圖象時(shí)鐘脈沖,這號(hào)就增加,并表示圖象號(hào)是根據(jù)編碼序列的幀頻來顯示目前所希望的圖象號(hào)。在輸入端,每次檢測(cè)到PICTURE_START令牌時(shí),就分配一到達(dá)緩沖器(進(jìn)入的數(shù)據(jù)將被寫入的一個(gè)緩沖器)。然后,這緩沖器標(biāo)記成在使用。在PICTURE_END時(shí),到達(dá)緩沖器被解除分配(置為零)并根據(jù)圖象號(hào)和呈現(xiàn)號(hào)之間關(guān)系,緩沖器被標(biāo)記為滿(FULL)或準(zhǔn)備好(READY)。每次VSYNC,經(jīng)雙線接口顯示地址發(fā)生器請(qǐng)求一新顯示緩沖器。若有緩沖器標(biāo)記準(zhǔn)備好,那么經(jīng)緩沖器管理器分配此緩沖器被分配去顯示。若沒有READY(準(zhǔn)備好)緩沖器,前面顯示的緩沖器將重復(fù)去顯示。每當(dāng)呈現(xiàn)號(hào)的變化被檢測(cè)出,根據(jù)READY_ness對(duì)包含完整圖象的每個(gè)緩沖器進(jìn)行測(cè)試。這種測(cè)試是通過檢查圖象號(hào)碼和呈現(xiàn)號(hào)碼之間關(guān)系進(jìn)行的。緩沖器被依次考慮。當(dāng)緩沖器的任何一個(gè)被認(rèn)為準(zhǔn)備好(READY),就自動(dòng)取消前面標(biāo)記READY的任何緩沖器的READY_ness。前面的緩沖器就標(biāo)志成空(EMPTY)。這是有作用的,因?yàn)楦鶕?jù)分配方案,后面的圖象號(hào)存儲(chǔ)在緩沖器內(nèi),這在以后考慮。若在輸入流中跳過圖象被指示出,在H.261中的TEMPORAL_REFERENCE令牌使緩沖器內(nèi)的圖象號(hào)被修改。盡管這個(gè)特點(diǎn)如我們所期望,而當(dāng)前并不包括。同樣,在MPEG中的TEMPORAL_REFERENCE令牌亦無作用。FLUSH令牌使輸入停止,直到每個(gè)緩沖器空或用做顯示的緩沖器已被分配。然后,呈現(xiàn)號(hào)碼和圖象號(hào)碼復(fù)位,并開始一個(gè)新的序列。C.2.3結(jié)構(gòu)C.2.3.1接口C.2.3.1.1到bm_front的接口所有數(shù)據(jù)從FIFO,bm_front輸入到緩沖器管理器。通過雙線接口產(chǎn)生傳輸,數(shù)據(jù)寬是8位加一個(gè)擴(kuò)展位。到達(dá)緩沖器管理器的所有數(shù)據(jù)保證是完整令牌。如果在數(shù)據(jù)流上端有明顯間隙發(fā)生,就需要繼續(xù)處理呈現(xiàn)號(hào)碼和顯示緩沖區(qū)的請(qǐng)求。C.2.3.1.2到waddrgen(寫地址發(fā)生器)的接口令牌(8位數(shù)據(jù),1位擴(kuò)充位)經(jīng)雙線接口被傳送到寫地址發(fā)生器。到達(dá)緩沖器的指針亦傳到相同接口上,以使在PICTURE_START令牌到達(dá)寫地址發(fā)生器的同時(shí)為地址生成可以得到正確的指針。C.2.3.1.3到dispaddr的接口到讀地址發(fā)生器的接口包括2個(gè)獨(dú)立雙線接口,它們分別被看作是起“請(qǐng)求”和“回答”信號(hào)的作用,單線是不夠的,因?yàn)樵?端都是基于雙線的狀態(tài)機(jī)構(gòu)。一般,同dispaddr接口有關(guān)的事件次序如下。首先,dis_paddr通過認(rèn)定的drq_valid,響應(yīng)從顯示設(shè)備來的VSYNC,發(fā)出一請(qǐng)求輸入到緩沖器管理器。其次,當(dāng)緩沖器管理器在它的狀態(tài)機(jī)上得到某一合適點(diǎn)時(shí),接收請(qǐng)求并分配一個(gè)用于顯示的緩沖器。然后,disp_Valid線被認(rèn)定,緩沖器指針被傳送并典型地立即被dispaddr所接收。而且,有一個(gè)同最后雙線接口(rst_fld)有關(guān)的附加線,它指示同當(dāng)前指針有關(guān)的場(chǎng)號(hào)必須復(fù)位,而不管前面場(chǎng)號(hào)。C.2.3.1.4微處理器接口緩沖器管理器塊使用微處理器地址空間的4位以及8位數(shù)據(jù)總線和讀寫選通。有2個(gè)選擇信號(hào),一個(gè)表示用戶可存取單元,另一個(gè)表示在正常工作條件下不需要存取的測(cè)試單元。C.2.3.1.5事件緩沖器管理器能產(chǎn)生兩個(gè)不同事件指針找到和延遲到達(dá)。第一個(gè)事件當(dāng)圖象到達(dá)且它的PICTURE_START擴(kuò)充字節(jié)(圖象指針)同設(shè)置時(shí)寫到BU_BM_TARGET_IX寄存器的值匹配時(shí)被確認(rèn)。第二個(gè)事件發(fā)生在當(dāng)顯示緩沖器被分配且它的圖象號(hào)碼小于當(dāng)前呈現(xiàn)號(hào)碼時(shí),即在系統(tǒng)流水線中該由緩沖器管理器進(jìn)行的處理,沒有設(shè)法跟上顯示需求。C.2.3.1.6圖象時(shí)鐘在本發(fā)明中圖象時(shí)鐘是作為呈現(xiàn)號(hào)計(jì)數(shù)器的時(shí)鐘信號(hào),它或者從芯片上生成,或者取自外部源(標(biāo)準(zhǔn)顯示系統(tǒng))。緩沖器管理器接收這二個(gè)信號(hào)并根據(jù)Pclk_ext(緩沖器管理器的控制寄存器中一位)的值選擇其中之一個(gè)。這個(gè)信號(hào)可作為暫存picutpad的使能信號(hào)。所以,如果圖象格式器正在生成它自己的圖象時(shí)鐘,這個(gè)信號(hào)亦可作為芯片的輸出信號(hào)。C.2.3.2主要的功能塊下面部分說明組成緩沖器管理器原理圖(bmLogic)的各個(gè)硬件功能塊。C.2.3.2.1輸入/輸出塊(bminput)這個(gè)模塊包括與緩沖器管理器的四個(gè)雙線接口有關(guān)的所有硬件(輸入和輸出數(shù)據(jù),drq_valid/接收和disp_valid/接收)。輸入數(shù)據(jù)寄存器同某些與之相連的解碼硬件的令牌被顯示。輸入到bm_tokdee上的信號(hào)vheader,確保令牌解碼器的輸出僅認(rèn)為在頭標(biāo)點(diǎn)有效(即不在令牌的中間)。rtinmd塊作為輸出數(shù)據(jù)寄存器,與在流水線中下一塊的雙份(duplicate)輸入數(shù)據(jù)寄存器相鄰。這是出于考慮不同時(shí)鐘發(fā)生器引起定時(shí)差異。信號(hào)“go”和“ngo”是基于數(shù)據(jù)有效接收和非停止相與(AND),并用于別處的狀態(tài)機(jī)中,以表示是否事情在輸入或輸出端“堵塞(bungedup)”。這個(gè)模塊的顯示指針部分包括雙線接口以及關(guān)于數(shù)據(jù)的等效“go”信號(hào),rst_fld位亦出現(xiàn)在這里,如果設(shè)置,這個(gè)信號(hào)一直保持高電平直到一周期disp_valid出現(xiàn)高電平。然后,它被復(fù)位。此外,在FLUSH令牌已使外部緩沖器的全部,經(jīng)顯示緩沖器標(biāo)記它為空(EMPTY)或在使用(IN_USE)之后,rst_fld被復(fù)位,在此同一時(shí)刻圖象號(hào)碼和呈現(xiàn)號(hào)碼被復(fù)位。有少量附加電路,它們和輸入數(shù)據(jù)寄存器相聯(lián)系,此寄存器出現(xiàn)在另一個(gè)更高的層次上。這電路產(chǎn)生一個(gè)信號(hào),它表示輸入數(shù)據(jù)寄存器包括一個(gè)等于寫到BLBM_TARGIX的值,并且這電路也用來產(chǎn)生事件。C.2.3.2.2指針塊(bmindex)指針塊主要由表示各種關(guān)鍵緩沖器指針的2位寄存器組成。它們是arr_buf,在這個(gè)緩沖器中寫入達(dá)到圖象的數(shù)據(jù),disp_buf,從這個(gè)緩沖器讀出圖象數(shù)據(jù)以顯示它,還有rdy_buf,它包括最新圖象的緩沖器的指針,若緩沖器被dispaddr請(qǐng)求,此圖象被顯示。還有一個(gè)包含buf_ix的寄存器,它用作指向緩沖器的通用指針。這個(gè)寄存器得到一增量(“D”輸入到多路器),通過緩沖器循環(huán)地測(cè)試它們的狀態(tài),也就是說當(dāng)狀態(tài)需要改變時(shí),可以得到arr_buf,disLbuf或者rdy_bur中的一個(gè)值。所以這些寄存器(Ph0型式)可以從微處理器作為測(cè)試地址空間的一部分被訪問。old_ix僅僅是buf_ix的再定時(shí)方案,它被用以表示使能緩沖器的狀態(tài)和在bm_stus塊中象號(hào)寄存器。buf_ix和old_ix二者都被解碼成3個(gè)信號(hào)(每個(gè)持有值1到3)這些信號(hào)從這些塊輸出。其它輸出指示是否buf_ix具有同arr_buf或disp_buf的相同值,是否rdy_buf和disp_buf二者均有值零。零對(duì)于緩沖器不是基準(zhǔn)值。它僅表示當(dāng)前沒有分配達(dá)到/顯示/準(zhǔn)備好的緩沖器。Arr_buf和disp_buf可以通過各自的雙線接口輸出接收寄存器被使能。在bmLogic層的附加電路用來判斷是否當(dāng)前緩沖器指針(buf_ix)等于在使用中所定義的最大指針,其值是在設(shè)置時(shí)寫到控制寄存器的。控制寄存器值為“1”表示三緩沖系統(tǒng),值為“0”表示二緩沖器系統(tǒng)。C.2.3.2.3緩沖器狀態(tài)緩沖器狀態(tài)中主要部分是每個(gè)緩沖器的狀態(tài)和圖象號(hào)寄存器。3組中每一組是主從方式安排,從寄存器是3寄存器組,主寄存器是單寄存器,此寄存器的輸出指向從寄存器的一個(gè)(通過oid_ix使用寄存器使能)。一個(gè)到主寄存器的可能的輸入是在從寄存器輸出之間多路分配得到的(在bmLogic級(jí)由buf_ix索引)。緩沖器狀態(tài)在bmLogic級(jí)被譯碼。為使用狀態(tài)機(jī)邏輯可取顯示于表C.2.1的任何值或循環(huán)它前面的值。圖象號(hào)碼可取前面值或把前面值增加1(或1加δ,如果是H.261正常和希望時(shí)間基準(zhǔn)是不同的)。這值由出現(xiàn)在塊中8位加法器提供。首先輸入到這個(gè)加法器的是this_Pnum,當(dāng)前所寫數(shù)據(jù)的圖象號(hào)。表C.2.1緩沖器狀態(tài)值這需要單獨(dú)地存貯(在它的自己主從寄存器中安排)以使3個(gè)緩沖器圖象號(hào)寄存器的任何一個(gè)很容易地根據(jù)當(dāng)前(或以前)的圖象號(hào)而不是根據(jù)它們自己以前的圖象號(hào)(這個(gè)號(hào)幾乎經(jīng)常過時(shí)的)更新。this_Pnum復(fù)位為-1以使當(dāng)?shù)谝粋€(gè)圖象到達(dá)時(shí),它與從加法器的輸出相加,因此,輸入到第一緩沖器圖象號(hào)寄存器的是零。在當(dāng)前的版本中值得注意的是,因?yàn)槿狈μ峁│闹档臅r(shí)間基準(zhǔn)塊,δ連結(jié)成零。C.2.3.2.4呈現(xiàn)號(hào)碼8位呈現(xiàn)號(hào)寄存器同呈現(xiàn)標(biāo)記相結(jié)合,用在狀態(tài)機(jī)中表示呈現(xiàn)號(hào)在它上一級(jí)被檢驗(yàn)后已改變,這是需要的,因?yàn)閳D象時(shí)鐘實(shí)質(zhì)上是異步且在任何狀態(tài)期間有效,不限于那些涉及到呈現(xiàn)號(hào)狀態(tài)。在這塊中余下的電路是關(guān)于檢測(cè)已經(jīng)出現(xiàn)的圖象時(shí)鐘脈沖,并“記憶”這些事實(shí)。用這種方法呈現(xiàn)號(hào)可以在它應(yīng)當(dāng)變更時(shí)被更新。圖156顯示事件的表示序列。在re_timed圖象時(shí)鐘上升沿后,信號(hào)incr_prn周期成有效,并持續(xù)到一狀態(tài)的到來,在此狀態(tài)期間呈現(xiàn)號(hào)被修改。這可由信號(hào)en_Prnum表示。關(guān)于只允許呈現(xiàn)號(hào)在某些狀態(tài)期間修改的原因,是因?yàn)樗挥脩趄?qū)動(dòng)大量邏輯,包括標(biāo)準(zhǔn)單元,不非常塊的8位加法器,這些加法器提供信號(hào)rdyst。因此,它必須在相繼的狀態(tài)不使用此結(jié)果的狀態(tài)期間改變。C.2.3.2.5時(shí)間基準(zhǔn)根據(jù)本發(fā)明的時(shí)間基準(zhǔn)塊已從目前圖象格式器實(shí)施例中省略,但為完整起見,對(duì)其工作作說明。這塊的作用是計(jì)算δ,即在H.261數(shù)據(jù)流中的令牌中接收的時(shí)間基準(zhǔn)值同希望的時(shí)間基準(zhǔn)(1加前面值)之間差。在H.261中允許省略一些幀。時(shí)間基準(zhǔn)令牌在所有非H.261數(shù)據(jù)流中被忽略。計(jì)算值被用在狀態(tài)塊中為緩沖器計(jì)算圖象號(hào),從bmLogic中省略這個(gè)塊其影響是在任何序列中圖象號(hào)永遠(yuǎn)是連續(xù)的,即使在H.261的流指示某些幀應(yīng)當(dāng)跳過。本塊的主要部分(在原理圖bm_tref中可見)是用作tr,exptr和delta的寄存器。在本發(fā)明中,tr復(fù)位為0,并在適當(dāng)時(shí)從輸入數(shù)據(jù)寄存器裝載。類似的,exptr復(fù)位為-1,并在時(shí)間基準(zhǔn)狀態(tài)順序期間增加1或δ,另外,delta復(fù)位為0,并裝入另2個(gè)寄存器間的差值。這3個(gè)寄存器均在FLUSH令牌后復(fù)位。這塊內(nèi)加法器是用來計(jì)算delta和exptr的,即用信號(hào)delta_calc控制分別作減和加操作。C.2.3.2.6控制寄存器(bmuregs)作為緩沖器寄存器的控制寄存器駐存在bm_uregs塊中。它們是存取位寄存器,設(shè)置寄存器(定義外部緩沖器的最大號(hào)及內(nèi)部/外部圖象時(shí)鐘)及目標(biāo)索引寄存器。存取位根據(jù)希望的同步。信號(hào)stopd_0,stopl_1和nstopd_1起源于存取位和2個(gè)事件停止位的或。對(duì)全部bmLogic的UPi地址解碼是通過塊bm_udec完成,它取UPi的數(shù)據(jù)總線的低4位,和圖象格式器的頂層地址解碼的2個(gè)選擇信號(hào)。C.2.3.2.7控制狀態(tài)機(jī)狀態(tài)機(jī)邏輯開始用它自己塊bm_state。因碼的形成原因,它現(xiàn)在整理并歸屬到bmLogic原理圖的第二張。這邏輯的主要部分是相同的。它包括解碼,為控制其它bmLog-ic塊的邏輯信號(hào)的生成及新狀態(tài)編碼,包括用于通過狀態(tài)機(jī)來選擇路徑的標(biāo)記from_ps和from_fl。各獨(dú)立塊為Dm_stns和Dm_index產(chǎn)生mux控制信號(hào)。在狀態(tài)機(jī)硬件中的信號(hào)已給出簡(jiǎn)化字母名以便打字和查閱。它們均列在表C.2.2中。同時(shí)還有表示它們的邏輯表達(dá)式,它們亦作為注釋出現(xiàn)在bmLogic的特性M說明中(bmLogic.M)。表C.2.2用于狀態(tài)機(jī)的信號(hào)名表C.2.2用于狀態(tài)機(jī)的信號(hào)名(續(xù))C.2.3.2.8δ監(jiān)控操作(bminfo)在本發(fā)明中包括模塊bminfo,以使緩沖器狀態(tài)信息,指針值及呈現(xiàn)號(hào)碼在模擬期間能被觀察到。它被寫到M中,并且每當(dāng)它的輸入之一改變時(shí)產(chǎn)生輸出。C.2.3.3寄存器地址變換。緩沖器管理器的地址空間分成2個(gè)區(qū)域,用戶可存取區(qū)和測(cè)試區(qū)。因此,有2個(gè)獨(dú)立使能線從頂層解碼得到。表C.2.3顯示用戶可存取寄存器,表C.2.4顯示測(cè)試空間內(nèi)容。表C.2.3用戶可訪問寄存器表C.2.4測(cè)試寄存器C.2.4狀態(tài)機(jī)的工作在緩沖器管理器的狀態(tài)機(jī)中有19個(gè)狀態(tài),詳見表C.2.5。其相互作用示于圖157并在特性說明bmLogic.M中描述。表C.2.5緩沖器狀態(tài)C.2.4.1復(fù)位狀態(tài)復(fù)位狀態(tài)是PRES0,伴隨標(biāo)記設(shè)置為零,這樣以使主循環(huán)初始化。C.2.4.2主循環(huán)狀態(tài)機(jī)的循環(huán)路包括的狀態(tài)示于圖153(在主圖152中加深線),狀態(tài)PRES0和PRES1是涉及經(jīng)信號(hào)Presflg檢測(cè)圖象時(shí)鐘。對(duì)所涉及的測(cè)試允許2個(gè)周期,由于它們均取決于rdyst的值及在C.2.3.2.4所說明加法器輸出信號(hào)。若呈現(xiàn)標(biāo)記被檢測(cè)出,所有緩沖器被認(rèn)為可能“準(zhǔn)備好”,否則狀態(tài)機(jī)進(jìn)到狀態(tài)DRQ。圍繞PRES0~PRES1循環(huán)的每個(gè)周期測(cè)試一個(gè)不同的緩沖器,檢查滿和準(zhǔn)備好狀態(tài)。若這些條件滿足,前面準(zhǔn)備好的緩沖器(若有一個(gè)存在)被清除,分配新準(zhǔn)備好的緩沖器并更新其狀態(tài)。這個(gè)過程被重復(fù)直到所有緩沖器被檢測(cè)(指針==Maxbuf)然后狀態(tài)繼續(xù)。當(dāng)下面的任何一個(gè)為真時(shí)緩沖器被認(rèn)為為顯示準(zhǔn)備好了(Pic_num>Pres_num)&&((pic_num·Pres_num)>=128)或(Pic_num<Pres_hum)&&((Pres_num·pic_num)<=128)或(Pic_num==pres_num。狀態(tài)DRQ檢查顯示緩沖器請(qǐng)求(drg_Valid_reg&&disp_acc_reg)。若無請(qǐng)求,狀態(tài)推進(jìn)通常是到狀態(tài)令牌-將在下面說明,否則,顯示緩沖器指針給出如下,若沒有準(zhǔn)備好的緩沖器,前面的指針再給出。若無前面顯示緩沖器,給出空白指針(零)。若緩沖器作的顯示準(zhǔn)備,它的指針被給出且它的狀態(tài)就被更新。若需要的話前面顯示緩沖器被清除,狀態(tài)機(jī)像以往一樣推進(jìn)。狀態(tài)令牌是為完成主循環(huán)的典型選擇。若有效輸入和輸出不出故障,令牌作為關(guān)鍵值而被試驗(yàn)(在后面部分說明),否則控制返回到狀態(tài)PRESO。當(dāng)某些條件滿足時(shí),控制僅脫離主循環(huán)。這些在下面部分說明。C.2.4.3分配準(zhǔn)備好緩沖器指針若在PRES0~PRES1循環(huán)期間,有一緩沖器被判斷為準(zhǔn)備好,因?yàn)樵谌魏螘r(shí)候只能有一個(gè)緩沖器被指明成準(zhǔn)備好,任何以前準(zhǔn)備好的緩沖器需要退位。狀態(tài)VACATE=RDY通過設(shè)置它的狀態(tài)為VACANT而清除原來準(zhǔn)備好的緩沖器,并復(fù)位緩沖器指針為1,以使當(dāng)控制返回到PRES0狀態(tài)時(shí),所有緩沖器將作準(zhǔn)備好檢測(cè)。這樣做的原因是當(dāng)前的指針指出的是前面準(zhǔn)備好的緩沖器(為清除它的目的)并且沒有記錄我們想要的新準(zhǔn)備緩沖器指針。因此需要重新測(cè)試所有緩沖器。C.2.4.4分配顯示緩沖器指針顯示緩沖指針的分配或者直接從狀態(tài)DRQ(狀態(tài)USE_RDY)產(chǎn)生或經(jīng)狀態(tài)VACATE_DISP產(chǎn)生,此VACATEDISP清除舊顯示緩沖器的狀態(tài)。選擇顯示緩沖器是以標(biāo)記IN_USE,rdy_buf的值設(shè)置成零而指針復(fù)位為1以返回到狀態(tài)DRQ。而且,disp_buf給出所需指針而雙線接口線(disp_valid,drg_acc)相應(yīng)地被控制??刂品祷氐綘顟B(tài)DRQ僅因?yàn)樵跔顟B(tài)USE_RDY時(shí)不需要,在狀態(tài)TOKEN,F(xiàn)LUSE和ALLOC之間做出確定。C.2.4.5當(dāng)接收到PICTURE_END時(shí)的操作當(dāng)接收到PICTURE_END令牌時(shí),控制從狀態(tài)TOKEN傳送到狀態(tài)PICTURE_END。若指針沒有指向當(dāng)前到達(dá)緩沖器,則設(shè)置指向它以使它的狀態(tài)能被更新。假定out_acc_reg和en_full二者均為真,狀態(tài)可按如下說明被更新,否則控制維持在狀態(tài)PICTURE_END直到它們兩者為真。en_full信號(hào)由寫地址發(fā)生器提供,它表示交替緩沖器已交替。即最好一塊已成功寫入,因此,這是安全更新緩沖器的狀態(tài)。剛完成的緩沖器為判斷準(zhǔn)備好而測(cè)試,并根據(jù)測(cè)試結(jié)果給出狀態(tài)FULL或READY。若它是準(zhǔn)備好,rdy_buf給出它的指針值,set_la_ev信號(hào)(遲達(dá)到事件)設(shè)置為高(表示希望的顯示在時(shí)間上已超過解碼)。arr_buf的新值現(xiàn)在變?yōu)榱?,而且,若前面?zhǔn)備好的緩沖器需要狀態(tài)清除,則指針設(shè)置為指向那里,控制移到狀態(tài)VACAT_RDY。否則,指針復(fù)位為1,控制返回到主循環(huán)的開始。C.2.4.6當(dāng)接收到PICTURE_START時(shí)的操作(達(dá)到緩沖器的分配)當(dāng)PICTURE_START令牌在狀態(tài)TOKEN期間達(dá)到,標(biāo)記from_ps被設(shè)置,使基本狀態(tài)機(jī)改變循環(huán)以使訪問狀態(tài)ALLOC代替狀態(tài)TOKEN。狀態(tài)ALLOC涉及到分配一到達(dá)緩沖器(到達(dá)圖象數(shù)據(jù)能對(duì)它寫入)并經(jīng)緩沖器循環(huán)直到找到一個(gè)其狀態(tài)是VACANT。若out_acc_reg是高電平,僅分配一個(gè)緩沖器,從而它在數(shù)據(jù)雙線接口上輸出。相應(yīng)地,周期的循環(huán)將繼續(xù)直到這些情況確定。一旦找到合適的達(dá)到緩沖器,指針分配到arr_buf,它的狀態(tài)被標(biāo)記為IN_VSE。指針被設(shè)置為1,標(biāo)記from_ps被復(fù)位,并且狀態(tài)被進(jìn)一步設(shè)置到到NEW_EXP_TR。在圖象的指針上形成檢查(包含在緊跟后面的PICTURE_START后面的字中)以判斷是否它是與targ_ix相同(在裝配時(shí)指定的目標(biāo)指針),如果相同set_if+_ev(尋找事件指針)設(shè)置為高。3個(gè)狀態(tài)NEW_EXP_TR,SET_ARR_IX和NEW_PIC_NUM設(shè)置了新的希望的時(shí)間基準(zhǔn)和進(jìn)入數(shù)據(jù)的圖象號(hào)。這居中的狀態(tài)僅設(shè)置指針為arr_buf以使正確圖象號(hào)寄存器被更新(值得注意this_pnum亦被更新)。然后控制進(jìn)行到狀態(tài)OUTPUT_TAIL并輸出數(shù)據(jù)(呈現(xiàn)出適宜的雙線接口信號(hào))直到遇到一低的擴(kuò)展。此時(shí)主循環(huán)重新啟動(dòng),這意味著全部數(shù)據(jù)塊(64項(xiàng))輸出,其中對(duì)呈現(xiàn)標(biāo)記或顯示請(qǐng)求不測(cè)試。C.2.4.7當(dāng)接收到FLUSH時(shí)的操作在數(shù)據(jù)流中FLUSH令牌表示序列信息(呈現(xiàn)號(hào),圖象號(hào),rst_fld)將被復(fù)位。這僅發(fā)生在當(dāng)所有領(lǐng)先于FLUSH的數(shù)據(jù)已正確地處理,因此,需要接收一FLUSH去監(jiān)視所有緩沖器的狀態(tài)直到確認(rèn)所有幀已轉(zhuǎn)去顯示,即所有緩沖器除一個(gè)外都具有狀態(tài)EMPTY,另一個(gè)為IN_USE(作顯示緩沖器)。此時(shí),一個(gè)“新序列”能安全地使用。當(dāng)FLUSH令牌在狀態(tài)TOKEN內(nèi)檢查出。標(biāo)記from_f1被置位,使基本狀態(tài)機(jī)的循環(huán)改變,以使?fàn)顟B(tài)FLUSH代替狀態(tài)TOKEN而被訪問。狀態(tài)FLUSH依次檢驗(yàn)每個(gè)緩沖器的狀態(tài),等待它成為VACANT或IN_USE作為顯示。狀態(tài)機(jī)簡(jiǎn)單地周期循環(huán)直到條件為真,然后增值它的索引并重復(fù)處理直到全部緩沖器被訪問。當(dāng)最后緩沖器滿足這條件時(shí),呈現(xiàn)號(hào)、圖象號(hào)和所有時(shí)間基準(zhǔn)寄存器呈現(xiàn)出它們的復(fù)位值rst_fid被置1。標(biāo)記form_f1復(fù)位,正常主循環(huán)操作重新開始。C.2.4.8當(dāng)接收到TEMPORAL_REFERENCE時(shí)的操作當(dāng)遇到TEMPORAL_REFERENCE令牌時(shí),對(duì)H.261位形成檢查,若已置位,訪問4個(gè)狀態(tài)TEMP_REF0到TEMP_REF3。執(zhí)行如下操作TEMP_REF0temp_ref=in_data_reg;TEMP_REF1delta=temp_ref_exp_tr;index=arr_buf;TEMP_REF2exp_tr=delta+exp_tr;TEMP_REF3pic_num[i]=tnis_pnum+delta;index=1。C.2.4.9其它令牌和結(jié)尾狀態(tài)TOKEN除了在上面所述外所有情況下傳送控制給狀態(tài)OUTPUT_TALL,在此維持控制,直到遇到令牌的最后一個(gè)字(in_extn_reg為低),然后重新進(jìn)入主循環(huán)。C.2.5應(yīng)用注意事項(xiàng)C.2.5.1狀態(tài)機(jī)停止緩沖器管理器輸入這種需要重復(fù)地對(duì)圖象時(shí)鐘的異步定時(shí)事件請(qǐng)求作異步檢查,并顯示緩沖器。這些檢查中停止緩沖器管理器輸入的要求意味著當(dāng)連續(xù)提供數(shù)據(jù)到緩沖器管理器的輸入端時(shí),通過緩沖器管理器的數(shù)據(jù)率將受到限制。一個(gè)典型的狀態(tài)系列可以是PRES0、PRESl、DRQ、TOKEN、OUTPUT_TALL,除了OUTPUT_TALL之外的每一個(gè)都持續(xù)一個(gè)周期。這意味著對(duì)每個(gè)64數(shù)據(jù)項(xiàng)的塊將有3個(gè)周期的開銷。其間輸入被停止(在狀態(tài)PRSE0、PRSEl和DRQ期間)。因此,使寫速率減慢了3/64,或者說5%。當(dāng)狀態(tài)機(jī)的輔助分支在最壞條件下執(zhí)行時(shí),這個(gè)數(shù)有時(shí)可增加到13個(gè)周期的開銷。應(yīng)當(dāng)注意,如此大開銷僅適用每幀一次的情況。C.2.5.2在訪問期間中呈現(xiàn)號(hào)碼的特征C.2.3.2.4所示的方案所說明的bm_pres的特殊實(shí)施例意味著呈現(xiàn)號(hào)在VPI訪問期間空轉(zhuǎn)(free_runs)。如同得到訪問時(shí)那樣,放棄訪問時(shí)也需要呈現(xiàn)號(hào)相同,那么這可通過在得到訪問后讀呈現(xiàn)號(hào)及在正放棄訪問前寫回呈現(xiàn)號(hào)來實(shí)現(xiàn)。應(yīng)注意,這是異步的,所以它可以根據(jù)需要重復(fù)存取多次,以進(jìn)一步確保效率。C.2.5.3H.261時(shí)間基準(zhǔn)號(hào)模塊bm_tref(沒有顯示)應(yīng)當(dāng)包括在bntLogic中,H.261時(shí)間基準(zhǔn)值可通過直接從bmtref到bm_stus模塊輸入δ而被正確處理。如果幀總是按順序的,δ的輸入能被保持為零。C.3寫地址的產(chǎn)生C.3.1前言根據(jù)本發(fā)明的寫地址發(fā)生硬件的功能是為數(shù)據(jù)產(chǎn)生塊地址以寫回到緩沖器中。這考慮到緩沖器基地址,在流中表示的分量,宏塊中的垂直和水平采樣,圖象尺寸及編碼標(biāo)準(zhǔn)。數(shù)據(jù)以宏塊形式達(dá)到但必須存貯,所以可容易地檢索行以便顯示。C.3.2功能概況每當(dāng)一個(gè)新塊到達(dá)數(shù)據(jù)流時(shí)以數(shù)據(jù)令牌表示,寫地址發(fā)生器需要產(chǎn)生一個(gè)新的塊地址,并不需立即產(chǎn)生地址,因?yàn)閷?shí)際需要地址之前DRAM接口可以存貯多達(dá)64個(gè)數(shù)據(jù)字(在交替緩沖器中)。這意味著各種地址成分可加到連續(xù)周期中的運(yùn)行總數(shù)中,因此,不需要硬件乘法器。宏塊計(jì)數(shù)器功能受存儲(chǔ)關(guān)鍵的終端值及在寄存器文件中游程計(jì)數(shù)值的影響。在每個(gè)塊地址計(jì)算后對(duì)這些操作數(shù)比較及條件更新。考慮到顯示在圖161中圖象格式,希望地址序列可取自標(biāo)準(zhǔn)數(shù)據(jù)流和類似H.261形式的數(shù)據(jù)流,這如下顯示。值得注意,這格式并不真實(shí)符合H.261說明書,因?yàn)檫@些片不足夠?qū)?3個(gè)宏塊而不是11個(gè))而為了方便在此用了同樣的“半個(gè)圖象寬度”,且假設(shè)了序列是“H.261類型”。數(shù)據(jù)到達(dá)整個(gè)宏塊如例子所示的4∶2∶0,每個(gè)成份被存儲(chǔ)到指定緩沖器中它自己的區(qū)域內(nèi)。標(biāo)準(zhǔn)地址系列G00,001,00C,00D,100,200;002,003,00E,00F,101,201;004,005,010,011,102,202;006,007,012,013,103,203;008,009,014,015,104,105;00A,00B,016,017,105,205;018,019,024,025,106,107;01A,01B,026................080,081,08C,08D,122,222;082,083,08E,08F,123,223;H261型序列000,001,COC,000,100,200;002,003,00E,00F,101,201;004,005,010,011,102,202;018,019,024,025,106,107;01A,01B,026,027,107,207;01C,01D,028,029,108,208;030,031,03C,03D,10C,20C;032,033,03E,03F,10D,200;034,035,040,041,10E,20E;006,007,012,013,103,203;008,009,014,015,104,105;00A,00B,016,017,105,205;01E,01F,02A,02B,109,209;020,021,02C,02D,10A,20A;022,023,02E,02F,1OB,20B;036,037,042,043,10F,20F;038,039,044,045,110,210;03A,03B,046,047,111,211;048,049,054,055,112,21204A,048,056................06A,06B,076,077,11D,21D;07E,07F,08A,08B,121,221;080,081,08C,08D,122,222;U82,083,08E,08F,123,223;C.3.3結(jié)構(gòu)C.3.3.1接口C.3.3.1.1到緩沖器管理器的接口緩沖器管理器將數(shù)據(jù)和緩沖器索引直接輸出到寫地址發(fā)生器,這是在雙線接口的控制下實(shí)現(xiàn)的。在某些方法中,考慮把寫地址發(fā)生器塊作為緩沖器管理器的擴(kuò)充,因?yàn)閮烧叻浅>o密相連,而它們由兩個(gè)獨(dú)立(但相似的)時(shí)鐘發(fā)生器工作。C.3.3.1.2到dramif的接口寫地址發(fā)生器為DRAM接口提供數(shù)據(jù)和地址。兩者均有自己雙線接口,且dramif以不同的時(shí)鐘規(guī)范中使用它們中的每種。特別地,地址在Dramit中用時(shí)鐘計(jì)時(shí)同寫地址發(fā)發(fā)生器時(shí)鐘無關(guān),因此在輸出同步。C.3.3.1.3微處理器接口寫地址發(fā)生器使用3位微處理器地址空間加上8位數(shù)據(jù)總線和讀寫選通。有一單個(gè)選擇位用于寄存器存取。C.3.3.1.4事件寫地址發(fā)生器可形成5個(gè)不同事件。二個(gè)對(duì)應(yīng)于出現(xiàn)在數(shù)據(jù)流(hmbs和Vmbs)中的圖象尺寸信息,3個(gè)對(duì)應(yīng)于DEFINE_SAMPLING令牌(每個(gè)分量一個(gè)事件)。C.3.3.2基本結(jié)構(gòu)寫地址發(fā)生器的結(jié)構(gòu)示于waddrgen.sch中,它包括一數(shù)據(jù)通道,某些控制邏輯和窺測(cè)器及其同步化。C.3.3.2.1數(shù)據(jù)通道(bwadpath)在本文件的C.5節(jié)中說明了數(shù)據(jù)通路類型,包括18位加法器/減法器及寄存器文件(見C.3.3.4)并為在控制邏輯使用產(chǎn)生零標(biāo)記(根據(jù)加法器輸出)。C.3.3.2.2控制邏輯本發(fā)明的控制邏輯用于產(chǎn)生所有寄存器文件裝載的硬件驅(qū)動(dòng)信號(hào)。加法器控制信號(hào),雙線接口信號(hào)組成亦包括可寫控制寄存器。C.3.3.2.3探測(cè)器及其同步化在數(shù)據(jù)和地址端口均有高級(jí)探測(cè)器。探測(cè)器在數(shù)據(jù)通道內(nèi)被來自Zcells的高級(jí)探測(cè)器控制。地址在寫地址發(fā)生器時(shí)鐘和dramif的“clk”方式之間同步。Syncifs用在Zcell中,作為雙線接口信號(hào),簡(jiǎn)化同步器為地址用于數(shù)據(jù)道路中。C.3.3.3控制邏輯和狀態(tài)機(jī)C.3.3.3.1輸入/輸出塊(wainout)這部分包括輸入和2個(gè)輸出雙錢接口,還有輸入數(shù)據(jù)用(對(duì)令牌解碼)鎖存器及到達(dá)緩沖器索引(為4種方法解碼)。C.3.3.3.2二周期的控制塊(wafc)標(biāo)記fc(第一周期)保持在此并指示狀態(tài)機(jī)是否在一個(gè)二周期運(yùn)行的中間(即包括加的操作)。C.3.3.3.3分量計(jì)數(shù)(Wacomp)對(duì)每個(gè)分量中數(shù)據(jù)塊需要獨(dú)立地址,這塊根據(jù)輸入流中接收到的數(shù)據(jù)頭類型考慮保持當(dāng)前分量。C.3.3.3.4模塊0~3的控制(wa_nod3)當(dāng)為H.261數(shù)據(jù)流產(chǎn)生地址序列時(shí),需要沿屏幕(見C.3.2)用對(duì)半法數(shù)出宏塊的3行。這受到保持模塊0~3計(jì)數(shù)器的影響,且每次訪問一新宏塊行時(shí)它就增加。C.3.3.3.5控制寄存器(wauregs)模塊wa_uregs包括設(shè)定寄存器和編碼標(biāo)準(zhǔn)寄存器,后者從數(shù)據(jù)流裝載,設(shè)定寄存器用3位QCIF(1sb)及在數(shù)據(jù)流中希望的最大分量(位1和位2)。存取位亦駐留在這塊中(象通常那樣被同步),已停止位取自上層的下一級(jí)(waLogic),它是存取位和事件停止位的‘或’。微處理器地址解碼由塊wa_udeo完成,這個(gè)塊取讀和寫選通,選擇線以及地址總線的較低兩位。C.3.3.3.6控制狀態(tài)機(jī)(wastate)在這一塊中的邏輯被分成幾個(gè)明顯區(qū)域。狀態(tài)解碼,新狀態(tài)編碼,中間邏輯信號(hào)的求解,數(shù)據(jù)通路控制信號(hào)(驅(qū)動(dòng)a,驅(qū)動(dòng)b,裝載,加法器控制和選擇信號(hào)),多路開關(guān)控制,雙線接口控制和5個(gè)事件信號(hào)。C.3.3.3.7事件產(chǎn)生由于在輸入端得到某些令牌結(jié)果產(chǎn)生5個(gè)事件位。重要的是,在每種情況下,全部令牌在產(chǎn)生任何事件以前被接收,因?yàn)槭录?wù)子程序根據(jù)接收的新值執(zhí)行計(jì)算。由于這個(gè)原因,每一位在輸入到事件硬件之前對(duì)整個(gè)周期延遲。C.3.3.4寄存器地址變換在寫地址發(fā)生器部件中有兩個(gè)寄存器集,它們是位于標(biāo)準(zhǔn)單元部分的頂層設(shè)置類型寄存器及鍵孔數(shù)據(jù)通路寄存器。這些寄存器分別列在表C.3.1和C.3.2。表C.3.1頂層寄存器表C.3.2圖象格式化器地址發(fā)生器鍵孔表C.3.2圖象格式化器地址發(fā)生器鍵孔(續(xù))表C.3.2圖象格式化器地址發(fā)生器鍵孔(續(xù))這鍵孔孔寄存器主要分成二類,一類必須隨同圖象尺寸參數(shù)在任何地址計(jì)算之前裝載,另一類包括對(duì)全部各式各樣(水平和垂直)塊和宏塊計(jì)數(shù)的運(yùn)—行。圖象尺寸參數(shù)可響應(yīng)于寫地址發(fā)生器形成的任何中斷裝入,也就是當(dāng)任何圖象尺寸或采樣令牌出現(xiàn)在數(shù)據(jù)流時(shí)裝入,或,若圖象尺寸在接收數(shù)據(jù)流之前已知道,它們正好在復(fù)位之后寫入例如在C.13節(jié)中給予了范例設(shè)置,圖象尺寸參數(shù)寄存器在下節(jié)定義。C.3.4對(duì)寫地址發(fā)生器編程下面的數(shù)據(jù)通路寄存器在進(jìn)行地址計(jì)算之前須包含正確的圖象尺寸信息,它們?cè)趫D162中說明。1、WADDR_HALF_WIDTH_IN_BLOCKS它以塊定義了進(jìn)入圖象的半寬。2、WADDR_MBS_WIDE它以宏塊定義了進(jìn)入圖象的寬度。3、WADDR_MBS_HIGH它以宏塊定義了進(jìn)入圖象的高度。4、WADDR_LAST_MB_IN_ROW它定義了在一單一滿寬度的宏塊行中,最后一個(gè)宏塊的左上角的塊號(hào)。從最左宏塊的左上角從零開始?jí)K編號(hào),沿著幀隨每塊而增加,隨后也隨著宏塊行中下一行的塊而增加。5、WADDR_LAST_MB_IN_HALF_ROW這類似于前面的條目,它定義了在一半寬宏塊行中最后一個(gè)宏塊內(nèi)的左上角塊的塊號(hào)。6、WADDR_LAST_ROW_INMB它定義了在宏塊行中最后一行塊中的最左邊塊的塊號(hào)。7、WADDR_BLOCKS_PER_MB_ROW它定義了包括在一單一,全寬度宏塊行中的總塊數(shù)。8、WADDR_LAST_MB_ROW它定義了在圖象中最后宏塊中最左的宏塊左上塊的地址。9、WADDR_HBS它以塊定義了進(jìn)入圖象的寬度。10、WADDR_MAXHB它定義了在單個(gè)宏塊中一個(gè)塊行中最右邊塊的塊號(hào)。11、WADDR_MAXVB它以塊定義了單一宏塊的高度-1。另外,定義DRAM組織的寄存器必須被編程,它們是3個(gè)緩沖器基寄存器的n分量偏移寄存器。這里的n是數(shù)據(jù)流中所希望分量數(shù)(它可以在數(shù)據(jù)流中定義,最小為1,最大為3)。注意許多參數(shù)規(guī)定塊號(hào)或塊地址。這是因?yàn)橄M罱K地址為一個(gè)塊地址,且計(jì)算是基于累積的算法。圖162說明布局結(jié)構(gòu),產(chǎn)生下面寄存器值1)WADDR_HALF_WIDTH_IN_BLOCKS=0×162)WADOR_MBS_WIDE=0×163)WADDR_MBS_HIGH=0×124)WADDR_LAST_MB_IN_ROW=0×2A5)WADDR_LAST_MB_IN_HALF_ROW=0×146)WADDR_LAST_ROW_IN_MB=0×2C7)WADDR_BLOCKS_PER_MB_ROW=0×588)WADDR_LAST_MB_ROW=0×5D89)WADDR_HBS=0×2C10)WADDR_MAXVB=111)WADDR_MAXHB=1C.3.5狀態(tài)機(jī)的操作在緩沖器管理器的狀態(tài)機(jī)中有19種狀態(tài),詳述于表C.3.3。其相互聯(lián)系示于圖164并亦在特性說明bmlogia.M中作說明。表C.3.3寫地址發(fā)生器狀態(tài)C.3.5.1地址的計(jì)算寫地址發(fā)生器狀態(tài)機(jī)的主要部分沿圖164的左下邊說明。當(dāng)接收到數(shù)據(jù)令牌時(shí),狀態(tài)機(jī)從狀態(tài)IDLE移到狀態(tài)ADDR1。然后到狀態(tài)ADDR5,18位塊地址與雙線接口控制從狀態(tài)ADDR5被輸出。由狀態(tài)ADDR1直到ADDR5執(zhí)行的計(jì)算是BU_WADDR_SCRATCH=BU_BUFFERn_BASE+BU_COMPm_OFFSET;BU_WADDR_SCRATCH=BU_WADDR=SCRATCH+BU_WADDR_VMBADDR;BU_WADDR_SCRATCH=BU_WADDR-SCRATCH+BU_WADDR_HMBADDR;BU_WADDR_SCRATCH=BU+WADDR_SCRATCH+BU_WADDR_VBADDR;out_addr=BU_WADDR_SCRATCH+BU_WADDR_HB;所用寄存器如下定義1、BU_WADDR_VMBADDR宏塊行的最左宏塊的塊地址(左頂部塊),在宏塊中包括地址正在被計(jì)算的塊。2、BU_WADDR_HMBADDR宏塊列的頂部宏塊的塊地址(左頂部塊),在宏塊中包括地址正在被計(jì)算的塊。3、BU_WADDR_VBADDR在宏塊行內(nèi),塊行中最左邊塊的塊地址,在這些塊中包括它的地址正在被計(jì)算的塊。4、BU_WADDR_HB在宏塊中的地址正在被計(jì)算的塊的水平塊號(hào)。5、BU_WADDR_SCRATCH用來暫時(shí)存儲(chǔ)中間結(jié)果的暫時(shí)寄存器??紤]圖163,例如采取地址0×62的塊的計(jì)算,下面的計(jì)算次序?qū)l(fā)生SCRATCH=BUFFERn_BASE+COMPm_OFFSET;(assume0)SCRATCH=0+0×5D8;SCRATCH=0×5D8+0×28;SCRATCH=0×600+0×2C;塊地址=0×62C+1=0×62D;各種寄存器的內(nèi)容在圖中被說明。C.3.5.2新屏幕位置參數(shù)的計(jì)算當(dāng)?shù)刂芬演敵?,狀態(tài)機(jī)為了更新如上所述各種屏幕位置參數(shù)連續(xù)執(zhí)行計(jì)算。狀態(tài)HB及MBO直到MB6進(jìn)行計(jì)算,在某些點(diǎn)傳送控制給狀態(tài)DATA,數(shù)據(jù)令牌的提示從此狀態(tài)被輸出。這些狀態(tài)成對(duì)進(jìn)行,第一對(duì)計(jì)算當(dāng)前計(jì)數(shù)和它的最終值之間的差,然后產(chǎn)生零標(biāo)記。第二對(duì)復(fù)位寄存器或加固定(根據(jù)由屏幕尺寸而得來的設(shè)置寄存器中的值)偏置。在每種情況中,若計(jì)算已達(dá)到它最終值(即置位零標(biāo)記),控制繼續(xù)往下到狀態(tài)“MB”序列,否則,認(rèn)為所有順序計(jì)算正確(準(zhǔn)備為下一地址計(jì)算)且控制轉(zhuǎn)到狀態(tài)DATA。注意所有涉及加法與減法的狀態(tài)化費(fèi)二個(gè)周期完成(允許用標(biāo)準(zhǔn)的脈動(dòng)進(jìn)位加法器),這受標(biāo)記fa(第一周期)的使用的影響,此標(biāo)記使加法器狀態(tài)在1和0之間改變。所有地址計(jì)算和屏幕位置計(jì)算狀態(tài)假定適合雙線接口情況時(shí)允許數(shù)據(jù)輸出。C.3.5.2.1對(duì)標(biāo)準(zhǔn)(MPEG型)序列的計(jì)算工作順序如下(其中零標(biāo)記根據(jù)加法器輸出)狀態(tài)HB和MBOscratch=hb-ma×hb;if(2)hb=0;else(hb=hb+1new_state=DATA;)statesMB1andMB2scratch=vb_addr-last_row_in_mb;if(2)vb_addr=0;else(vb_addr=vb_addr+width_in_blocks;new_state=DATA;)statesMB3andMB4scratch=hmb_addr-last_mb_in_row;if(2)hmb_addr=0;else(hmbaddr=hmb_addr+maxhb;new_state=DATA;)statesMB5andMB6scratch=vmb_addr-lastmbrow;if(!z)vmb_addr=vmb_addr+blocks_per_mb_row;(在PICTURE_START令牌被檢測(cè)之后復(fù)位Vmb-addr,而不是當(dāng)圖象的結(jié)束從計(jì)算推出時(shí))C.3.5.2.2對(duì)H.261序列的計(jì)算對(duì)H.261計(jì)算的序列同狀態(tài)MB4標(biāo)準(zhǔn)序列不同狀態(tài)HB和MBO-如上狀態(tài)MB1和MB2-如上狀態(tài)MB3和MB4scratch=hmb_addr-last_mb_in_row;if(z&(mod3==2))/*endofsliceonrightofscreen*/(hmb_addr-0;new_state-MB5;)elseif(z)/*endofrowonrightofscreen*/(hmb_addr=half_width_in_blocks;new_state=MB4A;)elsescratch=hmb_addr-last_mb_in_half_row;new-state=MB4B;stateMB4Avmb_addr=vmb_addr+blocks_per_mb_row;new_state=DATA;state(MB4)andMB4B(scratch=hmb_addr-ladt_mb_in_half_row;)if(zG(mod3==2))/*endofsliceonleftofscreen9*/(hmb_addr==hmb_addr+maxhb;new_state=MB4C;}elseif(z)/*endofrowonleftofscreen*/(hmb_addr=0;new_state=MB4A;}else{hmb_addr=hmb_addr+maxhb;new_state=DATA;statesMB4CandMB4Dvmb_addr=vmb_addr-blocks_per_mb_row;vmb_addr=vmb_addr-blocks_per_row;new_state=DATAstatesMB5andMB6asaboveC.3.5.3根據(jù)PICTURE_START令牌的操作當(dāng)接收到令牌PICTURE_START時(shí),控制傳到狀態(tài)PIC_ST1,在那里Vb_addr寄存器(BU_WADDR_VBADDR)復(fù)位成零。狀態(tài)PIC_ST2及PIC_ST3的每個(gè)被訪問,每個(gè)分量一次,分別復(fù)位hmb_addr和Vmb_addr。然后控制經(jīng)狀態(tài)0UTPUT_TAIL返回到IDLE。C.3.5.4根據(jù)DEFINE_SAMPLING令牌操作當(dāng)接收到令牌DEFINE_SAMPLING時(shí),分量寄存器用輸入數(shù)據(jù)的有效性最差的2位裝載。此外經(jīng)狀態(tài)HSAMP和VSAMP,maxhb和maxvb寄存器對(duì)分量裝載。而且,適當(dāng)?shù)亩x采樣事件位被觸發(fā)(經(jīng)一個(gè)周期延遲以允許寫入全部令牌)。C.3.5.5HORIZONTAL_MBS和VERTICAL_MBS的操作當(dāng)每個(gè)HORIZONTAL_MBS和VERTICAL_MBS到達(dá)時(shí),包含在令牌中的14位值,在兩個(gè)周期中寫入到相應(yīng)的寄存器中。相關(guān)事件位被觸發(fā),延遲了一個(gè)周期。C.3.5.6其它令牌CODING_STANDARD令牌被檢測(cè)并把輸入數(shù)據(jù)寫到頂層BU_WADDR_COD_STD寄存器,這數(shù)據(jù)被解碼,nh261標(biāo)記(不是H.261)被硬件化到緩沖器管理九所有其它令牌使控制移到狀態(tài)OUTPUT_TAIL,在那里接收數(shù)據(jù)直到令牌結(jié)束。應(yīng)注意,它實(shí)際上不輸出任何數(shù)據(jù)。C.4讀地址發(fā)生器C.4.1概述本發(fā)明的讀地址發(fā)生器由4個(gè)狀態(tài)機(jī)/數(shù)據(jù)通路塊組成,第一個(gè)“dline”產(chǎn)生行地址并把這些地址分配給其它3個(gè)(每個(gè)分量一個(gè))相同的頁/塊地址發(fā)生器,“dramatlS”。所有塊通過雙線接口連結(jié),操作方式包括所有隔行/逐行相結(jié)合,第一場(chǎng)上面/下面結(jié)合及在上面/下面/上下面幀起動(dòng)相結(jié)合。表C.3.4顯示了dispaddr控制寄存器的名字,地址和復(fù)位狀態(tài),而C.13節(jié)給出了兩種地址發(fā)生器編程例子。C.4.2行地址發(fā)生器(dline)這塊計(jì)算每個(gè)分量的行啟動(dòng)地址。表C.3.4顯示了在dline中18位的數(shù)據(jù)通路寄存器。注意,DISLIegistet_name同ADDK_registez_name,DISD_name寄存器之間差別僅在于dispaddr中,意味著寄存器針對(duì)于將被讀出DRAM的顯示區(qū)域。ADDR_name意味著寄存器描述某些有關(guān)外部緩沖器結(jié)構(gòu)的事情。操作dline的基本操作是(忽略了所有方式重復(fù)等)if(vsync_start)/*firstactivecycleofvsync*/(comp=0DISPVBCNTCOMP[comp]=0;LINE[comp]=BUFFERBASE[comp]+0;LINE[comp]=LINE[comp]+DISPCOMPOFFSET[comp];while(VB_CNT_COMP[comp]}<DISP_VBS_COMP[comp](while(linecount[comp]<8)((while(comp<3)(-OUTPUTLINE[comp]todramctl[comp]line[comp]=LINE[comp]+ADDR_HBS_COMP[comp];comp=comp+1;)line_count[comp]=line_count[comp]+1;)VB_CNT_COMP[comp]=VB_CNT_COMP[comp]+1;line_count[comp]==0;))表C.3.4Dispaddr數(shù)據(jù)通路寄存器表C.3.4Dispaddr數(shù)據(jù)通路寄存器(續(xù))C.4.3Dline控制寄存器上面操作由dispaddr控制寄存器修改。這些寄存器如下顯示在表C.4.3中。表C.4.3控制寄存器Dispaddr控制寄存器C.4.3.1LINELIN_LAST_ROW[分量]這3個(gè)寄存器為每個(gè)分量確定所讀最后塊行的行數(shù),因此,讀窗口的高度可以是任意行數(shù)。這是一后備特征,因?yàn)榇翱诘捻?、左和右邊沿在塊邊界上,且輸出控制器能剪裁(丟棄)超過的行。C.4.3.2DISPADDR_ACCESS這是為整個(gè)dispaddr的訪問位,在這個(gè)位置上寫“1”時(shí),dispaddr與時(shí)鐘同步停止。從訪問位讀回值將保持為“0”直到dispaddr已安全停止。達(dá)到這個(gè)狀態(tài)后,對(duì)所有dispaddr寄存器執(zhí)行異步upi訪問是安全的。需注意upi實(shí)際上被數(shù)據(jù)通路寄存器鎖定,直到訪問位為“1”。為了在不中斷當(dāng)前顯示或數(shù)據(jù)通路操作的情況下完成對(duì)dispaddr的訪問,僅在下面情況下訪問釋放訪問。停止僅在數(shù)據(jù)通路已完成它當(dāng)前二個(gè)同期操作(如果它做過一個(gè)),來自輸出控制器的“安全信號(hào)”是高電平時(shí)允許訪問。這信號(hào)代表在屏幕上位于顯示窗口的區(qū)域,在輸出控制器內(nèi)被編程(非dispaddr)。注意因此在試圖對(duì)dispaddr獲得訪問之前,需要對(duì)輸出控制器編程。啟動(dòng)存取僅在“sare”為高或在vsync期間被釋丸這確保顯示不會(huì)在太接近有效窗口處起動(dòng)。這方案使控制軟件能夠請(qǐng)求訪問,詢問直到顯示,結(jié)束修改dispaddr及釋放訪問。若軟件太慢,直到vsyng后才釋放存取位,dispaddr將直到下個(gè)安全周期才啟動(dòng)。邊界顏色將在這“l(fā)ost(被丟棄)”圖象期間顯示(不是垃圾)。C.4.3.3DISPADDR_CTL0[7∶0]當(dāng)讀下面說明時(shí),了解隔行數(shù)據(jù)和隔行顯示之間差別是重要的。隔行數(shù)據(jù)有二種形式。頂層寄存器支持場(chǎng)一圖象(每個(gè)緩沖器包括一個(gè)場(chǎng))和幀圖象(每個(gè)緩沖器包括一完全幀一隔行或不隔行)。DISPADDR_CTL0[7∶0]包括如下控制位SYNC_MODE[1∶0]用隔行顯示,涉及頂部和底部場(chǎng)的VSYNC瞰fielLinfo管腳區(qū)分。關(guān)于這點(diǎn),fielLinfo=HIGH意味頂場(chǎng)。這二個(gè)控制位確定哪個(gè)Vsynosdispaddr將從緩沖器管理器請(qǐng)求一新的顯示緩沖器。因此,使緩沖器中場(chǎng)(若數(shù)據(jù)是隔行的)與顯示器中的場(chǎng)同步。0在頂場(chǎng)的新顯示緩沖器1底場(chǎng)2兩場(chǎng)3兩場(chǎng)在啟動(dòng)時(shí),dispaddr在每一vsyno向緩沖器管理器請(qǐng)求一緩沖器。dispaddr將接收一個(gè)零(無顯示)緩沖器直到緩沖器準(zhǔn)備好。當(dāng)它最后得到一有效緩沖器指針時(shí),dispaddr并不知道它在顯示器的什么地方。因此,需要使顯示啟動(dòng)與正確的vsyno同步。READ_START在隔行顯示啟動(dòng)時(shí),這位確定顯示將實(shí)際從哪個(gè)vsync開始。而在接收到顯示緩沖器指針后,dispaddr可“sitout”當(dāng)前vsyno,為了對(duì)齊顯示器場(chǎng)同緩沖器中場(chǎng)。INTERLACED/PROGRESSIVE0逐行1隔行在逯行方式中,讀出緩沖器顯示區(qū)域的所有行。而在隔行方式中,僅讀間隔行,讀起始第一行還是第二行由field_info確定,注意對(duì)于(隔行)場(chǎng)圖象,系統(tǒng)希望從每個(gè)緩沖器讀所有行,所以這位的設(shè)定將是逐行的。fielLinfo和第一/第二行起始閫的映象可以通過lsb_invert反相(這個(gè)命名是因歷史原因)。LSB_INVERT當(dāng)被設(shè)置時(shí),這位反相由行計(jì)數(shù)器看到field_info信號(hào)。因此,讀可以在一幀的正確行上啟動(dòng)并對(duì)顯示器調(diào)整。不管編碼器采用的慣例,顯示器或頂層寄存器。LINE_RPT[2∶0]當(dāng)設(shè)置時(shí),每位使相應(yīng)分量的行讀二次(位0影響分量0等),這形成垂直過采樣(upsampling)的第一部分。它用于把QFIF轉(zhuǎn)換成601所需的8次色度過采樣(upsampling)。COMPOHOLD這位用來對(duì)分量0所讀的行數(shù)與分量1和2所讀行數(shù)的比例編程(同顯示相反)。0行數(shù)相同,即在緩沖器中的4∶4∶4數(shù)據(jù)1∶2倍于分量0行數(shù),即4∶2∶0頁塊地址發(fā)生器(dramctls)當(dāng)傳遞一行地址時(shí),這些塊產(chǎn)生一系列頁/行地址和塊,以被按行讀。通常,假設(shè)8塊為最小頁寬度,而輸出包括一個(gè)頁地址,一個(gè)3位的行數(shù),一個(gè)3位塊啟動(dòng)及一個(gè)3位塊停止地址(行號(hào)由dline計(jì)算并不加修改地通過dramctls)。因此,為了從左邊第3塊開始在讀出來自頁0×aa的5行的48個(gè)象素(沿任意行的任意點(diǎn)),傳到DRAM接口的地址將是Page=0×aaLine=5Blockstart=2Blockstop=7這3個(gè)裝置的每個(gè)具有5個(gè)數(shù)據(jù)通路寄存器。這些示于表C.3.4中.每個(gè)dramat1基本特性是Bloakstart=2Blookstop=7while(true){CNT_LEFT=0GET_A_NEW_LINE_ADORESSfromdline;BLOCK_ADDR=input_block_addr+0;PAGE_ADDR=input_page_addr+0;CNT_LEFT=DlSP_HBS+0;while(CNT_LEFT>BLOCKS_LEFT){BLOCKS_LEFT=8-BLOCK_ADDR;→outputPAGE_ADDR.start=BLOCK_ADDR.stop=7.PAGE_ADDR=PAGE_ADDR+1;BLOCK_ADDR=0;CNT_LEFT=CNT_LEFT-BLOCKS_LEFT;}FLastPageofline*/CNT_LEFT=CNT_LEFT+BLOCK_ADDR;CNT_LEFT=CNT_LEFT-1;→outputPAGE_ADDR.start=BLOCK_ADDR.stop=CNT_LEFT}表C.3.5Dramotl(0,2,&2)數(shù)據(jù)通路寄存器表C.3.5Dramatl(0,2,&2)數(shù)據(jù)通路寄存器(續(xù))編程下面15個(gè)dispaddr寄存器必須在操作開始之前被編程。BUFFER_BASE0.1.2DISP_COMP_OFFSET0.1.2DISP_VBS_COMP0.1.2ADDR_HBS_COMP0.1.2DISP_COMP0.1.2_HBS使用dispaddr控制寄存器的復(fù)位狀態(tài)將給出非同步行重復(fù)的4∶2n隔行顯示,并在頂場(chǎng)開始(field_info=HIGH)。圖159“包括SIF(22×18宏塊)圖象的緩沖器0”顯示了一個(gè)對(duì)SIF圖象的典型的緩沖器設(shè)置。(C.13節(jié)更詳細(xì)地涉及本例)。注意,在這個(gè)例子中,DISP_HBS_COMPn等于ADDR_HBS_COMPn。類似地,垂直寄存器DISLVBS_COMPn和相當(dāng)?shù)膶懙刂钒l(fā)生器寄存器相等,即所讀的區(qū)域是全部緩沖區(qū)。用讀地址發(fā)生器形成窗口??梢跃幊痰刂贩峙湟允顾軆H讀緩沖器的一部分(窗口)。窗口的大小通過寄存器DISP_HBS,DISP-VBS,cOMPONENT_OFFSET及LINES_IN_LAST_ROW對(duì)每個(gè)分量編程。圖160“具有顯示窗口的SIF分量0”。顯示了這是如何做到的。(僅對(duì)分量0)。在本例子中,寄存器將設(shè)置為BUFFER_BASEO=O×OODISP_COMP_OFFSETO=O×2DDISP_VBS_COMPO=O×22ADDR_HBS_COMPO=O×2CDISP_HBS_COMO=O×2A注意·窗口僅可以在塊邊界開始和結(jié)束。在本例中我們使LINELIN_LAST_ROW等于7(意味全部8)?!け纠?∶4∶4數(shù)據(jù)外是不切實(shí)際的。為了對(duì)應(yīng),對(duì)其它2個(gè)成份的窗口邊緣不能在塊邊界上?!と艚邮盏臄?shù)據(jù)不是4∶4∶4,彩色空間轉(zhuǎn)換器將不用,這意味著這些讀窗口方法同非采樣器(upsamplers)一起必須被編程以完成它。C.5地址生成數(shù)據(jù)通路在dispaddr和waddrgen中使用的數(shù)據(jù)通路在結(jié)構(gòu)和寬度上(18位)是相同的,僅是寄存器的數(shù)量、某些屏蔽及返回到狀態(tài)機(jī)的標(biāo)記有所不同。圖165顯示了一部分的電路(thecircuitofoneslice)“數(shù)據(jù)通路的部分(SliceofDatapath)”。寄存器被獨(dú)立賦值,去驅(qū)動(dòng)A或B總線,且在控制器中,它們的使用(分配)被最優(yōu)化。所有寄存器可以從C總線裝載。然而,不是所有“裝載”信號(hào)都被驅(qū)動(dòng)。涉及加法器的所有操作包含二個(gè)周期,以允許加法器具有普通脈動(dòng)進(jìn)位。圖166,“數(shù)據(jù)通路的二個(gè)周期操作”顯示了被裝回“A”總線寄存器的二個(gè)寄存器的二個(gè)周期和的時(shí)序。在數(shù)據(jù)通路中各種標(biāo)記被“Ph0”化,以便產(chǎn)生C碼。同樣原因,數(shù)據(jù)通路方案的結(jié)構(gòu)稍有例外,所有寄存器(在A和B總線上)都在一單一塊中,這塊省去了在單元中的組合通路,因此可使C碼能較好地生成。為對(duì)數(shù)據(jù)通路獲得upi訪問,必須設(shè)置訪問位,因?yàn)槿魺o此訪因?yàn)槿舸嗽L問位upi將被鎖除。upi訪問不同于讀和寫·寫當(dāng)訪問位被設(shè)置時(shí),全部裝載信號(hào)無作用。3字節(jié)編址寫選通的一個(gè)驅(qū)動(dòng)寄存器之一的適當(dāng)字節(jié),upi數(shù)據(jù)總線垂直向下經(jīng)過數(shù)據(jù)通路(被復(fù)制,2-8-8位),18位寄存器就像寫3個(gè)獨(dú)立字節(jié)那樣被寫?!ぷx這使用A和B總線完成。再一次,訪問位必須被置位。已編址寄存器被驅(qū)動(dòng)到A或B總線上,且upi字節(jié)從相關(guān)總線上選取一個(gè)字節(jié),并驅(qū)使它到upi總線上。因?yàn)殡p周期數(shù)據(jù)通路操作需要A和B總線保持它們的值(且upi訪問中斷這些),訪問必須僅在任何數(shù)據(jù)通路操作開始之前通過控制狀態(tài)機(jī)給定。在二個(gè)地址發(fā)生器中的所有數(shù)據(jù)通路寄存器通過一9位寬的鎖眼在頂層地址被編址,0×28(msb)和0×29(1sb)對(duì)鍵孔,而0×2A對(duì)數(shù)據(jù)。此鍵孔地址在表C.11.2給出。注意1)所有在地址發(fā)生器(dispaddr和waddrgen)中的地址寄存器都包括塊地址,象素地址從不使用,而包括行地址的寄存器只有3個(gè)LINES_IN_LAST_ROW寄存器。2)某些寄存器在地址發(fā)生器間被復(fù)制,例如,BUFFER_BASEO出現(xiàn)在為dispaddr和waddrgen的地址空間。這些是二個(gè)獨(dú)立的寄存器,它們均需要被裝載,這能夠顯示窗口(僅讀顯示存儲(chǔ)器的一部分),并易于顯示3分量視頻之外的格式。C.6DRAM接口C.6.1概述在本發(fā)明中,空間解碼器、時(shí)間解碼器和視頻格式器均包含用特殊芯片的DRAM接口塊。在所有這3種設(shè)備中,DRAM接口的作用是通過由地址發(fā)生器提供的塊地址把數(shù)據(jù)從芯片傳送到外部DRAM和從外部DRAM到芯片。典型地說,DRAM接口由時(shí)鐘操作,此時(shí)鐘與二個(gè)地址發(fā)生器都是異步的,與數(shù)據(jù)傳送的各種塊時(shí)鐘也異步,然而,這種異步是容易管理的,因?yàn)闀r(shí)鐘大致在同一頻率工作。數(shù)據(jù)通常在DRAM接口和64字節(jié)塊中的芯片的其余部分之間傳送(在時(shí)間譯碼器中預(yù)測(cè)數(shù)據(jù)是唯一例外)。傳送的產(chǎn)生依靠稱為“交替緩沖器”的裝置。這實(shí)質(zhì)上是一對(duì)在雙緩沖器配置中工作的RAMS,且DRAM接口使一個(gè)RAM填滿或空,而這時(shí)芯片的另一部分使另一個(gè)RAM為空或填滿。從地址發(fā)生器攜帶一個(gè)地址的獨(dú)立總線同每個(gè)交替緩沖器相聯(lián)系。每個(gè)芯片有4個(gè)交替緩沖器,但這些交替緩沖器的功能在每種情況下是不同的。在空間譯碼器中,一個(gè)交替緩沖器被用來向DRAM傳送編碼數(shù)據(jù),另一個(gè)從DRAM讀編碼數(shù)據(jù),第3個(gè)向DRAM傳送令牌化的數(shù)據(jù),第4個(gè)是從DRAM讀令牌化數(shù)據(jù)。在時(shí)間譯碼中,一個(gè)交替緩沖器被用來給DRAM寫內(nèi)部或預(yù)測(cè)圖象數(shù)據(jù),第二個(gè)從DRAM中讀內(nèi)部或預(yù)測(cè)圖象數(shù)據(jù),其它二個(gè)是在讀前一個(gè)和后一個(gè)預(yù)測(cè)數(shù)據(jù)。在視頻格式器中,一個(gè)交替緩沖器用來向DRAM傳送數(shù)據(jù),其它3個(gè)是用來從DRAM中讀數(shù)據(jù),對(duì)每個(gè)亮度(Y),紅色差數(shù)據(jù)和藍(lán)色差數(shù)據(jù)(分別為cr和cb)用一個(gè)交替緩沖器。一般的DRAM接口的工作在空間譯碼器文件中說明。下面部分根據(jù)本發(fā)明對(duì)DRAM接口的特點(diǎn)加以說明,特別對(duì)視頻格式器的特點(diǎn)給予說明。C.6.2視頻格式器DRAM接口在視頻格式器中,數(shù)據(jù)以塊寫到外部DRAM中,但以光柵次序讀出。對(duì)寫而言,同已經(jīng)說明的空間譯碼器完全相同,而關(guān)于讀稍復(fù)雜些。在視頻格式器外部DRAM中的數(shù)據(jù)被組織好,以使至少8個(gè)數(shù)據(jù)塊被安排進(jìn)一頁。這8個(gè)塊是8個(gè)連續(xù)的水平塊。當(dāng)柵格化時(shí),需從這8個(gè)連續(xù)塊的每一個(gè)中讀出8個(gè)字節(jié),并寫到交替緩沖器中(即,8個(gè)塊的每個(gè)中的同一行)??紤]頂行(假設(shè)一個(gè)字節(jié)寬度接口),x地址(3個(gè)LSBS)被設(shè)置為零,同樣Y地址(3MSBS)也被設(shè)置為零。然后,每當(dāng)開始8字節(jié)的每個(gè)被讀出時(shí)x地址就增加。此時(shí),地址的頂部(位6及above_Lsb=bito)被增加,且x地址(3LSBS)置位為零。這個(gè)過程被重復(fù),直到64字節(jié)讀完。對(duì)于通向外部DRAM的具有16或32位寬的接口,x地址只是增加2或4,而不是1。地址發(fā)生器能發(fā)出信號(hào)通知DRAM接口少于64字節(jié)應(yīng)被讀出(這在光柵行的開始和結(jié)束時(shí)可能需要),盡管通常讀出8的倍數(shù)。這通過使用啟動(dòng)和停止值得到。啟動(dòng)值被用于地址的頂部(位6及6位以上),而停止值同這個(gè)啟動(dòng)值比較,并產(chǎn)生一個(gè)指示何時(shí)應(yīng)停止讀的信號(hào)。C.7垂直過采樣C.7.1前言在其輸入端對(duì)一種彩色分量的象素進(jìn)行光柵掃描后,根據(jù)本發(fā)明的垂直過采樣器能提供一個(gè)2倍高度的輸出掃描。方式選擇允許用多種方式形成輸出象素值。C.7.2端口輸入雙線接口·in_valid·in_accept·in_data[7∶0]·in_lastpel·in_lastline輸出雙線接口·out_valid·out_accept·out_data[9∶0]·out_lastmode[2∶0]nupdata[7∶0],upaddr,upsel[3∶0],uprstr,upwstrramtesttdin,tdout,tpho,tckm,tckspho,ph1,notrstoC.7.3方式通過輸入總線mode[2∶0]選擇方式方式寄存器中值1和7是不用的上述方式中的每一種中,輸出象素用10位的值而不是用字節(jié)表示。在這塊中不發(fā)生舍入和截?cái)?。為使用相同范圍,在需要的地方,?shù)值被向左移。C.7.3.1方式0Fifo這個(gè)塊僅僅作為Fifo一個(gè)存貯器。輸出與輸出象素?cái)?shù)完全相同。這值向左移2。C.7.3.2方式2重復(fù)輸入掃描中的每行被重復(fù)以產(chǎn)生一個(gè)2倍高度的輸出掃描。象素值被再次向左移2。A->ABACBDBCCDDC.7.3.3方式4下面(Lower)每個(gè)輸入行產(chǎn)生2個(gè)輸出行,在這“Lower”方式中,這兩行中的第二行(在顯示中下面的一行)同輸入行相同。這一對(duì)的第一行是當(dāng)前入行和前面輸入行的平均。如果是第一個(gè)輸入行,沒有前面的行可以使用,輸入行被重復(fù)。當(dāng)色度采樣與降低的亮度采樣是在同一位置時(shí),應(yīng)選擇這種模式。A->ABAC(A+B)/2DB(B+C)/2C(C+D)/2DC.7.3.4方式5上邊(upper)類似于“下面(Lower)方式”,但在這種情況下輸入行形成輸出對(duì)上面的行,下面的行是相鄰輸入行的平均。最后的輸出行是最后輸入行的重復(fù)。當(dāng)色度采樣同upper亮度采樣在同一位置時(shí),應(yīng)選擇這種模式。A->AB(A+B)/2CBD(B+C)/2C(C+D)/2DDC.7.3.5方式6中心(central)這種“Central”方式相應(yīng)于色度采樣位于亮度采樣間的中間的情況。為了使輸出色度象素與亮度象素在同一位置。使用了權(quán)重平均以形成輸出行。A->AB(3A+B)/4C(A+3B)/4D(3B+C)/4(B+3C)/4(3C+D)/4(C+3D)/4DC.7.4它如何工作有二種行存貯,想像它們被指定為“a”和“b”。在“FIFO”和“重復(fù)”方式中,僅使用行存貯“a”。每個(gè)存貯器可容納多達(dá)512象素的行(垂直上采樣應(yīng)該在水平上采樣前完成),在“FIFO”方式中,行的長(zhǎng)度不受限制。輸入信號(hào)in_Lastpel和in_LastLine用來表示輸入行的結(jié)束和圖象的結(jié)束。In_Lastpel在每行的最后象素出現(xiàn)時(shí)應(yīng)為高電平。In_LastLine的變高應(yīng)該同圖象的最后一行的最后象素的出現(xiàn)相一致。輸出信號(hào)out_Last在每個(gè)輸出行的最后象素出現(xiàn)時(shí)為高電平。在“重復(fù)”方式中,每行被寫入存貯器“a”。然后這行被讀出2次。當(dāng)它第二次被讀出時(shí),下一行可開始被寫入。在“下面”,“上面"和“中心”方式,行被輪流寫入存貯器“a”或“b”。圖象的第一行總是被寫入存儲(chǔ)器“a”。2個(gè)小狀態(tài)機(jī),每一存貯器一個(gè)記住每個(gè)存貯內(nèi)容是什么,以及哪個(gè)輸出行正被形成。從這些狀態(tài)產(chǎn)生了到行存貯器RAM去的讀和寫要求,以及確定何時(shí)下一行可疊寫于當(dāng)前數(shù)據(jù)之上的信號(hào)。當(dāng)寫in-Lastpel為高電平時(shí),寄存器(Lastaddr)存貯寫地址,從而為輸出行的形成提供了行的長(zhǎng)度。C.7.5UPI這塊包括2個(gè)512×8位的RAM陣列,它們可通過微處理機(jī)接口用典型方法被訪問。不存在具有微處理器訪問的寄存器。C.8水平過采樣器C.8.1概述在本發(fā)明中,頂層寄存器包括3個(gè)相同的每個(gè)彩色分量一個(gè)的水平過采樣器。這3個(gè)都獨(dú)立控制,因此,在此只需說明一個(gè)。從用戶觀點(diǎn)看,唯一的不同是每個(gè)水平過采樣器被變換到存儲(chǔ)器映象表中一個(gè)不同的地址集。水平過采樣執(zhí)行聯(lián)合復(fù)制和濾波操作。一共有4種工作方式表C.711水平過采樣方式C.8.2水平過采樣器的使用每個(gè)水平過采樣器的地址變換圖由25個(gè)單元組成,對(duì)應(yīng)于12個(gè)13位系數(shù)寄存器和一個(gè)2位的方式寄存器。寫到方式寄存器的數(shù)決定了工作方式,如在表C.7.1中說明的。根據(jù)方式可使用某些或全部系數(shù)寄存器。相應(yīng)的FIR濾波器在下面說明。根據(jù)工作方式,輸入Xn在1個(gè)、2個(gè)或4個(gè)時(shí)鐘周期內(nèi)保持恒定。對(duì)每種方式被編程的實(shí)際系數(shù)如下表C.7.2方式1的系數(shù)表C.7.3方式2的系數(shù)表C.7.4方式3的系數(shù)在某一特定模式中不被使用的系數(shù),在以那種模式工作是不需編程。為了得到均勻?yàn)V波,每行的第一個(gè)和最后一個(gè)象素在濾波前被重復(fù)。例如,經(jīng)過2次過采樣后,每行的第一個(gè)和最后一個(gè)象素重復(fù)4次而不是2次。因?yàn)樵跒V波器中剩余的數(shù)據(jù)在每行末被丟棄,輸出的象素仍然總確切地為輸入數(shù)據(jù)流中數(shù)的一倍、二倍或四倍。根據(jù)系數(shù)的值,輸出采樣或者同輸入采樣一起放置或從輸入采樣移走。下面是在某些采樣方式中系數(shù)的某些舉例值?!?”表示系數(shù)值是“無關(guān)緊要的”。全部值為十六進(jìn)制的。表C.7.5采樣系數(shù)C.8.3水平過采樣的說明水平過采樣的數(shù)據(jù)通路在圖168中說明。對(duì)x4過采樣情況,其工作概況如下。此外,x2過采樣和x1濾波(方式2和1)簡(jiǎn)并為這種情況旁路(方式0)整個(gè)濾波器,數(shù)據(jù)從輸入鎖存器經(jīng)最后的多路分配器直通到輸出鎖存器如下說明。1)當(dāng)有效數(shù)據(jù)被鎖存在輸入鎖存器(“L”)中,它保持4個(gè)時(shí)鐘周期。2)每個(gè)系數(shù)寄存器(表示成“COEFF”)用一個(gè)時(shí)鐘周期被順序多路進(jìn)入乘法器,同時(shí)4個(gè)流水線寄存器(表示成“PIPE”)的2個(gè)裝置被計(jì)時(shí)。因此,對(duì)輸入數(shù)據(jù)Xn,第一管道用值c00.Xn,c01.Xn,c02.Xn,c03.Xn填入。3)類似地,第二個(gè)乘法器將用它的系數(shù)依次乘Xn,第3個(gè)乘法器用它的全部系數(shù)依次乘??梢钥吹捷敵鰧⒁员鞢.7.6所示的形式。表C.7.6對(duì)方式3的輸出序列從輸出的角度來看,每個(gè)時(shí)鐘周期形成一單獨(dú)象素。由于每個(gè)輸出象素是決定12個(gè)輸入象素的權(quán)重值(雖然僅有3個(gè)不同值),這可以看作在x4過采樣的輸入象素上執(zhí)行了12個(gè)抽頭濾波。(12tapfilter)。對(duì)x2過采樣,除輸入數(shù)據(jù)僅保持2時(shí)鐘周期外,其工作實(shí)質(zhì)相同。此外,僅二個(gè)系數(shù)被使用,且“PIPE”塊通過所說明的多路開關(guān)選擇器被縮短了。對(duì)x1濾波器,輸入僅保持一個(gè)時(shí)鐘周期。如希望的那樣,用了一個(gè)系數(shù)和一個(gè)“PIPE”級(jí)。我們現(xiàn)在討論有關(guān)本發(fā)明實(shí)現(xiàn)的某些特征的一些注譯。1)數(shù)據(jù)通路寬度和系數(shù)寬度(13位2的補(bǔ)碼)可被選擇。從而,當(dāng)彩色空間轉(zhuǎn)換器被設(shè)計(jì)時(shí)可使用同樣的乘法器。這些寬度對(duì)于水平過采樣器的目的來說綽綽有余。2)將系數(shù)復(fù)合到乘法器上的多路開關(guān)選擇器與UPI讀回?cái)?shù)據(jù)共享。這導(dǎo)致圖的結(jié)構(gòu)有些復(fù)雜(主要因?yàn)镃碼形成困難),但實(shí)際電路較小。3)就像在彩色空間轉(zhuǎn)換器那樣,進(jìn)位保留乘法器被使用,其結(jié)果僅在最終求解。對(duì)全部水平過采樣器的控制可以看作一個(gè)單一的雙線接口級(jí),這接口在它輸出端可以形成2倍或4倍于它輸入端的數(shù)據(jù)量。通過UPI編程的這個(gè)方式確定可編程移位寄存器(bob)的長(zhǎng)度。所選擇的方式每1時(shí)鐘周期、每2個(gè)時(shí)鐘周期或每4個(gè)時(shí)鐘周期產(chǎn)生一輸出脈沖。這反過來控制主狀態(tài)機(jī),該主狀態(tài)機(jī)的狀態(tài)亦通過in_valid,out_accept(對(duì)雙線接口)及信號(hào)“in_Last”確定。這個(gè)信號(hào)從垂直過采樣器傳遞,并對(duì)每行的最后一個(gè)象素為高電平。這使得每行的開始和最后象素重復(fù)二次(twice_over),且行間的流水線被清除(clearningdown)。(在一行完成之后,流水線包括部分被處理的冗余數(shù)據(jù))。C.9彩色空間轉(zhuǎn)換器C.9.1概述在本發(fā)明中彩色空間轉(zhuǎn)換器(CSC)對(duì)進(jìn)入的9位數(shù)據(jù)執(zhí)行3×3矩陣乘法,然后作加法這里X0-2是輸入數(shù)據(jù),Y0-2是輸出數(shù)據(jù)而Cnm是系數(shù)。對(duì)矩陣系數(shù)特意使用了不太傳統(tǒng)的名稱,因?yàn)檫@些名字對(duì)應(yīng)于圖中的信號(hào)名稱。CSC能夠在大量不同彩色空間中實(shí)現(xiàn)轉(zhuǎn)換,即使頂層寄存器中只使用這些轉(zhuǎn)換的有限集合。設(shè)計(jì)彩色空間轉(zhuǎn)換如下ER’EG’EB→Y,CR’CBR,G,B→Y,CR’CBY,CR’CB→ER’EG’EBY,CR’CB→R,G,B這里R,G和B在(0......511)范圍中,所有其它量是在(32......470)范圍中。因?yàn)榈巾攲蛹拇嫫鰿SC的輸入是Y,CR’CB’只有這些等式的第3和第4個(gè)是相關(guān)的。在CSC設(shè)計(jì)中,系數(shù)的精度可以選擇,以使對(duì)9位數(shù)據(jù),所有輸出值在由全浮點(diǎn)算法的模擬產(chǎn)生的,值的正負(fù)一位的范圍內(nèi)。(這是可得到的最佳精度)。這對(duì)CX0~CX3給出13位2的補(bǔ)碼系數(shù),及對(duì)CX4給出14位2的補(bǔ)碼系數(shù)。對(duì)所有設(shè)計(jì)轉(zhuǎn)換的系數(shù)用十進(jìn)制和十六進(jìn)制如下給出表C.8.1各種轉(zhuǎn)換系數(shù)所有這些數(shù)可從基本方程計(jì)算Y=O.299ER+0.587EG+O.0114EB以及下面的色差方程CR=ER-YCB=EB-YR,G和B中的方程是考慮了這些量的全部標(biāo)度范圍后得出的。C.9.2彩色空間轉(zhuǎn)換器的使用在復(fù)位時(shí),C01,C12和C23置位為1,其它所有系數(shù)置位為0。因此,Y0=X0,Y1=X1,Y2=X2且所有數(shù)據(jù)保持不變地通過。為了選擇彩色空間轉(zhuǎn)換,只要簡(jiǎn)單地將適當(dāng)系數(shù)(例如從表C.8.1)寫入到地址變換表中特殊單元中。參考圖,X0......2對(duì)應(yīng)于in_data0......2而Y0......2對(duì)應(yīng)于out_data0......20用戶應(yīng)記住,輸入到CSC的數(shù)據(jù)必須采樣成4∶4∶4。若不這樣,不僅彩色空間變換無意義,而且芯片將鎖住。值得注意的是,每個(gè)輸出可從系數(shù)輸入的任何允許的組合加(或減)一常數(shù)而被形成。因此,對(duì)任何給定的彩色空間轉(zhuǎn)換,輸出的次序可通過交換轉(zhuǎn)換矩陣中的行(即系數(shù)寫入的地址)而改變。CSC可以確保為表C.8.1中所有轉(zhuǎn)換工作。若用其它轉(zhuǎn)換,用戶必須記住下面幾點(diǎn)1)如果在計(jì)算中任何中間結(jié)果要求大于10位的精度(包括符號(hào)位),硬件將不工作。2)CSC的輸出被飽和為0到511。也就是,任何小于0的數(shù)用0代替,而任何大于511的數(shù)用511代替。飽和邏輯的實(shí)現(xiàn)是假設(shè)結(jié)果僅稍微大于511或稍微小于0。如果CSC被錯(cuò)誤編程,那么公共征兆將是輸出在所有(或大部分)時(shí)間都出現(xiàn)飽和。C.9.3CSC的說明CSC的結(jié)構(gòu)在圖169中說明,由于空間限制,那里僅顯示了3個(gè)分量中的2個(gè)。在圖中,“寄存器”即“R”指主從寄存器,“鎖存器”或“L”指一透明鎖存器。所有系數(shù)被裝入圖中沒有明顯表示的讀寫UPI寄存器。為了解其工作,參考最左邊分量(它產(chǎn)生輸出out_data0)考慮如下次序1)數(shù)據(jù)達(dá)到輸入端X0-2(in_data0-2)。這代表在輸入彩色空間中的一個(gè)單一象素。這被鎖存。2)X0被乘以C01并鎖存到第一個(gè)流水線寄存器。X1和X2繼續(xù)移動(dòng)一寄存器。3)X1被乘以C02,被加到X1·C01中去,并鎖存到下一個(gè)流水線寄存器。X2繼續(xù)移動(dòng)一寄存器內(nèi)。4)X被乘以C03并和(3)的結(jié)果相加,形成(X1·C01+X2·C02+X3·C03)。這個(gè)結(jié)果鎖存到下一個(gè)流水線寄存器中。5)(4)的結(jié)果同C04相加。因?yàn)閿?shù)據(jù)通過乘法器以進(jìn)位保留形式,保持,這加法器亦用來求解來自乘法器鏈的數(shù)據(jù)。其結(jié)果鎖存到下級(jí)流水線寄存器中。6)最后的操作是飽和數(shù)據(jù)。部分結(jié)果被從求解加法器傳遞到飽和塊以實(shí)現(xiàn)這一步??梢钥吹?,正如這部分開始時(shí)在矩陣方程中所指的那樣結(jié)果是Y0。同樣地,用同樣方法形成Y1和Y2。使用了3個(gè)乘法器,系數(shù)作為被乘數(shù),數(shù)據(jù)作為系數(shù)。這可得到有效的方案,且部分結(jié)果沿?cái)?shù)據(jù)通路向下,相同輸入數(shù)據(jù)通過3個(gè)平行且相同的數(shù)據(jù)通路,每個(gè)輸出對(duì)應(yīng)一個(gè)。為了實(shí)現(xiàn)在C.9.2節(jié)中所說的復(fù)位狀態(tài),3個(gè)分量的每個(gè)必須用不同方法復(fù)位。為了避免有3個(gè)置位方案(Schematics)及3種稍微不同的線路圖(Layout),對(duì)在頂層強(qiáng)制成高或低電平的UPI寄存器輸入。CSC幾乎沒有與其相關(guān)的控制。盡管如此,每個(gè)流水線級(jí)是一雙線接口級(jí),所以有一個(gè)有效的可接收鎖存器鏈以及與它們相關(guān)的控制(in_accept=out_accept_r+Lin_Valid-r)。因此,CSC是一個(gè)5級(jí)深的雙線接口,當(dāng)停止時(shí)能保留10個(gè)數(shù)據(jù)層。CSC的輸出包括重新同步鎖存器,因?yàn)檩敵隽魉€中的下一個(gè)功能不考慮一個(gè)不同時(shí)鐘發(fā)生器。C.10輸出控制器C.10.1前言根據(jù)本發(fā)明的輸出控制器具有下面功能·它以3種方式之一的方式提供數(shù)據(jù)·24比特4∶4∶4·16比特4∶2∶2·8比特4∶2∶2·它調(diào)正數(shù)據(jù)到視頻顯示窗口,此窗口通過vsync和hsync脈沖和可編程時(shí)間寄存器定義的。·如果需要,它圍繞視頻窗口加邊框。C.10.2端口輸入雙線接口·in_Valid·in_accept·in_data[23∶0]輸出雙線接口·out_Valid·out_accept·out_data[23∶0]·out_active·out_window·out_comp[1∶0]in_vsync,in_hsyncnupdata[7∶0],upaddr[4∶0],upsel,rstr,wstr,tdin,tdout,tph0,tckm,tcks,chiptest,Ph0,Ph1,notrst0,notrst1。C.10.3輸出方式輸出的格式通過寫工作方式寄存器而選擇C.10.3.1方式0這方式是24位4∶4∶4RGB或YCrCB。輸入數(shù)據(jù)直接通到輸出。C.10.3.2方式1和2這些方式提供4∶2∶2YCrCb,假設(shè)in_data[23∶16]是Y,indata[15∶8]是Cr,及in_data[7∶0]是Cb。C.10.3.2.1方式1在16位YCrCb中,Y呈現(xiàn)在out_data[15∶8]上。Cr和Cb多路復(fù)合到out_data[7∶0]上的時(shí)間,Cb在前。out_data[23∶16]不被使用。C.10.3.2.2方式2在8位YCrCb中,Y、Cr和Cb是按照Cb、Y、Cr、Y的次序多路復(fù)合到out_data[7∶0]上的時(shí)間。out_data[23∶8]不被使用。C.10.3.3輸出時(shí)序在視頻顯示窗口中,下列寄存器用來放數(shù)據(jù)?!delay-在視頻或邊框的第一行之前,跟在vsync脈沖之后的hsync脈沖的數(shù)量?!delay-在hsync和視頻或邊框的第一個(gè)象素之間時(shí)鐘周期數(shù)目?!eight-視頻窗口的高度,以行數(shù)為單位?!idth-視頻窗口的寬度,以象素?cái)?shù)為單位?!orth,south-分別為視頻窗口以上和以下的邊框高度,以行數(shù)為單位?!est,east-分別為到視頻窗口左邊和右邊的邊界寬度,以象素為單位。最小vdelay為零。第一個(gè)hsync是第一個(gè)有效行??杀痪幊倘雋delay的最小值是2。然而應(yīng)注意,從in_hsync到第一個(gè)有效輸出象素的實(shí)際延遲是hdelay+1個(gè)周期。邊的任何邊沿可具有值零。通過寫寄存器border-r,border-g和border-b選擇邊框顏色。通過寫寄存器bank-r,bank-g和bank-b選擇邊框外區(qū)域的顏色。注意,在輸出方式1和2中執(zhí)行的多路復(fù)合也將影響邊框和空白分量。也就是,在這些寄存器中值對(duì)應(yīng)于in_data[23∶16],in_data[15∶8]及in_data[7∶0]。C.10.4輸出標(biāo)記·out_activo指示輸出數(shù)據(jù)是有效窗口的一部分,即視頻數(shù)據(jù)或邊框?!ut_window表示輸出數(shù)據(jù)是視頻窗口的一部分?!ut_comp[1∶0]表示彩色分量存在于輸出方式1和2中的out_data[7∶0]上。在方式1中,0=Cb,1=Cr。在方式2中,0=Y(jié),1=Cr,2=Cb。C.10.5雙線方式本發(fā)明中,通過對(duì)雙線寄存器寫1來選擇雙線方式。它不是在復(fù)位之后被選中的。在雙線方式中,輸出時(shí)序寄存器和sync信號(hào)均被忽略,而通過塊的數(shù)據(jù)流由out_accept控制。注意,在正常工作中,out_accept應(yīng)保持在高電平。C.10.6窺測(cè)器有一個(gè)超級(jí)窺測(cè)器置于塊的輸出端,這塊包括對(duì)輸出標(biāo)記的訪問。C.10.7如何工作2個(gè)相同的減計(jì)數(shù)器記錄著顯禾器中的當(dāng)前位置。“Vcount”對(duì)hsyncs減計(jì)數(shù),并從適當(dāng)?shù)臅r(shí)序寄存器對(duì)Vsync加載或在它最終計(jì)數(shù)時(shí)加載?!癏count”對(duì)每個(gè)象素減計(jì)數(shù),并對(duì)hsync加載或在它最終計(jì)數(shù)時(shí)加載。注意,在輸出方式2中,一個(gè)象素相當(dāng)二個(gè)時(shí)鐘周期。C.11時(shí)鐘分頻器C.11.1概述在本發(fā)明中的頂層寄存器包括二個(gè)相同的時(shí)鐘分頻器,一個(gè)產(chǎn)生PICTURE_CLK,另一個(gè)產(chǎn)生AUDIO_CLK。時(shí)鐘分頻器是相同且被獨(dú)立控制。因此,在此只需說明一個(gè)。從用戶觀點(diǎn)看,兩個(gè)時(shí)鐘分頻器的唯一不同是除數(shù)寄存器被映射到存儲(chǔ)器映象地址中的不同位置。時(shí)鐘分頻器的作用是提供一個(gè)被分為4XSYSCIK的時(shí)鐘頻率,且對(duì)均等占空比(mark-space)沒有要求。除數(shù)需要在0到16,000,000的范圍內(nèi),因此它可用24位來表示。且限制最小除數(shù)為16。這是因?yàn)橥ㄟ^使用二分之一除數(shù),時(shí)鐘分頻器將接近一個(gè)相同占空比(在一個(gè)SYSCLK周期內(nèi))由于可得到的最大時(shí)鐘頻率是SYSCLK,可得到的最大分頻頻率為SYSCLK/2。而且,因?yàn)樵诩?jí)聯(lián)中使用了4個(gè)計(jì)數(shù)器,除數(shù)/2必須從不小于8,否則輸出分頻時(shí)鐘被驅(qū)動(dòng)到正電源。C.11.2時(shí)鐘分頻器的使用每個(gè)時(shí)鐘分頻器的地址變換由4個(gè)單元組成,它們對(duì)應(yīng)3個(gè)8位除數(shù)寄存器和1個(gè)1位訪問寄存器。時(shí)鐘分頻器剛加電時(shí)是無效的,當(dāng)通過對(duì)其除數(shù)寄存器的訪問而有效。除數(shù)寄存器可根據(jù)表C.10.1中地址變換以任意次序?qū)懭?。時(shí)鐘分頻器通過在它的訪問位檢測(cè)出同步化的。到1的轉(zhuǎn)換而被激活。開始檢測(cè)出一轉(zhuǎn)換時(shí),時(shí)鐘分頻器將離開復(fù)位狀態(tài),并產(chǎn)生一分頻時(shí)鐘。后面的轉(zhuǎn)換(假定除數(shù)也已改變)僅使時(shí)鐘分頻器鎖定到一新頻率而“on-the_fly”。一旦被激活,除將芯片復(fù)位外,無法停止時(shí)鐘分頻器。表C.10.1時(shí)鐘分頻器寄存器除數(shù)值可用范圍從14到16,77,216。C.11.3時(shí)鐘分頻器的說明時(shí)鐘分頻器可用4個(gè)22位計(jì)數(shù)器實(shí)現(xiàn)。這些計(jì)數(shù)器聯(lián)成級(jí)連,以使當(dāng)一個(gè)計(jì)數(shù)器進(jìn)位時(shí),它將依次激活下一個(gè)計(jì)數(shù)器。一個(gè)計(jì)數(shù)器在進(jìn)位前,計(jì)數(shù)器以1/4除數(shù)值分頻。因此,每個(gè)計(jì)數(shù)器將依次接收它,以形成分頻時(shí)鐘頻率的脈沖。進(jìn)位以后,計(jì)數(shù)器將以除數(shù)/8再裝入,并被分頻產(chǎn)生大致相同的占空比的分頻時(shí)鐘。由于每個(gè)計(jì)數(shù)器被前級(jí)計(jì)數(shù)器激活時(shí),它從除數(shù)寄存器再裝入。分頻時(shí)鐘頻率可以on_thd_fly而被改變。這些改變只需簡(jiǎn)單地改變除數(shù)內(nèi)容而實(shí)現(xiàn)。每個(gè)計(jì)數(shù)器用它自己獨(dú)立的時(shí)鐘發(fā)生器計(jì)時(shí),以便精確地控制計(jì)數(shù)器之間時(shí)鐘對(duì)齊,并使每個(gè)計(jì)數(shù)器由不同的時(shí)鐘裝置計(jì)時(shí)。一個(gè)狀態(tài)機(jī)控制除數(shù)/4和除數(shù)/8值的形成。同時(shí)亦將正確的源時(shí)鐘從鎖相環(huán)(PLL)多路復(fù)合到時(shí)鐘發(fā)生器去。根據(jù)除數(shù)的值,計(jì)數(shù)器被不同時(shí)鐘計(jì)時(shí)。這是因?yàn)椴煌某龜?shù)值所形成的分頻時(shí)鐘其邊沿隨PLL提供的不同時(shí)鐘組合而定。C.11.4測(cè)試時(shí)鐘分頻器時(shí)鐘分頻器可通過用CHIPTEST為高加電到芯片上而測(cè)試。這樣的效果是強(qiáng)使時(shí)鐘分頻器內(nèi)的所有時(shí)鐘邏輯用SYSCIK計(jì)時(shí),與之相對(duì)時(shí)鐘由PLL產(chǎn)生。時(shí)鐘分頻器已經(jīng)以全掃描設(shè)計(jì),因此,下一步可以用標(biāo)準(zhǔn)的JTAG存取測(cè)試,只要芯片已如上加電。若設(shè)備在以正常工作運(yùn)行時(shí),CHIPTEST保持在高電平,則時(shí)鐘分頻器的功能不能保證。C.12地址變換C.12.1頂層地址變換注釋1)對(duì)頂層地址變換的寄存器,如表C.11.1中所設(shè)置的,是在設(shè)計(jì)期間所用的名字。這些名字不需要出現(xiàn)在數(shù)據(jù)表中。2)由于這是完全的地址變換,此處所列的許多單元包括僅為測(cè)試使用的單元。表C.11.1頂層寄存器A頂層地址變換表C.11.1頂層寄存器A頂層地址變換(續(xù))表C.11.1頂層寄存器A頂層地址變換(續(xù))表C.11.1頂層寄存器A頂層地址變換(續(xù))表C.11.1頂層寄存器A頂層地址變換(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.2Top-Level寄存器A地址發(fā)生器鍵孔(續(xù))表C.11.3.水平過采樣及C空間鍵孔地址變換表表C.11.3.水平過采樣及C空間鍵孔地址變換表(續(xù))表C.11.3.水平過采樣及C空間鍵孔地址變換表(續(xù))表C.11.3.水平過采樣及C空間鍵孔地址變換表(續(xù))表C.11.3.水平過采樣及C空間鍵孔地址變換表(續(xù))C.13圖象尺寸參數(shù)C.13.1前言下面格式的編碼碎片詳細(xì)說明的對(duì)應(yīng)來自寫地址發(fā)生器的圖象尺寸中斷所需的處理要求。注意,圖象尺寸參數(shù)可通過發(fā)送HORIZ-ONTAL_MBS,VERTICAL_MBS和DEFINE-SAMPLING(對(duì)每個(gè)分量)令牌的組合而改變“on-the-fly”,結(jié)果產(chǎn)生寫地址發(fā)生器中斷。這些令牌可以以任何次序到達(dá),而且通常,任意一個(gè)都需要對(duì)圖象尺寸參數(shù)重新計(jì)算。然而在設(shè)置時(shí)間,在執(zhí)行任何計(jì)算之前檢測(cè)所有事件的到達(dá)將更加有效。在設(shè)置時(shí),給圖象尺寸參數(shù)寄存器寫入特定值是可能的,因此可以不依賴對(duì)應(yīng)于今牌的中斷處理。因?yàn)檫@個(gè)原因,也給出了對(duì)SIF圖象的適當(dāng)?shù)募拇嫫髦怠.13.2圖象尺寸參數(shù)的中斷處理存在5種圖象尺寸事件,每個(gè)事件的初始響應(yīng)如下給出ig(hmbs_evens)load(mbs_wide)elseif(mbs_evenc)load(mbs_high)elseif(def_samp0_evenc)(load(dexhb)load(daxvb))elseif(def_sampl_evenc)(load(daxhb[1])load(daxvb[1]))elseif(def_samp2_evenc)(load(daxhb[2])loaddaxvb[2]))此外,為保持一致的圖象尺寸參數(shù),需要下面的計(jì)算if(hmbs_evenc||vmbs_event||def_samp0_evenc||def_sampl_evenc||def_samp2_evenc)(for(i=0;i<mex_comporenc;i++)(hbs[i]=addr_hbs[i]=(maxhb[i]-1)·mbs_vide;half_wideh_in_blocks[i]=((maxhb[i]-1)·mbs_wide)/2;last_mb_in_row[i]=hbs[i]-(mexhb[i]-1);last_mb_in_half_row[i]=half_wideh_in_blocks[i](daxhb[i]-1);last_row_in_mb[i]=hbs[i]·daxvb[i]blocks_per_mb_row[i]=last_row_in_mb[i]·hbs[i]last_mb_row_[i]=blocks_per_mb_row[i]·(mbs_high_-1)盡管,并不嚴(yán)格要求根據(jù)圖象尺寸中斷去修改dispaddr寄存器的值(例如顯示窗口尺寸)。根據(jù)具體應(yīng)用的要求,可能希望這樣做。C.13.3對(duì)SIF圖象的寄存器值在對(duì)SIF進(jìn)行如上中斷處理以后,包括在所有圖象尺寸寄存器中的值,對(duì)4∶2∶O流將如下所示C.13.3.1初始值BU_WADDR_MBS_WIDE=Ox16BU_WADDR_MBS_HIGH=Ox12BU_WADOR_COMP1_MAXH8=Ox00BU_WADDR_COMP2_MAXH8=Ox00BU_WADOR_COMP0_MAXV8=Ox01BU_WADDR_COMP1_MAXVB=Ox00BU_WADDR_COMP2_MAXVB=Ox00C.13.3.2第二次值一計(jì)算以后BU_WADDR_COMP0_HBS=Ox2CBU_WADDR_COMP1_HBS=Ox16BU_WADDR_COMP2_HBS=Ox16BU_ADDR_COMP0_HBS=Ox2CBU_ADDR_COMP1_HBS=Ox16BU_ADOR_COMP2_HBS=Ox16BU_WADDR_COMP0_HALF_WIDTH_IN_BLOCKS=Ox15BU_WADDR_COMP1_HALF_WIDTH_IN_BLOCKS=Ox03BU_WADDR_COMP2_HALF_WIDTH_IN_BLOCKS=Ox03BU_WADDR_COMP0_LAST_MB_IN_ROW=Ox2ABU_WADDR_COMP1_LAST_MB_IN_ROW=Ox15BU_WADDR_COMP2_LAST_MB_IN_ROW=Ox15BU_WADDR_COMP0_LAST_MB_IN_HALF_ROW=Ox14BU_WADDR_COMP1_LAST_M8_IN_HALF_ROW=Ox0ABU_WADDR_COMP2_LAST_MB_IN_HALF_ROW=Ox0ABU_WADDR_COMP0_LAST_ROW_IN_MB=Ox2CBU_WADDR_COMP1_LAST_ROW_IN_MB=Ox0BU_WADDR_COMP2_LAST_ROW_IN_MB=Ox0BU_WADDR_COMP0_BLOCKS_PER_MB_ROW=Ox58BU_WADDR_COMP1_BLOCKS_PER_MB_R0W=Ox16BU_WADDR_COMP2_SLOCKS_PER_MB_ROW=Ox15BU_WADDR_COMP0_LAST_MB_ROW=Ox5D8BU_WADDR_COMP1_LAST_MB_ROW=Oxl75BU_WADDR_COMP2_LAST_MB_ROW=Ox176注意,如果這些值明確地在設(shè)置時(shí)被寫入,那么必須考慮大部分單元的多字節(jié)特性。注意附加圖,這些圖對(duì)那些具有本領(lǐng)域一物般技術(shù)的人作了解釋,它們包括這種應(yīng)用,以進(jìn)一步理解本發(fā)明對(duì)外界的詳細(xì)結(jié)構(gòu)和操作的功效。上面說明的本發(fā)明的流水線系統(tǒng)滿足一長(zhǎng)期存在的需求,以改進(jìn)系統(tǒng)·本發(fā)明所涉及的改進(jìn)的流水線系統(tǒng)有一個(gè)輸入,一個(gè)輸出及輸入和輸出之間很多處理級(jí)。這很多的處理級(jí)由雙線接口把內(nèi)部連結(jié)起來,沿流水線傳輸令牌,而控制和/或數(shù)據(jù)令牌以通用適應(yīng)單元的形式,在流水線中與所有處理級(jí)相接口,在流水線中與選定的級(jí)相交互,以完成在處理級(jí)中控制數(shù)據(jù)和/或聯(lián)合控制一數(shù)據(jù)功能,所以,在流水線中的處理級(jí),在配置和處理中被提供高度的靈活性。根據(jù)本發(fā)明,處理級(jí)可以根據(jù)至少識(shí)別的一個(gè)令牌而能被配置·處理級(jí)的一個(gè)可以是起始碼檢測(cè)器,這個(gè)檢測(cè)器接收輸入并產(chǎn)生和/或轉(zhuǎn)換令牌·改進(jìn)的系統(tǒng)包括一個(gè)多標(biāo)準(zhǔn)視頻解壓縮裝置,該裝置有很多級(jí),這些級(jí)被排列成如流水線處理機(jī)的雙線接口內(nèi)部相連·控制令牌和數(shù)據(jù)令牌通過單個(gè)的雙線接口,以令牌格式傳送控制數(shù)據(jù)·一令牌解碼電路放置在某些級(jí)內(nèi),以識(shí)別某些令牌是與該級(jí)有關(guān)的作為控制令牌,并沿流水線傳遞不認(rèn)識(shí)的控制令牌。重新配置的處理電路是位于選中級(jí)內(nèi),并對(duì)一個(gè)識(shí)別的控制令牌作出響應(yīng),以重新配置這樣的級(jí)去處理一個(gè)辨認(rèn)出的數(shù)據(jù)令牌。為了實(shí)施這個(gè)系統(tǒng),很多種獨(dú)特的支持子系統(tǒng)電路和處理技術(shù)已經(jīng)公開。權(quán)利要求1、一個(gè)系統(tǒng),它具有一個(gè)輸入,一個(gè)輸出和輸入輸出之間有很多處理級(jí),其特征在于所述的很多處理級(jí)被雙線接口內(nèi)部相連,以便沿流水線傳送令牌;且控制和/與數(shù)據(jù)令牌以通用適應(yīng)單元的形式,同上述的流水線中所存的所述的級(jí)接口,并同流水線中選擇的級(jí)交互,從而,在所述在流水線中的所述的處理級(jí)被提供,以增強(qiáng)配置和處理的靈活性。2、在流水線處理機(jī)中,為了處理很多獨(dú)立的編碼位流,這些位流排列成單一串行數(shù)字位的位流并具有獨(dú)立編碼的控制碼和在系列位流中攜帶的相應(yīng)數(shù)據(jù)碼對(duì),以及利用的很多級(jí)被雙線接口內(nèi)部相連,其特征在于一個(gè)起始碼檢測(cè)器,它對(duì)單串位流起作用,以產(chǎn)生應(yīng)用于雙線接口的控制令牌和數(shù)據(jù)令牌;一個(gè)令牌的解碼電路,位于某些所說的級(jí)內(nèi),以識(shí)別確定的所說令牌作為與那級(jí)有關(guān)的控制令牌,并沿流水線傳送不認(rèn)識(shí)的控制令牌;一個(gè)可重配置的解碼器和分析器處理裝置,它對(duì)識(shí)別出的控制令牌起作用,以重新配置特定的級(jí)在操作一已識(shí)別的數(shù)據(jù)令牌。3、在流水線處理機(jī)中,有很多可重新配置的處理級(jí),它們被雙線接口總線內(nèi)部相連,其特征在于所述的處理級(jí)中之一是空間解碼器;所述的處理級(jí)中之二是令牌發(fā)生器,它產(chǎn)生控制令牌和數(shù)據(jù)令牌沿雙線接口傳送;一個(gè)令牌解碼裝置位于所說的空間解碼器中,以識(shí)別確定的令牌作為與所述空間解碼器有關(guān)的控制令牌,并配置所述的空間解碼器。對(duì)空間解碼所述的數(shù)據(jù)令牌跟在所說的控制令牌后面,成為第一種解碼的格式。4、在流水線處理機(jī)中,為了處理很多獨(dú)立編碼位流,這些位流排列成單一串行數(shù)字位的位流,并具有獨(dú)立編碼的控制碼和,在系列位流中攜帶的數(shù)據(jù)碼對(duì),以及利用的很多級(jí)被雙線接口內(nèi)部相連,其特征在于一個(gè)起始碼檢測(cè)器,它對(duì)單個(gè)串行位流起作用,以產(chǎn)生應(yīng)用到所達(dá)雙線接口的控制令牌和數(shù)據(jù)令牌;一個(gè)令牌解碼裝置位于某些所述的級(jí)內(nèi),以識(shí)別確定的令牌作為與那級(jí)相關(guān)的控制令牌,并沿所述的流水線傳送不認(rèn)識(shí)的控制令牌;一個(gè)可重新配置的時(shí)間解碼器,它對(duì)一識(shí)別出的控制令牌起作用,以重新配置所達(dá)的時(shí)間解碼級(jí),去操作已識(shí)別的數(shù)據(jù)令牌,數(shù)據(jù)可隨著雙線接口,在所述的時(shí)間解碼器中以8×8象素塊移動(dòng);而地址裝置是用來沿塊邊界存貯和檢索所述的塊。5、一個(gè)系統(tǒng),它具有一個(gè)輸入,一個(gè)輸出和輸入與輸出之間有很多處理級(jí),其特征在于一個(gè)交互的接口控制令牌,定義一個(gè)通用適應(yīng)單元,所述的處理級(jí)中,有控制和/或數(shù)據(jù)功能,因此,提供的所述的處理級(jí),增強(qiáng)了不同任務(wù)執(zhí)行中的靈活性。6、一個(gè)系統(tǒng),它具有一個(gè)輸入,一個(gè)輸出和輸入與輸出之間有很多處理級(jí),其特征在于一個(gè)交互的改變接口結(jié)構(gòu)的數(shù)據(jù)令牌,定義了一個(gè)通用適應(yīng)單元,以便在所述的處理級(jí)中執(zhí)行數(shù)據(jù)功能,因此,提供的所述的處理級(jí),增強(qiáng)了數(shù)據(jù)處理的靈活性。全文摘要一個(gè)多標(biāo)準(zhǔn)的視頻解壓縮裝置,具有很多級(jí),這些級(jí)用安排成如流水線處理機(jī)那樣的雙線接口內(nèi)部相連??刂坪蛿?shù)據(jù)令牌通過單個(gè)雙線接口,以令牌格式傳送控制和數(shù)據(jù),一個(gè)令牌解碼電路,它位于某些級(jí),用來識(shí)別確定的令牌,作為與那級(jí)有關(guān)的控制令牌,并沿流水線傳送不認(rèn)識(shí)的控制令牌。重配置處理電路位于選擇的級(jí)內(nèi),它對(duì)識(shí)別出的控制令牌起作用,以重配置這樣的級(jí)在操作識(shí)別的數(shù)據(jù)令牌,同時(shí)提供了各種獨(dú)特的支持子系統(tǒng)電路和處理技術(shù)。文檔編號(hào)H03M7/30GK1114489SQ95103200公開日1996年1月3日申請(qǐng)日期1995年3月24日優(yōu)先權(quán)日1994年3月24日發(fā)明者阿德里安·P·懷斯,威廉·P·羅賓斯,馬丁·W·薩瑟安申請(qǐng)人:Dva公司