|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
如下是一个DCM核的wrapper文件内容。
- module DCMsfc(CLKIN_IN,
- RST_IN,
- CLKDV_OUT,
- CLKFX_OUT,
- CLKFX180_OUT,
- CLKIN_IBUFG_OUT,
- CLK0_OUT,
- CLK2X_OUT,
- CLK2X180_OUT,
- CLK90_OUT,
- CLK180_OUT,
- CLK270_OUT,
- DO_OUT,
- LOCKED_OUT);
- input CLKIN_IN;
- input RST_IN;
- output CLKDV_OUT;
- output CLKFX_OUT;
- output CLKFX180_OUT;
- output CLKIN_IBUFG_OUT;
- output CLK0_OUT;
- output CLK2X_OUT;
- output CLK2X180_OUT;
- output CLK90_OUT;
- output CLK180_OUT;
- output CLK270_OUT;
- output [15:0] DO_OUT;
- output LOCKED_OUT;
- wire CLKDV_BUF;
- wire CLKFB_IN;
- wire CLKFX_BUF;
- wire CLKFX180_BUF;
- wire CLKIN_IBUFG;
- wire CLK0_BUF;
- wire CLK2X_BUF;
- wire CLK2X180_BUF;
- wire CLK90_BUF;
- wire CLK180_BUF;
- wire CLK270_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 CLKIN_IBUFG_OUT = CLKIN_IBUFG;
- assign CLK0_OUT = CLKFB_IN;
- BUFG CLKDV_BUFG_INST (.I(CLKDV_BUF), .O(CLKDV_OUT));
- BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF), .O(CLKFX_OUT));
- BUFG CLKFX180_BUFG_INST (.I(CLKFX180_BUF), .O(CLKFX180_OUT));
- IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN), .O(CLKIN_IBUFG));
- BUFG CLK0_BUFG_INST (.I(CLK0_BUF), .O(CLKFB_IN));
- BUFG CLK2X_BUFG_INST (.I(CLK2X_BUF), .O(CLK2X_OUT));
- BUFG CLK2X180_BUFG_INST (.I(CLK2X180_BUF), .O(CLK2X180_OUT));
- BUFG CLK90_BUFG_INST (.I(CLK90_BUF), .O(CLK90_OUT));
- BUFG CLK180_BUFG_INST (.I(CLK180_BUF), .O(CLK180_OUT));
- BUFG CLK270_BUFG_INST (.I(CLK270_BUF), .O(CLK270_OUT));
- DCM_ADV DCM_ADV_INST (.CLKFB(CLKFB_IN),
- .CLKIN(CLKIN_IBUFG),
- .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(RST_IN),
- .CLKDV(CLKDV_BUF),
- .CLKFX(CLKFX_BUF),
- .CLKFX180(CLKFX180_BUF),
- .CLK0(CLK0_BUF),
- .CLK2X(CLK2X_BUF),
- .CLK2X180(CLK2X180_BUF),
- .CLK90(CLK90_BUF),
- .CLK180(CLK180_BUF),
- .CLK270(CLK270_BUF),
- .DO(DO_OUT[15:0]),
- .DRDY(),
- .LOCKED(LOCKED_OUT),
- .PSDONE());
- defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";
- defparam DCM_ADV_INST.CLKDV_DIVIDE = 5.0;
- defparam DCM_ADV_INST.CLKFX_DIVIDE = 2;
- defparam DCM_ADV_INST.CLKFX_MULTIPLY = 2;
- defparam DCM_ADV_INST.CLKIN_DIVIDE_BY_2 = "FALSE";
- defparam DCM_ADV_INST.CLKIN_PERIOD = 5.000;
- 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 = "HIGH";
- defparam DCM_ADV_INST.DLL_FREQUENCY_MODE = "HIGH";
- 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";
- defparam DCM_ADV_INST.SIM_DEVICE = "VIRTEX5";
- endmodule
复制代码
问题1. 我看到很多人在使用DCM的时候都要把输入和输出使用BUFG。但是从wapper文件里不是可以看到它已经使用了BUFG了么,为什么还要再用?
问题2.defparam用法,如果我在代码中写如下语句:
defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";
defparam DCM_ADV_INST.CLKDV_DIVIDE = 3.0;
defparam DCM_ADV_INST.CLKFX_DIVIDE = 4;
defparam DCM_ADV_INST.CLKFX_MULTIPLY = 8;
然后调用该DCM核,是不是会把wapper文件中对应的参数的值更改了?
我在ISE中做了实验,发现写了
defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";
defparam DCM_ADV_INST.CLKDV_DIVIDE = 3.0;
defparam DCM_ADV_INST.CLKFX_DIVIDE = 4;
defparam DCM_ADV_INST.CLKFX_MULTIPLY = 8;
在功能仿真的时候发现以上语句并没有起作用,参数仍然使用的是旧值。
但是综合时候不会报错,看了综合报告,综合的时候明明已经改变的参数的值。
问题是到底参数的值变了么~~
谢谢各位大侠~~~~ |
|