题解 | #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,Y1,Y0} = (A[3]^B[3]) ?//3位不同,判断哪个大 ((A[3])?(3'b100):(3'b001)) ://3位相同,继续判断 ( (A[2]^B[2])?((A[2])?(3'b100):(3'b001)) : ( (A[1]^B[1])?((A[1])?(3'b100):(3'b001)) : ( (A[0]^B[0])?((A[0])?(3'b100):(3'b001)) : (3'b010) ) ) ); endmodule
使用门级电路实现,而不是寄存器或者行为描述,所以不适用always和大于小于这种比较。
不断使用?:,首先比较最高位,使用异或判断是否不同,若不同,在判断A位是否为1,若为1说明A大,反之B大;如果相同,继续往下判断。