MicroBlaze如何與Zynq SoC和平共存

發(fā)布時(shí)間:2013-8-21 11:50    發(fā)布者:李寬
關(guān)鍵詞: MicroBlaze , Zynq
作者:Bill Kafig, Praveen Venugopal, 賽靈思公司

賽靈思 Zynq-7000 All Programmable SoC已具有很強的板載處理能力。但是Zynq應用處理單元(APU)中強大的雙Cortex-A9處理器和相關(guān)外設的存在并不妨礙您在同一封裝中添加一個(gè)或多個(gè)MicroBlaze?處理器,只要能讓?xiě)檬芤婢秃谩?br />
為什么要給處理功能已經(jīng)很強大的解決方案添加MicroBlaze呢?首先就是可靠性的問(wèn)題。單線(xiàn)程會(huì )大幅提高可靠性。您可以針對計算密集型任務(wù)為每個(gè)Cortex-A9都布置一個(gè)線(xiàn)程,而且能根據需要為其它線(xiàn)程實(shí)例化任何數量的MicroBlaze處理器。其次,您可將任何雜務(wù)交給MicroBlaze去完成,讓處理功能強大的Cortex-A9去執行最需要它的工作,充分發(fā)揮其用武之地,從而節省數個(gè)關(guān)鍵的工作周期。

下面這個(gè)例子能反映以上兩種情況。設想一下,一個(gè)任務(wù)需要長(cháng)期高強度計算,同時(shí)還要監控用戶(hù)輸入。這里,MicroBlaze可管理用戶(hù)輸入(頻率較低、計算強度不高),并寫(xiě)入APU存儲器空間,這樣APU閑置時(shí)(也就是完成了處理任務(wù)時(shí))就能看看接下來(lái)需要處理什么信息。

一旦您決定在基于Zynq的設計中添加一個(gè)MicroBlaze處理器,馬上就會(huì )發(fā)現一些問(wèn)題。首要問(wèn)題就是APU如何與MicroBlaze通信,哪些處理器系統(PS)資源可供MicroBlaze使用。包括ZC702和Zedboard等在內的許多開(kāi)發(fā)板將許多外設直接映射到與處理系統相連的引腳?删幊踢壿(PL)中,這些引腳不能直接訪(fǎng)問(wèn)MicroBlaze。處理系統還包含多種不同定時(shí)器和中斷資源。有什么辦法能從MicroBlaze領(lǐng)域訪(fǎng)問(wèn)這些資源嗎?

PS與PL之間的接口

處理器系統和可編程邏輯緊密結合,這意味著(zhù)Cortex-A9、窺探控制單元(SCU)、PS外設、時(shí)鐘管理及其它功能與可編程邏輯之間存在多個(gè)緊密的集成連接。事實(shí)上,PS和PL之間共有6種不同類(lèi)型的互聯(lián),您可將這些互聯(lián)類(lèi)型彼此結合使用。此外,許多路徑是對稱(chēng)的,也就是說(shuō)PC能啟動(dòng)到PL的連接,而PL也能啟動(dòng)到PS的連接。


圖1:PL中PS和MicroBlaze的邊界是一片雷區嗎?二者能否共享資源?

賽靈思公司目前提供的應用指南、用戶(hù)指南和白皮書(shū)等大量資料均介紹了作為設計“核心”的Zynq-7000 APU如何利用可編程邏輯來(lái)訪(fǎng)問(wèn)存儲器、基于PL的外設和硬芯片外設(如PCIe模塊、BRAM、DSP48和千兆位級收發(fā)器等)。要分析MicroBlaze如何成為其自身領(lǐng)域的主導,邏輯上的第一步就是看看6個(gè)接口變量,首先從通用、高性能和加速器一致性端口這三類(lèi)AXI接口入手。

PS有兩個(gè)連接到PL的主AXI通道和兩個(gè)由PL啟動(dòng)的從通道(圖2)。這里的“主”是指AXI通道為發(fā)起方,能啟動(dòng)數據交換,而“從”在只能用于響應到達的數據。主AXI通道通常用來(lái)與PL中的外設通信。從AXI通道負責響應PL的請求,其中可能包括MicroBlaze處理器所執行的事務(wù)處理。這些AXI通道連接到PS的中央互聯(lián),可路由到許多資源。

