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

查看12道真题和解析
