RM新时代网站-首页

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

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

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

Xilinx Zynq小試FPGA開發(fā)流程

h1654155149.6853 ? 來源:電子工程世界 ? 2023-03-14 16:13 ? 次閱讀

Xilinx Zynq系列是帶有ARM Cortex-A系列CPU核的FPGA,前幾年流落到二手市場上的“礦板”就以Zynq 7010為核心,可以說是最廉價的Zynq實驗平臺了。淘個這樣的板子,再另外找個Xilinx的JTAG就可以玩FPGA和ARM Linux. 因為玩的人多,網(wǎng)上有資料,還有別人做過的擴展板可以參考。本壇大佬們早就玩過了。我三年前就買了一塊,但一直是閑置狀態(tài),直到現(xiàn)在才想來搞搞。

這塊EBAZ4025板子接上12V電源就可以工作了,有RJ45網(wǎng)口,板子上有焊盤可以自己焊上TF卡座、UART接口、JTAG口,就相當于一個完整的ARM Linux板子(板載DDR3 SDRAM 256MB,NAND Flash 128MB),還有若干FPGA I/O引出來到雙列排針座,方便自己分配用途。

EBAZ4025通電以后上面的Linux就啟動了,通過UART連接可以看到uboot和Linux輸出的信息。我是要把它作為FPGA開發(fā)來用的,所以先直接焊上JTAG排針連接調(diào)試器,電腦軟件可以識別到JTAG 掃描鏈上有兩個設(shè)備,一個是FPGA,一個是ARM CPU。

Zynq的內(nèi)部分為兩個系統(tǒng),一個叫PS,就是ARM CPU以及外設(shè),包括DDR內(nèi)存控制器、DMA等等這些ARM運行依賴的部件;另一個系統(tǒng)叫PL,就相當于傳統(tǒng)的FPGA. 這兩部分之間有很多種方式可以通信,就可以比結(jié)合FPGA和ARM的各自優(yōu)點來處理復(fù)雜的任務(wù)了。

Zynq 7000系列的IO引腳也分為PS和PL各自管理的的,PS部分引腳有固定的用途,和開發(fā)FPGA時寫引腳約束不同。根據(jù)礦板的電路圖了解到,兩個LED是連接到PL部分的,而UART直接接的是PS的MIO。

2debaba4-c23a-11ed-bfe3-dac502259ad0.png

學(xué)習(xí)Zynq的開發(fā)可以參考網(wǎng)上的教程。這玩意門檻稍微高一點,先得下載Vivado安裝,為了開發(fā)ARM的程序還要安裝SDK,都是很龐大的軟件。如果熟悉了的話Vivado操作起來也很快,但頭幾次么……

先創(chuàng)建一個工程,選擇器件型號,這和其它FPGA開發(fā)思路是一樣的。

2e5c2564-c23a-11ed-bfe3-dac502259ad0.png

按照教程,然后是Create Block Design

2e6d7d14-c23a-11ed-bfe3-dac502259ad0.png

添加IP——ZYNQ7 Processing System. 這種圖形化的block design方式我最初學(xué)FPGA的時候就用,直觀容易理解。

2e7ec808-c23a-11ed-bfe3-dac502259ad0.png

加上這個IP之后框圖上就出現(xiàn)了一個模塊,代表PS部分。

2eaff64e-c23a-11ed-bfe3-dac502259ad0.png

在圖上雙擊這個ZYNQ Processing System模塊,就打開配置窗口,進行時鐘、IO、內(nèi)存等設(shè)置了。這些需要根據(jù)礦板上的資源和連接關(guān)系來定。

首先這里有個PS部分的結(jié)構(gòu)圖,可以了解有那些片上外設(shè)可以供CPU用的。第一個實驗為了讓程序能打印輸出,需要用UART。

2ecdfab8-c23a-11ed-bfe3-dac502259ad0.png

