<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > NiosII多核處理器之間通信技術(shù)的研究

NiosII多核處理器之間通信技術(shù)的研究

作者:清華電工電子中心清華-Altera聯(lián)合實(shí)驗室 高兵 秦儉 陳莉平 唐光榮 時(shí)間:2008-04-16 來(lái)源:電子產(chǎn)品世界 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/81623.htm

  隨著(zhù)應用領(lǐng)域的擴大,人們對微處理器系統的性能、功耗和成本提出了越來(lái)越嚴格的要求。單純依靠提升時(shí)鐘的方法已經(jīng)不能滿(mǎn)足需要,在移動(dòng)通信、軍事應用、消費電子、智能控制設備等領(lǐng)域,的解決方案成為一種主流趨勢。

  Altera公司在其FPGA中實(shí)現的處理器是一個(gè)用戶(hù)可配置的通用32位RISC軟核微處理器,Nios II 5.0及其以上版本支持多處理器系統的創(chuàng )建和調試。Nios II多處理器,除了軟核本身超過(guò)200DMIPS的高性能之外,Altera開(kāi)發(fā)用于Nios/處理器的Avalon參數化接口總線(xiàn)具有友好的多主從仲裁能力,可以有效地實(shí)現系統資源共享。在清華-Altera聯(lián)合實(shí)驗室的支持下,筆者對之間共享通信的幾種可行方案進(jìn)行研究,并且在自行設計的NiosII開(kāi)發(fā)板上完成設計測試驗證,分析比較各種方案的技術(shù)特點(diǎn)、優(yōu)勢與不足,提供給不同系統的應用者參考。

  NiosII多核間幾種可行的通信方案

  雙口RAM和PIO核的多核中斷通信方案

  雙處理器可采用一個(gè)雙口RAM和中斷信號通過(guò)定義某種信息數據結構來(lái)進(jìn)行通信。在NiosII雙處理器系統,可以采用FPGA中實(shí)現的片上雙口RAM和通用IO組件PIO核來(lái)實(shí)現多核中斷通信。通信的中斷信號使用PIO組件產(chǎn)生和接收,雙核通信的連接如圖1所示。由于A(yíng)valon總線(xiàn)具有多主從仲裁能力,同一外設可以同時(shí)掛載在不同軟核上,有訪(fǎng)問(wèn)競爭時(shí)由總線(xiàn)自己仲裁決定哪個(gè)主方取得從設備訪(fǎng)問(wèn)權,雙口RAM和單口RAM均可以通過(guò)Avalon總線(xiàn)掛載在多個(gè)NiosII軟核上,二者的區別在于:雙口RAM設備有兩套從端口被Avalon總線(xiàn)當作兩個(gè)設備,雙核可以同時(shí)對其進(jìn)行讀操作;單口RAM只有一套從端口被Avalon總線(xiàn)當作一個(gè)設備,多核對其的讀寫(xiě)操作是分時(shí)進(jìn)行的。

  這里設計雙核通過(guò)雙口RAM和PIO中斷進(jìn)行通信的例程。設計信息交換的數據結構share_msg_buf如表1所示。安裝中斷程序及終端服務(wù)例程如圖2所示。

  通信的關(guān)鍵在于消息標志flag狀態(tài)的定義:NO_DATA-內存空閑、DATA_IN-有新消息寫(xiě)入、DATA_OUT-新消息已送出,單個(gè)軟核處理器在存儲器空閑(NO_DATA狀態(tài))或者有消息進(jìn)入(DATA_IN狀態(tài))將新消息讀走之后才能在存儲區寫(xiě)入新的消息數據;在自己發(fā)的消息還未被對方接收(DATA_OUT狀態(tài))時(shí),不做處理,返回繼續等待對方接收消息。標志狀態(tài)的定義從軟件上實(shí)現了雙核對雙口RAM的互斥訪(fǎng)問(wèn),有效防止雙核對共享數據的破壞。這種通信方案經(jīng)過(guò)筆者的NiosII雙核系統驗證測試,消息接收正確。

  互斥硬核和共享存儲的多核查詢(xún)通信方案

  Altera在SOPC Builder工具箱中提供具有Avalon接口的互斥硬核Mutex組件來(lái)協(xié)調共享資源的訪(fǎng)問(wèn)。Mutex核提供一個(gè)基于硬件的原子測試和置位(test-and-set)操作,允許多處理器環(huán)境下決定軟核對Mutex核的使用權,使用Mutex核就可實(shí)現多核對相應共享資源(如存儲器)的互斥訪(fǎng)問(wèn)。這樣多核的通信就可以舍棄雙口RAM,使用片上RAM或者片外存儲器作為共享存儲器,采用查詢(xún)方式實(shí)現。雙核通信的設備連接如圖3所示,與雙口RAM不同,這里的片上RAM僅作為一個(gè)設備掛載到Avalon總線(xiàn)上。

  Altera提供NiosII HAL環(huán)境下對Mutex核訪(fǎng)問(wèn)的函數:打開(kāi)、加鎖、解鎖、判斷Mutex屬主等。使用Mutex核控制片上RAM,單個(gè)軟核每次對片上RAM操作之前都要首先取得Mutex核所有權,操作完之后應立即放棄對Mutex核的所有權,避免單個(gè)軟核對Mutex核及共享資源的獨占。采用前面表所定義的數據結構作為通信的消息,在查詢(xún)方式下,單個(gè)軟核需要有任務(wù)通過(guò)循環(huán)不斷檢查共享數據區標志位flag,等待其它軟核送來(lái)消息,以便激活自身系統掛起的任務(wù),執行下一步工作。整個(gè)流程如圖4所示。

  在循環(huán)中使用等待延時(shí),避免了多核對Mutex核資源的不停爭用,同時(shí)留給處理器一定的消息處理時(shí)間,但缺點(diǎn)是延長(cháng)了通信呼叫和應答的時(shí)間,在實(shí)時(shí)設計中應考慮到延時(shí)時(shí)長(cháng)對的影響。此方案在筆者的NiosII雙核系統工程中通過(guò)驗證。

  郵箱內核和共享存儲的多核阻塞通信方案

  Altera還提供帶Avalon接口的郵箱內核mailbox組件在之間發(fā)送消息。郵箱內核含有兩個(gè)互斥體:一個(gè)保證對共享存儲器的唯一寫(xiě)訪(fǎng)問(wèn);另一個(gè)保證對共享存儲器的唯一讀訪(fǎng)問(wèn),它與獨立共享存儲器一起使用實(shí)現多核處理器間的消息隊列通信。郵箱內核適于雙核間單方向的消息通信,功能相當于FIFO緩沖隊列,其傳送的消息往往是指向共享內存塊結構體的指針,代替實(shí)際的數據傳輸,提高數據交換效率。該系統連接如圖5所示。

  在NiosII HAL環(huán)境下對郵箱內核訪(fǎng)問(wèn)的函數有:打開(kāi)、關(guān)閉、獲取消息、等待消息、發(fā)送消息。在構建郵箱內核組件時(shí),選擇可用的共享存儲器作為消息隊列內存,指定消息隊列長(cháng)度size(不超過(guò)存儲器容量)及其在存儲器中的偏移量Offset。這里選擇片上RAM作為共享存儲器,將其分為兩部分:一部分作為消息隊列內存;一部分作為消息指針指向的內存數據結構塊。定義內存數據結構如表2所示,頭信息info可以作為數據幀的序號,保證數據的按序接收。使用郵箱內核消息隊列完成雙核間大量數據傳輸的流程如圖6時(shí)進(jìn)行等待;數據接受方處理器處于等待消息的狀態(tài),一有消息就接收進(jìn)來(lái)??梢栽趯?shí)時(shí)操作系統中單獨建立發(fā)送數據和接收數據的任務(wù),由于沒(méi)有中斷和查詢(xún)過(guò)程,此方案可以達到單方向很高的數據傳輸率,在筆者的NiosII系統工程中得到了驗證測試。



  通用串行接口總線(xiàn)的方案

  在NiosII多核處理器中可以使用通用串行接口總線(xiàn)如UART、SPI、I2C等進(jìn)行相互間的通信。這些總線(xiàn)有的是NiosII的通用組件在SOPC Builder中直接添加使用,有的可成熟的第三方組件在SOPC Builder中使用。目前NiosII中可用的幾種串行總線(xiàn)如表3所示。

  幾種總線(xiàn)各有優(yōu)缺點(diǎn)和使用限制,例如UART總線(xiàn)比較通用、工作在異步方式,使用方便,但針對一對一的通信,數據率稍低;SPI總線(xiàn)工作在同步方式,一個(gè)主設備可以?huà)於鄠€(gè)從設備,數據率較高,但控制比UART復雜、數據線(xiàn)較多。應根據具體應用選擇合適總線(xiàn)。這里以UART總線(xiàn)說(shuō)明和驗證通用串行接口總線(xiàn)完成多核間通信的方案。UART核是Altera提供的NiosII通用組件,實(shí)現了一個(gè)簡(jiǎn)單的寄存器映像的Avalon從接口,可以很容易集成到NiosII處理器中,允許主外設(如NiosII軟核)通過(guò)讀寫(xiě)寄存器與其進(jìn)行通信。UART核至少創(chuàng )建Rxd輸入和Txd輸出兩個(gè)IO端口,可根據需要創(chuàng )建CTS輸入和RTS輸出兩個(gè)流控信號。這里為每個(gè)NiosII軟核創(chuàng )建一個(gè)無(wú)流控波特率為1.152Mbps的UART組件,其發(fā)送端口Txd與另外一方的接收Rxd連接。NiosII HAL提供UART系統庫驅動(dòng)程序,可使用ANSC C標準函數或者UNIX風(fēng)格IO函數訪(fǎng)問(wèn)UART,雙核通信流程如圖7所示。

  雙核中的數據發(fā)送方查詢(xún)監測輸入字符,出現關(guān)鍵字時(shí)發(fā)送數據,并以結束符結束發(fā)送;數據接收方等待用戶(hù)輸入字符命令,如果是關(guān)鍵字則開(kāi)始接收數據,在收到結束符時(shí)結束接收,處理數據。這個(gè)方案實(shí)現的是數據接收方請求發(fā)送,在筆者NiosII系統工程中以1.152Mbps傳輸大數據量,驗證測試沒(méi)有問(wèn)題。也可以根據實(shí)際需要使用其它方案。

  PIO核自定義協(xié)議的方案

  Altera為NiosII提供并行輸入/輸出PIO核,在A(yíng)valon從端口和通用I/O端口之間建立存儲器映像接口,PIO組件可配置為輸入、輸出、輸入輸出、雙向三態(tài)四種類(lèi)型,其中后三種類(lèi)型可提供信號邊沿捕獲(Edge Capture)和中斷請求。利用PIO并口可將雙核連接起來(lái),定義自己的接口形式和通信訪(fǎng)問(wèn)協(xié)議進(jìn)行通信。雙核間的互連使用的是FPGA片上邏輯,不占用FPGA的IO引腳,寬度最高32位,同等數據率下效率大大高于串行總線(xiàn),可使用中斷、查詢(xún)或者二者相結合方式進(jìn)行通信。這里定義一種PIO通信接口和時(shí)序如圖8所示。

  在中斷信號PIO_irq的上升沿提出中斷申請,啟動(dòng)一次通信,數據傳輸方將讀寫(xiě)標志信號PIO_R/W置高,同時(shí)向數據線(xiàn)PIO_D寫(xiě)入數據;數據接收方在相應中斷信號后,檢測到PIO_R/W信號變高,則讀數據線(xiàn)PIO_D獲取數據,同時(shí)將PIO_R/W置低表明數據已讀,可以進(jìn)行下次數據傳送。數據傳輸方通過(guò)將PIO_irq信號置低表明完成一次通信,數據接收方檢測到PIO_irq信號為低時(shí)停止本次通信。這種中斷和查詢(xún)相結合的方案效率很高,任意一方都可以發(fā)起通信,通信的速率取決于NiosII軟核對端口讀寫(xiě)延時(shí)和數據的處理速度或者寫(xiě)數據緩沖區的速度。軟件通信流程如圖9所示。

  結語(yǔ)

  表4對上述各種方案進(jìn)行了一下比較,分析了每種方案的特點(diǎn)和適用范圍。

  筆者的PDA考評系統項目采用了NiosII雙核設計,使用方案三(郵箱內核和共享存儲的多核阻塞通信方案)完成雙核間的通信。PDA設備作為實(shí)驗考評系統的客戶(hù)端,通過(guò)藍牙無(wú)線(xiàn)通信與建有學(xué)生課程成績(jì)數據庫的服務(wù)器進(jìn)行通信,實(shí)現實(shí)驗現場(chǎng)學(xué)生成績(jì)的查詢(xún)、修改、數據文件的傳輸等功能,系統的功能結構如圖10所示。NiosII雙核分為兩個(gè)系統:(1)NiosII人機界面系統。負責管理矩陣鍵盤(pán)按鍵和LCD顯示界面的驅動(dòng);(2)NiosII通信主機系統。實(shí)現完整的藍牙協(xié)議棧,完成與數據庫服務(wù)器進(jìn)行通信的任務(wù)。雙核之間鍵盤(pán)操作指令和LCD顯示數據的交換通過(guò)上文所述的方案三——郵箱內核和共享存儲的方式實(shí)現。

  NiosII多核處理器在FPGA中易于實(shí)現,并且多核之間通信可選方案較多,適應范圍廣,相信會(huì )在越來(lái)越多的系統中采用。

  參考文獻:

  1.  Altera Corp. QuartusII Version6.1 Handbook. Altera. 2006

  2.  Altera Corp. Creating Multiprocessor NiosII System Tutorial. Altera. 2005

  3.  Altera Corp. NiosII Processor Reference Handbook. Altera. 2005

  4.  Altera Corp. NiosII Software Developer’s Handbook. Altera. 2005

  5.  Altera Corp. Avalon Interface Specification. Altera. 2005

  6.  www.altera.com.cn

數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理


存儲器相關(guān)文章:存儲器原理


加速度計相關(guān)文章:加速度計原理


關(guān)鍵詞: NiosII 多核處理器 多核通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>