Xilinx FPGA普通IO作PLL时钟输入
在xilinx ZC7020的片子上做的实验;
[结论]
普通IO不能直接作PLL的时钟输入,专用时钟管脚可以;
普通IO可以通过BUFG再连到PLL的时钟输入上,但要修改PLL的设置 input clk的选项中要选择"No Buffer";
具体内部布局分配可以通过 Xilinx的FPGA Editor来查看,
ZYNQ的时钟管理也和之前的片子略有不同,之后在另一篇介绍,相关文档
[Demo1]
// demo1 two bufg connect
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
pll0 u_pll0(
.CLK_IN1(clkin_w), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
锁相环PLL默认输入前端有个BUFG单元,而两个BUFG不能相连,所以会报这样的错:
ERROR:NgdBuild:770 - IBUFG 'u_pll0/clkin1_buf' and BUFG 'BUFG_inst' on net
'clkin_w' are lined up in series. Buffers of the same direcTIon cannot be
placed in series.
ERROR:NgdBuild:924 - input pad net 'clkin_w' is driving non-buffer primiTIves:
[Demo2]
// demo2 regular io directly connect to PLL
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
/*
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
*/
pll0 u_pll0(
.CLK_IN1(clk), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
普通IO不能直接做锁相环的输入,所以会报这样的错:
ERROR:Place:1397 - A clock IOB / MMCM clock component pair have been found that
are not placed at an opTImal clock IOB / MMCM site pair. The clock IOB
component is placed at site . The corresponding MMCM component
is placed at site . The clock IO can
use the fast path between the IOB and the MMCM if the IOB is placed on a
Clock Capable IOB site that has dedicated fast path to MMCM sites within the
same clock region. You may want to analyze why this problem exists and
correct it. If this sub opTImal condition is acceptable for this design, you
may use the CLOCK_DEDICATED_ROUTE constraint in the .ucf file to demote this
message to a WARNING and allow your design to continue. However, the use of
this override is highly discouraged as it may lead to very poor timing
results. It is recommended that this error condition be corrected in the
design. A list of all the COMP.PINs used in this clock placement rule is
ERROR:Pack:1654 - The timing-driven placement phase encountered an error.
如果有ucf中加上这句约束:
NET clk CLOCK_DEDICATED_ROUTE = FALSE;
依旧会报错,在ZYNQ7000系列,这样还是通不过,如下:
ERROR:PhysDesignRules:2256 - Unsupported MMCME2_ADV configuration. The signal
u_pll0/clkin1 on the CLKIN1 pin of MMCME2_ADV comp u_pll0/mmcm_adv_inst with
COMPENSATION mode ZHOLD must be driven by a clock capable IOB.
ERROR:Pack:1642 - Errors in physical DRC.
使用普通的IO,再连接bufg来连到时钟线上,
仍会报这样的错误,因为还是两bufg相连了:
ERROR:NgdBuild:770 - IBUFG 'u_pll0/clkin1_buf' and BUFG 'BUFG_inst' on net
'clkin_w' are lined up in series. Buffers of the same direction cannot be
placed in series.
ERROR:NgdBuild:924 - input pad net 'clkin_w' is driving non-buffer primitives:
[Demo3]
// dem3 regular io with BUFG then connect to PLL which with"No Buffer" setting
module iobuf(
input clk,
input rst,
output led
);
wire clkin_w;
BUFG BUFG_inst (
.O(clkin_w), // Clock buffer output
.I(clk) // Clock buffer input
);
pll0 u_pll0(
.CLK_IN1(clkin_w), // IN
.CLK_OUT1(clkout), // OUT
.RESET(rst)); // IN
assign led = clkout;
endmodule
- Xilinx Kintex UltraScale 一半尺寸的 PCI Express 平台 (HTG-K816)(06-15)
- Xilinx全新参考设计提供业界首个单芯片400G解决方案(02-12)
- Xilinx用于工业自动化的机器视觉解决方案(11-30)
- Xilinx多协议机器视觉摄像机参考设计(12-01)
- 机器视觉技术原理解析及解决方案集锦(02-06)
- 机器视觉在汽车电子方向的应用解决方案(02-13)