看看時鐘配置,默認的輸入時鐘33.333MHz 和礦板一致,就不用調(diào)整了。CPU和DDR的時鐘頻率用默認的不會有問題。PS部分給PL部分提供的時鐘是實驗需要的,默認輸出一個50MHz。

2ee76f3e-c23a-11ed-bfe3-dac502259ad0.png

DDR的配置,需要根據(jù)實際板子上的芯片調(diào)整一下,128M x16-bit. 我不確定SDK編寫的程序是要在DDR內(nèi)存中運行還是PS的片上RAM中運行,所以DDR還是要配置的。

2ef6a7ba-c23a-11ed-bfe3-dac502259ad0.png

MIO的配置,是為了要給UART分配引腳。根據(jù)電路圖,UART是連接在A16和F15這兩個腳的,查Xilinx手冊得知是PS_MIO24和PS_MIO25,就在MIO Configuration中配置使用UART1(因為UART0沒有MIO 24,25的映射)。

2f1c396c-c23a-11ed-bfe3-dac502259ad0.png

配置好之后Run Block Automation,自動生成必要的接口。

2f2e043a-c23a-11ed-bfe3-dac502259ad0.png

教程上說配置好之后要連一根線,把FCLK_CLK0和M_AXI_GP0_ACLK連起來。前者是Zynq PS輸出的時鐘(內(nèi)部PLL從晶振給的時鐘生成,可以給PL用),后者我理解是AXI總線的時鐘。這里并不使用總線,我覺得不連也沒關(guān)系。

2f45593c-c23a-11ed-bfe3-dac502259ad0.png

接下來,按照教程說的是要Create HDL Wrapper,注意對話框中選擇允許用戶修改,不然自己編輯的會被覆蓋掉。

2f53a5f0-c23a-11ed-bfe3-dac502259ad0.png

做這一步的目的是把PS外面再包上一層,這樣就方便加入自己編寫的邏輯了。下面我要編寫一點邏輯來點LED,就直接加到 system_wrapper.v 里面去。

注意Create HDL Wrapper之后,系統(tǒng)的層次結(jié)構(gòu)變化了,頂層名稱從design_1變成了design_1_wrapper。

2fa21e74-c23a-11ed-bfe3-dac502259ad0.png

由于礦板的PL是沒有帶晶振的(有空焊盤沒裝),要看FPGA跑起來的效果需要外接時鐘信號到排針上面。實際在已經(jīng)創(chuàng)建的PS模塊上,F(xiàn)CLK_CLK0就是一個時鐘信號,現(xiàn)在我要把它給PL用,還需要創(chuàng)建一個port把它引出來,不然頂層看不到。

2fd193e8-c23a-11ed-bfe3-dac502259ad0.png

在圖上創(chuàng)建輸出port, 命名叫PS_CLK0, 連接到時鐘信號上。保存之后,design_1.v文件(自動生成的)并沒有體現(xiàn)新的輸出端口。于是我嘗試一下“Generate Block Design”操作,看看是否更新。

2fe5bd32-c23a-11ed-bfe3-dac502259ad0.png

結(jié)果這樣是能重新產(chǎn)生design_1.v的:

3009d852-c23a-11ed-bfe3-dac502259ad0.png

然后我就在頂層的design_1_wrapper.v里面加自己的東西了:先加上兩個輸出口給礦板上的紅綠LED。

302c4dd8-c23a-11ed-bfe3-dac502259ad0.png

再寫一個計數(shù)器,利用PS引出的時鐘計數(shù),讓LED能閃起來。

306b0f32-c23a-11ed-bfe3-dac502259ad0.png

這樣第一個實驗工程的邏輯就設(shè)計完了,可以進行FPGA綜合、實現(xiàn)和生成二進制碼的流程了。

307b1c92-c23a-11ed-bfe3-dac502259ad0.png

