在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4271|回复: 6

[求助] xilinx spartan6 的ddr2接口请教

[复制链接]
发表于 2016-6-28 19:29:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 qd0090 于 2016-6-30 08:40 编辑

最近在研究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. 能告诉我是怎么换算出来的么?
 楼主| 发表于 2016-6-29 13:14:04 | 显示全部楼层
请教高人!
发表于 2016-6-29 16:52:11 | 显示全部楼层
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)
           );
 楼主| 发表于 2016-6-30 08:47:35 | 显示全部楼层
谢谢,经过几天的看文档以及看例程,已经基本明白了。
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进行管脚分配的。
请教,谢谢!
发表于 2016-7-1 13:27:09 | 显示全部楼层

i learn it also face much amazing problem
再生产mig的时候,有一些选项你要了解,ddr2的型号选择,时钟,ddr2 bank选择,不要该人家给你的ucf,你要使用generate出来的ucf,我怀疑是你设置的bank不对导致的问题。
 楼主| 发表于 2016-7-2 09:45:21 | 显示全部楼层
回复 5# z894811350


    谢谢你,我是一步一步生成的新的mig的,ddr(MT47H64M16)型号bank(bank3)都是选择了的,
    由于我用的是开发板,所以我直接copy了他的顶层文件以及ucf。
发表于 2017-5-27 09:53:57 | 显示全部楼层
我遇到了与楼主类似的问题,在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. ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 16:38 , Processed in 0.028694 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表