1背景知識
在我們的FPGA設(shè)計(jì)項(xiàng)目中,硬件的診斷和校驗(yàn)可能會占去超過30%—40%的FPGA開發(fā)時(shí)間,F(xiàn)PGA的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ì)中的信號連接到ILA核的時(shí)鐘和探針輸入如圖1。這些信號附加到探針輸入,以設(shè)計(jì)速度采樣,并使用片上塊RAM(BRAM)存儲。核參數(shù)指定探針的數(shù)量、跟蹤樣本深度和每個(gè)探針輸入的寬度。使用與FPGA的JTAG接口連接的自動實(shí)例化調(diào)試核心集線器與ILA核進(jìn)行通信。
圖1 ILA Core
1.2 VIO (Virtual Input/Output core)
VIO核是一個(gè)可定制的核,可以實(shí)時(shí)監(jiān)控和驅(qū)動內(nèi)部FPGA信號。不像ILA核,不需要片上或片外RAM。
VIO核有兩種類型的信號:
. Input probes
.Output probes
圖2 VIO Block Diagram
2 ila 和 vio在工程中使用
我們使用uart工程來做示例。
圖3 uart示例模塊圖
如圖3所示,整個(gè)串口工程包括波特率時(shí)鐘產(chǎn)生模塊,串口接收模塊和串口發(fā)送模塊。我們將使用ila IP對uart_rx模塊的接收數(shù)據(jù)進(jìn)行debug,使用vio IP對uart_tx模塊進(jìn)行debug。
我們使用Ila將對 rx_data的接收數(shù)據(jù)進(jìn)行實(shí)時(shí)觀測,以此來判斷程序是否正確。
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è)置
對Ila IP 和 vio IP的例化。
然后我們綜合實(shí)現(xiàn)完成后下載程序如圖10。
圖10 programming FPGA
2.2 ila 和vio對uart的實(shí)時(shí)數(shù)據(jù)采集
Ila的調(diào)試,我們使用rx_done 信號作為觸發(fā)信號,設(shè)置觸發(fā)條件等于1,如圖11所示。
圖11 觸發(fā)條件的設(shè)置
我們使用串口工具發(fā)送數(shù)據(jù),觸發(fā)以后我們可以觀測到FPGA內(nèi)部rx_data接收完成后的數(shù)據(jù)如圖12。
圖12 ila IP 觀測到FPGA內(nèi)部信號的變化
Vio的調(diào)試,點(diǎn)擊+號,添加三個(gè)數(shù)據(jù)端口如圖所示13。
圖13 vio觀測端口的設(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é)會對FPGA內(nèi)部信號的debug是FPGA設(shè)計(jì)過程中重要的一環(huán)。Vivado的debug相對于ISE更為簡單,更加易用。
評論
查看更多