用的移位操作和拼接符,定义个无符号数,把输入通过移位和拼接转为无符号的数后再比较。
`timescale 1ns/1ns module comparator_4( input [3:0] A , input [3:0] B , output wire Y2 , //A>B output wire Y1 , //A=B output wire Y0 //A<B ); wire [4:0]x,y; reg r_Y2; reg r_Y1; reg r_Y0; assign x = {A[3],3'b000} + {A[2],2'b00} + {A[1],1'b0} + A[0]; assign y = {B[3],3'b000} + {B[2],2'b00} + {B[1],1'b0} + A[0]; always@(*)begin if(x>y)begin r_Y2 = 1; r_Y1 = 0; r_Y0 = 0; end else if(x==y)begin r_Y2 = 0; r_Y1 = 1; r_Y0 = 0; end else begin r_Y2 = 0; r_Y1 = 0; r_Y0 = 1; end end assign Y2=r_Y2; assign Y1=r_Y1; assign Y0=r_Y0; endmodule