确定 8 位输入是否在范围内的布尔表达式
Boolean expression to determine if 8-bit input is within range
给定以下 8 位 2s 补码:
11000011 = -61 (decimal)
00011111 = +31 (decimal)
我需要获得一个逻辑电路的布尔表达式,其输出out
在其8位输入in
时变为高电平(也在2s补码表示)在以下范围内:
-61 < in < 31
8 位数字的数列(2 的补码):
10000000
(最负面)..... 11000011
(-61) ..... 00000000
..... 00011111
(31 ) ..... 01111111
(最积极)
除了暴力破解和逐位比较,还有什么办法可以解决这个问题吗?
编辑: 不允许以下语句
out = ((in < 11000011 && in > 10000000) || (in > 00011111 && in < 01111111)) ? 1'b0 : 1'b1;
我不确定是否有更快的方法。但我所做的是在尝试找到模式之前以 2s 补码格式列出数字。以下数字块按数字顺序排序(从 00000000
到 11111111
以便可以更清楚地看到模式)。
设 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(<- 分钟)
00000001
00000010
00000011
00000100
00000101
00000110
00000111
00001000
00001001
00001010
00001011
00001100
00001101
00001110
00001111
A' B' C' E' + A' B' C' F' + A' B' C' G' + A' B' C' H'
:
00010000
00010001
00010010
00010011
00010100
00010101
00010110
00010111
00011000
00011001
00011010
00011011
00011100
00011101
00011110
A B D + A B E + A B F
:
11000100
11000101
11000110
11000111
11001000
11001001
11001010
11001011
11001100
11001101
11001110
11001111
11010000
11010001
11010010
11010011
11010100
11010101
11010110
11010111
11011000
11011001
11011010
11011011
11011100
11011101
11011110
11011111
A B C
(最容易观察):
11100000
11100001
11100010
11100011
11100100
11100101
11100110
11100111
11101000
11101001
11101010
11101011
11101100
11101101
11101110
11101111
11110000
11110001
11110010
11110011
11110100
11110101
11110110
11110111
11111000
11111001
11111010
11111011
11111100
11111101
11111110
11111111(<-最大值)
给定以下 8 位 2s 补码:
11000011 = -61 (decimal)
00011111 = +31 (decimal)
我需要获得一个逻辑电路的布尔表达式,其输出out
在其8位输入in
时变为高电平(也在2s补码表示)在以下范围内:
-61 < in < 31
8 位数字的数列(2 的补码):
10000000
(最负面)..... 11000011
(-61) ..... 00000000
..... 00011111
(31 ) ..... 01111111
(最积极)
除了暴力破解和逐位比较,还有什么办法可以解决这个问题吗?
编辑: 不允许以下语句
out = ((in < 11000011 && in > 10000000) || (in > 00011111 && in < 01111111)) ? 1'b0 : 1'b1;
我不确定是否有更快的方法。但我所做的是在尝试找到模式之前以 2s 补码格式列出数字。以下数字块按数字顺序排序(从 00000000
到 11111111
以便可以更清楚地看到模式)。
设 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(<- 分钟) 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00001111
A' B' C' E' + A' B' C' F' + A' B' C' G' + A' B' C' H'
:
00010000 00010001 00010010 00010011 00010100 00010101 00010110 00010111 00011000 00011001 00011010 00011011 00011100 00011101 00011110
A B D + A B E + A B F
:
11000100 11000101 11000110 11000111 11001000 11001001 11001010 11001011 11001100 11001101 11001110 11001111 11010000 11010001 11010010 11010011 11010100 11010101 11010110 11010111 11011000 11011001 11011010 11011011 11011100 11011101 11011110 11011111
A B C
(最容易观察):
11100000 11100001 11100010 11100011 11100100 11100101 11100110 11100111 11101000 11101001 11101010 11101011 11101100 11101101 11101110 11101111 11110000 11110001 11110010 11110011 11110100 11110101 11110110 11110111 11111000 11111001 11111010 11111011 11111100 11111101 11111110 11111111(<-最大值)