题解 | #4位数值比较器电路#
4位数值比较器电路
https://www.nowcoder.com/practice/e02fde10f1914527b6b6871b97aef86d
先考虑一位数值的比较:
A==B: 同或--> Y0= ~(A^B)
A<B: 首先AB不相等(异或)其次B为1 -->Y1= (A^B)&B
A>B: 相似的,Y = Y2= (A^B)&A
多位数值比较器:
从最高位开始比较,A[n] 与B[n],若相同,比较下一位。前m位都相同,则前m的每一位都满足Y0表达,中间用与相连
`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 Y1 = ~(A[0]^B[0]) & ~(A[1]^B[1]) & ~(A[2]^B[2]) & ~(A[3]^B[3]); assign Y2 = ((A[3]^B[3])&A[3]) | (~(A[3]^B[3]) & ((A[2]^B[2])&A[2])) | (~(A[3]^B[3]) & ~(A[2]^B[2]) & ((A[1]^B[1])&A[1])) | (~(A[3]^B[3]) & ~(A[2]^B[2]) & ~(A[1]^B[1]) & ((A[0]^B[0])&A[0])); assign Y0 = ((A[3]^B[3])&B[3]) | (~(A[3]^B[3]) & ((A[2]^B[2])&B[2])) | (~(A[3]^B[3]) & ~(A[2]^B[2]) & ((A[1]^B[1])&B[1])) | (~(A[3]^B[3]) & ~(A[2]^B[2]) & ~(A[1]^B[1]) & ((A[0]^B[0])&B[0])); endmodule