用于确定8位输入是否在范围内的布尔表达式



给定以下8位2s补码:

11000011 = -61 (decimal)
00011111 = +31 (decimal)

当逻辑电路的8位输入in(也是2s补码表示)在以下范围内时,我需要获得其输出out变高的逻辑电路的布尔表达式

-61 < in < 31

8位数字的数字行(2s补码):

10000000(最负)。。。。。11000011(-61)。。。。。00000000。。。。。00011111(31)。。。。。01111111(最阳性)

除了暴力和一点一点的比较之外,还有什么方法可以解决这个问题吗?

编辑:以下语句不允许

out = ((in < 11000011 && in > 10000000) || (in > 00011111 && in < 01111111)) ? 1'b0 : 1'b1;

我不确定是否有更快的方法。但我所做的是在试图找到一个模式之前,以2s的补码格式列出数字。下面的数字块按数字顺序排序(从0000000011111111,这样可以更清楚地看到模式)。

设MSB为A,LSB为H。方程为:A B C + A B D + A B E + A B F + A' B' C' D' + A' B' C' E' + A' B' C' F' + A' B' C' G' + A' B' C' H'

A' B' C' D'(最容易观察):

00000000(<-分钟)000000010000001000000011000001000000010100000110000001110000100000001001000010100000101100001100000011010000111000001111

A' B' C' E' + A' B' C' F' + A' B' C' G' + A' B' C' H':

000100000001000100010010000100110001010000010101000101100001011100011000000110010001101000011011000111000001110100011110

A B D + A B E + A B F:

1100001110001011100011011000111110010001100100111001010110010111100110011001101110011101100111111010000110100011101001011010011110101001101010111010110110101111101100011011001110110101101101111011100110111011101111011011111

A B C(最容易观察):

1110000011100001111000101110001111100100111001011110011011100111111010001110100111101010111010111110110011101101111011101110111111110000111100011111001011110011111101001111010111110110111101111111100011111001111110101111101111111100111111011111111011111111(<-max)

相关内容

最新更新