全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

易灵思钛金系列时钟选择功能-2 以Ti60F225为例来

时间:2025-05-28 10:54

人气:

作者:admin

标签:

导读:在trion要实现一个4选1时钟复用或许比较麻烦。但是在钛鑫上已经给出了解决方案。这里以Ti60F225为例来介绍如何实现下面的4选择1时钟选择功能。 在FPGA的top,bottom,right和left各有8个clkmux...

在trion要实现一个4选1复用或许比较麻烦。但是在钛鑫上已经给出了解决方案。这里以60F225为例来介绍如何实现下面的4选择1时钟选择功能。

wKgZO2g2ewWAKcazAACP0mIpAKQ930.png

在的top,bottom,right和left各有8个clkmux,分别是Mux 0 ~ Mux 7。

每个MUX的时钟来源包括GO,LVDS RX(支持gclk和rclk),MIPI RX LANE(用于时钟的),PLL,Oscillator(片上晶振)和Core(从Core逻辑出来的)

其中只有Mux0和Mux7可以支持4路动态复用,相当于的clockctrl模块用于时钟动态选择。下图以top为例。

wKgZO2g2ewWABJJ5AAGL5viAGdA463.png

从上图我们可以看到MUX0和MUX7的时钟来源包括Core Clock,GPIO,PLL。我们详细列出top部分Mux0的时钟源。如表1

wKgZO2g2ewaALrb3AAC9Ns83Qpg518.png

表1

有了上面的信息,我们来进行关于时钟复用的设置。

在interface中选择Device Setting -> Clock/Control Configuration,可以看到对应的top,bottom,right和left的选项。

wKgZO2g2ewaAavb3AADzFbhtHMw422.png

这里我们点击Top:CLKMUX_T,在右侧Global Buffe可以看到三部分。分别是Core Clocks, Enable Dynamic Mux0和Enable Dynamic Mux7(前面已经提到只有Mux0和Mux7支持动态复用)。 对于表1中的Core clocks就是在下图的Core Clocks设置。它指由Core 到interface中的信号。该信号如果是Core中有逻辑信号需要添加相应的GPIO。这里分别命名为core_clk0,core_clk1,core_clk2和core_clk3. 对于GPIO和PLL的时钟并不需要手动输入,因为是固定的时钟,只需要选择即可(如果不明白,请继续往下看)。

wKgZO2g2ewaABkshAAA2wT0MAV4832.png

这里我们只打开Mux0,即勾选Enable Dynamic Mux0。

Dynamic Clock Mux Select[1:0] Bus Name是选择信号的名称,这里我们输入top_mux0_csel;

Dynamic Clock Pin Name是指Mux输出的信号,这是我们命名为top_mux0_clk;

Dynamic Clock Input n(0~3):是指每个输入选择项的时钟来源。

wKgZO2g2ewaAUu9IAABi5ok_Dr4105.png

在Dynamic Clock Input N(N指0~3)下面的下拉框可以看到GPIO时钟源、PLL时钟源和Core时钟源是可以选择的。如果不需要配置该时钟可以选择None。Usigned表示相应的时钟并没有设置。根据需要选择相应的时钟即可,这里我们都选择了core_clock。

wKgZO2g2ewaAI-dwAAAlzVCunGk018.png

设置完成之后点击Check Design来检测设置是否有错。

wKgZO2g2ewaAdsxyAADwRdsSyOk895.png

Check Design无误后可以在生成的mplate中看到下面的信号,添加到顶层文件可以使用。

output[1:0]top_mux0_csel,inputtop_mux0_clk,

我们设置成如下时钟方案,在使用中报出如下错误:

wKgZO2g2ewaAfUnFAAB95w5YiXI602.png

Rule:clkmux_rule_core_clock_static_mux(Error)

Description:Core clock pin not allowed to route through static mux output

说明:从core给出的core clock是不能驱动静态的MUX的,只能驱动动态MUX.包括在Core Clocks输入了从core输出的时钟,但是实际没有使用。如下图,输入了core clock名为test_clk1,但是实际使用的是PLL_TL0.CLKOUT1:tx_x1_clk,就会报上面的错误。

wKgZO2g2ewaAFIknAACJPfz81b8470.png

我们设置成如下方案,使用中可能会报如下错误:

wKgZO2g2ewaAROwaAABxSL68NlE901.png

Rule:clock_rule_dyn_clkmux_input

Description:The following clocks need to connect independently to core since they are dynamic clock mux input that also drives the clock pins on the periphery through clockout interface tx_x1_clk

说明:这个问题是说tx_x1_clk即驱动动态的MUX,又驱动core内部的逻辑,这里需要勾选Indepndetly Connect to Core.

wKgZO2g2eweAU9UIAAApNSqbABg629.png

另外如果mux的时钟既有来自core的也有来自PLL的会给出如下警告:

Rule:clkmux_rule_pll_clock(warning)

Description:Dynamic clock mux 0 connected to both inverting and non-inverting clock sources:Clock inversion will not be applied to to_mux0_clk

说明:如果时钟来源既有core clock又有pll输出,会有上面的告警信息。

也可以把pll输入时钟输入Core Clock选项中,在时钟选择框中选择Core Clock。就不需要勾选Indepndetly Connect to Core.

那区别在哪里呢,区别就在于如果选择pll时钟输出,时钟是在interface给到MUX的;如果选择core clock,那么时钟就要先进入core,然后再返回到interface再给到MUX,所占用的GBUF数量是不相同的.或者用另一种表达方式:core时钟进入动态MUX的信号必须要先经过GBUF,而pll的输出可以不经过GBUF而送给动态MUX.而有时候我们会发现pl给动态MUX的时钟占用了F,那是因为该时钟驱动了core逻辑。

wKgZO2g2eweAXREJAAAY8VeZU_A853.png

wKgZO2g2eweAT_0vAAAdlVWy6Ik499.png

注意

(1)如果mux的4路输入时钟没有完全选择,比如只用到两个时钟,那么输入0必须使用,否则不能运行,比如选择的是2,3两路,时钟是没有输出的;

(2)如果某一路没有时钟,也不能进行选择,否则无时钟输出也不能再切回来。比如只有0和1有时钟,选择时切到2上,肯定没有输出,再切回0或者1也没有办法再输出。

(3)如果没有勾选Independently Connect To Core,即使逻辑顶层定义了该时钟也是不能使用的。

wKgZO2g2eweAUNWtAABlWASO4-4225.png

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信