题解 | #4位数值比较器电路#
4位数值比较器电路
https://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
);
// assign Y2 = (A[3] > B[3] ) ? 1:
// (A[3] < B[3] ) ? 0:
// (A[2] > B[2] ) ? 1:
// (A[2] < B[2] ) ? 0:
// (A[1] > B[1] ) ? 1:
// (A[1] < B[1] ) ? 0:
// (A[0] > B[0] ) ? 1:
// (A[0] < B[0] ) ? 0:0;
// assign Y0 = (A[3] < B[3] ) ? 1:
// (A[3] > B[3] ) ? 0:
// (A[2] < B[2] ) ? 1:
// (A[2] > B[2] ) ? 0:
// (A[1] < B[1] ) ? 1:
// (A[1] > B[1] ) ? 0:
// (A[0] < B[0] ) ? 1:
// (A[0] > B[0] ) ? 0:0;
// assign Y1 = (A[3]==B[3] && A[2]==B[2] && A[1]==B[1] && A[0]==B[0]) ? 1 : 0;
/*
---采用门级描述,不实用> <符号
---Y2有四种情况为1
---Y1只有一种情况为1
---Y0只用四种情况为1
*/
assign Y2 = (A[3] & !B[3]) | (~(A[3]^B[3]) && (A[2] & !B[2])) | ((!(A[3]^B[3])) && (!(A[2]^B[2])) &&
(A[1] & !B[1])) | (~(A[3]^B[3]) && ~(A[2]^B[2]) && ~(A[1]^B[1]) && (A[0] & !B[0]));
assign Y1 = (!(A[3]^B[3]) & !(A[2]^B[2]) & !(A[1]^B[1]) & !(A[0]^B[0]));
assign Y0 = (B[3] & !A[3]) | (~(B[3]^A[3]) && (B[2] & !A[2])) | ((!(B[3]^A[3])) && (!(B[2]^A[2])) &&
(B[1] & !A[1])) | (~(A[3]^B[3]) && ~(A[2]^B[2]) && ~(A[1]^B[1]) && (B[0] & !A[0]));
endmodule