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

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

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

【FPGA ZYNQ Ultrascale+ MPSOC教程】33.BRAM實(shí)現(xiàn)PS與PL交互

FPGA技術(shù)專欄 ? 來(lái)源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-02-22 13:51 ? 次閱讀

原創(chuàng)聲明:

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

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

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

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

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

有時(shí)CPU需要與PL進(jìn)行小批量的數(shù)據(jù)交換,可以通過(guò)BRAM模塊,也就是Block RAM實(shí)現(xiàn)此要求。本章通過(guò)Zynq的GP Master接口讀寫PL端的BRAM,實(shí)現(xiàn)與PL的交互。在本實(shí)驗(yàn)中加入了自定義的FPGA程序,并利用AXI4總線進(jìn)行配置,通知其何時(shí)讀寫B(tài)RAM。

以下為本實(shí)驗(yàn)原理圖,CPU通過(guò)AXI BRAM Controller讀取BRAM數(shù)據(jù),CPU僅配置自定義的PL BRAM Controller的寄存器,不通過(guò)它讀寫數(shù)據(jù)。

o4YBAGAvUfmAajZJAAAkH4r01ro042.jpg

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

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

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

以“ps_hello”為基礎(chǔ),另存為一份工程,并配置打開(kāi)ZYNQ的中斷

1)首先添加AXI BRAM Controller模塊,用于PS端控制BRAM,雙擊打開(kāi)配置,連接AXI總線,可用于讀寫B(tài)RAM模塊,AXI模式設(shè)置為AXI4,數(shù)據(jù)寬度設(shè)置為32位,memory depth不在這里設(shè)置,需要在Address Editor里設(shè)置。BRAM端口數(shù)量設(shè)置為1個(gè),用于連接雙口RAM的PORTA。不使能ECC功能。

pIYBAGAvUfqAc-bjAACDoygKorQ864.jpg

由于AXI4總線為字節(jié)詢址,BRAM數(shù)據(jù)寬度設(shè)置也是32位,同樣都是32位數(shù)據(jù)寬度,因此在映射到BRAM地址時(shí),需要按4字節(jié)詢址,即去掉最后兩位,下圖為BRAM控制器與BRAM的映射關(guān)系。

o4YBAGAvUfqAFaAtAACrR9U3Rvw733.jpg

2)添加BRAM模塊,BRAM設(shè)置如下,有兩種模式選擇,standalon模式,此模式可以自由配置RAM的數(shù)據(jù)寬度和深度。BRAM Controller模式,此模式下地址線和數(shù)據(jù)端口默認(rèn)為32位,本實(shí)驗(yàn)因?yàn)橛玫搅薆RAM控制器,因此選擇BRAM Controller模式。Memory類型選擇雙口RAM,一端連BRAM控制器,一端連PL RAM控制器。

pIYBAGAvUfuAXyysAABh6C1Jcpc436.jpg

3) 添加自定義的PL RAM控制器pl_ram_ctrl,功能很簡(jiǎn)單,start信號(hào)有效后開(kāi)始讀取BRAM的數(shù)據(jù),可通過(guò)ILA邏輯分析儀觀察讀取的數(shù)據(jù),PL RAM控制器讀BRAM結(jié)束后,開(kāi)始向BRAM寫數(shù)據(jù),寫完數(shù)據(jù)使能intr信號(hào),即中斷信號(hào),CPU即可讀取BRAM的數(shù)據(jù)。將PL控制器信號(hào)與BRAM的PORTB連接。自定義IP在ip_repo文件夾中。

o4YBAGAvUfuAW0sQAAAYEYyFdfI853.jpg

如果想添加自定義IP到IP庫(kù)中,點(diǎn)擊IP Catalog,在Vivado Repository右鍵點(diǎn)擊Add Repository

pIYBAGAvUfyADZJ3AACHKCtMixo678.jpg

找到自定義IP所在文件夾,點(diǎn)擊Select

o4YBAGAvUfyAOvxiAAB8aNf7_Nk835.jpg

跳出窗口,選擇IP,點(diǎn)擊OK

pIYBAGAvUf2AOPYeAAA1zyTx8B8591.jpg

即可看到,出現(xiàn)了剛添加的IP

o4YBAGAvUf2AMjITAAAO1zmfzxs593.jpg

4)連接AXI BRAM Controller的BRAM_PORTA到BRAM的PORTA,連接pl_bram_ctrl的BRAM_PORT到BRAM的PORTB。連接pl_bram_ctrl模塊的中斷信號(hào)intr到ZYNQ的中斷口。并點(diǎn)擊自動(dòng)連接

pIYBAGAvUf6ABowYAABLUVC85Ps101.jpg

