基于Nios Ⅱ嵌入式軟核多處理器系統研究-設計應用_第1頁
基于Nios Ⅱ嵌入式軟核多處理器系統研究-設計應用_第2頁
基于Nios Ⅱ嵌入式軟核多處理器系統研究-設計應用_第3頁
基于Nios Ⅱ嵌入式軟核多處理器系統研究-設計應用_第4頁
基于Nios Ⅱ嵌入式軟核多處理器系統研究-設計應用_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯基于NiosⅡ嵌入式軟核多處理器系統研究-設計應用摘要:為開發具有自主、新穎的嵌入式多處理器系統,滿足功能、成本、體積和功耗的要求。對設計NiosⅡ軟核多處理器系統存在的問題進行了研究,給出了一種層次結構的共享資源NiosⅡ嵌入式軟核六處理器系統的實例。

通過對硬件互斥核,程序存儲器分區,重疊地址空間,啟動地址和異常地址的分析,提出了多處理器系統共享片上存儲器、FLASH存儲器和外設資源的解決方法,為NiosⅡ嵌入式多處理器系統的設計提供了有效的方法和途徑。

0引言

基于SoPC技術開發的嵌入式NiosⅡ軟核多處理器系統具有可自主設計,重構性好,軟硬件裁剪容易,系統擴充升級方便,能兼顧性能、體積、功耗、成本、可靠性等方面的要求。研發嵌入式NiosⅡ軟核多處理器系統,是提高嵌入式系統性價比和實用性一種有效途徑。

1片上NiosⅡ嵌入式軟核多處理器系統

嵌入式系統的是RISC處理器,具有代表性的RISC軟核處理器是NiosⅡ處理器。軟核處理器是指用編程的方法生成的處理器。是一種將硬件邏輯、智能算法、硬件描述語言和編程有機的結合出來,設計處理器硬件電路的新技術。

片上NiosⅡ嵌入式多處理器系統優勢在于設計者可根據的實際的需要,自主選擇NiosⅡ處理器的類型和數目并進行設置,對存儲器和外圍設備進行優化配置,限度提高片內資源和系統資源的利用率。

1.1NiosⅡ處理器

由NiosⅡ軟核處理器構建的系統,對系統軟硬件容易進行裁剪,并可集成在一個FPGA芯片上,構建系統和實時評估非常迅速、方便,可大大地縮短設計周期,降低設計風險。

1.2多處理器系統類型

按共享資源分為非共享資源多處理器系統和共享資源多處理器系統兩種。非共享資源多個處理器系統中的多個NiosⅡ處理器完全是獨立的,不共享系統資源,處理器相互之間無干擾,系統結構不太復雜。共享資源多處理器系統在共享資源的情況下,要確保多個NiosⅡ處理器安全、可靠的工作,它對提高每個處理器的性能、減小體積,降低成本和功耗有利,但系統軟件的設計較為復雜。

按處理器拓撲結構分為2種,一種是非層次結構,處理器與系統組件的連接容易;另一種是層次結構,它可根據實際需要來確定NiosⅡ處理器的數目,優化系統的內部結構,有效利用FPGA芯片的資源。但存在平衡多處理器的負載和任務協調的問題。

2共享資源多處理器系統

由多個NiosⅡ軟核處理器,一套片上外設接口,片上存儲器,片外存儲器接口等并集成在一個FPGA芯片上,構成片上嵌入式NiosⅡ軟核多處理器系統的基本架構。

2.1共享系統資源

NiosⅡ多處理器系統可共享存儲器、外圍設備系統資源。為了確保每個處理器共享資源,防止由于處理器之間的干擾,引起程序或數據的錯誤,導致整個系統的崩潰。NiosⅡ多處理器系統中使用硬件互斥核組件對共享資源進行保護處理,以協調各個處理器的正常工作,確保處理器之間不受干擾,從而提高多處理器系統的性能。

2.2硬件互斥核

