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

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

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

PYNQ案例(一):ZYNQ的PL與PS開發(fā)

電子設(shè)計 ? 來源:Pynq ? 作者:Pynq ? 2020-12-25 14:11 ? 次閱讀

上一期的學(xué)習(xí)中,我們系統(tǒng)性地介紹了PYNQ與ZYNQ地區(qū)別與聯(lián)系。PYNQ = Python + ZYNQ,即將ZYNQ部分功能的Python化,直接調(diào)用Python庫和FPGA硬件庫進行功能的開發(fā)。

Pynq降低了開發(fā)人員的門檻,但知其然也知其所以然,開發(fā)效率將會更高。因此,在進入PYNQ的python開發(fā)之前,我們先來學(xué)習(xí)ZYNQ的PL與PS開發(fā),為接下來的學(xué)習(xí)提供良好的基礎(chǔ)。

本部分的學(xué)習(xí),我們依舊借助PYNQ_z2來完成。

1. ZYNQ功能塊
ZYNQ中包含兩大功能塊:PS部分和PL部分。

PS部分指Processing System,一個基于雙ARM Cortex A9內(nèi)核的處理系統(tǒng),其中集成了內(nèi)存存儲器和外部存儲器接口,以及如GPIO、UART接口等大量的外設(shè)。

PL部分指Programmable Logic,基于Xilinx 7系列架構(gòu)的可編程邏輯單元,通過PL部分可以為ARM定制很多外設(shè),這也是ZYNQ的一大優(yōu)點。

2. ZYNQ整體架構(gòu)
ZYNQ中雖然包含PS端和PL端,但是整個設(shè)計是以ARM處理器中心的,PS端的ARM內(nèi)核可以獨立于PL端運行;雖然PL端也可以獨立于PS端運行,但是PL的配置是由PS端完成的,所以不能采用傳統(tǒng)的固化FLASH的方式固化PL端程序。

PS端和PL端通信是通過AXI接口協(xié)議連接,這個協(xié)議是AMBA的一部分,是一種高性能、高帶寬、低延遲的片內(nèi)總線。

3. vivado與PL開發(fā)
下面我們通過一個LED燈的小項目進行本部分學(xué)習(xí):

實驗:輪流點亮LED燈

1. 打開vivado hls,點擊Create New Project Project”,創(chuàng)建一個新工程。

2. 設(shè)置工程名led和路徑,在工程類中中選擇RTL Project,目標(biāo)語言“Target language“選擇選擇“Verilog Verilog”,多語言混合編程。

選擇板子的時候搜索xc7z020clg400-1,這是PYNQ的板子號,選擇完成(PYNQ-Z2板采用ZYNQ XC7Z020-1CLG400C SoC)。

3. 新建一個 VerilogHDL 文件,可以通過右擊 Design sourse 選擇 AddSourse,選擇第二個選項

選擇 CreateFile…在彈出下面窗口填寫新建源文件名稱

創(chuàng)建完成點擊 Finish

4. 在用戶區(qū) VerilogHDL 文件窗口中輸入源程序,保存時文件名與實體名 保持一致,代碼如下:

o4YBAF9uHx6AFyosAADJJJLoq1M006.png

得到的最終界面:

pIYBAF9uHySAfD19AAVNWkGbCyo885.png

5. 新建約束文件,輸入下面指令

pIYBAF9uHyaAGPlqAAEW2Ef8TWQ369.png

6.單擊”Run Synthesis“開始綜合->彈出的對話框單擊”O(jiān)K“->綜合完成后單擊”cancle“->點擊“Constrain wizard"

點擊finish

7. 時序約束向?qū)Х治龀鲈O(shè)計中的時鐘,這里把“sys_clk”頻率設(shè)置為50Mhz,然后點擊Skip to Finish結(jié)束時序約束向?qū)А?/p>

在彈出的框選擇OK,接著選finish

這個時候led.xdc文件已經(jīng)更新,點擊“Reload”重新加載文件

8. 點擊“Generate Bitstream”,直接生成bit 文件。

在彈出的對話框中可以選擇任務(wù)數(shù)量,這里和CPU核心數(shù)有關(guān),一般數(shù)字越大,編譯越快,單擊”O(jiān)K”

9. 這個時候開始編譯,可以看到右上角有個狀態(tài)信息,在編譯過程中可能會被殺毒軟件、電腦管家攔截運行,導(dǎo)致無法編譯或很長時間沒有編譯成功。

編譯中沒有任何錯誤,編譯完成,彈出一個對話框讓我們選擇后續(xù)操作,這里選項“open hardware manager” ,然后單擊“OK”

10. 下載到板子

1)連接好開發(fā)板的 JTAG接口,給開發(fā)板上電

2)可以看到JTAG掃描到arm和 FPGA 內(nèi)核

3)選擇FPGA內(nèi)核,右鍵選擇“Program Device...” ,在彈出窗口中點擊“Program”

4)等待下載,下載完成以后,我們可以看到4 顆LED開始每秒變化一次

