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

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

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

如何創(chuàng)建基本AXI4-Lite Sniffer IP以對特定地址上正在發(fā)生的讀寫傳輸事務(wù)進(jìn)行計數(shù)

YCqV_FPGA_EETre ? 來源:FPGA開發(fā)圈 ? 2020-04-30 16:24 ? 次閱讀

引言

在某些情況下,通過嗅探 AXI 接口來分析其中正在發(fā)生的傳輸事務(wù)是很有用的。在本文中,我將為大家演示如何創(chuàng)建基本 AXI4-Lite Sniffer IP 以對特定地址上正在發(fā)生的讀寫傳輸事務(wù)進(jìn)行計數(shù)。

首先,編寫 HDL (Verilog) 代碼,然后將其封裝為 IP,最后將此 IP 添加到 IP IntegratorBlock Design (BD) 中。

我們將創(chuàng)建包含 AXI4-Lite 輸入接口的 AXI Sniffer 用于嗅探 AXI4-Lite 鏈接,并包含 2 項輸出以提供在特定地址上發(fā)生的讀寫傳輸事務(wù)的數(shù)量 (地址可通過 GUI 配置)。

創(chuàng)建 AXI Sniffer IP 以在 Vivado IP Integrator 中使用(教程)

1. 下載設(shè)計文件

https://forums.xilinx.com/xlnx/attachments/xlnx/support_blog/132/1/AXI_Basics_5.zip

2. 打開 Vivado 2019.2

3. 在 Tcl 控制臺中,使用 cd 命令導(dǎo)航到解壓縮的目錄 (cd AXI_Basics_5)

4.在 Tcl 控制臺中,使用 source 命令生成腳本 tcl (source ./create_proj.tcl)


這將創(chuàng)建一個附帶 BD 的 Vivado 工程,此 BD 包含 AXI VIP (設(shè)置為 AXI4-Lite 主接口) 和 AXI GPIO IP。這與我們在AXI 基礎(chǔ)第 3 講一文中完成的最終設(shè)計十分相似。

在此工程中,我們將創(chuàng)建 AXI Sniffer IP,然后嘗試將其連接到位于 AXI VIP 和 AXI GPIO IP 之間的 AXI4-Lite 接口

首先,讓我們來編寫適用于 AXI Sniffer IP 的 HDL (Verilog) 代碼

5.雙擊“源 (Sources)”窗口中的 AXI_Sniffer.v 文件以在文本編輯器中將其打開

首先,需要聲明 IP 端口。我們需要 1 個 AXI4-Lite 接口。根據(jù) ARM 網(wǎng)站上提供的 AMBA AXI和 ACE協(xié)議規(guī)范 (掃碼查看),AXI4-Lite 接口上所需信號如下

我們還需要添加 2 個端口 (read_accesses 和 write_accesses),用于輸出監(jiān)測地址的讀寫訪問次數(shù)。

6. 添加以下代碼以聲明所有必需的信號。

module AXI_Sniffer

(

input aclk,

input aresetn,

input s_axi_arvalid,

input s_axi_arready,

input [31:0] s_axi_araddr,

input [2:0] s_axi_arprot,

input s_axi_rvalid,

input s_axi_rready,

input [31:0] s_axi_rdata,

input [1:0] s_axi_rresp,

input s_axi_awvalid,

input s_axi_awready,

input [31:0] s_axi_awaddr,

input [2:0] s_axi_awprot,

input s_axi_wvalid,

input s_axi_wready,

input [31:0] s_axi_wdata,

input [3:0] s_axi_wstrb,

input s_axi_bready,

input s_axi_bvalid,

input [1:0] s_axi_bresp,

output [31:0] read_accesses,

output [31:0] write_accesses

);

注:在本例中,所有 AXI4-Lite 信號均設(shè)置為輸入,因?yàn)?IP 不應(yīng)對 AXI4-Lite 接口執(zhí)行任何操作,僅限于監(jiān)測其中的流量

然后,IP 需要 1 個參數(shù)用于設(shè)置要監(jiān)測的地址

7.添加以下代碼以添加用于監(jiān)測地址的參數(shù)

module AXI_Sniffer

#(

parameter SLAVE_BASE_ADDR = 32'h40000000

)

