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

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

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

【ZYNQ Ultrascale+ MPSOC FPGA教程】第三十二章PL讀寫PS端DDR數(shù)據(jù)

FPGA技術(shù)專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-01-30 09:54 ? 次閱讀

原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。

適用于板卡型號(hào):

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實(shí)驗(yàn)Vivado工程目錄為“pl_read_write_ps_ddr/vivado”。

實(shí)驗(yàn)vitis工程目錄為“pl_read_write_ps_ddr /vitis”。

PL和PS的高效交互是zynq soc開發(fā)的重中之重,我們常常需要將PL端的大量數(shù)據(jù)實(shí)時(shí)送到PS端處理,或者將PS端處理結(jié)果實(shí)時(shí)送到PL端處理,常規(guī)我們會(huì)想到使用DMA的方式來進(jìn)行,但是各種協(xié)議非常麻煩,靈活性也比較差,本節(jié)課程講解如何直接通過AXI總線來讀寫PS端ddr的數(shù)據(jù),這里面涉及到AXI4協(xié)議,vivado的FPGA調(diào)試等。

FPGA工程師工作內(nèi)容

以下為FPGA工程師負(fù)責(zé)內(nèi)容。

1. ZYNQ的HP端口使用

zynq 7000 SOC的HP口是 High-Performance Ports的縮寫,如下圖所示,一共有4個(gè)HP口,HP口是AXI Slave設(shè)備,我們可以通過這4個(gè)HP接口實(shí)現(xiàn)高帶寬的數(shù)據(jù)交互。

o4YBAGATcaWAdU89AADTRL9yEVY039.jpg

2. 硬件環(huán)境搭建

1)基于“ps_hello”工程,在vivado的界面中HP的配置如下圖(HP0~HP3),這里面有使能控制,數(shù)據(jù)位寬選擇,可選擇32bit、64bit或128bit的位寬。我們的實(shí)驗(yàn)啟用HP0配置為64bit位寬,使用的時(shí)鐘是150Mhz,HP的帶寬是150Mhz * 64bit,對(duì)于視頻處理,ADC數(shù)據(jù)采集等應(yīng)用都有足夠的帶寬。不需要AXI HPM0 LPD,取消選擇。

pIYBAGATcaaAIWwCAACEUNUComI617.jpgo4YBAGATcaeAftWLAACTOPEJjkw138.jpg

2)添加復(fù)位模塊,用于復(fù)位

pIYBAGATcaeACtwFAAAMa5aID7s324.jpg

3)在空白處右鍵選擇”Creat Port”

o4YBAGATcaiADGcOAACycXclAVM677.jpg

配置如圖

pIYBAGATcamANPD_AABRolmf8pU901.jpg

4)連接時(shí)鐘和復(fù)位

o4YBAGATcamARPztAACSwTcnSSM552.jpg

5)選中引腳,點(diǎn)擊Make External,將信號(hào)導(dǎo)出

pIYBAGATcaqAVy4_AABhjcTFcXE475.jpg

并修改引腳名稱如下圖

o4YBAGATcaqATdeVAACh3VKnOwk096.jpg

并選擇總線同步時(shí)鐘為axi_hp_clk

o4YBAGATcauAbx4VAAAqww-lRxc027.jpg

6)點(diǎn)開Address Editor,如果發(fā)現(xiàn)地址沒有分配,點(diǎn)擊自動(dòng)分配地址按鈕

pIYBAGATcauAMDYgAABGgGSHsMo207.jpg

分配后的結(jié)果,可以看到訪問DDR, QSPI, OCM的地址空間

o4YBAGATcayAQuvRAABHgYKFNNI523.jpg

保存設(shè)計(jì),重新Generate Ouput Product

7)添加hdl文件

pIYBAGATca2ASZyrAAClmar42WU623.jpgo4YBAGATca2APpH6AABcVgRFQzc850.jpg

點(diǎn)擊Finish

o4YBAGATca6Af-QUAABvcx_r-dk246.jpg

HDL層級(jí)關(guān)系更新結(jié)果

pIYBAGATca6AckzEAABLkXu1e9k000.jpg

3. PL端AXI Master

AXI4相對(duì)復(fù)雜,但SOC開發(fā)者必須掌握,對(duì)于zynq的開發(fā)者,筆者建議能夠在一些已有的模板代碼基礎(chǔ)上修改。AXI協(xié)議的具體內(nèi)容可參考Xilinx UG761 AXI Reference Guide。在這里我們簡(jiǎn)單了解一下。

