Verilog基础之三、减法器实现

文章介绍了如何使用Verilog语言设计4位的全减器和半减器,包括always和assign语句的使用,并展示了如何通过参数化实现不同位宽的减法器。综合结果显示,全减器和半减器在资源使用上基本一致,主要区别在于LUT的初始化值。
摘要由CSDN通过智能技术生成

目录

一、减法器

二、减法器实现

2.1 工程代码

2.2 综合结果


一、减法器

    ​减法器的实现与加法器类似,根据是否考虑借位分为半减器和全减器。

二、减法器实现

2.1 工程代码

 设计2个4位数的减法器,包括全减器和半减器,同时分别采用always和assign语句来实现。

module substract( a,b,ci,co,co_half,subs_half,subs );
input [3:0] a,b;
input ci;  //借位标志
output reg [3:0] subs;
output reg co;   //借位输出
output co_half;
output [3:0] subs_half;
assign {co_half,subs_half}=a-b;  //半器
always@(*)    //全减器
begin
{co,subs}=a-b-ci;
end
endmodule

对于N位的减法,可以通过定义一个参数N,需要修改位数时,只需修改N的值即可

module substract( a,b,ci,co,co_half,subs_half,subs );
parameter N=6;   //数据位宽为N,此处N为6
input [N-1:0] a,b;
input ci;  //借位标志
output reg [N-1:0] subs;
output reg co;   //借位输出
output co_half;
output [N-1:0] subs_half;
assign {co_half,subs_half}=a-b;  //半器
always@(*)    //全减器
begin
{co,subs}=a-b-ci;
end
endmodule

2.2 综合结果

对比加法器和半加器综合图,可见二者使用的资源一致,差异点为LUT的INIT值不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值