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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 5201|回复: 14

[求助] Spartan 3AN DCM原语使用的问题

[复制链接]
发表于 2016-5-16 11:06:09 | 显示全部楼层 |阅读模式

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

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

×
问题描述:打算用DCM原语直接写一个4倍频的例子,这样写可以吗??输入是CLKIN,50M,打算输出一个200M的频率iCLK,clk0直接与CLKFB相连。DCM原语中我没有用到的部分都注释掉了。





   

        

                
  1.    DCM_SP #(
  2. //      .CLKDV_DIVIDE(2.0), // Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5
  3.                           //   7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
  4.       .CLKFX_DIVIDE(1),   // Can be any integer from 1 to 32
  5.       .CLKFX_MULTIPLY(4), // Can be any integer from 2 to 32
  6.       .CLKIN_DIVIDE_BY_2("FALSE"), // TRUE/FALSE to enable CLKIN divide by two feature
  7.       .CLKIN_PERIOD(0.0),  // Specify period of input clock
  8.       .CLKOUT_PHASE_SHIFT("NONE"), // Specify phase shift of NONE, FIXED or VARIABLE
  9.       .CLK_FEEDBACK("1X"),  // Specify clock feedback of NONE, 1X or 2X
  10.       .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), // SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or
  11.                                             //   an integer from 0 to 15
  12.       .DLL_FREQUENCY_MODE("LOW"),  // HIGH or LOW frequency mode for DLL
  13.       .DUTY_CYCLE_CORRECTION("TRUE"), // Duty cycle correction, TRUE or FALSE
  14.       .PHASE_SHIFT(0),     // Amount of fixed phase shift from -255 to 255
  15.       .STARTUP_WAIT("FALSE")   // Delay configuration DONE until DCM LOCK, TRUE/FALSE
  16.    ) DCM_SP_inst (
  17.       .CLK0(CLK0),     // 0 degree DCM CLK output
  18. //      .CLK180(CLK180), // 180 degree DCM CLK output
  19. //      .CLK270(CLK270), // 270 degree DCM CLK output
  20. //      .CLK2X(CLK2X),   // 2X DCM CLK output
  21. //      .CLK2X180(CLK2X180), // 2X, 180 degree DCM CLK out
  22. //      .CLK90(CLK90),   // 90 degree DCM CLK output
  23. //      .CLKDV(CLKDV),   // Divided DCM CLK out (CLKDV_DIVIDE)
  24.         .CLKFX(iCLK),   // DCM CLK synthesis out (M/D)
  25. //      .CLKFX180(CLKFX180), // 180 degree CLK synthesis out
  26. //      .LOCKED(LOCKED), // DCM LOCK status output
  27. //      .PSDONE(PSDONE), // Dynamic phase adjust done output
  28. //      .STATUS(STATUS), // 8-bit DCM status bits output
  29.       .CLKFB(CLK0),   // DCM clock feedback
  30.       .CLKIN(CLKIN),   // Clock input (from IBUFG, BUFG or DCM)
  31. //      .PSCLK(PSCLK),   // Dynamic phase adjust clock input
  32. //      .PSEN(PSEN),     // Dynamic phase adjust enable input
  33. //      .PSINCDEC(PSINCDEC), // Dynamic phase adjust increment/decrement
  34.       .RST(iRSTn)        // DCM asynchronous reset input
  35.    );
            

   

    复制代码
 楼主| 发表于 2016-5-17 09:09:05 | 显示全部楼层
回复 14# atomdust

懂了,LOCKED_OUT就是用来观察输出时钟稳定了没有。再次感谢您的耐心回答,很受用!
回复 支持 反对

使用道具 举报

发表于 2016-5-16 23:12:31 | 显示全部楼层
lockedout信号是时钟锁定,当输出时钟稳定后,这个信号拉高,可以把这个信号当做你的系统复位。
就按着生成的模块例化,不用的信号放在那不用就是了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 20:00:14 | 显示全部楼层
回复 12# atomdust

感谢您细心耐心的回复,顺便问一下,1.“ LOCKED_OUT”信号究竟有什么用啊,是不是不需要也行,2.实际中,我只需要输出CLKFX_OUT就够了,其他输出就不用实例化了吧?
回复 支持 反对

使用道具 举报

发表于 2016-5-16 18:35:36 | 显示全部楼层
回复 11# xylion

可以的,用这个: 2222.jpg
生成的.v文件为:
module clk4out(CLKIN_IN,
               RST_IN,
               CLKFX_OUT,
               CLKIN_IBUFG_OUT,
               CLK0_OUT,
               LOCKED_OUT);

    input CLKIN_IN;
    input RST_IN;
   output CLKFX_OUT;
   output CLKIN_IBUFG_OUT;
   output CLK0_OUT;
   output LOCKED_OUT;

   wire CLKFB_IN;
   wire CLKFX_BUF;
   wire CLKIN_IBUFG;
   wire CLK0_BUF;
   wire GND_BIT;

   assign GND_BIT = 0;
   assign CLKIN_IBUFG_OUT = CLKIN_IBUFG;
   assign CLK0_OUT = CLKFB_IN;
   BUFG  CLKFX_BUFG_INST (.I(CLKFX_BUF),
                         .O(CLKFX_OUT));
   IBUFG  CLKIN_IBUFG_INST (.I(CLKIN_IN),
                           .O(CLKIN_IBUFG));
   BUFG  CLK0_BUFG_INST (.I(CLK0_BUF),
                        .O(CLKFB_IN));
   DCM_SP #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(2.0), .CLKFX_DIVIDE(1),
         .CLKFX_MULTIPLY(4), .CLKIN_DIVIDE_BY_2("FALSE"),
         .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"),
         .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"),
         .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"),
         .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") )
         DCM_SP_INST (.CLKFB(CLKFB_IN),
                       .CLKIN(CLKIN_IBUFG),
                       .DSSEN(GND_BIT),
                       .PSCLK(GND_BIT),
                       .PSEN(GND_BIT),
                       .PSINCDEC(GND_BIT),
                       .RST(RST_IN),
                       .CLKDV(),
                       .CLKFX(CLKFX_BUF),
                       .CLKFX180(),
                       .CLK0(CLK0_BUF),
                       .CLK2X(),
                       .CLK2X180(),
                       .CLK90(),
                       .CLK180(),
                       .CLK270(),
                       .LOCKED(LOCKED_OUT),
                       .PSDONE(),
                       .STATUS());
endmodule
直接把这个.v文件例化到你的设计中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 18:24:28 | 显示全部楼层
回复 10# atomdust


   Spartan3AN,xcs700AN,FGG484
回复 支持 反对

使用道具 举报

发表于 2016-5-16 16:44:39 | 显示全部楼层
你用的FPGA的详细型号是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 15:54:30 | 显示全部楼层
图片1.png 回复 6# atomdust
不能用……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 15:47:19 | 显示全部楼层
回复 6# atomdust

这句话超赞!我也是最近才知道的,所有时钟都要经过DCM。
   "建议DCM的输入时钟要经过IBUFG,输出要经过BUFG,FB也要经过BUFG,这样才是DCM完整的应用。"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-16 15:38:34 | 显示全部楼层
回复 5# atomdust


   感谢您的回复,这个我没用过……是跟IP核是一个东西吗??
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-9-13 10:55 , Processed in 0.032642 second(s), 7 queries , Gzip On, Redis On.

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