AXI4所采用的是一種READY,VALID握手通信機(jī)制,即主從模塊進(jìn)行數(shù)據(jù)通信前,先根據(jù)操作對(duì)各所用到的數(shù)據(jù)、地址通道進(jìn)行握手。主要操作包括傳輸發(fā)送者A等到傳輸接受者B的READY信號(hào)后,A將數(shù)據(jù)與VALID信號(hào)同時(shí)發(fā)送給B,這是一種典型的握手機(jī)制。

o4YBAGATca6AM7C-AAAqCyn4dnU541.jpg

AXI總線分為五個(gè)通道:

  • 讀地址通道,包含ARVALID, ARADDR, ARREADY信號(hào);

  • 寫地址通道,包含AWVALID,AWADDR, AWREADY信號(hào);

  • 讀數(shù)據(jù)通道,包含RVALID, RDATA, RREADY, RRESP信號(hào);

  • 寫數(shù)據(jù)通道,包含WVALID, WDATA,WSTRB, WREADY信號(hào);

  • 寫應(yīng)答通道,包含BVALID, BRESP, BREADY信號(hào);

  • 系統(tǒng)通道,包含:ACLK,ARESETN信號(hào);

其中ACLK為axi總線時(shí)鐘,ARESETN是axi總線復(fù)位信號(hào),低電平有效;讀寫數(shù)據(jù)與讀寫地址類信號(hào)寬度都為32bit;READY與VALID是對(duì)應(yīng)的通道握手信號(hào);WSTRB信號(hào)為1的bit對(duì)應(yīng)WDATA有效數(shù)據(jù)字節(jié),WSTRB寬度是32bit/8=4bit;BRESP與RRESP分別為寫回應(yīng)信號(hào),讀回應(yīng)信號(hào),寬度都為2bit,‘h0代表成功,其他為錯(cuò)誤。

讀操作順序?yàn)橹髋c從進(jìn)行讀地址通道握手并傳輸?shù)刂穬?nèi)容,然后在讀數(shù)據(jù)通道握手并傳輸所讀內(nèi)容以及讀取操作的回應(yīng),時(shí)鐘上升沿有效。如圖所示:

pIYBAGATcbCAADCHAAAvHtYayq0137.jpg

寫操作順序?yàn)橹髋c從進(jìn)行寫地址通道握手并傳輸?shù)刂穬?nèi)容,然后在寫數(shù)據(jù)通道握手并傳輸所讀內(nèi)容,最后再寫回應(yīng)通道握手,并傳輸寫回應(yīng)數(shù)據(jù),時(shí)鐘上升沿有效。如圖所示:

o4YBAGATcbCAfDoBAAAayFn2M5E204.jpg

在我們不擅長(zhǎng)寫FPGA的一些代碼時(shí)我們往往要借鑒別人的代碼或者使用IP core。在這里筆者從github上找到一個(gè)AXI master的代碼,地址是github.com/aquaxis/IPCO。這個(gè)工程是一個(gè)自己寫的VDMA,里面包含了大量可參考的代碼。筆者這里主要使用了aq_axi_master.v這個(gè)代碼用于AXI master讀寫操作。借鑒別人代碼有時(shí)會(huì)節(jié)省很多時(shí)間,但如果不能理解的去借鑒,出現(xiàn)問題了很難解決。具體可以參考aq_axi_master.v代碼,有部分修改。

4. ddr讀寫數(shù)據(jù)的檢驗(yàn)

有了AXI Master讀寫接口以后比較編寫了一個(gè)簡(jiǎn)單的驗(yàn)證模塊,這個(gè)驗(yàn)證模塊是用來驗(yàn)證ddr ip的,通過寫入數(shù)據(jù),然后讀取出來比較。這里要注意的是PS端DDR的起始地址和大小,還有地址的單位是byte還是word,AXI總線的地址單位是byte,測(cè)試模塊的地址單位是word(這里的word不一定是4byte)。文件名mem_test.v。

5. Vivado軟件的調(diào)試技巧

AXI讀寫驗(yàn)證模塊只有一個(gè)error信號(hào)用于指示錯(cuò)誤,如果有數(shù)據(jù)錯(cuò)誤我們希望能更精確的信息,alteraquartus II軟件中有signal tap工具,xilinx 的ISE中有chipscope工具,這些都是嵌入式邏輯分析儀,對(duì)我們調(diào)試有很大幫助,在vivado軟件中調(diào)試更加方便。在插入調(diào)試信號(hào)時(shí)有些信息可能會(huì)被優(yōu)化掉,或者信號(hào)名稱改變了就不容易識(shí)別,這個(gè)時(shí)候我們可以在程序代碼里加入*mark_debug="true"*這樣的屬性,如下圖的信號(hào):

