RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

xilinx ZYNQ7000系列基本開發(fā)流程之PS端

FPGA技術(shù)江湖 ? 來源:叁芯智能FPGA課程 ? 2023-08-11 09:36 ? 次閱讀

這篇文章記錄ZYNQ7020的PS端的基本開發(fā)流程,關(guān)于PL端的開發(fā)流程,參考之前文章,這里放個超鏈接。

本篇文章,以配置一個PS端的UART外設(shè),并打印一句話《hello ZYNQ7020,Author:liushuhe 2020.11.26》來演示

ZYNQ7020的基本開發(fā)流程,本篇文章需要一點點的C語言知識,不會也不影響實驗的,跟著步驟做就行了。

一、任務(wù)分工

ZYNQ芯片分為PL和PS,PS端的IO分配相對是固定的,不能任意分配,雖然PS端的ARM是硬核,但是在ZYNQ當(dāng)中也要將ARM硬核添加到工程當(dāng)中才能使用,FPGA工程師負(fù)責(zé)把Vivado工程搭建好,提供好硬件給軟件開發(fā)人員,軟件開發(fā)人員便能在這個基礎(chǔ)上開發(fā)應(yīng)用程序 ,軟件開發(fā)人員,不用關(guān)心FPGA的部分。

二、FPGA工程師搭建硬件平臺

我們這里演示搭建一個帶UART和arm A9處理器的硬件平臺

1.1、建立vivado工程

創(chuàng)建一個“ps_uart”的工程,具體過程,參考我文章開頭超鏈接文章;

1.2、點擊“Create Block Design”,創(chuàng)建一個Block設(shè)計,也就是圖形化設(shè)計

7ecfe3f8-37da-11ee-9e74-dac502259ad0.png

1.3、“Design name”可以不修改,我改成ps_uart便于識別

7ef52faa-37da-11ee-9e74-dac502259ad0.png

1.4、點擊“Add IP”快捷圖標(biāo)

7f11eb90-37da-11ee-9e74-dac502259ad0.png

1.5、搜索“zynq”,在搜索結(jié)果列表中雙擊“ZYNQ7 Processing System

7f351750-37da-11ee-9e74-dac502259ad0.png

1.6、雙擊Block圖中的“processing_system7_0”(直接雙擊藍(lán)色區(qū)域),配置相關(guān)參數(shù)

7f543072-37da-11ee-9e74-dac502259ad0.png

1.7、首先出現(xiàn)的界面是ZYNQ硬核的架構(gòu)圖,可以很清楚看到它的結(jié)構(gòu),可以參考 官方文檔,在官網(wǎng)搜索ug585 即可

7f703966-37da-11ee-9e74-dac502259ad0.png

1.8、圖中綠色部分是可配置模塊,可以點擊進(jìn)入相應(yīng)的編輯界面


1.9、也可以在左側(cè)的窗口進(jìn)入編輯 ,下面分別介紹左側(cè)選項代表的功能;

2.0、Zynq 塊設(shè)計參數(shù)配置,單擊綠色塊右下角,可以進(jìn)行參數(shù)配置

7f91fba0-37da-11ee-9e74-dac502259ad0.png

2.1、PS-PL Configuration 配置界面,主要是進(jìn)行PS與PL之間接口的配置,主要是AXI接口,這些接口可以擴(kuò)展PL端的AXI接口外設(shè)

核。

2.2、我們這篇文章是PS開發(fā)流程,關(guān)于PS-PL Configuration 配置在這里保持默認(rèn),在后面的實驗中我再補(bǔ)充
7fc97aa8-37da-11ee-9e74-dac502259ad0.png

2.3、外設(shè)配置,ZYNQ的PS端外設(shè)很多是復(fù)用的 ,同一引腳可以配置為不同的功能

zynq內(nèi)部只有2個串口,UART0、UART1、我們看UART0可以接在(10、11)/(14、15)/(18、19)/(22、23)/(26、27)

7ffacaae-37da-11ee-9e74-dac502259ad0.png

2.4、配置串口,我們的ps_uart需要一個串口來打印消息,查看ZYNQ7020開發(fā)板的原理圖

從原理圖看出,ZYNQ的PS端的串口,連接的是MIO12、MIO13端口,并且電源是3.3v

802edfce-37da-11ee-9e74-dac502259ad0.png

