專利名稱::視頻數(shù)據(jù)處理方法及裝置的制作方法
技術領域:
:本發(fā)明涉及用計算機進行的數(shù)據(jù)處理,特別涉及用計算機進行的視頻數(shù)據(jù)處理。計算機已經(jīng)被用于系統(tǒng)數(shù)據(jù)的壓縮和解壓縮。系統(tǒng)數(shù)據(jù)包括靜止和/或運動畫面的圖像等視頻數(shù)據(jù)。系統(tǒng)數(shù)據(jù)還包括音頻數(shù)據(jù),例如電影的聲跡。希望提供一種能夠允許對視頻數(shù)據(jù)進行快速處理的方法和電路。本發(fā)明提供一種允許對視頻數(shù)據(jù)進行快速處理的方法和電路。在某些實施例中,本發(fā)明的計算機系統(tǒng)包括三個能夠同時工作的處理器一個標量處理器、一個矢量處理器和一個位流處理器。在視頻數(shù)據(jù)的編碼和譯碼過程中,矢量處理器執(zhí)行的操作能夠有效地由一個單指令多數(shù)據(jù)(SIMD)處理器加以執(zhí)行。這種操作包括1)諸如離散余弦變換(DCT)的線性數(shù)據(jù)變換;和2)運動補償。位流處理器執(zhí)行的操作包括對特定位而不是字或半字執(zhí)行的操作。這種操作包括應用于例如MPEG-1、MPEG-2、H.261和H.263標準的哈夫曼和RLC編碼和譯碼。標量處理器執(zhí)行高級視頻處理(例如,畫面級處理),對矢量和位流處理器的操作進行同步,并控制與外部設備的接口。在某些實施例中,計算機系統(tǒng)能夠同時處理幾個數(shù)據(jù)流。結果是計算機系統(tǒng)的用戶能夠與兩方或多方進行電視會議。由于位流處理器能夠切換現(xiàn)場以同時對不同的數(shù)據(jù)流實時進行編碼和譯碼,所以,多數(shù)據(jù)流能夠被同時處理。在某些實施例中,就標量和矢量處理器能夠被編程以執(zhí)行單個算術或布爾指令來講,這兩個處理器是可編程的。就位流處理器不能夠被編程以執(zhí)行單算術或布爾指令來講,所述位流處理器不是可編程的。然而,位流處理器能夠被編程以對一組視頻數(shù)據(jù)執(zhí)行整個視頻數(shù)據(jù)處理操作。使位流處理器不能夠被編程去執(zhí)行單個算術或布爾指令允許所述位流處理器更快。標量和矢量處理器的可編程性使系統(tǒng)容易適應視頻數(shù)據(jù)編碼和譯碼標準的變化。下面描述本發(fā)明的其它特性和優(yōu)點。本發(fā)明是由所權利要求限定的。圖1是本發(fā)明的一個媒體卡的方框圖。圖2是本發(fā)明的多媒體處理器的方框圖。圖3是作為圖2處理器的一部分的一個位流處理器的方框圖。圖4-6是本發(fā)明的計算機系統(tǒng)的方框圖。圖7示出了圖2處理器的固件結構。圖8-9示出了用于圖1系統(tǒng)的地址映射。圖10是圖2處理器的DSP內核的方框圖。圖11示出了在作為圖2處理器的一部分的矢量處理器中使用的一個流水線。圖12是圖11的矢量處理器的功能方框圖。圖13示出了圖11矢量處理器中的執(zhí)行數(shù)據(jù)通路。圖14示出了圖11矢量處理器中的加載和存儲數(shù)據(jù)通路。圖15是圖2處理器的高速緩存系統(tǒng)的方框圖。圖16示出了圖15高速緩存系統(tǒng)中的指令數(shù)據(jù)高速緩存。圖17示出圖2處理器的高速緩存控制單元中的數(shù)據(jù)通路流水線。圖18示出了圖2系統(tǒng)中的高速緩存控制單元中的地址處理流水線的數(shù)據(jù)通路。圖19-22示出了圖2處理器的狀態(tài)機。圖23示出了圖15高速緩存系統(tǒng)中使用的地址格式。圖24示出了圖2處理器中的一個總線。圖25示出了圖2處理器中的一個仲裁控制單元。圖26-29是圖2處理器的時序圖。圖30-32示出了圖2處理器中的存儲器請求信號。圖33示出了圖2處理器中的一個總線仲裁控制單元。圖34-36是圖2處理器的時序圖。圖37-38示出了圖2處理器中的總線接口電路。圖39-40示出了用于圖1系統(tǒng)的一個虛擬幀緩沖器(VFB)。圖41示出了用于圖1系統(tǒng)的總線接口電路。圖42-43示出了用于圖1系統(tǒng)的存儲器控制器。圖44示出了用于圖1系統(tǒng)的地址控制器。圖45和46示出了在圖1系統(tǒng)中使用的格式。圖47示出了圖1系統(tǒng)中的狀態(tài)機。圖48是圖1系統(tǒng)的數(shù)據(jù)控制器的方框圖。圖49-51是圖1系統(tǒng)的時序圖。圖52-53示出了圖2處理器中的設備接口電路。圖54-56是圖1系統(tǒng)的幾個部分的方框圖。圖57-59示出了圖1系統(tǒng)中的寄存器。圖60示出了圖1系統(tǒng)中的幀緩沖器和視頻窗口。圖61是圖1系統(tǒng)的時序圖。圖62示出了圖1系統(tǒng)中的寄存器。圖63是圖1系統(tǒng)的時序圖。圖64-66示出了在圖1系統(tǒng)中使用的緩沖器。圖1示出了一個包括多媒體處理器110的一個媒體卡100。在某些實施例中,處理器110是一個SamsungSemiconductorCorporationofSanJose,California公司生產的MSP-1EX(商標)型的處理器。處理器MSP-1EX將在下面的附錄A中描述。處理器110通過局部總線105與主機系統(tǒng)(未示出)通信。在某些實施例中,總線105是一個32位、33MHz的PCI總線。處理器110的數(shù)字視頻數(shù)據(jù)輸出被連接到D/A(數(shù)字-模擬)轉換器112。除了視頻部分以外,數(shù)字視頻數(shù)據(jù)可以包括音頻部分例如電影的聲跡。轉換器112的輸出適用于連接到電視機(未示出)或其它處理模擬數(shù)據(jù)的系統(tǒng)。在某些實施例中,處理器110還包括一個用于從A/D(模擬-數(shù)字)轉換器接收數(shù)字視頻數(shù)據(jù)的輸入端口(見圖4-6)。處理器110被連接到編碼譯碼器114。編碼譯碼器114從磁帶錄音機(未示出)或其它設備中接收模擬音頻數(shù)據(jù)。編碼譯碼器114從電話線(未示出)接收模擬電話數(shù)據(jù)。編碼譯碼器114數(shù)字化所述模擬數(shù)據(jù)并將它們傳輸給處理器110。編碼譯碼器114從處理器110接收數(shù)字數(shù)據(jù),將這些數(shù)據(jù)轉換成模擬形式,并當需要時傳輸這些模擬數(shù)據(jù)。處理器110通過總線122連接到存儲器120。在圖1中,存儲器120是一個SDRAM(同步DRAM),總線122是64位、80MHz的總線。其它存儲器、總線寬度和總線速度被用于其它的實施例中,異步存儲器和總線被用于某些實施例中???00的某些實施例在與本申請同一天由LeNguyen提交的美國專利申請“多媒體信號處理器中的多處理器操作”中進行了描述,在這里一并作為參考。圖2是處理器110的一個實施例的方框圖。處理器110包括標量處理器210、矢量處理器(“VP”)220和位流處理器(“BP”)245。在某些實施例中,處理器210是一個工作于40MHz的32位RISC處理器并遵守現(xiàn)有技術已知的標準ARM7指令。矢量處理器220是一個工作于80MHz的單指令多數(shù)據(jù)(SIMD)處理器并具有288位的矢量寄存器。VP220的一個實施例在由Song等人與本申請同一天提交的美國專利申請“多任務計算系統(tǒng)環(huán)境中的有效的現(xiàn)場保存和恢復”中進行了描述,在這里一并作為參考。處理器210和220能夠被編程以執(zhí)行單個算術或布爾指令或這種指令的一個序列。在某些實施例中,為了獲得高的視頻數(shù)據(jù)處理速度,使位流處理器245不能夠被編程去執(zhí)行單個算術或布爾指令。特別是,BP245不能夠被編程去執(zhí)行諸如“與”、“或”和“加及累加”等單個指令。然而,可以命令BP245去執(zhí)行如附錄A第十章所述的視頻數(shù)據(jù)處理操作。同時,標量處理器210和矢量處理器220能夠被編程以執(zhí)行單個算術或布爾指令。因此,處理器110能夠適應視頻標準的變化。如圖2所示,標量處理器210和矢量處理器220被連接到高速緩存子系統(tǒng)230。高速緩存子系統(tǒng)230被連接到總線240(“IOBUS”)和總線250(“FBUS”)。在某些實施例中,IOBUS240是一個32位、40MHz的總線,F(xiàn)BUS250是一個64位、80MHz的總線。IOBUS240被連接到位流處理器245、中斷控制器148、全雙工UART單元243和4個定時器242。FBUS250被連接到存儲器控制器258,存儲器控制器258被連接到存儲器總線122(圖1)。FBUS250被連接到PCI總線接口電路255,該PCI總線接口電路255被連接到PCI總線105。FBUS250還被連接到設備接口電路252(還被稱之為“用戶ASIC”),該設備接口電路252包括與視頻D/A112(圖1)、編碼譯碼器114、和可能還有視頻A/D轉換器(如圖4-6所示)接口的電路。處理器110還包括一個存儲器數(shù)據(jù)搬移器290。處理器110可以同時處理多個數(shù)據(jù)流。例如,如果處理器110的用戶與兩方或多方進行電視會議,處理器110提供允許用戶看到和聽到多方的視頻和音頻處理。為了處理多個視頻數(shù)據(jù)流,處理器110支持現(xiàn)場切換。這意味著BP245在多數(shù)據(jù)流之間切換,在電視會議中,每個數(shù)據(jù)流可以來自一個單獨的遙遠的一方?;蛘?,附加數(shù)據(jù)流可以來自電影頻道以允許用戶參與電視會議并同時觀看其中的一方或電影展示?,F(xiàn)場切換在附錄A第10.12節(jié)中進行了描述。當所述現(xiàn)場被切換時,標量處理器210保存當前現(xiàn)場并初始化BP245以便處理另一個現(xiàn)場。BP245可以對下述視頻數(shù)據(jù)格式進行處理1.在ISO/IEC標準11172(1992)中描述的MPEG-1;2.在文獻ISO/IECJTC1/SC29N0981Rev(1995.3.31)中描述的MPEG-2;3.在“TTU-T推薦H.261”(1993.3)中描述的H.261;4.在草案IUT-T推薦H.263”(1996.5.2)中描述的H.263。在標量處理器210、矢量處理器220和位流處理器245之間劃分視頻數(shù)據(jù)處理,以便實現(xiàn)高處理速度。更具體地說,矢量處理器220執(zhí)行線性變換(例如DCT--離散余弦變換--或它的逆變換IDCT)和執(zhí)行運動補償。由于這些操作頻繁需要在多個數(shù)據(jù)上執(zhí)行相同的指令,所以,這些操作適于矢量處理器。位流處理器245執(zhí)行哈夫曼譯碼和編碼以及曲折(zig-zag)位流處理。標量處理器210執(zhí)行視頻和音頻信號分離和同步、以及I/O接口任務。在附錄A的第10.6.1和10.6.2節(jié)中給出了編碼和譯碼操作的例子。在編碼操作中,未經(jīng)壓縮的數(shù)字數(shù)據(jù)通過總線105來自存儲器120或來自主系統(tǒng)(未示出)。在某些實施例中,設備接口電路252包括一個視頻A/D轉換器,而未經(jīng)壓縮的數(shù)據(jù)來自該轉換器。矢量處理器220執(zhí)行量化、DCT和運動補償。位流處理器245接收VP220的輸出并產生多個GOB(塊組)或多個片。特別是,BP245執(zhí)行哈夫曼和RLC編碼和曲折位流處理。標量處理器210接收BP245的輸出,并執(zhí)行畫面層編碼、GOP(畫面組)編碼和序列層編碼。然后,標量處理器210對音頻和視頻數(shù)據(jù)進行多路復用并將編碼數(shù)據(jù)(通過總線105或122)傳輸給一個存儲設備或一個網(wǎng)絡。向網(wǎng)絡的傳輸包括向設備接口電路252的傳輸,在某些實施例中,所述設備接口電路252被連接到一個網(wǎng)絡上。在譯碼過程中,進行相反的處理。標量處理器210將系統(tǒng)數(shù)據(jù)分離成視頻和音頻分量,并執(zhí)行視頻數(shù)據(jù)的序列層、GOP和畫面層譯碼。所生成的多個GOB或多個片被提供給位流處理器245。處理器245曲折處理及哈夫曼和RLC譯碼。VP220接收BP245的輸出并執(zhí)行解量化、IDCT和運動補償。VP220執(zhí)行可能需要的任何后處理(例如,平滑畫面圖像的邊緣),并提供重建的數(shù)字畫面給設備接口電路252或存儲設備。標量處理器210、視頻處理器220和位流處理器245能夠并行操作不同的數(shù)據(jù)塊。標量處理器210處理畫面層和較高層這一事實減少了處理器之間的通信。這是由于畫面層和較高層包含有被標量處理器210用于控制和I/O功能的信息,但是這種信息不被矢量處理器220或位流處理器245所使用。這種信息的例子之一是標量處理器210傳輸多個幀給設備接口電路252所用的幀速率。圖3是位流處理器245的一個實施例的方框圖。圖3所示的信號由附錄A第10.5節(jié)描述。這些信號提供位流處理器245和IOBUS240之間的接口(見圖2)。在BP245中,這些信號被IOBUS接口單元310處理,該接口單元310包括SRAM320。BP245還包括VLCFIFO單元330、VLCLUTROM340、控制狀態(tài)機350和BP內核單元360,該內核單元360包括一個寄存器堆和一個SRAM。圖3的各個方框由附錄A第10.4節(jié)描述。ROM340包含在所有4個標準--MPEG-1、MPEG-2、H.261和H.263中用于哈夫曼編碼和譯碼的查詢表。盡管在表中存儲著大量信息,但是ROM340具有768×12位的很小的長度。小長度是依靠共享所述表和在附錄B第4節(jié)中描述的其它技術實現(xiàn)的。本發(fā)明并不局限于上述實施例和下述附錄。具體地說,本發(fā)明并不局限于這些實施例的任何電路、時鐘速率或時序。其它的實施和變化均落在由所附權利要求限定的本發(fā)明的范圍之內。附錄AMSP-1EX系統(tǒng)說明書第一章--技術綜述這一章描述了硬件和軟件設計者所看到的多媒體信號處理器(“MSP-x”)的技術綜述。1.1功能多媒體信號處理器(MSP-x)形成了一族單片VLSI器件,被設計用來提供用于個人計算機和消費品應用的廣范圍的集成功能。MSP家族以使用謀求最佳性能/價格比的單指令多數(shù)據(jù)(SIMD)計算模型的強大矢量處理器結構為基礎。它的特性包括·完全可編程性·基于ARM指令集結構·集成的40MHzARM7RISCCPU內核·用于高性能數(shù)字信號處理的80MHz矢量處理器·用于9位整數(shù)ALU操作的2.56Gops·用于16位整數(shù)乘-累加操作的2.56Gops·用于32位IEEE浮點加的640Mflops·用于32位IEEE浮點乘和加的1280Mflops·用于任選定制或圖形功能的未使用的10K個門·基于0.65μm3.3v/5vCMOS技術·128腳到256腳封裝MSP將最初支持4個主要功能·視頻·音頻/聲音·電信·2D/3D圖形(任選)1.1.1視頻·所有功能都可以被編程于固件之中·實時MPEG-1譯碼和編碼·實時MPEG-2譯碼·接近實時MPEG-2編碼·實時H.324譯碼和編碼·圖像定標到任一屏幕長度或分辨率·RGB和YUV之間的彩色空間轉換·用于圖像增強和降噪的圖像濾波·4/3下拉轉換1.1.2音頻/聲音·所有功能都可以編程于固件之中·實時MPEG-1音頻譯碼和編碼·實時MPEG-2音頻譯碼和編碼·實時H.320和H.324音頻譯碼和編碼·實時G.728和G.723語音編碼·實時聲霸卡(SoundBlaster)仿真·波表合成·FM合成1.1.3電信1.1.3.1調制解調器·標準的異步COM端口接口(可兼容NS16550AUART)·從28.8K到2.4Kbps的V.34·具有未編碼4800、9600和網(wǎng)格編碼9600bps數(shù)據(jù)速率的CCITT-V.32bis·HayesAT命令集兼容性·呼叫進展監(jiān)視器·V.25bis自動撥號·DTMF和脈沖撥號·異步差錯恢復協(xié)議·V.42糾錯1.1.3.2傳真·9600bps或7200bps的V.29·4800bps或2400bps的V.27ter·呼叫進展監(jiān)視器·自動撥號·DTMF和脈沖撥號·G3傳輸·T.4/T.30操作1.1.3.3電話回答·通過電話機或耳機記錄來話·自動回答電話和利用預先記錄的消息來回答·記錄來自呼叫者的消息·重放呼叫者留下的消息1.1.42D/3D圖形(任選)·BITBLT·2D線與多邊形繪圖和遮蔽·對3D點、線和三角形進行幾何和亮度計算·利用紋理映射計算3D顏色·混合1.2硬件結構1.2.1綜述MSP-1多媒體協(xié)處理器家族被設計成用于滿足包括集成度、成本和性能在內的各種要求。圖4的方框圖示出了包括一個MSP-1處理器在內的系統(tǒng)。MSP-1家族包括下述管腳引出線選擇·MSP-1被設計用作沒有外部SDRAM的輸入級。·MSP-1EX包括用于與外部SDRAM接口的32位存儲器總線。·MSP-1F包括用于與外部SDRAM接口的64位存儲器總線?!SP-1G包括一個集成SVGA控制器、RAMDAC加更快的3D圖形加速。圖5示出了包括MSP-1E處理器在內的一個系統(tǒng)方框圖。1.2.2外部編碼譯碼器圖6示出了一個包括帶有外部編碼譯碼器的MSP-1處理器的系統(tǒng)方框圖。1.2.2.1MSP-1EX的材料清單下面是MSP-1EX的材料的建議清單·MSP-1EX·512K×32位同步RDAM·NTSC/PAL編碼器(Samsung公司生產的KS0119)·音頻與電信編碼譯碼器(ANALOGDEVICES公司生產的AD1843)·雜項(電容、電阻、放大器、連接器等)·印刷電路板1.3微結構1.3.1綜述MSP微結構基本上由非常強大的DSP內核和用戶專用的存儲器以及I/O子系統(tǒng)組成,見圖2。該DSP內核包括·用于通用處理的運行于40MHz的32位ARM7RISCCPU?!み\行于80MHz并用于信號處理的矢量處理器?!み\行于80MHz并包含有2KB指令高速緩存、5KB數(shù)據(jù)高速緩存和16KBROM高速緩存的共享高速緩存子系統(tǒng)。所述數(shù)據(jù)高速緩存能夠被硬件或軟件控制?!み\行于80MHz并與多個內部FBUS外圍設備接口的快速64位總線(FBUS)?!み\行于40MHz并與多個IOBUS外圍設備接口的較慢的32位總線(IOBUS)。內部FBUS外圍設備包括·32位、33MHPCI總線接口·64位SDRAM存儲器控制器·8通道DMA控制器·用戶ASIC邏輯塊。用戶ASIC邏輯塊提供總數(shù)為10K的門,包括與各種模擬編碼譯碼器和用戶專用I/O設備的接口。接口邏輯支持SAMSUNG公司的KS0119NTSC編碼器和ANALOGDEVICES公司的ADI843編碼譯碼器。·存儲器數(shù)據(jù)搬移器,用于將數(shù)據(jù)從主機(Pentium)存儲器DMA到MSP局部SDRAM存儲器。內部IOBUS外圍設備包括·負責視頻位流處理的位流處理器·16450UART串行線·8254兼容定時器·8259兼容中斷控制器MSP還包括一個專用寄存器(MSP控制寄存器),用于軟件控制的初始化和中斷。1.4MSP-1EX管腳描述1.4.1總數(shù)256個管腳14.2PCI總線接口(53個管腳)CLK時鐘輸入管腳。RSTL復位輸入管腳,低有效。AD[310]地址和數(shù)據(jù)總線管腳C_BE0L控制與字節(jié)0使能管腳,低有效C_BE1L控制與字節(jié)1使能管腳,低有效C_BE2L控制與字節(jié)2使能管腳,低有效C_BE3L控制與字節(jié)3使能管腳,低有效PAR奇偶校驗管腳FRAMEL周期幀管腳,低有效IRDYL啟動器準備好管腳,低有效TRDYL目標準備好管腳,低有效STOPL停止事務管腳,低有效LOCKL鎖定事務管腳,低有效IDSEL初始化設備選擇輸入管腳DEVSEL設備選擇管腳,低有效REQL總線請求管腳,低有效GNTL總線授權管腳,低有效PERRL奇偶錯誤管腳,低有效SERRL系統(tǒng)錯誤管腳,低有效INTAL中斷A管腳,低有效1.4.3雜項(6個管腳)TCKJTAG測試時鐘輸入管腳TDIJTAG測試數(shù)據(jù)輸入管腳TDOJTAG測試數(shù)據(jù)輸出管腳TMSJTAG測試模式選擇輸入管腳TRSTLJTAG測試復位輸入管腳CLK時鐘輸入。這是一個40MHz時鐘輸入管腳1.4.4KS0119NTSC/PAL編碼器接口(24個管腳)SFRS用于三線主接口的KS0119的幀同步輸出SCLK到KS0119的串行時鐘輸出SDAT串行數(shù)據(jù)I/OBGHS水平同步信號,輸入到MSPBGVS垂直同步信號,輸入到MSPMSSEL主選擇PD[150]到KS0119的象素數(shù)據(jù)輸出BGCLK到KS0119的象素時鐘輸出PROMCSLBIOSPROM片選1.4.5AD1843音頻與電信編碼譯碼器接口(6個管腳)A43SCLK串行時鐘,輸入/輸出。SCLK是一個雙向信號,當BusMaster(BM)管腳被驅動為HI時,該信號提供一個作為向串行總線輸出的時鐘,而當BM管腳被驅動為LO時,接收作為一個輸入的時鐘。A43SDFS串行數(shù)據(jù)幀同步,輸入/輸出。SDFS是一個雙向信號,當BusMaster(BM)管腳被驅動為HI時,該信號提供一個作為向串行總線輸出的幀同步信號,而當BM管腳被驅動為LO時,該信號接收作為輸入的幀同步信號。A43SDI從MSP輸出給AD1843的串行數(shù)據(jù)輸入。所有的控制和重放傳輸都是16位長,高位在先。A43SDO從AD1843輸入給MSP的串行數(shù)據(jù)輸出。所有狀態(tài)和控制寄存器的讀出和重放都是16位長,高位在先。1.4.6存儲器總線接口(87個管腳)RASIL輸出管腳(低有效)。這是一個行地址選通信號,用于將來自MA[110]的行地址鎖存到所選擇的SDRAM存儲體的內部行地址緩沖器。CAS1L輸出管腳(低有效)。這是一個列地址選通信號,用于將來自MA[110]的列地址鎖存到所選擇的SDRAM存儲體的內部列地址緩沖器。MWEL輸出管腳(低有效)這是一個向SDRAM的寫使能信號。MAI[110]輸出管腳。向SDRAM多路選擇傳輸行和列地址信號。MD[630]輸入/輸出SDRAM數(shù)據(jù)管腳。MA23輸出管腳。存儲器地址位<23>MA24輸出管腳。存儲器地址位<24>DQM輸出管腳。使SDRAM數(shù)據(jù)在時鐘后輸出高阻抗,并屏蔽該輸出。(這個管腳僅被用于同步DRAM接口)MCKE輸出管腳。屏蔽SDRAM的系統(tǒng)時鐘以從下一個時鐘周期凍結操作。MCSOL輸出管腳(低有效)。用于低32位的SDRAM片選。NCS1L輸出管腳(低有效)。用于高32位的SDRAM片選。MR.DYH輸出管腳。SDRAM準備好信號。MEMCLK輸出管腳。這是一個向SDRAM的時鐘輸出管腳。1.4.7電源VDD3V電源管腳VCC5V電源管腳VSS地管腳表1MSP-1EX管腳分配1.5固件結構1.5.1綜述MPS通過(由矢量處理器執(zhí)行的)矢量化DSP固件庫的高度優(yōu)化組合和(由ARM7執(zhí)行的)系統(tǒng)管理功能提供許多強大的開放應用環(huán)境。MSP將信號處理開發(fā)與主機應用開發(fā)分割開來,從而使它能夠提供可伸縮性能、低成本多媒體和通信、以及易于使用和管理。另外,它將減少應用開發(fā)和維護成本。1.5.2固件結構圖7示出了MSP固件系統(tǒng)結構。陰影區(qū)域表示MSP系統(tǒng)部件??瞻讌^(qū)域是駐留PC應用和操作系統(tǒng)。1.5.2.1MOSA(多媒體操作系統(tǒng)結構)MSP的實時操作系統(tǒng)的核心被稱做“MOSA”,它是Microsoft實時核心MMOSA的子集。MOSA是被優(yōu)化用于在MSP上執(zhí)行的多媒體應用的一個實時、頑鍵、多任務、搶占式的操作系統(tǒng)。它將執(zhí)行下述主要功能·與主Windows95和WindowsNT接口·從主機下載所選擇的應用固件·調度在ARM7和矢量處理器中執(zhí)行的MSP任務·管理包括存儲器和I/O設備在內的所有MSP系統(tǒng)資源·同步MSP任務之間的通信·報告與MSP相關的中斷、異常和狀態(tài)條件MOSA只在ARM7上運行。為更詳細起見,請參考MMOSA實時核心的說明書。1.5.2.2多媒體庫模塊多媒體庫模塊提供實現(xiàn)諸如數(shù)據(jù)通信、MPEG視頻和音頻、語音編碼及合成和SoundBlaster兼容音頻等大范圍功能的模塊。每個模塊被優(yōu)化用于MSP環(huán)境,且被設計用于在多任務環(huán)境中執(zhí)行。1.5.3電信庫1.5.3.1綜述利用適當?shù)腄SP固件,MSP能夠被用于支持語音截獲應用、對電話呼叫的回答和在硬盤上存儲消息。系統(tǒng)揚聲器可以利用耳機提供半雙工揚聲器耳機服務而不必使用電話手持送受話器。利用所述系統(tǒng)可以檢測和利用向內和向外的呼叫的進展。當在程序控制下被選擇時,呼叫進展音調可以通過手持送受話器、系統(tǒng)揚聲器、立體聲耳機或音頻輸出通道聽到。1.6編程模型1.6.1綜述從硬件的角度來講,MSP是一個包含兩個CPU和多個集成外圍設備的單片機。從軟件的角度來看,MSP是一個位于PCI總線上的高性能數(shù)字信號處理(DSP)裝置。主CPU對MSP的控制是通過下述實現(xiàn)的·通過PCI總線讀出和寫入MSP控制和狀態(tài)寄存器,或·駐留主系統(tǒng)存儲器內的共享數(shù)據(jù)結構·駐留MSP局部存儲器內的共享數(shù)據(jù)結構MSP程序的執(zhí)行總是開始于ARM7CPU,它接下來啟動在矢量處理器中的第二獨立執(zhí)行流。利用ARM7中的某些協(xié)處理器指令(STARTVP、INTVP、TESTVP)和矢量處理器中的特殊指令(VJON和VINT)進行ARM7CPU和矢量處理器之間的控制同步??梢岳迷贏RM7中執(zhí)行的數(shù)據(jù)搬移指令執(zhí)行ARM7和矢量處理器之間的數(shù)據(jù)傳輸。ARM7CPU通常負責主機接口、資源管理、I/O設備處理以及大多數(shù)中斷和異常處理。矢量處理器負責所有的數(shù)字信號處理和諸如(由ARM7發(fā)給矢量處理器的)協(xié)處理器中斷或(矢量處理器中的)硬件堆棧溢出等特殊中斷。MSP還包括多個的集成外圍設備,用于與各種I/O設備接口。所有外圍設備的地址都是存儲器映射的,因此可用標準存貯器加載和存貯指令(由ARMCPU或矢量處理器)來存取。1.6.2電源接通,復位和初始化在電源接通以后,MSP將自動進入自測試順序以全部驗證它的功能。所述自測試順序包括·初始化所有的內部MSP寄存器·執(zhí)行片內自測試診斷程序以驗證所有的MSP部件。并且持續(xù)大約<tbd>秒。在自測試順序結束時,MSP將準備好執(zhí)行MSP固件,該固件包括·加載和執(zhí)行MSP的初始化軟件·加載和執(zhí)行MSP的實時操作系統(tǒng)核心MOSAMSP支持3種類型的復位·通過PCI總線硬件控制的系統(tǒng)復位·通過在MSP控制寄存器中的PCI系統(tǒng)復位位的軟件控制的系統(tǒng)復位·通過ARM7和在MSP控制寄存器中的矢量重新啟動位的軟件控制的重新啟動。1.6.3PCI配置寄存器作為在PCI總線上的I/O設備,MSP包含有一組如PCI修訂2.1版說明書所規(guī)定的且示于表2的配置寄存器。表2PCI配置寄存器1.6.3.1設備和銷售商標識符寄存器為更詳細起見,請參閱PCI總線說明書修訂2.1版。1.6.3.2狀態(tài)和命令寄存器為更詳細起見,請參閱PCI總線說明書修訂2.1版。1.6.3.3分類碼和修訂標識符寄存器對于MSP-1EX來講,分類碼被規(guī)定為03,子分類為0。1.6.3.4雜項寄存器為更詳細起見,請參閱PCI總線說明書修訂2.1版。1.6.3.5MSP基地址寄存器(MSP_BASE)這個寄存器包含用于MSP設備的基地址。它被利用主系統(tǒng)軟件(Windows95/NT)寫入并被MSP硬件用于存儲器尋址。1.6.3.6VFB基地址寄存器這個寄存器包含有用于VGA虛擬幀緩沖器的基地址。它被主系統(tǒng)軟件(Windows95/NT)寫入并被MSP硬件用于仿真VGA幀緩沖器。1.6.3.7擴展ROM基地址為更詳細起見,請參閱PCI總線說明書修訂2.1版。1.6.3.8中斷線寄存器為更詳細起見,請參閱PCI總線說明書修訂2.1版。1.6.4ARM7CPUARM7RISCCPU是MSP的主處理器。它包含有32位數(shù)據(jù)通路和遵守ARM7標準的指令集結構。ARM7還包括與矢量處理器接口的特殊協(xié)處理器指令。1.6.5矢量處理器這個矢量處理器是MSP的DSP引擎。它包含有288位數(shù)據(jù)通路并用做ARM7的協(xié)處理器。它的功能如在矢量處理器結構文獻中所描述。矢量處理器運行于80MHz和包含有6級流水線取指、譯碼、發(fā)出、寄存器訪問、執(zhí)行和寫入。它被優(yōu)化用于與DSP相關的處理。1.6.6虛擬存儲器管理MSP-1EX不支持虛擬存儲器管理。1.6.7中斷和異常處理在MSP中的中斷和異常處理大多是由ARM7執(zhí)行的。所有的內部輸入/輸出設備中斷都進入內部8254中斷控制器,該控制器對它們排優(yōu)先級,并向ARM7傳輸一個最高優(yōu)先級的中斷以便進一步處理。1.6.8物理存儲器地址映射當根據(jù)下面圖8所示的物理存儲器進行存儲器映射時,ARM7和矢量處理器程序能看到所有的MSP輸入/輸出設備。請注意,被ARM7(或矢量處理器)看到的MSP地址映射從零開始并一直擴展到4GB。從2GB到4GB的區(qū)域中,地址根據(jù)下述關系被映射到從0到2GB的主(Pentium)PCI地址;主PCI地址=ARM7地址-80000000(16進制)這個映射允許ARM7(或矢量處理器)使用從2GB到4GB范圍內的地址對從0到2GB范圍內的主PCI存儲器進行訪問。2GB以外的所有主PCI存儲器地址都不能被ARM7訪問。根據(jù)圖9所示更加有限的物理地址映射進行存儲器映射時,主機(Pentium)程序能看到所有的MSP輸入/輸出設備請注意,從主機(Pentium)程序的角度來看;·MSP_BASE是MSP地址映射的開始·MSP_BASE+7DFFFFF是MSP地址映射的結束·MSP地址映射僅僅被定義在128MB的范圍之內。表3MSPI/O設備地址映射1.6.9MSP主機控制寄存器MSP-1EX包含有一個專用寄存器,該寄存器被用于由主機(Pentium處理器)進行的初始化和中斷。表4-MSP主控制寄存器定義位<0>PCI系統(tǒng)復位。這個位由主機(Pentium)使用去完全復位全部MSP系統(tǒng)硬件,包括所有與MSP相關的內部和外部輸入/輸出設備。在PCI系統(tǒng)復位之后,MSP將經(jīng)過它的標準復位順序,包括執(zhí)行用于ARM7、矢量處理器和I/O設備的所有片內自測試診斷程序。這個復位等效于硬件系統(tǒng)復位。位<1>ARM7和矢量處理器重新啟動。這個位由主機(Pentium)使用去重新啟動ARM7和矢量處理器,在MSP不通過任一其正常復位順序以及不執(zhí)行任一個片內自測試診斷程序的意義上講,這個重新啟動不同于全部PCI系統(tǒng)的重新啟動。當這個位被置位時ARM7將從地址0開始執(zhí)行,且矢量處理器將進入空閑模式。沒有一個內部或外部I/O設備受到影響。位<2>來自主機(Pentium)的MSP中斷請求。這個位由主機(Pentium)使用去直接中斷MSP,且它被連接到內部8259可編程中斷控制器(PIC)的一個輸入上,而該中斷控制器被用于中斷ARM7,這個位由主機(Pentium)置位并由ARM7清除。位<3>PCI主中斷應答。這個位由主機(Pentium)使用去應答由MSP產生的PCI主機中斷請求。這個位由主機(Pentium)置位并由ARM7清除。位<314>備用1.6.10MSPARM7控制寄存器MSP-1EX包含有一個專用寄存器,該寄存器被ARM7用于中斷主機。表5MSPARM7控制寄存器定義位<0>來自MSP的PCI主機中斷。這個位被MSP使用通過PCI總線上的PCIINTA#管腳的有效確定去中斷主機。這個位由ARM7置位并由主機(Pentium)通過PCI總線清除。位<311>備用1.6.11MSP內部uROM內部ROM包含有總數(shù)為16K的字節(jié)并包括;·uROM初始化軟件·自測試診斷軟件·各種系統(tǒng)管理軟件·用于某些指令和數(shù)據(jù)常數(shù)其地址映射的高速緩存示于下面表6。表6內部uROM地址映射1.6.12MSP內部SRAM內部SRAM根據(jù)MSP的矢量和控制和狀態(tài)寄存器(VCSR)指定的選擇可以被用做高速緩存或局部存儲器。在局部存儲器模式中,它的地址空間被映射到內部SRAM部分,開始于地址位置<MCP_BASE>0400000處開始。1.6.13MSP內部外圍設備MSP還包含有多個位于其2個內部總線64位、80MHzFbus和32位、40MHzIObus上的外圍設備。在FBUS總線上的設備包括·用于外部同步DRAM的存儲器控制器·虛擬幀緩沖器接口·用于外部PCI總線的PCI總線控制器·用戶ASIC接口·8通道DMA控制器·存儲器數(shù)據(jù)搬移器(用于主存儲器到/從SDRAM數(shù)據(jù)傳輸)·KS0122編碼譯碼器串行線·KS0119編碼譯碼器串行線·AD1843編碼譯碼器串行線在IObus總線上的設備包括·8254兼容可編程間隔定時器·8259兼容可編程中斷控制器(8級)·16450兼容UART串行線·用于MPEG視頻位流譯碼和編碼的位流處理器這些外圍設備的寄存器地址映射示于表7。表7內部外圍寄存器地址映射</tables>1.6.14IOBUS外圍設備1.6.14.18254兼容可編程間隔定時器MSP包括一個由具有下述功能的軟件使用的標準8254兼容可編程間隔定時器·包含有3個獨立的16位計數(shù)器·支持6個可編程計數(shù)模式所有的計數(shù)器都可以通過寫入控制字寄存器和初始計數(shù)被編程??刂谱旨拇嫫鬟@個寄存器包含有用于定時器的各種控制信息。在下面的表8中描述了它的位定義。表8控制字寄存器狀態(tài)寄存器這個寄存器包含有定時器的狀態(tài)信息。計數(shù)器0、1和2這3個計數(shù)器是定時器的主要計數(shù)元件。每個計數(shù)器的寬度是16位,可預置并且可以以二進制或BCD模式減計數(shù)。它的輸入、選通和輸出是通過選擇存儲在控制字寄存器中的MODES來配置的。這3個計數(shù)器完全是獨立的。1.6.14.28259兼容可編程中斷控制器(PIC)MSP可編程中斷控制器是一個標準的8259,這種控制器常見于基于x-86的個人計算機中。它的功能包括·支持8級優(yōu)先權·可編程中斷模式·單個請求屏蔽能力在MSP-1EX中,8級中斷輸入被暫時如下指定給各種I/O設備·級0(最高)被指定給8254定時器·級1被指定給虛擬幀緩沖器(VFB)·級2被指定給包括DMA控制器在內的用戶ASIC邏輯塊·級3被指定給位流處理器·級4被指定給PCI總線接口·級5被指定給<tbd>·級6被指定給<tbd>·級7被指定給16550UART中斷控制器的輸出信號被連接到ARM7RISCCPU的中斷請求線(nFIQ)上。寄存器描述共有三個用于初始化PIC操作的8位寄存器·初始化命令字1(ICW1)·初始化命令字2(ICW2)不用于MSP-1EX·初始化命令字3(ICW3)不用于MSP-1EX·初始化命令字4(ICW4)還有另外三個用于控制PCI操作的8位寄存器·操作控制字1(OCW1)·操作控制字2(OCW2)·操作控制字3(OCW3)請注意,所有這些寄存器的尋址都是在地址部分(位<0>)和數(shù)據(jù)部分被特殊編碼的。請更詳細參閱標準8259的說明書。表9-8259寄存器描述<tablesid="table30"num="030"><tablewidth="600">位<43>必須是“0”位<75>001非專用EOI命令011專用EOI命令101在非專用EOI命令上旋轉100以自動EOI模式旋轉(置位)000以自動EOI模式旋轉(清除)111在專用EOI命令上旋轉110設置優(yōu)先級命令010不操作ICW3<70>操作控制字3位<10>10讀中斷請求寄存器(IRR)11讀服務程序寄存器(ISR)00無動作01無動作位<2>輪詢命令位<43>必須是“0”位<5>專用屏蔽模式位<6>使能專用屏蔽模式位<7>必須是“0”</table></tables>1.6.14.316450兼容UART串行線MSP包括一個16450兼容的UART串行線,該串行線被用做與外部串行I/O設備的接口。請更詳細參閱標準16450說明。1.6.14.4位流處理器位流處理器是一個專用邏輯塊,用于對視頻位流進行處理。其功能包括·變長哈夫曼譯碼和編碼·曲折存儲格式的視頻數(shù)據(jù)的解包和打包·其他雜項位級處理位流處理器作為一個并行處理單元工作,并處于矢量處理器或ARM7的軟件控制下。更詳細的內容請參閱位流處理器一章。1.6.15FBUS外圍設備FBUS外圍設備包括用戶ASIC邏輯接口·8通道DMA控制器·到SAMSUNG的KS0119的視頻譯碼器串行線接口·到ANALOGDEVICES的AD1843的音頻和電信串行線接口1.6.15.1ASIC接口邏輯接口這部分包括到所有外部編碼譯碼器和用戶專用ASIC邏輯塊的接口邏輯。這個塊的一切都是由硬件執(zhí)行的,并且沒有程序可視的寄存器。詳細內容請參閱ASIC接口一章。1.6.15.2DMA控制器MSP一1EX包含有一個具有下述功能的片內DMA控制器·8個單獨的DMA通道·單個DMA通道的使能/禁止控制·IO設備到存儲器傳輸或相反·地址增加或減小詳細內容請參閱ASIC接口一章。1.6.15.3存儲器數(shù)據(jù)搬移器MSP還包含有另一個專用存儲器數(shù)據(jù)搬移器,它被用于使數(shù)據(jù)在主機(Pentium)存儲器和MSP局部SDRAM存儲器之間搬移數(shù)據(jù)。所述存儲器數(shù)據(jù)搬移器基本上是一個專用DMA控制器,它包含下述寄存器·MSP當前地址寄存器,這個32位寄存器定義存儲器數(shù)據(jù)傳輸開始處的SDRAM存儲器地址。這個寄存器能夠被ARM7讀或寫并由ARM7加載初始值。其地址將根據(jù)數(shù)據(jù)傳輸長度增加?!ぶ鳈C當前地址寄存器這個32位寄存器定義在存儲器數(shù)據(jù)傳輸開始處的主機存儲器地址。這個數(shù)據(jù)能夠被ARM7讀或寫并由ARM7加載初始值。其地址將根據(jù)數(shù)據(jù)傳輸長度增加?!SP停止地址寄存器這個32位寄存器定義在存儲器數(shù)據(jù)傳輸結束處的SDRAM存儲器地址。這個寄存器能夠被ARM7讀或寫并將被用于和MSP當前地址寄存器相比較。如果它們之間相互匹配,存儲器數(shù)據(jù)搬移器將產生一個MSP處理結束信號。·主機停止地址寄存器這個32位寄存器定義在存儲器數(shù)據(jù)傳輸結束處的主機存儲器地址。這個寄存器能夠被ARM7讀和寫并將被用于和主機當前地址寄存器比較。如果它們之間相互匹配,存儲器數(shù)據(jù)搬移器將產生一個主機處理結束信號?!顟B(tài)寄存器這個寄存器包含有與存儲器數(shù)據(jù)搬移器相關的狀態(tài)信息。其位編碼如下<0>MSPEOP。這個位指定存儲器數(shù)據(jù)搬移器是否已經(jīng)達到MSP停止地址。如果ARM7初始化源當前地址寄存器,那么,它將被復位到00800000(16進制)。這個位只被ARM7讀出而不被寫入。<1>主機EOP。這個位指定存儲器數(shù)據(jù)搬移器是否已經(jīng)達到主機停止地址。如果ARM7初始化主機當前地址寄存器,那么,它將被復位到80000000(16進制)。這個位只被ARM7讀出而不被寫入。·控制寄存器這個寄存器包含有與存儲器數(shù)據(jù)搬移器相關的信息。其位編碼如下<0>方向。這個位指定數(shù)據(jù)傳輸?shù)姆较?。如果它是?”(缺省),數(shù)據(jù)傳輸?shù)姆较蚴菑闹鳈C(Pentium)存儲器到MSPSDRAM存儲器。如果它是“1”,方向是從SDRAM到主機存儲器。這個位將由ARM7寫入。<1>中斷使能。這個位指定存儲器數(shù)據(jù)搬移器是否應當在數(shù)據(jù)傳輸結束中斷ARM7。這個位由ARM7寫入。<2>DMA使能。這個位使能存儲器數(shù)據(jù)搬移器工作。這個位將由ARM7寫入。<3>數(shù)據(jù)傳輸長度。如果它是“0”(缺省),每次存儲器數(shù)據(jù)傳輸?shù)拈L度是32個字節(jié),如果它是“1”,該長度是64字節(jié)。這個位將由ARM7寫入。1.6.15.4KS0119視頻編碼器串行線接口KS0119視頻編碼器串行線接口包括·雙緩沖器接收數(shù)據(jù)緩沖寄存器,它包含有從編碼譯碼器中讀出的數(shù)據(jù)?!るp緩沖器發(fā)送數(shù)據(jù)緩沖寄存器,它包含有向編碼譯碼器寫入的數(shù)據(jù)。·控制和狀態(tài)寄存器,它包含有用于所述串行線的各種控制和狀態(tài)信息。表10KS0119視頻編碼器串行線接口寄存器控制和狀態(tài)寄存器的位編碼如下位<0>接收數(shù)據(jù)緩沖器滿。當所述串行線從KS0119編碼譯碼器中接收到8位數(shù)據(jù)時,置位這個位。如果中斷使能(位<7>)被置位,那么,一個中斷請求將被提供給ARM7。位<1>發(fā)送數(shù)據(jù)緩沖器空。當串行線被準備好向KS0199編碼譯碼器發(fā)送數(shù)據(jù)時,這個位被置位。如果中斷使能(位<7>)被置位,那么,將向ARM7提供一個中斷請求。位<7>中斷使能。這個位被用于使能到ARM7的中斷請求。1.5.15.5AD1843音頻和電信串行線接口這個AD1843串行線接口包括·一組雙緩沖寄存器,包含有從編碼譯碼器中讀出的數(shù)據(jù)?!ひ唤M雙緩沖寄存器,包含有向編碼譯碼器寫入的數(shù)據(jù)。·控制和狀態(tài)寄存器,包含有用于串行線路的各種控制和狀態(tài)信息。請詳細參閱AD1843編碼譯碼器接口一章。1.6.16指令性能表11以周期數(shù)示出了矢量處理器中的指令性能,其中每個周期等于12.5ns。在40MHz的頁模式的情況下,外部存儲器總線的寬度被假設為64位。所有指令性能被以32位矢量模式給出。約定如下ras第一次存取外部存儲器所需要的周期數(shù)。通常等于75ns或6個周期等待時間用于執(zhí)行第一指令所需要的周期數(shù)速度在類似的連續(xù)指令執(zhí)行之間的周期數(shù)當?shù)却龝r間與速度相同時,只示出一個數(shù)字。表11指令執(zhí)行性能第二章DSP內核這一章描述硬件和軟件設計者所看到的DSP內核的規(guī)定。2.1綜述DSP內核是MCP的一個基本構件,并且只負責所有的計算。它由下述部件組成·運行于40MHz并用于諸如實時OS、中斷和執(zhí)行處理、輸入/輸出設備管理等通用數(shù)據(jù)處理的32位ARM7RISCCPU?!み\行于80MHz并用于諸如離散余弦變換,F(xiàn)IR濾波、卷積、視頻運動估計等數(shù)字信號處理的矢量處理器。該矢量處理器由ARM7啟動,并能夠與ARM7并行工作,并利用專用控制指令和ARM7同步?!み\行于80MHz并包含有用于ARM7的1KB指令和1KB數(shù)據(jù)高速緩存、用于矢量處理器的1KB指令和4KB數(shù)據(jù)高速緩存以及用于ARM7和矢量處理器兩者的共享16KB集成指令和數(shù)據(jù)高速緩存ROM的高速緩存子系統(tǒng)。用于矢量處理器的數(shù)據(jù)高速緩存能夠被硬件或軟件控制。該高速緩存子系統(tǒng)通過32位數(shù)據(jù)總線和ARM7接口并通過128位數(shù)據(jù)總線和矢量處理器接口。·32位、40MHz輸入和輸出總線(IOBUS),用于與諸如位流處理器、中斷控制器、定時器和UART等各種內部外圍設備接口?!?4位、80MHz快速輸入/輸出總線(FBUS),用于與PCI總線控制器、存儲器控制器、DMA控制器和ASIC用戶邏輯塊接口。DSP內核的方框圖示于圖10。2.2ARM7RISCCPU2.2.1綜述ARM7RISCCPU是一個通用32位RISC處理器內核。它通過一個標準處理器接口與矢量處理器接口,并用于處理MSP中的諸如實時OS、IO設備中斷處理和與主CPU通信等大多數(shù)非計算密集型功能。ARM7CPU的特性·全靜態(tài)操作,理想的功率敏感應用·低功耗0.6mA/MHz@3V制造·高性能25MIPs@40MHz(40MIPs峰值)@3V·大和小Endian操作模式·用于實時應用的快速中斷響應(在40MHz處為22個時鐘周期)·簡單但強大的指令集·非常緊致的布局。大約為6mm2。2.2.2寄存器ARM7共有37個寄存器,包括32個通用寄存器和6個狀態(tài)寄存器。在任一時間,都有16個通用寄存器和以一或兩個狀態(tài)寄存器被對編程者可見。在所有的用戶、管理員、IRQ、RIQ、異常終止和未定義處理器模式內,R0和R15都可直接訪問。除R15以外所有的寄存器都是通用的,并且可以被用于保持數(shù)據(jù)或地址值。寄存器15保持程序計數(shù)器(PC)。狀態(tài)寄存器,CPSR當前程序狀態(tài)寄存器包含有ALU標志和當前模式位。R14被用做子程序鏈接寄存器,并在執(zhí)行分支和鏈接指令時接收R15的拷貝。在所有其它時間,它可以被用做通用寄存器。表12通用寄存器和程序計數(shù)器用戶模式FIQ模式管理員模式異常終止模式IRQ模式未定義模式R0R0R0R0R0R0R1R1E1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8_fiqR8R8R8R8R9R9_fiqR9R9R9R9R10R10_fiqR10R10R10R10R11R11_fiqR11R11R11R11R12R12_fiqR12R12R12R12R13R13_fiqR13_abtR13_irqR13_irqR13_undR14R14_fiqR14_abtR14_irqR14_irqR14_undR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)表13程序狀態(tài)寄存器用戶模式FIQ模式管理員模式異常終止模式IRQ模式未定義模式CPSRCPSRCPSRCPSRCPSRCPSRSPSR_fiqSPSR_sveSOSR_abtSPSR_irqSPSR_und2.2.3異常異常是一種發(fā)生在指令處理期間使控制流改變的反常狀態(tài)。如下所列舉從高優(yōu)先級到低優(yōu)先級共有7種ARM7異?!臀?最高優(yōu)先級)·異常終止(數(shù)據(jù))·FIQ·IRQ·異常終止(預取)·未定義的指令陷井、軟件中斷(最低優(yōu)先級)表14異常矢量表地址異常進入模式00000000復位管理員00000004未定義的指令轉移未定義00000008軟件中斷管理員0000000C異常終止(預取)異常終止00000010異常終止(數(shù)據(jù))異常終止00000014由ARM7保留---00000018IRQIRQ0000001CFIQFIQ2.2.4指令集所有的ARM7指令都可以被有條件地執(zhí)行,這意味著這些指令的執(zhí)行根據(jù)CPSR寄存器中的N、Z、C和V標志的值可能會發(fā)生或不發(fā)生。ARM7指令能夠被分成幾種類型·轉移和伴隨鏈接的轉移(B,BL)·數(shù)據(jù)處理(AND、EOR、SUB、RSB、ADD、ADC、SBC、RSC、TST、TEQ、CMP、CMN、ORR、MOV、BIC、MVN)·PSR傳輸(MRS、MSR)·乘和乘累加(MUL、MLA)·單數(shù)據(jù)傳輸(LDR、STR)·塊數(shù)據(jù)傳輸(LDM、STM)·單數(shù)據(jù)交換(SWP)·軟件中斷(SWI)·協(xié)處理器數(shù)據(jù)操作(CDP)(這是一個指令集)·協(xié)處理器數(shù)據(jù)傳輸(LDC、STC)·協(xié)處理器寄存器傳輸(MRC、MCR)2.3矢量處理器2.3.1綜述這個矢量處理器是一個最大程度使用單指令多數(shù)據(jù)(SIMD)結構以獲得最佳性能的強大的數(shù)字信號處理器,它由一個流水線RISC引擎組成,該引擎并行操作多個數(shù)據(jù)元素以實現(xiàn)最高性能。多個數(shù)據(jù)元素被包裝于一個576位的矢量中,它能夠以如下速度被進行計算?!っ?2.5ns周期執(zhí)行32個8/9位定點算術操作,或·每12.5ns周期執(zhí)行16個16位定點算術操作,或·每12.5ns周期執(zhí)行8個32位定點或浮點算術操作2.3.2執(zhí)行流水線如圖11所示,矢量處理器使用6級流水線用于指令的執(zhí)行。大多數(shù)32位標量操作以每周期一個指令的速度進行流水線處理,同時,大多數(shù)576位矢量操作以每2個周期一個指令的速度進行流水線處理。所有的加載和存儲都與算術操作重疊,并且由單獨的加載和存儲軟件獨立執(zhí)行。為了平衡設計復雜性和性能之間的關系,矢量處理器能夠利用硬件互鎖無序發(fā)出和執(zhí)行指令用于源和數(shù)據(jù)依賴性檢查。這個特性特別改善了由于加載和存儲而在高速緩存數(shù)據(jù)未命中期間內的性能。2.3.3硬件微結構如圖12所示,矢量處理器有4個主要功能塊·取指令單元(IFU)·指令譯碼器和發(fā)出器·指令執(zhí)行數(shù)據(jù)通路·加載和存儲單元(LSU)取指令單元負責指令的預取和對諸如分支和跳向子程序轉移和跳躍的控制流指令進行處理。IFU包含有一個用于當前執(zhí)行流的16項預取指令隊列和用于分支目標流的8項預取指令隊列。IFU每個周期可以從指令高速緩存中接收8個指令。指令譯碼器和發(fā)出器負責所有指令的譯碼和調度。譯碼器每個周期能夠處理一個指令并且總是按照(從IFU得到)指令的順序進行處理,而發(fā)出器能夠根據(jù)可得到的執(zhí)行資源和操作數(shù)據(jù)無序調度大多數(shù)指令,。矢量處理器通過運行于12.5ns/周期的各種288位數(shù)據(jù)通路(圖13)實現(xiàn)其大部分性能,所述矢量處理器包括·四端口寄存器文件,它能夠支持每周期2次讀出和2次寫入?!?個32×32并行乘法器,它們每12.5ns能夠進行8個32位乘法(整數(shù)或浮點格式),或16個16位乘法或32個8位乘法。·8個36位ALU,它們每12.5ns能夠產生8個36位ALU操作(整數(shù)或浮點格式)、或16個16位ALU操作或32個8位操作。加載和存儲單元被設計成通過其中的每一個都是如圖14所示的288位寬的單獨的讀出和寫入數(shù)據(jù)總線與數(shù)據(jù)高速緩存接口。2.3.4中斷與異常矢量處理器只認識2個特殊狀態(tài)·當由ARM7程序執(zhí)行時的CPINT(協(xié)處理器中斷)指令·作為矢量處理器程序執(zhí)行的向子程序指令多重和嵌套跳轉的結果的硬件堆棧溢出。為了更詳細了解矢量處理器是如何處理這兩個獨特條件的,請參閱矢量處理器結構的文獻。在MCP中產生的所有其它中斷和異常條件都由ARM7獨自處理。2.4高速緩存子系統(tǒng)2.4.1綜述高速緩存控制單元(CCU)與ARM7內核、矢量執(zhí)行單元(LSU、IFU)、存儲器(MCU、PCI、DMA、編碼譯碼器)和I/O設備(BP、UART、定時器、中斷控制器)接口。它與高速(80MHz)FBUS和低速(20MHz)IOBUS接口。它實際上變成了一個位于內部CPU內核單元和外圍I/O設備之間的中央數(shù)據(jù)傳輸單元。對于MSP芯片上的CCU的細節(jié),請參閱MSP-1E系統(tǒng)說明中的方框圖(pp.1-10)。為了支持非常高性能的高速緩存系統(tǒng),CCU設計使用了一個基于事務的協(xié)議以支持所有的讀出和寫入操作。如果需要訪問存儲器,任何一個單元都可以向CCU控制單元提出一個請求??刂茊卧械闹俨闷骺梢愿鶕?jù)固定優(yōu)先級授權該請求并將一個transaction_id返回給該請求者。所述請求者保存該trasaction_id,以便識別數(shù)據(jù)實際到達時的返回數(shù)據(jù)。當CCU控制正在處理來自一個單元的請求(如果發(fā)生高速緩存未命中它可能花費很多周期)時,在下一個周期中利用不同的trasaction_id可以授權來自另一個單元的新的請求。這樣,懸而未決的請求將決不會阻斷任何來自其它單元的隨后請求,因此可以實現(xiàn)高性能?,F(xiàn)在,CCU可以在一個周期內同時接收和授權一個讀出請求和一個寫入請求。與存儲器接口的接口單元(FBUS)由4項地址隊列和1項回寫鎖存器組成。由于臟(dirty)高速緩存線的存在,最好它能夠支持一個來自ARM指令高速緩存的懸而未決的再裝(讀)請求、一個來自VEC指令高速緩存的懸而未決再裝(讀)請求、一個來自VEC數(shù)據(jù)高速緩存的寫入請求、和一個來自VEC數(shù)據(jù)高速緩存的回寫請求。為獲得高性能,高速緩存本身也被優(yōu)化。MSP高速緩存系統(tǒng)包含有片內高速緩存SRAM和高速緩存ROM。高速緩存SRAM進一步被分成4個不同的存儲體以避免ARMCPU和矢量內核之間、或指令和數(shù)據(jù)之間的系統(tǒng)失效。高速緩存ROM為ARM7和矢量內核提供高速度和高密度數(shù)據(jù)存儲區(qū)域。雖然用于高速緩存ROM的標簽不能夠被改變,但是有效位能夠被禁止,所以數(shù)據(jù)可以從外部存儲器取回??傊?,片內高速緩存包含下述模塊·具有到ARM7的32位數(shù)據(jù)總線接口的1KB直接映射指令高速緩存和1KB直接映射回寫高速緩存。·具有到矢量取指令單元的256位總線接口的1KB直接映射指令高緩存?!ぞ哂械绞噶繄?zhí)行單元的256位總線接口的4KB直接映射回寫數(shù)據(jù)高速緩存。該數(shù)據(jù)高速緩存是一個雙端口高速緩存,在80MHz每個周期它可以提供256位讀出數(shù)據(jù)和能夠支持256位寫數(shù)據(jù)。·4KB的VEC數(shù)據(jù)高速緩存可以被配置為在軟件控制下的暫存操作。·供ARM7和矢量處理器使用的共享集成指令和數(shù)據(jù)ROM高速緩存。到矢量處理器的接口與它的指令高速緩存通過同一個256位總線,而到ARM7的接口與它的指令高速緩存通過同一個32位總線。·5個端口-用于ARM7的讀寫端口-用于矢量取指令單元的讀端口-用于矢量加載/存儲單元的讀/寫端口-用于矢量IJO總線的讀/寫端口-用于FBUS的讀/寫端口·用于ARM7CPU指令高速緩存的32×256位SRAM(-1KB)·用于ARM7CPU數(shù)據(jù)高速緩存的32×256位SRAM(-1KB)·用于矢量處理器數(shù)據(jù)高速緩存的128×256位SRAM(-4KB)·用于矢量處理器指令高速緩存的32×256位SRAM(-1KB)·用于數(shù)據(jù)和指令高速緩存的512×256位ROM(-16KB)矢量數(shù)據(jù)高速緩存可以由硬件或軟件控制。2.4.2高速緩存子系統(tǒng)的結構圖15的方框圖示出一個MSP高速緩存系統(tǒng)。它由下述部件組成IDC(指令數(shù)據(jù)高速緩存)、高速緩存ROM、CCU_DATA_DP、CCU_ADR_DP、CCU_CTL和CCU_SM。將對每個子部件進行詳細描述。2.4.2.2IDC指令和數(shù)據(jù)高速緩存(IDC,見圖16)是一個片內SRAM存儲器,它被用于為指令和數(shù)據(jù)高速緩存訪問服務。它由位于一個陣列內的4個存儲體組成RAM_IC(1KB)、ARM_DC(1KB)、VEC_IC(1KB)和VEC_DC(4KB)。在任一周期中,它可以接收一個讀請求和一個寫請求。標簽RAM具有兩個讀端口。讀端口地址和寫端口地址可以和內部高速緩存標簽比較以用于命中或未命中條件。數(shù)據(jù)RAM只有一個讀端口,該端口被讀端口地址訪問??梢岳貌煌M的寫地址向標簽RAM和數(shù)據(jù)RAM進行寫入。因此,需要4組高速緩存存儲體選擇信號和3組行索引對高速緩存陣列進行訪問。*注意在圖16中Tagram,v/dram具有1/2字線。IDC具有下述特性·利用回寫策略的直接映射。·高速緩存線的長度為64B位,但數(shù)據(jù)寬度只有32B,這也是MSP芯片的矢量數(shù)據(jù)長度?!っ總€線具有兩個有效位,其中的一個用于高矢量,另一個用于低矢量。另外,所述數(shù)據(jù)緩存具有兩個無效位,每個矢量一個。·標簽長度為22位(地址位10-位31),用于ARM_IC、ARM_DC和VEC_IC。它具有用于VEC_DC的20位(地址位12_位31)?!ぞ€索引位為5位(地址位5_位9),用于ARM_IC、ARM_DC和VEC_IC。它是用于VEC_DC的7位(地址位5_位11)。·VEC_DC(4KB)能夠在軟件控制下被再配置為高速暫存?!_CLEAR信號被用于同時全局復位高速緩存有效位。將來,V_CLEAR將只選擇性地復位各個存儲體。2.4.2.3數(shù)據(jù)通路流水線見圖17。2.4.2.4地址通路流水線用于地址處理流水線的數(shù)據(jù)通路示于圖18。CCU地址DP2.4.3接口2.4.3.1數(shù)據(jù)類型CCU處理來自各種請求單元的不同的數(shù)據(jù)類型示于表15。表15在處理不同數(shù)據(jù)類型中CCU的操作2.4.3.2ARM接口ARM7CPU內核運行于頻率的一半(40MHz),而CCU運行于MSP芯片的全頻率(80MHz)。在設計中,這兩個時鐘的同步是重要的。根據(jù)一般規(guī)律,只有在CLKI的上升沿處,時鐘發(fā)生單元才轉換MCLK。另外,只有當CLK1和MCLK都是低電平時,位于ARM7中的全局復位信號才不被斷言。在這種方式下,兩個單元才被適當同步。雖然,ARM7只有一個用于指令和數(shù)據(jù)的輸入總線(ARM_DATA<310>),但是,rasp芯片被裝備有專用指令高速緩存(ARM_IC、1KB)和數(shù)據(jù)高速緩存(ARM_DC、1KB)。CCU能夠使用ARM_NOPC區(qū)別這兩種請求。為了進一步改善性能,CCU還在主高速緩存和ARM7內核之間附加有一個微指令高速緩存(UI_CACHE,32B)和一個微數(shù)據(jù)高速緩存(UD_CACHE,32B)。這兩個高速緩存包含有8個字,每個字的作用相當于一個序列代碼和數(shù)據(jù)。這兩個微高速緩存包含有它自己的標簽(27位)、特征比較器和有效位。在系統(tǒng)復位期間,這些有效位都被清除。比起實時高速緩存來講,ARM7微高速緩存的工作更象預取緩沖器。在ARM7讀出期間,地址(ARM_A<310>)總是于所述標簽比較。命中將通過ARM_DATA<310>讀回指令或數(shù)據(jù)。微高速緩存未命中然后將地址、數(shù)據(jù)類型和其它控制信息與所述請求一起給CCU。CCU的仲裁邏輯將授權來自發(fā)出讀出請求的所有單元的所述請求?,F(xiàn)在,在獲得授權方面,ARM7具有高于其它塊的最高優(yōu)先級。這是由于ARM7相對較少地發(fā)出請求,除非它的微高速緩存具有一個未命中。但是,CCU可以具有一個內部保持周期,以便服務于多周期請求或地址隊列滿狀態(tài)。在這個周期期間,不會有外部請求被授權。如果地址命中UD_TAG,來自AMR7的寫總是使UD_CACHE無效。沒有試圖將UD_CACHE設計成write-through或write-back高速緩存。通過強迫UD_CACHE寫命中無效,可以在ARM7_DC和UD_CACHE之間保持數(shù)據(jù)的連貫性。CCU控制arm_nwait,同時產生到ARM_IC或ARM_DC的讀出或寫入請求。通常,在寫入期間,CCU不保持arm_nwait。一旦寫入請求被授權而沒有看到ccu_write_hold2,ARM7在后面周期中簡單驅動ARM_DATA<310>中的數(shù)據(jù)。CCU具有一個用于保持數(shù)據(jù)的內部寫緩沖器。ARM7可以繼續(xù)執(zhí)行指令。但是,對于每一個周期來講,即使是所述數(shù)據(jù)駐留在主高速緩存中,CCU也總是保持arm_nwait。如果讀出請求沒有命中主高速緩存,將保持更多的周期,直到數(shù)據(jù)從外部主存儲器返回為止。示于圖19的ARM_CCU接口狀態(tài)機示出了CCU如何控制arm_nwait的狀態(tài)。在圖19中START如果沒有請求,或讀出數(shù)據(jù)被返回,或寫請求而沒有保持時狀態(tài)機的起始狀態(tài)。HOLDCCU授權用于讀出和寫入的ARM7請求,但是利用保持信號廢除所述授權。TAGCCU正在利用讀出地址檢查所述標簽。MISS讀出地址沒有命中,CCU傳送一個再請求給外部dram。DATA讀出數(shù)據(jù)返回和CCU驅動它到微數(shù)據(jù)高速緩存。2.4.3.3FBUS接口CCU-FBUS接口狀態(tài)機(F-SM)示于圖20。在圖20中IDLE空閑狀態(tài)。REQ令讀出或寫入請求到FBUS仲裁器。GRT1授權長度大于8B。GRT2授權長度大于16B。GRT3授權長度大于24BGRT4驅動用于最后一個周期的數(shù)據(jù)。數(shù)據(jù)接收器狀態(tài)機(D-SM)示于圖21。在圖21中IDLE空閑狀態(tài)。ONE從Fdata<630>中接收第一個8B數(shù)據(jù)。TWO從Fdata<630>中接收第二個8B數(shù)據(jù)。THREE從Fdata<630>中接收第三個8B數(shù)據(jù)。FOUR從Fdata<630>中接收第四個8B數(shù)據(jù)。REFILL在將數(shù)據(jù)返回給請求者之前再裝IDC。RDY準備好向請求者返回數(shù)據(jù)。2.4.4讀出和寫入操作讀出和寫入狀態(tài)機示于圖22。2.4.4.1讀出操作MSP中的IDC(指令和數(shù)據(jù)高速緩存)以三級流水線周期工作請求周期、標簽周期和數(shù)據(jù)周期。在高速緩存被命中的情況下,IDC能夠在每個周期返回指令或數(shù)據(jù)。高速緩存控制器單元(CCU)執(zhí)行ARM7、矢量處理器單元、FBUS和IOBUS中的仲裁,以便用于高速緩存SRAM的訪問。CCU監(jiān)視來自這4個主控器的總線請求和將總線授權給具有規(guī)定ID號的優(yōu)勝者。CCU還產生高速緩存地址總線和讀/寫控制信號以對高速緩存進行訪問和進行標簽比較。如果具有一個高速緩存命中,在仲裁中獲勝的總線主控器將能夠對高速緩存進行訪問以用于讀/寫操作。如果具有一個高速緩存未命中,CCU將在沒有等待未命中數(shù)據(jù)從主存儲器返回的情況下為產生一個請求的下一個總線主控器服務。這樣,具有高速緩存未命中的總線主控器必須保持所述ID號。然后,如果被請求的數(shù)據(jù)位于所述高速緩存中,CCU將傳送GRANT信號給具有相同ID號的未命中數(shù)據(jù)總線主控器。這個總線主控器可以接收數(shù)據(jù)或忽略所述數(shù)據(jù)。當有一個高速緩存未命中時,執(zhí)行一個行讀取以便從主存儲器中得到數(shù)據(jù)。所述行長度被規(guī)定為64個字節(jié),這樣,CCU將執(zhí)行8次連續(xù)的存儲訪問(每次64位)以從主存儲器中獲得數(shù)據(jù)給高速緩存。·請求周期·在CLK1中,CCU將從各個單元(ARM、IFU、LSU、IO)中接收讀出請求。請求者將在CLK1的前面部分中認定請求信號(lsu_req)和讀/寫信號(lsu_rw)。在CLK1的結束處,CCU將通過驅動ccu_grant_id[90]授權這些讀出請求中的一個。如果ccu_grant_id[96]與請求者的unit_id相互匹配,所述請求將被授權。由于它是和請求相關的事務ID,所以,請求者應當鎖存ccu_grant_id[50]。在CLK2中,如果請求被授權,請求者將驅動地址(lsu_adr[310])和諸如cacheoff操作(lsuccu_of)和數(shù)據(jù)類型(lsu_vec_type[10])、lsu_data_type[20]的其它信息給CCU。如果ccu_rd_hold_2沒有在CLK2的末端斷言,所述請求將全部被CCU獲取,并且所請求的數(shù)據(jù)將在某個時間之后返回。但是,如果ccu_rd_hold_2被斷言,請求者將保持驅動所述地址和控制信號,其情形類似于在CLK1中的授權請求被廢除的情形。在下一個周期中,由于所有在前grant_id信息仍然是有效的,所以,不在產生一個相同的讀出請求。在CLK1中ccu_rd_hold_2將保持恒定,直到它在CLK2中被CCU解認定為止。ccu_rd_hold_2是一個實時信號。它被用于告訴請求者CCU正忙于處理當前周期中其它事項的請求,且被授權的請求還不能夠被處理。·標簽周期如果請求被授權且在請求周期中的稍后沒有被廢除,它將進入高速緩存訪問的標簽比較階段。CCU將使用地址(lsu_adr[115]和存儲體選擇信號(請求者)產生一個用于所述標簽讀出的行選擇。標簽命中信號(ccu_lsu_hit_2)將在CLK2快結束時被了解。在下一個周期中的數(shù)據(jù)將被返回以用于命中情況。讀出端口標簽將被CLK2以任何方式讀出并鎖存。在這個周期中,還對址隊列狀態(tài)做出評價。標簽未命中和almost_full_address_queue將認定ccu_rd_hold_2信號。CCU狀態(tài)機將不處理任何新的讀出請求,而是重試被終止的標簽比較。由于每個高速緩存行(64B)包含有兩個矢量,所以,存取矢量的有效位是有效的,以便獲得一個標簽命中。關于雙矢量(64B)數(shù)據(jù)讀出,兩個有效位必須是有效的,以便獲得標簽命中。cc_off操作將總是產生一個標簽未命中,而所述請求將被發(fā)送到地址隊列中?!?shù)據(jù)周期這是一個CCU將數(shù)據(jù)返回給請求者的周期。數(shù)據(jù)將被放置在ccu_dout[1270]上,在CLK1中驅動低16B,在CLK2驅動高16B。對于64B數(shù)據(jù)請求來講,使用一個附加的周期去完成所述傳輸。CCU總是在(CLK2)早半個周期驅動ccu_data_id[90]以告訴請求者數(shù)據(jù)將在隨后CLK1中被返回,所述請求者將總是和ccu_data_id[90]比較,以用于適當返回的數(shù)據(jù)。另外,標簽命中也被用做被返回數(shù)據(jù)的指示。如果在標簽周期中有一個標簽未命中和所述地址隊列沒有被填滿,CCU在CLK1將通過將未命中地址、id信息和其它控制信息記入4項地址隊列中開始高速緩存行的讀取。現(xiàn)在,每個地址隊列包含69位信息。在CLK2中,存儲器地址鎖存將被加載以便使FBUS請求能夠在下一個CLK1中產生。2.4.4.2寫操作IDC中的寫操作也以3級流水線周期,即請求周期、標簽周期和數(shù)據(jù)寫周期進行。在寫地址命中的情況下,IDC能夠在每個周期中向高速緩存數(shù)據(jù)陣列寫入數(shù)據(jù)?!ふ埱笾芷贑CU在CLK1接收來自各單元(ARM、LSU、IO)的寫請求。請求者將在CLK1前端認定請求信號(lsu_req)、讀/寫信號(lsu_rw)和矢量類型(lsu_vec_type[10])。在CLK1結束時,CCU將授權這些寫請求中的一個。對不同單元的寫授權是通過直接認定一個授權信號(ccu_lsu_wr_grant)給請求單元進行的。由于沒有數(shù)據(jù)將被返回,所以,不需要請求單元從CCU中接收transaction_id。在CLK2中,請求者將提供地址(lsu_adr[310])、cc_off信號(lsu_ccu_off和數(shù)據(jù)類型(lsu_data_type[20])。與讀出情況相同,CCU可以在靠近CLK2終點時認定ccuwrhold_2從而告訴請求者雖然已經(jīng)被授權但在當前周期中還不能夠被處理。所述請求者將保持驅動地址、cc_off信號和數(shù)據(jù)類型信息,直到ccu_wr_hold_2被解認定為止。在后續(xù)周期中,請求者將提供寫數(shù)據(jù)給ccu_dout[1270]?!撕炛芷诩偃缯埱蟊皇跈嗖⑶以谡埱笾芷诘纳院鬀]有被廢除,它將進入高速緩存訪問的標簽比較階段。這是一個寫端口地址標簽比較。CCU將使用地址(lsu_adr[115])和存儲體選擇信號(請求者)產生一個用于所述高速緩上的行選擇。標簽命中信號(cculsuhit_2)將在CLK2快結束時被了解。cc_off將總是產生一個標簽未命中,而寫數(shù)據(jù)將被置于FBUS上以用于外部寫入。請求者將開始在CLK1將低16B和在CLK2將高16B的數(shù)據(jù)驅動到ccu_din[1430]。關于64B數(shù)據(jù)傳輸,請求者將利用一個附加周期去驅動數(shù)據(jù)。應當注意,CCU具有一個內部寫數(shù)據(jù)鎖存器以保持這個數(shù)據(jù)。不管這個寫數(shù)據(jù)是命中高速緩存(實際寫數(shù)據(jù)到高速緩存需要一個或兩個周期)還是沒有命中高速緩存(需要許多周期去寫數(shù)據(jù)),請求者現(xiàn)在都將認為寫入已經(jīng)結束?!?shù)據(jù)寫周期這是一個用于高速緩存命中情況的CCU實際寫數(shù)據(jù)到高速緩存有效寫入數(shù)據(jù)的周期。如果在標簽周期中有標簽沒有命中的情況,CCU將根據(jù)數(shù)據(jù)類型對其進行不同的處理。如果數(shù)據(jù)類型是32B和行被清零(兩個矢量都被清零),CCU將利用一個新標簽和新數(shù)據(jù)簡單重寫現(xiàn)存行。在將相同行中的其它矢量保留為無效的同時,將所述訪問矢量標簽為有效和無效的。如果數(shù)據(jù)類型小于32B,這將變成部分數(shù)據(jù)寫。這個部分數(shù)據(jù)將被保持在一個暫存寄存器中。CCU將從存儲器中讀取未被命中的半行(32B)并將其加載回到所述高速緩存中。然后,利用適當?shù)淖止?jié)使能信號將所述部分數(shù)據(jù)寫入到高速緩存行中。關于無效高速緩存行的所有寫未命中,CCU將首先拷貝所述無效行。由于還不能得到無效數(shù)據(jù),所以,CCU將認定保持所述授權邏輯,從而使沒有新的讀或寫請求能夠被授權。然后,它將使用所述無效行地址開始一個內部讀以讀取無效高速緩存行數(shù)據(jù)。最后,回寫地址和數(shù)據(jù)將被傳輸給存儲器。2.4.5編程模型高速緩存子系統(tǒng)完全是通過裝載和存儲指令由硬件控制的,因此,不需要任何軟件可視的寄存器。2.4.6IDC和ROM地址格式示于圖23。第三章IO總線描述這一章描述從硬件設計者角度的該IOBUS的規(guī)定。3.1綜述IO總線被設計用于系統(tǒng)將要使用的慢速“標準外圍”設備。這個總線將被用做MSP高速緩存控制單元(CCU)、位流處理器(BSP)和諸如定時器/中斷控制器和UART等其它IO外圍設備之間的主要接口。總線格式非常類似于Intel公司的IO總線。具有一個總線仲裁器控制邏輯,用于使用循環(huán)方案不斷地監(jiān)視總線上是否有請求并產生適當?shù)恼埱笫跈唷?赡艿目偩€主控器應該總是認定一個總線請求并在占據(jù)任何總線之前等待總線授權被認定。總線主控器根據(jù)根據(jù)協(xié)議總是驅動地址和控制線持續(xù)所述周期的時間。IO總線是運行于40MHz的完全同步的總線。在請求后的周期的采樣為有效時發(fā)生MSPIOBUS上的所有授權。這個總線能夠在4個周期(4個字符組)內處理高達16個字節(jié)的數(shù)據(jù)傳輸。這是通過使用兩個長度位完成的,所述長度位向總線仲裁器指出總線主控器請求的傳輸長度。IO總線具有32位地址和數(shù)據(jù)多路傳輸器。地址總是先于數(shù)據(jù)出現(xiàn)。接收設備使用IOB_ALE(地址鎖存使能)信號鎖存所述地址。即使是8位設備被連接在所述總線上,所有的總線訪問也進行32位傳輸。按照慣例,8位設備使用總線的最低8位[70],16位設備將使用該總線的最低16位[150]。假如一個16位設備企圖與一個8位設備通信,它將把用于8位設備的當前數(shù)據(jù)放置在總線的最低8位上以查閱和鎖存數(shù)據(jù),等等。如果在同一個周期內有多個請求,那么,沒有被授權的請求者總是保持它們的請求直到被IO總線仲裁器授權為止。每個在這個方案中被允許的請求具有很多“總線訪問周期”,最大值可達4*32位傳輸(16個字節(jié))。塊傳輸每次都被分解為多個32位傳輸。所有總線授權都是由IOB總線仲裁器產生的。但是,具有一個并行譯碼邏輯,該邏輯恒定監(jiān)視地址(當有效時)和產生適當?shù)钠x(在下一個時鐘周期上)給所述目標,片選將只是對一個周期并且是在所述地址被認定用于所有讀出和寫入請求之后才總是有效的。每個總線結點具有一個專用片選作為輸入。請參考管腳描述和時序圖。在來自總線仲裁器的GRANTED之后,主控器應該產生2位長度的信息,并在其后的2個總線周期有效。所選擇的從控器必須捕獲當CS被認定以確定總線傳輸周期時的長度信息,不管是寫還是讀,IO總線仲裁器都能夠保持對傳輸長度的跟蹤以確定在開始查詢新請求之前執(zhí)行總線周期的時間。請注意,在Burst總線傳輸(不管是讀還是寫)的數(shù)據(jù)之間,不存在有“間隙”。對于數(shù)據(jù)讀出傳輸,READY信號被用于向請求者指出數(shù)據(jù)有效的時間和開始鎖存所述數(shù)據(jù)的時間。這個READY信號是由總線主控器和從控器兩者產生的。為了遵守這個協(xié)議,所有的IO總線結點在處理請求之前都必須設計一個IO總線接口。這個總線接口將遵守這個說明。3.2管腳描述下面是由總線主控器看見的用于系統(tǒng)IO總線的地址、數(shù)據(jù)和控制信號的定義。圖24示出了IO總線結構定義。如前所述,IO總線是多路復用的地址/數(shù)據(jù)總線?!皒xx”是一個三字母代碼,用于識別請求名稱(ccu、bsp,urt,tmr,int)。系統(tǒng)IOBUS信號定義3.3邏輯描述IOBus仲裁控制單元示于圖25。3.4IOBus定時IOBus讀出定時(傳輸長度=1個字(4個字節(jié)))示于圖26。IOBus寫入定時(讀出長度=1個字(4個字節(jié)))示于圖27。IOBus讀出定時(傳輸長度=4個字(16個字節(jié)))示于圖28。IOBus寫入定時(傳輸長度=4個字(16個字節(jié)))示于圖29。第四章FBUS描述這一章描述從硬件設計者角度看的有關FBUS的規(guī)定。4.1綜述存儲器控制器、PCI、用戶Asic和高速緩存子系統(tǒng)都將通過一個非多路復用地址和數(shù)據(jù)總線與系統(tǒng)總線“Fbus”連接。有一個中央Fbus仲裁控制邏輯,該邏輯將使用某種優(yōu)先級方案監(jiān)視所述請求和產生授權??偩€主控器(地址和數(shù)據(jù)源)總是認定總線請求和等待授權。通常,當位于總線之間的請求沒有被另一個主控器/從控器使用時,授權將發(fā)生在同一周期(所有的授權都是組合產生的)。一旦總線授權被主控器接收,地址/數(shù)據(jù)/控制線將在后續(xù)周期傳輸?!皵?shù)據(jù)準備好”信號將總是先于有效數(shù)據(jù)進行處理以向接收器指出開始鎖存后續(xù)周期。為了利用最大總線寬度,四(4)個連續(xù)的請求可以以背對背的流水線方向被接收/發(fā)送,和為了為所有的請求服務,將需要“requestFifo”。存儲器控制器具有四(4)個深請求Fifo和兩(2)個深數(shù)據(jù)Fifo。由于協(xié)議的這個性質,將需要“AF_FULL”和“DF_FULL”信號。它們分別是地址Fifo滿和數(shù)據(jù)Fifo滿。Fbus的數(shù)據(jù)寬度將是8個字節(jié)(64位),地址寬度將是32個字節(jié)。Fbus將使用授權COUNT和Req長度總線支持8、16和32字節(jié)的數(shù)據(jù)傳輸。每個Fbus單元都具有一個控制邏輯對總線進行請求。這個邏輯根據(jù)應用(存儲器/PIC/高速緩存...等)彼此是不同的。但是,有效總線仲裁器在每個單元中是相同的,且在所有子模塊中都是重復的。這個單元將用做在外部總線主控器/從控器和內部單元邏輯之間的一個媒體。例如,在存儲器控制器的情況下,一旦CAS變成“有效”,存儲器控制器就將通過一個用于指出需要使用Fbus的內部信號來認定一個內部請求給Fbus仲裁邏輯。作為對這個請求的答復,F(xiàn)bus控制器將認定一個位于存儲器控制器外部的請求給所述系統(tǒng),并等待授權。一旦接收到授權,地址/數(shù)據(jù)/控制將被從存儲器控制器中的答復和數(shù)據(jù)Fifo的第一項進行傳送。對存儲器控制器的系統(tǒng)請求可以被放置在從1字節(jié)到最大長度32字節(jié)的任何位置處。在請求長度超過32字節(jié)的情況下,源/請求者將使用Fbus的“SIZE”位啟動多路請求。由于SDRAM存儲器總線(1或2SamsungSDRAM1M×16)的限制,上面所述將被執(zhí)行。SDRAM將被編程以包裝八(8)長度,從而實現(xiàn)系統(tǒng)其余部分所需要的全32個字節(jié)。在請求少于32個字節(jié)的情況下,所有的32個字節(jié)都將從SDRAM中取出,但只有所需要的字節(jié)數(shù)被傳輸給目標。還有一個十(10)位請求者ID總線,當具有“片選”信號時,該總線是有效的。(與地址/數(shù)據(jù)同周期)。所有的Fbus結點都能夠產生3位“目標ID”給Fbus仲裁器。伴隨著某些請求,這三個位將是有效的并表示請求的目標。目標ID位[10]被根據(jù)如下的輸入請求譯碼請求ID[96]源目標ID[10]0000保留N/A0001ARM7N/A0010FUN/A0011LSUN/A0100CCU000101ASLC110110MEM010111PCI101xxx保留目標ID位被用于指出讀/寫請求狀態(tài)。這將幫助Fbus仲裁器在只是地址請求(讀出)和地址/數(shù)據(jù)請求(寫)之間進行區(qū)分。通常,授權計數(shù)位“grCNT[10]”表示請求者需要總線的Fbus周期數(shù)量。關于背對背的請求、所述請求向總線主控器指出請求的長度。Fbus主控器控制器根據(jù)兩個授權計數(shù)位認定授權。Fbus是一個支持后讀出的分離事務總線。這意味著請求者請求所述總線和一旦被授權,他將驅動所述地址和完成所述事務。在某個時間之后,從屬/數(shù)據(jù)源將使用目標ID返回數(shù)據(jù)和將相同的請求112返回給所述請求者。這個特性有效地改善了總線帶寬并允許其它主控器更快地使用Fbus。請詳細參閱定時圖。4.2管腳描述下面是系統(tǒng)Fbus的地址、數(shù)據(jù)和控制信號。如上所述,F(xiàn)bus是一個非多路復用的地址/數(shù)據(jù)總線?!皒xx”是三字母代碼,用于規(guī)定請求名(mem、pci、asc、ccu)。表16系統(tǒng)Fbus信號規(guī)定圖30示出了存儲器讀請求Fbus流。圖31示出了存儲器寫請求Fbus流。圖32示出了從主/從“無存儲器”請求Fbus流。圖33示出了集中式Fbus仲裁控制單元。圖34-36是Fbus的時序圖。圖34示出了存儲器寫請求Fbus定時。(示出了8字節(jié)數(shù)據(jù)傳輸。對于16/32/64/128字節(jié),將使用多數(shù)據(jù)周期。)圖35示出了存儲器讀請求Fbus定時(傳輸長度=8個字節(jié))。圖36示出了存儲器背靠背寫請求(傳輸長度32個字節(jié))。第五章PCI總線這一章描述了PCI內核和用于與內部Fbus接口的PCI黏結邏輯的規(guī)定。5.1綜述MSP-IEPCI控制器被設計成遵守PCI總線修訂2.1版的PIC總線規(guī)定。請詳細參考這個標準規(guī)定。PCI單元包含兩個主要部分PCI內核和Fbus的黏結邏輯。PCI內核主要與運行于33MHz的PCI總線速度的外部PCI設備接口。Fbus黏結邏輯接口到運行于80MHz的SAMSUNGFBUS。這個黏結邏輯接口在PCI和FBUS之間。速度同步是通過使用在子塊兩端處的Fifo實現(xiàn)的。SAMSUNGPCI內核還包含一個虛擬幀緩沖器邏輯和需要通過fbus與ARM7接口的所有VFB寄存器。這個PCI單元特有的特性是從主CPUMSP芯片和MSP芯片到主CPU的中斷處理。在這一章中將討論這些特性。5.1.1SAMSUNGPCI內核的方框圖示于圖37。5.2PCIFbus接口邏輯(圖38)PCI內核的這個子塊與MSP內部Fbus和SAND微PCI內核接口。地址和數(shù)據(jù)被存儲在兩端(即來自PCI內核和Fbus)上的Fifo中。這個子塊還負責PCI信號與FBUS的同步,反之亦然。PCI內核邏輯可以是FBUS主和從設備。大部分訪問將通過64位FBUS直接針對局部SDRAM存儲器。請參閱與FBUS協(xié)議描述相關的FBUS一章。PCIFBUS控制邏輯還包含虛擬幀緩沖寄存器和控制。這些寄存器通過FBUS由ARM7編程。請參閱方框圖。5.3PCIVFB邏輯圖39是VFB的方框圖。圖40是VFB寄存器。5.4PCI內核邏輯MSPPCI內核完全遵守PCI2.1的規(guī)定。僅僅是增加了多個用于中斷和軟件MSP復位的寄存器。ARM7中的軟件可以根據(jù)MSP控制寄存器的MSP(位<3>)通過設置PCI主中斷請求中斷主CPU。這將使得PCI內核邏輯通過認定在PCI總線內的中斷管腳(INTA#)中斷主CPU。然后,主CPU通過在MSP控制寄存器中的PCI主中斷確認(位<4>)確認所述中斷。這將使得中斷線進入無效狀態(tài)。MSPPCI內核還可以接收來自主CPU的一個中斷,該中斷基本上是一個到ARM7的中斷。由于PCI規(guī)定不支持任一中斷輸入管腳,所以,來自MSP控制寄存器中HOST(位<2>)的MSP中斷請求被用于提供這個功能。主CPU可以置位這個位以指出到ARM7的中斷。然后,一旦所述主中斷被確認,ARM7將清零這個寄存器。見圖41的方框圖。根據(jù)圖41,需要三個映射到MSP區(qū)域并不占據(jù)PCI空間的寄存器為了獲得關于實際PCI內核的詳細信息,請參閱PCI2.1說明書。第六章存儲器控制器6.1這一章描述從硬件和軟件設計角度來看存儲器控制器的規(guī)定。6.2綜述MSP存儲器控制器將具有用于成本和性能折衷的各種特性和可編程級。存儲器控制器接口在運行于80MHz的主系統(tǒng)總線“Fbus”和DRAM芯片之間。為了實現(xiàn)80MHz時鐘頻率,同步DRAM將被用于最初設計步驟。最后存儲器子系統(tǒng)將支持標準快速頁DRAM、擴展數(shù)據(jù)輸出(EDO)DRAM和同步DRAM。存儲體長度被限制到可相互交錯的兩個(2)外部存儲體。初始同步DRAM存儲器控制器具有操作DRAM所需要的基本最小特性。下面是第一遍存儲器控制器的“基本”特性·支持Samsung同步DRAM?!な褂脙蓚€SDRAM芯片(1M×16)的一個(1)存儲體?!ぶС諧AS先于RAS刷新(CBR)?!ぶС謫幼x-修改-寫操作的部分寫?!ぶС謨炔看鎯w交錯(通過MA[11]的乒乓式)?!?0MHz存儲器和處理器總線(11)頻率匹配?!た删幊趟⑿滤俾??!じ玫乩孟到y(tǒng)總線的地址和數(shù)據(jù)隊列?!ぶС质謩印皟蓚€存儲體預充”。MSP存儲器控制器具有兩個主要子構件數(shù)據(jù)控制器和地址控制器。數(shù)據(jù)控制器具有讀和寫數(shù)據(jù)隊列,用于存儲來自DRAM的讀數(shù)據(jù)和來自處理器總線的寫數(shù)據(jù)。數(shù)據(jù)控制器還包含有所有用于字節(jié)寫的RMW邏輯。對數(shù)據(jù)控制器的所有控制均由地址控制器產生。地址控制器具有請求隊列、應答ID隊列、存儲器地址譯碼邏輯、頁比較器邏輯、RAS/CAS狀態(tài)機、刷新狀態(tài)機和數(shù)據(jù)控制器所用的所有必須的控制信號。SDRAM存儲器時鐘與系統(tǒng)時鐘相同。SDRAM將接收每個控制信號的一個拷貝。6.2.1存儲器控制器的方框圖示于圖42。6.2.2存儲器控制器流示于圖43。6.3地址控制器(AC)存儲器控制器的地址控制器部分將負責產生所有DRAM控制和管理數(shù)據(jù)控制器。MAP存儲器控制器的這個部分還負責Fbus接口的地址和控制通路。隨后的方框圖描述地址控制器單元的各個子部分。6.3.1地址控制器的方框圖示于圖44。6.3.2存儲器控制器請求FifoMSP存儲器控制器具有4個深請求Fifo,用于存儲與稍后到有效存儲器控制器狀態(tài)機傳送相關的所有Fbus地址和控制信息。請求Fifo的每項都具有一個“有效”位,用于指出那個特定項的有效性。存儲器狀態(tài)機總是服務于Fifo中的最低項ENTRY_0。一旦所述請求被服務且列地址選通(CAS)被降低,存儲器控制器將認定一個清除信號去清除這個項。根據(jù)FifoFULL/ENTRY的狀態(tài),一個桶形移位器將被啟動以將有效內容移入項0。MSP存儲器控制器請求Fifo格式示于圖45。6.3.3存儲器控制器地址譯碼/映射地址譯碼邏輯主要負責11位MA[100]的SDRAM行地址和8位MA[70]列地址的產生。這些地址線將被直接驅動到SDRAM地址輸入[110]。存儲器地址[11]將被用于在內部SDRAM存儲體之間的觸發(fā),以實現(xiàn)較好的性能和較好的存儲器總線利用。這個存儲器地址將使用通過指出下述內容的寄存器給出的可編程多路轉換器產生·當前系統(tǒng)高速緩存線長度·內部存儲體的數(shù)量。·內部存儲體交錯。對于32位高速緩存線來講,系統(tǒng)高速緩存線偏移將是五(5)位。圖46示出了從用于16M位DRAM的Fbus系統(tǒng)地址產生的建議存儲器地址格式。這個多路復用存儲器地址對于具有由存儲器控制器狀態(tài)機指出的RAS和CAS選通信號的一個周期是有效的。MCU有能力執(zhí)行8位寫操作而不必啟動讀-修改-寫操作。但是,F(xiàn)bus地址的位[2]對于偶數(shù)開始地址來講應當永遠是零。這個位被映射到SDRAM地址的位,該地址是用于指出如下開始地址的三位中的一個Faddr[42]寫順序(包=8)0000-1-2-3-4-5-6-70102-3-4-5-6-7-0-11004-5-6-7-0-1-2-31106-7-0-1-2-3-4-5這些是由是所有偶數(shù)開始地址的mcu支持的順序。所有讀操作將采用32個字節(jié)傳送和開始地址應當是(000)rna[20]=faddr[42]。6.3.4存儲器控制器狀態(tài)機MSP存儲器控制器具有一個主控器狀態(tài)機。這個狀態(tài)機負責產生所有用于SDRAM控制信號(RAS/CAS/WE/CS/DQM)的定時。這個狀態(tài)機將一直監(jiān)視請求fifo的項0中是否有有效項。一旦一個有效位被檢測到,狀態(tài)機將開始SDRAM順序。它還監(jiān)視來自頁比較器的Page_hit信號以便確定是否需要DAS預充。RAS預充是在當前有效/開放存儲體上執(zhí)行的。手動預充順序包括認定CS、RAS、WE和MA[10]給是零的有效狀態(tài)。內部存儲體選擇位MA[11]被用于選擇需要預充的存儲體。關于讀出情況在從SDRAM接收數(shù)據(jù)之后認定預充命令以避免數(shù)據(jù)惡化。關于寫入情況在最后一束數(shù)據(jù)被寫入存儲器之后發(fā)出預充命令。一旦預充命令被完成,特定存儲體將處于空閑狀態(tài)以為下一個存儲器操作作好準備。根據(jù)SDRAM規(guī)定,預充命令可以在tRAS(min)被滿足(在這種情況下,它是60ns)之后發(fā)出。但是,由于我們的包長是四(4),存儲器控制器狀態(tài)機將在數(shù)據(jù)被讀出/寫入存儲器之后發(fā)出預充命令。下面的表格指出了MSP存儲器控制器使用的SDRAM參數(shù)。表17SDRAM參數(shù)*tRAS將被用做5個周期以實現(xiàn)同步drams的60ns行訪問時間。請參閱存儲器控制器時序圖。6.3.4.1狀態(tài)機47是SDRAM存儲器控制器RAS/CAS狀態(tài)機圖。6.4存儲器控制器刷新同步DRAM每32ms(15.6us)必須被刷新以保持每個存儲單元中的數(shù)據(jù)。同步DRAM還支持刷新的兩種模式自動刷新和自刷新。6.4.1SDRAM“自動刷新”使用標準自動刷新,可以利用一個內部計數(shù)器輪流刷新兩個存儲體。由于行的數(shù)量是4096,因此,自動刷新將需要2048個自動刷新周期去刷新整個DRAM。自動刷新命令是通過CKE和WE高CS、RAS和CAS低而發(fā)出的。只有當兩個內部存儲體都處于空閑狀態(tài)時,這個命令才被認定(SamsungSDRAMspecREV.5)。完成自動刷新所需的時間是tRC(min)/周期時間=100ns(Spec)/12.5ns=8周期(80MHz)。6.4.2SDRAM“自刷新”自刷新是SamsungSDRAM中的另一個可以獲得的模式。這通常是用于數(shù)據(jù)保持和低功率操作的最佳刷新模式。這里,SDRAM將禁止內部時鐘和除DKE以外的所有輸入緩沖。當CS、RAS、CAS和CKE是低電平和WE是高時,自刷新模式被引入。由于它需要關閉SDRAM時鐘和使用CKE信號重新啟動它,所以,MSP存儲器控制器將不使用這個刷新模式。6.4.3手動刷新這個刷新的第三種選擇需要狀態(tài)機/計數(shù)器設計。每15.6us計數(shù)器將超時和認定一個刷新選通信號給存儲器控制器邏輯。然后,存儲器控制器將完成當前的請求和直接啟動SDRAM刷新周期。這個周期看起來特別象在IDLE狀態(tài)中沒有限制的自動刷新周期。6.5數(shù)據(jù)控制器(DC)存儲器控制器的數(shù)據(jù)控制器部分主要用做數(shù)據(jù)隊列,用于從處理器寫入數(shù)據(jù)或從SDRAM讀出數(shù)據(jù)。這個控制器具有用于所有部分寫入情況(字節(jié)寫入)的寫合并邏輯。注意,部分(pactial)寫入首先開始DRAM讀出,然后合并數(shù)據(jù),最后將全部經(jīng)過修改的字寫回給存儲器。因此,跟隨在部分寫入順序后面的任何請求都必須取所述性能命中。6.5.1數(shù)據(jù)控制器方框圖示于圖48。6.6管腳描述這個控制器有下述封裝管腳RAS_I輸出管腳(低有效)。這是一個行地址選通信號,用于將來自MA[110]的行地址鎖存到被選擇DRAM存儲體的內部行地址緩沖器中。CAS_I輸出管腳(低有效)。這是一個列地址選通信號,用于將來自MA[110]的列地址鎖存到被選擇DRAM存儲體的內部列地址緩沖器中。WE_I輸出管腳(對于寫是低有效)。用于驅動dram的寫使能輸入管腳。MA[110]輸出管腳。到dram的多路行和列地址信號。DQM輸出管腳。在時鐘之后使sdram數(shù)據(jù)輸出高阻抗并屏蔽所述輸出。(這個管腳僅用于同步dram接口)CS_I輸出管腳(低有效)。用于禁止或使能所選擇的sdram操作。(這個管腳僅用于同步sdram接口)CLK輸出管腳。這僅是一個到同步dram的時鐘輸出管腳。它基本上被sdram使用并與MPS系統(tǒng)時鐘具有相同的相位。6.7存儲器控制器時序圖示于圖49-51。關于圖49-采用SamsugSDRAM。-存儲器和系統(tǒng)運行于80MHz。一個或兩個外部(1M×16)SDRAM。-4/8的可編程包裹長度以從存儲器中取出一線。-tRCD=3。-tCAS=3。-內部延時=2時鐘。-存儲器等待時間=8周期(8×12.5=100ns)。-為了仲裁(讀數(shù)據(jù))來自存儲器的系統(tǒng)數(shù)據(jù)將被延遲兩個周期。6.8編程模型從編程人員的角度來看,與存儲器控制器相關的控制寄存器是6.8.1SDRAM復位寄存器(R/W)這個寄存器在每次系統(tǒng)復位之后都應當被復位。這是一個帶有用于按序開始SDRAM電源(power)的reset_sdram信號的一位寄存器。在系統(tǒng)復位的基礎上,這個寄存器被置成1。軟件必須清零這個寄存器以開始所述SDRAM。位0在系統(tǒng)復位時置位,后來清零以便開始SDRAM。編程地址Faddr[3120]=12′h010Faddr[30]=4′b10116.8.2SDRAM段類型寄存器(R/W)這個寄存器用于編程SDRAM段類型。這是一個應當被編程為零以用于段序列段類型的一位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b1001位0在系統(tǒng)復位時置位,后來清零以便開始SDRAM。6.83SDRAM刷新寄存器(R/W)這個寄存器編程SDRAM刷新值。這是一個應當被通過fbus進行編程的12位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b1000位11-0由系統(tǒng)復位來復位并編程到4E0的刷新值。6.8.4SDRAMRAS預充(tRP)寄存器(R/W)這個寄存器編程SDRAMRAS預充值。這是將通過fbus而被編程的3位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b1000位2-0是由系統(tǒng)復位來復位并被編程到1或2或36.8.5SDRAMRAS等待(tCAC)寄存器(R/W)這個寄存器編程SDRAMRCD等待時間。這是一個應當通過fbus編程的3位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b0010位2-0由系統(tǒng)復位來復位和編程為1、2或36.8.6SDRARASCAS延遲(tRCD)寄存器(R/W)這個寄存器編程SDRAMRCD等待時間,這是一個應當通過fbus編程的3位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b0010位2-0由系統(tǒng)復位來復位并編程為1或2或36.8.7SDRAM包長度寄存器(R/W)這個寄存器編程與數(shù)據(jù)相關的SDRAM包長度。這是一個應當通過fbus編程的3位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b0001位2-0由系統(tǒng)復位來復位并編程為1、2、4或86.8.8SDRAMNOP時間寄存器(R/W)這個寄存器編程SDRAM的NOPTIMEFORPOWERONSEQOENCE。這是一個應當通過fbus編程的16位寄存器。編程地址Faddr[3120]=12′h010Faddr[30]=4′b0000位15-0由系統(tǒng)復位來復位和根據(jù)時鐘頻率編程到200us。第七章ASIC接口這一章描述ASIC接口單元的規(guī)定。7.1綜述ASIC接口單元(圖52)具有一個可編程的32位DMA、數(shù)個FIFO和控制塊。ASIC接口塊在運行于80MHz的主系統(tǒng)總線(FBUS)和編碼譯碼器接口塊之間接口,所述編碼譯碼器接口塊在MSP、AD1843(音頻、電話)、KS0122(視頻捕獲)、KS0119和VGA之間接口。目前假設是以全FBUS速度運行所有的編碼譯碼器接口和DMA控制器以避免任何同步問題。用戶ASIC塊共有三個主要部分Fbus主/從接口、MSP8通道DMA控制器和實際編碼譯碼器。數(shù)據(jù)將從Fbus流向編碼譯碼器或相反。地址將僅由DMA控制器產生。這個地址然后在Fbus接口邏輯中被FBUS映射。來自FBUS結點的所有寫入僅對編碼譯碼器部分中的寄存器編程。所有將被讀出的其它信息流通應該讀出具有長度和ID信息的應答。請參閱Fbus說明。下述是與ASIC接口單元相關的特性·支持32位基本DMA功能(8通道--每個編碼譯碼器一個)?!蓚€4深度(deep)×64位數(shù)據(jù)FIFO?!ひ粋€I深度×53位請求FIFO。·一個2深度×52位應答FIFO?!ぶС钟糜贔BUS和編碼譯碼器接口塊的主/從裝置?!ぶС钟糜?個CDDEC接口塊的內部仲裁?!み\行頻率高達80MHz?!ぶС諭O到存儲器、存儲器到IO之間的訪問。·支持編碼譯碼器初始化?!ぶС钟糜贙S0119的通道0的最高優(yōu)先級?!ぶС炙鎏厥獾刂房偩€以實現(xiàn)KS0119的高性能。這個用戶接口邏輯將支持三個不同的編碼譯碼器·音頻和電話編碼譯碼器(AD1843)。這個編碼譯碼器具有與DMA控制器通信的雙向64位數(shù)據(jù)總線。(通道4==>DAC1,通道5==>DAC2,通道6==>ADC左,通道==>右)?!ひ曨l捕獲編碼譯碼器(KS0122)。這個編碼譯碼器也具有雙向64位數(shù)據(jù)總線并能夠向DMA發(fā)出M-->IO和IO-->M請求(通道2)?!ひ曨l后端編碼譯碼器(KS0119)。這個編碼譯碼器將直接接收來自存貯器控制器的數(shù)據(jù)(通道0)。ASIC接口塊7.2直接存儲器訪問(DMA)控制器DMA控制器具有用于地址產生和轉換的多個寄存器。這個DMA控制器具有8個獨立的通道。每個通道具有一個當前地址寄存器和一個停止地址寄存器。開始和停止地址寄存器通過配置塊被預先編程。當前地址寄存器在具有來自8個編碼譯碼器之一的DMA請求時被裝載。一旦fbus授權所述訪問,這個DMA地址每個周期都被增加,直到當前地址與停止地址相匹配為止。在那個時間處,DMA控制器產生一個信號“EOP”(處理結束)。這個信號將使得處理中斷。所有8個通道具有一個共用仲裁單元,該單元控制多路選擇器和地址比較塊。這個DMA控制器將支持IO到存儲器、存儲器到IO和存儲器到存儲器之間的訪問。當編碼譯碼器需要告訴DMA時,它將認定一個DMA_REQ信號和等待來自DMA的DMA應答“DACK”。一旦得到應答,它將驅動M-IO控制信號和數(shù)據(jù)。DMA控制器將根據(jù)被授權的DACK選擇一個適當?shù)耐ǖ馈U垍㈤喎娇驁D。7.3DMA寄存器描述7.3.1當前地址寄存器每個通道具有29位當前地址寄存器(位<313>),它需要所有地址以8字節(jié)對準。實際上,這個寄存器是一個29位計數(shù)器。這個寄存器可由ARM7讀出。初始值將從ARM7通過RFUS裝載。這個地址將根據(jù)數(shù)據(jù)傳輸長度增加。當前地址寄存器中的地址將被傳輸給地址產生塊以通過多路選擇器在FBUS上裝載地址。當前地址寄存器在空閑期間將保持地址值。7.3.2停止地址寄存器每個通道具有29位停止地址寄存器(位<313>),它需要所有地址以8字節(jié)對準。這個寄存器可由ARM7通過FBUS寫入。這些值將被用于在比較塊中和當前地址比較。如果當前地址與停止地址匹配,DMA控制器將產生一個與每個通道相關的信號“EOP”。7.3.3狀態(tài)寄存器這個寄存器包含表示每個通道是否達到停止地址的信息。位<70>規(guī)定哪個通道達到了停止地址。如果ARM7通過CCU初始化當前地址寄存器,那么,它將被復位。這個寄存器能夠被SRM7讀出,但是,ARM7不能夠寫這個寄存器。7.3.4控制寄存器這個寄存器包含用于DMA控制器操作的控制信息。位<70>規(guī)定哪個DMA通道被使能用于操作,這些位在相應通道到達停止地址時被復位,而ARM7能夠置位這些位以重新啟動操作。如果任一通道的使能位是“0”,那么,即使是編碼譯碼器向DMA傳輸了DMA_REQ信號,DMA也將不能夠向相應的編碼譯碼器給出DMA_ACK信號。位<1916>規(guī)定哪對DMA通道被連接在一起以用做雙緩沖器。例如,如果通道0和通道1被連接在一起作為雙緩沖器,那么、當通道0的當前地址達到它的停止地址時,DMA控制器將自動切換到通道1,和當通道1的當前地址達到它的停止地址時,DMA控制器將自動切換到通道0。位<2821>包含用于每個通道的讀/寫模式的信息。如果它們中的任一位被ARM7置位成“1”,相應的通道將被用于讀操作。其它的通道將被用于寫操作。位<31>規(guī)定DMA是否輸出EOP信號給中斷控制器。如果這個位是“0”,即便是任一通道達到了停止地址,DMA也將不發(fā)出EOP。7.3.5屏蔽寄存器控制寄存器中的每一位都與屏蔽寄存器中的屏蔽位相關。如果屏蔽位是“0”,將防止更新控制寄存器中的相應位。最初,這個寄存器<310>被設置成Ffffffff(16進制)。73.6編程開始和停止地址將由ARM7通過FBUS編程。FBUS映射值如下CCU====>0040_0000_007F_FFFFMCU====>0080_0000_007F_FFFFPCI====>0800_0000_FFFF_FFFF。關于地址編程,地址[260]將根據(jù)表18設置表18DMA寄存器地址映射表19狀態(tài)寄存器的編碼表20控制寄存器的編碼7.4編碼譯碼器初始化用戶ASIC單元支持每個編碼譯碼器的初始化。實際上ARM7通過用戶ASIC單元負責編碼譯碼器的初始化。用戶ASIC單元具有用于產生與每個編碼譯碼器相關的請求信號的地址譯碼器。當用戶ASIC單元需要與任一編碼譯碼器通話時,它將傳輸所述請求信號給編碼譯碼器并等待來自所述編碼譯碼器的應答信號。在接收了應答信號以后,用戶ASIC單元將傳送數(shù)據(jù)和地址給所述編碼譯碼器。當ARM7希望通過CCU讀出在任一編碼譯碼器的配置數(shù)據(jù)時,用戶ASIC單元將向編碼譯碼器傳輸?shù)刂?。如果ASIC用戶單元從編碼譯碼器中接收數(shù)據(jù),它將把TRANSACTIONIX)傳輸回給CCU。此時,配置數(shù)據(jù)將被通過CCU傳輸給ARM7。表21編碼譯碼器配置寄存器FBUS地址映射圖53示出了用戶ASIC電路。4.I/O管腳描述表22用戶ASIC單元的I/O管腳定義第八章AD1843編碼譯碼器接口8.1這一章描述AD1843編碼譯碼器接口。8.2綜述AD1843編碼譯碼器接口塊用于AD1843串行總線和MSPDMA模塊之間的接口。AD1843通過它的串行端口發(fā)送和接收數(shù)據(jù)和控制/狀態(tài)信息。AD1843具有用于串行接口SDI、SDO、SCLK和SDFS的4個管腳。SDI管腳用于給AD1843的串行數(shù)據(jù)輸入,SDO管腳用于從AD1843的串行數(shù)據(jù)輸出。SCLK管腳是串行接口時鐘。在AD1843內和外的通信要求數(shù)據(jù)位在SCLK上升沿之后傳輸和被在SCLK下降沿采樣。SDFS管腳用于串行接口幀同步。AD1843編碼譯碼器接口基于主控模式。這意味著SCLK和ADFS信號是由AD1843產生的。默認SCLK頻率是12.288MHz和一幀周期是48KHz。用于編碼譯碼器接口的基本結構以DMA為基礎。AD1843接口指定4個不同DMA通道通道4到DAC1、通道5到DAC2、通道6到ADC左和通道7到ADC右。每次傳輸?shù)紻MA或從DMA傳輸出的通道長度是64位。因此,DMA通道4和DMA通道5從SDRAM向編碼譯碼器傳輸兩個不同的32位數(shù)據(jù)16位用于左,16位用于右。另一方面,DMA通道6和7每次從編碼譯碼器接口向SDRAM傳輸4個不同的16位數(shù)據(jù)。當置位每個通道的標志位時,DAC1和DAC2接口知道數(shù)據(jù)可以獲得。在檢查標志位之后,DAC1和DAC2接口請求DMA。如果所述標志位被復位,DAC1和DAC2接口將不會產生DMA請求。標志位的實際操作由DMA塊控制。如果標志位被復位,DMA塊不產生DMA應答信號。如果ADC左和右的FIFO不滿,則DMA請求將不會產生,軟件將通過數(shù)據(jù)總線檢查ADC標志寄存器和讀出剩余數(shù)據(jù)。在通過數(shù)據(jù)總線讀出這些數(shù)據(jù)之后,所述FIFO被騰空和當FIFO被充滿之后產生DMA請求。通過在控制字輸入中與控制寄存器地址一起傳輸讀/寫請求位,AD1843控制寄存器被讀出和寫入。當需要讀出時,被尋址控制寄存器的內容在隨后幀中被傳送出來。當請求寫時,將被寫入的數(shù)據(jù)必須被傳送給AD1843存儲區(qū)1。為了改善MSP的性能,程序員應當在讀或寫編碼譯碼器中的控制寄存器之前檢查控制標志寄存器。如果控制標志寄存器的標志位被置位,那么,用于編碼譯碼器寄存器的讀和寫操作將是可以獲得的。8.3DMA通道分配DMA通道4DAC1左,右DMA通道5DAC2左,右DMA通道6ADC左DMA通道7ADC右8.4到達和來自DMA的數(shù)據(jù)格式64位的數(shù)據(jù)傳輸長度組織如下8.5基地址04C0_4000DAC1BASE04C0_5000DAC2BASE04C0_6000ADCLBASE(左通道)04C0_7000ADCRBASE(右通道)8.6寄存器映射87寄存器定義8.7.1控制寄存器寫數(shù)據(jù)輸入最高有效位(MSB)是將被傳輸?shù)牡谝粩?shù)據(jù)輸入位。8.7.2控制字輸入r/w讀/寫請求。每幀發(fā)生從控制寄存器的讀或到控制寄存器的寫。設置成“1”表示控制寄存器讀,這個位設置成“0”表示控制寄存器寫。ia40用于讀或寫的控制地址寄存器8.7.3控制寄存器數(shù)據(jù)輸出在在前幀中被尋址的控制寄存器的內容。8.74ADC標志寄存器r4vr1v有效ADC右數(shù)據(jù)位于緩沖器內。表示緩沖器中的哪個數(shù)據(jù)是可得到的。14v11v有效ADC左數(shù)據(jù)位于緩沖器內。表示緩沖器中的哪個數(shù)據(jù)是可得到的。8.7.5ADC左第一數(shù)據(jù)緩沖器中的ADC左第一數(shù)據(jù)。8.7.6ADC左第二數(shù)據(jù)緩沖器中的ADC左第二數(shù)據(jù)。8.7.7ADC左第三數(shù)據(jù)緩沖器中的ADC左第三數(shù)據(jù)。8.7.8ADC左第四數(shù)據(jù)<緩沖器中的ADC左第四數(shù)據(jù)。8.7.9控制標志寄存器wf1控制寄存器寫標志。如果置位,編碼譯碼器準備好接收conlxoi寄存器數(shù)據(jù)。rf1控制寄存器讀標志。如果置位,編碼譯碼器準備好傳輸控制寄存器數(shù)據(jù)。第九章視頻編碼譯碼器9.1綜述視頻編碼譯碼邏輯與評價板上的KS0119和KS0122芯片接口并與MSP芯片上的DMA模塊接口。KS0119編碼譯碼器也能夠提供屏幕刷新操作。由于這個操作,如圖54所示,實現(xiàn)了到MCU模塊的直接數(shù)據(jù)通路。9.2頂模塊定義如圖55所示,所述頂模塊包含3個子模塊·KS0119屏幕刷新模塊·KS0112視頻數(shù)據(jù)捕獲模塊和·三線串行主接口模塊,用于訪問KS0119和KS0112芯片配置寄存器。9.3DMA通道分配DMACHOKS0119編碼譯碼器DMACH1備用DMACH2KS0122編碼譯碼器DMACH3備用DMACH4AD1843音頻編碼譯碼器DMACH5AD1843音頻編碼譯碼器DMACH6AD1843音頻編碼譯碼器DMACH7AD1843音頻編碼譯碼器DMACH8備用DMACH9備用9.4三線主接口模塊這個模塊與KS0119和KS0122芯片接口,這個芯片內的所有寄存器都通過串行接口訪問。三線串行接口模塊支持到所述芯片的通信協(xié)議功能并包含用于KS0119和KS0122接口邏輯的寄存器。參見圖3。9.5EPROM接口KS0119IO管腳也被用做到外部EPROM的接口,所述外部EOROM被用于在系統(tǒng)復位之后立即裝載程序數(shù)據(jù),并被用做MSP-1EX引導初始化的一部分。請詳細參閱管腳分配。EPROM是存儲器映射的,其地址范圍從C0000H到DFFFFH。9.6KS0119寄存器描述KS0119具有等于04B00000的基地址CODEC_REQ0且擴展到04BFFFFF。9.6.1KS0119寄存器地址映射KS0119寄存器地址映射9.6.2幀長度寄存器這個寄存器控制如圖57所示將被發(fā)送給編碼譯碼器芯片的幀長度。最小幀長度是3個字節(jié)。9.6.3芯片ID寄存器這個寄存器將包含有編碼譯碼器芯片ID值和應當包含用于KS0199寫的03H和用于KS0119讀的83H。9.64控制/數(shù)據(jù)寄存器這個寄存器通知編碼譯碼器芯片KS0119后面發(fā)送的字節(jié)將是寄存器索引或數(shù)據(jù)字節(jié)。對于KS0119=08H意味著索引是隨后字節(jié),09H意味著數(shù)據(jù)是隨后字節(jié)。9.6.5索引/數(shù)據(jù)0寄存器根據(jù)在前字節(jié)中發(fā)送的值,這個寄存器包含有用于編碼譯碼器芯片配置寄存器的索引值或數(shù)據(jù)0字節(jié)。請參閱在編程參考部分中的通信協(xié)議。9.6.6數(shù)據(jù)1寄存器這個寄存器包含有將被寫入到編碼譯碼器寄存器索引+1中的數(shù)據(jù)。9.6.7數(shù)據(jù)2寄存器這個寄存器包含有將被寫入到編碼譯碼器寄存器索引+2中的數(shù)據(jù)。9.68數(shù)據(jù)3寄存器這個寄存器包含有將被寫入到編碼譯碼器寄存器索引+3中的數(shù)據(jù)。9.6.9KS0119邏輯控制寄存器用于KS0119控制寄存器的位分配示于圖58。9.6.10HS和VS的極性這個寄存器定義為水平同步和垂直同步信號的極性。值0定義為低有效,值1規(guī)定高有效。位分配如下位<0>VS極性。位<1>HS極性。9.6.11HS偏移在這個偏移值之后產生有效信號。規(guī)定為00H9.6.12VS偏移在這個偏移值,產生有效信號。規(guī)定為00H9.6.13狀態(tài)寄存器示于圖59。9.6.14讀數(shù)據(jù)串行接口寄存器在讀標志已經(jīng)使從忙碌變換到準備好狀態(tài)之后,這個寄存器包含有來自串行端口的有效數(shù)據(jù)。9.6.15讀PROM數(shù)據(jù)寄存器如果PROM標志處于準備好狀態(tài),這個寄存器將包含有有效PROM數(shù)據(jù)。9.6.16編程參考9.6.16.1配置和初始化視頻顯示硬件能夠被配置為在如下兩種模式工作·VGA覆蓋模式?!GA仿真模式。這個模式操作是通過在邏輯控制寄存器中設置一個位控制的MSSEL=0用于VGA覆蓋模式。=1用于VGA仿真模式。在VGA覆蓋模式中,需要在PC系統(tǒng)上的VGA卡存在。·監(jiān)視器電纜將被連接到MSP卡上·所支持的分辨率將高達800×600這個顯示緩沖器需要具有與VGA設置相同的長度。為了設置視頻窗口,軟件應當填充VGA幀緩沖器的彩色鍵矩形區(qū)域,在MSPSDRAM中的視頻數(shù)據(jù)應當被寫入到與VGA中的幀緩沖器長度和位置相同的一個矩形區(qū)域內。參見圖60。KS0119芯片將識別彩色鍵和從VGA輸入端口轉換到視頻輸入端口。軟件應當在SDRAM視頻輸出緩沖器的左上角處設置DMA通道0的開始地址,DMA記錄長度應當根據(jù)在VGA卡中設定的分辨率和在視頻數(shù)據(jù)中使用的位每象素(422=16位每象素)設定。9.6.16.2到KS0119的串行協(xié)議3線接口在KS0119芯片中設置配置寄存器,所述協(xié)議如下·需要被發(fā)送給外圍芯片的最少為兩幀,·第一幀設定配置寄存器的索引,·第二幀用于讀或寫數(shù)據(jù)(寄存器的內容)。軟件應當為幀長度寄存器設置適當?shù)拈L度和將所述串行訪問位設置成1。在改變幀長度寄存器之前,軟件應當裝載幀所需要的全部字節(jié),編碼譯碼器接口邏輯將等待,直到在開始串行化所述幀之前所有字節(jié)被裝載完畢為止。所發(fā)送的第一幀用于設置索引。幀長度=3個字節(jié)。參見圖61。所發(fā)送的第二幀用于設置寄存器,幀長度=3。在每個數(shù)據(jù)字節(jié)之后,芯片將自動將索引加1,這允許通過傳送多個字節(jié)來設置后續(xù)的寄存器,編碼譯碼器接口邏輯支持高達4個數(shù)據(jù)字節(jié)。當執(zhí)行讀或寫串行操作時,軟件應當在傳送下一個幀之前檢查用于在讀或寫操作中的有效數(shù)據(jù)的狀態(tài)寄存器的讀和寫標志是否等于1。下述的例子表示逐步設置KS0119的配置寄存器。為了設置用于色度鍵字節(jié)0和字節(jié)1的值,用于這個寄存器的索引是與字節(jié)0相關的6AH和與字節(jié)1相關的6BH,參見KS0119數(shù)據(jù)手冊。由于兩個寄存器具有連續(xù)的索引,所以,這兩個字節(jié)能夠被裝載到單個幀中。首先,所述索引被設置如下·利用值83H(幀長度=3和串行訪問位置位)裝載幀長度(地址=04B0_0000h)?!だ弥?3H裝載ID寄存器(地址__04B0_0001h)?!だ弥?8H裝載數(shù)據(jù)/控制字節(jié)(地址--04B_00002H),這向KS0119指出下一個字節(jié)是索引?!だ弥?AH裝載索引寄存器(地址=04B0_0003H)。串行接口將檢測和幀長度寄存器內容的匹配情況并開始傳輸數(shù)據(jù),另外,狀態(tài)寄存器中的寫標志將被設置成忙狀態(tài)。在裝載下一個幀之前,軟件應當檢查狀態(tài)寄存器中的標志。當所述標志處于準備好狀態(tài)時,軟件能夠裝載用于下一個幀的值。9.7KS0122寄存器說明該KS0122具有的基地址CODEC_REQ2等于04C02000并擴展到04C02FFF。9.7.1KS0122寄存器地址映射97.2幀長度寄存器這個寄存器控制如圖62所定義的將被發(fā)送給編碼譯碼器芯片的幀長度。最小幀長度是3個字節(jié)。9.7.3芯片ID寄存器這個寄存器將包含有編碼譯碼器芯片ID值和應當包含有用于KS0122寫的04H和用于KS0122讀的84H。9.7.4控制/數(shù)據(jù)寄存器這個寄存器通知編碼譯碼器芯片KS0122隨后發(fā)送的字節(jié)將是一個寄存器索引或數(shù)據(jù)字節(jié)。KS0122=00H意味著索引是隨后字節(jié),01H意味著數(shù)據(jù)是隨后字節(jié)。9.7.5索引/數(shù)據(jù)0寄存器這個寄存器根據(jù)在前字節(jié)發(fā)送的值將包含有用于編碼譯碼器芯片配置寄存器的索引值或數(shù)據(jù)0字節(jié)。請參閱編程參考部分中的通信協(xié)義。9.7.6數(shù)據(jù)1寄存器這個寄存器包含將被寫入到編碼譯碼器寄存器中的數(shù)據(jù),索引+1。9.7.7數(shù)據(jù)2寄存器這個寄存器包含將被寫入到編碼譯碼器寄存器中的數(shù)據(jù),索引+2。9.7.8數(shù)據(jù)3寄存器這個寄存器包含將被寫入到編碼譯碼器寄存器中的數(shù)據(jù),索引+3。9.7.9KS0122邏輯控制寄存器這個用于KS0122控制寄存器的位分配如下位<10>00422格式01411格式10CCIR656格式9.7.10狀態(tài)寄存器位<0>場狀態(tài)0偶數(shù)場1奇數(shù)場位<1>VS狀態(tài)0VS從1到01VS從0到19.7.11讀數(shù)據(jù)串行接口寄存器在讀標志執(zhí)行了從忙到準備好狀態(tài)的變換之后,這個寄存器將包含來自串行端口的有效數(shù)據(jù)。9.7.12到KS0122的串行協(xié)議3線接口在KS0122芯片中設置配置寄存器,所述協(xié)議如下·需要被傳送給外圍芯片的最小為兩幀,·第一幀設置配置寄存器的索引,·第二幀用于讀或寫數(shù)據(jù)(寄存器的內容)。軟件應當將幀長度寄存器設置成適當?shù)拈L度和將串行訪問設置成1。然后,軟件應當在改變幀長度寄存器之前裝載所述幀需要的全部字節(jié),并在串行化所述幀之前,編碼譯碼器接口邏輯將等待,直到所有幀被裝載完畢為止。所發(fā)送的第一幀被用于設置索引。幀長度=3個字節(jié)。參見圖63。第二幀被用于設置寄存器。幀長度=3個字節(jié)。在每個字節(jié)之后,芯片將使索引自動加1,這允許通過發(fā)送多個字節(jié)來設置后續(xù)寄存器,編碼譯碼器接口邏輯支持高達4個字節(jié)的數(shù)據(jù)。當執(zhí)行讀或寫串行操作時,軟件在發(fā)送下一個幀之前將檢查在用于讀或寫操作中的狀態(tài)寄存器讀和寫標志是否是有效數(shù)據(jù)狀態(tài)或寫標志是否為準備好。下述例子逐步示出了用于設置KS0122配置寄存器的步驟。為了設置用于色度鍵字節(jié)0和字節(jié)1的值,用于這個寄存器的索引是用于字節(jié)0的6AH,用于字節(jié)1的是6BH,參見KS0122數(shù)據(jù)手冊。由于兩個寄存器具有連續(xù)的索引,這兩個字節(jié)可以被裝載到單個幀中。首先,索引需要被設置如下·利用值83H(幀長度=3和置位串行訪問位)裝載幀長度寄存器(地址--04B00_0000H)?!だ弥?3H裝載ID寄存器(地址-04B0_0001H)。利用向KS0122指出下一個字節(jié)是索引的值08H裝載數(shù)據(jù)/控制字節(jié)(地址--04B0_0002h)?!だ弥?AH裝載索引寄存器(地址=04B0_0003H)。串行接口將檢查與幀長度寄存器內容的匹配情況并開始傳送所述幀,另外,狀態(tài)寄存器中的寫標志將被設置成忙狀態(tài)。軟件在加載下一幀之前應該檢查狀態(tài)寄存器中的標志。當所述標志處于準備好狀態(tài)時,軟件可以裝載于下一個幀的值。第十章位流處理器10.1這一章描述對設計位流處理器(BP)的功能要求,所述位流處理器是一個用于視頻數(shù)據(jù)壓縮和解壓縮應用的關鍵MSP處理引擎。10.2縮寫A/V音頻和視頻BP位流處理器(MSP塊)CCU高速緩存控制單元(MSP塊)CIF共用中間格式,在29.97Hz處具有亮度采樣分辨率為351×288DCT離散余弦變換DMA直接存儲器訪問DSM數(shù)字存儲媒體FBUS快速總線(MSP內部數(shù)據(jù)總線)GOB塊組GSTN通用交換電話網(wǎng)絡(也叫PSTN)HDD硬盤驅動器I/F接口IOBUS輸入輸出總線(MSP內部外圍總線)ISDN綜合業(yè)務數(shù)字網(wǎng)絡ITU-T-601彩色電視信號數(shù)字編碼的標準,所述信號分別在29.97Hz處具有亮度采樣分辨率為720×480,在25Hz處具有亮度采樣分辨率為720×576(以前稱之為CCIR601),但是,顯示分辨率可以是720×480或704×480之一LSB最低有效位LUT查詢表MPEG運動圖像專家組MSB最高有效位MSPSamsung多媒體信號處理器QCIFQuarter-CIF,在29.97Hz處它的亮度采樣分辨率為176×144RLC游程長度和等級碼SDRAM同步動態(tài)隨機訪問存儲器SIF用于MPEG-1視頻標準的源輸入格式,在29.97Hz處它具有用于NTSC的352×240亮度采樣分辨率和在25Hz處用于PAL的352×288的亮度采樣分辨率TBD待定義VLC變長編碼VP矢量處理器(MSP塊)10.3關鍵特性·支持片(或GOB)層句法分析和形成和BPEG-1、MPEG-2、H.261和H.263編碼和譯碼應用·實時執(zhí)行RLC處理·實時執(zhí)行與列在MPEG-1、MPEG-2、H.261和H.263視頻標準中的所有哈夫曼表相關的實時哈夫曼代碼處理·支持兩個向前/反向曲折掃描規(guī)則·731.4M位/秒(32位@40Hz)的最大傳輸速率的IOBUS接口·最在大運行時鐘頻率是40MHz·包括用于哈夫曼編碼譯碼查詢表的9.2K位ROM·包括320字節(jié)內部SRAM·支持搶先式和合作式現(xiàn)場切換模式·用于控制通路的目標門數(shù)是6K選通加RAM及ROM10.4綜述位流處理器(BP)是4個MSP內部外圍設備之一。它是一個專用硬件邏輯塊,用于支持視頻壓縮和解壓縮標準的各種位流。由于位于MSP內部的VP和ARM7不具有足夠用于這種位操作的有效結構,所以,這個單元被設計成用于位級處理。BP通過被稱之為IOBUS且具有最大傳輸速率為731.4M位/秒的32位總線傳送和接收數(shù)據(jù)。BP作為一個獨立的處理單元工作并由ARM7或VP利用軟件進行控制。特別是,BP對包含在片或GOP級中及以下的所有信息進行編碼和譯碼并從/向CCU接收和發(fā)送數(shù)據(jù)。BP還執(zhí)行向前和反向的曲折轉換,并編碼和譯碼微分dc系數(shù)。同時,除了在MPEG-2編碼過程中的雙原始(dual-prime)模式和在H.263編碼和譯碼過程中的預測模式以外,BP在譯碼過程中使用微分運動矢量恢復運動矢量并在編碼過程中執(zhí)行反向操作。所述BP被假定工作于單工模式,即一旦BP開始處理一個片或GOB,所述BP將不被中斷,直到所述片或GOB被處理完畢為止。這意味著全雙工模式可以通過片或BOG的交錯編碼和譯碼加以實現(xiàn)。但是,如果ARM7企圖使BP即刻切換到其它任務,那么,BP將支持搶先式現(xiàn)場切換模式,該模式能夠在當前片或GOB被完成之前結束BP的處理。圖3示出了BP的方框圖。如能夠從圖3所看見的,BP包括5個塊、一個IOBUS接口單元、一個VLCFIFO單元、一個VLCLUTROM、一個控制狀態(tài)機和一個BP內核單元。輸入和輸出數(shù)據(jù)由IOBUS接口單元處理,所述IOBUS接口單元包括一個16×32位RAM。它支持所有的數(shù)據(jù)搬移和中斷請求。VLCFIFO單元用于準備下一個與數(shù)據(jù)譯碼操作相關的數(shù)據(jù)字并執(zhí)行與數(shù)據(jù)譯碼操作相關的數(shù)據(jù)打包。VLC查詢表ROM的長度為768×12位,用于存儲與所有哈夫曼代碼處理相關的必須操作。在這個設計中,控制狀態(tài)機控制所有的編碼和譯碼活動。BP內核單元是一個小處理器,包括加法器、比較器、桶形移位器、寄存器文件和128×16位RAM。由于有這個內核,所以可以進行位操作。10.5信號定義BP外部接口所需的信號列于表23。由符號“_1”結尾的信號表示低有效。注意,在表1的“方向”列中,“B”、“I”和“O”分別意味著雙向信號,輸入信號和輸出信號。表23BP信號定義10.6編碼/譯碼的數(shù)據(jù)流這部分包括典型的視頻編碼和譯碼的數(shù)據(jù)流的例子。應當指出該文檔將不詳細描述音頻數(shù)據(jù)流。10.6.1編碼情況步驟E1原始A/V數(shù)據(jù)輸入通常假設輸入的音頻和視頻信號被外部的編碼譯碼器采樣和數(shù)字化,然后饋給用戶ASIC。但是,在多媒體PC環(huán)境中,某些VGA控制器板也包括幀爪鉤和聲音捕獲。因此,假設原始A/V數(shù)據(jù)被從用戶ASIC或PCI總線接口饋給。用戶ASIC和PCI總線接口兩者都包括一個32位的小長度緩沖器。在這個緩沖器中的數(shù)據(jù)通過FBUS使用DMA邏輯傳輸給外部SDRAM。注意,這種數(shù)據(jù)搬移是在上電復位之后由ARM7啟動的。步驟E2利用VP進行預先濾波首先,VP將存儲在SDRAM中的原始圖像數(shù)據(jù)取入VP數(shù)據(jù)高速緩存(一般是暫存區(qū))。然后,VP對這些象素執(zhí)行時間濾波和空間定標。使用預先濾波,圖像分辨率通常從I-TUT-601尺寸被轉換到CIF或QCIF尺寸。VP還負責將預先濾波結果寫到外部SDRAM。步驟E3利用VP進行數(shù)據(jù)壓縮VP再次將預先濾波的SDRAM數(shù)據(jù)取入VP數(shù)據(jù)高速緩存以根據(jù)相應標準建議的規(guī)則執(zhí)行壓縮。通常,VP執(zhí)行正向DCT、正向自適應量化、運動估計、宏塊類型判斷等。在完成這些功能的基礎上,VP應當將包括適當標題信息的結果再次寫入VP數(shù)據(jù)高速緩存。實際上,這個VP數(shù)據(jù)高速緩存區(qū)能夠被用做一個BP輸入緩沖器。為了檢查這個緩沖器的狀態(tài),使用一個標志信號。步驟E4利用ARM7的BP初始化在BP實際開始它的操作之前,ARM7應當初始化BP的內部寄存器。注意,在上電復位信號被認定之后的128個周期的期間內不應當執(zhí)行這個初始化。特別是,ARM7必須初始化輸入和輸出緩沖器地址和BP命令寄存器,并指定在這個片或GOB中將被編碼的宏塊的數(shù)量。在初始化這些寄存器之后,ARM7應當設置BP使能標志以激活BP處理。步驟E5利用BP進行位流處理如果輸入雙緩沖器的某一個存儲體是滿的,則BP開始通過IOBUS讀數(shù)據(jù)。只有當緩沖器滿時,BP才能夠讀數(shù)據(jù)。然后,BP轉換曲折格式的8×8塊數(shù)據(jù)且結果被直接進行RLC和哈夫曼編碼。哈夫曼編碼的結果能夠被傳送給ARM7數(shù)據(jù)高速緩存或SDRAM。只有緩沖器是空的情況下BP才能寫輸出緩沖器以避免緩沖器溢出。當處理結束(即被處理宏塊的數(shù)量等于由ARM7指定的宏塊的數(shù)量)時,BP必須利用最后一個數(shù)據(jù)的字節(jié)和位位置中斷ARM7并結束當前片或GOB的處理。步驟E6利用ARM7的位流形成和A/V多路復用ARM7通過組合哈夫曼編碼數(shù)據(jù)和同步x參數(shù)形成最終的位流并重復所述處理。ARM7還負責對片或GOB的高層進行處理并多路復用音頻和視頻位流。結果被ARM7寫入SDRAM。步驟E7利用VP的網(wǎng)絡接口(用于電視會議的部分)對于可視電話或電視會議應用來講,步驟E6以前的結果還可以由VP進行處理,以執(zhí)行諸如用于H.324GSTN可視電話的V.34調制解調或用于H.320ISDN電視會議終端的1.400串行接口等網(wǎng)絡接口功能。步驟E8最終位流輸出存儲在SDRAM的最終位流將被傳輸給用戶ASIC或PCI總線接口。通常,用戶ASIC塊將被用于網(wǎng)絡接口,而PCI總線接口將被用于將數(shù)據(jù)存儲到記錄設備(例如HDD)。這個數(shù)據(jù)搬移必須使用由ARM7啟動的DMA數(shù)據(jù)傳輸。10.6.2譯碼情況步驟D1位流取出在多媒體PC環(huán)境中,被壓縮的位流來自CD-ROM驅動器、HDD和網(wǎng)絡接口之一。因此,假設位流源是用戶ASIC或PCI總線接口之一。存儲在用戶ASIC或PCI總線接口的32位緩沖器中的數(shù)據(jù)將被使用DMA傳輸給SDRAM。步驟D2利用VP的網(wǎng)絡接口(用于電視會議的選項)在電視會議中,首先利用VP對數(shù)據(jù)進行處理,以執(zhí)行V.34或1.400串行網(wǎng)絡接口例程。VP將把結果寫入SDRAM。步驟D3利用ARM7的多路分解和標題語法分析ARM7將SDRAM中的數(shù)據(jù)移到ARM7數(shù)據(jù)高速緩存并執(zhí)行A/V位流的多路分解。對于視頻位流,ARM7還負責搜索所有的開始碼和分析標題,直到檢測到一個片或GOB為止。被譯碼的位流句法參數(shù)能夠被ARM7存儲在一個特殊的區(qū)域中。多路分解音頻和視頻位流被傳輸給SDRAM中的每一速率緩沖器。每個應用都可以具有不同長度的速率緩沖器。例如,MPEG-1推薦370K位而MPEG-2MP@ML推薦1.835M位的長度用于視頻速率緩沖器。步驟D4利用ARM7進行的BP初始化除了不需初始化與將被編碼的宏塊的數(shù)量相關的寄存器以外,這個步驟的過程在前述子部分中的步驟E4相同。在上電復位信號被認定之后的128個周期的期間內這個初始化不應被執(zhí)行。步驟D5利用BP的位流處理在用于特定片或GOB的BP初始化之后,需要被解壓縮的其余數(shù)據(jù)被傳輸給輸入雙緩沖器。BP負責通過IOBUS讀出數(shù)據(jù)并檢查所有標志的狀態(tài)。如果輸入數(shù)據(jù)包含標題字,BP必須分析句法參數(shù)。如果BP識別出下一個位是哈夫曼代碼,它將在至多4個周期內執(zhí)行用于每個哈夫曼代碼的哈夫曼譯碼。如果哈夫曼代碼被用做DCTAC系數(shù),那么,哈夫曼譯碼的結果被RLC譯碼以產生64個象素的成分。重新結構的象素被進行反向曲折轉換和最終被傳送給輸出雙緩沖器以使VP執(zhí)行正向量化。BP應當繼續(xù)處理直到?jīng)]有再檢測到片或GOB開始代碼。如果它們被檢測到,BP必須利用與所使用最后數(shù)據(jù)相關的字節(jié)和位位置中斷ARM7并結束處理。然后,ARM7應當搜索下一個片或GOB的開始代碼并重復所述處理。步驟D6VP的數(shù)據(jù)解壓縮使用步驟D5的結果,VP應當使用運動矢量執(zhí)行逆量化、逆DCT和圖像重建。在譯碼完成之后,VP將結果存儲在SDRAM中。步驟D7VP的后處理在視頻和音頻數(shù)據(jù)最終傳輸給數(shù)/模轉換器之前,將利用VP對象素進行后處理以獲得所希望的分辨率和圖像質量。其結果將被再次存儲在SDRAM中。步驟D8行A/V數(shù)據(jù)輸出最后,使用DMA輸出在SDRAM中的重建音頻和視頻數(shù)據(jù)。這種數(shù)據(jù)搬移被ARM7再次啟動。由于最新的重新占位技術允許PCI總線傳送視頻源數(shù)據(jù),所以,最后行數(shù)據(jù)將被傳輸給用戶ASIC或PCI總線接口。10.7編程模型10.71BP基礎設備地址BP具有下述32位基礎設備地址<MSP_BASE><BP_BASE><Address_Offset>其中<MSP_BASE>是5位,它是由MSPPCI設備地址規(guī)定的,<BP_BASE>是7位,它等于7′b1111100,和<Address_Offset>是20位,它被指定給BP內部寄存器。因此,在整個MSPI/O設備地址映射中指定給BP的范圍從27′h7C0_0000到27′h7CF_FFFF。10.7.2內部寄存器描述表24描述了內部寄存器組。在表24中給出的所有寄存器都能夠由ARM7或VP讀出或寫入。表24BP內部寄存器·BP_MODE[310](只讀,無缺省值)--這個寄存器用于指出視頻標準的類型和各種圖像級信息。詳細內容見第10.8.1?!P_CONTYOL[310](讀/寫,缺省值=“32′h00000000”)-這個寄存器包括用于BP操作的各種控制參數(shù)。ARM7或VP將在這個寄存器中設置每個標志和某些標志將被BP復位。有關位的描述見10.8.2。·IBUFO_START[310](讀/寫,無缺省值)--這個寄存器被ARM7初始化,以指出用于BP輸入雙緩沖器的輸入緩沖器0的開始地址。注意,IBUFO_START的初始值應當總是小于IBUFO_END和IBUFO_START應當?shù)扔?′b0000。用途見10.11·IBUF0_END[310](讀/寫,無缺省值)--這個寄存器用于指出與BP輸入雙緩沖器輸入緩沖器0的結束地址。其用途將在節(jié)10.11中描述?!BUF1_START[310](讀/寫,無缺省值)=這個寄存器被ARM7初始化以指出用于BP雙緩沖器輸入緩沖器1的開始地址。注意,IBUF1_START的初始值應當永遠小于IBUF1_END和IBUF1_START[30]等于4′b0000。其用途見節(jié)10.11?!BUF1_END[310](只讀,無缺省值)-這個寄存器用于指出BP雙緩沖器輸入緩沖器1的結束地址。其用途見節(jié)10.11。·OBUF0_START[310](讀/寫,無缺省值)-這個寄存器被ARM7初始化以指出BP輸出雙緩沖器輸出緩沖器0的開始地址。注意,OBUF0_START的初始值應當永遠小于OBUF0_END和OBUF0_START[30]等于4′b0000。其用途見節(jié)10.11·OBUF0_END[310](讀/寫,無缺省值)-這個寄存器被ARM7初始化以指出BP輸出雙緩沖器緩沖器1的開始地址。注意,OBUF1_START的初始值應當永遠小于OBUF1_END和OBUF1_START[30]應當?shù)扔?′b0000。區(qū)用途見節(jié)10.11。·OBUF1_END[310](只讀,無缺省值)這個寄存器被用于指出BP雙緩沖器輸出緩沖器1的結束地址。其用途見節(jié)10.11。·SAVE_ADR[310](只讀,無缺省值)-當需要預先騰空現(xiàn)場切換模式時,這個寄存器被用于指出SDRAM的開始地址以保存BP的內部現(xiàn)場。某些相關描述可見子節(jié)10.12.1?!ALID_BYTE[310](讀/寫,無缺省值)-這個寄存器被用于指出在譯碼過程中輸入雙緩沖器最后有效數(shù)據(jù)字節(jié)位置和在編碼過程中輸出雙緩沖器的最后有效數(shù)據(jù)字節(jié)位置。這個寄存器的目的是ARM7和BP之間的作業(yè)信號交換。通常,用于有效字節(jié)數(shù)據(jù)有效位位置的附加信息也是需要的,該附加信息包括在BP_ONTROL[310]寄存器中。詳細內容可見節(jié)10.13?!P_STATUS[310](讀/寫,缺省值是“32′h0000_0000”)-這個寄存器被用于指出BP各個寄存器的狀態(tài)。在較低兩個字節(jié)(即BP_STATUS[150])中的每個位位置是可以將ARM7_IRQ設置成“1”的中斷條件。這個寄存器可以用兩種方式進行訪問。ARM7或VP可以使用地址27h7C0_0050讀或寫這個滿32位寄存器。但是,通常ARM7或VP最好逐位寫(或再置)BP_STATUS寄存器。所述BP還通過指定從27h7C0_0030到27h7C0_004F的地址范圍支持這個特性。詳細情況可見子節(jié)10.8.3?!P_INT_MASK[150](讀/寫,缺省值是“16hFFFF”)-這個寄存器中的每一位對應于由BP_STATUS[150]給出的中斷條件和在它被裝載到BP_STATUS[150]之前被使用那個條件邏輯地結束。如果屏幕位被設置為“0”,相應的中斷條件被無條件地設置為“0”(即、被禁止)。有關中斷的詳細內容可見節(jié)10.9?!_MB_SIZE[70](讀/寫,無缺省值)-這個寄存器被用于指出將被編碼或譯碼的圖像的垂直長度。它被通知所述值必須用宏塊的數(shù)量來描述。例如,如果垂直長度是288個象素,那么,V_MB_SIZE[70]=288/16=18。在每次BP編碼或譯碼操作開始之前,ARM7負責去設置這個值?!_MB_SIZE[70](讀/寫,無缺省值)-這個寄存器用于指出將被編碼或譯碼的圖像的水平長度。它被通知所述值必須用宏塊的數(shù)量來描述。例如,如果水平長度是352個象素,那么,H_MB_SIZE[70]=352/16=22。在BP的每次編碼或譯碼操作之前,ARM7負責去設置這個值?!RM7_IRQ(只讀,缺省值是“0”)-這個寄存器是到ARM7請求中斷的1位標志和被直接連接到輸出端口ARM7_IRQ。如果BP_STATUS[150]的任一位被設置為“1”,這個標志將被設置。ARM7負責去復位這個標志。10.8BPI/O數(shù)據(jù)字格式這一節(jié)覆蓋用于BP輸入和輸出的命令數(shù)據(jù)和宏塊數(shù)據(jù)字格式。10.8.1BP_MODE寄存器格式在27′h7c0_0000地址處的32位BP_MODE寄存器具有表25給出的下述格式。注意,BP_MODE[31]=PARAM_SET2[7]和BP_MODE=SF。表25BP_MODE寄存器格式·stantard_format(SF)-將被使用并由表26規(guī)定的的視頻標準。在BP被使能用于所有視頻編碼和譯碼之前,SF應當總是由ARM7規(guī)定。表26SF的定義·picture_type(PT)-圖像編碼類型,由表27規(guī)定。注意用于PT的值00意味著用于MPEG-1、MPEG-2和H.261應用的特殊情況。特別是,雖然D-圖像沒有被用于MPEG-2,但是,它也被指定用做MPEG-2的圖像類型。這是因為MPEG-1位流是MPEG-2位流的子組。表27PT的定義·picture_structure(PS)-由表28規(guī)定的圖像結構信息。用于PS的值00是非法的并導致錯誤。表28PS的規(guī)定·parameter_set0、1和2(PARAM_SET0,PARAM_SET1,PARAM_SET2)-這三個字節(jié)指出用于MPEG-1、MPEG-2和H.263的各種參數(shù)。每個參數(shù)組的規(guī)定見表29和30。表29PARAM_SET0的規(guī)定·intra_dc_pyecision(IDP)-在MPEG-2中規(guī)定的2位附加dc精度參數(shù),在MPEG-1的情況下,該參數(shù)被設置為00?!op_field_first(TFF)-用于在運動矢量編碼和譯碼中使用的MPEG-2的標志?!rame_pred_dct(FPFD)-MPEG-2用于的標志,以指出所使用的frame_DCT和幀預測。·conceaiment_motion_vectors(CMV)或advanced_pyediction_mode(AP)-在MPEG-2中,這個標志被用于指出運動矢量被用于附加宏塊。在H.263中,如果處于遠景(advanced)預測模式,這個標志被設置為1,反之,被設置為0。對于其它標準,這個標志將被設置為0?!ntra_vlc_format(IVF)-用于MPEG-2以確定與宏塊相關的VLC表的類型的標志?!itemate_scan(AS)-用于MPEG_2以確定將被編碼和譯碼的多個系數(shù)的階?!ertical_size_flag(VSF)或continous_presence_multipoint(CPM)-在MPEG-1和MPEG-2中,當圖像垂直長度超過2800行時,這個標志被設置為1,反之被設置為0。在H.263中,當使用持續(xù)存在的多點模式時,這個標志被設置為1,反之被設置為0。表30PARAM_SET1和PARAM_SET2的定義10.8.2BP_CONTROL寄存器格式表31示出了用于BP_CONTROL[310]寄存器(地址27′h7C0_0004)的位描述。表31BP_CONTROL寄存器格式>·BP_cnable(BP_EN)-當這個標志被ARM7或VP設置為“1”時,BP開始處理。因此,在這個標志被設置之前,所有的其它寄存器配置都不工作。如果BP完成了處理,BP將這個標志清零。·software_rfset(SOFT_RESET)-當這個標志被ARM7或VP設置為“1”時,BP停止當前的處理,將所有內部寄存器返回到缺省狀態(tài)。通過設置BP_EN標志,ARM7能夠重新啟動BP處理。BP硬件復位信號為低有效。·pause(PAUSE)-當這個標志被ARM7或VP設置為“1”時,BP凍結當前處理的運行。用戶通過設置BP_EN能夠再開始暫停操作?!etect_start_code(DETECE_START_CODE)-當這個標志被ARM7或VP設置為“1”時,BP在IBUFO中獲得數(shù)據(jù)當中的下一個開始碼。由此,用戶利用設置用于IBUF0_START和IBUF0_END的適當?shù)刂贰V挥蠦P處于空閑狀態(tài)時這個命令才會正確工作。因此,如果BP不是空閑的,在傳送這個命令之前,ARM7將首先傳送一個軟件復位命令給BP。·step(STEP)-當這個標志被ARM7或VP設置為“1”時,BP步進到當前處理運行的一種狀態(tài)。地于調試來講,這是一個非常有用的特性。ARM7將首先傳送一個暫停命令以使能步進操作。·context_switching_request(CTX_SWITCH)-當這個標志被ARM7設置為“1”時,BP根據(jù)DTX_MODE的現(xiàn)場執(zhí)行預先騰空或協(xié)作現(xiàn)場切換。詳細內容見節(jié)10.12?!ontext_switching_mode(CTX_MODE)-當這個標志被ARM7或VP通過將CTX_SWITCH設置為“1”而設置成“1”時,BP執(zhí)行預先騰空現(xiàn)場切換模式。如果它被通過將CTX_SWITCH設置為“1”而設置成“0”,BP將執(zhí)行協(xié)作現(xiàn)場切換模式。注意,在沒有將CTX_SWITCH設置為“1”情況下的CTX_MODE設置將不影響B(tài)P的處理。有關現(xiàn)場切換的詳細情況見節(jié)10.12?!ontext_reload_request(CTX_RELOAD)-當這個標志被ARM7或VP設置為“1”時,BP將在前保存的現(xiàn)場重新裝載到SDRAM中。BP負責從地址SAVE_ADR[310]中讀出存儲的現(xiàn)場。有關現(xiàn)場切換的詳細內容節(jié)10.12。·error_handle_mode(ERR_HANDLE_MODE)-這個標志被用于當在所發(fā)送的壓縮位流中發(fā)生錯誤時促進BP的錯誤恢復過程。當一個輸入位流具有無效位時,BP必須中斷AMR7和檢查這個標志的內容。當這個標志被設置成“1”時,BP自動地獲得下一個開始代碼。如果所述開始碼被用于一個片或GOB,BP重新啟動所述處理。當這個標志被設置成“0”時,BP必須進入空閑狀態(tài)而不再搜索下一個開始碼。這個在BP和ARM7之間的作業(yè)信號交換的詳細內容請見第10.13?!umber_of_macroblocks_to_encorded(NO_MBS[150])-這個寄存器包括16位無符號整數(shù),用于指出在這個片或GOB中將被編碼的宏塊的數(shù)量。使用這個位分辨率,在一個片或GOB中可以編碼高達6553個宏塊。這里,不允許宏塊的數(shù)量為零。10.8.3BP_STATUS寄存器格式表32示出了BP_STATUS[310]寄存器(地址27′h7C0_0050)的位描述。表32BP_STATUS寄存器格式·input_buffer_0_done(IBUF0_DONE)-一個標志,用于通知BP所耗費的在輸入緩沖器0中的所有數(shù)據(jù)。這個標志由BP設置并由ARM7或VP清除。注意,這個標志是一個中斷條件?!nput_buffer_1_done(IBUF1_DONE)-一個標志,用于通知BP所耗費的在輸入緩沖器1中的所有數(shù)據(jù)。這個標志由BP設置并由ARM7或VP清除。注意,這個標志是一個中斷條件?!utput_buffer_0_full(OBUF0_FULL)-一個標志,用于通知BP填充的輸出緩沖器。這個標志由BP設置并由ARM7或VP清除。注意,這個標志是一個中斷條件。·output_buffer_1_full(OBUF1_FULL)-一個標志,用于通知輸出緩沖器被BP填充。這個標志由BP設置并由ARM7或VP清除。注意,這個標志是一個中斷條件?!P_processing_done(BP_DONE)-一個標志,用于通知BP完成了對一個片或GON的編碼或在譯碼情況下檢測一個非片或非GOB。這個標志由BP設置并由ARM7或VP清除。注意,這是一個中斷條件標志。·context_switching_done(CTX_SW_DONE)-一個標志,用于通知BP已經(jīng)準備好轉換到處于現(xiàn)場切換模式的其他任務。這個標志由BP設置并由ARM7或VP清除。注意,這是一個中斷條件標志。·context_reload_done(CTX_RELOAD_DONE)-一個標志,用于通知BP已經(jīng)完成了與從地址SAVE_ADR[310]開始保存的現(xiàn)場相關的重裝操作。這個標志由BP設置并由ARM7或VP清除。注意,這是一個中斷標志?!P_error_flag(BP_ERR)-一個標志,用于通知當對數(shù)據(jù)進行處理時的BP中發(fā)生了錯誤。當BP_ERR_CODE[70](=BP_STATUS[3124])不等于零時,這個標志被設置。詳細內容見節(jié)10.9.2?!nput_buffer_0_full(IBUF0_FULL)-一個標志,用于指出在輸入緩沖器0中的數(shù)據(jù)由ARM7或VP填充。這個標志由ARM7或VP填充并由BP清除。·input_buffer_1_done(IBUF1_FULL)-一個標志,用于指出在輸入緩沖器1中的數(shù)據(jù)由ARM7或VP填充。這個標志由ARM7或VP填充并由BP清除?!utput_buffer_0_done(OBUF0_DONE)-一個標志,用于指出在輸出緩沖器0中的數(shù)據(jù)由ARM7或VP耗費。這個標志由ARM7或VP填充并由BP清除?!utput_buffer_1_done(OBUF1_DONE)-一個標志,用于指出在輸出緩沖器1中的數(shù)據(jù)由ARM7或VP耗費。這個標志由ARM7或VP填充并由BP清除?!alid_bit_position(VALID_BIT_POS[20])-用于指出與下一個處理相關的在存儲在VALID_BYTE_ADR[310]處的數(shù)據(jù)字節(jié)中的有效位位置的三位信息。在視頻編碼中,BP必須設置這個值和ARM7將從這個位位置開始處理?!P_error_code(BP_ERR_CODE[70])-用于指出在BP中發(fā)生了哪種錯誤的8位信息。值零意味著沒有發(fā)生錯誤。詳細內容見子節(jié)10.9.2。10.8.4譯碼輸入數(shù)據(jù)格式和編碼輸出數(shù)據(jù)格式在這種情況下,數(shù)據(jù)實際由壓縮位流組成。根據(jù)相應的標準,數(shù)據(jù)可以包括開始碼、標題參數(shù)和壓縮數(shù)據(jù)。這個位流被逐字節(jié)包裝但在某些應用中并不必是字節(jié)對齊。注意,該位流能夠包括用于多片或多GOB的數(shù)據(jù)。10.8.5編碼輸入數(shù)據(jù)格式和譯碼輸出數(shù)據(jù)格式在這種情況下,數(shù)據(jù)實際由宏塊標題信息、運動數(shù)據(jù)和象素系數(shù)數(shù)據(jù)組成。每種數(shù)據(jù)的格式規(guī)定如下10.8.5.1宏塊標題字宏塊總是由6位組成和具有下述表33給出的格式。表33宏塊標題格式這里,在上述表中給出的參數(shù)規(guī)定如下·垂直宏塊地址(VMA)或group_number(GRNO)-這個字節(jié)意味著具有從1到255的值的垂直宏塊位置。注意,第一個垂直位置被標號為1而不是0。作為一個異常情況,在H.261編碼中,這個字段表示,group_number信息,該信息說明數(shù)據(jù)塊組的位置?!に胶陦K地址(HMA)或madroblock_position(MBPS)-這個字段意味著具有從1到255的值的水平宏塊位置。注意,第一個水平位置被標號為1而不是零。作為一個異常情況,在H.261編碼中,這個字段表示GOB中宏塊33個可能的位置之一?!acroblock_intra(I)-如果當前宏塊是附加編碼的,它被設置為1。否則被設置為0。·macroblock_pattern(P)如果當前宏塊包括編碼的數(shù)據(jù)塊,它被設置為1。否則,它被設置為0。·macroblock_quant(Q)-如果當前宏塊具有一個新的量化比例數(shù),它被設置為1。否則,它被設置為0?!acroblodk_motion_forward(MF)-如果當前宏塊被正向預測,它被設置為1。否則,被設置為0?!acyoblock_motion_backward(MB)-如果當前宏塊被反向預則或包括在H.263中的B-數(shù)據(jù)塊,它被設置為1。否則,被設置為0?!ct_type(DT)、loop_filter(LF)或advanced_prediction(M4)-字節(jié)2的這個位[5]在每個應用中具有不同的意思。在MPEG-1中,它不使用。在MPEG-2中,它表示dct_type。如果宏塊是一個編碼的場DCT,這個標志被設置為1。如果它的一個編碼的幀DCT,它被設置為0。在H.261中,如果在當前宏塊中使用了環(huán)路濾波器,這個標志被設置為1。否則被設置為0。在H.263中,如果當前宏塊使用了提前預測模式,它將被設置為1。否則被設置為0?!otion_type(MT)-這是一個兩位場,用于指出在MPEG-2中使用的frame_motion_type或field_motion_type。它具有在表34和35指出的意思。注意,值00備用。表34frame_motion_type的意思表35field_motion_type的意思·用于按比例設計DCT系數(shù)等級再構成等級的從1到31范圍內未使用的整數(shù)。雖然所述值與在前宏塊的值相同(macroblock_quant是零),但每個宏塊標題應當包括用于這個參數(shù)的適當值。在編碼中,用戶負責將適當?shù)闹祵懭脒@個場。在譯碼中,BP將哈夫曼譯碼的quantizer_scale值寫入這個場。如果當前宏塊不包括用于這個場的哈夫曼碼,BP寫入在前宏塊的比例值?!oded_blockpattern_0(CBP_0)-用于表示在當前宏塊中編碼數(shù)據(jù)塊的6位模式代碼,其中CBP_0[5]==>亮度(Y)0數(shù)據(jù)塊CBP_0[4]==>亮度(Y)1數(shù)據(jù)塊CBP_0[3]==>亮度(Y)2數(shù)據(jù)塊CBP_0[2]==>亮度(Y)3數(shù)據(jù)塊CBP_0[1]==>色度藍(Cb)數(shù)據(jù)塊CBP_0==>色度紅(Cr)數(shù)據(jù)塊·coded_block_pattern1(CBP_1)-用于H.263中BP幀B-數(shù)據(jù)塊的附加coded_block_pattern,其中CBP_1[5]==>亮度(Y)0數(shù)據(jù)塊CBP_1[4]==>亮度(Y)1數(shù)據(jù)塊CBP_1[3]==>亮度(Y)2數(shù)據(jù)塊CBP_1[2]==>亮度(Y)3數(shù)據(jù)塊CBP_1[1]==>色度藍(Cb)數(shù)據(jù)塊CBP_1==>色度紅(Cr)數(shù)據(jù)塊·logical_channal_indicator(LCI)-用于僅在連續(xù)存在H.263的多點模式的GOB邏輯通道號的2位信息。·frame_id(FID)-用于與H.263相關的GOB幀ID的2位信息?!acroblock_address_increment(MBA_INC)-用于當前宏塊宏地址增加值的2位信息。這個信息總是由BP作為附加信息提供,所以,用戶不需要在輸入格式中設置,在輸入宏塊標題中規(guī)定的任一值都將被BP忽略?!revious_dc_luminance(PRE_DC_Y)-用于在前宏塊的亮度數(shù)據(jù)塊dc值的2字節(jié)信息。如果存在有被跳過的宏塊,發(fā)送一個復位值。這個信息永遠由BP作為附加信息提供,從而,用戶不需要在輸入格式中設置。在輸入宏塊標題字中規(guī)定的任一值都將被BP忽略?!revious_dc_chrominance_blue(PRE_DC_Cb)-用于在前宏塊藍色度數(shù)據(jù)塊的dc值的2字節(jié)信息。如果存在有被跳過的宏塊,發(fā)送一個復位值。這個信息永遠由BP作為一個附加信息提供。因此,用戶不需要在格式中設置。在輸入宏塊標題中規(guī)定的任一值都將被BP忽略。·previous_dc_chrominance_red(PRE_DC_Cr)-用于在前宏塊紅色度數(shù)據(jù)塊dc值的2字節(jié)信息。如果存在有被跳過的宏塊,發(fā)送一個復位值。這個信息永遠被BP作為附加信息提供。用戶不需要在輸入格式中設置。在輸入宏塊標題字中規(guī)定的任一值都將被BP忽略。10.8.5.2運動數(shù)據(jù)字如果宏塊包括運動矢量,每個宏塊標題應當具有附加標題字。讓我們首先考慮MPEG-1和MPEG-2的情況。這些標準將具有如表36所示的附加標題字格式,以便當發(fā)生下述情況之一時用于運動矢量條件1)當MF=1或(I=1和CMV=1)時條件2)當MB=1時表36-用于MPEG-1和MPEG-2的一般運動矢量數(shù)據(jù)格式在表36中,所有的分量值都具有半象素精度特性。FS0、FS1、FS2和FS3都是一位標志,用于通知與每個運動矢量相關的場選擇。如果不存在場選擇,該標志將被設置為0。由于MPEG-1不使用場選擇信息,所以,這些檔記應當被設置為0。在MPEG-2編碼中出現(xiàn)與dualprime運動矢量相關的一個異常情況。在這種情況下,正向運動矢量由16個字節(jié)組成(實際使用8個字節(jié))和其格式如圖37所示。通常,在視頻編碼過程中,BP將把運動矢量值轉換成微分值。但是,表37所示的運動矢量分量應當是哈夫曼編碼器真正輸入的微分值。在MPEG-2譯碼情況下,所有的dualprime運動矢量都是由BP處理的。表37-用于MPEG-2雙主基模式的運動矢量數(shù)據(jù)格式H.261和H.263將具有某些不同的運動矢量格式。在大多數(shù)情況下,一個單一的字節(jié)足以用于任一運動矢量分量值。根據(jù)MF和M4標志的內容,相應運動補償宏塊將具有至少2個和至多10個運動矢量分量。表38示出了與運動矢量數(shù)據(jù)相關的數(shù)據(jù)格式。表38-用于H.261和H.263的運動矢量數(shù)據(jù)格式10.8.5.3象素系數(shù)數(shù)據(jù)字4個視頻壓縮標準具有用于量化級的不同最大象素位長。表39示出了所述壓縮。表39-輸入和輸出象素位分辨率因此,如我們在表40中看到的,用于MPEG的象素數(shù)據(jù)格式和電視會議標準是不同的。表40-象素系數(shù)數(shù)據(jù)格式10.9中斷條件如果滿足了在這一章中描述的中斷條件,BP將通過確認ARM7_IRQ標志中斷ARM7。BP具有兩組中斷條件,即缺省和錯誤條件。這些條件都被存儲在BP_STATUS[150]中。如果BP設置其中的任一位,它都將激活ARM7_IRQ信號。所有的這些條件都可以通過設置BP_INT_MASK[150]寄存器的相應位被屏蔽。10.9.1缺省中斷條件·缺省條件0(BP_STATUS)當輸入緩沖器0的處理完成時,BP將確認ARM7_IRQ并設置IBUF0_DONE標志?!と笔l件1(BP_STATUS[1])-當輸入緩沖器1的處理完成時,BP將確認ARM7并設置IBUF1_DONE標志。·缺省條件2(BP_STATUS[2])-當輸入緩沖器0的處理完成時,BP將確認ARM7并設置IBUF0_FULL標志?!と笔l件3(BP_STATUS[3])-當輸入緩沖器1的處理完成時,BP將確認ARM7并設置IBUF1_FULL標志。·缺省條件4(BP_STATUS[4])-當在視頻編碼情況下由ARM7指定的片或GOB完成時或當在視頻譯碼情況下達到非片或非GOB開始碼時,BP將確認ARM7并設置BP_DONE標志?!と笔l件5(BP_STATUS[5])-當在搶先式現(xiàn)場切換模式中現(xiàn)場保存操作或在協(xié)作現(xiàn)場切換模式中完成當前片或GOB時,BP將確認ARM7_IRQ并設置CTX_SW_DONE標志?!と笔l件6(BP_STATUS[6])-當完成現(xiàn)場再裝載操作時,BP將確認ARM7-IRQ并設置CTX_RELOAD_DONE標志?!と笔l件7(BP_STATUS[7])-目前,BP_STATUS[7]備用。因此,這個位必須被設置為零。通常,這些缺省中斷條件不被推薦使用BP_INT_MASK[70]進行屏幕。但是,在某些應用中,用戶可以試圖屏蔽缺省條件1。10.9.2錯誤中斷條件如果在BP中發(fā)生了錯誤,BP將設置一個導致ARM7中斷請求的BP_ERR標志。同時,BP將在BP_STATUS寄存器中的BP_ERR_CODE中設置一個非零值的適當數(shù)據(jù)。這個8位BP_ERR_CODE具有下述意義·BP_ERR_CODE=8′b0000_0000;沒有錯誤發(fā)生·BP_ERR_CODE=8′b0000_0001;非法設置BP_MODE寄存器·BP_ERR_CODE=8′b0000_0010;非法設置水平宏塊位置·BP_ERR_CODE=8′b0000_0011;非法設置垂直宏塊位置·BP_ERR_CODE=8′b0000_0100;用于宏數(shù)據(jù)增量的非法VLC·BP_ERR_CODE=8′b0000_0101;用于宏數(shù)據(jù)類型的非法VLC·BP_ERR_CODE=8′b0000_0110;用于宏數(shù)據(jù)搬移代碼的非法VLC·BP_ERR_CODE=8′b0000_0111;非法屏蔽運動矢量標志位·BP_ERR_CODE=8′b0000_1000;用于編碼背景圖案的非法VLC·BP_ERR_CODE=8′b0000_1001;用于數(shù)據(jù)塊DCTdc長度的非法VLC·BP_ERR_CODE=8′b0000_1010;非法DCTdc值·BP_ERR_CODE=8′b0000_1011;用于數(shù)據(jù)塊DCTdc系數(shù)的非法VLC·BP_ERR_CODE=8′b0000_1100;在一個宏塊中的數(shù)據(jù)塊超過64的號·BP_ERR_CODE=8′b0000_1101;非法的f_code值(即,該值是零)·BP_ERR_CODE=8′b0000_1110;用于數(shù)據(jù)塊DCTac系數(shù)的非法VLC·BP_ERR_CODE=8′b0000_1111;非法IBUF和OBUF地址設置·BP_ERR_CODE=8′b0000_0000;用于BP輸入或輸出緩沖器開始地址最低有效4位不等于零·其它BP_ERR_CODE值備用。10.10詳細功能要求10.10.1IBUF接口在BP和CCU之間的所有數(shù)據(jù)搬移都通過IOBUS。IOBUS是一個包含多路復用的地址和數(shù)據(jù)的32位@40MHz同步總線。但是,由于通過IOBUS傳輸16字節(jié)數(shù)據(jù)需要至少7個周期,所以,IOBUS的最大傳輸速率將是91.4M字節(jié)/秒(=731.4M位/秒)。BP可以是用于所有IOBUS讀和寫事務的主控器或從控器。當BP作為主控器時,它必須傳送一個請求信號給IOBUS仲裁器。如果IOBUS是空閑的,仲裁器將向所述BP傳送一個授權和設備選擇。通過IOBUS傳送的數(shù)據(jù)內容可以是下述三個范疇之一包含兩個或四個象素分量的32位象素數(shù)據(jù),32位壓縮位流字和用于編碼和譯碼操作的句法/控制參數(shù)。至于與IOBUS接口相關的諸如時序圖的其它信息,建議讀者參考MSPIOBUS說明。10.10.2塊層處理10.10.2.1曲折掃描約定BP支持兩個曲折掃描轉換矩陣,該矩陣在MPEG視頻標準中有建議。在VP和BP之間傳輸?shù)?×8個塊數(shù)據(jù)包含所有的64個分量。10.10.2.2RLC代碼關于RLC譯碼,BP根據(jù)DCTac系數(shù)的哈夫曼譯碼結果產生一個零和等級數(shù)據(jù)。如果在產生用于一個8×8塊的64個象素之前檢測到end_of_block信號,RLC譯碼器負責產生其余的零數(shù)據(jù)。關于RLC編碼,BP通過和下一個非零數(shù)據(jù)組合對連續(xù)零數(shù)據(jù)的數(shù)量計數(shù)并產生所述游程和等級碼。如果其余的所有數(shù)據(jù)都等于零,它將產生用于其余數(shù)據(jù)的end_of_block而不是產生RLC。用于RLC碼的處理周期與將被產生的零的數(shù)量相同。10.10.2.3哈夫曼代碼哈夫曼代碼支持所有的MPEG-1、MPEG-2、H.261和H.263視頻標準中建議的哈夫曼表。假設大部分表被實現(xiàn)在查詢表ROM中,其中每個ROM字是12位寬。但是,某些比較簡單或相當復雜的哈夫曼表可以使用硬件邏輯執(zhí)行。表41概括了使用查詢表ROM實現(xiàn)的譯碼器表。表41-哈夫曼譯碼器查詢表所需的ROM長度表42概括了編碼器表,它需要比譯碼器表更大的ROM長度。表42-哈夫曼編碼器查詢表所需的ROM長度從表41和42,我們可以看到用于哈夫曼編碼器和譯碼器的總的所需ROM長度是768×12位。上述表不包括填充代碼、escape_code、DCT系數(shù)的符號位和end_of_block代碼,代碼end_of_block是由狀態(tài)機處理的。每個哈夫曼代碼的處理周期示于表43。表43-哈夫曼代碼的處理周期最后,應當注意,使用這個辦法不能實現(xiàn)JPEG譯碼表,但是應當注意,dc_coeff_next_0表能夠被用于JPEG編碼。10.10.2.4微分dc值在幀內塊的情況下,BP還計算用于8×8塊數(shù)據(jù)第一分量的微分dc系數(shù)和利用所發(fā)送的微分dc系數(shù)重建dc值。10.10.2.5非編碼塊BP不支持未編碼的塊。VP和ARM7負責對未編碼塊進行處理。為了使VP和ARM7對這種數(shù)據(jù)塊進行處理,BP指出在宏塊標題字中出現(xiàn)的coded_block_pattern中的非編碼塊。10.10.2.6塊發(fā)送順序應當注意,在一個為編碼和譯碼所發(fā)送的宏塊中的順序等于如下亮度(Y)塊0、1、2和3,色度藍(Cb)塊和色度紅(Cr)塊。10.10.3宏塊層處理10.10.3.1微分運動矢量BP根據(jù)運動估計結果計算微分運動矢量和利用除下述情況以外的所發(fā)送的微分運動矢量重建運動矢量?!さ谝环N情況是MPEG-2視頻編碼情況下dualprime模式。在這種情況下,發(fā)送給BP的運動矢量應當具有矢量的[10]的形式而不是矢量[r][10]的形式。(請見MPEG-2第7.6.3.6款)·第二種情況是H.263的超前預測模式。在這種模式下,可以具有4種運動矢量和這些值被作為微分值從/向BP發(fā)送。10.10.3.2被跳躍的宏塊BP不支持被跳躍的宏塊。V/P和ARM7負責對這些被跳躍的宏塊進行處理。為了使VP和ARM7能夠對這些被跳躍的宏塊進行處理,BP將水平和垂直地址寫入到這些宏塊的標題字中。10.10.3.3宏塊填充碼在MPEG-1譯碼中,如果宏塊填充碼存在的話,BP將舍棄它。但是,在MPEG-1編碼過程中,BP不允許用戶在宏塊層標題中包括宏塊填充碼。通常,這個填充碼被用于控制輸出視頻速率緩沖器。因此,建議在開始碼之間插入零填充碼而不是插入宏塊填充碼。10.10.4片或GOB層處理10.10.4.1字節(jié)對準對于MPEG-1和MPEG-2來講,到達片層的位流輸出將被字節(jié)對準。對于H.263來講,盡管到達圖像層的位流輸出應當被字節(jié)對準,但到達GOB層的位流輸出可以是字節(jié)對準的。但是,H.261譯碼器的輸出將不是字節(jié)對準的。因此,在ARM7中的位流形成例程應當考慮到這些差別仔細編程。如果在編碼情況下用于通過IOBUS傳輸?shù)淖詈髷?shù)據(jù)量小于16個字節(jié),BP將在所述片結束處自動執(zhí)行零填充。10.10.4.2附加片信息在譯碼過程中,任何可能包含在MPEG-1或MPEG-2位流中的片標題信息都被BP舍棄。在編程過程中,BP不插入任何用戶可能需要的附加片信息。如果用戶仍然需要在MPEG-1或MPEG-2位流中包括所述信息,他或她能夠插入所述信息到已經(jīng)被BP編碼的位流中。10.10.4.3Intra_Slice在MPEG-2片層位流中,使用被稱做intra_slice的一個參數(shù)去通知當前片僅由幀內宏塊組成。這個信息在譯碼處理中不使用和試圖在執(zhí)行快速正向和快速反向功能中支援DSM的應用。因此,BP在譯碼過程中舍掉這個信息和在編碼過程中將intra_slice作為0插入片層標題。10.10.4.4片或GOB開始碼在MPEG-1、MPEG-2和H.261中,每個圖像必須具有至少一個片或GOB開始碼。但是,H.263圖像可以不具有GOB開始碼和標題信息。特別是,在任一H.263圖像中的第一個GOB將不包括開始碼和標題信息。因此,如果輸入的位流是關于H.263的,BP狀態(tài)機必須直接處理宏塊層。另外,如果在位流譯碼的同時發(fā)現(xiàn)有GOB開始碼,那么,BP必須譯碼所述開始碼和繼續(xù)它的處理而不中斷ARM7。10.11輸入/輸出雙緩沖器接口10.11.1一般描述輸入/輸出緩沖器必須由雙緩沖器構成。這樣,如圖64和65所示,我們實際上具有4個被稱之為IBUF0、IBUF1。OBUF0和OBUF1的存儲緩沖器。如我們可以從圖64和65中看到的,每個緩沖器都具有開始和結束地址以及填滿和完畢標志。為了確定每個緩沖器的長度,用戶應當將適當?shù)闹祵懭朊總€緩沖器的開始和結束地址寄存器。一旦用于緩沖器的資源處理器完成向緩沖器的寫入,它應當設置一個滿標志和開始向其它存儲體寫入。如果用于所述存儲體的匯集處理器發(fā)現(xiàn)將被訪問的存儲體是被填滿的,它將讀出數(shù)據(jù)。假如所述存儲體變空,匯集處理器將設置完畢標志和檢查其它存儲體的填滿標志。利用如子節(jié)10.7.2所述的BP來修正所述4個開始地址。用于開始地址的每個寄存器都包含有在BP訪問輸入和輸出緩沖器時由BP訪問的最新字節(jié)地址。因此,如果發(fā)現(xiàn)IBUF0_DONE、IBUF1_DONE、OBUF0_DONE和OBUF1_DONE中的任何一個,ARM7都應當再次設置相應的開始地址。還應當注意,開始地址的后4位應當總是被ARM7設置為零。這是由于在FBUS和CCU以及IOBUS之間內部數(shù)據(jù)對準所決定的。還需要設置每一個結束地址以便使用于任一緩沖器長度的字節(jié)總數(shù)是16的倍數(shù)。另外,還建議用于MPEG-1和MPEG-2的最小緩沖器長度是64個字節(jié),用于H.261和H.263的最小緩沖器長度是128個字節(jié)。這避免了由于BP頻繁請求ARM7中斷所引起的性能下降。10.11.2異常緩沖器狀態(tài)處理如果兩個緩沖器都是滿的,BP必須停止它的處理和并進入空閑狀態(tài),而不考慮輸入雙緩沖器的狀態(tài)。如果設置了OBUF0_DONE或OBUF1_DONE標志,BP應當自動地被這個空閑狀態(tài)喚醒。如果兩個輸入緩沖器都是空的,BP不需要立即停止和它可以繼續(xù)它的處理直到它完成了對內部剩余數(shù)據(jù)的處理為止。但是,如果兩個輸入緩沖器都是空的,BP將立即中斷ARM7。在完成了對其余數(shù)據(jù)的處理之后和如果輸入緩沖器仍然被發(fā)現(xiàn)是空的,BP必須進入到空閑狀態(tài)。如果設置了IBUF0_FULL或IBUF1_FULL,BP應當被再次自動喚醒。如果兩個輸入緩沖器都為空,則BP不必立即停止,它可以繼續(xù)其處理直至它完成了內部剩余的數(shù)據(jù)。但是,如果兩個輸入緩沖器都為空,BP將立即中斷ARM7。在剩余數(shù)據(jù)處理完畢之后且如果輸入緩沖器還發(fā)現(xiàn)為空時,BP必須進入空閑狀態(tài)。如果IBUF0_FULL或IBUF1_FULL置位,則BP應該自動被喚醒。由于在一般情況下從其它空閑狀態(tài)的喚醒需要ARM7的控制命令,所以,在這個子節(jié)中所描述的空閑狀態(tài)不同于在本說明書中所描述的空閑狀態(tài)。10.11.3I/O緩沖器的物理構成例首先,決定BP輸入和輸出緩沖器的位置和長度是用戶的職責。用戶可以在VP數(shù)據(jù)高速緩存、ARM7數(shù)據(jù)高速緩存或SDRAM的暫存區(qū)域中提供所述緩沖器。雖然BP輸入和輸出雙緩沖器的實現(xiàn)在某些時候看起來受到了限制,但是,可以有一種有效的途徑去實現(xiàn)上述的緩沖器?,F(xiàn)在,讓我們考慮用于在視頻譯碼中實現(xiàn)速率緩沖器的例子。在這種情況下,用戶可以試圖實現(xiàn)一個用于BP輸入緩沖器的環(huán)形緩沖器。這里,假設我們使用SDRAM,而滿速率緩沖器將被分割成如圖66所示的4個塊。首先,用戶可以將Rate_BuFFEr_Block_0和Rate_Buffer_Block_1分別設置成IBUF0和BUF1。這可以提供如下設置辦到IBUF0_START=Rate_Buffer_Address_0;IBUF0_END=Rate_Buffer_Address_1;IBUF1_START=Rate_Buffer_Address_2;IBUF1_END=Rate_Buffer_Address_3;在IBUF0中的數(shù)據(jù)(即,在Rate_Buffr_Block_0中的數(shù)據(jù))完全被BP用完之后,BP將中斷ARM7。然后,ARM7可以通過如下設置將Rate_Buffer_Block_2設置成IBUF0IBUF0_START=Rate_Buffr_Address_4;IBUF0_END=Rate_Buffer_Address_5;在Rate_Buffr_Block_1中的數(shù)據(jù)被BP用完之后,它將再次中斷,而ARM7能夠通過如下設置將Rate_Buffr_block_3設置成IBUF1IBUF1_START=Rate_Buffer_Address_6;IBUF1_END=Rate_Buffer_Address_7;在Rate_Buffer_Block_2中的數(shù)據(jù)被BP用完之后,ARM7可以通過如在第一步驟中設置的一樣的地址設置再次將Rate_Buffer_Address_0設置成IBUF0。因此,通過簡單地重復這個填滿過程可以實現(xiàn)所述環(huán)形緩沖器。這個例子表示根據(jù)用戶的愿望BP雙緩沖器的用途是相當靈活的。10.12現(xiàn)場切換如果在MSP上運行一個以上的應用程序,那么,ARM7操作系統(tǒng)將命令BP終止當前任務和切換到其它任務。這個過程通常被稱做“現(xiàn)場切換”。BP支持兩種現(xiàn)場切換模式,下面將予以描述。10.12.1搶先式現(xiàn)場切換搶先式現(xiàn)場切換的意思是BP將首先執(zhí)行對當前8×8個象素塊的處理,然后結束一般處理。ARM7能夠通過將在BP_CONTROL[65]寄存器中的CTX_SWITCH和CTS_MODE標志設置成“11”命令預先騰空的現(xiàn)場切換模式。當當前塊處理完成時,BP將向外部SDRAM傳送內部現(xiàn)場以用于以后的處理。當BP完成了現(xiàn)場保存時,它將通過設置位BP_STATUS[5]處的CTX_SW_DONE標志中斷ARM7。然后,ARM7將保存BP輸入和輸出緩沖器的所有內容并初始化BP以用于其它任務。這個模式使BP盡快響應ARM7的現(xiàn)場切換請求。在最壞情況下,BP將請求大約150個周期(=3.75微秒)去完成當前塊的處理。但是,在一般情況下,假設需要幾十個周期完成所述塊處理是合理的。10.12.2協(xié)作現(xiàn)場切換協(xié)作現(xiàn)場切換用于消除BP的現(xiàn)場保存過程。由于每片或GOB層處理需要初始化整個BP內部狀態(tài),所以,這是可以實現(xiàn)的。在這種模式下,BP繼續(xù)它的當前片或GOB的正常處理,然后結束所述處理。通過將在BP_CONTROL[65]中的CTX_SWITCH和CTX_MODE標志設置為“10”,ARM7能夠命令協(xié)作現(xiàn)場切換模式。當當前片或GOB處理被完成時,BP將利用設置位于BP_STATUS[5]處的CTX_SW_DONE標志中斷ARM7。然后,ARM7必須保存BP的輸入和輸出緩沖器的所有內容并初始化BP以用于其它操作。10.12.3現(xiàn)場再裝載為了轉換到在先任務,BP應當從地址SAVE_ADR[310]再裝載保存在SDRAM中的現(xiàn)場。為了請求這個現(xiàn)場再裝載,BP需要處于空閑狀態(tài)。用于這個請求的可能的情況是當BP_DONE被設置時,當CTX_DONE被設置時或當ARM7利用軟件復位BP時。因此,如果ARM7在BP_CONROL[7]中設置了CTX_RELOAD標志,BP將被從空閑狀態(tài)喚醒并開始讀出所保存的現(xiàn)場。在BP完成了現(xiàn)場再裝載操作之后,BP將通過設置CTX_RELOAD_DONE標志中斷ARM7。然后,ARM7必須初始化BP內部寄存器和使BP能夠執(zhí)行在前任務的處理。10.13作業(yè)信號交換這一節(jié)覆蓋了當BP完成所述處理時用于作業(yè)信號交換的詳細過程。這里,“用于最后數(shù)據(jù)的指針修正”的意思是BP將適當?shù)闹捣謩e寫入VALID_BYTE_ADR[310]和VALID_BIT_POS[20]。10.13.1編碼情況通常,用于編碼的數(shù)據(jù)輸入由VP供給。如果輸入雙緩沖器之一被VP填滿,則BP將通過IOBUS開始讀出數(shù)據(jù)。當處理結束時(即、被處理宏塊的數(shù)量等于由ARM7制定的宏塊的數(shù)量),BP必須通過設置BP_DONE標志中斷ARM7并進入空閑狀態(tài)。用于有效數(shù)據(jù)的指針表示用于片或GOB的“壓縮位流的結束”。另外,VALID_BYTE_ADR[310]將指出在輸出雙緩沖器之一中的一個位置。通過將這個壓縮位流和較上層標題相組合,ARM7形成最后的位流并重復所述處理。如果在BP完全消耗輸出雙緩沖器中的數(shù)據(jù)之前ARM7試圖重新啟動BP,由于當它被重新啟動時指針將被BP修正,所以,通過消耗至少一個輸出雙緩沖器和保存用于最后數(shù)據(jù)的指針就可實現(xiàn)這個目的。10.13.2譯碼情況首先,ARM7搜索用于這片或GOB的開始碼(如果存在的話)。如果發(fā)現(xiàn)了開始碼,ARM7初始化并使能所述BP。在BP執(zhí)行了哈夫曼譯碼、RLC譯碼和逆曲折掃描轉換之后,數(shù)據(jù)被傳送給輸出緩沖器以用于VP處理。BP繼續(xù)這個處理例程直到檢測到一非片或非GOB開始碼為止。如果他們被檢測到,BP利用設置與用于“非片或非GOB開始碼”的最后數(shù)據(jù)相關的指針中斷ARM7。然后,ARM7必須譯碼所述開始碼并執(zhí)行標題分析,直到發(fā)現(xiàn)下一個片或GOB開始碼為止。10.13.3在壓縮位流中發(fā)現(xiàn)的錯誤在實際數(shù)據(jù)將要通過電話線和公共交換網(wǎng)絡傳送的電視會議中,有很大可能使某些無效數(shù)據(jù)也被包括在輸入的位流當中。在這種情況下,BP必須中斷ARM7和檢查ERR_HANDLE_MODE標志。如果在BP被使能用于特定應用之前用戶決定錯誤處理模式,它將是安全的。當ERR_HANDLE_MODE標志被設置為“1”時,BP將自動發(fā)現(xiàn)下一個開始碼。如果所述開始碼是用于一個片或GOB的,BP繼續(xù)它的正常處理。由于BP能夠比ARM7更快地發(fā)現(xiàn)開始碼而且在BP發(fā)現(xiàn)下一個開始碼的同時ARM7能夠執(zhí)行其它處理,所以,這個模式相當有效。但是,如果發(fā)現(xiàn)了片或GOB層以外的其它的開始碼,BP將再次通過設置BP_DONE標志中斷ARM7并進入空閑狀態(tài)。在這種情況下,用于最后所使用數(shù)據(jù)的指針必須指出下一個開始碼的結束。如果ERR_HANDLE_MODE標志被設置為“0”,那么,BP必須進入空閑狀態(tài)而不是搜索下一個開始碼。在這種情況下,用于所使用的最后數(shù)據(jù)的指針必須指出發(fā)生錯誤的位置。如果用戶試圖使用ARM7指令調試一個被污染的位流,這個模式將是非常有用的,附錄BMPC位流處理器位流處理器(BP)是一個用于視頻數(shù)據(jù)編碼和譯碼的關鍵MSP處理核心。BP覆蓋了MPEG片層編碼和譯碼、H.261/H.263組塊(GOB)層編碼和譯碼。在譯碼中,BP提供包含在每個宏塊中涉及矢量處理器或ARM-7內核的全部信息。位流處理器硬件被分成4個功能塊·IOBus端口接口,包括IO控制和譯碼單元·BP控制狀態(tài)機·編碼譯碼器內核,包括BP寄存器多路轉換器和寄存器算術邏輯單元和多路轉換器,和FIFO控制單元·VLCFIFO單元·VLC編碼譯碼器,包括具有編碼譯碼器地址發(fā)生器的查詢ROMVLCLUTROM340(圖3)直接描述如下1.0方法論查詢表單元是哈夫曼編碼和譯碼的核心。這個單元支持所有包括在MPEG-1、MPEG-2、H.261和H.263規(guī)定中并由SAMSUNGMSP支持的VLC表。這些表的大部分都是在12位寬的ROM中形成的。但是,如果查詢處理太簡單或不符合ROM表的長度,那么,將應用特殊的編碼/譯碼。在這一層中的所有4個規(guī)定包含高達17位的變長代碼。除了編碼和譯碼值,提供有用于編碼和譯碼的代碼長度和有效代碼指示器,以便正確地進行處理。如果我們使用傳統(tǒng)方法對VLC表編碼和譯碼,ROM表和地址發(fā)生器將是非常大的。1.1實現(xiàn)策略可以描述如下·如果不使地址發(fā)生器產生困難的話,盡可能多地共享ROM表·根據(jù)編碼和譯碼重新安排VLC表·零計數(shù)或一計數(shù),這是以哈夫曼代碼,首先譯碼·通過使用諸如符號或奇/偶的一位標志減少表的長度·如果可能,將一個ROM位置分成高和低·使用VLC的LSBs產生ROM表地址以便簡化地址發(fā)生器這個方法是非常有效的。最后的ROM表長度是768×12位,這比由所述問題隱含的要小的多。查詢是由ROM表地址發(fā)生器和ROM表查詢處理執(zhí)行的。地址發(fā)生器對諸如表類型、模式和VLC/值的輸入信號譯碼并產生ROM表的地址。然后,被編碼或被譯碼的數(shù)據(jù)可以從ROM表值和其它信息中獲得。譯碼表具有兩種格式。第一種用于DCT系數(shù),每個VLC代碼具有一個ROM位置。另一格式用于其它表,在這些表中,每個ROM位置被劃分成高6位和低6位。因此,每個位置包含有兩個VLC代碼。編碼表具有兩種格式。一種用于H.263的TCOEF。另一種用于其它表。每個ROM位置包含有一個用于編碼的哈夫曼代碼。ROM表的長度是768×12位。所述表可以描述如下表1--VLC譯碼ROM表映射表2--VLC編碼ROM表映射1.2譯碼所有用于譯碼器的表都是以零或一計數(shù)為基礎重新安排的。如果VLC代碼的MSB是“0”,使用零計數(shù)。反之使用一計數(shù)。例如,如果我們具有代碼“00001xxx”,那么,我們具有4個零。如果我們具有代碼“1110xxx”,我們具有三個一計數(shù)。譯碼過程將首先對零/一的計數(shù)譯碼,輸出VLC代碼的零/一計數(shù)給ROM表地址發(fā)生器。然后,地址發(fā)生器對其余的代碼譯碼以產生地址。所述地址包括兩部分一部分是偏移,被我們被之為屏蔽地址的另一部分可以從VLC表獲得。所述地址是兩部分的邏輯或。由地址發(fā)生器提供的其它信息描述如下·VLC代碼長度·特殊標志2位標志將與H.261相關的“ESCAPE”、“ENDOFBLOCK”、“STUFFING”或“STARTCODE”通知給譯碼狀態(tài)機?!じ邤?shù)據(jù)提取使能有效數(shù)據(jù)是高6位?!し?偶數(shù)使能這個標志指出譯碼將在所述表的基礎上提取VLC的LSB作為符號或偶數(shù)位?!び行LC·屏蔽移動位和屏蔽這兩個信號用于產生屏蔽地址。對于ROM表來講,除了MPEG-2的表14、15和表12/H.263以外,每個位置都存儲有高和低位格式的數(shù)據(jù)。用于譯碼的ROM表的長度是332×12位。1.2.1表14/MPEG-2這個表與表2-B.5c/MPEG-1和表5/H.261相同。ROM表格式位10-6RUN;位5-0LEVEL1.2.2表15/MPEG-2由于具有相同的RUN、LEVEL和VLC代碼,所以該表的大部分與表14/MPEG-2共享。ROM表格式位10-6RUN;位5-0LEVEL1.2.3表12/H.263這個表與MPEG-2的表14、15比較具有多個輸出值“LAST”。ROM表格式位11LAST;位10-4RUN;位3-0LEVEL1.2.4運動代碼/宏塊增量這一節(jié)覆蓋了表1/MPEG-2、表10/MPEG-2、表2-B.1/MPEG-1、表2-B.4/MPEG-1、表1/H.261、表3/H.261和表10/H.263。注意,對于運動代碼,除了VLC=1以外,LSB是符號位。對于宏塊增量來講,除了VLC=1以外,LSB是偶數(shù)值標志。因此,我們僅對表的一半譯碼。如果我們忽略拼接符號/偶數(shù)位,除了表10/H.263的高部分以外,兩種表具有相同的VLC和譯碼值。被譯碼的值高達6位,這意味著我們將兩個數(shù)據(jù)值放到一個位置內。雖然表10/H.263較低部分的譯碼值不同于其它部分,但是,由于是定點,所以拼接二進制值是相同的,即我們使用16和一半位置去覆蓋所有的表,所以。我們使用一個簡單的FSM產生ROM地址。在應用中,如果運動代碼一直在被譯碼,ROM表則提供絕對值。另一方面,如果地址發(fā)生器使能符號位,則譯碼器將提取LSB作為符號,在這種情況下,“1”意味著負,“0”意味著正。算法描述如下if(sign_enable==1)increment_value=sign*ROM_table_value;elseincrement_value=ROM_table_value;如果宏塊地址增量表被譯碼,我們從ROM表值和偶數(shù)標志中獲得結果。例如,ROM表給我們一個值“5”。如果偶數(shù)標志為高,則我們獲得結果“10”。如果偶數(shù)標志為低,則我們獲得“11”。算法可以描述如下if(even_enabl==1)increment_value=ROM_able_value<<1)|(-even_bit);elseincrement_value=ROM_table_value;ROM表格式位11-6高數(shù)據(jù);位5-0低數(shù)據(jù)1.2.5宏塊模式這一節(jié)覆蓋了表9/MPEG-2、表2-B.3/MPEG-1和表4/H.261(CBP)。被譯碼值高達6位,這意味著我們能夠放兩個數(shù)據(jù)到一個位置中,即,32個位置被用于覆蓋所有的這些表。ROM表格式位11-6高數(shù)據(jù);位5-0低數(shù)據(jù)1.2.6宏塊類型這一節(jié)覆蓋了表2、3、4/MPEG-2、表2-B.2/MPEG-1、表2/H.261(MTYPE)和表3、4/H263(MCBPC)。被譯碼值高達5位。我們仍然使用高/低數(shù)據(jù)的概念。一個簡單的FSM被用于產生ROM地址。ROM表格式;位11-6高數(shù)據(jù);位5-0低數(shù)據(jù)雖然某些位對于不同的規(guī)定具有不同的含義,但宏塊的類型規(guī)定對每個說明通用,該規(guī)定基于MPEG。注意,H.263在其信息要求的基礎上需要2級譯碼,其描述如下譯碼MCBPC,獲得三位宏塊類型在宏塊類型、PB標志和圖像類型的基礎上的宏塊類型查詢在VLC表中的宏塊類型格式描述如下表3MPEG的宏塊類型的格式表4H.263的MCBPC格式表5H.261的宏塊類型的格式從表4我們不僅獲得3位宏塊類型,而且獲得2位色度模式。這里的宏塊類型是具有范圍從0到4的3位值。如上所述,詳細的宏塊類型信息在第二級被譯碼。譯碼查詢表能夠如下所述表6用于H.263的宏塊類型譯碼表1.2.7DCTDC長度這一節(jié)覆蓋了表12、13/MPEG-2和表2-B.5/BPEG-1。注意,由于VLC的結構,這里使用一計數(shù)代替零計數(shù)。ROM表格式位0-6高數(shù)據(jù)色度;位4-0低數(shù)據(jù)亮度。位11和位15備用。1.2.8CBPY這一節(jié)覆蓋了表9/H.263。注意,這個表包含兩組數(shù)據(jù),一組用于幀間圖像,另一組用于幀內圖像。一組值彼此相反設置,這使能存儲一組數(shù)據(jù)到所述ROM中。這里,幀內數(shù)據(jù)被放入所述ROM中。4位值被用于描述CBPY值。ROM表格式位9-6高數(shù)據(jù);位3-0低數(shù)據(jù)。位11-10和位5-4備用。1.2.9雙主基和模式這部分覆蓋了表11/MPEG-2和表7/H.263。這兩個表非常簡單和非常小,所以,它們被直接譯碼。1.3編碼與譯碼一節(jié)相同,編碼過程也使用零/一計數(shù)的概念。ROM表包括零/一計數(shù)的信息、在零/一計數(shù)基礎上的第一個“1”之后的代碼長度以及在第一個/最后一個“1”之后的VLC代碼。根據(jù)這個格式,ROM表的長度被限制為具有在表12/H.263中利用特殊編碼解決的4個異常的每個位置12位。格式可以被描述如下表7編碼的一般格式表8表12/H.263編碼格式在上述表中,VLC代碼長度是第一/最后一個“1”之后的VLC代碼的長度。VLC代碼是在第一/最后一個“1”之后的VLC代碼。在零計數(shù)的情況下,在第一個“1”之后的VLC代碼被提取。反之,VLC代碼將在最后一個“1”之后從該位中被提取。注意,在編碼中一計數(shù)的應用不同于在譯碼中的應用。如果并且僅僅是如果一計數(shù)標志被地址發(fā)生器使能才應用一計數(shù)。因此,如果VLC的MSB是1而一計數(shù)標志為低,那么,ROM表的零/一計數(shù)部分將是0,這意味著應用零計數(shù)。下面的例子覆蓋了所有編碼中出現(xiàn)問題的情況。例1VLC=0000011001,one_count_enable=0用于一般情況的結果010110001001用于表12/H.263的結果101100001001例2VLC=11001,one_count_enable=0用于一般情況的結果000010001001用于表12/H.263的結果000100001001例3VLC=11001,one_count_enable=1用于一般情況的結果001001100001用于表12/H.263的結果當加上偏移和輸入值時,產生一般地址。1.3.1表14/MPEG-2這個表與表2-B.5c/MPEG-1和表5/H.261相同。編碼處理輸入塊的RUN、FIRSTDC、ESCAPE和END。編碼結果偏移地址,它被和LEVEL和RUN相加以產生地址。1.3.2表15/MBEG-2由于具有相同的RUN、LEVEL和VLC代碼,所以,這個表的大部分與表14/MPEG-2共享。對于某些特殊情況,應用一計數(shù)。對RUN、LEVEL、FIRSRDC、ESCAPE以及ENDOFBLOCK的輸入被編碼處理。編碼結果偏移地址,和一計數(shù)指示器。1.3.3表12/H.263如上所述,這個表是非常特殊的。我們使用不同的格式來描述它。遺憾的是在某些異常情況下我們不能夠使用12位去描述VLC代碼。所述異常如表9所示。這些異??梢允褂锰厥饩幋a而不使用所述ROM表。表9在表12/H.263中的編碼異常對RUN和ESCAPE的輸入進行編碼處理。編碼結果偏移地址,用于和LEVEL或RUN相加以產生地址。1.3.4運動代碼/宏塊增量這一節(jié)覆蓋了表1/MPEG-2、表10/MPEG-2、表2-B.1/MPEG-1、表2-B.4/MPEG-1、表1/H.261、表3/H.261和表10/H.263。如在譯碼部分所述,對于所有這些表我們可以共享一個ROM表和FSM。從ROM表中獲得的VLC代碼與符號/偶數(shù)位相組合以構成全VLC碼。因此,在這個編碼FSM中處理的輸入值是運動代碼的絕對值,它的LSB是小數(shù)位和右移一位宏塊地址增量。對STUFFING和ESCAPE的輸入進行編碼處理。1.3.5宏塊模式這一節(jié)覆蓋了表9/MPEG-2和表2-B.3/MPEG-1。地址是偏移和模式值的地址。1.3.6宏塊類型這一節(jié)覆蓋了表2、3、4/MPEG-2和表2-B.2/MPEG-1。1.3.7表3、4/H.263(MCBPC)提供了圖像類型信息、宏塊類型信息和填充標志以產生ROM表地址偏移。所述地址是偏移地址和CBPC的和。1.3.8表2/H.261(MTYPE)地址發(fā)生器非常復雜。我們不再進一步考慮它。1.3.9CBPY如同我們在譯碼一節(jié)所描述的那樣,我們只編碼幀內圖像數(shù)據(jù)。如果圖像類型是幀間圖像,數(shù)據(jù)應當首先被反向,所述地址是偏移和CBPY值的相加。1.3.10DCTDC長度這一節(jié)覆蓋了表12、13/MPEG-2和表2-B.5/MPEG-1。由于亮度和色度的某些VLC碼是相同的,對于它們,我們共享某些ROM表。使用色度標志和某些位置產生偏移地址。我可以通過使偏移和實際值相加獲得ROM地址。1.3.11DUALPRIME和MODE這部分覆蓋了表11/MPEG-2和表7/H.263。這兩個表非常簡單和非常小,所以,對它們直接編碼。2.0硬件描述VLC編碼/譯碼的硬件包括在‘VLC’的模塊中。這個模塊包括三個子模塊。應用這些模塊產生ROM表地址或譯碼/編碼數(shù)據(jù)本身?!甐LC_DEC’被用于譯碼VLC和產生ROM表地址?!甐LC_ENC’是一個用于編碼VLC的塊,用于產生ROM表地址或與H.263的TCOEF表相關的特殊編碼?!甃OOKUP’在ROM表值或特殊編碼值的基礎上輸出VLC數(shù)據(jù)。2.1VLC譯碼地址發(fā)生器VLC_DEC的核心是譯碼FSM。這個FSM譯碼輸入信息并控制地址的發(fā)生。FSM的輸入和規(guī)定可以描述如下·零/一計數(shù)(15位)提供零/一計數(shù)值?!ち?一計數(shù)(4位)提供零/一計數(shù)值,使用這兩個不同位-計數(shù)信號的目的是為了使輸入數(shù)據(jù)稀疏減少門控客戶(gatecustomer)。在大多數(shù)情況下使用15位。·一計數(shù)使能(1-位)一計數(shù)指示器?!け眍愋?16位)表類型表10VLC_DECFSM表類型格式模式(9位)操作模式表11VLC_DECFSM模式格式規(guī)格和圖像類型的規(guī)定在管腳規(guī)定中解釋。使用特殊算法產生譯碼ROM表地址以便簡化硬件和保證ROM訪問時間。其過程如下步驟1產生偏移地址(OFFSET)。步驟2產生4位移位量(MASK_SHFT)和利用這個量右移16位FIFO_DATA。然后提取4個最低有效位(FOL_DATA)。步驟3在步驟2中獲得與該4位反向的位。步驟4產生4位屏蔽信號以屏蔽在步驟3中獲得的數(shù)據(jù)(MASK)。步驟5將步驟4的結果和偏移地址進行邏輯或。其結果是ROM表的地址。這些步驟的組合得到Address=OFFSET|(BITREVERSE(Bit(3-0)of(FIFO_DATA>>MASK_SHFT))&MASK)FSM的輸出如下·MASK(4位)屏蔽數(shù)據(jù)·OFFSET(9位)ROM表偏移地址·MASK_SHFT(4位)位移量·SIZE(15位)VLC長度·SPECIAL_FLAG(3位)用于譯碼的附加信息表12VLC_DEC特殊標志的規(guī)定·VALID_VLC(1位)有效VLC代碼標志·HIGH_DATA_INDICATOR(1位);提取ROM數(shù)據(jù)的高6位輸入管腳·FOL_DATA(4位)被移位的FIFO_DATA(見上述步驟2)·CNT(4位)零/一計數(shù)·ONE_CNT_EN(1位)一計數(shù)指示器·NODE(14位)表類型和其它信息。規(guī)定如下表13在VLC_DEC中的模式格式規(guī)格00=MPEG-1;01=MPEG-2;10=H.261;11=H.263;圖像類型00=備用;01=幀內;10=預測;11=雙向;·FIFOZZ-DATA(16位)數(shù)據(jù)包括VLC輸出管腳·ROM_ADR(10位)ROM表地址·MASK_SHFT(4位)與FIFO_DATA相關的移位量(見上述步驟2)·SIZE(5-位)VLC長度·SPECIAL_0(3位)特殊標志(見FSMA輸出)·VALID_VLC(1位)有效VLC標志·HIGH_DATA(1位)提取VLC的LSB作為偶數(shù)標志符號的指示器·FULL_DATA(1位);滿12位數(shù)據(jù)結構,當譯碼DCT系數(shù)時該滿12位數(shù)據(jù)結構為高·TABLE(6位)在FSM輸入中規(guī)定的·T_MODE(9位)在FSM輸入中作為MODE規(guī)定的。2.2VLC_ENC與VLC編碼核心部分一樣,VLC_ENC對變長碼編碼。這一部分的輸出是ROM表地址或VLC的特殊編碼。如在第1.0節(jié)所描述的,除了用于H.263的某些特殊情況以外,編碼數(shù)據(jù)結構遵守12位數(shù)據(jù)格式。從硬件的觀點來看,雖然10位加法器被用于產生ROM表地址,但是,它比VLC_DEC一節(jié)簡單的多。與VLC_DEC類似,這一節(jié)的核心是以VLC_ENC命名的FSM。另外的FSM、ENC-SP是用于特殊編碼。輸入給FSMVLC_ENC的信號與這一節(jié)的輸入管腳相同·LAST(一位)用于H.263的TCOEF表的LAST的值?!UB/VALUE(6位)如果DCT系數(shù)表被編碼,這個輸入意味著RUN。反之,它是一個通用值,即模式·LEVEL(6位)DCT系數(shù)等級。·SPECIAL_FLAGE(2位)在VLC_DEC一節(jié)中規(guī)定的特殊標志。·TABLE(6位)與VLC_DEC相同·MODE(9位)與VLC_DEC相同ROM地址的產生是非常直接的。FSM產生一個偏移地址,該偏移地址被加到VALUE(RUN)或LEVEL或0上以形成所述地址。對于特殊編碼,由于這些VLC具有相同的長度和零計數(shù),所以,輸出是被重新構成代碼的兩個最低有效位。輸出管腳可以描述如下·ONE_CNT_FLG(一位)通知VLC構成節(jié)使用‘一’計數(shù)?!IGN_EN_BIT通知VLC構成節(jié)將符號/偶數(shù)位用做VLCLSB。·SPECIAL_ENCODE(一位)特殊編碼標志。·VLC(2位)特殊編碼的VLC代碼LSB。·ADR_A(16位)偏移地址。注意,高6位是0?!DR_B(16位)地址的其它部分。注意,高10位總是0。2.3查詢這一節(jié)提供編碼/譯碼的VLC數(shù)據(jù)。這個塊處理下述情況·調節(jié)12位編碼/譯碼的ROM表值輸出·位高/低譯碼數(shù)據(jù)輸出·特殊編碼數(shù)據(jù)的再構成如果需要,輸出數(shù)據(jù)被填充零。輸入管腳·D_ADR(10位)被譯碼的ROM地址·E_ADR(10位)被編碼的ROM地址·ENCODE(1位)1編碼;0譯碼·HIGH(1位)提取高6位標志·ENABLE(1位)滿12位數(shù)據(jù)標志·VLC(2位)特殊編碼代碼·SPECIAL_ENCODE(1位)特殊編碼標志輸出管腳LOOKUP(16位)VLC代碼權利要求1.一種用于對視頻數(shù)據(jù)進行編碼和譯碼的系統(tǒng),所述系統(tǒng)包括矢量處理器,用于對視頻數(shù)據(jù)執(zhí)行線性變換;位流處理器,用于壓縮所述矢量處理器的輸出或解壓縮輸入給所述矢量處理器的視頻數(shù)據(jù);和控制電路,用于使所述矢量處理器和所述位流處理器的操作同步;其中,所述位流處理器能夠被所述控制電路中斷以停止處理一個視頻數(shù)據(jù)流和開始處理另一個視頻數(shù)據(jù)流,從而使所述位流處理器能夠基本同時地處理兩個視頻數(shù)據(jù)流,以使所述系統(tǒng)能夠對兩個視頻數(shù)據(jù)流進行實時編碼和譯碼。2.如權利要求1所述的系統(tǒng),其中每個視頻數(shù)據(jù)流表示一個運動畫面。3.一種用于對視頻數(shù)據(jù)進行編碼或譯碼的系統(tǒng),所述系統(tǒng)包括矢量處理器,用于對視頻數(shù)據(jù)執(zhí)行線性變換;和位流處理器,用于壓縮所述矢量處理器的輸出或解壓縮輸入給所述矢量處理器的視頻數(shù)據(jù);其中,所述矢量處理器能夠被編程以執(zhí)行單個算術或布爾指令,并且其中,所述位流處理器不能夠被編程以執(zhí)行單個算術或布爾指令。4.一種用于對視頻數(shù)據(jù)進行編碼或譯碼的方法,所述方法包括矢量處理器對視頻數(shù)據(jù)執(zhí)行線性變換;位流處理器壓縮所述矢量處理器的輸出或解壓縮輸入給所述矢量處理器的視頻數(shù)據(jù);和控制電路對所述矢量處理器和所述位流處理器的操作進行同步;其中,所述位流處理器可以被所述控制電路中斷以停止一個視頻數(shù)據(jù)流的處理并開始另一個視頻數(shù)據(jù)流的處理,從而使所述位流處理器能夠同時處理兩個視頻數(shù)據(jù)流,以便使系統(tǒng)能夠對兩個視頻數(shù)據(jù)流進行實時編碼或譯碼。5.如權利要求4所述的方法,其中每個視頻數(shù)據(jù)流表示一個運動畫面。6.一種用于對視頻數(shù)據(jù)進行編碼或譯碼的方法,所述方法包括矢量處理器對視頻數(shù)據(jù)執(zhí)行線性變換;和位流處理器壓縮所述矢量處理器的輸出或解壓縮輸入給所述矢量處理器的視頻數(shù)據(jù);其中,所述矢量處理器能夠被編程以執(zhí)行單個算術或布爾指令,并且其中,所述位流處理器不能夠被編程以執(zhí)行單個算術或布爾指令。全文摘要一種計算機系統(tǒng),包括能同時工作的三個處理器:標量處理器、矢量處理器和位流處理器;在視頻數(shù)據(jù)編碼或譯碼中,矢量處理器執(zhí)行單指令多數(shù)據(jù)處理器能有效執(zhí)行的操作,如DCT和運動補償;位流處理器執(zhí)行哈夫曼和RLC編碼或譯碼;位流處理器能切換現(xiàn)場以使計算機系統(tǒng)同時處理多個數(shù)據(jù)流;標量和矢量處理器能被編程執(zhí)行單個算術或布爾指令;位流處理器不能被編程執(zhí)行單個算術或布爾指令,但是能被編程執(zhí)行整個視頻數(shù)據(jù)處理操作。文檔編號G06F15/76GK1189058SQ9712273公開日1998年7月29日申請日期1997年8月19日優(yōu)先權日1996年8月19日發(fā)明者克利夫·里德,孫在澈,阿姆賈德·庫里什,利·T·恩格延,馬克·福雷德里克森,蒂姆·陸申請人:三星電子株式會社