【Vivado——FPGA硬件調試(二)】 例化ILA核

Vivado環境下,FPGA硬件調試方法很多,但常用方法主要圍繞 ILA核展開。

ILA核簡介

ILA是Vivado下的一個Debug IP核,類似於片上邏輯分析儀。在上一篇文章中,我們介紹了mark debug + set up debug,抓取信號的實時波形,調試工程;其中set up debug步驟,就是通過圖形界面自動添加ILA核。

本文將介紹另一種方法:通過在RTL代碼中直接例化ILA核,抓取想要觀察的信號。下面以一個簡單的counter模塊爲例,對Vivado(2014.1)下ILA核的使用進行說明。

1.   RTL代碼

    module counter

    (

    input            clk,

    output   [3:0]  q

    );

 

    wire       clk;

     

    //想抓取cnt信號進行觀察

    (* keep ="TRUE" *)reg [3:0]  cnt = 4'd0;

 

    assign   q = cnt;

 

 

    always@(posedge clk)

    begin

       cnt <= cnt +4'd1;

    end

 

    endmodule

 

2.  加入ILA核

在vivado工程中,打開IP Catalog選項,找到ILA核

然後,雙擊進入ILA核的配置界面

step1.

“component Name”:修改例化名,

“Number of Prober”:修改想抓取信號的分組個數,在本例中僅觀察1組信號cnt,

“sample Data Depth”:可以修改抓取信號的深度,本例選擇默認值1024。

其他選項保持默認值。

step2.

“Probe Width”:選擇各分組信號的位寬,我們需要觀察的cnt信號爲4bit,這裏選擇4。

點擊OK,到此爲止,ILA的配置完成

 

 

3.   在RTL中例化ILA核

在Vivado工程的sources窗口找到剛生成的ILA核的例化代碼

將其複製到RTL設計中,並連接好信號

    module counter

    (

    input            clk,

    output   [3:0]  q

    );

 

    wire       clk;

     

    //想抓取cnt信號進行觀察

    (* keep ="TRUE" *)reg [3:0]  cnt = 4'd0;

 

    assign   q = cnt;

 

 

    always@(posedge clk)

    begin

       cnt <= cnt +4'd1;

    end

 

    ila_0  u_ila

    (

    .clk     (clk),

    .probe0  (cnt)

    );

 

    endmodule

 

ps:ILA的clk需要連接到需要觀察信號的相應時鐘域,在一個RTL中可以嵌入多個ILA,方便觀察不同時鐘域 的信號

 

 

4. 使用Vivado在線抓取信號波形

1)修改完RTL後,點擊Generate Bitstream生成bit文件

2)開發板上電,接上JTAG下載器,然後打開open Target

打開Open New Target..

點擊Next

點擊Next

點擊Next

 

 

點擊Finish

 

 

發現vivado界面的左下角的Program Device選項變亮,點擊該選項,下載bit文件

 

點擊Pro...

開始下載

 

 

 

 

 

 

下載完成,vivado界面發生變化

 

打開window菜單欄,選擇Debug Probes選項,界面會多出一個Debug Probes窗口

 

 

將需要觀察的信號cnt 信號“拖入”右側的Basic Trigger Setup窗口

 

在這個界面中可以修改觸發條件(cnt=2),觸發深度(1024),觸發位置(500)等參數(類似於chipscope)

 

點擊左側的觸發開關,vivado會自動打開一個wave窗口

 

 

 

通過放大波形,可以觀察波形細節

 

參考:https://blog.csdn.net/wordwarwordwar/article/details/71250427

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章