之前在验证 FPGA 板卡的芯片管脚时,所用的测试工程使用内部 PLL 生成的时钟作为 DDR3 的参考时钟。后来尝试将参考时钟改为外部 100M 晶振时钟,发现 MIG IP 配置工具找不到相应管脚,于是学习并梳理了 Xilinx DDR3 MIG IP 时钟管脚的分配规则,在这里做个记录。
目录
1 MIG 时钟输入
2 时钟管脚分配规则
1 MIG 时钟输入
《ug586_7Series_MIS_v4.2》手册给出了 Xilinx DDR3 MIG 控制器 IP 内部时钟网络,如下图所示。可以看到 MIG IP 有 2 个时钟输入,分别是 CLKREF 和 SYSCK.
REFCLK 频率为 200MHz,输入到 MIG IP 内部的 MMCM,然后选择 200M/300M/400MHz 中的一个时钟给 IDELAYCTRL. 而 SYSCKP/SYSCKN 先连接到 IBUFGDS,IBUFGDS 的输出再连接到内部 PLL 的 CLKIN 端口。
《ug586_7Series_MIS_v4.2》手册中关于 System Clock 配置的描述如下。
· System Clock - This option selects the clock type(Signle-Ended, Differential or No Buffer) for tye sys_clk signal pair. When the No Buffer option is selected, IBUF primitives are not instantiated in RTL code and pins are not allocated for the system clock.
If the designs generated from MIG tool for the No Buffer option are implemented without performing changes, designs can fail in implementation due to IBUFs not instantiated for the sys_clk_i signal. So for No Buffer scenarios, sys_clk_i signal needs to be connected to an internal clock.
System Clock 配置可以选择 Single-Ended, Differential 或者 No Buffer. 如果选择 No Buffer, 工具将不会插入 IBUF,并且不会分配相应的管脚。 因此选择 No Buffer 选项表示 sys_clk_i 信号连接到内部时钟。
板卡的外部晶振时钟是单端信号,因此在 MIG IP 用户配置界面,System Clock 选择 Single-Ended,在后续配置界面中可以看到出现了 sys_clk_i 管脚位置约束的设置项。
2 时钟管脚分配规则
ug586_7Series_MIS_v4.2 手册建议将 System Clock 输入管脚分配在 MIG 内部 PLL 所在的 bank 中,如果内存接口数据信号占用了一个 bank 的全部位置,没有额外的位置用作时钟输入,这时 PLL 的时钟输入来源可以是邻近的 bank.
同时 MIG IP 工具会对 FPGA 管脚进行检查, System clock 管脚的检查规则是:sys_clk 输入管脚是否和内存接口在同一个 banks column 中,并且是器件的时钟专用管脚。
在测试工程中,由于板卡 ddr3_dq 管脚分配在 Bank 16,sys_clk_i 只能选 Bank14 或 Bank15. 外部晶振时钟所在的 IO Bank 不是 Bank 14/15,MIG IP 无法使用外部参考时钟,因此只能使用内部 PLL 时钟作为参考时钟。文章来源:https://www.toymoban.com/news/detail-740553.html
文章来源地址https://www.toymoban.com/news/detail-740553.html
到了这里,关于【Xilinx FPGA】DDR3 MIG 时钟管脚分配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!