关于分频时钟做时钟
通过时钟使能实现
分频时钟做使能?
我觉得可能是你代码风格吧,只要你描述的够好,应该会自动综合成比较好的时钟
看你design的需要,分频的clock可以当时钟,也可以当clk enable.当时钟使能的时候,是为了在后端balance clock tree的时候比较容易。
分频时钟是个难点
FPGA中,时钟要走既有的专用时钟线,才能实现较好的时序性能,但时钟线资源有限,如果使用分频时钟比较难走时钟线,而且时钟树很难调整,因此不要使用分频信号、门控做时钟。
ASIC中,是ok的,但不同时钟穿越时也还是要人工注意。
关于时钟分频有两种办法:第一种是产生数据的enable信号,这样所有动作都是同步的,缺点是后端clock tree会长很大,当系统的时钟很快的时候就要考虑tree的delay了 第二种方法是真的拿来当时钟用,这样两个clock没有相对应的关系,正常情况下按异步的界面来设计,这样你没有长tree的限制。但为了FPGA的验证方便,系统较小的话第一种就ok了
还是看用途,不过一般来讲分频时钟作为使能信号,然后仍然采用高速时钟来做系统时钟。大的设计中很重视同步设计,最好一个设计中不要有太多时钟。
ASIC可以搞,FPGA不能这么搞,一是因为这个完全可以用单时钟加使能来完美解决,二是因为分频时钟和原时钟在FPGA内部的相位关系随着每次布局布线后的结果而变,这样肯定不能接受,而且时序分析麻烦。
就看你分频以后的时钟要不要和分频前的同步,如果不用,很简单,就把除频器当一个macro就可以了,ASIC clock root下到除频器以后,FPGA 除频器后加一个BUFG,一切搞定。
如果要同步就比较麻烦。一种做法是换到data enable,一种是用特殊的除频器。前者后端简单,后者后端有点麻烦。
