《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 如何通過創(chuàng)建自己的外設(shè)來提高Zynq SoC的處理速度

如何通過創(chuàng)建自己的外設(shè)來提高Zynq SoC的處理速度

2013-09-22
關(guān)鍵詞: SoPC Zynq SOC

Zynq SoC架構(gòu)的主要優(yōu)勢之一就是能夠通過在器件的可編程邏輯內(nèi)構(gòu)建外設(shè)來加快處理速度。

這是Adam Taylor 計劃編寫的Zynq-7000 All Programmable SoC實際操作教程系列的第三部分。前兩部分教程分別刊登在《賽靈思中國通訊》第47期和48期。Adam 經(jīng)常為《賽靈思中國通訊》撰稿,同時他還為All Programmable 星球社區(qū)撰寫博客 ( www.programmableplanet.com )。

賽靈思 Zynq™- 7000 All Programmable SoC真正的重要優(yōu)勢之一就是能夠通過在可編程邏輯(PL)側(cè)構(gòu)建外設(shè)來提高器件處理系統(tǒng)(PS)側(cè)的性能。最初您可能會認為這將是一項比較復(fù)雜的工作,但是,創(chuàng)建自己的外設(shè)其實很簡單。

如果您試圖提高PS的性能或者使用PS來控制PL側(cè)的設(shè)計行為,那么在PL內(nèi)添加外設(shè)會起到很大的幫助。例如,PS可能會使用一系列存儲器映射寄存器來控制PL內(nèi)的設(shè)計運行或選項。

我們選擇一種簡單模塊作為設(shè)計實例,該模塊用于打開和關(guān)閉ZedBoard上的存儲器映射LED。我們將使用賽靈思PlanAhead™、XPS和軟件開發(fā)套件(SDK)工具分三步來創(chuàng)建該模塊。

1. 在嵌入式開發(fā)套件(EDK)環(huán)境中創(chuàng)建模塊。

2. 為模塊編寫VHDL程序并構(gòu)建系統(tǒng)。

3. 編寫使用最新定制模塊的軟件。

在EDK中創(chuàng)建模塊

要創(chuàng)建自己的外設(shè),首先需要從包含Zynq SoC設(shè)計的PlanAhead項目中打開Xilinx Platform Studio (XPS) ,并選擇菜單選項中的“hardware->create or import peripheral” 。

對我們的實例模塊而言,ZedBoard上的7個LED應(yīng)展示出walking display的效果,除了最重要的那個LED必須在軟件應(yīng)用控制下點亮以外,其他都可以依次相繼點亮。盡管這并不是最棒的定制模塊應(yīng)用,但對于流程演示 而言是一種非常有用且簡單的實例。一旦掌握了這個流程,您將掌握實現(xiàn)更復(fù)雜模塊所需的全部知識。

創(chuàng)建外設(shè)時只需相繼打開10個簡單窗口并選擇所需的選項。

前兩個截屏(如圖1所示)詢問是否需要創(chuàng)建外設(shè)或?qū)氍F(xiàn)有的外設(shè),如果是,需要將其關(guān)聯(lián)到哪個項目。下一步,您可在第三個截屏中對模塊進行命名并高效地定義版本和修訂版本。(注意:可利用外設(shè)流程底部的選項通過回讀*.cip文件來重新定制已創(chuàng)建的模塊。)

