Champ-av3主板的開發(fā)和應用
引言
Champ-av3是一種功能強大的數(shù)字信號處理板,內嵌vxWorks操作系統(tǒng),具有專門的DSP算法庫,運行速度快、實時性好,町以配合多種子卡來適應不同的接口要求,十分適用于雷達、聲納、人工智能等應用場合。
Champ-av3集成了4片Motorola公司的MPC7447/A處理芯片,每片處理器各自擁有256 MB的SDRAM存儲空間。4片處理器通過MV64360橋片掛在內部64位100 MHz的PCI-x數(shù)據(jù)總線上,通過這條總線,4片MPC7447/A可以方便快速地傳輸數(shù)據(jù),共享資源。它還具有專門的OBIC模塊,對多處理器之間的聯(lián)系進行管理。同時,板上還具備兩個安裝子卡的接口,支持多種PMC(PCI Mezzanine Card)子卡,使得數(shù)據(jù)的出入接口靈活,便于用戶擴展功能。
1 硬件結構
硬件結構框圖如圖1所示。
Champ-av3提供4個高性能的處理模塊,每個模塊包括1個1 GHz的MPC7447/A處理器、256 MB的SDRAM和MV64360 PCI橋片。這4個模塊通過構成回路的PCI-X總線掛在一起,彼此可以進行高速的互連。而MV64360 PCI橋片則給MPC7447/A、SDRAM和PCI-X總線提供丫通暢的連接接口。
在多處理器共同工作時,會碰到需要將數(shù)據(jù)發(fā)送給多個處理器或者數(shù)據(jù)從多個處理器流水通過的問題,這個問題常常比處理器的運算能力更限制板子的性能。本板的四方回路式結構很好地解決了這個問題。
1.1 存儲器類型和存儲空問的分配
Champ-av3在地址空問分配上獨具特色,它的存儲空間全部統(tǒng)一編址,因此任何一個處理器都能訪問到其他處理器的存儲空間,也能訪問兩個PMC子卡的存儲空問和VME總線的空間。而任何一個子卡模塊或VME主控器也能隨意訪問這些處理器的存儲空問。它的存儲空間分配方式見表1。
Champ-av 3的每個處理模塊都有128 MB或256 MB的SDRAM,它具有雙倍的傳輸速率,在125 MHz工作頻率下,數(shù)據(jù)傳輸速率可達2.0 GB/s。每個SDRAM都可以被所有的處理器訪問,VME總線也可以通過PCI到VME的轉換接口訪問到它。
為了分擔SDRAM的壓力,板上還有一片256 kB的高速SRAM,可以專門用來存儲外圍設備的一些狀態(tài)字。例如在DMA傳輸時,DMA控制器可以一邊從SDRAM中訪問數(shù)據(jù),一邊從SRAM中獲取外圍設備狀態(tài)。
在Champ-av3板上,靠近A處理模塊處有一片64 MB或128 MB、32 bit的Flash存儲空間,它可以被擦除100萬次,數(shù)據(jù)保存可達20年以上。為了防止意外擦除,板上提供硬件跳線器。實際應用中值得注意的是,這片F(xiàn)lash存儲器只能由A處理模塊直接訪問,A處理模塊將Flash存儲器中的數(shù)據(jù)讀到自己的存儲空間后,其他處理模塊才能共享。這一點也可以從表1的存儲空間分配表看出。
Champ-av3主板的處理器讀取存儲器時,先從存儲器搬人高速緩沖存儲器,再進行訪問,而外部設備只能直接訪問存儲器。所以在訪問數(shù)據(jù)時一定要注意,最新數(shù)據(jù)究竟是在存儲器中還是在高速緩沖存儲器中。這里需要提及兩個函數(shù)cacheFlush()和cacheIn-validate()。它們是編程中經常需要使用的指令。在外部器件讀取數(shù)據(jù)之前,需要將數(shù)據(jù)從高速緩沖存儲器cacheFlush()到存儲器中,以保證外部器件讀到當前的最新數(shù)據(jù);在外部器件向存儲器寫了數(shù)據(jù)后,需要將數(shù)據(jù)從存儲器cacheInvalidate()到高速緩沖存儲器中,以保證處理器讀到的是最新數(shù)據(jù)。在DMA傳數(shù)和處理器之間共享數(shù)據(jù)時必須注意這種數(shù)據(jù)的及時刷新。
1.2 接口
Champ-av3有兩個網口:網口0是百兆網,它與前面板上的RJ45連接器和后面板上的P2插座都連在一起;網口1是干兆網,它只與后面板上的P2插座連接。這兩個網口的接口都在A處理模塊上,但是基于vx-Works共享空間網絡特點,所有的處理模塊都可以通過一個網口通信。這個特點也可以推廣到多板系統(tǒng)。
本板還具有VME64主從接口能力。VME64接口通過PCI-PCI橋掛到A、B處理模塊之間,在DMA方式下,本地存儲器與VME總線之間可以有50 MB/s的傳輸速率。
板上還有3個串口:串口1是EIA-232電平,與前面板后面板都相連;串口2、3有EIA-232和EIA-422兩種傳輸電平,串口2與后面板的P2插座相連,串口3與后面板的P0插座相連。需要注意,串口2、3只有B處理模塊能夠直接使用。
同時,板上還具備兩個安裝PMC子卡的接口,它們都符合PCI和PCI-X總線標準,其中PCI-X總線接口支持64 bit、66 MHz或100 MHz的傳輸速率,可以具有800 MB/s的峰值傳輸能力。本板支持多種PMC子卡,使得數(shù)據(jù)的出入接口靈活,便于用戶擴展功能。
2 軟件設計
Champ-av3提供一套與硬件相結合的軟件包,可以對板子進行初始化和板內自檢。板內自檢包括上電自檢和初始自檢,可以保證95%的檢測范圍。
用戶編程的開發(fā)環(huán)境在tornarlo2.0以上的版本中進行,編程語言址C/C++。但除了用C語言編寫應用程序外,還有一些軟包但需要深入了解。
1 ) vxWorks BSP
vxWorks BSP(板級支持包)支持Tronado2.02和tronado2.2,開發(fā)環(huán)境,主機操作系統(tǒng)要求足Windows和Solaris,使用GNU編譯器。BSP還包含一系列功能函數(shù),可以進行更改系統(tǒng)時鐘、初始化硬件、串口等操作。
需要指出的是,雖然4個處理模塊的存儲器空間是可以共享的,但是BSP的初始設定對共享加了權限限制,使A處理模塊只可以訪問B、C、D處理模塊的頭64 MB空間,B、C、D處理模塊也可以訪問A處川模塊的頭64 MB空間,但B、C、D處理模塊彼此之間小能訪問。如果需要改變設置,可以到sysLib.c程序的sysH-wlnit子程序中用sysPhysMemAdd函數(shù)更改。
2)BSL文件
BSL(板級支持庫)文件支持對板子進行較為低級的操作和控制,它不依賴操作系統(tǒng),也就是說基于vx-Works操作系統(tǒng)的BSP可以使用BSL,而不需要操作系統(tǒng)的應用也可以使用BSL。BSL的功能主要有以下幾大類:板信息類函數(shù):可以控制和獲得板子的狀念信息;DMA類函數(shù):對存儲器直接進行訪問的函數(shù);Flash管理類函數(shù):只有A處理器才能管理Flash;中斷類函數(shù):處理器之間的中斷有多種方式,。它們都由板內中斷控制器(OBIC模塊)統(tǒng)一管理;PCI、VME總線類函數(shù);串口調用類函數(shù):只有B處理器才能使用。
3)IXLibs-AV 庫函數(shù)
這是被優(yōu)化的DSP運算函數(shù)庫,提供32位浮點數(shù)據(jù)構成的向量和矩陣運算。專門有資料顯示這些運算的耗時,因為MPC7447/A的主頻可以達到1 GHz,它的運算速度非常快,但需要注意的是這些資料僅僅顯示運算時間,在實際算法運行時,數(shù)據(jù)從存儲空間搬人高速緩沖存儲器還需要額外的時間,這足由于Champ-av3的存儲傘問的構造方式決定的。所以必須綜合數(shù)據(jù)的更新率、數(shù)據(jù)量和運算時問這3個因素,才能真正估算算法的牦時。
IXLibs-AV庫函數(shù)可以簡化DSP運算,但使用時最好先對函數(shù)進行驗證。因為它雖然足以C語言的方式應用,但有些參數(shù)的調用卻不像按C語言的習慣那樣使用,而且編譯和運行時不會出現(xiàn)任何提示。
3 處理模塊之問協(xié)同工作方式
多處理芯片涉及協(xié)同工作問題,彼此之間的握手信息可以有多種方式傳遞。
1)FIFO-IPI中斷
每個處理器都擁有1個16位寬度、32位深度的FIFO,用來存儲FIFO_IPI中斷。只要這個FIFO不空,就會產生INT_ID_FIFO_NOT_EMPTY中斷向量。BSL中專門有這類調用函數(shù)。這種中斷的優(yōu)點是不會丟失,還可以攜帶不同的中斷信息。
2)IPI中斷
每個處理器擁有8個相互獨立的IPI中斷:INT_ID_IPIO~INT_ID_IPI7。IPI中斷無奇存,這意味著如果不能及時響應巾斷,后一個中斷會丟失。但是IPI中斷支持廣播式中斷,1個處理器可以向所有的處理器(包括自己)發(fā)送中斷。
此外,還有若十種方法如硬件信號量也可以同步多處理器系統(tǒng)。上述這些方式都是通過OBIC模塊統(tǒng)一管理的,每個處理器都有與OBIC的獨立通道,因此,這些方式的產生和響應不占用CPU總線周期。即使當阿系統(tǒng)正在頻繁進行傳數(shù)工作,也不會影響系統(tǒng)的同步。
4 軟件程序運行時問估算
軟件程序的耗時估算是前期工作不可缺少的一步,大致可分為數(shù)據(jù)傳輸耗時和算法運算耗時。
數(shù)據(jù)傳輸耗時主要指DMA傳輸數(shù)據(jù)的時間,雖然數(shù)據(jù)可以異地共享,但會額外花費時間,尤其在共享數(shù)據(jù)量很大的時候。所以對于大數(shù)據(jù)量,一般采用DMA方式傳到各個處理模塊的本地存儲器,以供它們各自訪問。這就涉及到DMA傳輸數(shù)據(jù)的耗時估算。經過實測,同一個DMA通道傳輸數(shù)據(jù)量與耗時之比是常數(shù),但是啟動1個DMA通道的傳輸耗時與啟動多個DMA通道的傳輸耗時之比不是常數(shù)。例如:A處理器啟動1個DMA,傳輸10 MB數(shù)據(jù)給B處理器,大約需要25.196 ms;而A處理器同時啟動3個DMA,分別傳輸10 MB數(shù)據(jù)給B、C、D處理器,只需要37.383 ms。從此叮以看出,選擇適當?shù)腄MA傳輸方式,可以大大降低傳輸耗時。
Champ-av3的存儲空間構造方式特殊,由于高速緩沖存儲器空間遠小于存儲空間,所以算法的耗時和參與運算的數(shù)據(jù)量并不成正比。除了了解算法本身的運算時間外,最好充分考慮數(shù)據(jù)的更新率和運算數(shù)據(jù)量。如果算法允許,可以將數(shù)據(jù)拆成小包運算,減少算法耗時。
5 Champ-av3板的應用
圖2所示是一則Champ-av3主板的硬件應用實例。它的輸入信號是同步數(shù)據(jù)流,PMC子卡1有64位可用戶自定義的IO口,而且接口電平可以有多種選擇。數(shù)據(jù)進入子卡后可以在大容量的FPGA中進行預處理,然后通過PCI總線進入主板。需要注意的是PCI總線是64位的,所以數(shù)據(jù)在預處理時最好拼接成64位,這樣除了可以提高PCI總線傳輸速率,還便于存儲器存放數(shù)據(jù)。而主板調用這些數(shù)據(jù)時,由于是C語言編程,可以以C語言允許的數(shù)據(jù)形式任意調用。
輸出信號是異步數(shù)據(jù)流,PMC子卡2通過PCI總線與主板連接,任何一個處理模塊都可以控制它,通過它傳輸或接收數(shù)據(jù)。PMC子卡2最多可以有4對雙向星形結構連接方式,因此它可以實現(xiàn)點對多傳輸方式,但在這種傳輸方式下,傳輸速率最好不要超過50 MB/s。
由于A處理模塊對Flash存儲器的特殊控制地位,讓它處在主控地位是比較方便的。A處理模塊負責所有的控制流程,其他模塊可以在A處理模塊的控制下運行程序,并行處理數(shù)據(jù)。
6 結束語
Champ-av3板內部有4片MPC7447/A處理器,每片主頻都是1 GHz,所以本板的運算速度很快,可以滿足目前大多數(shù)數(shù)字信號處理的要求。而且它配備各種子卡,有靈活的接口方式,所以是一種功能強大、通用性好的硬件平臺,適用于多種數(shù)字信號處理方面的開發(fā)應用。
評論