日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > ZYNQ

		

ZYNQ7000系列中PS端與PL端的通信都是通過(guò)AXI總線進(jìn)行連接的,利用好AXI協(xié)議是PS與PL交互的基礎(chǔ),因此設(shè)計(jì)這個(gè)實(shí)驗(yàn)來(lái)進(jìn)一步了解兩者間的通信。

1.實(shí)驗(yàn)?zāi)康?

PL端通過(guò)AXI協(xié)議訪問(wèn)PS端的DDR內(nèi)存,其中包括往DDR寫數(shù)據(jù),以及讀取DDR內(nèi)部的數(shù)據(jù)。


圖 1 實(shí)驗(yàn)框圖

2.如何實(shí)現(xiàn)

看起來(lái)實(shí)驗(yàn)?zāi)康暮芎?jiǎn)單,但是對(duì)于像我這樣的初學(xué)者而言那還是有很多的問(wèn)題的。例如:

1.芯片內(nèi)部硬件怎么連接(好比兩個(gè)人打電話,總得知道電話號(hào)碼才能交流)

2.誰(shuí)是主機(jī)誰(shuí)是從機(jī)(好比兩個(gè)人打電話,誰(shuí)打給誰(shuí))

3.什么時(shí)候發(fā)數(shù)據(jù),什么時(shí)候讀數(shù)據(jù),總不能在別人還沒(méi)存好數(shù)據(jù)的時(shí)候讀吧(比如兩個(gè)人打電話,一個(gè)人在睡覺(jué),怎么都打不通吧)

3.設(shè)計(jì)思路

針對(duì)上述3個(gè)問(wèn)題,來(lái)設(shè)計(jì)總的思路,這樣能有條理的實(shí)現(xiàn)總體的功能。

4.芯片內(nèi)部硬件連接

ZYNQ中有9個(gè)AXI總線(如圖 1),其中包含4個(gè)General-Purpose Ports(AXI_GP),主要是一些常用的通信,位寬為32位,4個(gè)High-Performance Ports,高速的通信,位寬為64位,還有一個(gè)AXI_AXP這個(gè)我不太了解,不過(guò)位寬也是64位。


圖 2 ZYNQ示意圖

從圖 2中可以看出訪問(wèn)DDR3的接口有三條①、②、③條接口,其中PL的訪問(wèn)有兩條,分別為①和③,為了簡(jiǎn)單我們選個(gè)③,如果有興趣可以使用③來(lái)寫,①來(lái)讀的操作,這樣能更好的理解兩者間的交互。

5.從機(jī)與主機(jī)

這個(gè)簡(jiǎn)單的理解就是圖 2中的箭頭,箭頭連接的一段為從機(jī),沒(méi)有連接的一段為主。例如AXI_HP接口,主機(jī)就是PL,而箭頭連接的一段是PS,那么PS就是從機(jī)。

6.讀寫時(shí)序的控制

主要的問(wèn)題集中于PL什么時(shí)候?qū)憯?shù)據(jù);PL什么時(shí)候讀數(shù)據(jù)。簡(jiǎn)單的一種控制就是PL自己控制,例如先寫5個(gè)數(shù)據(jù),在讀5個(gè)數(shù)據(jù),為了增加點(diǎn)難度,我們可以這樣設(shè)計(jì),用PS來(lái)通知PL什么時(shí)候?qū)懀裁磿r(shí)候讀。那么又涉及到了兩者的通信,而這種通信就比較普通,不是內(nèi)存的控制,具有普適化的意義,這里使用AXI_GP來(lái)進(jìn)行通信,以PS為主機(jī)。

注:PS發(fā)數(shù)據(jù)是走紅色的路還是藍(lán)色的路是由其地址決定的

圖 3 PS發(fā)命令的端口

7.總結(jié)

最后我們使用AXI_GP接口來(lái)控制讀寫,其中PS為主機(jī);用AXI_HP接口來(lái)進(jìn)行DDR3數(shù)據(jù)的輸入與輸出,這時(shí)PL為主機(jī)。

8.程序設(shè)計(jì)流程圖

流程圖包含PS部分和PL部分。

9.PS部分流程設(shè)計(jì)

PS端的程序,我們采用輪訓(xùn)的方式進(jìn)行讀寫命令完成的獲取,也就是PS端不停地讀取PL端是否寫完,以及是否讀完的命令。后續(xù)可以拓展為采用中斷的方式進(jìn)行讀寫控制。


圖 4 PS端流程圖

10.PL部分流程設(shè)計(jì)

PL端AXI_HP的流程如圖 4所示,一個(gè)簡(jiǎn)單的狀態(tài)機(jī)來(lái)完成數(shù)據(jù)的讀寫,此時(shí)PL為主機(jī)。

圖 5 PL端AXI_HP的狀態(tài)機(jī)

