Xilinx Vivado 硬件診斷( ila和vio的使用)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Xilinx Vivado 硬件診斷( ila和vio的使用)
1背景知識(shí)
在我們的FPGA設(shè)計(jì)項(xiàng)目中,硬件的診斷和校驗(yàn)可能會(huì)占去超過30%—40%的FPGA開發(fā)時(shí)間,FPGA的debug也是FPGA設(shè)計(jì)中重要的一環(huán)。掌握并靈活運(yùn)用FPGA設(shè)計(jì)工具的debug功能也是加快FPGA設(shè)計(jì)的關(guān)鍵。
1.1 ILA(Integrated Logic Analyzer)
FPGA設(shè)計(jì)中的信號(hào)連接到ILA核的時(shí)鐘和探針輸入如圖1。這些信號(hào)附加到探針輸入,以設(shè)計(jì)速度采樣,并使用片上塊RAM(BRAM)存儲(chǔ)。核參數(shù)指定探針的數(shù)量、跟蹤樣本深度和每個(gè)探針輸入的寬度。使用與FPGA的JTAG接口連接的自動(dòng)實(shí)例化調(diào)試核心集線器與ILA核進(jìn)行通信。
圖1 ILA Core
1.2 VIO (Virtual Input/Output core)
VIO核是一個(gè)可定制的核,可以實(shí)時(shí)監(jiān)控和驅(qū)動(dòng)內(nèi)部FPGA信號(hào)。不像ILA核,不需要片上或片外RAM。
VIO核有兩種類型的信號(hào):
. Input probes
.Output probes
圖2 VIO Block Diagram
2 ila 和 vio在工程中使用
我們使用uart工程來做示例。
圖3 uart示例模塊圖
如圖3所示,整個(gè)串口工程包括波特率時(shí)鐘產(chǎn)生模塊,串口接收模塊和串口發(fā)送模塊。我們將使用ila IP對(duì)uart_rx模塊的接收數(shù)據(jù)進(jìn)行debug,使用vio IP對(duì)uart_tx模塊進(jìn)行debug。
我們使用Ila將對(duì) rx_data的接收數(shù)據(jù)進(jìn)行實(shí)時(shí)觀測(cè),以此來判斷程序是否正確。
2.1 ila IP和vio IP的創(chuàng)建
Ila IP的創(chuàng)建,首先打開 IP Catalog如圖4。
圖4 IP Catalog
搜索ila如圖5。
圖5 ila ip
雙擊打開ila IP ,相關(guān)參數(shù)設(shè)置如圖6。
圖6 ila IP參數(shù)設(shè)置
Ila IP的探頭位寬設(shè)置如圖7。
圖7 Ila IP位寬的設(shè)置
Vio的設(shè)置如圖8和圖9。
8 探頭個(gè)數(shù)的設(shè)置
圖9 探頭數(shù)據(jù)位寬和初始化值的設(shè)置
對(duì)Ila IP 和 vio IP的例化。
然后我們綜合實(shí)現(xiàn)完成后下載程序如圖10。
圖10 programming FPGA
2.2 ila 和vio對(duì)uart的實(shí)時(shí)數(shù)據(jù)采集
Ila的調(diào)試,我們使用rx_done 信號(hào)作為觸發(fā)信號(hào),設(shè)置觸發(fā)條件等于1,如圖11所示。
圖11 觸發(fā)條件的設(shè)置
我們使用串口工具發(fā)送數(shù)據(jù),觸發(fā)以后我們可以觀測(cè)到FPGA內(nèi)部rx_data接收完成后的數(shù)據(jù)如圖12。
圖12 ila IP 觀測(cè)到FPGA內(nèi)部信號(hào)的變化
Vio的調(diào)試,點(diǎn)擊+號(hào),添加三個(gè)數(shù)據(jù)端口如圖所示13。
圖13 vio觀測(cè)端口的設(shè)置
當(dāng)tx_en 為1時(shí)將tx_data上的數(shù)據(jù)從FPGA內(nèi)部發(fā)送到串口工具上,如圖14所示。
圖14 通過vio將數(shù)據(jù)從FPGA內(nèi)部發(fā)送到串口工具
學(xué)會(huì)對(duì)FPGA內(nèi)部信號(hào)的debug是FPGA設(shè)計(jì)過程中重要的一環(huán)。Vivado的debug相對(duì)于ISE更為簡(jiǎn)單,更加易用。





