发布网友 发布时间:2022-04-21 13:43
共2个回答
热心网友 时间:2022-07-12 02:56
你这个问题牵涉到信号跨时钟域的问题,不同时钟域的信号要正确采样,都需要同步处理后再采样。
输入din信号和FPGA的25M时钟不是同一个时钟域,那你就要对输入信号进行同步处理。
首先先明确din信号是单bit还是总线信号,如果是一个多位的总线信号,那同步就复杂些,需要用异步FIFO来同步;看你上面描述是一个单bit信号,只需要把din信号用25M打2拍,即经过2级寄存器,这时就能保证din信号已经同步到25M的时钟域,每一个周期能稳定持续5拍,然后用你的第二种方法,连续采样5次作为判断就可以了。
PS:
上面说的把输入信号打2拍其实就是一个全同步器的基本实现方法,建议你百度搜索看下《跨越鸿沟:同步世界中的异步信号》,这里面第一部分就讲了这个同步器。
热心网友 时间:2022-07-12 02:57
楼上还涉及到一个处理的问题。当经过多个时钟采样到的数据,你认为在以后的状态控制时不好控制,其实此时你可以同时产生一个状态标志,当5个时钟采样到高电平或低电平时,相应的产生一翻转标志,并同时锁存你的信号电平。然后通过检测这个标志的沿(上、下升沿)来作为后面状态转移的触发信号(或者说使能)