1
\ \ begingroup \美元

在FPGA上完全实现倍频器一般是可能的吗?我看到谷歌上的一些实现通过延迟输入和XORing它与原始的。但他们也说这种方法不可靠,我们可能无法实现50%占空比的输出。我不想在占空比上妥协,因为我可能需要使用倍频器3次来达到x8的频率

输入时钟每30 us经历一次+/- 5%的频率跳变(从13.56 Mhz)。

我尝试使用DCM -当DCM的输入瞬间跳跃时,DCM的输出逐渐漂移到所需的频率,跨越20 us。这个时间是不可接受的,因为我们每30个us就会跳频,我们不可能有20个us的漂移时钟。

输入时钟来自外部DSP处理器,使用两个DDS(直接数字合成)块在两个端口上生成13.56 Mhz信号。DDS的频率每30 us跳变13.56Mhz,相位从-45°到+45°变化,而另一个相位在相反方向变化。这两个13.56 Mhz信号进入FPGA域。

FPGA从这两个输入端产生8倍信号,总共16个,相互之间以45度的步长变化。目前FPGA使用DCM和触发器来实现这一点。13.56 Mhz被馈送到DCM, 8x时钟从它出来。DCM的输入和DCM的输出都被馈送到移相器模块,移相器模块将输入时钟按8 ×时钟的周期(45度)移动。在没有频率跳跃的情况下,所有这些都可以正常工作,但由于频率跳跃而失败。

\ \ endgroup \美元
9
  • 3.
    \ \ begingroup \美元 您可能需要使用FPGA中的PLL块来实现这一点。 \ \ endgroup \美元
    - - - - - -罗杰·C。
    二月二日14:35
  • \ \ begingroup \美元 你要跟踪的输入信号的变化是什么?+ / - 10% ?在您的过程变得不稳定之前,您能容忍输出的噪声有多大? \ \ endgroup \美元
    - - - - - -shuckc
    2月2日14:38
  • 1
    \ \ begingroup \美元 我以为我们讨论的时候这个问题已经解决了对你第一个问题的评论)让DDS直接生成8x时钟。这个解决方案是否因为某些原因而不奏效?如果您将所有与您的问题相关的信息保存在一个地方,而不是将相关问题分散在整个网站上,这将真正帮助我们帮助您。 \ \ endgroup \美元
    - - - - - -戴夫花呢
    2月2日15点11分
  • \ \ begingroup \美元 顺便说一下,还有许多其他方法可以使用DSP技术来生成相移或延时版本的信号,这些方法完全不涉及摆弄时钟。但您需要向我们提供更多有关您的应用程序的细节,以及您需要满足的性能规格,然后我们才能给您建议。 \ \ endgroup \美元
    - - - - - -戴夫花呢
    2月2日15:15
  • \ \ begingroup \美元 @DaveTweed对此表示抱歉。由于设计限制,DDS无法提供8倍时钟。DDS已输入多个信道,无法输出8x时钟。正如我们之前讨论的,DCM不是一个选项。因此,我尝试了问题中描述的组合选项。 \ \ endgroup \美元
    - - - - - -赛Gautam
    2月2日15:16
1
\ \ begingroup \美元

我使用过的fpga中的所有DCM块(数字时钟管理器)都可以很清晰地放大和转换时钟频率。如果可以,请确保您的输入基准时钟到达特定的时钟引脚,因为这将引入最小的偏置路由到dcm。

如果你想要更具体的指导,你的目标是哪一部分,什么频率?如果你的目标是Ghz,例如一个便宜的部分,它可能不会发生。

DCM块通常有多个输出,可以从相同的基时钟驱动到不同的频率,所以所有生成的时钟可以有一个共同的职责和相位。

编辑我看到了你之前的问题spartan6 fpga上的时钟斯巴达6 DCM不稳定时钟输出-请在以后链接这些问题。

正如其他评论者所指出的,你问的是一般情况下是不可能的.时钟管理单元不能既稳定(拒绝基时钟上的噪声)又快速响应输入中的线性/阶跃变化。这些是相互矛盾的设计目标。

如果我是你,我会满足于在FPGA中输入一个稳定的、固定的时钟,然后在设计中使用逻辑重新编程DCM模块的输出时钟比率。我马上知道,StratixV部件有一个进入dcm的总线,在操作时允许比率和相位变化。这应该避免每次都需要固定和锁定输入时钟。

无论您使用何种反馈或用户界面来进行这些调整,都将由FPGA完成,例如从PC解码UART指令或扫描键盘/开关。

看看这个Xilinx App Note,它建议Spartan 6 pll确实有一个动态的重新配置端口来做这类事情:http://www.xilinx.com/support/documentation/application_notes/xapp879.pdf

更新:如果出于某种原因真正需要的为了让输入来自一个变化的时钟,你可以选择设计一个输入级,测量输入时钟的频率与一些稳定的基时钟,测量频移(以赫兹为单位),并使用这个来动态地重新编程DCM。这是先进的东西,世界上可能只有几十个工程师使用fpga上的动态端口。它可能需要一些模拟设计,例如。首先是外接beat-mixer/Heterodyne以获得足够的分辨率。预计必须使用Xilinx提出一些查询才能使其全部工作。

\ \ endgroup \美元
6
  • \ \ begingroup \美元 好吧……以后我会把我的问题联系起来。但这样就没有组合数字逻辑来乘时钟信号? \ \ endgroup \美元
    - - - - - -赛Gautam
    2月2日14:50
  • \ \ begingroup \美元 没有同步将时钟信号相乘的数字逻辑。你在问题中提到了一些异步技巧,但我并不推荐它们。 \ \ endgroup \美元
    - - - - - -shuckc
    2月2日16:13
  • \ \ begingroup \美元 看起来在这个“控制等离子室点火和稳定的大项目”中的子系统部门是不知情的(充其量),让你寻找一个过于复杂的设计部分。好运! \ \ endgroup \美元
    - - - - - -shuckc
    2月2日16:17
  • 1
    \ \ begingroup \美元 用组合逻辑倍频是不可能的,因为输出只依赖于输入。因此,输出不会比输入变化得更快。 \ \ endgroup \美元
    - - - - - -罗兰Mieslinger
    2月2日16:18
  • \ \ begingroup \美元 @RolandMieslinger绝对是可能的-所有的门都有一个传播延迟,如果你运行足够多的非门,你可以产生所需的相位变化,并与基础时钟异或。这将被认为是一个非常糟糕的设计,尽管考虑到更可取的内置块。看到阿尔特拉食谱14以下是有意违反良好同步设计实践的更多例子。 \ \ endgroup \美元
    - - - - - -shuckc
    2月4日15日11点58分

你的答案

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

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