吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建基本AXI4-Lite Sniffer IP以對特定地址上正在發生的讀寫傳輸事務進行計數

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

引言

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

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

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

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

1. 下載設計文件

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

2. 打開 Vivado 2019.2

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

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


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

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

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

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

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

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

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 信號均設置為輸入,因為 IP 不應對 AXI4-Lite 接口執行任何操作,僅限于監測其中的流量

然后,IP 需要 1 個參數用于設置要監測的地址

7.添加以下代碼以添加用于監測地址的參數

module AXI_Sniffer

#(

parameter SLAVE_BASE_ADDR = 32'h40000000

)

(

最后,我們需要添加用于對地址訪問次數進行計數的邏輯。監測地址出現在 axi 總線上時,每次 r/wready 和 r/wvalid處于高位時,此代碼都會將計數增加 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 文件導入 BD 的功能。

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

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

這是因為導入模塊工具已將 s_axi 接口設置為從接口,而 Vivado 僅允許每個主接口連接到一個從接口。

要創建監測 IP,我們需要將代碼封裝為 IP,這將為我們提供更多接口選項。

11.單擊“工具 (Tools) > 創建并封裝新 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(保留默認設置) > 完成 (Finish)

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

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

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

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

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

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

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

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

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

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

這樣將關閉 IP Packager 工程。

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

24. 嘗試將新 AXI Sniffer IP 的 s_axi 接口連接到 AXI VIP 與 AXI GPIO 之間的總線。現在,此操作已可行。

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

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

28.重新啟動仿真,保持運行 3us

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8694

    瀏覽量

    151925
  • 賽靈思
    +關注

    關注

    32

    文章

    1794

    瀏覽量

    131509

原文標題:AXI基礎第5講——創建 AXI4-Lite Sniffer IP 以在賽靈思 Vivado IP Integrator 中使用

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ISP與IP地址

    才能接入互聯網,與其他設備進行通信和數據傳輸。這是前提也是基礎。 ? ISP通常使用DHCP來為用戶提供IP地址的動態分配。當設備連接到ISP的網絡時,DHCP服務器會自動從
    的頭像 發表于 12-27 10:41 ?160次閱讀

    IP地址偽造和反偽造技術

    其他合法或非法的IP地址。在TCP/IP協議棧中,IP層負責數據包的傳輸和路由選擇,而對于源 IP
    的頭像 發表于 12-20 10:12 ?210次閱讀

    IP地址如何實現數據傳輸與路由

    IP地址查詢定位:https://www.ipdatacloud.com/?utm-source=WZJ&utm-keyword=?2826 IP 地址如何實現數據
    的頭像 發表于 12-17 09:39 ?139次閱讀

    如何在Linux系統設置站群服務器IP地址

    在Linux系統設置站群服務器的IP地址,可以通過以下步驟進行,主機推薦小編為您整理發布如何在Linux系統設置站群服務器
    的頭像 發表于 12-11 10:05 ?225次閱讀

    怎么綁定IP地址和MAC地址

    和MAC地址 ·使用快捷鍵Win+R打開運行窗口,輸入cmd后回車。 ·在命令提示符窗口中輸入ipconfig /all,然后回車。 ·在輸出信息中找到IPv4地址(即IP
    的頭像 發表于 12-01 22:48 ?420次閱讀

    AMBA AXI4接口協議概述

    AMBA AXI4(高級可擴展接口 4)是 ARM 推出的第四代 AMBA 接口規范。AMD Vivado Design Suite 2014 和 ISE Design Suite 14 憑借半導體產業首個符合 AXI4 標準的
    的頭像 發表于 10-28 10:46 ?311次閱讀
    AMBA <b class='flag-5'>AXI4</b>接口協議概述

    IP地址小分享

    ,那么數據就會像無頭蒼蠅一樣在網絡中亂撞,無法準確地到達目標設備。 查詢位置和路由:IP地址被用于查詢位置和路由數據包,就像我們在現實生活中使用地圖導航一樣,網絡中的路由器會根據IP地址
    的頭像 發表于 09-25 14:21 ?284次閱讀
    <b class='flag-5'>IP</b><b class='flag-5'>地址</b>小分享

    公共 IP 地址前綴如何進行網絡資源配置?

    IPv4或IPv6地址組成。在具有可用區域的地方,我們可將其創建區域冗余模式,也可讓其和特定的可用區域相關聯。一旦創建了公共
    的頭像 發表于 08-21 14:57 ?362次閱讀
    公共 <b class='flag-5'>IP</b> <b class='flag-5'>地址</b>前綴如何<b class='flag-5'>進行</b>網絡資源配置?

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

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

    IP地址的分配

    ,全球唯一。 私有IP地址:用于局域網(LAN)內的地址,不在互聯網上傳輸。它們可以在多個網絡中重復使用。 私有IP
    的頭像 發表于 08-09 14:55 ?1381次閱讀

    IP地址基礎科普

    IP地址是我們在網絡識別設備的“身份證”。 1. 什么是IP地址IP
    的頭像 發表于 07-22 11:55 ?655次閱讀

    IP地址與網絡監控

    在當今的數字時代,網絡安全已成為企業和個人都十分關注的重要話題。通過IP地址進行網絡監控,可以有效地檢測異常流量和可疑活動,從而保護網絡免受潛在威脅。本文將詳細討論如何利用IP
    的頭像 發表于 07-09 16:41 ?502次閱讀

    網關和ip地址的關系

    的設備都有一個唯一的IP地址,它用于在數據包傳輸過程中標識該設備。IP地址通常分為IPv4和IP
    的頭像 發表于 04-25 13:59 ?1815次閱讀

    FPGA通過AXI總線讀寫DDR3實現方式

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

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

    ,基于描述符鏈表信息完成自己通道的數據傳輸,然后使用MSI中斷發出描述符完成或錯誤的信令。內核也提供多達16個輸出到Host的用戶中斷信號。主機可以通過以下2個接口訪問用戶邏輯:?AXI4-Lite
    發表于 03-07 13:54
    大众百家乐的玩法技巧和规则| 大发888 有斗地主吗| 泰来百家乐导航| 百家乐官网高级技巧| 百家乐官网体育nba| 娱乐城注册送白菜| 大发888客户端de 软件| 威尼斯人娱乐城信誉好吗| 宝马会百家乐娱乐城| 百家乐赌场策略论坛| 缅甸百家乐娱乐| 玩百家乐新2娱乐城| 百家乐庄闲客户端| 博士百家乐现金网| 现场百家乐百家乐| 互博百家乐现金网| 利赢百家乐现金网| 百家乐官网群的微博| 澳门玩百家乐官网00| 百家乐官网最新分析仪| 中骏百家乐官网的玩法技巧和规则| 百家乐官网任你博娱乐平台| 叶氏百家乐官网平注技巧| 百家乐官网强对弱的对打法| 长江百家乐官网的玩法技巧和规则| 网上百家乐官网指| 天博百家乐官网的玩法技巧和规则| 百家乐官网14克粘土筹码| 做生意开店铺风水大全| 百家乐U盘下载| 百家乐的桌子| 乐天百家乐的玩法技巧和规则 | 大发888娱乐场118| 平安县| 百家乐官网游戏真人游戏| 玩百家乐官网如何硬| 首席百家乐官网的玩法技巧和规则 | 百家乐游戏接口| 威尼斯人娱乐城惊喜| 大发888娱乐场下载dafaylcdown | 黄金会百家乐赌城|