第三章 跨时钟域最常用的方法同步法(更新)
按照惯例,先上图,再解说,如下图所示:正如特权同学所说,异步时钟域所涉及的两个时钟之间可能存在相位差,也可能没有任何频率关系,即不同频不同相。
由图可知,VGA模块我是用50MHZ来驱动的液晶屏,而SDRAM控制模块是用100MHZ的,这样就产生特权同学所说的不同频,甚至不同相。这样就会存在诸多亚稳态危害爆发的可能。关于亚稳态的解析就不再多说了,网上,教科书很多都提及到了,这个要自己回去参透参透。
说到异步时钟域的信号如何处理的问题,才是这章书的重点,常用的方法就是同步设计。我记得还有一个握手通信也是解决异步时钟域的方法之一的,这个我还没有遇到和使用过。
其实同步设计很简单,如果有看过上一章的脉冲边沿检测法就可以轻松的理解这个同步设计,只是打慢一拍,同步信号而已,就这么简单。
更新点:
无意中读到这样的一段话,发现我上面的说法不够完美。看图:
转:http://blog.sina.com.cn/s/blog_4e00cfd30100a1wk.html
这段话给了我一个启发,我一直以为vga_valid是一个标志信号,其实它真正的身份是门控时钟,先看看下面的两幅图的对比:(一幅是分频时钟,一幅是vga_valid信号)
不对比不知道,一对比吓一跳。原理都是一样,只是名字不同而已,都属于门控时钟的一类,顿时觉得自己对基本知识的理解真TM的烂。
接下来项目里跨时钟域的同步化,其实本质就是同步这异步过来的门控时钟信号vga_valid 好好学习一下 拜读了~~{:handshake:} zcy0517 发表于 2014-3-25 12:02
拜读了~~
相互学习 {:handshake:} 摄像头采集进来之后常常用FIFO来跨时钟域连接sdram,我是想通过flag标志位(当读到数据的时候输出为1),然后给sdram,sdram用中断的方法读取数据,这样可行么(我采集来的数据输出大概12.5Mhz,sdram controller用的是nios的,s_clk大约50Mhz) zcy0517 发表于 2014-3-26 08:58
摄像头采集进来之后常常用FIFO来跨时钟域连接sdram,我是想通过flag标志位(当读到数据的时候输出为1),然 ...
你跨时钟域的时候用同步法同步一下就可以了
页:
[1]