(

最后,我們需要添加用于對地址訪問次數(shù)進(jìn)行計數(shù)的邏輯。監(jiān)測地址出現(xiàn)在 axi 總線上時,每次 r/wready 和 r/wvalid處于高位時,此代碼都會將計數(shù)增加 1。

8. 請將以下代碼添加到此文件中

reg [31:0] read_accesses_cnt;

reg [31:0] write_accesses_cnt;

assign read_accesses = read_accesses_cnt;

assign write_accesses = write_accesses_cnt;

//Check the Read Address Channel

always @(posedge aclk)

begin

if(aresetn == 0)

begin

read_accesses_cnt = 0;

end

else if (s_axi_arready && s_axi_arvalid && s_axi_araddr == SLAVE_BASE_ADDR)

begin

read_accesses_cnt = read_accesses_cnt + 1;

end

else

read_accesses_cnt = read_accesses_cnt;

end

//Check the Write Address Channel

always @(posedge aclk)

begin

if(aresetn == 0)

begin

write_accesses_cnt = 0;

end

else if (s_axi_awready && s_axi_awvalid && s_axi_awaddr == SLAVE_BASE_ADDR)

begin

write_accesses_cnt = write_accesses_cnt + 1;

end

else

write_accesses_cnt = write_accesses_cnt;

end

endmodule

9.保存 AXI_Sniffer.v 文件

在 IP Integrator 中,提供了一項允許用戶將 HDL 文件導(dǎo)入 BD 的功能。

10.右鍵單擊 BD,然后單擊“添加模塊 (Add Module...)”

可以看到,該工具將所有 s_axi_* 信號組合為接口 s_axi。但如果我們嘗試將此接口連接到 AXI VIP 與 AXI GPIO 之間的現(xiàn)有連接上,該工具將會禁止此操作。

這是因?yàn)閷?dǎo)入模塊工具已將 s_axi 接口設(shè)置為從接口,而 Vivado 僅允許每個主接口連接到一個從接口。

要創(chuàng)建監(jiān)測 IP,我們需要將代碼封裝為 IP,這將為我們提供更多接口選項。

11.單擊“工具 (Tools) > 創(chuàng)建并封裝新 IP (Create and Package New IP...) ”

12.在“Create and Package New IP”的第 2 個頁面上,選擇“封裝指定目錄 (Package a specified directory)”,然后單擊“下一步 (Next)”

13.選中 AXI_Basics_5/src/hdl/AXI_Sniffer 目錄,然后單擊“Next > Next(保留默認(rèn)設(shè)置) > 完成 (Finish)

這樣將創(chuàng)建 IP Packager 工程 。在“封裝 IP (Package IP)”選項卡中,單擊“端口和接口 (Ports and Interface)”部分。

可以看到,工具又一次將 s_axi_* 信號分組構(gòu)成 s_axi 接口。但此接口仍設(shè)置為從接口。要連接到現(xiàn)有 AXI 總線,我們需要告知該工具,此接口并非從接口,而是監(jiān)測接口。

14.右鍵單擊 s_axi 接口,然后單擊“編輯接口 (Edit Interface...)”

15.在“Edit Interface”窗口的“常規(guī) (General)”選項卡中,將“模式 (Mode)”更改為“monitor”

16. 然后單擊“端口映射 (Port Mapping)”選項卡,并啟用“隱藏已映射的端口 (Hide Mapped Port)”

17.對于 IP 的每個名為 s_axi_* 的物理端口,查找接口的匹配“邏輯端口 (Logical Ports)”,然后單擊“映射端口 (Map Ports)”

18.完成所有 s_axi_* 端口映射后,單擊“確定 (OK)”,以關(guān)閉“編輯接口 (Edit Interface)”窗口

19. 再次右鍵單擊 s_axi 接口,然后單擊“關(guān)聯(lián)時鐘 (Associate Clocks...)”

20. 在下一個窗口中,應(yīng)該會自動選中 aclk。單擊“OK”

21. 單擊“復(fù)查并封裝 (Review and Package)”部分,然后單擊“封裝 IP (Package IP)”。

這樣將關(guān)閉 IP Packager 工程。

22. 從初始工程的 BD 中移除先前的AXI_Sniffer IP
23. 右鍵單擊初始工程的 BD,然后單擊“添加 IP (Add IP)”。找到 AXI Sniffer IP(應(yīng)已自動添加到 IP 目錄中),并將其添加到 BD

