大家好,這里是程序員 杰克 。一名平平無(wú)奇的嵌入式軟件工程師。
在日常FPGA開(kāi)發(fā)過(guò)程中,邏輯代碼設(shè)計(jì)完成后,為了驗(yàn)證代碼邏輯的正確性,優(yōu)先使用邏輯仿真(modesim)進(jìn)行驗(yàn)證。仿真驗(yàn)證通過(guò)后進(jìn)行板級(jí)驗(yàn)證時(shí),使用邏輯分析儀進(jìn)行分析和驗(yàn)證邏輯是否正確。FPGA兩大主流廠商的軟件集成邏輯分析儀供使用,Altera的Quartus自帶SignalTap、Xilinx的Vivado自帶ILA邏輯調(diào)試工具。
本篇總結(jié)和分享在Xilinx編譯工具Vivado環(huán)境下,使用內(nèi)嵌的邏輯分析儀(ILA)的4種方法:
- HDL代碼實(shí)例化ILA IP核
- Block Design添加ILA IP核
- Synthesis后對(duì)Nets執(zhí)行Mark Debug操作
- 在HDL代碼中使用屬性關(guān)鍵字mark_debug
本文以"LED每0.5s間隔亮滅"工程為例,觀測(cè) led[0]信號(hào)以及l(fā)ed_cnt[24:0]時(shí)鐘計(jì)數(shù)信號(hào) ,演示ILA使用的4種方法以及相關(guān)的注意事項(xiàng)。
01 HDL代碼實(shí)例化ILA IP核
在IP Catalog中搜索ILA,然后雙擊該IP核進(jìn)行配置。
本示例中l(wèi)ed[0]、led_cnt[24:0]信號(hào)位寬分別為1、25bit,具體配置如下所示;配置完成后,點(diǎn)擊“OK”;在彈出的界面點(diǎn)擊“Generate”完成IP核的配置和生成。
在Verilog代碼中對(duì)剛生成的ILA核進(jìn)行實(shí)例化,在具體代碼添加例化代碼,如下所示:
ila_0 ila_0_inst0 (
.clk (clk ), // input wire clk
.probe0 (led ), // input wire [0:0] probe0
.probe1 (led_cnt) // input wire [24:0] probe1
);
綜合、實(shí)現(xiàn)、生成bit后寫(xiě)到FPGA芯片便可觀測(cè)到信號(hào)(此處不做演示)。
特別說(shuō)明:對(duì)于純FPGA工程,杰克推薦該方式去使用ILA;
02 Block Design添加ILA IP核
在Vivado中,除了使用HDL語(yǔ)言去描述設(shè)計(jì),還可以通過(guò)Block Design圖形化連接的方式進(jìn)行設(shè)計(jì)。7系列的軟核MicroBlaze、帶硬核的SOC芯片(ZYNQ、MPSOC等)的設(shè)計(jì)都是通過(guò)Block和HDL相結(jié)合來(lái)描述設(shè)計(jì)。本文仍以純FPGA方式來(lái)說(shuō)明在Block Design中使用ILA核(純FPGA開(kāi)發(fā)不建議)。ILA使用操作如下:
創(chuàng)建/打開(kāi)Block Design,在Diagram界面,點(diǎn)擊“+”按鈕,搜索ILA,然后雙擊該IP核進(jìn)行配置。
參數(shù)配置的方式與上一小節(jié)一致,這里不作贅述。不同之處是在Block Design中使用ILA核,ILA核的實(shí)例化HDL代碼會(huì)自動(dòng)生成到Block Design文件中。
綜合、實(shí)現(xiàn)、生成bit后寫(xiě)到FPGA芯片便可觀測(cè)到信號(hào)(此處不做演示)。
特別說(shuō)明:
帶MicroBlaze軟核/ARM硬核的FPGA的復(fù)雜設(shè)計(jì)中,模塊接口的信號(hào)觀測(cè)ILA使用該方法;模塊內(nèi)部信號(hào)的觀測(cè)ILA使用上一小節(jié)的方式;兩者可結(jié)合使用。
03 綜合后添加Mark Debug
對(duì)工程執(zhí)行綜合,綜合完成后,找到要觀測(cè)的信號(hào)的Nets,右鍵選擇“Mark Debug”;
要觀測(cè)信號(hào)的Nets選擇并設(shè)置完成后,點(diǎn)擊“Set Up Debug”;按照下面步驟配置Debug ILA參數(shù);
Debug ILA配置完成后,保存SYNTHESIZED DESIGN后會(huì)在約束文件(.xdc)中生成ILA的配置約束,如下圖所示:
綜合、實(shí)現(xiàn)、生成bit后寫(xiě)到FPGA芯片便可觀測(cè)到信號(hào)(此處不做演示)。
特別說(shuō)明:mark_debug僅可以對(duì)Nets類(lèi)型進(jìn)行操作,不能對(duì)Cells操作;
04 HDL中使用MARK_DEBUG
MARK_DEBUG描述
vivado設(shè)計(jì)IDE提供了一些屬性供開(kāi)發(fā)者使用,本篇推文主要是描述MARK_DEBUG屬性約束的使用和注意事項(xiàng)。詳細(xì)可參考UG912文檔的內(nèi)容。使用MARK_DEBUG的條件如下:
約束對(duì)象必須是Nets類(lèi)型
在Nets信號(hào)的頂端聲明處進(jìn)行約束
vivado提供了包括Verilog、VHDL、XDC三種語(yǔ)法。三種語(yǔ)法如下所示:
//Verilog語(yǔ)法
約束語(yǔ)法:
(* MARK_DEBUG="value" *)
#value = true/flase
使用示例:
(* MARK_DEBUG="true" *) output wire led;
(* MARK_DEBUG="true" *) reg [24:0] led_cnt;
//VHDL語(yǔ)法
約束語(yǔ)法:
聲明: attribute MARK_DEBUG : string;
語(yǔ)法: attribute MARK_DEBUG of signal_name : signal is "value";
//signal_name-內(nèi)部信號(hào), value = TRUE/FALSE
使用示例:
signal led : std_logic;
attribute MARK_DEBUG : string;
attribute MARK_DEBUG of led : signal is "TRUE";
//XDC語(yǔ)法
約束語(yǔ)法:
set_property MARK_DEBUG value [get_nets < net_name >]
#value = TRUE/FLASE
#net_name-是信號(hào)名
使用示例:
set_property MARK_DEBUG TURE [get_nets led];
使用MARK_DEBUG標(biāo)記生成ILA觀測(cè)信號(hào)步驟
在led[0]、led_cnt[24:0]信號(hào)的頂端聲明處進(jìn)行約束,省略代碼如下:
module led_top(
input wire clk_i,
input wire rst_n,
(* MARK_DEBUG="true" *) output wire led_o
)
;
...
(* MARK_DEBUG="true" *) reg [24:0] led_cnt;
...
endmodule
執(zhí)行綜合操作,綜合完成后,打開(kāi)綜合設(shè)計(jì),然后點(diǎn)擊“Set Up Debug”;
按照下面步驟配置Debug ILA參數(shù);
* Debug ILA配置完成后,保存SYNTHESIZED DESIGN后會(huì)在約束文件(.xdc)中生成ILA的配置約束,如下圖所示:
綜合、實(shí)現(xiàn)、生成bit后寫(xiě)到FPGA芯片便可觀測(cè)到信號(hào)(此處不做演示)。
特別說(shuō)明:
MARK_DEBUG約束標(biāo)記會(huì)阻止Vivado對(duì)該信號(hào)以及下級(jí)信號(hào)的優(yōu)化。因此,在邏輯驗(yàn)證完成后,要?jiǎng)h除Mark_DEBUG約束標(biāo)記或者將其失能。
05 文章總結(jié)
上面總結(jié)和分享了4種Vivado下使用ILA的方法。杰克更推薦使用前面兩種實(shí)例化的方法去使用ILA IP核。對(duì)于 純FPGA HDL開(kāi)發(fā) ,配置生成ILA核并在HDL代碼中實(shí)例化使用便可;對(duì)于帶軟核/硬核的FPGA開(kāi)發(fā) ,在Block模塊外部接口信號(hào)通過(guò)添加ILA核,Block模塊內(nèi)部信號(hào)則在HDL代碼中實(shí)例化ILA核,兩者結(jié)合使用。
-
FPGA
+關(guān)注
關(guān)注
1650文章
22207瀏覽量
626868 -
Xilinx
+關(guān)注
關(guān)注
73文章
2190瀏覽量
128784 -
邏輯分析儀
+關(guān)注
關(guān)注
3文章
216瀏覽量
24094 -
Vivado
+關(guān)注
關(guān)注
19文章
844瀏覽量
70071 -
ILA
+關(guān)注
關(guān)注
0文章
6瀏覽量
3827
發(fā)布評(píng)論請(qǐng)先 登錄
邏輯分析儀是什么
Vivado邏輯分析儀使用教程
邏輯分析儀的應(yīng)用分析
邏輯分析儀的使用
什么是邏輯分析儀?邏輯分析儀的使用方法是什么?邏輯分析儀和示波器有什么區(qū)別
邏輯分析儀的作用_邏輯分析儀怎么用_邏輯分析儀的使用方法(教程)
邏輯分析儀選型參數(shù)有哪些_邏輯分析儀有哪些技術(shù)指標(biāo)_邏輯分析儀有什么推薦的?
邏輯分析儀的計(jì)量說(shuō)明
Based邏輯分析儀的應(yīng)用特點(diǎn)、優(yōu)勢(shì)及使用方法
在Vivado中使用邏輯分析儀ILA的過(guò)程

評(píng)論