Zynq UltraScale RFSoC ZCU111专栏3-时钟树配置-LMK04208
软件环境准备
ZCU111开发板使用了一个LMK04208 作为RF芯片发生在系统的时钟上。 文章中的链接都是我的地址,请自己收集官网。 数据手册 配置软件
芯片配置
不得不感慨,TI配置工具比skyworks使用方便。手册也更清晰准确。
然后吐槽TI的TICS pro该软件经常崩溃。只要导入配置gg。希望有大佬知道解决方案,猜测可能是系统的原因。因为论坛上没有出现大量的这种现象。
##配置界面 blog中的所有截图配置都是通过ZCU111板自带demo Regmap 反向设置已经验证。 TI配置界面效率比skyworks高 第一页是大量与时钟频率无关的通用寄存器配置。请参考具体参数DS配置 第二页是PLL时钟配置。这里有一个很奇怪的bug。假设我们关闭了clkin1和clkin0。这个时候PLL phase detector and charge pump还是会根据Pll1 Reference input select选择参考时钟输入中值,然后通过PLL1 的 R divider 作为PLL1.输入参考时钟。随后会根据N divider计算一个值OSCin,虽然这个值可能不是我们想要的。假设我们在这个时候修改了它OSC in价值和选择OSCin范围,所以之前做的PLL的Ndivider设置无效。
有两种方法可以解决这个问题。
- 是不care该输入频率的值直接将OSCin根据实际时钟的频率选择范围,我们将XILINX直接读入的项目就是这样。输入时钟在gui界面不正确,但我用上图正确配置的最终输出寄存器文件盒的结果是一样的。
- 利用正确的输入频率R/N divider计算正确的值。CLKin在1中的频率设置中,这个值虽然没用,但是可以gui在界面中获得其他正确的输入。 根据手册重新配置其他时钟。
最后一页是输出配置。负责控制输出时钟分配网络的连接方式和时钟分频设置。 在ZCU111原理图(0381811).LMK04208输出时钟流向如表
输出端口 | 时钟流向 | 端口或芯片 | 接口类型 |
---|---|---|---|
OSC OUT | x | x | x |
CLK0 | SYSREF_FPGA | AK16/AK17 | LVPECL |
CLK1 | SYSREF_RFSOC | U4/U5 | LVDS |
CLK2 | FPGA_REFCLK | AL15/AL16 | LVPECL |
CLK3 | 4208_OUT3 | LMK00304SQ | LVPECL |
CLK4 | 4208_OUT4 | LMK00804BPW | LVDS |
CLK4 | 4208_OUT5 | SMA_J108 | LVCMOS |
- ECL:Emitter-Couple Logic 低压正发射极耦合逻辑
- LVPECL:Low Voltage PosiTIve Emitter-Couple Logic 低压正发射极耦合逻辑
- LVDS:Low Voltage Differential Signaling 低压查分信号
- LMK00304SQ : 4-Output Ultra-Low Additive Jitter Differential Clock Buffer/Level Translator
- LMK00804 : Low skew, 1-to-4 multiplexed differential/LVCMOS-to-LVCMOS/TTL fanout buffer
NOTE
LMK00304也能接受LVDS输入 LMK00804 接受LVPECL, LVDS, HCSL, SSTL, LVHSTL, LVCMOS/LVTTL输入
##总结和提问
- 软件配置没问题bug人肉可以克服。
- 以后可以开个档研究各种接口的特性。
- 输出时钟的频率不是任意的,与输入的晶体振动密切相关,因为倍频器和分频器都是整数的,所以不是任何频点都能做到的。你将来可以制作一个脚本来制作一个频点表吗?或者手册等地方会提供吗?
- 有关pll还有一些不明白的地方,比如可以先2分频再4倍频,也可以直接2倍频。这样得到的时钟频率其实是一样的。其实我在gui界面中也尝试过这种配置,可以正常输出寄存器文档。但是这种配置有什么区别呢?为什么?xilinx官方选择了一个奇怪的值,如38分频,无法整除。