在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

AXI VIP當(dāng)作master時(shí)如何使用

傅里葉的貓 ? 來(lái)源:傅里葉的貓 ? 2023-07-27 09:19 ? 次閱讀

??AXI接口雖然經(jīng)常使用,很多同學(xué)可能并不清楚Vivado里面也集成了AXI的Verification IP,可以當(dāng)做AXI的master、pass through和slave,本次內(nèi)容我們看下AXI VIP當(dāng)作master時(shí)如何使用。

??新建Vivado工程,并新建block design,命名為:axi_demo

4168dc3c-2c12-11ee-a368-dac502259ad0.png

新建axi vip,參數(shù)設(shè)置如下,第一個(gè)參數(shù)設(shè)置為Master,其他都保持默認(rèn),當(dāng)然如果可以根據(jù)自己的實(shí)際需求作改動(dòng),比如id位寬,數(shù)據(jù)位寬等等。

418272c8-2c12-11ee-a368-dac502259ad0.pngimage-20230726185112648

再添加AXI BRAM Controller和Block Memory Generator:

41bc2fd6-2c12-11ee-a368-dac502259ad0.png

地址分配如下:0xc000_0000

41cd63e6-2c12-11ee-a368-dac502259ad0.png

生成ip的各種文件:

41e31a1a-2c12-11ee-a368-dac502259ad0.png

新建仿真的tb_top文件,需要注意,文件類(lèi)型是system verilog

420b9f80-2c12-11ee-a368-dac502259ad0.pngimage-20230726185756796

仿真代碼放到文章末尾,代碼中中導(dǎo)入的axi_demo_axi_vip_0_0_pkg,就是下面axi vip的component_name再加上后綴_pkg,后面的mst_agent也是component_name加上后綴 _mst_t

importaxi_demo_axi_vip_0_0_pkg::*;
axi_demo_axi_vip_0_0_mst_tmst_agent;
4232e388-2c12-11ee-a368-dac502259ad0.pngimage-20230726190026270

運(yùn)行仿真:

426af2b4-2c12-11ee-a368-dac502259ad0.pngimage-20230726190219346

將axi vip的M-AXI添加到波形窗口中:

427cbecc-2c12-11ee-a368-dac502259ad0.pngimage-20230726190445127

可以看到,我們一開(kāi)始向地址0xc0001000寫(xiě)入0x12345678,又發(fā)起一次讀操作,可以將該數(shù)據(jù)讀出。

42b768e2-2c12-11ee-a368-dac502259ad0.pngimage-20230726190702883

有同學(xué)可能習(xí)慣用vcs來(lái)仿真,下篇文章我們?cè)儆胿cs+verdi來(lái)仿真vivado的axi vip。

