微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > xilinx spartan6 的ddr2接口请教

xilinx spartan6 的ddr2接口请教

时间:10-02 整理:3721RD 点击:

最近在研究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. ...

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

网站地图

Top