0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

Vivado之VIO原理及應(yīng)用

OpenFPGA ? 來源:OpenFPGA ? 作者:碎碎思 ? 2021-09-23 16:11 ? 次閱讀

虛擬輸入輸出(Virtual Input Output,VIO)核是一個可定制的IP核,它可用于實(shí)時監(jiān)視和驅(qū)動內(nèi)部FPGA信號,如圖所示。

48641394-0fe5-11ec-8fb8-12bb97331649.png

可以定制VIO的輸入和輸出端口的數(shù)量與寬度,用于和FPGA設(shè)計進(jìn)行連接。由于VIO核與被監(jiān)視和驅(qū)動的設(shè)計同步,因此應(yīng)用于設(shè)計的時鐘約束也適用于VIO核內(nèi)的元件。當(dāng)使用這個核進(jìn)行實(shí)時交互時,需要使用Vivado邏輯分析特性。

接下來將介紹VIO的原理及應(yīng)用,內(nèi)容主要包括設(shè)計原理、添加VIO核、生成比特流文件和下載并調(diào)試設(shè)計。

設(shè)計原理

設(shè)計以下源碼的工程,并添加VIO核:

`timescale1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
//Company:
//Engineer:
//
//CreateDate:2021/08/222358
//DesignName:
//ModuleName:top
//ProjectName:
//TargetDevices:
//ToolVersions:
//Description:
//
//Dependencies:
//
//Revision:
//Revision0.01-FileCreated
//AdditionalComments:
//
//////////////////////////////////////////////////////////////////////////////////


moduletop(
inputclk,
inputa,
inputb,
outputreg[5:0]z
);
reg[5:0]z_tmp;
wire[5:0]z_vio;
rega_tmp,b_tmp;
wirea_in,b_in;
wiresel;
wirea_vio,b_vio;
assigna_in=sel?a:a_vio;
assignb_in=sel?b:b_vio;
assignz_vio=z;

vio_0Inst_vio(
.clk(clk),//inputwireclk
.probe_in0(z),//inputwire[5:0]probe_in0
.probe_out0(sel),//outputwire[0:0]probe_out0
.probe_out1(a_vio),//outputwire[0:0]probe_out1
.probe_out2(b_vio)//outputwire[0:0]probe_out2
);
always@(posedgeclk)
begin
a_tmp<=a_in;
?b_tmp<=b_in;
end?
always?@(*)
begin
?z_tmp[0]=a_tmp?&?b_tmp;
?z_tmp[1]=~(a_tmp?&?b_tmp);
?z_tmp[2]=a_tmp?|?b_tmp;
?z_tmp[3]=~(a_tmp?|?b_tmp);
?z_tmp[4]=a_tmp?^?b_tmp;
?z_tmp[5]=a_tmp?~^?b_tmp;
end?
always?@(posedge?clk)
begin
z<=z_tmp;
end?

endmodule

添加VIO后的整體設(shè)計如下:

48770274-0fe5-11ec-8fb8-12bb97331649.png

如上圖所示,在該設(shè)計中添加一個vio核,該IP提供3個輸出端口,其中probe_out0端口用于選擇進(jìn)入寄存器a_tmp_reg和寄存器b_tmp_reg的信號。當(dāng)probe_out0輸出1時,將外部端口a和b提供的信號分別連接到寄存器a_tmp_reg和寄存器b_tmp_reg;當(dāng)probe_out0輸出0時,將vio輸出端口probe_outl和probe_out2信號連接到寄存器a_tmP_reg和b_tmp_reg。這樣就可以通過vio提供的端口來控制整個FPGA的設(shè)計。此外,F(xiàn)PGA設(shè)計的最終輸出z可以連接到vio模塊的probe_in0輸入端口。

添jia VIO核

本節(jié)將添加VIO核,主要步驟如下所示。

第一步:用Vivado集成開發(fā)環(huán)境打開需要添加的工程。

第二步:在Vivado主界面左側(cè)的“Flow Navigator”窗口中找到并展開PROJECT MANAGER選項(xiàng)。在展開項(xiàng)中,找到并選擇“IP Catalog”選項(xiàng)。

第三步:在Vivado主界面的右側(cè)窗口中,彈出“IP Catalog”標(biāo)簽頁。在該標(biāo)簽頁的搜索框中輸入“VIO”,則在下面出現(xiàn)“VIO(Virtual Input/Output)”,如圖所示,雙擊“VIO(Virtual Input/Output)”。

48a63846-0fe5-11ec-8fb8-12bb97331649.png

第四步:彈出“Customize IP-VIO(VirtualInput/Output)”對話框。

(1)單擊“General Options”標(biāo)簽,如圖所示,在該標(biāo)簽頁中,按如下參數(shù)進(jìn)行設(shè)置。

48d131ae-0fe5-11ec-8fb8-12bb97331649.png

Input ProbeCount:1。

Output ProbeCount:3。

勾選 Enable Input Probe Activity Detectors前面的復(fù)選框。

(2)單擊“PROBE_IN Ports(0..0)”標(biāo)簽,如圖所示,在該標(biāo)簽頁中,按如下參數(shù)進(jìn)行設(shè)置

48e223ec-0fe5-11ec-8fb8-12bb97331649.png

(3)單擊“PROBE_OUTPorts(0..2)”標(biāo)簽,如圖所示,在該標(biāo)簽頁中,按如下參數(shù)進(jìn)行設(shè)置。

48f1c478-0fe5-11ec-8fb8-12bb97331649.png

第五步:單擊【OK】按鈕,退出“Customize IP”對話框。

第六步:彈出“Generate Output Products”對話框。

第七步:單擊【Generate】按鈕,退出“Generate Output Products”對話框。

第八步:在“Sources”窗口中,單擊“IP Sources”標(biāo)簽。在該標(biāo)簽頁中,可以看到添加了名字為“vio_0”的IP核實(shí)例,如圖所示。找到并展開“vio_0”選項(xiàng)。在展開項(xiàng)中,找到并展開“Instatiation Template”選項(xiàng)。在展開項(xiàng)中,選擇并用鼠標(biāo)左鍵雙擊vio_0.veo,打開其例化模板,如下述代碼所示。

492d2dce-0fe5-11ec-8fb8-12bb97331649.png

//-----------BeginCuthereforINSTANTIATIONTemplate---//INST_TAG
vio_0your_instance_name(
.clk(clk),//inputwireclk
.probe_in0(probe_in0),//inputwire[5:0]probe_in0
.probe_out0(probe_out0),//outputwire[0:0]probe_out0
.probe_out1(probe_out1),//outputwire[0:0]probe_out1
.probe_out2(probe_out2)//outputwire[0:0]probe_out2
);

第九步:在“Sources”窗口中,單擊“Hierarchy”標(biāo)簽。在該標(biāo)簽頁中,找到并展開“Design Sources”選項(xiàng)。在展開項(xiàng)中,找到并用鼠標(biāo)雙擊top.v文件,按下述代碼修改設(shè)計代碼,并添加vio的例化代碼。

`timescale1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
//Company:
//Engineer:
//
//CreateDate:2021/08/222358
//DesignName:
//ModuleName:top
//ProjectName:
//TargetDevices:
//ToolVersions:
//Description:
//
//Dependencies:
//
//Revision:
//Revision0.01-FileCreated
//AdditionalComments:
//
//////////////////////////////////////////////////////////////////////////////////