2.5、從I/O分配看,MIO12、MIO13是串口1,在MIO12、MIO13引腳對應(yīng)串口上單擊,會看見該模塊變?yōu)榫G色,即代表分配成功

關(guān)于BANK0、BANK1的電壓,由于創(chuàng)龍沒有給核心板的原理圖,但是給了一個WORD的描述文檔,大家也要熟悉這個方式

國內(nèi)很多廠家都是這樣,屬于技術(shù)保密

8051220a-37da-11ee-9e74-dac502259ad0.png

807d2f94-37da-11ee-9e74-dac502259ad0.png

按照上述表格分配UART1電壓和引腳

80c1d608-37da-11ee-9e74-dac502259ad0.png

2.6、配置QSPI,QSPI可以作為ZYNQ的啟動存儲設(shè)備,ZYNQ可以通過讀取QSPI中存儲的啟動文件加載ARM和FPGA

從核心板word表格和創(chuàng)龍給的例程,得知我們選擇Quad SPI Flash為Single SS 4bit IO

80f26e6c-37da-11ee-9e74-dac502259ad0.png

2.7、配置以太網(wǎng),在PS端設(shè)計有以太網(wǎng)接口

1、根據(jù)原理圖選擇Ethernet 0到MIO16-MIO27

電壓是1.8v

811ab368-37da-11ee-9e74-dac502259ad0.png

815c80d6-37da-11ee-9e74-dac502259ad0.png

2、配置PHY寄存器配置接口,選擇MDIO并配置到MIO52-MIO53

817835ba-37da-11ee-9e74-dac502259ad0.png

8193e346-37da-11ee-9e74-dac502259ad0.png

2.8、配置USB0到MIO28-MIO39

81aefff0-37da-11ee-9e74-dac502259ad0.png

81d6a19a-37da-11ee-9e74-dac502259ad0.png

2.9、ZYNQ還可以SD卡啟動

查看底板原理圖,選擇 SD 0,配置到 MIO40-MIO45,選擇Card Detection MIO0,用于檢測 SD 卡的插入。

81ff9154-37da-11ee-9e74-dac502259ad0.png

822e4418-37da-11ee-9e74-dac502259ad0.png

1、配置SD0

82536ed2-37da-11ee-9e74-dac502259ad0.png

2、選擇Card Detection MIO0,用于檢測SD卡的插入

827d7772-37da-11ee-9e74-dac502259ad0.png

3.0、控制剩余未分配的MIO,用作GPIO ,打開GPIO MIO,PS便可以配置

1、雙擊GPIO MIO當(dāng)出現(xiàn)打鉤的提示時,軟件會自動把我們未使用到的IO分配為GPIO

82a035f0-37da-11ee-9e74-dac502259ad0.png

2、到這里引腳分配全部完成,如果以后做實驗需要配置其他外設(shè),可以參考這個文章,作相應(yīng)的修改即可

3.1、MIO配置

修改 Enet0的電平標(biāo)準(zhǔn)為 HSTL 1.8V, Speed 為 fast,這些參數(shù)非常重要,如果不修改,網(wǎng)絡(luò)可能不通。其他部分保持默認(rèn)。

82c655c8-37da-11ee-9e74-dac502259ad0.png

3.2、時鐘配置

在“Clock Configuration”選項卡中我們可以配置PS時鐘輸入時鐘頻率,這里默認(rèn)是33.333333,和板子上一致,不用修改,

CPU 頻率改為 767Mhz,同時 PS 還可以給 PL 端提供 4 路時鐘,頻率可以配置,這里不需要,所以保持默認(rèn)即可。

還有 PS 端外設(shè)的時鐘等也可以進(jìn)行配置,這里保持默認(rèn)。
82f274f0-37da-11ee-9e74-dac502259ad0.png

3.3、DDR3配置

在“DDR Configuration”選項卡中可以配置PS端ddr的參數(shù)

根據(jù)創(chuàng)龍的例程,內(nèi)存芯片我們選擇《MT41K256M16 RE-125》,Effective DRAM Bus Width 選擇《32bit》

其他部分保持默認(rèn),點擊OK
8318b0ca-37da-11ee-9e74-dac502259ad0.png

3.4、到這里ZYNQ核的配置完成,我們配置參數(shù)及導(dǎo)出硬件信息

1、點擊“Run Block Automation”,vivado軟件會自動完成一些導(dǎo)出端口的工作

833925f8-37da-11ee-9e74-dac502259ad0.png

