微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > mux与LUT资源消耗及逻辑级数关系讨论

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

时间:10-02 整理:3721RD 点击:
器件类型: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;与语句位置无关,与功能有关。
特来论坛与大家讨论。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top