pIYBAGATcbGAJgMWAAB5d3Yle80216.jpg

具體的添加方法在”PL的“Hello World”LED實(shí)驗(yàn)”中已經(jīng)講過,可參考。

并在XDC文件里綁定error信號(hào)到PL端LED燈上。

6. Vitis工程開發(fā)

以hello world為模板新建vitis工程如下

o4YBAGATcbKAXtE8AAAsYynxu74923.jpg

通過vitis下載程序后,系統(tǒng)會(huì)復(fù)位并且下載FPGA的bit文件。然后回到vivado界面點(diǎn)擊Program and Debug欄自動(dòng)連接目標(biāo)如下圖所示:

pIYBAGATcbKAF5OsAAAuwNsYeuQ366.jpg

自動(dòng)連接硬件后可發(fā)現(xiàn)JTAG連上的設(shè)備,其中有一個(gè)hw_ila_1的設(shè)備,這個(gè)設(shè)備就是我們debug設(shè)備,選中后可點(diǎn)擊上方黃色三角按鈕捕捉波形。如果有些信號(hào)沒有顯示完整,可點(diǎn)擊波形旁邊的“+”按鈕添加。

pIYBAGATcbOAM5LTAAC42pq7cGU959.jpg

點(diǎn)擊捕獲波形以后如下圖所示,如果error一直為低,并且讀寫狀態(tài)有變化,說明讀寫DDR數(shù)據(jù)正常,用戶在這里可以自己查看其它的信號(hào)來觀察寫入DDR的數(shù)據(jù)和從DDR讀出的數(shù)據(jù)。

o4YBAGATcbSAC5DJAACp1L1nsgY285.jpg

7. 本章小結(jié)