moduletop(
inputclk,
inputa,
inputb,
outputreg[5:0]z
);
reg[5:0]z_tmp;
wire[5:0]z_vio;
rega_tmp,b_tmp;
wirea_in,b_in;
wiresel;
wirea_vio,b_vio;
assigna_in=sel?a:a_vio;
assignb_in=sel?b:b_vio;
assignz_vio=z;

vio_0Inst_vio(
.clk(clk),//inputwireclk
.probe_in0(z),//inputwire[5:0]probe_in0
.probe_out0(sel),//outputwire[0:0]probe_out0
.probe_out1(a_vio),//outputwire[0:0]probe_out1
.probe_out2(b_vio)//outputwire[0:0]probe_out2
);
always@(posedgeclk)
begin
a_tmp<=a_in;
?b_tmp<=b_in;
end?
always?@(*)
begin
?z_tmp[0]=a_tmp?&?b_tmp;
?z_tmp[1]=~(a_tmp?&?b_tmp);
?z_tmp[2]=a_tmp?|?b_tmp;
?z_tmp[3]=~(a_tmp?|?b_tmp);
?z_tmp[4]=a_tmp?^?b_tmp;
?z_tmp[5]=a_tmp?~^?b_tmp;
end?
always?@(posedge?clk)
begin
z<=z_tmp;
end?

