本文包含兩部分內(nèi)容:1)AXI接口簡介;2)AXI IP核的創(chuàng)建流程及讀寫邏輯分析。
1 AXI簡介(本部分內(nèi)容參考官網(wǎng)資料翻譯)
自定義IP核是Zynq學(xué)習(xí)與開發(fā)中的難點(diǎn),AXI IP核又是十分常用的自定義IP核,因此掌握AXI IP核的創(chuàng)建流程及通信機(jī)制顯得尤為重要。要搞懂AXI IP核,就必須先了解AXI接口。先介紹如下:
1) AXI(Advanced eXtensible Interface)協(xié)議主要描述了主設(shè)備(Master)和從設(shè)備(Slave)之間的數(shù)據(jù)傳輸方式,主設(shè)備和從設(shè)備之間通過握手信號(hào)建立連接。當(dāng)主設(shè)備的數(shù)據(jù)準(zhǔn)備好時(shí),會(huì)發(fā)出和維持VALID信號(hào),表示數(shù)據(jù)有效;當(dāng)從設(shè)備準(zhǔn)備好接收數(shù)據(jù)時(shí),會(huì)發(fā)出READY信號(hào)。數(shù)據(jù)只有在這兩個(gè)信號(hào)都有效時(shí)才開始傳輸。
2) AXI協(xié)議(又稱AXI4.0),包括3種接口標(biāo)準(zhǔn):AXI4、AXI-Stream、AXI-lite。
AXI4:適用于要求數(shù)據(jù)高速傳輸?shù)膱龊稀?/p>
AXI-Stream:如FIFO,數(shù)據(jù)傳輸不需要地址,而是主從設(shè)備間直接進(jìn)行數(shù)據(jù)的讀寫,主要用于高速數(shù)據(jù)傳輸?shù)膱龊?,?a href="http://wenjunhu.com/v/" target="_blank">視頻、高速AD等。
AXI-lite:可用于單個(gè)數(shù)據(jù)傳輸,主要用于訪問一些低速外設(shè)。
3) AXI接口具有5個(gè)獨(dú)立通道:WriteAddress通道、Write Data通道、Write Response通道、Read Address通道、Read Address通道、Read Data通道。
4) 讀/寫通道并行地進(jìn)行數(shù)據(jù)交互,明顯提高了數(shù)據(jù)吞吐量,對(duì)寫數(shù)據(jù),從設(shè)備會(huì)返回確認(rèn)信號(hào),這樣可以保證寫數(shù)據(jù)通道的安全,讀/寫模型分別如圖1-1、圖1-2。
讀模型:主設(shè)備發(fā)送讀地址占用信號(hào)給從設(shè)備→從設(shè)備將數(shù)據(jù)寫入主設(shè)備,實(shí)現(xiàn)讀操作。
寫模型:主設(shè)備發(fā)送寫地址占用信號(hào)給從設(shè)備→主設(shè)備將數(shù)據(jù)寫入從設(shè)備→從設(shè)備回復(fù)確認(rèn)收到信號(hào),實(shí)現(xiàn)寫操作。
5) AXI協(xié)議嚴(yán)格來講是一個(gè)點(diǎn)對(duì)點(diǎn)的主/從接口協(xié)議,當(dāng)多個(gè)外設(shè)需要互相交互數(shù)據(jù)時(shí),我們需要加入一個(gè)AXI Interconnect模塊,也就是AXI互聯(lián)矩陣,AXI Interconnect的作用是將一個(gè)或多個(gè)AXI主設(shè)備連接到一個(gè)或多個(gè)AXI 從設(shè)備。
6) AXI Interconnect IP核最多支持16個(gè)主設(shè)備和16個(gè)從設(shè)備,如果需要更多的接口可以在設(shè)計(jì)中加入多個(gè)IP核。
7) ZYNQ中的AXI接口包含三個(gè)類型,共9個(gè),主要用于PS與PL的互聯(lián)。
(1)AXI_HP接口(PL模塊作為主設(shè)備)
包括4個(gè),主要用于PL訪問PS上的存儲(chǔ)器。每個(gè)接口都有兩個(gè)FIFO緩沖器,一個(gè)是讀緩沖,一個(gè)是寫緩沖。
【實(shí)例:設(shè)計(jì)視頻處理時(shí),高清的圖像可由FPGA直接完成采集、預(yù)處理,然后通過AXI_HP接口將數(shù)據(jù)高速傳輸至DDR中,供APU(加速處理器)完成進(jìn)一步的圖像處理】
(2)AXI_ACP接口(PS端是從設(shè)備端)
只有1個(gè),又叫加速器一致性端口,適合做專用指令加速器模塊接口。PL端可直接從PS部分的Cache中拿到CPU的計(jì)算結(jié)果,同時(shí)也可以第一時(shí)間將邏輯加速運(yùn)算的結(jié)果送至Cache中,延時(shí)很小。
(3)AXI_GP接口(PS端是從設(shè)備端)
通用AXI接口,總共有4個(gè)??捎糜诳刂齐姍C(jī)運(yùn)轉(zhuǎn),獲取傳感器信號(hào)等邏輯模塊的連接接口。
2 AXI IP核的創(chuàng)建流程及讀寫邏輯小結(jié)
(1)AXI IP核的創(chuàng)建流程(以AXI PWM IP為例)
環(huán)境:win 7 +64(i5,4G) Vivado 2014.4+Xilinx SDK2014.4
開發(fā)板:zedboard version d xc7z020clg484-1
1) 新建工程→Tools → Create and PackageIP → Next → Create a new AXI4 peripheral → 修改name: axi_pwm(如圖1)→ Next → 為用戶IP核添加AXI4總線接口的支持(如圖2)→ Add IP to the repository →Finish
圖1
圖2
2) 在Flow Navigator中選擇 IP Catalog,打開IP管理器,看到剛才添加的axi_pwm_v1.0(如圖3)→ 右擊axi_pwm_v1.0 → Edit in IPPackager選項(xiàng),單擊OK,此時(shí)系統(tǒng)會(huì)自動(dòng)打開另一個(gè)Vivado IDE來對(duì)用戶IP核進(jìn)行編輯,完成IP核的封裝。
3) 在新打開的VivadoIDE中,在source窗口中雙擊打開axi_pwm_v1_0.v頂層文件,添加用戶自定義端口pwm_out(如圖4),并對(duì)端口進(jìn)行例化(如圖5)。
圖4
圖5
4) 雙擊打開axi_pwm_v1_0_S00_AXI.v實(shí)例化文件,添加端口聲明(如圖6),添加用戶信號(hào)(如圖7),添加用戶邏輯(如圖8)。
圖6
圖7
圖8
5) 切換到Package IP-axi_pwm窗口,點(diǎn)擊CustomizationParameters,單擊如圖9所示鏈接,對(duì)剛才修改過的頂層文件進(jìn)行更新。
圖 9
6) 點(diǎn)擊Review and Package →Re-Package IP,至此,AXI PWM IP核設(shè)計(jì)完成。
(2)讀寫邏輯小結(jié)
a. 輸入信號(hào):
Input
Name
Remark
S_AXI_ACLK
全局時(shí)鐘信號(hào)
S_AXI_ARESETN
全局復(fù)位信號(hào)
S_AXI_AWADDR
寫地址信號(hào)
主機(jī)發(fā)送,從機(jī)接收
S_AXI_AWPROT
寫通道保護(hù)信號(hào)
這個(gè)信號(hào)標(biāo)志著傳輸?shù)奶貦?quán)與安全
S_AXI_AWVALID
寫地址有效信號(hào)
S_AXI_WDATA
寫數(shù)據(jù)信號(hào)
主機(jī)發(fā)送,從機(jī)接收
S_AXI_WSTRB
寫選通信號(hào)
這個(gè)信號(hào)表示寫字節(jié)通道保持有效,在每8位的寫數(shù)據(jù)總線上有1位被選通
S_AXI_WVALID
寫有效信號(hào)
S_AXI_BREADY
寫答復(fù)準(zhǔn)備好信號(hào)
這個(gè)信號(hào)表示主機(jī)可以接收到寫答復(fù)信號(hào)
S_AXI_ARADDR
讀地址信號(hào)
S_AXI_ARPROT
讀保護(hù)信號(hào)
S_AXI_ARVALID
讀地址有效信號(hào)
S_AXI_RREADY
讀準(zhǔn)備好信號(hào)
表示主機(jī)可以接收從機(jī)發(fā)送的數(shù)據(jù)并且給予答復(fù)
b. 輸出信號(hào):
Output
Name
Remark
S_AXI_AWREADY
寫地址準(zhǔn)備好信號(hào)
表示主機(jī)可以控制寫數(shù)據(jù)總線實(shí)現(xiàn)寫功能
S_AXI_WREADY
寫準(zhǔn)備好信號(hào)
表示從機(jī)可以接收主機(jī)發(fā)送的數(shù)據(jù)
S_AXI_BRESP
寫答復(fù)信號(hào)
標(biāo)志從機(jī)是否接收到主機(jī)發(fā)送的數(shù)據(jù)
S_AXI_BVALID
寫答復(fù)有效信號(hào)
表示從機(jī)接收到主機(jī)發(fā)送的數(shù)據(jù)
S_AXI_ARREADY
讀地址準(zhǔn)備好信號(hào)
表示主機(jī)可以讀取數(shù)據(jù)
S_AXI_RDATA
讀數(shù)據(jù)信號(hào)
從機(jī)發(fā)送,主機(jī)接收,即寫入主機(jī)
S_AXI_RRESP
讀答復(fù)信號(hào)
表示讀數(shù)據(jù)傳輸?shù)臓顟B(tài)
S_AXI_RVALID
讀有效信號(hào)
表示有效的數(shù)據(jù)已傳輸
c. 4個(gè)從機(jī)寄存器(在創(chuàng)建AXI IP時(shí),可以自己設(shè)定個(gè)數(shù),如圖2)
slv_reg0; slv_reg1; slv_reg2; slv_reg3;
d. 讀寫邏輯示意
寫://寫準(zhǔn)備好信號(hào)——寫準(zhǔn)備好地址總線被占用——寫地址通道有效——寫地址選擇——寫數(shù)據(jù)傳輸——寫應(yīng)答回復(fù)
讀://讀地址準(zhǔn)備好——讀總線被占用——讀地址有效信號(hào)產(chǎn)生——讀數(shù)據(jù)總線有效——讀數(shù)據(jù)有效——讀地址有效——主機(jī)寄存器讀取數(shù)據(jù)
注:寫的比較片面,期待大家的意見及補(bǔ)充。
-
IP
+關(guān)注
關(guān)注
5文章
1708瀏覽量
149554 -
AXI
+關(guān)注
關(guān)注
1文章
127瀏覽量
16631
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論