精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

AXI VIP 中產生傳輸事務的基本方法

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-08-29 14:58 ? 次閱讀

本系列我想深入探尋 AXI4 總線。不過事情總是這樣,不能我說想深入就深入。當前我對 AXI總線的理解尚談不上深入。但我希望通過一系列文章,讓讀者能和我一起深入探尋 AXI4。

歡迎來到深入 AXI4 總線的實戰篇,系列第二篇文章中,我們將首先了解調用 AXI VIP 產生激勵與響應的方法,并完成一個小目標:實現三種情況下的握手信號

關于平臺移植

本文的實戰在第一篇的示例工程上,新建 tb 來實現我們的功能。新建 tb 中的邏輯由 demo tb 的內容搬運簡化而來。

本來計劃新建一個工程,但是閱讀 PG267 (IP 核的產品文檔)發現,當前 Vivado 對于該 IP 的支持還比較弱,需要將 IP 的實例名以及層次路徑硬編碼至 tb 中,如果新建工程還比較麻煩。所以本文暫時還是在 example 的基礎上展開 。

想要重新搭建工程的讀者請注意閱讀 demo tb 開頭的說明,或者 PG267 第六章中的內容。

本文的場景為主機與從機之間通過 Pass-through (以后叫 ta 中間機?)進行通信。從機選用 mem 模式,有自己的存儲模型,即使用 mem_stimulus.sv 作為激勵。關于存儲模型,我們將在后續的文章中討論。

我們的改動在于主機的激勵部分,以原先的 mst_stimulus.sv 為基礎,構建我們自己的主機激勵,改動后的 testbench 結構如下圖所示。

2fb3fb5e-25a9-11ed-ba43-dac502259ad0.png

是的,新的激勵加上了 headbig 字段,這來自于 深入 AXI4 總線 系列文章的英文名:Headbig AXI4。

VIP API 基本調用方式

PG 文檔中,Xilinx 表示 VIP 基于 SystemVerilog 語言開發,同時在 API 的設計上,命名與數據結構的設計均參考了 UVM 框架,便于 VIP 在驗證系統中的集成。由于本文的重點不在于 UVM 或者 API 的設計,因此僅跟著 demo 以及 PG 中的 API 調用流程過一遍。

主機 master

首先來看主機,定義于 axi_vip_master_mst_stimulus.sv 中

為主機 master ip 創建一個 agent 對象,傳入 master ip 的層級路徑,后續通過該 agent 控制主機 ip

agent = new("master vip agent",DUT.ex_design.axi_vip_mst.inst.IF);

通過 agent 啟動主機

agent.start_master();

在 fork ...join 并發塊中同時發出主機的讀寫傳輸事務。

fork
 begin
  //調用寫傳輸事務 API
 end
 
 begin
  //調用讀傳輸事務 API
 end
join

產生兩者的 API 結構相似,我們以寫傳輸事務為例。例程中依次使用了 3 種 API ,分別產生

完全隨機化的寫傳輸事務

multiple_write_transaction_full_rand ("single write",1);

定制化的寫傳輸事務

single_write_transaction_api("single write with api",
                   .id(mtestWID),
                   .addr(mtestWADDR),
                   .len(mtestWBurstLength), 
                   .size(mtestWDataSize),
                   .burst(mtestWBurstType),
                   .wuser(mtestWUSER),
                   .awuser(mtestAWUSER), 
                   .data(mtestWData)
                   );

部分隨機化的寫傳輸事務

multiple_write_transaction_partial_rand(相關參數);

我們常說,不想知道 API 函數之下發生了什么的程序員不是好程序員,IC 工程師同樣如是。以較簡單的定制化寫傳輸事務函數為例,所謂函數實質上是一個 sv task,以下是 task 中的主要內容:

  axi_transaction                wr_trans;
  wr_trans = agent.wr_driver.create_transaction(name);
  wr_trans.set_write_cmd(addr,burst,id,len,size);
  wr_trans.set_prot(prot);
  //...
  wr_trans.set_data_block(data);
  agent.wr_driver.send(wr_trans); 

首先聲明一個 axi 傳輸事務對象,然后在主機 ip 的 agent 下建立傳輸事務。