此外,還有4個(gè)高性能(64位寬)AXI通道連接點(diǎn)。從PS角度來(lái)說(shuō),所有這4個(gè)通道均為從通道,連接至PS中的存儲器接口子系統(圖3)。這4個(gè)通道的目的就是讓PS中的主設備啟動(dòng)DDR存儲器事務(wù)處理。

這種存儲器互聯(lián)和DDR存儲器控制器是所有資源到DDR存儲器的門(mén)戶(hù)。雖然Cortex-A9處理器的優(yōu)先級通常高于從AXI連接,但4個(gè)AXI連接中每個(gè)都有一個(gè)“現在為我服務(wù)”信號,能讓發(fā)出該請求的通道獲得優(yōu)先級。未斷言該信號時(shí),架構、采用循環(huán)機制確定哪個(gè)請求方有權訪(fǎng)問(wèn)特定類(lèi)型存儲器。

加速器一致性端口(ACP)是另一種PL的32位AXI PS從連接。ACP的獨特之處在于它直接連接到SCU中。SCU的任務(wù)就是確保L1、L2和DDR存儲器之間的一致性。采用ACP,您能訪(fǎng)問(wèn)PS中的每個(gè)Cortex- A9處理器的高速緩存存儲器,而不必擔心與主存儲器中的數據同步問(wèn)題(硬件會(huì )自動(dòng)處理好這個(gè)問(wèn)題)。該功能不僅可大幅降低設計負擔,而且還能顯著(zhù)加速處理器與PL之間的數據傳輸。


圖2:到處理系統中央互聯(lián)的簡(jiǎn)化連接。


圖3:到DDR存儲器控制器和片上存儲器(OCM)的簡(jiǎn)化連接。

除了AXI鏈接之外,可擴展多路輸入輸出(EMIO)信號也可用于路由許多PS的硬外設直至PL,以便訪(fǎng)問(wèn)封裝引腳。只有54個(gè)封裝引腳直接連接到PS,不過(guò)PS的硬外設可使用的引腳數量大大超過(guò)54個(gè)。EMIO是PS硬外設和PL之間的通道。這些I/O信號可直接路由到PL可用的封裝引腳,而您也可利用這些引腳與PL中兼容的外設進(jìn)行通信。

PS和PL之間另外的各種雜項信號可以分為5個(gè)基本類(lèi):時(shí)鐘與復位、中斷信號、事件信號、空閑AXI與DDR存儲器信號,以及DMA信號。

* 時(shí)鐘與復位:PS為PL提供4個(gè)獨立的可編程頻率。通常這些時(shí)鐘之一用于A(yíng)XI連接。每個(gè)時(shí)鐘域都有自己的域復位信號,可重設與該域關(guān)聯(lián)的任何器件。

* 中斷信號:PS中的通用中斷控制器(GIC)負責收集所有可用源的中斷,包括PS外設的所有中斷源和可編程邏輯的16個(gè)“外設”類(lèi)型中斷。此外,還有4個(gè)連接到CPU(IRQ0、 IRQ1、FIQ0和FIQ1)的直接中斷。來(lái)自PS外設的共28個(gè)中斷可提供給PL。

* 事件信號:這些“帶外”異步信號說(shuō)明PS的特殊情況。PS提供一系列信號用于表明哪個(gè)CPU進(jìn)入待機模式,哪個(gè)CPU執行了SEV(“發(fā)送事件”)指令。PS可用事件信號從WFE(“等待事件”)狀態(tài)中喚醒。

* 空閑AXI與DDR存儲器信號:PS的空閑AXI信號用來(lái)指示PL中沒(méi)有未處理的AXI事務(wù)處理。該信號由PL驅動(dòng),是用來(lái)啟動(dòng)PS總線(xiàn)時(shí)鐘關(guān)斷功能的條件之一,確保所有PL總線(xiàn)器件均處于閑置狀態(tài)。DDR緊急/仲裁信號用來(lái)向PS DDR存儲器控制器的4個(gè)AXI端口DDR仲裁表示關(guān)鍵的存儲器處于緊張狀況。

* DMA信號:PS的直接存儲器訪(fǎng)問(wèn)(DMA)模塊通過(guò)一系列“請求和確認”信號與PL從設備通信。


圖4:硬件設計實(shí)例方框圖。

訪(fǎng)問(wèn)DDR存儲器

