题解 | #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