通過 API 函數設定寫命令信息,設定傳輸屬性以及待傳輸的數據塊。數據塊的數據類型為

bit [4 * 1024 * 8 - 1:0]

從機 slave

接下來,我們看一下從機的相關流程,定義于 axi_vip_master_mem_stimulus.sv 中。

同樣為從機創建并啟動相應 agent,此處與主機相似不表。

在 demo 中構造了一個虛擬數據作為后續對主機讀數據的回應,因為本文的主要工作是得到握手信息的波形,因此并不會實際存儲主機寫入的數據,而是在主機讀取任意地址時,返回這個虛擬數據。

最后,從機調用 API 產生 wready 信號應答

  task user_gen_wready();
   axi_ready_gen              wready_gen;
   wready_gen = agent.wr_driver.create_ready("wready");
   wready_gen.set_ready_policy(XIL_AXI_READY_GEN_OSC);
   wready_gen.set_low_time(1);
   wready_gen.set_high_time(2);
   agent.wr_driver.send_wready(wready_gen);
  endtask

此處表示 wready 信號在從機空閑時周期性生成,有效時間為 2/3,我們可以在后續的波形中看到。

握手波形

我們對主機的激勵代碼進行修改,僅保留單次定制化的讀寫傳輸事務,地址為 0x0,突發長度為 0。在波形中我們得到了三種情況下的握手信號。

(1)VALID 信號等待 READY 信號

2fc32c3c-25a9-11ed-ba43-dac502259ad0.png

在 tb 中主機并行地啟動讀寫傳輸事務,AR/W VALID 同時置高,在等待從機給出 READY 信號后完成地址與控制信號的傳輸,此時地址為 0x0.

(2)READY 信號等待 VALID 信號

2fd8e180-25a9-11ed-ba43-dac502259ad0.png

主機在發出讀傳輸事務后,置高 RREADY 信號等待接收從機返回的讀數據。在從機置高 RVALID 后,讀傳輸事務完成。

(3)READY 與 VALID 信號同時置起

在設置從機的 READY 信號類型時,我們設置為周期性置高 READY,從下圖中可以看到,READY 信號在送出 2 個周期高電平后置低 1 個周期。

2fe625e8-25a9-11ed-ba43-dac502259ad0.png

在這個場景中,寫數據通道中的 WREADY 信號正好與 WVALID 信號同時置起,解鎖了最后三種握手姿勢中的最后一種,OK 本文實戰篇收工了。

結語

本文首先介紹了 AXI VIP 中產生傳輸事務的基本方法。基于 demo 修改了一個簡單純粹的例子,并基于這個例子觀察到了握手信號。

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

    關注

    8

    文章

    6909

    瀏覽量

    88849
  • 存儲
    +關注

    關注

    13

    文章

    4266

    瀏覽量

    85686
  • 編碼
    +關注

    關注

    6

    文章

    935

    瀏覽量

    54771
  • AXI總線
    +關注

    關注

    0

    文章

    66

    瀏覽量

    14250