我們下面來(lái)分析一個(gè)設計實(shí)例,該實(shí)例涵蓋了典型MicroBlaze用戶(hù)可能涉及的幾個(gè)常見(jiàn)的需求,比如如何訪(fǎng)問(wèn)DDR存儲器;如何使用PS IOP中的外設;如何在MicroBlaze和PS之間傳輸數據塊;如何在MicroBlaze和PS之間實(shí)現事件同步等。圖4給出了解決每種問(wèn)題的方法(分別標識為1、2、3、4)。

訪(fǎng)問(wèn)DDR存儲器最簡(jiǎn)單方法就是通過(guò)4個(gè)高性能(HP)AXI接口的一個(gè)或多個(gè)連接(方框圖右上方)。4個(gè)64位寬端口可供可編程邏輯訪(fǎng)問(wèn)。您首先必須啟用一個(gè)端口,然后連接AXI到端口。MicroBlaze采用AXI4-Lite接口,而HP端口則應用作全AXI4連接。所幸的是,賽靈思設計工具可自動(dòng)彌補,無(wú)需任何手動(dòng)修改就確保實(shí)現成功連接。方框圖中①顯示了該連接。這類(lèi)連接的優(yōu)勢在于創(chuàng )建起來(lái)非常簡(jiǎn)單,而DDR存儲器對設計來(lái)說(shuō)就是常規存儲器。而不足之處在于,AXI-Lite不支持突發(fā)模式,而且只有32位寬,因此會(huì )喪失不少性能。

還可通過(guò)其它方法將基于PL的外設連接到DDR存儲器,比如采用DMA控制器,同樣也可采用HP端口。雖然這種連接機制更復雜,但能提高大數據塊的傳輸性能。

在PS中啟用UART和三重定時(shí)器/計數器(TTC)。M_AXI_GP0連接的BRAM控制器位于PL中,但從概念上說(shuō)是PS設計的組成部分(實(shí)際上也是PS設計的一部分)。

MicroBlaze作為設計的另一部分采用BRAM提供64KB的整合代碼和數據空間,供MicroBlaze專(zhuān)用。顯然,我們能連接這些端口到PS的HP端口以訪(fǎng)問(wèn)DDR存儲器,不過(guò)這樣做會(huì )讓實(shí)現工作變得更復雜。

有3個(gè)連接到MicroBlaze的標準外設:一個(gè)是負責接收TTC的PWM波形輸入并將其解釋為中斷源和接收的UART字符中斷的中斷控制器;一個(gè)是負責驅動(dòng)ZC702開(kāi)發(fā)板上8個(gè)LED的GPIO,第三個(gè)是用于連接到PS所連接的同一BRAM的B側的BRAM控制器。此外還有兩個(gè)連接:一個(gè)是到S_AXI_GP0的連接,用于實(shí)現PS內部外設的尋址;另一個(gè)到高性能端口的連接,可讓MicroBlaze訪(fǎng)問(wèn)DDR存儲器部分。

外設、數據塊和同步

到PS S_AXI_GP0端口的連接是訪(fǎng)問(wèn)可編程系統IOP模塊的關(guān)鍵(圖中的②)。S代表這是一個(gè)從端口,也就是接受PL中的組件啟動(dòng)的事務(wù)處理。在MicroBlaze和S_AXI_GP0端口之間建立連接時(shí),IOP模塊可從0xE000_0000擴展到0xE02F_FFFF,這意味著(zhù)MicroBlaze地址空間中的其它外設都不能重疊于這段地址,而這段地址將供處理器共享。

與此同時(shí),許多機制均支持MicroBlaze和PS之間的數據塊傳輸。往返DMA和DDR以及DMA和片上存儲器(OCM)就是兩個(gè)可能性。另一種就是在設計實(shí)例中實(shí)現的機制,其使用雙端口BRAM(圖中的③)。PS為BRAM控制器一側主設備,而MicroBlaze則為其另一側主設備。軟件負責管理分區和共享BRAM存儲器空間的使用,因為兩側都有權對存儲器的全部?jì)热葸M(jìn)行全面讀取和寫(xiě)入。

最終問(wèn)題涉及如何在MicroBlaze和PS之間同步事件。PS包括大量定時(shí)器,您能對PL中任意數量的定時(shí)器實(shí)例化。設計實(shí)例中采用了一個(gè)TTC外設中的一個(gè)通道來(lái)生成100毫秒的脈沖信號(圖中的④)。這里的關(guān)鍵是要認識到TTC生成的波形能從PS以外訪(fǎng)問(wèn),但TTC中斷只能在PS以?xún)瓤捎。您可用波形本身作為MicroBlaze中斷,從而規避這個(gè)問(wèn)題。此外,您也可采用硬件定時(shí)器(AXI定時(shí)器或用戶(hù)編碼的定時(shí)器)為PS和MicroBlaze提供中斷。


