情景描述:

芯片:zynq7020

问题:

设计从FPGA的U19引脚上的开发板板接收时钟输入125M,并将其送到两个MMCM。
使用软件:vivado2015.4
在Vivado中打开合成设计后,我得到以下Crticial警告:

Failed to create I/OLOGIC Route Through shape for instance MMCM_2/inst/clkin1_ibufg. Found overlapping instances within the shape: MMCM_1/inst/clkin1_ibufg and MMCM_MAC_1/inst/clkin1_ibufg.

Cannot set LOC property of ports, Instance MMCM_2/inst/clkin1_ibufg can not be placed in INBUF_DCIEN of site IOB_X1Y424 because the bel is occupied by MMCM_1/inst/clkin1_ibufg. This could be caused by bel constraint conflict

MMCM没有手工实例化,而是使用时钟向导创建的,通常,当使用MMCM IP核,它包括所有缓冲区:

输出时钟上BUFG

时钟反馈的ebufg

驱动输入时钟的IBUFG

当只有一个时钟向导核心由输入时钟驱动时,这很好,但是当你尝试使用两个时,你最终会实例化两个IBUFG(或IBUF)单元。
这是非法的。

FPGA的每个引脚都有一个且只有一个输入缓冲区(IBUF) - 你不能将两个并行放置

必须修改MMCM的输入。
如果您正在使用时钟向导,则必须从两个时钟核心的输入中移除IBUF,然后在设计的顶层手动实例化IBUF(并将输出馈送到两个时钟核心)。
但是,解决这个问题会产生另一个问题。
用于MMCM的“最佳”输入是与MMCM在同一时钟区域中的四个时钟引脚之一。
但是,在7系列中,每个时钟区域只有一个MMCM。
因此,您无法通过“最佳”输入机制从同一时钟源驱动多个MMCM。
试图这样做会产生另一个严重警告。
这可以通过将另一个MMCM(在不同的时钟区域中)的CLOCK_DEDICATED_ROUTE属性设置为“BACKBONE”来解决,假设它在时钟能力引脚的相邻时钟区域内(即时钟区域上方或下方的时钟区域)
功能引脚和其他MMCM驻留)。
这样做(使用BACKBONE)会增加一些额外的时钟延迟,而这些延迟不会被MMCM补偿 - 这会对使用MMCM在“其他”时钟区域生成的时钟的任何接口的时序产生负面影响(可能
或者对你的设计无关紧要)。
那么,下一个问题是“为什么你需要两个MMCM”? 
MMCM可以使用相同的VCO(因此相同的MMCM)生成不同的时钟输出频率和相位。
虽然有些情况下您绝对必须使用两种不同的MMCM,但如果可以的话,通常最好避免这种情况,并将两者结合起来。
那么告诉我们你在做什么需要不同的MMCM,我们可以看看它们是否可能/更好地结合起来。

何检查哪个MMCM放置在时钟引脚的时钟区域中,哪个放置在时钟区域上方/下方?
最简单的方法是在Vivado IDE(GUI)中打开设计,并在设备查看器中找到MMCM和时钟引脚。
在器件查看器中,时钟区域(和I / O bank)可清晰识别。
要查找对象,可能最容易从设计的示意图开始,并选择要查找的对象。
在原理图视图中选择对象时,它也会在设备视图中被选中并高亮显示。
有没有办法可以让工具将特定的MMCM放在时钟引脚的时钟区域,而另一个MMCM放在上/下的时钟区域?
引脚的时钟区域只有一个MMCM。
像所有资源一样,FPGA中的站点被命名 -  MMCM位置看起来像MMCME2_ADV_X0Y0
您可以通过设置单元格的LOC属性将单元格放置在站点上。
在您的XDC中,您可以做到
set_property LOC MMCME2_ADV_X0Y0 [get_cells]
我需要两个MMCM,因为我需要9个异步时钟
首先,这是很多时钟......其次,根据定义,来自MMCM的时钟都是彼此同步的。
它们之间的时序关系可能很复杂,但它们是同步的......
我可以通过使用divide_by_2逻辑生成一些时钟来最小化这个数字(9)。
我可以通过放置BUFG并使用create_clock(不是create_generated_clock)约束来在divide_by_2逻辑的输出上定义新时钟吗?
通常不建议使用结构时钟 - 这会在生成的时钟和源时钟之间引入大量偏差。
但是,你说你的时钟是异步的 - 如果你真的不关心时钟之间的关系那么你就可以做到这一点。
生成时钟作为触发器的输出并通过BUFG运行。
生成分频时钟的更好方法是使用BUFGCE或BUFHCE,每隔一个时钟启用“CE”。
这会产生频率为1/2的时钟,输出时钟与输入时钟保持同相。
但是,如果你真的希望时钟是异步的,这并不重要。
当使用BUFGCE / BUFHCE生成时钟时,您需要知道结果时钟的占空比不是50/50  - 除以2,它将是25/75。
最后,无论你做什么(结构分割器或BUFGCE / BUFHCE),我通常会用create_generated_clock限制它 - 这是一个生成的时钟,而不是主时钟。
但是 - 再次 - 如果这些时钟真正异步,这也无所谓......

