目录
2.1 新建Signal Tap Ⅱ logic analyzer,并保存
2.2 Signal Tap Ⅱ logic analyzer软件界面介绍
Signal Tap Ⅱ全称Signal Tap Ⅱ logic analyzer,是第二代系统级调试工具,可以捕获和显示实时信号,是一款FPGA片上调试工具软件。Signal Tap Ⅱ可以选择要捕获的信号、捕获的触发方式及捕获数据样本深度,实时数据提供给工程师帮助debug。
下面以4个流水灯程序介绍Signal Tap Ⅱ的使用。
1 、程序源码
/*
程序功能:led流水灯。
state:success!!
*/
module lianxi_004(
input sys_clk ,//50MHz
input sys_rst_n ,//低电平有效
output [3:0] led /*synthesis keep*/ //高电平灯亮
);
reg [3:0] led_temp = 4'b0000;
reg [31:0] counter_01 = 32'd0 ;//(*preserve*) /*synthesis noprune*/
/*synthesis preserve*/reg [3:0] state = 4'd0 ;///*synthesis noprune*/
//
always @(posedge sys_clk)
begin
if(~sys_rst_n)
begin
led_temp <= 4'b0000;
state <= 4'd0 ;
end
else
case(state)
4'd0 : begin
if(counter_01 == 32'd49_999_999)//1秒
begin
state <= 4'd1;
end
else
begin
state <= 4'd0;
led_temp <= 4'b0001;
end
end
4'd1 : begin
if(counter_01 == 32'd99_999_999)//2秒
begin
state <= 4'd2;
end
else
begin
state <= 4'd1;
led_temp <= 4'b0010;
end
end
4'd2 : begin
if(counter_01 == 32'd149_999_999)//3秒
begin
state <= 4'd3;
end
else
begin
state <= 4'd2;
led_temp <= 4'b0100;
end
end
4'd3 : begin
if(counter_01 == 32'd199_999_999)
begin
state <= 4'd0;
end
else
begin
state <= 4'd3;
led_temp <= 4'b1000;
end
end
default: begin state <= 4'd0; end
endcase
end
//
always @(posedge sys_clk)
begin
if(~sys_rst_n)
begin
counter_01 <= 32'd0;
end
else if(counter_01 == 32'd199_999_999)
begin
counter_01 <= 32'd0;
end
else
begin
counter_01 <= (counter_01 + 1'b1);
end
end
//
assign led = led_temp;
endmodule
2、Signal TapⅡ调试工具的使用流程
2.1 新建Signal Tap Ⅱ logic analyzer,并保存
操作:操作:tools →Signal Tap Ⅱ logic analyzer。
新建并保存后的结果:
2.2 Signal Tap Ⅱ logic analyzer软件界面介绍
Signal Tap Ⅱ logic analyzer软件界面主要关注信号选择区、信号设置区。其中信号选择区可以选择需要debug的信号及信号的触发方式。信号设置区对选择debug的数据进行设置,这里主要是系统时钟及采样深度设置。
2.3 下载区
hardware:建立FPGA芯片和电脑之间的硬件连接。这里是:USB-Blaster[USB-0]。
device:选择板子上的FPGA芯片型号。这里是EP4CE10F17C8。
sof manager:选择sof文件(编译后会自动生成)。
2.4 选择需要debug的信号
操作:双击“信号选择区”→在弹出的对话框中“Filter”下拉菜单中选择“Design Entry(all names)”→点击“List”→选择需要debug的信号到“selected Nodes”中。
说明:Filter中为了能选择所有定义的信号,选择“Design Entry(all names)”。
当选择的内部信号变为红色时,表示这个信号往往被优化掉了,观察不到。
此时如果需要观察该信号需要进行以下处理:
(1)对于reg型信号,在信号定义前加/*synthesis preserve*/
(2)对于wire型信号,在信号定义前加/*synthesis keep*/
这里以state信号为例:
/*synthesis preserve*/ reg [3:0] state = 4'd0 ;
重新编译后,内部信号红色消失:
2.5 debug信号设置区
主要设置时钟信号和采样深度(类似于示波器的采样深度)。
时钟信号一般选择系统时钟;采样深度取决于FPGA芯片的片上RAM资源,对于EP4CE10F17C8片上RAM414Kbits而言,经尝试后最大sample depth为8K。
2.6 点击下载并允许debug
点击下载后,将包含debug实时测试信息的.sof文件下载到fpga板子里面→
点击运行,即可看到下载到板子里面的实时信号。
可与设计想法相对照进行debug。
另外,也可设置信号的触发类型,比如将“sys_rst_n”设置成下降沿触发,在运行中选择连续运行,就可以在sys_rst_n按键按下的瞬间捕获该时刻的信号。