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

全部评论

相关推荐

爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
在校生实习:我觉得平时学校肯定有各种大作业吧。包装一下写项目里。特长那块喧宾夺主了,项目肯定是大头。特长里比如:熟悉vscode,这个感觉不具有吸引性。简要介绍你会什么语言,什么工具等就行了。同26找实习,我是个超级菜鸡😭大家一起加油
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务