2、按照默認(rèn)點擊“OK”

835164ec-37da-11ee-9e74-dac502259ad0.png

3、連接FCLK_CLK0到M_AXI_GP0_ACLK,按Ctrl+S保存設(shè)計

8388dfd0-37da-11ee-9e74-dac502259ad0.png

4、選擇Block設(shè)計,右鍵“Create HDL Wrapper...”,創(chuàng)建一個Verilog或VHDL文件,為ps_uart生成HDL頂層文件

83ade514-37da-11ee-9e74-dac502259ad0.png

5、在彈出對話框,選擇讓vivado軟件自動更新 頂層文件

83d595dc-37da-11ee-9e74-dac502259ad0.png

6、展開設(shè)計可以看到PS被當(dāng)成一個普通IP來使用 ,之前生成那個頂層文件,其實就是為了把我們的硬件配置

生成一個IP核,供我們調(diào)用

83fae814-37da-11ee-9e74-dac502259ad0.png

7、選擇block設(shè)計,右鍵“Generate Output Products”,此步驟會生成block的輸出文件,包括IP,例化模板, RTL 源文件, XDC 約束,第三方綜合源文件等等。供后續(xù)操作使用。

841d7c3a-37da-11ee-9e74-dac502259ad0.png

8、點擊“Generate”

8440b2c2-37da-11ee-9e74-dac502259ad0.png

9、PS端的引腳不需要綁定 ,因為在生成的IP文件包含了PS端引腳分配的XDC文件

在IP Sources,Block Designs->ps_uart->Synthesis中,可以看到處理器的XDC文件,綁定了PS端的IO,因此不需要再新建XDC綁定這些引腳

847f6bb6-37da-11ee-9e74-dac502259ad0.png

10、在菜單欄“File -> Export -> Export Hardware...”導(dǎo)出硬件信息,這里就包含了 PS 端的配置信息。
84d90770-37da-11ee-9e74-dac502259ad0.png

11、在彈出的對話框中點擊“OK”

85066134-37da-11ee-9e74-dac502259ad0.png

12、因為我們這個實驗僅僅是使用了PS的串口,不需要PL參與,這里就沒有使能“Include bitstream” ,關(guān)于PS-PL的聯(lián)合實驗,我會另寫一篇

13、此時會多出 xx.sdk 文件夾,并且有個 hdf 文件,這個文件就是這個文件就包含了 Vivado 硬件設(shè)計的信息,供軟件開發(fā)人員使用。
852c2d60-37da-11ee-9e74-dac502259ad0.png

14、到此為止, FPGA 工程師工作告一段落,剩下的工作交給ARM軟件開發(fā)人員。

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

二、ARM軟件編寫C語言程序,在串口打印一句話《hello ZYNQ7020,Author:liushuhe 2020.11.26》

1、點擊Vivado菜單“File -> Launch SDK”,啟動SDK
856738e2-37da-11ee-9e74-dac502259ad0.png

2、在彈出的對話框選擇OK

85992f6e-37da-11ee-9e74-dac502259ad0.png

3、啟動SDK后我們會看到一個文件夾,有一個名為"system.hdf”文件,這個文件就包含了

Vivado硬件設(shè)計的信息,可以給軟件開發(fā)使用,也可以看到 PS 端外設(shè)的寄存器列表。
85b4213e-37da-11ee-9e74-dac502259ad0.png

4、在SDK的菜單“New -> Application Project”,建立一個APP工程

85e2603a-37da-11ee-9e74-dac502259ad0.png

4、在彈出的對話框中,“Project name”填寫“ps_uart_hello”,硬件平臺選擇我們自己定義的ps_uart_wrapper_hw_platform

語言C、其他默認(rèn),點擊“Next”

86075e26-37da-11ee-9e74-dac502259ad0.png

5、模板選擇《hello world》,點擊Finish

86377138-37da-11ee-9e74-dac502259ad0.png

6、可以看到SDK創(chuàng)建了一個“ps_uart_hello”目錄,還有一個“ps_usrt_hello_bsp”的目錄,在“ps_usrt_hello_bsp”目錄中可以找到很多有用的信息,軟件開發(fā)人員比較清楚,BSP也就是Board Support Package板級支持包的意思,里面包含了開發(fā)所需要的驅(qū)動文件,用于應(yīng)用程序開發(fā)。

8652878e-37da-11ee-9e74-dac502259ad0.png

