當前位置:首頁 > 技術(shù)學院 > 技術(shù)前線
[導讀]zynq 和fpga區(qū)別_【干貨分享】ZYNQ常用外設(shè)設(shè)計

常用外設(shè)設(shè)計

使用UART與ZYBO進行通信

ZYNQ學習過程中一個重要環(huán)節(jié)是進行調(diào)試,當然在SDK中進行調(diào)試時,設(shè)置斷點進行單步調(diào)試非常高效。但是ZYNQ中畢竟涉及到FPGA的硬件部分,于是如果可以通過UART與ZYNQ器件進行雙向的通信會使得調(diào)試非常方便。

Step1: 確認ZYBO板上硬件連接。

在ZYBO的用戶手冊中有以下描述,如圖 21所示。


49ba7a367168faa2a334b906e304926d.png

圖 21

其ZYBO開發(fā)板的原理圖也可知MIO Bank的電壓為1.8V。

于是可以得到以下幾點:

1. 硬件上連接串口的IO為MIO48和MIO49。

2. IO的電壓為1.8V。

3. 默認使用的參數(shù)為:115200波特率以及其他對應參數(shù),見圖 21。

Step2: 在Vivado的Block Design中配置ZYNQ7 Processing System時,需要配置UART外設(shè),如圖 22所示。


c7fe8d26adec77cde81d635cef18ee5a.png

圖 22

Step3: 按照“Vivado中進行ZYNQ硬件部分設(shè)計”中介紹的,直到在SDK中編寫C代碼步驟。需要使用UART進行通行,分為通過UART向外發(fā)送數(shù)據(jù)和通過UART接收數(shù)據(jù)。

Step4: PC上安裝串口調(diào)試助手,硬件上連接串口線到PC。向ZYNQ中下載硬件配置后,在Windows Device Manager查看UART所使用的端口,如圖 23所示。


c1c89934d7e22d3e404fd57a22faa127.png

圖 23

并將串口調(diào)試助手設(shè)置成相應的配置,如圖 24所示。


3d467726800c90a92ab71e54448d25ce.png

圖 24

Step5: 至此就可以在C代碼中發(fā)送或者讀取數(shù)據(jù)了,下面給出一段示例代碼。


eda9b11c003c12666edfbdf54c3c86af.png

圖 25

程序首先運行,輸出” Please enter any number from 0~9”。此后會停在等待輸入處,直到通過串口助手鍵入了數(shù)字之后,才會跳到下一行代碼,并將鍵入的數(shù)字輸出在串口調(diào)試助手中。


dab61d3f9f9bf2a2104bab2ed31e1dd8.png

圖 26

至此可以通過串口輸出各種信息(因為可以輸出字符串),同時也可以通過串口輸入進行菜單選擇,因為雖然不能接收字符串,但可以鍵入10個數(shù)字以及26個英文字母,這也應該足夠了。

Step6: 除了使用外部的串口調(diào)試助手外,SDK內(nèi)部也提供了Terminal工具。通過如下圖所示的方式顯示Terminal窗口且進行配置,同樣可以當作串口調(diào)試助手使用,如圖 28所示。


7ed7784762cabd7687b96dad4ea7fece.png

圖 27


9345dbc321f9ef927a1a2298d77ba31f.png

圖 28

將用戶邏輯設(shè)計封裝成IP

參考工程見“ZYBO_demo_packageIP.xpr”。

ZYNQ中PS與PL的聯(lián)系主要有兩個,分別是GP端口和HP端口。其中HP端口可以理解為PS和PL可以訪問同一片存儲空間,于是可以以DDR空間為中介,進行大量的數(shù)據(jù)通信。而平時在純FPGA設(shè)計中的那些邏輯模塊與PS的通信方式就是依靠GP端口完成的。

純RTL邏輯模塊的控制或者輸出都是通過模塊的輸入輸出端口實現(xiàn)的。在ZYNQ的架構(gòu)下,就是將這些輸入輸出端口改為寄存器,原來的輸入端口改為只寫的控制寄存器;原來的輸出端口改為只讀的狀態(tài)寄存器。于是每個邏輯模塊都有一個標準的AXI-Lite Slave接口,用于與PS相連接,使得PS可以控制讀寫邏輯模塊內(nèi)的寄存器。于是每一個邏輯模塊就相當于PS的一個外設(shè),與PS自帶的外設(shè),如UART、I2C控制器控制器來是一樣的。這就是ZYNQ的硬件可擴展性,通俗的說就是當ARM需要各種要求的外設(shè)時,都可以通過在PL端進行邏輯設(shè)計實現(xiàn)。