用硬件互斥核來協調各個處理器對共享資源的訪問。硬件互斥核是沒有內部功能的,是一個簡單的QSYS組件。它提供了一個協議來保證對共享資源的所有權的互斥,互斥協議是在任何時刻只有一個處理器允許訪問共享硬件資源,這樣才能有效保護多個處理器訪問使用硬件資源,防止數據的損壞或系統的崩潰。互斥核mutex提供一個原子的測試和設置操作,它允許處理器測試,如果互斥是可用的話,獲得互斥鎖處理器進行單一的操作。當處理器完成使用共享外設與互斥鎖,會釋放互斥鎖。此后,另一個處理器可以獲取該互斥鎖和共享外設的使用權。

需要注意,互斥核并沒有外設系統被多個處理器同時訪問的物理保護,運行在處理器上的軟件負責遵守互斥協議,軟件通過寫獲取互斥鎖后,處理器訪問其相關聯的共享外圍設備。多個處理器訪問一個mutex核,則每個處理器有一個的標識符ID(cpuid)。Altera提供了NiosⅡ處理器訪問硬件的子程序,這些函數是針對mutex核的,直接對底層硬件進行操作,每個處理器通過寫它的cpuid控制寄存器的值到mutex寄存器的owner域對mutex加鎖,而mutex不能對HALAPI或ANSIC標準庫進行訪問。

3片上嵌入式NiosⅡ軟核六處理器系統實例

片上嵌入式NiosⅡ六處理器硬件系統結構示意圖如圖1所示。

3.1硬件系統結構

由六個NiosⅡ處理器、硬件互斥核、片上存儲器、JTAGUART、定時器、FLASH控制器、FLASH存儲器、SystemID、AvalonSwitchFabric總線組成系統硬件的基本結構。該系統采用層次結構,其中第六個NiosⅡ處理器、片上存儲器、JTAGUART、SystemID、定時器、FLASH控制和存儲器處在結構的頂層。處在底層的5個子系統共享存儲器資源,每個子系統包含一個NiosⅡ處理器、JTAGUART、定時器和硬件互斥核,用Ava-lon-MM、PipelineBridges將邏輯相鄰的子系統處理器和互斥核之間連接成一個環,連接子系統與系統頂層組件之間的通信通道。

3.2NiosⅡ處理器選擇和參數設置

NiosⅡ處理器有快速型、標準型和經濟型三種類型[3],快速型配置性能,經濟型配置占用片內資源少,標準型配置的性能和占用片上資源介于快速型和經濟型之間。根據實際應用需要對系統性價比及功耗的要求,合理選擇和配置NiosⅡ處理器。

多處理器系統中對每一個處理器都要進行正確的設置,否則即使創建的硬件系統已通過編譯并生成,也會造成多處理器系統不能正常運行的問題。如果多個處理器使用片上存儲器為共享程序存儲器,則必須正確設計異常地址。如果使用CFIFLASH存儲器區域作為多個處理器的引導區,則必須要正確設計復位地址。使用不同類型的存儲器要正確的進行設置。

3.3共享程序存儲器

為了降低成本、功耗,簡化多處理器系統結構,實例中利用FPGA的芯片資源共享程序存儲器,六個NiosⅡ處理器的運行軟件共同使用片上存儲器,每個處理器的軟件位于片上存儲器所屬特有的存儲器區域。如果六個處理器的軟件在片上存儲器運行,假設每個處理器的軟件需要有8KB的內存空間用于程序代碼和數據。這樣個處理器使用片上存儲器0×0~0x1FFF之間的作為其程序空間,第二個處理器使用片上存儲器0×2000~0x3FFF之間的區域,第三個處理器使用片上存儲器0×4000~0x5FFF之間的區域;其他各個處理器所需的存儲器區域采用同樣的方法對片上存儲器進行分區。

NiosⅡSBT提供了一個簡單的存儲器分區模式,允許多個處理器的軟件運行于同一存儲器的不同區域,確保位于存儲器中的主要代碼段的鏈接和固定地址。

圖2所示六個處理器在片上儲存器的分區及代碼段的鏈接。

3.4設置啟動地址

