题解 | #4位数值比较器电路#
4位数值比较器电路
http://www.nowcoder.com/practice/e02fde10f1914527b6b6871b97aef86d
`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
reg Y1r,Y0r,Y2r; wire [2:0] r1,r2,r3,r4;
function [2:0] comp; input a; input b; begin comp[1] = a&b | ~a&~b; comp[0] = ~a & b; comp[2] = a & ~b; end endfunction
assign r4 = comp(A[3],B[3]); assign r3 = comp(A[2],B[2]); assign r2 = comp(A[1],B[1]); assign r1 = comp(A[0],B[0]);
always@(*)begin
if (r4[2])begin
Y2r = 1'b1;
Y1r = 1'b0;
Y0r = 1'b0;end
else if (r4[0])begin
Y2r = 1'b0;
Y1r = 1'b0;
Y0r = 1'b1;end
else begin
if (r3[2])begin
Y2r = 1'b1;
Y1r = 1'b0;
Y0r = 1'b0;end
else if (r3[0])begin
Y2r = 1'b0;
Y1r = 1'b0;
Y0r = 1'b1;end
else begin
if (r2[2])begin
Y2r = 1'b1;
Y1r = 1'b0;
Y0r = 1'b0;end
else if (r2[0])begin
Y2r = 1'b0;
Y1r = 1'b0;
Y0r = 1'b1;end
else begin
if (r1[2])begin
Y2r = 1'b1;
Y1r = 1'b0;
Y0r = 1'b0;end
else if (r1[0])begin
Y2r = 1'b0;
Y1r = 1'b0;
Y0r = 1'b1;end
else begin
Y2r = 1'b0;
Y1r = 1'b1;
Y0r = 1'b0;end
end
end
end
end
assign Y1=Y1r;
assign Y2=Y2r;
assign Y0=Y0r;
endmodule