endmodule

第 十 步 :保 存 該 設(shè) 計 文 件 。

生成比特流文件

下載并調(diào)試設(shè)計

將生成的比特流文件下載到開發(fā)板上的FPGA元器件中,并通過VIO對設(shè)計進(jìn)行監(jiān)控,主要步驟如下所示。

第一步:將JTAG和FPGA板卡鏈接并和PC連接。

第二步:給開發(fā)板上電。

第三步:在“HARDWARE MANAGER”對話框中,單擊【Open target】按鈕,出現(xiàn)浮動菜單。在浮動菜單內(nèi),執(zhí)行菜單命令【AutoConnect】。

第四步:在“Hardware”窗口中,選擇FPGA,單擊鼠標(biāo)右鍵,出現(xiàn)浮動菜單。在浮動菜單內(nèi),執(zhí)行菜單命令【Program Device】。

第五步:彈出“Program Device”對話框,如圖所示。在該對話框中,選擇合適的“Bit stream file”和“Debug probes files”。

49538564-0fe5-11ec-8fb8-12bb97331649.png

第六步:單擊【Program】按鈕。

第七步:在Vivado主界面右側(cè)的窗口中,彈出“hw_vio_l”對話框,如圖所示。在該對話框中,單擊+按鈕。出現(xiàn)浮動菜單。在浮動菜單內(nèi),分別雙擊a_vio、b_vio、sel和z_OBUF[5:0],將其添加到“hw_vio_l”對話框中,如圖所示。

497dded6-0fe5-11ec-8fb8-12bb97331649.png

49b9002e-0fe5-11ec-8fb8-12bb97331649.png

第八步:在圖所示的對話框中,先將sel的“Value”設(shè)置為1,此時a_vio和b_vio的值將送給FPGA設(shè)計。

第九步:在圖所示的對話框中,將“sel”的“Value”設(shè)置為0,此時由開發(fā)板上開關(guān)的設(shè)置狀態(tài)確定a和b的值,并將其送給FPGA設(shè)計。

第十步:關(guān)閉并退出設(shè)計。

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

    關(guān)注

    1643

    文章

    21983

    瀏覽量

    614654
  • JTAG
    +關(guān)注

    關(guān)注

    6

    文章

    403

    瀏覽量

    72987
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70310
  • VIO
    VIO
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    10333