两个MMCM共享时钟输入时的严重警告和错误的更多相关文章

  1. 有关 GCC 及 JNA 涉及动态库/共享库时处理库文件名的问题

    动态库尤其是共享库在 Linux 环境下普遍存在库文件名包含版本号的情况,比如 Linux 环境下经常会发现一个共享库的真实文件名是 libfoo.so.1.1.0,而同时会有多个指向该真实库文件的软 ...

  2. CreateFileMapping共享内存时添加Global的作用

    来源:http://www.cnblogs.com/elvislogs/articles/ShareMemory.html 通常使用CreateFileMapping建立共享内存时名称中没有加入&qu ...

  3. 同一个tomcat多个项目共享session,一个tomcat两个项目共享sessionId

    同一个tomcat多个项目共享session,一个tomcat两个项目共享sessionId >>>>>>>>>>>>>& ...

  4. Oracle RAC:使用 NFS 共享存储时的 mount 选项 总结

    oracle rac 使用nfs作为共享存储时,mount的选项有 要求,不能随便设置 grid的要求:      rw,bg,hard,nointr,rsize=32768,wsize=32768, ...

  5. Mac、Linux下两个Emacs共享一个配置文件

    Mac.Linux下两个Emacs共享一个配置文件 有些嵌入式的实验需要在Linux进行,就安装了RHEL6.4的虚拟机,下载并编译了Emacs. 在Linux的.emacs文件中加入以下语句,即可引 ...

  6. react中IOS手机里面两个input同时存在时,聚焦focus失效解决办法

    最近在做webapp搜索功能时,用到两个input同时存在时,轻点input聚焦时,ios手机软键盘弹起又失效,一直在寻找合理的解决办法,现在最简单的总结回顾: <一>bug显示 < ...

  7. L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误(转)

    L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误   错误描述:“ L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误” 只有这个没有错误码. ...

  8. 删除表空间时,遇到了ORA-14404错误

      Oracle中删除表空间时,遇到了ORA-14404错误.   错误信息如下: SQL> DROP TABLESPACE PART1 INCLUDING CONTENTS AND DATAF ...

  9. SQL2008、SQL2013 执行Transact-SQL 语句或者批处理时发生了异常。错误5120

    附加数据库的时候遇到问题,问题描述如下: 附加数据库 对于 服务器"服务器名"失败.(Microsoft.SqlServer.Smo) 执行Transact-SQL 语句或者批处理 ...

随机推荐

  1. java基础-04泛型

    介绍 泛型就是数据类型的参数化表示,泛型的本质是参数化类型,常用E代表任何数据类型,在实际使用的时候把实际的数据类型传递给E. 泛型的好处是设计通用的功能,多个数据类型可以共用. 泛型类型E只能代表O ...

  2. Vue 环境搭建(win10)

    1.安装node node官网安装地址 推荐安装稳定版本(LTS)以及安装路径为系统盘(C) 查看node安装成功否 注释:以下命令使用 命令提示符(管理员)权限,win10 对user权限的限制了访 ...

  3. 解决IOS微信浏览器底部会出现向前向后返回按钮,返回不刷新的问题

    <script type="text/javascript"> //解决IOS返回页面不刷新的问题 var isPageHide = false; window.add ...

  4. Laravel数据库迁移

    Laravel的数据迁移功能很好用,并且可以带来一系列好处.通过几条简单的 artisan 命令,就可以顺利上手,没有复杂的地方 注意:该系列命令对数据库非常危险,请准备一个单独的数据库作为配套练习, ...

  5. hdu-1054(二分图最大匹配)

    题意:给你一个图,图里有墙壁和空地,空地可以放置一台机关枪,机关枪可以朝着四个方向发射,子弹不能穿透墙壁,但是射程无限,机关枪会被损坏如果被另一台机关枪的子弹打到,问你最多能放置多少台机关枪: 解题思 ...

  6. 高斯消元与行列式求值 part1

    两道模板题,思路与算法却是相当经典. 先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值 具体思路(一开始看到题我的思路): 1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算 ...

  7. odoo10 addon开发流程

    odoo addon开发流程 创建一个addon(插件) 命令如下 python odoo-bin scaffold 插件名 路径 # 例如 python odoo-bin scaffold hh_t ...

  8. P4137 Rmq Problem / mex (莫队)

    题目 P4137 Rmq Problem / mex 解析 莫队算法维护mex, 往里添加数的时候,若添加的数等于\(mex\),\(mex\)就不能等于这个值了,就从这个数开始枚举找\(mex\): ...

  9. TJOI2018Party

    题目描述 小豆参加了\(NOI\)的游园会,会场上每完成一个项目就会获得一个奖章,奖章 只会是\(N\), \(O\), \(I\)的字样.在会场上他收集到了\(K\)个奖章组成的串. 兑奖规则是奖章 ...

  10. 你需要Mobx还是Redux?

    在过去一年,越来越多的项目继续或者开始使用React和Redux开发,这是目前前端业内很普遍的一种前端项目解决方案,但是随着开发项目越来越多,越来越多样化时,个人又有了不同的感受和想法.是不是因为已经 ...