优化多路复用器以提高性能

时间:2018-12-13 16:16:37

标签: c circuit

我目前正在做一个电路仿真器的学校项目。该电路的组件之一可以是多路复用器,它具有n个输入,log2(n)选择器和1个输出。

我确定需要哪个输出的方法是执行以下操作: 生成(选择器数量)位格雷码表,并循环遍历该表并与选择器的值进行比较。无论匹配哪一行,都需要输出。

但是,对于较大的多路复用器(16:1、32:1),这变得相当慢。是否有一种更有效的方法来获得所需的输出,而不必比较每个可能的格雷码可能性?

1 个答案:

答案 0 :(得分:1)

因此,您希望从 n n )(所选输入的索引)的唯一数字。 >输入(选择器信号),范围为[0,1]。

那是binary code

为一个选择器分配信号值1,为下一个信号分配值2,然后分配4,依此类推。将它们加在一起。选择相应的编号输入。

unsigned selectedInput = 0;
if (selector1) selectedInput += 1; /* or |= */
if (selector2) selectedInput += 2;
if (selector3) selectedInput += 4;

以此类推。在一般情况下:

unsigned selectedInput = 0;
for (int i = 0; i < selectorCount; ++i)
    if (selectors[i]) selectedInput |= 1u << i;