基于PCI的單板計算機應用中起到系統控制器作用的實(shí)現方法
最近出現了一些兼備數字信號處理器(DSP)和微控制器(MCU)能力的處理器,從而為那些既要求典型的MCU功能又要求高性能信號處理功能的應用大開(kāi)了方便之門(mén)。
本文引用地址:http://dyxdggzs.com/article/257223.htm 這類(lèi)MCU的優(yōu)勢之一就是起到系統控制器的作用,通過(guò)以太網(wǎng)接口、USB接口和PCI等標準接口來(lái)協(xié)調各子系統的活動(dòng)。因為許多信號處理器都包含了這樣一些相同的接口,所以考慮一下系統的體系結構正在如何演進(jìn)是很有意義的。本文將討論一種DSP在一個(gè)基于PCI的單板計算機應用中起到系統控制器作用的實(shí)現方法。

PCI總線(xiàn)的開(kāi)發(fā)是為了提供一種能輕松連接外圍設備和臺式計算機的高性能方法。這些外圍設備包括圖形子系統、磁盤(pán)控制器和I/O設備。PCI總線(xiàn)與CPU總線(xiàn)是分開(kāi)的,但是仍然需要訪(fǎng)問(wèn)主存儲器。該接口可以通過(guò)一個(gè)電橋連接至系統總線(xiàn),該電橋允許它以獨立于CPU時(shí)鐘頻率的固定頻率運行??偠灾?,PCI為關(guān)鍵的系統元件提供了一個(gè)高帶寬的通道,以便在彼此之間傳送數據。
隨著(zhù)嵌入式計算的出現,人們都希望以最低的成本設計出帶有通用外圍設備的不以PC為中心的計算平臺。由于PCI的性能、可擴縮性和普遍性,使其成為一種自然的“通用標準”,用于連接大量已經(jīng)使用的外圍設備。
此外,通過(guò)標準接口將嵌入式處理器連接到比它們功能更強大的臺式機處理器是很有利的,其驅動(dòng)力是嵌入式應用的發(fā)展,例如,用戶(hù)手持設備、銷(xiāo)售點(diǎn)終端以及連接PC的工業(yè)自動(dòng)化系統。PCI促進(jìn)了模塊嵌入式系統設計,從而允許多種外圍設備能無(wú)縫地連接到一種通用總線(xiàn)。最后,這種方法降低了產(chǎn)品總材料成本并且增加了設計的重用,從而降低了開(kāi)發(fā)帶有嵌入式PCI接口的處理器的總風(fēng)險。