5)在Address Editor里選擇BRAM詢址大小,如設(shè)置4K空間,即可詢址BRAM空間為1K深度。

o4YBAGAvUf-ABaU4AABBrQnjmQ4136.jpg

Block Design添加邏輯分析儀方法

1)再介紹一種添加邏輯分析儀的方法,選中BRAM_PORT總線和intr中斷,右鍵選擇Debug

pIYBAGAvUgCALxSHAACMafquSm0280.jpg

2)可以看到總線上多了小昆蟲(chóng),點(diǎn)擊Run Connection Automation,自動(dòng)連接

o4YBAGAvUgCAPjMAAACvsPHOjcA857.jpg

自動(dòng)添加了一個(gè)ILA模塊,并且有一個(gè)總線接口,一個(gè)信號(hào)接口

pIYBAGAvUgCAFyZ3AABw7dTf6Qc800.jpg

3)保存設(shè)計(jì),之后點(diǎn)擊Generate Bitsream生成bit文件,并導(dǎo)出Hardware信息。

o4YBAGAvUgGAJjwyAAAIFLrrPXg231.jpg

軟件工程師工作內(nèi)容

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

2. Vitis程序開(kāi)發(fā)

1)程序設(shè)計(jì)流程為:輸入起始地址和長(zhǎng)度CPU通過(guò)BRAM控制器寫入BRAM數(shù)據(jù)通知PL控制器讀取BRAM數(shù)據(jù)PL內(nèi)部讀完后向相同位置寫入數(shù)據(jù),初始數(shù)據(jù)由CPU告知寫完后使能write_end信號(hào),觸發(fā)GPIO中斷中斷讀取BRAM數(shù)據(jù),打印顯示

2)進(jìn)入Vitis后,在Vitis下新建項(xiàng)目,已經(jīng)準(zhǔn)備好程序。程序也比較簡(jiǎn)單,首先中斷設(shè)置

pIYBAGAvUgGAMOjXAAAJDuPuxKs640.jpg

3)While語(yǔ)句中需要輸入起始地址和長(zhǎng)度,之后調(diào)用bram_write函數(shù)

o4YBAGAvUgKAa9lQAAAVXwq5Ezg057.jpg

4)在bram_read_write();函數(shù)里先通過(guò)BRAM控制器寫入數(shù)據(jù),數(shù)據(jù)初值為TEST_START_VAL,之后配置PL RAM控制器參數(shù),有長(zhǎng)度,起始地址,初始數(shù)據(jù),以及開(kāi)始信號(hào)。并在函數(shù)中判斷測(cè)試長(zhǎng)度是否超出BRAM控制器地址范圍,如果超出,會(huì)報(bào)錯(cuò),需要重新輸入地址和長(zhǎng)度。

pIYBAGAvUgKAT3TeAAAuzVMVHuM497.jpg

5)中斷服務(wù)程序中,BRAM控制器讀取BRAM的數(shù)據(jù),并打印

o4YBAGAvUgOAByFiAAAcv37JcQw761.jpg

3. 實(shí)驗(yàn)現(xiàn)象

1)打開(kāi)串口

pIYBAGAvUgOAEqgIAAAVhB8lrck797.jpg

2)通過(guò)Run Configurations下載程序

o4YBAGAvUgSAP0VeAAC2MFPOhIU525.jpg

3)打開(kāi)Vivado的Hardware Manager(與PL端聯(lián)合調(diào)試),設(shè)置將intr中斷信號(hào)作為觸發(fā)信號(hào),選擇上升沿觸發(fā),點(diǎn)擊開(kāi)始按鈕,可以看到hw_ila_1變成了Waiting for trigger狀態(tài)

pIYBAGAvUgSAZSN2AAChcfYWC28792.jpg

4)在串口軟件中,輸入起始地址,由于BRAM詢址為1K,那么可以設(shè)置為0~1023,長(zhǎng)度設(shè)置為1~1024,注意起始地址+長(zhǎng)度不要超過(guò)1024,因?yàn)槌隽嗽冎房臻g。

o4YBAGAvUgWAMvR4AAAXjy79t0I009.jpg

5)輸入的數(shù)據(jù)為十進(jìn)制數(shù),輸入結(jié)束按回車

pIYBAGAvUgWAZkydAAAhOBKPIVs712.jpg

6)打開(kāi)ILA邏輯分析儀,可以看到已經(jīng)觸發(fā),首先是PL控制器從BRAM讀數(shù)據(jù),之后是寫數(shù)據(jù),可以看到紅色為PL讀出的BRAM數(shù)據(jù),正是CPU寫入的數(shù)據(jù),從12開(kāi)始,共10個(gè)數(shù)據(jù),PL寫入的數(shù)據(jù)為黃色部分從1開(kāi)始,共10個(gè)數(shù)據(jù),正與上圖CPU讀BRAM的數(shù)據(jù)相符。

