新手遇到FPGA跨时钟域信号处理的问题

2020-02-17 19:58发布

最近再老师安排一个任务:
(1)FPGA采集6路数字摄像头发出的异步时钟下不同速率的数据,数据速率为27MHz、74.5MHz,并且每个摄像头的时钟不同步,时钟和数据都输入到FPGA。
(2)对采集到的信号通过DDR2内存进行缓存后,按照一定地址映射读出

由于以前从未做过FPGA的开发,现在手上使用一块Xilinx XC6SLX16-2CSG,开发板,上面有两个50MHz的有源晶振,分别连接到了开发板的IO_L30N_GCLK0_USERCCLK_2和IO_L36N_GCLK14_0上
我现在的主要问题是:
(1)我应该使用哪个时钟作为系统的时钟,余下一个时钟有什么作用
(2)由于输入数据是27MHz数据和74.5MHz数据及其各自的时钟,我应该如何将这些异步数据转换成同步数据
我有几个想法,但是不知道实不实际:
(1)将50MHz的时钟倍频到200MHz,对输入信号进行锁存,不去处理这个50MHz数据对应的时钟输入,感觉这样就没有用到27MHz的时钟,觉得不大对的样子
(2)对于每个数据,使用其对应的时钟将其输入到fifo进行缓存,然后使用统一的时钟从fifo中读取出来,再进行后续处理
希望各位高手指点一下我,或者给出我一些其他的输入处理方法,小弟感激不尽。

此外,还有一些从Xilinx手册上时钟资源部分 看到的东西不大理解
Global clock是指系统时钟吗?整个FPGA程序中共用的那个clk?整个程序共用的clk能从非GCLK引脚输入吗?

BUFGMUX到底是干什么的,BUFPLL和BUFIO2,BUFH这些看了半天也不明白

ESERDES和OSERDES根本不明白,我这个任务是不是需要用到这些

谢谢各位了,非常希望得到大家的帮助
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。