系統體系結構的演進(jìn)
在MCU控制的系統中,DSP一般是充當協(xié)處理器。如圖1(a)所示,這種配置中的MCU和DSP通常是通過(guò)高速的串行鏈路或者存儲接口進(jìn)行通信。MCU先把數據傳遞給DSP,然后DSP把處理過(guò)的數據傳回給MCU,很可能還是通過(guò)同樣的接口。對諸如音頻處理這樣的中低帶寬應用來(lái)說(shuō),這種方式效果很好。但是在處理高帶寬數據流時(shí),這種方式就就無(wú)法勝任了,例如,原始視頻流,很可能就要求超過(guò)25MB/s的數據傳送速率,遠遠超過(guò)了傳統的高速串行接口所能支持的8~15MB/s的速率。另外,如果MCU和DSP之間沒(méi)有可用的專(zhuān)用存儲接口,共享的存儲器會(huì )降低總體性能,因為DSP在訪(fǎng)問(wèn)共享空間的同時(shí)也占用了MCU的外部存儲器總線(xiàn)。
上述不利因素的結合導致了如圖1(b)所示的排列。通過(guò)在DSP中集成PCI功能,該DSP可以簡(jiǎn)單地看作另一種置于由MCU主控的PCI總線(xiàn)另一端的“外圍設備”。在這里,DSP起到“PCI設備”的作用。該PCI連接利用空閑的帶寬來(lái)支持視頻流速率,而且這種配置甚至允許該DSP作為一種“總線(xiàn)主控器”以便直接訪(fǎng)問(wèn)該PCI總線(xiàn)上的其他設備(例如網(wǎng)絡(luò )和存儲接口)。
隨著(zhù)系統成本壓力進(jìn)一步推動(dòng)了設計的集成,如圖1c所示的解決方案就更加理想。圖中的處理器不是一個(gè)簡(jiǎn)單的DSP,而是一種結合了強大的DSP和MCU功能的信號處理器。因此,它可以作為系統控制器,能主控PCI總線(xiàn)并且減少了一個(gè)處理器,從而大大節省了總系統成本。ADSP-BF533 Blackfin媒體處理器正是具備這種功能的器件。
PCI接口的特點(diǎn)
為了便于下一步的討論,先明確幾個(gè)與PCI有關(guān)的關(guān)鍵術(shù)語(yǔ)。
● 主機與設備,主控器與受控器
PCI的主要特點(diǎn)之一就是對等通信??紤]到大多數的設備都支持一種“主控器”操作,隨后設備就可以在彼此之間或者與系統主機(例如,圖1(a)所示的MCU或PC)之間通信。在這種拓撲結構中,所有的設備,包括主機,都能作為一個(gè)特定PCI事務(wù)的主控器或者受控器。主機與設備的區別就在于主機可以在總線(xiàn)上配置各PCI代理并且提供總線(xiàn)仲裁。通過(guò)配置,各PCI代理(可以主控總線(xiàn)的設備)將彼此看成是一種存儲映像設備的集合,可以通過(guò)在它們各自的存儲器區域中發(fā)起數據傳送來(lái)訪(fǎng)問(wèn)這些設備。每個(gè)PCI代理都可以對目標機(“受控器”)發(fā)起一次數據傳送,從而成為該特定事務(wù)的總線(xiàn)主控器。
● 總線(xiàn)仲裁
在一些嵌入式應用中,當前的總線(xiàn)主控器可以不止一個(gè),這時(shí)就需要一個(gè)PCI總線(xiàn)判決器。在嵌入式應用中利用一個(gè)小型的可編程邏輯電路(PLD)很容易實(shí)現這種功能(以前都由PC提供)。每個(gè)可能的總線(xiàn)主控器都有兩條線(xiàn)(一條用于請求,一條用于授權)進(jìn)入總線(xiàn)判決器。當一個(gè)總線(xiàn)主控器要求使用PCI總線(xiàn)時(shí),必須在其設備請求線(xiàn)上申請。判決器來(lái)決定什么時(shí)候授予其總線(xiàn)使用權并在適當的時(shí)候通知其授權線(xiàn)。雖然PCI標準中沒(méi)有規定具體的仲裁算法,但是要求有“一種公平的算法以防止死鎖”。通常,可以采用一種簡(jiǎn)單的輪循方法來(lái)確保不會(huì )有某一個(gè)總線(xiàn)主控器獨占總線(xiàn)。
● 性能
如果數據吞吐量性能很重要,那么突發(fā)傳送是很關(guān)鍵的。PCI總線(xiàn)上的突發(fā)傳送主要是由同一地址段接連發(fā)生至少兩次數據傳送而引起的。和其他的傳送類(lèi)型一樣,一旦總線(xiàn)主控器接收到PCI總線(xiàn)的使用權,就要傳送其起始地址和事務(wù)類(lèi)型。在實(shí)際的PCI系統中,總線(xiàn)主控器和目標機必須都支持突發(fā)事務(wù)。例如,如果目標機只支持單一事務(wù),性能就會(huì )極大降低,因為該總線(xiàn)主控器必須反復申請總線(xiàn)使用權并傳送每個(gè)事務(wù)的地址。當總線(xiàn)主控器和目標機都支持突發(fā)事務(wù)時(shí),該PCI上的帶寬就能達到132MB/s(4B×33MHz)的最高吞吐量。

