0
\ \ begingroup \美元

我需要帮助,如果我的SDC约束是正确的数字噪声过滤时钟和数据输入。我不确定CLK3分组和create_clk CLK2是否正确。我想知道如何对以下内容进行约束。

  1. CLK3的约束(创建/生成时钟)。
  2. DATAIN的输入延迟约束。
  3. DATAOUT关于CLK2的输出延迟约束,以保证提供给主设备的最小输入延迟,该设备将被CLK2上升沿捕获,以确保足够的保持时间。

在这里输入图像描述

注:使用CLK3作为FF10的时钟输入是为了减少功耗,因为除了FF10,滤波电路后还有上百甚至上千个FF。CLK2或CLK3不是连续的,它只会在需要时运行,而且它的频率比来自外部振荡器的连续CLK1要慢得多。

create_clock -period 20-name clk1 -waveform {0 10} [get_ports clk1] create_clock -period 1000-name clk2 -waveform {0 500} [get_ports clk2] create_generated_clock -name clk3 -combination -source [get_pins ff4 / q] set_clock_groups  -异步-Group [get_clocks {clk1}] -group [get_clocks {clk2 clk3}]#-min 80由于clk2 filtering set_output_delay -clock [get_clocks clk2] -min 80 [get_ports dataout] set_output_delay -clock [get_clocks clk2] -max 90[get_ports dataout]

预期的时机应该如下所示。在这里输入图像描述

任何帮助都将不胜感激。谢谢你!

\ $ \ endgroup \ $
    0
    \ \ begingroup \美元

    您有一个50 MHz的逻辑时钟和一个1 MHz的同步串行输入,由CLK2和DATAIN组成。

    串行时钟CLK2的功能是指示DATAIN通过串行总线时的时间。它不是连接逻辑电路中触发器的时钟输入。

    你的电路应该看到串行CLK2作为一个逻辑信号,就像DATAIN一样。串行CLK2恰好是方波控制信号。在每个串行CLK2周期内的商定点,DATAIN将是稳定的,其上的数据位可以被采样。它通常被移位到移位寄存器中但是你没有描述你的应用程序,所以我不能说。

    同步串行协议将其串行数据稳定时段和更改周期更改为其串行时钟的边缘。在这里,与逻辑时钟CLK1相比,串行CLK2很好,速度慢,其具有50:1时钟速度优势。您的接收器需要在串行CLK2上检测升级或下降沿以找到参考点。这一切都发生在输入滤波器电路之后。上升沿是来自您的CLK2过滤器的1,其前面是0,而相对的是下降沿。

    只要完成图片,如果电路必须在串行时钟周期的后阶段采样同步串行数据,则它可以检测到边缘,然后通过多个逻辑时钟延迟,以便之前达到串行时钟周期阶段的特定点采用串行数据位。但这里你不太可能。

    您的输入滤波器电路很好,但部分需要重新设计以满足这些变化。请记住,在整个同步逻辑电路中,唯一的时钟触发器或寄存器是逻辑时钟CLK1。不要从CLK2时钟。

    您的SDC文件现在不需要对CLK2的时钟约束,因为它不是一个电路时钟。它将需要从输入引脚到第一个寄存器路径延迟的每个CLK2和DATAIN的约束,这是你可以找到的。

    \ $ \ endgroup \ $
    7
    • \ \ begingroup \美元 在DATAIN上不使用通常的移位寄存器的目的是假设它会有一个噪声尖峰,这就是为什么使用过滤器的原因。我已经在我的问题中添加了一个时序图,我需要帮助如何创建关于CLK2的DATAOUT输出延迟的约束,因为CLK3是一个过滤(延迟)的CLK2,它在FF10的Q输出驱动DATAOUT。此外,我还需要帮助来约束输入延迟。 \ $ \ endgroup \ $- - - - - -zeahr 6月13日8点20分
    • \ \ begingroup \美元 @zeahr,请重新阅读我的回答,你的评论读起来好像你没有理解很多。特别是部分说:只有逻辑时钟CLK1去时钟输入的触发器。CLK2不是一个逻辑时钟,没有时钟约束。所有这些都是同步逻辑设计的基本原理,使电路简单可靠。 \ $ \ endgroup \ $- - - - - -Tonym. 6月13日20日8点55分
    • \ \ begingroup \美元 我理解CLK2不是逻辑时钟,并且没有获得时钟约束,但在FF10(粉红色FF)中,时钟输入是CLK3,其是由CLK1驱动的延迟CLK2(作为数据)。我想知道如何约束CLK3?CLK3在FF10中使用的原因而不是使用CLK1检测CLK2的上升沿,是因为我需要尽可能低的功耗。在实际电路中,滤波器电路之后有很多FF,如果我将使用CLK3,切换将更少,因为CLK2并不总是在CLK1来自振荡器并始终运行时运行。 \ $ \ endgroup \ $- - - - - -zeahr 6月13日20分9点26分
    • \ \ begingroup \美元 此外,我想创建一个约束,这将保证关于CLK2的最小输出延迟,因为这将是接收产生CLK2的数据耦的设备的最小输入延迟。 \ $ \ endgroup \ $- - - - - -zeahr 6月13日20日,9点29分
    • \ \ begingroup \美元 @zeahr,如果你在CLK3上添加边缘检测,你可以使用它作为FF10的启用,然后是CLK1同步像其他一切。否则,FF10输出到CLK1的关系就没有很好地定义。 \ $ \ endgroup \ $- - - - - -西蒙里希特 6月13日20日10点07分

    你的答案

    点击“发布你的答案”,即表示你同意我们的服务条款隐私政策饼干的政策

    不是你想要的答案?浏览其他带标签的问题或者问你自己的问题