選定模塊名稱后,接下來要選擇所需AXI總線類型,如圖2所示。我們的實例設(shè)計需要的是一種簡單的存儲器映射控制寄存器型接口,因此我們選擇了最上面的AXI4-Lite選項。(如需了解有關(guān)不同AXI總線類型的更多信息,敬請訪問: http://china.xilinx.com/support/docu- mentation/white_papers/wp379_AXI 4_Plug_and_Play_IP.pdf )。在這個步驟中將創(chuàng)建眾多簡單寄存器。我們可利用處理系統(tǒng)通過AXI總線對寄存器進行讀/寫操作。

這些寄存器位于Zynq SoC上的可編程邏輯架構(gòu)中,因此也能通過用于創(chuàng)建外設(shè)功能的用戶邏輯應(yīng)用來訪問。

接下來的六個截屏為您提供相應(yīng)選項,以便對AXI的主配置或從配置以及您將用于控制用戶邏輯和支持文件的寄存器的數(shù)量進行定制。本例中我們僅使用一 個寄存器,并將其用作AXI-Lite的從配置。簡化系統(tǒng)開發(fā)的最重要方法是選擇外設(shè)實現(xiàn)支持標簽上的“generate template driver files”選項。這樣就能提供一系列有助于所創(chuàng)外設(shè)內(nèi)部通信的源文件和頭文件。

最后一步,XPS會生成一系列有助于創(chuàng)建和使用新外設(shè)的文件:

• 以您的外設(shè)命名的頂層VHDL文件

• 可在其中創(chuàng)建用戶邏輯的VHDL文件

• 微處理器外設(shè)描述文件:用于定義連接模塊的接口,以便將模塊與XPS配合使用

• CIP文件:必要時可對外設(shè)進行重新定制

• 針對SDK的驅(qū)動程序源文件

• 針對SDK的實例源文件

• 微處理器驅(qū)動程序定義文件:詳細描述外設(shè)所需的驅(qū)動程序

這些文件將在PlanAhead源目錄(即本例中的zed_blog.srcs\ sources_1\edk\proc_subsystem)下創(chuàng)建。

源目錄的子目錄是包含XPS和PlanAhead所需文件(在與外設(shè)同名的目錄下)的Pcores目錄以及包含SDK所需文件的驅(qū)動程序目錄。

創(chuàng)建RTL

在Pcores目錄中您可以看到兩個文件,其中一個與您所創(chuàng)建的組件同名(本例中為led_if.vhd),另一個文件名為
user_logic.vhd。您可在user_logic.vhd這個文件中進行設(shè)計創(chuàng)建。同時您將會發(fā)現(xiàn)向?qū)б呀?jīng)幫您生成了用于通過AXI總線在此文 件中進行通信所需的寄存器和接口。此外,您可在led_if.vhd文件進行用戶邏輯模塊實例化。因此,對user_logic.vhd實體所做的任何修 改都必須傳送到端口映射中。如果要求使用外部端口(例如我們的設(shè)計實例就需要外部端口來點亮LED),還必須傳送對led_if.vhd實體所做的修改。

邏輯設(shè)計創(chuàng)建完成后,您可能希望對邏輯進行仿真以確保達到預(yù)期效果。在Pcores/devl/bfmsim目錄下為您提供了總線功能模型。

在XPS中使用您的模塊
在創(chuàng)建了VHDL文件或其它文件并確保它們能正常運行后,您將期望在XPS項目中能夠應(yīng)用此模塊。要正確地做到這點,需要在VHDL設(shè)計過程中確保準備添加的端口使用最新的微處理器外設(shè)描述(MPD)文件。

通過在XPS中編輯MPD文件可以順利完成這一任務(wù)。可在Project Local Pcores->USER->core name目錄下找到您所創(chuàng)建的外設(shè)。右擊文件名就可以查看MPD文件。

您需要添加設(shè)計中包含的非AXI接口,以便查看并在XPS中正確處理I/O。可通過以下鏈接查看MPD文件的語法: http://china.xilinx.com/support/docu-mentation/sw_manuals/xilinx14_4/psf... ,如圖3所示,語法非常簡單明了。圖中突出顯示的行(即中間列表底部第59行)就是用于將LED輸出端口連接到模塊的語句。

對MPD文件進行更新后必須點擊“rescan user IP repositories”,以確保將修改內(nèi)容載入XPS。這時就可將器件導(dǎo)入系統(tǒng),就像來自IP庫中的任何其他外設(shè)一樣。一旦將其放入您希望的地址空間 內(nèi)(注意:最小4K)并按要求將輸出連接到外部端口,就可在必要時運行設(shè)計規(guī)則檢查程序。如果沒有任何錯誤,就可關(guān)閉XPS并返回PlanAhead。

返回PlanAhead環(huán)境后,需要重新生成頂層HDL。為此,右擊您所創(chuàng)建的處理器子系統(tǒng)并選擇“create top HDL”選項(參考《Xcell雜志》第82期,了解有關(guān)創(chuàng)建Zynq SoC PlanAhead項目方面的內(nèi)容)。如果已對設(shè)計的I/O管腳進行更改,那么在實現(xiàn)之前的最后一步就是修改PlanAhead中的UCF文件。如果您對 管腳滿意,就可以執(zhí)行實現(xiàn)操作,并生成隨時可在SDK中使用的比特流。

在SDK中使用外設(shè)
到這一步時,我們已經(jīng)做好了在軟件環(huán)境中使用外設(shè)的準備。與創(chuàng)建和實現(xiàn)任務(wù)一樣,該流程也非常簡單直觀。第一步是使用PlanAhead中的 “export hardware for SDK”選項將硬件導(dǎo)出至軟件開發(fā)套件。接著打開SDK,并檢查MSS文件以確定您所創(chuàng)建的外設(shè)已經(jīng)存在。所列外設(shè)名稱應(yīng)與旁邊的驅(qū)動程序名稱相同;

