|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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;与语句位置无关,与功能有关。
特来论坛与大家讨论。 |
|