`timescale1ns/1ps

importaxi_vip_pkg::*;
importaxi_demo_axi_vip_0_0_pkg::*;

moduletb_top();

bitclk;
bitaresetn;

//usedinAPIandparitalrandomizationfortransactiongenerationanddatareadbackfromdriver
axi_transactionwr_transaction;//Writetransaction
axi_transactionrd_transaction;//Readtransaction

xil_axi_uintmtestWID;//WriteID
xil_axi_ulongmtestWADDR;//WriteADDR
xil_axi_len_tmtestWBurstLength;//WriteBurstLength
xil_axi_size_tmtestWDataSize;//WriteSIZE
xil_axi_burst_tmtestWBurstType;//WriteBurstType
xil_axi_uintmtestRID;//ReadID
xil_axi_ulongmtestRADDR;//ReadADDR
xil_axi_len_tmtestRBurstLength;//ReadBurstLength
xil_axi_size_tmtestRDataSize;//ReadSIZE
xil_axi_burst_tmtestRBurstType;//ReadBurstType
xil_axi_lock_tmtestLOCK;//LOCKvalueforWRITE/READ_BURSTtransaction
xil_axi_cache_tmtestCacheType=3;//CacheTypevalueforWRITE/READ_BURSTtransaction
xil_axi_prot_tmtestProtectionType=3'b000;//ProtectionTypevalueforWRITE/READ_BURSTtransaction
xil_axi_region_tmtestRegion=4'b000;//RegionvalueforWRITE/READ_BURSTtransaction
xil_axi_qos_tmtestQOS=4'b000;//QOSvalueforWRITE/READ_BURSTtransaction
xil_axi_data_beatdbeat;//DatabeatvalueforWRITE/READ_BURSTtransaction
xil_axi_user_beatusrbeat;//UserbeatvalueforWRITE/READ_BURSTtransaction
xil_axi_data_beat[255:0]mtestWUSER;//WuservalueforWRITE/READ_BURSTtransaction
xil_axi_data_beatmtestAWUSER='h0;//AwuservalueforWRITE/READ_BURSTtransaction
xil_axi_data_beatmtestARUSER=0;//AruservalueforWRITE/READ_BURSTtransaction
xil_axi_data_beat[255:0]mtestRUSER;//RuservalueforWRITE/READ_BURSTtransaction
xil_axi_uintmtestBUSER=0;//BuservalueforWRITE/READ_BURSTtransaction
xil_axi_resp_tmtestBresp;//BrespvalueforWRITE/READ_BURSTtransaction
xil_axi_resp_t[255:0]mtestRresp;//RrespvalueforWRITE/READ_BURSTtransaction

bit[63:0]mtestWData;//WriteData
bit[8*4096-1:0]Wdatablock;//Writedatablock
xil_axi_data_beatWdatabeat[];//Writedatabeats

bit[63:0]mtestRData;//ReadData
bit[8*4096-1:0]Rdatablock;//Readdatablock
xil_axi_data_beatRdatabeat[];//Readdatabeats


initialbegin
aresetn=1'b0;
clk=1'b0;
#100ns;
aresetn=1'b1;
end

always#10clk<=?~clk;

axi_demo?u_dut(
????.aclk_0???????(clk?????),
????.aresetn_0????(aresetn?)
);

axi_demo_axi_vip_0_0_mst_t??????????????mst_agent;

initial?begin
????mst_agent?=?new("master?vip?agent",u_dut.axi_vip_0.inst.IF);
????mst_agent.start_master();???????????????//?mst_agent?start?to?run
????mtestWID?=?$urandom_range(0,(1<<(0)-1));?
????mtestWADDR?=?'hc000_1000;//$urandom_range(0,(1<<(32)-1));
????mtestWBurstLength?=?0;
????mtestWDataSize?=?xil_axi_size_t'(xil_clog2((32)/8));
????mtestWBurstType?=?XIL_AXI_BURST_TYPE_INCR;
????mtestWData?=?'h12345678;//$urandom();
????$display("mtestWDataSize?=?%d",?mtestWDataSize);
????//single?write?transaction?filled?in?user?inputs?through?API?
????single_write_transaction_api("single?write?with?api",
?????????????????????????????????.id(mtestWID),
?????????????????????????????????.addr(mtestWADDR),
?????????????????????????????????.len(mtestWBurstLength),?
?????????????????????????????????.size(mtestWDataSize),
?????????????????????????????????.burst(mtestWBurstType),
?????????????????????????????????.wuser(mtestWUSER),
?????????????????????????????????.awuser(mtestAWUSER),?
?????????????????????????????????.data(mtestWData)
?????????????????????????????????);
??????????????????????????????????
????mtestRID?=?$urandom_range(0,(1<<(0)-1));
????mtestRADDR?=?mtestWADDR;
????mtestRBurstLength?=?0;
????mtestRDataSize?=?xil_axi_size_t'(xil_clog2((32)/8));?
????mtestRBurstType?=?XIL_AXI_BURST_TYPE_INCR;
????
????$display("mtestRDataSize?=?%d",?mtestRDataSize);
????//single?read?transaction?filled?in?user?inputs?through?API?
????single_read_transaction_api("single?read?with?api",
?????????????????????????????????.id(mtestRID),
?????????????????????????????????.addr(mtestRADDR),
?????????????????????????????????.len(mtestRBurstLength),?
?????????????????????????????????.size(mtestRDataSize),
?????????????????????????????????.burst(mtestRBurstType)
?????????????????????????????????);
end

??task?automatic?single_write_transaction_api?(?
????????????????????????????????input?string?????????????????????name?="single_write",
????????????????????????????????input?xil_axi_uint???????????????id?=0,?
????????????????????????????????input?xil_axi_ulong??????????????addr?=0,
????????????????????????????????input?xil_axi_len_t??????????????len?=0,?
????????????????????????????????input?xil_axi_size_t?????????????size?=xil_axi_size_t'(xil_clog2((32)/8)),
????????????????????????????????input?xil_axi_burst_t????????????burst?=XIL_AXI_BURST_TYPE_INCR,
????????????????????????????????input?xil_axi_lock_t?????????????lock?=?XIL_AXI_ALOCK_NOLOCK,
????????????????????????????????input?xil_axi_cache_t????????????cache?=3,
????????????????????????????????input?xil_axi_prot_t?????????????prot?=0,
????????????????????????????????input?xil_axi_region_t???????????region?=0,
????????????????????????????????input?xil_axi_qos_t??????????????qos?=0,
????????????????????????????????input?xil_axi_data_beat?[255:0]??wuser?=0,?
????????????????????????????????input?xil_axi_data_beat??????????awuser?=0,
????????????????????????????????input?bit?[63:0]??????????????data?=0
????????????????????????????????????????????????);
????axi_transaction???????????????????????????????wr_trans;
????$display("single_write_transaction_api?size?=?%d",?size);
????wr_trans?=?mst_agent.wr_driver.create_transaction(name);
????wr_trans.set_write_cmd(addr,burst,id,len,size);
????wr_trans.set_prot(prot);
????wr_trans.set_lock(lock);
????wr_trans.set_cache(cache);
????wr_trans.set_region(region);
????wr_trans.set_qos(qos);
????wr_trans.set_data_block(data);
????mst_agent.wr_driver.send(wr_trans);???
??endtask??:?single_write_transaction_api?
?
??task?automatic?single_read_transaction_api?(?
????????????????????????????????????input?string?????????????????????name?="single_read",
????????????????????????????????????input?xil_axi_uint???????????????id?=0,?
????????????????????????????????????input?xil_axi_ulong??????????????addr?=0,
????????????????????????????????????input?xil_axi_len_t??????????????len?=0,?
????????????????????????????????????input?xil_axi_size_t?????????????size?=xil_axi_size_t'(xil_clog2((32)/8)),
????????????????????????????????????input?xil_axi_burst_t????????????burst?=XIL_AXI_BURST_TYPE_INCR,
????????????????????????????????????input?xil_axi_lock_t?????????????lock?=XIL_AXI_ALOCK_NOLOCK?,
????????????????????????????????????input?xil_axi_cache_t????????????cache?=3,
????????????????????????????????????input?xil_axi_prot_t?????????????prot?=0,
????????????????????????????????????input?xil_axi_region_t???????????region?=0,
????????????????????????????????????input?xil_axi_qos_t??????????????qos?=0,
????????????????????????????????????input?xil_axi_data_beat??????????aruser?=0
????????????????????????????????????????????????);
????axi_transaction???????????????????????????????rd_trans;
????$display("single_read_transaction_api?size?=?%d",?size);
????rd_trans?=?mst_agent.rd_driver.create_transaction(name);
????rd_trans.set_read_cmd(addr,burst,id,len,size);
????rd_trans.set_prot(prot);
????rd_trans.set_lock(lock);
????rd_trans.set_cache(cache);
????rd_trans.set_region(region);
????rd_trans.set_qos(qos);
????mst_agent.rd_driver.send(rd_trans);???
??endtask??:?single_read_transaction_api

endmodule

責(zé)任編輯:彭菁

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

    關(guān)注

    33

    文章

    8961

    瀏覽量

    153275
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1867

    瀏覽量

    32885
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    134

    瀏覽量

    17120

原文標(biāo)題:Xilinx AXI VIP使用教程

文章出處:【微信號(hào):傅里葉的貓,微信公眾號(hào):傅里葉的貓】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AXI VIP設(shè)計(jì)示例 AXI接口傳輸分析

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

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

    在這篇新博文中,我們來(lái)聊一聊如何將 AXI VIP 添加到 Vivado 工程中,并對(duì) AXI4-Lite 接口進(jìn)行仿真。隨后,我們將在仿真波形窗口中講解用于AXI4-Lite 傳輸事
    發(fā)表于 07-08 09:27 ?2211次閱讀

    如何使用AXI VIPAXI4(Full)主接口中執(zhí)行驗(yàn)證和查找錯(cuò)誤

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

    使用JTAG到AXI Master無(wú)法調(diào)試設(shè)計(jì)的解決辦法?

    我根據(jù)以下快速拍攝視頻完成了我的設(shè)計(jì):http://www.xilinx.com/video/hardware/using-jtag-to-axi-master-in-vivado.html在視頻
    發(fā)表于 08-12 09:16

    求大佬分享uart2axi_master_intf程序源碼

    求大佬分享uart2axi_master_intf程序源碼
    發(fā)表于 02-22 06:43

    如何使用Xilinx AXI VIP對(duì)自己的設(shè)計(jì)搭建仿真驗(yàn)證環(huán)境的方法

    使用Vivado生成AXI VIPAXI Verification IP)來(lái)對(duì)自己設(shè)計(jì)的AXI接口模塊進(jìn)行全方位的驗(yàn)證(如使用VIP
    發(fā)表于 10-09 16:08

    AXI 總線交互分為 Master / Slave 兩端

    在 AMBA 系列之 AXI 總線協(xié)議初探 中,了解到 AXI 總線交互分為 Master / Slave 兩端,而且標(biāo)準(zhǔn)的 AXI 總線支持不同的位寬,既然是總線,那么必須要支持總線
    的頭像 發(fā)表于 02-08 11:44 ?1.7w次閱讀

    Xilinx AXI Interconnect

    在 AMBA 系列之 AXI 總線協(xié)議初探 中,了解到 AXI 總線交互分為 Master / Slave 兩端,而且標(biāo)準(zhǔn)的 AXI 總線支持不同的位寬,既然是總線,那么必須要支持總線
    發(fā)表于 02-23 06:57 ?45次下載
    Xilinx <b class='flag-5'>AXI</b> Interconnect

    串口轉(zhuǎn)axi主機(jī)總線接口

    uart2axi_master_intf程序源碼:/**************************************************** Module Name
    發(fā)表于 12-28 20:04 ?14次下載
    串口轉(zhuǎn)<b class='flag-5'>axi</b>主機(jī)總線接口

    AXI學(xué)習(xí)路線,從握手協(xié)議開(kāi)始

    對(duì) AXI master的全面討論變得困難。我還沒(méi)有(還)想出如何簡(jiǎn)化材料來(lái)寫(xiě)一篇關(guān)于如何構(gòu)建通用 AXI master器的帖子,這已經(jīng)夠難了——通常來(lái)說(shuō),尋址就是那么難。
    發(fā)表于 07-29 11:27 ?1318次閱讀

    AXI VIP 中產(chǎn)生傳輸事務(wù)的基本方法

    本系列我想深入探尋 AXI4 總線。不過(guò)事情總是這樣,不能我說(shuō)想深入就深入。當(dāng)前我對(duì) AXI總線的理解尚談不上深入。但我希望通過(guò)一系列文章,讓讀者能和我一起深入探尋 AXI4。
    的頭像 發(fā)表于 08-29 14:58 ?2371次閱讀

    使用AXI VIP的幾個(gè)關(guān)鍵步驟及常見(jiàn)功能

    使用Vivado生成AXI VIPAXI Verification IP)來(lái)對(duì)自己設(shè)計(jì)的AXI接口模塊進(jìn)行全方位的驗(yàn)證(如使用VIP
    的頭像 發(fā)表于 10-08 16:07 ?6198次閱讀

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

    關(guān)于VIP的好處,估計(jì)就不用我安利了,引用最近S家的一句廣告語(yǔ),“擁有VIP,無(wú)懼芯片設(shè)計(jì)挑戰(zhàn)”。而在當(dāng)今的芯片領(lǐng)域,用的最多的可能還是標(biāo)準(zhǔn)總線APB/AHB/AXI等。提到VIP,估
    的頭像 發(fā)表于 12-06 14:58 ?2422次閱讀

    關(guān)于高質(zhì)量的AMBA(APB/AHB/AXI) VIP的分享

    AMBA VIP 分享
    的頭像 發(fā)表于 12-10 20:47 ?4228次閱讀
    關(guān)于高質(zhì)量的AMBA(APB/AHB/<b class='flag-5'>AXI</b>) <b class='flag-5'>VIP</b>的分享

    AXI VIP當(dāng)作master時(shí)如何使用?

    ?AXI接口雖然經(jīng)常使用,很多同學(xué)可能并不清楚Vivado里面也集成了AXI的Verification IP,可以當(dāng)做AXImaster、pass through和slave,本次內(nèi)
    的頭像 發(fā)表于 07-27 09:16 ?2296次閱讀
    <b class='flag-5'>AXI</b> <b class='flag-5'>VIP</b><b class='flag-5'>當(dāng)作</b><b class='flag-5'>master</b>時(shí)如何使用?
    主站蜘蛛池模板: 韩国a级床戏大尺度在线观看 | 日本高清加勒比 | 男人天堂资源站 | 天天爱天天做天天爽 | 四虎国产精品永久地址49 | 亚欧毛片基地国产毛片基地 | 4hu四虎永久免在线视 | 欧亚激情偷乱人伦小说视频 | 久久精品国产亚洲综合色 | 亚洲已满18点击进入在线观看 | 免费亚洲视频在线观看 | 日韩成a人片在线观看日本 日韩成人黄色 | h免费在线观看 | 国产网红主播精品福利大秀专区 | 亚色在线视频 | 日韩天堂在线观看 | 国内自拍网红在综合图区 | 4438x成人网全国最大 | 美女网站色黄 | 俺去操| 午夜激情婷婷 | 视频1区 | 日韩城人视频 | 久久综合九色综合网站 | 婷婷亚洲综合一区二区 | 污污的黄色小说 | 久久久久久久免费 | 中文字幕一区二区三区在线不卡 | 国产网站黄| 欧美啪啪小视频 | 看视频免费网站 | 国产成人a毛片 | 美女张开大腿让男人桶 | 偷拍福利视频 | 老师我好爽再深一点好大 | 丁香五香天堂网 | 日本一区二区不卡在线 | 久久国产乱子伦精品免费强 | 2018天天操天天干 | 奇米网在线观看 | 色网站在线播放 |