圖5:獨立軟件域和重疊項。

軟件支持

與任何嵌入式設計一樣,您要考慮的不光是硬件實(shí)現問(wèn)題,還要考慮軟件支持。對本例而言,要考慮兩個(gè)處理器的重疊區域(如圖5所示)。

就硬件而言,要把系統視為兩個(gè)相互交叉的嵌入式設計:PS和MicroBlaze。我們的參考設計可讓PS為其自身和MicroBlaze生成時(shí)鐘信號并提供中斷。MicroBlaze可使用這些信號,但不能影響或對其修改。PS和PL共用PS的IOP模塊、DDR存儲器與控制器以及常見(jiàn)的雙端口BRAM。

從地址映射角度看,IOP地址固定在硬件中,不能修改。MicroBlaze和Cortex-A9必須對外設使用相同的地址。技術(shù)參考手冊在這方面做了詳細說(shuō)明,非常具有參考價(jià)值。技術(shù)參考手冊分兩部分對解決設計中的外設問(wèn)題進(jìn)行了闡述。這部分中的所有寄存器都列出了地址和簡(jiǎn)介,管理兩個(gè)處理器之間的資源則是用戶(hù)要開(kāi)展的一項任務(wù),要避免數據沖突,避免資源不足等。


圖6:Cortex-A9應用和MicroBlaze應用流程圖。

采用DDR存儲器及其控制器比較簡(jiǎn)單,因為DDR存儲器控制器能管理沖突問(wèn)題,而且提供適當的啟發(fā)避免任何請求方無(wú)法獲得數據。由于這不在用戶(hù)控制下,時(shí)延可能會(huì )有些難以預見(jiàn)。

常見(jiàn)的BRAM采用相同的較低地址位,不過(guò)針對該模塊的每個(gè)處理器存儲器空間的位置可用Xilinx Platform Studio的地址標簽來(lái)選擇。跟以前一樣,數據沖突、同步和存儲器分配也是讀者要完成的工作。

我們的軟件設計實(shí)例更主要的目的是演示連接Cortex-A9和MicroBlaze的過(guò)程,而不是要做任何實(shí)際的工作。一些方法將演示這方面的可能性。

圖6左側所示的Zynq-7000應用是一款簡(jiǎn)單的設計,其采用賽靈思單機版板支持包。它運行的程序很大程度上讓處理器保持空閑狀態(tài),只是周期性地通過(guò)串行端口發(fā)出T字符表明自己仍在工作。此外,它會(huì )計算T的次數并將計數統計保存在BRAM中,與MicroBlaze共享。

MicroBlaze應用也運行單機版板支持套件。這樣就能支持中斷,每次串行端口上出現字符,MicroBlaze就把字符緩存起來(lái),并發(fā)送對應的Hex-ASCII到PS IOP模塊的串行端口。此外,它會(huì )構建接收字符串,每收到一個(gè)字符都保存在DDR存儲器中。收到回車(chē)后,將計算校驗和,并在字符串后直接添加到DDR存儲器。BRAM預先設定的位置處設置標記,當Cortex代碼“看到”標記時(shí)就從DDR存儲器讀取字符串,并驗證校驗和。如果校驗和準確,MicroBlaze發(fā)出“+”,否則發(fā)出“X”。

簡(jiǎn)而言之,設計實(shí)例證明MicroBlaze和Zynq7000 PS完全能和平共處。AXI連接點(diǎn)數量很多,使MicroBlaze(或PL中的任何組件)能方便地訪(fǎng)問(wèn)IOP模塊中的外設、OCM和DDR?删幊踢壿嬆芊奖愕卦L(fǎng)問(wèn)IOP模塊的中斷,而PL中能生成一系列中斷并發(fā)送給PS。軟件協(xié)調和定義良好的行為是避免爭搶情況和尋址沖突的關(guān)鍵。

關(guān)于作者:

作者:Bill Kafig
賽靈思公司高級內容開(kāi)發(fā)工程師
bill.kafig@xilinx.com

Praveen Venugopal
賽靈思公司解決方案開(kāi)發(fā)工程師
pvenugo@xilinx.com
本文地址:http://selenalain.com/thread-119761-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页