全减器---Verilog实现(结构描述,数据流描述,行为描述,层次结构描述)

Verilog实现全减器

前言

全减器真值表—>引用知乎:链接: 全减器真值表怎么理解

在这里插入图片描述

一、任务要求

在这里插入图片描述

二、门极结构描述

代码部分

//门级结构化描述
module full_subtraction(xi,yi,bi,D,Bo);
	input xi,yi,bi;//xi被减数,yi减数,bi被减数向高位的借位
	output D,Bo;	//D差值,Bo低位向被减数的借位
	wire r1,r2,r3,r4,r5;//连接线
	xor (r1,xi,yi),(D,r1,bi) ;//异或门
	and (r5,r2,yi),(r4,bi,r3) ;//与门
	or	(Bo,r4,r5) ;//或门
	not (r2,xi),(r3,r1);//非门
endmodule

原理图

在这里插入图片描述

三、数据流描述

代码部分

//数据流描述
module full_subtraction(xi,yi,bi,D,Bo);
	input xi,yi,bi;//xi被减数,yi减数,bi被减数向高位的借位
	output D,Bo;	//D差值,Bo低位向被减数的借位
	assign D=xi^yi^bi;//差值表达式
	assign Bo=~xi&bi|~xi&yi|yi&bi;//进位表达式
endmodule

原理图

在这里插入图片描述

四、行为描述

代码部分

//行为描述
module full_subtraction(xi,yi,bi,D,Bo);
	input xi,yi,bi;//xi被减数,yi减数,bi被减数向高位的借
	output reg D,Bo;	//D差值,Bo低位向被减数的借位
	always @*
	begin
		{Bo,D}=xi-bi-yi;
	end 
endmodule

原理图

在这里插入图片描述

五、结构描述

代码部分

 //半减器
module Half_sub(xi,yi,D,Bo);
	input  wire xi,yi;//输入被减数xi,减数yi,
	output wire D,Bo;//输出差值D,被减数向高位借位Bo
	assign D=xi^yi;//
	assign Bo=~(xi)&yi;
endmodule

//调用半减 构成全减

//全减器,顶层文件
module Total_sub(xi,yi,bi,Dr,Bor);
	input  wire xi,yi,bi;//输入被减数xi,减数yi,低位向被减数的借位
	output  wire Bor,Dr;//输出差值Bor,被减数向高位借位Bo
	wire D_1,Bor_1,Bor_2;//定义连接导线
	Half_sub U1(.xi(xi),.yi(yi),.D(D_1),.Bo(Bor_1));//被调用的模块名,自定义名; .被调用接口(顶层接口)
	Half_sub U2(.xi(D_1),.yi(bi),.D(Dr),.Bo(Bor_2));
	or(Bor,Bor_1,Bor_2);       
endmodule

原理图

在这里插入图片描述

七、仿真波形

在这里插入图片描述

  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值