题解 | #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:0)||(A[3]=B[3]?(A[2]>B[2]?1:0):0)||((A[3]=B[3])?((A[2]=B[2])?((A[1]>B[1])?1:0):0):0)||((A[3]=B[3])?((A[2]=B[2])?((A[1]=B[1])?(A[0]>B[0]:1):0):0):0)
//assign Y1=((A[3]=B[3])?((A[2]=B[2])?((A[1]=B[1])?(A[0]=B[0]:1):0):0):0)
//assign Y0=((A[3]<B[3])?1:0)||(A[3]=B[3]?(A[2]<B[2]?1:0):0)||((A[3]=B[3])?((A[2]=B[2])?((A[1]<B[1])?1:0):0):0)||((A[3]=B[3])?((A[2]=B[2])?((A[1]=B[1])?(A[0]<B[0]:1):0):0):0)
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=(!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]));
endmodule
一开始是用那个标注的写,但是这样不是门电路;然后试了一下下面的居然成功了
刚学,还没分清什么是门电路什么是rtl,勿喷