verilog 基础篇 signal_tap 的使用

实验工具:锆石A4开发板
软件:quartus 13.1

Signal Tap 就相当于逻辑分析仪,signal Tap是利用FPGA的内部逻辑资源形成一个内部的逻辑分析仪
在这里插入图片描述
在这里插入图片描述
有时候内部管脚还多于外部管脚,这个时候更没法测试
在这里插入图片描述
使用流程

//---------------------------------------------------------------------------
//--	文件名		:	A4_Ked2.v
//--	作者		:	ciscomonkey,代码搬移的锆石科技的
//--	描述		:	按键消抖
//--	修订历史	:	
//---------------------------------------------------------------------------
module A4_Key2
(
	//输入端口
	CLK_50M,RST_N,KEY,
	//输出端口
	LED
);  
 
//---------------------------------------------------------------------------
//--	外部端口声明
//---------------------------------------------------------------------------
input					CLK_50M;				//时钟的端口,开发板用的50MHz晶振
input					RST_N;				//复位的端口,低电平复位
input		[ 7:0]	KEY;					//对应开发板上的KEY
output	[ 7:0]	LED;					//对应开发板上的LED

//---------------------------------------------------------------------------
//--	内部端口声明
//---------------------------------------------------------------------------
reg		[20:0]	time_cnt;			//用来计数按键延迟的定时计数器
reg		[20:0]	time_cnt_n;			//time_cnt的下一个状态
reg		[ 7:0]	key_in_r;			//用来接收按键信号的寄存器
reg		[ 7:0]	key_out;				//消抖完成输出按键
reg		[ 7:0] 	key_out_n;			//key_out的下一个状态
wire					key_press;			//检测按键有没有变化

//设置定时器的时间为20ms,计算方法为  (20*10^3)us / (1/50)us  50MHz为开发板晶振
parameter SET_TIME_20MS = 21'd1_000_000;	

//---------------------------------------------------------------------------
//--	逻辑功能实现	,按一下,灯变化一次
//---------------------------------------------------------------------------
//时序电路,用来key_in_r寄存器赋值

    always @ (posedge CLK_50M, negedge RST_N)
    begin
    	if(!RST_N)								//判断复位
    		key_in_r <= 8'h00;				//初始化key_in_r值
    	else
    		key_in_r <= KEY;					//将按键的值赋值给key_in_r
    end
    
    assign key_press = key_in_r ^ KEY;	//检测按键有没有变化
    
    //时序电路,用来给time_cnt寄存器赋值
    always @ (posedge CLK_50M, negedge RST_N)
    begin
    	if(!RST_N)								//判断复位
    		time_cnt <= 21'h0;				//初始化time_cnt值
    	else
    		time_cnt <= time_cnt_n;			//用来给time_cnt赋值
    end
    
    //组合电路,实现20ms的定时计数器
    always @ (*)
    begin
    	if(time_cnt == SET_TIME_20MS || key_press) //判断按键有没有变化、时间有没有到
    		time_cnt_n = 21'h0;				//如果到达20ms或者按键有了变化,那么定时计数器将会被清零
    	else
    		time_cnt_n = time_cnt + 1'b1; //如果未到20ms或者按键没有变化,那么定时计数器将会继续累加
    end
    
    //时序电路,用来key_out寄存器赋值
    always @ (posedge CLK_50M, negedge RST_N)
    begin
    	if(!RST_N)								//判断复位
    		key_out <= 8'h00;					//初始化key_out值
    	else
    		key_out <= key_out_n;			//用来给key_out赋值
    end
    
    //组合电路,每20ms接收一次按键的值
    always @ (*)
    begin
    	if(time_cnt == SET_TIME_20MS)		//判断20ms时间
    		key_out_n = key_in_r;			//如果到达20ms,接收一次按键的值
    	else
    		key_out_n = key_out;				//如果未到20ms,保持原状态不变
    end
    
    assign LED = key_out;					//将消抖的按键值赋值给LED
    
    endmodule

选择New----》signal tap II
在这里插入图片描述
或者在tool下面选择signal tap II
在这里插入图片描述
在这里插入图片描述
在这里可以保存signal Tap II
在这里插入图片描述

signal Tap II界面的选项介绍

在这里插入图片描述
在信号的观察界面,右键点击Add Nodes
在这里插入图片描述
选中Design Entry(设计条目)
然后点击list
选择要观察的信号
在这里插入图片描述
观察信号界面弹出我们选中的信号。
在这里插入图片描述
有的时候,可能我们要观察内部的信号时红色的,这个时候往往是被优化掉了,导致我们没法观察到想要观察的信号。
这个时候有两种办法:
1,将我们要观察的信号拉到顶层接口
2. 在观察的wire信号旁边加上/synthesis keep/
对于reg信号则加 /synthesis noprune/ 或者 /synthesis preserve/
在这里插入图片描述
在这里插入图片描述
配置采样属性
在这里插入图片描述

对signal tap II的时钟进行配置
在这里插入图片描述
如上图所示,如果我们选择输入时钟,会弹出以上对话框,也就是说我们的输入时钟不能够又作为signal tap II 的采样时钟,又作为我们的系统时钟。这个时候,可以用PLL生成一个更高倍的时钟作为采样时钟。

这里我们把观察信号里面的输入时钟移去。
右下角的触发条件我们可以不用管,在观察信号里的圆圈里对每一个信号设置出发条件,就是说在观察信号的下降沿采样,还是说在信号的上升沿进行采样,还是说dont care
在这里插入图片描述
在这里插入图片描述
对采样的深度进行设置
在这里插入图片描述
连接好我们的板子。进行重新编译,然后选好SOF

在这里插入图片描述
然后下载我们的SOF文件
在这里插入图片描述
我们发现signal tap II 已经变成了 ready to acquire
在这里插入图片描述
在这里插入图片描述点击run analysis,或者auto run analysis
在这里插入图片描述
当我按下复位键的时候,变为低电平,然后进行采样。
如果我设置为要么在按下Key键,要么在RST键采样,设置为OR即可
在这里插入图片描述
工程:
https://download.csdn.net/download/ciscomonkey/10801959

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值