自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于NiosII的SOPC多處理器系統(tǒng)設(shè)計方法
基于NiosII的SOPC多處理器系統(tǒng)設(shè)計方法
 更新時間:2008-8-18 9:45:27  點擊數(shù):15
【字體: 字體顏色

李蘭英 李霄燕

    兩個或多個微處理器一起工作來完成某個任務(wù)的系統(tǒng)稱為“多處理器系統(tǒng)”。傳統(tǒng)基于單片機的多處理器系統(tǒng)結(jié)構(gòu)復(fù)雜,可靠性差;而基于32位的嵌入式軟核處理器NiosII的SOPC(可編程片上系統(tǒng))多處理器系統(tǒng)解決方案,從根本上改變了多處理器系統(tǒng)的設(shè)計理念和方法。使用Altera公司的NiosII軟核處理器和SOPC Builder工具,可以快速地設(shè)計和建立共享資源的多處理器系統(tǒng)。多處理器系統(tǒng)一般用于工作站和使用分載(load-sharing)的復(fù)雜算法(稱為“對稱多處理器SMP”)的高端PC計算。對于大部分嵌入式系統(tǒng),當(dāng)SMP的開銷太大時,使用多個處理器執(zhí)行不同的任務(wù),實現(xiàn)不同的功能正引起越來越多的關(guān)注。Altera公司的FPGA為開發(fā)非對稱的嵌入式多處理器系統(tǒng)提供了一個理想的平臺。為了提供理想的系統(tǒng)性能,使用SOPC Builder工具可以很容易地對硬件進行修改和調(diào)整,從而很快完成不同配置系統(tǒng)的設(shè)計、編譯和評估[1]。

    本文將對基于NiosII的SOPC多處理器系統(tǒng)的實現(xiàn)原理、設(shè)計流程和方法進行詳細的討論。

    1 NiosIl多處理器系統(tǒng)硬件設(shè)計

    QuartusII 5.0及以上版本支持多處理器系統(tǒng)的創(chuàng)建和調(diào)試。多個NiosII處理器能夠有效地共享系統(tǒng)資源。由于SOPC Builder允許用戶輕松添加多個處理器到系統(tǒng)中,因此建立多處理器系統(tǒng)的難點已不再是硬件的排列和連接,而在于多個處理器的軟件設(shè)計,使它們正常操作,相互之間不產(chǎn)生沖突。NiosII多處理器系統(tǒng)分為2類:一類是共享資源的多處理器系統(tǒng);另一類處理器相互獨立,之間不進行信息交換。

    2 Niosll多處理器系統(tǒng)的資源共享

    資源共享是多處理器系統(tǒng)的強大功能,但必須仔細考慮所要共享的資源,以及不同處理器如何使用共享資源。

    2.1 共享存儲器

    在多處理器系統(tǒng)中最普遍的共享資源是存儲器。共享存儲器用于存放任何數(shù)據(jù),從指示處理器間通信狀態(tài)的簡單標志,到被多個處理器同時進行計算的復(fù)雜數(shù)據(jù)結(jié)構(gòu)。

    如果存儲器中包含不只一個處理器的程序代碼,那么每個處理器需要有不同的存儲地址。對于程序空間,處理器不能共享存儲器的同一區(qū)域。如果共享數(shù)據(jù)存儲器,則存儲器的數(shù)據(jù)需要從端口與共享存儲器的處理器的數(shù)據(jù)主端口連接。多處理器之間共享數(shù)據(jù)存儲器比共享指令存儲器困難,原因是數(shù)據(jù)存儲器可讀/寫。如果某一處理器正在對共享存儲器的特定區(qū)域進行寫操作,而同時另一個處理器正在對同一區(qū)域進行讀或?qū)懖僮?則很可能出現(xiàn)數(shù)據(jù)錯誤,至少使應(yīng)用程序出錯,甚至使系統(tǒng)崩潰。

    共享存儲器的處理器需要一個機制來通知其他處理器何時正在使用共享資源,以便不受其他處理器的干擾。

    2.2 硬件互斥核

    NiosII處理器允許使用其硬件互斥核部件對共享資源進行保護處理。這個硬件互斥核不是一個NioslI處理器內(nèi)部的部件,而是一個稱為Mutex的SOPC Builder組件。

    互斥核也可看作一種共享資源,提供一個原子的“測試和置位”操作,處理器測試Mutex是否可行。如果可行,就在某個操作中獲取它。當(dāng)處理器結(jié)束與Mutex相關(guān)的共享資源使用時,釋放該Mutex;此時,另一個處理器可能獲取了Mutex,使用共享資源;コ夂嗽谖锢砩喜⒉荒芊乐官Y源同時被多個處理器訪問。運行在處理器上的軟件必須被設(shè)計為在訪問相關(guān)共享資源之前總是獲取Mutex的。

    在大部分情況下,多個處理器之間應(yīng)該使用互斥核來保護共享資源。然而,也有一些不需要互斥核的,例如對于單方向或循環(huán)的消息緩沖隊列,此時只有一個處理器往存儲器的某個特殊位置寫數(shù)據(jù)。

    一般地,NiosII不支持多個處理器之間非存儲器外設(shè)的共享,NiosII硬件抽象層(HAL)庫也不支持。NiosIIHAL提供訪問Mutex核的API函數(shù)如表1所列。

    

    2.3 多處理器地址空間的重疊

    在單處理器系統(tǒng)中,不允許多于一個的從外設(shè)具有相同的地址空間,原因是這將引起矛盾。然而,在多處理器系統(tǒng)中,只要外設(shè)被不同的處理器控制,那么不同的從外設(shè)就可以具有相同的基地址。

    3 Niosll多處理器系統(tǒng)軟件設(shè)計

    3.1 程序存儲器

    在多處理器系統(tǒng)中,多個處理器可能使用同一個程序存儲器,每個處理器的程序必須存放在不同的位置。Ni-osII和SOPC Builder提供一個簡單的存儲器分區(qū)模式,允許多個處理器在同一存儲器的不同區(qū)域運行各自的軟件。分區(qū)模式使用處理器的異常地址,可以在SOPC Builder中進行設(shè)置。NiosII IDE負責(zé)根據(jù)異常地址計算出不同代碼段鏈接的位置。如果2個不同的處理器被鏈接到同一存儲器,那么每個處理器的異常地址用來決定處理器軟件存放的基地址,其末地址由下一個異常地址或者存儲器的末地址決定。對于每個處理器,軟件有5個主要的代碼段需要被鏈接到存儲器中的固定地址,分別是:

    ·text 實際的可執(zhí)行代碼;

    ·rodata代碼段執(zhí)行時所使用的常量數(shù)據(jù);

    ·rwdata讀/寫變量和指針;

    ·heap 動態(tài)分配的存儲器;

    ·stack 函數(shù)調(diào)用參數(shù)和其他臨時數(shù)據(jù)。

     在多處理器系統(tǒng)中,對于每個處理器,都希望使用連續(xù)的存儲區(qū)域存儲其所有的代碼段。在這種情況下,異常地址用來定義2個處理器之間代碼存放的分界。

    值得注意的是,異常地址的低6位總是設(shè)置為0x20,因為偏移量0x0是NiosII的復(fù)位地址,所以異常地址必須位于其他位置。偏移量選擇為0x20,原因是它與一條指令的緩存行有關(guān)。0x20字節(jié)的復(fù)位代碼初始化指令緩存行,然后跳轉(zhuǎn)到系統(tǒng)的起始代碼處。

    3.2 啟動地址

    在多處理器系統(tǒng)中,每個處理器必須從自己的存儲區(qū)域啟動。為了從同一個非易失性存儲器中的不同區(qū)域啟動多處理器,簡單地設(shè)置每個處理器的復(fù)位地址為所期望的啟動地址。在啟動地址之間要留出足夠的空間存放啟動代碼。

     NiosII Flash Programmer能夠?qū)⒍鄠處理器的啟動代碼編程到一個Flash器件中。Flash Programmer根據(jù)每個處理器的復(fù)位地址計算Flash內(nèi)的編程地址。

    3.3 NiosII IDE中多處理器系統(tǒng)的運行和調(diào)試

    NiosII IDE中包含許多幫助開發(fā)多處理器系統(tǒng)軟件的工具,最重要的是具有對多處理器同時進行在片涮試的能力。在多處理器系統(tǒng)上,多個debug(調(diào)試)可同時運行;每個處理器可以單獨暫停和恢復(fù),也可以單獨設(shè)置每個處理器的斷點。某個處理器停在一個斷點處,并不影響其他處理器的操作。每個debug通道也可以單獨打開和停止。在NiosII IDE中,利用一項稱為“處理器集合(mul-tiprocessor collections)”的功能,一個操作就可以打開多個處理器的debug通道。multiprocessor collections是被連接在一個配置名字下的每個處理器的debug配置組。使用multiprocessol collections的好處是無論何時打開collections,NiosII IDE都可以打開每個debug通道,而不用手動打開。也可以用一個操作停止multiprocessor col-lections,但是同時暫停和恢復(fù)multiprocessor collections目前不支持。

    multiprocessor collections的打開和停止不是同時的,這意味著在collections中的處理器不能在同一個時鐘周期開始執(zhí)行代碼。事實上,不同處理器的啟動可能有幾秒的延遲。multiprocessor collections的目的是方便打開多處理器系統(tǒng)的debug通道,而不是為了同步處理器。如果需要在較短的時間內(nèi)啟動多個處理器,則需要構(gòu)建單獨的硬件和軟件機制。

    4 NiosII多處理器系統(tǒng)設(shè)計實例

    下面將利用SOPC Builder建立一個基于標準模板的3處理器、共享片上存儲器的NiosII系統(tǒng),之后在NiosII IDE中為每個處理器建立一個軟件工程。系統(tǒng)功能是:3個CPU的軟件將產(chǎn)生要顯示的消息。使用硬件;コ夂藢⑺a(chǎn)生的不同消息放在共享的消息緩沖區(qū)中。cpul將連續(xù)檢查緩沖區(qū)中的新消息,如果發(fā)現(xiàn)新消息,就通過jtag_uart顯示出來。

    實例的開發(fā)環(huán)境是QuartuslI 5.0或以上版本[2],開發(fā)套件CycloneII Edition和nioslI_cycloneII_2c35開發(fā)板。

    4.1 創(chuàng)建硬件系統(tǒng)

    在標準硬件實例standard.qp的設(shè)計基礎(chǔ)上,增加2個處理器、2個定時器和1個硬件互斥核組件;另外增加1個消息緩存區(qū)message_buffer_ram(片上RAM),用作3個處理器的消息緩存區(qū)。按如下步驟連接共享資源:

    ① 使用連接矩陣,將SDRAM連接到每個處理器的指令和數(shù)據(jù)主端口。允許3個處理器訪問SDRAM。

    ② 將ext_ram_bus蓮接到每個處理器的指令和數(shù)據(jù)主端口。允許3個處理器訪問外部RAM和Flash。
 
    ③ 將message_buffer_ram連接到每個處理器數(shù)據(jù)主端口。允許3個處理器訪問該存儲器。

    ④ 去除在message_buffer_ram和cpul指令主端口之間的缺省連接。

    ⑤ 選擇System→Auto-Assign Base Addresses,為每個外設(shè)分配一個唯一的基地址。
    
    完成以上操作后,系統(tǒng)配置如圖1所示。3個處理器的數(shù)據(jù)主端口與共享存儲器的同一從端口連接。因為cpul、cpu2和cpu3在物理上能夠同時將數(shù)據(jù)寫到共享存儲器中,軟件必須仔細設(shè)計以保證存儲在共享存儲器上數(shù)據(jù)的完整性。注意:圖1所示的系統(tǒng)配置中,只有cpul的數(shù)據(jù)主端口與jtag_uart相連。

    最后,為3個CPU設(shè)置復(fù)位和異常地址,創(chuàng)建和編譯系統(tǒng),并下載FPGA的設(shè)計文件.sof文件到開發(fā)板。

   

[1] [2] [3]  下一頁
  • 上一篇: FPGA在衛(wèi)星數(shù)字電視碼流轉(zhuǎn)發(fā)器設(shè)計中的應(yīng)用
  • 下一篇: 世平集團基于NXP芯片的低成本數(shù)碼相框方案
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1