MicroBlaze如何與Zynq SoC和平共存

2020-12-06 電子產品世界

賽靈思 Zynq-7000 All Programmable SoC已具有很強的板載處理能力。但是Zynq應用處理單元(APU)中強大的雙Cortex-A9處理器和相關外設的存在並不妨礙您在同一封裝中添加一個或多個MicroBlaze?處理器,只要能讓應用受益就好。

本文引用地址:http://www.eepw.com.cn/article/201610/308380.htm

為什麼要給處理功能已經很強大的解決方案添加MicroBlaze呢?首先就是可靠性的問題。單線程會大幅提高可靠性。您可以針對計算密集型任務為每個Cortex-A9都布置一個線程,而且能根據需要為其它線程實例化任何數量的MicroBlaze處理器。其次,您可將任何雜務交給MicroBlaze去完成,讓處理功能強大的Cortex-A9去執行最需要它的工作,充分發揮其用武之地,從而節省數個關鍵的工作周期。

下面這個例子能反映以上兩種情況。設想一下,一個任務需要長期高強度計算,同時還要監控用戶輸入。這裡,MicroBlaze可管理用戶輸入(頻率較低、計算強度不高),並寫入APU存儲器空間,這樣APU閒置時(也就是完成了處理任務時)就能看看接下來需要處理什麼信息。

一旦您決定在基於Zynq的設計中添加一個MicroBlaze處理器,馬上就會發現一些問題。首要問題就是APU如何與MicroBlaze通信,哪些處理器系統(PS)資源可供MicroBlaze使用。包括ZC702和Zedboard等在內的許多開發板將許多外設直接映射到與處理系統相連的引腳。可編程邏輯(PL)中,這些引腳不能直接訪問MicroBlaze。處理系統還包含多種不同定時器和中斷資源。有什麼辦法能從MicroBlaze領域訪問這些資源嗎?

PS與PL之間的接口

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

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

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

PS有兩個連接到PL的主AXI通道和兩個由PL啟動的從通道(圖2)。這裡的「主」是指AXI通道為發起方,能啟動數據交換,而「從」在只能用於響應到達的數據。主AXI通道通常用來與PL中的外設通信。從AXI通道負責響應PL的請求,其中可能包括MicroBlaze處理器所執行的事務處理。這些AXI通道連接到PS的中央互聯,可路由到許多資源。

此外,還有4個高性能(64位寬)AXI通道連接點。從PS角度來說,所有這4個通道均為從通道,連接至PS中的存儲器接口子系統(圖3)。這4個通道的目的就是讓PS中的主設備啟動DDR存儲器事務處理。

這種存儲器互聯和DDR存儲器控制器是所有資源到DDR存儲器的門戶。雖然Cortex-A9處理器的優先級通常高於從AXI連接,但4個AXI連接中每個都有一個「現在為我服務」信號,能讓發出該請求的通道獲得優先級。未斷言該信號時,架構、採用循環機制確定哪個請求方有權訪問特定類型存儲器。

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

圖2:到處理系統中央互聯的簡化連接。

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

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

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

* 時鐘與復位:PS為PL提供4個獨立的可編程頻率。通常這些時鐘之一用於AXI連接。每個時鐘域都有自己的域復位信號,可重設與該域關聯的任何器件。

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

* 事件信號:這些「帶外」異步信號說明PS的特殊情況。PS提供一系列信號用於表明哪個CPU進入待機模式,哪個CPU執行了SEV(「發送事件」)指令。PS可用事件信號從WFE(「等待事件」)狀態中喚醒。

* 空閒AXI與DDR存儲器信號:PS的空閒AXI信號用來指示PL中沒有未處理的AXI事務處理。該信號由PL驅動,是用來啟動PS總線時鐘關斷功能的條件之一,確保所有PL總線器件均處於閒置狀態。DDR緊急/仲裁信號用來向PS DDR存儲器控制器的4個AXI埠DDR仲裁表示關鍵的存儲器處於緊張狀況。

* DMA信號:PS的直接存儲器訪問(DMA)模塊通過一系列「請求和確認」信號與PL從設備通信。

圖4:硬體設計實例方框圖。

訪問DDR存儲器

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

訪問DDR存儲器最簡單方法就是通過4個高性能(HP)AXI接口的一個或多個連接(方框圖右上方)。4個64位寬埠可供可編程邏輯訪問。您首先必須啟用一個埠,然後連接AXI到埠。MicroBlaze採用AXI4-Lite接口,而HP埠則應用作全AXI4連接。所幸的是,賽靈思設計工具可自動彌補,無需任何手動修改就確保實現成功連接。方框圖中①顯示了該連接。這類連接的優勢在於創建起來非常簡單,而DDR存儲器對設計來說就是常規存儲器。而不足之處在於,AXI-Lite不支持突發模式,而且只有32位寬,因此會喪失不少性能。