在多處理器系統中,每個處理器在存儲器中必須擁有自己的啟動區域,多個處理器不能從同一非易失性存儲器的同一地址啟動。啟動存儲器類似程序存儲器一樣也可以進行分區,但段和鏈接的概念不同,因為通常引導代碼只是復制到它實際的程序代碼被鏈接在RAM中,然后跳轉到該程序代碼處。為了從同一非易失性存儲器的不同區域啟動多個處理器,設置每個處理器復位地址,這個地址就是啟動該處理器的位置,啟動區域要留出足夠的空間存放啟動代碼。由于沒有支持機制多個處理器無法直接訪問CFIFLASH存儲器,需要使用一個CFIFLASH控制器,NiosⅡ處理器通過CFIFLASH控制器讀取或寫入到CFIFLASH存儲器。如果多個NiosⅡ處理器啟動在同一個CFIFLASH存儲器。為確保安全訪問,必須刪除一個主控處理器之外的CFIFLASH存儲器alt_main()函數所有初始化的驅動程序,并確認啟動前完成所有其他處理器在CFIFLASH存儲器的程序初始化。圖3所示六個處理器從一個FLASH存儲器啟動的映射。

3.5共享外設資源

多個處理器共享外設存在嚴重的問題。共享外設的的問題是中斷,如果允許一個外設中斷且所有處理器共享它,沒有可靠的方法保證哪一個處理器首先響應中斷且為哪個外設服務。此外,如果外設是用來作為多處理器的輸入設備,很難確定哪個處理器應該從設備中接受輸入信息。NiosⅡ多處理器系統共享外設資源的方式,是系統中的外設僅被一個處理器訪問,如果其他處理器需要使用外設,是使用硬件先進先出(FIFO)或消息緩沖區互斥保護。創建多處理器系統時,僅對需要通信的處理器和外設之間進行連接。例如,如果一個處理器運行僅使用一個片上存儲器,該處理器沒有必要與系統中任何其他存儲器連接。處理器與存儲器的分離,不使用物理斷開連接,這樣可節約FPGA資源,保證處理器不會破壞存儲器的數據。

共享資源多處理器與各種組件連接是設計中的關鍵環節,要驗證每個處理器及所需組件的連接是否正確。多數組件是由單一的處理器管理。例如處理器A要求一個外設的服務,而該外設與處理器B連接并由處理器B管理,處理器A要求對該外設進行操作,處理器A必須請求處理器B.這樣可以使用處理器互斥保護的共享片上存儲器,用于個兩處理器之間的通信,達到多處理器共享外設的目的。

在多處理器系統中,每個從外設可以占據相同的基地址不會發生沖突,只要每個外設是被不同的處理器控制。因為每個從外設不必一定被每個處理器控制。如果處理器A被連接到映射地址為0x00008a00的一個從外設,處理器B也可以被連接到映射地址0x00008a00另一個從外設,只要處理器A是沒有連接到處理器B的從外設,處理器B沒有連接到處理器A的從外設,不會因為從外設占據相同的基地址而發生沖突。圖4方框圖顯示多處理器系統中不同的從外設組件映射到同一個基地址的示例。

4系統調試及軟件設計

NiosⅡSBTforEclipse工具包括了許多功能,它可以進行NiosⅡ多處理器系統的軟件開發。能同時對多個NiosⅡ處理器進行調試會話,也可單獨暫停和恢復每個處理器的運行,單獨設置每處理器的斷點。如果一個處理器遇到一個斷點,它不會停止或影響其他處理器的操作。NiosⅡSBTforEclips對多個處理器系統具有可同時進行在片調試的能力。

系統軟件設計應注意的問題,在設計NiosⅡ多處理器系統的軟件時,必須要考慮系統硬件結構的特點以及啟動地址和異常地址的設置。設計調試運行多處理器系統軟件與單處理器系統相似,一定要清楚每個處理器的復位地址、異常地址,CPUID寄存器的值以及存儲器的類型。多個處理器使用同一個程序存儲器,而每個處理器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論