24. 嘗試將新 AXI Sniffer IP 的 s_axi 接口連接到 AXI VIP 與 AXI GPIO 之間的總線?,F(xiàn)在,此操作已可行。

25. 將定制 IP 的 aclk 和 aresetn 輸入端口連接到對應(yīng)的 BD 端口。
26. 驗(yàn)證 BD 設(shè)計。確保其中不存在任何嚴(yán)重警告或錯誤。保存 BD。

最后,我們可在仿真中驗(yàn)證此 IP 是否有效。
27. 啟動仿真,將 AXI_Sniffer IP 的端口 read_accesses 和 write_accesses 添加到波形窗口中。

28.重新啟動仿真,保持運(yùn)行 3us

在仿真波形中可以看到,正在執(zhí)行 2 項讀取和 2 項寫入傳輸事務(wù)。但我們的 IP 計數(shù)僅顯示 2 項寫入傳輸事務(wù)和 1 項讀取傳輸事務(wù)。

我們可以觀察每項傳輸事務(wù)的地址,查看輸出是否正確。在 IP 監(jiān)測的地址 0x4000_0000 上正在發(fā)生 2 項寫入傳輸事務(wù)。

但只有 1 項讀取傳輸事務(wù)目標(biāo)為地址 0x4000_0000(另一項讀取傳輸事務(wù)目標(biāo)為 0x4000_0008),因此 IP 行為正確。

本文僅展示了 1 個利用 AXI Sniffer(或者稱為 Monitor)IP 可實(shí)現(xiàn)的操作的示例。您可編輯 Verilog 代碼以添加自己的功能。

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

    關(guān)注

    33

    文章

    8447

    瀏覽量

    150720
  • 賽靈思
    +關(guān)注

    關(guān)注

    32

    文章

    1794

    瀏覽量

    131126

