我需要实现一个带有逻辑门的数字逻辑电路,例如AND,OR,NOT,ADDER(等等......),它获得一个8位二进制数,并返回输入中最长连续1的数 .
例如:
11110011 - 将返回4
10101111 - 也将返回4
01111111 - 将返回7
我真的很感激一些帮助,因为我几天都在苦苦寻找解决这个问题的方法 .
谢谢!
我用256个术语生成了一个真值表,并使用Espresso minimizer将其减少到47个术语:
然后,我将压缩表转换为多级circuit(太大而不能在此显示为图像) . 为此,我使用了Logic Friday 1 .
通过将我的C#例程映射到门中,可以得到更简单的电路:
private static int countConsecutiveBits(int i) { int bMax = 0; int b = 0; for (int j = 0; j < 8; j++) { if (((i >> j) & 1) == 1) { b++; if (bMax < b) { bMax = b; } } else { b = 0; } } return bMax; }
这将涉及您的问题中指出的加法器和比较器 .
以下电路 - 手工制作且未经验证 - 是一个位片,它将迄今为止的最大位数,当前位数和相应位作为输入 . 输出是新的最大位数和当前位数 . 所有计数都是4位宽 . 这可以针对计数较小的第一切片进行优化 .
1 回答
我用256个术语生成了一个真值表,并使用Espresso minimizer将其减少到47个术语:
然后,我将压缩表转换为多级circuit(太大而不能在此显示为图像) . 为此,我使用了Logic Friday 1 .
通过将我的C#例程映射到门中,可以得到更简单的电路:
这将涉及您的问题中指出的加法器和比较器 .
以下电路 - 手工制作且未经验证 - 是一个位片,它将迄今为止的最大位数,当前位数和相应位作为输入 . 输出是新的最大位数和当前位数 . 所有计数都是4位宽 . 这可以针对计数较小的第一切片进行优化 .