微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 咨询一个关于多个时钟的问题

咨询一个关于多个时钟的问题

时间:10-02 整理:3721RD 点击:
最近在写一个FPGA程序,这个工程中用到2个时钟,一个是64m一个是16m,64M用于spi和mcu通讯,16m用于其他功能,外部晶振是16m的。
现在有两个问题:
1.这2个时钟用哪种比较好?一种是16m直接用外部晶振的,64m通过PLL倍频,另一种是PLL产生两个输出,一个是64m,一个是16m。个人觉得还是用PLL产生的2个输出比较好,这样这2个时钟是不是同步性比较好,这只是个人感觉,如果你有什么观点希望提出。
2.工作在64m下的spi模块接收到数据后给16m的模块使用,这里会有一个同步问题吧,因为不是同一个时钟源,在处理中容易出错。好比spi正在给寄存器写数据,而此时其他模块正在读,是不是会出错。所以在处理上是不是要将他们之间数据交互时同步一下,比如打2拍啥的或者有其他的办法?
以上是我的2个问题,希望有高人可以解答一下,不胜感激!

问题1:用PLL产生的2个输出比较好,时钟是同步的,因为这两个时钟是系统的主时钟,要走全局时钟线。
问题2:64M时钟的数据,若数据在每个clk都会变化,需存入DCfifo,再用16M时钟读出;若数据不是在每个clk64M都变化,且远小于16M,直接使用16M时钟打两拍使用,也没有问题

建议用异步fifo,可以解决这个问题。

谢谢你的回答,这两个问题我都已经明白了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top