题解 | #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大;如果相同,继续往下判断。

全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务