直接存儲器存取(DMA)是提高接口中數據傳送帶寬的關(guān)鍵,因為它在傳送數據時(shí)所需內核處理器的干預最小。這種采集或傳送數據的設備可以利用其自帶的DMA控制器,自動(dòng)地從處理器來(lái)回傳送數據。DMA通過(guò)利用PCI的突發(fā)能力來(lái)存取接口中的大塊數據,從而極大地提高了性能。這種能力推動(dòng)了諸如實(shí)時(shí)視頻處理等應用的發(fā)展。
● 對多處理器系統的內在支持
通過(guò)用PCI總線(xiàn)連接多個(gè)嵌入式處理器,就能實(shí)現一個(gè)多處理器系統。采用這種直接的連接方式很容易就能使計算能力成倍增加。有了附加的數據總線(xiàn)以及每個(gè)處理器訪(fǎng)問(wèn)存儲器的能力,就能處理數據流。采用這種方法,無(wú)須增加算法的編程復雜度就可以在每個(gè)處理器之間對數據進(jìn)行分區。另外,即使是在視頻吞吐速率,仍然有足夠的可用空間用于與控制有關(guān)的傳送開(kāi)銷(xiāo)。
從系統控制器的角度看PCI
● PCI存儲器模式
PCI協(xié)議使用基地址寄存器(BAR)為各設備分配存儲器和I/O范圍。在配置期間,主機會(huì )詢(xún)問(wèn)各個(gè)設備以便決定每個(gè)設備所需資源。如果主機可以提供所有這些資源需求,它就會(huì )在每個(gè)設備的存儲器BAR和I/O BAR中寫(xiě)入相應的起始地址。然后,通過(guò)對其存儲器或者I/O范圍內發(fā)起一次傳送就可以訪(fǎng)問(wèn)每個(gè)設備了。此外,每個(gè)PCI代理都可以訪(fǎng)問(wèn)總線(xiàn)上的所有其他代理。
ADSP-BF533是一個(gè)PCI設備,它有BAR0(存儲器BAR)和BAR2(I/O BAR)兩個(gè)寄存器,以及相應的屏蔽寄存器。這些屏蔽寄存器可用于指定每個(gè)區域所需要的存儲數量。
因為主機是在其PCI存儲器空間內為設備分配一個(gè)地址,所以該設備(在這里就是指BF533)需要將此地址映射到它的內部或者外部存儲器空間中。對BF533來(lái)說(shuō),存儲器空間包括芯片內的L2存儲器以及外部的SDRAM和(或)異步存儲器,并且I/O空間會(huì )映射到處理器的存儲器映射寄存器(MMR)區域。在這些定義的引導下,一個(gè)內部事務(wù)就會(huì )被控制在適當的區域。
當ADSP-BF533作為給定事務(wù)的目標機(受控器)時(shí)可以應用上述討論的方法。當它發(fā)起傳送時(shí),會(huì )在其PCI外部存儲器BAR或者I/O BAR中寫(xiě)入它希望訪(fǎng)問(wèn)的代理地址。無(wú)論是對PCI存儲器還是I/O空間的一次讀或寫(xiě)都會(huì )發(fā)起一次以該PCI代理的存儲器或者I/O區域為目標的事務(wù)。
在主機模式中,外發(fā)事務(wù)的發(fā)生方式與上面的描述類(lèi)似。對內送事務(wù)(ADSP-BF533作為受控器)的方案稍微有些區別。在主機模式中,BF533不使用BAR寄存器,而是使用主機存儲控制寄存器將其資源開(kāi)放給外部代理。它可以接受或者不接受對其存儲器和I/O空間的訪(fǎng)問(wèn)。在有些情況下,它還能指示那些開(kāi)放資源還有多少可以被外部PCI代理訪(fǎng)問(wèn)。這就為保護關(guān)鍵的代碼或者數據段免遭其他PCI代理的更改提供了一種機制。
● 在PCI存儲空間中開(kāi)窗口
一旦初始化完成后,每個(gè)PCI設備都有對主機或總線(xiàn)上其他PCI設備“開(kāi)放”的存儲資源。這些存儲資源可以包括內部存儲器和外部存儲器。例如,在BF533中,內部或者外部L2存儲器中的“窗口”可以被PCI總線(xiàn)上的任何其他設備共享。然后每個(gè)總線(xiàn)主控器就可以直接訪(fǎng)問(wèn)這些開(kāi)放的存儲器空間,就像是在訪(fǎng)問(wèn)它自己的內部存儲器一樣。一旦主機完成了初始化進(jìn)程,各設備之間的所有存儲器地址都能被PCI接口翻譯出來(lái)。
術(shù)語(yǔ)“窗口”用于表示該設備可能還有不允許別的總線(xiàn)主控器共享的其他受保護資源。這種開(kāi)放的窗口清楚地表示了可以直接進(jìn)行傳送的存儲資源。這種方法是很重要的,因為對任何給定設備都不需要內核處理器參與每一件事務(wù)。

