打印

Spartan-3 DCM使用求助

[复制链接]
4109|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aceice|  楼主 | 2013-6-21 10:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 aceice 于 2013-6-21 10:59 编辑

clk信号输入到FPGA,一路提供给DCM的clkin,一路提供给另外一部分逻辑。
直接综合的话,会提示:
ERROR:Xst:2035 - Port <clk_50MHz> has illegal connections. This port is connected to an input buffer and other components.

在综合选项里将Add I/O Buffers取消,可以综合过去,但是Translate又会提示错误:
ERROR:NgdBuild:924 - input pad net 'clk_50MHz' is driving non-buffer primitives:

按照网上一份资料,说的是生成的DCM,包含一个IBUFG,遂手工将DCM源码里的IBUFG去掉。
再次Translate,提示一个警告
WARNING:ConstraintSystem:119 - Constraint <NET "clk_50MHz" LOC = A8;>
   [TestIBUFG.ucf(3)]: This constraint cannot be distributed from the design
   objects matching 'NET "clk_50MHz"' because those design objects do not
   contain or drive any instances of the correct type.

并且Map出错,提示
ERROR:Pack:198 - NCD was not produced.  All logic was removed from the design.
   This is usually due to having no input or output PAD connections in the
   design and no nets or symbols marked as 'SAVE'.  You can either add PADs or
   'SAVE' attributes to the design, or run 'map -u' to disable logic trimming in
   the mapper.  For more information on trimming issues search the Xilinx


再次将Add I/O Buffers勾选上,Translate,Map都没问题,但是Place & Route会有个警告:
WARNING:Route:455 - CLK Net:clk_50MHz_IBUFG may have excessive skew because
-------------------------------------------------------------------------------------------------------------------------------------
怎么解决这个问题?

相关帖子

沙发
Backkom80| | 2013-6-21 11:05 | 只看该作者
建意逻辑部分也放在dcm的后面。

使用特权

评论回复
板凳
aceice|  楼主 | 2013-6-21 11:31 | 只看该作者
Backkom80 发表于 2013-6-21 11:05
建意逻辑部分也放在dcm的后面。

我是参照特权的异步复位,同步释放电路做的。
他先是用低频时钟将复位打了一拍给PLL复位(ALTERA)
然后又用PLL产生的高速时钟将PLL的LOCK和输入复位生成的复位信号又打了一拍做为整个系统的复位信号。
在Quartus下这样做过是没问题的。:'(

使用特权

评论回复
地板
Backkom80| | 2013-6-21 11:57 | 只看该作者
然后又用PLL产生的高速时钟将PLL的LOCK和输入复位生成的复位信号又打了一拍做为整个系统的复位信号
打这一拍是用的什么时钟输入的原时钟,还是pll输出的时钟?

使用特权

评论回复
5
aceice|  楼主 | 2013-6-21 11:59 | 只看该作者
Backkom80 发表于 2013-6-21 11:57
然后又用PLL产生的高速时钟将PLL的LOCK和输入复位生成的复位信号又打了一拍做为整个系统的复位信号
打这一 ...

PLL的时钟。
输入到PLL的复位是用50MHz输入时钟打一拍
系统复位是用PLL生产的200MHz再打一拍

使用特权

评论回复
6
Backkom80| | 2013-6-21 22:35 | 只看该作者
aceice 发表于 2013-6-21 11:59
PLL的时钟。
输入到PLL的复位是用50MHz输入时钟打一拍
系统复位是用PLL生产的200MHz再打一拍 ...

个人觉得,输入到 PLL复位无需50M时钟打这一拍。这估计也就你所说的另外一部分逻辑。

使用特权

评论回复
7
GoldSunMonkey| | 2013-6-22 20:43 | 只看该作者
贝壳帮你的已经可以了吧?

使用特权

评论回复
8
GoldSunMonkey| | 2013-6-22 20:44 | 只看该作者
:lol

使用特权

评论回复
9
ococ| | 2013-6-22 21:43 | 只看该作者
同意贝壳。
DCM的复位完全没有必要用时钟来打,可以接受异步复位。另外如果你想使用不经过DCM处理的时钟完全的话其他DCM模块有一个时钟输出就是外部时钟仅仅经过了一个IBUG后出来的时钟,可以用这个。

使用特权

评论回复
10
wqt128| | 2013-6-22 21:54 | 只看该作者
GoldSunMonkey 发表于 2013-6-22 20:44

哈哈,个人理解啊,不知道对不对,欢迎来指正,貌似是你这样用会把DCM给直接短接掉了,所以会报错,因为你的时钟输入走了BUFG,经过DCM后出来的也走BUFG,哈哈,不知道我理解的是否正确啊,欢迎猴哥指正,呵呵

使用特权

评论回复
11
aceice|  楼主 | 2013-6-22 22:07 | 只看该作者
Backkom80 发表于 2013-6-21 22:35
个人觉得,输入到 PLL复位无需50M时钟打这一拍。这估计也就你所说的另外一部分逻辑。 ...

嗯,这部分就是额外的逻辑。
昨天分析了下,个人也认为是不需要的。

使用特权

评论回复
12
Backkom80| | 2013-6-22 23:41 | 只看该作者
aceice 发表于 2013-6-22 22:07
嗯,这部分就是额外的逻辑。
昨天分析了下,个人也认为是不需要的。

:)

使用特权

评论回复
13
GoldSunMonkey| | 2013-6-23 16:32 | 只看该作者
aceice 发表于 2013-6-22 22:07
嗯,这部分就是额外的逻辑。
昨天分析了下,个人也认为是不需要的。

嗯嗯,加油啊

使用特权

评论回复
14
GoldSunMonkey| | 2013-6-23 16:33 | 只看该作者
wqt128 发表于 2013-6-22 21:54
哈哈,个人理解啊,不知道对不对,欢迎来指正,貌似是你这样用会把DCM给直接短接掉了,所以会报错,因为 ...

如果是这种情况,就是这样啦

使用特权

评论回复
15
tzy785| | 2013-12-5 19:35 | 只看该作者
Backkom80 发表于 2013-6-21 11:05
建意逻辑部分也放在dcm的后面。

楼主的问题就像我附件中的方案一,Backkom80的回复就是类似我附件中的方案二,我的理解正确不,请拍砖。我也遇到了同样的的问题,我把方案一改成方案二就OK了。我的方案二有何不对的地方,欢迎指正。

DCM.jpg (62.05 KB )

DCM.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

374

主题

2182

帖子

0

粉丝