Vivado Logic Analyzer的使用
0赞
chipscope中,通常有两种方法设置需要捕获的信号。
1.添加cdc文件,然后在网表中寻找并添加信号
2.添加ICON、ILA和VIO的IP Core
第一种方法,代码的修改量小,适当的保留设计的层级和网线名,图形化界面便于找到
需要捕获的信号。
第二种方法,对代码的改动量大一些,同时需要熟悉相关IP的设置,优点是,可以控制
ICON,并调用VIO。
与之类似,Vivado也有着两种方法进行设置。
1.在综合后的网表中寻找相关信号,右键点开菜单,然后设置mark debug
2.添加ILA,VIO的IP Core
第一种方法与chipscope的第一种方法极为类似:
1.都需要综合后才能设置;
2.都需要保留一定的设计层级或者网线名来便于寻找信号;
3.并非所有信号都可以被捕获,不能捕获的信号,chipscope中是显示为灰色,vivado
中是没有mark debug的选项在右键菜单中;
第二种方法就更为类似了,vivado可以兼容ISE的IP,所以可以直接调用chipscope的相
关IP,调试时也只是用Chipscope,另外可以使用Vivado自己的ILA IP,来进行设计,
但最大的问题是Vivado不提供ICON的IP以供选择,进一步埋没了ICON的地位。
另外,早起的Vivado IP Catalog提供Chipscope的ICON、ILA和VIO IP Core可以选择,目前已经取消了这些IP,只支持Vivado自己的ILA/VIO IP Core。
这里提供一个非常简单的设计代码,用于Vivado Logic Analyzer的研究。
`timescale 1ns / 1ps module Nexy_4 ( input I_CLK, output [3:0] O_ST_COUNTER, output O_TIMECOUNTER_OUTPUT ); wire CLK_100; clk_wiz_0 CLK_UNIT ( .clk_in1 (I_CLK), .clk_out1 (CLK_100), .locked () ); reg [7:0] startup_counter = 'b0; always @ (posedge CLK_100)begin if(startup_counter == 8'b11111111)begin startup_counter <= 8'b00000011; end else begin startup_counter <= startup_counter + 8'b1; end end assign O_ST_COUNTER = startup_counter[7:4]; wire [47:0] TimeCounter_Result_wire ; reg [47:0] TimeCounter_Result_reg = 'b0 ; reg TimeCounter_Output ; always @ (posedge CLK_100)begin TimeCounter_Result_reg <= TimeCounter_Result_wire; end TimeCounter TimeCounter_Unit ( .CLK ( CLK_100 ), // input wire CLK .A ( 2'b01 ), // input wire [1 : 0] A .C ( TimeCounter_Result_reg ), // input wire [47 : 0] C .P ( TimeCounter_Result_wire ) // output wire [47 : 0] P ); always @ ( posedge CLK_100 )begin TimeCounter_Output <= TimeCounter_Result_reg[47]; end assign O_TIMECOUNTER_OUTPUT = TimeCounter_Output ; endmodule