o4YBAGAvUgaAYPWcAAB8R35c8fc125.jpg

同樣也能看到中斷信號(hào)的狀態(tài)

pIYBAGAvUgaAWXsnAAB6goLIlSM691.jpg

7)如果超出范圍,打印錯(cuò)誤信息,需要重新輸入有效信息

o4YBAGAvUgeAGRG3AAAmIyTtfGs915.jpg

4. 本章小結(jié)

以上就是PS與PL通過(guò)BRAM實(shí)現(xiàn)低帶寬數(shù)據(jù)交互的實(shí)驗(yàn),兩者通過(guò)GP口進(jìn)行數(shù)據(jù)互連,可以實(shí)現(xiàn)小批量的數(shù)據(jù)交互。

知識(shí)點(diǎn)為邏輯分析儀的使用,中斷的使用,自定義IP等。

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

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601232
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210828
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47101
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    24230
  • BRAM
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    10936
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發(fā)表于 01-07 16:02

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發(fā)表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發(fā)表于 02-02 07:53

    閑話Zynq UltraScale+ MPSoC(連載1)

    閑話Zynq UltraScale+ MPSoC 作者: Hello,Panda 時(shí)隔三年,Xilinx推出了其全新的異構(gòu)SoC,大名叫Zynq U
    發(fā)表于 02-08 08:24 ?721次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載1)

    閑話Zynq UltraScale+ MPSoC(連載5)

    作者:Hello,Panda Part3 I/O資源 和Zynq-7000相比較,Zynq UltraScale+ 增強(qiáng)了PS端的IO性能;PL
    發(fā)表于 02-08 08:29 ?696次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載5)

    Ti推出面向Zynq UltraScale+ MPSoC的電源參考設(shè)計(jì)

    本篇文章將與大家討論的是Xilinx Zynq UltraScale+ MPSoC的電源解決方案參考設(shè)計(jì)。
    發(fā)表于 03-14 02:24 ?3652次閱讀
    Ti推出面向<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的電源參考設(shè)計(jì)

    Xilinx基于ARM的Zynq-7000和Zynq UltraScale+ MPSoC及RFSoC器件是否存在安全漏洞

    本文試圖搞清楚在 Xilinx 基于 ARM 的 Zynq-7000、Zynq UltraScale+ MPSoCZynq
    發(fā)表于 06-28 15:53 ?2658次閱讀

    Zynq UltraScale+ MPSoC的發(fā)售消息

    Zynq?UltraScale+?MPSoC,現(xiàn)已開(kāi)始發(fā)售。視頻向您重點(diǎn)介紹了Xilinx UltraScale +產(chǎn)品組合的第一位成員
    的頭像 發(fā)表于 11-27 06:47 ?3558次閱讀

    米爾科技Zynq UltraScale+ MPSoC技術(shù)參考手冊(cè)介紹

    Zynq UltraScale+ MPSoC是Xilinx推出的第二代多處理SoC系統(tǒng),在第一代Zynq-7000的基礎(chǔ)上做了全面升級(jí),在單芯片上融合了功能強(qiáng)大的處理器系統(tǒng)(
    的頭像 發(fā)表于 11-18 11:03 ?3096次閱讀
    米爾科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技術(shù)參考手冊(cè)介紹

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發(fā)表于 02-23 06:00 ?15次下載
    如何調(diào)試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米爾電子zynq ultrascale+ mpsoc底板外設(shè)資源清單分享

    米爾電子推出的國(guó)內(nèi)首款zynq ultrascale+ mpsoc平臺(tái)核心板(及開(kāi)發(fā)板):MYC-CZU3EG吸引了人工智能、工業(yè)控制、嵌入式視覺(jué)、ADAS、算法加速、云計(jì)算、有線/無(wú)線通信等
    發(fā)表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設(shè)資源清單分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片設(shè)計(jì)

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片設(shè)計(jì),應(yīng)用于工廠自動(dòng)化、機(jī)器視覺(jué)、工業(yè)質(zhì)檢等工業(yè)領(lǐng)域
    發(fā)表于 11-02 14:35 ?1544次閱讀

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC的隔離設(shè)計(jì)示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設(shè)計(jì)示例

    Zynq UltraScale+ MPSoC驗(yàn)證數(shù)據(jù)手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC驗(yàn)證數(shù)據(jù)手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 09-15 10:13 ?0次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>驗(yàn)證數(shù)據(jù)手冊(cè)