赛灵思
直播中

陈茗卓

7年用户 153经验值
私信 关注
[问答]

为什么使用并发赋值语句而不是BUFGMUX原语?

我需要在Spartan6器件中实现一些从1到256的可编程时钟分频器。我的第一个想法是通过一个简单的过程(基本上是一个二进制计数器)实现一个从2到256的分频器,然后使用aBUFGMUX来选择
输入时钟clk_in(对于div = 1)和分频时钟clk_div(对于div = 2 ... 256)。
遗憾的是,这会在本文的底部产生错误。
因此,在开始阅读UG382(Spartan6时钟资源)以便完全理解BUFGMUX限制之前,我已经做了一个快速实验,用这个并发的分配替换了BUFGMUX:
CLK_OUT
因此,我的问题非常愚蠢(原谅我,我对此很陌生):发生了什么事?
使用并发赋值语句而不是BUFGMUX原语是否有任何缺点,为什么语句有效,而BUFGMUX没有?
谢谢!
地点:1108 - 已发现时钟IOB / BUFGMUX时钟组件对未放置在最佳时钟IOB / BUFGMUX站点对。
clockIOB组件放置在站点上。
相应的BUFG组件放置在站点上。
只有一组IOB可以使用到Clocker缓冲区的快速路径,并且它们没有被使用。
您可能想要分析这个问题存在的原因并纠正它。
如果此次优化条件对于此设计是可接受的,则可以使用.ucf文件中的CLOCK_DEDICATED_ROUTE约束将此消息降级为警告并允许您的设计继续。
但是,非常不鼓励使用这种覆盖,因为它可能导致非常差的定时结果。
建议在设计中纠正此错误情况。
下面列出了此时钟放置规则中使用的所有COMP.PIN的列表。
这些示例可以直接在.ucf文件中使用,以覆盖此时钟规则。

回帖(2)

王慕涛

2019-7-31 10:28:22
嗨,
ADC_CLKOUTP位于AA12引脚,它是GCLK1引脚,位于下半部分。
并且相应的BUFGMUX被放置在位于上半部分的BUFGMUX_X2Y2处。
GCLK1无法驱动位于上半部分的BUFGMUX。
这就是这个问题的原因。
请更改LOC约束,以便时钟引脚和BUFGMUX都在同一半。
当您使用推理时,该工具可能会自动将它们定位到同一半。
请查看以下用户指南pageno:26
http://www.xilinx.com/support/documentation/user_guides/ug382.pdf
举报

张杰

2019-7-31 10:50:52
看起来您对技术实施是正确的:
对我来说,没有“无故障”的减刑并不是问题。
在初始设置阶段对分频器进行编程。
谢谢你们俩!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分