时钟通信时,接口部分能读取到数据,但偶尔出现判定不了上升沿!
时间:10-02
整理:3721RD
点击:
我用DE2-115开发板对一块芯片的输出信号进行采集。当我要采集判断上升沿时,我使用的时如下的代码:
input signal;
reg signal_f;
always@(posedge clk)signal_f <= signal;
assign signal_up = signal & signal_f;
然后用signal_up去做相应判断。
signal为相应的输入口,由DE2-115的GPIO口引入,设置为3.3V coms。
出现的问题是:有时signal_up没能判断出来,但是通过SignalTap II Logic Analyzer 能看到signal确实是进来了,而且也signal_f也跟随signal变化,但是就是没有看到signal_up信号,我的采集时钟设置的时系统时钟clk。再快timing就不过了。
为什么有时signal_up信号会判定不出来!?
input signal;
reg signal_f;
always@(posedge clk)signal_f <= signal;
assign signal_up = signal & signal_f;
然后用signal_up去做相应判断。
signal为相应的输入口,由DE2-115的GPIO口引入,设置为3.3V coms。
出现的问题是:有时signal_up没能判断出来,但是通过SignalTap II Logic Analyzer 能看到signal确实是进来了,而且也signal_f也跟随signal变化,但是就是没有看到signal_up信号,我的采集时钟设置的时系统时钟clk。再快timing就不过了。
为什么有时signal_up信号会判定不出来!?
异步的要打两拍
这是什么意思?
跨时钟域的信号需要打两拍,来消除时钟转换带来的亚稳态
1:如果signal不是clk域的信号,需要打两拍。
2: 小编的设计没有检查上升沿啊,assign signal_up = signal & signal_f; =》assign signal_up = signal & ~signal_f;
系统时钟出clk是多少?芯片输出的数据率为多少?
这怎么可能啊?
