最近出現(xiàn)了一些兼?zhèn)鋽?shù)字信號處理器(DSP)和微控制器(MCU)能力的處理器,,從而為那些既要求典型的MCU功能又要求高性能信號處理功能的應用大開了方便之門。
這類MCU的優(yōu)勢之一就是起到系統(tǒng)控制器的作用,,通過以太網(wǎng)接口、USB接口和PCI等標準接口來協(xié)調(diào)各子系統(tǒng)的活動。因為許多信號處理器都包含了這樣一些相同的接口,,所以考慮一下系統(tǒng)的體系結(jié)構正在如何演進是很有意義的。本文將討論一種DSP在一個基于PCI的單板計算機應用中起到系統(tǒng)控制器作用的實現(xiàn)方法,。
原理圖
PCI總線的開發(fā)是為了提供一種能輕松連接外圍設備和臺式計算機的高性能方法,。這些外圍設備包括圖形子系統(tǒng)、磁盤控制器和I/O設備,。PCI總線與CPU總線是分開的,,但是仍然需要訪問主存儲器。該接口可以通過一個電橋連接至系統(tǒng)總線,,該電橋允許它以獨立于CPU時鐘頻率的固定頻率運行,。總而言之,PCI為關鍵的系統(tǒng)元件提供了一個高帶寬的通道,,以便在彼此之間傳送數(shù)據(jù),。
隨著嵌入式計算的出現(xiàn),人們都希望以最低的成本設計出帶有通用外圍設備的不以PC為中心的計算平臺,。由于PCI的性能,、可擴縮性和普遍性,使其成為一種自然的“通用標準”,,用于連接大量已經(jīng)使用的外圍設備,。
此外,通過標準接口將嵌入式處理器連接到比它們功能更強大的臺式機處理器是很有利的,,其驅(qū)動力是嵌入式應用的發(fā)展,,例如,用戶手持設備,、銷售點終端以及連接PC的工業(yè)自動化系統(tǒng),。PCI促進了模塊嵌入式系統(tǒng)設計,從而允許多種外圍設備能無縫地連接到一種通用總線,。最后,,這種方法降低了產(chǎn)品總材料成本并且增加了設計的重用,從而降低了開發(fā)帶有嵌入式PCI接口的處理器的總風險,。
系統(tǒng)結(jié)構原理圖
系統(tǒng)體系結(jié)構的演進
在MCU控制的系統(tǒng)中,,DSP一般是充當協(xié)處理器。如圖1(a)所示,,這種配置中的MCU和DSP通常是通過高速的串行鏈路或者存儲接口進行通信,。MCU先把數(shù)據(jù)傳遞給DSP,然后DSP把處理過的數(shù)據(jù)傳回給MCU,,很可能還是通過同樣的接口,。對諸如音頻處理這樣的中低帶寬應用來說,這種方式效果很好,。但是在處理高帶寬數(shù)據(jù)流時,,這種方式就就無法勝任了,例如,,原始視頻流,,很可能就要求超過25MB/s的數(shù)據(jù)傳送速率,遠遠超過了傳統(tǒng)的高速串行接口所能支持的8~15MB/s的速率,。另外,,如果MCU和DSP之間沒有可用的專用存儲接口,共享的存儲器會降低總體性能,,因為DSP在訪問共享空間的同時也占用了MCU的外部存儲器總線,。
上述不利因素的結(jié)合導致了如圖1(b)所示的排列,。通過在DSP中集成PCI功能,該DSP可以簡單地看作另一種置于由MCU主控的PCI總線另一端的“外圍設備”,。在這里,,DSP起到“PCI設備”的作用。該PCI連接利用空閑的帶寬來支持視頻流速率,,而且這種配置甚至允許該DSP作為一種“總線主控器”以便直接訪問該PCI總線上的其他設備(例如網(wǎng)絡和存儲接口),。
隨著系統(tǒng)成本壓力進一步推動了設計的集成,如圖1c所示的解決方案就更加理想,。圖中的處理器不是一個簡單的DSP,,而是一種結(jié)合了強大的DSP和MCU功能的信號處理器。因此,,它可以作為系統(tǒng)控制器,,能主控PCI總線并且減少了一個處理器,從而大大節(jié)省了總系統(tǒng)成本,。ADSP-BF533 Blackfin媒體處理器正是具備這種功能的器件,。
《電子設計技術》網(wǎng)站版權所有,謝絕轉(zhuǎn)載
PCI接口的特點
為了便于下一步的討論,,先明確幾個與PCI有關的關鍵術語,。
主機與設備,主控器與受控器
PCI的主要特點之一就是對等通信,??紤]到大多數(shù)的設備都支持一種“主控器”操作,隨后設備就可以在彼此之間或者與系統(tǒng)主機(例如,,圖1(a)所示的MCU或PC)之間通信,。在這種拓撲結(jié)構中,所有的設備,,包括主機,都能作為一個特定PCI事務的主控器或者受控器,。主機與設備的區(qū)別就在于主機可以在總線上配置各PCI代理并且提供總線仲裁,。通過配置,各PCI代理(可以主控總線的設備)將彼此看成是一種存儲映像設備的集合,,可以通過在它們各自的存儲器區(qū)域中發(fā)起數(shù)據(jù)傳送來訪問這些設備,。每個PCI代理都可以對目標機(“受控器”)發(fā)起一次數(shù)據(jù)傳送,從而成為該特定事務的總線主控器,。
總線仲裁
在一些嵌入式應用中,,當前的總線主控器可以不止一個,這時就需要一個PCI總線判決器,。在嵌入式應用中利用一個小型的可編程邏輯電路(PLD)很容易實現(xiàn)這種功能(以前都由PC提供),。每個可能的總線主控器都有兩條線(一條用于請求,,一條用于授權)進入總線判決器。當一個總線主控器要求使用PCI總線時,,必須在其設備請求線上申請,。判決器來決定什么時候授予其總線使用權并在適當?shù)臅r候通知其授權線。雖然PCI標準中沒有規(guī)定具體的仲裁算法,,但是要求有“一種公平的算法以防止死鎖”,。通常,可以采用一種簡單的輪循方法來確保不會有某一個總線主控器獨占總線,。
性能
如果數(shù)據(jù)吞吐量性能很重要,,那么突發(fā)傳送是很關鍵的。PCI總線上的突發(fā)傳送主要是由同一地址段接連發(fā)生至少兩次數(shù)據(jù)傳送而引起的,。和其他的傳送類型一樣,,一旦總線主控器接收到PCI總線的使用權,就要傳送其起始地址和事務類型,。在實際的PCI系統(tǒng)中,,總線主控器和目標機必須都支持突發(fā)事務。例如,,如果目標機只支持單一事務,,性能就會極大降低,因為該總線主控器必須反復申請總線使用權并傳送每個事務的地址,。當總線主控器和目標機都支持突發(fā)事務時,,該PCI上的帶寬就能達到132MB/s(4B×33MHz)的最高吞吐量。
硬件結(jié)構圖
直接存儲器存取(DMA)是提高接口中數(shù)據(jù)傳送帶寬的關鍵,,因為它在傳送數(shù)據(jù)時所需內(nèi)核處理器的干預最小,。這種采集或傳送數(shù)據(jù)的設備可以利用其自帶的DMA控制器,自動地從處理器來回傳送數(shù)據(jù),。DMA通過利用PCI的突發(fā)能力來存取接口中的大塊數(shù)據(jù),,從而極大地提高了性能。這種能力推動了諸如實時視頻處理等應用的發(fā)展,。
對多處理器系統(tǒng)的內(nèi)在支持
通過用PCI總線連接多個嵌入式處理器,,就能實現(xiàn)一個多處理器系統(tǒng)。采用這種直接的連接方式很容易就能使計算能力成倍增加,。有了附加的數(shù)據(jù)總線以及每個處理器訪問存儲器的能力,,就能處理數(shù)據(jù)流。采用這種方法,,無須增加算法的編程復雜度就可以在每個處理器之間對數(shù)據(jù)進行分區(qū),。另外,即使是在視頻吞吐速率,,仍然有足夠的可用空間用于與控制有關的傳送開銷,。
從系統(tǒng)控制器的角度看PCI
PCI存儲器模式
PCI協(xié)議使用基地址寄存器(BAR)為各設備分配存儲器和I/O范圍,。在配置期間,主機會詢問各個設備以便決定每個設備所需資源,。如果主機可以提供所有這些資源需求,,它就會在每個設備的存儲器BAR和I/O BAR中寫入相應的起始地址。然后,,通過對其存儲器或者I/O范圍內(nèi)發(fā)起一次傳送就可以訪問每個設備了,。此外,每個PCI代理都可以訪問總線上的所有其他代理,。
《電子設計技術》網(wǎng)站版權所有,,謝絕轉(zhuǎn)載
ADSP-BF533是一個PCI設備,它有BAR0(存儲器BAR)和BAR2(I/O BAR)兩個寄存器,,以及相應的屏蔽寄存器,。這些屏蔽寄存器可用于指定每個區(qū)域所需要的存儲數(shù)量。
因為主機是在其PCI存儲器空間內(nèi)為設備分配一個地址,,所以該設備(在這里就是指BF533)需要將此地址映射到它的內(nèi)部或者外部存儲器空間中,。對BF533來說,存儲器空間包括芯片內(nèi)的L2存儲器以及外部的SDRAM和(或)異步存儲器,,并且I/O空間會映射到處理器的存儲器映射寄存器(MMR)區(qū)域,。在這些定義的引導下,一個內(nèi)部事務就會被控制在適當?shù)膮^(qū)域,。
當ADSP-BF533作為給定事務的目標機(受控器)時可以應用上述討論的方法,。當它發(fā)起傳送時,會在其PCI外部存儲器BAR或者I/O BAR中寫入它希望訪問的代理地址,。無論是對PCI存儲器還是I/O空間的一次讀或?qū)懚紩l(fā)起一次以該PCI代理的存儲器或者I/O區(qū)域為目標的事務,。
在主機模式中,外發(fā)事務的發(fā)生方式與上面的描述類似,。對內(nèi)送事務(ADSP-BF533作為受控器)的方案稍微有些區(qū)別,。在主機模式中,BF533不使用BAR寄存器,,而是使用主機存儲控制寄存器將其資源開放給外部代理,。它可以接受或者不接受對其存儲器和I/O空間的訪問。在有些情況下,,它還能指示那些開放資源還有多少可以被外部PCI代理訪問。這就為保護關鍵的代碼或者數(shù)據(jù)段免遭其他PCI代理的更改提供了一種機制,。
在PCI存儲空間中開窗口
一旦初始化完成后,,每個PCI設備都有對主機或總線上其他PCI設備“開放”的存儲資源。這些存儲資源可以包括內(nèi)部存儲器和外部存儲器,。例如,,在BF533中,,內(nèi)部或者外部L2存儲器中的“窗口”可以被PCI總線上的任何其他設備共享。然后每個總線主控器就可以直接訪問這些開放的存儲器空間,,就像是在訪問它自己的內(nèi)部存儲器一樣,。一旦主機完成了初始化進程,各設備之間的所有存儲器地址都能被PCI接口翻譯出來,。
術語“窗口”用于表示該設備可能還有不允許別的總線主控器共享的其他受保護資源,。這種開放的窗口清楚地表示了可以直接進行傳送的存儲資源。這種方法是很重要的,,因為對任何給定設備都不需要內(nèi)核處理器參與每一件事務,。
圖2的簡單實例示出了主機中的窗口指向設備資源以及設備中的窗口指向主機資源。這就是允許單個的內(nèi)核處理器能將外部資源當做簡單的存儲器地址來訪問的機制,。
主機中的窗口指向設備資源以及設備中的窗口指向主機資源原理圖
通常采用郵箱中斷方式來協(xié)調(diào)總線主控器與PCI設備之間的數(shù)據(jù)傳送,,這就使接收設備知道數(shù)據(jù)什么時候可用以及什么時候準備用于處理。
數(shù)據(jù)傳送路徑
BF533有一組專用的外部主控器總線,,允許外部的總線主控器直接從(或?qū)?內(nèi)部的L2存儲器或者芯片外的SDRAM傳送數(shù)據(jù)而無需內(nèi)核處理器的介入,。另外,可以建立PCI映射以便允許訪問某些系統(tǒng)資源,,例如,共享的外圍設備,。上述每種數(shù)據(jù)傳送方法都只需要不多的初始化代碼。內(nèi)核處理器只需要管理信號量以便指示什么時候可以交換數(shù)據(jù),,以及什么時候可以將數(shù)據(jù)從該系統(tǒng)中傳送出去,。
除了上述傳送路徑外,還有一種內(nèi)部的存儲器DMA控制器可以用于發(fā)起任一方向的數(shù)據(jù)傳送,。這種數(shù)據(jù)傳送路徑能支持外圍設備間的突發(fā)傳送,。
在支持PCI的嵌入式媒體處理器上實現(xiàn)視頻捕獲
下面將給出一種能執(zhí)行主機控制器和信號處理器任務的嵌入式媒體處理器的具體實例,目的是要說明一種帶有集成PCI接口的嵌入式處理器是如何用在具有各種不同接口要求的系統(tǒng)中的,。這里的重點是數(shù)據(jù)搬移以及接入許多基于PCI的主流外圍設備的能力,。因為安裝PCI接口就跟安裝存儲器一樣,所以通過把這些外圍設備映射到一些存儲器的位置就極大地簡化了編程模式,。初始化完成后,,每個外圍設備都會對主機處理器開放一個窗口用于雙向的數(shù)據(jù)交換。
在本例中,,采用Momentum Data Systems (MDS)公司的Eagle-35主板來迅速實現(xiàn)一個系統(tǒng),,該PCB的原理示意圖參見圖3和圖4。Eagle-35是一個單板計算機(SBC)的主處理器,,該SBC有4個內(nèi)部PCI插槽,,板內(nèi)還包含了一個以太網(wǎng)控制器,并且連接到PCI總線,,采用一個廉價的PLD實現(xiàn)5設備的PCI判決器,。它還包括了一個可連接SDRAM內(nèi)存模塊的插座,,可以提供128MB的外部存儲器。
首先可以把一個視頻畫面捕獲卡安裝到其中一個PCI插槽中,。利用照相機數(shù)據(jù)源或者視頻源的多路復用流,,可以一次把一幀的視頻數(shù)據(jù)直接送入SDRAM。另外,,每一路數(shù)據(jù)都可以直接進入外部存儲器用于處理,。為了說明清楚,假定有一個安全應用,,它有一路輸入的CIF視頻流,,從10MB/s數(shù)量級的數(shù)據(jù)壓縮至KB/s數(shù)量級范圍(具體取決于期望的壓縮圖像質(zhì)量等級)。該視頻畫面捕獲卡上的一個DMA控制器直接將數(shù)據(jù)傳送到SDRAM中,。因為BF533有一個雙MAC/ALU的內(nèi)核處理器,,所以可以實時地完成每一輸入幀的數(shù)據(jù)壓縮??梢蕴幚淼膲嚎s類型有好幾種,,包括MJPEG、MPEG-2以及MPEG-4,。采用這些算法進行CIF格式的壓縮僅消耗內(nèi)核處理器資源的很小一部分,。
PCI接口有多種方法可以將壓縮后的數(shù)據(jù)從處理器傳送出去。一種方法是利用以太網(wǎng)控制器把壓縮數(shù)據(jù)流送到遠程網(wǎng)絡地點,,另一種方法是利用一個IDE驅(qū)動器來保存視頻,,這兩種方法都接受PCI數(shù)據(jù)流,這樣就簡化了需要的編程模式,。因為BF533的DSP處理能力既支持編碼也支持解碼,,所以壓縮圖像可以重新傳回給同樣的系統(tǒng)。
在SDRAM中可提供多個輸入和輸出幀的緩沖器,,這些緩沖器采用一種反復的方式輪流保存數(shù)據(jù),。當一個輸入緩沖器充滿了來自視頻捕獲設備的數(shù)據(jù)時,另外一個緩沖器的數(shù)據(jù)正在被壓縮,。兩個輸出緩沖器允許輸出方向的并行操作,。當一個輸出緩沖器充滿了壓縮數(shù)據(jù)時,另一個緩沖器中的數(shù)據(jù)可以被傳送到IDE驅(qū)動器或者以太網(wǎng)接口中,。
Eagle-35主板是一種ATX型的設備,,所以適合于做一個PC機箱中的主板。為了方便訪問,,音頻編解碼接口等所有的附加接口都放到了電路板的外部,。有了板內(nèi)的編解碼器,就可以完成音頻的壓縮以便匹配視頻流。