在verilog中比较两个没有比较运算符的数字
Comparing two numbers without comparison operators in verilog
两个 8 位输入被馈送到比较器,如果第一个大于第二个,它们应该被减去,否则它们应该被添加。但是,> 和 < 运算符不应该用于比较它们。
所以,我把我的逻辑写成:
input[7:0] in1,in2;
output select;
assign select=(in1-in2)?0:1;
它总是减法,除非差等于 0。如果我使用除法,0 不能作为输入,否则我的程序可能会崩溃。关于如何解决这个问题有什么建议吗?
非常感谢您的宝贵时间。
记住负数最左边的位总是 1。所以你可以用它来检查差值的符号。
input[7:0] in1,in2;
output select;
wire [7:0] difference = in1-in2;
wire sign_of_difference = difference[7];
assign select = sign_of_difference? 0:1;
两个 8 位输入被馈送到比较器,如果第一个大于第二个,它们应该被减去,否则它们应该被添加。但是,> 和 < 运算符不应该用于比较它们。 所以,我把我的逻辑写成:
input[7:0] in1,in2;
output select;
assign select=(in1-in2)?0:1;
它总是减法,除非差等于 0。如果我使用除法,0 不能作为输入,否则我的程序可能会崩溃。关于如何解决这个问题有什么建议吗?
非常感谢您的宝贵时间。
记住负数最左边的位总是 1。所以你可以用它来检查差值的符号。
input[7:0] in1,in2;
output select;
wire [7:0] difference = in1-in2;
wire sign_of_difference = difference[7];
assign select = sign_of_difference? 0:1;