圖2的簡(jiǎn)單實(shí)例示出了主機中的窗口指向設備資源以及設備中的窗口指向主機資源。這就是允許單個(gè)的內核處理器能將外部資源當做簡(jiǎn)單的存儲器地址來(lái)訪(fǎng)問(wèn)的機制。
通常采用郵箱中斷方式來(lái)協(xié)調總線(xiàn)主控器與PCI設備之間的數據傳送,這就使接收設備知道數據什么時(shí)候可用以及什么時(shí)候準備用于處理。
● 數據傳送路徑
BF533有一組專(zhuān)用的外部主控器總線(xiàn),允許外部的總線(xiàn)主控器直接從(或對)內部的L2存儲器或者芯片外的SDRAM傳送數據而無(wú)需內核處理器的介入。另外,可以建立PCI映射以便允許訪(fǎng)問(wèn)某些系統資源,例如,共享的外圍設備。上述每種數據傳送方法都只需要不多的初始化代碼。內核處理器只需要管理信號量以便指示什么時(shí)候可以交換數據,以及什么時(shí)候可以將數據從該系統中傳送出去。
除了上述傳送路徑外,還有一種內部的存儲器DMA控制器可以用于發(fā)起任一方向的數據傳送。這種數據傳送路徑能支持外圍設備間的突發(fā)傳送。
在支持PCI的嵌入式媒體處理器上實(shí)現視頻捕獲
下面將給出一種能執行主機控制器和信號處理器任務(wù)的嵌入式媒體處理器的具體實(shí)例,目的是要說(shuō)明一種帶有集成PCI接口的嵌入式處理器是如何用在具有各種不同接口要求的系統中的。這里的重點(diǎn)是數據搬移以及接入許多基于PCI的主流外圍設備的能力。因為安裝PCI接口就跟安裝存儲器一樣,所以通過(guò)把這些外圍設備映射到一些存儲器的位置就極大地簡(jiǎn)化了編程模式。初始化完成后,每個(gè)外圍設備都會(huì )對主機處理器開(kāi)放一個(gè)窗口用于雙向的數據交換。
在本例中,采用Momentum Data Systems (MDS)公司的Eagle-35主板來(lái)迅速實(shí)現一個(gè)系統,該PCB的原理示意圖參見(jiàn)圖3和圖4。Eagle-35是一個(gè)單板計算機(SBC)的主處理器,該SBC有4個(gè)內部PCI插槽,板內還包含了一個(gè)以太網(wǎng)控制器,并且連接到PCI總線(xiàn),采用一個(gè)廉價(jià)的PLD實(shí)現5設備的PCI判決器。它還包括了一個(gè)可連接SDRAM內存模塊的插座,可以提供128MB的外部存儲器。
首先可以把一個(gè)視頻畫(huà)面捕獲卡安裝到其中一個(gè)PCI插槽中。利用照相機數據源或者視頻源的多路復用流,可以一次把一幀的視頻數據直接送入SDRAM。另外,每一路數據都可以直接進(jìn)入外部存儲器用于處理。為了說(shuō)明清楚,假定有一個(gè)安全應用,它有一路輸入的CIF視頻流,從10MB/s數量級的數據壓縮至KB/s數量級范圍(具體取決于期望的壓縮圖像質(zhì)量等級)。該視頻畫(huà)面捕獲卡上的一個(gè)DMA控制器直接將數據傳送到SDRAM中。因為BF533有一個(gè)雙MAC/ALU的內核處理器,所以可以實(shí)時(shí)地完成每一輸入幀的數據壓縮??梢蕴幚淼膲嚎s類(lèi)型有好幾種,包括MJPEG、MPEG-2以及MPEG-4。采用這些算法進(jìn)行CIF格式的壓縮僅消耗內核處理器資源的很小一部分。
PCI接口有多種方法可以將壓縮后的數據從處理器傳送出去。一種方法是利用以太網(wǎng)控制器把壓縮數據流送到遠程網(wǎng)絡(luò )地點(diǎn),另一種方法是利用一個(gè)IDE驅動(dòng)器來(lái)保存視頻,這兩種方法都接受PCI數據流,這樣就簡(jiǎn)化了需要的編程模式。因為BF533的DSP處理能力既支持編碼也支持解碼,所以壓縮圖像可以重新傳回給同樣的系統。
在SDRAM中可提供多個(gè)輸入和輸出幀的緩沖器,這些緩沖器采用一種反復的方式輪流保存數據。當一個(gè)輸入緩沖器充滿(mǎn)了來(lái)自視頻捕獲設備的數據時(shí),另外一個(gè)緩沖器的數據正在被壓縮。兩個(gè)輸出緩沖器允許輸出方向的并行操作。當一個(gè)輸出緩沖器充滿(mǎn)了壓縮數據時(shí),另一個(gè)緩沖器中的數據可以被傳送到IDE驅動(dòng)器或者以太網(wǎng)接口中。
Eagle-35主板是一種ATX型的設備,所以適合于做一個(gè)PC機箱中的主板。為了方便訪(fǎng)問(wèn),音頻編解碼接口等所有的附加接口都放到了電路板的外部。有了板內的編解碼器,就可以完成音頻的壓縮以便匹配視頻流。
存儲器相關(guān)文章:存儲器原理
評論