原文標(biāo)題:AXI基礎(chǔ)第5講——創(chuàng)建 AXI4-Lite Sniffer IP 以在賽靈思 Vivado IP Integrator 中使用

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    IP地址和MAC地址的區(qū)別和聯(lián)系

    媒體訪問控制地址,是網(wǎng)絡(luò)設(shè)備制造商生產(chǎn)時寫在硬件內(nèi)部的一個唯一標(biāo)識符,用于在數(shù)據(jù)鏈路層控制數(shù)據(jù)包在局域網(wǎng)內(nèi)的傳輸。它通常用于標(biāo)識網(wǎng)絡(luò)設(shè)備的物理接口,而不是整個設(shè)備。 IP地址的長度通常
    的頭像 發(fā)表于 10-26 10:24 ?283次閱讀
    <b class='flag-5'>IP</b><b class='flag-5'>地址</b>和MAC<b class='flag-5'>地址</b>的區(qū)別和聯(lián)系

    IP地址小分享

    ,那么數(shù)據(jù)就會像無頭蒼蠅一樣在網(wǎng)絡(luò)中亂撞,無法準(zhǔn)確地到達(dá)目標(biāo)設(shè)備。 查詢位置和路由:IP地址被用于查詢位置和路由數(shù)據(jù)包,就像我們在現(xiàn)實(shí)生活中使用地圖導(dǎo)航一樣,網(wǎng)絡(luò)中的路由器會根據(jù)IP地址
    的頭像 發(fā)表于 09-25 14:21 ?151次閱讀
    <b class='flag-5'>IP</b><b class='flag-5'>地址</b>小分享

    公共 IP 地址前綴如何進(jìn)行網(wǎng)絡(luò)資源配置?

    IPv4或IPv6地址組成。在具有可用區(qū)域的地方,我們可將其創(chuàng)建區(qū)域冗余模式,也可讓其和特定的可用區(qū)域相關(guān)聯(lián)。一旦創(chuàng)建了公共
    的頭像 發(fā)表于 08-21 14:57 ?267次閱讀
    公共 <b class='flag-5'>IP</b> <b class='flag-5'>地址</b>前綴如何<b class='flag-5'>進(jìn)行</b>網(wǎng)絡(luò)資源配置?

    購買海外虛擬IP地址可以通過以下幾種方式#虛擬IP地址

    ip地址
    jf_62215197
    發(fā)布于 :2024年08月16日 07:16:04

    IP地址的分配

    ,全球唯一。 私有IP地址:用于局域網(wǎng)(LAN)內(nèi)的地址,不在互聯(lián)網(wǎng)上傳輸。它們可以在多個網(wǎng)絡(luò)中重復(fù)使用。 私有IP
    的頭像 發(fā)表于 08-09 14:55 ?423次閱讀

    IP地址基礎(chǔ)科普

    IP地址是我們在網(wǎng)絡(luò)識別設(shè)備的“身份證”。 1. 什么是IP地址IP
    的頭像 發(fā)表于 07-22 11:55 ?418次閱讀

    IP地址與網(wǎng)絡(luò)監(jiān)控

    在當(dāng)今的數(shù)字時代,網(wǎng)絡(luò)安全已成為企業(yè)和個人都十分關(guān)注的重要話題。通過IP地址進(jìn)行網(wǎng)絡(luò)監(jiān)控,可以有效地檢測異常流量和可疑活動,從而保護(hù)網(wǎng)絡(luò)免受潛在威脅。本文將詳細(xì)討論如何利用IP
    的頭像 發(fā)表于 07-09 16:41 ?355次閱讀

    FPGA通過AXI總線讀寫DDR3實(shí)現(xiàn)方式

    AXI總線由一些核心組成,包括AXI主處理器接口(AXI4)、AXI處理器到協(xié)處理器接口(AXI4-Lite)、
    發(fā)表于 04-18 11:41 ?1196次閱讀

    Xilinx FPGA 1/4/8通道PCIe-DMA控制器IP,高性能應(yīng)用介紹

    ,基于描述符鏈表信息完成自己通道的數(shù)據(jù)傳輸,然后使用MSI中斷發(fā)出描述符完成或錯誤的信令。內(nèi)核也提供多達(dá)16個輸出到Host的用戶中斷信號。主機(jī)可以通過以下2個接口訪問用戶邏輯:?AXI4-Lite
    發(fā)表于 03-07 13:54

    M467可以對QEI的計數(shù)進(jìn)行清零嗎?

    請問M467可以對QEI的計數(shù)進(jìn)行清零嗎? EQEI_GET_CNT_VALUE(EQEI0) 例如 對于這個獲取到的數(shù)據(jù)。
    發(fā)表于 01-16 06:56

    什么是子網(wǎng)掩碼?如何根據(jù)掩碼來確定ip地址網(wǎng)段?

    什么是子網(wǎng)掩碼?如何根據(jù)掩碼來確定ip地址網(wǎng)段?如何判斷兩個IP地址是否在同一個網(wǎng)段? 子網(wǎng)掩碼是用于劃分網(wǎng)絡(luò)中主機(jī)和網(wǎng)絡(luò)地址的一個32位二
    的頭像 發(fā)表于 12-07 09:40 ?1992次閱讀

    如何綁定ip地址與mac物理地址呢?

    如何綁定ip地址與mac物理地址呢? 綁定IP地址與MAC物理地址是一種網(wǎng)絡(luò)管理和安全措施,可以
    的頭像 發(fā)表于 12-07 09:33 ?6373次閱讀

    AXI通道讀寫DDR的阻塞問題?

    基于vivado2020.1和zcu102開發(fā)板(rev1.1)開發(fā)項目,工程涉及DDR4(MIG)和PL端多個讀寫接口交互的問題,通過AXI interconnect進(jìn)行互聯(lián)和仲裁(
    的頭像 發(fā)表于 12-01 09:04 ?918次閱讀
    <b class='flag-5'>AXI</b>通道<b class='flag-5'>讀寫</b>DDR的阻塞問題?

    XILINX FPGA IPAXI Traffic Generator

    AXI Traffic Generator IP 用于在AXI4AXI4-Stream互連以及其他AXI4系統(tǒng)外設(shè)
    的頭像 發(fā)表于 11-23 16:03 ?2260次閱讀
    XILINX FPGA <b class='flag-5'>IP</b>之<b class='flag-5'>AXI</b> Traffic Generator

    體驗(yàn)紫光PCIE之使用官方驅(qū)動在Windows下進(jìn)行DMA讀寫操作/PIO讀寫操作

    驅(qū)動不能夠與IP例程完成DMA握手(流程和指令不匹配),但是可以對BAR0進(jìn)行PIO讀寫操作。 官方提供的Windows驅(qū)動的DMA操作流程如下: 但是生成
    發(fā)表于 11-17 14:55