在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6600|回复: 11

[讨论] Spartan 3E中的BUFGMUX问题

[复制链接]
发表于 2012-7-4 15:57:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现在我使用Spartan 3E中的BUFGMUX遇到一个问题,输入的两个时钟不是始终有的,当一路的输入时钟没有,我切换到另一路有时钟的就会失败。
研究了一下,好像BUFGCTRL这个东西有一个Ignore0,Ignore1设置,貌似能解决这个问题。但是Spartan 3E有BUFGCTRL吗?如果没有,BUFGMUX有没有类似的设置或其它解决办法!
发表于 2012-7-4 18:35:20 | 显示全部楼层
BUFG, BUFGCE, BUFGMUX三个实际上使用的都是同一个结果,前两者是后者的某参数固定版(将另一输入置0,或CE置0得到),按理说切换使用应该没问题。
你能确定在时钟失效后,你的切换使能CE是有效的吗?就是说CE是直接从芯片外输入,没有经过寄存器或其它控制的?我怀疑时钟坏掉后,CE也被锁死不能工作所致。
发表于 2012-7-5 05:26:06 | 显示全部楼层
我大概记得bufgce的ce只有在时钟是低的时候有效,所以如果时钟一直是高,但是CE变了,是不会切换时钟了。
 楼主| 发表于 2012-7-5 09:24:49 | 显示全部楼层
回复 2# eaglelsb


    BUFGMUX没有CE控制脚啊,我怀疑是它要做无缝切换需要某种条件,然而我的时钟在有的时候会出一些杂乱的信号出来,这些信号正好把它搞死了。不知道你应用的时候是不是两路时钟都始终有?
发表于 2012-7-5 11:12:28 | 显示全部楼层
回复 4# asyou

BUFGMUX_inst_2 : BUFGMUX
port map (
O => srp_clk_int, -- Clock MUX output
I0 => '0', -- Clock0 input
I1 => CLKFX, -- Clock1 input
S => sysclklocked -- Clock select input
);

S 就相当于CE,作为I0,I1选择输入的,我指的就是这个S控制源,你能保证没受到已坏掉的CLOCK影响?是直接从PIN外引入,或者是不是寄存器输出,与该输入输入CLOCK都没关系?
 楼主| 发表于 2012-7-5 14:47:29 | 显示全部楼层
回复 5# eaglelsb


    直接引脚引入的,但是这两个时钟源是由另外的两个IC产生的,它们有可能输出正常的时钟,有可能输出低电平,高电平或是一些杂乱的信号,现在就是两路输入时钟都有时钟的时候都能正常切换,当有一路没有时钟的时候,有时候也能切换,有时候就不能切换!我是直接将BUFGMUX输出引到一个TP脚测试的。关键是看手册上有这么一段搞不清楚:
The BUFGMUX not only multiplexes two clock signals but does it in a way that eliminates
any timing hazards. This allows switching from one clock source to a completely
asynchronous clock source without glitches. The element guarantees that when the select
line S is toggled to choose the other clock source, the output remains in the inactive state
until the next active clock edge on
either input
. The output can be either High or Low when
disabled (when toggling between clock inputs). The default is Low. A cross-coupled
register pair ensures the BUFGMUX output does not inadvertently generate a clock edge.
不知道是等另一路时钟沿到来就行,还是两路的时钟沿都必须到来,才有输出。
发表于 2012-7-5 15:57:31 | 显示全部楼层
应该是一路就可了,要么你做个试验看看,把一路一直拉低不输出时钟,另路正常,然后再切换下看看。

同时,要是这个问题真解决不了的话,能不能想法子能保证芯片输出时钟一直为有效?有没有这样的配置?
 楼主| 发表于 2012-7-5 16:08:04 | 显示全部楼层
回复 7# eaglelsb


    我也想保持两路时钟始终正常,但是那需要驱动调整,而且还不一定能够调出来,在另一份资料上看到了更多的资料
When the S input changes, the BUFGMUX does not drive the new input to the output until
the previous clock input is Low and the new clock input has a High-to-Low transition. By
not toggling on the first Low-to-High transition of the input, the output clock pulse is
never shorter than the shortest input clock pulse.
有可能是我没信号那一路保持在了高电平造成的问题!
发表于 2012-7-5 16:53:00 | 显示全部楼层
回复 8# asyou


   你查资料还挺能查到的,再来个招试试,你把两个输入信号都进DCM,然后出来的信号再进BUFGMUX,有没有效果我不敢保证。感觉DCM输入失锁后说不定会将时钟拉到低处,或者对于急速变化的输入时钟,在偶尔毛刺或啥的情况下,能挺过来。对DCM的RST复位端,如何进行复位也要考虑下,这要看下DCM失效后能不能不需要手动复位来自动恢复正常。
 楼主| 发表于 2012-7-6 09:22:39 | 显示全部楼层
回复 9# eaglelsb


    DCM不行啊,已经用了,现在基本确定就是一路时钟保持在高电平出的问题,如果这时候我用镊子把它拉低一下,就可以切过去了,我的DCM设计都增加了手动复位接口,即在异常的时候由驱动给我一个信号进行复位,主要是为了保险,在另一个设计中,我发现部分质量差的晶振输入到DCM的时钟会把DCM搞死,虽然换晶振能解决这个问题,但还是预防一下万一吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 00:20 , Processed in 0.039457 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表