微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > FPGA管脚分配时需注意的一些事项

FPGA管脚分配时需注意的一些事项

时间:02-11 来源:网络整理 点击:

==========================选择Internal=========================

`timescale 1ns / 1ps

module clk1_test(CLKIN_IN,
CLK0_OUT,
LOCKED_OUT);

input CLKIN_IN;
output CLK0_OUT;
output LOCKED_OUT;

wire CLKFB_IN;
wire CLK0_BUF;
wire GND_BIT;
wire [6:0] GND_BUS_7;
wire [15:0] GND_BUS_16;
assign GND_BIT = 0;

assign GND_BUS_7 = 7'b0000000;
assign GND_BUS_16 = 16'b0000000000000000;
assign CLK0_OUT = CLKFB_IN;
BUFG CLK0_BUFG_INST (.I(CLK0_BUF),
.O(CLKFB_IN));
DCM_ADV DCM_ADV_INST (.CLKFB(CLKFB_IN),
.CLKIN(CLKIN_IN),
.DADDR(GND_BUS_7[6:0]),
.DCLK(GND_BIT),
.DEN(GND_BIT),
.DI(GND_BUS_16[15:0]),
.DWE(GND_BIT),
.PSCLK(GND_BIT),
.PSEN(GND_BIT),
.PSINCDEC(GND_BIT),
.RST(GND_BIT),
.CLKDV(),
.CLKFX(),
.CLKFX180(),
.CLK0(CLK0_BUF),
.CLK2X(),
.CLK2X180(),
.CLK90(),
.CLK180(),
.CLK270(),
.DO(),
.DRDY(),
.LOCKED(LOCKED_OUT),
.PSDONE());
defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";
defparam DCM_ADV_INST.CLKDV_divIDE = 2.0;
defparam DCM_ADV_INST.CLKFX_divIDE = 1;
defparam DCM_ADV_INST.CLKFX_MULTIPLY = 4;
defparam DCM_ADV_INST.CLKIN_divIDE_BY_2 = "FALSE";
defparam DCM_ADV_INST.CLKIN_PERIOD = 16.129;
defparam DCM_ADV_INST.CLKOUT_PHASE_SHIFT = "NONE";
defparam DCM_ADV_INST.DCM_AUTOCALIBRATION = "TRUE";
defparam DCM_ADV_INST.DCM_PERFORMANCE_MODE = "MAX_SPEED";
defparam DCM_ADV_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";
defparam DCM_ADV_INST.DFS_FREQUENCY_MODE = "LOW";
defparam DCM_ADV_INST.DLL_FREQUENCY_MODE = "LOW";
defparam DCM_ADV_INST.DUTY_CYCLE_CORRECTION = "TRUE";
defparam DCM_ADV_INST.FACTORY_JF = 16'hF0F0;
defparam DCM_ADV_INST.PHASE_SHIFT = 0;
defparam DCM_ADV_INST.STARTUP_WAIT = "FALSE";
endmodule

比较以上两段代码,区别在于选择是External时CLKIN经过了IBUFG才到的DCM_ADV,而选择Internal的CLKIN则直接到了DCM_AV,而IBUFG就是原语"全局时钟缓冲"单元,我们使用时要选择External,只有当我们的级联两个DCM模块时,直接与外面相连的选External,而另一个选择Internal。

这也是本文的一个知识点吧:两个DCM级联时,直接与外面相连的选External,而另一个选择Internal。

所以本段的主题是"非GC类全局时钟管脚是否可以作时钟使用?"其实更多应该指的是"非GC类全局时钟管脚是否可以接到IBUFG?"

试验中,我们将External的DCM的输入CLKIN输入引脚配置成一个普通的IO口,即非GC类全局时钟管脚,布局布线阶段出现以下错误:

ERROR:Place:645 - A clock IOB clock component is not placed at an optimal clock IOB site. The clock IOB component

因此得出结论:非GC类全局时钟管脚不可以作时钟使用(其实是不可以接到IBUFG的输入端)。

3)在Xilinx手册中提到,如果使用单端输入时钟,要使用P类型GC全局时钟管脚,那么空间N类型的管脚是否可以么?

所谓P类型还是N类型其实指的是IO_L1P_GC_LC或IO_L1N_GC_LC,注意这里的L1P和L1N,这就标识这个管脚是P类型还是N类型。

试验中,我们将N类型全局时钟管脚配置给CLKIN,结果布局布线时出现与(2)中一样的错误。

因此得出结论:GC类全局时钟管脚N类型管脚不可以作为单端时钟输入管脚(其实也是不能作为IBUFG的输入端)

4)差分时钟输入时钟管脚能否配置普通IO?N类型管脚和P类型管脚必须分别给配置P类型GC全局时钟管脚和N类型GC全局时钟管脚?

<4.1>使用了一对普通IO配置给DCM的CLKIN_N_IN和CLKIN_P_IN,并且将这对普通的IO的P型分配给DCM的CLKIN_N_IN型输入,IO的N型分配给DCM的CLKIN_P_IN型输入,出现如下错误:

ERROR:Place:604 - The I/O components "clkp" and "clkn" are the P- and N-sides of a differental I/O pair. The component

<4.2>使用了一对普通IO配置给DCM的CLKIN_N_IN和CLKIN_P_IN,并且对应地将这对普通的IO的P型分配给DCM的CLKIN_P_IN型输入,IO的N型分配给DCM的CLKIN_N_IN型输入,出现如下错误:

ERROR:Place:645 - A clo

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top