這篇文章記錄ZYNQ7020的PS端的基本開(kāi)發(fā)流程,關(guān)于PL端的開(kāi)發(fā)流程,參考之前文章,這里放個(gè)超鏈接。
本篇文章,以配置一個(gè)PS端的UART外設(shè),并打印一句話《hello ZYNQ7020,Author:liushuhe 2020.11.26》來(lái)演示
ZYNQ7020的基本開(kāi)發(fā)流程,本篇文章需要一點(diǎn)點(diǎn)的C語(yǔ)言知識(shí),不會(huì)也不影響實(shí)驗(yàn)的,跟著步驟做就行了。
一、任務(wù)分工
ZYNQ芯片分為PL和PS,PS端的IO分配相對(duì)是固定的,不能任意分配,雖然PS端的ARM是硬核,但是在ZYNQ當(dāng)中也要將ARM硬核添加到工程當(dāng)中才能使用,FPGA工程師負(fù)責(zé)把Vivado工程搭建好,提供好硬件給軟件開(kāi)發(fā)人員,軟件開(kāi)發(fā)人員便能在這個(gè)基礎(chǔ)上開(kāi)發(fā)應(yīng)用程序 ,軟件開(kāi)發(fā)人員,不用關(guān)心FPGA的部分。
二、FPGA工程師搭建硬件平臺(tái)
我們這里演示搭建一個(gè)帶UART和arm A9處理器的硬件平臺(tái)
1.1、建立vivado工程
創(chuàng)建一個(gè)“ps_uart”的工程,具體過(guò)程,參考我文章開(kāi)頭超鏈接文章;
1.2、點(diǎn)擊“Create Block Design”,創(chuàng)建一個(gè)Block設(shè)計(jì),也就是圖形化設(shè)計(jì)
1.3、“Design name”可以不修改,我改成ps_uart便于識(shí)別
1.4、點(diǎn)擊“Add IP”快捷圖標(biāo)
1.5、搜索“zynq”,在搜索結(jié)果列表中雙擊“ZYNQ7 Processing System
1.6、雙擊Block圖中的“processing_system7_0”(直接雙擊藍(lán)色區(qū)域),配置相關(guān)參數(shù)
1.7、首先出現(xiàn)的界面是ZYNQ硬核的架構(gòu)圖,可以很清楚看到它的結(jié)構(gòu),可以參考 官方文檔,在官網(wǎng)搜索ug585 即可
1.8、圖中綠色部分是可配置模塊,可以點(diǎn)擊進(jìn)入相應(yīng)的編輯界面
1.9、也可以在左側(cè)的窗口進(jìn)入編輯 ,下面分別介紹左側(cè)選項(xiàng)代表的功能;
2.0、Zynq 塊設(shè)計(jì)參數(shù)配置,單擊綠色塊右下角,可以進(jìn)行參數(shù)配置
2.1、PS-PL Configuration 配置界面,主要是進(jìn)行PS與PL之間接口的配置,主要是AXI接口,這些接口可以擴(kuò)展PL端的AXI接口外設(shè)
核。
2.2、我們這篇文章是PS開(kāi)發(fā)流程,關(guān)于PS-PL Configuration 配置在這里保持默認(rèn),在后面的實(shí)驗(yàn)中我再補(bǔ)充
2.3、外設(shè)配置,ZYNQ的PS端外設(shè)很多是復(fù)用的 ,同一引腳可以配置為不同的功能
zynq內(nèi)部只有2個(gè)串口,UART0、UART1、我們看UART0可以接在(10、11)/(14、15)/(18、19)/(22、23)/(26、27)
2.4、配置串口,我們的ps_uart需要一個(gè)串口來(lái)打印消息,查看ZYNQ7020開(kāi)發(fā)板的原理圖
從原理圖看出,ZYNQ的PS端的串口,連接的是MIO12、MIO13端口,并且電源是3.3v
2.5、從I/O分配看,MIO12、MIO13是串口1,在MIO12、MIO13引腳對(duì)應(yīng)串口上單擊,會(huì)看見(jiàn)該模塊變?yōu)榫G色,即代表分配成功
關(guān)于BANK0、BANK1的電壓,由于創(chuàng)龍沒(méi)有給核心板的原理圖,但是給了一個(gè)WORD的描述文檔,大家也要熟悉這個(gè)方式
國(guó)內(nèi)很多廠家都是這樣,屬于技術(shù)保密
按照上述表格分配UART1電壓和引腳
2.6、配置QSPI,QSPI可以作為ZYNQ的啟動(dòng)存儲(chǔ)設(shè)備,ZYNQ可以通過(guò)讀取QSPI中存儲(chǔ)的啟動(dòng)文件加載ARM和FPGA
從核心板word表格和創(chuàng)龍給的例程,得知我們選擇Quad SPI Flash為Single SS 4bit IO
2.7、配置以太網(wǎng),在PS端設(shè)計(jì)有以太網(wǎng)接口
1、根據(jù)原理圖選擇Ethernet 0到MIO16-MIO27
電壓是1.8v
2、配置PHY寄存器配置接口,選擇MDIO并配置到MIO52-MIO53
2.8、配置USB0到MIO28-MIO39
2.9、ZYNQ還可以SD卡啟動(dòng)
查看底板原理圖,選擇 SD 0,配置到 MIO40-MIO45,選擇Card Detection MIO0,用于檢測(cè) SD 卡的插入。
1、配置SD0
2、選擇Card Detection MIO0,用于檢測(cè)SD卡的插入
3.0、控制剩余未分配的MIO,用作GPIO ,打開(kāi)GPIO MIO,PS便可以配置
1、雙擊GPIO MIO當(dāng)出現(xiàn)打鉤的提示時(shí),軟件會(huì)自動(dòng)把我們未使用到的IO分配為GPIO
2、到這里引腳分配全部完成,如果以后做實(shí)驗(yàn)需要配置其他外設(shè),可以參考這個(gè)文章,作相應(yīng)的修改即可
3.1、MIO配置
修改 Enet0的電平標(biāo)準(zhǔn)為 HSTL 1.8V, Speed 為 fast,這些參數(shù)非常重要,如果不修改,網(wǎng)絡(luò)可能不通。其他部分保持默認(rèn)。
3.2、時(shí)鐘配置
在“Clock Configuration”選項(xiàng)卡中我們可以配置PS時(shí)鐘輸入時(shí)鐘頻率,這里默認(rèn)是33.333333,和板子上一致,不用修改,
CPU 頻率改為 767Mhz,同時(shí) PS 還可以給 PL 端提供 4 路時(shí)鐘,頻率可以配置,這里不需要,所以保持默認(rèn)即可。
還有 PS 端外設(shè)的時(shí)鐘等也可以進(jìn)行配置,這里保持默認(rèn)。
3.3、DDR3配置
在“DDR Configuration”選項(xiàng)卡中可以配置PS端ddr的參數(shù)
根據(jù)創(chuàng)龍的例程,內(nèi)存芯片我們選擇《MT41K256M16 RE-125》,Effective DRAM Bus Width 選擇《32bit》
其他部分保持默認(rèn),點(diǎn)擊OK
3.4、到這里ZYNQ核的配置完成,我們配置參數(shù)及導(dǎo)出硬件信息
1、點(diǎn)擊“Run Block Automation”,vivado軟件會(huì)自動(dòng)完成一些導(dǎo)出端口的工作
2、按照默認(rèn)點(diǎn)擊“OK”
3、連接FCLK_CLK0到M_AXI_GP0_ACLK,按Ctrl+S保存設(shè)計(jì)
4、選擇Block設(shè)計(jì),右鍵“Create HDL Wrapper...”,創(chuàng)建一個(gè)Verilog或VHDL文件,為ps_uart生成HDL頂層文件
5、在彈出對(duì)話框,選擇讓vivado軟件自動(dòng)更新 頂層文件
6、展開(kāi)設(shè)計(jì)可以看到PS被當(dāng)成一個(gè)普通IP來(lái)使用 ,之前生成那個(gè)頂層文件,其實(shí)就是為了把我們的硬件配置
生成一個(gè)IP核,供我們調(diào)用
7、選擇block設(shè)計(jì),右鍵“Generate Output Products”,此步驟會(huì)生成block的輸出文件,包括IP,例化模板, RTL 源文件, XDC 約束,第三方綜合源文件等等。供后續(xù)操作使用。
8、點(diǎn)擊“Generate”
9、PS端的引腳不需要綁定 ,因?yàn)樵谏傻腎P文件包含了PS端引腳分配的XDC文件
在IP Sources,Block Designs->ps_uart->Synthesis中,可以看到處理器的XDC文件,綁定了PS端的IO,因此不需要再新建XDC綁定這些引腳
10、在菜單欄“File -> Export -> Export Hardware...”導(dǎo)出硬件信息,這里就包含了 PS 端的配置信息。
11、在彈出的對(duì)話框中點(diǎn)擊“OK”
12、因?yàn)槲覀冞@個(gè)實(shí)驗(yàn)僅僅是使用了PS的串口,不需要PL參與,這里就沒(méi)有使能“Include bitstream” ,關(guān)于PS-PL的聯(lián)合實(shí)驗(yàn),我會(huì)另寫(xiě)一篇
13、此時(shí)會(huì)多出 xx.sdk 文件夾,并且有個(gè) hdf 文件,這個(gè)文件就是這個(gè)文件就包含了 Vivado 硬件設(shè)計(jì)的信息,供軟件開(kāi)發(fā)人員使用。
14、到此為止, FPGA 工程師工作告一段落,剩下的工作交給ARM軟件開(kāi)發(fā)人員。
二、ARM軟件編寫(xiě)C語(yǔ)言程序,在串口打印一句話《hello ZYNQ7020,Author:liushuhe 2020.11.26》
1、點(diǎn)擊Vivado菜單“File -> Launch SDK”,啟動(dòng)SDK
2、在彈出的對(duì)話框選擇OK
3、啟動(dòng)SDK后我們會(huì)看到一個(gè)文件夾,有一個(gè)名為"system.hdf”文件,這個(gè)文件就包含了
Vivado硬件設(shè)計(jì)的信息,可以給軟件開(kāi)發(fā)使用,也可以看到 PS 端外設(shè)的寄存器列表。
4、在SDK的菜單“New -> Application Project”,建立一個(gè)APP工程
4、在彈出的對(duì)話框中,“Project name”填寫(xiě)“ps_uart_hello”,硬件平臺(tái)選擇我們自己定義的ps_uart_wrapper_hw_platform
語(yǔ)言C、其他默認(rèn),點(diǎn)擊“Next”
5、模板選擇《hello world》,點(diǎn)擊Finish
6、可以看到SDK創(chuàng)建了一個(gè)“ps_uart_hello”目錄,還有一個(gè)“ps_usrt_hello_bsp”的目錄,在“ps_usrt_hello_bsp”目錄中可以找到很多有用的信息,軟件開(kāi)發(fā)人員比較清楚,BSP也就是Board Support Package板級(jí)支持包的意思,里面包含了開(kāi)發(fā)所需要的驅(qū)動(dòng)文件,用于應(yīng)用程序開(kāi)發(fā)。
7、雙擊“system.mss”,還可以看到有些PS外設(shè)還提供了例程,這是用來(lái)了解學(xué)習(xí)這些外設(shè)的
第一手資料。驅(qū)動(dòng)文檔說(shuō)明可以在 Documentation 中找到。通過(guò) Import Examples 引入官方
例子,加快學(xué)習(xí)。
8、連接JTAG線到開(kāi)發(fā)板、UART的USB線到PC
9、打開(kāi)串口終端調(diào)試工具,串口根據(jù)電腦的COM口設(shè)置,波特率設(shè)置為115200
10、將開(kāi)發(fā)板的啟動(dòng)模式設(shè)置到JTAG模式
開(kāi)發(fā)板設(shè)置撥碼為【010101(1~6 JTAG模式)】、【100101(1~6 QSPI模式)】、【101001(1~6 SD卡模式】
11、給開(kāi)發(fā)板上電,準(zhǔn)備運(yùn)行程序
1、修改helloword.c,將printf打印修改為printf("hello ZYNQ7020,Author:liushuhe 2020.11.26 ");
2、編譯代碼,右鍵單擊ps_uart_hello,在彈出的列表選擇Build Project,編譯完成可以看看沒(méi)有報(bào)錯(cuò)
12、選擇“ps_uart_hello”,右鍵“Run as”,選擇第一個(gè)“Launch on Hardware(SystemDebuger)”,使用系統(tǒng)調(diào)試,直接運(yùn)行程序。
13、可以看到串口沒(méi)有任何輸出
14、為了保證系統(tǒng)的可靠調(diào)試,需要添加一個(gè)配置,右鍵“Run As -> Run Configuration...”
15、選擇“Reset entire system”復(fù)位整個(gè)系統(tǒng),如果系統(tǒng)中還有PL設(shè)計(jì),還必須選擇“ProgramFPGA”,再次點(diǎn)擊“Run”
16、點(diǎn)擊“OK”,確認(rèn)重新運(yùn)行
17、這次就可以看到熟悉《hello ZYNQ7020,Author:liushuhe 2020.11.26》顯示出來(lái)了
三、Debug調(diào)試
1、除了“Run As”,還可以“Debug As”,這樣可以設(shè)置斷點(diǎn),單步運(yùn)行
2、進(jìn)入Debug模式 ,程序會(huì)自動(dòng)運(yùn)行到main函數(shù)處
3、和其他開(kāi)發(fā)工具一樣,我們也可以逐步運(yùn)行、設(shè)置斷點(diǎn)
4、窗口右上角,有2個(gè)按鈕可以方便我們?cè)赿ebug和編輯模式之間進(jìn)行切換
四、到此,關(guān)于ZYNQ7020 的PS端基本開(kāi)發(fā)流程,全部跑通,關(guān)于PS-PL的聯(lián)合實(shí)驗(yàn),待我另寫(xiě)一篇。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1620文章
21509瀏覽量
598860 -
Xilinx
+關(guān)注
關(guān)注
70文章
2136瀏覽量
120373 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7575瀏覽量
134001 -
uart
+關(guān)注
關(guān)注
22文章
1199瀏覽量
100821 -
串口打印
+關(guān)注
關(guān)注
0文章
10瀏覽量
3063
原文標(biāo)題:筆記連載精選 |【xilinx ZYNQ7000系列之《PS端 》串口打印】
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論