這里還缺少一件事情:礦板上的 LED6 (W13, W14引腳)是連接在FPGA IO上的,不是PS MIO,因此是像普通FPGA那樣分配引腳的方式。而DDR、MIO則是固定引腳,不需要自己選。假如LED是接在MIO上,那么我們就要用軟件去選擇GPIO訪問來點亮了,不屬于FPGA邏輯部分。

在綜合之后,可以查看design,然后手工分配LED使用的引腳。也可以直接寫一個約束文件(.xdc)把引腳約束用Tcl命令寫上去。

308c1e98-c23a-11ed-bfe3-dac502259ad0.png

在最后Generate bitstream 生成bit文件之前看一下報告,確認引腳的分配是生效了的。

最后得到了.bit文件,就可以連接好JTAG之后,打開Hardware Manager, 將生成的design_1_wrapper.bit下載到FPGA中了。這個操作和Xilinx Spartan/Artix系列是相似的。

30abac90-c23a-11ed-bfe3-dac502259ad0.png

若此時看到了LED閃爍,說明PL部分的邏輯是工作的了。

此外,下載bit文件之后,從UART終端看到的Linux打印信息還在活動,說明PL部分的重配置沒有影響PS的運行。關(guān)于PL和PS的關(guān)系我的了解還不夠多。

如果單純把Zynq當成FPGA來用,不使用PS部分,也是可以的。注意,這樣也就不能用PS提供的時鐘了,需要從PL的引腳輸入時鐘信號。開發(fā)工具用Vivado和ISE都可以,我另外進行過嘗試。





審核編輯:劉清

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

    關(guān)注

    0

    文章

    22

    瀏覽量

    7290
  • UART接口
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    15288
  • FPGA開發(fā)板
    +關(guān)注

    關(guān)注

    10

    文章

    122

    瀏覽量

    31498
  • JTAG口
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    1753

原文標題:多少“礦板”吃灰中:Zynq學(xué)習(xí)筆記——“礦板”小試FPGA開發(fā)流程

