Board logo

标题: 关于DLL例化的问题 [打印本页]

作者: xishuai    时间: 2006-6-28 17:11     标题: 关于DLL例化的问题

我此前发了一个帖子,得到了斑竹的热力支持,心中大喜!现在又有麻烦了!呵呵!


我使用的是spartanII芯片,这里不像更高端的芯片有DCM核,这里的DLL需要例化。但是具体怎么例化还不是太清楚。我照着xilinx给出的标准模式写了一个DLL模块,程序如下:


module DLL (CLKIN, RESET, CLK0, CLKDV, LOCKED);


input CLKIN, RESET;


output CLK0, CLKDV, LOCKED;


 


wire CLKIN_w, RESET_w, CLK0_dll, CLKDV_dll, LOCKED_dll;


 


IBUFG clkpad (.I(CLKIN), .O(CLKIN_w));


IBUF  rstpad (.I(RESET), .O(RESET_w));


 


CLKDLL dll (.CLKIN(CLKIN_w), .CLKFB(CLK0), .RST(RESET_w),


            .CLK0(CLK0_dll), .CLK90(), .CLK180(), .CLK270(),


            .CLK2X(), .CLKDV(CLKDV_dll), .LOCKED(LOCKED_dll));


 


BUFG   clkg   (.I(CLK0_dll),   .O(CLK0));


BUFG   clkdv (.I(CLKDV_dll),  .O(CLKDV));


OBUF   lckpad (.I(LOCKED_dll), .O(LOCKED));


 


endmodule
这个程序的功能就是3分频,不知道这样写是否正确,因为我不知道怎么例化,我照着ISE提供的模版在顶层文件中加入如下:


CLKDLL #(
      .CLKDV_DIVIDE(3.0),     // Divide by: 1.5,2.0,2.5,3.0,4.0,5.0,8.0 or 16.0
      .DUTY_CYCLE_CORRECTION("TRUE"),  // Duty cycle correction, TRUE or FALSE
      .FACTORY_JF(16'hC080),  // FACTORY JF Values
      .STARTUP_WAIT("FALSE") // Delay config DONE until DLL LOCK, TRUE/FALSE
   ) CLKDLL_inst (
      .CLK0(CLK0),     // 0 degree DLL CLK ouptput
      .CLK180(CLK180), // 180 degree DLL CLK output
      .CLK270(CLK270), // 270 degree DLL CLK output
      .CLK2X(CLK2X),   // 2X DLL CLK output
      .CLK90(CLK90),   // 90 degree DLL CLK output
      .CLKDV(CLKDV),   // Divided DLL CLK out (CLKDV_DIVIDE)
      .LOCKED(LOCKED), // DLL LOCK status output
      .CLKFB(CLKFB),   // DLL clock feedback
      .CLKIN(CLKIN),   // Clock input (from IBUFG, BUFG or DLL)
      .RST(RST)        // DLL asynchronous reset input
   );


不知道这个3.0是不是就是代表了3分频?还有其他药设置的地方吗?我又听说DLL只需要例化就行了,不需要写模块,那我到底该怎么做?还有就是我是否一定要reset脚,如果不需要是不是就可以不写在模块里或者在例化的时候右边的括号里为空?


再次感谢!


作者: stone133    时间: 2006-6-28 18:08

高端芯片的DCM核使用前一样需要例化;
DLL在高版本ise(忘记是几版以后了)中就不支持了;
在软件不支持的情况下,我也搞不太清楚需要怎么做,希望这样用过的高手来指点一下;
至于reset脚之类的,如果不需要也不能为空,你给它个常数就好了,比如1或者0;
作者: xishuai    时间: 2006-6-28 21:00

谢谢版主的回答,我想我开始没有表述清楚,我知道DCM也和其他IP和一样需要例化来实现上层的调用,但是DLL好像比较特殊,它就像一些简单的逻辑门一样只要在顶层文件中例化就行,呵呵。同时真心期望用过DLL的高手们帮小弟一下忙!
作者: stone133    时间: 2006-6-30 09:34

相信lz也看到了vincent发的“xilinx-SpartanIIE 内部锁相环(DLL)的使用”这篇文章很不错,我也学到了不少东西;
我也是看了以后才发现,DLL在高版ise中不是以ip core的形式出现的,而是出现在模板中。他的使用确实就像lz说得那样:“它就像一些简单的逻辑门一样只要在顶层文件中例化就行”,需要注意的就是DLL外围的那些buffer;


作者: silverwolf7516    时间: 2006-6-30 09:47

xilinx-SpartanIIE 内部锁相环(DLL)的使用
http://bbs.chinaecnet.com/dispbbs.asp?boardID=2&RootID=59875&ID=59875
自己去看看吧!
作者: xishuai    时间: 2006-6-30 19:44

谢谢,非常不错,我看了!




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0