xilinx spartan6 的ddr2接口请教
最近在研究xilinx spartan6 的ddr2接口,时钟问题一直困扰我:
假设我fpga的系统输入时钟是50M,在生成MIG核的时候,我选的是200M频率(貌似这么选的话,其实是工作在400MHz,xilinx的UG388中说又加了一个BUFPLL_MCB,不知道我理解的对不对)
生成文件中的user_design文件夹中infrastructure.v中,PLL_ADV的设置我不会了!
请教:
1.以下这几个参数都应该怎么设置啊?
.CLKIN1_PERIOD (CLK_PERIOD_NS),
.CLKIN2_PERIOD (CLK_PERIOD_NS),
.CLKOUT0_divIDE (C_CLKOUT0_divIDE),
.CLKOUT1_divIDE (C_CLKOUT1_divIDE),
.CLKOUT2_divIDE (C_CLKOUT2_divIDE),
.CLKOUT3_divIDE (C_CLKOUT3_divIDE),
.divCLK_divIDE (C_divCLK_divIDE),
.CLKFBOUT_MULT (C_CLKFBOUT_MULT),
2. 能告诉我是怎么换算出来的么?
请教高人!
generate
if (CLK_GENERATOR == "PLL") begin : gen_pll_adv
PLL_ADV #
(
.BANDWIDTH ("OPTIMIZED"),
.CLKIN1_PERIOD (CLK_PERIOD_NS),
.CLKIN2_PERIOD (10.000),
.CLKOUT0_divIDE (CLK_PERIOD_INT),
.CLKOUT1_divIDE (CLK_PERIOD_INT),
.CLKOUT2_divIDE (CLK_PERIOD_INT*2),
.CLKOUT3_divIDE (1),
.CLKOUT4_divIDE (1),
.CLKOUT5_divIDE (1),
.CLKOUT0_PHASE (0.000),
.CLKOUT1_PHASE (90.000),
.CLKOUT2_PHASE (0.000),
.CLKOUT3_PHASE (0.000),
.CLKOUT4_PHASE (0.000),
.CLKOUT5_PHASE (0.000),
.CLKOUT0_DUTY_CYCLE (0.500),
.CLKOUT1_DUTY_CYCLE (0.500),
.CLKOUT2_DUTY_CYCLE (0.500),
.CLKOUT3_DUTY_CYCLE (0.500),
.CLKOUT4_DUTY_CYCLE (0.500),
.CLKOUT5_DUTY_CYCLE (0.500),
.COMPENSATION ("SYSTEM_SYNCHRONOUS"),
.divCLK_divIDE (1),
.CLKFBOUT_MULT (CLK_PERIOD_INT),
.CLKFBOUT_PHASE (0.0),
.REF_JITTER (0.005000)
)
u_pll_adv
(
.CLKFBIN (clkfbout_clkfbin),
.CLKINSEL (1'b1),
.CLKIN1 (sys_clk_ibufg),
.CLKIN2 (1'b0),
.DADDR (5'b0),
.DCLK (1'b0),
.DEN (1'b0),
.DI (16'b0),
.DWE (1'b0),
.REL (1'b0),
.RST (sys_rst),
.CLKFBDCM (),
.CLKFBOUT (clkfbout_clkfbin),
.CLKOUTDCM0 (),
.CLKOUTDCM1 (),
.CLKOUTDCM2 (),
.CLKOUTDCM3 (),
.CLKOUTDCM4 (),
.CLKOUTDCM5 (),
.CLKOUT0 (clk0_bufg_in),
.CLKOUT1 (clk90_bufg_in),
.CLKOUT2 (clkdiv0_bufg_in),
.CLKOUT3 (),
.CLKOUT4 (),
.CLKOUT5 (),
.DO (),
.DRDY (),
.LOCKED (locked)
);
谢谢,经过几天的看文档以及看例程,已经基本明白了。
ddr 的时钟=fpga输入时钟*CLKFBOUT_MULT /divCLK_divIDE
事实上可以单独建立一个工程对infrastructure模块进行一下仿真,那样就比较直观了。
还有一个问题请教,我在map的时候遇到如下错误:
Place:866 - Not enough valid sites to place the following IOBs:
IO Standard: Name = LVCMOS25, VREF = NR, VCCO = 2.50, TERM = NONE, DIR = BIDIR, DRIVE_STR = 12
IO
This may be due to either an insufficient number of sites available on the device, too many prohibited sites,
or incompatible I/O Standards locked or range constrained to I/O Banks with valid sites.
This situation could possibly be resolved by one (or all) of the following actions:
a) Grouping IOBs of similar standards into a minimum amount of I/O Banks by using LOC or range constraints.
b) Maximizing available I/O Banks resources for special IOBs by choosing lower capacity I/O Banks if possible.
c) If applicable, decreasing the number of user prohibited sites or using a larger device.
Place:382 - The placer was unable to find a feasible solution for the IOBs in your design. This is possibly due to SelectIO banking constraints.
Each Group of a specific Standard is listed.
Standard SSTL18_II (Vref=0.90 Vcco=1.80 Terminate=none) 39 IOs, 39 locked.
(0-Inputs, 23-Outputs, 16-Bidirectional)
Standard LVCMOS25 (Vref=NR Vcco=2.50 Terminate=none) 9 IOs, 7 locked.
(1-Inputs, 7-Outputs, 1-Bidirectional)
Standard DIFF_SSTL18_II (Vref=NR Vcco=1.80 Terminate=none) 6 IOs, 6 locked.
(0-Inputs, 2-Outputs, 4-Bidirectional)
Standard LVCMOS18 (Vref=NR Vcco=NR Terminate=none) 3 IOs, 3 locked.
(3-Inputs, 0-Outputs, 0-Bidirectional)
Bank Summary
____________
If an IOB is placed in a dedicated Vref site, it will be indicated by the word 'Vref' at the end of a summ...
NOTE: This message is very long (~7 K) and has been shortened to a maximum of 1000 characters for viewing in this context.
Please refer to the corresponding ASCII report for the full message.
我是买的网上的一个开发板,ddr例程在板子上运行没有问题,但是我自己建立工程的时候,就出了这个问题,
我完全是按照例程的ucf进行管脚分配的。
请教,谢谢!
i learn it also face much amazing problem
再生产mig的时候,有一些选项你要了解,ddr2的型号选择,时钟,ddr2 bank选择,不要该人家给你的ucf,你要使用generate出来的ucf,我怀疑是你设置的bank不对导致的问题。
谢谢你,我是一步一步生成的新的mig的,ddr(MT47H64M16)型号bank(bank3)都是选择了的,
由于我用的是开发板,所以我直接copy了他的顶层文件以及ucf。
我遇到了与小编类似的问题,在Map时也遇到错误:
Place:382 - The placer was unable to find a feasible solution for the IOBs in your design. This is possibly due to SelectIO banking constraints. ...