還可通過其它方法將基於PL的外設連接到DDR存儲器,比如採用DMA控制器,同樣也可採用HP埠。雖然這種連接機制更複雜,但能提高大數據塊的傳輸性能。

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

MicroBlaze作為設計的另一部分採用BRAM提供64KB的整合代碼和數據空間,供MicroBlaze專用。顯然,我們能連接這些埠到PS的HP埠以訪問DDR存儲器,不過這樣做會讓實現工作變得更複雜。

有3個連接到MicroBlaze的標準外設:一個是負責接收TTC的PWM波形輸入並將其解釋為中斷源和接收的UART字符中斷的中斷控制器;一個是負責驅動ZC702開發板上8個LED的GPIO,第三個是用於連接到PS所連接的同一BRAM的B側的BRAM控制器。此外還有兩個連接:一個是到S_AXI_GP0的連接,用於實現PS內部外設的尋址;另一個到高性能埠的連接,可讓MicroBlaze訪問DDR存儲器部分。

外設、數據塊和同步

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

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

最終問題涉及如何在MicroBlaze和PS之間同步事件。PS包括大量定時器,您能對PL中任意數量的定時器實例化。設計實例中採用了一個TTC外設中的一個通道來生成100毫秒的脈衝信號(圖中的④)。這裡的關鍵是要認識到TTC生成的波形能從PS以外訪問,但TTC中斷只能在PS以內可用。您可用波形本身作為MicroBlaze中斷,從而規避這個問題。此外,您也可採用硬體定時器(AXI定時器或用戶編碼的定時器)為PS和MicroBlaze提供中斷。

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

軟體支持

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

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

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

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

採用DDR存儲器及其控制器比較簡單,因為DDR存儲器控制器能管理衝突問題,而且提供適當的啟發避免任何請求方無法獲得數據。由於這不在用戶控制下,時延可能會有些難以預見。

常見的BRAM採用相同的較低地址位,不過針對該模塊的每個處理器存儲器空間的位置可用XilinxPlatform Studio的地址標籤來選擇。跟以前一樣,數據衝突、同步和存儲器分配也是讀者要完成的工作。

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

圖6左側所示的Zynq-7000應用是一款簡單的設計,其採用賽靈思單機版板支持包。它運行的程序很大程度上讓處理器保持空閒狀態,只是周期性地通過串行埠發出T字符表明自己仍在工作。此外,它會計算T的次數並將計數統計保存在BRAM中,與MicroBlaze共享。

MicroBlaze應用也運行單機版板支持套件。這樣就能支持中斷,每次串行埠上出現字符,MicroBlaze就把字符緩存起來,並發送對應的Hex-ASCII到PS IOP模塊的串行埠。此外,它會構建接收字符串,每收到一個字符都保存在DDR存儲器中。收到回車後,將計算校驗和,並在字符串後直接添加到DDR存儲器。BRAM預先設定的位置處設置標記,當Cortex代碼「看到」標記時就從DDR存儲器讀取字符串,並驗證校驗和。如果校驗和準確,MicroBlaze發出「+」,否則發出「X」。

簡而言之,設計實例證明MicroBlaze和Zynq7000 PS完全能和平共處。AXI連接點數量很多,使MicroBlaze(或PL中的任何組件)能方便地訪問IOP模塊中的外設、OCM和DDR。可編程邏輯能方便地訪問IOP模塊的中斷,而PL中能生成一系列中斷並發送給PS。軟體協調和定義良好的行為是避免爭搶情況和尋址衝突的關鍵。

