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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8801|回复: 4

关于MIG生成ddr控制器中基于LUT的dqs延时电路的深入分析和疑问

[复制链接]
发表于 2009-4-2 19:09:24 | 显示全部楼层 |阅读模式

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

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

x
原工程文件是这样的:
`timescale 1ns/100ps

module dqs_delay  (
                   clk_in,
                   sel_in,
                   clk_out
                  );
               
   input          clk_in;
   input [4:0]    sel_in;   

   output         clk_out;
   
   wire           delay1;
   wire           delay2;
   wire           delay3;
   wire           delay4;
   wire           delay5;
   wire           high;
   
   assign high = 1'b1;
   
   LUT4 one( .I0(high), .I1(sel_in[4]), .I2(delay5), .I3(clk_in), .O(clk_out));
   defparam    one.INIT = 16'hf3c0;
   
   LUT4 two( .I0(clk_in), .I1(sel_in[2]), .I2(high), .I3(delay3), .O(delay4));
   defparam    two.INIT = 16'hee22;
   
   LUT4 three( .I0(clk_in), .I1(sel_in[0]), .I2(delay1), .I3(high), .O(delay2) );
   defparam    three.INIT = 16'he2e2;
   
   LUT4 four( .I0(high), .I1(high), .I2(high), .I3(clk_in), .O(delay1) );
   defparam    four.INIT = 16'hff00;
   
   LUT4 five( .I0(high), .I1(sel_in[3]), .I2(delay4), .I3(clk_in), .O(delay5) );
   defparam    five.INIT = 16'hf3c0;
   
   LUT4 six( .I0(clk_in), .I1(sel_in[1]), .I2(delay2), .I3(high), .O(delay3) );
   defparam    six.INIT = 16'he2e2;
   
endmodule         

通过分析每个LUT的接口及真值表情况,可得:
(1)对于第一个LUT(就是verilog文件中的LUT4 four),其O端(接delay1)为I3(接clk_in)输入经过一个LUT的延时。
(2)对于第二个LUT(就是verilog文件中的LUT4 three),其O端(接delay2)的延时与I1(这里接了sel_in[0])的情况有关,当sel_in[0] = 0, 其O端为I0(这里接了clk_in)经过一个LUT的延时,而sel_in[0] = 1, 其O端为I2(这里接了delay1)经过一个LUT的延时
(3) 对于第三个LUT(就是verilog文件中的LUT4 six),其LUT属性和端口连线情况前一个LUT一致,故结果一致。
(4) 对于第四个LUT(就是verilog文件中的LUT4 two),尽管其LUT属性和端口连线情况与前两者不一致,但结果一致,也是当sel_in[2]为0时,其O端为I0(这里接了clk_in)经过一个LUT的延时,而sel_in[2] = 1, 其O端为I3(这里接了delay3)经过一个LUT的延时
(5)对于后两个LUT,尽管其LUT属性和端口连线情况与前两者不一致,但结果一致。

综述,当sel_in=5’00000时,clk_out为clk_in经过一个lut的延时。
当sel_in=5’10000时,clk_out为clk_in经过2个lut的延时。
当sel_in=5’11000时,clk_out为clk_in经过3个lut的延时。

当sel_in=5’11111时,clk_out为clk_in经过6个lut的延时。


不知道我的分析对吗,但我有一个疑问,为什么后面5个LUT有三种属性配置和接口的方法,为什么不可以一种配置和接口呢,如都把属性配置成ee22,而且接口方法一致?为什么现在要分别配置为f3c0,ee22,e2e2?
对应RTL延时图.jpg
 楼主| 发表于 2009-4-8 12:26:54 | 显示全部楼层
没有人研究过吗,有谁能指教下吗
发表于 2011-2-12 13:04:45 | 显示全部楼层
研究得没有那么具体,请问楼主用的是什么版本的,mig v几呢?
发表于 2011-2-12 14:55:38 | 显示全部楼层
楼主真是精神可嘉 都下到这么底层的东西了
我都是生成了就用。。。。 汗颜
发表于 2011-2-12 23:07:31 | 显示全部楼层
每个lut都是配置成2选1的多路器,除了最前面一个是一个直通,所以真值配置有不同
说的可能不清楚,这个你可以看xilinx的文档,在那份spartan3里实现ddr的xapp文档里有很详细的描述
再有问题找我好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 00:48 , Processed in 0.036158 second(s), 10 queries , Gzip On, Redis On.

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