新四季網

視頻數據處理方法及裝置的製作方法

2023-10-04 10:47:44


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