fpga串口调试应该怎么设置触发条件

fpga串口调试应该怎么设置触发条件,第1张

设置信号触发条件
在setup界面进行触发条件的配置,其中右上角的触发条件可以选择各个数据的条件是与还是或,或是其他自定义的情况,本文选用常见的与条件,只有每个数据都满足触发条件才开始数据的采集。
其中每一个数据,右击选择触发的条件,其中:
Don’t Care:不关心
Low:低电平触发
Falling Edge:下降沿触发
Rising Edge:上升沿触发
High:高电平触发
Either Edge:上升沿或下降沿触发
我们这里将输入数据的接收模块中的start_flag设置为高电平触发,其他均设置为不关心;start_flag是检测rs232协议中开始位的低电平的标志位,当其拉高一个时钟周期后,开始进行串行数据到并行数据的转换。这样的话,只有当串口发送给下位机时,才会引起start_flag拉高,进而满足触发条件。
此外,因为现在的情况下,波形数据的抓取是在上电一段时间后才开始执行,有的信号仅在上电开始的较短时间内存在,可能会遗漏数据。因此,需要设置为上电后就使得触发器在准备触发状态,右击下图中Instance中的 auto_signaltap_0 右击选择Enable Power-Up Trigger,注意此时上述信号的触发条件需要重新进行设置,设置完成后回到工程文件界面对文件重新进行全编译。至此,触发条件基本配置完成。

我觉得你一直在用按键的状态监测,没有使用上升或者下降沿监测。松手监测应该是先监测按键状态,然后再监测松手时的上升沿或者下降沿。
即有如下状态机“等待按键状态”==(确定按下的哪个键)==》“监测上升或下降沿”==(监测到沿)==》“等待按键状态”

消抖分为硬件消抖和软件消抖:硬件消抖是使用积分器或是低通滤波器等手段滤除按键抖动,而软件消抖是通过编程来解决。以下是按键输出电平示意图:

可以看出,消抖是为了避免在按键按下或是抬起时电平剧烈抖动带来的影响。一般来说,软件消抖的方法是不断检测按键值,直到按键值稳定。实现方法:假设未按键时输入1,按键后输入为0,抖动时不定。可以做以下检测:检测到按键输入为0之后,延时20ms,再次检测,如果按键还为0,那么就认为有按键输入。延时的20ms恰好避开了抖动期。

程序中所用的方法是不断检测按键值。每当Count[17]上升沿到来,就进行检测输入信号。其中dout1,dout2,dout3分别为当前、上个Count[17]上升沿、上上个Count[17]上升沿输入数值。正常情况下为1,假如连续三次为0,三个信号相与,使得key_done信号为0,出现下降沿,这样就认为是有按键。

另外,你问为什么是count[17],由于你本身没写清楚count[17]的定义,所以没有确定答案。不过据猜测,count[17]只是一个延时信号而已。很有可能count是一个18位的计数器,每一个时钟周期计数一次,那么他计数262143次为一个周期,出现一次上升沿。如果按照26M时钟计算的话,count[17]出现两个上升沿之间间隔约为10ms,连续检测3次就是在0ms,10ms,20ms处都检测到0,才算是有按键输入。

如果不明白可继续追问。

主要看你的驱动电流有多大和信号频率是多少?既然你的沿小于5us应该是很慢的信号。所以对于FPGA来讲没有问题。剩下的就是看信号标准和驱动电流了。因为FPGA支持的点评种类很多,不知道你需要什么样的电平?我猜你可能需要信号远传(4m电缆),我觉得用LVDS比较好一些。当然你的速度很慢用LVCMOS或者LVTTL也一样。
接口电路主要考虑电平种类,驱动大小,输出信号对于下游器件的建立、保持时间等。说白了就是看与之接口的芯片的电平与时序要求


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13410003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存