在第一個實例中,驅(qū)動程序被命名為“通用”。在SDK中使用外設(shè)時,通用驅(qū)動程序便不是問題。如果您想使用它,就需要涵蓋頭文件#include "xil_io.h."。這樣就可以調(diào)用函數(shù)Xil_in32(地址)或Xil_out32(地址),以便對外設(shè)進行讀寫操作。

采用這種方法時,需要了解外設(shè)的基地址(在xparameters.h中給出)以及寄存器間的偏移地址。在這種情況下,由于本設(shè)計實例采用32位尋 址,因此寄存器的間隔為0x04。但是,如果在使用XPS創(chuàng)建外設(shè)時選擇了“驅(qū)動程序-創(chuàng)建”選項,那么將為您的外設(shè)專門構(gòu)建單獨的驅(qū)動程序。且該驅(qū)動程 序也將位于PlanAhead源目錄的驅(qū)動程序子目錄中。

可用這類專門構(gòu)建的驅(qū)動程序來代替設(shè)計中的通用驅(qū)動程序,但首先您必須設(shè)置軟件庫指向該目錄,以便查看新生成的驅(qū)動程序。可根據(jù)“Xilinx Tools ->Repositories menu”菜單定義該軟件庫(圖4)。

一旦設(shè)定的軟件庫指向正確的目錄后,就可以對軟件庫進行重新掃描并關(guān)閉對話框。緊接著,是選擇新驅(qū)動程序以更新板支持包。右擊Project Explorer下的BSP圖標,打開板支持包設(shè)置。點擊驅(qū)動程序標簽,您將看到包含所有外設(shè)及其驅(qū)動程序的列表。從適用于該器件的驅(qū)動程序列表中選擇相 應(yīng)的驅(qū)動程序,就可以修改選擇的外設(shè)驅(qū)動程序(圖5)。

通過名稱為外設(shè)選擇驅(qū)動程序并點擊OK。如果您選擇了自動編譯選項,那么將會重新編譯項目。一旦代碼被重新構(gòu)建,那么就要做好利用所提供的驅(qū)動程序與外設(shè)進行通信的準備。

您需要在源代碼中加入驅(qū)動程序頭文件#include "led_if.h",并采用來自xpara-meters.h的外設(shè)基地址使接口能夠明確外設(shè)在存儲空間中的位置。然后,調(diào)用“include” 文件中驅(qū)動程序所提供的命令就比較簡單了。在我們的設(shè)計中,調(diào)用示例如下
LED_IF_mWriteSlaveReg0(LED_
ADDR, LED_IF_SLV_REG0_OFF-
SET, 0x01);

寫入此命令后,就可以在硬件環(huán)境中對軟件進行測試并確認其是否按預(yù)期正常運行。

