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