AD与FPGA级联相关时序处理问题
AD输出数据频率 ≈ FPGA工作时钟频率/N (例如AD输出 = 2.05KHZ,FPGA_FREQ = 32.00KHZ);通常处理残差有些什么方式,可以使FPGA用(4 or 8 or 16 or 32)KHZ的频率连续无误地采2.05K的AD信号?
自己的一些思考:1.使用FIFO? 不过连续工作,即使微小频差累积,也会导致FIFO堆满 或者FIFO取空
2.双端口RAM,应该效果和FIFO一样,会超出RAM设定大小范围,或者RAM被取空
3.用高倍的时钟打两拍采2.05K的AD数据(防止亚稳态,打两拍),前后两次采样数据不等,则把新数据缓存,这样应该能把2.05K的AD数据无误采样。 缺点:采样数据相同时,可能漏掉一次数据。
希望版上热心人提点下
帮小编顶一个
AD时钟同样输入FPGA中,用该时钟的倍频时钟来做主时钟处理,是不是就可以了呢?个人看法,不对之处请指正!
刚才看了下之前的帖子,也有讨论到同步的问题,一位金领ID提到源同步,把数据和时钟都送过去直接处理。同时提到该方法适合50M一下的工作时钟。 高速时使用差分信号,不是很清楚这种方法的原理。 如果使用系统同步的工作方式,对AD和FPGA使用同源CLK,是不是还需要AD和FPGA之间数据采样同步处理?
如果需要同步,应该使用什么策略
个人建议如下2种方式:
1) 可考虑通过FPGA的高速时钟去采集判断ADC的时钟沿,这样可以把数据同步到高速时钟域;
2) 通过FIFO方式,慢速写,快速读。通过Empty标志来实现速度匹配。FIFO是可以直接调用IP的,支持异步时钟(Xilinx)
速度慢,你采用的高频时钟FPGA的PLL就能实现,你就把数据时钟都同步过去,至于用AD时钟的上沿还是下沿看AD的输出,最好在数据稳定的地方。
很多设计都是使用源同步的方法来实现的,PCB硬件设计时就推荐使用这种方法,FPGA中涉及到高速AD时,需要在FPGA中对数据和时钟使用IODELAY进行同步
应该是正解;
昨天看到一个老帖里提到,晶振送入带DCM处理的FPGA后,一路锁相时钟信号由FPGA送AD。你提到的IODELAY,是否指同源后,FPGA还需要DCM锁相一次?
我刚刚完成AD-FPGA-DA的采集过程,我的经验就是:7个时钟后FPGA捕获到AD数据,其中AD采样时钟须与FPGA主时钟与DA时钟同步,不然数据对不齐就可能采集错。
小编的问题好像是要AD在一个时钟域连续送数,而FPGA在另一时钟域连续取数,而FIFO不能出现空或者满的情况,在此我只能说这样的逻辑规划不是好的方案。
