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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4948|回复: 0

[讨论] mux与LUT资源消耗及逻辑级数关系讨论

[复制链接]
发表于 2012-11-23 10:19:50 | 显示全部楼层 |阅读模式

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

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

x
器件类型:LATTICE XP2系列
综合工具:synplify pro
描述语言:VHDL

今天抽时间研究了一下 n mux 1代码与FPGA实现的关系。发现一些问题:如下代码1实现16mux1功能,消耗8个LUT4
case cs is
    when 0 => dout <= d0;
    when 1 => dout <= d1;
    when 2 => dout <= d2;
    when 3 => dout <= d3;
    when 4 => dout <= d4;
    when 5 => dout <= d5;
    when 6 => dout <= d6;
    when 7 => dout <= d7;
    when 8 => dout <= d8;
    when 9 => dout <= d9;
    when 10 => dout <= d10;
    when 11 => dout <= d11;
    when 12 => dout <= d12;
    when 13 => dout <= d13;
    when 14 => dout <= d14;
    when 15 => dout <= d15;
end case;

代码2实现14mux1功能,却要消耗9~10个LUT(与最后when other 赋值语句有关)
case cs is
    when 0 => dout <= d0;
    when 1 => dout <= d1;
    when 2 => dout <= d2;
    when 3 => dout <= d3;
    when 4 => dout <= d4;
    when 5 => dout <= d5;
    when 6 => dout <= d6;
    when 7 => dout <= d7;
    when 8 => dout <= d8;
    when 9 => dout <= d9;
    when 10 => dout <= d10;
    when 11 => dout <= d11;
    when 12 => dout <= d12;
    when 13 => dout <= d13;

    when others => dout <= d13;
end case;



我是这么理解的:
实现16mux1消耗8个LUT4,若实现14mux1,相当于16mux1其中3个输入接同一个信号,不应该比16mux1消耗更多资源。
实际综合时10~14mux1均须消耗9~10个LUT4。
这点我还是无法理解,多消耗的LUT用在什么地方了?


还发现一个现象:
当输入数量非2的N次方时,综合后输入的逻辑级数有两种。比如14mux1,最大逻辑级数4,最小逻辑级数3.
当用case语句实现时,写在最后的信号逻辑级数为3;其他为4;与语句位置有关,与功能无关。
当用if语句实现时,信号按0~13分配,则第13个信号逻辑级数为3,其他为4;与语句位置无关,与功能有关。

特来论坛与大家讨论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 17:15 , Processed in 0.015049 second(s), 8 queries , Gzip On, Redis On.

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