微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 分频时钟的是非

分频时钟的是非

时间:10-02 整理:3721RD 点击:
分频时钟后面跟一个mux是再常见不过的设计,但如果处理不当,会产生毛刺,特别是有一分频的时钟,这个出来是纯组合逻辑,是个相当不好的潜在危险。
因此,最好是在时钟的无效期间进行切换,换句话说,应该先关闭时钟-产生选择信号-打开时钟,确保选择信号改变的时候,时钟不变,最好是没有选中的时钟无效



这个做法只是方便现有STA约束而已,因为有现成的Gating约束命令。其实并不需要这么麻烦。只需要控制原时钟在Mux处Skew大于分频时钟,就很容易实现无毛刺无延时的Mux;
实现如下图:时序约束控制Mux Cell Pin上最先到达的是分频后时钟,随后是源时钟,最后是选择信号(由分频后时钟寄存输出)。如此则不减小最小脉宽(无毛刺)。
(此方法已在Altera FPGA上验证通过,600MHz与100Hz时钟通过拨码开关动态切换无毛刺)

  1.                  ____      ____      ____      ____
  2. clk_source   ___|    |____|    |____|    |____|    |____
  3.                 ________            _________           
  4. clk_divided  __|        |__________|         |_________|
  5.                    ____________________
  6. mux_sel      _____|                    |________________
  7.                 _____      ____      ________
  8. clk_muxed    __|     |____|    |____|        |_________|

复制代码

没看懂啊


我也遇到这个问题了,可以详细解说一下如何处理吗,谢谢

http://bbs.eetop.cn/viewthread.php?tid=334782&highlight=clock%2Binfer


TimeQuest中有什么办法能约束几个信号到达的先后顺序吗?

set_net_delay -min/max -from [get_pins ...] -to [get_pins ...]
不用get_pins后果自负...



    谢谢!记得你以前的帖子中讲过这个set_net_delay。我将去试一试。



   话说这个mux是指FPGA 里的专用的clock mux 么
   俺在ASIC里都用那种glitch free clock mux 结构,不管是不是同源分频时钟

普通LUT就可以, 当然有需要的话你要用CLKENA也行...
你的Glitch Free Clock Mux是用4个寄存器+3个NAND那种?这种会造成时钟停顿,一般是两个异步时钟切换才需要用这个。
ASIC里分频时钟直接用普通Clock Mux切换就可以了(即,用AO22+INV什么的就不太好了...)



   恩。多谢~

学习学习了

MUX的控制信号使用寄存输出是不是就可以了

學習了, 謝謝!

学习了

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

网站地图

Top