崩溃了!求教高手!急!
一共三路信号,1路时钟C,80M;一路启动信号,为一个时钟周期的高脉冲;一路数据,串行速率80Mbit/s。协议如下:
1、串行数据以数据块的形式传输,每个数据块有共同的起始标志字,数据块之间有间隔;2、每个启动信号标志一个数据字的开始,即启动信号的高脉冲的同时要接收数据字的第一个位;3、每个数据字连续传输两次,一个数据块中的字与字之间无间隔,即启动信号之间的间隔为16个时钟周期。
原本不是什么大的问题,但是现在出现这样一种情况,就是启动信号的高脉冲时间只有5个纳秒,在一个时钟周期内不能有效检测到。如果倍频到160M,这时的时钟周期为6.25纳秒,也不能保证每个启动信号都检测到,如果再往上倍频,又担心高频不稳定。
请问各位大侠有没有什么好的解决办法?这个问题已经困扰小弟一周了,如果解决不了五一都不能休息了,小弟在此先谢过了,在线急等。
自己先顶起!
只能将输入脉冲想办法拓展到大于 80M clock, 然后当异步信号同步来检测
你是不可能检测到比自己CLOCK PULSE还短的信号的
高脉冲时间只有5个纳秒
这个信号那里来的?
雖然只有5ns,你可以先用非同步設計去鎖一層
然後進到內部後再用80mb的clock的flip-flop再鎖一次
應該就沒問題了吧
不過5ns的啟動信號你確定不是glitch嗎?!
如果用上面我所說的方法去做,恐怕一點小小的glitch都會被當成啟動信號
這是你要注意的地方
“一路启动信号,为一个时钟周期的高脉冲”
“就是启动信号的高脉冲时间只有5个纳秒”这是什么意思啊,启动信号到底是持续多长时间的高脉冲?
谢谢richardhoo。我也想过将脉冲强行拉长到一个时钟周期。但是这么做的方法我也只能是想到用高频时钟检测高电平再附加延时,理论上这样确实可以把启动信号的高脉冲拉长。“不可能检测到比自己CLOCK PULSE还短的信号的”按照大侠的这种说法,似乎是没有别的办法了。恳请大侠指点。
谢谢MOSFET。这个信号是产品过来的,我们不可控。
谢谢broodchris。这个5ns的启动信号确实不是glitch,在示波器上能看到很好的波形,而且间隔很均匀,恰好就是16个时钟周期。你说的是采用边沿检测方式吗?相当于是把启动信号看成是一个特殊的时钟。我这样试过,即使不存在glitch,这种方法在实际应用时也不行,因为如果对启动信号锁两次,那么我的数据也要作相应的延时,而且还关系到用时钟的哪个边沿,也就是说还用考虑时钟和启动信号的相对相位关系,不知道我的这种说法大侠是否能理解?还望大侠指教。
谢谢guot。是这样的,本来应该是一个时钟周期,但是这次只有5ns,而且有的设备可以正常接收。所以我就比较奇怪。
你应该先弄清楚5NS怎么来的,他的处理时钟是多少,你才能谈接收,一般编解码的时钟应该同频率的
其实是这样的,本来过来的是LVDS信号,但是这次产品的启动信号LVDS负端没有,为直流电平,由于缺少了负端信号对接收器的贡献,导致正端和负端之差大于零的时间很短,只有5ns左右,这就是5ns的来源。客观一点讲,产品有点问题,但是他们的另外一套类似的设备可以接收到,所以我想在5ns启动信号的条件下也实现一下。
re
lvds是可以单端接的,端接的正确是可以解出正确信号的,我怀疑由于LVDS端接不正确,导致5NS的信号是不真实的,因为解串完后的信号至少为一个时钟宽度(相对于恢复时钟),如果能确定5NS是不真实的,则应该解决传输问题
同步设计的原理是,你无法准确检测到比自己CLOCK PULSE 短,频率快的信号。 其实你可以认为是用80MCLOCK 去SAMPLE, sample freq 不能比信号 freq低
谢谢broodchris。这个5ns的启动信号确实不是glitch,在示波器上能看到很好的波形,而且间隔很均匀,恰好就是16个时钟周期。你说的是采用边沿检测方式吗?相当于是把启动信号看成是一个特殊的时钟。我这样试过,即使不存在glitch,这种方法在实际应用时也不行,因为如果对启动信号锁两次,那么我的数据也要作相应的延时,而且还关系到用时钟的哪个边沿,也就是说还用考虑时钟和启动信号的相对相位关系,不知道我的这种说法大侠是否能理解?还望大侠指教。
你說的沒錯,是將啟動信號看成一個特殊的clock,如成說啟動信號是以高電位當成啟動的話,那就以clock的正邊緣,你可以考慮用one-hot電路去實現
第二個你說的沒錯,如果啟動信號做成非同步鎖2次,那啟動信號就被delay了1T,那當然data勢必也要delay 1T,那就要看你的應用上,這個delay 1T對你的
應用有沒有影響,如果沒有影響的話,這方式是可以準確抓到你要的data的,不過我這種設計麻煩的很,還必須考慮啟動信號進來的那條線是在ic內部,還
是在外面,如果在ic內部當然沒啥大問題,不大會有glitch,如果是在ic外部,pcb上or 一般的線,基本上,是非常不可行的,只要旁邊有線跑過,我想glitch應該
會很嚴重
设计一个单次脉冲发生器,脉宽可以按实际需要自行决定(至少宽于1个时钟周期)。用5ns的启动脉冲做触发信号,去产生这一个单脉冲。
如果你的start信号和时钟信号有固定的相位的关系,你可以试着将时钟向后延时一段时间在采start信号。延时可以用fpga中的延时器件
先用这个5ns的信号异步置位,然后同步检测这个位,检测到就清零,不知可否
这个问题其实也蛮简单的。如果是没有毛刺的信号。
你可以用它来做时钟,做二分频。
然后再采二分频以后的结果异或即可。
看看是否能用
RS 触发器 产生启动标志
