在以往的項(xiàng)目中,要控制FPGA內(nèi)部某個(gè)信號的值,往往是通過配置寄存器來實(shí)現(xiàn)的。其實(shí)Xilinx還提供了一個(gè)叫VIO的core,可以動態(tài)改變FPGA內(nèi)部某個(gè)信號的值,但是一直沒有用過,一來對于以前的項(xiàng)目來說,沒有應(yīng)用場景,通過寄存器就可以配置了;二來感覺這個(gè)東西不是很“實(shí)用”。
背景
在項(xiàng)目中,本來是通過PCIe來配置寄存器的,但是由于某些原因PCIe接口一直有問題,無法配置。FPGA內(nèi)實(shí)現(xiàn)了一個(gè)功能,可以根據(jù)寄存器的值來執(zhí)行不同的操作,這個(gè)時(shí)候就發(fā)現(xiàn)無法上板測試,因?yàn)闆]有辦法配置寄存器。這個(gè)時(shí)候突然想到了VIO這個(gè)core。
VIO介紹
VIO 這個(gè)core其實(shí)非常的簡單,沒有什么太多需要介紹的,可以參考 PG159 ,這里做一個(gè)簡單的說明??驁D如下圖所示:
該模塊就是定義了一些輸入和輸出,其中可以定義的輸入和輸出信號的個(gè)數(shù)最多為256個(gè),每個(gè)信號的位寬最大為256bit。在例化的時(shí)候只需要確定需要監(jiān)控的信號個(gè)數(shù),以及每個(gè)信號的位寬;或者需要控制的信號個(gè)數(shù)和每個(gè)信號的位寬即可。
場景應(yīng)用
比如我們有如下一個(gè)場景,A模塊輸出一個(gè)控制信號a2b_en給B模塊,從而控制B模塊的工作方式。但是A模塊目前還不能產(chǎn)生該信號,筆者的項(xiàng)目中,A模塊就是PCIe模塊,由于沒有調(diào)通,還無法通過配置來控制a2b_en信號。
這個(gè)時(shí)候,我們例化了一個(gè)VIO模塊,只用它的輸出,并將這個(gè)輸出連接到B模塊的輸入信號a2b_en上即可。
在加載后,vivado會彈出調(diào)試窗口,通過該窗口,我們可以看到控制信號a2b_en,這個(gè)時(shí)候就可以設(shè)置它的值為0還是為1.
當(dāng)然上述例子中我們只是用了它的output,其input的使用就和ila有點(diǎn)類似了。
總結(jié)
當(dāng)我們需要動態(tài)的修改FPGA內(nèi)某些寄存器的值時(shí),除了通過軟件寄存器配置的方式,還可以通過例化VIO的方式來實(shí)現(xiàn)修改。另外VIO和ila一樣也可以監(jiān)控內(nèi)部信號的值,當(dāng)我們只是簡單的觀測下某個(gè)信號時(shí),可以采用VIO,因?yàn)橄啾萯la,它不需要緩存,當(dāng)然對于復(fù)雜的問題分析,ila還是更勝一籌。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21983瀏覽量
614654 -
寄存器
+關(guān)注
關(guān)注
31文章
5425瀏覽量
123549 -
Xilinx
+關(guān)注
關(guān)注
73文章
2183瀏覽量
124480 -
PCIe
+關(guān)注
關(guān)注
16文章
1328瀏覽量
84755 -
VIO
+關(guān)注
關(guān)注
0文章
11瀏覽量
10333
發(fā)布評論請先 登錄
XILINX FPGA Debug with VIO and TCL
MOS管的應(yīng)用場景
this的使用場景及與C,Java中的this的區(qū)別
幾種LED調(diào)光協(xié)議分析及具體應(yīng)用場景介紹
Firefly集群服務(wù)器的應(yīng)用場景資料介紹
SMT組裝工藝流程的應(yīng)用場景
labview 和 wincc 的區(qū)別 使用場景
Vivado之VIO原理及應(yīng)用

評論