原文標題:深入AXI4 總線實戰:Hello AXI handshake

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AXI VIP設計示例 AXI接口傳輸分析

    賽靈思 AXI Verification IP (AXI VIP) 是支持用戶對 AXI4 和 AXI4-Lite 進行仿真的 IP。它還可
    發表于 07-08 09:24 ?1753次閱讀

    如何將AXI VIP添加到Vivado工程中

    在這篇新博文中,我們來聊一聊如何將 AXI VIP 添加到 Vivado 工程中,并對 AXI4-Lite 接口進行仿真。隨后,我們將在仿真波形窗口中講解用于AXI4-Lite
    發表于 07-08 09:27 ?1984次閱讀

    如何使用AXI VIPAXI4(Full)主接口中執行驗證和查找錯誤

    AXI 基礎第 2 講 一文中,曾提到賽靈思 Verification IP (AXI VIP) 可用作為 AXI 協議檢查工具。在本次第4講中,我們將來了解下如何使用它在
    發表于 07-08 09:31 ?2800次閱讀

    AXI VIP當作master時如何使用

    AXI VIP當作master時如何使用。 ??新建Vivado工程,并新建block design,命名為:axi_demo 新建axi vip
    的頭像 發表于 07-27 09:19 ?1131次閱讀
    <b class='flag-5'>AXI</b> <b class='flag-5'>VIP</b>當作master時如何使用

    高級可擴展接口(AXI)簡介

    的設計理念相似,但使用多個專用通道進行讀寫。像它的前身一樣,AXI是基于突發的,并且在交換數據之前使用類似的地址和控制階段。AXI還包括許多新功能,包括亂序事務,未對齊的數據傳輸,高速
    發表于 09-28 10:14

    ARM系列 -- AXI協議資料匯總(一)

    地址通道中,主機(master)是發送方,而從機(slave)是接收方;在讀數據通道中,主機是接收方,從機是發送方。3、AXI協議傳輸事務的結構了解完通道握手的依賴關系,我們再看看傳輸
    發表于 04-08 09:34

    ARM系列 -- AXI協議資料匯總(二)

    1、AXI協議用AxCACHE來控制事務屬性來看看事務屬性(Transaction Attributes),主要是對cache,buffer和memory controller的規定。按照協議,從機
    發表于 04-08 09:49

    如何使用Xilinx AXI VIP對自己的設計搭建仿真驗證環境的方法

    接口進行仿真驗證),提前規避和發現一些不滿足AXI總線規范的設計問題。本文就跟大家分享如何使用Xilinx AXI VIP對自己的設計搭建仿真驗證環境的方法。本文參考的Xilinx官方
    發表于 10-09 16:08

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

    這將創建一個附帶 BD 的 Vivado 工程,此 BD 包含 AXI VIP (設置為 AXI4-Lite 主接口) 和 AXI GPIO IP。這與我們在
    的頭像 發表于 04-30 16:24 ?2340次閱讀
    如何創建基本<b class='flag-5'>AXI</b>4-Lite Sniffer IP以對特定地址上正在發生的讀寫<b class='flag-5'>傳輸</b><b class='flag-5'>事務</b>進行計數

    使用AXI VIP的幾個關鍵步驟及常見功能

    接口進行仿真驗證),提前規避和發現一些不滿足AXI總線規范的設計問題。本文就跟大家分享如何使用Xilinx AXI VIP對自己的設計搭建仿真驗證環境的方法
    的頭像 發表于 10-08 16:07 ?5376次閱讀

    一些高質量的AMBA(APB/AHB/AXI) VIP分享

    關于VIP的好處,估計就不用我安利了,引用最近S家的一句廣告語,“擁有VIP,無懼芯片設計挑戰”。而在當今的芯片領域,用的最多的可能還是標準總線APB/AHB/AXI等。提到VIP,估
    的頭像 發表于 12-06 14:58 ?1824次閱讀

    AXI協議的幾個關鍵特性

    AXI 協議有幾個關鍵特性,旨在改善數據傳輸事務的帶寬和延遲
    的頭像 發表于 05-06 09:49 ?1093次閱讀

    調試AMBA AXI未完成事務

    驗證當今的復雜設計非常耗時,因為仿真需要長時間運行,并且會執行數百萬個事務。傳統的調試方法是將數百萬個數據包的所有信息轉儲到日志文件中,但是從龐大的日志文件中過濾掉特定的事務總是具有挑戰性的。例如
    的頭像 發表于 05-26 16:03 ?473次閱讀
    調試AMBA <b class='flag-5'>AXI</b>未完成<b class='flag-5'>事務</b>

    AXI VIP當作master時如何使用?

    ?AXI接口雖然經常使用,很多同學可能并不清楚Vivado里面也集成了AXI的Verification IP,可以當做AXI的master、pass through和slave,本次內容我們看下
    的頭像 發表于 07-27 09:16 ?1594次閱讀
    <b class='flag-5'>AXI</b> <b class='flag-5'>VIP</b>當作master時如何使用?

    AXI傳輸數據的過程

    AXI-Stream,其中AXI-Lite和AXI-Full都是基于memory map的形式實現數據傳輸(即包括地址總線),而AXI-St
    的頭像 發表于 10-31 15:37 ?1103次閱讀
    <b class='flag-5'>AXI</b><b class='flag-5'>傳輸</b>數據的過程