在以往的項目中,要控制FPGA內(nèi)部某個信號的值,往往是通過配置寄存器來實現(xiàn)的。其實Xilinx還提供了一個叫VIO的core,可以動態(tài)改變FPGA內(nèi)部某個信號的值,但是一直沒有用過,一來對于以前的項目來說,沒有應用場景,通過寄存器就可以配置了;二來感覺這個東西不是很“實用”。
背景
在項目中,本來是通過PCIe來配置寄存器的,但是由于某些原因PCIe接口一直有問題,無法配置。FPGA內(nèi)實現(xiàn)了一個功能,可以根據(jù)寄存器的值來執(zhí)行不同的操作,這個時候就發(fā)現(xiàn)無法上板測試,因為沒有辦法配置寄存器。這個時候突然想到了VIO這個core。
VIO介紹
VIO 這個core其實非常的簡單,沒有什么太多需要介紹的,可以參考 PG159 ,這里做一個簡單的說明。框圖如下圖所示:
該模塊就是定義了一些輸入和輸出,其中可以定義的輸入和輸出信號的個數(shù)最多為256個,每個信號的位寬最大為256bit。在例化的時候只需要確定需要監(jiān)控的信號個數(shù),以及每個信號的位寬;或者需要控制的信號個數(shù)和每個信號的位寬即可。
場景應用
比如我們有如下一個場景,A模塊輸出一個控制信號a2b_en給B模塊,從而控制B模塊的工作方式。但是A模塊目前還不能產(chǎn)生該信號,筆者的項目中,A模塊就是PCIe模塊,由于沒有調(diào)通,還無法通過配置來控制a2b_en信號。
這個時候,我們例化了一個VIO模塊,只用它的輸出,并將這個輸出連接到B模塊的輸入信號a2b_en上即可。
在加載后,vivado會彈出調(diào)試窗口,通過該窗口,我們可以看到控制信號a2b_en,這個時候就可以設置它的值為0還是為1.
當然上述例子中我們只是用了它的output,其input的使用就和ila有點類似了。
總結(jié)
當我們需要動態(tài)的修改FPGA內(nèi)某些寄存器的值時,除了通過軟件寄存器配置的方式,還可以通過例化VIO的方式來實現(xiàn)修改。另外VIO和ila一樣也可以監(jiān)控內(nèi)部信號的值,當我們只是簡單的觀測下某個信號時,可以采用VIO,因為相比ila,它不需要緩存,當然對于復雜的問題分析,ila還是更勝一籌。
-
FPGA
+關注
關注
1625文章
21620瀏覽量
601234 -
寄存器
+關注
關注
31文章
5294瀏覽量
119814 -
Xilinx
+關注
關注
71文章
2155瀏覽量
120850 -
PCIe
+關注
關注
15文章
1200瀏覽量
82352 -
VIO
+關注
關注
0文章
11瀏覽量
10114
發(fā)布評論請先 登錄
相關推薦
評論