相關焦點

  • 詳細解讀Zynq的三種啟動方式(JTAG,SD,QSPI)
    本文介紹zynq上三種方式啟動文件的生成和注意事項,包括只用片上RAM(OCM)和使用DDR3兩種情況。這裡沒有使用FSBL,不能加載.bit文件(zynq啟動過程另介紹),所以只適用於沒有使用PL(包括PL邏輯或PL的IO等)的情況;由於OCM大小為256KB,而在BootROM階段只能訪問192KB,所以「只用OCM」時要求裸機程序小於192KB才行。
  • 如何使用Zynq SoC和賽靈思IP核簡化高速光學收發器模塊熱測試
    如何使用Zynq SoC和賽靈思IP核簡化高速光學收發器模塊熱測試 Lei Guan 發表於 2017-11-17 18:11:01 本文介紹一種使用Zynq SoC和賽靈思IP核簡化高速光學收發器模塊熱測試的方法
  • FPGA 101:如何在Zynq SoC上使用中斷
    處理器執行中斷服務例程,其中定義了如何處理中斷;5. 在處理器從協議棧恢復之前,被中斷的線程繼續運行;中斷屬於異步事件,因此可能同時發生多個中斷。為了解決這一問題,處理器會對中斷進行優先級排序,從而首先服務於優先級別最高的中斷掛起。為了正確實現這一中斷結構,需要編寫兩個函數:一是中斷服務例程,用於定義中斷發生時的應對措施;二是用於配置中斷的中斷設置。
  • 輻射4遠港如何三方共存
    解完迪瑪的記憶以後去和迪瑪對峙,答應他用合成人替換大祭司,同時不向遠港鎮告發船長是合成人的事,就可以三方共存了。而且這個時候你手裡掌握著隨時可以滅掉三方勢力的東西。輻射4遠港如何三方共存第一種方法是解完迪瑪的記憶以後去和迪瑪對峙,答應他用合成人替換大祭司,同時不向遠港鎮告發船長是合成人的事,就可以三方共存了。而且這個時候你手裡掌握著隨時可以滅掉三方勢力的東西。
  • 宗慧法師:世界必由「和、平」而致「和平」
    提要:世界和平面臨著兩大障礙:一是傳統精神與現代文明之間的衝突,二是不同文明之間的衝突。如何克服障礙實現世界和平呢?——問題本身就是答案:「世界」必由「和、平」而致「和平」。主題詞:世界和平 生命 民主 佛性在荷蘭的一家旅館裡,有一幅畫,背景是一片墳場,上面寫著「走向永久和平」。一部世界史,可以說就是一部戰爭史,和平的企望總是寫在戰爭的廢墟上。戰爭一次又一次把和平踐踏,和平一次又一次以帶著眼淚的微笑繼續它的企盼——世界和平是否可能?若可能,應當如何實現?
  • 人類該如何與新冠病毒「共存」?
    不過,經濟學給了我們一個理性的視角,探討大疫之下國家治理的邏輯以及如何與病毒風險共存。一、還有哪些「看不見的」死亡?3月初,上海醫療救治專家組組長張文宏在接受採訪時表示:如不儘快復工,這個死亡的人數將遠遠高於冠狀病毒。當所有人都恐懼於新冠病毒的死亡威脅時,張文宏看到了另一種「死亡」——社會秩序中斷的危險。
  • 最早人類曾與恐龍共存!那時候,地球還輪不到咱們來主宰
    如果宇宙間的一個星球上有無數種的生命,它們如何相處,是和平交流,還是一方建立起統治其他生命的霸權?這就像是咱們地球上,人類是老大,咱說了算。人類的智慧,讓人類已經無比強大!其他生命,誰能與我爭鋒!說的直白點兒,人類統治著地球!
  • 癌到了晚期如何「與癌共存」?建議做好3件事,別放棄
    但即使到了癌症晚期,病人們更應懂得如何「與癌共存」,爭取壽命的延續。癌症晚期患者如何做到「與癌共存」?一、科學的治療癌症晚期並不等於「死刑」,仍有方法可治。只要做到科學的治療、規範飲食、調節心態,就可以有效延長生命,提高生活質量,甚至做到「與癌共存」。所以癌症患者們要充滿信心,與病魔堅定搏鬥,不要自我放棄,輕易認輸。
  • 經典美劇,《猩球崛起1》,如何和大自然共存
    經典美劇,《猩球崛起1》,如何和大自然共存世界之大,無奇不有。隨著人類科技的發展,也越來越超出我們的想像力。他給我們的生活帶來了很多的便利,但同時也有部分的隱患存在其中。就目前而言是利大於弊的,所以說才能夠推行出來。
  • 共存還是取代?空氣消毒機會否步空氣淨化器後塵?
    缺點在於會對人體產生輻射,不過目前市面上的一些紫外線空氣消毒機已經能夠做到人機共存。  等離子技術:等離子殺菌淨化設備採用了氣體放電等離子技術,該技術是一種殺菌消毒前沿技術,一方面其內部巨大的電場作用,對細菌細胞膜構成嚴重擊穿和破壞;另一方面打開氣體分子鍵,生成一些單原子分子和負氧離子、OH離子和自由氧原子等自由基,具有活化和強氧化能力,激發態粒子又能輻射紫外線。
  • 叢林法則不是人類共存之道(刷新見解)
    本著對人類和平的珍視,我們說不但不能用叢林法則掩蓋日本的侵略罪行,相反,日本的侵略罪行恰恰證明叢林法則越來越不適用於當今的人類社會。正如習近平同志在《俄羅斯報》發表題為《銘記歷史,開創未來》的署名文章指出的那樣:「第二次世界大戰的慘痛教訓告訴人們,弱肉強食、叢林法則不是人類共存之道。窮兵黷武、強權獨霸不是人類和平之策。贏者通吃、零和博弈不是人類發展之路。
  • 怪獸人類共存!《怪獸訓練營》曝首款預告及海報
    怪獸人類共存! 美女與野獸搞笑組隊 潛力無限挑戰不可能影片故事設定在一個人類與怪獸和平共存的世界。怪獸摔跤大賽在呼聲中迎來決勝時刻,關鍵角色紛紛登場。萬眾矚目的莫過於天才冠軍選手毀滅之觸。這隻肌肉發達、閃爍藍色光斑的巨型章魚天賦異稟、高調十足,不僅玩起自拍還和粉絲親密互動。
  • 西媒分析:如何與病毒共存並將其拒之門外
    參考消息網8月20日報據西班牙《世界報》8月19日報導,如何在與病毒共存的同時將其拒之門外?這是一個就連專家也很難回答的問題。有關新冠病毒的確定性少之又少,其中之一就是,它至少要和我們共存相當長一段時間。專家認為,即使研製出真正有效的疫苗,並提供給大多數人,這種病毒依然可能在人群之間傳播數年時間。
  • 張文宏:人類要學習如何與微生物共存
    敏銳的觀察家:從不明病因聯想到病毒跨種傳播「只要人類生活在微生物世界裡,就存在危險,人類要學習如何與微生物共存
  • 從ZYNQ晶片架構談談其為何如此誘人|fpga|處理器|控制器|arm_網易...
  • 這家中國企業超越美國高通,成為全球最大手機Soc晶片供應商
    根據市場調研機構counterpoint公布的2020年第三季度全球智慧型手機soc晶片市場統計報告,中國臺灣的soc晶片企業聯發科以31%的市場份額,超越美國高通成為全球最大手機Soc晶片供應商,而高通位居其後,以29%的市場份額排列第二,華為海思以12%位居第三。
  • 離子共存相關題型分析
    在教師招聘考試中,離子共存相關知識是考試中的常考知識點,常考題型為選擇題,結合題幹來判斷溶液中的離子是否大量共存,考試過程中主要存在的問題包括:(1)溶液的顏色;(2)溶液酸鹼性的判斷;(3)溶液中的離子會發生哪些反應不能共存。下面就針對例題談一下這類題目的解題思路。【例一】室溫下,下列各組離子在指定溶液中能大量共存的是( )。
  • Si、SiC和GaN這三種材料共存,到底該如何選擇
    Si、SiC和GaN這三種材料共存,到底該如何選擇 關麗 發表於 2020-04-30 14:35:31 碳化矽(SiC)是最成熟的WBG寬帶隙半導體材料, 它已經廣泛用於製造開關器件
  • 離子共存問題大解析
    在離子反應這部分內容中,我們重點要掌握以下內容:一是判斷離子方程式的正誤,二是離子的性質和檢驗,三是離子共存問題。今天我們就離子共存的問題做一個總結。多種離子在同一溶液中能否共存,我們可以從以下幾方面入手:1.看顏色如果題幹給出的是無色溶液,那麼像銅離子(藍色)、鐵離子(棕黃色)、亞鐵離子(淺綠色)等有色的離子就不能存在。2.看酸鹼性在強酸性溶液中,氫氧根以及弱酸根離子(如碳酸根離子、醋酸根離子、亞硫酸根離子等)就不能大量存在。
  • 哈登談三巨頭如何共存:做出必要的犧牲,我們都願意分享球
    在談及籃網三巨頭的建立,該如何結合彼此時,哈登表示:「培養化學反應,做出必要的犧牲。因為我們都是很優秀、很無私,願意去傳球、分享球的球員。至於比賽關鍵時刻,誰來掌控球權,這些都要取決於比賽,取決於比賽的進展情況。比賽會決定誰來掌控球權,去進攻。並且我們都是無私的,願意去分享球,我們會選擇正確的打球方式,這才是最重要的。」