7、雙擊“system.mss”,還可以看到有些PS外設(shè)還提供了例程,這是用來了解學(xué)習(xí)這些外設(shè)的

第一手資料。驅(qū)動文檔說明可以在 Documentation 中找到。通過 Import Examples 引入官方

例子,加快學(xué)習(xí)。

86b57ccc-37da-11ee-9e74-dac502259ad0.png

8、連接JTAG線到開發(fā)板、UART的USB線到PC

9、打開串口終端調(diào)試工具,串口根據(jù)電腦的COM口設(shè)置,波特率設(shè)置為115200

10、將開發(fā)板的啟動模式設(shè)置到JTAG模式

開發(fā)板設(shè)置撥碼為【010101(1~6 JTAG模式)】、【100101(1~6 QSPI模式)】、【101001(1~6 SD卡模式】

86e2aa3a-37da-11ee-9e74-dac502259ad0.png

11、給開發(fā)板上電,準(zhǔn)備運行程序

1、修改helloword.c,將printf打印修改為printf("hello ZYNQ7020,Author:liushuhe 2020.11.26 ");

8716fe02-37da-11ee-9e74-dac502259ad0.png

2、編譯代碼,右鍵單擊ps_uart_hello,在彈出的列表選擇Build Project,編譯完成可以看看沒有報錯

8744b5ae-37da-11ee-9e74-dac502259ad0.png

12、選擇“ps_uart_hello”,右鍵“Run as”,選擇第一個“Launch on Hardware(SystemDebuger)”,使用系統(tǒng)調(diào)試,直接運行程序。
877eb790-37da-11ee-9e74-dac502259ad0.png

13、可以看到串口沒有任何輸出

14、為了保證系統(tǒng)的可靠調(diào)試,需要添加一個配置,右鍵“Run As -> Run Configuration...”

87b14b4c-37da-11ee-9e74-dac502259ad0.png

15、選擇“Reset entire system”復(fù)位整個系統(tǒng),如果系統(tǒng)中還有PL設(shè)計,還必須選擇“ProgramFPGA”,再次點擊“Run”
87dfdb4c-37da-11ee-9e74-dac502259ad0.png

16、點擊“OK”,確認(rèn)重新運行

88107cde-37da-11ee-9e74-dac502259ad0.png

17、這次就可以看到熟悉《hello ZYNQ7020,Author:liushuhe 2020.11.26》顯示出來了

88253d90-37da-11ee-9e74-dac502259ad0.png

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

三、Debug調(diào)試

1、除了“Run As”,還可以“Debug As”,這樣可以設(shè)置斷點,單步運行
886d52ec-37da-11ee-9e74-dac502259ad0.png

2、進(jìn)入Debug模式 ,程序會自動運行到main函數(shù)處

889bb4d4-37da-11ee-9e74-dac502259ad0.png

3、和其他開發(fā)工具一樣,我們也可以逐步運行、設(shè)置斷點

88c36f1a-37da-11ee-9e74-dac502259ad0.png

4、窗口右上角,有2個按鈕可以方便我們在debug和編輯模式之間進(jìn)行切換

88fe166a-37da-11ee-9e74-dac502259ad0.png

7e9f21a0-37da-11ee-9e74-dac502259ad0.png

四、到此,關(guān)于ZYNQ7020 的PS端基本開發(fā)流程,全部跑通,關(guān)于PS-PL的聯(lián)合實驗,待我另寫一篇。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602977
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2167

    瀏覽量

    121298
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136683
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1235

    瀏覽量

    101354
  • 串口打印
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    3092

原文標(biāo)題:筆記連載精選 |【xilinx ZYNQ7000系列之《PS端 》串口打印】

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    ZYNQ7000系列 PS、PL、AXI 、啟動流程基本概念

    一、ZYNQ基本結(jié)構(gòu) ZYNQ7000系列分為?Artix-7 Kintex-7 Virtex-7,各個型號區(qū)別參考下面的博文 https://www.jianshu.com/p
    的頭像 發(fā)表于 05-12 10:25 ?1.7w次閱讀
    <b class='flag-5'>ZYNQ7000</b><b class='flag-5'>系列</b> <b class='flag-5'>PS</b>、PL、AXI 、啟動<b class='flag-5'>流程</b>基本概念

    請問FX3的UART口和Xilinx ZYNQ7000PS的UART進(jìn)行硬件連接需要TTL電平轉(zhuǎn)換嗎?

    想讓FX3的UART口和Xilinx ZYNQ7000PS(Processor system)的內(nèi)置UART相互通信,兩個芯片使用的是同一個電源(同在一塊板子上或分別在兩塊相互連接
    發(fā)表于 02-28 08:32

    [XILINX] 正點原子ZYNQ7035/7045/7100開發(fā)板發(fā)布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    正點原子FPGA新品ZYNQ7035/7045/7100開發(fā)板,ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2! 正點原子Z
    發(fā)表于 09-02 17:18

    zynq7000 BSP無法在u-boot加載運行,為什么?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf
    發(fā)表于 09-13 07:06

    zynq7000 BSP無法在u-boot加載運行怎么解決?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf
    發(fā)表于 09-27 09:26

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有?

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有? tsw1400_lvds_dac_sample_wise_restored的代碼寫的實在太難度了,一句注釋都沒有
    發(fā)表于 11-25 06:04

    分享黑金ZYNQ7000系列視頻教程

    視頻太大了,無法上傳,直接分享百度網(wǎng)盤了介紹一下內(nèi)容【黑金ZYNQ7000系列原創(chuàng)視頻教程】20.Linux下的GPIO操作【黑金ZYNQ7000系列原創(chuàng)視頻教程】19.Linux下的
    發(fā)表于 11-14 21:04

    Xilinx Zynq-7000特性參數(shù)

    CPUCPU為Xilinx Zynq-7000SOC,兼容XC7Z035/XC7Z045/XC7Z100,平臺升級能力強(qiáng),以下為Xilinx Zynq-7000特性參數(shù):電源接口和開關(guān)
    發(fā)表于 12-30 07:55

    Xilinx Zynq-7000SOC的相關(guān)資料推薦

    是廣州創(chuàng)龍基于Xilinx Zynq-7000 SoC設(shè)計的高速數(shù)據(jù)采集處理開發(fā)板,采用核心板+底板的設(shè)計方式,尺寸為180mm*130mm晶振核心板的PS
    發(fā)表于 01-03 07:50

    Zynq7000系列之芯片引腳功能綜述

    的認(rèn)識,然而要很好地進(jìn)行硬件設(shè)計,還必須了解芯片的引腳特性,以確定其是否符合我們的選型要求,這些要求包括GTX引腳數(shù)目、select IO引腳數(shù)目、select IO引腳的資源配置情況、PS IO的數(shù)目及類型等。 1.Zynq7000
    發(fā)表于 02-09 05:52 ?4798次閱讀

    第二章 Zynq7000芯片的簡介

    詳細(xì)介紹zynq7000系列板子的資料,適合初學(xué)者借鑒學(xué)習(xí)。
    發(fā)表于 02-28 15:12 ?11次下載

    Zynq-7000 PSIIC接口使用筆記

    ZYNQ7000系列FPGA的PS自帶兩個IIC接口,接口PIN IO可擴(kuò)展為EMIO形式即將IO約束到PL符合電平標(biāo)準(zhǔn)的IO(BANK12、BANK13、BANK34、BANK35
    的頭像 發(fā)表于 07-25 17:56 ?2195次閱讀
    <b class='flag-5'>Zynq-7000</b> <b class='flag-5'>PS</b><b class='flag-5'>端</b>IIC接口使用筆記

    ZYNQ的啟動流程

    ZYNQ7000 SOC 芯片可以從 FLASH 啟動,也可以從 SD 卡里啟動, 本節(jié)介紹程序 FLASH 啟動的方法。Zynq7000 SOC 芯片上電后,最先運行的是ARM系統(tǒng)(PS
    的頭像 發(fā)表于 05-07 09:41 ?6487次閱讀

    ZYNQ7020的PS的基本開發(fā)流程

    這篇文章記錄ZYNQ7020的PS的基本開發(fā)流程,關(guān)于PL
    的頭像 發(fā)表于 07-24 18:12 ?7830次閱讀

    基于Xilinx ZYNQ7000 FPGA嵌入式開發(fā)實戰(zhàn)指南

    電子發(fā)燒友網(wǎng)站提供《基于Xilinx ZYNQ7000 FPGA嵌入式開發(fā)實戰(zhàn)指南.pdf》資料免費下載
    發(fā)表于 12-10 15:31 ?2次下載
    RM新时代网站-首页