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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4825|回复: 8

[求助] 从5个时钟里选一个时钟输出

[复制链接]
发表于 2014-12-11 17:19:41 | 显示全部楼层 |阅读模式

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

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

x
如题:如果我在fpga(假设我用的是alter的fpga)里有5个输入时钟,他们是同频率但是不同源的,我想根据不同情况选择其中一路作为输出时钟。这时候我该怎么处理?
我看到altera的megaWizard里的clkctrl里面有选择的功能但是最多支持4个clk输入。
clk_ctrl_4_to_1  clk_ctrl_4_to_1_u0 (
.clkselect (clkselect_0),
.inclk0x   (clk_in_0),
.inclk1x   (clk_in_1),
.inclk2x   (clk_in_2),
.inclk3x   (clk_in_3),
.outclk     (clk_out)
);
但是我输入4个时钟都是input时钟的时候它会报错:Error (15836): inclk[2] port of Clock Select Block "clk_ctrl_4_to_1:clk_ctrl_4_to_1_u0|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|sd2" is driven by clk_in_2~input, but must be driven by a PLL's output clock; clock pins should be moved to inclk[0] or inclk[1]
Error (15836): inclk[3] port of Clock Select Block "clk_ctrl_4_to_1:clk_ctrl_4_to_1_u0|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|sd2" is driven by clk_in_3~input, but must be driven by a PLL's output clock; clock pins should be moved to inclk[0] or inclk[1]
感觉好像是只有前两个时钟可以是外面输入进来的时钟。


而且选择产生的时钟在约束文件里写create_generated_clock 后面该怎么写啊?
发表于 2014-12-11 21:23:36 | 显示全部楼层
fpga内肯定有多个clktrl,多级联几次编译看看。
设好各个clk始终约束,经过各个clkctrl、pll,延时是自动计算的。
发表于 2014-12-12 09:15:15 | 显示全部楼层
回复 1# niloaixeuy

clk_sel.zip

487 Bytes, 下载次数: 79 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 2014-12-12 09:36:23 | 显示全部楼层
回复 3# ddxx

谢谢你的热心帮忙,可是我怕这样产生的时钟不够稳定。因为我以前看到的资料里说:时钟尽量不要用reg或者assign产生。
不知道你这个代码在150M左右时钟上表现怎么样。
 楼主| 发表于 2014-12-12 09:44:09 | 显示全部楼层
回复 2# x_gate

我会多级联试试的,但是我在约束中想做:
set_output_delay -add_delay -max -clock [get_clocks {out_clk}]   0.000 [get_ports {out_data[0]}]
set_output_delay -add_delay -min -clock [get_clocks {out_clk}]  -2.000 [get_ports {out_data[0]}]
,要先对out_clk的时钟进行约束。我就不知道该怎么做了。
 楼主| 发表于 2014-12-12 09:59:03 | 显示全部楼层
回复 2# x_gate


    我尝试用了级联,如下:
clk_ctrl_4_to_1  clk_ctrl_4_to_1_u0 (
.clkselect (clkselect_0),
.inclk0x (clk_in_0),
.inclk1x (clk_in_1),
.inclk2x (1'b0),
.inclk3x (1'b0),
.outclk     (clk_out_0)
);
clk_ctrl_4_to_1  clk_ctrl_4_to_1_u1 (
.clkselect (clkselect_1),
.inclk0x (clk_in_2),
.inclk1x (clk_in_3),
.inclk2x (1'b0),
.inclk3x (1'b0),
.outclk     (clk_out_1)
);

clk_ctrl_4_to_1  clk_ctrl_4_to_1_u2 (
.clkselect (clkselect_2),
.inclk0x (clk_out_0),
.inclk1x (clk_out_1),
.inclk2x (1'b0),
.inclk3x (1'b0),
.outclk     (clk_out)
);

但是会报错:
Error (15836): inclk[0] port of Clock Select Block "clk_ctrl_4_to_1:clk_ctrl_4_to_1_u2|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|sd2" is driven by an illegal source, but must be driven by a clock pin or a PLL's CLK or FBOUT output
Info (15024): Input port INCLK[0] of node "clk_ctrl_4_to_1:clk_ctrl_4_to_1_u2|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|sd2" is driven by clk_ctrl_4_to_1:clk_ctrl_4_to_1_u0|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|wire_sd1_outclk which is OUTCLK output port of Clock enable block type node clk_ctrl_4_to_1:clk_ctrl_4_to_1_u0|clk_ctrl_4_to_1_altclkctrl_3ji:clk_ctrl_4_to_1_altclkctrl_3ji_component|sd1

不知道该怎么级联了。
发表于 2014-12-15 08:52:09 | 显示全部楼层
回复 4# niloaixeuy


    这个逻辑是无毛刺的时钟选择电路,150MHz是没有问题的。
 楼主| 发表于 2014-12-15 09:25:59 | 显示全部楼层
回复 7# ddxx


   
谢谢大神!我会好好用的。
发表于 2016-5-16 16:10:09 | 显示全部楼层
學習了~謝謝~!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 22:11 , Processed in 0.020747 second(s), 8 queries , Gzip On, Redis On.

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