关于跨时钟域信号的处理过程,有关脉冲信号的检测刚好用在我的毕业设计当中。
由于我毕设中关于雷达信号处理过程中,从AD采集的信号时钟频率低,信号处理的频率高。一般处理这种情况使用的是异步FIFO,但我为了方便计算帧数用的双端的BRAM储存数据,当采集满了发送脉冲跳转状态开始信号处理。
快时钟采集满时钟很好处理,但是当信号处理完成后需要跳转状态机到初始态,状态机是慢时钟跳转状态,而DSP_OVER信号是满时钟,而且频率相差时间较长,因此需要对他进行慢时钟同步。
解决方案如下:
clka是快时钟,clkb是慢时钟。
主要思路如下:
当快时钟采集到pulse_a_in脉冲时候signal_a 信号拉高。
我们需要signal_a 信号一直拉高,直到clkb时钟采集到高电平后再拉低。
然后用clkb时钟一直采集signal_a ,用signal_b来记录。
然后为了消除亚稳态我们需要用D触发器打两拍进行消除亚稳态。
代码还是比较好懂的,这个经过实际上板子测试确认跳转状态正常。
module F2S_Sync_Pulse(
input clk_a,//fast clock
input clk_b,//slow clock
input rst_n,
input pulse_a_in,
output pulse_b_out,