在以往的項(xiàng)目中,要控制FPGA內(nèi)部某個(gè)信號(hào)的值,往往是通過配置寄存器來實(shí)現(xiàn)的。其實(shí)Xilinx還提供了一個(gè)叫VIO的core,可以動(dòng)態(tài)改變FPGA內(nèi)部某個(gè)信號(hào)的值,但是一直沒有用過,一來對(duì)于以前的項(xiàng)目來說,沒有應(yīng)用場(chǎng)景,通過寄存器就可以配置了;二來感覺這個(gè)東西不是很“實(shí)用”。
背景
在項(xiàng)目中,本來是通過PCIe來配置寄存器的,但是由于某些原因PCIe接口一直有問題,無(wú)法配置。FPGA內(nèi)實(shí)現(xiàn)了一個(gè)功能,可以根據(jù)寄存器的值來執(zhí)行不同的操作,這個(gè)時(shí)候就發(fā)現(xiàn)無(wú)法上板測(cè)試,因?yàn)闆]有辦法配置寄存器。這個(gè)時(shí)候突然想到了VIO這個(gè)core。
VIO介紹
VIO 這個(gè)core其實(shí)非常的簡(jiǎn)單,沒有什么太多需要介紹的,可以參考 PG159 ,這里做一個(gè)簡(jiǎn)單的說明??驁D如下圖所示:

該模塊就是定義了一些輸入和輸出,其中可以定義的輸入和輸出信號(hào)的個(gè)數(shù)最多為256個(gè),每個(gè)信號(hào)的位寬最大為256bit。在例化的時(shí)候只需要確定需要監(jiān)控的信號(hào)個(gè)數(shù),以及每個(gè)信號(hào)的位寬;或者需要控制的信號(hào)個(gè)數(shù)和每個(gè)信號(hào)的位寬即可。
場(chǎng)景應(yīng)用
比如我們有如下一個(gè)場(chǎng)景,A模塊輸出一個(gè)控制信號(hào)a2b_en給B模塊,從而控制B模塊的工作方式。但是A模塊目前還不能產(chǎn)生該信號(hào),筆者的項(xiàng)目中,A模塊就是PCIe模塊,由于沒有調(diào)通,還無(wú)法通過配置來控制a2b_en信號(hào)。

這個(gè)時(shí)候,我們例化了一個(gè)VIO模塊,只用它的輸出,并將這個(gè)輸出連接到B模塊的輸入信號(hào)a2b_en上即可。
在加載后,vivado會(huì)彈出調(diào)試窗口,通過該窗口,我們可以看到控制信號(hào)a2b_en,這個(gè)時(shí)候就可以設(shè)置它的值為0還是為1.
當(dāng)然上述例子中我們只是用了它的output,其input的使用就和ila有點(diǎn)類似了。
總結(jié)
當(dāng)我們需要?jiǎng)討B(tài)的修改FPGA內(nèi)某些寄存器的值時(shí),除了通過軟件寄存器配置的方式,還可以通過例化VIO的方式來實(shí)現(xiàn)修改。另外VIO和ila一樣也可以監(jiān)控內(nèi)部信號(hào)的值,當(dāng)我們只是簡(jiǎn)單的觀測(cè)下某個(gè)信號(hào)時(shí),可以采用VIO,因?yàn)橄啾萯la,它不需要緩存,當(dāng)然對(duì)于復(fù)雜的問題分析,ila還是更勝一籌。
-
FPGA
+關(guān)注
關(guān)注
1660文章
22412瀏覽量
636345 -
寄存器
+關(guān)注
關(guān)注
31文章
5608瀏覽量
129998 -
Xilinx
+關(guān)注
關(guān)注
73文章
2200瀏覽量
131147 -
PCIe
+關(guān)注
關(guān)注
16文章
1461瀏覽量
88425 -
VIO
+關(guān)注
關(guān)注
0文章
11瀏覽量
10649
發(fā)布評(píng)論請(qǐng)先 登錄
Switch的應(yīng)用場(chǎng)景
XILINX FPGA Debug with VIO and TCL
MOS管的應(yīng)用場(chǎng)景
FPGA的應(yīng)用場(chǎng)景
幾種LED調(diào)光協(xié)議分析及具體應(yīng)用場(chǎng)景介紹
Firefly集群服務(wù)器的應(yīng)用場(chǎng)景資料介紹
SMT組裝工藝流程的應(yīng)用場(chǎng)景
labview 和 wincc 的區(qū)別 使用場(chǎng)景
Vivado之VIO原理及應(yīng)用
Xilinx FPGA串行通信協(xié)議介紹
Xilinx VIO介紹和應(yīng)用場(chǎng)景
評(píng)論