1

给定以下 8 位 2s 补码数:

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

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

-61 < in < 31

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

10000000(最消极)..... (11000011-61) ............ (31)...... (最积极)000000000001111101111111

除了暴力破解和逐位比较之外,还有什么方法可以解决这个问题?

编辑:不允许以下语句

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

1 回答 1

1

我不确定是否有更快的方法来做到这一点。但我所做的是在尝试找到模式之前以 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(<-min)00000001 00000010 00000011 00000100 00000101 00000110110 00000111 00000111 00001000 00001001 00001001 000010101011 0000111001100 00001101 00001101 0000001110 0000001110 000000111111

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 00010101 00010101

A B D + A B E + A B F

11000100 11000101 11000110 11000111 11001000 11001001110011010101010111111111111111111111111111111111111111111111111111111111111111111111111111011001101100111001110010110010110010100101001110011111111111111111性年务

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 (<-max)

于 2015-12-02T15:16:30.927 回答