正如您所看到的,在Zynq SoC 設(shè)計中創(chuàng)建自己的外設(shè)并非您最初想象的那么復(fù)雜。外設(shè)的創(chuàng)建能為您的Zynq SoCPS乃至最終整個解決方案帶來諸多優(yōu)勢。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜一区不卡| 欧美日韩国产精品专区| 99视频一区二区三区| 久久精品日韩一区二区三区| 亚洲男人影院| 亚洲永久免费av| 夜夜嗨av一区二区三区网站四季av | 麻豆91精品| 久久久久久久久久久成人| 欧美一区二区三区四区视频| 亚洲免费在线视频一区 二区| 一二三区精品福利视频| 亚洲精品综合| 亚洲最新合集| 亚洲一区二区三区久久| 亚洲男人的天堂在线aⅴ视频| 国产偷自视频区视频一区二区| 国产精品久久久久久久久| 国产精品v欧美精品v日韩精品| 欧美视频一区二区在线观看| 欧美日韩在线观看一区二区三区 | 性欧美videos另类喷潮| 欧美一区二区三区免费在线看| 午夜在线视频观看日韩17c| 午夜在线电影亚洲一区| 久久精品国产v日韩v亚洲 | 亚洲国产日韩在线一区模特| 亚洲人精品午夜| 99视频在线精品国自产拍免费观看| 一区二区国产精品| 亚洲午夜影视影院在线观看| 亚洲欧美视频在线观看| 久久丁香综合五月国产三级网站| 亚洲国产精选| 日韩午夜高潮| 欧美亚洲综合另类| 久久亚洲精选| 欧美精品亚洲精品| 国产精品美女诱惑| 国内偷自视频区视频综合| 亚洲国产精品欧美一二99| 日韩一级在线| 亚洲欧美视频一区二区三区| 亚洲高清精品中出| 一区二区高清| 久久gogo国模裸体人体| 欧美成人高清| 国产精品国产成人国产三级| 国产在线观看一区| 亚洲美女中出| 香蕉国产精品偷在线观看不卡| 亚洲激情自拍| 亚洲欧美成人网| 久久综合综合久久综合| 欧美日韩三级视频| 国产亚洲综合精品| 亚洲日本中文| 香蕉视频成人在线观看 | 亚洲私人黄色宅男| 久久久久久久久伊人| 欧美日本在线一区| 国产亚洲成av人在线观看导航 | 亚洲午夜国产成人av电影男同| 欧美一级黄色录像| 一本色道综合亚洲| 久久久九九九九| 欧美涩涩网站| 在线观看不卡| 亚洲综合色网站| 亚洲美女视频网| 久久精品视频免费播放| 欧美三级不卡| 亚洲国产精品99久久久久久久久| 亚洲免费在线| 一区二区三区高清不卡| 久久亚洲春色中文字幕| 国产精品久久久久久久久久久久久久| 狠狠综合久久| 亚洲欧美日韩精品久久久| 亚洲裸体在线观看| 久久久久久伊人| 国产精品久久久久久久久果冻传媒| 在线观看91精品国产麻豆| 亚洲欧美激情视频| 一区二区三区四区蜜桃| 久久综合图片| 国产欧美一区二区精品性| 99精品欧美一区二区三区综合在线 | 亚洲精品婷婷| 久久久7777| 国产精品美女久久久免费| 亚洲精品系列| 亚洲国产精品久久久久婷婷884| 先锋影音久久久| 欧美午夜精品久久久| 亚洲国产中文字幕在线观看| 亚洲第一伊人| 久久久国产精品一区二区中文 | 国产精品日韩欧美一区二区三区| 最新亚洲激情| 亚洲国产日韩美| 久久久久久一区| 国产视频久久久久| 亚洲欧美日韩天堂| 午夜精品理论片| 国产精品成人播放| 日韩午夜激情电影| 99视频精品免费观看| 欧美aa在线视频| 亚洲成人在线网站| 亚洲国产精品成人久久综合一区 | 国产精品免费视频观看| 99精品热视频只有精品10| 夜夜嗨av一区二区三区网站四季av| 美女在线一区二区| 激情欧美日韩| 亚洲激情在线视频| 嫩草国产精品入口| 在线观看91精品国产入口| 亚洲国产精品久久人人爱蜜臀| 久久综合久久综合这里只有精品| 激情五月***国产精品| 亚洲国产精彩中文乱码av在线播放| 久久夜色精品亚洲噜噜国产mv| 国产一区二区日韩精品欧美精品| 亚洲欧美日韩爽爽影院| 欧美一区=区| 国产欧美在线观看| 欧美一区二区在线观看| 久久精品主播| 极品日韩久久| 91久久久久久久久| 欧美理论在线播放| 99在线精品观看| 亚洲欧美日韩国产综合| 国产精品亚洲综合一区在线观看| 亚洲一区二区三区视频| 欧美一级理论片| 国产亚洲毛片| 亚洲国产精品va在看黑人| 欧美激情va永久在线播放| 99av国产精品欲麻豆| 亚洲在线视频免费观看| 国产精品免费视频观看| 欧美在线视频观看| 免费观看在线综合| 亚洲免费观看高清在线观看| 亚洲婷婷免费| 国产精品自拍三区| 亚洲高清一二三区| 欧美日韩高清在线| 亚洲一区二区3| 久久免费的精品国产v∧| 亚洲第一精品在线| 在线视频欧美精品| 国产欧美日韩综合一区在线播放 | 一区二区三区色| 国产精品日韩一区二区| 欧美一级理论片| 欧美不卡视频| 亚洲天堂网在线观看| 久久激五月天综合精品| 1024国产精品| 亚洲欧美国产高清va在线播| 国产一区二区| 亚洲乱码一区二区| 国产精品系列在线播放| 亚洲国产精品热久久| 欧美日韩综合在线| 久久精品一区二区三区四区| 欧美日本免费| 欧美亚洲综合另类| 欧美另类综合| 欧美伊人久久久久久久久影院| 欧美激情精品久久久久久蜜臀 | 久久精品日韩| 国产精品久久久久久久久久三级| 久久精品国产一区二区三| 欧美日韩国产一区| 久久精品91| 国产精品久久久久天堂| 91久久在线视频| 国产精品视频一区二区三区 | 毛片av中文字幕一区二区| 中文一区字幕| 欧美sm视频| 欧美一区二区黄| 欧美视频不卡| 亚洲人体影院| 国产三级精品在线不卡| 正在播放欧美视频| 国内一区二区在线视频观看| 亚洲午夜激情免费视频| 亚洲高清三级视频| 久久激情视频久久| 中国av一区| 欧美精品一区二区三区在线播放| 欧美一区二区精品久久911| 国产精品国产三级国产普通话蜜臀 | 国产欧美一区二区三区沐欲|