减少VHDL合成后的多路复用器数量

减少VHDL合成后的多路复用器数量,vhdl,synthesis,Vhdl,Synthesis,我正在用VHDL写一个设计,综合后我发现使用的多路复用器(专用)的数量很高。我的代码有很多if-else语句,所以看起来很合乎逻辑 但我想知道是否有可能以另一种方式实现if-else(或类似的staments),以减少所使用的多路复用器资源的数量 谢谢 您可以尝试使用简单的逻辑元素,如和或或。例如: if (a and b) = '1' then out_0 <= '1'; else out_0 <= '0'; end if; if (c or d) = '1' the

我正在用VHDL写一个设计,综合后我发现使用的多路复用器(专用)的数量很高。我的代码有很多if-else语句,所以看起来很合乎逻辑

但我想知道是否有可能以另一种方式实现if-else(或类似的staments),以减少所使用的多路复用器资源的数量


谢谢

您可以尝试使用简单的逻辑元素,如
。例如:

if (a and b) = '1' then
   out_0 <= '1';
else
   out_0 <= '0';
end if;

if (c or d) = '1' then
   out_1 <= '1';
else
   out_1 <= '0';
end if;
如果(a和b)=“1”,则

您可以尝试使用简单的逻辑元素,如
。例如:

if (a and b) = '1' then
   out_0 <= '1';
else
   out_0 <= '0';
end if;

if (c or d) = '1' then
   out_1 <= '1';
else
   out_1 <= '0';
end if;
如果(a和b)=“1”,则

out\u 0有时可以将if-else语句重组为case语句。有时case语句可以实现为查找表。或者,有时您可以直接将查找表实现为常量数组,使用if语句中测试的任何数量对其进行索引。这些是否适用于您的情况取决于您没有告诉我们的上下文。当您说多路复用器时,您是指专用的mux资源,还是仅指使用LUT实现的各种大小的多路复用器?“您是否正在耗尽某一特定资源?”jeff Decified Resources这意味着您有很多广域多路复用器。在这种情况下,我看不出你能做些什么来减少多路复用器的使用;您可能需要重新思考设计中创建大量多路复用器的部分,或者转移到更大的部分。有时您可以将if-else语句重组为case语句。有时case语句可以实现为查找表。或者,有时您可以直接将查找表实现为常量数组,使用if语句中测试的任何数量对其进行索引。这些是否适用于您的情况取决于您没有告诉我们的上下文。当您说多路复用器时,您是指专用的mux资源,还是仅指使用LUT实现的各种大小的多路复用器?“您是否正在耗尽某一特定资源?”jeff Decified Resources这意味着您有很多广域多路复用器。在这种情况下,我看不出你能做些什么来减少多路复用器的使用;您可能需要重新思考设计中创建大量多路复用器的部分,或者转移到更大的部分。