下面就介紹如何一步一步的完成一個PL端的邏輯設(shè)計,并將其封裝成為IP,并在ZYNQ的Block Design中加入到硬件設(shè)計中,并在SDK中通過代碼來控制該外設(shè)。

本例中所涉及的邏輯模塊功能為:IP的外部接口為4盞LED,內(nèi)部寄存器有3個,分別是工作模式寄存器(MODE),使能寄存器(ENABLE)和狀態(tài)寄存器(STATUS),如圖 29所示。


0c6171bb1e76c411c8dbb0340b9bfd7f.png

圖 29

Step1: 在Vivado GUI中,選擇Tool?Create and Package New IP…。一般情況下,選擇“Create a new AXI4 Peripheral”,這種IP就是之前提到的,由PS讀寫寄存器進而控制的IP,在后面的菜單中選擇該IP的Interface接口以及內(nèi)部需要多少寄存器,如圖 30所示。


3c08eab33563260c8bb76e36343cbd78.png

圖 30

一般來說,IP首先需要一個AXI-Lite的Slave接口,用于與PS連接。除此以外還可以增加其他AXI接口,例如增加一個AXI4的Master接口,用于邏輯設(shè)計中訪問PS端的存儲器;又比如可以增加一個AXI-Lite的Master,用于讀寫其他邏輯模塊的寄存器等等。在這里選擇好接口后,工具在生成IP的時候會自動生成相應的AXI接口代碼,用戶可以直接使用或者稍作修改即可。

另外就是選擇寄存器的個數(shù),因為稍后生成的代碼中會自動完成指定數(shù)量寄存器的讀寫控制代碼,于是如果設(shè)置少了,后面需要手工添加代碼,會比較麻煩,不如配置時將寄存器個數(shù)設(shè)置的多一些。

Step2: 完成配置后工具自動生成代碼,在生成的代碼中進行修改。


751a05be6d0d81fbb7326e8c596f89ba.png

圖 31

在自動生成的代碼中,結(jié)構(gòu)如下:


7da6c6bee78d5f5ba92a38e610bf6fbe.png

圖 32

需要注意的是自動生成的代碼只是簡單完成了指定數(shù)量寄存器的讀寫時序,至于每個寄存器的邏輯功能和含義是沒有的,需要用戶將這些寄存器引到S00_AXI模塊的上層,與用戶設(shè)計的邏輯進行通信。同時自動生成的代碼中所有的寄存器都是可讀可寫的,如果需要設(shè)置只讀或者只寫的寄存器,需要在S00_AXI模塊中自行修改代碼。

Step3: 為邏輯設(shè)計增加外部接口以及全局參數(shù)。

該例程中需要設(shè)置4個外部輸出管腳,控制外部LED。并且設(shè)置一個全局參數(shù)為4盞LED的初始狀態(tài)。首先在代碼中指定位置進行修改,如圖 33所示。


d93b178006a9ff6e2b7f101025906acc.png

圖 33

保存修改后,會在GUI界面中看到“Customization Parameter”、“Ports and Interfaces”以及“Customization GUI”的標識都變了,代表檢測到了代碼中的變化。


791a200e8858fb75be51ed7d55dcb379.png

圖 34

點擊GUI中如下所示的指令后,工具自動完成更新。


8a0a9b9438a69c09fb77954817937839.png

圖 35

Step4: 在GUI如圖 34所示的界面中修改參數(shù)設(shè)置,對IP進行配置。

Step5: 完成IP的封裝,如圖 36所示,在Review and Package中點擊Re-Package IP。


2623c91a321d3d938eb4700dbe09e599.png

圖 36

此時會關(guān)閉IP封裝界面,回到ZYNQ Block Design界面。在IP Catalog中會出現(xiàn)剛才封裝完成的IP。


3c56c070834ca6843b72abc738bead3e.png

圖 37

此后的操作就和“Vivado中進行ZYNQ硬件部分設(shè)計”中介紹的一樣,將該IP當成與其他IP一樣的外設(shè),進行Block Design設(shè)計,同樣需要對于外接接口添加約束文件,之后生成Bit文件。

Step6: 在Block Design中需要將封裝的邏輯模塊IP需要引到外部的IO進行設(shè)置。

右擊需要引出的端口,點擊“Make External”。之后重新生成HDL Wrapper即可。