文章出處:【微信號:電子工程世界,微信公眾號:電子工程世界】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    AnDAPT為Xilinx Zynq平臺FPGA和SoC設(shè)備推出完整電源解決方案

    AnDAPT支持為Xilinx Zynq所有的UltraScale+和Zynq-7000 FPGA/SoC供電,包括采用集成、靈活和高效AmP電源管理IC的應(yīng)用定義用例。
    發(fā)表于 05-18 09:48 ?1196次閱讀
    AnDAPT為<b class='flag-5'>Xilinx</b> <b class='flag-5'>Zynq</b>平臺<b class='flag-5'>FPGA</b>和SoC設(shè)備推出完整電源解決方案

    用于 Xilinx FPGA Zynq 7 的電源解決方案

    描述該參考設(shè)計采用多種 TPS54325 和其他 TI 電源器件,是適用于 Xilinx Zynq FPGA 的全套電源解決方案。輸入電壓達到 12V 后,該參考解決方案可提供 Zynq
    發(fā)表于 04-14 09:46

    基于Zynq的嵌入式開發(fā)流程

    基于Zynq的嵌入式開發(fā)流程Xilinx Zynq SoC 是集成了FPGA和硬核處理器的特殊S
    發(fā)表于 08-23 08:15

    面向Xilinx Zynq FPGA應(yīng)用的PMP9335參考設(shè)計

    描述PMP9335專為使用 TPS84A20 和 TPS84320 的 Xilinx Zynq FPGA 應(yīng)用而設(shè)計。此設(shè)計使用外部計時器將開關(guān)頻率同步到 300 kHz。它還采用受控的加電和斷電
    發(fā)表于 09-19 07:37

    基于Xilinx Zynq SoC的“小傻瓜(Snickerdoodle)”開發(fā)套件

    今天向大家推薦一款基于Xilinx Zynq SoC的低價開發(fā)板,這款開發(fā)板命名為“小傻瓜(Snickerdoodle)”,是位于美國舊金山的設(shè)計工作室krtkl
    發(fā)表于 02-08 18:04 ?309次閱讀

    用于 Xilinx FPGA Zynq 7 的電源解決方案

    該參考設(shè)計采用多種 TPS54325 和其他 TI 電源器件,是適用于 Xilinx Zynq FPGA 的全套電源解決方案。輸入電壓達到 12V 后,該參考解決方案可提供 Zynq
    發(fā)表于 02-11 09:39 ?3152次閱讀
    用于 <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>Zynq</b> 7 的電源解決方案

    FPGA開發(fā)流程詳細解析

    1. FPGA 開發(fā)流程: 電路設(shè)計與設(shè)計輸入 ;仿真驗證:利用Xilinx集成的仿真工具足矣 ;邏輯綜合:利用XST(Xilinx Syn
    發(fā)表于 01-12 03:59 ?1w次閱讀

    從賽靈思FPGA設(shè)計流程看懂FPGA設(shè)計

    不斷 從賽靈思FPGA設(shè)計流程看懂FPGA設(shè)計 1.XILINX ISE傳統(tǒng)FPGA設(shè)計流程
    發(fā)表于 02-20 20:32 ?1.6w次閱讀
    從賽靈思<b class='flag-5'>FPGA</b>設(shè)計<b class='flag-5'>流程</b>看懂<b class='flag-5'>FPGA</b>設(shè)計

    使用Xilinx SDK進行Zynq裸金屬應(yīng)用程序開發(fā)

    Zynq-7000 AP SoC硬件和軟件開發(fā)流程中,用于嵌入式軟件開發(fā)的工具就是Xilinx SDK。
    的頭像 發(fā)表于 05-31 08:40 ?2504次閱讀

    基于Xilinx Zynq SoC的“小傻瓜(Snickerdoodle)”開發(fā)套件

    CrowdSupply眾籌網(wǎng)站上完成了眾籌,籌集的資金是其目標的兩倍多。這款定價55美元的開發(fā)板可謂是功能強大,性價比很高。 圖1“小傻瓜(Snickerdoodle)”開發(fā)板 這款開發(fā)板是基于
    發(fā)表于 04-18 14:24 ?1746次閱讀

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

    這篇文章記錄ZYNQ7020的PS端的基本開發(fā)流程,關(guān)于PL端的開發(fā)流程,參考之前文章,這里放個超鏈接。
    的頭像 發(fā)表于 07-24 18:12 ?7830次閱讀

    用于Xilinx FPGA Zynq7的電源解決方案

    電子發(fā)燒友網(wǎng)站提供《用于Xilinx FPGA Zynq7的電源解決方案.zip》資料免費下載
    發(fā)表于 09-05 16:50 ?4次下載
    用于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b> <b class='flag-5'>Zynq</b>7的電源解決方案

    面向Xilinx Zynq FPGA應(yīng)用的多路降壓20W電源參考設(shè)計

    電子發(fā)燒友網(wǎng)站提供《面向Xilinx Zynq FPGA應(yīng)用的多路降壓20W電源參考設(shè)計.zip》資料免費下載
    發(fā)表于 09-06 11:34 ?4次下載
    面向<b class='flag-5'>Xilinx</b> <b class='flag-5'>Zynq</b> <b class='flag-5'>FPGA</b>應(yīng)用的多路降壓20W電源參考設(shè)計

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

    ZYNQ 芯片分為 PL 和 PS, PS 端的 IO 分配相對是固定的,不能任意分配,雖然 PS 端的 ARM 是硬核,但是在 ZYNQ 當中也要將 ARM 硬核添加到工程當中才能使用,FPGA
    的頭像 發(fā)表于 08-11 09:36 ?9825次閱讀
    <b class='flag-5'>xilinx</b> <b class='flag-5'>ZYNQ</b>7000系列基本<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>之PS端

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

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