模型功能
- 使用ILA觀察信號
- 觀察變量的轉化
- 觸發(fā)信號的設立
- ILA調試狀態(tài)機的編寫
- VIO的手動控制
模型框圖
ila_0 u_ila_0(
.clk(clk),
.probe0(probe_0)
);
實現(xiàn)步驟
- ILA調試核的使用
- 直接調用該IP核,可以實現(xiàn)一個在線邏輯分析儀的功能

- ILA核的設置包括信號個數(shù)(對應位寬在第二頁)、比較器個數(shù)、TRG輸入輸出、高級功能
- 其中比較器個數(shù)和高級功能為調試狀態(tài)機提供條件
- 設置2比較時,只能進行兩次同變量的比較,
- 觀察變量的轉化
- 通過wire可以將變量轉化為方便觀察的量,然后連接到多個probe
- 也可利用ila自定義端口進行轉化
- 但是這種轉化出來的變量只能用于等于判斷,不能用于大小判斷
- 所以最好使用probe對每個變量獨立觀測
- 變量的除法除了輸入觸發(fā)信號,還可以利用觀測信號進行自觸發(fā)
- 這個操作和示波器是一致的
- 觸發(fā)信號的設置
- 使用專用觸發(fā)信號
- 在這里選擇觸發(fā)類型
- 將輸入的信號作為專用觸發(fā)信號
- 如果要使用自觸發(fā),修改為默認的BASIC即可
- 至于高級模式,就是狀態(tài)機觸發(fā)
- 狀態(tài)機觸發(fā)的實現(xiàn)

- 官方的狀態(tài)機觸發(fā)例子,主要結構就是狀態(tài)機不帶case的寫法,且每個if后面增加then,類似PYTHON的語法
- 基于上述修改一個
##################################################
#
# For info on creating trigger state machines:
# 1) In the main Vivado menu bar, select
# Window > Language Templates
# 2) In the Templates window, select
# Debug > Trigger State Machine
# 3) Refer to the entry 'Info' for an overview
# of the trigger state machine language.
#
# More information can be found in this document:
#
# Vivado Design Suite User Guide: Programming
# and Debugging (UG908)
#
##################################################
state S0:
if ( r_cnt == 32'h0000_0010 ) then
goto S1;
else
goto S0;
endif
state S1:
goto S2;
state S2:
goto S3;
state S3:
trigger;
- 編寫完成后可以點擊編譯按鈕,觀察是否存在語法錯誤
- 從這個文件調試中發(fā)現(xiàn)以下的要點:
(1)位寬必須嚴格對應(和GUI設置自觸發(fā)一樣)
(2)不支持d十進制匹配,而是使用u代替,這里和verilog不一致
(3)trigger語句代表狀態(tài)機結束,不能在進行其他邏輯
(4)一個變量只能出現(xiàn)一種形式的比較,也就是不能進行同信號的多種判斷,這個可能是觸發(fā)信號簡化的結果 - 上述的文件等效于 r_cnt == 32'h0000_0010,但是觸發(fā)延時了三個周期
- 當信號很多的時候,利用這個狀態(tài)機可以實現(xiàn)觸發(fā)條件的復雜聯(lián)動,實現(xiàn)某些特殊的判斷
- 狀態(tài)負責進行新的判斷掃描,直達獲取到對應的條件,然后再按照跳轉條件進行觸發(fā)
- 如果真的需要實現(xiàn)硬件狀態(tài)機,則需要將每個條件都通過獨立的通道進行導入
- 這樣才能實現(xiàn)真正的非即時斷言的功能
- 從這個文件調試中發(fā)現(xiàn)以下的要點:
- VIO的手動控制
- 除了檢測信號,xilinx提供了VIO進行虛擬信號的生成
- 主要是搭建一個簡易的信號控制,可以用于無指令系統(tǒng)時的簡易控制
- 這個使用比較簡單,就不再展開
最終效果

- 延時3個周期后觸發(fā)
調用接口
- 略
======== ======\\ ======= -
|| || \\ // \\ /-\
|| || || // // \\
|| || // || // \\
====== ======= || === ========
|| || || \\ // \\
|| || \\ || // \\
|| || \\ // // \\
|| || ======= // \\
作者:綠葉落秋風,專注FPGA技術分析和分享,轉載請注明原文鏈接:http://www.rzrgm.cn/electricdream/p/18106717,文中資源鏈接如下:
1. GITHUB開源倉庫
浙公網(wǎng)安備 33010602011771號