除了採用.cdc文件抓取信號以外,還有一種方式是採用例化ILA核的方式抓信號的時序。這種方式的詳細操作流程如下:
1、添加一個新的ICON IP核。
2、一般情況下保持所有的參數默認就可以了。
3、再添加一個ILA 的IP核。
4、在第一頁設置好相關的參數,這些參數的含義核.cdc文件中參數的含義一模一樣,這裏不再過多解釋。
5、第二頁主要是設置要抓取的信號寬度,值得注意的是這裏可以設置大一點沒關係,因爲這種方法不要求信號寬度和要抓的信號數目完全相同。
6、生成這個兩個IP核以後,把這兩個IP核例化到代碼中。
module led_top
(
input I_clk ,
input I_rst_n ,
output reg [3:0] O_led_out
);
always @(posedge I_clk or negedge I_rst_n)
begin
if(!I_rst_n)
O_led_out <= 4'd0 ;
else
O_led_out <= O_led_out + 1'b1 ;
end
wire [35:0] CONTROL0;
wire [7:0] TRIG;
icon icon_debug (
.CONTROL0(CONTROL0) // INOUT BUS [35:0]
);
ila ila_debug (
.CONTROL(CONTROL0), // INOUT BUS [35:0]
.CLK(I_clk), // IN
.TRIG0(TRIG) // IN BUS [7:0]
);
assign TRIG[0]=I_rst_n;
assign TRIG[4:1]=O_led_out;
endmodule
接下來就是生成bit文件並用ChipScope抓取信號了,和前一種方法一樣。
這種方法和前一種方法的區別在於這種方法只能抓取一個.v文件中的信號,而且速度生成IP核的比較慢,進入ChipScope中以後還需要自己修改端口的名字,比較浪費時間;好處就是可以100%保證抓到想抓的信號,所以對於邏輯不太複雜的單文件代碼可以採用這種方式。