編輯:hfy
聲明:本文內(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)注

    1624

    文章

    21538

    瀏覽量

    600454
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22988

    瀏覽量

    654476
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283
收藏 人收藏

    評論

    相關(guān)推薦

    正點原子ZYNQ7015開發(fā)板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強悍,資料豐富!

    ! 正點原子Z15 ZYNQ開發(fā)板,搭載Xilinx Zynq7000系列芯片,核心板主控芯片的型號是XC7Z015CLG485-2。開發(fā)板由核心板+底板組成,外設(shè)資源豐富,板載1路
    發(fā)表于 09-14 10:12

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

    7000系列芯片,核心板支持Xilinx Zynq-7035、Zynq-7045和Zynq-7100三種型號。開發(fā)板由核心板+底板組成,外設(shè)資源豐富,板載2路千兆以太網(wǎng)接口(
    發(fā)表于 09-02 17:18

    復(fù)旦微PS+PL異構(gòu)多核開發(fā)案例分享,基于FMQL20SM國產(chǎn)處理器平臺

    本文主要介紹復(fù)旦微FMQL20S400M的PS + PL異構(gòu)多核開發(fā)案例,開發(fā)環(huán)境如下: Windows開發(fā)環(huán)境:Windows 7 64b
    發(fā)表于 08-22 14:04

    使用PYNQ訓(xùn)練和實現(xiàn)BNN

    使用 PYNQ 可以輕松在 FPGA 上實現(xiàn)加速 AI/ML,而無需編寫行 HDL!讓我們看看如何做到這點。
    的頭像 發(fā)表于 08-05 17:15 ?336次閱讀
    使用<b class='flag-5'>PYNQ</b>訓(xùn)練和實現(xiàn)BNN

    FM20S用戶手冊-PS + PL異構(gòu)多核案例開發(fā)手冊

    PS端) + FPGA可編程邏輯資源(PL端)異構(gòu)多核SoC處理器設(shè)計的全國產(chǎn)工業(yè)評估板,PS端主頻高達1GHz。核心板CPU、ROM、RAM、電源、晶振、連接器等所有器件均采用國產(chǎn)工業(yè)級方案
    發(fā)表于 07-25 16:14

    有關(guān)PL端利用AXI總線控制PS端DDR進行讀寫(從機wready信號直不拉高)

    直拉高的。這與寫數(shù)據(jù)通道好像有點區(qū)別。 我不清楚PS 端的DDR到底發(fā)生了什么,但是和MIG核就是有點不樣,通過仿真MIG核可以發(fā)現(xiàn),PL端的DDR是會先
    發(fā)表于 05-31 12:04

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    FPGA靈活性和可擴展性,也提供了專用集成電路的相關(guān)性能、功耗和易用性。 ZYNQ 7000的結(jié)構(gòu)便于將定制邏輯和軟件分別映射到PLPS中,這樣就可實現(xiàn)獨無二和差異化的系統(tǒng)功能。
    發(fā)表于 05-08 16:23

    Xilinx ZYNQ 動手實操演練

    。 實操演示 下面做個從uart打印hello world的實驗,只用PS,不用PL部分,程序從SD卡啟動,跑在PS的內(nèi)部RAM。 zyn
    發(fā)表于 05-03 19:28

    AMD Versal AI Edge自適應(yīng)計算加速平臺之體驗ARM,裸機輸出(7)

    我們從原理圖中可以看到 ZYNQ 芯片分為PLPS,PS端的IO分配相對是固定的,不能任意分配,而且不需要在Vivado軟件里分配管腳,雖然本實驗僅僅使用了
    的頭像 發(fā)表于 04-19 10:45 ?1151次閱讀
    AMD Versal AI Edge自適應(yīng)計算加速平臺之體驗ARM,裸機輸出(7)

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    PLPS中,這樣就可實現(xiàn)獨無二和差異化的系統(tǒng)功能。與傳統(tǒng)的FPGA方法不同的是,ZYNQ 7000 SoC總是最先啟動PS內(nèi)的處理器,
    發(fā)表于 04-10 16:00

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

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

    AD9681是否可被zynq-7020的pl端驅(qū)動?

    您好: 我想咨詢AD9681是否可以被zynq-7020的PL端驅(qū)動(zynq7020的性能是否足夠)。我們需要做衛(wèi)星的探測載荷,由于衛(wèi)星能源控制嚴格,我們需要低功耗、多通道(至少8個)、高采樣率
    發(fā)表于 12-04 08:18

    Zynq7045的PS端的SPI外設(shè)配置AD9154讀取芯片ID返回值直為FF的原因?

    Zynq7045的PS端的SPI外設(shè)配置AD9154讀取芯片ID(0x005地址)返回值直為FF,但是用相同的代碼去讀取AD9434就沒有問題,能正常讀取ID值,實在是搞不清楚問題會出在哪里
    發(fā)表于 12-01 11:59

    基于zynq7020器件來搭建Linux系統(tǒng)

    Zynq器件將arm和FPGA結(jié)合,利用了兩者各自的優(yōu)勢,arm可以實現(xiàn)靈活的控制,而FPGA部分可以實現(xiàn)算法加速,這大大擴展了zynq的應(yīng)用。比如深度學(xué)習(xí)加速,圖像處理等等。PL側(cè)表示FPGA的邏輯部分,
    發(fā)表于 11-09 11:28 ?2324次閱讀
    基于<b class='flag-5'>zynq</b>7020器件來搭建Linux系統(tǒng)

    ZYNQ的ARM和FPGA數(shù)據(jù)交互——AXI交互最重要的細節(jié)

    。 ③EMIO :由于MIO管腳有限,PS端可以通過EMIO訪問PL端引腳。 ④GP :通用AXI接口,用來實現(xiàn)般主從互聯(lián)、數(shù)據(jù)交互,不用于高性能。 ⑤HP :是高性能/帶寬的標(biāo)準(zhǔn)接口,主要用于
    發(fā)表于 11-03 10:51