87d689a6146fb1655ca1827619f97513.png

圖 38

Step7: 在Block Design中的Address Editor中給IP分配總線地址。


aa4b9bad5f2b8d6d5b281ef05c45199b.png

圖 39

Step8: 封裝好的IP進行底層修改。

如果需要對已經(jīng)設(shè)計好的IP進行底層修改,就在IP Catalog中顯示的該IP處右擊,選擇“Customize IP”。需要注意的是,工具會默認彈出一個路徑,作為修改IP的工作路徑,但是該路徑是一個臨時路徑,與之前存放IP的路徑不同。


b7ab1b4844b7c6c52b2543fdccd73cdb.png

圖 40

IP底層修改完成之后,重新Re-Package IP后,回到Block Design中工具自動檢測到IP有更新,只要通過工具的提示進行IP的更新即可。


14455676da17cae1e34d5e36ab504196.png

圖 41

Step9: 封裝好的IP的BSP以及SDK程序的編寫。

首先封裝的IP有自己在AXI總線上的地址,于是IP內(nèi)部的所有寄存器的地址就是IP的Base地址加上各個寄存器的偏移量。于是在SDK代碼中就可以通過唯一的地址訪問到這些寄存器。由于內(nèi)部的寄存器都是用戶自己設(shè)計的,所以不需要BSP封裝太多的函數(shù),BSP也無法知道用戶設(shè)計的邏輯,從而也無法自動封裝API。用戶直接通過底層調(diào)用Xil_Out32()和Xil_In32()完成對于封裝邏輯模塊IP的控制。如果需要,用戶可以自行封裝更上層的API函數(shù)。

使用Zynq processor仿真Customized IP

由于ZYNQ中除了常用的FPGA邏輯部分外還有ARM內(nèi)核部分,所以在進行類似于FPGA設(shè)計仿真時會遇到問題,就是如果仿真ARM內(nèi)核部分。Xilinx提供的一個方案是Zynq BFM(Bus Functional Model),其介紹如下。


88f5e8db20157a7ef27549211fa4eb40.png

圖 42

但是該Model是需要額外購買的,該章節(jié)介紹一種無需購買Zynq BFM就可以仿真Customized IP的方法?;舅悸肥菍τ赑L端的Customized IP而言,控制端是ZYNQ中的ARM內(nèi)核還是普通FPGA中的MicroBlaze都是一樣的,所以可以將Customized IP例化到以MicroBlaze為處理器的Block Design中,由于MicroBlaze的仿真無需額外的License,所以可以將SDK的程序?qū)氲組icroBlaze的內(nèi)核,進而仿真Customized IP。

Step1: 按照“將用戶邏輯設(shè)計封裝成IP”中介紹的,完成Customized IP的設(shè)計和封裝;在Block Design中加入MicroBlaze和Customized IP,完成Block Design設(shè)計;完成硬件平臺的綜合、實現(xiàn)、生成Bit文件,并導入SDK;在SDK中完成軟件設(shè)計。綜上就是完成“將用戶邏輯設(shè)計封裝成IP”中的Step9,區(qū)別只是用MicroBlaze替代了ZYNQ Processing System。


92fa6eb9d3acbda8c5c0926933ff5ebb.png

圖 43

Step2:對SDK中設(shè)計的軟件程序完成編譯,工具自動生成elf文件。默認的存放地址為SDK project下Src文件夾中。例如:C:\***\A7_microblaze\A7_microblaze.sdk\microblaze_customized_ip\Debug


62fd9e8fa42c9242a850fef163fda202.png

圖 44

Step3:回到Vivado開發(fā)平臺,將elf文件導入至Simulation Source中。


49d097e39c88b18569664ae96fbda86d.png

圖 45

Step4:將導入的elf文件鏈接到對應的處理器,使其作為該處理器的啟動程序。注意,elf文件只允許associate至Microblaze,工具不支持鏈接到ZYNQ。


466e37ee9ec3a2bf16dbf8871fb2681b.png

圖 46

Step5:正常啟動仿真。

可以看到MicroBlaze核發(fā)出的AXI通信協(xié)議,如圖 47所示。


b89bad093c69957ce88972db0c72a466.png

圖 47

于是對應的IP的輸出可以看到如“將用戶邏輯設(shè)計封裝成IP”中模式2設(shè)計的一樣,輸出的4路LED不斷反轉(zhuǎn)。


e141a0fdab52c6fec53b5c3649045089.png
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