zynq系統(tǒng)相對(duì)于單個(gè)FPGA或單個(gè)ARM要復(fù)雜很大,對(duì)開發(fā)者的基礎(chǔ)知識(shí)要求較高,本章內(nèi)容涉及到AXI協(xié)議、zynq的互聯(lián)資源、vivado的和Vitis的調(diào)試技巧。這些都僅僅是基礎(chǔ)知識(shí),筆者在這里也僅僅是拋磚引玉,大家還是要多多練習(xí),在不斷練習(xí)中掌握技巧.

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

    關(guān)注

    1630

    文章

    21777

    瀏覽量

    604733
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    712

    瀏覽量

    65425
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    100764
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    610

    瀏覽量

    47230
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    199

    瀏覽量

    24301
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于ZU19EG的4路100G光纖加速卡

    ? ? ? 該平臺(tái)是由16nm工藝的的ZYNQ UltraScale+系列主器件ZU19EG構(gòu)建的一款加速處理卡平臺(tái),支持 PCIE Gen3x16 模式,PS搭載一組64-bit
    的頭像 發(fā)表于 01-15 10:07 ?9次閱讀
    基于ZU19EG的4路100G光纖加速卡

    Zynq UltraScale+ MPSoC數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 12-30 14:37 ?0次下載

    AMD/Xilinx Zynq? UltraScale+ ? MPSoC ZCU102 評(píng)估套件

    架構(gòu)的 Mali-400 MP2 圖形處理單元。該套件的 ZCU102 板支持所有主要外設(shè)和接口,支持許多應(yīng)用的開發(fā)。 特征 針對(duì)使用 Zynq Ultrascale+ MPSoC 的快速應(yīng)用原型設(shè)計(jì)進(jìn)行了優(yōu)化
    的頭像 發(fā)表于 11-20 15:32 ?478次閱讀
    AMD/Xilinx <b class='flag-5'>Zynq</b>? <b class='flag-5'>UltraScale+</b> ? <b class='flag-5'>MPSoC</b> ZCU102 評(píng)估套件

    《DNK210使用指南 -CanMV版 V1.0》第三十二章 音頻FFT實(shí)驗(yàn)

    第三十二章 音頻FFT實(shí)驗(yàn) 本章將介紹CanMV下FFT的應(yīng)用,通過將時(shí)域采集到的音頻數(shù)據(jù)通過FFT為頻域。通過本章的學(xué)習(xí),讀者將學(xué)習(xí)到CanMV下控制FFT加速器進(jìn)行FFT的使用。本章分為如下幾個(gè)
    發(fā)表于 11-04 14:18

    在米爾電子MPSOC實(shí)現(xiàn)12G SDI視頻采集H.265壓縮SGMII萬兆以太網(wǎng)推流

    4K UHD音視頻廣播領(lǐng)域的優(yōu)勢(shì) 1.高性能與低功耗的結(jié)合:Zynq UltraScale+ MPSoC采用了16nm FinFET工藝,集成了多核處理器和可編程邏輯,能夠在提高性能的同時(shí)降低功耗,這對(duì)
    發(fā)表于 11-01 16:56

    在米爾電子MPSOC實(shí)現(xiàn)12G SDI視頻采集H.265壓縮SGMII萬兆以太網(wǎng)推流

    在本設(shè)計(jì)中,我們使用Zynq UltraScale+ MPSoC平臺(tái)(具體型號(hào)為MYIR XCZU4EV),通過FPGA實(shí)現(xiàn)對(duì)SDI視頻的H265壓縮,并通過SGMII接口推送到萬兆
    發(fā)表于 10-14 17:42

    使用TPS65086x PMIC為Xilinx Zynq UltraScale MPSoC供電

    電子發(fā)燒友網(wǎng)站提供《使用TPS65086x PMIC為Xilinx Zynq UltraScale MPSoC供電.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 11:11 ?0次下載
    使用TPS65086x PMIC為Xilinx <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b> <b class='flag-5'>MPSoC</b>供電

    開發(fā)板的PL有4片的DDR,怎么管理數(shù)據(jù)的傳輸

    各位大佬好, 我現(xiàn)在想在自己的開發(fā)板上面跑通正點(diǎn)原子的一個(gè)例程,這個(gè)例程是關(guān)于DDR讀寫,將1024個(gè)數(shù)寫入DDR,然后讀出來進(jìn)行對(duì)比,如果沒有錯(cuò)誤就點(diǎn)亮LED。 開發(fā)板的PL
    發(fā)表于 09-10 19:17

    一個(gè)更適合工程師和研究僧的FPGA提升課程

    Suite 1 設(shè)計(jì) FPGA; 嵌入式設(shè)計(jì)課程 02 ● 設(shè)計(jì) Zynq UltraScale+ RFSoC; ● 面向軟件開發(fā)者的Zynq
    發(fā)表于 06-05 10:09

    有關(guān)PL利用AXI總線控制PSDDR進(jìn)行讀寫(從機(jī)wready信號(hào)一直不拉高)

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

    中高端FPGA如何選擇

    為了使數(shù)據(jù)傳輸更加高效,Achronix FPGA上的Memory資源也是非常給力,不管是片上Ram還是DDR接口,都比Virtex Ultrascale+有很大優(yōu)勢(shì)。
    發(fā)表于 04-24 15:09

    AMD推出全新Spartan UltraScale+ FPGA系列

    AMD 已經(jīng)擁有 Zynq UltraScale+ 和 Artix UltraScale+ 系列,而 Spartan UltraScale+ FPG
    發(fā)表于 03-18 10:40 ?429次閱讀
    AMD推出全新Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b>系列

    FPGAPL固化流程

    電子發(fā)燒友網(wǎng)站提供《FPGAPL固化流程.pdf》資料免費(fèi)下載
    發(fā)表于 03-07 14:48 ?8次下載

    AMD推出全新Spartan UltraScale+ FPGA系列

    AMD日前正式推出了全新的Spartan UltraScale+ FPGA系列,該系列作為AMD廣泛的成本優(yōu)化型FPGA和自適應(yīng)SoC產(chǎn)品組合的最新成員,專為邊緣各種I/O密集型應(yīng)用
    的頭像 發(fā)表于 03-06 11:09 ?863次閱讀

    FPGA上為FPGA設(shè)計(jì)PCB的步驟詳解

    FPGA(Zynq? UltraScale+? MPSoC) 上的 Ubuntu 22.04 桌面映像上安裝了各種 EE 設(shè)計(jì)應(yīng)用程序(包括 KiCad),并用它設(shè)計(jì) PCB。
    的頭像 發(fā)表于 02-26 09:04 ?2042次閱讀
    在<b class='flag-5'>FPGA</b>上為<b class='flag-5'>FPGA</b>設(shè)計(jì)PCB的步驟詳解