在verilog中比较没有比较运算符的两个数字

时间:2017-03-02 02:00:32

标签: verilog comparison-operators mux

两个8位输入被馈送到比较器,如果第一个大于第二个,则应该减去它们,否则它们应该被添加。但是,>和<运算符不应该被用来比较它们。 所以,我把我的逻辑写成:

input[7:0] in1,in2;
output select;
assign select=(in1-in2)?0:1;

它总是减去,除非差值等于0.如果我使用除法,0不能是输入或我的程序可能会崩溃。关于如何解决这个问题的任何建议?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:2)

请记住,负数的最左边位是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;