原文標(biāo)題:【Vivado那些事兒】-VIO原理及應(yīng)用

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 0人收藏

    評論

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

    FPGA調(diào)試方式VIO/ILA的使用

    Vivado中,VIO(Virtual Input/Output)是一種用于調(diào)試和測試FPGA設(shè)計的IP核,它允許設(shè)計者通過JTAG接口實(shí)時讀取和寫入FPGA內(nèi)部的寄存器,從而檢查設(shè)計的運(yùn)行狀態(tài)并修改其行為。VIO IP核提供
    的頭像 發(fā)表于 06-09 09:32 ?502次閱讀
    FPGA調(diào)試方式<b class='flag-5'>之</b><b class='flag-5'>VIO</b>/ILA的使用

    如何使用One Spin檢查AMD Vivado Design Suite Synth的結(jié)果

    本文講述了如何使用 One Spin 檢查 AMD Vivado Design Suite Synth 的結(jié)果(以 Vivado 2024.2 為例)。
    的頭像 發(fā)表于 05-19 14:22 ?406次閱讀
    如何使用One Spin檢查AMD <b class='flag-5'>Vivado</b> Design Suite Synth的結(jié)果

    CANape 23.0新特性:支持VIO系統(tǒng)#CANape #VIO

    vector_canape
    北匯信息POLELINK
    發(fā)布于 :2025年03月14日 10:17:41

    AMD Vivado Design Suite IDE中的設(shè)計分析簡介

    本文檔涵蓋了如何驅(qū)動 AMD Vivado Design Suite 來分析和改善您的設(shè)計。
    的頭像 發(fā)表于 02-19 11:22 ?507次閱讀
    AMD <b class='flag-5'>Vivado</b> Design Suite IDE中的設(shè)計分析簡介

    請問LDC1000的VIO接口可以接5V電源嗎?

    LDC1000的VIO接口可以接5V電源嗎?
    發(fā)表于 01-17 08:40

    Vivado Design Suite用戶指南:邏輯仿真

    電子發(fā)燒友網(wǎng)站提供《Vivado Design Suite用戶指南:邏輯仿真.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 15:25 ?0次下載
    <b class='flag-5'>Vivado</b> Design Suite用戶指南:邏輯仿真

    TCAN1051HGV VIO管腳作用是什么?

    我們項(xiàng)目中準(zhǔn)備選用TCAN1051HGV,在閱讀其規(guī)格書,請問VIO管腳作用是什么?我們的CPU電壓供電電壓是3.3V,而TCAN1051HGV電壓VCC為5V,請問VIO管腳是不是與MCU的供電電壓連接在一起,如果連接在一起,請問CANH/CANL高電平是5V還是3.
    發(fā)表于 12-17 07:46

    一種降低VIO/VSLAM系統(tǒng)漂移的新方法

    本文提出了一種新方法,通過使用點(diǎn)到平面匹配將VIO/VSLAM系統(tǒng)生成的稀疏3D點(diǎn)云與數(shù)字孿生體進(jìn)行對齊,從而實(shí)現(xiàn)精確且全球一致的定位,無需視覺數(shù)據(jù)關(guān)聯(lián)。所提方法為VIO/VSLAM系統(tǒng)提供了緊密
    的頭像 發(fā)表于 12-13 11:18 ?619次閱讀
    一種降低<b class='flag-5'>VIO</b>/VSLAM系統(tǒng)漂移的新方法

    Xilinx_Vivado_SDK的安裝教程

    I Agree,然后點(diǎn)擊 Next: 選擇 Vivado HL System Edition(一般選擇這個設(shè)計套件比較完整,它比 Vivado HL Design Edition 多了一個 System Generator for DSP with Mat
    的頭像 發(fā)表于 11-16 09:53 ?4689次閱讀
    Xilinx_<b class='flag-5'>Vivado</b>_SDK的安裝教程

    每次Vivado編譯的結(jié)果都一樣嗎

    很多FPGA工程師都有這種困惑,Vivado每次編譯的結(jié)果都一樣嗎? 在AMD官網(wǎng)上,有這樣一個帖子: Are Vivado results repeatable for identical
    的頭像 發(fā)表于 11-11 11:23 ?1102次閱讀
    每次<b class='flag-5'>Vivado</b>編譯的結(jié)果都一樣嗎

    Vivado使用小技巧

    有時我們對時序約束進(jìn)行了一些調(diào)整,希望能夠快速看到對應(yīng)的時序報告,而又不希望重新布局布線。這時,我們可以打開布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時序約束。如果調(diào)整
    的頭像 發(fā)表于 10-24 15:08 ?918次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    Vivado 2024.1版本的新特性(2)

    從綜合角度看,Vivado 2024.1對SystemVerilog和VHDL-2019的一些特性開始支持。先看SystemVerilog。
    的頭像 發(fā)表于 09-18 10:34 ?1723次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(2)

    Vivado 2024.1版本的新特性(1)

    Vivado 2024.1已正式發(fā)布,今天我們就來看看新版本帶來了哪些新特性。
    的頭像 發(fā)表于 09-18 10:30 ?2352次閱讀
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(1)

    基于CANoe的VIO系統(tǒng)應(yīng)用測試方案介紹#CANoe #VTHiL

    VIO
    北匯信息POLELINK
    發(fā)布于 :2024年09月11日 09:23:20

    深入了解基于CANoe的VIO系統(tǒng)應(yīng)用

    VIO System是Vector推出的一款適用于前期單板級測試使用的硬件系統(tǒng),不僅可以進(jìn)行總線通訊測試,也可以同時進(jìn)行I/O信號測試,可以讓工程師在ECU或者傳感器開發(fā)前期就發(fā)現(xiàn)問題,能夠盡早排查解決,極大降低了人力物力開發(fā)成本。
    的頭像 發(fā)表于 09-01 16:21 ?3485次閱讀
    深入了解基于CANoe的<b class='flag-5'>VIO</b>系統(tǒng)應(yīng)用

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品