PL端AXI_GP的流程圖如所示,也是一個(gè)簡(jiǎn)單的狀態(tài)機(jī),但是此時(shí)PL是從機(jī),PS是主機(jī),PS發(fā)出讀取(是否寫完或者是否讀?。┑臓顟B(tài),PL將此時(shí)的狀態(tài)返回給PS端,讓PS來(lái)進(jìn)行判斷是否需要進(jìn)行下一步操作。


圖 6 PL端AXI_GP的狀態(tài)機(jī)

11.程序設(shè)計(jì)

首先,設(shè)計(jì)FPGA端的程序。有幾個(gè)注意點(diǎn):

  1. PL端的邏輯一般都是先仿真,然后進(jìn)行板級(jí)調(diào)試,如果仿真沒(méi)過(guò),那么下載到板子上肯定不過(guò)(仿真很重要)。

  2. ZYNQ-7000的AXI協(xié)議不是和ARM一樣嚴(yán)格遵守的,有些端口是沒(méi)有用到的如圖 7,但是響應(yīng)這些一定要按協(xié)議來(lái)。

這里可以簡(jiǎn)單的想一下,PS端的DDR怎么能用PL來(lái)仿真呢?我能想到的解決方法有2個(gè)(歡迎提供更多的方法):

  1. 在PL端利用ddr的ip核選擇AXI模式進(jìn)行仿真,操作比較麻煩,同時(shí)仿真時(shí)間長(zhǎng),但是參考價(jià)值高

  2. 就在PL端用一個(gè)帶AXI4總線的bram進(jìn)行仿真,比較簡(jiǎn)單,但是參考價(jià)值低

為了偷懶,我這邊就用方法2來(lái)仿真。這個(gè)IP中有些端口也是沒(méi)有用到的

圖 7 axi_bram s_axi_awlock端口

根據(jù)4.2中的流程圖,以及5中的分析,自己編寫axi協(xié)議后,得到仿真圖如圖 8 AXI_HP的仿真,采用AXI INCR突發(fā)模式,突發(fā)大小為8個(gè)字節(jié),突發(fā)長(zhǎng)度為2。突發(fā)的地址是根據(jù)ZYNQ中的硬件地址來(lái)的如圖 9,采用32’h0008_0000為起始地址(仿真的起始地址是0)。

圖 8 PL端的AXI_HP仿真圖

那么往ddr3寫數(shù)據(jù)的地址應(yīng)該怎么確定呢?圖 9中可以看到AXI_HP可以用的地址,我用的起始地址是32’h0008_0000。

圖 9 PS的地址映射

這里有個(gè)問(wèn)題可以想一下,PS端的程序也是跑在DDR3里面的,那么怎么才能使得PL端訪問(wèn)的地址與程序跑的地址不沖突呢?(這個(gè)可以在評(píng)論中給點(diǎn)意見(jiàn))

我這里的解決方案有兩個(gè):

  1. 簡(jiǎn)單的就是寫的地址與程序的地址不一樣就好了

  2. 就是在PS端分配好內(nèi)存用來(lái)寫ddr,然后將這個(gè)地址的起始地址發(fā)給PL,這樣肯定不會(huì)有沖突(也許xilinx dma那個(gè)ip核就是這么干的吧)

同樣為了偷懶,我采用第一個(gè)方法,那么怎么知道程序跑的地址呢?

在SDK的工程里面有個(gè)lscript.ld里面有許多地址的信息如圖 10,圖 11??梢钥吹竭@邊的地址是從100000開(kāi)始的,所以我用的地址不在這里。

圖 10圖 11

12.程序驗(yàn)證結(jié)果

因?yàn)槭煜ち艘稽c(diǎn)AXI協(xié)議,就自己寫了個(gè)AXI通信的模塊,然后實(shí)現(xiàn)了PL與ddr的通信,以及PL與PS的通信。

本來(lái)用黑金zynq7020的板子驗(yàn)證的,結(jié)果電源模塊壞了,找客服修說(shuō)過(guò)保了,就不能修了,哎,好可惜。。。。。。。。。。。應(yīng)該是二極管擊穿導(dǎo)致的。

于是接了個(gè)ZCU102的開(kāi)發(fā)板來(lái)測(cè)試這個(gè)程序,不過(guò)原理都是一樣,只是代碼上的地址可能要改一下。

寫數(shù)據(jù)結(jié)果如圖 12

圖 12 寫數(shù)據(jù)

讀數(shù)據(jù)結(jié)果如圖 13

圖 13 讀數(shù)據(jù)

上述讀寫的結(jié)果一致,完成了本次實(shí)驗(yàn),這次實(shí)驗(yàn)中最重要的部分就是對(duì)AXI協(xié)議的理解。

參考資料

  1. xilinx.com/support/docu ug585 zynq7000的說(shuō)明書

  2. xilinx.com/support/answ 解決時(shí)鐘分配報(bào)錯(cuò)

  3. china.xilinx.com/suppor xilinx axi協(xié)議

  4. static.docs.arm.com/ihi arm axi協(xié)議

附錄

Block Design如圖 14 這個(gè)是ZCU102的,如果是zynq-7000.只要把中間的換了就好。


圖 14 Block Design


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